Spaces:
Running
Running
Evan Lesmez
commited on
Commit
•
986fa13
1
Parent(s):
59c68f8
Add BLIP caption and VQA to gradio
Browse filesPipe the BLIP image inference output into the prompt history.
This is experimental and only intended for demoing.
This view is limited to 50 files because it contains too many changes.
See raw diff
- README.md +1 -2
- _proc/00_engineer_prompt.ipynb +54 -38
- _proc/01_app.ipynb +205 -32
- _proc/02_lchain_tool.ipynb +0 -0
- _proc/03_ingredient_vision.ipynb +0 -0
- _proc/{03_edamam_api.ipynb → 04_edamam_api.ipynb} +0 -0
- _proc/_docs/app.html +0 -483
- _proc/_docs/edamam_api.html +0 -426
- _proc/_docs/engineer_prompt.html +0 -578
- _proc/_docs/index.html +8 -526
- _proc/_docs/lchain_tool.html +0 -0
- _proc/_docs/search.json +0 -0
- _proc/_docs/site_libs/bootstrap/bootstrap-icons.css +0 -2018
- _proc/_docs/site_libs/bootstrap/bootstrap-icons.woff +0 -0
- _proc/_docs/site_libs/bootstrap/bootstrap.min.css +0 -0
- _proc/_docs/site_libs/bootstrap/bootstrap.min.js +0 -7
- _proc/_docs/site_libs/clipboard/clipboard.min.js +0 -7
- _proc/_docs/site_libs/quarto-html/anchor.min.js +0 -9
- _proc/_docs/site_libs/quarto-html/popper.min.js +0 -6
- _proc/_docs/site_libs/quarto-html/quarto-syntax-highlighting.css +0 -203
- _proc/_docs/site_libs/quarto-html/quarto.js +0 -902
- _proc/_docs/site_libs/quarto-html/tippy.css +0 -1
- _proc/_docs/site_libs/quarto-html/tippy.umd.min.js +0 -2
- _proc/_docs/site_libs/quarto-nav/headroom.min.js +0 -7
- _proc/_docs/site_libs/quarto-nav/quarto-nav.js +0 -277
- _proc/_docs/site_libs/quarto-search/autocomplete.umd.js +0 -3
- _proc/_docs/site_libs/quarto-search/fuse.min.js +0 -9
- _proc/_docs/site_libs/quarto-search/quarto-search.js +0 -1140
- _proc/_docs/sitemap.xml +0 -20
- _proc/_docs/styles.css +0 -37
- nbs/constants.py → _proc/constants +0 -0
- _proc/gradio_cached_examples/3/log.csv +60 -0
- _proc/gradio_cached_examples/8/log.csv +7 -0
- _proc/sidebar.yml +0 -8
- app.py +12 -2
- assets/images/vegan_ingredients/veg-groceries-table.jpeg +0 -0
- assets/images/vegan_ingredients/veggie-fridge.jpeg +0 -0
- constants.py +3 -0
- lv_recipe_chatbot/_modidx.py +25 -1
- lv_recipe_chatbot/app.py +65 -22
- lv_recipe_chatbot/edamam_api.py +2 -2
- lv_recipe_chatbot/engineer_prompt.py +4 -3
- lv_recipe_chatbot/ingredient_vision.py +111 -0
- lv_recipe_chatbot/lchain_tool.py +1 -1
- nbs/00_engineer_prompt.ipynb +55 -40
- nbs/01_app.ipynb +243 -39
- nbs/03_ingredient_vision.ipynb +0 -0
- nbs/gradio_cached_examples/3/log.csv +60 -0
- nbs/gradio_cached_examples/8/log.csv +7 -0
- nbs/index.ipynb +3 -3
README.md
CHANGED
@@ -8,8 +8,7 @@ sdk_version: 3.23.0
|
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
license: unknown
|
11 |
-
|
12 |
-
# lv-recipe-chatbot
|
13 |
|
14 |
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
|
15 |
|
|
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
license: unknown
|
11 |
+
---/n# lv-recipe-chatbot
|
|
|
12 |
|
13 |
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
|
14 |
|
_proc/00_engineer_prompt.ipynb
CHANGED
@@ -123,57 +123,62 @@
|
|
123 |
"2.\n",
|
124 |
"3.\n",
|
125 |
"...\n",
|
126 |
-
"AI:
|
127 |
"\n",
|
128 |
-
"**
|
129 |
-
"Preparation time:
|
130 |
"\n",
|
131 |
"Ingredients:\n",
|
132 |
-
"- 1
|
133 |
-
"- 1/4 cup
|
134 |
-
"-
|
135 |
-
"- 1
|
136 |
-
"- 1
|
137 |
-
"-
|
138 |
-
"- 2
|
139 |
-
"- 1
|
140 |
-
"- 1
|
141 |
-
"-
|
142 |
-
"- 1/
|
|
|
|
|
|
|
|
|
|
|
143 |
"\n",
|
144 |
"Steps:\n",
|
145 |
-
"1.
|
146 |
-
"2. In a
|
147 |
-
"3.
|
148 |
-
"4.
|
149 |
"Human: Recommend a different recipe please.\n",
|
150 |
"\n",
|
151 |
"> Finished chain.\n",
|
152 |
-
"
|
153 |
"\n",
|
154 |
-
"**Mediterranean Tofu Sandwich**\n",
|
155 |
-
"Preparation time:
|
156 |
"\n",
|
157 |
"Ingredients:\n",
|
158 |
-
"- 1
|
159 |
-
"- 2
|
160 |
-
"- 1 teaspoon dried oregano\n",
|
161 |
-
"-
|
162 |
-
"-
|
163 |
-
"-
|
164 |
-
"-
|
165 |
-
"-
|
166 |
-
"- 1/4 cup sliced
|
167 |
-
"- 1/4 cup
|
168 |
-
"- 1/4 cup
|
169 |
-
"- Bread of your choice (I recommend ciabatta)\n",
|
170 |
"\n",
|
171 |
"Steps:\n",
|
172 |
-
"1. Preheat
|
173 |
-
"2.
|
174 |
-
"3.
|
175 |
-
"4.
|
176 |
-
"5.
|
|
|
177 |
]
|
178 |
},
|
179 |
{
|
@@ -210,6 +215,17 @@
|
|
210 |
"result = conversation.predict(input=\"Recommend a different recipe please.\")\n",
|
211 |
"print(result)"
|
212 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
}
|
214 |
],
|
215 |
"metadata": {
|
|
|
123 |
"2.\n",
|
124 |
"3.\n",
|
125 |
"...\n",
|
126 |
+
"AI: Here is a Thai-inspired vegan recipe for you:\n",
|
127 |
"\n",
|
128 |
+
"**Thai Tofu Lettuce Wraps**\n",
|
129 |
+
"Preparation time: Less than 30 minutes\n",
|
130 |
"\n",
|
131 |
"Ingredients:\n",
|
132 |
+
"- 1/2 block of firm tofu, crumbled\n",
|
133 |
+
"- 1/4 cup pickles, chopped\n",
|
134 |
+
"- 1/4 cup olives, sliced\n",
|
135 |
+
"- 1/2 bell pepper, sliced\n",
|
136 |
+
"- 1/2 carrot, finely chopped\n",
|
137 |
+
"- 4-6 lettuce leaves\n",
|
138 |
+
"- 2 tablespoons soy sauce\n",
|
139 |
+
"- 1 tablespoon rice vinegar\n",
|
140 |
+
"- 1 tablespoon agave nectar\n",
|
141 |
+
"- 1/2 tablespoon garlic powder\n",
|
142 |
+
"- 1/2 tablespoon onion powder\n",
|
143 |
+
"- 1/2 teaspoon dried basil\n",
|
144 |
+
"- 1/2 teaspoon dried oregano\n",
|
145 |
+
"- 1/2 teaspoon salt\n",
|
146 |
+
"- 1/4 teaspoon black pepper\n",
|
147 |
+
"- 4-6 slices of bread, toasted\n",
|
148 |
"\n",
|
149 |
"Steps:\n",
|
150 |
+
"1. In a large bowl, combine crumbled tofu, pickles, olives, bell pepper, and carrot.\n",
|
151 |
+
"2. In a small bowl, whisk together soy sauce, rice vinegar, agave nectar, garlic powder, onion powder, basil, oregano, salt, and black pepper.\n",
|
152 |
+
"3. Pour the dressing over the tofu mixture, and stir until everything is coated.\n",
|
153 |
+
"4. Place a spoonful of the tofu mixture into each lettuce leaf, and serve with a slice of toasted bread.\n",
|
154 |
"Human: Recommend a different recipe please.\n",
|
155 |
"\n",
|
156 |
"> Finished chain.\n",
|
157 |
+
"Sure, how about this recipe that incorporates more of the ingredients you provided?\n",
|
158 |
"\n",
|
159 |
+
"**Vegan Mediterranean Tofu Sandwich**\n",
|
160 |
+
"Preparation time: Less than 30 minutes\n",
|
161 |
"\n",
|
162 |
"Ingredients:\n",
|
163 |
+
"- 1/2 block of firm tofu, sliced\n",
|
164 |
+
"- 2 teaspoons olive oil\n",
|
165 |
+
"- 1/2 teaspoon dried oregano\n",
|
166 |
+
"- 1/2 teaspoon dried basil\n",
|
167 |
+
"- Salt and pepper to taste\n",
|
168 |
+
"- 2 slices of bread\n",
|
169 |
+
"- 1/4 cup hummus\n",
|
170 |
+
"- 2-3 lettuce leaves\n",
|
171 |
+
"- 1/4 cup sliced tomatoes\n",
|
172 |
+
"- 1/4 cup sliced bell peppers\n",
|
173 |
+
"- 1/4 cup grated carrot\n",
|
|
|
174 |
"\n",
|
175 |
"Steps:\n",
|
176 |
+
"1. Preheat the oven to 375°F.\n",
|
177 |
+
"2. In a small bowl, mix olive oil, oregano, basil, salt, and pepper, and place tofu slices on a baking sheet. Brush tofu with the olive oil mixture, covering both sides.\n",
|
178 |
+
"3. Place the baking sheet in the oven and bake the tofu for 15 minutes, flipping the slices halfway through.\n",
|
179 |
+
"4. Toast the bread slices.\n",
|
180 |
+
"5. Spread the hummus on one slice of bread, and layer lettuce, tomatoes, bell peppers, grated carrot, and baked tofu on top. Top with the other slice of bread.\n",
|
181 |
+
"6. Slice the sandwich in half, and enjoy!\n"
|
182 |
]
|
183 |
},
|
184 |
{
|
|
|
215 |
"result = conversation.predict(input=\"Recommend a different recipe please.\")\n",
|
216 |
"print(result)"
|
217 |
]
|
218 |
+
},
|
219 |
+
{
|
220 |
+
"cell_type": "code",
|
221 |
+
"execution_count": null,
|
222 |
+
"metadata": {
|
223 |
+
"language": "python"
|
224 |
+
},
|
225 |
+
"outputs": [],
|
226 |
+
"source": [
|
227 |
+
"test_temp = HumanMessagePromptTemplate.from_template(\"Ingredients: {ingredients}\")"
|
228 |
+
]
|
229 |
}
|
230 |
],
|
231 |
"metadata": {
|
_proc/01_app.ipynb
CHANGED
@@ -30,22 +30,22 @@
|
|
30 |
"text/markdown": [
|
31 |
"---\n",
|
32 |
"\n",
|
33 |
-
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#
|
34 |
"\n",
|
35 |
"### ConversationBot\n",
|
36 |
"\n",
|
37 |
-
"> ConversationBot ()\n",
|
38 |
"\n",
|
39 |
"Initialize self. See help(type(self)) for accurate signature."
|
40 |
],
|
41 |
"text/plain": [
|
42 |
"---\n",
|
43 |
"\n",
|
44 |
-
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#
|
45 |
"\n",
|
46 |
"### ConversationBot\n",
|
47 |
"\n",
|
48 |
-
"> ConversationBot ()\n",
|
49 |
"\n",
|
50 |
"Initialize self. See help(type(self)) for accurate signature."
|
51 |
]
|
@@ -61,6 +61,165 @@
|
|
61 |
"show_doc(ConversationBot)"
|
62 |
]
|
63 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
{
|
65 |
"cell_type": "code",
|
66 |
"execution_count": 2,
|
@@ -71,20 +230,20 @@
|
|
71 |
"text/markdown": [
|
72 |
"---\n",
|
73 |
"\n",
|
74 |
-
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#
|
75 |
"\n",
|
76 |
-
"###
|
77 |
"\n",
|
78 |
-
">
|
79 |
],
|
80 |
"text/plain": [
|
81 |
"---\n",
|
82 |
"\n",
|
83 |
-
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#
|
84 |
"\n",
|
85 |
-
"###
|
86 |
"\n",
|
87 |
-
">
|
88 |
]
|
89 |
},
|
90 |
"execution_count": 2,
|
@@ -95,25 +254,7 @@
|
|
95 |
"source": [
|
96 |
"#| echo: false\n",
|
97 |
"#| output: asis\n",
|
98 |
-
"show_doc(
|
99 |
-
]
|
100 |
-
},
|
101 |
-
{
|
102 |
-
"cell_type": "markdown",
|
103 |
-
"metadata": {},
|
104 |
-
"source": [
|
105 |
-
"Load environment for the demo"
|
106 |
-
]
|
107 |
-
},
|
108 |
-
{
|
109 |
-
"cell_type": "code",
|
110 |
-
"execution_count": null,
|
111 |
-
"metadata": {
|
112 |
-
"language": "python"
|
113 |
-
},
|
114 |
-
"outputs": [],
|
115 |
-
"source": [
|
116 |
-
"from dotenv import load_dotenv"
|
117 |
]
|
118 |
},
|
119 |
{
|
@@ -127,16 +268,48 @@
|
|
127 |
"name": "stdout",
|
128 |
"output_type": "stream",
|
129 |
"text": [
|
130 |
-
"
|
|
|
131 |
"\n",
|
132 |
"To create a public link, set `share=True` in `launch()`.\n"
|
133 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
],
|
136 |
"source": [
|
137 |
-
"
|
138 |
-
"
|
|
|
|
|
139 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
}
|
141 |
],
|
142 |
"metadata": {
|
|
|
30 |
"text/markdown": [
|
31 |
"---\n",
|
32 |
"\n",
|
33 |
+
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#L32){target=\"_blank\" style=\"float:right; font-size:smaller\"}\n",
|
34 |
"\n",
|
35 |
"### ConversationBot\n",
|
36 |
"\n",
|
37 |
+
"> ConversationBot (verbose=True)\n",
|
38 |
"\n",
|
39 |
"Initialize self. See help(type(self)) for accurate signature."
|
40 |
],
|
41 |
"text/plain": [
|
42 |
"---\n",
|
43 |
"\n",
|
44 |
+
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#L32){target=\"_blank\" style=\"float:right; font-size:smaller\"}\n",
|
45 |
"\n",
|
46 |
"### ConversationBot\n",
|
47 |
"\n",
|
48 |
+
"> ConversationBot (verbose=True)\n",
|
49 |
"\n",
|
50 |
"Initialize self. See help(type(self)) for accurate signature."
|
51 |
]
|
|
|
61 |
"show_doc(ConversationBot)"
|
62 |
]
|
63 |
},
|
64 |
+
{
|
65 |
+
"cell_type": "code",
|
66 |
+
"execution_count": null,
|
67 |
+
"metadata": {
|
68 |
+
"language": "python"
|
69 |
+
},
|
70 |
+
"outputs": [
|
71 |
+
{
|
72 |
+
"data": {
|
73 |
+
"text/plain": [
|
74 |
+
"['veggie-fridge.jpeg',\n",
|
75 |
+
" 'veg-groceries-table.jpg',\n",
|
76 |
+
" 'fridge-splendid.jpg',\n",
|
77 |
+
" 'neat-veg-groceries.jpg',\n",
|
78 |
+
" 'veg-groceries-table.jpeg',\n",
|
79 |
+
" 'Fruits-and-vegetables-one-a-table.jpg']"
|
80 |
+
]
|
81 |
+
},
|
82 |
+
"execution_count": null,
|
83 |
+
"metadata": {},
|
84 |
+
"output_type": "execute_result"
|
85 |
+
}
|
86 |
+
],
|
87 |
+
"source": [
|
88 |
+
"os.listdir(SAMPLE_IMG_DIR)"
|
89 |
+
]
|
90 |
+
},
|
91 |
+
{
|
92 |
+
"cell_type": "code",
|
93 |
+
"execution_count": null,
|
94 |
+
"metadata": {
|
95 |
+
"language": "python"
|
96 |
+
},
|
97 |
+
"outputs": [],
|
98 |
+
"source": [
|
99 |
+
"from dotenv import load_dotenv"
|
100 |
+
]
|
101 |
+
},
|
102 |
+
{
|
103 |
+
"cell_type": "code",
|
104 |
+
"execution_count": null,
|
105 |
+
"metadata": {
|
106 |
+
"language": "python"
|
107 |
+
},
|
108 |
+
"outputs": [
|
109 |
+
{
|
110 |
+
"data": {
|
111 |
+
"text/plain": [
|
112 |
+
"True"
|
113 |
+
]
|
114 |
+
},
|
115 |
+
"execution_count": null,
|
116 |
+
"metadata": {},
|
117 |
+
"output_type": "execute_result"
|
118 |
+
}
|
119 |
+
],
|
120 |
+
"source": [
|
121 |
+
"load_dotenv()"
|
122 |
+
]
|
123 |
+
},
|
124 |
+
{
|
125 |
+
"cell_type": "code",
|
126 |
+
"execution_count": null,
|
127 |
+
"metadata": {
|
128 |
+
"language": "python"
|
129 |
+
},
|
130 |
+
"outputs": [
|
131 |
+
{
|
132 |
+
"name": "stdout",
|
133 |
+
"output_type": "stream",
|
134 |
+
"text": [
|
135 |
+
"CPU times: user 6.19 s, sys: 1.47 s, total: 7.66 s\n",
|
136 |
+
"Wall time: 4.68 s\n"
|
137 |
+
]
|
138 |
+
}
|
139 |
+
],
|
140 |
+
"source": []
|
141 |
+
},
|
142 |
+
{
|
143 |
+
"cell_type": "code",
|
144 |
+
"execution_count": null,
|
145 |
+
"metadata": {
|
146 |
+
"language": "python"
|
147 |
+
},
|
148 |
+
"outputs": [
|
149 |
+
{
|
150 |
+
"name": "stdout",
|
151 |
+
"output_type": "stream",
|
152 |
+
"text": [
|
153 |
+
"I uploaded an image that may contain vegan ingredients.\n",
|
154 |
+
"The description of the image is: `a refrigerator with food inside`.\n",
|
155 |
+
"The extracted ingredients are:\n",
|
156 |
+
"```\n",
|
157 |
+
"cabbage lettuce onion\n",
|
158 |
+
"apples\n",
|
159 |
+
"rice\n",
|
160 |
+
"plant-based milk\n",
|
161 |
+
"```\n",
|
162 |
+
"\n",
|
163 |
+
"CPU times: user 56.7 s, sys: 63.6 ms, total: 56.8 s\n",
|
164 |
+
"Wall time: 5.95 s\n"
|
165 |
+
]
|
166 |
+
}
|
167 |
+
],
|
168 |
+
"source": []
|
169 |
+
},
|
170 |
+
{
|
171 |
+
"cell_type": "code",
|
172 |
+
"execution_count": null,
|
173 |
+
"metadata": {
|
174 |
+
"language": "python"
|
175 |
+
},
|
176 |
+
"outputs": [
|
177 |
+
{
|
178 |
+
"data": {
|
179 |
+
"text/plain": [
|
180 |
+
"HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['ingredients'], output_parser=None, partial_variables={}, template='I uploaded an image that may contain vegan ingredients.\\nThe description of the image is: `a refrigerator with food inside`.\\nThe extracted ingredients are:\\n```\\ncabbage lettuce onion\\napples\\nrice\\nplant-based milk\\n```\\nI may type some more ingredients below.\\nIngredients: {ingredients}', template_format='f-string', validate_template=True), additional_kwargs={})"
|
181 |
+
]
|
182 |
+
},
|
183 |
+
"execution_count": null,
|
184 |
+
"metadata": {},
|
185 |
+
"output_type": "execute_result"
|
186 |
+
}
|
187 |
+
],
|
188 |
+
"source": [
|
189 |
+
"bot.init_prompt.messages[2]"
|
190 |
+
]
|
191 |
+
},
|
192 |
+
{
|
193 |
+
"cell_type": "code",
|
194 |
+
"execution_count": null,
|
195 |
+
"metadata": {
|
196 |
+
"language": "python"
|
197 |
+
},
|
198 |
+
"outputs": [
|
199 |
+
{
|
200 |
+
"data": {
|
201 |
+
"text/plain": [
|
202 |
+
"HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['ingredients'], output_parser=None, partial_variables={}, template='Ingredients: {ingredients}', template_format='f-string', validate_template=True), additional_kwargs={})"
|
203 |
+
]
|
204 |
+
},
|
205 |
+
"execution_count": null,
|
206 |
+
"metadata": {},
|
207 |
+
"output_type": "execute_result"
|
208 |
+
}
|
209 |
+
],
|
210 |
+
"source": [
|
211 |
+
"INIT_PROMPT.messages[2]"
|
212 |
+
]
|
213 |
+
},
|
214 |
+
{
|
215 |
+
"cell_type": "code",
|
216 |
+
"execution_count": null,
|
217 |
+
"metadata": {
|
218 |
+
"language": "python"
|
219 |
+
},
|
220 |
+
"outputs": [],
|
221 |
+
"source": []
|
222 |
+
},
|
223 |
{
|
224 |
"cell_type": "code",
|
225 |
"execution_count": 2,
|
|
|
230 |
"text/markdown": [
|
231 |
"---\n",
|
232 |
"\n",
|
233 |
+
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#L116){target=\"_blank\" style=\"float:right; font-size:smaller\"}\n",
|
234 |
"\n",
|
235 |
+
"### create_demo\n",
|
236 |
"\n",
|
237 |
+
"> create_demo (bot=<class '__main__.ConversationBot'>)"
|
238 |
],
|
239 |
"text/plain": [
|
240 |
"---\n",
|
241 |
"\n",
|
242 |
+
"[source](https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#L116){target=\"_blank\" style=\"float:right; font-size:smaller\"}\n",
|
243 |
"\n",
|
244 |
+
"### create_demo\n",
|
245 |
"\n",
|
246 |
+
"> create_demo (bot=<class '__main__.ConversationBot'>)"
|
247 |
]
|
248 |
},
|
249 |
"execution_count": 2,
|
|
|
254 |
"source": [
|
255 |
"#| echo: false\n",
|
256 |
"#| output: asis\n",
|
257 |
+
"show_doc(create_demo)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
]
|
259 |
},
|
260 |
{
|
|
|
268 |
"name": "stdout",
|
269 |
"output_type": "stream",
|
270 |
"text": [
|
271 |
+
"Closing server running on port: 7860\n",
|
272 |
+
"Running on local URL: http://127.0.0.1:7860\n",
|
273 |
"\n",
|
274 |
"To create a public link, set `share=True` in `launch()`.\n"
|
275 |
]
|
276 |
+
},
|
277 |
+
{
|
278 |
+
"data": {
|
279 |
+
"text/html": [
|
280 |
+
"<div><iframe src=\"http://127.0.0.1:7860/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
|
281 |
+
],
|
282 |
+
"text/plain": [
|
283 |
+
"<IPython.core.display.HTML object>"
|
284 |
+
]
|
285 |
+
},
|
286 |
+
"metadata": {},
|
287 |
+
"output_type": "display_data"
|
288 |
+
},
|
289 |
+
{
|
290 |
+
"data": {
|
291 |
+
"text/plain": []
|
292 |
+
},
|
293 |
+
"execution_count": null,
|
294 |
+
"metadata": {},
|
295 |
+
"output_type": "execute_result"
|
296 |
}
|
297 |
],
|
298 |
"source": [
|
299 |
+
"if \"demo\" in globals():\n",
|
300 |
+
" demo.close()\n",
|
301 |
+
"demo = create_demo(bot)\n",
|
302 |
+
"demo.launch()"
|
303 |
]
|
304 |
+
},
|
305 |
+
{
|
306 |
+
"cell_type": "code",
|
307 |
+
"execution_count": null,
|
308 |
+
"metadata": {
|
309 |
+
"language": "python"
|
310 |
+
},
|
311 |
+
"outputs": [],
|
312 |
+
"source": []
|
313 |
}
|
314 |
],
|
315 |
"metadata": {
|
_proc/02_lchain_tool.ipynb
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
_proc/03_ingredient_vision.ipynb
ADDED
The diff for this file is too large to render.
See raw diff
|
|
_proc/{03_edamam_api.ipynb → 04_edamam_api.ipynb}
RENAMED
File without changes
|
_proc/_docs/app.html
DELETED
@@ -1,483 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
3 |
-
|
4 |
-
<meta charset="utf-8">
|
5 |
-
<meta name="generator" content="quarto-1.3.361">
|
6 |
-
|
7 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
8 |
-
|
9 |
-
<meta name="description" content="Gradio app.py">
|
10 |
-
|
11 |
-
<title>lv-recipe-chatbot - app</title>
|
12 |
-
<style>
|
13 |
-
code{white-space: pre-wrap;}
|
14 |
-
span.smallcaps{font-variant: small-caps;}
|
15 |
-
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
16 |
-
div.column{flex: auto; overflow-x: auto;}
|
17 |
-
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
18 |
-
ul.task-list{list-style: none;}
|
19 |
-
ul.task-list li input[type="checkbox"] {
|
20 |
-
width: 0.8em;
|
21 |
-
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
22 |
-
vertical-align: middle;
|
23 |
-
}
|
24 |
-
/* CSS for syntax highlighting */
|
25 |
-
pre > code.sourceCode { white-space: pre; position: relative; }
|
26 |
-
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
27 |
-
pre > code.sourceCode > span:empty { height: 1.2em; }
|
28 |
-
.sourceCode { overflow: visible; }
|
29 |
-
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
30 |
-
div.sourceCode { margin: 1em 0; }
|
31 |
-
pre.sourceCode { margin: 0; }
|
32 |
-
@media screen {
|
33 |
-
div.sourceCode { overflow: auto; }
|
34 |
-
}
|
35 |
-
@media print {
|
36 |
-
pre > code.sourceCode { white-space: pre-wrap; }
|
37 |
-
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
38 |
-
}
|
39 |
-
pre.numberSource code
|
40 |
-
{ counter-reset: source-line 0; }
|
41 |
-
pre.numberSource code > span
|
42 |
-
{ position: relative; left: -4em; counter-increment: source-line; }
|
43 |
-
pre.numberSource code > span > a:first-child::before
|
44 |
-
{ content: counter(source-line);
|
45 |
-
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
46 |
-
border: none; display: inline-block;
|
47 |
-
-webkit-touch-callout: none; -webkit-user-select: none;
|
48 |
-
-khtml-user-select: none; -moz-user-select: none;
|
49 |
-
-ms-user-select: none; user-select: none;
|
50 |
-
padding: 0 4px; width: 4em;
|
51 |
-
}
|
52 |
-
pre.numberSource { margin-left: 3em; padding-left: 4px; }
|
53 |
-
div.sourceCode
|
54 |
-
{ }
|
55 |
-
@media screen {
|
56 |
-
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
57 |
-
}
|
58 |
-
</style>
|
59 |
-
|
60 |
-
|
61 |
-
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
|
62 |
-
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
63 |
-
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
64 |
-
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
65 |
-
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
66 |
-
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
67 |
-
<meta name="quarto:offset" content="./">
|
68 |
-
<script src="site_libs/quarto-html/quarto.js"></script>
|
69 |
-
<script src="site_libs/quarto-html/popper.min.js"></script>
|
70 |
-
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
|
71 |
-
<script src="site_libs/quarto-html/anchor.min.js"></script>
|
72 |
-
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
|
73 |
-
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
74 |
-
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
|
75 |
-
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
|
76 |
-
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
|
77 |
-
<script id="quarto-search-options" type="application/json">{
|
78 |
-
"location": "navbar",
|
79 |
-
"copy-button": false,
|
80 |
-
"collapse-after": 3,
|
81 |
-
"panel-placement": "end",
|
82 |
-
"type": "overlay",
|
83 |
-
"limit": 20,
|
84 |
-
"language": {
|
85 |
-
"search-no-results-text": "No results",
|
86 |
-
"search-matching-documents-text": "matching documents",
|
87 |
-
"search-copy-link-title": "Copy link to search",
|
88 |
-
"search-hide-matches-text": "Hide additional matches",
|
89 |
-
"search-more-match-text": "more match in this document",
|
90 |
-
"search-more-matches-text": "more matches in this document",
|
91 |
-
"search-clear-button-title": "Clear",
|
92 |
-
"search-detached-cancel-button-title": "Cancel",
|
93 |
-
"search-submit-button-title": "Submit",
|
94 |
-
"search-label": "Search"
|
95 |
-
}
|
96 |
-
}</script>
|
97 |
-
|
98 |
-
|
99 |
-
<link rel="stylesheet" href="styles.css">
|
100 |
-
<meta property="og:title" content="lv-recipe-chatbot - app">
|
101 |
-
<meta property="og:description" content="Gradio app.py">
|
102 |
-
<meta property="og:site-name" content="lv-recipe-chatbot">
|
103 |
-
<meta name="twitter:title" content="lv-recipe-chatbot - app">
|
104 |
-
<meta name="twitter:description" content="Gradio app.py">
|
105 |
-
<meta name="twitter:card" content="summary">
|
106 |
-
</head>
|
107 |
-
|
108 |
-
<body class="nav-sidebar floating nav-fixed">
|
109 |
-
|
110 |
-
<div id="quarto-search-results"></div>
|
111 |
-
<header id="quarto-header" class="headroom fixed-top">
|
112 |
-
<nav class="navbar navbar-expand-lg navbar-dark ">
|
113 |
-
<div class="navbar-container container-fluid">
|
114 |
-
<div class="navbar-brand-container">
|
115 |
-
<a class="navbar-brand" href="./index.html">
|
116 |
-
<span class="navbar-title">lv-recipe-chatbot</span>
|
117 |
-
</a>
|
118 |
-
</div>
|
119 |
-
<div class="quarto-navbar-tools ms-auto">
|
120 |
-
</div>
|
121 |
-
<div id="quarto-search" class="" title="Search"></div>
|
122 |
-
</div> <!-- /container-fluid -->
|
123 |
-
</nav>
|
124 |
-
<nav class="quarto-secondary-nav">
|
125 |
-
<div class="container-fluid d-flex">
|
126 |
-
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
127 |
-
<i class="bi bi-layout-text-sidebar-reverse"></i>
|
128 |
-
</button>
|
129 |
-
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./app.html">app</a></li></ol></nav>
|
130 |
-
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
131 |
-
</a>
|
132 |
-
</div>
|
133 |
-
</nav>
|
134 |
-
</header>
|
135 |
-
<!-- content -->
|
136 |
-
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
137 |
-
<!-- sidebar -->
|
138 |
-
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal sidebar-navigation floating overflow-auto">
|
139 |
-
<div class="sidebar-menu-container">
|
140 |
-
<ul class="list-unstyled mt-1">
|
141 |
-
<li class="sidebar-item">
|
142 |
-
<div class="sidebar-item-container">
|
143 |
-
<a href="./index.html" class="sidebar-item-text sidebar-link">
|
144 |
-
<span class="menu-text">lv-recipe-chatbot</span></a>
|
145 |
-
</div>
|
146 |
-
</li>
|
147 |
-
<li class="sidebar-item">
|
148 |
-
<div class="sidebar-item-container">
|
149 |
-
<a href="./engineer_prompt.html" class="sidebar-item-text sidebar-link">
|
150 |
-
<span class="menu-text">engineer_prompt</span></a>
|
151 |
-
</div>
|
152 |
-
</li>
|
153 |
-
<li class="sidebar-item">
|
154 |
-
<div class="sidebar-item-container">
|
155 |
-
<a href="./app.html" class="sidebar-item-text sidebar-link active">
|
156 |
-
<span class="menu-text">app</span></a>
|
157 |
-
</div>
|
158 |
-
</li>
|
159 |
-
<li class="sidebar-item">
|
160 |
-
<div class="sidebar-item-container">
|
161 |
-
<a href="./lchain_tool.html" class="sidebar-item-text sidebar-link">
|
162 |
-
<span class="menu-text">lchain_tool</span></a>
|
163 |
-
</div>
|
164 |
-
</li>
|
165 |
-
<li class="sidebar-item">
|
166 |
-
<div class="sidebar-item-container">
|
167 |
-
<a href="./edamam_api.html" class="sidebar-item-text sidebar-link">
|
168 |
-
<span class="menu-text">edamam_api</span></a>
|
169 |
-
</div>
|
170 |
-
</li>
|
171 |
-
</ul>
|
172 |
-
</div>
|
173 |
-
</nav>
|
174 |
-
<div id="quarto-sidebar-glass" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass"></div>
|
175 |
-
<!-- margin-sidebar -->
|
176 |
-
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
177 |
-
<nav id="TOC" role="doc-toc" class="toc-active">
|
178 |
-
<h2 id="toc-title">On this page</h2>
|
179 |
-
|
180 |
-
<ul>
|
181 |
-
<li><a href="#conversationbot" id="toc-conversationbot" class="nav-link active" data-scroll-target="#conversationbot">ConversationBot</a></li>
|
182 |
-
<li><a href="#launch_demo" id="toc-launch_demo" class="nav-link" data-scroll-target="#launch_demo">launch_demo</a></li>
|
183 |
-
</ul>
|
184 |
-
<div class="toc-actions"><div><i class="bi bi-github"></i></div><div class="action-links"><p><a href="https://github.com/animalequality/lv-recipe-chatbot/issues/new" class="toc-action">Report an issue</a></p></div></div></nav>
|
185 |
-
</div>
|
186 |
-
<!-- main -->
|
187 |
-
<main class="content" id="quarto-document-content">
|
188 |
-
|
189 |
-
<header id="title-block-header" class="quarto-title-block default">
|
190 |
-
<div class="quarto-title">
|
191 |
-
<h1 class="title">app</h1>
|
192 |
-
</div>
|
193 |
-
|
194 |
-
<div>
|
195 |
-
<div class="description">
|
196 |
-
Gradio app.py
|
197 |
-
</div>
|
198 |
-
</div>
|
199 |
-
|
200 |
-
|
201 |
-
<div class="quarto-title-meta">
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
</div>
|
207 |
-
|
208 |
-
|
209 |
-
</header>
|
210 |
-
|
211 |
-
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
|
212 |
-
<hr>
|
213 |
-
<p><a href="https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#L23" target="_blank" style="float:right; font-size:smaller">source</a></p>
|
214 |
-
<section id="conversationbot" class="level3">
|
215 |
-
<h3 class="anchored" data-anchor-id="conversationbot">ConversationBot</h3>
|
216 |
-
<blockquote class="blockquote">
|
217 |
-
<pre><code> ConversationBot ()</code></pre>
|
218 |
-
</blockquote>
|
219 |
-
<p>Initialize self. See help(type(self)) for accurate signature.</p>
|
220 |
-
<hr>
|
221 |
-
<p><a href="https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/app.py#L86" target="_blank" style="float:right; font-size:smaller">source</a></p>
|
222 |
-
</section>
|
223 |
-
<section id="launch_demo" class="level3">
|
224 |
-
<h3 class="anchored" data-anchor-id="launch_demo">launch_demo</h3>
|
225 |
-
<blockquote class="blockquote">
|
226 |
-
<pre><code> launch_demo ()</code></pre>
|
227 |
-
</blockquote>
|
228 |
-
<p>Load environment for the demo</p>
|
229 |
-
<div class="cell">
|
230 |
-
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> dotenv <span class="im">import</span> load_dotenv</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
231 |
-
</div>
|
232 |
-
<div class="cell">
|
233 |
-
<div class="sourceCode cell-code" id="cb4"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>load_dotenv()</span>
|
234 |
-
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a>launch_demo()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
235 |
-
<div class="cell-output cell-output-stdout">
|
236 |
-
<pre><code>Running on local URL: http://127.0.0.1:7862
|
237 |
-
|
238 |
-
To create a public link, set `share=True` in `launch()`.</code></pre>
|
239 |
-
</div>
|
240 |
-
</div>
|
241 |
-
|
242 |
-
|
243 |
-
</section>
|
244 |
-
|
245 |
-
</main> <!-- /main -->
|
246 |
-
<script id="quarto-html-after-body" type="application/javascript">
|
247 |
-
window.document.addEventListener("DOMContentLoaded", function (event) {
|
248 |
-
const toggleBodyColorMode = (bsSheetEl) => {
|
249 |
-
const mode = bsSheetEl.getAttribute("data-mode");
|
250 |
-
const bodyEl = window.document.querySelector("body");
|
251 |
-
if (mode === "dark") {
|
252 |
-
bodyEl.classList.add("quarto-dark");
|
253 |
-
bodyEl.classList.remove("quarto-light");
|
254 |
-
} else {
|
255 |
-
bodyEl.classList.add("quarto-light");
|
256 |
-
bodyEl.classList.remove("quarto-dark");
|
257 |
-
}
|
258 |
-
}
|
259 |
-
const toggleBodyColorPrimary = () => {
|
260 |
-
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
|
261 |
-
if (bsSheetEl) {
|
262 |
-
toggleBodyColorMode(bsSheetEl);
|
263 |
-
}
|
264 |
-
}
|
265 |
-
toggleBodyColorPrimary();
|
266 |
-
const icon = "";
|
267 |
-
const anchorJS = new window.AnchorJS();
|
268 |
-
anchorJS.options = {
|
269 |
-
placement: 'right',
|
270 |
-
icon: icon
|
271 |
-
};
|
272 |
-
anchorJS.add('.anchored');
|
273 |
-
const isCodeAnnotation = (el) => {
|
274 |
-
for (const clz of el.classList) {
|
275 |
-
if (clz.startsWith('code-annotation-')) {
|
276 |
-
return true;
|
277 |
-
}
|
278 |
-
}
|
279 |
-
return false;
|
280 |
-
}
|
281 |
-
const clipboard = new window.ClipboardJS('.code-copy-button', {
|
282 |
-
text: function(trigger) {
|
283 |
-
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
284 |
-
for (const childEl of codeEl.children) {
|
285 |
-
if (isCodeAnnotation(childEl)) {
|
286 |
-
childEl.remove();
|
287 |
-
}
|
288 |
-
}
|
289 |
-
return codeEl.innerText;
|
290 |
-
}
|
291 |
-
});
|
292 |
-
clipboard.on('success', function(e) {
|
293 |
-
// button target
|
294 |
-
const button = e.trigger;
|
295 |
-
// don't keep focus
|
296 |
-
button.blur();
|
297 |
-
// flash "checked"
|
298 |
-
button.classList.add('code-copy-button-checked');
|
299 |
-
var currentTitle = button.getAttribute("title");
|
300 |
-
button.setAttribute("title", "Copied!");
|
301 |
-
let tooltip;
|
302 |
-
if (window.bootstrap) {
|
303 |
-
button.setAttribute("data-bs-toggle", "tooltip");
|
304 |
-
button.setAttribute("data-bs-placement", "left");
|
305 |
-
button.setAttribute("data-bs-title", "Copied!");
|
306 |
-
tooltip = new bootstrap.Tooltip(button,
|
307 |
-
{ trigger: "manual",
|
308 |
-
customClass: "code-copy-button-tooltip",
|
309 |
-
offset: [0, -8]});
|
310 |
-
tooltip.show();
|
311 |
-
}
|
312 |
-
setTimeout(function() {
|
313 |
-
if (tooltip) {
|
314 |
-
tooltip.hide();
|
315 |
-
button.removeAttribute("data-bs-title");
|
316 |
-
button.removeAttribute("data-bs-toggle");
|
317 |
-
button.removeAttribute("data-bs-placement");
|
318 |
-
}
|
319 |
-
button.setAttribute("title", currentTitle);
|
320 |
-
button.classList.remove('code-copy-button-checked');
|
321 |
-
}, 1000);
|
322 |
-
// clear code selection
|
323 |
-
e.clearSelection();
|
324 |
-
});
|
325 |
-
function tippyHover(el, contentFn) {
|
326 |
-
const config = {
|
327 |
-
allowHTML: true,
|
328 |
-
content: contentFn,
|
329 |
-
maxWidth: 500,
|
330 |
-
delay: 100,
|
331 |
-
arrow: false,
|
332 |
-
appendTo: function(el) {
|
333 |
-
return el.parentElement;
|
334 |
-
},
|
335 |
-
interactive: true,
|
336 |
-
interactiveBorder: 10,
|
337 |
-
theme: 'quarto',
|
338 |
-
placement: 'bottom-start'
|
339 |
-
};
|
340 |
-
window.tippy(el, config);
|
341 |
-
}
|
342 |
-
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
343 |
-
for (var i=0; i<noterefs.length; i++) {
|
344 |
-
const ref = noterefs[i];
|
345 |
-
tippyHover(ref, function() {
|
346 |
-
// use id or data attribute instead here
|
347 |
-
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
348 |
-
try { href = new URL(href).hash; } catch {}
|
349 |
-
const id = href.replace(/^#\/?/, "");
|
350 |
-
const note = window.document.getElementById(id);
|
351 |
-
return note.innerHTML;
|
352 |
-
});
|
353 |
-
}
|
354 |
-
let selectedAnnoteEl;
|
355 |
-
const selectorForAnnotation = ( cell, annotation) => {
|
356 |
-
let cellAttr = 'data-code-cell="' + cell + '"';
|
357 |
-
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
358 |
-
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
359 |
-
return selector;
|
360 |
-
}
|
361 |
-
const selectCodeLines = (annoteEl) => {
|
362 |
-
const doc = window.document;
|
363 |
-
const targetCell = annoteEl.getAttribute("data-target-cell");
|
364 |
-
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
365 |
-
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
366 |
-
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
367 |
-
const lineIds = lines.map((line) => {
|
368 |
-
return targetCell + "-" + line;
|
369 |
-
})
|
370 |
-
let top = null;
|
371 |
-
let height = null;
|
372 |
-
let parent = null;
|
373 |
-
if (lineIds.length > 0) {
|
374 |
-
//compute the position of the single el (top and bottom and make a div)
|
375 |
-
const el = window.document.getElementById(lineIds[0]);
|
376 |
-
top = el.offsetTop;
|
377 |
-
height = el.offsetHeight;
|
378 |
-
parent = el.parentElement.parentElement;
|
379 |
-
if (lineIds.length > 1) {
|
380 |
-
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
381 |
-
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
382 |
-
height = bottom - top;
|
383 |
-
}
|
384 |
-
if (top !== null && height !== null && parent !== null) {
|
385 |
-
// cook up a div (if necessary) and position it
|
386 |
-
let div = window.document.getElementById("code-annotation-line-highlight");
|
387 |
-
if (div === null) {
|
388 |
-
div = window.document.createElement("div");
|
389 |
-
div.setAttribute("id", "code-annotation-line-highlight");
|
390 |
-
div.style.position = 'absolute';
|
391 |
-
parent.appendChild(div);
|
392 |
-
}
|
393 |
-
div.style.top = top - 2 + "px";
|
394 |
-
div.style.height = height + 4 + "px";
|
395 |
-
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
396 |
-
if (gutterDiv === null) {
|
397 |
-
gutterDiv = window.document.createElement("div");
|
398 |
-
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
399 |
-
gutterDiv.style.position = 'absolute';
|
400 |
-
const codeCell = window.document.getElementById(targetCell);
|
401 |
-
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
402 |
-
gutter.appendChild(gutterDiv);
|
403 |
-
}
|
404 |
-
gutterDiv.style.top = top - 2 + "px";
|
405 |
-
gutterDiv.style.height = height + 4 + "px";
|
406 |
-
}
|
407 |
-
selectedAnnoteEl = annoteEl;
|
408 |
-
}
|
409 |
-
};
|
410 |
-
const unselectCodeLines = () => {
|
411 |
-
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
412 |
-
elementsIds.forEach((elId) => {
|
413 |
-
const div = window.document.getElementById(elId);
|
414 |
-
if (div) {
|
415 |
-
div.remove();
|
416 |
-
}
|
417 |
-
});
|
418 |
-
selectedAnnoteEl = undefined;
|
419 |
-
};
|
420 |
-
// Attach click handler to the DT
|
421 |
-
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
422 |
-
for (const annoteDlNode of annoteDls) {
|
423 |
-
annoteDlNode.addEventListener('click', (event) => {
|
424 |
-
const clickedEl = event.target;
|
425 |
-
if (clickedEl !== selectedAnnoteEl) {
|
426 |
-
unselectCodeLines();
|
427 |
-
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
428 |
-
if (activeEl) {
|
429 |
-
activeEl.classList.remove('code-annotation-active');
|
430 |
-
}
|
431 |
-
selectCodeLines(clickedEl);
|
432 |
-
clickedEl.classList.add('code-annotation-active');
|
433 |
-
} else {
|
434 |
-
// Unselect the line
|
435 |
-
unselectCodeLines();
|
436 |
-
clickedEl.classList.remove('code-annotation-active');
|
437 |
-
}
|
438 |
-
});
|
439 |
-
}
|
440 |
-
const findCites = (el) => {
|
441 |
-
const parentEl = el.parentElement;
|
442 |
-
if (parentEl) {
|
443 |
-
const cites = parentEl.dataset.cites;
|
444 |
-
if (cites) {
|
445 |
-
return {
|
446 |
-
el,
|
447 |
-
cites: cites.split(' ')
|
448 |
-
};
|
449 |
-
} else {
|
450 |
-
return findCites(el.parentElement)
|
451 |
-
}
|
452 |
-
} else {
|
453 |
-
return undefined;
|
454 |
-
}
|
455 |
-
};
|
456 |
-
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
457 |
-
for (var i=0; i<bibliorefs.length; i++) {
|
458 |
-
const ref = bibliorefs[i];
|
459 |
-
const citeInfo = findCites(ref);
|
460 |
-
if (citeInfo) {
|
461 |
-
tippyHover(citeInfo.el, function() {
|
462 |
-
var popup = window.document.createElement('div');
|
463 |
-
citeInfo.cites.forEach(function(cite) {
|
464 |
-
var citeDiv = window.document.createElement('div');
|
465 |
-
citeDiv.classList.add('hanging-indent');
|
466 |
-
citeDiv.classList.add('csl-entry');
|
467 |
-
var biblioDiv = window.document.getElementById('ref-' + cite);
|
468 |
-
if (biblioDiv) {
|
469 |
-
citeDiv.innerHTML = biblioDiv.innerHTML;
|
470 |
-
}
|
471 |
-
popup.appendChild(citeDiv);
|
472 |
-
});
|
473 |
-
return popup.innerHTML;
|
474 |
-
});
|
475 |
-
}
|
476 |
-
}
|
477 |
-
});
|
478 |
-
</script>
|
479 |
-
</div> <!-- /content -->
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
</body></html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/edamam_api.html
DELETED
@@ -1,426 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
3 |
-
|
4 |
-
<meta charset="utf-8">
|
5 |
-
<meta name="generator" content="quarto-1.3.361">
|
6 |
-
|
7 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
8 |
-
|
9 |
-
<meta name="description" content="Tinkering with the ">
|
10 |
-
|
11 |
-
<title>lv-recipe-chatbot - edamam_api</title>
|
12 |
-
<style>
|
13 |
-
code{white-space: pre-wrap;}
|
14 |
-
span.smallcaps{font-variant: small-caps;}
|
15 |
-
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
16 |
-
div.column{flex: auto; overflow-x: auto;}
|
17 |
-
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
18 |
-
ul.task-list{list-style: none;}
|
19 |
-
ul.task-list li input[type="checkbox"] {
|
20 |
-
width: 0.8em;
|
21 |
-
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
22 |
-
vertical-align: middle;
|
23 |
-
}
|
24 |
-
</style>
|
25 |
-
|
26 |
-
|
27 |
-
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
|
28 |
-
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
29 |
-
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
30 |
-
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
31 |
-
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
32 |
-
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
33 |
-
<meta name="quarto:offset" content="./">
|
34 |
-
<script src="site_libs/quarto-html/quarto.js"></script>
|
35 |
-
<script src="site_libs/quarto-html/popper.min.js"></script>
|
36 |
-
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
|
37 |
-
<script src="site_libs/quarto-html/anchor.min.js"></script>
|
38 |
-
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
|
39 |
-
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
40 |
-
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
|
41 |
-
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
|
42 |
-
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
|
43 |
-
<script id="quarto-search-options" type="application/json">{
|
44 |
-
"location": "navbar",
|
45 |
-
"copy-button": false,
|
46 |
-
"collapse-after": 3,
|
47 |
-
"panel-placement": "end",
|
48 |
-
"type": "overlay",
|
49 |
-
"limit": 20,
|
50 |
-
"language": {
|
51 |
-
"search-no-results-text": "No results",
|
52 |
-
"search-matching-documents-text": "matching documents",
|
53 |
-
"search-copy-link-title": "Copy link to search",
|
54 |
-
"search-hide-matches-text": "Hide additional matches",
|
55 |
-
"search-more-match-text": "more match in this document",
|
56 |
-
"search-more-matches-text": "more matches in this document",
|
57 |
-
"search-clear-button-title": "Clear",
|
58 |
-
"search-detached-cancel-button-title": "Cancel",
|
59 |
-
"search-submit-button-title": "Submit",
|
60 |
-
"search-label": "Search"
|
61 |
-
}
|
62 |
-
}</script>
|
63 |
-
|
64 |
-
|
65 |
-
<link rel="stylesheet" href="styles.css">
|
66 |
-
<meta property="og:title" content="lv-recipe-chatbot - edamam_api">
|
67 |
-
<meta property="og:description" content="Tinkering with the ">
|
68 |
-
<meta property="og:site-name" content="lv-recipe-chatbot">
|
69 |
-
<meta name="twitter:title" content="lv-recipe-chatbot - edamam_api">
|
70 |
-
<meta name="twitter:description" content="Tinkering with the ">
|
71 |
-
<meta name="twitter:card" content="summary">
|
72 |
-
</head>
|
73 |
-
|
74 |
-
<body class="nav-sidebar floating nav-fixed">
|
75 |
-
|
76 |
-
<div id="quarto-search-results"></div>
|
77 |
-
<header id="quarto-header" class="headroom fixed-top">
|
78 |
-
<nav class="navbar navbar-expand-lg navbar-dark ">
|
79 |
-
<div class="navbar-container container-fluid">
|
80 |
-
<div class="navbar-brand-container">
|
81 |
-
<a class="navbar-brand" href="./index.html">
|
82 |
-
<span class="navbar-title">lv-recipe-chatbot</span>
|
83 |
-
</a>
|
84 |
-
</div>
|
85 |
-
<div class="quarto-navbar-tools ms-auto">
|
86 |
-
</div>
|
87 |
-
<div id="quarto-search" class="" title="Search"></div>
|
88 |
-
</div> <!-- /container-fluid -->
|
89 |
-
</nav>
|
90 |
-
<nav class="quarto-secondary-nav">
|
91 |
-
<div class="container-fluid d-flex">
|
92 |
-
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
93 |
-
<i class="bi bi-layout-text-sidebar-reverse"></i>
|
94 |
-
</button>
|
95 |
-
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./edamam_api.html">edamam_api</a></li></ol></nav>
|
96 |
-
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
97 |
-
</a>
|
98 |
-
</div>
|
99 |
-
</nav>
|
100 |
-
</header>
|
101 |
-
<!-- content -->
|
102 |
-
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
103 |
-
<!-- sidebar -->
|
104 |
-
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal sidebar-navigation floating overflow-auto">
|
105 |
-
<div class="sidebar-menu-container">
|
106 |
-
<ul class="list-unstyled mt-1">
|
107 |
-
<li class="sidebar-item">
|
108 |
-
<div class="sidebar-item-container">
|
109 |
-
<a href="./index.html" class="sidebar-item-text sidebar-link">
|
110 |
-
<span class="menu-text">lv-recipe-chatbot</span></a>
|
111 |
-
</div>
|
112 |
-
</li>
|
113 |
-
<li class="sidebar-item">
|
114 |
-
<div class="sidebar-item-container">
|
115 |
-
<a href="./engineer_prompt.html" class="sidebar-item-text sidebar-link">
|
116 |
-
<span class="menu-text">engineer_prompt</span></a>
|
117 |
-
</div>
|
118 |
-
</li>
|
119 |
-
<li class="sidebar-item">
|
120 |
-
<div class="sidebar-item-container">
|
121 |
-
<a href="./app.html" class="sidebar-item-text sidebar-link">
|
122 |
-
<span class="menu-text">app</span></a>
|
123 |
-
</div>
|
124 |
-
</li>
|
125 |
-
<li class="sidebar-item">
|
126 |
-
<div class="sidebar-item-container">
|
127 |
-
<a href="./lchain_tool.html" class="sidebar-item-text sidebar-link">
|
128 |
-
<span class="menu-text">lchain_tool</span></a>
|
129 |
-
</div>
|
130 |
-
</li>
|
131 |
-
<li class="sidebar-item">
|
132 |
-
<div class="sidebar-item-container">
|
133 |
-
<a href="./edamam_api.html" class="sidebar-item-text sidebar-link active">
|
134 |
-
<span class="menu-text">edamam_api</span></a>
|
135 |
-
</div>
|
136 |
-
</li>
|
137 |
-
</ul>
|
138 |
-
</div>
|
139 |
-
</nav>
|
140 |
-
<div id="quarto-sidebar-glass" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass"></div>
|
141 |
-
<!-- margin-sidebar -->
|
142 |
-
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
143 |
-
<nav id="TOC" role="doc-toc" class="toc-active">
|
144 |
-
<h2 id="toc-title">On this page</h2>
|
145 |
-
|
146 |
-
<ul>
|
147 |
-
<li><a href="#foo" id="toc-foo" class="nav-link active" data-scroll-target="#foo">foo</a></li>
|
148 |
-
</ul>
|
149 |
-
<div class="toc-actions"><div><i class="bi bi-github"></i></div><div class="action-links"><p><a href="https://github.com/animalequality/lv-recipe-chatbot/issues/new" class="toc-action">Report an issue</a></p></div></div></nav>
|
150 |
-
</div>
|
151 |
-
<!-- main -->
|
152 |
-
<main class="content" id="quarto-document-content">
|
153 |
-
|
154 |
-
<header id="title-block-header" class="quarto-title-block default">
|
155 |
-
<div class="quarto-title">
|
156 |
-
<h1 class="title">edamam_api</h1>
|
157 |
-
</div>
|
158 |
-
|
159 |
-
<div>
|
160 |
-
<div class="description">
|
161 |
-
Tinkering with the <a href="Edamam API"></a>
|
162 |
-
</div>
|
163 |
-
</div>
|
164 |
-
|
165 |
-
|
166 |
-
<div class="quarto-title-meta">
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
</div>
|
172 |
-
|
173 |
-
|
174 |
-
</header>
|
175 |
-
|
176 |
-
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
|
177 |
-
<hr>
|
178 |
-
<p><a href="https://github.com/animalequality/lv-recipe-chatbot/blob/main/lv_recipe_chatbot/edamam_api.py#L7" target="_blank" style="float:right; font-size:smaller">source</a></p>
|
179 |
-
<section id="foo" class="level3">
|
180 |
-
<h3 class="anchored" data-anchor-id="foo">foo</h3>
|
181 |
-
<blockquote class="blockquote">
|
182 |
-
<pre><code> foo ()</code></pre>
|
183 |
-
</blockquote>
|
184 |
-
|
185 |
-
|
186 |
-
</section>
|
187 |
-
|
188 |
-
</main> <!-- /main -->
|
189 |
-
<script id="quarto-html-after-body" type="application/javascript">
|
190 |
-
window.document.addEventListener("DOMContentLoaded", function (event) {
|
191 |
-
const toggleBodyColorMode = (bsSheetEl) => {
|
192 |
-
const mode = bsSheetEl.getAttribute("data-mode");
|
193 |
-
const bodyEl = window.document.querySelector("body");
|
194 |
-
if (mode === "dark") {
|
195 |
-
bodyEl.classList.add("quarto-dark");
|
196 |
-
bodyEl.classList.remove("quarto-light");
|
197 |
-
} else {
|
198 |
-
bodyEl.classList.add("quarto-light");
|
199 |
-
bodyEl.classList.remove("quarto-dark");
|
200 |
-
}
|
201 |
-
}
|
202 |
-
const toggleBodyColorPrimary = () => {
|
203 |
-
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
|
204 |
-
if (bsSheetEl) {
|
205 |
-
toggleBodyColorMode(bsSheetEl);
|
206 |
-
}
|
207 |
-
}
|
208 |
-
toggleBodyColorPrimary();
|
209 |
-
const icon = "";
|
210 |
-
const anchorJS = new window.AnchorJS();
|
211 |
-
anchorJS.options = {
|
212 |
-
placement: 'right',
|
213 |
-
icon: icon
|
214 |
-
};
|
215 |
-
anchorJS.add('.anchored');
|
216 |
-
const isCodeAnnotation = (el) => {
|
217 |
-
for (const clz of el.classList) {
|
218 |
-
if (clz.startsWith('code-annotation-')) {
|
219 |
-
return true;
|
220 |
-
}
|
221 |
-
}
|
222 |
-
return false;
|
223 |
-
}
|
224 |
-
const clipboard = new window.ClipboardJS('.code-copy-button', {
|
225 |
-
text: function(trigger) {
|
226 |
-
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
227 |
-
for (const childEl of codeEl.children) {
|
228 |
-
if (isCodeAnnotation(childEl)) {
|
229 |
-
childEl.remove();
|
230 |
-
}
|
231 |
-
}
|
232 |
-
return codeEl.innerText;
|
233 |
-
}
|
234 |
-
});
|
235 |
-
clipboard.on('success', function(e) {
|
236 |
-
// button target
|
237 |
-
const button = e.trigger;
|
238 |
-
// don't keep focus
|
239 |
-
button.blur();
|
240 |
-
// flash "checked"
|
241 |
-
button.classList.add('code-copy-button-checked');
|
242 |
-
var currentTitle = button.getAttribute("title");
|
243 |
-
button.setAttribute("title", "Copied!");
|
244 |
-
let tooltip;
|
245 |
-
if (window.bootstrap) {
|
246 |
-
button.setAttribute("data-bs-toggle", "tooltip");
|
247 |
-
button.setAttribute("data-bs-placement", "left");
|
248 |
-
button.setAttribute("data-bs-title", "Copied!");
|
249 |
-
tooltip = new bootstrap.Tooltip(button,
|
250 |
-
{ trigger: "manual",
|
251 |
-
customClass: "code-copy-button-tooltip",
|
252 |
-
offset: [0, -8]});
|
253 |
-
tooltip.show();
|
254 |
-
}
|
255 |
-
setTimeout(function() {
|
256 |
-
if (tooltip) {
|
257 |
-
tooltip.hide();
|
258 |
-
button.removeAttribute("data-bs-title");
|
259 |
-
button.removeAttribute("data-bs-toggle");
|
260 |
-
button.removeAttribute("data-bs-placement");
|
261 |
-
}
|
262 |
-
button.setAttribute("title", currentTitle);
|
263 |
-
button.classList.remove('code-copy-button-checked');
|
264 |
-
}, 1000);
|
265 |
-
// clear code selection
|
266 |
-
e.clearSelection();
|
267 |
-
});
|
268 |
-
function tippyHover(el, contentFn) {
|
269 |
-
const config = {
|
270 |
-
allowHTML: true,
|
271 |
-
content: contentFn,
|
272 |
-
maxWidth: 500,
|
273 |
-
delay: 100,
|
274 |
-
arrow: false,
|
275 |
-
appendTo: function(el) {
|
276 |
-
return el.parentElement;
|
277 |
-
},
|
278 |
-
interactive: true,
|
279 |
-
interactiveBorder: 10,
|
280 |
-
theme: 'quarto',
|
281 |
-
placement: 'bottom-start'
|
282 |
-
};
|
283 |
-
window.tippy(el, config);
|
284 |
-
}
|
285 |
-
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
286 |
-
for (var i=0; i<noterefs.length; i++) {
|
287 |
-
const ref = noterefs[i];
|
288 |
-
tippyHover(ref, function() {
|
289 |
-
// use id or data attribute instead here
|
290 |
-
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
291 |
-
try { href = new URL(href).hash; } catch {}
|
292 |
-
const id = href.replace(/^#\/?/, "");
|
293 |
-
const note = window.document.getElementById(id);
|
294 |
-
return note.innerHTML;
|
295 |
-
});
|
296 |
-
}
|
297 |
-
let selectedAnnoteEl;
|
298 |
-
const selectorForAnnotation = ( cell, annotation) => {
|
299 |
-
let cellAttr = 'data-code-cell="' + cell + '"';
|
300 |
-
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
301 |
-
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
302 |
-
return selector;
|
303 |
-
}
|
304 |
-
const selectCodeLines = (annoteEl) => {
|
305 |
-
const doc = window.document;
|
306 |
-
const targetCell = annoteEl.getAttribute("data-target-cell");
|
307 |
-
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
308 |
-
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
309 |
-
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
310 |
-
const lineIds = lines.map((line) => {
|
311 |
-
return targetCell + "-" + line;
|
312 |
-
})
|
313 |
-
let top = null;
|
314 |
-
let height = null;
|
315 |
-
let parent = null;
|
316 |
-
if (lineIds.length > 0) {
|
317 |
-
//compute the position of the single el (top and bottom and make a div)
|
318 |
-
const el = window.document.getElementById(lineIds[0]);
|
319 |
-
top = el.offsetTop;
|
320 |
-
height = el.offsetHeight;
|
321 |
-
parent = el.parentElement.parentElement;
|
322 |
-
if (lineIds.length > 1) {
|
323 |
-
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
324 |
-
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
325 |
-
height = bottom - top;
|
326 |
-
}
|
327 |
-
if (top !== null && height !== null && parent !== null) {
|
328 |
-
// cook up a div (if necessary) and position it
|
329 |
-
let div = window.document.getElementById("code-annotation-line-highlight");
|
330 |
-
if (div === null) {
|
331 |
-
div = window.document.createElement("div");
|
332 |
-
div.setAttribute("id", "code-annotation-line-highlight");
|
333 |
-
div.style.position = 'absolute';
|
334 |
-
parent.appendChild(div);
|
335 |
-
}
|
336 |
-
div.style.top = top - 2 + "px";
|
337 |
-
div.style.height = height + 4 + "px";
|
338 |
-
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
339 |
-
if (gutterDiv === null) {
|
340 |
-
gutterDiv = window.document.createElement("div");
|
341 |
-
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
342 |
-
gutterDiv.style.position = 'absolute';
|
343 |
-
const codeCell = window.document.getElementById(targetCell);
|
344 |
-
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
345 |
-
gutter.appendChild(gutterDiv);
|
346 |
-
}
|
347 |
-
gutterDiv.style.top = top - 2 + "px";
|
348 |
-
gutterDiv.style.height = height + 4 + "px";
|
349 |
-
}
|
350 |
-
selectedAnnoteEl = annoteEl;
|
351 |
-
}
|
352 |
-
};
|
353 |
-
const unselectCodeLines = () => {
|
354 |
-
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
355 |
-
elementsIds.forEach((elId) => {
|
356 |
-
const div = window.document.getElementById(elId);
|
357 |
-
if (div) {
|
358 |
-
div.remove();
|
359 |
-
}
|
360 |
-
});
|
361 |
-
selectedAnnoteEl = undefined;
|
362 |
-
};
|
363 |
-
// Attach click handler to the DT
|
364 |
-
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
365 |
-
for (const annoteDlNode of annoteDls) {
|
366 |
-
annoteDlNode.addEventListener('click', (event) => {
|
367 |
-
const clickedEl = event.target;
|
368 |
-
if (clickedEl !== selectedAnnoteEl) {
|
369 |
-
unselectCodeLines();
|
370 |
-
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
371 |
-
if (activeEl) {
|
372 |
-
activeEl.classList.remove('code-annotation-active');
|
373 |
-
}
|
374 |
-
selectCodeLines(clickedEl);
|
375 |
-
clickedEl.classList.add('code-annotation-active');
|
376 |
-
} else {
|
377 |
-
// Unselect the line
|
378 |
-
unselectCodeLines();
|
379 |
-
clickedEl.classList.remove('code-annotation-active');
|
380 |
-
}
|
381 |
-
});
|
382 |
-
}
|
383 |
-
const findCites = (el) => {
|
384 |
-
const parentEl = el.parentElement;
|
385 |
-
if (parentEl) {
|
386 |
-
const cites = parentEl.dataset.cites;
|
387 |
-
if (cites) {
|
388 |
-
return {
|
389 |
-
el,
|
390 |
-
cites: cites.split(' ')
|
391 |
-
};
|
392 |
-
} else {
|
393 |
-
return findCites(el.parentElement)
|
394 |
-
}
|
395 |
-
} else {
|
396 |
-
return undefined;
|
397 |
-
}
|
398 |
-
};
|
399 |
-
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
400 |
-
for (var i=0; i<bibliorefs.length; i++) {
|
401 |
-
const ref = bibliorefs[i];
|
402 |
-
const citeInfo = findCites(ref);
|
403 |
-
if (citeInfo) {
|
404 |
-
tippyHover(citeInfo.el, function() {
|
405 |
-
var popup = window.document.createElement('div');
|
406 |
-
citeInfo.cites.forEach(function(cite) {
|
407 |
-
var citeDiv = window.document.createElement('div');
|
408 |
-
citeDiv.classList.add('hanging-indent');
|
409 |
-
citeDiv.classList.add('csl-entry');
|
410 |
-
var biblioDiv = window.document.getElementById('ref-' + cite);
|
411 |
-
if (biblioDiv) {
|
412 |
-
citeDiv.innerHTML = biblioDiv.innerHTML;
|
413 |
-
}
|
414 |
-
popup.appendChild(citeDiv);
|
415 |
-
});
|
416 |
-
return popup.innerHTML;
|
417 |
-
});
|
418 |
-
}
|
419 |
-
}
|
420 |
-
});
|
421 |
-
</script>
|
422 |
-
</div> <!-- /content -->
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
</body></html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/engineer_prompt.html
DELETED
@@ -1,578 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
3 |
-
|
4 |
-
<meta charset="utf-8">
|
5 |
-
<meta name="generator" content="quarto-1.3.361">
|
6 |
-
|
7 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
8 |
-
|
9 |
-
<meta name="description" content="Engineering prompts">
|
10 |
-
|
11 |
-
<title>lv-recipe-chatbot - engineer_prompt</title>
|
12 |
-
<style>
|
13 |
-
code{white-space: pre-wrap;}
|
14 |
-
span.smallcaps{font-variant: small-caps;}
|
15 |
-
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
16 |
-
div.column{flex: auto; overflow-x: auto;}
|
17 |
-
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
18 |
-
ul.task-list{list-style: none;}
|
19 |
-
ul.task-list li input[type="checkbox"] {
|
20 |
-
width: 0.8em;
|
21 |
-
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
22 |
-
vertical-align: middle;
|
23 |
-
}
|
24 |
-
/* CSS for syntax highlighting */
|
25 |
-
pre > code.sourceCode { white-space: pre; position: relative; }
|
26 |
-
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
27 |
-
pre > code.sourceCode > span:empty { height: 1.2em; }
|
28 |
-
.sourceCode { overflow: visible; }
|
29 |
-
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
30 |
-
div.sourceCode { margin: 1em 0; }
|
31 |
-
pre.sourceCode { margin: 0; }
|
32 |
-
@media screen {
|
33 |
-
div.sourceCode { overflow: auto; }
|
34 |
-
}
|
35 |
-
@media print {
|
36 |
-
pre > code.sourceCode { white-space: pre-wrap; }
|
37 |
-
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
38 |
-
}
|
39 |
-
pre.numberSource code
|
40 |
-
{ counter-reset: source-line 0; }
|
41 |
-
pre.numberSource code > span
|
42 |
-
{ position: relative; left: -4em; counter-increment: source-line; }
|
43 |
-
pre.numberSource code > span > a:first-child::before
|
44 |
-
{ content: counter(source-line);
|
45 |
-
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
46 |
-
border: none; display: inline-block;
|
47 |
-
-webkit-touch-callout: none; -webkit-user-select: none;
|
48 |
-
-khtml-user-select: none; -moz-user-select: none;
|
49 |
-
-ms-user-select: none; user-select: none;
|
50 |
-
padding: 0 4px; width: 4em;
|
51 |
-
}
|
52 |
-
pre.numberSource { margin-left: 3em; padding-left: 4px; }
|
53 |
-
div.sourceCode
|
54 |
-
{ }
|
55 |
-
@media screen {
|
56 |
-
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
57 |
-
}
|
58 |
-
</style>
|
59 |
-
|
60 |
-
|
61 |
-
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
|
62 |
-
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
63 |
-
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
64 |
-
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
65 |
-
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
66 |
-
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
67 |
-
<meta name="quarto:offset" content="./">
|
68 |
-
<script src="site_libs/quarto-html/quarto.js"></script>
|
69 |
-
<script src="site_libs/quarto-html/popper.min.js"></script>
|
70 |
-
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
|
71 |
-
<script src="site_libs/quarto-html/anchor.min.js"></script>
|
72 |
-
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
|
73 |
-
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
74 |
-
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
|
75 |
-
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
|
76 |
-
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
|
77 |
-
<script id="quarto-search-options" type="application/json">{
|
78 |
-
"location": "navbar",
|
79 |
-
"copy-button": false,
|
80 |
-
"collapse-after": 3,
|
81 |
-
"panel-placement": "end",
|
82 |
-
"type": "overlay",
|
83 |
-
"limit": 20,
|
84 |
-
"language": {
|
85 |
-
"search-no-results-text": "No results",
|
86 |
-
"search-matching-documents-text": "matching documents",
|
87 |
-
"search-copy-link-title": "Copy link to search",
|
88 |
-
"search-hide-matches-text": "Hide additional matches",
|
89 |
-
"search-more-match-text": "more match in this document",
|
90 |
-
"search-more-matches-text": "more matches in this document",
|
91 |
-
"search-clear-button-title": "Clear",
|
92 |
-
"search-detached-cancel-button-title": "Cancel",
|
93 |
-
"search-submit-button-title": "Submit",
|
94 |
-
"search-label": "Search"
|
95 |
-
}
|
96 |
-
}</script>
|
97 |
-
|
98 |
-
|
99 |
-
<link rel="stylesheet" href="styles.css">
|
100 |
-
<meta property="og:title" content="lv-recipe-chatbot - engineer_prompt">
|
101 |
-
<meta property="og:description" content="Engineering prompts">
|
102 |
-
<meta property="og:site-name" content="lv-recipe-chatbot">
|
103 |
-
<meta name="twitter:title" content="lv-recipe-chatbot - engineer_prompt">
|
104 |
-
<meta name="twitter:description" content="Engineering prompts">
|
105 |
-
<meta name="twitter:card" content="summary">
|
106 |
-
</head>
|
107 |
-
|
108 |
-
<body class="nav-sidebar floating nav-fixed">
|
109 |
-
|
110 |
-
<div id="quarto-search-results"></div>
|
111 |
-
<header id="quarto-header" class="headroom fixed-top">
|
112 |
-
<nav class="navbar navbar-expand-lg navbar-dark ">
|
113 |
-
<div class="navbar-container container-fluid">
|
114 |
-
<div class="navbar-brand-container">
|
115 |
-
<a class="navbar-brand" href="./index.html">
|
116 |
-
<span class="navbar-title">lv-recipe-chatbot</span>
|
117 |
-
</a>
|
118 |
-
</div>
|
119 |
-
<div class="quarto-navbar-tools ms-auto">
|
120 |
-
</div>
|
121 |
-
<div id="quarto-search" class="" title="Search"></div>
|
122 |
-
</div> <!-- /container-fluid -->
|
123 |
-
</nav>
|
124 |
-
<nav class="quarto-secondary-nav">
|
125 |
-
<div class="container-fluid d-flex">
|
126 |
-
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
127 |
-
<i class="bi bi-layout-text-sidebar-reverse"></i>
|
128 |
-
</button>
|
129 |
-
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./engineer_prompt.html">engineer_prompt</a></li></ol></nav>
|
130 |
-
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
131 |
-
</a>
|
132 |
-
</div>
|
133 |
-
</nav>
|
134 |
-
</header>
|
135 |
-
<!-- content -->
|
136 |
-
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
137 |
-
<!-- sidebar -->
|
138 |
-
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal sidebar-navigation floating overflow-auto">
|
139 |
-
<div class="sidebar-menu-container">
|
140 |
-
<ul class="list-unstyled mt-1">
|
141 |
-
<li class="sidebar-item">
|
142 |
-
<div class="sidebar-item-container">
|
143 |
-
<a href="./index.html" class="sidebar-item-text sidebar-link">
|
144 |
-
<span class="menu-text">lv-recipe-chatbot</span></a>
|
145 |
-
</div>
|
146 |
-
</li>
|
147 |
-
<li class="sidebar-item">
|
148 |
-
<div class="sidebar-item-container">
|
149 |
-
<a href="./engineer_prompt.html" class="sidebar-item-text sidebar-link active">
|
150 |
-
<span class="menu-text">engineer_prompt</span></a>
|
151 |
-
</div>
|
152 |
-
</li>
|
153 |
-
<li class="sidebar-item">
|
154 |
-
<div class="sidebar-item-container">
|
155 |
-
<a href="./app.html" class="sidebar-item-text sidebar-link">
|
156 |
-
<span class="menu-text">app</span></a>
|
157 |
-
</div>
|
158 |
-
</li>
|
159 |
-
<li class="sidebar-item">
|
160 |
-
<div class="sidebar-item-container">
|
161 |
-
<a href="./lchain_tool.html" class="sidebar-item-text sidebar-link">
|
162 |
-
<span class="menu-text">lchain_tool</span></a>
|
163 |
-
</div>
|
164 |
-
</li>
|
165 |
-
<li class="sidebar-item">
|
166 |
-
<div class="sidebar-item-container">
|
167 |
-
<a href="./edamam_api.html" class="sidebar-item-text sidebar-link">
|
168 |
-
<span class="menu-text">edamam_api</span></a>
|
169 |
-
</div>
|
170 |
-
</li>
|
171 |
-
</ul>
|
172 |
-
</div>
|
173 |
-
</nav>
|
174 |
-
<div id="quarto-sidebar-glass" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass"></div>
|
175 |
-
<!-- margin-sidebar -->
|
176 |
-
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
177 |
-
|
178 |
-
</div>
|
179 |
-
<!-- main -->
|
180 |
-
<main class="content" id="quarto-document-content">
|
181 |
-
|
182 |
-
<header id="title-block-header" class="quarto-title-block default">
|
183 |
-
<div class="quarto-title">
|
184 |
-
<h1 class="title">engineer_prompt</h1>
|
185 |
-
</div>
|
186 |
-
|
187 |
-
<div>
|
188 |
-
<div class="description">
|
189 |
-
Engineering prompts
|
190 |
-
</div>
|
191 |
-
</div>
|
192 |
-
|
193 |
-
|
194 |
-
<div class="quarto-title-meta">
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
</div>
|
200 |
-
|
201 |
-
|
202 |
-
</header>
|
203 |
-
|
204 |
-
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
|
205 |
-
<p>Setup env</p>
|
206 |
-
<div class="cell">
|
207 |
-
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> dotenv <span class="im">import</span> load_dotenv</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
208 |
-
</div>
|
209 |
-
<div class="cell">
|
210 |
-
<div class="sourceCode cell-code" id="cb2"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>load_dotenv()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
211 |
-
<div class="cell-output cell-output-display">
|
212 |
-
<pre><code>True</code></pre>
|
213 |
-
</div>
|
214 |
-
</div>
|
215 |
-
<p>Evaluate chat backend</p>
|
216 |
-
<div class="cell">
|
217 |
-
<div class="sourceCode cell-code" id="cb4"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>chat <span class="op">=</span> PromptLayerChatOpenAI(temperature<span class="op">=</span><span class="dv">1</span>, pl_tags<span class="op">=</span>[<span class="st">"langchain"</span>], return_pl_id<span class="op">=</span><span class="va">True</span>)</span>
|
218 |
-
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a>memory <span class="op">=</span> ConversationBufferMemory(return_messages<span class="op">=</span><span class="va">True</span>)</span>
|
219 |
-
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a>chat_msgs <span class="op">=</span> init_prompt.format_prompt(</span>
|
220 |
-
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a> ingredients<span class="op">=</span><span class="st">"tofu, pickles, olives, tomatoes, lettuce, bell peppers, carrots, bread"</span>,</span>
|
221 |
-
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a> allergies<span class="op">=</span><span class="st">""</span>,</span>
|
222 |
-
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a> recipe_freeform_input<span class="op">=</span><span class="st">"The preparation time should be less than 30 minutes. I really love Thai food!"</span>,</span>
|
223 |
-
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a>)</span>
|
224 |
-
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true" tabindex="-1"></a></span>
|
225 |
-
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true" tabindex="-1"></a>chat_msgs <span class="op">=</span> chat_msgs.to_messages()</span>
|
226 |
-
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true" tabindex="-1"></a>results <span class="op">=</span> chat.generate([chat_msgs])</span>
|
227 |
-
<span id="cb4-11"><a href="#cb4-11" aria-hidden="true" tabindex="-1"></a>chat_msgs.extend(</span>
|
228 |
-
<span id="cb4-12"><a href="#cb4-12" aria-hidden="true" tabindex="-1"></a> [</span>
|
229 |
-
<span id="cb4-13"><a href="#cb4-13" aria-hidden="true" tabindex="-1"></a> results.generations[<span class="dv">0</span>][<span class="dv">0</span>].message,</span>
|
230 |
-
<span id="cb4-14"><a href="#cb4-14" aria-hidden="true" tabindex="-1"></a> MessagesPlaceholder(variable_name<span class="op">=</span><span class="st">"history"</span>),</span>
|
231 |
-
<span id="cb4-15"><a href="#cb4-15" aria-hidden="true" tabindex="-1"></a> HumanMessagePromptTemplate.from_template(<span class="st">"</span><span class="sc">{input}</span><span class="st">"</span>),</span>
|
232 |
-
<span id="cb4-16"><a href="#cb4-16" aria-hidden="true" tabindex="-1"></a> ]</span>
|
233 |
-
<span id="cb4-17"><a href="#cb4-17" aria-hidden="true" tabindex="-1"></a>)</span>
|
234 |
-
<span id="cb4-18"><a href="#cb4-18" aria-hidden="true" tabindex="-1"></a>open_prompt <span class="op">=</span> ChatPromptTemplate.from_messages(chat_msgs)</span>
|
235 |
-
<span id="cb4-19"><a href="#cb4-19" aria-hidden="true" tabindex="-1"></a>conversation <span class="op">=</span> ConversationChain(</span>
|
236 |
-
<span id="cb4-20"><a href="#cb4-20" aria-hidden="true" tabindex="-1"></a> llm<span class="op">=</span>chat, verbose<span class="op">=</span><span class="va">True</span>, memory<span class="op">=</span>memory, prompt<span class="op">=</span>open_prompt</span>
|
237 |
-
<span id="cb4-21"><a href="#cb4-21" aria-hidden="true" tabindex="-1"></a>)</span>
|
238 |
-
<span id="cb4-22"><a href="#cb4-22" aria-hidden="true" tabindex="-1"></a></span>
|
239 |
-
<span id="cb4-23"><a href="#cb4-23" aria-hidden="true" tabindex="-1"></a>result <span class="op">=</span> conversation.predict(<span class="bu">input</span><span class="op">=</span><span class="st">"Recommend a different recipe please."</span>)</span>
|
240 |
-
<span id="cb4-24"><a href="#cb4-24" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(result)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
241 |
-
<div class="cell-output cell-output-stderr">
|
242 |
-
<pre><code>Anthropic module not found. Install with `pip install anthropic`.
|
243 |
-
WARNING: While logging your request PromptLayer had the following error: Invalid API key, please check your PromptLayer API key and try again
|
244 |
-
WARNING: While logging your request PromptLayer had the following error: Invalid API key, please check your PromptLayer API key and try again</code></pre>
|
245 |
-
</div>
|
246 |
-
<div class="cell-output cell-output-stdout">
|
247 |
-
<pre><code>
|
248 |
-
|
249 |
-
> Entering new ConversationChain chain...
|
250 |
-
Prompt after formatting:
|
251 |
-
System: The following is a conversation between a human and a friendly AI chef.
|
252 |
-
The AI is compassionate to animals and only recommends vegan recipes based on the ingredients, allergies, and other preferences the human has.
|
253 |
-
|
254 |
-
Knowledge: A vegan diet implies a plant-based diet avoiding all animal foods such as meat (including fish, shellfish and insects), dairy, eggs and honey
|
255 |
-
|
256 |
-
Let's think step by step.
|
257 |
-
If the human messages are unrelated to vegan recipes, remind them of your purpose to recommend vegan recipes.
|
258 |
-
AI: What ingredients do you wish to cook with?
|
259 |
-
Human: Ingredients: tofu, pickles, olives, tomatoes, lettuce, bell peppers, carrots, bread
|
260 |
-
AI: Do you have any allergies I should be aware of?
|
261 |
-
Human: Allergies:
|
262 |
-
AI: Do you have any preferences I should consider for the recipe such as preparation time, difficulty, or cuisine region?
|
263 |
-
Human: Give me a vegan recipe that includes at least a few of the ingredients provided (if any).
|
264 |
-
Respect the human's allergies (if any).
|
265 |
-
Follow these other preferences as closely as possible if they are inline with your purpose of recommending vegan recipes:
|
266 |
-
|
267 |
-
###
|
268 |
-
Preferences: The preparation time should be less than 30 minutes. I really love Thai food!
|
269 |
-
###
|
270 |
-
|
271 |
-
Output format:
|
272 |
-
|
273 |
-
**Vegan recipe name**
|
274 |
-
Preparation time (humanized)
|
275 |
-
|
276 |
-
Ingredients (List of ingredients with quantities):
|
277 |
-
- <quantity and unit> <ingredient>
|
278 |
-
|
279 |
-
Steps (detailed):
|
280 |
-
1.
|
281 |
-
2.
|
282 |
-
3.
|
283 |
-
...
|
284 |
-
AI: Sure! How about a vegan Thai tofu lettuce wraps recipe? It should take less than 30 minutes to prepare.
|
285 |
-
|
286 |
-
**Vegan Thai Tofu Lettuce Wraps**
|
287 |
-
Preparation time: 25 minutes
|
288 |
-
|
289 |
-
Ingredients:
|
290 |
-
- 1 package firm tofu
|
291 |
-
- 1/4 cup vegan fish sauce (you can use soy sauce as a substitute)
|
292 |
-
- 2 tablespoons maple syrup
|
293 |
-
- 1 tablespoon lime juice
|
294 |
-
- 1 teaspoon chili paste
|
295 |
-
- 1 bell pepper, sliced
|
296 |
-
- 2 carrots, julienned
|
297 |
-
- 1/4 cup sliced pickles
|
298 |
-
- 1/4 cup sliced olives
|
299 |
-
- 6 large lettuce leaves
|
300 |
-
- 1/4 cup chopped fresh cilantro
|
301 |
-
|
302 |
-
Steps:
|
303 |
-
1. Preheat a skillet over medium-high heat and add cubed tofu. Cook for about 5-7 minutes, flipping occasionally, until all the pieces are golden brown. Set aside.
|
304 |
-
2. In a mixing bowl, whisk together the fish sauce (or soy sauce), maple syrup, lime juice, and chili paste until combined.
|
305 |
-
3. In a large mixing bowl, add the bell pepper, carrots, pickles, olives, and cooked tofu. Pour the dressing over the ingredients, and toss until everything is evenly coated with the sauce.
|
306 |
-
4. Assemble the lettuce wraps by separating the lettuce leaves and spooning the tofu mixture into each one. Top with fresh cilantro and serve immediately. Enjoy your delicious vegan Thai tofu lettuce wraps!
|
307 |
-
Human: Recommend a different recipe please.
|
308 |
-
|
309 |
-
> Finished chain.
|
310 |
-
Of course! How about a Mediterranean-inspired sandwich that includes tofu, olives, and tomatoes?
|
311 |
-
|
312 |
-
**Mediterranean Tofu Sandwich**
|
313 |
-
Preparation time: 20 minutes
|
314 |
-
|
315 |
-
Ingredients:
|
316 |
-
- 1 package extra-firm tofu, drained and sliced into 1/2-inch slices
|
317 |
-
- 2 tablespoons olive oil
|
318 |
-
- 1 teaspoon dried oregano
|
319 |
-
- Salt and pepper
|
320 |
-
- 1/4 cup vegan mayo
|
321 |
-
- 1 garlic clove, minced
|
322 |
-
- 2 teaspoons lemon juice
|
323 |
-
- 1 large tomato, sliced
|
324 |
-
- 1/4 cup sliced kalamata olives
|
325 |
-
- 1/4 cup chopped lettuce
|
326 |
-
- 1/4 cup sliced pickles
|
327 |
-
- Bread of your choice (I recommend ciabatta)
|
328 |
-
|
329 |
-
Steps:
|
330 |
-
1. Preheat a skillet over medium-high heat and add the olive oil.
|
331 |
-
2. Season the tofu slices with oregano, salt, and pepper, then add them to the skillet. Cook for about 5-7 minutes on each side or until golden brown. Set aside.
|
332 |
-
3. In a small bowl, mix the vegan mayo, minced garlic, and lemon juice. Spread the mixture onto the slices of bread.
|
333 |
-
4. Layer the tomato slices, cooked tofu, olives, lettuce, and pickles onto the bread. Add salt and pepper to taste.
|
334 |
-
5. Top with the other slice of bread, slice in half, and enjoy your delicious Mediterranean tofu sandwich!</code></pre>
|
335 |
-
</div>
|
336 |
-
</div>
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
</main> <!-- /main -->
|
341 |
-
<script id="quarto-html-after-body" type="application/javascript">
|
342 |
-
window.document.addEventListener("DOMContentLoaded", function (event) {
|
343 |
-
const toggleBodyColorMode = (bsSheetEl) => {
|
344 |
-
const mode = bsSheetEl.getAttribute("data-mode");
|
345 |
-
const bodyEl = window.document.querySelector("body");
|
346 |
-
if (mode === "dark") {
|
347 |
-
bodyEl.classList.add("quarto-dark");
|
348 |
-
bodyEl.classList.remove("quarto-light");
|
349 |
-
} else {
|
350 |
-
bodyEl.classList.add("quarto-light");
|
351 |
-
bodyEl.classList.remove("quarto-dark");
|
352 |
-
}
|
353 |
-
}
|
354 |
-
const toggleBodyColorPrimary = () => {
|
355 |
-
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
|
356 |
-
if (bsSheetEl) {
|
357 |
-
toggleBodyColorMode(bsSheetEl);
|
358 |
-
}
|
359 |
-
}
|
360 |
-
toggleBodyColorPrimary();
|
361 |
-
const icon = "";
|
362 |
-
const anchorJS = new window.AnchorJS();
|
363 |
-
anchorJS.options = {
|
364 |
-
placement: 'right',
|
365 |
-
icon: icon
|
366 |
-
};
|
367 |
-
anchorJS.add('.anchored');
|
368 |
-
const isCodeAnnotation = (el) => {
|
369 |
-
for (const clz of el.classList) {
|
370 |
-
if (clz.startsWith('code-annotation-')) {
|
371 |
-
return true;
|
372 |
-
}
|
373 |
-
}
|
374 |
-
return false;
|
375 |
-
}
|
376 |
-
const clipboard = new window.ClipboardJS('.code-copy-button', {
|
377 |
-
text: function(trigger) {
|
378 |
-
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
379 |
-
for (const childEl of codeEl.children) {
|
380 |
-
if (isCodeAnnotation(childEl)) {
|
381 |
-
childEl.remove();
|
382 |
-
}
|
383 |
-
}
|
384 |
-
return codeEl.innerText;
|
385 |
-
}
|
386 |
-
});
|
387 |
-
clipboard.on('success', function(e) {
|
388 |
-
// button target
|
389 |
-
const button = e.trigger;
|
390 |
-
// don't keep focus
|
391 |
-
button.blur();
|
392 |
-
// flash "checked"
|
393 |
-
button.classList.add('code-copy-button-checked');
|
394 |
-
var currentTitle = button.getAttribute("title");
|
395 |
-
button.setAttribute("title", "Copied!");
|
396 |
-
let tooltip;
|
397 |
-
if (window.bootstrap) {
|
398 |
-
button.setAttribute("data-bs-toggle", "tooltip");
|
399 |
-
button.setAttribute("data-bs-placement", "left");
|
400 |
-
button.setAttribute("data-bs-title", "Copied!");
|
401 |
-
tooltip = new bootstrap.Tooltip(button,
|
402 |
-
{ trigger: "manual",
|
403 |
-
customClass: "code-copy-button-tooltip",
|
404 |
-
offset: [0, -8]});
|
405 |
-
tooltip.show();
|
406 |
-
}
|
407 |
-
setTimeout(function() {
|
408 |
-
if (tooltip) {
|
409 |
-
tooltip.hide();
|
410 |
-
button.removeAttribute("data-bs-title");
|
411 |
-
button.removeAttribute("data-bs-toggle");
|
412 |
-
button.removeAttribute("data-bs-placement");
|
413 |
-
}
|
414 |
-
button.setAttribute("title", currentTitle);
|
415 |
-
button.classList.remove('code-copy-button-checked');
|
416 |
-
}, 1000);
|
417 |
-
// clear code selection
|
418 |
-
e.clearSelection();
|
419 |
-
});
|
420 |
-
function tippyHover(el, contentFn) {
|
421 |
-
const config = {
|
422 |
-
allowHTML: true,
|
423 |
-
content: contentFn,
|
424 |
-
maxWidth: 500,
|
425 |
-
delay: 100,
|
426 |
-
arrow: false,
|
427 |
-
appendTo: function(el) {
|
428 |
-
return el.parentElement;
|
429 |
-
},
|
430 |
-
interactive: true,
|
431 |
-
interactiveBorder: 10,
|
432 |
-
theme: 'quarto',
|
433 |
-
placement: 'bottom-start'
|
434 |
-
};
|
435 |
-
window.tippy(el, config);
|
436 |
-
}
|
437 |
-
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
438 |
-
for (var i=0; i<noterefs.length; i++) {
|
439 |
-
const ref = noterefs[i];
|
440 |
-
tippyHover(ref, function() {
|
441 |
-
// use id or data attribute instead here
|
442 |
-
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
443 |
-
try { href = new URL(href).hash; } catch {}
|
444 |
-
const id = href.replace(/^#\/?/, "");
|
445 |
-
const note = window.document.getElementById(id);
|
446 |
-
return note.innerHTML;
|
447 |
-
});
|
448 |
-
}
|
449 |
-
let selectedAnnoteEl;
|
450 |
-
const selectorForAnnotation = ( cell, annotation) => {
|
451 |
-
let cellAttr = 'data-code-cell="' + cell + '"';
|
452 |
-
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
453 |
-
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
454 |
-
return selector;
|
455 |
-
}
|
456 |
-
const selectCodeLines = (annoteEl) => {
|
457 |
-
const doc = window.document;
|
458 |
-
const targetCell = annoteEl.getAttribute("data-target-cell");
|
459 |
-
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
460 |
-
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
461 |
-
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
462 |
-
const lineIds = lines.map((line) => {
|
463 |
-
return targetCell + "-" + line;
|
464 |
-
})
|
465 |
-
let top = null;
|
466 |
-
let height = null;
|
467 |
-
let parent = null;
|
468 |
-
if (lineIds.length > 0) {
|
469 |
-
//compute the position of the single el (top and bottom and make a div)
|
470 |
-
const el = window.document.getElementById(lineIds[0]);
|
471 |
-
top = el.offsetTop;
|
472 |
-
height = el.offsetHeight;
|
473 |
-
parent = el.parentElement.parentElement;
|
474 |
-
if (lineIds.length > 1) {
|
475 |
-
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
476 |
-
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
477 |
-
height = bottom - top;
|
478 |
-
}
|
479 |
-
if (top !== null && height !== null && parent !== null) {
|
480 |
-
// cook up a div (if necessary) and position it
|
481 |
-
let div = window.document.getElementById("code-annotation-line-highlight");
|
482 |
-
if (div === null) {
|
483 |
-
div = window.document.createElement("div");
|
484 |
-
div.setAttribute("id", "code-annotation-line-highlight");
|
485 |
-
div.style.position = 'absolute';
|
486 |
-
parent.appendChild(div);
|
487 |
-
}
|
488 |
-
div.style.top = top - 2 + "px";
|
489 |
-
div.style.height = height + 4 + "px";
|
490 |
-
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
491 |
-
if (gutterDiv === null) {
|
492 |
-
gutterDiv = window.document.createElement("div");
|
493 |
-
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
494 |
-
gutterDiv.style.position = 'absolute';
|
495 |
-
const codeCell = window.document.getElementById(targetCell);
|
496 |
-
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
497 |
-
gutter.appendChild(gutterDiv);
|
498 |
-
}
|
499 |
-
gutterDiv.style.top = top - 2 + "px";
|
500 |
-
gutterDiv.style.height = height + 4 + "px";
|
501 |
-
}
|
502 |
-
selectedAnnoteEl = annoteEl;
|
503 |
-
}
|
504 |
-
};
|
505 |
-
const unselectCodeLines = () => {
|
506 |
-
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
507 |
-
elementsIds.forEach((elId) => {
|
508 |
-
const div = window.document.getElementById(elId);
|
509 |
-
if (div) {
|
510 |
-
div.remove();
|
511 |
-
}
|
512 |
-
});
|
513 |
-
selectedAnnoteEl = undefined;
|
514 |
-
};
|
515 |
-
// Attach click handler to the DT
|
516 |
-
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
517 |
-
for (const annoteDlNode of annoteDls) {
|
518 |
-
annoteDlNode.addEventListener('click', (event) => {
|
519 |
-
const clickedEl = event.target;
|
520 |
-
if (clickedEl !== selectedAnnoteEl) {
|
521 |
-
unselectCodeLines();
|
522 |
-
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
523 |
-
if (activeEl) {
|
524 |
-
activeEl.classList.remove('code-annotation-active');
|
525 |
-
}
|
526 |
-
selectCodeLines(clickedEl);
|
527 |
-
clickedEl.classList.add('code-annotation-active');
|
528 |
-
} else {
|
529 |
-
// Unselect the line
|
530 |
-
unselectCodeLines();
|
531 |
-
clickedEl.classList.remove('code-annotation-active');
|
532 |
-
}
|
533 |
-
});
|
534 |
-
}
|
535 |
-
const findCites = (el) => {
|
536 |
-
const parentEl = el.parentElement;
|
537 |
-
if (parentEl) {
|
538 |
-
const cites = parentEl.dataset.cites;
|
539 |
-
if (cites) {
|
540 |
-
return {
|
541 |
-
el,
|
542 |
-
cites: cites.split(' ')
|
543 |
-
};
|
544 |
-
} else {
|
545 |
-
return findCites(el.parentElement)
|
546 |
-
}
|
547 |
-
} else {
|
548 |
-
return undefined;
|
549 |
-
}
|
550 |
-
};
|
551 |
-
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
552 |
-
for (var i=0; i<bibliorefs.length; i++) {
|
553 |
-
const ref = bibliorefs[i];
|
554 |
-
const citeInfo = findCites(ref);
|
555 |
-
if (citeInfo) {
|
556 |
-
tippyHover(citeInfo.el, function() {
|
557 |
-
var popup = window.document.createElement('div');
|
558 |
-
citeInfo.cites.forEach(function(cite) {
|
559 |
-
var citeDiv = window.document.createElement('div');
|
560 |
-
citeDiv.classList.add('hanging-indent');
|
561 |
-
citeDiv.classList.add('csl-entry');
|
562 |
-
var biblioDiv = window.document.getElementById('ref-' + cite);
|
563 |
-
if (biblioDiv) {
|
564 |
-
citeDiv.innerHTML = biblioDiv.innerHTML;
|
565 |
-
}
|
566 |
-
popup.appendChild(citeDiv);
|
567 |
-
});
|
568 |
-
return popup.innerHTML;
|
569 |
-
});
|
570 |
-
}
|
571 |
-
}
|
572 |
-
});
|
573 |
-
</script>
|
574 |
-
</div> <!-- /content -->
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
<footer class="footer"><div class="nav-footer"><div class="nav-footer-center"><div class="toc-actions"><div><i class="bi bi-github"></i></div><div class="action-links"><p><a href="https://github.com/animalequality/lv-recipe-chatbot/issues/new" class="toc-action">Report an issue</a></p></div></div></div></div></footer></body></html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/index.html
CHANGED
@@ -1,526 +1,8 @@
|
|
1 |
-
|
2 |
-
<
|
3 |
-
|
4 |
-
<meta
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
<meta name="description" content="An experimental Vegan recipe chatbot">
|
10 |
-
|
11 |
-
<title>lv-recipe-chatbot</title>
|
12 |
-
<style>
|
13 |
-
code{white-space: pre-wrap;}
|
14 |
-
span.smallcaps{font-variant: small-caps;}
|
15 |
-
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
16 |
-
div.column{flex: auto; overflow-x: auto;}
|
17 |
-
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
18 |
-
ul.task-list{list-style: none;}
|
19 |
-
ul.task-list li input[type="checkbox"] {
|
20 |
-
width: 0.8em;
|
21 |
-
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
22 |
-
vertical-align: middle;
|
23 |
-
}
|
24 |
-
/* CSS for syntax highlighting */
|
25 |
-
pre > code.sourceCode { white-space: pre; position: relative; }
|
26 |
-
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
27 |
-
pre > code.sourceCode > span:empty { height: 1.2em; }
|
28 |
-
.sourceCode { overflow: visible; }
|
29 |
-
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
30 |
-
div.sourceCode { margin: 1em 0; }
|
31 |
-
pre.sourceCode { margin: 0; }
|
32 |
-
@media screen {
|
33 |
-
div.sourceCode { overflow: auto; }
|
34 |
-
}
|
35 |
-
@media print {
|
36 |
-
pre > code.sourceCode { white-space: pre-wrap; }
|
37 |
-
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
38 |
-
}
|
39 |
-
pre.numberSource code
|
40 |
-
{ counter-reset: source-line 0; }
|
41 |
-
pre.numberSource code > span
|
42 |
-
{ position: relative; left: -4em; counter-increment: source-line; }
|
43 |
-
pre.numberSource code > span > a:first-child::before
|
44 |
-
{ content: counter(source-line);
|
45 |
-
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
46 |
-
border: none; display: inline-block;
|
47 |
-
-webkit-touch-callout: none; -webkit-user-select: none;
|
48 |
-
-khtml-user-select: none; -moz-user-select: none;
|
49 |
-
-ms-user-select: none; user-select: none;
|
50 |
-
padding: 0 4px; width: 4em;
|
51 |
-
}
|
52 |
-
pre.numberSource { margin-left: 3em; padding-left: 4px; }
|
53 |
-
div.sourceCode
|
54 |
-
{ }
|
55 |
-
@media screen {
|
56 |
-
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
57 |
-
}
|
58 |
-
</style>
|
59 |
-
|
60 |
-
|
61 |
-
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
|
62 |
-
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
63 |
-
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
64 |
-
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
65 |
-
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
66 |
-
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
67 |
-
<meta name="quarto:offset" content="./">
|
68 |
-
<script src="site_libs/quarto-html/quarto.js"></script>
|
69 |
-
<script src="site_libs/quarto-html/popper.min.js"></script>
|
70 |
-
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
|
71 |
-
<script src="site_libs/quarto-html/anchor.min.js"></script>
|
72 |
-
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
|
73 |
-
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
74 |
-
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
|
75 |
-
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
|
76 |
-
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
|
77 |
-
<script id="quarto-search-options" type="application/json">{
|
78 |
-
"location": "navbar",
|
79 |
-
"copy-button": false,
|
80 |
-
"collapse-after": 3,
|
81 |
-
"panel-placement": "end",
|
82 |
-
"type": "overlay",
|
83 |
-
"limit": 20,
|
84 |
-
"language": {
|
85 |
-
"search-no-results-text": "No results",
|
86 |
-
"search-matching-documents-text": "matching documents",
|
87 |
-
"search-copy-link-title": "Copy link to search",
|
88 |
-
"search-hide-matches-text": "Hide additional matches",
|
89 |
-
"search-more-match-text": "more match in this document",
|
90 |
-
"search-more-matches-text": "more matches in this document",
|
91 |
-
"search-clear-button-title": "Clear",
|
92 |
-
"search-detached-cancel-button-title": "Cancel",
|
93 |
-
"search-submit-button-title": "Submit",
|
94 |
-
"search-label": "Search"
|
95 |
-
}
|
96 |
-
}</script>
|
97 |
-
|
98 |
-
|
99 |
-
<link rel="stylesheet" href="styles.css">
|
100 |
-
<meta property="og:title" content="lv-recipe-chatbot">
|
101 |
-
<meta property="og:description" content="An experimental Vegan recipe chatbot">
|
102 |
-
<meta property="og:site-name" content="lv-recipe-chatbot">
|
103 |
-
<meta name="twitter:title" content="lv-recipe-chatbot">
|
104 |
-
<meta name="twitter:description" content="An experimental Vegan recipe chatbot">
|
105 |
-
<meta name="twitter:card" content="summary">
|
106 |
-
</head>
|
107 |
-
|
108 |
-
<body class="nav-sidebar floating nav-fixed">
|
109 |
-
|
110 |
-
<div id="quarto-search-results"></div>
|
111 |
-
<header id="quarto-header" class="headroom fixed-top">
|
112 |
-
<nav class="navbar navbar-expand-lg navbar-dark ">
|
113 |
-
<div class="navbar-container container-fluid">
|
114 |
-
<div class="navbar-brand-container">
|
115 |
-
<a class="navbar-brand" href="./index.html">
|
116 |
-
<span class="navbar-title">lv-recipe-chatbot</span>
|
117 |
-
</a>
|
118 |
-
</div>
|
119 |
-
<div class="quarto-navbar-tools ms-auto">
|
120 |
-
</div>
|
121 |
-
<div id="quarto-search" class="" title="Search"></div>
|
122 |
-
</div> <!-- /container-fluid -->
|
123 |
-
</nav>
|
124 |
-
<nav class="quarto-secondary-nav">
|
125 |
-
<div class="container-fluid d-flex">
|
126 |
-
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
127 |
-
<i class="bi bi-layout-text-sidebar-reverse"></i>
|
128 |
-
</button>
|
129 |
-
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./index.html">lv-recipe-chatbot</a></li></ol></nav>
|
130 |
-
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
131 |
-
</a>
|
132 |
-
</div>
|
133 |
-
</nav>
|
134 |
-
</header>
|
135 |
-
<!-- content -->
|
136 |
-
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
137 |
-
<!-- sidebar -->
|
138 |
-
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal sidebar-navigation floating overflow-auto">
|
139 |
-
<div class="sidebar-menu-container">
|
140 |
-
<ul class="list-unstyled mt-1">
|
141 |
-
<li class="sidebar-item">
|
142 |
-
<div class="sidebar-item-container">
|
143 |
-
<a href="./index.html" class="sidebar-item-text sidebar-link active">
|
144 |
-
<span class="menu-text">lv-recipe-chatbot</span></a>
|
145 |
-
</div>
|
146 |
-
</li>
|
147 |
-
<li class="sidebar-item">
|
148 |
-
<div class="sidebar-item-container">
|
149 |
-
<a href="./engineer_prompt.html" class="sidebar-item-text sidebar-link">
|
150 |
-
<span class="menu-text">engineer_prompt</span></a>
|
151 |
-
</div>
|
152 |
-
</li>
|
153 |
-
<li class="sidebar-item">
|
154 |
-
<div class="sidebar-item-container">
|
155 |
-
<a href="./app.html" class="sidebar-item-text sidebar-link">
|
156 |
-
<span class="menu-text">app</span></a>
|
157 |
-
</div>
|
158 |
-
</li>
|
159 |
-
<li class="sidebar-item">
|
160 |
-
<div class="sidebar-item-container">
|
161 |
-
<a href="./lchain_tool.html" class="sidebar-item-text sidebar-link">
|
162 |
-
<span class="menu-text">lchain_tool</span></a>
|
163 |
-
</div>
|
164 |
-
</li>
|
165 |
-
<li class="sidebar-item">
|
166 |
-
<div class="sidebar-item-container">
|
167 |
-
<a href="./edamam_api.html" class="sidebar-item-text sidebar-link">
|
168 |
-
<span class="menu-text">edamam_api</span></a>
|
169 |
-
</div>
|
170 |
-
</li>
|
171 |
-
</ul>
|
172 |
-
</div>
|
173 |
-
</nav>
|
174 |
-
<div id="quarto-sidebar-glass" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar,#quarto-sidebar-glass"></div>
|
175 |
-
<!-- margin-sidebar -->
|
176 |
-
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
177 |
-
<nav id="TOC" role="doc-toc" class="toc-active">
|
178 |
-
<h2 id="toc-title">On this page</h2>
|
179 |
-
|
180 |
-
<ul>
|
181 |
-
<li><a href="#install" id="toc-install" class="nav-link active" data-scroll-target="#install">Install</a></li>
|
182 |
-
<li><a href="#how-to-use" id="toc-how-to-use" class="nav-link" data-scroll-target="#how-to-use">How to use</a></li>
|
183 |
-
<li><a href="#dev-quick-start" id="toc-dev-quick-start" class="nav-link" data-scroll-target="#dev-quick-start">Dev quick-start</a></li>
|
184 |
-
<li><a href="#dependencies" id="toc-dependencies" class="nav-link" data-scroll-target="#dependencies">Dependencies</a></li>
|
185 |
-
<li><a href="#development" id="toc-development" class="nav-link" data-scroll-target="#development">Development</a></li>
|
186 |
-
<li><a href="#useful-links" id="toc-useful-links" class="nav-link" data-scroll-target="#useful-links">Useful links</a></li>
|
187 |
-
</ul>
|
188 |
-
<div class="toc-actions"><div><i class="bi bi-github"></i></div><div class="action-links"><p><a href="https://github.com/animalequality/lv-recipe-chatbot/issues/new" class="toc-action">Report an issue</a></p></div></div></nav>
|
189 |
-
</div>
|
190 |
-
<!-- main -->
|
191 |
-
<main class="content" id="quarto-document-content">
|
192 |
-
|
193 |
-
<header id="title-block-header" class="quarto-title-block default">
|
194 |
-
<div class="quarto-title">
|
195 |
-
<h1 class="title">lv-recipe-chatbot</h1>
|
196 |
-
</div>
|
197 |
-
|
198 |
-
<div>
|
199 |
-
<div class="description">
|
200 |
-
An experimental Vegan recipe chatbot
|
201 |
-
</div>
|
202 |
-
</div>
|
203 |
-
|
204 |
-
|
205 |
-
<div class="quarto-title-meta">
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
</div>
|
211 |
-
|
212 |
-
|
213 |
-
</header>
|
214 |
-
|
215 |
-
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
|
216 |
-
<p>This file will become your README and also the index of your documentation.</p>
|
217 |
-
<section id="install" class="level2">
|
218 |
-
<h2 class="anchored" data-anchor-id="install">Install</h2>
|
219 |
-
<div class="sourceCode" id="cb1"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pip</span> install lv_recipe_chatbot</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
220 |
-
</section>
|
221 |
-
<section id="how-to-use" class="level2">
|
222 |
-
<h2 class="anchored" data-anchor-id="how-to-use">How to use</h2>
|
223 |
-
<div class="cell">
|
224 |
-
<div class="sourceCode cell-code" id="cb2"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> dotenv <span class="im">import</span> load_dotenv</span>
|
225 |
-
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
|
226 |
-
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>load_dotenv()</span>
|
227 |
-
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a></span>
|
228 |
-
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>app.launch_demo()</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
229 |
-
<div class="cell-output cell-output-stdout">
|
230 |
-
<pre><code>Running on local URL: http://127.0.0.1:7860
|
231 |
-
|
232 |
-
To create a public link, set `share=True` in `launch()`.</code></pre>
|
233 |
-
</div>
|
234 |
-
</div>
|
235 |
-
<p>or</p>
|
236 |
-
<div class="sourceCode" id="cb4"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">python3</span> app.py</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
237 |
-
</section>
|
238 |
-
<section id="dev-quick-start" class="level2">
|
239 |
-
<h2 class="anchored" data-anchor-id="dev-quick-start">Dev quick-start</h2>
|
240 |
-
<p><code>git clone</code> the repo</p>
|
241 |
-
<div class="sourceCode" id="cb5"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> lv-recipe-chatbot</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
242 |
-
<p>Make sure to use the version of python specified in <code>py_version.txt</code><br>
|
243 |
-
Create a virtual environment.</p>
|
244 |
-
<div class="sourceCode" id="cb6"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">python3</span> <span class="at">-m</span> venv env</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
245 |
-
<p>Activate the env and install dependencies.</p>
|
246 |
-
<div class="sourceCode" id="cb7"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="bu">source</span> env/bin/activate</span>
|
247 |
-
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="ex">pip</span> install <span class="at">-r</span> requirements.txt</span>
|
248 |
-
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="ex">pip</span> install <span class="at">-r</span> requirements/dev.txt</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
249 |
-
<p>To make the Jupyter environment, git friendly: <code>nbdev_install_hooks</code><br>
|
250 |
-
If you want to render documentation locally, you will want to <a href="https://nbdev.fast.ai/tutorials/tutorial.html#install-quarto">install Quarto</a>.</p>
|
251 |
-
<p><code>nbdev_install_quarto</code></p>
|
252 |
-
<p>Put API secrets in .env</p>
|
253 |
-
<div class="sourceCode" id="cb8"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cp</span> .env.example .env</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
254 |
-
<p>Edit .env with your secret key(s). Only <code>OPEN_AI_KEY</code> is required.</p>
|
255 |
-
<p>Then start the Gradio demo from within the virtual environment.</p>
|
256 |
-
<div class="sourceCode" id="cb9"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">python3</span> app.py</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
257 |
-
<p>Preview documentation</p>
|
258 |
-
<div class="sourceCode" id="cb10"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="ex">nbdev_preview</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
259 |
-
</section>
|
260 |
-
<section id="dependencies" class="level2">
|
261 |
-
<h2 class="anchored" data-anchor-id="dependencies">Dependencies</h2>
|
262 |
-
<p>If a new dependency for development is helpful for developers, add it to <code>dev.txt</code>.<br>
|
263 |
-
If it is a dependency for the app that is imported in source code, add it to <code>core.txt</code>.<br>
|
264 |
-
Then run:</p>
|
265 |
-
<div class="sourceCode" id="cb11"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pipreqs</span> <span class="at">--force</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
|
266 |
-
<p>This will update our <code>requirements.txt</code> to include the dependency as it should be pinned in the environment.</p>
|
267 |
-
</section>
|
268 |
-
<section id="development" class="level2">
|
269 |
-
<h2 class="anchored" data-anchor-id="development">Development</h2>
|
270 |
-
<p><a href="https://nbdev.fast.ai/tutorials">quick nbdev tutorial</a></p>
|
271 |
-
<p>Make changes in <code>/nbs</code>.<br>
|
272 |
-
Update the package files with <code>nbdev_export</code> then reimport with <code>pip install -e '.[dev]'</code></p>
|
273 |
-
<p>Preview doc <code>nbdev_preview</code><br>
|
274 |
-
Build docs, test and update README <code>nbdev_prepare</code></p>
|
275 |
-
</section>
|
276 |
-
<section id="useful-links" class="level2">
|
277 |
-
<h2 class="anchored" data-anchor-id="useful-links">Useful links</h2>
|
278 |
-
<ul>
|
279 |
-
<li><a href="https://github.com/microsoft/TaskMatrix">Task Matrix (Formerly Visual ChatGPT)</a></li>
|
280 |
-
<li><a href="https://python.langchain.com/en/latest/index.html">LangChain</a></li>
|
281 |
-
<li><a href="https://www.promptingguide.ai">LLM Prompt Engineering</a></li>
|
282 |
-
<li><a href="https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api">OpenAI best practices for prompts</a></li>
|
283 |
-
</ul>
|
284 |
-
|
285 |
-
|
286 |
-
</section>
|
287 |
-
|
288 |
-
</main> <!-- /main -->
|
289 |
-
<script id="quarto-html-after-body" type="application/javascript">
|
290 |
-
window.document.addEventListener("DOMContentLoaded", function (event) {
|
291 |
-
const toggleBodyColorMode = (bsSheetEl) => {
|
292 |
-
const mode = bsSheetEl.getAttribute("data-mode");
|
293 |
-
const bodyEl = window.document.querySelector("body");
|
294 |
-
if (mode === "dark") {
|
295 |
-
bodyEl.classList.add("quarto-dark");
|
296 |
-
bodyEl.classList.remove("quarto-light");
|
297 |
-
} else {
|
298 |
-
bodyEl.classList.add("quarto-light");
|
299 |
-
bodyEl.classList.remove("quarto-dark");
|
300 |
-
}
|
301 |
-
}
|
302 |
-
const toggleBodyColorPrimary = () => {
|
303 |
-
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
|
304 |
-
if (bsSheetEl) {
|
305 |
-
toggleBodyColorMode(bsSheetEl);
|
306 |
-
}
|
307 |
-
}
|
308 |
-
toggleBodyColorPrimary();
|
309 |
-
const icon = "";
|
310 |
-
const anchorJS = new window.AnchorJS();
|
311 |
-
anchorJS.options = {
|
312 |
-
placement: 'right',
|
313 |
-
icon: icon
|
314 |
-
};
|
315 |
-
anchorJS.add('.anchored');
|
316 |
-
const isCodeAnnotation = (el) => {
|
317 |
-
for (const clz of el.classList) {
|
318 |
-
if (clz.startsWith('code-annotation-')) {
|
319 |
-
return true;
|
320 |
-
}
|
321 |
-
}
|
322 |
-
return false;
|
323 |
-
}
|
324 |
-
const clipboard = new window.ClipboardJS('.code-copy-button', {
|
325 |
-
text: function(trigger) {
|
326 |
-
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
327 |
-
for (const childEl of codeEl.children) {
|
328 |
-
if (isCodeAnnotation(childEl)) {
|
329 |
-
childEl.remove();
|
330 |
-
}
|
331 |
-
}
|
332 |
-
return codeEl.innerText;
|
333 |
-
}
|
334 |
-
});
|
335 |
-
clipboard.on('success', function(e) {
|
336 |
-
// button target
|
337 |
-
const button = e.trigger;
|
338 |
-
// don't keep focus
|
339 |
-
button.blur();
|
340 |
-
// flash "checked"
|
341 |
-
button.classList.add('code-copy-button-checked');
|
342 |
-
var currentTitle = button.getAttribute("title");
|
343 |
-
button.setAttribute("title", "Copied!");
|
344 |
-
let tooltip;
|
345 |
-
if (window.bootstrap) {
|
346 |
-
button.setAttribute("data-bs-toggle", "tooltip");
|
347 |
-
button.setAttribute("data-bs-placement", "left");
|
348 |
-
button.setAttribute("data-bs-title", "Copied!");
|
349 |
-
tooltip = new bootstrap.Tooltip(button,
|
350 |
-
{ trigger: "manual",
|
351 |
-
customClass: "code-copy-button-tooltip",
|
352 |
-
offset: [0, -8]});
|
353 |
-
tooltip.show();
|
354 |
-
}
|
355 |
-
setTimeout(function() {
|
356 |
-
if (tooltip) {
|
357 |
-
tooltip.hide();
|
358 |
-
button.removeAttribute("data-bs-title");
|
359 |
-
button.removeAttribute("data-bs-toggle");
|
360 |
-
button.removeAttribute("data-bs-placement");
|
361 |
-
}
|
362 |
-
button.setAttribute("title", currentTitle);
|
363 |
-
button.classList.remove('code-copy-button-checked');
|
364 |
-
}, 1000);
|
365 |
-
// clear code selection
|
366 |
-
e.clearSelection();
|
367 |
-
});
|
368 |
-
function tippyHover(el, contentFn) {
|
369 |
-
const config = {
|
370 |
-
allowHTML: true,
|
371 |
-
content: contentFn,
|
372 |
-
maxWidth: 500,
|
373 |
-
delay: 100,
|
374 |
-
arrow: false,
|
375 |
-
appendTo: function(el) {
|
376 |
-
return el.parentElement;
|
377 |
-
},
|
378 |
-
interactive: true,
|
379 |
-
interactiveBorder: 10,
|
380 |
-
theme: 'quarto',
|
381 |
-
placement: 'bottom-start'
|
382 |
-
};
|
383 |
-
window.tippy(el, config);
|
384 |
-
}
|
385 |
-
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
386 |
-
for (var i=0; i<noterefs.length; i++) {
|
387 |
-
const ref = noterefs[i];
|
388 |
-
tippyHover(ref, function() {
|
389 |
-
// use id or data attribute instead here
|
390 |
-
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
391 |
-
try { href = new URL(href).hash; } catch {}
|
392 |
-
const id = href.replace(/^#\/?/, "");
|
393 |
-
const note = window.document.getElementById(id);
|
394 |
-
return note.innerHTML;
|
395 |
-
});
|
396 |
-
}
|
397 |
-
let selectedAnnoteEl;
|
398 |
-
const selectorForAnnotation = ( cell, annotation) => {
|
399 |
-
let cellAttr = 'data-code-cell="' + cell + '"';
|
400 |
-
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
401 |
-
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
402 |
-
return selector;
|
403 |
-
}
|
404 |
-
const selectCodeLines = (annoteEl) => {
|
405 |
-
const doc = window.document;
|
406 |
-
const targetCell = annoteEl.getAttribute("data-target-cell");
|
407 |
-
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
408 |
-
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
409 |
-
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
410 |
-
const lineIds = lines.map((line) => {
|
411 |
-
return targetCell + "-" + line;
|
412 |
-
})
|
413 |
-
let top = null;
|
414 |
-
let height = null;
|
415 |
-
let parent = null;
|
416 |
-
if (lineIds.length > 0) {
|
417 |
-
//compute the position of the single el (top and bottom and make a div)
|
418 |
-
const el = window.document.getElementById(lineIds[0]);
|
419 |
-
top = el.offsetTop;
|
420 |
-
height = el.offsetHeight;
|
421 |
-
parent = el.parentElement.parentElement;
|
422 |
-
if (lineIds.length > 1) {
|
423 |
-
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
424 |
-
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
425 |
-
height = bottom - top;
|
426 |
-
}
|
427 |
-
if (top !== null && height !== null && parent !== null) {
|
428 |
-
// cook up a div (if necessary) and position it
|
429 |
-
let div = window.document.getElementById("code-annotation-line-highlight");
|
430 |
-
if (div === null) {
|
431 |
-
div = window.document.createElement("div");
|
432 |
-
div.setAttribute("id", "code-annotation-line-highlight");
|
433 |
-
div.style.position = 'absolute';
|
434 |
-
parent.appendChild(div);
|
435 |
-
}
|
436 |
-
div.style.top = top - 2 + "px";
|
437 |
-
div.style.height = height + 4 + "px";
|
438 |
-
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
439 |
-
if (gutterDiv === null) {
|
440 |
-
gutterDiv = window.document.createElement("div");
|
441 |
-
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
442 |
-
gutterDiv.style.position = 'absolute';
|
443 |
-
const codeCell = window.document.getElementById(targetCell);
|
444 |
-
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
445 |
-
gutter.appendChild(gutterDiv);
|
446 |
-
}
|
447 |
-
gutterDiv.style.top = top - 2 + "px";
|
448 |
-
gutterDiv.style.height = height + 4 + "px";
|
449 |
-
}
|
450 |
-
selectedAnnoteEl = annoteEl;
|
451 |
-
}
|
452 |
-
};
|
453 |
-
const unselectCodeLines = () => {
|
454 |
-
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
455 |
-
elementsIds.forEach((elId) => {
|
456 |
-
const div = window.document.getElementById(elId);
|
457 |
-
if (div) {
|
458 |
-
div.remove();
|
459 |
-
}
|
460 |
-
});
|
461 |
-
selectedAnnoteEl = undefined;
|
462 |
-
};
|
463 |
-
// Attach click handler to the DT
|
464 |
-
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
465 |
-
for (const annoteDlNode of annoteDls) {
|
466 |
-
annoteDlNode.addEventListener('click', (event) => {
|
467 |
-
const clickedEl = event.target;
|
468 |
-
if (clickedEl !== selectedAnnoteEl) {
|
469 |
-
unselectCodeLines();
|
470 |
-
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
471 |
-
if (activeEl) {
|
472 |
-
activeEl.classList.remove('code-annotation-active');
|
473 |
-
}
|
474 |
-
selectCodeLines(clickedEl);
|
475 |
-
clickedEl.classList.add('code-annotation-active');
|
476 |
-
} else {
|
477 |
-
// Unselect the line
|
478 |
-
unselectCodeLines();
|
479 |
-
clickedEl.classList.remove('code-annotation-active');
|
480 |
-
}
|
481 |
-
});
|
482 |
-
}
|
483 |
-
const findCites = (el) => {
|
484 |
-
const parentEl = el.parentElement;
|
485 |
-
if (parentEl) {
|
486 |
-
const cites = parentEl.dataset.cites;
|
487 |
-
if (cites) {
|
488 |
-
return {
|
489 |
-
el,
|
490 |
-
cites: cites.split(' ')
|
491 |
-
};
|
492 |
-
} else {
|
493 |
-
return findCites(el.parentElement)
|
494 |
-
}
|
495 |
-
} else {
|
496 |
-
return undefined;
|
497 |
-
}
|
498 |
-
};
|
499 |
-
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
500 |
-
for (var i=0; i<bibliorefs.length; i++) {
|
501 |
-
const ref = bibliorefs[i];
|
502 |
-
const citeInfo = findCites(ref);
|
503 |
-
if (citeInfo) {
|
504 |
-
tippyHover(citeInfo.el, function() {
|
505 |
-
var popup = window.document.createElement('div');
|
506 |
-
citeInfo.cites.forEach(function(cite) {
|
507 |
-
var citeDiv = window.document.createElement('div');
|
508 |
-
citeDiv.classList.add('hanging-indent');
|
509 |
-
citeDiv.classList.add('csl-entry');
|
510 |
-
var biblioDiv = window.document.getElementById('ref-' + cite);
|
511 |
-
if (biblioDiv) {
|
512 |
-
citeDiv.innerHTML = biblioDiv.innerHTML;
|
513 |
-
}
|
514 |
-
popup.appendChild(citeDiv);
|
515 |
-
});
|
516 |
-
return popup.innerHTML;
|
517 |
-
});
|
518 |
-
}
|
519 |
-
}
|
520 |
-
});
|
521 |
-
</script>
|
522 |
-
</div> <!-- /content -->
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
</body></html>
|
|
|
1 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
2 |
+
<head>
|
3 |
+
<title>Redirect to ingredient_vision.html</title>
|
4 |
+
<meta http-equiv="refresh" content="0;URL='ingredient_vision.html'" />
|
5 |
+
</head>
|
6 |
+
<body>
|
7 |
+
</body>
|
8 |
+
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/lchain_tool.html
DELETED
The diff for this file is too large to render.
See raw diff
|
|
_proc/_docs/search.json
DELETED
The diff for this file is too large to render.
See raw diff
|
|
_proc/_docs/site_libs/bootstrap/bootstrap-icons.css
DELETED
@@ -1,2018 +0,0 @@
|
|
1 |
-
@font-face {
|
2 |
-
font-display: block;
|
3 |
-
font-family: "bootstrap-icons";
|
4 |
-
src:
|
5 |
-
url("./bootstrap-icons.woff?2ab2cbbe07fcebb53bdaa7313bb290f2") format("woff");
|
6 |
-
}
|
7 |
-
|
8 |
-
.bi::before,
|
9 |
-
[class^="bi-"]::before,
|
10 |
-
[class*=" bi-"]::before {
|
11 |
-
display: inline-block;
|
12 |
-
font-family: bootstrap-icons !important;
|
13 |
-
font-style: normal;
|
14 |
-
font-weight: normal !important;
|
15 |
-
font-variant: normal;
|
16 |
-
text-transform: none;
|
17 |
-
line-height: 1;
|
18 |
-
vertical-align: -.125em;
|
19 |
-
-webkit-font-smoothing: antialiased;
|
20 |
-
-moz-osx-font-smoothing: grayscale;
|
21 |
-
}
|
22 |
-
|
23 |
-
.bi-123::before { content: "\f67f"; }
|
24 |
-
.bi-alarm-fill::before { content: "\f101"; }
|
25 |
-
.bi-alarm::before { content: "\f102"; }
|
26 |
-
.bi-align-bottom::before { content: "\f103"; }
|
27 |
-
.bi-align-center::before { content: "\f104"; }
|
28 |
-
.bi-align-end::before { content: "\f105"; }
|
29 |
-
.bi-align-middle::before { content: "\f106"; }
|
30 |
-
.bi-align-start::before { content: "\f107"; }
|
31 |
-
.bi-align-top::before { content: "\f108"; }
|
32 |
-
.bi-alt::before { content: "\f109"; }
|
33 |
-
.bi-app-indicator::before { content: "\f10a"; }
|
34 |
-
.bi-app::before { content: "\f10b"; }
|
35 |
-
.bi-archive-fill::before { content: "\f10c"; }
|
36 |
-
.bi-archive::before { content: "\f10d"; }
|
37 |
-
.bi-arrow-90deg-down::before { content: "\f10e"; }
|
38 |
-
.bi-arrow-90deg-left::before { content: "\f10f"; }
|
39 |
-
.bi-arrow-90deg-right::before { content: "\f110"; }
|
40 |
-
.bi-arrow-90deg-up::before { content: "\f111"; }
|
41 |
-
.bi-arrow-bar-down::before { content: "\f112"; }
|
42 |
-
.bi-arrow-bar-left::before { content: "\f113"; }
|
43 |
-
.bi-arrow-bar-right::before { content: "\f114"; }
|
44 |
-
.bi-arrow-bar-up::before { content: "\f115"; }
|
45 |
-
.bi-arrow-clockwise::before { content: "\f116"; }
|
46 |
-
.bi-arrow-counterclockwise::before { content: "\f117"; }
|
47 |
-
.bi-arrow-down-circle-fill::before { content: "\f118"; }
|
48 |
-
.bi-arrow-down-circle::before { content: "\f119"; }
|
49 |
-
.bi-arrow-down-left-circle-fill::before { content: "\f11a"; }
|
50 |
-
.bi-arrow-down-left-circle::before { content: "\f11b"; }
|
51 |
-
.bi-arrow-down-left-square-fill::before { content: "\f11c"; }
|
52 |
-
.bi-arrow-down-left-square::before { content: "\f11d"; }
|
53 |
-
.bi-arrow-down-left::before { content: "\f11e"; }
|
54 |
-
.bi-arrow-down-right-circle-fill::before { content: "\f11f"; }
|
55 |
-
.bi-arrow-down-right-circle::before { content: "\f120"; }
|
56 |
-
.bi-arrow-down-right-square-fill::before { content: "\f121"; }
|
57 |
-
.bi-arrow-down-right-square::before { content: "\f122"; }
|
58 |
-
.bi-arrow-down-right::before { content: "\f123"; }
|
59 |
-
.bi-arrow-down-short::before { content: "\f124"; }
|
60 |
-
.bi-arrow-down-square-fill::before { content: "\f125"; }
|
61 |
-
.bi-arrow-down-square::before { content: "\f126"; }
|
62 |
-
.bi-arrow-down-up::before { content: "\f127"; }
|
63 |
-
.bi-arrow-down::before { content: "\f128"; }
|
64 |
-
.bi-arrow-left-circle-fill::before { content: "\f129"; }
|
65 |
-
.bi-arrow-left-circle::before { content: "\f12a"; }
|
66 |
-
.bi-arrow-left-right::before { content: "\f12b"; }
|
67 |
-
.bi-arrow-left-short::before { content: "\f12c"; }
|
68 |
-
.bi-arrow-left-square-fill::before { content: "\f12d"; }
|
69 |
-
.bi-arrow-left-square::before { content: "\f12e"; }
|
70 |
-
.bi-arrow-left::before { content: "\f12f"; }
|
71 |
-
.bi-arrow-repeat::before { content: "\f130"; }
|
72 |
-
.bi-arrow-return-left::before { content: "\f131"; }
|
73 |
-
.bi-arrow-return-right::before { content: "\f132"; }
|
74 |
-
.bi-arrow-right-circle-fill::before { content: "\f133"; }
|
75 |
-
.bi-arrow-right-circle::before { content: "\f134"; }
|
76 |
-
.bi-arrow-right-short::before { content: "\f135"; }
|
77 |
-
.bi-arrow-right-square-fill::before { content: "\f136"; }
|
78 |
-
.bi-arrow-right-square::before { content: "\f137"; }
|
79 |
-
.bi-arrow-right::before { content: "\f138"; }
|
80 |
-
.bi-arrow-up-circle-fill::before { content: "\f139"; }
|
81 |
-
.bi-arrow-up-circle::before { content: "\f13a"; }
|
82 |
-
.bi-arrow-up-left-circle-fill::before { content: "\f13b"; }
|
83 |
-
.bi-arrow-up-left-circle::before { content: "\f13c"; }
|
84 |
-
.bi-arrow-up-left-square-fill::before { content: "\f13d"; }
|
85 |
-
.bi-arrow-up-left-square::before { content: "\f13e"; }
|
86 |
-
.bi-arrow-up-left::before { content: "\f13f"; }
|
87 |
-
.bi-arrow-up-right-circle-fill::before { content: "\f140"; }
|
88 |
-
.bi-arrow-up-right-circle::before { content: "\f141"; }
|
89 |
-
.bi-arrow-up-right-square-fill::before { content: "\f142"; }
|
90 |
-
.bi-arrow-up-right-square::before { content: "\f143"; }
|
91 |
-
.bi-arrow-up-right::before { content: "\f144"; }
|
92 |
-
.bi-arrow-up-short::before { content: "\f145"; }
|
93 |
-
.bi-arrow-up-square-fill::before { content: "\f146"; }
|
94 |
-
.bi-arrow-up-square::before { content: "\f147"; }
|
95 |
-
.bi-arrow-up::before { content: "\f148"; }
|
96 |
-
.bi-arrows-angle-contract::before { content: "\f149"; }
|
97 |
-
.bi-arrows-angle-expand::before { content: "\f14a"; }
|
98 |
-
.bi-arrows-collapse::before { content: "\f14b"; }
|
99 |
-
.bi-arrows-expand::before { content: "\f14c"; }
|
100 |
-
.bi-arrows-fullscreen::before { content: "\f14d"; }
|
101 |
-
.bi-arrows-move::before { content: "\f14e"; }
|
102 |
-
.bi-aspect-ratio-fill::before { content: "\f14f"; }
|
103 |
-
.bi-aspect-ratio::before { content: "\f150"; }
|
104 |
-
.bi-asterisk::before { content: "\f151"; }
|
105 |
-
.bi-at::before { content: "\f152"; }
|
106 |
-
.bi-award-fill::before { content: "\f153"; }
|
107 |
-
.bi-award::before { content: "\f154"; }
|
108 |
-
.bi-back::before { content: "\f155"; }
|
109 |
-
.bi-backspace-fill::before { content: "\f156"; }
|
110 |
-
.bi-backspace-reverse-fill::before { content: "\f157"; }
|
111 |
-
.bi-backspace-reverse::before { content: "\f158"; }
|
112 |
-
.bi-backspace::before { content: "\f159"; }
|
113 |
-
.bi-badge-3d-fill::before { content: "\f15a"; }
|
114 |
-
.bi-badge-3d::before { content: "\f15b"; }
|
115 |
-
.bi-badge-4k-fill::before { content: "\f15c"; }
|
116 |
-
.bi-badge-4k::before { content: "\f15d"; }
|
117 |
-
.bi-badge-8k-fill::before { content: "\f15e"; }
|
118 |
-
.bi-badge-8k::before { content: "\f15f"; }
|
119 |
-
.bi-badge-ad-fill::before { content: "\f160"; }
|
120 |
-
.bi-badge-ad::before { content: "\f161"; }
|
121 |
-
.bi-badge-ar-fill::before { content: "\f162"; }
|
122 |
-
.bi-badge-ar::before { content: "\f163"; }
|
123 |
-
.bi-badge-cc-fill::before { content: "\f164"; }
|
124 |
-
.bi-badge-cc::before { content: "\f165"; }
|
125 |
-
.bi-badge-hd-fill::before { content: "\f166"; }
|
126 |
-
.bi-badge-hd::before { content: "\f167"; }
|
127 |
-
.bi-badge-tm-fill::before { content: "\f168"; }
|
128 |
-
.bi-badge-tm::before { content: "\f169"; }
|
129 |
-
.bi-badge-vo-fill::before { content: "\f16a"; }
|
130 |
-
.bi-badge-vo::before { content: "\f16b"; }
|
131 |
-
.bi-badge-vr-fill::before { content: "\f16c"; }
|
132 |
-
.bi-badge-vr::before { content: "\f16d"; }
|
133 |
-
.bi-badge-wc-fill::before { content: "\f16e"; }
|
134 |
-
.bi-badge-wc::before { content: "\f16f"; }
|
135 |
-
.bi-bag-check-fill::before { content: "\f170"; }
|
136 |
-
.bi-bag-check::before { content: "\f171"; }
|
137 |
-
.bi-bag-dash-fill::before { content: "\f172"; }
|
138 |
-
.bi-bag-dash::before { content: "\f173"; }
|
139 |
-
.bi-bag-fill::before { content: "\f174"; }
|
140 |
-
.bi-bag-plus-fill::before { content: "\f175"; }
|
141 |
-
.bi-bag-plus::before { content: "\f176"; }
|
142 |
-
.bi-bag-x-fill::before { content: "\f177"; }
|
143 |
-
.bi-bag-x::before { content: "\f178"; }
|
144 |
-
.bi-bag::before { content: "\f179"; }
|
145 |
-
.bi-bar-chart-fill::before { content: "\f17a"; }
|
146 |
-
.bi-bar-chart-line-fill::before { content: "\f17b"; }
|
147 |
-
.bi-bar-chart-line::before { content: "\f17c"; }
|
148 |
-
.bi-bar-chart-steps::before { content: "\f17d"; }
|
149 |
-
.bi-bar-chart::before { content: "\f17e"; }
|
150 |
-
.bi-basket-fill::before { content: "\f17f"; }
|
151 |
-
.bi-basket::before { content: "\f180"; }
|
152 |
-
.bi-basket2-fill::before { content: "\f181"; }
|
153 |
-
.bi-basket2::before { content: "\f182"; }
|
154 |
-
.bi-basket3-fill::before { content: "\f183"; }
|
155 |
-
.bi-basket3::before { content: "\f184"; }
|
156 |
-
.bi-battery-charging::before { content: "\f185"; }
|
157 |
-
.bi-battery-full::before { content: "\f186"; }
|
158 |
-
.bi-battery-half::before { content: "\f187"; }
|
159 |
-
.bi-battery::before { content: "\f188"; }
|
160 |
-
.bi-bell-fill::before { content: "\f189"; }
|
161 |
-
.bi-bell::before { content: "\f18a"; }
|
162 |
-
.bi-bezier::before { content: "\f18b"; }
|
163 |
-
.bi-bezier2::before { content: "\f18c"; }
|
164 |
-
.bi-bicycle::before { content: "\f18d"; }
|
165 |
-
.bi-binoculars-fill::before { content: "\f18e"; }
|
166 |
-
.bi-binoculars::before { content: "\f18f"; }
|
167 |
-
.bi-blockquote-left::before { content: "\f190"; }
|
168 |
-
.bi-blockquote-right::before { content: "\f191"; }
|
169 |
-
.bi-book-fill::before { content: "\f192"; }
|
170 |
-
.bi-book-half::before { content: "\f193"; }
|
171 |
-
.bi-book::before { content: "\f194"; }
|
172 |
-
.bi-bookmark-check-fill::before { content: "\f195"; }
|
173 |
-
.bi-bookmark-check::before { content: "\f196"; }
|
174 |
-
.bi-bookmark-dash-fill::before { content: "\f197"; }
|
175 |
-
.bi-bookmark-dash::before { content: "\f198"; }
|
176 |
-
.bi-bookmark-fill::before { content: "\f199"; }
|
177 |
-
.bi-bookmark-heart-fill::before { content: "\f19a"; }
|
178 |
-
.bi-bookmark-heart::before { content: "\f19b"; }
|
179 |
-
.bi-bookmark-plus-fill::before { content: "\f19c"; }
|
180 |
-
.bi-bookmark-plus::before { content: "\f19d"; }
|
181 |
-
.bi-bookmark-star-fill::before { content: "\f19e"; }
|
182 |
-
.bi-bookmark-star::before { content: "\f19f"; }
|
183 |
-
.bi-bookmark-x-fill::before { content: "\f1a0"; }
|
184 |
-
.bi-bookmark-x::before { content: "\f1a1"; }
|
185 |
-
.bi-bookmark::before { content: "\f1a2"; }
|
186 |
-
.bi-bookmarks-fill::before { content: "\f1a3"; }
|
187 |
-
.bi-bookmarks::before { content: "\f1a4"; }
|
188 |
-
.bi-bookshelf::before { content: "\f1a5"; }
|
189 |
-
.bi-bootstrap-fill::before { content: "\f1a6"; }
|
190 |
-
.bi-bootstrap-reboot::before { content: "\f1a7"; }
|
191 |
-
.bi-bootstrap::before { content: "\f1a8"; }
|
192 |
-
.bi-border-all::before { content: "\f1a9"; }
|
193 |
-
.bi-border-bottom::before { content: "\f1aa"; }
|
194 |
-
.bi-border-center::before { content: "\f1ab"; }
|
195 |
-
.bi-border-inner::before { content: "\f1ac"; }
|
196 |
-
.bi-border-left::before { content: "\f1ad"; }
|
197 |
-
.bi-border-middle::before { content: "\f1ae"; }
|
198 |
-
.bi-border-outer::before { content: "\f1af"; }
|
199 |
-
.bi-border-right::before { content: "\f1b0"; }
|
200 |
-
.bi-border-style::before { content: "\f1b1"; }
|
201 |
-
.bi-border-top::before { content: "\f1b2"; }
|
202 |
-
.bi-border-width::before { content: "\f1b3"; }
|
203 |
-
.bi-border::before { content: "\f1b4"; }
|
204 |
-
.bi-bounding-box-circles::before { content: "\f1b5"; }
|
205 |
-
.bi-bounding-box::before { content: "\f1b6"; }
|
206 |
-
.bi-box-arrow-down-left::before { content: "\f1b7"; }
|
207 |
-
.bi-box-arrow-down-right::before { content: "\f1b8"; }
|
208 |
-
.bi-box-arrow-down::before { content: "\f1b9"; }
|
209 |
-
.bi-box-arrow-in-down-left::before { content: "\f1ba"; }
|
210 |
-
.bi-box-arrow-in-down-right::before { content: "\f1bb"; }
|
211 |
-
.bi-box-arrow-in-down::before { content: "\f1bc"; }
|
212 |
-
.bi-box-arrow-in-left::before { content: "\f1bd"; }
|
213 |
-
.bi-box-arrow-in-right::before { content: "\f1be"; }
|
214 |
-
.bi-box-arrow-in-up-left::before { content: "\f1bf"; }
|
215 |
-
.bi-box-arrow-in-up-right::before { content: "\f1c0"; }
|
216 |
-
.bi-box-arrow-in-up::before { content: "\f1c1"; }
|
217 |
-
.bi-box-arrow-left::before { content: "\f1c2"; }
|
218 |
-
.bi-box-arrow-right::before { content: "\f1c3"; }
|
219 |
-
.bi-box-arrow-up-left::before { content: "\f1c4"; }
|
220 |
-
.bi-box-arrow-up-right::before { content: "\f1c5"; }
|
221 |
-
.bi-box-arrow-up::before { content: "\f1c6"; }
|
222 |
-
.bi-box-seam::before { content: "\f1c7"; }
|
223 |
-
.bi-box::before { content: "\f1c8"; }
|
224 |
-
.bi-braces::before { content: "\f1c9"; }
|
225 |
-
.bi-bricks::before { content: "\f1ca"; }
|
226 |
-
.bi-briefcase-fill::before { content: "\f1cb"; }
|
227 |
-
.bi-briefcase::before { content: "\f1cc"; }
|
228 |
-
.bi-brightness-alt-high-fill::before { content: "\f1cd"; }
|
229 |
-
.bi-brightness-alt-high::before { content: "\f1ce"; }
|
230 |
-
.bi-brightness-alt-low-fill::before { content: "\f1cf"; }
|
231 |
-
.bi-brightness-alt-low::before { content: "\f1d0"; }
|
232 |
-
.bi-brightness-high-fill::before { content: "\f1d1"; }
|
233 |
-
.bi-brightness-high::before { content: "\f1d2"; }
|
234 |
-
.bi-brightness-low-fill::before { content: "\f1d3"; }
|
235 |
-
.bi-brightness-low::before { content: "\f1d4"; }
|
236 |
-
.bi-broadcast-pin::before { content: "\f1d5"; }
|
237 |
-
.bi-broadcast::before { content: "\f1d6"; }
|
238 |
-
.bi-brush-fill::before { content: "\f1d7"; }
|
239 |
-
.bi-brush::before { content: "\f1d8"; }
|
240 |
-
.bi-bucket-fill::before { content: "\f1d9"; }
|
241 |
-
.bi-bucket::before { content: "\f1da"; }
|
242 |
-
.bi-bug-fill::before { content: "\f1db"; }
|
243 |
-
.bi-bug::before { content: "\f1dc"; }
|
244 |
-
.bi-building::before { content: "\f1dd"; }
|
245 |
-
.bi-bullseye::before { content: "\f1de"; }
|
246 |
-
.bi-calculator-fill::before { content: "\f1df"; }
|
247 |
-
.bi-calculator::before { content: "\f1e0"; }
|
248 |
-
.bi-calendar-check-fill::before { content: "\f1e1"; }
|
249 |
-
.bi-calendar-check::before { content: "\f1e2"; }
|
250 |
-
.bi-calendar-date-fill::before { content: "\f1e3"; }
|
251 |
-
.bi-calendar-date::before { content: "\f1e4"; }
|
252 |
-
.bi-calendar-day-fill::before { content: "\f1e5"; }
|
253 |
-
.bi-calendar-day::before { content: "\f1e6"; }
|
254 |
-
.bi-calendar-event-fill::before { content: "\f1e7"; }
|
255 |
-
.bi-calendar-event::before { content: "\f1e8"; }
|
256 |
-
.bi-calendar-fill::before { content: "\f1e9"; }
|
257 |
-
.bi-calendar-minus-fill::before { content: "\f1ea"; }
|
258 |
-
.bi-calendar-minus::before { content: "\f1eb"; }
|
259 |
-
.bi-calendar-month-fill::before { content: "\f1ec"; }
|
260 |
-
.bi-calendar-month::before { content: "\f1ed"; }
|
261 |
-
.bi-calendar-plus-fill::before { content: "\f1ee"; }
|
262 |
-
.bi-calendar-plus::before { content: "\f1ef"; }
|
263 |
-
.bi-calendar-range-fill::before { content: "\f1f0"; }
|
264 |
-
.bi-calendar-range::before { content: "\f1f1"; }
|
265 |
-
.bi-calendar-week-fill::before { content: "\f1f2"; }
|
266 |
-
.bi-calendar-week::before { content: "\f1f3"; }
|
267 |
-
.bi-calendar-x-fill::before { content: "\f1f4"; }
|
268 |
-
.bi-calendar-x::before { content: "\f1f5"; }
|
269 |
-
.bi-calendar::before { content: "\f1f6"; }
|
270 |
-
.bi-calendar2-check-fill::before { content: "\f1f7"; }
|
271 |
-
.bi-calendar2-check::before { content: "\f1f8"; }
|
272 |
-
.bi-calendar2-date-fill::before { content: "\f1f9"; }
|
273 |
-
.bi-calendar2-date::before { content: "\f1fa"; }
|
274 |
-
.bi-calendar2-day-fill::before { content: "\f1fb"; }
|
275 |
-
.bi-calendar2-day::before { content: "\f1fc"; }
|
276 |
-
.bi-calendar2-event-fill::before { content: "\f1fd"; }
|
277 |
-
.bi-calendar2-event::before { content: "\f1fe"; }
|
278 |
-
.bi-calendar2-fill::before { content: "\f1ff"; }
|
279 |
-
.bi-calendar2-minus-fill::before { content: "\f200"; }
|
280 |
-
.bi-calendar2-minus::before { content: "\f201"; }
|
281 |
-
.bi-calendar2-month-fill::before { content: "\f202"; }
|
282 |
-
.bi-calendar2-month::before { content: "\f203"; }
|
283 |
-
.bi-calendar2-plus-fill::before { content: "\f204"; }
|
284 |
-
.bi-calendar2-plus::before { content: "\f205"; }
|
285 |
-
.bi-calendar2-range-fill::before { content: "\f206"; }
|
286 |
-
.bi-calendar2-range::before { content: "\f207"; }
|
287 |
-
.bi-calendar2-week-fill::before { content: "\f208"; }
|
288 |
-
.bi-calendar2-week::before { content: "\f209"; }
|
289 |
-
.bi-calendar2-x-fill::before { content: "\f20a"; }
|
290 |
-
.bi-calendar2-x::before { content: "\f20b"; }
|
291 |
-
.bi-calendar2::before { content: "\f20c"; }
|
292 |
-
.bi-calendar3-event-fill::before { content: "\f20d"; }
|
293 |
-
.bi-calendar3-event::before { content: "\f20e"; }
|
294 |
-
.bi-calendar3-fill::before { content: "\f20f"; }
|
295 |
-
.bi-calendar3-range-fill::before { content: "\f210"; }
|
296 |
-
.bi-calendar3-range::before { content: "\f211"; }
|
297 |
-
.bi-calendar3-week-fill::before { content: "\f212"; }
|
298 |
-
.bi-calendar3-week::before { content: "\f213"; }
|
299 |
-
.bi-calendar3::before { content: "\f214"; }
|
300 |
-
.bi-calendar4-event::before { content: "\f215"; }
|
301 |
-
.bi-calendar4-range::before { content: "\f216"; }
|
302 |
-
.bi-calendar4-week::before { content: "\f217"; }
|
303 |
-
.bi-calendar4::before { content: "\f218"; }
|
304 |
-
.bi-camera-fill::before { content: "\f219"; }
|
305 |
-
.bi-camera-reels-fill::before { content: "\f21a"; }
|
306 |
-
.bi-camera-reels::before { content: "\f21b"; }
|
307 |
-
.bi-camera-video-fill::before { content: "\f21c"; }
|
308 |
-
.bi-camera-video-off-fill::before { content: "\f21d"; }
|
309 |
-
.bi-camera-video-off::before { content: "\f21e"; }
|
310 |
-
.bi-camera-video::before { content: "\f21f"; }
|
311 |
-
.bi-camera::before { content: "\f220"; }
|
312 |
-
.bi-camera2::before { content: "\f221"; }
|
313 |
-
.bi-capslock-fill::before { content: "\f222"; }
|
314 |
-
.bi-capslock::before { content: "\f223"; }
|
315 |
-
.bi-card-checklist::before { content: "\f224"; }
|
316 |
-
.bi-card-heading::before { content: "\f225"; }
|
317 |
-
.bi-card-image::before { content: "\f226"; }
|
318 |
-
.bi-card-list::before { content: "\f227"; }
|
319 |
-
.bi-card-text::before { content: "\f228"; }
|
320 |
-
.bi-caret-down-fill::before { content: "\f229"; }
|
321 |
-
.bi-caret-down-square-fill::before { content: "\f22a"; }
|
322 |
-
.bi-caret-down-square::before { content: "\f22b"; }
|
323 |
-
.bi-caret-down::before { content: "\f22c"; }
|
324 |
-
.bi-caret-left-fill::before { content: "\f22d"; }
|
325 |
-
.bi-caret-left-square-fill::before { content: "\f22e"; }
|
326 |
-
.bi-caret-left-square::before { content: "\f22f"; }
|
327 |
-
.bi-caret-left::before { content: "\f230"; }
|
328 |
-
.bi-caret-right-fill::before { content: "\f231"; }
|
329 |
-
.bi-caret-right-square-fill::before { content: "\f232"; }
|
330 |
-
.bi-caret-right-square::before { content: "\f233"; }
|
331 |
-
.bi-caret-right::before { content: "\f234"; }
|
332 |
-
.bi-caret-up-fill::before { content: "\f235"; }
|
333 |
-
.bi-caret-up-square-fill::before { content: "\f236"; }
|
334 |
-
.bi-caret-up-square::before { content: "\f237"; }
|
335 |
-
.bi-caret-up::before { content: "\f238"; }
|
336 |
-
.bi-cart-check-fill::before { content: "\f239"; }
|
337 |
-
.bi-cart-check::before { content: "\f23a"; }
|
338 |
-
.bi-cart-dash-fill::before { content: "\f23b"; }
|
339 |
-
.bi-cart-dash::before { content: "\f23c"; }
|
340 |
-
.bi-cart-fill::before { content: "\f23d"; }
|
341 |
-
.bi-cart-plus-fill::before { content: "\f23e"; }
|
342 |
-
.bi-cart-plus::before { content: "\f23f"; }
|
343 |
-
.bi-cart-x-fill::before { content: "\f240"; }
|
344 |
-
.bi-cart-x::before { content: "\f241"; }
|
345 |
-
.bi-cart::before { content: "\f242"; }
|
346 |
-
.bi-cart2::before { content: "\f243"; }
|
347 |
-
.bi-cart3::before { content: "\f244"; }
|
348 |
-
.bi-cart4::before { content: "\f245"; }
|
349 |
-
.bi-cash-stack::before { content: "\f246"; }
|
350 |
-
.bi-cash::before { content: "\f247"; }
|
351 |
-
.bi-cast::before { content: "\f248"; }
|
352 |
-
.bi-chat-dots-fill::before { content: "\f249"; }
|
353 |
-
.bi-chat-dots::before { content: "\f24a"; }
|
354 |
-
.bi-chat-fill::before { content: "\f24b"; }
|
355 |
-
.bi-chat-left-dots-fill::before { content: "\f24c"; }
|
356 |
-
.bi-chat-left-dots::before { content: "\f24d"; }
|
357 |
-
.bi-chat-left-fill::before { content: "\f24e"; }
|
358 |
-
.bi-chat-left-quote-fill::before { content: "\f24f"; }
|
359 |
-
.bi-chat-left-quote::before { content: "\f250"; }
|
360 |
-
.bi-chat-left-text-fill::before { content: "\f251"; }
|
361 |
-
.bi-chat-left-text::before { content: "\f252"; }
|
362 |
-
.bi-chat-left::before { content: "\f253"; }
|
363 |
-
.bi-chat-quote-fill::before { content: "\f254"; }
|
364 |
-
.bi-chat-quote::before { content: "\f255"; }
|
365 |
-
.bi-chat-right-dots-fill::before { content: "\f256"; }
|
366 |
-
.bi-chat-right-dots::before { content: "\f257"; }
|
367 |
-
.bi-chat-right-fill::before { content: "\f258"; }
|
368 |
-
.bi-chat-right-quote-fill::before { content: "\f259"; }
|
369 |
-
.bi-chat-right-quote::before { content: "\f25a"; }
|
370 |
-
.bi-chat-right-text-fill::before { content: "\f25b"; }
|
371 |
-
.bi-chat-right-text::before { content: "\f25c"; }
|
372 |
-
.bi-chat-right::before { content: "\f25d"; }
|
373 |
-
.bi-chat-square-dots-fill::before { content: "\f25e"; }
|
374 |
-
.bi-chat-square-dots::before { content: "\f25f"; }
|
375 |
-
.bi-chat-square-fill::before { content: "\f260"; }
|
376 |
-
.bi-chat-square-quote-fill::before { content: "\f261"; }
|
377 |
-
.bi-chat-square-quote::before { content: "\f262"; }
|
378 |
-
.bi-chat-square-text-fill::before { content: "\f263"; }
|
379 |
-
.bi-chat-square-text::before { content: "\f264"; }
|
380 |
-
.bi-chat-square::before { content: "\f265"; }
|
381 |
-
.bi-chat-text-fill::before { content: "\f266"; }
|
382 |
-
.bi-chat-text::before { content: "\f267"; }
|
383 |
-
.bi-chat::before { content: "\f268"; }
|
384 |
-
.bi-check-all::before { content: "\f269"; }
|
385 |
-
.bi-check-circle-fill::before { content: "\f26a"; }
|
386 |
-
.bi-check-circle::before { content: "\f26b"; }
|
387 |
-
.bi-check-square-fill::before { content: "\f26c"; }
|
388 |
-
.bi-check-square::before { content: "\f26d"; }
|
389 |
-
.bi-check::before { content: "\f26e"; }
|
390 |
-
.bi-check2-all::before { content: "\f26f"; }
|
391 |
-
.bi-check2-circle::before { content: "\f270"; }
|
392 |
-
.bi-check2-square::before { content: "\f271"; }
|
393 |
-
.bi-check2::before { content: "\f272"; }
|
394 |
-
.bi-chevron-bar-contract::before { content: "\f273"; }
|
395 |
-
.bi-chevron-bar-down::before { content: "\f274"; }
|
396 |
-
.bi-chevron-bar-expand::before { content: "\f275"; }
|
397 |
-
.bi-chevron-bar-left::before { content: "\f276"; }
|
398 |
-
.bi-chevron-bar-right::before { content: "\f277"; }
|
399 |
-
.bi-chevron-bar-up::before { content: "\f278"; }
|
400 |
-
.bi-chevron-compact-down::before { content: "\f279"; }
|
401 |
-
.bi-chevron-compact-left::before { content: "\f27a"; }
|
402 |
-
.bi-chevron-compact-right::before { content: "\f27b"; }
|
403 |
-
.bi-chevron-compact-up::before { content: "\f27c"; }
|
404 |
-
.bi-chevron-contract::before { content: "\f27d"; }
|
405 |
-
.bi-chevron-double-down::before { content: "\f27e"; }
|
406 |
-
.bi-chevron-double-left::before { content: "\f27f"; }
|
407 |
-
.bi-chevron-double-right::before { content: "\f280"; }
|
408 |
-
.bi-chevron-double-up::before { content: "\f281"; }
|
409 |
-
.bi-chevron-down::before { content: "\f282"; }
|
410 |
-
.bi-chevron-expand::before { content: "\f283"; }
|
411 |
-
.bi-chevron-left::before { content: "\f284"; }
|
412 |
-
.bi-chevron-right::before { content: "\f285"; }
|
413 |
-
.bi-chevron-up::before { content: "\f286"; }
|
414 |
-
.bi-circle-fill::before { content: "\f287"; }
|
415 |
-
.bi-circle-half::before { content: "\f288"; }
|
416 |
-
.bi-circle-square::before { content: "\f289"; }
|
417 |
-
.bi-circle::before { content: "\f28a"; }
|
418 |
-
.bi-clipboard-check::before { content: "\f28b"; }
|
419 |
-
.bi-clipboard-data::before { content: "\f28c"; }
|
420 |
-
.bi-clipboard-minus::before { content: "\f28d"; }
|
421 |
-
.bi-clipboard-plus::before { content: "\f28e"; }
|
422 |
-
.bi-clipboard-x::before { content: "\f28f"; }
|
423 |
-
.bi-clipboard::before { content: "\f290"; }
|
424 |
-
.bi-clock-fill::before { content: "\f291"; }
|
425 |
-
.bi-clock-history::before { content: "\f292"; }
|
426 |
-
.bi-clock::before { content: "\f293"; }
|
427 |
-
.bi-cloud-arrow-down-fill::before { content: "\f294"; }
|
428 |
-
.bi-cloud-arrow-down::before { content: "\f295"; }
|
429 |
-
.bi-cloud-arrow-up-fill::before { content: "\f296"; }
|
430 |
-
.bi-cloud-arrow-up::before { content: "\f297"; }
|
431 |
-
.bi-cloud-check-fill::before { content: "\f298"; }
|
432 |
-
.bi-cloud-check::before { content: "\f299"; }
|
433 |
-
.bi-cloud-download-fill::before { content: "\f29a"; }
|
434 |
-
.bi-cloud-download::before { content: "\f29b"; }
|
435 |
-
.bi-cloud-drizzle-fill::before { content: "\f29c"; }
|
436 |
-
.bi-cloud-drizzle::before { content: "\f29d"; }
|
437 |
-
.bi-cloud-fill::before { content: "\f29e"; }
|
438 |
-
.bi-cloud-fog-fill::before { content: "\f29f"; }
|
439 |
-
.bi-cloud-fog::before { content: "\f2a0"; }
|
440 |
-
.bi-cloud-fog2-fill::before { content: "\f2a1"; }
|
441 |
-
.bi-cloud-fog2::before { content: "\f2a2"; }
|
442 |
-
.bi-cloud-hail-fill::before { content: "\f2a3"; }
|
443 |
-
.bi-cloud-hail::before { content: "\f2a4"; }
|
444 |
-
.bi-cloud-haze-1::before { content: "\f2a5"; }
|
445 |
-
.bi-cloud-haze-fill::before { content: "\f2a6"; }
|
446 |
-
.bi-cloud-haze::before { content: "\f2a7"; }
|
447 |
-
.bi-cloud-haze2-fill::before { content: "\f2a8"; }
|
448 |
-
.bi-cloud-lightning-fill::before { content: "\f2a9"; }
|
449 |
-
.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; }
|
450 |
-
.bi-cloud-lightning-rain::before { content: "\f2ab"; }
|
451 |
-
.bi-cloud-lightning::before { content: "\f2ac"; }
|
452 |
-
.bi-cloud-minus-fill::before { content: "\f2ad"; }
|
453 |
-
.bi-cloud-minus::before { content: "\f2ae"; }
|
454 |
-
.bi-cloud-moon-fill::before { content: "\f2af"; }
|
455 |
-
.bi-cloud-moon::before { content: "\f2b0"; }
|
456 |
-
.bi-cloud-plus-fill::before { content: "\f2b1"; }
|
457 |
-
.bi-cloud-plus::before { content: "\f2b2"; }
|
458 |
-
.bi-cloud-rain-fill::before { content: "\f2b3"; }
|
459 |
-
.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; }
|
460 |
-
.bi-cloud-rain-heavy::before { content: "\f2b5"; }
|
461 |
-
.bi-cloud-rain::before { content: "\f2b6"; }
|
462 |
-
.bi-cloud-slash-fill::before { content: "\f2b7"; }
|
463 |
-
.bi-cloud-slash::before { content: "\f2b8"; }
|
464 |
-
.bi-cloud-sleet-fill::before { content: "\f2b9"; }
|
465 |
-
.bi-cloud-sleet::before { content: "\f2ba"; }
|
466 |
-
.bi-cloud-snow-fill::before { content: "\f2bb"; }
|
467 |
-
.bi-cloud-snow::before { content: "\f2bc"; }
|
468 |
-
.bi-cloud-sun-fill::before { content: "\f2bd"; }
|
469 |
-
.bi-cloud-sun::before { content: "\f2be"; }
|
470 |
-
.bi-cloud-upload-fill::before { content: "\f2bf"; }
|
471 |
-
.bi-cloud-upload::before { content: "\f2c0"; }
|
472 |
-
.bi-cloud::before { content: "\f2c1"; }
|
473 |
-
.bi-clouds-fill::before { content: "\f2c2"; }
|
474 |
-
.bi-clouds::before { content: "\f2c3"; }
|
475 |
-
.bi-cloudy-fill::before { content: "\f2c4"; }
|
476 |
-
.bi-cloudy::before { content: "\f2c5"; }
|
477 |
-
.bi-code-slash::before { content: "\f2c6"; }
|
478 |
-
.bi-code-square::before { content: "\f2c7"; }
|
479 |
-
.bi-code::before { content: "\f2c8"; }
|
480 |
-
.bi-collection-fill::before { content: "\f2c9"; }
|
481 |
-
.bi-collection-play-fill::before { content: "\f2ca"; }
|
482 |
-
.bi-collection-play::before { content: "\f2cb"; }
|
483 |
-
.bi-collection::before { content: "\f2cc"; }
|
484 |
-
.bi-columns-gap::before { content: "\f2cd"; }
|
485 |
-
.bi-columns::before { content: "\f2ce"; }
|
486 |
-
.bi-command::before { content: "\f2cf"; }
|
487 |
-
.bi-compass-fill::before { content: "\f2d0"; }
|
488 |
-
.bi-compass::before { content: "\f2d1"; }
|
489 |
-
.bi-cone-striped::before { content: "\f2d2"; }
|
490 |
-
.bi-cone::before { content: "\f2d3"; }
|
491 |
-
.bi-controller::before { content: "\f2d4"; }
|
492 |
-
.bi-cpu-fill::before { content: "\f2d5"; }
|
493 |
-
.bi-cpu::before { content: "\f2d6"; }
|
494 |
-
.bi-credit-card-2-back-fill::before { content: "\f2d7"; }
|
495 |
-
.bi-credit-card-2-back::before { content: "\f2d8"; }
|
496 |
-
.bi-credit-card-2-front-fill::before { content: "\f2d9"; }
|
497 |
-
.bi-credit-card-2-front::before { content: "\f2da"; }
|
498 |
-
.bi-credit-card-fill::before { content: "\f2db"; }
|
499 |
-
.bi-credit-card::before { content: "\f2dc"; }
|
500 |
-
.bi-crop::before { content: "\f2dd"; }
|
501 |
-
.bi-cup-fill::before { content: "\f2de"; }
|
502 |
-
.bi-cup-straw::before { content: "\f2df"; }
|
503 |
-
.bi-cup::before { content: "\f2e0"; }
|
504 |
-
.bi-cursor-fill::before { content: "\f2e1"; }
|
505 |
-
.bi-cursor-text::before { content: "\f2e2"; }
|
506 |
-
.bi-cursor::before { content: "\f2e3"; }
|
507 |
-
.bi-dash-circle-dotted::before { content: "\f2e4"; }
|
508 |
-
.bi-dash-circle-fill::before { content: "\f2e5"; }
|
509 |
-
.bi-dash-circle::before { content: "\f2e6"; }
|
510 |
-
.bi-dash-square-dotted::before { content: "\f2e7"; }
|
511 |
-
.bi-dash-square-fill::before { content: "\f2e8"; }
|
512 |
-
.bi-dash-square::before { content: "\f2e9"; }
|
513 |
-
.bi-dash::before { content: "\f2ea"; }
|
514 |
-
.bi-diagram-2-fill::before { content: "\f2eb"; }
|
515 |
-
.bi-diagram-2::before { content: "\f2ec"; }
|
516 |
-
.bi-diagram-3-fill::before { content: "\f2ed"; }
|
517 |
-
.bi-diagram-3::before { content: "\f2ee"; }
|
518 |
-
.bi-diamond-fill::before { content: "\f2ef"; }
|
519 |
-
.bi-diamond-half::before { content: "\f2f0"; }
|
520 |
-
.bi-diamond::before { content: "\f2f1"; }
|
521 |
-
.bi-dice-1-fill::before { content: "\f2f2"; }
|
522 |
-
.bi-dice-1::before { content: "\f2f3"; }
|
523 |
-
.bi-dice-2-fill::before { content: "\f2f4"; }
|
524 |
-
.bi-dice-2::before { content: "\f2f5"; }
|
525 |
-
.bi-dice-3-fill::before { content: "\f2f6"; }
|
526 |
-
.bi-dice-3::before { content: "\f2f7"; }
|
527 |
-
.bi-dice-4-fill::before { content: "\f2f8"; }
|
528 |
-
.bi-dice-4::before { content: "\f2f9"; }
|
529 |
-
.bi-dice-5-fill::before { content: "\f2fa"; }
|
530 |
-
.bi-dice-5::before { content: "\f2fb"; }
|
531 |
-
.bi-dice-6-fill::before { content: "\f2fc"; }
|
532 |
-
.bi-dice-6::before { content: "\f2fd"; }
|
533 |
-
.bi-disc-fill::before { content: "\f2fe"; }
|
534 |
-
.bi-disc::before { content: "\f2ff"; }
|
535 |
-
.bi-discord::before { content: "\f300"; }
|
536 |
-
.bi-display-fill::before { content: "\f301"; }
|
537 |
-
.bi-display::before { content: "\f302"; }
|
538 |
-
.bi-distribute-horizontal::before { content: "\f303"; }
|
539 |
-
.bi-distribute-vertical::before { content: "\f304"; }
|
540 |
-
.bi-door-closed-fill::before { content: "\f305"; }
|
541 |
-
.bi-door-closed::before { content: "\f306"; }
|
542 |
-
.bi-door-open-fill::before { content: "\f307"; }
|
543 |
-
.bi-door-open::before { content: "\f308"; }
|
544 |
-
.bi-dot::before { content: "\f309"; }
|
545 |
-
.bi-download::before { content: "\f30a"; }
|
546 |
-
.bi-droplet-fill::before { content: "\f30b"; }
|
547 |
-
.bi-droplet-half::before { content: "\f30c"; }
|
548 |
-
.bi-droplet::before { content: "\f30d"; }
|
549 |
-
.bi-earbuds::before { content: "\f30e"; }
|
550 |
-
.bi-easel-fill::before { content: "\f30f"; }
|
551 |
-
.bi-easel::before { content: "\f310"; }
|
552 |
-
.bi-egg-fill::before { content: "\f311"; }
|
553 |
-
.bi-egg-fried::before { content: "\f312"; }
|
554 |
-
.bi-egg::before { content: "\f313"; }
|
555 |
-
.bi-eject-fill::before { content: "\f314"; }
|
556 |
-
.bi-eject::before { content: "\f315"; }
|
557 |
-
.bi-emoji-angry-fill::before { content: "\f316"; }
|
558 |
-
.bi-emoji-angry::before { content: "\f317"; }
|
559 |
-
.bi-emoji-dizzy-fill::before { content: "\f318"; }
|
560 |
-
.bi-emoji-dizzy::before { content: "\f319"; }
|
561 |
-
.bi-emoji-expressionless-fill::before { content: "\f31a"; }
|
562 |
-
.bi-emoji-expressionless::before { content: "\f31b"; }
|
563 |
-
.bi-emoji-frown-fill::before { content: "\f31c"; }
|
564 |
-
.bi-emoji-frown::before { content: "\f31d"; }
|
565 |
-
.bi-emoji-heart-eyes-fill::before { content: "\f31e"; }
|
566 |
-
.bi-emoji-heart-eyes::before { content: "\f31f"; }
|
567 |
-
.bi-emoji-laughing-fill::before { content: "\f320"; }
|
568 |
-
.bi-emoji-laughing::before { content: "\f321"; }
|
569 |
-
.bi-emoji-neutral-fill::before { content: "\f322"; }
|
570 |
-
.bi-emoji-neutral::before { content: "\f323"; }
|
571 |
-
.bi-emoji-smile-fill::before { content: "\f324"; }
|
572 |
-
.bi-emoji-smile-upside-down-fill::before { content: "\f325"; }
|
573 |
-
.bi-emoji-smile-upside-down::before { content: "\f326"; }
|
574 |
-
.bi-emoji-smile::before { content: "\f327"; }
|
575 |
-
.bi-emoji-sunglasses-fill::before { content: "\f328"; }
|
576 |
-
.bi-emoji-sunglasses::before { content: "\f329"; }
|
577 |
-
.bi-emoji-wink-fill::before { content: "\f32a"; }
|
578 |
-
.bi-emoji-wink::before { content: "\f32b"; }
|
579 |
-
.bi-envelope-fill::before { content: "\f32c"; }
|
580 |
-
.bi-envelope-open-fill::before { content: "\f32d"; }
|
581 |
-
.bi-envelope-open::before { content: "\f32e"; }
|
582 |
-
.bi-envelope::before { content: "\f32f"; }
|
583 |
-
.bi-eraser-fill::before { content: "\f330"; }
|
584 |
-
.bi-eraser::before { content: "\f331"; }
|
585 |
-
.bi-exclamation-circle-fill::before { content: "\f332"; }
|
586 |
-
.bi-exclamation-circle::before { content: "\f333"; }
|
587 |
-
.bi-exclamation-diamond-fill::before { content: "\f334"; }
|
588 |
-
.bi-exclamation-diamond::before { content: "\f335"; }
|
589 |
-
.bi-exclamation-octagon-fill::before { content: "\f336"; }
|
590 |
-
.bi-exclamation-octagon::before { content: "\f337"; }
|
591 |
-
.bi-exclamation-square-fill::before { content: "\f338"; }
|
592 |
-
.bi-exclamation-square::before { content: "\f339"; }
|
593 |
-
.bi-exclamation-triangle-fill::before { content: "\f33a"; }
|
594 |
-
.bi-exclamation-triangle::before { content: "\f33b"; }
|
595 |
-
.bi-exclamation::before { content: "\f33c"; }
|
596 |
-
.bi-exclude::before { content: "\f33d"; }
|
597 |
-
.bi-eye-fill::before { content: "\f33e"; }
|
598 |
-
.bi-eye-slash-fill::before { content: "\f33f"; }
|
599 |
-
.bi-eye-slash::before { content: "\f340"; }
|
600 |
-
.bi-eye::before { content: "\f341"; }
|
601 |
-
.bi-eyedropper::before { content: "\f342"; }
|
602 |
-
.bi-eyeglasses::before { content: "\f343"; }
|
603 |
-
.bi-facebook::before { content: "\f344"; }
|
604 |
-
.bi-file-arrow-down-fill::before { content: "\f345"; }
|
605 |
-
.bi-file-arrow-down::before { content: "\f346"; }
|
606 |
-
.bi-file-arrow-up-fill::before { content: "\f347"; }
|
607 |
-
.bi-file-arrow-up::before { content: "\f348"; }
|
608 |
-
.bi-file-bar-graph-fill::before { content: "\f349"; }
|
609 |
-
.bi-file-bar-graph::before { content: "\f34a"; }
|
610 |
-
.bi-file-binary-fill::before { content: "\f34b"; }
|
611 |
-
.bi-file-binary::before { content: "\f34c"; }
|
612 |
-
.bi-file-break-fill::before { content: "\f34d"; }
|
613 |
-
.bi-file-break::before { content: "\f34e"; }
|
614 |
-
.bi-file-check-fill::before { content: "\f34f"; }
|
615 |
-
.bi-file-check::before { content: "\f350"; }
|
616 |
-
.bi-file-code-fill::before { content: "\f351"; }
|
617 |
-
.bi-file-code::before { content: "\f352"; }
|
618 |
-
.bi-file-diff-fill::before { content: "\f353"; }
|
619 |
-
.bi-file-diff::before { content: "\f354"; }
|
620 |
-
.bi-file-earmark-arrow-down-fill::before { content: "\f355"; }
|
621 |
-
.bi-file-earmark-arrow-down::before { content: "\f356"; }
|
622 |
-
.bi-file-earmark-arrow-up-fill::before { content: "\f357"; }
|
623 |
-
.bi-file-earmark-arrow-up::before { content: "\f358"; }
|
624 |
-
.bi-file-earmark-bar-graph-fill::before { content: "\f359"; }
|
625 |
-
.bi-file-earmark-bar-graph::before { content: "\f35a"; }
|
626 |
-
.bi-file-earmark-binary-fill::before { content: "\f35b"; }
|
627 |
-
.bi-file-earmark-binary::before { content: "\f35c"; }
|
628 |
-
.bi-file-earmark-break-fill::before { content: "\f35d"; }
|
629 |
-
.bi-file-earmark-break::before { content: "\f35e"; }
|
630 |
-
.bi-file-earmark-check-fill::before { content: "\f35f"; }
|
631 |
-
.bi-file-earmark-check::before { content: "\f360"; }
|
632 |
-
.bi-file-earmark-code-fill::before { content: "\f361"; }
|
633 |
-
.bi-file-earmark-code::before { content: "\f362"; }
|
634 |
-
.bi-file-earmark-diff-fill::before { content: "\f363"; }
|
635 |
-
.bi-file-earmark-diff::before { content: "\f364"; }
|
636 |
-
.bi-file-earmark-easel-fill::before { content: "\f365"; }
|
637 |
-
.bi-file-earmark-easel::before { content: "\f366"; }
|
638 |
-
.bi-file-earmark-excel-fill::before { content: "\f367"; }
|
639 |
-
.bi-file-earmark-excel::before { content: "\f368"; }
|
640 |
-
.bi-file-earmark-fill::before { content: "\f369"; }
|
641 |
-
.bi-file-earmark-font-fill::before { content: "\f36a"; }
|
642 |
-
.bi-file-earmark-font::before { content: "\f36b"; }
|
643 |
-
.bi-file-earmark-image-fill::before { content: "\f36c"; }
|
644 |
-
.bi-file-earmark-image::before { content: "\f36d"; }
|
645 |
-
.bi-file-earmark-lock-fill::before { content: "\f36e"; }
|
646 |
-
.bi-file-earmark-lock::before { content: "\f36f"; }
|
647 |
-
.bi-file-earmark-lock2-fill::before { content: "\f370"; }
|
648 |
-
.bi-file-earmark-lock2::before { content: "\f371"; }
|
649 |
-
.bi-file-earmark-medical-fill::before { content: "\f372"; }
|
650 |
-
.bi-file-earmark-medical::before { content: "\f373"; }
|
651 |
-
.bi-file-earmark-minus-fill::before { content: "\f374"; }
|
652 |
-
.bi-file-earmark-minus::before { content: "\f375"; }
|
653 |
-
.bi-file-earmark-music-fill::before { content: "\f376"; }
|
654 |
-
.bi-file-earmark-music::before { content: "\f377"; }
|
655 |
-
.bi-file-earmark-person-fill::before { content: "\f378"; }
|
656 |
-
.bi-file-earmark-person::before { content: "\f379"; }
|
657 |
-
.bi-file-earmark-play-fill::before { content: "\f37a"; }
|
658 |
-
.bi-file-earmark-play::before { content: "\f37b"; }
|
659 |
-
.bi-file-earmark-plus-fill::before { content: "\f37c"; }
|
660 |
-
.bi-file-earmark-plus::before { content: "\f37d"; }
|
661 |
-
.bi-file-earmark-post-fill::before { content: "\f37e"; }
|
662 |
-
.bi-file-earmark-post::before { content: "\f37f"; }
|
663 |
-
.bi-file-earmark-ppt-fill::before { content: "\f380"; }
|
664 |
-
.bi-file-earmark-ppt::before { content: "\f381"; }
|
665 |
-
.bi-file-earmark-richtext-fill::before { content: "\f382"; }
|
666 |
-
.bi-file-earmark-richtext::before { content: "\f383"; }
|
667 |
-
.bi-file-earmark-ruled-fill::before { content: "\f384"; }
|
668 |
-
.bi-file-earmark-ruled::before { content: "\f385"; }
|
669 |
-
.bi-file-earmark-slides-fill::before { content: "\f386"; }
|
670 |
-
.bi-file-earmark-slides::before { content: "\f387"; }
|
671 |
-
.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; }
|
672 |
-
.bi-file-earmark-spreadsheet::before { content: "\f389"; }
|
673 |
-
.bi-file-earmark-text-fill::before { content: "\f38a"; }
|
674 |
-
.bi-file-earmark-text::before { content: "\f38b"; }
|
675 |
-
.bi-file-earmark-word-fill::before { content: "\f38c"; }
|
676 |
-
.bi-file-earmark-word::before { content: "\f38d"; }
|
677 |
-
.bi-file-earmark-x-fill::before { content: "\f38e"; }
|
678 |
-
.bi-file-earmark-x::before { content: "\f38f"; }
|
679 |
-
.bi-file-earmark-zip-fill::before { content: "\f390"; }
|
680 |
-
.bi-file-earmark-zip::before { content: "\f391"; }
|
681 |
-
.bi-file-earmark::before { content: "\f392"; }
|
682 |
-
.bi-file-easel-fill::before { content: "\f393"; }
|
683 |
-
.bi-file-easel::before { content: "\f394"; }
|
684 |
-
.bi-file-excel-fill::before { content: "\f395"; }
|
685 |
-
.bi-file-excel::before { content: "\f396"; }
|
686 |
-
.bi-file-fill::before { content: "\f397"; }
|
687 |
-
.bi-file-font-fill::before { content: "\f398"; }
|
688 |
-
.bi-file-font::before { content: "\f399"; }
|
689 |
-
.bi-file-image-fill::before { content: "\f39a"; }
|
690 |
-
.bi-file-image::before { content: "\f39b"; }
|
691 |
-
.bi-file-lock-fill::before { content: "\f39c"; }
|
692 |
-
.bi-file-lock::before { content: "\f39d"; }
|
693 |
-
.bi-file-lock2-fill::before { content: "\f39e"; }
|
694 |
-
.bi-file-lock2::before { content: "\f39f"; }
|
695 |
-
.bi-file-medical-fill::before { content: "\f3a0"; }
|
696 |
-
.bi-file-medical::before { content: "\f3a1"; }
|
697 |
-
.bi-file-minus-fill::before { content: "\f3a2"; }
|
698 |
-
.bi-file-minus::before { content: "\f3a3"; }
|
699 |
-
.bi-file-music-fill::before { content: "\f3a4"; }
|
700 |
-
.bi-file-music::before { content: "\f3a5"; }
|
701 |
-
.bi-file-person-fill::before { content: "\f3a6"; }
|
702 |
-
.bi-file-person::before { content: "\f3a7"; }
|
703 |
-
.bi-file-play-fill::before { content: "\f3a8"; }
|
704 |
-
.bi-file-play::before { content: "\f3a9"; }
|
705 |
-
.bi-file-plus-fill::before { content: "\f3aa"; }
|
706 |
-
.bi-file-plus::before { content: "\f3ab"; }
|
707 |
-
.bi-file-post-fill::before { content: "\f3ac"; }
|
708 |
-
.bi-file-post::before { content: "\f3ad"; }
|
709 |
-
.bi-file-ppt-fill::before { content: "\f3ae"; }
|
710 |
-
.bi-file-ppt::before { content: "\f3af"; }
|
711 |
-
.bi-file-richtext-fill::before { content: "\f3b0"; }
|
712 |
-
.bi-file-richtext::before { content: "\f3b1"; }
|
713 |
-
.bi-file-ruled-fill::before { content: "\f3b2"; }
|
714 |
-
.bi-file-ruled::before { content: "\f3b3"; }
|
715 |
-
.bi-file-slides-fill::before { content: "\f3b4"; }
|
716 |
-
.bi-file-slides::before { content: "\f3b5"; }
|
717 |
-
.bi-file-spreadsheet-fill::before { content: "\f3b6"; }
|
718 |
-
.bi-file-spreadsheet::before { content: "\f3b7"; }
|
719 |
-
.bi-file-text-fill::before { content: "\f3b8"; }
|
720 |
-
.bi-file-text::before { content: "\f3b9"; }
|
721 |
-
.bi-file-word-fill::before { content: "\f3ba"; }
|
722 |
-
.bi-file-word::before { content: "\f3bb"; }
|
723 |
-
.bi-file-x-fill::before { content: "\f3bc"; }
|
724 |
-
.bi-file-x::before { content: "\f3bd"; }
|
725 |
-
.bi-file-zip-fill::before { content: "\f3be"; }
|
726 |
-
.bi-file-zip::before { content: "\f3bf"; }
|
727 |
-
.bi-file::before { content: "\f3c0"; }
|
728 |
-
.bi-files-alt::before { content: "\f3c1"; }
|
729 |
-
.bi-files::before { content: "\f3c2"; }
|
730 |
-
.bi-film::before { content: "\f3c3"; }
|
731 |
-
.bi-filter-circle-fill::before { content: "\f3c4"; }
|
732 |
-
.bi-filter-circle::before { content: "\f3c5"; }
|
733 |
-
.bi-filter-left::before { content: "\f3c6"; }
|
734 |
-
.bi-filter-right::before { content: "\f3c7"; }
|
735 |
-
.bi-filter-square-fill::before { content: "\f3c8"; }
|
736 |
-
.bi-filter-square::before { content: "\f3c9"; }
|
737 |
-
.bi-filter::before { content: "\f3ca"; }
|
738 |
-
.bi-flag-fill::before { content: "\f3cb"; }
|
739 |
-
.bi-flag::before { content: "\f3cc"; }
|
740 |
-
.bi-flower1::before { content: "\f3cd"; }
|
741 |
-
.bi-flower2::before { content: "\f3ce"; }
|
742 |
-
.bi-flower3::before { content: "\f3cf"; }
|
743 |
-
.bi-folder-check::before { content: "\f3d0"; }
|
744 |
-
.bi-folder-fill::before { content: "\f3d1"; }
|
745 |
-
.bi-folder-minus::before { content: "\f3d2"; }
|
746 |
-
.bi-folder-plus::before { content: "\f3d3"; }
|
747 |
-
.bi-folder-symlink-fill::before { content: "\f3d4"; }
|
748 |
-
.bi-folder-symlink::before { content: "\f3d5"; }
|
749 |
-
.bi-folder-x::before { content: "\f3d6"; }
|
750 |
-
.bi-folder::before { content: "\f3d7"; }
|
751 |
-
.bi-folder2-open::before { content: "\f3d8"; }
|
752 |
-
.bi-folder2::before { content: "\f3d9"; }
|
753 |
-
.bi-fonts::before { content: "\f3da"; }
|
754 |
-
.bi-forward-fill::before { content: "\f3db"; }
|
755 |
-
.bi-forward::before { content: "\f3dc"; }
|
756 |
-
.bi-front::before { content: "\f3dd"; }
|
757 |
-
.bi-fullscreen-exit::before { content: "\f3de"; }
|
758 |
-
.bi-fullscreen::before { content: "\f3df"; }
|
759 |
-
.bi-funnel-fill::before { content: "\f3e0"; }
|
760 |
-
.bi-funnel::before { content: "\f3e1"; }
|
761 |
-
.bi-gear-fill::before { content: "\f3e2"; }
|
762 |
-
.bi-gear-wide-connected::before { content: "\f3e3"; }
|
763 |
-
.bi-gear-wide::before { content: "\f3e4"; }
|
764 |
-
.bi-gear::before { content: "\f3e5"; }
|
765 |
-
.bi-gem::before { content: "\f3e6"; }
|
766 |
-
.bi-geo-alt-fill::before { content: "\f3e7"; }
|
767 |
-
.bi-geo-alt::before { content: "\f3e8"; }
|
768 |
-
.bi-geo-fill::before { content: "\f3e9"; }
|
769 |
-
.bi-geo::before { content: "\f3ea"; }
|
770 |
-
.bi-gift-fill::before { content: "\f3eb"; }
|
771 |
-
.bi-gift::before { content: "\f3ec"; }
|
772 |
-
.bi-github::before { content: "\f3ed"; }
|
773 |
-
.bi-globe::before { content: "\f3ee"; }
|
774 |
-
.bi-globe2::before { content: "\f3ef"; }
|
775 |
-
.bi-google::before { content: "\f3f0"; }
|
776 |
-
.bi-graph-down::before { content: "\f3f1"; }
|
777 |
-
.bi-graph-up::before { content: "\f3f2"; }
|
778 |
-
.bi-grid-1x2-fill::before { content: "\f3f3"; }
|
779 |
-
.bi-grid-1x2::before { content: "\f3f4"; }
|
780 |
-
.bi-grid-3x2-gap-fill::before { content: "\f3f5"; }
|
781 |
-
.bi-grid-3x2-gap::before { content: "\f3f6"; }
|
782 |
-
.bi-grid-3x2::before { content: "\f3f7"; }
|
783 |
-
.bi-grid-3x3-gap-fill::before { content: "\f3f8"; }
|
784 |
-
.bi-grid-3x3-gap::before { content: "\f3f9"; }
|
785 |
-
.bi-grid-3x3::before { content: "\f3fa"; }
|
786 |
-
.bi-grid-fill::before { content: "\f3fb"; }
|
787 |
-
.bi-grid::before { content: "\f3fc"; }
|
788 |
-
.bi-grip-horizontal::before { content: "\f3fd"; }
|
789 |
-
.bi-grip-vertical::before { content: "\f3fe"; }
|
790 |
-
.bi-hammer::before { content: "\f3ff"; }
|
791 |
-
.bi-hand-index-fill::before { content: "\f400"; }
|
792 |
-
.bi-hand-index-thumb-fill::before { content: "\f401"; }
|
793 |
-
.bi-hand-index-thumb::before { content: "\f402"; }
|
794 |
-
.bi-hand-index::before { content: "\f403"; }
|
795 |
-
.bi-hand-thumbs-down-fill::before { content: "\f404"; }
|
796 |
-
.bi-hand-thumbs-down::before { content: "\f405"; }
|
797 |
-
.bi-hand-thumbs-up-fill::before { content: "\f406"; }
|
798 |
-
.bi-hand-thumbs-up::before { content: "\f407"; }
|
799 |
-
.bi-handbag-fill::before { content: "\f408"; }
|
800 |
-
.bi-handbag::before { content: "\f409"; }
|
801 |
-
.bi-hash::before { content: "\f40a"; }
|
802 |
-
.bi-hdd-fill::before { content: "\f40b"; }
|
803 |
-
.bi-hdd-network-fill::before { content: "\f40c"; }
|
804 |
-
.bi-hdd-network::before { content: "\f40d"; }
|
805 |
-
.bi-hdd-rack-fill::before { content: "\f40e"; }
|
806 |
-
.bi-hdd-rack::before { content: "\f40f"; }
|
807 |
-
.bi-hdd-stack-fill::before { content: "\f410"; }
|
808 |
-
.bi-hdd-stack::before { content: "\f411"; }
|
809 |
-
.bi-hdd::before { content: "\f412"; }
|
810 |
-
.bi-headphones::before { content: "\f413"; }
|
811 |
-
.bi-headset::before { content: "\f414"; }
|
812 |
-
.bi-heart-fill::before { content: "\f415"; }
|
813 |
-
.bi-heart-half::before { content: "\f416"; }
|
814 |
-
.bi-heart::before { content: "\f417"; }
|
815 |
-
.bi-heptagon-fill::before { content: "\f418"; }
|
816 |
-
.bi-heptagon-half::before { content: "\f419"; }
|
817 |
-
.bi-heptagon::before { content: "\f41a"; }
|
818 |
-
.bi-hexagon-fill::before { content: "\f41b"; }
|
819 |
-
.bi-hexagon-half::before { content: "\f41c"; }
|
820 |
-
.bi-hexagon::before { content: "\f41d"; }
|
821 |
-
.bi-hourglass-bottom::before { content: "\f41e"; }
|
822 |
-
.bi-hourglass-split::before { content: "\f41f"; }
|
823 |
-
.bi-hourglass-top::before { content: "\f420"; }
|
824 |
-
.bi-hourglass::before { content: "\f421"; }
|
825 |
-
.bi-house-door-fill::before { content: "\f422"; }
|
826 |
-
.bi-house-door::before { content: "\f423"; }
|
827 |
-
.bi-house-fill::before { content: "\f424"; }
|
828 |
-
.bi-house::before { content: "\f425"; }
|
829 |
-
.bi-hr::before { content: "\f426"; }
|
830 |
-
.bi-hurricane::before { content: "\f427"; }
|
831 |
-
.bi-image-alt::before { content: "\f428"; }
|
832 |
-
.bi-image-fill::before { content: "\f429"; }
|
833 |
-
.bi-image::before { content: "\f42a"; }
|
834 |
-
.bi-images::before { content: "\f42b"; }
|
835 |
-
.bi-inbox-fill::before { content: "\f42c"; }
|
836 |
-
.bi-inbox::before { content: "\f42d"; }
|
837 |
-
.bi-inboxes-fill::before { content: "\f42e"; }
|
838 |
-
.bi-inboxes::before { content: "\f42f"; }
|
839 |
-
.bi-info-circle-fill::before { content: "\f430"; }
|
840 |
-
.bi-info-circle::before { content: "\f431"; }
|
841 |
-
.bi-info-square-fill::before { content: "\f432"; }
|
842 |
-
.bi-info-square::before { content: "\f433"; }
|
843 |
-
.bi-info::before { content: "\f434"; }
|
844 |
-
.bi-input-cursor-text::before { content: "\f435"; }
|
845 |
-
.bi-input-cursor::before { content: "\f436"; }
|
846 |
-
.bi-instagram::before { content: "\f437"; }
|
847 |
-
.bi-intersect::before { content: "\f438"; }
|
848 |
-
.bi-journal-album::before { content: "\f439"; }
|
849 |
-
.bi-journal-arrow-down::before { content: "\f43a"; }
|
850 |
-
.bi-journal-arrow-up::before { content: "\f43b"; }
|
851 |
-
.bi-journal-bookmark-fill::before { content: "\f43c"; }
|
852 |
-
.bi-journal-bookmark::before { content: "\f43d"; }
|
853 |
-
.bi-journal-check::before { content: "\f43e"; }
|
854 |
-
.bi-journal-code::before { content: "\f43f"; }
|
855 |
-
.bi-journal-medical::before { content: "\f440"; }
|
856 |
-
.bi-journal-minus::before { content: "\f441"; }
|
857 |
-
.bi-journal-plus::before { content: "\f442"; }
|
858 |
-
.bi-journal-richtext::before { content: "\f443"; }
|
859 |
-
.bi-journal-text::before { content: "\f444"; }
|
860 |
-
.bi-journal-x::before { content: "\f445"; }
|
861 |
-
.bi-journal::before { content: "\f446"; }
|
862 |
-
.bi-journals::before { content: "\f447"; }
|
863 |
-
.bi-joystick::before { content: "\f448"; }
|
864 |
-
.bi-justify-left::before { content: "\f449"; }
|
865 |
-
.bi-justify-right::before { content: "\f44a"; }
|
866 |
-
.bi-justify::before { content: "\f44b"; }
|
867 |
-
.bi-kanban-fill::before { content: "\f44c"; }
|
868 |
-
.bi-kanban::before { content: "\f44d"; }
|
869 |
-
.bi-key-fill::before { content: "\f44e"; }
|
870 |
-
.bi-key::before { content: "\f44f"; }
|
871 |
-
.bi-keyboard-fill::before { content: "\f450"; }
|
872 |
-
.bi-keyboard::before { content: "\f451"; }
|
873 |
-
.bi-ladder::before { content: "\f452"; }
|
874 |
-
.bi-lamp-fill::before { content: "\f453"; }
|
875 |
-
.bi-lamp::before { content: "\f454"; }
|
876 |
-
.bi-laptop-fill::before { content: "\f455"; }
|
877 |
-
.bi-laptop::before { content: "\f456"; }
|
878 |
-
.bi-layer-backward::before { content: "\f457"; }
|
879 |
-
.bi-layer-forward::before { content: "\f458"; }
|
880 |
-
.bi-layers-fill::before { content: "\f459"; }
|
881 |
-
.bi-layers-half::before { content: "\f45a"; }
|
882 |
-
.bi-layers::before { content: "\f45b"; }
|
883 |
-
.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; }
|
884 |
-
.bi-layout-sidebar-inset::before { content: "\f45d"; }
|
885 |
-
.bi-layout-sidebar-reverse::before { content: "\f45e"; }
|
886 |
-
.bi-layout-sidebar::before { content: "\f45f"; }
|
887 |
-
.bi-layout-split::before { content: "\f460"; }
|
888 |
-
.bi-layout-text-sidebar-reverse::before { content: "\f461"; }
|
889 |
-
.bi-layout-text-sidebar::before { content: "\f462"; }
|
890 |
-
.bi-layout-text-window-reverse::before { content: "\f463"; }
|
891 |
-
.bi-layout-text-window::before { content: "\f464"; }
|
892 |
-
.bi-layout-three-columns::before { content: "\f465"; }
|
893 |
-
.bi-layout-wtf::before { content: "\f466"; }
|
894 |
-
.bi-life-preserver::before { content: "\f467"; }
|
895 |
-
.bi-lightbulb-fill::before { content: "\f468"; }
|
896 |
-
.bi-lightbulb-off-fill::before { content: "\f469"; }
|
897 |
-
.bi-lightbulb-off::before { content: "\f46a"; }
|
898 |
-
.bi-lightbulb::before { content: "\f46b"; }
|
899 |
-
.bi-lightning-charge-fill::before { content: "\f46c"; }
|
900 |
-
.bi-lightning-charge::before { content: "\f46d"; }
|
901 |
-
.bi-lightning-fill::before { content: "\f46e"; }
|
902 |
-
.bi-lightning::before { content: "\f46f"; }
|
903 |
-
.bi-link-45deg::before { content: "\f470"; }
|
904 |
-
.bi-link::before { content: "\f471"; }
|
905 |
-
.bi-linkedin::before { content: "\f472"; }
|
906 |
-
.bi-list-check::before { content: "\f473"; }
|
907 |
-
.bi-list-nested::before { content: "\f474"; }
|
908 |
-
.bi-list-ol::before { content: "\f475"; }
|
909 |
-
.bi-list-stars::before { content: "\f476"; }
|
910 |
-
.bi-list-task::before { content: "\f477"; }
|
911 |
-
.bi-list-ul::before { content: "\f478"; }
|
912 |
-
.bi-list::before { content: "\f479"; }
|
913 |
-
.bi-lock-fill::before { content: "\f47a"; }
|
914 |
-
.bi-lock::before { content: "\f47b"; }
|
915 |
-
.bi-mailbox::before { content: "\f47c"; }
|
916 |
-
.bi-mailbox2::before { content: "\f47d"; }
|
917 |
-
.bi-map-fill::before { content: "\f47e"; }
|
918 |
-
.bi-map::before { content: "\f47f"; }
|
919 |
-
.bi-markdown-fill::before { content: "\f480"; }
|
920 |
-
.bi-markdown::before { content: "\f481"; }
|
921 |
-
.bi-mask::before { content: "\f482"; }
|
922 |
-
.bi-megaphone-fill::before { content: "\f483"; }
|
923 |
-
.bi-megaphone::before { content: "\f484"; }
|
924 |
-
.bi-menu-app-fill::before { content: "\f485"; }
|
925 |
-
.bi-menu-app::before { content: "\f486"; }
|
926 |
-
.bi-menu-button-fill::before { content: "\f487"; }
|
927 |
-
.bi-menu-button-wide-fill::before { content: "\f488"; }
|
928 |
-
.bi-menu-button-wide::before { content: "\f489"; }
|
929 |
-
.bi-menu-button::before { content: "\f48a"; }
|
930 |
-
.bi-menu-down::before { content: "\f48b"; }
|
931 |
-
.bi-menu-up::before { content: "\f48c"; }
|
932 |
-
.bi-mic-fill::before { content: "\f48d"; }
|
933 |
-
.bi-mic-mute-fill::before { content: "\f48e"; }
|
934 |
-
.bi-mic-mute::before { content: "\f48f"; }
|
935 |
-
.bi-mic::before { content: "\f490"; }
|
936 |
-
.bi-minecart-loaded::before { content: "\f491"; }
|
937 |
-
.bi-minecart::before { content: "\f492"; }
|
938 |
-
.bi-moisture::before { content: "\f493"; }
|
939 |
-
.bi-moon-fill::before { content: "\f494"; }
|
940 |
-
.bi-moon-stars-fill::before { content: "\f495"; }
|
941 |
-
.bi-moon-stars::before { content: "\f496"; }
|
942 |
-
.bi-moon::before { content: "\f497"; }
|
943 |
-
.bi-mouse-fill::before { content: "\f498"; }
|
944 |
-
.bi-mouse::before { content: "\f499"; }
|
945 |
-
.bi-mouse2-fill::before { content: "\f49a"; }
|
946 |
-
.bi-mouse2::before { content: "\f49b"; }
|
947 |
-
.bi-mouse3-fill::before { content: "\f49c"; }
|
948 |
-
.bi-mouse3::before { content: "\f49d"; }
|
949 |
-
.bi-music-note-beamed::before { content: "\f49e"; }
|
950 |
-
.bi-music-note-list::before { content: "\f49f"; }
|
951 |
-
.bi-music-note::before { content: "\f4a0"; }
|
952 |
-
.bi-music-player-fill::before { content: "\f4a1"; }
|
953 |
-
.bi-music-player::before { content: "\f4a2"; }
|
954 |
-
.bi-newspaper::before { content: "\f4a3"; }
|
955 |
-
.bi-node-minus-fill::before { content: "\f4a4"; }
|
956 |
-
.bi-node-minus::before { content: "\f4a5"; }
|
957 |
-
.bi-node-plus-fill::before { content: "\f4a6"; }
|
958 |
-
.bi-node-plus::before { content: "\f4a7"; }
|
959 |
-
.bi-nut-fill::before { content: "\f4a8"; }
|
960 |
-
.bi-nut::before { content: "\f4a9"; }
|
961 |
-
.bi-octagon-fill::before { content: "\f4aa"; }
|
962 |
-
.bi-octagon-half::before { content: "\f4ab"; }
|
963 |
-
.bi-octagon::before { content: "\f4ac"; }
|
964 |
-
.bi-option::before { content: "\f4ad"; }
|
965 |
-
.bi-outlet::before { content: "\f4ae"; }
|
966 |
-
.bi-paint-bucket::before { content: "\f4af"; }
|
967 |
-
.bi-palette-fill::before { content: "\f4b0"; }
|
968 |
-
.bi-palette::before { content: "\f4b1"; }
|
969 |
-
.bi-palette2::before { content: "\f4b2"; }
|
970 |
-
.bi-paperclip::before { content: "\f4b3"; }
|
971 |
-
.bi-paragraph::before { content: "\f4b4"; }
|
972 |
-
.bi-patch-check-fill::before { content: "\f4b5"; }
|
973 |
-
.bi-patch-check::before { content: "\f4b6"; }
|
974 |
-
.bi-patch-exclamation-fill::before { content: "\f4b7"; }
|
975 |
-
.bi-patch-exclamation::before { content: "\f4b8"; }
|
976 |
-
.bi-patch-minus-fill::before { content: "\f4b9"; }
|
977 |
-
.bi-patch-minus::before { content: "\f4ba"; }
|
978 |
-
.bi-patch-plus-fill::before { content: "\f4bb"; }
|
979 |
-
.bi-patch-plus::before { content: "\f4bc"; }
|
980 |
-
.bi-patch-question-fill::before { content: "\f4bd"; }
|
981 |
-
.bi-patch-question::before { content: "\f4be"; }
|
982 |
-
.bi-pause-btn-fill::before { content: "\f4bf"; }
|
983 |
-
.bi-pause-btn::before { content: "\f4c0"; }
|
984 |
-
.bi-pause-circle-fill::before { content: "\f4c1"; }
|
985 |
-
.bi-pause-circle::before { content: "\f4c2"; }
|
986 |
-
.bi-pause-fill::before { content: "\f4c3"; }
|
987 |
-
.bi-pause::before { content: "\f4c4"; }
|
988 |
-
.bi-peace-fill::before { content: "\f4c5"; }
|
989 |
-
.bi-peace::before { content: "\f4c6"; }
|
990 |
-
.bi-pen-fill::before { content: "\f4c7"; }
|
991 |
-
.bi-pen::before { content: "\f4c8"; }
|
992 |
-
.bi-pencil-fill::before { content: "\f4c9"; }
|
993 |
-
.bi-pencil-square::before { content: "\f4ca"; }
|
994 |
-
.bi-pencil::before { content: "\f4cb"; }
|
995 |
-
.bi-pentagon-fill::before { content: "\f4cc"; }
|
996 |
-
.bi-pentagon-half::before { content: "\f4cd"; }
|
997 |
-
.bi-pentagon::before { content: "\f4ce"; }
|
998 |
-
.bi-people-fill::before { content: "\f4cf"; }
|
999 |
-
.bi-people::before { content: "\f4d0"; }
|
1000 |
-
.bi-percent::before { content: "\f4d1"; }
|
1001 |
-
.bi-person-badge-fill::before { content: "\f4d2"; }
|
1002 |
-
.bi-person-badge::before { content: "\f4d3"; }
|
1003 |
-
.bi-person-bounding-box::before { content: "\f4d4"; }
|
1004 |
-
.bi-person-check-fill::before { content: "\f4d5"; }
|
1005 |
-
.bi-person-check::before { content: "\f4d6"; }
|
1006 |
-
.bi-person-circle::before { content: "\f4d7"; }
|
1007 |
-
.bi-person-dash-fill::before { content: "\f4d8"; }
|
1008 |
-
.bi-person-dash::before { content: "\f4d9"; }
|
1009 |
-
.bi-person-fill::before { content: "\f4da"; }
|
1010 |
-
.bi-person-lines-fill::before { content: "\f4db"; }
|
1011 |
-
.bi-person-plus-fill::before { content: "\f4dc"; }
|
1012 |
-
.bi-person-plus::before { content: "\f4dd"; }
|
1013 |
-
.bi-person-square::before { content: "\f4de"; }
|
1014 |
-
.bi-person-x-fill::before { content: "\f4df"; }
|
1015 |
-
.bi-person-x::before { content: "\f4e0"; }
|
1016 |
-
.bi-person::before { content: "\f4e1"; }
|
1017 |
-
.bi-phone-fill::before { content: "\f4e2"; }
|
1018 |
-
.bi-phone-landscape-fill::before { content: "\f4e3"; }
|
1019 |
-
.bi-phone-landscape::before { content: "\f4e4"; }
|
1020 |
-
.bi-phone-vibrate-fill::before { content: "\f4e5"; }
|
1021 |
-
.bi-phone-vibrate::before { content: "\f4e6"; }
|
1022 |
-
.bi-phone::before { content: "\f4e7"; }
|
1023 |
-
.bi-pie-chart-fill::before { content: "\f4e8"; }
|
1024 |
-
.bi-pie-chart::before { content: "\f4e9"; }
|
1025 |
-
.bi-pin-angle-fill::before { content: "\f4ea"; }
|
1026 |
-
.bi-pin-angle::before { content: "\f4eb"; }
|
1027 |
-
.bi-pin-fill::before { content: "\f4ec"; }
|
1028 |
-
.bi-pin::before { content: "\f4ed"; }
|
1029 |
-
.bi-pip-fill::before { content: "\f4ee"; }
|
1030 |
-
.bi-pip::before { content: "\f4ef"; }
|
1031 |
-
.bi-play-btn-fill::before { content: "\f4f0"; }
|
1032 |
-
.bi-play-btn::before { content: "\f4f1"; }
|
1033 |
-
.bi-play-circle-fill::before { content: "\f4f2"; }
|
1034 |
-
.bi-play-circle::before { content: "\f4f3"; }
|
1035 |
-
.bi-play-fill::before { content: "\f4f4"; }
|
1036 |
-
.bi-play::before { content: "\f4f5"; }
|
1037 |
-
.bi-plug-fill::before { content: "\f4f6"; }
|
1038 |
-
.bi-plug::before { content: "\f4f7"; }
|
1039 |
-
.bi-plus-circle-dotted::before { content: "\f4f8"; }
|
1040 |
-
.bi-plus-circle-fill::before { content: "\f4f9"; }
|
1041 |
-
.bi-plus-circle::before { content: "\f4fa"; }
|
1042 |
-
.bi-plus-square-dotted::before { content: "\f4fb"; }
|
1043 |
-
.bi-plus-square-fill::before { content: "\f4fc"; }
|
1044 |
-
.bi-plus-square::before { content: "\f4fd"; }
|
1045 |
-
.bi-plus::before { content: "\f4fe"; }
|
1046 |
-
.bi-power::before { content: "\f4ff"; }
|
1047 |
-
.bi-printer-fill::before { content: "\f500"; }
|
1048 |
-
.bi-printer::before { content: "\f501"; }
|
1049 |
-
.bi-puzzle-fill::before { content: "\f502"; }
|
1050 |
-
.bi-puzzle::before { content: "\f503"; }
|
1051 |
-
.bi-question-circle-fill::before { content: "\f504"; }
|
1052 |
-
.bi-question-circle::before { content: "\f505"; }
|
1053 |
-
.bi-question-diamond-fill::before { content: "\f506"; }
|
1054 |
-
.bi-question-diamond::before { content: "\f507"; }
|
1055 |
-
.bi-question-octagon-fill::before { content: "\f508"; }
|
1056 |
-
.bi-question-octagon::before { content: "\f509"; }
|
1057 |
-
.bi-question-square-fill::before { content: "\f50a"; }
|
1058 |
-
.bi-question-square::before { content: "\f50b"; }
|
1059 |
-
.bi-question::before { content: "\f50c"; }
|
1060 |
-
.bi-rainbow::before { content: "\f50d"; }
|
1061 |
-
.bi-receipt-cutoff::before { content: "\f50e"; }
|
1062 |
-
.bi-receipt::before { content: "\f50f"; }
|
1063 |
-
.bi-reception-0::before { content: "\f510"; }
|
1064 |
-
.bi-reception-1::before { content: "\f511"; }
|
1065 |
-
.bi-reception-2::before { content: "\f512"; }
|
1066 |
-
.bi-reception-3::before { content: "\f513"; }
|
1067 |
-
.bi-reception-4::before { content: "\f514"; }
|
1068 |
-
.bi-record-btn-fill::before { content: "\f515"; }
|
1069 |
-
.bi-record-btn::before { content: "\f516"; }
|
1070 |
-
.bi-record-circle-fill::before { content: "\f517"; }
|
1071 |
-
.bi-record-circle::before { content: "\f518"; }
|
1072 |
-
.bi-record-fill::before { content: "\f519"; }
|
1073 |
-
.bi-record::before { content: "\f51a"; }
|
1074 |
-
.bi-record2-fill::before { content: "\f51b"; }
|
1075 |
-
.bi-record2::before { content: "\f51c"; }
|
1076 |
-
.bi-reply-all-fill::before { content: "\f51d"; }
|
1077 |
-
.bi-reply-all::before { content: "\f51e"; }
|
1078 |
-
.bi-reply-fill::before { content: "\f51f"; }
|
1079 |
-
.bi-reply::before { content: "\f520"; }
|
1080 |
-
.bi-rss-fill::before { content: "\f521"; }
|
1081 |
-
.bi-rss::before { content: "\f522"; }
|
1082 |
-
.bi-rulers::before { content: "\f523"; }
|
1083 |
-
.bi-save-fill::before { content: "\f524"; }
|
1084 |
-
.bi-save::before { content: "\f525"; }
|
1085 |
-
.bi-save2-fill::before { content: "\f526"; }
|
1086 |
-
.bi-save2::before { content: "\f527"; }
|
1087 |
-
.bi-scissors::before { content: "\f528"; }
|
1088 |
-
.bi-screwdriver::before { content: "\f529"; }
|
1089 |
-
.bi-search::before { content: "\f52a"; }
|
1090 |
-
.bi-segmented-nav::before { content: "\f52b"; }
|
1091 |
-
.bi-server::before { content: "\f52c"; }
|
1092 |
-
.bi-share-fill::before { content: "\f52d"; }
|
1093 |
-
.bi-share::before { content: "\f52e"; }
|
1094 |
-
.bi-shield-check::before { content: "\f52f"; }
|
1095 |
-
.bi-shield-exclamation::before { content: "\f530"; }
|
1096 |
-
.bi-shield-fill-check::before { content: "\f531"; }
|
1097 |
-
.bi-shield-fill-exclamation::before { content: "\f532"; }
|
1098 |
-
.bi-shield-fill-minus::before { content: "\f533"; }
|
1099 |
-
.bi-shield-fill-plus::before { content: "\f534"; }
|
1100 |
-
.bi-shield-fill-x::before { content: "\f535"; }
|
1101 |
-
.bi-shield-fill::before { content: "\f536"; }
|
1102 |
-
.bi-shield-lock-fill::before { content: "\f537"; }
|
1103 |
-
.bi-shield-lock::before { content: "\f538"; }
|
1104 |
-
.bi-shield-minus::before { content: "\f539"; }
|
1105 |
-
.bi-shield-plus::before { content: "\f53a"; }
|
1106 |
-
.bi-shield-shaded::before { content: "\f53b"; }
|
1107 |
-
.bi-shield-slash-fill::before { content: "\f53c"; }
|
1108 |
-
.bi-shield-slash::before { content: "\f53d"; }
|
1109 |
-
.bi-shield-x::before { content: "\f53e"; }
|
1110 |
-
.bi-shield::before { content: "\f53f"; }
|
1111 |
-
.bi-shift-fill::before { content: "\f540"; }
|
1112 |
-
.bi-shift::before { content: "\f541"; }
|
1113 |
-
.bi-shop-window::before { content: "\f542"; }
|
1114 |
-
.bi-shop::before { content: "\f543"; }
|
1115 |
-
.bi-shuffle::before { content: "\f544"; }
|
1116 |
-
.bi-signpost-2-fill::before { content: "\f545"; }
|
1117 |
-
.bi-signpost-2::before { content: "\f546"; }
|
1118 |
-
.bi-signpost-fill::before { content: "\f547"; }
|
1119 |
-
.bi-signpost-split-fill::before { content: "\f548"; }
|
1120 |
-
.bi-signpost-split::before { content: "\f549"; }
|
1121 |
-
.bi-signpost::before { content: "\f54a"; }
|
1122 |
-
.bi-sim-fill::before { content: "\f54b"; }
|
1123 |
-
.bi-sim::before { content: "\f54c"; }
|
1124 |
-
.bi-skip-backward-btn-fill::before { content: "\f54d"; }
|
1125 |
-
.bi-skip-backward-btn::before { content: "\f54e"; }
|
1126 |
-
.bi-skip-backward-circle-fill::before { content: "\f54f"; }
|
1127 |
-
.bi-skip-backward-circle::before { content: "\f550"; }
|
1128 |
-
.bi-skip-backward-fill::before { content: "\f551"; }
|
1129 |
-
.bi-skip-backward::before { content: "\f552"; }
|
1130 |
-
.bi-skip-end-btn-fill::before { content: "\f553"; }
|
1131 |
-
.bi-skip-end-btn::before { content: "\f554"; }
|
1132 |
-
.bi-skip-end-circle-fill::before { content: "\f555"; }
|
1133 |
-
.bi-skip-end-circle::before { content: "\f556"; }
|
1134 |
-
.bi-skip-end-fill::before { content: "\f557"; }
|
1135 |
-
.bi-skip-end::before { content: "\f558"; }
|
1136 |
-
.bi-skip-forward-btn-fill::before { content: "\f559"; }
|
1137 |
-
.bi-skip-forward-btn::before { content: "\f55a"; }
|
1138 |
-
.bi-skip-forward-circle-fill::before { content: "\f55b"; }
|
1139 |
-
.bi-skip-forward-circle::before { content: "\f55c"; }
|
1140 |
-
.bi-skip-forward-fill::before { content: "\f55d"; }
|
1141 |
-
.bi-skip-forward::before { content: "\f55e"; }
|
1142 |
-
.bi-skip-start-btn-fill::before { content: "\f55f"; }
|
1143 |
-
.bi-skip-start-btn::before { content: "\f560"; }
|
1144 |
-
.bi-skip-start-circle-fill::before { content: "\f561"; }
|
1145 |
-
.bi-skip-start-circle::before { content: "\f562"; }
|
1146 |
-
.bi-skip-start-fill::before { content: "\f563"; }
|
1147 |
-
.bi-skip-start::before { content: "\f564"; }
|
1148 |
-
.bi-slack::before { content: "\f565"; }
|
1149 |
-
.bi-slash-circle-fill::before { content: "\f566"; }
|
1150 |
-
.bi-slash-circle::before { content: "\f567"; }
|
1151 |
-
.bi-slash-square-fill::before { content: "\f568"; }
|
1152 |
-
.bi-slash-square::before { content: "\f569"; }
|
1153 |
-
.bi-slash::before { content: "\f56a"; }
|
1154 |
-
.bi-sliders::before { content: "\f56b"; }
|
1155 |
-
.bi-smartwatch::before { content: "\f56c"; }
|
1156 |
-
.bi-snow::before { content: "\f56d"; }
|
1157 |
-
.bi-snow2::before { content: "\f56e"; }
|
1158 |
-
.bi-snow3::before { content: "\f56f"; }
|
1159 |
-
.bi-sort-alpha-down-alt::before { content: "\f570"; }
|
1160 |
-
.bi-sort-alpha-down::before { content: "\f571"; }
|
1161 |
-
.bi-sort-alpha-up-alt::before { content: "\f572"; }
|
1162 |
-
.bi-sort-alpha-up::before { content: "\f573"; }
|
1163 |
-
.bi-sort-down-alt::before { content: "\f574"; }
|
1164 |
-
.bi-sort-down::before { content: "\f575"; }
|
1165 |
-
.bi-sort-numeric-down-alt::before { content: "\f576"; }
|
1166 |
-
.bi-sort-numeric-down::before { content: "\f577"; }
|
1167 |
-
.bi-sort-numeric-up-alt::before { content: "\f578"; }
|
1168 |
-
.bi-sort-numeric-up::before { content: "\f579"; }
|
1169 |
-
.bi-sort-up-alt::before { content: "\f57a"; }
|
1170 |
-
.bi-sort-up::before { content: "\f57b"; }
|
1171 |
-
.bi-soundwave::before { content: "\f57c"; }
|
1172 |
-
.bi-speaker-fill::before { content: "\f57d"; }
|
1173 |
-
.bi-speaker::before { content: "\f57e"; }
|
1174 |
-
.bi-speedometer::before { content: "\f57f"; }
|
1175 |
-
.bi-speedometer2::before { content: "\f580"; }
|
1176 |
-
.bi-spellcheck::before { content: "\f581"; }
|
1177 |
-
.bi-square-fill::before { content: "\f582"; }
|
1178 |
-
.bi-square-half::before { content: "\f583"; }
|
1179 |
-
.bi-square::before { content: "\f584"; }
|
1180 |
-
.bi-stack::before { content: "\f585"; }
|
1181 |
-
.bi-star-fill::before { content: "\f586"; }
|
1182 |
-
.bi-star-half::before { content: "\f587"; }
|
1183 |
-
.bi-star::before { content: "\f588"; }
|
1184 |
-
.bi-stars::before { content: "\f589"; }
|
1185 |
-
.bi-stickies-fill::before { content: "\f58a"; }
|
1186 |
-
.bi-stickies::before { content: "\f58b"; }
|
1187 |
-
.bi-sticky-fill::before { content: "\f58c"; }
|
1188 |
-
.bi-sticky::before { content: "\f58d"; }
|
1189 |
-
.bi-stop-btn-fill::before { content: "\f58e"; }
|
1190 |
-
.bi-stop-btn::before { content: "\f58f"; }
|
1191 |
-
.bi-stop-circle-fill::before { content: "\f590"; }
|
1192 |
-
.bi-stop-circle::before { content: "\f591"; }
|
1193 |
-
.bi-stop-fill::before { content: "\f592"; }
|
1194 |
-
.bi-stop::before { content: "\f593"; }
|
1195 |
-
.bi-stoplights-fill::before { content: "\f594"; }
|
1196 |
-
.bi-stoplights::before { content: "\f595"; }
|
1197 |
-
.bi-stopwatch-fill::before { content: "\f596"; }
|
1198 |
-
.bi-stopwatch::before { content: "\f597"; }
|
1199 |
-
.bi-subtract::before { content: "\f598"; }
|
1200 |
-
.bi-suit-club-fill::before { content: "\f599"; }
|
1201 |
-
.bi-suit-club::before { content: "\f59a"; }
|
1202 |
-
.bi-suit-diamond-fill::before { content: "\f59b"; }
|
1203 |
-
.bi-suit-diamond::before { content: "\f59c"; }
|
1204 |
-
.bi-suit-heart-fill::before { content: "\f59d"; }
|
1205 |
-
.bi-suit-heart::before { content: "\f59e"; }
|
1206 |
-
.bi-suit-spade-fill::before { content: "\f59f"; }
|
1207 |
-
.bi-suit-spade::before { content: "\f5a0"; }
|
1208 |
-
.bi-sun-fill::before { content: "\f5a1"; }
|
1209 |
-
.bi-sun::before { content: "\f5a2"; }
|
1210 |
-
.bi-sunglasses::before { content: "\f5a3"; }
|
1211 |
-
.bi-sunrise-fill::before { content: "\f5a4"; }
|
1212 |
-
.bi-sunrise::before { content: "\f5a5"; }
|
1213 |
-
.bi-sunset-fill::before { content: "\f5a6"; }
|
1214 |
-
.bi-sunset::before { content: "\f5a7"; }
|
1215 |
-
.bi-symmetry-horizontal::before { content: "\f5a8"; }
|
1216 |
-
.bi-symmetry-vertical::before { content: "\f5a9"; }
|
1217 |
-
.bi-table::before { content: "\f5aa"; }
|
1218 |
-
.bi-tablet-fill::before { content: "\f5ab"; }
|
1219 |
-
.bi-tablet-landscape-fill::before { content: "\f5ac"; }
|
1220 |
-
.bi-tablet-landscape::before { content: "\f5ad"; }
|
1221 |
-
.bi-tablet::before { content: "\f5ae"; }
|
1222 |
-
.bi-tag-fill::before { content: "\f5af"; }
|
1223 |
-
.bi-tag::before { content: "\f5b0"; }
|
1224 |
-
.bi-tags-fill::before { content: "\f5b1"; }
|
1225 |
-
.bi-tags::before { content: "\f5b2"; }
|
1226 |
-
.bi-telegram::before { content: "\f5b3"; }
|
1227 |
-
.bi-telephone-fill::before { content: "\f5b4"; }
|
1228 |
-
.bi-telephone-forward-fill::before { content: "\f5b5"; }
|
1229 |
-
.bi-telephone-forward::before { content: "\f5b6"; }
|
1230 |
-
.bi-telephone-inbound-fill::before { content: "\f5b7"; }
|
1231 |
-
.bi-telephone-inbound::before { content: "\f5b8"; }
|
1232 |
-
.bi-telephone-minus-fill::before { content: "\f5b9"; }
|
1233 |
-
.bi-telephone-minus::before { content: "\f5ba"; }
|
1234 |
-
.bi-telephone-outbound-fill::before { content: "\f5bb"; }
|
1235 |
-
.bi-telephone-outbound::before { content: "\f5bc"; }
|
1236 |
-
.bi-telephone-plus-fill::before { content: "\f5bd"; }
|
1237 |
-
.bi-telephone-plus::before { content: "\f5be"; }
|
1238 |
-
.bi-telephone-x-fill::before { content: "\f5bf"; }
|
1239 |
-
.bi-telephone-x::before { content: "\f5c0"; }
|
1240 |
-
.bi-telephone::before { content: "\f5c1"; }
|
1241 |
-
.bi-terminal-fill::before { content: "\f5c2"; }
|
1242 |
-
.bi-terminal::before { content: "\f5c3"; }
|
1243 |
-
.bi-text-center::before { content: "\f5c4"; }
|
1244 |
-
.bi-text-indent-left::before { content: "\f5c5"; }
|
1245 |
-
.bi-text-indent-right::before { content: "\f5c6"; }
|
1246 |
-
.bi-text-left::before { content: "\f5c7"; }
|
1247 |
-
.bi-text-paragraph::before { content: "\f5c8"; }
|
1248 |
-
.bi-text-right::before { content: "\f5c9"; }
|
1249 |
-
.bi-textarea-resize::before { content: "\f5ca"; }
|
1250 |
-
.bi-textarea-t::before { content: "\f5cb"; }
|
1251 |
-
.bi-textarea::before { content: "\f5cc"; }
|
1252 |
-
.bi-thermometer-half::before { content: "\f5cd"; }
|
1253 |
-
.bi-thermometer-high::before { content: "\f5ce"; }
|
1254 |
-
.bi-thermometer-low::before { content: "\f5cf"; }
|
1255 |
-
.bi-thermometer-snow::before { content: "\f5d0"; }
|
1256 |
-
.bi-thermometer-sun::before { content: "\f5d1"; }
|
1257 |
-
.bi-thermometer::before { content: "\f5d2"; }
|
1258 |
-
.bi-three-dots-vertical::before { content: "\f5d3"; }
|
1259 |
-
.bi-three-dots::before { content: "\f5d4"; }
|
1260 |
-
.bi-toggle-off::before { content: "\f5d5"; }
|
1261 |
-
.bi-toggle-on::before { content: "\f5d6"; }
|
1262 |
-
.bi-toggle2-off::before { content: "\f5d7"; }
|
1263 |
-
.bi-toggle2-on::before { content: "\f5d8"; }
|
1264 |
-
.bi-toggles::before { content: "\f5d9"; }
|
1265 |
-
.bi-toggles2::before { content: "\f5da"; }
|
1266 |
-
.bi-tools::before { content: "\f5db"; }
|
1267 |
-
.bi-tornado::before { content: "\f5dc"; }
|
1268 |
-
.bi-trash-fill::before { content: "\f5dd"; }
|
1269 |
-
.bi-trash::before { content: "\f5de"; }
|
1270 |
-
.bi-trash2-fill::before { content: "\f5df"; }
|
1271 |
-
.bi-trash2::before { content: "\f5e0"; }
|
1272 |
-
.bi-tree-fill::before { content: "\f5e1"; }
|
1273 |
-
.bi-tree::before { content: "\f5e2"; }
|
1274 |
-
.bi-triangle-fill::before { content: "\f5e3"; }
|
1275 |
-
.bi-triangle-half::before { content: "\f5e4"; }
|
1276 |
-
.bi-triangle::before { content: "\f5e5"; }
|
1277 |
-
.bi-trophy-fill::before { content: "\f5e6"; }
|
1278 |
-
.bi-trophy::before { content: "\f5e7"; }
|
1279 |
-
.bi-tropical-storm::before { content: "\f5e8"; }
|
1280 |
-
.bi-truck-flatbed::before { content: "\f5e9"; }
|
1281 |
-
.bi-truck::before { content: "\f5ea"; }
|
1282 |
-
.bi-tsunami::before { content: "\f5eb"; }
|
1283 |
-
.bi-tv-fill::before { content: "\f5ec"; }
|
1284 |
-
.bi-tv::before { content: "\f5ed"; }
|
1285 |
-
.bi-twitch::before { content: "\f5ee"; }
|
1286 |
-
.bi-twitter::before { content: "\f5ef"; }
|
1287 |
-
.bi-type-bold::before { content: "\f5f0"; }
|
1288 |
-
.bi-type-h1::before { content: "\f5f1"; }
|
1289 |
-
.bi-type-h2::before { content: "\f5f2"; }
|
1290 |
-
.bi-type-h3::before { content: "\f5f3"; }
|
1291 |
-
.bi-type-italic::before { content: "\f5f4"; }
|
1292 |
-
.bi-type-strikethrough::before { content: "\f5f5"; }
|
1293 |
-
.bi-type-underline::before { content: "\f5f6"; }
|
1294 |
-
.bi-type::before { content: "\f5f7"; }
|
1295 |
-
.bi-ui-checks-grid::before { content: "\f5f8"; }
|
1296 |
-
.bi-ui-checks::before { content: "\f5f9"; }
|
1297 |
-
.bi-ui-radios-grid::before { content: "\f5fa"; }
|
1298 |
-
.bi-ui-radios::before { content: "\f5fb"; }
|
1299 |
-
.bi-umbrella-fill::before { content: "\f5fc"; }
|
1300 |
-
.bi-umbrella::before { content: "\f5fd"; }
|
1301 |
-
.bi-union::before { content: "\f5fe"; }
|
1302 |
-
.bi-unlock-fill::before { content: "\f5ff"; }
|
1303 |
-
.bi-unlock::before { content: "\f600"; }
|
1304 |
-
.bi-upc-scan::before { content: "\f601"; }
|
1305 |
-
.bi-upc::before { content: "\f602"; }
|
1306 |
-
.bi-upload::before { content: "\f603"; }
|
1307 |
-
.bi-vector-pen::before { content: "\f604"; }
|
1308 |
-
.bi-view-list::before { content: "\f605"; }
|
1309 |
-
.bi-view-stacked::before { content: "\f606"; }
|
1310 |
-
.bi-vinyl-fill::before { content: "\f607"; }
|
1311 |
-
.bi-vinyl::before { content: "\f608"; }
|
1312 |
-
.bi-voicemail::before { content: "\f609"; }
|
1313 |
-
.bi-volume-down-fill::before { content: "\f60a"; }
|
1314 |
-
.bi-volume-down::before { content: "\f60b"; }
|
1315 |
-
.bi-volume-mute-fill::before { content: "\f60c"; }
|
1316 |
-
.bi-volume-mute::before { content: "\f60d"; }
|
1317 |
-
.bi-volume-off-fill::before { content: "\f60e"; }
|
1318 |
-
.bi-volume-off::before { content: "\f60f"; }
|
1319 |
-
.bi-volume-up-fill::before { content: "\f610"; }
|
1320 |
-
.bi-volume-up::before { content: "\f611"; }
|
1321 |
-
.bi-vr::before { content: "\f612"; }
|
1322 |
-
.bi-wallet-fill::before { content: "\f613"; }
|
1323 |
-
.bi-wallet::before { content: "\f614"; }
|
1324 |
-
.bi-wallet2::before { content: "\f615"; }
|
1325 |
-
.bi-watch::before { content: "\f616"; }
|
1326 |
-
.bi-water::before { content: "\f617"; }
|
1327 |
-
.bi-whatsapp::before { content: "\f618"; }
|
1328 |
-
.bi-wifi-1::before { content: "\f619"; }
|
1329 |
-
.bi-wifi-2::before { content: "\f61a"; }
|
1330 |
-
.bi-wifi-off::before { content: "\f61b"; }
|
1331 |
-
.bi-wifi::before { content: "\f61c"; }
|
1332 |
-
.bi-wind::before { content: "\f61d"; }
|
1333 |
-
.bi-window-dock::before { content: "\f61e"; }
|
1334 |
-
.bi-window-sidebar::before { content: "\f61f"; }
|
1335 |
-
.bi-window::before { content: "\f620"; }
|
1336 |
-
.bi-wrench::before { content: "\f621"; }
|
1337 |
-
.bi-x-circle-fill::before { content: "\f622"; }
|
1338 |
-
.bi-x-circle::before { content: "\f623"; }
|
1339 |
-
.bi-x-diamond-fill::before { content: "\f624"; }
|
1340 |
-
.bi-x-diamond::before { content: "\f625"; }
|
1341 |
-
.bi-x-octagon-fill::before { content: "\f626"; }
|
1342 |
-
.bi-x-octagon::before { content: "\f627"; }
|
1343 |
-
.bi-x-square-fill::before { content: "\f628"; }
|
1344 |
-
.bi-x-square::before { content: "\f629"; }
|
1345 |
-
.bi-x::before { content: "\f62a"; }
|
1346 |
-
.bi-youtube::before { content: "\f62b"; }
|
1347 |
-
.bi-zoom-in::before { content: "\f62c"; }
|
1348 |
-
.bi-zoom-out::before { content: "\f62d"; }
|
1349 |
-
.bi-bank::before { content: "\f62e"; }
|
1350 |
-
.bi-bank2::before { content: "\f62f"; }
|
1351 |
-
.bi-bell-slash-fill::before { content: "\f630"; }
|
1352 |
-
.bi-bell-slash::before { content: "\f631"; }
|
1353 |
-
.bi-cash-coin::before { content: "\f632"; }
|
1354 |
-
.bi-check-lg::before { content: "\f633"; }
|
1355 |
-
.bi-coin::before { content: "\f634"; }
|
1356 |
-
.bi-currency-bitcoin::before { content: "\f635"; }
|
1357 |
-
.bi-currency-dollar::before { content: "\f636"; }
|
1358 |
-
.bi-currency-euro::before { content: "\f637"; }
|
1359 |
-
.bi-currency-exchange::before { content: "\f638"; }
|
1360 |
-
.bi-currency-pound::before { content: "\f639"; }
|
1361 |
-
.bi-currency-yen::before { content: "\f63a"; }
|
1362 |
-
.bi-dash-lg::before { content: "\f63b"; }
|
1363 |
-
.bi-exclamation-lg::before { content: "\f63c"; }
|
1364 |
-
.bi-file-earmark-pdf-fill::before { content: "\f63d"; }
|
1365 |
-
.bi-file-earmark-pdf::before { content: "\f63e"; }
|
1366 |
-
.bi-file-pdf-fill::before { content: "\f63f"; }
|
1367 |
-
.bi-file-pdf::before { content: "\f640"; }
|
1368 |
-
.bi-gender-ambiguous::before { content: "\f641"; }
|
1369 |
-
.bi-gender-female::before { content: "\f642"; }
|
1370 |
-
.bi-gender-male::before { content: "\f643"; }
|
1371 |
-
.bi-gender-trans::before { content: "\f644"; }
|
1372 |
-
.bi-headset-vr::before { content: "\f645"; }
|
1373 |
-
.bi-info-lg::before { content: "\f646"; }
|
1374 |
-
.bi-mastodon::before { content: "\f647"; }
|
1375 |
-
.bi-messenger::before { content: "\f648"; }
|
1376 |
-
.bi-piggy-bank-fill::before { content: "\f649"; }
|
1377 |
-
.bi-piggy-bank::before { content: "\f64a"; }
|
1378 |
-
.bi-pin-map-fill::before { content: "\f64b"; }
|
1379 |
-
.bi-pin-map::before { content: "\f64c"; }
|
1380 |
-
.bi-plus-lg::before { content: "\f64d"; }
|
1381 |
-
.bi-question-lg::before { content: "\f64e"; }
|
1382 |
-
.bi-recycle::before { content: "\f64f"; }
|
1383 |
-
.bi-reddit::before { content: "\f650"; }
|
1384 |
-
.bi-safe-fill::before { content: "\f651"; }
|
1385 |
-
.bi-safe2-fill::before { content: "\f652"; }
|
1386 |
-
.bi-safe2::before { content: "\f653"; }
|
1387 |
-
.bi-sd-card-fill::before { content: "\f654"; }
|
1388 |
-
.bi-sd-card::before { content: "\f655"; }
|
1389 |
-
.bi-skype::before { content: "\f656"; }
|
1390 |
-
.bi-slash-lg::before { content: "\f657"; }
|
1391 |
-
.bi-translate::before { content: "\f658"; }
|
1392 |
-
.bi-x-lg::before { content: "\f659"; }
|
1393 |
-
.bi-safe::before { content: "\f65a"; }
|
1394 |
-
.bi-apple::before { content: "\f65b"; }
|
1395 |
-
.bi-microsoft::before { content: "\f65d"; }
|
1396 |
-
.bi-windows::before { content: "\f65e"; }
|
1397 |
-
.bi-behance::before { content: "\f65c"; }
|
1398 |
-
.bi-dribbble::before { content: "\f65f"; }
|
1399 |
-
.bi-line::before { content: "\f660"; }
|
1400 |
-
.bi-medium::before { content: "\f661"; }
|
1401 |
-
.bi-paypal::before { content: "\f662"; }
|
1402 |
-
.bi-pinterest::before { content: "\f663"; }
|
1403 |
-
.bi-signal::before { content: "\f664"; }
|
1404 |
-
.bi-snapchat::before { content: "\f665"; }
|
1405 |
-
.bi-spotify::before { content: "\f666"; }
|
1406 |
-
.bi-stack-overflow::before { content: "\f667"; }
|
1407 |
-
.bi-strava::before { content: "\f668"; }
|
1408 |
-
.bi-wordpress::before { content: "\f669"; }
|
1409 |
-
.bi-vimeo::before { content: "\f66a"; }
|
1410 |
-
.bi-activity::before { content: "\f66b"; }
|
1411 |
-
.bi-easel2-fill::before { content: "\f66c"; }
|
1412 |
-
.bi-easel2::before { content: "\f66d"; }
|
1413 |
-
.bi-easel3-fill::before { content: "\f66e"; }
|
1414 |
-
.bi-easel3::before { content: "\f66f"; }
|
1415 |
-
.bi-fan::before { content: "\f670"; }
|
1416 |
-
.bi-fingerprint::before { content: "\f671"; }
|
1417 |
-
.bi-graph-down-arrow::before { content: "\f672"; }
|
1418 |
-
.bi-graph-up-arrow::before { content: "\f673"; }
|
1419 |
-
.bi-hypnotize::before { content: "\f674"; }
|
1420 |
-
.bi-magic::before { content: "\f675"; }
|
1421 |
-
.bi-person-rolodex::before { content: "\f676"; }
|
1422 |
-
.bi-person-video::before { content: "\f677"; }
|
1423 |
-
.bi-person-video2::before { content: "\f678"; }
|
1424 |
-
.bi-person-video3::before { content: "\f679"; }
|
1425 |
-
.bi-person-workspace::before { content: "\f67a"; }
|
1426 |
-
.bi-radioactive::before { content: "\f67b"; }
|
1427 |
-
.bi-webcam-fill::before { content: "\f67c"; }
|
1428 |
-
.bi-webcam::before { content: "\f67d"; }
|
1429 |
-
.bi-yin-yang::before { content: "\f67e"; }
|
1430 |
-
.bi-bandaid-fill::before { content: "\f680"; }
|
1431 |
-
.bi-bandaid::before { content: "\f681"; }
|
1432 |
-
.bi-bluetooth::before { content: "\f682"; }
|
1433 |
-
.bi-body-text::before { content: "\f683"; }
|
1434 |
-
.bi-boombox::before { content: "\f684"; }
|
1435 |
-
.bi-boxes::before { content: "\f685"; }
|
1436 |
-
.bi-dpad-fill::before { content: "\f686"; }
|
1437 |
-
.bi-dpad::before { content: "\f687"; }
|
1438 |
-
.bi-ear-fill::before { content: "\f688"; }
|
1439 |
-
.bi-ear::before { content: "\f689"; }
|
1440 |
-
.bi-envelope-check-1::before { content: "\f68a"; }
|
1441 |
-
.bi-envelope-check-fill::before { content: "\f68b"; }
|
1442 |
-
.bi-envelope-check::before { content: "\f68c"; }
|
1443 |
-
.bi-envelope-dash-1::before { content: "\f68d"; }
|
1444 |
-
.bi-envelope-dash-fill::before { content: "\f68e"; }
|
1445 |
-
.bi-envelope-dash::before { content: "\f68f"; }
|
1446 |
-
.bi-envelope-exclamation-1::before { content: "\f690"; }
|
1447 |
-
.bi-envelope-exclamation-fill::before { content: "\f691"; }
|
1448 |
-
.bi-envelope-exclamation::before { content: "\f692"; }
|
1449 |
-
.bi-envelope-plus-fill::before { content: "\f693"; }
|
1450 |
-
.bi-envelope-plus::before { content: "\f694"; }
|
1451 |
-
.bi-envelope-slash-1::before { content: "\f695"; }
|
1452 |
-
.bi-envelope-slash-fill::before { content: "\f696"; }
|
1453 |
-
.bi-envelope-slash::before { content: "\f697"; }
|
1454 |
-
.bi-envelope-x-1::before { content: "\f698"; }
|
1455 |
-
.bi-envelope-x-fill::before { content: "\f699"; }
|
1456 |
-
.bi-envelope-x::before { content: "\f69a"; }
|
1457 |
-
.bi-explicit-fill::before { content: "\f69b"; }
|
1458 |
-
.bi-explicit::before { content: "\f69c"; }
|
1459 |
-
.bi-git::before { content: "\f69d"; }
|
1460 |
-
.bi-infinity::before { content: "\f69e"; }
|
1461 |
-
.bi-list-columns-reverse::before { content: "\f69f"; }
|
1462 |
-
.bi-list-columns::before { content: "\f6a0"; }
|
1463 |
-
.bi-meta::before { content: "\f6a1"; }
|
1464 |
-
.bi-mortorboard-fill::before { content: "\f6a2"; }
|
1465 |
-
.bi-mortorboard::before { content: "\f6a3"; }
|
1466 |
-
.bi-nintendo-switch::before { content: "\f6a4"; }
|
1467 |
-
.bi-pc-display-horizontal::before { content: "\f6a5"; }
|
1468 |
-
.bi-pc-display::before { content: "\f6a6"; }
|
1469 |
-
.bi-pc-horizontal::before { content: "\f6a7"; }
|
1470 |
-
.bi-pc::before { content: "\f6a8"; }
|
1471 |
-
.bi-playstation::before { content: "\f6a9"; }
|
1472 |
-
.bi-plus-slash-minus::before { content: "\f6aa"; }
|
1473 |
-
.bi-projector-fill::before { content: "\f6ab"; }
|
1474 |
-
.bi-projector::before { content: "\f6ac"; }
|
1475 |
-
.bi-qr-code-scan::before { content: "\f6ad"; }
|
1476 |
-
.bi-qr-code::before { content: "\f6ae"; }
|
1477 |
-
.bi-quora::before { content: "\f6af"; }
|
1478 |
-
.bi-quote::before { content: "\f6b0"; }
|
1479 |
-
.bi-robot::before { content: "\f6b1"; }
|
1480 |
-
.bi-send-check-fill::before { content: "\f6b2"; }
|
1481 |
-
.bi-send-check::before { content: "\f6b3"; }
|
1482 |
-
.bi-send-dash-fill::before { content: "\f6b4"; }
|
1483 |
-
.bi-send-dash::before { content: "\f6b5"; }
|
1484 |
-
.bi-send-exclamation-1::before { content: "\f6b6"; }
|
1485 |
-
.bi-send-exclamation-fill::before { content: "\f6b7"; }
|
1486 |
-
.bi-send-exclamation::before { content: "\f6b8"; }
|
1487 |
-
.bi-send-fill::before { content: "\f6b9"; }
|
1488 |
-
.bi-send-plus-fill::before { content: "\f6ba"; }
|
1489 |
-
.bi-send-plus::before { content: "\f6bb"; }
|
1490 |
-
.bi-send-slash-fill::before { content: "\f6bc"; }
|
1491 |
-
.bi-send-slash::before { content: "\f6bd"; }
|
1492 |
-
.bi-send-x-fill::before { content: "\f6be"; }
|
1493 |
-
.bi-send-x::before { content: "\f6bf"; }
|
1494 |
-
.bi-send::before { content: "\f6c0"; }
|
1495 |
-
.bi-steam::before { content: "\f6c1"; }
|
1496 |
-
.bi-terminal-dash-1::before { content: "\f6c2"; }
|
1497 |
-
.bi-terminal-dash::before { content: "\f6c3"; }
|
1498 |
-
.bi-terminal-plus::before { content: "\f6c4"; }
|
1499 |
-
.bi-terminal-split::before { content: "\f6c5"; }
|
1500 |
-
.bi-ticket-detailed-fill::before { content: "\f6c6"; }
|
1501 |
-
.bi-ticket-detailed::before { content: "\f6c7"; }
|
1502 |
-
.bi-ticket-fill::before { content: "\f6c8"; }
|
1503 |
-
.bi-ticket-perforated-fill::before { content: "\f6c9"; }
|
1504 |
-
.bi-ticket-perforated::before { content: "\f6ca"; }
|
1505 |
-
.bi-ticket::before { content: "\f6cb"; }
|
1506 |
-
.bi-tiktok::before { content: "\f6cc"; }
|
1507 |
-
.bi-window-dash::before { content: "\f6cd"; }
|
1508 |
-
.bi-window-desktop::before { content: "\f6ce"; }
|
1509 |
-
.bi-window-fullscreen::before { content: "\f6cf"; }
|
1510 |
-
.bi-window-plus::before { content: "\f6d0"; }
|
1511 |
-
.bi-window-split::before { content: "\f6d1"; }
|
1512 |
-
.bi-window-stack::before { content: "\f6d2"; }
|
1513 |
-
.bi-window-x::before { content: "\f6d3"; }
|
1514 |
-
.bi-xbox::before { content: "\f6d4"; }
|
1515 |
-
.bi-ethernet::before { content: "\f6d5"; }
|
1516 |
-
.bi-hdmi-fill::before { content: "\f6d6"; }
|
1517 |
-
.bi-hdmi::before { content: "\f6d7"; }
|
1518 |
-
.bi-usb-c-fill::before { content: "\f6d8"; }
|
1519 |
-
.bi-usb-c::before { content: "\f6d9"; }
|
1520 |
-
.bi-usb-fill::before { content: "\f6da"; }
|
1521 |
-
.bi-usb-plug-fill::before { content: "\f6db"; }
|
1522 |
-
.bi-usb-plug::before { content: "\f6dc"; }
|
1523 |
-
.bi-usb-symbol::before { content: "\f6dd"; }
|
1524 |
-
.bi-usb::before { content: "\f6de"; }
|
1525 |
-
.bi-boombox-fill::before { content: "\f6df"; }
|
1526 |
-
.bi-displayport-1::before { content: "\f6e0"; }
|
1527 |
-
.bi-displayport::before { content: "\f6e1"; }
|
1528 |
-
.bi-gpu-card::before { content: "\f6e2"; }
|
1529 |
-
.bi-memory::before { content: "\f6e3"; }
|
1530 |
-
.bi-modem-fill::before { content: "\f6e4"; }
|
1531 |
-
.bi-modem::before { content: "\f6e5"; }
|
1532 |
-
.bi-motherboard-fill::before { content: "\f6e6"; }
|
1533 |
-
.bi-motherboard::before { content: "\f6e7"; }
|
1534 |
-
.bi-optical-audio-fill::before { content: "\f6e8"; }
|
1535 |
-
.bi-optical-audio::before { content: "\f6e9"; }
|
1536 |
-
.bi-pci-card::before { content: "\f6ea"; }
|
1537 |
-
.bi-router-fill::before { content: "\f6eb"; }
|
1538 |
-
.bi-router::before { content: "\f6ec"; }
|
1539 |
-
.bi-ssd-fill::before { content: "\f6ed"; }
|
1540 |
-
.bi-ssd::before { content: "\f6ee"; }
|
1541 |
-
.bi-thunderbolt-fill::before { content: "\f6ef"; }
|
1542 |
-
.bi-thunderbolt::before { content: "\f6f0"; }
|
1543 |
-
.bi-usb-drive-fill::before { content: "\f6f1"; }
|
1544 |
-
.bi-usb-drive::before { content: "\f6f2"; }
|
1545 |
-
.bi-usb-micro-fill::before { content: "\f6f3"; }
|
1546 |
-
.bi-usb-micro::before { content: "\f6f4"; }
|
1547 |
-
.bi-usb-mini-fill::before { content: "\f6f5"; }
|
1548 |
-
.bi-usb-mini::before { content: "\f6f6"; }
|
1549 |
-
.bi-cloud-haze2::before { content: "\f6f7"; }
|
1550 |
-
.bi-device-hdd-fill::before { content: "\f6f8"; }
|
1551 |
-
.bi-device-hdd::before { content: "\f6f9"; }
|
1552 |
-
.bi-device-ssd-fill::before { content: "\f6fa"; }
|
1553 |
-
.bi-device-ssd::before { content: "\f6fb"; }
|
1554 |
-
.bi-displayport-fill::before { content: "\f6fc"; }
|
1555 |
-
.bi-mortarboard-fill::before { content: "\f6fd"; }
|
1556 |
-
.bi-mortarboard::before { content: "\f6fe"; }
|
1557 |
-
.bi-terminal-x::before { content: "\f6ff"; }
|
1558 |
-
.bi-arrow-through-heart-fill::before { content: "\f700"; }
|
1559 |
-
.bi-arrow-through-heart::before { content: "\f701"; }
|
1560 |
-
.bi-badge-sd-fill::before { content: "\f702"; }
|
1561 |
-
.bi-badge-sd::before { content: "\f703"; }
|
1562 |
-
.bi-bag-heart-fill::before { content: "\f704"; }
|
1563 |
-
.bi-bag-heart::before { content: "\f705"; }
|
1564 |
-
.bi-balloon-fill::before { content: "\f706"; }
|
1565 |
-
.bi-balloon-heart-fill::before { content: "\f707"; }
|
1566 |
-
.bi-balloon-heart::before { content: "\f708"; }
|
1567 |
-
.bi-balloon::before { content: "\f709"; }
|
1568 |
-
.bi-box2-fill::before { content: "\f70a"; }
|
1569 |
-
.bi-box2-heart-fill::before { content: "\f70b"; }
|
1570 |
-
.bi-box2-heart::before { content: "\f70c"; }
|
1571 |
-
.bi-box2::before { content: "\f70d"; }
|
1572 |
-
.bi-braces-asterisk::before { content: "\f70e"; }
|
1573 |
-
.bi-calendar-heart-fill::before { content: "\f70f"; }
|
1574 |
-
.bi-calendar-heart::before { content: "\f710"; }
|
1575 |
-
.bi-calendar2-heart-fill::before { content: "\f711"; }
|
1576 |
-
.bi-calendar2-heart::before { content: "\f712"; }
|
1577 |
-
.bi-chat-heart-fill::before { content: "\f713"; }
|
1578 |
-
.bi-chat-heart::before { content: "\f714"; }
|
1579 |
-
.bi-chat-left-heart-fill::before { content: "\f715"; }
|
1580 |
-
.bi-chat-left-heart::before { content: "\f716"; }
|
1581 |
-
.bi-chat-right-heart-fill::before { content: "\f717"; }
|
1582 |
-
.bi-chat-right-heart::before { content: "\f718"; }
|
1583 |
-
.bi-chat-square-heart-fill::before { content: "\f719"; }
|
1584 |
-
.bi-chat-square-heart::before { content: "\f71a"; }
|
1585 |
-
.bi-clipboard-check-fill::before { content: "\f71b"; }
|
1586 |
-
.bi-clipboard-data-fill::before { content: "\f71c"; }
|
1587 |
-
.bi-clipboard-fill::before { content: "\f71d"; }
|
1588 |
-
.bi-clipboard-heart-fill::before { content: "\f71e"; }
|
1589 |
-
.bi-clipboard-heart::before { content: "\f71f"; }
|
1590 |
-
.bi-clipboard-minus-fill::before { content: "\f720"; }
|
1591 |
-
.bi-clipboard-plus-fill::before { content: "\f721"; }
|
1592 |
-
.bi-clipboard-pulse::before { content: "\f722"; }
|
1593 |
-
.bi-clipboard-x-fill::before { content: "\f723"; }
|
1594 |
-
.bi-clipboard2-check-fill::before { content: "\f724"; }
|
1595 |
-
.bi-clipboard2-check::before { content: "\f725"; }
|
1596 |
-
.bi-clipboard2-data-fill::before { content: "\f726"; }
|
1597 |
-
.bi-clipboard2-data::before { content: "\f727"; }
|
1598 |
-
.bi-clipboard2-fill::before { content: "\f728"; }
|
1599 |
-
.bi-clipboard2-heart-fill::before { content: "\f729"; }
|
1600 |
-
.bi-clipboard2-heart::before { content: "\f72a"; }
|
1601 |
-
.bi-clipboard2-minus-fill::before { content: "\f72b"; }
|
1602 |
-
.bi-clipboard2-minus::before { content: "\f72c"; }
|
1603 |
-
.bi-clipboard2-plus-fill::before { content: "\f72d"; }
|
1604 |
-
.bi-clipboard2-plus::before { content: "\f72e"; }
|
1605 |
-
.bi-clipboard2-pulse-fill::before { content: "\f72f"; }
|
1606 |
-
.bi-clipboard2-pulse::before { content: "\f730"; }
|
1607 |
-
.bi-clipboard2-x-fill::before { content: "\f731"; }
|
1608 |
-
.bi-clipboard2-x::before { content: "\f732"; }
|
1609 |
-
.bi-clipboard2::before { content: "\f733"; }
|
1610 |
-
.bi-emoji-kiss-fill::before { content: "\f734"; }
|
1611 |
-
.bi-emoji-kiss::before { content: "\f735"; }
|
1612 |
-
.bi-envelope-heart-fill::before { content: "\f736"; }
|
1613 |
-
.bi-envelope-heart::before { content: "\f737"; }
|
1614 |
-
.bi-envelope-open-heart-fill::before { content: "\f738"; }
|
1615 |
-
.bi-envelope-open-heart::before { content: "\f739"; }
|
1616 |
-
.bi-envelope-paper-fill::before { content: "\f73a"; }
|
1617 |
-
.bi-envelope-paper-heart-fill::before { content: "\f73b"; }
|
1618 |
-
.bi-envelope-paper-heart::before { content: "\f73c"; }
|
1619 |
-
.bi-envelope-paper::before { content: "\f73d"; }
|
1620 |
-
.bi-filetype-aac::before { content: "\f73e"; }
|
1621 |
-
.bi-filetype-ai::before { content: "\f73f"; }
|
1622 |
-
.bi-filetype-bmp::before { content: "\f740"; }
|
1623 |
-
.bi-filetype-cs::before { content: "\f741"; }
|
1624 |
-
.bi-filetype-css::before { content: "\f742"; }
|
1625 |
-
.bi-filetype-csv::before { content: "\f743"; }
|
1626 |
-
.bi-filetype-doc::before { content: "\f744"; }
|
1627 |
-
.bi-filetype-docx::before { content: "\f745"; }
|
1628 |
-
.bi-filetype-exe::before { content: "\f746"; }
|
1629 |
-
.bi-filetype-gif::before { content: "\f747"; }
|
1630 |
-
.bi-filetype-heic::before { content: "\f748"; }
|
1631 |
-
.bi-filetype-html::before { content: "\f749"; }
|
1632 |
-
.bi-filetype-java::before { content: "\f74a"; }
|
1633 |
-
.bi-filetype-jpg::before { content: "\f74b"; }
|
1634 |
-
.bi-filetype-js::before { content: "\f74c"; }
|
1635 |
-
.bi-filetype-jsx::before { content: "\f74d"; }
|
1636 |
-
.bi-filetype-key::before { content: "\f74e"; }
|
1637 |
-
.bi-filetype-m4p::before { content: "\f74f"; }
|
1638 |
-
.bi-filetype-md::before { content: "\f750"; }
|
1639 |
-
.bi-filetype-mdx::before { content: "\f751"; }
|
1640 |
-
.bi-filetype-mov::before { content: "\f752"; }
|
1641 |
-
.bi-filetype-mp3::before { content: "\f753"; }
|
1642 |
-
.bi-filetype-mp4::before { content: "\f754"; }
|
1643 |
-
.bi-filetype-otf::before { content: "\f755"; }
|
1644 |
-
.bi-filetype-pdf::before { content: "\f756"; }
|
1645 |
-
.bi-filetype-php::before { content: "\f757"; }
|
1646 |
-
.bi-filetype-png::before { content: "\f758"; }
|
1647 |
-
.bi-filetype-ppt-1::before { content: "\f759"; }
|
1648 |
-
.bi-filetype-ppt::before { content: "\f75a"; }
|
1649 |
-
.bi-filetype-psd::before { content: "\f75b"; }
|
1650 |
-
.bi-filetype-py::before { content: "\f75c"; }
|
1651 |
-
.bi-filetype-raw::before { content: "\f75d"; }
|
1652 |
-
.bi-filetype-rb::before { content: "\f75e"; }
|
1653 |
-
.bi-filetype-sass::before { content: "\f75f"; }
|
1654 |
-
.bi-filetype-scss::before { content: "\f760"; }
|
1655 |
-
.bi-filetype-sh::before { content: "\f761"; }
|
1656 |
-
.bi-filetype-svg::before { content: "\f762"; }
|
1657 |
-
.bi-filetype-tiff::before { content: "\f763"; }
|
1658 |
-
.bi-filetype-tsx::before { content: "\f764"; }
|
1659 |
-
.bi-filetype-ttf::before { content: "\f765"; }
|
1660 |
-
.bi-filetype-txt::before { content: "\f766"; }
|
1661 |
-
.bi-filetype-wav::before { content: "\f767"; }
|
1662 |
-
.bi-filetype-woff::before { content: "\f768"; }
|
1663 |
-
.bi-filetype-xls-1::before { content: "\f769"; }
|
1664 |
-
.bi-filetype-xls::before { content: "\f76a"; }
|
1665 |
-
.bi-filetype-xml::before { content: "\f76b"; }
|
1666 |
-
.bi-filetype-yml::before { content: "\f76c"; }
|
1667 |
-
.bi-heart-arrow::before { content: "\f76d"; }
|
1668 |
-
.bi-heart-pulse-fill::before { content: "\f76e"; }
|
1669 |
-
.bi-heart-pulse::before { content: "\f76f"; }
|
1670 |
-
.bi-heartbreak-fill::before { content: "\f770"; }
|
1671 |
-
.bi-heartbreak::before { content: "\f771"; }
|
1672 |
-
.bi-hearts::before { content: "\f772"; }
|
1673 |
-
.bi-hospital-fill::before { content: "\f773"; }
|
1674 |
-
.bi-hospital::before { content: "\f774"; }
|
1675 |
-
.bi-house-heart-fill::before { content: "\f775"; }
|
1676 |
-
.bi-house-heart::before { content: "\f776"; }
|
1677 |
-
.bi-incognito::before { content: "\f777"; }
|
1678 |
-
.bi-magnet-fill::before { content: "\f778"; }
|
1679 |
-
.bi-magnet::before { content: "\f779"; }
|
1680 |
-
.bi-person-heart::before { content: "\f77a"; }
|
1681 |
-
.bi-person-hearts::before { content: "\f77b"; }
|
1682 |
-
.bi-phone-flip::before { content: "\f77c"; }
|
1683 |
-
.bi-plugin::before { content: "\f77d"; }
|
1684 |
-
.bi-postage-fill::before { content: "\f77e"; }
|
1685 |
-
.bi-postage-heart-fill::before { content: "\f77f"; }
|
1686 |
-
.bi-postage-heart::before { content: "\f780"; }
|
1687 |
-
.bi-postage::before { content: "\f781"; }
|
1688 |
-
.bi-postcard-fill::before { content: "\f782"; }
|
1689 |
-
.bi-postcard-heart-fill::before { content: "\f783"; }
|
1690 |
-
.bi-postcard-heart::before { content: "\f784"; }
|
1691 |
-
.bi-postcard::before { content: "\f785"; }
|
1692 |
-
.bi-search-heart-fill::before { content: "\f786"; }
|
1693 |
-
.bi-search-heart::before { content: "\f787"; }
|
1694 |
-
.bi-sliders2-vertical::before { content: "\f788"; }
|
1695 |
-
.bi-sliders2::before { content: "\f789"; }
|
1696 |
-
.bi-trash3-fill::before { content: "\f78a"; }
|
1697 |
-
.bi-trash3::before { content: "\f78b"; }
|
1698 |
-
.bi-valentine::before { content: "\f78c"; }
|
1699 |
-
.bi-valentine2::before { content: "\f78d"; }
|
1700 |
-
.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; }
|
1701 |
-
.bi-wrench-adjustable-circle::before { content: "\f78f"; }
|
1702 |
-
.bi-wrench-adjustable::before { content: "\f790"; }
|
1703 |
-
.bi-filetype-json::before { content: "\f791"; }
|
1704 |
-
.bi-filetype-pptx::before { content: "\f792"; }
|
1705 |
-
.bi-filetype-xlsx::before { content: "\f793"; }
|
1706 |
-
.bi-1-circle-1::before { content: "\f794"; }
|
1707 |
-
.bi-1-circle-fill-1::before { content: "\f795"; }
|
1708 |
-
.bi-1-circle-fill::before { content: "\f796"; }
|
1709 |
-
.bi-1-circle::before { content: "\f797"; }
|
1710 |
-
.bi-1-square-fill::before { content: "\f798"; }
|
1711 |
-
.bi-1-square::before { content: "\f799"; }
|
1712 |
-
.bi-2-circle-1::before { content: "\f79a"; }
|
1713 |
-
.bi-2-circle-fill-1::before { content: "\f79b"; }
|
1714 |
-
.bi-2-circle-fill::before { content: "\f79c"; }
|
1715 |
-
.bi-2-circle::before { content: "\f79d"; }
|
1716 |
-
.bi-2-square-fill::before { content: "\f79e"; }
|
1717 |
-
.bi-2-square::before { content: "\f79f"; }
|
1718 |
-
.bi-3-circle-1::before { content: "\f7a0"; }
|
1719 |
-
.bi-3-circle-fill-1::before { content: "\f7a1"; }
|
1720 |
-
.bi-3-circle-fill::before { content: "\f7a2"; }
|
1721 |
-
.bi-3-circle::before { content: "\f7a3"; }
|
1722 |
-
.bi-3-square-fill::before { content: "\f7a4"; }
|
1723 |
-
.bi-3-square::before { content: "\f7a5"; }
|
1724 |
-
.bi-4-circle-1::before { content: "\f7a6"; }
|
1725 |
-
.bi-4-circle-fill-1::before { content: "\f7a7"; }
|
1726 |
-
.bi-4-circle-fill::before { content: "\f7a8"; }
|
1727 |
-
.bi-4-circle::before { content: "\f7a9"; }
|
1728 |
-
.bi-4-square-fill::before { content: "\f7aa"; }
|
1729 |
-
.bi-4-square::before { content: "\f7ab"; }
|
1730 |
-
.bi-5-circle-1::before { content: "\f7ac"; }
|
1731 |
-
.bi-5-circle-fill-1::before { content: "\f7ad"; }
|
1732 |
-
.bi-5-circle-fill::before { content: "\f7ae"; }
|
1733 |
-
.bi-5-circle::before { content: "\f7af"; }
|
1734 |
-
.bi-5-square-fill::before { content: "\f7b0"; }
|
1735 |
-
.bi-5-square::before { content: "\f7b1"; }
|
1736 |
-
.bi-6-circle-1::before { content: "\f7b2"; }
|
1737 |
-
.bi-6-circle-fill-1::before { content: "\f7b3"; }
|
1738 |
-
.bi-6-circle-fill::before { content: "\f7b4"; }
|
1739 |
-
.bi-6-circle::before { content: "\f7b5"; }
|
1740 |
-
.bi-6-square-fill::before { content: "\f7b6"; }
|
1741 |
-
.bi-6-square::before { content: "\f7b7"; }
|
1742 |
-
.bi-7-circle-1::before { content: "\f7b8"; }
|
1743 |
-
.bi-7-circle-fill-1::before { content: "\f7b9"; }
|
1744 |
-
.bi-7-circle-fill::before { content: "\f7ba"; }
|
1745 |
-
.bi-7-circle::before { content: "\f7bb"; }
|
1746 |
-
.bi-7-square-fill::before { content: "\f7bc"; }
|
1747 |
-
.bi-7-square::before { content: "\f7bd"; }
|
1748 |
-
.bi-8-circle-1::before { content: "\f7be"; }
|
1749 |
-
.bi-8-circle-fill-1::before { content: "\f7bf"; }
|
1750 |
-
.bi-8-circle-fill::before { content: "\f7c0"; }
|
1751 |
-
.bi-8-circle::before { content: "\f7c1"; }
|
1752 |
-
.bi-8-square-fill::before { content: "\f7c2"; }
|
1753 |
-
.bi-8-square::before { content: "\f7c3"; }
|
1754 |
-
.bi-9-circle-1::before { content: "\f7c4"; }
|
1755 |
-
.bi-9-circle-fill-1::before { content: "\f7c5"; }
|
1756 |
-
.bi-9-circle-fill::before { content: "\f7c6"; }
|
1757 |
-
.bi-9-circle::before { content: "\f7c7"; }
|
1758 |
-
.bi-9-square-fill::before { content: "\f7c8"; }
|
1759 |
-
.bi-9-square::before { content: "\f7c9"; }
|
1760 |
-
.bi-airplane-engines-fill::before { content: "\f7ca"; }
|
1761 |
-
.bi-airplane-engines::before { content: "\f7cb"; }
|
1762 |
-
.bi-airplane-fill::before { content: "\f7cc"; }
|
1763 |
-
.bi-airplane::before { content: "\f7cd"; }
|
1764 |
-
.bi-alexa::before { content: "\f7ce"; }
|
1765 |
-
.bi-alipay::before { content: "\f7cf"; }
|
1766 |
-
.bi-android::before { content: "\f7d0"; }
|
1767 |
-
.bi-android2::before { content: "\f7d1"; }
|
1768 |
-
.bi-box-fill::before { content: "\f7d2"; }
|
1769 |
-
.bi-box-seam-fill::before { content: "\f7d3"; }
|
1770 |
-
.bi-browser-chrome::before { content: "\f7d4"; }
|
1771 |
-
.bi-browser-edge::before { content: "\f7d5"; }
|
1772 |
-
.bi-browser-firefox::before { content: "\f7d6"; }
|
1773 |
-
.bi-browser-safari::before { content: "\f7d7"; }
|
1774 |
-
.bi-c-circle-1::before { content: "\f7d8"; }
|
1775 |
-
.bi-c-circle-fill-1::before { content: "\f7d9"; }
|
1776 |
-
.bi-c-circle-fill::before { content: "\f7da"; }
|
1777 |
-
.bi-c-circle::before { content: "\f7db"; }
|
1778 |
-
.bi-c-square-fill::before { content: "\f7dc"; }
|
1779 |
-
.bi-c-square::before { content: "\f7dd"; }
|
1780 |
-
.bi-capsule-pill::before { content: "\f7de"; }
|
1781 |
-
.bi-capsule::before { content: "\f7df"; }
|
1782 |
-
.bi-car-front-fill::before { content: "\f7e0"; }
|
1783 |
-
.bi-car-front::before { content: "\f7e1"; }
|
1784 |
-
.bi-cassette-fill::before { content: "\f7e2"; }
|
1785 |
-
.bi-cassette::before { content: "\f7e3"; }
|
1786 |
-
.bi-cc-circle-1::before { content: "\f7e4"; }
|
1787 |
-
.bi-cc-circle-fill-1::before { content: "\f7e5"; }
|
1788 |
-
.bi-cc-circle-fill::before { content: "\f7e6"; }
|
1789 |
-
.bi-cc-circle::before { content: "\f7e7"; }
|
1790 |
-
.bi-cc-square-fill::before { content: "\f7e8"; }
|
1791 |
-
.bi-cc-square::before { content: "\f7e9"; }
|
1792 |
-
.bi-cup-hot-fill::before { content: "\f7ea"; }
|
1793 |
-
.bi-cup-hot::before { content: "\f7eb"; }
|
1794 |
-
.bi-currency-rupee::before { content: "\f7ec"; }
|
1795 |
-
.bi-dropbox::before { content: "\f7ed"; }
|
1796 |
-
.bi-escape::before { content: "\f7ee"; }
|
1797 |
-
.bi-fast-forward-btn-fill::before { content: "\f7ef"; }
|
1798 |
-
.bi-fast-forward-btn::before { content: "\f7f0"; }
|
1799 |
-
.bi-fast-forward-circle-fill::before { content: "\f7f1"; }
|
1800 |
-
.bi-fast-forward-circle::before { content: "\f7f2"; }
|
1801 |
-
.bi-fast-forward-fill::before { content: "\f7f3"; }
|
1802 |
-
.bi-fast-forward::before { content: "\f7f4"; }
|
1803 |
-
.bi-filetype-sql::before { content: "\f7f5"; }
|
1804 |
-
.bi-fire::before { content: "\f7f6"; }
|
1805 |
-
.bi-google-play::before { content: "\f7f7"; }
|
1806 |
-
.bi-h-circle-1::before { content: "\f7f8"; }
|
1807 |
-
.bi-h-circle-fill-1::before { content: "\f7f9"; }
|
1808 |
-
.bi-h-circle-fill::before { content: "\f7fa"; }
|
1809 |
-
.bi-h-circle::before { content: "\f7fb"; }
|
1810 |
-
.bi-h-square-fill::before { content: "\f7fc"; }
|
1811 |
-
.bi-h-square::before { content: "\f7fd"; }
|
1812 |
-
.bi-indent::before { content: "\f7fe"; }
|
1813 |
-
.bi-lungs-fill::before { content: "\f7ff"; }
|
1814 |
-
.bi-lungs::before { content: "\f800"; }
|
1815 |
-
.bi-microsoft-teams::before { content: "\f801"; }
|
1816 |
-
.bi-p-circle-1::before { content: "\f802"; }
|
1817 |
-
.bi-p-circle-fill-1::before { content: "\f803"; }
|
1818 |
-
.bi-p-circle-fill::before { content: "\f804"; }
|
1819 |
-
.bi-p-circle::before { content: "\f805"; }
|
1820 |
-
.bi-p-square-fill::before { content: "\f806"; }
|
1821 |
-
.bi-p-square::before { content: "\f807"; }
|
1822 |
-
.bi-pass-fill::before { content: "\f808"; }
|
1823 |
-
.bi-pass::before { content: "\f809"; }
|
1824 |
-
.bi-prescription::before { content: "\f80a"; }
|
1825 |
-
.bi-prescription2::before { content: "\f80b"; }
|
1826 |
-
.bi-r-circle-1::before { content: "\f80c"; }
|
1827 |
-
.bi-r-circle-fill-1::before { content: "\f80d"; }
|
1828 |
-
.bi-r-circle-fill::before { content: "\f80e"; }
|
1829 |
-
.bi-r-circle::before { content: "\f80f"; }
|
1830 |
-
.bi-r-square-fill::before { content: "\f810"; }
|
1831 |
-
.bi-r-square::before { content: "\f811"; }
|
1832 |
-
.bi-repeat-1::before { content: "\f812"; }
|
1833 |
-
.bi-repeat::before { content: "\f813"; }
|
1834 |
-
.bi-rewind-btn-fill::before { content: "\f814"; }
|
1835 |
-
.bi-rewind-btn::before { content: "\f815"; }
|
1836 |
-
.bi-rewind-circle-fill::before { content: "\f816"; }
|
1837 |
-
.bi-rewind-circle::before { content: "\f817"; }
|
1838 |
-
.bi-rewind-fill::before { content: "\f818"; }
|
1839 |
-
.bi-rewind::before { content: "\f819"; }
|
1840 |
-
.bi-train-freight-front-fill::before { content: "\f81a"; }
|
1841 |
-
.bi-train-freight-front::before { content: "\f81b"; }
|
1842 |
-
.bi-train-front-fill::before { content: "\f81c"; }
|
1843 |
-
.bi-train-front::before { content: "\f81d"; }
|
1844 |
-
.bi-train-lightrail-front-fill::before { content: "\f81e"; }
|
1845 |
-
.bi-train-lightrail-front::before { content: "\f81f"; }
|
1846 |
-
.bi-truck-front-fill::before { content: "\f820"; }
|
1847 |
-
.bi-truck-front::before { content: "\f821"; }
|
1848 |
-
.bi-ubuntu::before { content: "\f822"; }
|
1849 |
-
.bi-unindent::before { content: "\f823"; }
|
1850 |
-
.bi-unity::before { content: "\f824"; }
|
1851 |
-
.bi-universal-access-circle::before { content: "\f825"; }
|
1852 |
-
.bi-universal-access::before { content: "\f826"; }
|
1853 |
-
.bi-virus::before { content: "\f827"; }
|
1854 |
-
.bi-virus2::before { content: "\f828"; }
|
1855 |
-
.bi-wechat::before { content: "\f829"; }
|
1856 |
-
.bi-yelp::before { content: "\f82a"; }
|
1857 |
-
.bi-sign-stop-fill::before { content: "\f82b"; }
|
1858 |
-
.bi-sign-stop-lights-fill::before { content: "\f82c"; }
|
1859 |
-
.bi-sign-stop-lights::before { content: "\f82d"; }
|
1860 |
-
.bi-sign-stop::before { content: "\f82e"; }
|
1861 |
-
.bi-sign-turn-left-fill::before { content: "\f82f"; }
|
1862 |
-
.bi-sign-turn-left::before { content: "\f830"; }
|
1863 |
-
.bi-sign-turn-right-fill::before { content: "\f831"; }
|
1864 |
-
.bi-sign-turn-right::before { content: "\f832"; }
|
1865 |
-
.bi-sign-turn-slight-left-fill::before { content: "\f833"; }
|
1866 |
-
.bi-sign-turn-slight-left::before { content: "\f834"; }
|
1867 |
-
.bi-sign-turn-slight-right-fill::before { content: "\f835"; }
|
1868 |
-
.bi-sign-turn-slight-right::before { content: "\f836"; }
|
1869 |
-
.bi-sign-yield-fill::before { content: "\f837"; }
|
1870 |
-
.bi-sign-yield::before { content: "\f838"; }
|
1871 |
-
.bi-ev-station-fill::before { content: "\f839"; }
|
1872 |
-
.bi-ev-station::before { content: "\f83a"; }
|
1873 |
-
.bi-fuel-pump-diesel-fill::before { content: "\f83b"; }
|
1874 |
-
.bi-fuel-pump-diesel::before { content: "\f83c"; }
|
1875 |
-
.bi-fuel-pump-fill::before { content: "\f83d"; }
|
1876 |
-
.bi-fuel-pump::before { content: "\f83e"; }
|
1877 |
-
.bi-0-circle-fill::before { content: "\f83f"; }
|
1878 |
-
.bi-0-circle::before { content: "\f840"; }
|
1879 |
-
.bi-0-square-fill::before { content: "\f841"; }
|
1880 |
-
.bi-0-square::before { content: "\f842"; }
|
1881 |
-
.bi-rocket-fill::before { content: "\f843"; }
|
1882 |
-
.bi-rocket-takeoff-fill::before { content: "\f844"; }
|
1883 |
-
.bi-rocket-takeoff::before { content: "\f845"; }
|
1884 |
-
.bi-rocket::before { content: "\f846"; }
|
1885 |
-
.bi-stripe::before { content: "\f847"; }
|
1886 |
-
.bi-subscript::before { content: "\f848"; }
|
1887 |
-
.bi-superscript::before { content: "\f849"; }
|
1888 |
-
.bi-trello::before { content: "\f84a"; }
|
1889 |
-
.bi-envelope-at-fill::before { content: "\f84b"; }
|
1890 |
-
.bi-envelope-at::before { content: "\f84c"; }
|
1891 |
-
.bi-regex::before { content: "\f84d"; }
|
1892 |
-
.bi-text-wrap::before { content: "\f84e"; }
|
1893 |
-
.bi-sign-dead-end-fill::before { content: "\f84f"; }
|
1894 |
-
.bi-sign-dead-end::before { content: "\f850"; }
|
1895 |
-
.bi-sign-do-not-enter-fill::before { content: "\f851"; }
|
1896 |
-
.bi-sign-do-not-enter::before { content: "\f852"; }
|
1897 |
-
.bi-sign-intersection-fill::before { content: "\f853"; }
|
1898 |
-
.bi-sign-intersection-side-fill::before { content: "\f854"; }
|
1899 |
-
.bi-sign-intersection-side::before { content: "\f855"; }
|
1900 |
-
.bi-sign-intersection-t-fill::before { content: "\f856"; }
|
1901 |
-
.bi-sign-intersection-t::before { content: "\f857"; }
|
1902 |
-
.bi-sign-intersection-y-fill::before { content: "\f858"; }
|
1903 |
-
.bi-sign-intersection-y::before { content: "\f859"; }
|
1904 |
-
.bi-sign-intersection::before { content: "\f85a"; }
|
1905 |
-
.bi-sign-merge-left-fill::before { content: "\f85b"; }
|
1906 |
-
.bi-sign-merge-left::before { content: "\f85c"; }
|
1907 |
-
.bi-sign-merge-right-fill::before { content: "\f85d"; }
|
1908 |
-
.bi-sign-merge-right::before { content: "\f85e"; }
|
1909 |
-
.bi-sign-no-left-turn-fill::before { content: "\f85f"; }
|
1910 |
-
.bi-sign-no-left-turn::before { content: "\f860"; }
|
1911 |
-
.bi-sign-no-parking-fill::before { content: "\f861"; }
|
1912 |
-
.bi-sign-no-parking::before { content: "\f862"; }
|
1913 |
-
.bi-sign-no-right-turn-fill::before { content: "\f863"; }
|
1914 |
-
.bi-sign-no-right-turn::before { content: "\f864"; }
|
1915 |
-
.bi-sign-railroad-fill::before { content: "\f865"; }
|
1916 |
-
.bi-sign-railroad::before { content: "\f866"; }
|
1917 |
-
.bi-building-add::before { content: "\f867"; }
|
1918 |
-
.bi-building-check::before { content: "\f868"; }
|
1919 |
-
.bi-building-dash::before { content: "\f869"; }
|
1920 |
-
.bi-building-down::before { content: "\f86a"; }
|
1921 |
-
.bi-building-exclamation::before { content: "\f86b"; }
|
1922 |
-
.bi-building-fill-add::before { content: "\f86c"; }
|
1923 |
-
.bi-building-fill-check::before { content: "\f86d"; }
|
1924 |
-
.bi-building-fill-dash::before { content: "\f86e"; }
|
1925 |
-
.bi-building-fill-down::before { content: "\f86f"; }
|
1926 |
-
.bi-building-fill-exclamation::before { content: "\f870"; }
|
1927 |
-
.bi-building-fill-gear::before { content: "\f871"; }
|
1928 |
-
.bi-building-fill-lock::before { content: "\f872"; }
|
1929 |
-
.bi-building-fill-slash::before { content: "\f873"; }
|
1930 |
-
.bi-building-fill-up::before { content: "\f874"; }
|
1931 |
-
.bi-building-fill-x::before { content: "\f875"; }
|
1932 |
-
.bi-building-fill::before { content: "\f876"; }
|
1933 |
-
.bi-building-gear::before { content: "\f877"; }
|
1934 |
-
.bi-building-lock::before { content: "\f878"; }
|
1935 |
-
.bi-building-slash::before { content: "\f879"; }
|
1936 |
-
.bi-building-up::before { content: "\f87a"; }
|
1937 |
-
.bi-building-x::before { content: "\f87b"; }
|
1938 |
-
.bi-buildings-fill::before { content: "\f87c"; }
|
1939 |
-
.bi-buildings::before { content: "\f87d"; }
|
1940 |
-
.bi-bus-front-fill::before { content: "\f87e"; }
|
1941 |
-
.bi-bus-front::before { content: "\f87f"; }
|
1942 |
-
.bi-ev-front-fill::before { content: "\f880"; }
|
1943 |
-
.bi-ev-front::before { content: "\f881"; }
|
1944 |
-
.bi-globe-americas::before { content: "\f882"; }
|
1945 |
-
.bi-globe-asia-australia::before { content: "\f883"; }
|
1946 |
-
.bi-globe-central-south-asia::before { content: "\f884"; }
|
1947 |
-
.bi-globe-europe-africa::before { content: "\f885"; }
|
1948 |
-
.bi-house-add-fill::before { content: "\f886"; }
|
1949 |
-
.bi-house-add::before { content: "\f887"; }
|
1950 |
-
.bi-house-check-fill::before { content: "\f888"; }
|
1951 |
-
.bi-house-check::before { content: "\f889"; }
|
1952 |
-
.bi-house-dash-fill::before { content: "\f88a"; }
|
1953 |
-
.bi-house-dash::before { content: "\f88b"; }
|
1954 |
-
.bi-house-down-fill::before { content: "\f88c"; }
|
1955 |
-
.bi-house-down::before { content: "\f88d"; }
|
1956 |
-
.bi-house-exclamation-fill::before { content: "\f88e"; }
|
1957 |
-
.bi-house-exclamation::before { content: "\f88f"; }
|
1958 |
-
.bi-house-gear-fill::before { content: "\f890"; }
|
1959 |
-
.bi-house-gear::before { content: "\f891"; }
|
1960 |
-
.bi-house-lock-fill::before { content: "\f892"; }
|
1961 |
-
.bi-house-lock::before { content: "\f893"; }
|
1962 |
-
.bi-house-slash-fill::before { content: "\f894"; }
|
1963 |
-
.bi-house-slash::before { content: "\f895"; }
|
1964 |
-
.bi-house-up-fill::before { content: "\f896"; }
|
1965 |
-
.bi-house-up::before { content: "\f897"; }
|
1966 |
-
.bi-house-x-fill::before { content: "\f898"; }
|
1967 |
-
.bi-house-x::before { content: "\f899"; }
|
1968 |
-
.bi-person-add::before { content: "\f89a"; }
|
1969 |
-
.bi-person-down::before { content: "\f89b"; }
|
1970 |
-
.bi-person-exclamation::before { content: "\f89c"; }
|
1971 |
-
.bi-person-fill-add::before { content: "\f89d"; }
|
1972 |
-
.bi-person-fill-check::before { content: "\f89e"; }
|
1973 |
-
.bi-person-fill-dash::before { content: "\f89f"; }
|
1974 |
-
.bi-person-fill-down::before { content: "\f8a0"; }
|
1975 |
-
.bi-person-fill-exclamation::before { content: "\f8a1"; }
|
1976 |
-
.bi-person-fill-gear::before { content: "\f8a2"; }
|
1977 |
-
.bi-person-fill-lock::before { content: "\f8a3"; }
|
1978 |
-
.bi-person-fill-slash::before { content: "\f8a4"; }
|
1979 |
-
.bi-person-fill-up::before { content: "\f8a5"; }
|
1980 |
-
.bi-person-fill-x::before { content: "\f8a6"; }
|
1981 |
-
.bi-person-gear::before { content: "\f8a7"; }
|
1982 |
-
.bi-person-lock::before { content: "\f8a8"; }
|
1983 |
-
.bi-person-slash::before { content: "\f8a9"; }
|
1984 |
-
.bi-person-up::before { content: "\f8aa"; }
|
1985 |
-
.bi-scooter::before { content: "\f8ab"; }
|
1986 |
-
.bi-taxi-front-fill::before { content: "\f8ac"; }
|
1987 |
-
.bi-taxi-front::before { content: "\f8ad"; }
|
1988 |
-
.bi-amd::before { content: "\f8ae"; }
|
1989 |
-
.bi-database-add::before { content: "\f8af"; }
|
1990 |
-
.bi-database-check::before { content: "\f8b0"; }
|
1991 |
-
.bi-database-dash::before { content: "\f8b1"; }
|
1992 |
-
.bi-database-down::before { content: "\f8b2"; }
|
1993 |
-
.bi-database-exclamation::before { content: "\f8b3"; }
|
1994 |
-
.bi-database-fill-add::before { content: "\f8b4"; }
|
1995 |
-
.bi-database-fill-check::before { content: "\f8b5"; }
|
1996 |
-
.bi-database-fill-dash::before { content: "\f8b6"; }
|
1997 |
-
.bi-database-fill-down::before { content: "\f8b7"; }
|
1998 |
-
.bi-database-fill-exclamation::before { content: "\f8b8"; }
|
1999 |
-
.bi-database-fill-gear::before { content: "\f8b9"; }
|
2000 |
-
.bi-database-fill-lock::before { content: "\f8ba"; }
|
2001 |
-
.bi-database-fill-slash::before { content: "\f8bb"; }
|
2002 |
-
.bi-database-fill-up::before { content: "\f8bc"; }
|
2003 |
-
.bi-database-fill-x::before { content: "\f8bd"; }
|
2004 |
-
.bi-database-fill::before { content: "\f8be"; }
|
2005 |
-
.bi-database-gear::before { content: "\f8bf"; }
|
2006 |
-
.bi-database-lock::before { content: "\f8c0"; }
|
2007 |
-
.bi-database-slash::before { content: "\f8c1"; }
|
2008 |
-
.bi-database-up::before { content: "\f8c2"; }
|
2009 |
-
.bi-database-x::before { content: "\f8c3"; }
|
2010 |
-
.bi-database::before { content: "\f8c4"; }
|
2011 |
-
.bi-houses-fill::before { content: "\f8c5"; }
|
2012 |
-
.bi-houses::before { content: "\f8c6"; }
|
2013 |
-
.bi-nvidia::before { content: "\f8c7"; }
|
2014 |
-
.bi-person-vcard-fill::before { content: "\f8c8"; }
|
2015 |
-
.bi-person-vcard::before { content: "\f8c9"; }
|
2016 |
-
.bi-sina-weibo::before { content: "\f8ca"; }
|
2017 |
-
.bi-tencent-qq::before { content: "\f8cb"; }
|
2018 |
-
.bi-wikipedia::before { content: "\f8cc"; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/bootstrap/bootstrap-icons.woff
DELETED
Binary file (164 kB)
|
|
_proc/_docs/site_libs/bootstrap/bootstrap.min.css
DELETED
The diff for this file is too large to render.
See raw diff
|
|
_proc/_docs/site_libs/bootstrap/bootstrap.min.js
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Bootstrap v5.1.3 (https://getbootstrap.com/)
|
3 |
-
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
5 |
-
*/
|
6 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;s<o;s++){const o=t[n[s]];if(o.originalHandler===e&&o.delegationSelector===i)return o}return null}function S(t,e,i){const n="string"==typeof e,s=n?i:e;let o=P(t);return k.has(o)||(o=t),[n,s,o]}function N(t,e,i,n,s){if("string"!=typeof e||!t)return;if(i||(i=n,n=null),C.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e<i.length;e++)if(Number.parseInt(i[e].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(t)){i[e].classList.add(it),i[e].setAttribute("aria-current","true");break}}}_updateInterval(){const t=this._activeElement||V.findOne(nt,this._element);if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const i=this._directionToOrder(t),n=V.findOne(nt,this._element),s=this._getItemIndex(n),o=e||this._getItemByOrder(i,n),r=this._getItemIndex(o),a=Boolean(this._interval),l=i===Q,c=l?"carousel-item-start":"carousel-item-end",h=l?"carousel-item-next":"carousel-item-prev",d=this._orderToDirection(i);if(o&&o.classList.contains(it))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(o,d).defaultPrevented)return;if(!n||!o)return;this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(o),this._activeElement=o;const f=()=>{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;e<i;e++)st.carouselInterface(t[e],st.getInstance(t[e]))})),g(st);const ot="collapse",rt={toggle:!0,parent:null},at={toggle:"boolean",parent:"(null|element)"},lt="show",ct="collapse",ht="collapsing",dt="collapsed",ut=":scope .collapse .collapse",ft='[data-bs-toggle="collapse"]';class pt extends B{constructor(t,e){super(t),this._isTransitioning=!1,this._config=this._getConfig(e),this._triggerArray=[];const n=V.find(ft);for(let t=0,e=n.length;t<e;t++){const e=n[t],s=i(e),o=V.find(s).filter((t=>t===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t<e;t++){const e=this._triggerArray[t],i=n(e);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O<v.length;O++){var C=v[O],k=Ut(C),L=ce(C)===wt,x=[mt,gt].indexOf(k)>=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function We(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Be:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:$t(t)?Ae(t):t.contextElement?Ae(t.contextElement):[],popper:Ae(e)};var r,c,u=function(t){var e=He(t);return Bt.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Re(e,i)){a.rects={reference:Me(e,te(i),"fixed"===a.options.strategy),popper:Kt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!Re(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var $e=We(),ze=We({defaultModifiers:[pe,Pe,ue,Ft]}),qe=We({defaultModifiers:[pe,Pe,ue,Ft,Ie,xe,je,le,Ne]});const Fe=Object.freeze({__proto__:null,popperGenerator:We,detectOverflow:ke,createPopperBase:$e,createPopper:qe,createPopperLite:ze,top:mt,bottom:gt,right:_t,left:bt,auto:vt,basePlacements:yt,start:wt,end:Et,clippingParents:At,viewport:Tt,popper:Ot,reference:Ct,variationPlacements:kt,placements:Lt,beforeRead:xt,read:Dt,afterRead:St,beforeMain:Nt,main:It,afterMain:Pt,beforeWrite:jt,write:Mt,afterWrite:Ht,modifierPhases:Bt,applyStyles:Ft,arrow:le,computeStyles:ue,eventListeners:pe,flip:xe,hide:Ne,offset:Ie,popperOffsets:Pe,preventOverflow:je}),Ue="dropdown",Ve="Escape",Ke="Space",Xe="ArrowUp",Ye="ArrowDown",Qe=new RegExp("ArrowUp|ArrowDown|Escape"),Ge="click.bs.dropdown.data-api",Ze="keydown.bs.dropdown.data-api",Je="show",ti='[data-bs-toggle="dropdown"]',ei=".dropdown-menu",ii=m()?"top-end":"top-start",ni=m()?"top-start":"top-end",si=m()?"bottom-end":"bottom-start",oi=m()?"bottom-start":"bottom-end",ri=m()?"left-start":"right-start",ai=m()?"right-start":"left-start",li={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},ci={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class hi extends B{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return li}static get DefaultType(){return ci}static get NAME(){return Ue}toggle(){return this._isShown()?this.hide():this.show()}show(){if(c(this._element)||this._isShown(this._menu))return;const t={relatedTarget:this._element};if(j.trigger(this._element,"show.bs.dropdown",t).defaultPrevented)return;const e=hi.getParentFromElement(this._element);this._inNavbar?U.setDataAttribute(this._menu,"popper","none"):this._createPopper(e),"ontouchstart"in document.documentElement&&!e.closest(".navbar-nav")&&[].concat(...document.body.children).forEach((t=>j.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;i<n;i++){const n=hi.getInstance(e[i]);if(!n||!1===n._config.autoClose)continue;if(!n._isShown())continue;const s={relatedTarget:n._element};if(t){const e=t.composedPath(),i=e.includes(n._menu);if(e.includes(n._element)||"inside"===n._config.autoClose&&!i||"outside"===n._config.autoClose&&i)continue;if(n._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;"click"===t.type&&(s.clickEvent=t)}n._completeHide(s)}}static getParentFromElement(t){return n(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?t.key===Ke||t.key!==Ve&&(t.key!==Ye&&t.key!==Xe||t.target.closest(ei)):!Qe.test(t.key))return;const e=this.classList.contains(Je);if(!e&&t.key===Ve)return;if(t.preventDefault(),t.stopPropagation(),c(this))return;const i=this.matches(ti)?this:V.prev(this,ti)[0],n=hi.getOrCreateInstance(i);if(t.key!==Ve)return t.key===Xe||t.key===Ye?(e||n.show(),void n._selectMenuItem(t)):void(e&&t.key!==Ke||hi.clearMenus());n.hide()}}j.on(document,Ze,ti,hi.dataApiKeydownHandler),j.on(document,Ze,ei,hi.dataApiKeydownHandler),j.on(document,Ge,hi.clearMenus),j.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),j.on(document,Ge,ti,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top";class fi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",(e=>e+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t<e;t++)if(n[t].test(i))return!0;return!1};function Yi(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(let t=0,i=s.length;t<i;t++){const i=s[t],n=i.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){i.remove();continue}const o=[].concat(...i.attributes),r=[].concat(e["*"]||[],e[n]||[]);o.forEach((t=>{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=wn.split(",").map((e=>`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}}));
|
7 |
-
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/clipboard/clipboard.min.js
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* clipboard.js v2.0.11
|
3 |
-
* https://clipboardjs.com/
|
4 |
-
*
|
5 |
-
* Licensed MIT © Zeno Rocha
|
6 |
-
*/
|
7 |
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=o(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=o(t.value,e):(n=r()(t),c("copy")),n};function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,o=t.container,e=t.target,t=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==e){if(!e||"object"!==l(e)||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?f(t,{container:o}):e?"cut"===n?a(e):f(e,{container:o}):void 0};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=v(n);return t=o?(t=v(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==p(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var b=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(r,i());var t,e,n,o=h(r);function r(t,e){var n;return function(t){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this),(n=o.call(this)).resolveOptions(e),n.listenClick(t),n}return t=r,n=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return f(t,e)}},{key:"cut",value:function(t){return a(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===p(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",t=s({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(t?"success":"error",{action:n,text:t,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return m("action",t)}},{key:"defaultTarget",value:function(t){t=m("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return m("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&d(t.prototype,e),n&&d(t,n),r}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var f=n(879),l=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!f.string(e))throw new TypeError("Second argument must be a String");if(!f.fn(n))throw new TypeError("Third argument must be a Function");if(f.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(f.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(f.string(t))return t=t,e=e,n=n,l(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){if(r[t])return r[t].exports;var e=r[t]={exports:{}};return n[t](e,e.exports,o),e.exports}var n,r});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-html/anchor.min.js
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
|
2 |
-
//
|
3 |
-
// AnchorJS - v4.3.1 - 2021-04-17
|
4 |
-
// https://www.bryanbraun.com/anchorjs/
|
5 |
-
// Copyright (c) 2021 Bryan Braun; Licensed MIT
|
6 |
-
//
|
7 |
-
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
|
8 |
-
!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function d(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function w(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],d(this.options),this.isTouchDevice=function(){return Boolean("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,o,i,n,s,a,c,r,l,h,u,p=[];if(d(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),0===(e=w(A=A||"h2, h3, h4, h5, h6")).length)return this;for(null===document.head.querySelector("style.anchorjs")&&((u=document.createElement("style")).className="anchorjs",u.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(u):document.head.insertBefore(u,A),u.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",u.sheet.cssRules.length),u.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",u.sheet.cssRules.length),u.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",u.sheet.cssRules.length),u.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',u.sheet.cssRules.length)),u=document.querySelectorAll("[id]"),t=[].map.call(u,function(A){return A.id}),i=0;i<e.length;i++)if(this.hasAnchorJSLink(e[i]))p.push(i);else{if(e[i].hasAttribute("id"))o=e[i].getAttribute("id");else if(e[i].hasAttribute("data-anchor-id"))o=e[i].getAttribute("data-anchor-id");else{for(c=a=this.urlify(e[i].textContent),s=0;n=t.indexOf(c=void 0!==n?a+"-"+s:c),s+=1,-1!==n;);n=void 0,t.push(c),e[i].setAttribute("id",c),o=c}(r=document.createElement("a")).className="anchorjs-link "+this.options.class,r.setAttribute("aria-label",this.options.ariaLabel),r.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(r.title=this.options.titleText),h=document.querySelector("base")?window.location.pathname+window.location.search:"",h=this.options.base||h,r.href=h+"#"+o,"always"===l&&(r.style.opacity="1"),""===this.options.icon&&(r.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(r.style.lineHeight="inherit")),"left"===this.options.placement?(r.style.position="absolute",r.style.marginLeft="-1em",r.style.paddingRight=".5em",e[i].insertBefore(r,e[i].firstChild)):(r.style.paddingLeft=".375em",e[i].appendChild(r))}for(i=0;i<p.length;i++)e.splice(p[i]-i,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,o=w(A),i=0;i<o.length;i++)(t=o[i].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(o[i]))&&this.elements.splice(e,1),o[i].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){var e=document.createElement("textarea");return e.innerHTML=A,A=e.value,this.options.truncate||d(this.options),A.trim().replace(/'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}});
|
9 |
-
// @license-end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-html/popper.min.js
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* @popperjs/core v2.11.4 - MIT License
|
3 |
-
*/
|
4 |
-
|
5 |
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function K(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,o=void 0===r?[]:r,i=t.defaultOptions,a=void 0===i?G:i;return function(e,t,r){void 0===r&&(r=a);var i,s,f={placement:"bottom",orderedModifiers:[],options:Object.assign({},G,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},c=[],p=!1,u={state:f,setOptions:function(r){var i="function"==typeof r?r(f.options):r;l(),f.options=Object.assign({},a,f.options,i),f.scrollParents={reference:n(e)?b(e):e.contextElement?b(e.contextElement):[],popper:b(t)};var s,p,d=function(e){var t=S(e);return R.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((s=[].concat(o,f.options.modifiers),p=s.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(p).map((function(e){return p[e]}))));return f.orderedModifiers=d.filter((function(e){return e.enabled})),f.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:f,name:t,instance:u,options:r}),a=function(){};c.push(i||a)}})),u.update()},forceUpdate:function(){if(!p){var e=f.elements,t=e.reference,n=e.popper;if(J(t,n)){f.rects={reference:m(t,O(n),"fixed"===f.options.strategy),popper:v(n)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach((function(e){return f.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<f.orderedModifiers.length;r++)if(!0!==f.reset){var o=f.orderedModifiers[r],i=o.fn,a=o.options,s=void 0===a?{}:a,c=o.name;"function"==typeof i&&(f=i({state:f,options:s,name:c,instance:u})||f)}else f.reset=!1,r=-1}}},update:(i=function(){return new Promise((function(e){u.forceUpdate(),e(f)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){l(),p=!0}};if(!J(e,t))return u;function l(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(r).then((function(e){!p&&r.onFirstUpdate&&r.onFirstUpdate(e)})),u}}var Q={passive:!0};var Z={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var n=e.state,r=e.instance,o=e.options,i=o.scroll,a=void 0===i||i,s=o.resize,f=void 0===s||s,c=t(n.elements.popper),p=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&p.forEach((function(e){e.addEventListener("scroll",r.update,Q)})),f&&c.addEventListener("resize",r.update,Q),function(){a&&p.forEach((function(e){e.removeEventListener("scroll",r.update,Q)})),f&&c.removeEventListener("resize",r.update,Q)}},data:{}};var $={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=U({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var n,r=e.popper,o=e.popperRect,i=e.placement,a=e.variation,f=e.offsets,c=e.position,p=e.gpuAcceleration,l=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=f.x,g=void 0===v?0:v,y=f.y,b=void 0===y?0:y,x="function"==typeof h?h({x:g,y:b}):{x:g,y:b};g=x.x,b=x.y;var w=f.hasOwnProperty("x"),L=f.hasOwnProperty("y"),P=A,M=j,W=window;if(l){var B=O(r),H="clientHeight",T="clientWidth";if(B===t(r)&&"static"!==d(B=u(r)).position&&"absolute"===c&&(H="scrollHeight",T="scrollWidth"),B=B,i===j||(i===A||i===D)&&a===k)M=E,b-=(m&&B===W&&W.visualViewport?W.visualViewport.height:B[H])-o.height,b*=p?1:-1;if(i===A||(i===j||i===E)&&a===k)P=D,g-=(m&&B===W&&W.visualViewport?W.visualViewport.width:B[T])-o.width,g*=p?1:-1}var R,S=Object.assign({position:c},l&&ee),C=!0===h?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:s(t*r)/r||0,y:s(n*r)/r||0}}({x:g,y:b}):{x:g,y:b};return g=C.x,b=C.y,p?Object.assign({},S,((R={})[M]=L?"0":"",R[P]=w?"0":"",R.transform=(W.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",R)):Object.assign({},S,((n={})[M]=L?b+"px":"",n[P]=w?g+"px":"",n.transform="",n))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:C(t.placement),variation:_(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var re={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&p(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&p(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};var oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=T.reduce((function(e,n){return e[n]=function(e,t,n){var r=C(e),o=[A,j].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W<b.length;W++){var B=b[W],H=C(B),T=_(B)===M,R=[j,E].indexOf(H)>=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})}));
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-html/quarto-syntax-highlighting.css
DELETED
@@ -1,203 +0,0 @@
|
|
1 |
-
/* quarto syntax highlight colors */
|
2 |
-
:root {
|
3 |
-
--quarto-hl-ot-color: #003B4F;
|
4 |
-
--quarto-hl-at-color: #657422;
|
5 |
-
--quarto-hl-ss-color: #20794D;
|
6 |
-
--quarto-hl-an-color: #5E5E5E;
|
7 |
-
--quarto-hl-fu-color: #4758AB;
|
8 |
-
--quarto-hl-st-color: #20794D;
|
9 |
-
--quarto-hl-cf-color: #003B4F;
|
10 |
-
--quarto-hl-op-color: #5E5E5E;
|
11 |
-
--quarto-hl-er-color: #AD0000;
|
12 |
-
--quarto-hl-bn-color: #AD0000;
|
13 |
-
--quarto-hl-al-color: #AD0000;
|
14 |
-
--quarto-hl-va-color: #111111;
|
15 |
-
--quarto-hl-bu-color: inherit;
|
16 |
-
--quarto-hl-ex-color: inherit;
|
17 |
-
--quarto-hl-pp-color: #AD0000;
|
18 |
-
--quarto-hl-in-color: #5E5E5E;
|
19 |
-
--quarto-hl-vs-color: #20794D;
|
20 |
-
--quarto-hl-wa-color: #5E5E5E;
|
21 |
-
--quarto-hl-do-color: #5E5E5E;
|
22 |
-
--quarto-hl-im-color: #00769E;
|
23 |
-
--quarto-hl-ch-color: #20794D;
|
24 |
-
--quarto-hl-dt-color: #AD0000;
|
25 |
-
--quarto-hl-fl-color: #AD0000;
|
26 |
-
--quarto-hl-co-color: #5E5E5E;
|
27 |
-
--quarto-hl-cv-color: #5E5E5E;
|
28 |
-
--quarto-hl-cn-color: #8f5902;
|
29 |
-
--quarto-hl-sc-color: #5E5E5E;
|
30 |
-
--quarto-hl-dv-color: #AD0000;
|
31 |
-
--quarto-hl-kw-color: #003B4F;
|
32 |
-
}
|
33 |
-
|
34 |
-
/* other quarto variables */
|
35 |
-
:root {
|
36 |
-
--quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
37 |
-
}
|
38 |
-
|
39 |
-
pre > code.sourceCode > span {
|
40 |
-
color: #003B4F;
|
41 |
-
}
|
42 |
-
|
43 |
-
code span {
|
44 |
-
color: #003B4F;
|
45 |
-
}
|
46 |
-
|
47 |
-
code.sourceCode > span {
|
48 |
-
color: #003B4F;
|
49 |
-
}
|
50 |
-
|
51 |
-
div.sourceCode,
|
52 |
-
div.sourceCode pre.sourceCode {
|
53 |
-
color: #003B4F;
|
54 |
-
}
|
55 |
-
|
56 |
-
code span.ot {
|
57 |
-
color: #003B4F;
|
58 |
-
font-style: inherit;
|
59 |
-
}
|
60 |
-
|
61 |
-
code span.at {
|
62 |
-
color: #657422;
|
63 |
-
font-style: inherit;
|
64 |
-
}
|
65 |
-
|
66 |
-
code span.ss {
|
67 |
-
color: #20794D;
|
68 |
-
font-style: inherit;
|
69 |
-
}
|
70 |
-
|
71 |
-
code span.an {
|
72 |
-
color: #5E5E5E;
|
73 |
-
font-style: inherit;
|
74 |
-
}
|
75 |
-
|
76 |
-
code span.fu {
|
77 |
-
color: #4758AB;
|
78 |
-
font-style: inherit;
|
79 |
-
}
|
80 |
-
|
81 |
-
code span.st {
|
82 |
-
color: #20794D;
|
83 |
-
font-style: inherit;
|
84 |
-
}
|
85 |
-
|
86 |
-
code span.cf {
|
87 |
-
color: #003B4F;
|
88 |
-
font-style: inherit;
|
89 |
-
}
|
90 |
-
|
91 |
-
code span.op {
|
92 |
-
color: #5E5E5E;
|
93 |
-
font-style: inherit;
|
94 |
-
}
|
95 |
-
|
96 |
-
code span.er {
|
97 |
-
color: #AD0000;
|
98 |
-
font-style: inherit;
|
99 |
-
}
|
100 |
-
|
101 |
-
code span.bn {
|
102 |
-
color: #AD0000;
|
103 |
-
font-style: inherit;
|
104 |
-
}
|
105 |
-
|
106 |
-
code span.al {
|
107 |
-
color: #AD0000;
|
108 |
-
font-style: inherit;
|
109 |
-
}
|
110 |
-
|
111 |
-
code span.va {
|
112 |
-
color: #111111;
|
113 |
-
font-style: inherit;
|
114 |
-
}
|
115 |
-
|
116 |
-
code span.bu {
|
117 |
-
font-style: inherit;
|
118 |
-
}
|
119 |
-
|
120 |
-
code span.ex {
|
121 |
-
font-style: inherit;
|
122 |
-
}
|
123 |
-
|
124 |
-
code span.pp {
|
125 |
-
color: #AD0000;
|
126 |
-
font-style: inherit;
|
127 |
-
}
|
128 |
-
|
129 |
-
code span.in {
|
130 |
-
color: #5E5E5E;
|
131 |
-
font-style: inherit;
|
132 |
-
}
|
133 |
-
|
134 |
-
code span.vs {
|
135 |
-
color: #20794D;
|
136 |
-
font-style: inherit;
|
137 |
-
}
|
138 |
-
|
139 |
-
code span.wa {
|
140 |
-
color: #5E5E5E;
|
141 |
-
font-style: italic;
|
142 |
-
}
|
143 |
-
|
144 |
-
code span.do {
|
145 |
-
color: #5E5E5E;
|
146 |
-
font-style: italic;
|
147 |
-
}
|
148 |
-
|
149 |
-
code span.im {
|
150 |
-
color: #00769E;
|
151 |
-
font-style: inherit;
|
152 |
-
}
|
153 |
-
|
154 |
-
code span.ch {
|
155 |
-
color: #20794D;
|
156 |
-
font-style: inherit;
|
157 |
-
}
|
158 |
-
|
159 |
-
code span.dt {
|
160 |
-
color: #AD0000;
|
161 |
-
font-style: inherit;
|
162 |
-
}
|
163 |
-
|
164 |
-
code span.fl {
|
165 |
-
color: #AD0000;
|
166 |
-
font-style: inherit;
|
167 |
-
}
|
168 |
-
|
169 |
-
code span.co {
|
170 |
-
color: #5E5E5E;
|
171 |
-
font-style: inherit;
|
172 |
-
}
|
173 |
-
|
174 |
-
code span.cv {
|
175 |
-
color: #5E5E5E;
|
176 |
-
font-style: italic;
|
177 |
-
}
|
178 |
-
|
179 |
-
code span.cn {
|
180 |
-
color: #8f5902;
|
181 |
-
font-style: inherit;
|
182 |
-
}
|
183 |
-
|
184 |
-
code span.sc {
|
185 |
-
color: #5E5E5E;
|
186 |
-
font-style: inherit;
|
187 |
-
}
|
188 |
-
|
189 |
-
code span.dv {
|
190 |
-
color: #AD0000;
|
191 |
-
font-style: inherit;
|
192 |
-
}
|
193 |
-
|
194 |
-
code span.kw {
|
195 |
-
color: #003B4F;
|
196 |
-
font-style: inherit;
|
197 |
-
}
|
198 |
-
|
199 |
-
.prevent-inlining {
|
200 |
-
content: "</";
|
201 |
-
}
|
202 |
-
|
203 |
-
/*# sourceMappingURL=debc5d5d77c3f9108843748ff7464032.css.map */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-html/quarto.js
DELETED
@@ -1,902 +0,0 @@
|
|
1 |
-
const sectionChanged = new CustomEvent("quarto-sectionChanged", {
|
2 |
-
detail: {},
|
3 |
-
bubbles: true,
|
4 |
-
cancelable: false,
|
5 |
-
composed: false,
|
6 |
-
});
|
7 |
-
|
8 |
-
const layoutMarginEls = () => {
|
9 |
-
// Find any conflicting margin elements and add margins to the
|
10 |
-
// top to prevent overlap
|
11 |
-
const marginChildren = window.document.querySelectorAll(
|
12 |
-
".column-margin.column-container > * "
|
13 |
-
);
|
14 |
-
|
15 |
-
let lastBottom = 0;
|
16 |
-
for (const marginChild of marginChildren) {
|
17 |
-
if (marginChild.offsetParent !== null) {
|
18 |
-
// clear the top margin so we recompute it
|
19 |
-
marginChild.style.marginTop = null;
|
20 |
-
const top = marginChild.getBoundingClientRect().top + window.scrollY;
|
21 |
-
console.log({
|
22 |
-
childtop: marginChild.getBoundingClientRect().top,
|
23 |
-
scroll: window.scrollY,
|
24 |
-
top,
|
25 |
-
lastBottom,
|
26 |
-
});
|
27 |
-
if (top < lastBottom) {
|
28 |
-
const margin = lastBottom - top;
|
29 |
-
marginChild.style.marginTop = `${margin}px`;
|
30 |
-
}
|
31 |
-
const styles = window.getComputedStyle(marginChild);
|
32 |
-
const marginTop = parseFloat(styles["marginTop"]);
|
33 |
-
|
34 |
-
console.log({
|
35 |
-
top,
|
36 |
-
height: marginChild.getBoundingClientRect().height,
|
37 |
-
marginTop,
|
38 |
-
total: top + marginChild.getBoundingClientRect().height + marginTop,
|
39 |
-
});
|
40 |
-
lastBottom = top + marginChild.getBoundingClientRect().height + marginTop;
|
41 |
-
}
|
42 |
-
}
|
43 |
-
};
|
44 |
-
|
45 |
-
window.document.addEventListener("DOMContentLoaded", function (_event) {
|
46 |
-
// Recompute the position of margin elements anytime the body size changes
|
47 |
-
if (window.ResizeObserver) {
|
48 |
-
const resizeObserver = new window.ResizeObserver(
|
49 |
-
throttle(layoutMarginEls, 50)
|
50 |
-
);
|
51 |
-
resizeObserver.observe(window.document.body);
|
52 |
-
}
|
53 |
-
|
54 |
-
const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]');
|
55 |
-
const sidebarEl = window.document.getElementById("quarto-sidebar");
|
56 |
-
const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left");
|
57 |
-
const marginSidebarEl = window.document.getElementById(
|
58 |
-
"quarto-margin-sidebar"
|
59 |
-
);
|
60 |
-
// function to determine whether the element has a previous sibling that is active
|
61 |
-
const prevSiblingIsActiveLink = (el) => {
|
62 |
-
const sibling = el.previousElementSibling;
|
63 |
-
if (sibling && sibling.tagName === "A") {
|
64 |
-
return sibling.classList.contains("active");
|
65 |
-
} else {
|
66 |
-
return false;
|
67 |
-
}
|
68 |
-
};
|
69 |
-
|
70 |
-
// fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior)
|
71 |
-
function fireSlideEnter(e) {
|
72 |
-
const event = window.document.createEvent("Event");
|
73 |
-
event.initEvent("slideenter", true, true);
|
74 |
-
window.document.dispatchEvent(event);
|
75 |
-
}
|
76 |
-
const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]');
|
77 |
-
tabs.forEach((tab) => {
|
78 |
-
tab.addEventListener("shown.bs.tab", fireSlideEnter);
|
79 |
-
});
|
80 |
-
|
81 |
-
// fire slideEnter for tabby tab activations (for htmlwidget resize behavior)
|
82 |
-
document.addEventListener("tabby", fireSlideEnter, false);
|
83 |
-
|
84 |
-
// Track scrolling and mark TOC links as active
|
85 |
-
// get table of contents and sidebar (bail if we don't have at least one)
|
86 |
-
const tocLinks = tocEl
|
87 |
-
? [...tocEl.querySelectorAll("a[data-scroll-target]")]
|
88 |
-
: [];
|
89 |
-
const makeActive = (link) => tocLinks[link].classList.add("active");
|
90 |
-
const removeActive = (link) => tocLinks[link].classList.remove("active");
|
91 |
-
const removeAllActive = () =>
|
92 |
-
[...Array(tocLinks.length).keys()].forEach((link) => removeActive(link));
|
93 |
-
|
94 |
-
// activate the anchor for a section associated with this TOC entry
|
95 |
-
tocLinks.forEach((link) => {
|
96 |
-
link.addEventListener("click", () => {
|
97 |
-
if (link.href.indexOf("#") !== -1) {
|
98 |
-
const anchor = link.href.split("#")[1];
|
99 |
-
const heading = window.document.querySelector(
|
100 |
-
`[data-anchor-id=${anchor}]`
|
101 |
-
);
|
102 |
-
if (heading) {
|
103 |
-
// Add the class
|
104 |
-
heading.classList.add("reveal-anchorjs-link");
|
105 |
-
|
106 |
-
// function to show the anchor
|
107 |
-
const handleMouseout = () => {
|
108 |
-
heading.classList.remove("reveal-anchorjs-link");
|
109 |
-
heading.removeEventListener("mouseout", handleMouseout);
|
110 |
-
};
|
111 |
-
|
112 |
-
// add a function to clear the anchor when the user mouses out of it
|
113 |
-
heading.addEventListener("mouseout", handleMouseout);
|
114 |
-
}
|
115 |
-
}
|
116 |
-
});
|
117 |
-
});
|
118 |
-
|
119 |
-
const sections = tocLinks.map((link) => {
|
120 |
-
const target = link.getAttribute("data-scroll-target");
|
121 |
-
if (target.startsWith("#")) {
|
122 |
-
return window.document.getElementById(decodeURI(`${target.slice(1)}`));
|
123 |
-
} else {
|
124 |
-
return window.document.querySelector(decodeURI(`${target}`));
|
125 |
-
}
|
126 |
-
});
|
127 |
-
|
128 |
-
const sectionMargin = 200;
|
129 |
-
let currentActive = 0;
|
130 |
-
// track whether we've initialized state the first time
|
131 |
-
let init = false;
|
132 |
-
|
133 |
-
const updateActiveLink = () => {
|
134 |
-
// The index from bottom to top (e.g. reversed list)
|
135 |
-
let sectionIndex = -1;
|
136 |
-
if (
|
137 |
-
window.innerHeight + window.pageYOffset >=
|
138 |
-
window.document.body.offsetHeight
|
139 |
-
) {
|
140 |
-
sectionIndex = 0;
|
141 |
-
} else {
|
142 |
-
sectionIndex = [...sections].reverse().findIndex((section) => {
|
143 |
-
if (section) {
|
144 |
-
return window.pageYOffset >= section.offsetTop - sectionMargin;
|
145 |
-
} else {
|
146 |
-
return false;
|
147 |
-
}
|
148 |
-
});
|
149 |
-
}
|
150 |
-
if (sectionIndex > -1) {
|
151 |
-
const current = sections.length - sectionIndex - 1;
|
152 |
-
if (current !== currentActive) {
|
153 |
-
removeAllActive();
|
154 |
-
currentActive = current;
|
155 |
-
makeActive(current);
|
156 |
-
if (init) {
|
157 |
-
window.dispatchEvent(sectionChanged);
|
158 |
-
}
|
159 |
-
init = true;
|
160 |
-
}
|
161 |
-
}
|
162 |
-
};
|
163 |
-
|
164 |
-
const inHiddenRegion = (top, bottom, hiddenRegions) => {
|
165 |
-
for (const region of hiddenRegions) {
|
166 |
-
if (top <= region.bottom && bottom >= region.top) {
|
167 |
-
return true;
|
168 |
-
}
|
169 |
-
}
|
170 |
-
return false;
|
171 |
-
};
|
172 |
-
|
173 |
-
const categorySelector = "header.quarto-title-block .quarto-category";
|
174 |
-
const activateCategories = (href) => {
|
175 |
-
// Find any categories
|
176 |
-
// Surround them with a link pointing back to:
|
177 |
-
// #category=Authoring
|
178 |
-
try {
|
179 |
-
const categoryEls = window.document.querySelectorAll(categorySelector);
|
180 |
-
for (const categoryEl of categoryEls) {
|
181 |
-
const categoryText = categoryEl.textContent;
|
182 |
-
if (categoryText) {
|
183 |
-
const link = `${href}#category=${encodeURIComponent(categoryText)}`;
|
184 |
-
const linkEl = window.document.createElement("a");
|
185 |
-
linkEl.setAttribute("href", link);
|
186 |
-
for (const child of categoryEl.childNodes) {
|
187 |
-
linkEl.append(child);
|
188 |
-
}
|
189 |
-
categoryEl.appendChild(linkEl);
|
190 |
-
}
|
191 |
-
}
|
192 |
-
} catch {
|
193 |
-
// Ignore errors
|
194 |
-
}
|
195 |
-
};
|
196 |
-
function hasTitleCategories() {
|
197 |
-
return window.document.querySelector(categorySelector) !== null;
|
198 |
-
}
|
199 |
-
|
200 |
-
function offsetRelativeUrl(url) {
|
201 |
-
const offset = getMeta("quarto:offset");
|
202 |
-
return offset ? offset + url : url;
|
203 |
-
}
|
204 |
-
|
205 |
-
function offsetAbsoluteUrl(url) {
|
206 |
-
const offset = getMeta("quarto:offset");
|
207 |
-
const baseUrl = new URL(offset, window.location);
|
208 |
-
|
209 |
-
const projRelativeUrl = url.replace(baseUrl, "");
|
210 |
-
if (projRelativeUrl.startsWith("/")) {
|
211 |
-
return projRelativeUrl;
|
212 |
-
} else {
|
213 |
-
return "/" + projRelativeUrl;
|
214 |
-
}
|
215 |
-
}
|
216 |
-
|
217 |
-
// read a meta tag value
|
218 |
-
function getMeta(metaName) {
|
219 |
-
const metas = window.document.getElementsByTagName("meta");
|
220 |
-
for (let i = 0; i < metas.length; i++) {
|
221 |
-
if (metas[i].getAttribute("name") === metaName) {
|
222 |
-
return metas[i].getAttribute("content");
|
223 |
-
}
|
224 |
-
}
|
225 |
-
return "";
|
226 |
-
}
|
227 |
-
|
228 |
-
async function findAndActivateCategories() {
|
229 |
-
const currentPagePath = offsetAbsoluteUrl(window.location.href);
|
230 |
-
const response = await fetch(offsetRelativeUrl("listings.json"));
|
231 |
-
if (response.status == 200) {
|
232 |
-
return response.json().then(function (listingPaths) {
|
233 |
-
const listingHrefs = [];
|
234 |
-
for (const listingPath of listingPaths) {
|
235 |
-
const pathWithoutLeadingSlash = listingPath.listing.substring(1);
|
236 |
-
for (const item of listingPath.items) {
|
237 |
-
if (
|
238 |
-
item === currentPagePath ||
|
239 |
-
item === currentPagePath + "index.html"
|
240 |
-
) {
|
241 |
-
// Resolve this path against the offset to be sure
|
242 |
-
// we already are using the correct path to the listing
|
243 |
-
// (this adjusts the listing urls to be rooted against
|
244 |
-
// whatever root the page is actually running against)
|
245 |
-
const relative = offsetRelativeUrl(pathWithoutLeadingSlash);
|
246 |
-
const baseUrl = window.location;
|
247 |
-
const resolvedPath = new URL(relative, baseUrl);
|
248 |
-
listingHrefs.push(resolvedPath.pathname);
|
249 |
-
break;
|
250 |
-
}
|
251 |
-
}
|
252 |
-
}
|
253 |
-
|
254 |
-
// Look up the tree for a nearby linting and use that if we find one
|
255 |
-
const nearestListing = findNearestParentListing(
|
256 |
-
offsetAbsoluteUrl(window.location.pathname),
|
257 |
-
listingHrefs
|
258 |
-
);
|
259 |
-
if (nearestListing) {
|
260 |
-
activateCategories(nearestListing);
|
261 |
-
} else {
|
262 |
-
// See if the referrer is a listing page for this item
|
263 |
-
const referredRelativePath = offsetAbsoluteUrl(document.referrer);
|
264 |
-
const referrerListing = listingHrefs.find((listingHref) => {
|
265 |
-
const isListingReferrer =
|
266 |
-
listingHref === referredRelativePath ||
|
267 |
-
listingHref === referredRelativePath + "index.html";
|
268 |
-
return isListingReferrer;
|
269 |
-
});
|
270 |
-
|
271 |
-
if (referrerListing) {
|
272 |
-
// Try to use the referrer if possible
|
273 |
-
activateCategories(referrerListing);
|
274 |
-
} else if (listingHrefs.length > 0) {
|
275 |
-
// Otherwise, just fall back to the first listing
|
276 |
-
activateCategories(listingHrefs[0]);
|
277 |
-
}
|
278 |
-
}
|
279 |
-
});
|
280 |
-
}
|
281 |
-
}
|
282 |
-
if (hasTitleCategories()) {
|
283 |
-
findAndActivateCategories();
|
284 |
-
}
|
285 |
-
|
286 |
-
const findNearestParentListing = (href, listingHrefs) => {
|
287 |
-
if (!href || !listingHrefs) {
|
288 |
-
return undefined;
|
289 |
-
}
|
290 |
-
// Look up the tree for a nearby linting and use that if we find one
|
291 |
-
const relativeParts = href.substring(1).split("/");
|
292 |
-
while (relativeParts.length > 0) {
|
293 |
-
const path = relativeParts.join("/");
|
294 |
-
for (const listingHref of listingHrefs) {
|
295 |
-
if (listingHref.startsWith(path)) {
|
296 |
-
return listingHref;
|
297 |
-
}
|
298 |
-
}
|
299 |
-
relativeParts.pop();
|
300 |
-
}
|
301 |
-
|
302 |
-
return undefined;
|
303 |
-
};
|
304 |
-
|
305 |
-
const manageSidebarVisiblity = (el, placeholderDescriptor) => {
|
306 |
-
let isVisible = true;
|
307 |
-
let elRect;
|
308 |
-
|
309 |
-
return (hiddenRegions) => {
|
310 |
-
if (el === null) {
|
311 |
-
return;
|
312 |
-
}
|
313 |
-
|
314 |
-
// Find the last element of the TOC
|
315 |
-
const lastChildEl = el.lastElementChild;
|
316 |
-
|
317 |
-
if (lastChildEl) {
|
318 |
-
// Converts the sidebar to a menu
|
319 |
-
const convertToMenu = () => {
|
320 |
-
for (const child of el.children) {
|
321 |
-
child.style.opacity = 0;
|
322 |
-
child.style.overflow = "hidden";
|
323 |
-
}
|
324 |
-
|
325 |
-
nexttick(() => {
|
326 |
-
const toggleContainer = window.document.createElement("div");
|
327 |
-
toggleContainer.style.width = "100%";
|
328 |
-
toggleContainer.classList.add("zindex-over-content");
|
329 |
-
toggleContainer.classList.add("quarto-sidebar-toggle");
|
330 |
-
toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom
|
331 |
-
toggleContainer.id = placeholderDescriptor.id;
|
332 |
-
toggleContainer.style.position = "fixed";
|
333 |
-
|
334 |
-
const toggleIcon = window.document.createElement("i");
|
335 |
-
toggleIcon.classList.add("quarto-sidebar-toggle-icon");
|
336 |
-
toggleIcon.classList.add("bi");
|
337 |
-
toggleIcon.classList.add("bi-caret-down-fill");
|
338 |
-
|
339 |
-
const toggleTitle = window.document.createElement("div");
|
340 |
-
const titleEl = window.document.body.querySelector(
|
341 |
-
placeholderDescriptor.titleSelector
|
342 |
-
);
|
343 |
-
if (titleEl) {
|
344 |
-
toggleTitle.append(
|
345 |
-
titleEl.textContent || titleEl.innerText,
|
346 |
-
toggleIcon
|
347 |
-
);
|
348 |
-
}
|
349 |
-
toggleTitle.classList.add("zindex-over-content");
|
350 |
-
toggleTitle.classList.add("quarto-sidebar-toggle-title");
|
351 |
-
toggleContainer.append(toggleTitle);
|
352 |
-
|
353 |
-
const toggleContents = window.document.createElement("div");
|
354 |
-
toggleContents.classList = el.classList;
|
355 |
-
toggleContents.classList.add("zindex-over-content");
|
356 |
-
toggleContents.classList.add("quarto-sidebar-toggle-contents");
|
357 |
-
for (const child of el.children) {
|
358 |
-
if (child.id === "toc-title") {
|
359 |
-
continue;
|
360 |
-
}
|
361 |
-
|
362 |
-
const clone = child.cloneNode(true);
|
363 |
-
clone.style.opacity = 1;
|
364 |
-
clone.style.display = null;
|
365 |
-
toggleContents.append(clone);
|
366 |
-
}
|
367 |
-
toggleContents.style.height = "0px";
|
368 |
-
const positionToggle = () => {
|
369 |
-
// position the element (top left of parent, same width as parent)
|
370 |
-
if (!elRect) {
|
371 |
-
elRect = el.getBoundingClientRect();
|
372 |
-
}
|
373 |
-
toggleContainer.style.left = `${elRect.left}px`;
|
374 |
-
toggleContainer.style.top = `${elRect.top}px`;
|
375 |
-
toggleContainer.style.width = `${elRect.width}px`;
|
376 |
-
};
|
377 |
-
positionToggle();
|
378 |
-
|
379 |
-
toggleContainer.append(toggleContents);
|
380 |
-
el.parentElement.prepend(toggleContainer);
|
381 |
-
|
382 |
-
// Process clicks
|
383 |
-
let tocShowing = false;
|
384 |
-
// Allow the caller to control whether this is dismissed
|
385 |
-
// when it is clicked (e.g. sidebar navigation supports
|
386 |
-
// opening and closing the nav tree, so don't dismiss on click)
|
387 |
-
const clickEl = placeholderDescriptor.dismissOnClick
|
388 |
-
? toggleContainer
|
389 |
-
: toggleTitle;
|
390 |
-
|
391 |
-
const closeToggle = () => {
|
392 |
-
if (tocShowing) {
|
393 |
-
toggleContainer.classList.remove("expanded");
|
394 |
-
toggleContents.style.height = "0px";
|
395 |
-
tocShowing = false;
|
396 |
-
}
|
397 |
-
};
|
398 |
-
|
399 |
-
// Get rid of any expanded toggle if the user scrolls
|
400 |
-
window.document.addEventListener(
|
401 |
-
"scroll",
|
402 |
-
throttle(() => {
|
403 |
-
closeToggle();
|
404 |
-
}, 50)
|
405 |
-
);
|
406 |
-
|
407 |
-
// Handle positioning of the toggle
|
408 |
-
window.addEventListener(
|
409 |
-
"resize",
|
410 |
-
throttle(() => {
|
411 |
-
elRect = undefined;
|
412 |
-
positionToggle();
|
413 |
-
}, 50)
|
414 |
-
);
|
415 |
-
|
416 |
-
window.addEventListener("quarto-hrChanged", () => {
|
417 |
-
elRect = undefined;
|
418 |
-
});
|
419 |
-
|
420 |
-
// Process the click
|
421 |
-
clickEl.onclick = () => {
|
422 |
-
if (!tocShowing) {
|
423 |
-
toggleContainer.classList.add("expanded");
|
424 |
-
toggleContents.style.height = null;
|
425 |
-
tocShowing = true;
|
426 |
-
} else {
|
427 |
-
closeToggle();
|
428 |
-
}
|
429 |
-
};
|
430 |
-
});
|
431 |
-
};
|
432 |
-
|
433 |
-
// Converts a sidebar from a menu back to a sidebar
|
434 |
-
const convertToSidebar = () => {
|
435 |
-
for (const child of el.children) {
|
436 |
-
child.style.opacity = 1;
|
437 |
-
child.style.overflow = null;
|
438 |
-
}
|
439 |
-
|
440 |
-
const placeholderEl = window.document.getElementById(
|
441 |
-
placeholderDescriptor.id
|
442 |
-
);
|
443 |
-
if (placeholderEl) {
|
444 |
-
placeholderEl.remove();
|
445 |
-
}
|
446 |
-
|
447 |
-
el.classList.remove("rollup");
|
448 |
-
};
|
449 |
-
|
450 |
-
if (isReaderMode()) {
|
451 |
-
convertToMenu();
|
452 |
-
isVisible = false;
|
453 |
-
} else {
|
454 |
-
// Find the top and bottom o the element that is being managed
|
455 |
-
const elTop = el.offsetTop;
|
456 |
-
const elBottom =
|
457 |
-
elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
|
458 |
-
|
459 |
-
if (!isVisible) {
|
460 |
-
// If the element is current not visible reveal if there are
|
461 |
-
// no conflicts with overlay regions
|
462 |
-
if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) {
|
463 |
-
convertToSidebar();
|
464 |
-
isVisible = true;
|
465 |
-
}
|
466 |
-
} else {
|
467 |
-
// If the element is visible, hide it if it conflicts with overlay regions
|
468 |
-
// and insert a placeholder toggle (or if we're in reader mode)
|
469 |
-
if (inHiddenRegion(elTop, elBottom, hiddenRegions)) {
|
470 |
-
convertToMenu();
|
471 |
-
isVisible = false;
|
472 |
-
}
|
473 |
-
}
|
474 |
-
}
|
475 |
-
}
|
476 |
-
};
|
477 |
-
};
|
478 |
-
|
479 |
-
const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]');
|
480 |
-
for (const tabEl of tabEls) {
|
481 |
-
const id = tabEl.getAttribute("data-bs-target");
|
482 |
-
if (id) {
|
483 |
-
const columnEl = document.querySelector(
|
484 |
-
`${id} .column-margin, .tabset-margin-content`
|
485 |
-
);
|
486 |
-
if (columnEl)
|
487 |
-
tabEl.addEventListener("shown.bs.tab", function (event) {
|
488 |
-
const el = event.srcElement;
|
489 |
-
if (el) {
|
490 |
-
const visibleCls = `${el.id}-margin-content`;
|
491 |
-
// walk up until we find a parent tabset
|
492 |
-
let panelTabsetEl = el.parentElement;
|
493 |
-
while (panelTabsetEl) {
|
494 |
-
if (panelTabsetEl.classList.contains("panel-tabset")) {
|
495 |
-
break;
|
496 |
-
}
|
497 |
-
panelTabsetEl = panelTabsetEl.parentElement;
|
498 |
-
}
|
499 |
-
|
500 |
-
if (panelTabsetEl) {
|
501 |
-
const prevSib = panelTabsetEl.previousElementSibling;
|
502 |
-
if (
|
503 |
-
prevSib &&
|
504 |
-
prevSib.classList.contains("tabset-margin-container")
|
505 |
-
) {
|
506 |
-
const childNodes = prevSib.querySelectorAll(
|
507 |
-
".tabset-margin-content"
|
508 |
-
);
|
509 |
-
for (const childEl of childNodes) {
|
510 |
-
if (childEl.classList.contains(visibleCls)) {
|
511 |
-
childEl.classList.remove("collapse");
|
512 |
-
} else {
|
513 |
-
childEl.classList.add("collapse");
|
514 |
-
}
|
515 |
-
}
|
516 |
-
}
|
517 |
-
}
|
518 |
-
}
|
519 |
-
|
520 |
-
layoutMarginEls();
|
521 |
-
});
|
522 |
-
}
|
523 |
-
}
|
524 |
-
|
525 |
-
// Manage the visibility of the toc and the sidebar
|
526 |
-
const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, {
|
527 |
-
id: "quarto-toc-toggle",
|
528 |
-
titleSelector: "#toc-title",
|
529 |
-
dismissOnClick: true,
|
530 |
-
});
|
531 |
-
const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, {
|
532 |
-
id: "quarto-sidebarnav-toggle",
|
533 |
-
titleSelector: ".title",
|
534 |
-
dismissOnClick: false,
|
535 |
-
});
|
536 |
-
let tocLeftScrollVisibility;
|
537 |
-
if (leftTocEl) {
|
538 |
-
tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, {
|
539 |
-
id: "quarto-lefttoc-toggle",
|
540 |
-
titleSelector: "#toc-title",
|
541 |
-
dismissOnClick: true,
|
542 |
-
});
|
543 |
-
}
|
544 |
-
|
545 |
-
// Find the first element that uses formatting in special columns
|
546 |
-
const conflictingEls = window.document.body.querySelectorAll(
|
547 |
-
'[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]'
|
548 |
-
);
|
549 |
-
|
550 |
-
// Filter all the possibly conflicting elements into ones
|
551 |
-
// the do conflict on the left or ride side
|
552 |
-
const arrConflictingEls = Array.from(conflictingEls);
|
553 |
-
const leftSideConflictEls = arrConflictingEls.filter((el) => {
|
554 |
-
if (el.tagName === "ASIDE") {
|
555 |
-
return false;
|
556 |
-
}
|
557 |
-
return Array.from(el.classList).find((className) => {
|
558 |
-
return (
|
559 |
-
className !== "column-body" &&
|
560 |
-
className.startsWith("column-") &&
|
561 |
-
!className.endsWith("right") &&
|
562 |
-
!className.endsWith("container") &&
|
563 |
-
className !== "column-margin"
|
564 |
-
);
|
565 |
-
});
|
566 |
-
});
|
567 |
-
const rightSideConflictEls = arrConflictingEls.filter((el) => {
|
568 |
-
if (el.tagName === "ASIDE") {
|
569 |
-
return true;
|
570 |
-
}
|
571 |
-
|
572 |
-
const hasMarginCaption = Array.from(el.classList).find((className) => {
|
573 |
-
return className == "margin-caption";
|
574 |
-
});
|
575 |
-
if (hasMarginCaption) {
|
576 |
-
return true;
|
577 |
-
}
|
578 |
-
|
579 |
-
return Array.from(el.classList).find((className) => {
|
580 |
-
return (
|
581 |
-
className !== "column-body" &&
|
582 |
-
!className.endsWith("container") &&
|
583 |
-
className.startsWith("column-") &&
|
584 |
-
!className.endsWith("left")
|
585 |
-
);
|
586 |
-
});
|
587 |
-
});
|
588 |
-
|
589 |
-
const kOverlapPaddingSize = 10;
|
590 |
-
function toRegions(els) {
|
591 |
-
return els.map((el) => {
|
592 |
-
const boundRect = el.getBoundingClientRect();
|
593 |
-
const top =
|
594 |
-
boundRect.top +
|
595 |
-
document.documentElement.scrollTop -
|
596 |
-
kOverlapPaddingSize;
|
597 |
-
return {
|
598 |
-
top,
|
599 |
-
bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize,
|
600 |
-
};
|
601 |
-
});
|
602 |
-
}
|
603 |
-
|
604 |
-
let hasObserved = false;
|
605 |
-
const visibleItemObserver = (els) => {
|
606 |
-
let visibleElements = [...els];
|
607 |
-
const intersectionObserver = new IntersectionObserver(
|
608 |
-
(entries, _observer) => {
|
609 |
-
entries.forEach((entry) => {
|
610 |
-
if (entry.isIntersecting) {
|
611 |
-
if (visibleElements.indexOf(entry.target) === -1) {
|
612 |
-
visibleElements.push(entry.target);
|
613 |
-
}
|
614 |
-
} else {
|
615 |
-
visibleElements = visibleElements.filter((visibleEntry) => {
|
616 |
-
return visibleEntry !== entry;
|
617 |
-
});
|
618 |
-
}
|
619 |
-
});
|
620 |
-
|
621 |
-
if (!hasObserved) {
|
622 |
-
hideOverlappedSidebars();
|
623 |
-
}
|
624 |
-
hasObserved = true;
|
625 |
-
},
|
626 |
-
{}
|
627 |
-
);
|
628 |
-
els.forEach((el) => {
|
629 |
-
intersectionObserver.observe(el);
|
630 |
-
});
|
631 |
-
|
632 |
-
return {
|
633 |
-
getVisibleEntries: () => {
|
634 |
-
return visibleElements;
|
635 |
-
},
|
636 |
-
};
|
637 |
-
};
|
638 |
-
|
639 |
-
const rightElementObserver = visibleItemObserver(rightSideConflictEls);
|
640 |
-
const leftElementObserver = visibleItemObserver(leftSideConflictEls);
|
641 |
-
|
642 |
-
const hideOverlappedSidebars = () => {
|
643 |
-
marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries()));
|
644 |
-
sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries()));
|
645 |
-
if (tocLeftScrollVisibility) {
|
646 |
-
tocLeftScrollVisibility(
|
647 |
-
toRegions(leftElementObserver.getVisibleEntries())
|
648 |
-
);
|
649 |
-
}
|
650 |
-
};
|
651 |
-
|
652 |
-
window.quartoToggleReader = () => {
|
653 |
-
// Applies a slow class (or removes it)
|
654 |
-
// to update the transition speed
|
655 |
-
const slowTransition = (slow) => {
|
656 |
-
const manageTransition = (id, slow) => {
|
657 |
-
const el = document.getElementById(id);
|
658 |
-
if (el) {
|
659 |
-
if (slow) {
|
660 |
-
el.classList.add("slow");
|
661 |
-
} else {
|
662 |
-
el.classList.remove("slow");
|
663 |
-
}
|
664 |
-
}
|
665 |
-
};
|
666 |
-
|
667 |
-
manageTransition("TOC", slow);
|
668 |
-
manageTransition("quarto-sidebar", slow);
|
669 |
-
};
|
670 |
-
const readerMode = !isReaderMode();
|
671 |
-
setReaderModeValue(readerMode);
|
672 |
-
|
673 |
-
// If we're entering reader mode, slow the transition
|
674 |
-
if (readerMode) {
|
675 |
-
slowTransition(readerMode);
|
676 |
-
}
|
677 |
-
highlightReaderToggle(readerMode);
|
678 |
-
hideOverlappedSidebars();
|
679 |
-
|
680 |
-
// If we're exiting reader mode, restore the non-slow transition
|
681 |
-
if (!readerMode) {
|
682 |
-
slowTransition(!readerMode);
|
683 |
-
}
|
684 |
-
};
|
685 |
-
|
686 |
-
const highlightReaderToggle = (readerMode) => {
|
687 |
-
const els = document.querySelectorAll(".quarto-reader-toggle");
|
688 |
-
if (els) {
|
689 |
-
els.forEach((el) => {
|
690 |
-
if (readerMode) {
|
691 |
-
el.classList.add("reader");
|
692 |
-
} else {
|
693 |
-
el.classList.remove("reader");
|
694 |
-
}
|
695 |
-
});
|
696 |
-
}
|
697 |
-
};
|
698 |
-
|
699 |
-
const setReaderModeValue = (val) => {
|
700 |
-
if (window.location.protocol !== "file:") {
|
701 |
-
window.localStorage.setItem("quarto-reader-mode", val);
|
702 |
-
} else {
|
703 |
-
localReaderMode = val;
|
704 |
-
}
|
705 |
-
};
|
706 |
-
|
707 |
-
const isReaderMode = () => {
|
708 |
-
if (window.location.protocol !== "file:") {
|
709 |
-
return window.localStorage.getItem("quarto-reader-mode") === "true";
|
710 |
-
} else {
|
711 |
-
return localReaderMode;
|
712 |
-
}
|
713 |
-
};
|
714 |
-
let localReaderMode = null;
|
715 |
-
|
716 |
-
const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded");
|
717 |
-
const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1;
|
718 |
-
|
719 |
-
// Walk the TOC and collapse/expand nodes
|
720 |
-
// Nodes are expanded if:
|
721 |
-
// - they are top level
|
722 |
-
// - they have children that are 'active' links
|
723 |
-
// - they are directly below an link that is 'active'
|
724 |
-
const walk = (el, depth) => {
|
725 |
-
// Tick depth when we enter a UL
|
726 |
-
if (el.tagName === "UL") {
|
727 |
-
depth = depth + 1;
|
728 |
-
}
|
729 |
-
|
730 |
-
// It this is active link
|
731 |
-
let isActiveNode = false;
|
732 |
-
if (el.tagName === "A" && el.classList.contains("active")) {
|
733 |
-
isActiveNode = true;
|
734 |
-
}
|
735 |
-
|
736 |
-
// See if there is an active child to this element
|
737 |
-
let hasActiveChild = false;
|
738 |
-
for (child of el.children) {
|
739 |
-
hasActiveChild = walk(child, depth) || hasActiveChild;
|
740 |
-
}
|
741 |
-
|
742 |
-
// Process the collapse state if this is an UL
|
743 |
-
if (el.tagName === "UL") {
|
744 |
-
if (tocOpenDepth === -1 && depth > 1) {
|
745 |
-
el.classList.add("collapse");
|
746 |
-
} else if (
|
747 |
-
depth <= tocOpenDepth ||
|
748 |
-
hasActiveChild ||
|
749 |
-
prevSiblingIsActiveLink(el)
|
750 |
-
) {
|
751 |
-
el.classList.remove("collapse");
|
752 |
-
} else {
|
753 |
-
el.classList.add("collapse");
|
754 |
-
}
|
755 |
-
|
756 |
-
// untick depth when we leave a UL
|
757 |
-
depth = depth - 1;
|
758 |
-
}
|
759 |
-
return hasActiveChild || isActiveNode;
|
760 |
-
};
|
761 |
-
|
762 |
-
// walk the TOC and expand / collapse any items that should be shown
|
763 |
-
|
764 |
-
if (tocEl) {
|
765 |
-
walk(tocEl, 0);
|
766 |
-
updateActiveLink();
|
767 |
-
}
|
768 |
-
|
769 |
-
// Throttle the scroll event and walk peridiocally
|
770 |
-
window.document.addEventListener(
|
771 |
-
"scroll",
|
772 |
-
throttle(() => {
|
773 |
-
if (tocEl) {
|
774 |
-
updateActiveLink();
|
775 |
-
walk(tocEl, 0);
|
776 |
-
}
|
777 |
-
if (!isReaderMode()) {
|
778 |
-
hideOverlappedSidebars();
|
779 |
-
}
|
780 |
-
}, 5)
|
781 |
-
);
|
782 |
-
window.addEventListener(
|
783 |
-
"resize",
|
784 |
-
throttle(() => {
|
785 |
-
if (!isReaderMode()) {
|
786 |
-
hideOverlappedSidebars();
|
787 |
-
}
|
788 |
-
}, 10)
|
789 |
-
);
|
790 |
-
hideOverlappedSidebars();
|
791 |
-
highlightReaderToggle(isReaderMode());
|
792 |
-
});
|
793 |
-
|
794 |
-
// grouped tabsets
|
795 |
-
window.addEventListener("pageshow", (_event) => {
|
796 |
-
function getTabSettings() {
|
797 |
-
const data = localStorage.getItem("quarto-persistent-tabsets-data");
|
798 |
-
if (!data) {
|
799 |
-
localStorage.setItem("quarto-persistent-tabsets-data", "{}");
|
800 |
-
return {};
|
801 |
-
}
|
802 |
-
if (data) {
|
803 |
-
return JSON.parse(data);
|
804 |
-
}
|
805 |
-
}
|
806 |
-
|
807 |
-
function setTabSettings(data) {
|
808 |
-
localStorage.setItem(
|
809 |
-
"quarto-persistent-tabsets-data",
|
810 |
-
JSON.stringify(data)
|
811 |
-
);
|
812 |
-
}
|
813 |
-
|
814 |
-
function setTabState(groupName, groupValue) {
|
815 |
-
const data = getTabSettings();
|
816 |
-
data[groupName] = groupValue;
|
817 |
-
setTabSettings(data);
|
818 |
-
}
|
819 |
-
|
820 |
-
function toggleTab(tab, active) {
|
821 |
-
const tabPanelId = tab.getAttribute("aria-controls");
|
822 |
-
const tabPanel = document.getElementById(tabPanelId);
|
823 |
-
if (active) {
|
824 |
-
tab.classList.add("active");
|
825 |
-
tabPanel.classList.add("active");
|
826 |
-
} else {
|
827 |
-
tab.classList.remove("active");
|
828 |
-
tabPanel.classList.remove("active");
|
829 |
-
}
|
830 |
-
}
|
831 |
-
|
832 |
-
function toggleAll(selectedGroup, selectorsToSync) {
|
833 |
-
for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) {
|
834 |
-
const active = selectedGroup === thisGroup;
|
835 |
-
for (const tab of tabs) {
|
836 |
-
toggleTab(tab, active);
|
837 |
-
}
|
838 |
-
}
|
839 |
-
}
|
840 |
-
|
841 |
-
function findSelectorsToSyncByLanguage() {
|
842 |
-
const result = {};
|
843 |
-
const tabs = Array.from(
|
844 |
-
document.querySelectorAll(`div[data-group] a[id^='tabset-']`)
|
845 |
-
);
|
846 |
-
for (const item of tabs) {
|
847 |
-
const div = item.parentElement.parentElement.parentElement;
|
848 |
-
const group = div.getAttribute("data-group");
|
849 |
-
if (!result[group]) {
|
850 |
-
result[group] = {};
|
851 |
-
}
|
852 |
-
const selectorsToSync = result[group];
|
853 |
-
const value = item.innerHTML;
|
854 |
-
if (!selectorsToSync[value]) {
|
855 |
-
selectorsToSync[value] = [];
|
856 |
-
}
|
857 |
-
selectorsToSync[value].push(item);
|
858 |
-
}
|
859 |
-
return result;
|
860 |
-
}
|
861 |
-
|
862 |
-
function setupSelectorSync() {
|
863 |
-
const selectorsToSync = findSelectorsToSyncByLanguage();
|
864 |
-
Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => {
|
865 |
-
Object.entries(tabSetsByValue).forEach(([value, items]) => {
|
866 |
-
items.forEach((item) => {
|
867 |
-
item.addEventListener("click", (_event) => {
|
868 |
-
setTabState(group, value);
|
869 |
-
toggleAll(value, selectorsToSync[group]);
|
870 |
-
});
|
871 |
-
});
|
872 |
-
});
|
873 |
-
});
|
874 |
-
return selectorsToSync;
|
875 |
-
}
|
876 |
-
|
877 |
-
const selectorsToSync = setupSelectorSync();
|
878 |
-
for (const [group, selectedName] of Object.entries(getTabSettings())) {
|
879 |
-
const selectors = selectorsToSync[group];
|
880 |
-
// it's possible that stale state gives us empty selections, so we explicitly check here.
|
881 |
-
if (selectors) {
|
882 |
-
toggleAll(selectedName, selectors);
|
883 |
-
}
|
884 |
-
}
|
885 |
-
});
|
886 |
-
|
887 |
-
function throttle(func, wait) {
|
888 |
-
let waiting = false;
|
889 |
-
return function () {
|
890 |
-
if (!waiting) {
|
891 |
-
func.apply(this, arguments);
|
892 |
-
waiting = true;
|
893 |
-
setTimeout(function () {
|
894 |
-
waiting = false;
|
895 |
-
}, wait);
|
896 |
-
}
|
897 |
-
};
|
898 |
-
}
|
899 |
-
|
900 |
-
function nexttick(func) {
|
901 |
-
return setTimeout(func, 0);
|
902 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-html/tippy.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}
|
|
|
|
_proc/_docs/site_libs/quarto-html/tippy.umd.min.js
DELETED
@@ -1,2 +0,0 @@
|
|
1 |
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>',F}));
|
2 |
-
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-nav/headroom.min.js
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it
|
3 |
-
* Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js
|
4 |
-
* License: MIT
|
5 |
-
*/
|
6 |
-
|
7 |
-
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=l<t?"down":"up",a.distance=Math.abs(t-l),a.isOutOfBounds=t<0||o<t+n,a.top=t<=s.offset[a.direction],a.bottom=o<=t+n,a.toleranceExceeded=a.distance>s.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-nav/quarto-nav.js
DELETED
@@ -1,277 +0,0 @@
|
|
1 |
-
const headroomChanged = new CustomEvent("quarto-hrChanged", {
|
2 |
-
detail: {},
|
3 |
-
bubbles: true,
|
4 |
-
cancelable: false,
|
5 |
-
composed: false,
|
6 |
-
});
|
7 |
-
|
8 |
-
window.document.addEventListener("DOMContentLoaded", function () {
|
9 |
-
let init = false;
|
10 |
-
|
11 |
-
// Manage the back to top button, if one is present.
|
12 |
-
let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
13 |
-
const scrollDownBuffer = 5;
|
14 |
-
const scrollUpBuffer = 35;
|
15 |
-
const btn = document.getElementById("quarto-back-to-top");
|
16 |
-
const hideBackToTop = () => {
|
17 |
-
btn.style.display = "none";
|
18 |
-
};
|
19 |
-
const showBackToTop = () => {
|
20 |
-
btn.style.display = "inline-block";
|
21 |
-
};
|
22 |
-
if (btn) {
|
23 |
-
window.document.addEventListener(
|
24 |
-
"scroll",
|
25 |
-
function () {
|
26 |
-
const currentScrollTop =
|
27 |
-
window.pageYOffset || document.documentElement.scrollTop;
|
28 |
-
|
29 |
-
// Shows and hides the button 'intelligently' as the user scrolls
|
30 |
-
if (currentScrollTop - scrollDownBuffer > lastScrollTop) {
|
31 |
-
hideBackToTop();
|
32 |
-
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
|
33 |
-
} else if (currentScrollTop < lastScrollTop - scrollUpBuffer) {
|
34 |
-
showBackToTop();
|
35 |
-
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
|
36 |
-
}
|
37 |
-
|
38 |
-
// Show the button at the bottom, hides it at the top
|
39 |
-
if (currentScrollTop <= 0) {
|
40 |
-
hideBackToTop();
|
41 |
-
} else if (
|
42 |
-
window.innerHeight + currentScrollTop >=
|
43 |
-
document.body.offsetHeight
|
44 |
-
) {
|
45 |
-
showBackToTop();
|
46 |
-
}
|
47 |
-
},
|
48 |
-
false
|
49 |
-
);
|
50 |
-
}
|
51 |
-
|
52 |
-
function throttle(func, wait) {
|
53 |
-
var timeout;
|
54 |
-
return function () {
|
55 |
-
const context = this;
|
56 |
-
const args = arguments;
|
57 |
-
const later = function () {
|
58 |
-
clearTimeout(timeout);
|
59 |
-
timeout = null;
|
60 |
-
func.apply(context, args);
|
61 |
-
};
|
62 |
-
|
63 |
-
if (!timeout) {
|
64 |
-
timeout = setTimeout(later, wait);
|
65 |
-
}
|
66 |
-
};
|
67 |
-
}
|
68 |
-
|
69 |
-
function headerOffset() {
|
70 |
-
// Set an offset if there is are fixed top navbar
|
71 |
-
const headerEl = window.document.querySelector("header.fixed-top");
|
72 |
-
if (headerEl) {
|
73 |
-
return headerEl.clientHeight;
|
74 |
-
} else {
|
75 |
-
return 0;
|
76 |
-
}
|
77 |
-
}
|
78 |
-
|
79 |
-
function footerOffset() {
|
80 |
-
const footerEl = window.document.querySelector("footer.footer");
|
81 |
-
if (footerEl) {
|
82 |
-
return footerEl.clientHeight;
|
83 |
-
} else {
|
84 |
-
return 0;
|
85 |
-
}
|
86 |
-
}
|
87 |
-
|
88 |
-
function updateDocumentOffsetWithoutAnimation() {
|
89 |
-
updateDocumentOffset(false);
|
90 |
-
}
|
91 |
-
|
92 |
-
function updateDocumentOffset(animated) {
|
93 |
-
// set body offset
|
94 |
-
const topOffset = headerOffset();
|
95 |
-
const bodyOffset = topOffset + footerOffset();
|
96 |
-
const bodyEl = window.document.body;
|
97 |
-
bodyEl.setAttribute("data-bs-offset", topOffset);
|
98 |
-
bodyEl.style.paddingTop = topOffset + "px";
|
99 |
-
|
100 |
-
// deal with sidebar offsets
|
101 |
-
const sidebars = window.document.querySelectorAll(
|
102 |
-
".sidebar, .headroom-target"
|
103 |
-
);
|
104 |
-
sidebars.forEach((sidebar) => {
|
105 |
-
if (!animated) {
|
106 |
-
sidebar.classList.add("notransition");
|
107 |
-
// Remove the no transition class after the animation has time to complete
|
108 |
-
setTimeout(function () {
|
109 |
-
sidebar.classList.remove("notransition");
|
110 |
-
}, 201);
|
111 |
-
}
|
112 |
-
|
113 |
-
if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) {
|
114 |
-
sidebar.style.top = "0";
|
115 |
-
sidebar.style.maxHeight = "100vh";
|
116 |
-
} else {
|
117 |
-
sidebar.style.top = topOffset + "px";
|
118 |
-
sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)";
|
119 |
-
}
|
120 |
-
});
|
121 |
-
|
122 |
-
// allow space for footer
|
123 |
-
const mainContainer = window.document.querySelector(".quarto-container");
|
124 |
-
if (mainContainer) {
|
125 |
-
mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)";
|
126 |
-
}
|
127 |
-
|
128 |
-
// link offset
|
129 |
-
let linkStyle = window.document.querySelector("#quarto-target-style");
|
130 |
-
if (!linkStyle) {
|
131 |
-
linkStyle = window.document.createElement("style");
|
132 |
-
linkStyle.setAttribute("id", "quarto-target-style");
|
133 |
-
window.document.head.appendChild(linkStyle);
|
134 |
-
}
|
135 |
-
while (linkStyle.firstChild) {
|
136 |
-
linkStyle.removeChild(linkStyle.firstChild);
|
137 |
-
}
|
138 |
-
if (topOffset > 0) {
|
139 |
-
linkStyle.appendChild(
|
140 |
-
window.document.createTextNode(`
|
141 |
-
section:target::before {
|
142 |
-
content: "";
|
143 |
-
display: block;
|
144 |
-
height: ${topOffset}px;
|
145 |
-
margin: -${topOffset}px 0 0;
|
146 |
-
}`)
|
147 |
-
);
|
148 |
-
}
|
149 |
-
if (init) {
|
150 |
-
window.dispatchEvent(headroomChanged);
|
151 |
-
}
|
152 |
-
init = true;
|
153 |
-
}
|
154 |
-
|
155 |
-
// initialize headroom
|
156 |
-
var header = window.document.querySelector("#quarto-header");
|
157 |
-
if (header && window.Headroom) {
|
158 |
-
const headroom = new window.Headroom(header, {
|
159 |
-
tolerance: 5,
|
160 |
-
onPin: function () {
|
161 |
-
const sidebars = window.document.querySelectorAll(
|
162 |
-
".sidebar, .headroom-target"
|
163 |
-
);
|
164 |
-
sidebars.forEach((sidebar) => {
|
165 |
-
sidebar.classList.remove("sidebar-unpinned");
|
166 |
-
});
|
167 |
-
updateDocumentOffset();
|
168 |
-
},
|
169 |
-
onUnpin: function () {
|
170 |
-
const sidebars = window.document.querySelectorAll(
|
171 |
-
".sidebar, .headroom-target"
|
172 |
-
);
|
173 |
-
sidebars.forEach((sidebar) => {
|
174 |
-
sidebar.classList.add("sidebar-unpinned");
|
175 |
-
});
|
176 |
-
updateDocumentOffset();
|
177 |
-
},
|
178 |
-
});
|
179 |
-
headroom.init();
|
180 |
-
|
181 |
-
let frozen = false;
|
182 |
-
window.quartoToggleHeadroom = function () {
|
183 |
-
if (frozen) {
|
184 |
-
headroom.unfreeze();
|
185 |
-
frozen = false;
|
186 |
-
} else {
|
187 |
-
headroom.freeze();
|
188 |
-
frozen = true;
|
189 |
-
}
|
190 |
-
};
|
191 |
-
}
|
192 |
-
|
193 |
-
window.addEventListener(
|
194 |
-
"hashchange",
|
195 |
-
function (e) {
|
196 |
-
if (
|
197 |
-
getComputedStyle(document.documentElement).scrollBehavior !== "smooth"
|
198 |
-
) {
|
199 |
-
window.scrollTo(0, window.pageYOffset - headerOffset());
|
200 |
-
}
|
201 |
-
},
|
202 |
-
false
|
203 |
-
);
|
204 |
-
|
205 |
-
// Observe size changed for the header
|
206 |
-
const headerEl = window.document.querySelector("header.fixed-top");
|
207 |
-
if (headerEl && window.ResizeObserver) {
|
208 |
-
const observer = new window.ResizeObserver(
|
209 |
-
updateDocumentOffsetWithoutAnimation
|
210 |
-
);
|
211 |
-
observer.observe(headerEl, {
|
212 |
-
attributes: true,
|
213 |
-
childList: true,
|
214 |
-
characterData: true,
|
215 |
-
});
|
216 |
-
} else {
|
217 |
-
window.addEventListener(
|
218 |
-
"resize",
|
219 |
-
throttle(updateDocumentOffsetWithoutAnimation, 50)
|
220 |
-
);
|
221 |
-
}
|
222 |
-
setTimeout(updateDocumentOffsetWithoutAnimation, 250);
|
223 |
-
|
224 |
-
// fixup index.html links if we aren't on the filesystem
|
225 |
-
if (window.location.protocol !== "file:") {
|
226 |
-
const links = window.document.querySelectorAll("a");
|
227 |
-
for (let i = 0; i < links.length; i++) {
|
228 |
-
if (links[i].href) {
|
229 |
-
links[i].href = links[i].href.replace(/\/index\.html/, "/");
|
230 |
-
}
|
231 |
-
}
|
232 |
-
|
233 |
-
// Fixup any sharing links that require urls
|
234 |
-
// Append url to any sharing urls
|
235 |
-
const sharingLinks = window.document.querySelectorAll(
|
236 |
-
"a.sidebar-tools-main-item"
|
237 |
-
);
|
238 |
-
for (let i = 0; i < sharingLinks.length; i++) {
|
239 |
-
const sharingLink = sharingLinks[i];
|
240 |
-
const href = sharingLink.getAttribute("href");
|
241 |
-
if (href) {
|
242 |
-
sharingLink.setAttribute(
|
243 |
-
"href",
|
244 |
-
href.replace("|url|", window.location.href)
|
245 |
-
);
|
246 |
-
}
|
247 |
-
}
|
248 |
-
|
249 |
-
// Scroll the active navigation item into view, if necessary
|
250 |
-
const navSidebar = window.document.querySelector("nav#quarto-sidebar");
|
251 |
-
if (navSidebar) {
|
252 |
-
// Find the active item
|
253 |
-
const activeItem = navSidebar.querySelector("li.sidebar-item a.active");
|
254 |
-
if (activeItem) {
|
255 |
-
// Wait for the scroll height and height to resolve by observing size changes on the
|
256 |
-
// nav element that is scrollable
|
257 |
-
const resizeObserver = new ResizeObserver((_entries) => {
|
258 |
-
// The bottom of the element
|
259 |
-
const elBottom = activeItem.offsetTop;
|
260 |
-
const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight;
|
261 |
-
|
262 |
-
// The element height and scroll height are the same, then we are still loading
|
263 |
-
if (viewBottom !== navSidebar.scrollHeight) {
|
264 |
-
// Determine if the item isn't visible and scroll to it
|
265 |
-
if (elBottom >= viewBottom) {
|
266 |
-
navSidebar.scrollTop = elBottom;
|
267 |
-
}
|
268 |
-
|
269 |
-
// stop observing now since we've completed the scroll
|
270 |
-
resizeObserver.unobserve(navSidebar);
|
271 |
-
}
|
272 |
-
});
|
273 |
-
resizeObserver.observe(navSidebar);
|
274 |
-
}
|
275 |
-
}
|
276 |
-
}
|
277 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-search/autocomplete.umd.js
DELETED
@@ -1,3 +0,0 @@
|
|
1 |
-
/*! @algolia/autocomplete-js 1.7.3 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
2 |
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],u=!0,a=!1;try{for(n=n.call(e);!(u=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);u=!0);}catch(e){a=!0,o=e}finally{try{u||null==n.return||n.return()}finally{if(a)throw o}}return i}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function p(e){return{current:e}}function f(e,t){var n=void 0;return function(){for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];n&&clearTimeout(n),n=setTimeout((function(){return e.apply(void 0,o)}),t)}}function d(e){return e.reduce((function(e,t){return e.concat(t)}),[])}var m=0;function v(){return"autocomplete-".concat(m++)}function h(e,t){return t.reduce((function(e,t){return e&&e[t]}),e)}function g(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}var y=function(){},b="1.7.3",O=[{segment:"autocomplete-core",version:b}];function _(e,t){var n=t;return{then:function(t,r){return _(e.then(j(t,n,e),j(r,n,e)),n)},catch:function(t){return _(e.catch(j(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),_(e.finally(j(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function P(e){return _(e,{isCanceled:!1,onCancelList:[]})}function j(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function w(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?S(Object(n),!0).forEach((function(t){I(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):S(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:y},e);return Promise.resolve(t)})))}))}function A(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var u=t.collections[o];if(u===n){r=!0;break}i+=u.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}var C=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D(Object(n),!0).forEach((function(t){x(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function R(e,t,n){var r,o=t.initialState;return{getState:function(){return o},dispatch:function(r,i){var u=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?N(Object(n),!0).forEach((function(t){q(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},o);o=e(o,{type:r,props:t,payload:i}),n({state:o,prevState:u})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally((function(){r=r.filter((function(t){return t!==e}))}))},cancelAll:function(){r.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===r.length}})}}function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function L(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?T(Object(n),!0).forEach((function(t){B(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):T(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F(e){return function(e){if(Array.isArray(e))return M(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return M(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return M(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function H(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach((function(t){V(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach((function(t){$(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z(e){return function(e){if(Array.isArray(e))return G(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return G(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function K(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function J(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K(Object(n),!0).forEach((function(t){Y(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function X(e){return Boolean(e.execute)}function Z(e,t){return n=e,Boolean(null==n?void 0:n.execute)?J(J({},e),{},{requests:e.queries.map((function(n){return{query:n,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var n}function ee(e){var t=e.reduce((function(e,t){if(!X(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,i=t.requests,u=e.find((function(e){return X(t)&&X(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o}));if(u){var a;(a=u.items).push.apply(a,z(i))}else{var c={execute:r,requesterId:o,items:i,searchClient:n};e.push(c)}return e}),[]).map((function(e){if(!X(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})}));return Promise.all(t).then((function(e){return d(e)}))}function te(e,t){return t.map((function(t){var n=e.filter((function(e){return e.sourceId===t.sourceId})),r=n.map((function(e){return e.items})),o=n[0].transformResponse,i=o?o(function(e){var t=e.map((function(e){var t;return k(k({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return k(k({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(r)):r;return i.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:i}}))}var ne=["event","nextState","props","query","refresh","store"];function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){ie(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ue(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ae,ce,le,se=null,pe=(ae=-1,ce=-1,le=void 0,function(e){var t=++ae;return Promise.resolve(e).then((function(e){return le&&t<ce?le:(ce=t,le=e,e)}))});function fe(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,o=e.props,i=e.query,u=e.refresh,a=e.store,c=ue(e,ne);se&&o.environment.clearTimeout(se);var l=c.setCollections,s=c.setIsOpen,p=c.setQuery,f=c.setActiveItemId,m=c.setStatus;if(p(i),f(o.defaultActiveItemId),!i&&!1===o.openOnFocus){var v,h=a.getState().collections.map((function(e){return oe(oe({},e),{},{items:[]})}));m("idle"),l(h),s(null!==(v=r.isOpen)&&void 0!==v?v:o.shouldPanelOpen({state:a.getState()}));var g=P(pe(h).then((function(){return Promise.resolve()})));return a.pendingRequests.add(g)}m("loading"),se=o.environment.setTimeout((function(){m("stalled")}),o.stallThreshold);var y=P(pe(o.getSources(oe({query:i,refresh:u,state:a.getState()},c)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(oe({query:i,refresh:u,state:a.getState()},c))).then((function(t){return Z(t,e.sourceId)}))}))).then(ee).then((function(t){return te(t,e)})).then((function(e){return function(e){var t=e.collections,n=e.props,r=e.state,o=t.reduce((function(e,t){return Q(Q({},e),{},$({},t.source.sourceId,Q(Q({},t.source),{},{getItems:function(){return d(t.items)}})))}),{});return d(n.reshape({sources:Object.values(o),sourcesBySourceId:o,state:r})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:a.getState()})}))})))).then((function(e){var n;m("idle"),l(e);var p=o.shouldPanelOpen({state:a.getState()});s(null!==(n=r.isOpen)&&void 0!==n?n:o.openOnFocus&&!i&&p||p);var f=A(a.getState());if(null!==a.getState().activeItemId&&f){var d=f.item,v=f.itemInputValue,h=f.itemUrl,g=f.source;g.onActive(oe({event:t,item:d,itemInputValue:v,itemUrl:h,refresh:u,source:g,state:a.getState()},c))}})).finally((function(){m("idle"),se&&o.environment.clearTimeout(se)}));return a.pendingRequests.add(y)}var de=["event","props","refresh","store"];function me(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ve(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?me(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):me(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ge(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ye=["props","refresh","store"],be=["inputElement","formElement","panelElement"],Oe=["inputElement"],_e=["inputElement","maxLength"],Pe=["item","source"];function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?je(Object(n),!0).forEach((function(t){Se(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):je(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ie(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ee(e){var t=e.props,n=e.refresh,r=e.store,o=Ie(e,ye);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return we({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},Ie(e,be))},getRootProps:function(e){return we({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,we({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(we({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(we({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},Ie(e,Oe))},getLabelProps:function(e){return we({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&fe(we({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var c=a.maxLength,l=void 0===c?512:c,s=Ie(a,_e),p=A(r.getState()),f=function(e){return Boolean(e&&e.match(C))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),d=null!=p&&p.itemUrl&&!f?"go":"search";return we({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){fe(we({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=ge(e,de);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},a=function(){var e=A(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,c=e.source;c.onActive(ve({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:c,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?fe(ve({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var c=A(o.getState()),l=c.item,s=c.itemInputValue,p=c.itemUrl,f=c.source;if(t.metaKey||t.ctrlKey)void 0!==p&&(f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:p,item:l,state:o.getState()}));else if(t.shiftKey)void 0!==p&&(f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:p,item:l,state:o.getState()}));else if(t.altKey);else{if(void 0!==p)return f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),void n.navigator.navigate({itemUrl:p,item:l,state:o.getState()});fe(ve({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i))}))}}}(we({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:y,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return we({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return we({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var i=e.item,u=e.source,a=Ie(e,Pe);return we({id:"".concat(t.id,"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=A(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(we({event:e,item:u,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),c=u.getItemUrl({item:i,state:r.getState()});(c?Promise.resolve():fe(we({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(we({event:e,item:i,itemInputValue:a,itemUrl:c,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){De(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function De(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ke(e){var t,n,r,o,i=e.plugins,u=e.options,a=null===(t=((null===(n=u.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,c=a?De({},a,Object.keys((null===(r=u.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:i.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:Ce({"autocomplete-core":Object.keys(u)},c),ua:O.concat((null===(o=u.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function xe(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=A(n))||void 0===t?void 0:t.itemInputValue)||null}function Ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function qe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ne(Object(n),!0).forEach((function(t){Re(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Te=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return qe(qe({},e),{},{activeItemId:t.payload});case"setQuery":return qe(qe({},e),{},{query:t.payload,completion:null});case"setCollections":return qe(qe({},e),{},{collections:t.payload});case"setIsOpen":return qe(qe({},e),{},{isOpen:t.payload});case"setStatus":return qe(qe({},e),{},{status:t.payload});case"setContext":return qe(qe({},e),{},{context:qe(qe({},e.context),t.payload)});case"ArrowDown":var n=qe(qe({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:w(1,e.activeItemId,g(e),t.props.defaultActiveItemId)});return qe(qe({},n),{},{completion:xe({state:n})});case"ArrowUp":var r=qe(qe({},e),{},{activeItemId:w(-1,e.activeItemId,g(e),t.props.defaultActiveItemId)});return qe(qe({},r),{},{completion:xe({state:r})});case"Escape":return e.isOpen?qe(qe({},e),{},{activeItemId:null,isOpen:!1,completion:null}):qe(qe({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return qe(qe({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return qe(qe({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return qe(qe({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:qe(qe({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return qe(qe({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Be(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Le(Object(n),!0).forEach((function(t){Fe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Fe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Me(e){var t=[],n=function(e,t){var n,r="undefined"!=typeof window?window:{},o=e.plugins||[];return H(H({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:r,shouldPanelOpen:function(e){return g(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:v(),plugins:o,initialState:H({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(F(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return E(e,n)}))).then((function(e){return d(e)})).then((function(e){return e.map((function(e){return H(H({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:H({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}(e,t),r=R(Te,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(Be({prevState:t,state:r,refresh:u},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return L(L({},e),{},{items:d(e.items).map((function(e){return L(L({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),i=Ee(Be({props:n,refresh:u,store:r},o));function u(){return fe(Be({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},o))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,Be(Be({},o),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var i=o.document.createElement("meta"),u=o.document.querySelector("head");i.name="algolia:metadata",setTimeout((function(){i.content=JSON.stringify(r),u.appendChild(i)}),0)}}({metadata:ke({plugins:n.plugins,options:e}),environment:n.environment}),Be(Be({refresh:u},i),o)}var Ue=function(e,t,n,r){var o;t[0]=0;for(var i=1;i<t.length;i++){var u=t[i++],a=t[i]?(t[0]|=u?1:2,n[t[i++]]):t[++i];3===u?r[0]=a:4===u?r[1]=Object.assign(r[1]||{},a):5===u?(r[1]=r[1]||{})[t[++i]]=a:6===u?r[1][t[++i]]+=a+"":u?(o=e.apply(a,Ue(e,a,n,["",null])),r.push(o),a[0]?t[0]|=2:(t[i-2]=0,t[i]=o)):r.push(a)}return r},He=new Map;function Ve(e){var t=He.get(this);return t||(t=new Map,He.set(this,t)),(t=Ue(this,t.get(e)||(t.set(e,t=function(e){for(var t,n,r=1,o="",i="",u=[0],a=function(e){1===r&&(e||(o=o.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?u.push(0,e,o):3===r&&(e||o)?(u.push(3,e,o),r=2):2===r&&"..."===o&&e?u.push(4,e,0):2===r&&o&&!e?u.push(5,0,!0,o):r>=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},c=0;c<e.length;c++){c&&(1===r&&a(),a(c));for(var l=0;l<e[c].length;l++)t=e[c][l],1===r?"<"===t?(a(),u=[u],r=3):o+=t:4===r?"--"===o&&">"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[c][l+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var We=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function Qe(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function $e(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],o=t[n];r!==o&&(e[n]=[r,o].filter(Boolean).join(" "))})),e}),{})}var ze=function(e){return e&&"object"===r(e)&&"[object Object]"===Object.prototype.toString.call(e)};function Ge(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Object.keys(t).forEach((function(n){var r=e[n],o=t[n];Array.isArray(r)&&Array.isArray(o)?e[n]=r.concat.apply(r,c(o)):ze(r)&&ze(o)?e[n]=Ge(r,o):e[n]=o})),e}),{})}function Ke(e,t){return Object.entries(e).reduce((function(e,r){var i=a(r,2),u=i[0],c=i[1];return t({key:u,value:c})?n(n({},e),{},o({},u,c)):e}),{})}var Je=["ontouchstart","ontouchend","ontouchmove","ontouchcancel"];function Ye(e,t,n){e[t]=null===n?"":"number"!=typeof n?n:n+"px"}function Xe(e){this._listeners[e.type](e)}function Ze(e,t,n){var r,o,i=e[t];if("style"===t)if("string"==typeof n)e.style=n;else if(null===n)e.style="";else for(t in n)i&&n[t]===i[t]||Ye(e.style,t,n[t]);else"o"===t[0]&&"n"===t[1]?(r=t!==(t=t.replace(/Capture$/,"")),((o=t.toLowerCase())in e||Je.includes(o))&&(t=o),t=t.slice(2),e._listeners||(e._listeners={}),e._listeners[t]=n,n?i||e.addEventListener(t,Xe,r):e.removeEventListener(t,Xe,r)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&"download"!==t&&"href"!==t&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function et(e){return"onChange"===e?"onInput":e}function tt(e,t){for(var n in t)Ze(e,et(n),t[n])}function nt(e,t){for(var n in t)"o"===n[0]&&"n"===n[1]||Ze(e,et(n),t[n])}var rt=["children"];function ot(e){return function(t,n){var r=n.children,o=void 0===r?[]:r,i=u(n,rt),a=e.document.createElement(t);return tt(a,i),a.append.apply(a,c(o)),a}}var it=["autocompleteScopeApi","environment","classNames","getInputProps","getInputPropsCore","isDetached","state"],ut=function(e){var t=e.environment.document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("class","aa-LoadingIcon"),t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("width","20"),t.setAttribute("height","20"),t.innerHTML='<circle\n cx="50"\n cy="50"\n fill="none"\n r="35"\n stroke="currentColor"\n stroke-dasharray="164.93361431346415 56.97787143782138"\n stroke-width="6"\n>\n <animateTransform\n attributeName="transform"\n type="rotate"\n repeatCount="indefinite"\n dur="1s"\n values="0 50 50;90 50 50;180 50 50;360 50 50"\n keyTimes="0;0.40;0.65;1"\n />\n</circle>',t},at=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-SubmitIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"),n.appendChild(r),n};function ct(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.classNames,i=e.environment,a=e.isDetached,c=e.placeholder,l=void 0===c?"Search":c,s=e.propGetters,p=e.setIsModalOpen,f=e.state,d=e.translations,m=ot(i),v=s.getRootProps(n({state:f,props:t.getRootProps({})},r)),h=m("div",n({class:o.root},v)),g=m("div",{class:o.detachedContainer,onMouseDown:function(e){e.stopPropagation()}}),y=m("div",{class:o.detachedOverlay,children:[g],onMouseDown:function(){p(!1),t.setIsOpen(!1)}}),b=s.getLabelProps(n({state:f,props:t.getLabelProps({})},r)),O=m("button",{class:o.submitButton,type:"submit",title:d.submitButtonTitle,children:[at({environment:i})]}),_=m("label",n({class:o.label,children:[O]},b)),P=m("button",{class:o.clearButton,type:"reset",title:d.clearButtonTitle,children:[We({environment:i})]}),j=m("div",{class:o.loadingIndicator,children:[ut({environment:i})]}),w=function(e){var t=e.autocompleteScopeApi,r=e.environment;e.classNames;var o=e.getInputProps,i=e.getInputPropsCore,a=e.isDetached,c=e.state,l=u(e,it),s=ot(r)("input",l),p=o(n({state:c,props:i({inputElement:s}),inputElement:s},t));return tt(s,n(n({},p),{},{onKeyDown:function(e){a&&"Tab"===e.key||p.onKeyDown(e)}})),s}({class:o.input,environment:i,state:f,getInputProps:s.getInputProps,getInputPropsCore:t.getInputProps,autocompleteScopeApi:r,isDetached:a}),S=m("div",{class:o.inputWrapperPrefix,children:[_,j]}),I=m("div",{class:o.inputWrapperSuffix,children:[P]}),E=m("div",{class:o.inputWrapper,children:[w]}),A=s.getFormProps(n({state:f,props:t.getFormProps({inputElement:w})},r)),C=m("form",n({class:o.form,children:[S,E,I]},A)),D=s.getPanelProps(n({state:f,props:t.getPanelProps({})},r)),k=m("div",n({class:o.panel},D));if(a){var x=m("div",{class:o.detachedSearchButtonIcon,children:[at({environment:i})]}),N=m("div",{class:o.detachedSearchButtonPlaceholder,textContent:l}),q=m("button",{type:"button",class:o.detachedSearchButton,onClick:function(){p(!0)},children:[x,N]}),R=m("button",{type:"button",class:o.detachedCancelButton,textContent:d.detachedCancelButtonText,onTouchStart:function(e){e.stopPropagation()},onClick:function(){t.setIsOpen(!1),p(!1)}}),T=m("div",{class:o.detachedFormContainer,children:[C,R]});g.appendChild(T),h.appendChild(q)}else h.appendChild(C);return{detachedContainer:g,detachedOverlay:y,inputWrapper:E,input:w,root:h,form:C,label:_,submitButton:O,clearButton:P,loadingIndicator:j,panel:k}}var lt,st,pt,ft,dt,mt,vt={},ht=[],gt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function yt(e,t){for(var n in t)e[n]=t[n];return e}function bt(e){var t=e.parentNode;t&&t.removeChild(e)}function Ot(e,t,n){var r,o,i,u={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:u[i]=t[i];if(arguments.length>2&&(u.children=arguments.length>3?lt.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return _t(e,u,r,o,null)}function _t(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++pt:o};return null==o&&null!=st.vnode&&st.vnode(i),i}function Pt(e){return e.children}function jt(e,t){this.props=e,this.context=t}function wt(e,t){if(null==t)return e.__?wt(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?wt(e):null}function St(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return St(e)}}function It(e){(!e.__d&&(e.__d=!0)&&ft.push(e)&&!Et.__r++||mt!==st.debounceRendering)&&((mt=st.debounceRendering)||dt)(Et)}function Et(){for(var e;Et.__r=ft.length;)e=ft.sort((function(e,t){return e.__v.__b-t.__v.__b})),ft=[],e.some((function(e){var t,n,r,o,i,u;e.__d&&(i=(o=(t=e).__v).__e,(u=t.__P)&&(n=[],(r=yt({},o)).__v=o.__v+1,Rt(u,o,r,t.__n,void 0!==u.ownerSVGElement,null!=o.__h?[i]:null,n,null==i?wt(o):i,o.__h),Tt(n,o),o.__e!=i&&St(o)))}))}function At(e,t,n,r,o,i,u,a,c,l){var s,p,f,d,m,v,h,g=r&&r.__k||ht,y=g.length;for(n.__k=[],s=0;s<t.length;s++)if(null!=(d=n.__k[s]=null==(d=t[s])||"boolean"==typeof d?null:"string"==typeof d||"number"==typeof d||"bigint"==typeof d?_t(null,d,null,null,d):Array.isArray(d)?_t(Pt,{children:d},null,null,null):d.__b>0?_t(d.type,d.props,d.key,null,d.__v):d)){if(d.__=n,d.__b=n.__b+1,null===(f=g[s])||f&&d.key==f.key&&d.type===f.type)g[s]=void 0;else for(p=0;p<y;p++){if((f=g[p])&&d.key==f.key&&d.type===f.type){g[p]=void 0;break}f=null}Rt(e,d,f=f||vt,o,i,u,a,c,l),m=d.__e,(p=d.ref)&&f.ref!=p&&(h||(h=[]),f.ref&&h.push(f.ref,null,d),h.push(p,d.__c||m,d)),null!=m?(null==v&&(v=m),"function"==typeof d.type&&d.__k===f.__k?d.__d=c=Ct(d,c,e):c=Dt(e,d,f,g,m,c),"function"==typeof n.type&&(n.__d=c)):c&&f.__e==c&&c.parentNode!=e&&(c=wt(f))}for(n.__e=v,s=y;s--;)null!=g[s]&&("function"==typeof n.type&&null!=g[s].__e&&g[s].__e==n.__d&&(n.__d=wt(r,s+1)),Ft(g[s],g[s]));if(h)for(s=0;s<h.length;s++)Bt(h[s],h[++s],h[++s])}function Ct(e,t,n){for(var r,o=e.__k,i=0;o&&i<o.length;i++)(r=o[i])&&(r.__=e,t="function"==typeof r.type?Ct(r,t,n):Dt(n,r,r,o,r.__e,t));return t}function Dt(e,t,n,r,o,i){var u,a,c;if(void 0!==t.__d)u=t.__d,t.__d=void 0;else if(null==n||o!=i||null==o.parentNode)e:if(null==i||i.parentNode!==e)e.appendChild(o),u=null;else{for(a=i,c=0;(a=a.nextSibling)&&c<r.length;c+=2)if(a==o)break e;e.insertBefore(o,i),u=i}return void 0!==u?u:o.nextSibling}function kt(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||gt.test(t)?n:n+"px"}function xt(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||kt(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||kt(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?qt:Nt,i):e.removeEventListener(t,i?qt:Nt,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink[H:h]/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function Nt(e){this.l[e.type+!1](st.event?st.event(e):e)}function qt(e){this.l[e.type+!0](st.event?st.event(e):e)}function Rt(e,t,n,r,o,i,u,a,c){var l,s,p,f,d,m,v,h,g,y,b,O=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(c=n.__h,a=t.__e=n.__e,t.__h=null,i=[a]),(l=st.__b)&&l(t);try{e:if("function"==typeof O){if(h=t.props,g=(l=O.contextType)&&r[l.__c],y=l?g?g.props.value:l.__:r,n.__c?v=(s=t.__c=n.__c).__=s.__E:("prototype"in O&&O.prototype.render?t.__c=s=new O(h,y):(t.__c=s=new jt(h,y),s.constructor=O,s.render=Mt),g&&g.sub(s),s.props=h,s.state||(s.state={}),s.context=y,s.__n=r,p=s.__d=!0,s.__h=[]),null==s.__s&&(s.__s=s.state),null!=O.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=yt({},s.__s)),yt(s.__s,O.getDerivedStateFromProps(h,s.__s))),f=s.props,d=s.state,p)null==O.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==O.getDerivedStateFromProps&&h!==f&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(h,y),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(h,s.__s,y)||t.__v===n.__v){s.props=h,s.state=s.__s,t.__v!==n.__v&&(s.__d=!1),s.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),s.__h.length&&u.push(s);break e}null!=s.componentWillUpdate&&s.componentWillUpdate(h,s.__s,y),null!=s.componentDidUpdate&&s.__h.push((function(){s.componentDidUpdate(f,d,m)}))}s.context=y,s.props=h,s.state=s.__s,(l=st.__r)&&l(t),s.__d=!1,s.__v=t,s.__P=e,l=s.render(s.props,s.state,s.context),s.state=s.__s,null!=s.getChildContext&&(r=yt(yt({},r),s.getChildContext())),p||null==s.getSnapshotBeforeUpdate||(m=s.getSnapshotBeforeUpdate(f,d)),b=null!=l&&l.type===Pt&&null==l.key?l.props.children:l,At(e,Array.isArray(b)?b:[b],t,n,r,o,i,u,a,c),s.base=t.__e,t.__h=null,s.__h.length&&u.push(s),v&&(s.__E=s.__=null),s.__e=!1}else null==i&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=Lt(n.__e,t,n,r,o,i,u,c);(l=st.diffed)&&l(t)}catch(e){t.__v=null,(c||null!=i)&&(t.__e=a,t.__h=!!c,i[i.indexOf(a)]=null),st.__e(e,t,n)}}function Tt(e,t){st.__c&&st.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){st.__e(e,t.__v)}}))}function Lt(e,t,n,r,o,i,u,a){var c,l,s,p=n.props,f=t.props,d=t.type,m=0;if("svg"===d&&(o=!0),null!=i)for(;m<i.length;m++)if((c=i[m])&&"setAttribute"in c==!!d&&(d?c.localName===d:3===c.nodeType)){e=c,i[m]=null;break}if(null==e){if(null===d)return document.createTextNode(f);e=o?document.createElementNS("http://www.w3.org/2000/svg",d):document.createElement(d,f.is&&f),i=null,a=!1}if(null===d)p===f||a&&e.data===f||(e.data=f);else{if(i=i&<.call(e.childNodes),l=(p=n.props||vt).dangerouslySetInnerHTML,s=f.dangerouslySetInnerHTML,!a){if(null!=i)for(p={},m=0;m<e.attributes.length;m++)p[e.attributes[m].name]=e.attributes[m].value;(s||l)&&(s&&(l&&s.__html==l.__html||s.__html===e.innerHTML)||(e.innerHTML=s&&s.__html||""))}if(function(e,t,n,r,o){var i;for(i in n)"children"===i||"key"===i||i in t||xt(e,i,null,n[i],r);for(i in t)o&&"function"!=typeof t[i]||"children"===i||"key"===i||"value"===i||"checked"===i||n[i]===t[i]||xt(e,i,t[i],n[i],r)}(e,f,p,o,a),s)t.__k=[];else if(m=t.props.children,At(e,Array.isArray(m)?m:[m],t,n,r,o&&"foreignObject"!==d,i,u,i?i[0]:n.__k&&wt(n,0),a),null!=i)for(m=i.length;m--;)null!=i[m]&&bt(i[m]);a||("value"in f&&void 0!==(m=f.value)&&(m!==p.value||m!==e.value||"progress"===d&&!m)&&xt(e,"value",m,p.value,!1),"checked"in f&&void 0!==(m=f.checked)&&m!==e.checked&&xt(e,"checked",m,p.checked,!1))}return e}function Bt(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){st.__e(e,n)}}function Ft(e,t,n){var r,o;if(st.unmount&&st.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||Bt(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){st.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Ft(r[o],t,"function"!=typeof e.type);n||null==e.__e||bt(e.__e),e.__e=e.__d=void 0}function Mt(e,t,n){return this.constructor(e,n)}lt=ht.slice,st={__e:function(e,t){for(var n,r,o;t=t.__;)if((n=t.__c)&&!n.__)try{if((r=n.constructor)&&null!=r.getDerivedStateFromError&&(n.setState(r.getDerivedStateFromError(e)),o=n.__d),null!=n.componentDidCatch&&(n.componentDidCatch(e),o=n.__d),o)return n.__E=n}catch(t){e=t}throw e}},pt=0,jt.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=yt({},this.state),"function"==typeof e&&(e=e(yt({},n),this.props)),e&&yt(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),It(this))},jt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),It(this))},jt.prototype.render=Pt,ft=[],dt="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Et.__r=0;var Ut="__aa-highlight__",Ht="__/aa-highlight__";function Vt(e){var t=e.highlightedValue.split(Ut),n=t.shift(),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(Ht);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Wt(e){return function(e){if(Array.isArray(e))return Qt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Qt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Qt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $t(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],o=h(t,["_highlightResult"].concat(Wt(r),["value"]));return"string"!=typeof o&&(o=h(t,r)||""),Vt({highlightedValue:o})}var zt={"&":"&","<":"<",">":">",""":'"',"'":"'"},Gt=new RegExp(/\w/i),Kt=/&(amp|quot|lt|gt|#39);/g,Jt=RegExp(Kt.source);function Yt(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Gt.test((o=i.value)&&Jt.test(o)?o.replace(Kt,(function(e){return zt[e]})):o)||a!==u?i.isHighlighted:a}function Xt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xt(Object(n),!0).forEach((function(t){en(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function en(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function tn(e){return e.some((function(e){return e.isHighlighted}))?e.map((function(t,n){return Zt(Zt({},t),{},{isHighlighted:!Yt(e,n)})})):e.map((function(e){return Zt(Zt({},e),{},{isHighlighted:!1})}))}function nn(e){return function(e){if(Array.isArray(e))return rn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return rn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function on(e){var t=e.hit,n=e.attribute,r=Array.isArray(n)?n:[n],o=h(t,["_snippetResult"].concat(nn(r),["value"]));return"string"!=typeof o&&(o=h(t,r)||""),Vt({highlightedValue:o})}function un(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function an(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?un(Object(n),!0).forEach((function(t){cn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):un(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function cn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ln=["params"];function sn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?sn(Object(n),!0).forEach((function(t){fn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function fn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function dn(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function mn(e){return function(e){if(Array.isArray(e))return vn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return vn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return vn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function hn(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,o=e.attribute,i=e.tagName,u=void 0===i?"mark":i;return t(n,{},$t({hit:r,attribute:o}).map((function(e,n){return e.isHighlighted?t(u,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Highlight",r}function gn(e){var t=e.createElement,n=e.Fragment;function r(e){var r,o=e.hit,i=e.attribute,u=e.tagName,a=void 0===u?"mark":u;return t(n,{},(r={hit:o,attribute:i},tn($t(r))).map((function(e,n){return e.isHighlighted?t(a,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseHighlight",r}function yn(e){var t=e.createElement,n=e.Fragment;function r(e){var r,o=e.hit,i=e.attribute,u=e.tagName,a=void 0===u?"mark":u;return t(n,{},(r={hit:o,attribute:i},tn(on(r))).map((function(e,n){return e.isHighlighted?t(a,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="ReverseSnippet",r}function bn(e){var t=e.createElement,n=e.Fragment;function r(e){var r=e.hit,o=e.attribute,i=e.tagName,u=void 0===i?"mark":i;return t(n,{},on({hit:r,attribute:o}).map((function(e,n){return e.isHighlighted?t(u,{key:n},e.value):e.value})))}return r.__autocomplete_componentName="Snippet",r}var On=["classNames","container","getEnvironmentProps","getFormProps","getInputProps","getItemProps","getLabelProps","getListProps","getPanelProps","getRootProps","panelContainer","panelPlacement","render","renderNoResults","renderer","detachedMediaQuery","components","translations"],_n={clearButton:"aa-ClearButton",detachedCancelButton:"aa-DetachedCancelButton",detachedContainer:"aa-DetachedContainer",detachedFormContainer:"aa-DetachedFormContainer",detachedOverlay:"aa-DetachedOverlay",detachedSearchButton:"aa-DetachedSearchButton",detachedSearchButtonIcon:"aa-DetachedSearchButtonIcon",detachedSearchButtonPlaceholder:"aa-DetachedSearchButtonPlaceholder",form:"aa-Form",input:"aa-Input",inputWrapper:"aa-InputWrapper",inputWrapperPrefix:"aa-InputWrapperPrefix",inputWrapperSuffix:"aa-InputWrapperSuffix",item:"aa-Item",label:"aa-Label",list:"aa-List",loadingIndicator:"aa-LoadingIndicator",panel:"aa-Panel",panelLayout:"aa-PanelLayout aa-Panel--scrollable",root:"aa-Autocomplete",source:"aa-Source",sourceFooter:"aa-SourceFooter",sourceHeader:"aa-SourceHeader",sourceNoResults:"aa-SourceNoResults",submitButton:"aa-SubmitButton"},Pn=function(e,t){var n=e.children;(0,e.render)(n,t)},jn={createElement:Ot,Fragment:Pt,render:function(e,t,n){var r,o,i;st.__&&st.__(e,t),o=(r="function"==typeof n)?null:n&&n.__k||t.__k,i=[],Rt(t,e=(!r&&n||t).__k=Ot(Pt,null,[e]),o||vt,vt,void 0!==t.ownerSVGElement,!r&&n?[n]:o?null:t.firstChild?lt.call(t.childNodes):null,i,!r&&n?n:o?o.__e:t.firstChild,r),Tt(i,e)}};function wn(e){var t=e.panelPlacement,n=e.container,r=e.form,o=e.environment,i=n.getBoundingClientRect(),u=(o.pageYOffset||o.document.documentElement.scrollTop||o.document.body.scrollTop||0)+i.top+i.height;switch(t){case"start":return{top:u,left:i.left};case"end":return{top:u,right:o.document.documentElement.clientWidth-(i.left+i.width)};case"full-width":return{top:u,left:0,right:0,width:"unset",maxWidth:"unset"};case"input-wrapper-width":var a=r.getBoundingClientRect();return{top:u,left:a.left,right:o.document.documentElement.clientWidth-(a.left+a.width),width:"unset",maxWidth:"unset"};default:throw new Error("[Autocomplete] The `panelPlacement` value ".concat(JSON.stringify(t)," is not valid."))}}var Sn=[{segment:"autocomplete-js",version:b}],In=["components"];var En=function(e,t){function n(t){return e({searchClient:t.searchClient,queries:t.requests.map((function(e){return e.query}))}).then((function(e){return e.map((function(e,n){var r=t.requests[n];return{items:e,sourceId:r.sourceId,transformResponse:r.transformResponse}}))}))}return function(e){return function(r){return an(an({requesterId:t,execute:n},e),r)}}}((function(e){return function(e){var t=e.searchClient,n=e.queries,r=e.userAgents,o=void 0===r?[]:r;return"function"==typeof t.addAlgoliaAgent&&[].concat(mn(O),mn(o)).forEach((function(e){var n=e.segment,r=e.version;t.addAlgoliaAgent(n,r)})),t.search(n.map((function(e){var t=e.params;return pn(pn({},dn(e,ln)),{},{params:pn({hitsPerPage:5,highlightPreTag:Ut,highlightPostTag:Ht},t)})}))).then((function(e){return e.results}))}(n(n({},e),{},{userAgents:Sn}))}),"algolia");var An=En({transformResponse:function(e){return e.hits}});e.autocomplete=function(e){var t,r=function(){var e=[],t=[];function n(n){e.push(n);var r=n();t.push(r)}return{runEffect:n,cleanupEffects:function(){var e=t;t=[],e.forEach((function(e){e()}))},runEffects:function(){var t=e;e=[],t.forEach((function(e){n(e)}))}}}(),a=r.runEffect,c=r.cleanupEffects,l=r.runEffects,s=(t=[],{reactive:function(e){var n=e(),r={_fn:e,_ref:{current:n},get value(){return this._ref.current},set value(e){this._ref.current=e}};return t.push(r),r},runReactives:function(){t.forEach((function(e){e._ref.current=e._fn()}))}}),d=s.reactive,m=s.runReactives,h=p(!1),y=p(e),b=p(void 0),O=d((function(){return function(e){var t,r=e.classNames,o=e.container,i=e.getEnvironmentProps,a=e.getFormProps,c=e.getInputProps,l=e.getItemProps,s=e.getLabelProps,p=e.getListProps,f=e.getPanelProps,d=e.getRootProps,m=e.panelContainer,h=e.panelPlacement,g=e.render,y=e.renderNoResults,b=e.renderer,O=e.detachedMediaQuery,_=e.components,P=e.translations,j=u(e,On),w="undefined"!=typeof window?window:{},S=Qe(w,o);S.tagName;var I=n(n({},jn),b),E={Highlight:hn(I),ReverseHighlight:gn(I),ReverseSnippet:yn(I),Snippet:bn(I)};return{renderer:{classNames:$e(_n,null!=r?r:{}),container:S,getEnvironmentProps:null!=i?i:function(e){return e.props},getFormProps:null!=a?a:function(e){return e.props},getInputProps:null!=c?c:function(e){return e.props},getItemProps:null!=l?l:function(e){return e.props},getLabelProps:null!=s?s:function(e){return e.props},getListProps:null!=p?p:function(e){return e.props},getPanelProps:null!=f?f:function(e){return e.props},getRootProps:null!=d?d:function(e){return e.props},panelContainer:m?Qe(w,m):w.document.body,panelPlacement:null!=h?h:"input-wrapper-width",render:null!=g?g:Pn,renderNoResults:y,renderer:I,detachedMediaQuery:null!=O?O:getComputedStyle(w.document.documentElement).getPropertyValue("--aa-detached-media-query"),components:n(n({},E),_),translations:n(n({},{clearButtonTitle:"Clear",detachedCancelButtonText:"Cancel",submitButtonTitle:"Submit"}),P)},core:n(n({},j),{},{id:null!==(t=j.id)&&void 0!==t?t:v(),environment:w})}}(y.current)})),_=d((function(){return O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches})),P=d((function(){return Me(n(n({},O.value.core),{},{onStateChange:function(e){var t,n,r;h.current=e.state.collections.some((function(e){return e.source.templates.noResults})),null===(t=b.current)||void 0===t||t.call(b,e),null===(n=(r=O.value.core).onStateChange)||void 0===n||n.call(r,e)},shouldPanelOpen:y.current.shouldPanelOpen||function(e){var t=e.state;if(_.value)return!0;var n=g(t)>0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(h.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:Sn,options:e}}))})),j=p(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),w={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},S={setActiveItemId:P.value.setActiveItemId,setQuery:P.value.setQuery,setCollections:P.value.setCollections,setIsOpen:P.value.setIsOpen,setStatus:P.value.setStatus,setContext:P.value.setContext,refresh:P.value.refresh},I=d((function(){return Ve.bind(O.value.renderer.renderer.createElement)})),E=d((function(){return ct({autocomplete:P.value,autocompleteScopeApi:S,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:w,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function A(){tt(E.value.panel,{style:_.value?{}:wn({panelPlacement:O.value.renderer.panelPlacement,container:E.value.root,form:E.value.form,environment:O.value.core.environment})})}function C(e){j.current=e;var t={autocomplete:P.value,autocompleteScopeApi:S,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:E.value,panelContainer:_.value?E.value.detachedContainer:O.value.renderer.panelContainer,propGetters:w,state:j.current,renderer:O.value.renderer.renderer},r=!g(e)&&!h.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;nt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),nt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),tt(o.label,{hidden:"stalled"===u.status}),tt(o.loadingIndicator,{hidden:"stalled"!==u.status}),tt(o.clearButton,{hidden:!u.query})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,c=t.dom,l=t.panelContainer,s=t.propGetters,p=t.state,f=t.components,d=t.renderer;if(p.isOpen){l.contains(c.panel)||"loading"===p.status||l.appendChild(c.panel),c.panel.classList.toggle("aa-Panel--stalled","stalled"===p.status);var m=p.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var c=e.source,l=e.items;return d.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":c.sourceId},c.templates.header&&d.createElement("div",{className:u.sourceHeader},c.templates.header({components:f,createElement:d.createElement,Fragment:d.Fragment,items:l,source:c,state:p,html:a})),c.templates.noResults&&0===l.length?d.createElement("div",{className:u.sourceNoResults},c.templates.noResults({components:f,createElement:d.createElement,Fragment:d.Fragment,source:c,state:p,html:a})):d.createElement("ul",i({className:u.list},s.getListProps(n({state:p,props:r.getListProps({})},o))),l.map((function(e){var t=r.getItemProps({item:e,source:c});return d.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:p,props:t},o))),c.templates.item({components:f,createElement:d.createElement,Fragment:d.Fragment,item:e,state:p,html:a}))}))),c.templates.footer&&d.createElement("div",{className:u.sourceFooter},c.templates.footer({components:f,createElement:d.createElement,Fragment:d.Fragment,items:l,source:c,state:p,html:a})))})),v=d.createElement(d.Fragment,null,d.createElement("div",{className:u.panelLayout},m),d.createElement("div",{className:"aa-GradientBottom"})),h=m.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:v,state:p,sections:m,elements:h},d),{},{components:f,html:a},o),c.panel)}else l.contains(c.panel)&&l.removeChild(c.panel)}(r,t)}function D(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c();var t=O.value.renderer,n=t.components,r=u(t,In);y.current=Ge(r,O.value.core,{components:Ke(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),m(),l(),P.value.refresh().then((function(){C(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(E.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),E.value.input.focus()):(O.value.core.environment.document.body.removeChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached"),P.value.setQuery(""),P.value.refresh()))}))}return a((function(){var e=P.value.getEnvironmentProps({formElement:E.value.form,panelElement:E.value.panel,inputElement:E.value.input});return tt(O.value.core.environment,e),function(){tt(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?E.value.detachedOverlay:E.value.panel;return _.value&&j.current.isOpen&&k(!0),C(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(E.value.root),function(){e.removeChild(E.value.root)}})),a((function(){var e=f((function(e){C(e.state)}),0);return b.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||A(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){b.current=void 0}})),a((function(){var e=f((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?D({}):requestAnimationFrame(A)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){E.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(A),function(){}})),n(n({},S),{},{update:D,destroy:function(){c()}})},e.getAlgoliaFacets=function(e){var t=En({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=An,Object.defineProperty(e,"__esModule",{value:!0})}));
|
3 |
-
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-search/fuse.min.js
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)
|
3 |
-
*
|
4 |
-
* Copyright (c) 2022 Kiro Risk (http://kiro.me)
|
5 |
-
* All Rights Reserved. Apache Software License 2.0
|
6 |
-
*
|
7 |
-
* http://www.apache.org/licenses/LICENSE-2.0
|
8 |
-
*/
|
9 |
-
var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){c(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");Object.defineProperty(e,"prototype",{value:Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),writable:!1}),t&&u(e,t)}function s(e){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},s(e)}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function h(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=s(e);if(t){var i=s(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return h(this,n)}}function f(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e){return Array.isArray?Array.isArray(e):"[object Array]"===b(e)}function g(e){return"string"==typeof e}function y(e){return"number"==typeof e}function p(e){return!0===e||!1===e||function(e){return m(e)&&null!==e}(e)&&"[object Boolean]"==b(e)}function m(e){return"object"===n(e)}function k(e){return null!=e}function M(e){return!e.trim().length}function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var x=function(e){return"Invalid value for key ".concat(e)},w=function(e){return"Pattern length exceeds max of ".concat(e,".")},L=Object.prototype.hasOwnProperty,S=function(){function e(t){var n=this;r(this,e),this._keys=[],this._keyMap={};var i=0;t.forEach((function(e){var t=_(e);i+=t.weight,n._keys.push(t),n._keyMap[t.id]=t,i+=t.weight})),this._keys.forEach((function(e){e.weight/=i}))}return o(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function _(e){var t=null,n=null,r=null,i=1,o=null;if(g(e)||v(e))r=e,t=O(e),n=j(e);else{if(!L.call(e,"name"))throw new Error(function(e){return"Missing ".concat(e," property in key")}("name"));var c=e.name;if(r=c,L.call(e,"weight")&&(i=e.weight)<=0)throw new Error(function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")}(c));t=O(c),n=j(c),o=e.getFn}return{path:t,id:n,weight:i,src:r,getFn:o}}function O(e){return v(e)?e:e.split(".")}function j(e){return v(e)?e.join("."):e}var A={useExtendedSearch:!1,getFn:function(e,t){var n=[],r=!1;return function e(t,i,o){if(k(t))if(i[o]){var c=t[i[o]];if(!k(c))return;if(o===i.length-1&&(g(c)||y(c)||p(c)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(c));else if(v(c)){r=!0;for(var a=0,s=c.length;a<s;a+=1)e(c[a],i,o+1)}else i.length&&e(c,i,o+1)}else n.push(t)}(e,g(t)?t.split("."):t,0),r?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},I=t(t(t(t({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(e,t){return e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1}}),{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1}),{location:0,threshold:.6,distance:100}),A),C=/[^ ]+/g;function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t<n;t+=1)this.records[t].i-=1}},{key:"getValueForItemAtKeyId",value:function(e,t){return e[this._keysMap[t]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(e,t){if(k(e)&&!M(e)){var n={v:e,i:t,n:this.norm.get(e)};this.records.push(n)}}},{key:"_addObject",value:function(e,t){var n=this,r={i:t,$:{}};this.keys.forEach((function(t,i){var o=t.getFn?t.getFn(e):n.getFn(e,t.path);if(k(o))if(v(o))!function(){for(var e=[],t=[{nestedArrIndex:-1,value:o}];t.length;){var c=t.pop(),a=c.nestedArrIndex,s=c.value;if(k(s))if(g(s)&&!M(s)){var u={v:s,i:a,n:n.norm.get(s)};e.push(u)}else v(s)&&s.forEach((function(e,n){t.push({nestedArrIndex:n,value:e})}))}r.$[i]=e}();else if(g(o)&&!M(o)){var c={v:o,n:n.norm.get(o)};r.$[i]=c}})),this.records.push(r)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),e}();function F(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o<c;o+=1){var a=e[o];a&&-1===r?r=o:a||-1===r||((i=o-1)-r+1>=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n<r;n+=1){var i=e.charAt(n);t[i]=(t[i]||0)|1<<r-n-1}return t}var T=function(){function e(t){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w<S;)b(this.pattern.substr(w,P),w),w+=P;if(L){var _=x-P;b(this.pattern.substr(_),_)}}else b(this.pattern,0)}}return o(e,[{key:"searchIn",value:function(e){var t=this.options,n=t.isCaseSensitive,r=t.includeMatches;if(n||(e=e.toLowerCase()),this.pattern===e){var i={isMatch:!0,score:0};return r&&(i.indices=[[0,e.length-1]]),i}var o=this.options,c=o.location,a=o.distance,s=o.threshold,u=o.findAllMatches,h=o.minMatchCharLength,l=o.ignoreLocation,d=[],v=0,g=!1;this.chunks.forEach((function(t){var n=t.pattern,i=t.alphabet,o=t.startIndex,y=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j<k;)_[m+j]=1,j+=1}L=-1;for(var A=[],C=1,E=k+M,$=1<<k-1,F=0;F<k;F+=1){for(var W=0,T=E;W<T;)R(t,{errors:F,currentLocation:b+T,expectedLocation:b,distance:a,ignoreLocation:p})<=x?W=T:E=T,T=Math.floor((E-W)/2+W);E=T;var z=Math.max(1,b-T+1),D=l?M:Math.min(b+T,M)+k,K=Array(D+2);K[D+1]=(1<<F)-1;for(var q=D;q>=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i<o;i+=1){for(var c=n[i],a=!1,s=-1;!a&&++s<X;){var u=Q[s],h=u.isMultiMatch(c);h&&(r.push(new u(h,t)),a=!0)}if(!a)for(s=-1;++s<X;){var l=Q[s],f=l.isSingleMatch(c);if(f){r.push(new l(f,t));break}}}return r}))}var ee=new Set([G.type,H.type]),te=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a<s;a+=1){var u=t[a];o.length=0,i=0;for(var h=0,l=u.length;h<l;h+=1){var d=u[h],v=d.search(e),g=v.isMatch,y=v.indices,p=v.score;if(!g){c=0,i=0,o.length=0;break}if(i+=1,c+=p,r){var m=d.constructor.type;ee.has(m)?o=[].concat(f(o),f(y)):o.push(y)}}if(i){var k={isMatch:!0,score:c/i};return r&&(k.indices=o),k}}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(e,t){return t.useExtendedSearch}}]),e}(),ne=[];function re(e,t){for(var n=0,r=ne.length;n<r;n+=1){var i=ne[n];if(i.condition(e,t))return new i(e,t)}return new T(e,t)}var ie="$and",oe="$or",ce="$path",ae="$val",se=function(e){return!(!e[ie]&&!e[oe])},ue=function(e){return!!e[ce]},he=function(e){return!v(e)&&m(e)&&!se(e)},le=function(e){return c({},ie,Object.keys(e).map((function(t){return c({},t,e[t])})))};function fe(e,t){var n=t.ignoreFieldNorm,r=void 0===n?I.ignoreFieldNorm:n;e.forEach((function(e){var t=1;e.matches.forEach((function(e){var n=e.key,i=e.norm,o=e.score,c=n?n.weight:null;t*=Math.pow(0===o&&c?Number.EPSILON:o,(c||1)*(r?1:i))})),e.score=t}))}function de(e,t){var n=e.matches;t.matches=[],k(n)&&n.forEach((function(e){if(k(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n<r;n+=1){var i=this._docs[n];e(i,n)&&(this.removeAt(n),n-=1,r-=1,t.push(i))}return t}},{key:"removeAt",value:function(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u<h;u+=1){var l=e(n.children[u],r,i);if(l.length)s.push.apply(s,f(l));else if(n.operator===ie)return[]}return s},i=this._myIndex.records,o={},c=[];return i.forEach((function(e){var t=e.$,i=e.i;if(k(t)){var a=r(n,t,i);a.length&&(o[i]||(o[i]={idx:i,item:t,matches:[]},c.push(o[i])),a.forEach((function(e){var t,n=e.matches;(t=o[i].matches).push.apply(t,f(n))})))}})),c}},{key:"_searchObjectList",value:function(e){var t=this,n=re(e,this.options),r=this._myIndex,i=r.keys,o=r.records,c=[];return o.forEach((function(e){var r=e.$,o=e.i;if(k(r)){var a=[];i.forEach((function(e,i){a.push.apply(a,f(t._findMatches({key:e,value:r[i],searcher:n})))})),a.length&&c.push({idx:o,item:r,matches:a})}})),c}},{key:"_findMatches",value:function(e){var t=e.key,n=e.value,r=e.searcher;if(!k(n))return[];var i=[];if(v(n))n.forEach((function(e){var n=e.v,o=e.i,c=e.n;if(k(n)){var a=r.searchIn(n),s=a.isMatch,u=a.score,h=a.indices;s&&i.push({score:u,key:t,value:n,idx:o,norm:c,indices:h})}}));else{var o=n.v,c=n.n,a=r.searchIn(o),s=a.isMatch,u=a.score,h=a.indices;s&&i.push({score:u,key:t,value:o,norm:c,indices:h})}return i}}]),e}();return ye.version="6.6.2",ye.createIndex=F,ye.parseIndex=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/site_libs/quarto-search/quarto-search.js
DELETED
@@ -1,1140 +0,0 @@
|
|
1 |
-
const kQueryArg = "q";
|
2 |
-
const kResultsArg = "show-results";
|
3 |
-
|
4 |
-
// If items don't provide a URL, then both the navigator and the onSelect
|
5 |
-
// function aren't called (and therefore, the default implementation is used)
|
6 |
-
//
|
7 |
-
// We're using this sentinel URL to signal to those handlers that this
|
8 |
-
// item is a more item (along with the type) and can be handled appropriately
|
9 |
-
const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05";
|
10 |
-
|
11 |
-
window.document.addEventListener("DOMContentLoaded", function (_event) {
|
12 |
-
// Ensure that search is available on this page. If it isn't,
|
13 |
-
// should return early and not do anything
|
14 |
-
var searchEl = window.document.getElementById("quarto-search");
|
15 |
-
if (!searchEl) return;
|
16 |
-
|
17 |
-
const { autocomplete } = window["@algolia/autocomplete-js"];
|
18 |
-
|
19 |
-
let quartoSearchOptions = {};
|
20 |
-
let language = {};
|
21 |
-
const searchOptionEl = window.document.getElementById(
|
22 |
-
"quarto-search-options"
|
23 |
-
);
|
24 |
-
if (searchOptionEl) {
|
25 |
-
const jsonStr = searchOptionEl.textContent;
|
26 |
-
quartoSearchOptions = JSON.parse(jsonStr);
|
27 |
-
language = quartoSearchOptions.language;
|
28 |
-
}
|
29 |
-
|
30 |
-
// note the search mode
|
31 |
-
if (quartoSearchOptions.type === "overlay") {
|
32 |
-
searchEl.classList.add("type-overlay");
|
33 |
-
} else {
|
34 |
-
searchEl.classList.add("type-textbox");
|
35 |
-
}
|
36 |
-
|
37 |
-
// Used to determine highlighting behavior for this page
|
38 |
-
// A `q` query param is expected when the user follows a search
|
39 |
-
// to this page
|
40 |
-
const currentUrl = new URL(window.location);
|
41 |
-
const query = currentUrl.searchParams.get(kQueryArg);
|
42 |
-
const showSearchResults = currentUrl.searchParams.get(kResultsArg);
|
43 |
-
const mainEl = window.document.querySelector("main");
|
44 |
-
|
45 |
-
// highlight matches on the page
|
46 |
-
if (query !== null && mainEl) {
|
47 |
-
// perform any highlighting
|
48 |
-
highlight(escapeRegExp(query), mainEl);
|
49 |
-
|
50 |
-
// fix up the URL to remove the q query param
|
51 |
-
const replacementUrl = new URL(window.location);
|
52 |
-
replacementUrl.searchParams.delete(kQueryArg);
|
53 |
-
window.history.replaceState({}, "", replacementUrl);
|
54 |
-
}
|
55 |
-
|
56 |
-
// function to clear highlighting on the page when the search query changes
|
57 |
-
// (e.g. if the user edits the query or clears it)
|
58 |
-
let highlighting = true;
|
59 |
-
const resetHighlighting = (searchTerm) => {
|
60 |
-
if (mainEl && highlighting && query !== null && searchTerm !== query) {
|
61 |
-
clearHighlight(query, mainEl);
|
62 |
-
highlighting = false;
|
63 |
-
}
|
64 |
-
};
|
65 |
-
|
66 |
-
// Clear search highlighting when the user scrolls sufficiently
|
67 |
-
const resetFn = () => {
|
68 |
-
resetHighlighting("");
|
69 |
-
window.removeEventListener("quarto-hrChanged", resetFn);
|
70 |
-
window.removeEventListener("quarto-sectionChanged", resetFn);
|
71 |
-
};
|
72 |
-
|
73 |
-
// Register this event after the initial scrolling and settling of events
|
74 |
-
// on the page
|
75 |
-
window.addEventListener("quarto-hrChanged", resetFn);
|
76 |
-
window.addEventListener("quarto-sectionChanged", resetFn);
|
77 |
-
|
78 |
-
// Responsively switch to overlay mode if the search is present on the navbar
|
79 |
-
// Note that switching the sidebar to overlay mode requires more coordinate (not just
|
80 |
-
// the media query since we generate different HTML for sidebar overlays than we do
|
81 |
-
// for sidebar input UI)
|
82 |
-
const detachedMediaQuery =
|
83 |
-
quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)";
|
84 |
-
|
85 |
-
// If configured, include the analytics client to send insights
|
86 |
-
const plugins = configurePlugins(quartoSearchOptions);
|
87 |
-
|
88 |
-
let lastState = null;
|
89 |
-
const { setIsOpen, setQuery, setCollections } = autocomplete({
|
90 |
-
container: searchEl,
|
91 |
-
detachedMediaQuery: detachedMediaQuery,
|
92 |
-
defaultActiveItemId: 0,
|
93 |
-
panelContainer: "#quarto-search-results",
|
94 |
-
panelPlacement: quartoSearchOptions["panel-placement"],
|
95 |
-
debug: false,
|
96 |
-
openOnFocus: true,
|
97 |
-
plugins,
|
98 |
-
classNames: {
|
99 |
-
form: "d-flex",
|
100 |
-
},
|
101 |
-
translations: {
|
102 |
-
clearButtonTitle: language["search-clear-button-title"],
|
103 |
-
detachedCancelButtonText: language["search-detached-cancel-button-title"],
|
104 |
-
submitButtonTitle: language["search-submit-button-title"],
|
105 |
-
},
|
106 |
-
initialState: {
|
107 |
-
query,
|
108 |
-
},
|
109 |
-
getItemUrl({ item }) {
|
110 |
-
return item.href;
|
111 |
-
},
|
112 |
-
onStateChange({ state }) {
|
113 |
-
// Perhaps reset highlighting
|
114 |
-
resetHighlighting(state.query);
|
115 |
-
|
116 |
-
// If the panel just opened, ensure the panel is positioned properly
|
117 |
-
if (state.isOpen) {
|
118 |
-
if (lastState && !lastState.isOpen) {
|
119 |
-
setTimeout(() => {
|
120 |
-
positionPanel(quartoSearchOptions["panel-placement"]);
|
121 |
-
}, 150);
|
122 |
-
}
|
123 |
-
}
|
124 |
-
|
125 |
-
// Perhaps show the copy link
|
126 |
-
showCopyLink(state.query, quartoSearchOptions);
|
127 |
-
|
128 |
-
lastState = state;
|
129 |
-
},
|
130 |
-
reshape({ sources, state }) {
|
131 |
-
return sources.map((source) => {
|
132 |
-
try {
|
133 |
-
const items = source.getItems();
|
134 |
-
|
135 |
-
// Validate the items
|
136 |
-
validateItems(items);
|
137 |
-
|
138 |
-
// group the items by document
|
139 |
-
const groupedItems = new Map();
|
140 |
-
items.forEach((item) => {
|
141 |
-
const hrefParts = item.href.split("#");
|
142 |
-
const baseHref = hrefParts[0];
|
143 |
-
const isDocumentItem = hrefParts.length === 1;
|
144 |
-
|
145 |
-
const items = groupedItems.get(baseHref);
|
146 |
-
if (!items) {
|
147 |
-
groupedItems.set(baseHref, [item]);
|
148 |
-
} else {
|
149 |
-
// If the href for this item matches the document
|
150 |
-
// exactly, place this item first as it is the item that represents
|
151 |
-
// the document itself
|
152 |
-
if (isDocumentItem) {
|
153 |
-
items.unshift(item);
|
154 |
-
} else {
|
155 |
-
items.push(item);
|
156 |
-
}
|
157 |
-
groupedItems.set(baseHref, items);
|
158 |
-
}
|
159 |
-
});
|
160 |
-
|
161 |
-
const reshapedItems = [];
|
162 |
-
let count = 1;
|
163 |
-
for (const [_key, value] of groupedItems) {
|
164 |
-
const firstItem = value[0];
|
165 |
-
reshapedItems.push({
|
166 |
-
...firstItem,
|
167 |
-
type: kItemTypeDoc,
|
168 |
-
});
|
169 |
-
|
170 |
-
const collapseMatches = quartoSearchOptions["collapse-after"];
|
171 |
-
const collapseCount =
|
172 |
-
typeof collapseMatches === "number" ? collapseMatches : 1;
|
173 |
-
|
174 |
-
if (value.length > 1) {
|
175 |
-
const target = `search-more-${count}`;
|
176 |
-
const isExpanded =
|
177 |
-
state.context.expanded &&
|
178 |
-
state.context.expanded.includes(target);
|
179 |
-
|
180 |
-
const remainingCount = value.length - collapseCount;
|
181 |
-
|
182 |
-
for (let i = 1; i < value.length; i++) {
|
183 |
-
if (collapseMatches && i === collapseCount) {
|
184 |
-
reshapedItems.push({
|
185 |
-
target,
|
186 |
-
title: isExpanded
|
187 |
-
? language["search-hide-matches-text"]
|
188 |
-
: remainingCount === 1
|
189 |
-
? `${remainingCount} ${language["search-more-match-text"]}`
|
190 |
-
: `${remainingCount} ${language["search-more-matches-text"]}`,
|
191 |
-
type: kItemTypeMore,
|
192 |
-
href: kItemTypeMoreHref,
|
193 |
-
});
|
194 |
-
}
|
195 |
-
|
196 |
-
if (isExpanded || !collapseMatches || i < collapseCount) {
|
197 |
-
reshapedItems.push({
|
198 |
-
...value[i],
|
199 |
-
type: kItemTypeItem,
|
200 |
-
target,
|
201 |
-
});
|
202 |
-
}
|
203 |
-
}
|
204 |
-
}
|
205 |
-
count += 1;
|
206 |
-
}
|
207 |
-
|
208 |
-
return {
|
209 |
-
...source,
|
210 |
-
getItems() {
|
211 |
-
return reshapedItems;
|
212 |
-
},
|
213 |
-
};
|
214 |
-
} catch (error) {
|
215 |
-
// Some form of error occurred
|
216 |
-
return {
|
217 |
-
...source,
|
218 |
-
getItems() {
|
219 |
-
return [
|
220 |
-
{
|
221 |
-
title: error.name || "An Error Occurred While Searching",
|
222 |
-
text:
|
223 |
-
error.message ||
|
224 |
-
"An unknown error occurred while attempting to perform the requested search.",
|
225 |
-
type: kItemTypeError,
|
226 |
-
},
|
227 |
-
];
|
228 |
-
},
|
229 |
-
};
|
230 |
-
}
|
231 |
-
});
|
232 |
-
},
|
233 |
-
navigator: {
|
234 |
-
navigate({ itemUrl }) {
|
235 |
-
if (itemUrl !== offsetURL(kItemTypeMoreHref)) {
|
236 |
-
window.location.assign(itemUrl);
|
237 |
-
}
|
238 |
-
},
|
239 |
-
navigateNewTab({ itemUrl }) {
|
240 |
-
if (itemUrl !== offsetURL(kItemTypeMoreHref)) {
|
241 |
-
const windowReference = window.open(itemUrl, "_blank", "noopener");
|
242 |
-
if (windowReference) {
|
243 |
-
windowReference.focus();
|
244 |
-
}
|
245 |
-
}
|
246 |
-
},
|
247 |
-
navigateNewWindow({ itemUrl }) {
|
248 |
-
if (itemUrl !== offsetURL(kItemTypeMoreHref)) {
|
249 |
-
window.open(itemUrl, "_blank", "noopener");
|
250 |
-
}
|
251 |
-
},
|
252 |
-
},
|
253 |
-
getSources({ state, setContext, setActiveItemId, refresh }) {
|
254 |
-
return [
|
255 |
-
{
|
256 |
-
sourceId: "documents",
|
257 |
-
getItemUrl({ item }) {
|
258 |
-
if (item.href) {
|
259 |
-
return offsetURL(item.href);
|
260 |
-
} else {
|
261 |
-
return undefined;
|
262 |
-
}
|
263 |
-
},
|
264 |
-
onSelect({
|
265 |
-
item,
|
266 |
-
state,
|
267 |
-
setContext,
|
268 |
-
setIsOpen,
|
269 |
-
setActiveItemId,
|
270 |
-
refresh,
|
271 |
-
}) {
|
272 |
-
if (item.type === kItemTypeMore) {
|
273 |
-
toggleExpanded(item, state, setContext, setActiveItemId, refresh);
|
274 |
-
|
275 |
-
// Toggle more
|
276 |
-
setIsOpen(true);
|
277 |
-
}
|
278 |
-
},
|
279 |
-
getItems({ query }) {
|
280 |
-
if (query === null || query === "") {
|
281 |
-
return [];
|
282 |
-
}
|
283 |
-
|
284 |
-
const limit = quartoSearchOptions.limit;
|
285 |
-
if (quartoSearchOptions.algolia) {
|
286 |
-
return algoliaSearch(query, limit, quartoSearchOptions.algolia);
|
287 |
-
} else {
|
288 |
-
// Fuse search options
|
289 |
-
const fuseSearchOptions = {
|
290 |
-
isCaseSensitive: false,
|
291 |
-
shouldSort: true,
|
292 |
-
minMatchCharLength: 2,
|
293 |
-
limit: limit,
|
294 |
-
};
|
295 |
-
|
296 |
-
return readSearchData().then(function (fuse) {
|
297 |
-
return fuseSearch(query, fuse, fuseSearchOptions);
|
298 |
-
});
|
299 |
-
}
|
300 |
-
},
|
301 |
-
templates: {
|
302 |
-
noResults({ createElement }) {
|
303 |
-
const hasQuery = lastState.query;
|
304 |
-
|
305 |
-
return createElement(
|
306 |
-
"div",
|
307 |
-
{
|
308 |
-
class: `quarto-search-no-results${
|
309 |
-
hasQuery ? "" : " no-query"
|
310 |
-
}`,
|
311 |
-
},
|
312 |
-
language["search-no-results-text"]
|
313 |
-
);
|
314 |
-
},
|
315 |
-
header({ items, createElement }) {
|
316 |
-
// count the documents
|
317 |
-
const count = items.filter((item) => {
|
318 |
-
return item.type === kItemTypeDoc;
|
319 |
-
}).length;
|
320 |
-
|
321 |
-
if (count > 0) {
|
322 |
-
return createElement(
|
323 |
-
"div",
|
324 |
-
{ class: "search-result-header" },
|
325 |
-
`${count} ${language["search-matching-documents-text"]}`
|
326 |
-
);
|
327 |
-
} else {
|
328 |
-
return createElement(
|
329 |
-
"div",
|
330 |
-
{ class: "search-result-header-no-results" },
|
331 |
-
``
|
332 |
-
);
|
333 |
-
}
|
334 |
-
},
|
335 |
-
footer({ _items, createElement }) {
|
336 |
-
if (
|
337 |
-
quartoSearchOptions.algolia &&
|
338 |
-
quartoSearchOptions.algolia["show-logo"]
|
339 |
-
) {
|
340 |
-
const libDir = quartoSearchOptions.algolia["libDir"];
|
341 |
-
const logo = createElement("img", {
|
342 |
-
src: offsetURL(
|
343 |
-
`${libDir}/quarto-search/search-by-algolia.svg`
|
344 |
-
),
|
345 |
-
class: "algolia-search-logo",
|
346 |
-
});
|
347 |
-
return createElement(
|
348 |
-
"a",
|
349 |
-
{ href: "http://www.algolia.com/" },
|
350 |
-
logo
|
351 |
-
);
|
352 |
-
}
|
353 |
-
},
|
354 |
-
|
355 |
-
item({ item, createElement }) {
|
356 |
-
return renderItem(
|
357 |
-
item,
|
358 |
-
createElement,
|
359 |
-
state,
|
360 |
-
setActiveItemId,
|
361 |
-
setContext,
|
362 |
-
refresh
|
363 |
-
);
|
364 |
-
},
|
365 |
-
},
|
366 |
-
},
|
367 |
-
];
|
368 |
-
},
|
369 |
-
});
|
370 |
-
|
371 |
-
window.quartoOpenSearch = () => {
|
372 |
-
setIsOpen(false);
|
373 |
-
setIsOpen(true);
|
374 |
-
focusSearchInput();
|
375 |
-
};
|
376 |
-
|
377 |
-
// Remove the labeleledby attribute since it is pointing
|
378 |
-
// to a non-existent label
|
379 |
-
if (quartoSearchOptions.type === "overlay") {
|
380 |
-
const inputEl = window.document.querySelector(
|
381 |
-
"#quarto-search .aa-Autocomplete"
|
382 |
-
);
|
383 |
-
if (inputEl) {
|
384 |
-
inputEl.removeAttribute("aria-labelledby");
|
385 |
-
}
|
386 |
-
}
|
387 |
-
|
388 |
-
// If the main document scrolls dismiss the search results
|
389 |
-
// (otherwise, since they're floating in the document they can scroll with the document)
|
390 |
-
window.document.body.onscroll = () => {
|
391 |
-
setIsOpen(false);
|
392 |
-
};
|
393 |
-
|
394 |
-
if (showSearchResults) {
|
395 |
-
setIsOpen(true);
|
396 |
-
focusSearchInput();
|
397 |
-
}
|
398 |
-
});
|
399 |
-
|
400 |
-
function configurePlugins(quartoSearchOptions) {
|
401 |
-
const autocompletePlugins = [];
|
402 |
-
const algoliaOptions = quartoSearchOptions.algolia;
|
403 |
-
if (
|
404 |
-
algoliaOptions &&
|
405 |
-
algoliaOptions["analytics-events"] &&
|
406 |
-
algoliaOptions["search-only-api-key"] &&
|
407 |
-
algoliaOptions["application-id"]
|
408 |
-
) {
|
409 |
-
const apiKey = algoliaOptions["search-only-api-key"];
|
410 |
-
const appId = algoliaOptions["application-id"];
|
411 |
-
|
412 |
-
// Aloglia insights may not be loaded because they require cookie consent
|
413 |
-
// Use deferred loading so events will start being recorded when/if consent
|
414 |
-
// is granted.
|
415 |
-
const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => {
|
416 |
-
if (
|
417 |
-
window.aa &&
|
418 |
-
window["@algolia/autocomplete-plugin-algolia-insights"]
|
419 |
-
) {
|
420 |
-
window.aa("init", {
|
421 |
-
appId,
|
422 |
-
apiKey,
|
423 |
-
useCookie: true,
|
424 |
-
});
|
425 |
-
|
426 |
-
const { createAlgoliaInsightsPlugin } =
|
427 |
-
window["@algolia/autocomplete-plugin-algolia-insights"];
|
428 |
-
// Register the insights client
|
429 |
-
const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({
|
430 |
-
insightsClient: window.aa,
|
431 |
-
onItemsChange({ insights, insightsEvents }) {
|
432 |
-
const events = insightsEvents.map((event) => {
|
433 |
-
const maxEvents = event.objectIDs.slice(0, 20);
|
434 |
-
return {
|
435 |
-
...event,
|
436 |
-
objectIDs: maxEvents,
|
437 |
-
};
|
438 |
-
});
|
439 |
-
|
440 |
-
insights.viewedObjectIDs(...events);
|
441 |
-
},
|
442 |
-
});
|
443 |
-
return algoliaInsightsPlugin;
|
444 |
-
}
|
445 |
-
});
|
446 |
-
|
447 |
-
// Add the plugin
|
448 |
-
autocompletePlugins.push(algoliaInsightsDeferredPlugin);
|
449 |
-
return autocompletePlugins;
|
450 |
-
}
|
451 |
-
}
|
452 |
-
|
453 |
-
// For plugins that may not load immediately, create a wrapper
|
454 |
-
// plugin and forward events and plugin data once the plugin
|
455 |
-
// is initialized. This is useful for cases like cookie consent
|
456 |
-
// which may prevent the analytics insights event plugin from initializing
|
457 |
-
// immediately.
|
458 |
-
function deferredLoadPlugin(createPlugin) {
|
459 |
-
let plugin = undefined;
|
460 |
-
let subscribeObj = undefined;
|
461 |
-
const wrappedPlugin = () => {
|
462 |
-
if (!plugin && subscribeObj) {
|
463 |
-
plugin = createPlugin();
|
464 |
-
if (plugin && plugin.subscribe) {
|
465 |
-
plugin.subscribe(subscribeObj);
|
466 |
-
}
|
467 |
-
}
|
468 |
-
return plugin;
|
469 |
-
};
|
470 |
-
|
471 |
-
return {
|
472 |
-
subscribe: (obj) => {
|
473 |
-
subscribeObj = obj;
|
474 |
-
},
|
475 |
-
onStateChange: (obj) => {
|
476 |
-
const plugin = wrappedPlugin();
|
477 |
-
if (plugin && plugin.onStateChange) {
|
478 |
-
plugin.onStateChange(obj);
|
479 |
-
}
|
480 |
-
},
|
481 |
-
onSubmit: (obj) => {
|
482 |
-
const plugin = wrappedPlugin();
|
483 |
-
if (plugin && plugin.onSubmit) {
|
484 |
-
plugin.onSubmit(obj);
|
485 |
-
}
|
486 |
-
},
|
487 |
-
onReset: (obj) => {
|
488 |
-
const plugin = wrappedPlugin();
|
489 |
-
if (plugin && plugin.onReset) {
|
490 |
-
plugin.onReset(obj);
|
491 |
-
}
|
492 |
-
},
|
493 |
-
getSources: (obj) => {
|
494 |
-
const plugin = wrappedPlugin();
|
495 |
-
if (plugin && plugin.getSources) {
|
496 |
-
return plugin.getSources(obj);
|
497 |
-
} else {
|
498 |
-
return Promise.resolve([]);
|
499 |
-
}
|
500 |
-
},
|
501 |
-
data: (obj) => {
|
502 |
-
const plugin = wrappedPlugin();
|
503 |
-
if (plugin && plugin.data) {
|
504 |
-
plugin.data(obj);
|
505 |
-
}
|
506 |
-
},
|
507 |
-
};
|
508 |
-
}
|
509 |
-
|
510 |
-
function validateItems(items) {
|
511 |
-
// Validate the first item
|
512 |
-
if (items.length > 0) {
|
513 |
-
const item = items[0];
|
514 |
-
const missingFields = [];
|
515 |
-
if (item.href == undefined) {
|
516 |
-
missingFields.push("href");
|
517 |
-
}
|
518 |
-
if (!item.title == undefined) {
|
519 |
-
missingFields.push("title");
|
520 |
-
}
|
521 |
-
if (!item.text == undefined) {
|
522 |
-
missingFields.push("text");
|
523 |
-
}
|
524 |
-
|
525 |
-
if (missingFields.length === 1) {
|
526 |
-
throw {
|
527 |
-
name: `Error: Search index is missing the <code>${missingFields[0]}</code> field.`,
|
528 |
-
message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the <code>${missingFields[0]}</code> field or use <code>index-fields</code> in your <code>_quarto.yml</code> file to specify the field names.`,
|
529 |
-
};
|
530 |
-
} else if (missingFields.length > 1) {
|
531 |
-
const missingFieldList = missingFields
|
532 |
-
.map((field) => {
|
533 |
-
return `<code>${field}</code>`;
|
534 |
-
})
|
535 |
-
.join(", ");
|
536 |
-
|
537 |
-
throw {
|
538 |
-
name: `Error: Search index is missing the following fields: ${missingFieldList}.`,
|
539 |
-
message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use <code>index-fields</code> in your <code>_quarto.yml</code> file to specify the field names.`,
|
540 |
-
};
|
541 |
-
}
|
542 |
-
}
|
543 |
-
}
|
544 |
-
|
545 |
-
let lastQuery = null;
|
546 |
-
function showCopyLink(query, options) {
|
547 |
-
const language = options.language;
|
548 |
-
lastQuery = query;
|
549 |
-
// Insert share icon
|
550 |
-
const inputSuffixEl = window.document.body.querySelector(
|
551 |
-
".aa-Form .aa-InputWrapperSuffix"
|
552 |
-
);
|
553 |
-
|
554 |
-
if (inputSuffixEl) {
|
555 |
-
let copyButtonEl = window.document.body.querySelector(
|
556 |
-
".aa-Form .aa-InputWrapperSuffix .aa-CopyButton"
|
557 |
-
);
|
558 |
-
|
559 |
-
if (copyButtonEl === null) {
|
560 |
-
copyButtonEl = window.document.createElement("button");
|
561 |
-
copyButtonEl.setAttribute("class", "aa-CopyButton");
|
562 |
-
copyButtonEl.setAttribute("type", "button");
|
563 |
-
copyButtonEl.setAttribute("title", language["search-copy-link-title"]);
|
564 |
-
copyButtonEl.onmousedown = (e) => {
|
565 |
-
e.preventDefault();
|
566 |
-
e.stopPropagation();
|
567 |
-
};
|
568 |
-
|
569 |
-
const linkIcon = "bi-clipboard";
|
570 |
-
const checkIcon = "bi-check2";
|
571 |
-
|
572 |
-
const shareIconEl = window.document.createElement("i");
|
573 |
-
shareIconEl.setAttribute("class", `bi ${linkIcon}`);
|
574 |
-
copyButtonEl.appendChild(shareIconEl);
|
575 |
-
inputSuffixEl.prepend(copyButtonEl);
|
576 |
-
|
577 |
-
const clipboard = new window.ClipboardJS(".aa-CopyButton", {
|
578 |
-
text: function (_trigger) {
|
579 |
-
const copyUrl = new URL(window.location);
|
580 |
-
copyUrl.searchParams.set(kQueryArg, lastQuery);
|
581 |
-
copyUrl.searchParams.set(kResultsArg, "1");
|
582 |
-
return copyUrl.toString();
|
583 |
-
},
|
584 |
-
});
|
585 |
-
clipboard.on("success", function (e) {
|
586 |
-
// Focus the input
|
587 |
-
|
588 |
-
// button target
|
589 |
-
const button = e.trigger;
|
590 |
-
const icon = button.querySelector("i.bi");
|
591 |
-
|
592 |
-
// flash "checked"
|
593 |
-
icon.classList.add(checkIcon);
|
594 |
-
icon.classList.remove(linkIcon);
|
595 |
-
setTimeout(function () {
|
596 |
-
icon.classList.remove(checkIcon);
|
597 |
-
icon.classList.add(linkIcon);
|
598 |
-
}, 1000);
|
599 |
-
});
|
600 |
-
}
|
601 |
-
|
602 |
-
// If there is a query, show the link icon
|
603 |
-
if (copyButtonEl) {
|
604 |
-
if (lastQuery && options["copy-button"]) {
|
605 |
-
copyButtonEl.style.display = "flex";
|
606 |
-
} else {
|
607 |
-
copyButtonEl.style.display = "none";
|
608 |
-
}
|
609 |
-
}
|
610 |
-
}
|
611 |
-
}
|
612 |
-
|
613 |
-
/* Search Index Handling */
|
614 |
-
// create the index
|
615 |
-
var fuseIndex = undefined;
|
616 |
-
async function readSearchData() {
|
617 |
-
// Initialize the search index on demand
|
618 |
-
if (fuseIndex === undefined) {
|
619 |
-
// create fuse index
|
620 |
-
const options = {
|
621 |
-
keys: [
|
622 |
-
{ name: "title", weight: 20 },
|
623 |
-
{ name: "section", weight: 20 },
|
624 |
-
{ name: "text", weight: 10 },
|
625 |
-
],
|
626 |
-
ignoreLocation: true,
|
627 |
-
threshold: 0.1,
|
628 |
-
};
|
629 |
-
const fuse = new window.Fuse([], options);
|
630 |
-
|
631 |
-
// fetch the main search.json
|
632 |
-
const response = await fetch(offsetURL("search.json"));
|
633 |
-
if (response.status == 200) {
|
634 |
-
return response.json().then(function (searchDocs) {
|
635 |
-
searchDocs.forEach(function (searchDoc) {
|
636 |
-
fuse.add(searchDoc);
|
637 |
-
});
|
638 |
-
fuseIndex = fuse;
|
639 |
-
return fuseIndex;
|
640 |
-
});
|
641 |
-
} else {
|
642 |
-
return Promise.reject(
|
643 |
-
new Error(
|
644 |
-
"Unexpected status from search index request: " + response.status
|
645 |
-
)
|
646 |
-
);
|
647 |
-
}
|
648 |
-
}
|
649 |
-
return fuseIndex;
|
650 |
-
}
|
651 |
-
|
652 |
-
function inputElement() {
|
653 |
-
return window.document.body.querySelector(".aa-Form .aa-Input");
|
654 |
-
}
|
655 |
-
|
656 |
-
function focusSearchInput() {
|
657 |
-
setTimeout(() => {
|
658 |
-
const inputEl = inputElement();
|
659 |
-
if (inputEl) {
|
660 |
-
inputEl.focus();
|
661 |
-
}
|
662 |
-
}, 50);
|
663 |
-
}
|
664 |
-
|
665 |
-
/* Panels */
|
666 |
-
const kItemTypeDoc = "document";
|
667 |
-
const kItemTypeMore = "document-more";
|
668 |
-
const kItemTypeItem = "document-item";
|
669 |
-
const kItemTypeError = "error";
|
670 |
-
|
671 |
-
function renderItem(
|
672 |
-
item,
|
673 |
-
createElement,
|
674 |
-
state,
|
675 |
-
setActiveItemId,
|
676 |
-
setContext,
|
677 |
-
refresh
|
678 |
-
) {
|
679 |
-
switch (item.type) {
|
680 |
-
case kItemTypeDoc:
|
681 |
-
return createDocumentCard(
|
682 |
-
createElement,
|
683 |
-
"file-richtext",
|
684 |
-
item.title,
|
685 |
-
item.section,
|
686 |
-
item.text,
|
687 |
-
item.href
|
688 |
-
);
|
689 |
-
case kItemTypeMore:
|
690 |
-
return createMoreCard(
|
691 |
-
createElement,
|
692 |
-
item,
|
693 |
-
state,
|
694 |
-
setActiveItemId,
|
695 |
-
setContext,
|
696 |
-
refresh
|
697 |
-
);
|
698 |
-
case kItemTypeItem:
|
699 |
-
return createSectionCard(
|
700 |
-
createElement,
|
701 |
-
item.section,
|
702 |
-
item.text,
|
703 |
-
item.href
|
704 |
-
);
|
705 |
-
case kItemTypeError:
|
706 |
-
return createErrorCard(createElement, item.title, item.text);
|
707 |
-
default:
|
708 |
-
return undefined;
|
709 |
-
}
|
710 |
-
}
|
711 |
-
|
712 |
-
function createDocumentCard(createElement, icon, title, section, text, href) {
|
713 |
-
const iconEl = createElement("i", {
|
714 |
-
class: `bi bi-${icon} search-result-icon`,
|
715 |
-
});
|
716 |
-
const titleEl = createElement("p", { class: "search-result-title" }, title);
|
717 |
-
const titleContainerEl = createElement(
|
718 |
-
"div",
|
719 |
-
{ class: "search-result-title-container" },
|
720 |
-
[iconEl, titleEl]
|
721 |
-
);
|
722 |
-
|
723 |
-
const textEls = [];
|
724 |
-
if (section) {
|
725 |
-
const sectionEl = createElement(
|
726 |
-
"p",
|
727 |
-
{ class: "search-result-section" },
|
728 |
-
section
|
729 |
-
);
|
730 |
-
textEls.push(sectionEl);
|
731 |
-
}
|
732 |
-
const descEl = createElement("p", {
|
733 |
-
class: "search-result-text",
|
734 |
-
dangerouslySetInnerHTML: {
|
735 |
-
__html: text,
|
736 |
-
},
|
737 |
-
});
|
738 |
-
textEls.push(descEl);
|
739 |
-
|
740 |
-
const textContainerEl = createElement(
|
741 |
-
"div",
|
742 |
-
{ class: "search-result-text-container" },
|
743 |
-
textEls
|
744 |
-
);
|
745 |
-
|
746 |
-
const containerEl = createElement(
|
747 |
-
"div",
|
748 |
-
{
|
749 |
-
class: "search-result-container",
|
750 |
-
},
|
751 |
-
[titleContainerEl, textContainerEl]
|
752 |
-
);
|
753 |
-
|
754 |
-
const linkEl = createElement(
|
755 |
-
"a",
|
756 |
-
{
|
757 |
-
href: offsetURL(href),
|
758 |
-
class: "search-result-link",
|
759 |
-
},
|
760 |
-
containerEl
|
761 |
-
);
|
762 |
-
|
763 |
-
const classes = ["search-result-doc", "search-item"];
|
764 |
-
if (!section) {
|
765 |
-
classes.push("document-selectable");
|
766 |
-
}
|
767 |
-
|
768 |
-
return createElement(
|
769 |
-
"div",
|
770 |
-
{
|
771 |
-
class: classes.join(" "),
|
772 |
-
},
|
773 |
-
linkEl
|
774 |
-
);
|
775 |
-
}
|
776 |
-
|
777 |
-
function createMoreCard(
|
778 |
-
createElement,
|
779 |
-
item,
|
780 |
-
state,
|
781 |
-
setActiveItemId,
|
782 |
-
setContext,
|
783 |
-
refresh
|
784 |
-
) {
|
785 |
-
const moreCardEl = createElement(
|
786 |
-
"div",
|
787 |
-
{
|
788 |
-
class: "search-result-more search-item",
|
789 |
-
onClick: (e) => {
|
790 |
-
// Handle expanding the sections by adding the expanded
|
791 |
-
// section to the list of expanded sections
|
792 |
-
toggleExpanded(item, state, setContext, setActiveItemId, refresh);
|
793 |
-
e.stopPropagation();
|
794 |
-
},
|
795 |
-
},
|
796 |
-
item.title
|
797 |
-
);
|
798 |
-
|
799 |
-
return moreCardEl;
|
800 |
-
}
|
801 |
-
|
802 |
-
function toggleExpanded(item, state, setContext, setActiveItemId, refresh) {
|
803 |
-
const expanded = state.context.expanded || [];
|
804 |
-
if (expanded.includes(item.target)) {
|
805 |
-
setContext({
|
806 |
-
expanded: expanded.filter((target) => target !== item.target),
|
807 |
-
});
|
808 |
-
} else {
|
809 |
-
setContext({ expanded: [...expanded, item.target] });
|
810 |
-
}
|
811 |
-
|
812 |
-
refresh();
|
813 |
-
setActiveItemId(item.__autocomplete_id);
|
814 |
-
}
|
815 |
-
|
816 |
-
function createSectionCard(createElement, section, text, href) {
|
817 |
-
const sectionEl = createSection(createElement, section, text, href);
|
818 |
-
return createElement(
|
819 |
-
"div",
|
820 |
-
{
|
821 |
-
class: "search-result-doc-section search-item",
|
822 |
-
},
|
823 |
-
sectionEl
|
824 |
-
);
|
825 |
-
}
|
826 |
-
|
827 |
-
function createSection(createElement, title, text, href) {
|
828 |
-
const descEl = createElement("p", {
|
829 |
-
class: "search-result-text",
|
830 |
-
dangerouslySetInnerHTML: {
|
831 |
-
__html: text,
|
832 |
-
},
|
833 |
-
});
|
834 |
-
|
835 |
-
const titleEl = createElement("p", { class: "search-result-section" }, title);
|
836 |
-
const linkEl = createElement(
|
837 |
-
"a",
|
838 |
-
{
|
839 |
-
href: offsetURL(href),
|
840 |
-
class: "search-result-link",
|
841 |
-
},
|
842 |
-
[titleEl, descEl]
|
843 |
-
);
|
844 |
-
return linkEl;
|
845 |
-
}
|
846 |
-
|
847 |
-
function createErrorCard(createElement, title, text) {
|
848 |
-
const descEl = createElement("p", {
|
849 |
-
class: "search-error-text",
|
850 |
-
dangerouslySetInnerHTML: {
|
851 |
-
__html: text,
|
852 |
-
},
|
853 |
-
});
|
854 |
-
|
855 |
-
const titleEl = createElement("p", {
|
856 |
-
class: "search-error-title",
|
857 |
-
dangerouslySetInnerHTML: {
|
858 |
-
__html: `<i class="bi bi-exclamation-circle search-error-icon"></i> ${title}`,
|
859 |
-
},
|
860 |
-
});
|
861 |
-
const errorEl = createElement("div", { class: "search-error" }, [
|
862 |
-
titleEl,
|
863 |
-
descEl,
|
864 |
-
]);
|
865 |
-
return errorEl;
|
866 |
-
}
|
867 |
-
|
868 |
-
function positionPanel(pos) {
|
869 |
-
const panelEl = window.document.querySelector(
|
870 |
-
"#quarto-search-results .aa-Panel"
|
871 |
-
);
|
872 |
-
const inputEl = window.document.querySelector(
|
873 |
-
"#quarto-search .aa-Autocomplete"
|
874 |
-
);
|
875 |
-
|
876 |
-
if (panelEl && inputEl) {
|
877 |
-
panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`;
|
878 |
-
if (pos === "start") {
|
879 |
-
panelEl.style.left = `${Math.round(inputEl.left)}px`;
|
880 |
-
} else {
|
881 |
-
panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`;
|
882 |
-
}
|
883 |
-
}
|
884 |
-
}
|
885 |
-
|
886 |
-
/* Highlighting */
|
887 |
-
// highlighting functions
|
888 |
-
function highlightMatch(query, text) {
|
889 |
-
if (text) {
|
890 |
-
const start = text.toLowerCase().indexOf(query.toLowerCase());
|
891 |
-
if (start !== -1) {
|
892 |
-
const startMark = "<mark class='search-match'>";
|
893 |
-
const endMark = "</mark>";
|
894 |
-
|
895 |
-
const end = start + query.length;
|
896 |
-
text =
|
897 |
-
text.slice(0, start) +
|
898 |
-
startMark +
|
899 |
-
text.slice(start, end) +
|
900 |
-
endMark +
|
901 |
-
text.slice(end);
|
902 |
-
const startInfo = clipStart(text, start);
|
903 |
-
const endInfo = clipEnd(
|
904 |
-
text,
|
905 |
-
startInfo.position + startMark.length + endMark.length
|
906 |
-
);
|
907 |
-
text =
|
908 |
-
startInfo.prefix +
|
909 |
-
text.slice(startInfo.position, endInfo.position) +
|
910 |
-
endInfo.suffix;
|
911 |
-
|
912 |
-
return text;
|
913 |
-
} else {
|
914 |
-
return text;
|
915 |
-
}
|
916 |
-
} else {
|
917 |
-
return text;
|
918 |
-
}
|
919 |
-
}
|
920 |
-
|
921 |
-
function clipStart(text, pos) {
|
922 |
-
const clipStart = pos - 50;
|
923 |
-
if (clipStart < 0) {
|
924 |
-
// This will just return the start of the string
|
925 |
-
return {
|
926 |
-
position: 0,
|
927 |
-
prefix: "",
|
928 |
-
};
|
929 |
-
} else {
|
930 |
-
// We're clipping before the start of the string, walk backwards to the first space.
|
931 |
-
const spacePos = findSpace(text, pos, -1);
|
932 |
-
return {
|
933 |
-
position: spacePos.position,
|
934 |
-
prefix: "",
|
935 |
-
};
|
936 |
-
}
|
937 |
-
}
|
938 |
-
|
939 |
-
function clipEnd(text, pos) {
|
940 |
-
const clipEnd = pos + 200;
|
941 |
-
if (clipEnd > text.length) {
|
942 |
-
return {
|
943 |
-
position: text.length,
|
944 |
-
suffix: "",
|
945 |
-
};
|
946 |
-
} else {
|
947 |
-
const spacePos = findSpace(text, clipEnd, 1);
|
948 |
-
return {
|
949 |
-
position: spacePos.position,
|
950 |
-
suffix: spacePos.clipped ? "…" : "",
|
951 |
-
};
|
952 |
-
}
|
953 |
-
}
|
954 |
-
|
955 |
-
function findSpace(text, start, step) {
|
956 |
-
let stepPos = start;
|
957 |
-
while (stepPos > -1 && stepPos < text.length) {
|
958 |
-
const char = text[stepPos];
|
959 |
-
if (char === " " || char === "," || char === ":") {
|
960 |
-
return {
|
961 |
-
position: step === 1 ? stepPos : stepPos - step,
|
962 |
-
clipped: stepPos > 1 && stepPos < text.length,
|
963 |
-
};
|
964 |
-
}
|
965 |
-
stepPos = stepPos + step;
|
966 |
-
}
|
967 |
-
|
968 |
-
return {
|
969 |
-
position: stepPos - step,
|
970 |
-
clipped: false,
|
971 |
-
};
|
972 |
-
}
|
973 |
-
|
974 |
-
// removes highlighting as implemented by the mark tag
|
975 |
-
function clearHighlight(searchterm, el) {
|
976 |
-
const childNodes = el.childNodes;
|
977 |
-
for (let i = childNodes.length - 1; i >= 0; i--) {
|
978 |
-
const node = childNodes[i];
|
979 |
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
980 |
-
if (
|
981 |
-
node.tagName === "MARK" &&
|
982 |
-
node.innerText.toLowerCase() === searchterm.toLowerCase()
|
983 |
-
) {
|
984 |
-
el.replaceChild(document.createTextNode(node.innerText), node);
|
985 |
-
} else {
|
986 |
-
clearHighlight(searchterm, node);
|
987 |
-
}
|
988 |
-
}
|
989 |
-
}
|
990 |
-
}
|
991 |
-
|
992 |
-
function escapeRegExp(string) {
|
993 |
-
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
994 |
-
}
|
995 |
-
|
996 |
-
// highlight matches
|
997 |
-
function highlight(term, el) {
|
998 |
-
const termRegex = new RegExp(term, "ig");
|
999 |
-
const childNodes = el.childNodes;
|
1000 |
-
|
1001 |
-
// walk back to front avoid mutating elements in front of us
|
1002 |
-
for (let i = childNodes.length - 1; i >= 0; i--) {
|
1003 |
-
const node = childNodes[i];
|
1004 |
-
|
1005 |
-
if (node.nodeType === Node.TEXT_NODE) {
|
1006 |
-
// Search text nodes for text to highlight
|
1007 |
-
const text = node.nodeValue;
|
1008 |
-
|
1009 |
-
let startIndex = 0;
|
1010 |
-
let matchIndex = text.search(termRegex);
|
1011 |
-
if (matchIndex > -1) {
|
1012 |
-
const markFragment = document.createDocumentFragment();
|
1013 |
-
while (matchIndex > -1) {
|
1014 |
-
const prefix = text.slice(startIndex, matchIndex);
|
1015 |
-
markFragment.appendChild(document.createTextNode(prefix));
|
1016 |
-
|
1017 |
-
const mark = document.createElement("mark");
|
1018 |
-
mark.appendChild(
|
1019 |
-
document.createTextNode(
|
1020 |
-
text.slice(matchIndex, matchIndex + term.length)
|
1021 |
-
)
|
1022 |
-
);
|
1023 |
-
markFragment.appendChild(mark);
|
1024 |
-
|
1025 |
-
startIndex = matchIndex + term.length;
|
1026 |
-
matchIndex = text.slice(startIndex).search(new RegExp(term, "ig"));
|
1027 |
-
if (matchIndex > -1) {
|
1028 |
-
matchIndex = startIndex + matchIndex;
|
1029 |
-
}
|
1030 |
-
}
|
1031 |
-
if (startIndex < text.length) {
|
1032 |
-
markFragment.appendChild(
|
1033 |
-
document.createTextNode(text.slice(startIndex, text.length))
|
1034 |
-
);
|
1035 |
-
}
|
1036 |
-
|
1037 |
-
el.replaceChild(markFragment, node);
|
1038 |
-
}
|
1039 |
-
} else if (node.nodeType === Node.ELEMENT_NODE) {
|
1040 |
-
// recurse through elements
|
1041 |
-
highlight(term, node);
|
1042 |
-
}
|
1043 |
-
}
|
1044 |
-
}
|
1045 |
-
|
1046 |
-
/* Link Handling */
|
1047 |
-
// get the offset from this page for a given site root relative url
|
1048 |
-
function offsetURL(url) {
|
1049 |
-
var offset = getMeta("quarto:offset");
|
1050 |
-
return offset ? offset + url : url;
|
1051 |
-
}
|
1052 |
-
|
1053 |
-
// read a meta tag value
|
1054 |
-
function getMeta(metaName) {
|
1055 |
-
var metas = window.document.getElementsByTagName("meta");
|
1056 |
-
for (let i = 0; i < metas.length; i++) {
|
1057 |
-
if (metas[i].getAttribute("name") === metaName) {
|
1058 |
-
return metas[i].getAttribute("content");
|
1059 |
-
}
|
1060 |
-
}
|
1061 |
-
return "";
|
1062 |
-
}
|
1063 |
-
|
1064 |
-
function algoliaSearch(query, limit, algoliaOptions) {
|
1065 |
-
const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"];
|
1066 |
-
|
1067 |
-
const applicationId = algoliaOptions["application-id"];
|
1068 |
-
const searchOnlyApiKey = algoliaOptions["search-only-api-key"];
|
1069 |
-
const indexName = algoliaOptions["index-name"];
|
1070 |
-
const indexFields = algoliaOptions["index-fields"];
|
1071 |
-
const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey);
|
1072 |
-
const searchParams = algoliaOptions["params"];
|
1073 |
-
const searchAnalytics = !!algoliaOptions["analytics-events"];
|
1074 |
-
|
1075 |
-
return getAlgoliaResults({
|
1076 |
-
searchClient,
|
1077 |
-
queries: [
|
1078 |
-
{
|
1079 |
-
indexName: indexName,
|
1080 |
-
query,
|
1081 |
-
params: {
|
1082 |
-
hitsPerPage: limit,
|
1083 |
-
clickAnalytics: searchAnalytics,
|
1084 |
-
...searchParams,
|
1085 |
-
},
|
1086 |
-
},
|
1087 |
-
],
|
1088 |
-
transformResponse: (response) => {
|
1089 |
-
if (!indexFields) {
|
1090 |
-
return response.hits.map((hit) => {
|
1091 |
-
return hit.map((item) => {
|
1092 |
-
return {
|
1093 |
-
...item,
|
1094 |
-
text: highlightMatch(query, item.text),
|
1095 |
-
};
|
1096 |
-
});
|
1097 |
-
});
|
1098 |
-
} else {
|
1099 |
-
const remappedHits = response.hits.map((hit) => {
|
1100 |
-
return hit.map((item) => {
|
1101 |
-
const newItem = { ...item };
|
1102 |
-
["href", "section", "title", "text"].forEach((keyName) => {
|
1103 |
-
const mappedName = indexFields[keyName];
|
1104 |
-
if (
|
1105 |
-
mappedName &&
|
1106 |
-
item[mappedName] !== undefined &&
|
1107 |
-
mappedName !== keyName
|
1108 |
-
) {
|
1109 |
-
newItem[keyName] = item[mappedName];
|
1110 |
-
delete newItem[mappedName];
|
1111 |
-
}
|
1112 |
-
});
|
1113 |
-
newItem.text = highlightMatch(query, newItem.text);
|
1114 |
-
return newItem;
|
1115 |
-
});
|
1116 |
-
});
|
1117 |
-
return remappedHits;
|
1118 |
-
}
|
1119 |
-
},
|
1120 |
-
});
|
1121 |
-
}
|
1122 |
-
|
1123 |
-
function fuseSearch(query, fuse, fuseOptions) {
|
1124 |
-
return fuse.search(query, fuseOptions).map((result) => {
|
1125 |
-
const addParam = (url, name, value) => {
|
1126 |
-
const anchorParts = url.split("#");
|
1127 |
-
const baseUrl = anchorParts[0];
|
1128 |
-
const sep = baseUrl.search("\\?") > 0 ? "&" : "?";
|
1129 |
-
anchorParts[0] = baseUrl + sep + name + "=" + value;
|
1130 |
-
return anchorParts.join("#");
|
1131 |
-
};
|
1132 |
-
|
1133 |
-
return {
|
1134 |
-
title: result.item.title,
|
1135 |
-
section: result.item.section,
|
1136 |
-
href: addParam(result.item.href, kQueryArg, query),
|
1137 |
-
text: highlightMatch(query, result.item.text),
|
1138 |
-
};
|
1139 |
-
});
|
1140 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_proc/_docs/sitemap.xml
CHANGED
@@ -1,23 +1,3 @@
|
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
3 |
-
<url>
|
4 |
-
<loc>https://animalequality.github.io/lv-recipe-chatbot/app.html</loc>
|
5 |
-
<lastmod>2023-06-07T04:08:48.274Z</lastmod>
|
6 |
-
</url>
|
7 |
-
<url>
|
8 |
-
<loc>https://animalequality.github.io/lv-recipe-chatbot/index.html</loc>
|
9 |
-
<lastmod>2023-06-07T04:10:36.549Z</lastmod>
|
10 |
-
</url>
|
11 |
-
<url>
|
12 |
-
<loc>https://animalequality.github.io/lv-recipe-chatbot/lchain_tool.html</loc>
|
13 |
-
<lastmod>2023-06-07T04:08:31.310Z</lastmod>
|
14 |
-
</url>
|
15 |
-
<url>
|
16 |
-
<loc>https://animalequality.github.io/lv-recipe-chatbot/edamam_api.html</loc>
|
17 |
-
<lastmod>2023-06-07T04:08:31.486Z</lastmod>
|
18 |
-
</url>
|
19 |
-
<url>
|
20 |
-
<loc>https://animalequality.github.io/lv-recipe-chatbot/engineer_prompt.html</loc>
|
21 |
-
<lastmod>2023-06-06T21:27:32.002Z</lastmod>
|
22 |
-
</url>
|
23 |
</urlset>
|
|
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
</urlset>
|
_proc/_docs/styles.css
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
.cell {
|
2 |
-
margin-bottom: 1rem;
|
3 |
-
}
|
4 |
-
|
5 |
-
.cell > .sourceCode {
|
6 |
-
margin-bottom: 0;
|
7 |
-
}
|
8 |
-
|
9 |
-
.cell-output > pre {
|
10 |
-
margin-bottom: 0;
|
11 |
-
}
|
12 |
-
|
13 |
-
.cell-output > pre, .cell-output > .sourceCode > pre, .cell-output-stdout > pre {
|
14 |
-
margin-left: 0.8rem;
|
15 |
-
margin-top: 0;
|
16 |
-
background: none;
|
17 |
-
border-left: 2px solid lightsalmon;
|
18 |
-
border-top-left-radius: 0;
|
19 |
-
border-top-right-radius: 0;
|
20 |
-
}
|
21 |
-
|
22 |
-
.cell-output > .sourceCode {
|
23 |
-
border: none;
|
24 |
-
}
|
25 |
-
|
26 |
-
.cell-output > .sourceCode {
|
27 |
-
background: none;
|
28 |
-
margin-top: 0;
|
29 |
-
}
|
30 |
-
|
31 |
-
div.description {
|
32 |
-
padding-left: 2px;
|
33 |
-
padding-top: 5px;
|
34 |
-
font-style: italic;
|
35 |
-
font-size: 135%;
|
36 |
-
opacity: 70%;
|
37 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nbs/constants.py → _proc/constants
RENAMED
File without changes
|
_proc/gradio_cached_examples/3/log.csv
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
component 0,flag,username,timestamp
|
2 |
+
"I uploaded an image that may contain vegan ingredients.
|
3 |
+
The description of the image is: `a refrigerator with food inside`.
|
4 |
+
The extracted ingredients are:
|
5 |
+
```
|
6 |
+
cabbage lettuce onion
|
7 |
+
apples
|
8 |
+
rice
|
9 |
+
plant-based milk
|
10 |
+
```
|
11 |
+
",,,2023-06-09 17:49:37.927972
|
12 |
+
"I uploaded an image that may contain vegan ingredients.
|
13 |
+
The description of the image is: `a table with a variety of fruits and vegetables`.
|
14 |
+
The extracted ingredients are:
|
15 |
+
```
|
16 |
+
broccoli and tomatoes
|
17 |
+
bananas apples oranges
|
18 |
+
potatoes
|
19 |
+
plant-based milk
|
20 |
+
```
|
21 |
+
",,,2023-06-09 17:49:45.689277
|
22 |
+
"I uploaded an image that may contain vegan ingredients.
|
23 |
+
The description of the image is: `a refrigerator filled with food and drinks`.
|
24 |
+
The extracted ingredients are:
|
25 |
+
```
|
26 |
+
broccoli and zucchini
|
27 |
+
bananas
|
28 |
+
rice
|
29 |
+
plant-based milk
|
30 |
+
```
|
31 |
+
",,,2023-06-09 17:49:54.279231
|
32 |
+
"I uploaded an image that may contain vegan ingredients.
|
33 |
+
The description of the image is: `a counter with various foods on it`.
|
34 |
+
The extracted ingredients are:
|
35 |
+
```
|
36 |
+
carrots and broccoli
|
37 |
+
apples bananas and tomatoes
|
38 |
+
rice
|
39 |
+
plant-based milk
|
40 |
+
```
|
41 |
+
",,,2023-06-09 17:50:02.969479
|
42 |
+
"I uploaded an image that may contain vegan ingredients.
|
43 |
+
The description of the image is: `a wooden table`.
|
44 |
+
The extracted ingredients are:
|
45 |
+
```
|
46 |
+
potatoes and carrots
|
47 |
+
apples
|
48 |
+
potatoes
|
49 |
+
plant-based milk
|
50 |
+
```
|
51 |
+
",,,2023-06-09 17:50:09.945160
|
52 |
+
"I uploaded an image that may contain vegan ingredients.
|
53 |
+
The description of the image is: `a table with a variety of fruits and vegetables`.
|
54 |
+
The extracted ingredients are:
|
55 |
+
```
|
56 |
+
peppers broccoli and squash
|
57 |
+
watermelon limes and pineapple
|
58 |
+
rice
|
59 |
+
```
|
60 |
+
",,,2023-06-09 17:50:20.121402
|
_proc/gradio_cached_examples/8/log.csv
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
component 0,flag,username,timestamp
|
2 |
+
,,,2023-06-09 17:44:19.054550
|
3 |
+
,,,2023-06-09 17:44:24.817475
|
4 |
+
,,,2023-06-09 17:44:30.963877
|
5 |
+
,,,2023-06-09 17:44:36.517610
|
6 |
+
,,,2023-06-09 17:44:41.240948
|
7 |
+
,,,2023-06-09 17:44:47.709352
|
_proc/sidebar.yml
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
website:
|
2 |
-
sidebar:
|
3 |
-
contents:
|
4 |
-
- index.ipynb
|
5 |
-
- 00_engineer_prompt.ipynb
|
6 |
-
- 01_app.ipynb
|
7 |
-
- 02_lchain_tool.ipynb
|
8 |
-
- 03_edamam_api.ipynb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
CHANGED
@@ -1,5 +1,15 @@
|
|
1 |
-
from lv_recipe_chatbot.app import
|
|
|
|
|
|
|
2 |
# for Hugging Face
|
3 |
|
4 |
if __name__ == "__main__":
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from lv_recipe_chatbot.app import create_demo, ConversationBot
|
2 |
+
import openai
|
3 |
+
import os
|
4 |
+
|
5 |
# for Hugging Face
|
6 |
|
7 |
if __name__ == "__main__":
|
8 |
+
openai.api_key = os.environ["OPENAI_API_KEY"]
|
9 |
+
demo = create_demo(ConversationBot(verbose=True))
|
10 |
+
demo.launch(auth=(
|
11 |
+
os.environ["GRADIO_DEMO_USERNAME"],
|
12 |
+
os.environ["GRADIO_DEMO_PASSWORD"]
|
13 |
+
))
|
14 |
+
|
15 |
+
|
assets/images/vegan_ingredients/veg-groceries-table.jpeg
ADDED
assets/images/vegan_ingredients/veggie-fridge.jpeg
ADDED
constants.py
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
from pathlib import Path
|
2 |
+
|
3 |
+
ROOT_DIR = Path(__file__).parent
|
lv_recipe_chatbot/_modidx.py
CHANGED
@@ -6,6 +6,8 @@ d = { 'settings': { 'branch': 'main',
|
|
6 |
'git_url': 'https://github.com/animalequality/lv-recipe-chatbot',
|
7 |
'lib_path': 'lv_recipe_chatbot'},
|
8 |
'syms': { 'lv_recipe_chatbot.app': { 'lv_recipe_chatbot.app.ConversationBot': ('app.html#conversationbot', 'lv_recipe_chatbot/app.py'),
|
|
|
|
|
9 |
'lv_recipe_chatbot.app.ConversationBot.__init__': ( 'app.html#conversationbot.__init__',
|
10 |
'lv_recipe_chatbot/app.py'),
|
11 |
'lv_recipe_chatbot.app.ConversationBot._get_bot_response': ( 'app.html#conversationbot._get_bot_response',
|
@@ -16,10 +18,32 @@ d = { 'settings': { 'branch': 'main',
|
|
16 |
'lv_recipe_chatbot/app.py'),
|
17 |
'lv_recipe_chatbot.app.ConversationBot.respond': ( 'app.html#conversationbot.respond',
|
18 |
'lv_recipe_chatbot/app.py'),
|
19 |
-
'lv_recipe_chatbot.app.
|
|
|
|
|
20 |
'lv_recipe_chatbot.edamam_api': { 'lv_recipe_chatbot.edamam_api.foo': ( 'edamam_api.html#foo',
|
21 |
'lv_recipe_chatbot/edamam_api.py')},
|
22 |
'lv_recipe_chatbot.engineer_prompt': {},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
'lv_recipe_chatbot.lchain_tool': { 'lv_recipe_chatbot.lchain_tool.RecipeSerpAPIWrapper': ( 'lchain_tool.html#recipeserpapiwrapper',
|
24 |
'lv_recipe_chatbot/lchain_tool.py'),
|
25 |
'lv_recipe_chatbot.lchain_tool.RecipeSerpAPIWrapper._process_response': ( 'lchain_tool.html#recipeserpapiwrapper._process_response',
|
|
|
6 |
'git_url': 'https://github.com/animalequality/lv-recipe-chatbot',
|
7 |
'lib_path': 'lv_recipe_chatbot'},
|
8 |
'syms': { 'lv_recipe_chatbot.app': { 'lv_recipe_chatbot.app.ConversationBot': ('app.html#conversationbot', 'lv_recipe_chatbot/app.py'),
|
9 |
+
'lv_recipe_chatbot.app.ConversationBot.__del__': ( 'app.html#conversationbot.__del__',
|
10 |
+
'lv_recipe_chatbot/app.py'),
|
11 |
'lv_recipe_chatbot.app.ConversationBot.__init__': ( 'app.html#conversationbot.__init__',
|
12 |
'lv_recipe_chatbot/app.py'),
|
13 |
'lv_recipe_chatbot.app.ConversationBot._get_bot_response': ( 'app.html#conversationbot._get_bot_response',
|
|
|
18 |
'lv_recipe_chatbot/app.py'),
|
19 |
'lv_recipe_chatbot.app.ConversationBot.respond': ( 'app.html#conversationbot.respond',
|
20 |
'lv_recipe_chatbot/app.py'),
|
21 |
+
'lv_recipe_chatbot.app.ConversationBot.run_img': ( 'app.html#conversationbot.run_img',
|
22 |
+
'lv_recipe_chatbot/app.py'),
|
23 |
+
'lv_recipe_chatbot.app.create_demo': ('app.html#create_demo', 'lv_recipe_chatbot/app.py')},
|
24 |
'lv_recipe_chatbot.edamam_api': { 'lv_recipe_chatbot.edamam_api.foo': ( 'edamam_api.html#foo',
|
25 |
'lv_recipe_chatbot/edamam_api.py')},
|
26 |
'lv_recipe_chatbot.engineer_prompt': {},
|
27 |
+
'lv_recipe_chatbot.ingredient_vision': { 'lv_recipe_chatbot.ingredient_vision.BlipImageCaptioning': ( 'ingredient_vision.html#blipimagecaptioning',
|
28 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
29 |
+
'lv_recipe_chatbot.ingredient_vision.BlipImageCaptioning.__init__': ( 'ingredient_vision.html#blipimagecaptioning.__init__',
|
30 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
31 |
+
'lv_recipe_chatbot.ingredient_vision.BlipImageCaptioning.inference': ( 'ingredient_vision.html#blipimagecaptioning.inference',
|
32 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
33 |
+
'lv_recipe_chatbot.ingredient_vision.BlipVQA': ( 'ingredient_vision.html#blipvqa',
|
34 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
35 |
+
'lv_recipe_chatbot.ingredient_vision.BlipVQA.__init__': ( 'ingredient_vision.html#blipvqa.__init__',
|
36 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
37 |
+
'lv_recipe_chatbot.ingredient_vision.BlipVQA.inference': ( 'ingredient_vision.html#blipvqa.inference',
|
38 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
39 |
+
'lv_recipe_chatbot.ingredient_vision.VeganIngredientFinder': ( 'ingredient_vision.html#veganingredientfinder',
|
40 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
41 |
+
'lv_recipe_chatbot.ingredient_vision.VeganIngredientFinder.__init__': ( 'ingredient_vision.html#veganingredientfinder.__init__',
|
42 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
43 |
+
'lv_recipe_chatbot.ingredient_vision.VeganIngredientFinder.list_ingredients': ( 'ingredient_vision.html#veganingredientfinder.list_ingredients',
|
44 |
+
'lv_recipe_chatbot/ingredient_vision.py'),
|
45 |
+
'lv_recipe_chatbot.ingredient_vision.format_image': ( 'ingredient_vision.html#format_image',
|
46 |
+
'lv_recipe_chatbot/ingredient_vision.py')},
|
47 |
'lv_recipe_chatbot.lchain_tool': { 'lv_recipe_chatbot.lchain_tool.RecipeSerpAPIWrapper': ( 'lchain_tool.html#recipeserpapiwrapper',
|
48 |
'lv_recipe_chatbot/lchain_tool.py'),
|
49 |
'lv_recipe_chatbot.lchain_tool.RecipeSerpAPIWrapper._process_response': ( 'lchain_tool.html#recipeserpapiwrapper._process_response',
|
lv_recipe_chatbot/app.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/01_app.ipynb.
|
2 |
|
3 |
# %% auto 0
|
4 |
-
__all__ = ['ConversationBot', '
|
5 |
|
6 |
# %% ../nbs/01_app.ipynb 3
|
|
|
7 |
import os
|
8 |
|
9 |
import gradio as gr
|
@@ -16,22 +17,32 @@ from langchain.prompts.chat import (
|
|
16 |
HumanMessagePromptTemplate,
|
17 |
MessagesPlaceholder,
|
18 |
)
|
|
|
19 |
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
# %% ../nbs/01_app.ipynb 4
|
23 |
class ConversationBot:
|
24 |
-
def __init__(
|
25 |
-
self,
|
26 |
-
):
|
27 |
self.chat = ChatOpenAI(temperature=1, verbose=True)
|
28 |
self.memory = ConversationBufferMemory(return_messages=True)
|
29 |
-
self.
|
|
|
30 |
self.ai_prompt_questions = {
|
31 |
-
"ingredients":
|
32 |
-
"allergies":
|
33 |
-
"recipe_open_params":
|
34 |
}
|
|
|
|
|
|
|
35 |
|
36 |
def respond(self, user_msg, chat_history):
|
37 |
response = self._get_bot_response(user_msg, chat_history)
|
@@ -43,11 +54,27 @@ class ConversationBot:
|
|
43 |
llm=self.chat,
|
44 |
memory=self.memory,
|
45 |
prompt=formatted_chat_prompt,
|
46 |
-
verbose=
|
47 |
)
|
48 |
|
49 |
def reset(self):
|
50 |
self.memory.clear()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
def _get_bot_response(self, user_msg: str, chat_history) -> str:
|
53 |
if len(chat_history) < 2:
|
@@ -60,7 +87,7 @@ class ConversationBot:
|
|
60 |
user = 0
|
61 |
ai = 1
|
62 |
user_msgs = [msg_pair[user] for msg_pair in chat_history[1:]]
|
63 |
-
f_init_prompt = init_prompt.format_prompt(
|
64 |
ingredients=user_msgs[0],
|
65 |
allergies=user_msgs[1],
|
66 |
recipe_freeform_input=user_msg,
|
@@ -82,24 +109,40 @@ class ConversationBot:
|
|
82 |
response = self.conversation.predict(input=user_msg)
|
83 |
return response
|
84 |
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
with gr.Blocks() as demo:
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
chatbot = gr.Chatbot(
|
90 |
value=[(None, bot.ai_prompt_questions["ingredients"].prompt.template)]
|
91 |
)
|
92 |
|
93 |
msg = gr.Textbox()
|
94 |
-
clear = gr.Button("Clear")
|
|
|
95 |
|
96 |
msg.submit(
|
97 |
fn=bot.respond, inputs=[msg, chatbot], outputs=[msg, chatbot], queue=False
|
98 |
)
|
99 |
-
clear.click(lambda: None, None, chatbot, queue=False).then(bot.reset)
|
100 |
-
demo
|
101 |
-
auth=(
|
102 |
-
os.environ["GRADIO_DEMO_USERNAME"],
|
103 |
-
os.environ["GRADIO_DEMO_PASSWORD"],
|
104 |
-
)
|
105 |
-
)
|
|
|
1 |
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/01_app.ipynb.
|
2 |
|
3 |
# %% auto 0
|
4 |
+
__all__ = ['ConversationBot', 'create_demo']
|
5 |
|
6 |
# %% ../nbs/01_app.ipynb 3
|
7 |
+
import copy
|
8 |
import os
|
9 |
|
10 |
import gradio as gr
|
|
|
17 |
HumanMessagePromptTemplate,
|
18 |
MessagesPlaceholder,
|
19 |
)
|
20 |
+
from PIL import Image
|
21 |
|
22 |
+
import constants
|
23 |
+
from .engineer_prompt import INIT_PROMPT
|
24 |
+
from lv_recipe_chatbot.ingredient_vision import (
|
25 |
+
SAMPLE_IMG_DIR,
|
26 |
+
BlipImageCaptioning,
|
27 |
+
VeganIngredientFinder,
|
28 |
+
format_image,
|
29 |
+
)
|
30 |
|
31 |
# %% ../nbs/01_app.ipynb 4
|
32 |
class ConversationBot:
|
33 |
+
def __init__(self, verbose=True):
|
|
|
|
|
34 |
self.chat = ChatOpenAI(temperature=1, verbose=True)
|
35 |
self.memory = ConversationBufferMemory(return_messages=True)
|
36 |
+
self.init_prompt = copy.deepcopy(INIT_PROMPT)
|
37 |
+
init_prompt_msgs = self.init_prompt.messages
|
38 |
self.ai_prompt_questions = {
|
39 |
+
"ingredients": init_prompt_msgs[1],
|
40 |
+
"allergies": init_prompt_msgs[3],
|
41 |
+
"recipe_open_params": init_prompt_msgs[5],
|
42 |
}
|
43 |
+
self.img_cap = BlipImageCaptioning("cpu")
|
44 |
+
self.vegan_ingred_finder = VeganIngredientFinder()
|
45 |
+
self.verbose = verbose
|
46 |
|
47 |
def respond(self, user_msg, chat_history):
|
48 |
response = self._get_bot_response(user_msg, chat_history)
|
|
|
54 |
llm=self.chat,
|
55 |
memory=self.memory,
|
56 |
prompt=formatted_chat_prompt,
|
57 |
+
verbose=self.verbose,
|
58 |
)
|
59 |
|
60 |
def reset(self):
|
61 |
self.memory.clear()
|
62 |
+
self.init_prompt = copy.deepcopy(INIT_PROMPT)
|
63 |
+
|
64 |
+
def run_img(self, image: str):
|
65 |
+
desc = self.img_cap.inference(format_image(image))
|
66 |
+
answer = self.vegan_ingred_finder.list_ingredients(image)
|
67 |
+
msg = f"""I uploaded an image that may contain vegan ingredients.
|
68 |
+
The description of the image is: `{desc}`.
|
69 |
+
The extracted ingredients are:
|
70 |
+
```
|
71 |
+
{answer}
|
72 |
+
```
|
73 |
+
"""
|
74 |
+
base_prompt = INIT_PROMPT.messages[2].prompt.template
|
75 |
+
new_prompt = f"{msg}I may type some more ingredients below.\n{base_prompt}"
|
76 |
+
self.init_prompt.messages[2].prompt.template = new_prompt
|
77 |
+
return msg
|
78 |
|
79 |
def _get_bot_response(self, user_msg: str, chat_history) -> str:
|
80 |
if len(chat_history) < 2:
|
|
|
87 |
user = 0
|
88 |
ai = 1
|
89 |
user_msgs = [msg_pair[user] for msg_pair in chat_history[1:]]
|
90 |
+
f_init_prompt = self.init_prompt.format_prompt(
|
91 |
ingredients=user_msgs[0],
|
92 |
allergies=user_msgs[1],
|
93 |
recipe_freeform_input=user_msg,
|
|
|
109 |
response = self.conversation.predict(input=user_msg)
|
110 |
return response
|
111 |
|
112 |
+
def __del__(self):
|
113 |
+
del self.vegan_ingred_finder
|
114 |
+
|
115 |
+
# %% ../nbs/01_app.ipynb 13
|
116 |
+
def create_demo(bot=ConversationBot):
|
117 |
+
sample_images = []
|
118 |
+
all_imgs = [f"{SAMPLE_IMG_DIR}/{img}" for img in os.listdir(SAMPLE_IMG_DIR)]
|
119 |
+
for i, img in enumerate(all_imgs):
|
120 |
+
if i in [
|
121 |
+
1,
|
122 |
+
2,
|
123 |
+
3,
|
124 |
+
]:
|
125 |
+
sample_images.append(img)
|
126 |
with gr.Blocks() as demo:
|
127 |
+
gr_img = gr.Image(type="filepath")
|
128 |
+
btn = gr.Button(value="Submit image")
|
129 |
+
ingredients_msg = gr.Text(label="Ingredients from image")
|
130 |
+
btn.click(bot.run_img, inputs=[gr_img], outputs=[ingredients_msg])
|
131 |
+
gr.Examples(
|
132 |
+
examples=sample_images,
|
133 |
+
inputs=gr_img,
|
134 |
+
)
|
135 |
+
|
136 |
chatbot = gr.Chatbot(
|
137 |
value=[(None, bot.ai_prompt_questions["ingredients"].prompt.template)]
|
138 |
)
|
139 |
|
140 |
msg = gr.Textbox()
|
141 |
+
# clear = gr.Button("Clear")
|
142 |
+
gr.Markdown("**🔃Refresh the page to start from scratch🔃**")
|
143 |
|
144 |
msg.submit(
|
145 |
fn=bot.respond, inputs=[msg, chatbot], outputs=[msg, chatbot], queue=False
|
146 |
)
|
147 |
+
# clear.click(lambda: None, None, chatbot, queue=False).then(bot.reset)
|
148 |
+
return demo
|
|
|
|
|
|
|
|
|
|
lv_recipe_chatbot/edamam_api.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/
|
2 |
|
3 |
# %% auto 0
|
4 |
__all__ = ['foo']
|
5 |
|
6 |
-
# %% ../nbs/
|
7 |
def foo():
|
8 |
pass
|
|
|
1 |
+
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/04_edamam_api.ipynb.
|
2 |
|
3 |
# %% auto 0
|
4 |
__all__ = ['foo']
|
5 |
|
6 |
+
# %% ../nbs/04_edamam_api.ipynb 3
|
7 |
def foo():
|
8 |
pass
|
lv_recipe_chatbot/engineer_prompt.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/00_engineer_prompt.ipynb.
|
2 |
|
3 |
# %% auto 0
|
4 |
-
__all__ = ['
|
5 |
|
6 |
# %% ../nbs/00_engineer_prompt.ipynb 3
|
7 |
from langchain.chains import ConversationChain
|
@@ -17,7 +17,7 @@ from langchain.prompts.chat import (
|
|
17 |
from langchain.schema import AIMessage, HumanMessage, SystemMessage
|
18 |
|
19 |
# %% ../nbs/00_engineer_prompt.ipynb 7
|
20 |
-
|
21 |
[
|
22 |
SystemMessagePromptTemplate.from_template(
|
23 |
"""
|
@@ -44,7 +44,8 @@ If the human messages are unrelated to vegan recipes, remind them of your purpos
|
|
44 |
HumanMessagePromptTemplate.from_template(
|
45 |
"""
|
46 |
Give me a vegan recipe that includes at least a few of the ingredients provided (if any).
|
47 |
-
|
|
|
48 |
Follow these other preferences as closely as possible if they are inline with your purpose of recommending vegan recipes:
|
49 |
|
50 |
###
|
|
|
1 |
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/00_engineer_prompt.ipynb.
|
2 |
|
3 |
# %% auto 0
|
4 |
+
__all__ = ['INIT_PROMPT']
|
5 |
|
6 |
# %% ../nbs/00_engineer_prompt.ipynb 3
|
7 |
from langchain.chains import ConversationChain
|
|
|
17 |
from langchain.schema import AIMessage, HumanMessage, SystemMessage
|
18 |
|
19 |
# %% ../nbs/00_engineer_prompt.ipynb 7
|
20 |
+
INIT_PROMPT = ChatPromptTemplate.from_messages(
|
21 |
[
|
22 |
SystemMessagePromptTemplate.from_template(
|
23 |
"""
|
|
|
44 |
HumanMessagePromptTemplate.from_template(
|
45 |
"""
|
46 |
Give me a vegan recipe that includes at least a few of the ingredients provided (if any).
|
47 |
+
If there are only a few ingredients, please add more as necessary to provide a known tastier vegan recipe.
|
48 |
+
Respect the user's allergies (if any).
|
49 |
Follow these other preferences as closely as possible if they are inline with your purpose of recommending vegan recipes:
|
50 |
|
51 |
###
|
lv_recipe_chatbot/ingredient_vision.py
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/03_ingredient_vision.ipynb.
|
2 |
+
|
3 |
+
# %% auto 0
|
4 |
+
__all__ = ['SAMPLE_IMG_DIR', 'format_image', 'BlipImageCaptioning', 'BlipVQA', 'VeganIngredientFinder']
|
5 |
+
|
6 |
+
# %% ../nbs/03_ingredient_vision.ipynb 3
|
7 |
+
import imghdr
|
8 |
+
import os
|
9 |
+
import time
|
10 |
+
from pathlib import Path
|
11 |
+
|
12 |
+
import constants
|
13 |
+
import numpy as np
|
14 |
+
import torch
|
15 |
+
from PIL import Image
|
16 |
+
from transformers import (
|
17 |
+
BlipForConditionalGeneration,
|
18 |
+
BlipForQuestionAnswering,
|
19 |
+
BlipProcessor,
|
20 |
+
pipeline,
|
21 |
+
)
|
22 |
+
|
23 |
+
# %% ../nbs/03_ingredient_vision.ipynb 7
|
24 |
+
def format_image(image):
|
25 |
+
img = Image.open(image)
|
26 |
+
width, height = img.size
|
27 |
+
ratio = min(512 / width, 512 / height)
|
28 |
+
width_new, height_new = (round(width * ratio), round(height * ratio))
|
29 |
+
width_new = int(np.round(width_new / 64.0)) * 64
|
30 |
+
height_new = int(np.round(height_new / 64.0)) * 64
|
31 |
+
img = img.resize((width_new, height_new))
|
32 |
+
img = img.convert("RGB")
|
33 |
+
return img
|
34 |
+
|
35 |
+
# %% ../nbs/03_ingredient_vision.ipynb 8
|
36 |
+
class BlipImageCaptioning:
|
37 |
+
"""
|
38 |
+
Useful when you want to know what is inside the photo.
|
39 |
+
"""
|
40 |
+
|
41 |
+
def __init__(self, device: str):
|
42 |
+
self.device = device
|
43 |
+
self.torch_dtype = torch.float16 if "cuda" in device else torch.float32
|
44 |
+
self.processor = BlipProcessor.from_pretrained(
|
45 |
+
"Salesforce/blip-image-captioning-base"
|
46 |
+
)
|
47 |
+
self.model = BlipForConditionalGeneration.from_pretrained(
|
48 |
+
"Salesforce/blip-image-captioning-base", torch_dtype=self.torch_dtype
|
49 |
+
).to(self.device)
|
50 |
+
|
51 |
+
def inference(self, image: Image):
|
52 |
+
inputs = self.processor(image, return_tensors="pt").to(
|
53 |
+
self.device, self.torch_dtype
|
54 |
+
)
|
55 |
+
out = self.model.generate(**inputs, max_new_tokens=50)
|
56 |
+
captions = self.processor.decode(out[0], skip_special_tokens=True)
|
57 |
+
return captions
|
58 |
+
|
59 |
+
# %% ../nbs/03_ingredient_vision.ipynb 9
|
60 |
+
class BlipVQA:
|
61 |
+
"""
|
62 |
+
BLIP Visual Question Answering
|
63 |
+
Useful when you need an answer for a question based on an image.
|
64 |
+
Examples:
|
65 |
+
what is the background color of this image, how many cats are in this figure, what is in this figure?
|
66 |
+
"""
|
67 |
+
|
68 |
+
def __init__(self, device: str):
|
69 |
+
self.torch_dtype = torch.float16 if "cuda" in device else torch.float32
|
70 |
+
self.device = device
|
71 |
+
self.processor = BlipProcessor.from_pretrained("Salesforce/blip-vqa-base")
|
72 |
+
self.model = BlipForQuestionAnswering.from_pretrained(
|
73 |
+
"Salesforce/blip-vqa-base", torch_dtype=self.torch_dtype
|
74 |
+
).to(self.device)
|
75 |
+
|
76 |
+
def inference(self, image: Image, question: str):
|
77 |
+
image = image.convert("RGB")
|
78 |
+
inputs = self.processor(image, question, return_tensors="pt").to(
|
79 |
+
self.device, self.torch_dtype
|
80 |
+
)
|
81 |
+
out = self.model.generate(**inputs, max_new_tokens=100)
|
82 |
+
answer = self.processor.decode(out[0], skip_special_tokens=True)
|
83 |
+
return answer
|
84 |
+
|
85 |
+
# %% ../nbs/03_ingredient_vision.ipynb 10
|
86 |
+
SAMPLE_IMG_DIR = Path(f"{constants.ROOT_DIR}/assets/images/vegan_ingredients")
|
87 |
+
|
88 |
+
# %% ../nbs/03_ingredient_vision.ipynb 17
|
89 |
+
class VeganIngredientFinder:
|
90 |
+
def __init__(self):
|
91 |
+
self.vqa = BlipVQA("cpu")
|
92 |
+
|
93 |
+
def list_ingredients(self, img: str) -> str:
|
94 |
+
img = format_image(img)
|
95 |
+
answer = self.vqa.inference(
|
96 |
+
img, f"What are three of the vegetables seen in the image if any?"
|
97 |
+
)
|
98 |
+
answer += "\n" + self.vqa.inference(
|
99 |
+
img, f"What are three of the fruits seen in the image if any?"
|
100 |
+
)
|
101 |
+
answer += "\n" + self.vqa.inference(
|
102 |
+
img, f"What grains and starches are in the image if any?"
|
103 |
+
)
|
104 |
+
if (
|
105 |
+
"yes"
|
106 |
+
in self.vqa.inference(
|
107 |
+
img, f"Is there plant-based milk in the image?"
|
108 |
+
).lower()
|
109 |
+
):
|
110 |
+
answer += "\n" + "plant-based milk"
|
111 |
+
return answer
|
lv_recipe_chatbot/lchain_tool.py
CHANGED
@@ -7,7 +7,7 @@ __all__ = ['RecipeSerpAPIWrapper']
|
|
7 |
import os
|
8 |
|
9 |
from IPython.display import Image
|
10 |
-
from langchain.agents import AgentType, Tool, initialize_agent, load_tools
|
11 |
from langchain.agents.agent_toolkits import create_python_agent
|
12 |
from langchain.chat_models import ChatOpenAI
|
13 |
from langchain.python import PythonREPL
|
|
|
7 |
import os
|
8 |
|
9 |
from IPython.display import Image
|
10 |
+
from langchain.agents import AgentType, Tool, initialize_agent, load_tools, tool
|
11 |
from langchain.agents.agent_toolkits import create_python_agent
|
12 |
from langchain.chat_models import ChatOpenAI
|
13 |
from langchain.python import PythonREPL
|
nbs/00_engineer_prompt.ipynb
CHANGED
@@ -91,7 +91,7 @@
|
|
91 |
"outputs": [],
|
92 |
"source": [
|
93 |
"#| export\n",
|
94 |
-
"
|
95 |
" [\n",
|
96 |
" SystemMessagePromptTemplate.from_template(\n",
|
97 |
" \"\"\"\n",
|
@@ -118,7 +118,8 @@
|
|
118 |
" HumanMessagePromptTemplate.from_template(\n",
|
119 |
" \"\"\"\n",
|
120 |
"Give me a vegan recipe that includes at least a few of the ingredients provided (if any).\n",
|
121 |
-
"
|
|
|
122 |
"Follow these other preferences as closely as possible if they are inline with your purpose of recommending vegan recipes:\n",
|
123 |
"\n",
|
124 |
"###\n",
|
@@ -205,57 +206,62 @@
|
|
205 |
"2.\n",
|
206 |
"3.\n",
|
207 |
"...\n",
|
208 |
-
"AI:
|
209 |
"\n",
|
210 |
-
"**
|
211 |
-
"Preparation time:
|
212 |
"\n",
|
213 |
"Ingredients:\n",
|
214 |
-
"- 1
|
215 |
-
"- 1/4 cup
|
216 |
-
"-
|
217 |
-
"- 1
|
218 |
-
"- 1
|
219 |
-
"-
|
220 |
-
"- 2
|
221 |
-
"- 1
|
222 |
-
"- 1
|
223 |
-
"-
|
224 |
-
"- 1/
|
|
|
|
|
|
|
|
|
|
|
225 |
"\n",
|
226 |
"Steps:\n",
|
227 |
-
"1.
|
228 |
-
"2. In a
|
229 |
-
"3.
|
230 |
-
"4.
|
231 |
"Human: Recommend a different recipe please.\u001b[0m\n",
|
232 |
"\n",
|
233 |
"\u001b[1m> Finished chain.\u001b[0m\n",
|
234 |
-
"
|
235 |
"\n",
|
236 |
-
"**Mediterranean Tofu Sandwich**\n",
|
237 |
-
"Preparation time:
|
238 |
"\n",
|
239 |
"Ingredients:\n",
|
240 |
-
"- 1
|
241 |
-
"- 2
|
242 |
-
"- 1 teaspoon dried oregano\n",
|
243 |
-
"-
|
244 |
-
"-
|
245 |
-
"-
|
246 |
-
"-
|
247 |
-
"-
|
248 |
-
"- 1/4 cup sliced
|
249 |
-
"- 1/4 cup
|
250 |
-
"- 1/4 cup
|
251 |
-
"- Bread of your choice (I recommend ciabatta)\n",
|
252 |
"\n",
|
253 |
"Steps:\n",
|
254 |
-
"1. Preheat
|
255 |
-
"2.
|
256 |
-
"3.
|
257 |
-
"4.
|
258 |
-
"5.
|
|
|
259 |
]
|
260 |
},
|
261 |
{
|
@@ -293,6 +299,15 @@
|
|
293 |
"print(result)"
|
294 |
]
|
295 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
296 |
{
|
297 |
"cell_type": "code",
|
298 |
"execution_count": null,
|
|
|
91 |
"outputs": [],
|
92 |
"source": [
|
93 |
"#| export\n",
|
94 |
+
"INIT_PROMPT = ChatPromptTemplate.from_messages(\n",
|
95 |
" [\n",
|
96 |
" SystemMessagePromptTemplate.from_template(\n",
|
97 |
" \"\"\"\n",
|
|
|
118 |
" HumanMessagePromptTemplate.from_template(\n",
|
119 |
" \"\"\"\n",
|
120 |
"Give me a vegan recipe that includes at least a few of the ingredients provided (if any).\n",
|
121 |
+
"If there are only a few ingredients, please add more as necessary to provide a known tastier vegan recipe.\n",
|
122 |
+
"Respect the user's allergies (if any).\n",
|
123 |
"Follow these other preferences as closely as possible if they are inline with your purpose of recommending vegan recipes:\n",
|
124 |
"\n",
|
125 |
"###\n",
|
|
|
206 |
"2.\n",
|
207 |
"3.\n",
|
208 |
"...\n",
|
209 |
+
"AI: Here is a Thai-inspired vegan recipe for you:\n",
|
210 |
"\n",
|
211 |
+
"**Thai Tofu Lettuce Wraps**\n",
|
212 |
+
"Preparation time: Less than 30 minutes\n",
|
213 |
"\n",
|
214 |
"Ingredients:\n",
|
215 |
+
"- 1/2 block of firm tofu, crumbled\n",
|
216 |
+
"- 1/4 cup pickles, chopped\n",
|
217 |
+
"- 1/4 cup olives, sliced\n",
|
218 |
+
"- 1/2 bell pepper, sliced\n",
|
219 |
+
"- 1/2 carrot, finely chopped\n",
|
220 |
+
"- 4-6 lettuce leaves\n",
|
221 |
+
"- 2 tablespoons soy sauce\n",
|
222 |
+
"- 1 tablespoon rice vinegar\n",
|
223 |
+
"- 1 tablespoon agave nectar\n",
|
224 |
+
"- 1/2 tablespoon garlic powder\n",
|
225 |
+
"- 1/2 tablespoon onion powder\n",
|
226 |
+
"- 1/2 teaspoon dried basil\n",
|
227 |
+
"- 1/2 teaspoon dried oregano\n",
|
228 |
+
"- 1/2 teaspoon salt\n",
|
229 |
+
"- 1/4 teaspoon black pepper\n",
|
230 |
+
"- 4-6 slices of bread, toasted\n",
|
231 |
"\n",
|
232 |
"Steps:\n",
|
233 |
+
"1. In a large bowl, combine crumbled tofu, pickles, olives, bell pepper, and carrot.\n",
|
234 |
+
"2. In a small bowl, whisk together soy sauce, rice vinegar, agave nectar, garlic powder, onion powder, basil, oregano, salt, and black pepper.\n",
|
235 |
+
"3. Pour the dressing over the tofu mixture, and stir until everything is coated.\n",
|
236 |
+
"4. Place a spoonful of the tofu mixture into each lettuce leaf, and serve with a slice of toasted bread.\n",
|
237 |
"Human: Recommend a different recipe please.\u001b[0m\n",
|
238 |
"\n",
|
239 |
"\u001b[1m> Finished chain.\u001b[0m\n",
|
240 |
+
"Sure, how about this recipe that incorporates more of the ingredients you provided?\n",
|
241 |
"\n",
|
242 |
+
"**Vegan Mediterranean Tofu Sandwich**\n",
|
243 |
+
"Preparation time: Less than 30 minutes\n",
|
244 |
"\n",
|
245 |
"Ingredients:\n",
|
246 |
+
"- 1/2 block of firm tofu, sliced\n",
|
247 |
+
"- 2 teaspoons olive oil\n",
|
248 |
+
"- 1/2 teaspoon dried oregano\n",
|
249 |
+
"- 1/2 teaspoon dried basil\n",
|
250 |
+
"- Salt and pepper to taste\n",
|
251 |
+
"- 2 slices of bread\n",
|
252 |
+
"- 1/4 cup hummus\n",
|
253 |
+
"- 2-3 lettuce leaves\n",
|
254 |
+
"- 1/4 cup sliced tomatoes\n",
|
255 |
+
"- 1/4 cup sliced bell peppers\n",
|
256 |
+
"- 1/4 cup grated carrot\n",
|
|
|
257 |
"\n",
|
258 |
"Steps:\n",
|
259 |
+
"1. Preheat the oven to 375°F.\n",
|
260 |
+
"2. In a small bowl, mix olive oil, oregano, basil, salt, and pepper, and place tofu slices on a baking sheet. Brush tofu with the olive oil mixture, covering both sides.\n",
|
261 |
+
"3. Place the baking sheet in the oven and bake the tofu for 15 minutes, flipping the slices halfway through.\n",
|
262 |
+
"4. Toast the bread slices.\n",
|
263 |
+
"5. Spread the hummus on one slice of bread, and layer lettuce, tomatoes, bell peppers, grated carrot, and baked tofu on top. Top with the other slice of bread.\n",
|
264 |
+
"6. Slice the sandwich in half, and enjoy!\n"
|
265 |
]
|
266 |
},
|
267 |
{
|
|
|
299 |
"print(result)"
|
300 |
]
|
301 |
},
|
302 |
+
{
|
303 |
+
"cell_type": "code",
|
304 |
+
"execution_count": null,
|
305 |
+
"metadata": {},
|
306 |
+
"outputs": [],
|
307 |
+
"source": [
|
308 |
+
"test_temp = HumanMessagePromptTemplate.from_template(\"Ingredients: {ingredients}\")"
|
309 |
+
]
|
310 |
+
},
|
311 |
{
|
312 |
"cell_type": "code",
|
313 |
"execution_count": null,
|
nbs/01_app.ipynb
CHANGED
@@ -35,6 +35,7 @@
|
|
35 |
"outputs": [],
|
36 |
"source": [
|
37 |
"#| export\n",
|
|
|
38 |
"import os\n",
|
39 |
"\n",
|
40 |
"import gradio as gr\n",
|
@@ -47,8 +48,16 @@
|
|
47 |
" HumanMessagePromptTemplate,\n",
|
48 |
" MessagesPlaceholder,\n",
|
49 |
")\n",
|
|
|
50 |
"\n",
|
51 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
]
|
53 |
},
|
54 |
{
|
@@ -57,19 +66,23 @@
|
|
57 |
"metadata": {},
|
58 |
"outputs": [],
|
59 |
"source": [
|
60 |
-
"
|
|
|
|
|
61 |
"class ConversationBot:\n",
|
62 |
-
" def __init__(
|
63 |
-
" self,\n",
|
64 |
-
" ):\n",
|
65 |
" self.chat = ChatOpenAI(temperature=1, verbose=True)\n",
|
66 |
" self.memory = ConversationBufferMemory(return_messages=True)\n",
|
67 |
-
" self.
|
|
|
68 |
" self.ai_prompt_questions = {\n",
|
69 |
-
" \"ingredients\":
|
70 |
-
" \"allergies\":
|
71 |
-
" \"recipe_open_params\":
|
72 |
" }\n",
|
|
|
|
|
|
|
73 |
"\n",
|
74 |
" def respond(self, user_msg, chat_history):\n",
|
75 |
" response = self._get_bot_response(user_msg, chat_history)\n",
|
@@ -81,11 +94,27 @@
|
|
81 |
" llm=self.chat,\n",
|
82 |
" memory=self.memory,\n",
|
83 |
" prompt=formatted_chat_prompt,\n",
|
84 |
-
" verbose=
|
85 |
" )\n",
|
86 |
"\n",
|
87 |
" def reset(self):\n",
|
88 |
" self.memory.clear()\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
"\n",
|
90 |
" def _get_bot_response(self, user_msg: str, chat_history) -> str:\n",
|
91 |
" if len(chat_history) < 2:\n",
|
@@ -98,7 +127,7 @@
|
|
98 |
" user = 0\n",
|
99 |
" ai = 1\n",
|
100 |
" user_msgs = [msg_pair[user] for msg_pair in chat_history[1:]]\n",
|
101 |
-
" f_init_prompt = init_prompt.format_prompt(\n",
|
102 |
" ingredients=user_msgs[0],\n",
|
103 |
" allergies=user_msgs[1],\n",
|
104 |
" recipe_freeform_input=user_msg,\n",
|
@@ -118,7 +147,31 @@
|
|
118 |
" return results.generations[0][0].message.content\n",
|
119 |
"\n",
|
120 |
" response = self.conversation.predict(input=user_msg)\n",
|
121 |
-
" return response"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
]
|
123 |
},
|
124 |
{
|
@@ -127,43 +180,164 @@
|
|
127 |
"metadata": {},
|
128 |
"outputs": [],
|
129 |
"source": [
|
130 |
-
"
|
131 |
-
"def launch_demo():\n",
|
132 |
-
" with gr.Blocks() as demo:\n",
|
133 |
-
" bot = ConversationBot()\n",
|
134 |
-
" chatbot = gr.Chatbot(\n",
|
135 |
-
" value=[(None, bot.ai_prompt_questions[\"ingredients\"].prompt.template)]\n",
|
136 |
-
" )\n",
|
137 |
-
"\n",
|
138 |
-
" msg = gr.Textbox()\n",
|
139 |
-
" clear = gr.Button(\"Clear\")\n",
|
140 |
-
"\n",
|
141 |
-
" msg.submit(\n",
|
142 |
-
" fn=bot.respond, inputs=[msg, chatbot], outputs=[msg, chatbot], queue=False\n",
|
143 |
-
" )\n",
|
144 |
-
" clear.click(lambda: None, None, chatbot, queue=False).then(bot.reset)\n",
|
145 |
-
" demo.launch(\n",
|
146 |
-
" auth=(\n",
|
147 |
-
" os.environ[\"GRADIO_DEMO_USERNAME\"],\n",
|
148 |
-
" os.environ[\"GRADIO_DEMO_PASSWORD\"],\n",
|
149 |
-
" )\n",
|
150 |
-
" )"
|
151 |
]
|
152 |
},
|
153 |
{
|
154 |
-
"cell_type": "
|
|
|
155 |
"metadata": {},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
"source": [
|
157 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
]
|
159 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
{
|
161 |
"cell_type": "code",
|
162 |
"execution_count": null,
|
163 |
"metadata": {},
|
164 |
"outputs": [],
|
165 |
"source": [
|
166 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
]
|
168 |
},
|
169 |
{
|
@@ -175,15 +349,38 @@
|
|
175 |
"name": "stdout",
|
176 |
"output_type": "stream",
|
177 |
"text": [
|
178 |
-
"
|
|
|
179 |
"\n",
|
180 |
"To create a public link, set `share=True` in `launch()`.\n"
|
181 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
}
|
183 |
],
|
184 |
"source": [
|
185 |
-
"
|
186 |
-
"
|
|
|
|
|
187 |
]
|
188 |
},
|
189 |
{
|
@@ -197,6 +394,13 @@
|
|
197 |
"\n",
|
198 |
"nbdev.nbdev_export()"
|
199 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
201 |
],
|
202 |
"metadata": {
|
|
|
35 |
"outputs": [],
|
36 |
"source": [
|
37 |
"#| export\n",
|
38 |
+
"import copy\n",
|
39 |
"import os\n",
|
40 |
"\n",
|
41 |
"import gradio as gr\n",
|
|
|
48 |
" HumanMessagePromptTemplate,\n",
|
49 |
" MessagesPlaceholder,\n",
|
50 |
")\n",
|
51 |
+
"from PIL import Image\n",
|
52 |
"\n",
|
53 |
+
"import constants\n",
|
54 |
+
"from lv_recipe_chatbot.engineer_prompt import INIT_PROMPT\n",
|
55 |
+
"from lv_recipe_chatbot.ingredient_vision import (\n",
|
56 |
+
" SAMPLE_IMG_DIR,\n",
|
57 |
+
" BlipImageCaptioning,\n",
|
58 |
+
" VeganIngredientFinder,\n",
|
59 |
+
" format_image,\n",
|
60 |
+
")"
|
61 |
]
|
62 |
},
|
63 |
{
|
|
|
66 |
"metadata": {},
|
67 |
"outputs": [],
|
68 |
"source": [
|
69 |
+
"# | export\n",
|
70 |
+
"\n",
|
71 |
+
"\n",
|
72 |
"class ConversationBot:\n",
|
73 |
+
" def __init__(self, verbose=True):\n",
|
|
|
|
|
74 |
" self.chat = ChatOpenAI(temperature=1, verbose=True)\n",
|
75 |
" self.memory = ConversationBufferMemory(return_messages=True)\n",
|
76 |
+
" self.init_prompt = copy.deepcopy(INIT_PROMPT)\n",
|
77 |
+
" init_prompt_msgs = self.init_prompt.messages\n",
|
78 |
" self.ai_prompt_questions = {\n",
|
79 |
+
" \"ingredients\": init_prompt_msgs[1],\n",
|
80 |
+
" \"allergies\": init_prompt_msgs[3],\n",
|
81 |
+
" \"recipe_open_params\": init_prompt_msgs[5],\n",
|
82 |
" }\n",
|
83 |
+
" self.img_cap = BlipImageCaptioning(\"cpu\")\n",
|
84 |
+
" self.vegan_ingred_finder = VeganIngredientFinder()\n",
|
85 |
+
" self.verbose = verbose\n",
|
86 |
"\n",
|
87 |
" def respond(self, user_msg, chat_history):\n",
|
88 |
" response = self._get_bot_response(user_msg, chat_history)\n",
|
|
|
94 |
" llm=self.chat,\n",
|
95 |
" memory=self.memory,\n",
|
96 |
" prompt=formatted_chat_prompt,\n",
|
97 |
+
" verbose=self.verbose,\n",
|
98 |
" )\n",
|
99 |
"\n",
|
100 |
" def reset(self):\n",
|
101 |
" self.memory.clear()\n",
|
102 |
+
" self.init_prompt = copy.deepcopy(INIT_PROMPT)\n",
|
103 |
+
"\n",
|
104 |
+
" def run_img(self, image: str):\n",
|
105 |
+
" desc = self.img_cap.inference(format_image(image))\n",
|
106 |
+
" answer = self.vegan_ingred_finder.list_ingredients(image)\n",
|
107 |
+
" msg = f\"\"\"I uploaded an image that may contain vegan ingredients.\n",
|
108 |
+
"The description of the image is: `{desc}`.\n",
|
109 |
+
"The extracted ingredients are:\n",
|
110 |
+
"```\n",
|
111 |
+
"{answer}\n",
|
112 |
+
"```\n",
|
113 |
+
"\"\"\"\n",
|
114 |
+
" base_prompt = INIT_PROMPT.messages[2].prompt.template\n",
|
115 |
+
" new_prompt = f\"{msg}I may type some more ingredients below.\\n{base_prompt}\"\n",
|
116 |
+
" self.init_prompt.messages[2].prompt.template = new_prompt\n",
|
117 |
+
" return msg\n",
|
118 |
"\n",
|
119 |
" def _get_bot_response(self, user_msg: str, chat_history) -> str:\n",
|
120 |
" if len(chat_history) < 2:\n",
|
|
|
127 |
" user = 0\n",
|
128 |
" ai = 1\n",
|
129 |
" user_msgs = [msg_pair[user] for msg_pair in chat_history[1:]]\n",
|
130 |
+
" f_init_prompt = self.init_prompt.format_prompt(\n",
|
131 |
" ingredients=user_msgs[0],\n",
|
132 |
" allergies=user_msgs[1],\n",
|
133 |
" recipe_freeform_input=user_msg,\n",
|
|
|
147 |
" return results.generations[0][0].message.content\n",
|
148 |
"\n",
|
149 |
" response = self.conversation.predict(input=user_msg)\n",
|
150 |
+
" return response\n",
|
151 |
+
"\n",
|
152 |
+
" def __del__(self):\n",
|
153 |
+
" del self.vegan_ingred_finder"
|
154 |
+
]
|
155 |
+
},
|
156 |
+
{
|
157 |
+
"cell_type": "code",
|
158 |
+
"execution_count": null,
|
159 |
+
"metadata": {},
|
160 |
+
"outputs": [
|
161 |
+
{
|
162 |
+
"data": {
|
163 |
+
"text/plain": [
|
164 |
+
"Path('/home/evylz/AnimalEquality/lv-recipe-chatbot/assets/images/vegan_ingredients')"
|
165 |
+
]
|
166 |
+
},
|
167 |
+
"execution_count": null,
|
168 |
+
"metadata": {},
|
169 |
+
"output_type": "execute_result"
|
170 |
+
}
|
171 |
+
],
|
172 |
+
"source": [
|
173 |
+
"os.listdir(SAMPLE_IMG_DIR)\n",
|
174 |
+
"SAMPLE_IMG_DIR"
|
175 |
]
|
176 |
},
|
177 |
{
|
|
|
180 |
"metadata": {},
|
181 |
"outputs": [],
|
182 |
"source": [
|
183 |
+
"from dotenv import load_dotenv"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
]
|
185 |
},
|
186 |
{
|
187 |
+
"cell_type": "code",
|
188 |
+
"execution_count": null,
|
189 |
"metadata": {},
|
190 |
+
"outputs": [
|
191 |
+
{
|
192 |
+
"data": {
|
193 |
+
"text/plain": [
|
194 |
+
"True"
|
195 |
+
]
|
196 |
+
},
|
197 |
+
"execution_count": null,
|
198 |
+
"metadata": {},
|
199 |
+
"output_type": "execute_result"
|
200 |
+
}
|
201 |
+
],
|
202 |
+
"source": [
|
203 |
+
"load_dotenv()"
|
204 |
+
]
|
205 |
+
},
|
206 |
+
{
|
207 |
+
"cell_type": "code",
|
208 |
+
"execution_count": null,
|
209 |
+
"metadata": {},
|
210 |
+
"outputs": [
|
211 |
+
{
|
212 |
+
"name": "stdout",
|
213 |
+
"output_type": "stream",
|
214 |
+
"text": [
|
215 |
+
"CPU times: user 6.19 s, sys: 1.47 s, total: 7.66 s\n",
|
216 |
+
"Wall time: 4.68 s\n"
|
217 |
+
]
|
218 |
+
}
|
219 |
+
],
|
220 |
"source": [
|
221 |
+
"%time bot = ConversationBot()"
|
222 |
+
]
|
223 |
+
},
|
224 |
+
{
|
225 |
+
"cell_type": "code",
|
226 |
+
"execution_count": null,
|
227 |
+
"metadata": {},
|
228 |
+
"outputs": [
|
229 |
+
{
|
230 |
+
"name": "stdout",
|
231 |
+
"output_type": "stream",
|
232 |
+
"text": [
|
233 |
+
"I uploaded an image that may contain vegan ingredients.\n",
|
234 |
+
"The description of the image is: `a refrigerator with food inside`.\n",
|
235 |
+
"The extracted ingredients are:\n",
|
236 |
+
"```\n",
|
237 |
+
"cabbage lettuce onion\n",
|
238 |
+
"apples\n",
|
239 |
+
"rice\n",
|
240 |
+
"plant-based milk\n",
|
241 |
+
"```\n",
|
242 |
+
"\n",
|
243 |
+
"CPU times: user 56.7 s, sys: 63.6 ms, total: 56.8 s\n",
|
244 |
+
"Wall time: 5.95 s\n"
|
245 |
+
]
|
246 |
+
}
|
247 |
+
],
|
248 |
+
"source": [
|
249 |
+
"%time print(bot.run_img(SAMPLE_IMG_DIR / \"veggie-fridge.jpeg\"))"
|
250 |
+
]
|
251 |
+
},
|
252 |
+
{
|
253 |
+
"cell_type": "code",
|
254 |
+
"execution_count": null,
|
255 |
+
"metadata": {},
|
256 |
+
"outputs": [
|
257 |
+
{
|
258 |
+
"data": {
|
259 |
+
"text/plain": [
|
260 |
+
"HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['ingredients'], output_parser=None, partial_variables={}, template='I uploaded an image that may contain vegan ingredients.\\nThe description of the image is: `a refrigerator with food inside`.\\nThe extracted ingredients are:\\n```\\ncabbage lettuce onion\\napples\\nrice\\nplant-based milk\\n```\\nI may type some more ingredients below.\\nIngredients: {ingredients}', template_format='f-string', validate_template=True), additional_kwargs={})"
|
261 |
+
]
|
262 |
+
},
|
263 |
+
"execution_count": null,
|
264 |
+
"metadata": {},
|
265 |
+
"output_type": "execute_result"
|
266 |
+
}
|
267 |
+
],
|
268 |
+
"source": [
|
269 |
+
"bot.init_prompt.messages[2]"
|
270 |
+
]
|
271 |
+
},
|
272 |
+
{
|
273 |
+
"cell_type": "code",
|
274 |
+
"execution_count": null,
|
275 |
+
"metadata": {},
|
276 |
+
"outputs": [
|
277 |
+
{
|
278 |
+
"data": {
|
279 |
+
"text/plain": [
|
280 |
+
"HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['ingredients'], output_parser=None, partial_variables={}, template='Ingredients: {ingredients}', template_format='f-string', validate_template=True), additional_kwargs={})"
|
281 |
+
]
|
282 |
+
},
|
283 |
+
"execution_count": null,
|
284 |
+
"metadata": {},
|
285 |
+
"output_type": "execute_result"
|
286 |
+
}
|
287 |
+
],
|
288 |
+
"source": [
|
289 |
+
"INIT_PROMPT.messages[2]"
|
290 |
]
|
291 |
},
|
292 |
+
{
|
293 |
+
"cell_type": "code",
|
294 |
+
"execution_count": null,
|
295 |
+
"metadata": {},
|
296 |
+
"outputs": [],
|
297 |
+
"source": []
|
298 |
+
},
|
299 |
{
|
300 |
"cell_type": "code",
|
301 |
"execution_count": null,
|
302 |
"metadata": {},
|
303 |
"outputs": [],
|
304 |
"source": [
|
305 |
+
"#| export\n",
|
306 |
+
"\n",
|
307 |
+
"\n",
|
308 |
+
"def create_demo(bot=ConversationBot):\n",
|
309 |
+
" sample_images = []\n",
|
310 |
+
" all_imgs = [f\"{SAMPLE_IMG_DIR}/{img}\" for img in os.listdir(SAMPLE_IMG_DIR)]\n",
|
311 |
+
" for i, img in enumerate(all_imgs):\n",
|
312 |
+
" if i in [\n",
|
313 |
+
" 1,\n",
|
314 |
+
" 2,\n",
|
315 |
+
" 3,\n",
|
316 |
+
" ]:\n",
|
317 |
+
" sample_images.append(img)\n",
|
318 |
+
" with gr.Blocks() as demo:\n",
|
319 |
+
" gr_img = gr.Image(type=\"filepath\")\n",
|
320 |
+
" btn = gr.Button(value=\"Submit image\")\n",
|
321 |
+
" ingredients_msg = gr.Text(label=\"Ingredients from image\")\n",
|
322 |
+
" btn.click(bot.run_img, inputs=[gr_img], outputs=[ingredients_msg])\n",
|
323 |
+
" gr.Examples(\n",
|
324 |
+
" examples=sample_images,\n",
|
325 |
+
" inputs=gr_img,\n",
|
326 |
+
" )\n",
|
327 |
+
"\n",
|
328 |
+
" chatbot = gr.Chatbot(\n",
|
329 |
+
" value=[(None, bot.ai_prompt_questions[\"ingredients\"].prompt.template)]\n",
|
330 |
+
" )\n",
|
331 |
+
"\n",
|
332 |
+
" msg = gr.Textbox()\n",
|
333 |
+
" # clear = gr.Button(\"Clear\")\n",
|
334 |
+
" gr.Markdown(\"**🔃Refresh the page to start from scratch🔃**\")\n",
|
335 |
+
"\n",
|
336 |
+
" msg.submit(\n",
|
337 |
+
" fn=bot.respond, inputs=[msg, chatbot], outputs=[msg, chatbot], queue=False\n",
|
338 |
+
" )\n",
|
339 |
+
" # clear.click(lambda: None, None, chatbot, queue=False).then(bot.reset)\n",
|
340 |
+
" return demo"
|
341 |
]
|
342 |
},
|
343 |
{
|
|
|
349 |
"name": "stdout",
|
350 |
"output_type": "stream",
|
351 |
"text": [
|
352 |
+
"Closing server running on port: 7860\n",
|
353 |
+
"Running on local URL: http://127.0.0.1:7860\n",
|
354 |
"\n",
|
355 |
"To create a public link, set `share=True` in `launch()`.\n"
|
356 |
]
|
357 |
+
},
|
358 |
+
{
|
359 |
+
"data": {
|
360 |
+
"text/html": [
|
361 |
+
"<div><iframe src=\"http://127.0.0.1:7860/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
|
362 |
+
],
|
363 |
+
"text/plain": [
|
364 |
+
"<IPython.core.display.HTML object>"
|
365 |
+
]
|
366 |
+
},
|
367 |
+
"metadata": {},
|
368 |
+
"output_type": "display_data"
|
369 |
+
},
|
370 |
+
{
|
371 |
+
"data": {
|
372 |
+
"text/plain": []
|
373 |
+
},
|
374 |
+
"execution_count": null,
|
375 |
+
"metadata": {},
|
376 |
+
"output_type": "execute_result"
|
377 |
}
|
378 |
],
|
379 |
"source": [
|
380 |
+
"if \"demo\" in globals():\n",
|
381 |
+
" demo.close()\n",
|
382 |
+
"demo = create_demo(bot)\n",
|
383 |
+
"demo.launch()"
|
384 |
]
|
385 |
},
|
386 |
{
|
|
|
394 |
"\n",
|
395 |
"nbdev.nbdev_export()"
|
396 |
]
|
397 |
+
},
|
398 |
+
{
|
399 |
+
"cell_type": "code",
|
400 |
+
"execution_count": null,
|
401 |
+
"metadata": {},
|
402 |
+
"outputs": [],
|
403 |
+
"source": []
|
404 |
}
|
405 |
],
|
406 |
"metadata": {
|
nbs/03_ingredient_vision.ipynb
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
nbs/gradio_cached_examples/3/log.csv
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
component 0,flag,username,timestamp
|
2 |
+
"I uploaded an image that may contain vegan ingredients.
|
3 |
+
The description of the image is: `a refrigerator with food inside`.
|
4 |
+
The extracted ingredients are:
|
5 |
+
```
|
6 |
+
cabbage lettuce onion
|
7 |
+
apples
|
8 |
+
rice
|
9 |
+
plant-based milk
|
10 |
+
```
|
11 |
+
",,,2023-06-09 17:49:37.927972
|
12 |
+
"I uploaded an image that may contain vegan ingredients.
|
13 |
+
The description of the image is: `a table with a variety of fruits and vegetables`.
|
14 |
+
The extracted ingredients are:
|
15 |
+
```
|
16 |
+
broccoli and tomatoes
|
17 |
+
bananas apples oranges
|
18 |
+
potatoes
|
19 |
+
plant-based milk
|
20 |
+
```
|
21 |
+
",,,2023-06-09 17:49:45.689277
|
22 |
+
"I uploaded an image that may contain vegan ingredients.
|
23 |
+
The description of the image is: `a refrigerator filled with food and drinks`.
|
24 |
+
The extracted ingredients are:
|
25 |
+
```
|
26 |
+
broccoli and zucchini
|
27 |
+
bananas
|
28 |
+
rice
|
29 |
+
plant-based milk
|
30 |
+
```
|
31 |
+
",,,2023-06-09 17:49:54.279231
|
32 |
+
"I uploaded an image that may contain vegan ingredients.
|
33 |
+
The description of the image is: `a counter with various foods on it`.
|
34 |
+
The extracted ingredients are:
|
35 |
+
```
|
36 |
+
carrots and broccoli
|
37 |
+
apples bananas and tomatoes
|
38 |
+
rice
|
39 |
+
plant-based milk
|
40 |
+
```
|
41 |
+
",,,2023-06-09 17:50:02.969479
|
42 |
+
"I uploaded an image that may contain vegan ingredients.
|
43 |
+
The description of the image is: `a wooden table`.
|
44 |
+
The extracted ingredients are:
|
45 |
+
```
|
46 |
+
potatoes and carrots
|
47 |
+
apples
|
48 |
+
potatoes
|
49 |
+
plant-based milk
|
50 |
+
```
|
51 |
+
",,,2023-06-09 17:50:09.945160
|
52 |
+
"I uploaded an image that may contain vegan ingredients.
|
53 |
+
The description of the image is: `a table with a variety of fruits and vegetables`.
|
54 |
+
The extracted ingredients are:
|
55 |
+
```
|
56 |
+
peppers broccoli and squash
|
57 |
+
watermelon limes and pineapple
|
58 |
+
rice
|
59 |
+
```
|
60 |
+
",,,2023-06-09 17:50:20.121402
|
nbs/gradio_cached_examples/8/log.csv
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
component 0,flag,username,timestamp
|
2 |
+
,,,2023-06-09 17:44:19.054550
|
3 |
+
,,,2023-06-09 17:44:24.817475
|
4 |
+
,,,2023-06-09 17:44:30.963877
|
5 |
+
,,,2023-06-09 17:44:36.517610
|
6 |
+
,,,2023-06-09 17:44:41.240948
|
7 |
+
,,,2023-06-09 17:44:47.709352
|
nbs/index.ipynb
CHANGED
@@ -66,10 +66,10 @@
|
|
66 |
],
|
67 |
"source": [
|
68 |
"from dotenv import load_dotenv\n",
|
|
|
69 |
"\n",
|
70 |
-
"
|
71 |
-
"
|
72 |
-
"app.launch_demo()"
|
73 |
]
|
74 |
},
|
75 |
{
|
|
|
66 |
],
|
67 |
"source": [
|
68 |
"from dotenv import load_dotenv\n",
|
69 |
+
"load_dotenv() # or load environment vars with different method\n",
|
70 |
"\n",
|
71 |
+
"app.create_demo(app.ConversationBot())\n",
|
72 |
+
"app.launch()"
|
|
|
73 |
]
|
74 |
},
|
75 |
{
|