From d069c668f8d05d39ea4b34fe07897bde8c187add Mon Sep 17 00:00:00 2001 From: takatost Date: Tue, 2 Jan 2024 23:42:00 +0800 Subject: [PATCH] Model Runtime (#1858) Co-authored-by: StyleZhang Co-authored-by: Garfield Dai Co-authored-by: chenhe Co-authored-by: jyong Co-authored-by: Joel Co-authored-by: Yeuoly --- .github/workflows/api-model-runtime-tests.yml | 58 + .github/workflows/api-unit-tests.yml | 38 - CONTRIBUTING.md | 5 + api/.vscode/launch.json | 15 + api/Dockerfile | 3 - api/app.py | 34 +- api/commands.py | 28 +- api/config.py | 2 +- api/controllers/console/__init__.py | 2 +- api/controllers/console/app/app.py | 76 +- api/controllers/console/app/audio.py | 8 +- api/controllers/console/app/completion.py | 27 +- api/controllers/console/app/generator.py | 8 +- api/controllers/console/app/message.py | 22 +- api/controllers/console/app/model_config.py | 2 +- api/controllers/console/datasets/datasets.py | 48 +- .../console/datasets/datasets_document.py | 17 +- .../console/datasets/datasets_segments.py | 29 +- .../console/datasets/hit_testing.py | 2 +- api/controllers/console/explore/audio.py | 7 +- api/controllers/console/explore/completion.py | 24 +- api/controllers/console/explore/message.py | 29 +- .../console/universal_chat/audio.py | 7 +- .../console/universal_chat/chat.py | 17 +- .../console/universal_chat/message.py | 7 +- .../console/workspace/model_providers.py | 272 +- api/controllers/console/workspace/models.py | 268 +- .../console/workspace/providers.py | 131 - .../console/workspace/workspace.py | 1 - api/controllers/service_api/app/audio.py | 7 +- api/controllers/service_api/app/completion.py | 24 +- .../service_api/dataset/dataset.py | 22 +- .../service_api/dataset/document.py | 2 +- .../service_api/dataset/segment.py | 29 +- api/controllers/web/audio.py | 7 +- api/controllers/web/completion.py | 24 +- api/controllers/web/message.py | 23 +- api/core/agent/agent/agent_llm_callback.py | 101 + api/core/agent/agent/calc_token_mixin.py | 45 +- .../agent/agent/multi_dataset_router_agent.py | 54 +- api/core/agent/agent/openai_function_call.py | 125 +- .../output_parser/retirver_dataset_agent.py | 158 - .../structed_multi_dataset_router_agent.py | 32 +- api/core/agent/agent/structured_chat.py | 35 +- api/core/agent/agent_executor.py | 56 +- .../models => app_runner}/__init__.py | 0 api/core/app_runner/agent_app_runner.py | 251 + api/core/app_runner/app_runner.py | 267 + api/core/app_runner/basic_app_runner.py | 363 + api/core/app_runner/generate_task_pipeline.py | 483 + api/core/app_runner/moderation_handler.py | 138 + api/core/application_manager.py | 655 + api/core/application_queue_manager.py | 228 + .../agent_loop_gather_callback_handler.py | 181 +- .../dataset_tool_callback_handler.py | 74 - .../callback_handler/entity/chain_result.py | 16 - .../callback_handler/entity/dataset_query.py | 6 - .../callback_handler/entity/llm_message.py | 8 - .../index_tool_callback_handler.py | 62 +- .../callback_handler/llm_callback_handler.py | 284 - .../main_chain_gather_callback_handler.py | 76 - .../std_out_callback_handler.py | 7 +- api/core/chain/llm_chain.py | 29 +- api/core/completion.py | 501 - api/core/conversation_message_task.py | 517 - api/core/docstore/dataset_docstore.py | 25 +- api/core/embedding/cached_embedding.py | 39 +- .../models/embedding => entities}/__init__.py | 0 api/core/entities/application_entities.py | 265 + api/core/entities/message_entities.py | 128 + api/core/entities/model_entities.py | 71 + api/core/entities/provider_configuration.py | 657 + api/core/entities/provider_entities.py | 67 + api/core/entities/queue_entities.py | 118 + .../models/entity => errors}/__init__.py | 0 api/core/{model_providers => errors}/error.py | 20 - .../weather_search}/__init__.py | 0 .../weather_search/schema.json | 35 + .../weather_search/weather_search.py | 45 + .../moderation => features}/__init__.py | 0 api/core/features/agent_runner.py | 325 + api/core/features/annotation_reply.py | 119 + api/core/features/dataset_retrieval.py | 181 + api/core/features/external_data_fetch.py | 96 + api/core/features/hosting_moderation.py | 32 + api/core/features/moderation.py | 50 + api/core/file/file_obj.py | 10 +- api/core/generator/llm_generator.py | 103 +- api/core/helper/encrypter.py | 14 + api/core/helper/lru_cache.py | 22 + api/core/helper/moderation.py | 48 +- api/core/hosting_configuration.py | 213 + api/core/index/index.py | 18 +- api/core/indexing_runner.py | 152 +- ...versation_token_db_buffer_shared_memory.py | 95 - ...on_token_db_string_buffer_shared_memory.py | 36 - api/core/memory/token_buffer_memory.py | 109 + api/core/model_manager.py | 209 + api/core/model_providers/model_factory.py | 335 - .../model_providers/model_provider_factory.py | 276 - api/core/model_providers/models/base.py | 22 - .../embedding/azure_openai_embedding.py | 78 - .../model_providers/models/embedding/base.py | 102 - .../models/embedding/huggingface_embedding.py | 22 - .../models/embedding/jina_embedding.py | 25 - .../models/embedding/localai_embedding.py | 29 - .../models/embedding/minimax_embedding.py | 26 - .../models/embedding/openai_embedding.py | 62 - .../models/embedding/openllm_embedding.py | 22 - .../models/embedding/replicate_embedding.py | 29 - .../models/embedding/xinference_embedding.py | 22 - .../models/embedding/zhipuai_embedding.py | 22 - .../model_providers/models/entity/message.py | 113 - .../models/entity/model_params.py | 60 - .../model_providers/models/entity/provider.py | 11 - .../models/llm/anthropic_model.py | 79 - .../models/llm/azure_openai_model.py | 171 - .../models/llm/baichuan_model.py | 61 - api/core/model_providers/models/llm/base.py | 361 - .../models/llm/chatglm_model.py | 102 - .../models/llm/huggingface_hub_model.py | 84 - .../models/llm/localai_model.py | 131 - .../models/llm/minimax_model.py | 68 - .../models/llm/openai_model.py | 215 - .../models/llm/openllm_model.py | 56 - .../models/llm/replicate_model.py | 96 - .../model_providers/models/llm/spark_model.py | 70 - .../models/llm/tongyi_model.py | 72 - .../models/llm/wenxin_model.py | 69 - .../models/llm/xinference_model.py | 70 - .../models/llm/zhipuai_model.py | 62 - .../model_providers/models/moderation/base.py | 29 - .../models/moderation/openai_moderation.py | 58 - .../model_providers/models/reranking/base.py | 36 - .../models/reranking/cohere_reranking.py | 81 - .../models/reranking/xinference_reranking.py | 62 - .../models/speech2text/base.py | 29 - .../models/speech2text/openai_whisper.py | 47 - .../providers/anthropic_provider.py | 228 - .../providers/azure_openai_provider.py | 438 - .../providers/baichuan_provider.py | 171 - api/core/model_providers/providers/base.py | 294 - .../providers/chatglm_provider.py | 165 - .../providers/cohere_provider.py | 152 - api/core/model_providers/providers/hosted.py | 86 - .../providers/huggingface_hub_provider.py | 251 - .../providers/jina_provider.py | 141 - .../providers/localai_provider.py | 171 - .../providers/minimax_provider.py | 185 - .../providers/openai_provider.py | 318 - .../providers/openllm_provider.py | 152 - .../providers/replicate_provider.py | 191 - .../providers/spark_provider.py | 242 - .../providers/tongyi_provider.py | 162 - .../providers/wenxin_provider.py | 201 - .../providers/xinference_provider.py | 212 - .../providers/zhipuai_provider.py | 188 - api/core/model_providers/rules.py | 47 - .../model_providers/rules/_providers.json | 19 - api/core/model_providers/rules/anthropic.json | 38 - .../model_providers/rules/azure_openai.json | 66 - api/core/model_providers/rules/baichuan.json | 18 - api/core/model_providers/rules/chatglm.json | 10 - api/core/model_providers/rules/cohere.json | 10 - .../rules/huggingface_hub.json | 11 - api/core/model_providers/rules/jina.json | 10 - api/core/model_providers/rules/localai.json | 11 - api/core/model_providers/rules/minimax.json | 36 - api/core/model_providers/rules/openai.json | 81 - api/core/model_providers/rules/openllm.json | 11 - api/core/model_providers/rules/replicate.json | 11 - api/core/model_providers/rules/spark.json | 36 - api/core/model_providers/rules/tongyi.json | 24 - api/core/model_providers/rules/wenxin.json | 36 - .../model_providers/rules/xinference.json | 12 - api/core/model_providers/rules/zhipuai.json | 54 - api/core/model_runtime/README.md | 69 + api/core/model_runtime/README_CN.md | 88 + .../reranking => model_runtime}/__init__.py | 0 .../callbacks}/__init__.py | 0 .../model_runtime/callbacks/base_callback.py | 113 + .../callbacks/logging_callback.py | 133 + .../images/index/image-20231210143654461.png | Bin 0 -> 379070 bytes .../images/index/image-20231210144229650.png | Bin 0 -> 115258 bytes .../images/index/image-20231210144814617.png | Bin 0 -> 111420 bytes .../images/index/image-20231210151548521.png | Bin 0 -> 71354 bytes .../images/index/image-20231210151628992.png | Bin 0 -> 76990 bytes .../images/index/image-20231210165243632.png | Bin 0 -> 554357 bytes .../model_runtime/docs/en_US/interfaces.md | 668 + .../docs/en_US/provider_scale_out.md | 264 + api/core/model_runtime/docs/en_US/schema.md | 194 + .../zh_Hans/customizable_model_scale_out.md | 296 + .../docs/zh_Hans/images/index/image-1.png | Bin 0 -> 235102 bytes .../docs/zh_Hans/images/index/image-2.png | Bin 0 -> 210087 bytes .../images/index/image-20231210143654461.png | Bin 0 -> 394062 bytes .../images/index/image-20231210144229650.png | Bin 0 -> 115258 bytes .../images/index/image-20231210144814617.png | Bin 0 -> 111420 bytes .../images/index/image-20231210151548521.png | Bin 0 -> 71354 bytes .../images/index/image-20231210151628992.png | Bin 0 -> 76990 bytes .../images/index/image-20231210165243632.png | Bin 0 -> 554357 bytes .../docs/zh_Hans/images/index/image-3.png | Bin 0 -> 44778 bytes .../docs/zh_Hans/images/index/image.png | Bin 0 -> 267979 bytes .../model_runtime/docs/zh_Hans/interfaces.md | 706 + .../zh_Hans/predefined_model_scale_out.md | 171 + .../docs/zh_Hans/provider_scale_out.md | 188 + api/core/model_runtime/docs/zh_Hans/schema.md | 196 + .../entities}/__init__.py | 0 .../model_runtime/entities/common_entities.py | 16 + api/core/model_runtime/entities/defaults.py | 87 + .../model_runtime/entities/llm_entities.py | 102 + .../entities/message_entities.py | 134 + .../model_runtime/entities/model_entities.py | 196 + .../entities/provider_entities.py | 149 + .../model_runtime/entities/rerank_entities.py | 18 + .../entities/text_embedding_entities.py | 28 + .../errors}/__init__.py | 0 api/core/model_runtime/errors/invoke.py | 34 + api/core/model_runtime/errors/validate.py | 5 + .../model_providers/__base}/__init__.py | 0 .../model_providers/__base/ai_model.py | 328 + .../model_providers/__base}/audio.mp3 | Bin .../__base/large_language_model.py | 557 + .../model_providers/__base/model_provider.py | 125 + .../__base/moderation_model.py | 48 + .../model_providers/__base/rerank_model.py | 56 + .../__base/speech2text_model.py | 57 + .../__base/text_embedding_model.py | 90 + .../__base/tokenizers/gpt2/merges.txt | 50001 +++++++++++++++ .../tokenizers/gpt2/special_tokens_map.json | 23 + .../tokenizers/gpt2/tokenizer_config.json | 33 + .../__base/tokenizers/gpt2/vocab.json | 50259 ++++++++++++++++ .../__base/tokenizers/gpt2_tokenzier.py | 32 + .../model_runtime/model_providers/__init__.py | 3 + .../model_providers/_position.yaml | 19 + .../model_providers/anthropic}/__init__.py | 0 .../anthropic/_assets/icon_l_en.svg | 78 + .../anthropic/_assets/icon_s_en.svg | 4 + .../model_providers/anthropic/anthropic.py | 31 + .../model_providers/anthropic/anthropic.yaml | 39 + .../anthropic}/llm/__init__.py | 0 .../anthropic/llm/claude-2.1.yaml | 34 + .../anthropic/llm/claude-2.yaml | 34 + .../anthropic/llm/claude-instant-1.yaml | 33 + .../model_providers/anthropic/llm/llm.py | 298 + .../model_providers/azure_openai}/__init__.py | 0 .../azure_openai/_assets/icon_l_en.png | Bin 0 -> 5007 bytes .../azure_openai/_assets/icon_s_en.svg | 8 + .../model_providers/azure_openai/_common.py | 46 + .../model_providers/azure_openai/_constant.py | 475 + .../azure_openai/azure_openai.py | 11 + .../azure_openai/azure_openai.yaml | 104 + .../azure_openai/llm}/__init__.py | 0 .../model_providers/azure_openai/llm/llm.py | 627 + .../azure_openai/text_embedding}/__init__.py | 0 .../text_embedding/text_embedding.py | 195 + .../model_providers/baichuan}/__init__.py | 0 .../baichuan/_assets/icon_l_en.svg | 19 + .../baichuan/_assets/icon_s_en.svg | 11 + .../model_providers/baichuan/baichuan.py | 29 + .../model_providers/baichuan/baichuan.yaml | 37 + .../model_providers/baichuan/llm}/__init__.py | 0 .../baichuan/llm/baichuan2-53b.yaml | 42 + .../baichuan/llm/baichuan2-turbo-192k.yaml | 42 + .../baichuan/llm/baichuan2-turbo.yaml | 42 + .../baichuan/llm/baichuan_tokenizer.py | 19 + .../baichuan/llm/baichuan_turbo.py | 199 + .../baichuan/llm/baichuan_turbo_errors.py | 17 + .../model_providers/baichuan/llm/llm.py | 194 + .../baichuan/text_embedding/__init__.py | 0 .../baichuan-text-embedding.yaml | 5 + .../baichuan/text_embedding/text_embedding.py | 178 + .../model_providers/chatglm/__init__.py | 0 .../chatglm/_assets/icon_l_en.svg | 1 + .../chatglm/_assets/icon_s_en.svg | 9 + .../model_providers/chatglm/chatglm.py | 31 + .../model_providers/chatglm/chatglm.yaml | 28 + .../model_providers/chatglm/llm/__init__.py | 0 .../chatglm/llm/chatglm2-6b-32k.yaml | 21 + .../chatglm/llm/chatglm2-6b.yaml | 21 + .../chatglm/llm/chatglm3-6b-32k.yaml | 22 + .../chatglm/llm/chatglm3-6b.yaml | 22 + .../model_providers/chatglm/llm/llm.py | 469 + .../model_providers/cohere/__init__.py | 0 .../cohere/_assets/icon_l_en.svg | 11 + .../cohere/_assets/icon_s_en.svg | 16 + .../model_providers/cohere/cohere.py | 31 + .../model_providers/cohere/cohere.yaml | 31 + .../model_providers/cohere/rerank/__init__.py | 0 .../cohere/rerank/rerank-english-v2.0.yaml | 4 + .../rerank/rerank-multilingual-v2.0.yaml | 4 + .../model_providers/cohere/rerank/rerank.py | 114 + .../model_providers/google/__init__.py | 0 .../google/_assets/icon_l_en.svg | 15 + .../google/_assets/icon_s_en.svg | 11 + .../model_providers/google/google.py | 31 + .../model_providers/google/google.yaml | 32 + .../model_providers/google/llm/__init__.py | 0 .../google/llm/gemini-pro-vision.yaml | 34 + .../google/llm/gemini-pro.yaml | 34 + .../model_providers/google/llm/llm.py | 342 + .../huggingface_hub/__init__.py | 0 .../huggingface_hub/_assets/icon_l_en.svg | 42 + .../huggingface_hub/_assets/icon_s_en.svg | 19 + .../huggingface_hub/_common.py | 15 + .../huggingface_hub/huggingface_hub.py | 11 + .../huggingface_hub/huggingface_hub.yaml | 102 + .../huggingface_hub/llm/__init__.py | 0 .../huggingface_hub/llm/llm.py | 241 + .../text_embedding/__init__.py | 0 .../text_embedding/text_embedding.py | 191 + .../jina/_assets/icon_l_en.svg | 12 + .../jina/_assets/icon_s_en.svg | 4 + .../model_providers/jina/jina.py | 32 + .../model_providers/jina/jina.yaml | 30 + .../jina-embeddings-v2-base-en.yaml | 9 + .../jina-embeddings-v2-small-en.yaml | 9 + .../jina/text_embedding/jina_tokenizer.py | 18 + .../jina/text_embedding/text_embedding.py | 166 + .../text_embedding/tokenizer/tokenizer.json | 30678 ++++++++++ .../tokenizer/tokenizer_config.json | 15 + .../model_providers/localai/__init__.py | 0 .../localai/_assets/icon_l_en.svg | 22 + .../localai/_assets/icon_s_en.svg | 15 + .../model_providers/localai/llm/__init__.py | 0 .../model_providers/localai/llm/llm.py | 608 + .../model_providers/localai/localai.py | 13 + .../model_providers/localai/localai.yaml | 58 + .../localai/text_embedding/__init__.py | 0 .../localai/text_embedding/text_embedding.py | 174 + .../model_providers/minimax/__init__.py | 0 .../minimax/_assets/icon_l_en.png | Bin 0 -> 5767 bytes .../minimax/_assets/icon_s_en.png | Bin 0 -> 2007 bytes .../model_providers/minimax/llm/__init__.py | 0 .../minimax/llm/abab5-chat.yaml | 29 + .../minimax/llm/abab5.5-chat.yaml | 36 + .../minimax/llm/chat_completion.py | 168 + .../minimax/llm/chat_completion_pro.py | 179 + .../model_providers/minimax/llm/errors.py | 17 + .../model_providers/minimax/llm/llm.py | 193 + .../model_providers/minimax/llm/types.py | 24 + .../model_providers/minimax/minimax.py | 29 + .../model_providers/minimax/minimax.yaml | 37 + .../minimax/text_embedding/__init__.py | 0 .../minimax/text_embedding/embo-01.yaml | 9 + .../minimax/text_embedding/text_embedding.py | 186 + .../model_providers/model_provider_factory.py | 260 + .../model_providers/openai/__init__.py | 0 .../openai/_assets/icon_l_en.svg | 11 + .../openai/_assets/icon_s_en.svg | 4 + .../model_providers/openai/_common.py | 62 + .../model_providers/openai/llm/__init__.py | 0 .../model_providers/openai/llm/_position.yaml | 9 + .../openai/llm/gpt-3.5-turbo-0613.yaml | 30 + .../openai/llm/gpt-3.5-turbo-1106.yaml | 30 + .../openai/llm/gpt-3.5-turbo-16k-0613.yaml | 30 + .../openai/llm/gpt-3.5-turbo-16k.yaml | 30 + .../openai/llm/gpt-3.5-turbo-instruct.yaml | 28 + .../openai/llm/gpt-3.5-turbo.yaml | 30 + .../openai/llm/gpt-4-1106-preview.yaml | 58 + .../model_providers/openai/llm/gpt-4-32k.yaml | 58 + .../openai/llm/gpt-4-vision-preview.yaml | 57 + .../model_providers/openai/llm/gpt-4.yaml | 58 + .../model_providers/openai/llm/llm.py | 849 + .../openai/llm/text-davinci-003.yaml | 28 + .../openai/moderation/__init__.py | 0 .../openai/moderation/moderation.py | 115 + .../moderation/text-moderation-stable.yaml | 5 + .../model_providers/openai/openai.py | 32 + .../model_providers/openai/openai.yaml | 88 + .../openai/speech2text/__init__.py | 0 .../openai/speech2text/speech2text.py | 62 + .../openai/speech2text/whisper-1.yaml | 5 + .../openai/text_embedding/__init__.py | 0 .../text-embedidng-ada-002.yaml | 9 + .../openai/text_embedding/text_embedding.py | 217 + .../openai_api_compatible/__init__.py | 0 .../openai_api_compatible/_common.py | 126 + .../openai_api_compatible/llm/__init__.py | 0 .../openai_api_compatible/llm/llm.py | 629 + .../openai_api_compatible.py | 13 + .../openai_api_compatible.yaml | 77 + .../text_embedding/__init__.py | 0 .../text_embedding/text_embedding.py | 220 + .../model_providers/openllm/__init__.py | 0 .../openllm/_assets/icon_l_en.svg | 19 + .../openllm/_assets/icon_s_en.svg | 12 + .../model_providers/openllm/llm/__init__.py | 0 .../model_providers/openllm/llm/llm.py | 237 + .../openllm/llm/openllm_generate.py | 187 + .../openllm/llm/openllm_generate_errors.py | 17 + .../model_providers/openllm/openllm.py | 9 + .../model_providers/openllm/openllm.yaml | 37 + .../openllm/text_embedding/__init__.py | 0 .../openllm/text_embedding/text_embedding.py | 161 + .../model_providers/replicate/__init__.py | 0 .../replicate/_assets/icon_l_en.svg | 13 + .../replicate/_assets/icon_s_en.svg | 4 + .../model_providers/replicate/_common.py | 15 + .../model_providers/replicate/llm/__init__.py | 0 .../model_providers/replicate/llm/llm.py | 263 + .../model_providers/replicate/replicate.py | 11 + .../model_providers/replicate/replicate.yaml | 41 + .../replicate/text_embedding/__init__.py | 0 .../text_embedding/text_embedding.py | 138 + .../model_providers/spark/__init__.py | 0 .../spark/_assets/icon_l_en.svg | 24 + .../spark/_assets/icon_l_zh.svg | 11 + .../spark/_assets/icon_s_en.svg | 5 + .../model_providers/spark/llm/__init__.py | 0 .../model_providers/spark/llm/_client.py | 187 + .../model_providers/spark/llm/llm.py | 270 + .../model_providers/spark/llm/spark-1.5.yaml | 33 + .../model_providers/spark/llm/spark-2.yaml | 34 + .../model_providers/spark/llm/spark-3.yaml | 33 + .../model_providers/spark/spark.py | 31 + .../model_providers/spark/spark.yaml | 46 + .../model_providers/tongyi/__init__.py | 0 .../tongyi/_assets/icon_l_en.png | Bin 0 -> 4741 bytes .../tongyi/_assets/icon_l_zh.png | Bin 0 -> 7052 bytes .../tongyi/_assets/icon_s_en.png | Bin 0 -> 2835 bytes .../model_providers/tongyi/llm/__init__.py | 0 .../model_providers/tongyi/llm/_client.py} | 0 .../model_providers/tongyi/llm/llm.py | 297 + .../model_providers/tongyi/llm/qwen-plus.yaml | 57 + .../tongyi/llm/qwen-turbo.yaml | 58 + .../model_providers/tongyi/tongyi.py | 31 + .../model_providers/tongyi/tongyi.yaml | 30 + .../model_providers/wenxin/__init__.py | 0 .../wenxin/_assets/icon_l_en.png | Bin 0 -> 6615 bytes .../wenxin/_assets/icon_l_zh.png | Bin 0 -> 7967 bytes .../wenxin/_assets/icon_s_en.png | Bin 0 -> 3350 bytes .../model_providers/wenxin/llm/__init__.py | 0 .../wenxin/llm/ernie-bot-4.yaml | 36 + .../wenxin/llm/ernie-bot-8k.yaml | 36 + .../wenxin/llm/ernie-bot-turbo.yaml | 27 + .../model_providers/wenxin/llm/ernie-bot.yaml | 36 + .../model_providers/wenxin/llm/ernie_bot.py | 350 + .../wenxin/llm/ernie_bot_errors.py | 17 + .../model_providers/wenxin/llm/llm.py | 187 + .../model_providers/wenxin/wenxin.py | 29 + .../model_providers/wenxin/wenxin.yaml | 39 + .../model_providers/xinference/__init__.py | 0 .../xinference/_assets/icon_l_en.svg | 42 + .../xinference/_assets/icon_s_en.svg | 24 + .../xinference/llm/__init__.py | 0 .../model_providers/xinference/llm/llm.py | 650 + .../xinference/llm/xinference_helper.py | 80 + .../xinference/rerank/__init__.py | 0 .../xinference/rerank/rerank.py | 147 + .../xinference/text_embedding/__init__.py | 0 .../text_embedding/text_embedding.py | 175 + .../model_providers/xinference/xinference.py | 10 + .../xinference/xinference.yaml | 47 + .../model_providers/zhipuai/__init__.py | 0 .../zhipuai/_assets/icon_l_en.svg | 6 + .../zhipuai/_assets/icon_l_zh.svg | 8 + .../zhipuai/_assets/icon_s_en.svg | 8 + .../model_providers/zhipuai/_client.py | 62 + .../model_providers/zhipuai/_common.py | 35 + .../model_providers/zhipuai/llm/__init__.py | 0 .../zhipuai/llm/chatglm_lite.yaml | 22 + .../zhipuai/llm/chatglm_lite_32k.yaml | 22 + .../zhipuai/llm/chatglm_pro.yaml | 22 + .../zhipuai/llm/chatglm_std.yaml | 22 + .../zhipuai/llm/chatglm_turbo.yaml | 42 + .../model_providers/zhipuai/llm/llm.py | 253 + .../zhipuai/text_embedding/__init__.py | 0 .../zhipuai/text_embedding/text_embedding.py | 145 + .../text_embedding/text_embedding.yaml | 4 + .../model_providers/zhipuai/zhipuai.py | 30 + .../model_providers/zhipuai/zhipuai.yaml | 31 + .../schema_validators/__init__.py | 0 .../schema_validators/common_validator.py | 87 + .../model_credential_schema_validator.py | 28 + .../provider_credential_schema_validator.py | 20 + api/core/model_runtime/utils/__init__.py | 0 api/core/model_runtime/utils/_compat.py | 24 + api/core/model_runtime/utils/encoders.py | 232 + api/core/model_runtime/utils/helper.py | 9 + api/core/moderation/cloud_service/__init__.py | 0 .../moderation/cloud_service/cloud_service.py | 93 + api/core/moderation/cloud_service/schema.json | 65 + .../openai_moderation/openai_moderation.py | 19 +- api/core/orchestrator_rule_parser.py | 338 - .../suggested_questions_after_answer.py | 4 +- api/core/prompt/prompt_builder.py | 14 - api/core/prompt/prompt_transform.py | 429 +- api/core/provider_manager.py | 623 + api/core/rerank/__init__.py | 0 api/core/rerank/rerank.py | 58 + .../embeddings/huggingface_hub_embedding.py | 74 - .../langchain/embeddings/jina_embedding.py | 69 - .../langchain/embeddings/openllm_embedding.py | 67 - .../embeddings/replicate_embedding.py | 99 - .../embeddings/xinference_embedding.py | 54 - .../langchain/embeddings/zhipuai_embedding.py | 64 - .../langchain/llms/anthropic_llm.py | 60 - .../langchain/llms/azure_chat_open_ai.py | 141 - .../langchain/llms/azure_open_ai.py | 110 - .../langchain/llms/baichuan_llm.py | 315 - .../langchain/llms/chat_open_ai.py | 152 - api/core/third_party/langchain/llms/fake.py | 7 +- .../llms/huggingface_endpoint_llm.py | 128 - .../langchain/llms/huggingface_hub_llm.py | 62 - .../third_party/langchain/llms/minimax_llm.py | 283 - .../third_party/langchain/llms/open_ai.py | 82 - .../third_party/langchain/llms/openllm.py | 86 - .../langchain/llms/replicate_llm.py | 75 - api/core/third_party/langchain/llms/spark.py | 192 - api/core/third_party/langchain/llms/wenxin.py | 319 - .../langchain/llms/xinference_llm.py | 196 - .../third_party/langchain/llms/zhipuai_llm.py | 315 - api/core/tool/dataset_multi_retriever_tool.py | 48 +- api/core/tool/dataset_retriever_tool.py | 65 +- api/core/tool/web_reader_tool.py | 19 +- api/events/event_handlers/__init__.py | 2 + .../deduct_quota_when_messaeg_created.py | 43 + ...rsation_name_when_first_message_created.py | 8 +- ...vider_last_used_at_when_messaeg_created.py | 18 + api/extensions/ext_hosting_provider.py | 9 + api/libs/rsa.py | 23 +- ...442fc_modify_provider_model_name_length.py | 38 + api/models/provider.py | 2 +- api/requirements.txt | 16 +- .../advanced_prompt_template_service.py | 17 +- api/services/app_model_config_service.py | 89 +- api/services/audio_service.py | 12 +- api/services/completion_service.py | 462 +- api/services/dataset_service.py | 119 +- api/services/entities/__init__.py | 0 .../entities/model_provider_entities.py | 152 + api/services/hit_testing_service.py | 34 +- api/services/message_service.py | 28 +- api/services/model_provider_service.py | 530 + api/services/provider_service.py | 596 - api/services/retrieval_service.py | 58 +- api/services/workspace_service.py | 9 - .../batch_create_segment_to_index_task.py | 24 +- .../invite_member_mail_template_en-US.html | 2 +- .../invite_member_mail_template_zh-CN.html | 2 +- api/tests/integration_tests/.env.example | 15 +- .../model_runtime/__init__.py | 0 .../model_runtime/__mock/anthropic.py | 68 + .../model_runtime/__mock/google.py | 127 + .../model_runtime/__mock/huggingface.py | 21 + .../model_runtime/__mock/huggingface_chat.py | 54 + .../model_runtime/__mock/openai.py | 63 + .../model_runtime/__mock/openai_chat.py | 235 + .../model_runtime/__mock/openai_completion.py | 121 + .../model_runtime/__mock/openai_embeddings.py | 70 + .../model_runtime/__mock/openai_moderation.py | 67 + .../model_runtime/__mock/openai_remote.py | 22 + .../__mock/openai_speech2text.py | 30 + .../model_runtime/__mock/xinference.py | 142 + .../model_runtime/anthropic/__init__.py | 0 .../model_runtime/anthropic/test_llm.py | 116 + .../model_runtime/anthropic/test_provider.py | 23 + .../model_runtime/assets/audio.mp3 | Bin 0 -> 218880 bytes .../model_runtime/azure_openai/__init__.py | 0 .../model_runtime/azure_openai/test_llm.py | 340 + .../azure_openai/test_text_embedding.py | 71 + .../model_runtime/baichuan/__init__.py | 0 .../model_runtime/baichuan/test_llm.py | 190 + .../model_runtime/baichuan/test_provider.py | 23 + .../baichuan/test_text_embedding.py | 61 + .../model_runtime/chatglm/__init__.py | 0 .../model_runtime/chatglm/test_llm.py | 287 + .../model_runtime/chatglm/test_provider.py | 25 + .../model_runtime/cohere/__init__.py | 0 .../model_runtime/cohere/test_provider.py | 21 + .../model_runtime/cohere/test_rerank.py | 51 + .../model_runtime/google/__init__.py | 0 .../model_runtime/google/test_llm.py | 229 + .../model_runtime/google/test_provider.py | 23 + .../model_runtime/huggingface_hub/__init__.py | 0 .../model_runtime/huggingface_hub/test_llm.py | 304 + .../huggingface_hub/test_text_embedding.py | 120 + .../model_runtime/jina/__init__.py | 0 .../model_runtime/jina/test_provider.py | 23 + .../model_runtime/jina/test_text_embedding.py | 63 + .../model_runtime/localai/__init__.py | 0 .../model_runtime/localai/test_embedding.py | 4 + .../model_runtime/localai/test_llm.py | 213 + .../model_runtime/minimax/__init__.py | 0 .../model_runtime/minimax/test_embedding.py | 64 + .../model_runtime/minimax/test_llm.py | 158 + .../model_runtime/minimax/test_provider.py | 25 + .../model_runtime/openai/__init__.py | 0 .../model_runtime/openai/test_llm.py | 382 + .../model_runtime/openai/test_moderation.py | 55 + .../model_runtime/openai/test_provider.py | 23 + .../model_runtime/openai/test_speech2text.py | 56 + .../openai/test_text_embedding.py | 67 + .../openai_api_compatible/__init__.py | 0 .../openai_api_compatible/test_llm.py | 181 + .../test_text_embedding.py | 79 + .../model_runtime/openllm/__init__.py | 0 .../model_runtime/openllm/test_embedding.py | 61 + .../model_runtime/openllm/test_llm.py | 104 + .../model_runtime/replicate/__init__.py | 0 .../model_runtime/replicate/test_llm.py | 119 + .../replicate/test_text_embedding.py | 151 + .../model_runtime/spark/__init__.py | 0 .../model_runtime/spark/test_llm.py | 114 + .../model_runtime/spark/test_provider.py | 23 + .../test_model_provider_factory.py | 82 + .../model_runtime/tongyi/__init__.py | 0 .../model_runtime/tongyi/test_llm.py | 107 + .../model_runtime/tongyi/test_provider.py | 21 + .../model_runtime/wenxin/__init__.py | 0 .../model_runtime/wenxin/test_llm.py | 271 + .../model_runtime/wenxin/test_provider.py | 25 + .../model_runtime/xinference/__init__.py | 0 .../xinference/test_embeddings.py | 68 + .../model_runtime/xinference/test_llm.py | 392 + .../model_runtime/xinference/test_rerank.py | 53 + .../model_runtime/zhipuai/__init__.py | 0 .../model_runtime/zhipuai/test_llm.py | 106 + .../model_runtime/zhipuai/test_provider.py | 20 + .../zhipuai/test_text_embedding.py | 63 + .../embedding/test_azure_openai_embedding.py | 57 - .../test_huggingface_hub_embedding.py | 136 - .../models/embedding/test_jina_embedding.py | 42 - .../embedding/test_localai_embedding.py | 61 - .../embedding/test_minimax_embedding.py | 44 - .../models/embedding/test_openai_embedding.py | 40 - .../embedding/test_openllm_embedding.py | 63 - .../embedding/test_replicate_embedding.py | 64 - .../embedding/test_xinference_embedding.py | 65 - .../embedding/test_zhipuai_embedding.py | 50 - .../models/llm/test_anthropic_model.py | 62 - .../models/llm/test_azure_openai_model.py | 87 - .../models/llm/test_baichuan_model.py | 81 - .../models/llm/test_huggingface_hub_model.py | 127 - .../models/llm/test_localai_model.py | 68 - .../models/llm/test_minimax_model.py | 65 - .../models/llm/test_openai_model.py | 111 - .../models/llm/test_openllm_model.py | 72 - .../models/llm/test_replicate_model.py | 75 - .../models/llm/test_spark_model.py | 70 - .../models/llm/test_tongyi_model.py | 63 - .../models/llm/test_wenxin_model.py | 63 - .../models/llm/test_xinference_model.py | 74 - .../models/llm/test_zhipuai_model.py | 79 - .../moderation/test_openai_moderation.py | 39 - .../models/reranking/test_cohere_reranking.py | 61 - .../reranking/test_xinference_reranking.py | 78 - .../models/speech2text/test_openai_whisper.py | 50 - .../model_providers/fake_model_provider.py | 47 - .../test_anthropic_provider.py | 123 - .../test_azure_openai_provider.py | 117 - .../model_providers/test_baichuan_provider.py | 97 - .../test_base_model_provider.py | 72 - .../model_providers/test_chatglm_provider.py | 94 - .../test_huggingface_hub_provider.py | 165 - .../model_providers/test_jina_provider.py | 88 - .../model_providers/test_localai_provider.py | 116 - .../model_providers/test_minimax_provider.py | 91 - .../model_providers/test_openai_provider.py | 126 - .../model_providers/test_openllm_provider.py | 122 - .../test_replicate_provider.py | 142 - .../model_providers/test_spark_provider.py | 97 - .../model_providers/test_tongyi_provider.py | 90 - .../model_providers/test_wenxin_provider.py | 96 - .../test_xinference_provider.py | 130 - .../model_providers/test_zhipuai_provider.py | 88 - docker/docker-compose.yaml | 6 +- .../components/app/annotation/mock-data.ts | 265 + web/app/components/app/chat/type.ts | 11 +- .../app/configuration/config-model/index.tsx | 87 +- .../configuration/config-model/model-icon.tsx | 32 - .../app/configuration/config/index.tsx | 4 +- .../dataset-config/params-config/index.tsx | 32 +- .../dataset-config/settings-modal/index.tsx | 32 +- .../app/configuration/debug/index.tsx | 28 +- .../hooks/use-advanced-prompt-config.ts | 7 +- .../components/app/configuration/index.tsx | 84 +- .../toolbox/annotation/config-param-modal.tsx | 32 +- .../moderation/moderation-setting-modal.tsx | 10 +- web/app/components/app/log/list.tsx | 24 +- .../app/overview/apikey-info-panel/index.tsx | 66 +- web/app/components/base/button/index.css | 31 + web/app/components/base/button/index.tsx | 8 +- .../line/alertsAndFeedback/alert-triangle.svg | 5 + .../financeAndECommerce/coins-stacked-01.svg | 5 + .../vender/solid/general/plus-circle.svg | 5 + .../solid/mediaAndDevices/magic-box.svg | 9 + .../solid/mediaAndDevices/magic-eyes.svg | 5 + .../solid/mediaAndDevices/magic-wand.svg | 10 + .../vender/solid/mediaAndDevices/robot.svg | 5 + .../line/alertsAndFeedback/AlertTriangle.json | 39 + .../line/alertsAndFeedback/AlertTriangle.tsx | 16 + .../vender/line/alertsAndFeedback/index.ts | 1 + .../financeAndECommerce/CoinsStacked01.json | 39 + .../financeAndECommerce/CoinsStacked01.tsx | 16 + .../vender/line/financeAndECommerce/index.ts | 1 + .../src/vender/solid/general/PlusCircle.json | 38 + .../src/vender/solid/general/PlusCircle.tsx | 16 + .../icons/src/vender/solid/general/index.ts | 1 + .../solid/mediaAndDevices/MagicBox.json | 64 + .../vender/solid/mediaAndDevices/MagicBox.tsx | 16 + .../solid/mediaAndDevices/MagicEyes.json | 38 + .../solid/mediaAndDevices/MagicEyes.tsx | 16 + .../solid/mediaAndDevices/MagicWand.json | 73 + .../solid/mediaAndDevices/MagicWand.tsx | 16 + .../vender/solid/mediaAndDevices/Robot.json | 38 + .../vender/solid/mediaAndDevices/Robot.tsx | 16 + .../src/vender/solid/mediaAndDevices/index.ts | 4 + .../base/prompt-log-modal/index.tsx | 5 +- web/app/components/base/slider/style.css | 7 +- web/app/components/base/toast/index.tsx | 2 +- .../datasets/common/check-rerank-model.ts | 22 +- .../common/retrieval-method-config/index.tsx | 8 +- .../common/retrieval-param-config/index.tsx | 47 +- web/app/components/datasets/create/index.tsx | 4 +- .../datasets/create/step-two/index.tsx | 16 +- .../documents/detail/settings/index.tsx | 4 +- .../hit-testing/modify-retrieval-modal.tsx | 12 +- .../datasets/settings/form/index.tsx | 42 +- .../explore/create-app-modal/index.tsx | 1 - .../config-view/detail/index.tsx | 3 +- .../config-view/summary/index.tsx | 30 +- .../explore/universal-chat/config/index.tsx | 5 +- .../config/model-config/index.tsx | 25 +- .../explore/universal-chat/index.tsx | 22 +- .../workplace-selector/index.tsx | 1 + .../header/account-setting/index.tsx | 4 +- .../key-validator/declarations.ts | 2 +- .../model-page/configs/anthropic.tsx | 80 - .../model-page/configs/azure_openai.tsx | 189 - .../model-page/configs/baichuan.tsx | 70 - .../model-page/configs/chatglm.tsx | 69 - .../model-page/configs/cohere.tsx | 57 - .../model-page/configs/huggingface_hub.tsx | 278 - .../model-page/configs/index.ts | 37 - .../model-page/configs/jina.tsx | 57 - .../model-page/configs/localai.tsx | 176 - .../model-page/configs/minimax.tsx | 69 - .../model-page/configs/openai.tsx | 93 - .../model-page/configs/openllm.tsx | 114 - .../model-page/configs/replicate.tsx | 122 - .../model-page/configs/spark.tsx | 83 - .../model-page/configs/tongyi.tsx | 53 - .../model-page/configs/wenxin.tsx | 66 - .../model-page/configs/xinference.tsx | 135 - .../model-page/configs/zhipuai.tsx | 55 - .../model-page/declarations.ts | 163 - .../account-setting/model-page/index.tsx | 267 - .../model-page/model-card/Quota.tsx | 117 - .../model-page/model-card/index.tsx | 81 - .../model-page/model-item/Card.tsx | 69 - .../model-page/model-item/FreeQuota.tsx | 79 - .../model-page/model-item/QuotaCard.tsx | 29 - .../model-page/model-item/Setting.tsx | 104 - .../model-page/model-item/index.tsx | 73 - .../model-page/model-modal/Form.tsx | 208 - .../model-page/model-modal/Input.tsx | 58 - .../model-page/model-modal/index.tsx | 170 - .../model-page/model-selector/index.tsx | 347 - .../model-selector/portal-select.tsx | 358 - .../model-selector/style.module.css | 7 - .../model-page/selector/index.tsx | 97 - .../account-setting/model-page/utils.ts | 35 - .../model-provider-page/declarations.ts | 216 + .../model-provider-page/hooks.ts | 271 + .../model-provider-page/index.tsx | 130 + .../model-provider-page/model-badge/index.tsx | 22 + .../model-provider-page/model-icon/index.tsx | 45 + .../model-provider-page/model-modal/Form.tsx | 183 + .../model-provider-page/model-modal/Input.tsx | 46 + .../model-provider-page/model-modal/index.tsx | 330 + .../model-provider-page/model-name/index.tsx | 85 + .../model-parameter-modal/index.tsx | 223 + .../model-parameter-modal/parameter-item.tsx | 223 + .../model-parameter-modal/stop-sequence.tsx | 0 .../model-selector/empty-trigger.tsx | 39 + .../model-selector/feature-icon.tsx | 77 + .../model-selector/index.tsx | 100 + .../model-selector/model-trigger.tsx | 51 + .../model-selector/popup-item.tsx | 127 + .../model-selector/popup.tsx | 80 + .../model-selector/rerank-trigger.tsx | 25 + .../provider-added-card/add-model-button.tsx | 29 + .../provider-added-card/credential-panel.tsx | 81 + .../provider-added-card/index.tsx | 161 + .../provider-added-card/model-list.tsx | 121 + .../provider-added-card/priority-selector.tsx | 72 + .../provider-added-card/priority-use-tip.tsx | 20 + .../provider-added-card/quota-panel.tsx | 98 + .../provider-added-card/tab.tsx | 45 + .../provider-card}/index.module.css | 0 .../provider-card/index.tsx | 154 + .../provider-icon/index.tsx | 34 + .../system-model-selector}/index.tsx | 142 +- .../model-provider-page/utils.ts | 159 + .../components/share/chat/sidebar/index.tsx | 2 +- .../share/chatbot/sidebar/index.tsx | 2 +- web/app/styles/globals.css | 4 +- web/context/debug-configuration.ts | 6 +- web/context/modal-context.tsx | 42 +- web/context/provider-context.tsx | 163 +- web/hooks/use-pay.tsx | 17 +- web/i18n/lang/common.en.ts | 18 +- web/i18n/lang/common.zh.ts | 14 + web/package.json | 2 +- web/service/common.ts | 36 +- web/service/debug.ts | 5 +- 807 files changed, 171310 insertions(+), 23806 deletions(-) create mode 100644 .github/workflows/api-model-runtime-tests.yml delete mode 100644 .github/workflows/api-unit-tests.yml delete mode 100644 api/controllers/console/workspace/providers.py create mode 100644 api/core/agent/agent/agent_llm_callback.py delete mode 100644 api/core/agent/agent/output_parser/retirver_dataset_agent.py rename api/core/{model_providers/models => app_runner}/__init__.py (100%) create mode 100644 api/core/app_runner/agent_app_runner.py create mode 100644 api/core/app_runner/app_runner.py create mode 100644 api/core/app_runner/basic_app_runner.py create mode 100644 api/core/app_runner/generate_task_pipeline.py create mode 100644 api/core/app_runner/moderation_handler.py create mode 100644 api/core/application_manager.py create mode 100644 api/core/application_queue_manager.py delete mode 100644 api/core/callback_handler/dataset_tool_callback_handler.py delete mode 100644 api/core/callback_handler/entity/chain_result.py delete mode 100644 api/core/callback_handler/entity/dataset_query.py delete mode 100644 api/core/callback_handler/entity/llm_message.py delete mode 100644 api/core/callback_handler/llm_callback_handler.py delete mode 100644 api/core/callback_handler/main_chain_gather_callback_handler.py delete mode 100644 api/core/completion.py delete mode 100644 api/core/conversation_message_task.py rename api/core/{model_providers/models/embedding => entities}/__init__.py (100%) create mode 100644 api/core/entities/application_entities.py create mode 100644 api/core/entities/message_entities.py create mode 100644 api/core/entities/model_entities.py create mode 100644 api/core/entities/provider_configuration.py create mode 100644 api/core/entities/provider_entities.py create mode 100644 api/core/entities/queue_entities.py rename api/core/{model_providers/models/entity => errors}/__init__.py (100%) rename api/core/{model_providers => errors}/error.py (63%) rename api/core/{model_providers/models/llm => external_data_tool/weather_search}/__init__.py (100%) create mode 100644 api/core/external_data_tool/weather_search/schema.json create mode 100644 api/core/external_data_tool/weather_search/weather_search.py rename api/core/{model_providers/models/moderation => features}/__init__.py (100%) create mode 100644 api/core/features/agent_runner.py create mode 100644 api/core/features/annotation_reply.py create mode 100644 api/core/features/dataset_retrieval.py create mode 100644 api/core/features/external_data_fetch.py create mode 100644 api/core/features/hosting_moderation.py create mode 100644 api/core/features/moderation.py create mode 100644 api/core/helper/lru_cache.py create mode 100644 api/core/hosting_configuration.py delete mode 100644 api/core/memory/read_only_conversation_token_db_buffer_shared_memory.py delete mode 100644 api/core/memory/read_only_conversation_token_db_string_buffer_shared_memory.py create mode 100644 api/core/memory/token_buffer_memory.py create mode 100644 api/core/model_manager.py delete mode 100644 api/core/model_providers/model_factory.py delete mode 100644 api/core/model_providers/model_provider_factory.py delete mode 100644 api/core/model_providers/models/base.py delete mode 100644 api/core/model_providers/models/embedding/azure_openai_embedding.py delete mode 100644 api/core/model_providers/models/embedding/base.py delete mode 100644 api/core/model_providers/models/embedding/huggingface_embedding.py delete mode 100644 api/core/model_providers/models/embedding/jina_embedding.py delete mode 100644 api/core/model_providers/models/embedding/localai_embedding.py delete mode 100644 api/core/model_providers/models/embedding/minimax_embedding.py delete mode 100644 api/core/model_providers/models/embedding/openai_embedding.py delete mode 100644 api/core/model_providers/models/embedding/openllm_embedding.py delete mode 100644 api/core/model_providers/models/embedding/replicate_embedding.py delete mode 100644 api/core/model_providers/models/embedding/xinference_embedding.py delete mode 100644 api/core/model_providers/models/embedding/zhipuai_embedding.py delete mode 100644 api/core/model_providers/models/entity/message.py delete mode 100644 api/core/model_providers/models/entity/model_params.py delete mode 100644 api/core/model_providers/models/entity/provider.py delete mode 100644 api/core/model_providers/models/llm/anthropic_model.py delete mode 100644 api/core/model_providers/models/llm/azure_openai_model.py delete mode 100644 api/core/model_providers/models/llm/baichuan_model.py delete mode 100644 api/core/model_providers/models/llm/base.py delete mode 100644 api/core/model_providers/models/llm/chatglm_model.py delete mode 100644 api/core/model_providers/models/llm/huggingface_hub_model.py delete mode 100644 api/core/model_providers/models/llm/localai_model.py delete mode 100644 api/core/model_providers/models/llm/minimax_model.py delete mode 100644 api/core/model_providers/models/llm/openai_model.py delete mode 100644 api/core/model_providers/models/llm/openllm_model.py delete mode 100644 api/core/model_providers/models/llm/replicate_model.py delete mode 100644 api/core/model_providers/models/llm/spark_model.py delete mode 100644 api/core/model_providers/models/llm/tongyi_model.py delete mode 100644 api/core/model_providers/models/llm/wenxin_model.py delete mode 100644 api/core/model_providers/models/llm/xinference_model.py delete mode 100644 api/core/model_providers/models/llm/zhipuai_model.py delete mode 100644 api/core/model_providers/models/moderation/base.py delete mode 100644 api/core/model_providers/models/moderation/openai_moderation.py delete mode 100644 api/core/model_providers/models/reranking/base.py delete mode 100644 api/core/model_providers/models/reranking/cohere_reranking.py delete mode 100644 api/core/model_providers/models/reranking/xinference_reranking.py delete mode 100644 api/core/model_providers/models/speech2text/base.py delete mode 100644 api/core/model_providers/models/speech2text/openai_whisper.py delete mode 100644 api/core/model_providers/providers/anthropic_provider.py delete mode 100644 api/core/model_providers/providers/azure_openai_provider.py delete mode 100644 api/core/model_providers/providers/baichuan_provider.py delete mode 100644 api/core/model_providers/providers/base.py delete mode 100644 api/core/model_providers/providers/chatglm_provider.py delete mode 100644 api/core/model_providers/providers/cohere_provider.py delete mode 100644 api/core/model_providers/providers/hosted.py delete mode 100644 api/core/model_providers/providers/huggingface_hub_provider.py delete mode 100644 api/core/model_providers/providers/jina_provider.py delete mode 100644 api/core/model_providers/providers/localai_provider.py delete mode 100644 api/core/model_providers/providers/minimax_provider.py delete mode 100644 api/core/model_providers/providers/openai_provider.py delete mode 100644 api/core/model_providers/providers/openllm_provider.py delete mode 100644 api/core/model_providers/providers/replicate_provider.py delete mode 100644 api/core/model_providers/providers/spark_provider.py delete mode 100644 api/core/model_providers/providers/tongyi_provider.py delete mode 100644 api/core/model_providers/providers/wenxin_provider.py delete mode 100644 api/core/model_providers/providers/xinference_provider.py delete mode 100644 api/core/model_providers/providers/zhipuai_provider.py delete mode 100644 api/core/model_providers/rules.py delete mode 100644 api/core/model_providers/rules/_providers.json delete mode 100644 api/core/model_providers/rules/anthropic.json delete mode 100644 api/core/model_providers/rules/azure_openai.json delete mode 100644 api/core/model_providers/rules/baichuan.json delete mode 100644 api/core/model_providers/rules/chatglm.json delete mode 100644 api/core/model_providers/rules/cohere.json delete mode 100644 api/core/model_providers/rules/huggingface_hub.json delete mode 100644 api/core/model_providers/rules/jina.json delete mode 100644 api/core/model_providers/rules/localai.json delete mode 100644 api/core/model_providers/rules/minimax.json delete mode 100644 api/core/model_providers/rules/openai.json delete mode 100644 api/core/model_providers/rules/openllm.json delete mode 100644 api/core/model_providers/rules/replicate.json delete mode 100644 api/core/model_providers/rules/spark.json delete mode 100644 api/core/model_providers/rules/tongyi.json delete mode 100644 api/core/model_providers/rules/wenxin.json delete mode 100644 api/core/model_providers/rules/xinference.json delete mode 100644 api/core/model_providers/rules/zhipuai.json create mode 100644 api/core/model_runtime/README.md create mode 100644 api/core/model_runtime/README_CN.md rename api/core/{model_providers/models/reranking => model_runtime}/__init__.py (100%) rename api/core/{model_providers/models/speech2text => model_runtime/callbacks}/__init__.py (100%) create mode 100644 api/core/model_runtime/callbacks/base_callback.py create mode 100644 api/core/model_runtime/callbacks/logging_callback.py create mode 100644 api/core/model_runtime/docs/en_US/images/index/image-20231210143654461.png create mode 100644 api/core/model_runtime/docs/en_US/images/index/image-20231210144229650.png create mode 100644 api/core/model_runtime/docs/en_US/images/index/image-20231210144814617.png create mode 100644 api/core/model_runtime/docs/en_US/images/index/image-20231210151548521.png create mode 100644 api/core/model_runtime/docs/en_US/images/index/image-20231210151628992.png create mode 100644 api/core/model_runtime/docs/en_US/images/index/image-20231210165243632.png create mode 100644 api/core/model_runtime/docs/en_US/interfaces.md create mode 100644 api/core/model_runtime/docs/en_US/provider_scale_out.md create mode 100644 api/core/model_runtime/docs/en_US/schema.md create mode 100644 api/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-1.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-2.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-20231210143654461.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-20231210144229650.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-20231210144814617.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-20231210151548521.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-20231210151628992.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-20231210165243632.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image-3.png create mode 100644 api/core/model_runtime/docs/zh_Hans/images/index/image.png create mode 100644 api/core/model_runtime/docs/zh_Hans/interfaces.md create mode 100644 api/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md create mode 100644 api/core/model_runtime/docs/zh_Hans/provider_scale_out.md create mode 100644 api/core/model_runtime/docs/zh_Hans/schema.md rename api/core/{model_providers/providers => model_runtime/entities}/__init__.py (100%) create mode 100644 api/core/model_runtime/entities/common_entities.py create mode 100644 api/core/model_runtime/entities/defaults.py create mode 100644 api/core/model_runtime/entities/llm_entities.py create mode 100644 api/core/model_runtime/entities/message_entities.py create mode 100644 api/core/model_runtime/entities/model_entities.py create mode 100644 api/core/model_runtime/entities/provider_entities.py create mode 100644 api/core/model_runtime/entities/rerank_entities.py create mode 100644 api/core/model_runtime/entities/text_embedding_entities.py rename api/core/{third_party/langchain/embeddings => model_runtime/errors}/__init__.py (100%) create mode 100644 api/core/model_runtime/errors/invoke.py create mode 100644 api/core/model_runtime/errors/validate.py rename api/{tests/integration_tests/models => core/model_runtime/model_providers/__base}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/__base/ai_model.py rename api/{tests/integration_tests/models/speech2text => core/model_runtime/model_providers/__base}/audio.mp3 (100%) create mode 100644 api/core/model_runtime/model_providers/__base/large_language_model.py create mode 100644 api/core/model_runtime/model_providers/__base/model_provider.py create mode 100644 api/core/model_runtime/model_providers/__base/moderation_model.py create mode 100644 api/core/model_runtime/model_providers/__base/rerank_model.py create mode 100644 api/core/model_runtime/model_providers/__base/speech2text_model.py create mode 100644 api/core/model_runtime/model_providers/__base/text_embedding_model.py create mode 100644 api/core/model_runtime/model_providers/__base/tokenizers/gpt2/merges.txt create mode 100644 api/core/model_runtime/model_providers/__base/tokenizers/gpt2/special_tokens_map.json create mode 100644 api/core/model_runtime/model_providers/__base/tokenizers/gpt2/tokenizer_config.json create mode 100644 api/core/model_runtime/model_providers/__base/tokenizers/gpt2/vocab.json create mode 100644 api/core/model_runtime/model_providers/__base/tokenizers/gpt2_tokenzier.py create mode 100644 api/core/model_runtime/model_providers/__init__.py create mode 100644 api/core/model_runtime/model_providers/_position.yaml rename api/{tests/integration_tests/models/embedding => core/model_runtime/model_providers/anthropic}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/anthropic/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/anthropic/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/anthropic/anthropic.py create mode 100644 api/core/model_runtime/model_providers/anthropic/anthropic.yaml rename api/{tests/integration_tests/models => core/model_runtime/model_providers/anthropic}/llm/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/anthropic/llm/claude-2.1.yaml create mode 100644 api/core/model_runtime/model_providers/anthropic/llm/claude-2.yaml create mode 100644 api/core/model_runtime/model_providers/anthropic/llm/claude-instant-1.yaml create mode 100644 api/core/model_runtime/model_providers/anthropic/llm/llm.py rename api/{tests/integration_tests/models/moderation => core/model_runtime/model_providers/azure_openai}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/azure_openai/_assets/icon_l_en.png create mode 100644 api/core/model_runtime/model_providers/azure_openai/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/azure_openai/_common.py create mode 100644 api/core/model_runtime/model_providers/azure_openai/_constant.py create mode 100644 api/core/model_runtime/model_providers/azure_openai/azure_openai.py create mode 100644 api/core/model_runtime/model_providers/azure_openai/azure_openai.yaml rename api/{tests/integration_tests/models/reranking => core/model_runtime/model_providers/azure_openai/llm}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/azure_openai/llm/llm.py rename api/{tests/integration_tests/models/speech2text => core/model_runtime/model_providers/azure_openai/text_embedding}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/azure_openai/text_embedding/text_embedding.py rename api/{tests/unit_tests => core/model_runtime/model_providers/baichuan}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/baichuan/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/baichuan/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/baichuan/baichuan.py create mode 100644 api/core/model_runtime/model_providers/baichuan/baichuan.yaml rename api/{tests/unit_tests/model_providers => core/model_runtime/model_providers/baichuan/llm}/__init__.py (100%) create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/baichuan2-53b.yaml create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/baichuan2-turbo-192k.yaml create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/baichuan2-turbo.yaml create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/baichuan_tokenizer.py create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/baichuan_turbo.py create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/baichuan_turbo_errors.py create mode 100644 api/core/model_runtime/model_providers/baichuan/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/baichuan/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/baichuan/text_embedding/baichuan-text-embedding.yaml create mode 100644 api/core/model_runtime/model_providers/baichuan/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/chatglm/__init__.py create mode 100644 api/core/model_runtime/model_providers/chatglm/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/chatglm/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/chatglm/chatglm.py create mode 100644 api/core/model_runtime/model_providers/chatglm/chatglm.yaml create mode 100644 api/core/model_runtime/model_providers/chatglm/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b-32k.yaml create mode 100644 api/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b.yaml create mode 100644 api/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b-32k.yaml create mode 100644 api/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b.yaml create mode 100644 api/core/model_runtime/model_providers/chatglm/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/cohere/__init__.py create mode 100644 api/core/model_runtime/model_providers/cohere/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/cohere/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/cohere/cohere.py create mode 100644 api/core/model_runtime/model_providers/cohere/cohere.yaml create mode 100644 api/core/model_runtime/model_providers/cohere/rerank/__init__.py create mode 100644 api/core/model_runtime/model_providers/cohere/rerank/rerank-english-v2.0.yaml create mode 100644 api/core/model_runtime/model_providers/cohere/rerank/rerank-multilingual-v2.0.yaml create mode 100644 api/core/model_runtime/model_providers/cohere/rerank/rerank.py create mode 100644 api/core/model_runtime/model_providers/google/__init__.py create mode 100644 api/core/model_runtime/model_providers/google/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/google/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/google/google.py create mode 100644 api/core/model_runtime/model_providers/google/google.yaml create mode 100644 api/core/model_runtime/model_providers/google/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/google/llm/gemini-pro-vision.yaml create mode 100644 api/core/model_runtime/model_providers/google/llm/gemini-pro.yaml create mode 100644 api/core/model_runtime/model_providers/google/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/__init__.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/_common.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/huggingface_hub.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/huggingface_hub.yaml create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/huggingface_hub/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/jina/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/jina/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/jina/jina.py create mode 100644 api/core/model_runtime/model_providers/jina/jina.yaml create mode 100644 api/core/model_runtime/model_providers/jina/text_embedding/jina-embeddings-v2-base-en.yaml create mode 100644 api/core/model_runtime/model_providers/jina/text_embedding/jina-embeddings-v2-small-en.yaml create mode 100644 api/core/model_runtime/model_providers/jina/text_embedding/jina_tokenizer.py create mode 100644 api/core/model_runtime/model_providers/jina/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/jina/text_embedding/tokenizer/tokenizer.json create mode 100644 api/core/model_runtime/model_providers/jina/text_embedding/tokenizer/tokenizer_config.json create mode 100644 api/core/model_runtime/model_providers/localai/__init__.py create mode 100644 api/core/model_runtime/model_providers/localai/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/localai/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/localai/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/localai/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/localai/localai.py create mode 100644 api/core/model_runtime/model_providers/localai/localai.yaml create mode 100644 api/core/model_runtime/model_providers/localai/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/localai/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/minimax/__init__.py create mode 100644 api/core/model_runtime/model_providers/minimax/_assets/icon_l_en.png create mode 100644 api/core/model_runtime/model_providers/minimax/_assets/icon_s_en.png create mode 100644 api/core/model_runtime/model_providers/minimax/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/minimax/llm/abab5-chat.yaml create mode 100644 api/core/model_runtime/model_providers/minimax/llm/abab5.5-chat.yaml create mode 100644 api/core/model_runtime/model_providers/minimax/llm/chat_completion.py create mode 100644 api/core/model_runtime/model_providers/minimax/llm/chat_completion_pro.py create mode 100644 api/core/model_runtime/model_providers/minimax/llm/errors.py create mode 100644 api/core/model_runtime/model_providers/minimax/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/minimax/llm/types.py create mode 100644 api/core/model_runtime/model_providers/minimax/minimax.py create mode 100644 api/core/model_runtime/model_providers/minimax/minimax.yaml create mode 100644 api/core/model_runtime/model_providers/minimax/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/minimax/text_embedding/embo-01.yaml create mode 100644 api/core/model_runtime/model_providers/minimax/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/model_provider_factory.py create mode 100644 api/core/model_runtime/model_providers/openai/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/openai/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/openai/_common.py create mode 100644 api/core/model_runtime/model_providers/openai/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai/llm/_position.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo-0613.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo-1106.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo-16k-0613.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo-16k.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo-instruct.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-4-1106-preview.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-4-32k.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-4-vision-preview.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/gpt-4.yaml create mode 100644 api/core/model_runtime/model_providers/openai/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/openai/llm/text-davinci-003.yaml create mode 100644 api/core/model_runtime/model_providers/openai/moderation/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai/moderation/moderation.py create mode 100644 api/core/model_runtime/model_providers/openai/moderation/text-moderation-stable.yaml create mode 100644 api/core/model_runtime/model_providers/openai/openai.py create mode 100644 api/core/model_runtime/model_providers/openai/openai.yaml create mode 100644 api/core/model_runtime/model_providers/openai/speech2text/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai/speech2text/speech2text.py create mode 100644 api/core/model_runtime/model_providers/openai/speech2text/whisper-1.yaml create mode 100644 api/core/model_runtime/model_providers/openai/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai/text_embedding/text-embedidng-ada-002.yaml create mode 100644 api/core/model_runtime/model_providers/openai/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/_common.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/openai_api_compatible.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/openai_api_compatible.yaml create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/openai_api_compatible/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/openllm/__init__.py create mode 100644 api/core/model_runtime/model_providers/openllm/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/openllm/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/openllm/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/openllm/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/openllm/llm/openllm_generate.py create mode 100644 api/core/model_runtime/model_providers/openllm/llm/openllm_generate_errors.py create mode 100644 api/core/model_runtime/model_providers/openllm/openllm.py create mode 100644 api/core/model_runtime/model_providers/openllm/openllm.yaml create mode 100644 api/core/model_runtime/model_providers/openllm/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/openllm/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/replicate/__init__.py create mode 100644 api/core/model_runtime/model_providers/replicate/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/replicate/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/replicate/_common.py create mode 100644 api/core/model_runtime/model_providers/replicate/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/replicate/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/replicate/replicate.py create mode 100644 api/core/model_runtime/model_providers/replicate/replicate.yaml create mode 100644 api/core/model_runtime/model_providers/replicate/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/replicate/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/spark/__init__.py create mode 100644 api/core/model_runtime/model_providers/spark/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/spark/_assets/icon_l_zh.svg create mode 100644 api/core/model_runtime/model_providers/spark/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/spark/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/spark/llm/_client.py create mode 100644 api/core/model_runtime/model_providers/spark/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/spark/llm/spark-1.5.yaml create mode 100644 api/core/model_runtime/model_providers/spark/llm/spark-2.yaml create mode 100644 api/core/model_runtime/model_providers/spark/llm/spark-3.yaml create mode 100644 api/core/model_runtime/model_providers/spark/spark.py create mode 100644 api/core/model_runtime/model_providers/spark/spark.yaml create mode 100644 api/core/model_runtime/model_providers/tongyi/__init__.py create mode 100644 api/core/model_runtime/model_providers/tongyi/_assets/icon_l_en.png create mode 100644 api/core/model_runtime/model_providers/tongyi/_assets/icon_l_zh.png create mode 100644 api/core/model_runtime/model_providers/tongyi/_assets/icon_s_en.png create mode 100644 api/core/model_runtime/model_providers/tongyi/llm/__init__.py rename api/core/{third_party/langchain/llms/tongyi_llm.py => model_runtime/model_providers/tongyi/llm/_client.py} (100%) create mode 100644 api/core/model_runtime/model_providers/tongyi/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/tongyi/llm/qwen-plus.yaml create mode 100644 api/core/model_runtime/model_providers/tongyi/llm/qwen-turbo.yaml create mode 100644 api/core/model_runtime/model_providers/tongyi/tongyi.py create mode 100644 api/core/model_runtime/model_providers/tongyi/tongyi.yaml create mode 100644 api/core/model_runtime/model_providers/wenxin/__init__.py create mode 100644 api/core/model_runtime/model_providers/wenxin/_assets/icon_l_en.png create mode 100644 api/core/model_runtime/model_providers/wenxin/_assets/icon_l_zh.png create mode 100644 api/core/model_runtime/model_providers/wenxin/_assets/icon_s_en.png create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/ernie-bot-4.yaml create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/ernie-bot-8k.yaml create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/ernie-bot-turbo.yaml create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/ernie-bot.yaml create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/ernie_bot.py create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/ernie_bot_errors.py create mode 100644 api/core/model_runtime/model_providers/wenxin/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/wenxin/wenxin.py create mode 100644 api/core/model_runtime/model_providers/wenxin/wenxin.yaml create mode 100644 api/core/model_runtime/model_providers/xinference/__init__.py create mode 100644 api/core/model_runtime/model_providers/xinference/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/xinference/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/xinference/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/xinference/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/xinference/llm/xinference_helper.py create mode 100644 api/core/model_runtime/model_providers/xinference/rerank/__init__.py create mode 100644 api/core/model_runtime/model_providers/xinference/rerank/rerank.py create mode 100644 api/core/model_runtime/model_providers/xinference/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/xinference/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/xinference/xinference.py create mode 100644 api/core/model_runtime/model_providers/xinference/xinference.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/__init__.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/_assets/icon_l_en.svg create mode 100644 api/core/model_runtime/model_providers/zhipuai/_assets/icon_l_zh.svg create mode 100644 api/core/model_runtime/model_providers/zhipuai/_assets/icon_s_en.svg create mode 100644 api/core/model_runtime/model_providers/zhipuai/_client.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/_common.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/chatglm_lite.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/chatglm_lite_32k.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/chatglm_pro.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/chatglm_std.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/chatglm_turbo.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/llm/llm.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/text_embedding/__init__.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/text_embedding/text_embedding.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/text_embedding/text_embedding.yaml create mode 100644 api/core/model_runtime/model_providers/zhipuai/zhipuai.py create mode 100644 api/core/model_runtime/model_providers/zhipuai/zhipuai.yaml create mode 100644 api/core/model_runtime/schema_validators/__init__.py create mode 100644 api/core/model_runtime/schema_validators/common_validator.py create mode 100644 api/core/model_runtime/schema_validators/model_credential_schema_validator.py create mode 100644 api/core/model_runtime/schema_validators/provider_credential_schema_validator.py create mode 100644 api/core/model_runtime/utils/__init__.py create mode 100644 api/core/model_runtime/utils/_compat.py create mode 100644 api/core/model_runtime/utils/encoders.py create mode 100644 api/core/model_runtime/utils/helper.py create mode 100644 api/core/moderation/cloud_service/__init__.py create mode 100644 api/core/moderation/cloud_service/cloud_service.py create mode 100644 api/core/moderation/cloud_service/schema.json delete mode 100644 api/core/orchestrator_rule_parser.py create mode 100644 api/core/provider_manager.py create mode 100644 api/core/rerank/__init__.py create mode 100644 api/core/rerank/rerank.py delete mode 100644 api/core/third_party/langchain/embeddings/huggingface_hub_embedding.py delete mode 100644 api/core/third_party/langchain/embeddings/jina_embedding.py delete mode 100644 api/core/third_party/langchain/embeddings/openllm_embedding.py delete mode 100644 api/core/third_party/langchain/embeddings/replicate_embedding.py delete mode 100644 api/core/third_party/langchain/embeddings/xinference_embedding.py delete mode 100644 api/core/third_party/langchain/embeddings/zhipuai_embedding.py delete mode 100644 api/core/third_party/langchain/llms/anthropic_llm.py delete mode 100644 api/core/third_party/langchain/llms/azure_chat_open_ai.py delete mode 100644 api/core/third_party/langchain/llms/azure_open_ai.py delete mode 100644 api/core/third_party/langchain/llms/baichuan_llm.py delete mode 100644 api/core/third_party/langchain/llms/chat_open_ai.py delete mode 100644 api/core/third_party/langchain/llms/huggingface_endpoint_llm.py delete mode 100644 api/core/third_party/langchain/llms/huggingface_hub_llm.py delete mode 100644 api/core/third_party/langchain/llms/minimax_llm.py delete mode 100644 api/core/third_party/langchain/llms/open_ai.py delete mode 100644 api/core/third_party/langchain/llms/openllm.py delete mode 100644 api/core/third_party/langchain/llms/replicate_llm.py delete mode 100644 api/core/third_party/langchain/llms/spark.py delete mode 100644 api/core/third_party/langchain/llms/wenxin.py delete mode 100644 api/core/third_party/langchain/llms/xinference_llm.py delete mode 100644 api/core/third_party/langchain/llms/zhipuai_llm.py create mode 100644 api/events/event_handlers/deduct_quota_when_messaeg_created.py create mode 100644 api/events/event_handlers/update_provider_last_used_at_when_messaeg_created.py create mode 100644 api/extensions/ext_hosting_provider.py create mode 100644 api/migrations/versions/187385f442fc_modify_provider_model_name_length.py create mode 100644 api/services/entities/__init__.py create mode 100644 api/services/entities/model_provider_entities.py create mode 100644 api/services/model_provider_service.py delete mode 100644 api/services/provider_service.py create mode 100644 api/tests/integration_tests/model_runtime/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/anthropic.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/google.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/huggingface.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/huggingface_chat.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai_chat.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai_completion.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai_embeddings.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai_moderation.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai_remote.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/openai_speech2text.py create mode 100644 api/tests/integration_tests/model_runtime/__mock/xinference.py create mode 100644 api/tests/integration_tests/model_runtime/anthropic/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/anthropic/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/anthropic/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/assets/audio.mp3 create mode 100644 api/tests/integration_tests/model_runtime/azure_openai/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/azure_openai/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/azure_openai/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/baichuan/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/baichuan/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/baichuan/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/baichuan/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/chatglm/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/chatglm/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/chatglm/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/cohere/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/cohere/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/cohere/test_rerank.py create mode 100644 api/tests/integration_tests/model_runtime/google/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/google/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/google/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/huggingface_hub/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/huggingface_hub/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/huggingface_hub/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/jina/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/jina/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/jina/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/localai/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/localai/test_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/localai/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/minimax/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/minimax/test_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/minimax/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/minimax/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/openai/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/openai/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/openai/test_moderation.py create mode 100644 api/tests/integration_tests/model_runtime/openai/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/openai/test_speech2text.py create mode 100644 api/tests/integration_tests/model_runtime/openai/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/openai_api_compatible/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/openai_api_compatible/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/openai_api_compatible/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/openllm/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/openllm/test_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/openllm/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/replicate/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/replicate/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/replicate/test_text_embedding.py create mode 100644 api/tests/integration_tests/model_runtime/spark/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/spark/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/spark/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/test_model_provider_factory.py create mode 100644 api/tests/integration_tests/model_runtime/tongyi/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/tongyi/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/tongyi/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/wenxin/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/wenxin/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/wenxin/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/xinference/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/xinference/test_embeddings.py create mode 100644 api/tests/integration_tests/model_runtime/xinference/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/xinference/test_rerank.py create mode 100644 api/tests/integration_tests/model_runtime/zhipuai/__init__.py create mode 100644 api/tests/integration_tests/model_runtime/zhipuai/test_llm.py create mode 100644 api/tests/integration_tests/model_runtime/zhipuai/test_provider.py create mode 100644 api/tests/integration_tests/model_runtime/zhipuai/test_text_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_azure_openai_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_huggingface_hub_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_jina_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_localai_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_minimax_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_openai_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_openllm_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_replicate_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_xinference_embedding.py delete mode 100644 api/tests/integration_tests/models/embedding/test_zhipuai_embedding.py delete mode 100644 api/tests/integration_tests/models/llm/test_anthropic_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_azure_openai_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_baichuan_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_huggingface_hub_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_localai_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_minimax_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_openai_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_openllm_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_replicate_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_spark_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_tongyi_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_wenxin_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_xinference_model.py delete mode 100644 api/tests/integration_tests/models/llm/test_zhipuai_model.py delete mode 100644 api/tests/integration_tests/models/moderation/test_openai_moderation.py delete mode 100644 api/tests/integration_tests/models/reranking/test_cohere_reranking.py delete mode 100644 api/tests/integration_tests/models/reranking/test_xinference_reranking.py delete mode 100644 api/tests/integration_tests/models/speech2text/test_openai_whisper.py delete mode 100644 api/tests/unit_tests/model_providers/fake_model_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_anthropic_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_azure_openai_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_baichuan_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_base_model_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_chatglm_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_huggingface_hub_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_jina_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_localai_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_minimax_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_openai_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_openllm_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_replicate_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_spark_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_tongyi_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_wenxin_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_xinference_provider.py delete mode 100644 api/tests/unit_tests/model_providers/test_zhipuai_provider.py create mode 100644 web/app/components/app/annotation/mock-data.ts delete mode 100644 web/app/components/app/configuration/config-model/model-icon.tsx create mode 100644 web/app/components/base/button/index.css create mode 100644 web/app/components/base/icons/assets/vender/line/alertsAndFeedback/alert-triangle.svg create mode 100644 web/app/components/base/icons/assets/vender/line/financeAndECommerce/coins-stacked-01.svg create mode 100644 web/app/components/base/icons/assets/vender/solid/general/plus-circle.svg create mode 100644 web/app/components/base/icons/assets/vender/solid/mediaAndDevices/magic-box.svg create mode 100644 web/app/components/base/icons/assets/vender/solid/mediaAndDevices/magic-eyes.svg create mode 100644 web/app/components/base/icons/assets/vender/solid/mediaAndDevices/magic-wand.svg create mode 100644 web/app/components/base/icons/assets/vender/solid/mediaAndDevices/robot.svg create mode 100644 web/app/components/base/icons/src/vender/line/alertsAndFeedback/AlertTriangle.json create mode 100644 web/app/components/base/icons/src/vender/line/alertsAndFeedback/AlertTriangle.tsx create mode 100644 web/app/components/base/icons/src/vender/line/financeAndECommerce/CoinsStacked01.json create mode 100644 web/app/components/base/icons/src/vender/line/financeAndECommerce/CoinsStacked01.tsx create mode 100644 web/app/components/base/icons/src/vender/solid/general/PlusCircle.json create mode 100644 web/app/components/base/icons/src/vender/solid/general/PlusCircle.tsx create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicBox.json create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicBox.tsx create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicEyes.json create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicEyes.tsx create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicWand.json create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicWand.tsx create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/Robot.json create mode 100644 web/app/components/base/icons/src/vender/solid/mediaAndDevices/Robot.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/anthropic.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/azure_openai.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/baichuan.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/chatglm.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/cohere.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/huggingface_hub.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/index.ts delete mode 100644 web/app/components/header/account-setting/model-page/configs/jina.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/localai.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/minimax.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/openai.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/openllm.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/replicate.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/spark.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/tongyi.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/wenxin.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/xinference.tsx delete mode 100644 web/app/components/header/account-setting/model-page/configs/zhipuai.tsx delete mode 100644 web/app/components/header/account-setting/model-page/declarations.ts delete mode 100644 web/app/components/header/account-setting/model-page/index.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-card/Quota.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-card/index.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-item/Card.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-item/FreeQuota.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-item/QuotaCard.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-item/Setting.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-item/index.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-modal/Form.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-modal/Input.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-modal/index.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-selector/index.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-selector/portal-select.tsx delete mode 100644 web/app/components/header/account-setting/model-page/model-selector/style.module.css delete mode 100644 web/app/components/header/account-setting/model-page/selector/index.tsx delete mode 100644 web/app/components/header/account-setting/model-page/utils.ts create mode 100644 web/app/components/header/account-setting/model-provider-page/declarations.ts create mode 100644 web/app/components/header/account-setting/model-provider-page/hooks.ts create mode 100644 web/app/components/header/account-setting/model-provider-page/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-badge/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-modal/Form.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-modal/Input.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-name/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-parameter-modal/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-parameter-modal/parameter-item.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-parameter-modal/stop-sequence.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/empty-trigger.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/popup-item.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/popup.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/model-selector/rerank-trigger.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/add-model-button.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-selector.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-use-tip.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/quota-panel.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/tab.tsx rename web/app/components/header/account-setting/{model-page/model-item => model-provider-page/provider-card}/index.module.css (100%) create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-icon/index.tsx rename web/app/components/header/account-setting/{model-page/system-model => model-provider-page/system-model-selector}/index.tsx (55%) create mode 100644 web/app/components/header/account-setting/model-provider-page/utils.ts diff --git a/.github/workflows/api-model-runtime-tests.yml b/.github/workflows/api-model-runtime-tests.yml new file mode 100644 index 000000000..a263d033e --- /dev/null +++ b/.github/workflows/api-model-runtime-tests.yml @@ -0,0 +1,58 @@ +name: Run Pytest + +on: + pull_request: + branches: + - main + push: + branches: + - deploy/dev + - feat/model-runtime + +jobs: + test: + runs-on: ubuntu-latest + + env: + OPENAI_API_KEY: sk-IamNotARealKeyJustForMockTestKawaiiiiiiiiii + AZURE_OPENAI_API_BASE: https://difyai-openai.openai.azure.com + AZURE_OPENAI_API_KEY: xxxxb1707exxxxxxxxxxaaxxxxxf94 + ANTHROPIC_API_KEY: sk-ant-api11-IamNotARealKeyJustForMockTestKawaiiiiiiiiii-NotBaka-ASkksz + CHATGLM_API_BASE: http://a.abc.com:11451 + XINFERENCE_SERVER_URL: http://a.abc.com:11451 + XINFERENCE_GENERATION_MODEL_UID: generate + XINFERENCE_CHAT_MODEL_UID: chat + XINFERENCE_EMBEDDINGS_MODEL_UID: embedding + XINFERENCE_RERANK_MODEL_UID: rerank + GOOGLE_API_KEY: abcdefghijklmnopqrstuvwxyz + HUGGINGFACE_API_KEY: hf-awuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwu + HUGGINGFACE_TEXT_GEN_ENDPOINT_URL: a + HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL: b + HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL: c + MOCK_SWITCH: true + + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.10' + + - name: Cache pip dependencies + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('api/requirements.txt') }} + restore-keys: ${{ runner.os }}-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest + pip install -r api/requirements.txt + + - name: Run pytest + run: pytest api/tests/integration_tests/model_runtime/anthropic api/tests/integration_tests/model_runtime/azure_openai api/tests/integration_tests/model_runtime/openai api/tests/integration_tests/model_runtime/chatglm api/tests/integration_tests/model_runtime/google api/tests/integration_tests/model_runtime/xinference api/tests/integration_tests/model_runtime/huggingface_hub/test_llm.py diff --git a/.github/workflows/api-unit-tests.yml b/.github/workflows/api-unit-tests.yml deleted file mode 100644 index 6e795c953..000000000 --- a/.github/workflows/api-unit-tests.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Run Pytest - -on: - pull_request: - branches: - - main - push: - branches: - - deploy/dev - -jobs: - test: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.10' - - - name: Cache pip dependencies - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('api/requirements.txt') }} - restore-keys: ${{ runner.os }}-pip- - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install pytest - pip install -r api/requirements.txt - - - name: Run pytest - run: pytest api/tests/unit_tests diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9321d2807..9db7fbfe9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,6 +55,11 @@ Did you have an issue, like a merge conflict, or don't know how to open a pull r Stuck somewhere? Have any questions? Join the [Discord Community Server](https://discord.gg/j3XRWSPBf7). We are here to help! + +### Provider Integrations +If you see a model provider not yet supported by Dify that you'd like to use, follow these [steps](api/core/model_runtime/README.md) to submit a PR. + + ### i18n (Internationalization) Support We are looking for contributors to help with translations in other languages. If you are interested in helping, please join the [Discord Community Server](https://discord.gg/AhzKf7dNgk) and let us know. diff --git a/api/.vscode/launch.json b/api/.vscode/launch.json index e3c1f797c..cb718f9f6 100644 --- a/api/.vscode/launch.json +++ b/api/.vscode/launch.json @@ -4,6 +4,21 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "Python: Celery", + "type": "python", + "request": "launch", + "module": "celery", + "justMyCode": true, + "args": ["-A", "app.celery", "worker", "-P", "gevent", "-c", "1", "--loglevel", "info", "-Q", "dataset,generation,mail"], + "envFile": "${workspaceFolder}/.env", + "env": { + "FLASK_APP": "app.py", + "FLASK_DEBUG": "1", + "GEVENT_SUPPORT": "True" + }, + "console": "integratedTerminal" + }, { "name": "Python: Flask", "type": "python", diff --git a/api/Dockerfile b/api/Dockerfile index 12ce05ac0..c18ce73df 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -34,9 +34,6 @@ RUN apt-get update \ COPY --from=base /pkg /usr/local COPY . /app/api/ -RUN python -c "from transformers import GPT2TokenizerFast; GPT2TokenizerFast.from_pretrained('gpt2')" -ENV TRANSFORMERS_OFFLINE true - COPY docker/entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh diff --git a/api/app.py b/api/app.py index 487cd45fb..4e5fd1f24 100644 --- a/api/app.py +++ b/api/app.py @@ -6,9 +6,12 @@ from werkzeug.exceptions import Unauthorized if not os.environ.get("DEBUG") or os.environ.get("DEBUG").lower() != 'true': from gevent import monkey monkey.patch_all() - if os.environ.get("VECTOR_STORE") == 'milvus': - import grpc.experimental.gevent - grpc.experimental.gevent.init_gevent() + # if os.environ.get("VECTOR_STORE") == 'milvus': + import grpc.experimental.gevent + grpc.experimental.gevent.init_gevent() + + import langchain + langchain.verbose = True import time import logging @@ -18,9 +21,8 @@ import threading from flask import Flask, request, Response from flask_cors import CORS -from core.model_providers.providers import hosted from extensions import ext_celery, ext_sentry, ext_redis, ext_login, ext_migrate, \ - ext_database, ext_storage, ext_mail, ext_code_based_extension + ext_database, ext_storage, ext_mail, ext_code_based_extension, ext_hosting_provider from extensions.ext_database import db from extensions.ext_login import login_manager @@ -79,8 +81,6 @@ def create_app(test_config=None) -> Flask: register_blueprints(app) register_commands(app) - hosted.init_app(app) - return app @@ -95,6 +95,7 @@ def initialize_extensions(app): ext_celery.init_app(app) ext_login.init_app(app) ext_mail.init_app(app) + ext_hosting_provider.init_app(app) ext_sentry.init_app(app) @@ -105,13 +106,18 @@ def load_user_from_request(request_from_flask_login): if request.blueprint == 'console': # Check if the user_id contains a dot, indicating the old format auth_header = request.headers.get('Authorization', '') - if ' ' not in auth_header: - raise Unauthorized('Invalid Authorization header format. Expected \'Bearer \' format.') - auth_scheme, auth_token = auth_header.split(None, 1) - auth_scheme = auth_scheme.lower() - if auth_scheme != 'bearer': - raise Unauthorized('Invalid Authorization header format. Expected \'Bearer \' format.') - + if not auth_header: + auth_token = request.args.get('_token') + if not auth_token: + raise Unauthorized('Invalid Authorization token.') + else: + if ' ' not in auth_header: + raise Unauthorized('Invalid Authorization header format. Expected \'Bearer \' format.') + auth_scheme, auth_token = auth_header.split(None, 1) + auth_scheme = auth_scheme.lower() + if auth_scheme != 'bearer': + raise Unauthorized('Invalid Authorization header format. Expected \'Bearer \' format.') + decoded = PassportService().verify(auth_token) user_id = decoded.get('user_id') diff --git a/api/commands.py b/api/commands.py index deaa2e167..9e4681b42 100644 --- a/api/commands.py +++ b/api/commands.py @@ -12,16 +12,12 @@ import qdrant_client from qdrant_client.http.models import TextIndexParams, TextIndexType, TokenizerType from tqdm import tqdm from flask import current_app, Flask -from langchain.embeddings import OpenAIEmbeddings from werkzeug.exceptions import NotFound from core.embedding.cached_embedding import CacheEmbedding from core.index.index import IndexBuilder -from core.model_providers.model_factory import ModelFactory -from core.model_providers.models.embedding.openai_embedding import OpenAIEmbedding -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.hosted import hosted_model_providers -from core.model_providers.providers.openai_provider import OpenAIProvider +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType from libs.password import password_pattern, valid_password, hash_password from libs.helper import email as email_validate from extensions.ext_database import db @@ -327,6 +323,8 @@ def create_qdrant_indexes(): except NotFound: break + model_manager = ModelManager() + page += 1 for dataset in datasets: if dataset.index_struct_dict: @@ -334,19 +332,23 @@ def create_qdrant_indexes(): try: click.echo('Create dataset qdrant index: {}'.format(dataset.id)) try: - embedding_model = ModelFactory.get_embedding_model( + embedding_model = model_manager.get_model_instance( tenant_id=dataset.tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model + ) except Exception: try: - embedding_model = ModelFactory.get_embedding_model( - tenant_id=dataset.tenant_id + embedding_model = model_manager.get_default_model_instance( + tenant_id=dataset.tenant_id, + model_type=ModelType.TEXT_EMBEDDING, ) - dataset.embedding_model = embedding_model.name - dataset.embedding_model_provider = embedding_model.model_provider.provider_name + dataset.embedding_model = embedding_model.model + dataset.embedding_model_provider = embedding_model.provider except Exception: + provider = Provider( id='provider_id', tenant_id=dataset.tenant_id, diff --git a/api/config.py b/api/config.py index 2f0ec1cdb..df8d24de3 100644 --- a/api/config.py +++ b/api/config.py @@ -87,7 +87,7 @@ class Config: # ------------------------ # General Configurations. # ------------------------ - self.CURRENT_VERSION = "0.3.34" + self.CURRENT_VERSION = "0.4.0" self.COMMIT_SHA = get_env('COMMIT_SHA') self.EDITION = "SELF_HOSTED" self.DEPLOY_ENV = get_env('DEPLOY_ENV') diff --git a/api/controllers/console/__init__.py b/api/controllers/console/__init__.py index 6fa896c3e..95a9fe3a0 100644 --- a/api/controllers/console/__init__.py +++ b/api/controllers/console/__init__.py @@ -18,7 +18,7 @@ from .auth import login, oauth, data_source_oauth, activate from .datasets import datasets, datasets_document, datasets_segments, file, hit_testing, data_source # Import workspace controllers -from .workspace import workspace, members, providers, model_providers, account, tool_providers, models +from .workspace import workspace, members, model_providers, account, tool_providers, models # Import explore controllers from .explore import installed_app, recommended_app, completion, conversation, message, parameter, saved_message, audio diff --git a/api/controllers/console/app/app.py b/api/controllers/console/app/app.py index ff41c929a..c5d24f049 100644 --- a/api/controllers/console/app/app.py +++ b/api/controllers/console/app/app.py @@ -4,6 +4,10 @@ import logging from datetime import datetime from flask_login import current_user + +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType +from core.provider_manager import ProviderManager from libs.login import login_required from flask_restful import Resource, reqparse, marshal_with, abort, inputs from werkzeug.exceptions import Forbidden @@ -13,9 +17,7 @@ from controllers.console import api from controllers.console.app.error import AppNotFoundError, ProviderNotInitializeError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check -from core.model_providers.error import ProviderTokenNotInitError, LLMBadRequestError -from core.model_providers.model_factory import ModelFactory -from core.model_providers.model_provider_factory import ModelProviderFactory +from core.errors.error import ProviderTokenNotInitError, LLMBadRequestError from events.app_event import app_was_created, app_was_deleted from fields.app_fields import app_pagination_fields, app_detail_fields, template_list_fields, \ app_detail_fields_with_site @@ -73,39 +75,41 @@ class AppListApi(Resource): raise Forbidden() try: - default_model = ModelFactory.get_text_generation_model( - tenant_id=current_user.current_tenant_id + provider_manager = ProviderManager() + default_model_entity = provider_manager.get_default_model( + tenant_id=current_user.current_tenant_id, + model_type=ModelType.LLM ) except (ProviderTokenNotInitError, LLMBadRequestError): - default_model = None + default_model_entity = None except Exception as e: logging.exception(e) - default_model = None + default_model_entity = None if args['model_config'] is not None: # validate config model_config_dict = args['model_config'] # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider( - current_user.current_tenant_id, - model_config_dict["model"]["provider"] + model_manager = ModelManager() + model_instance = model_manager.get_default_model_instance( + tenant_id=current_user.current_tenant_id, + model_type=ModelType.LLM ) - if not model_provider: - if not default_model: - raise ProviderNotInitializeError( - f"No Default System Reasoning Model available. Please configure " - f"in the Settings -> Model Provider.") - else: - model_config_dict["model"]["provider"] = default_model.model_provider.provider_name - model_config_dict["model"]["name"] = default_model.name + if not model_instance: + raise ProviderNotInitializeError( + f"No Default System Reasoning Model available. Please configure " + f"in the Settings -> Model Provider.") + else: + model_config_dict["model"]["provider"] = model_instance.provider + model_config_dict["model"]["name"] = model_instance.model model_configuration = AppModelConfigService.validate_configuration( tenant_id=current_user.current_tenant_id, account=current_user, config=model_config_dict, - mode=args['mode'] + app_mode=args['mode'] ) app = App( @@ -129,21 +133,27 @@ class AppListApi(Resource): app_model_config = AppModelConfig(**model_config_template['model_config']) # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider( - current_user.current_tenant_id, - app_model_config.model_dict["provider"] - ) + model_manager = ModelManager() - if not model_provider: - if not default_model: - raise ProviderNotInitializeError( - f"No Default System Reasoning Model available. Please configure " - f"in the Settings -> Model Provider.") - else: - model_dict = app_model_config.model_dict - model_dict['provider'] = default_model.model_provider.provider_name - model_dict['name'] = default_model.name - app_model_config.model = json.dumps(model_dict) + try: + model_instance = model_manager.get_default_model_instance( + tenant_id=current_user.current_tenant_id, + model_type=ModelType.LLM + ) + except ProviderTokenNotInitError: + raise ProviderNotInitializeError( + f"No Default System Reasoning Model available. Please configure " + f"in the Settings -> Model Provider.") + + if not model_instance: + raise ProviderNotInitializeError( + f"No Default System Reasoning Model available. Please configure " + f"in the Settings -> Model Provider.") + else: + model_dict = app_model_config.model_dict + model_dict['provider'] = model_instance.provider + model_dict['name'] = model_instance.model + app_model_config.model = json.dumps(model_dict) app.name = args['name'] app.mode = args['mode'] diff --git a/api/controllers/console/app/audio.py b/api/controllers/console/app/audio.py index 628b586d5..782937423 100644 --- a/api/controllers/console/app/audio.py +++ b/api/controllers/console/app/audio.py @@ -2,6 +2,8 @@ import logging from flask import request + +from core.model_runtime.errors.invoke import InvokeError from libs.login import login_required from werkzeug.exceptions import InternalServerError @@ -14,8 +16,7 @@ from controllers.console.app.error import AppUnavailableError, \ UnsupportedAudioTypeError, ProviderNotSupportSpeechToTextError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError from flask_restful import Resource from services.audio_service import AudioService from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, \ @@ -56,8 +57,7 @@ class ChatMessageAudioApi(Resource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e diff --git a/api/controllers/console/app/completion.py b/api/controllers/console/app/completion.py index b62c751a0..b1deb100d 100644 --- a/api/controllers/console/app/completion.py +++ b/api/controllers/console/app/completion.py @@ -5,6 +5,10 @@ from typing import Generator, Union import flask_login from flask import Response, stream_with_context + +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import InvokeFrom +from core.model_runtime.errors.invoke import InvokeError from libs.login import login_required from werkzeug.exceptions import InternalServerError, NotFound @@ -16,9 +20,7 @@ from controllers.console.app.error import ConversationCompletedError, AppUnavail ProviderModelCurrentlyNotSupportError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required -from core.conversation_message_task import PubHandler -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError from libs.helper import uuid_value from flask_restful import Resource, reqparse @@ -56,7 +58,7 @@ class CompletionMessageApi(Resource): app_model=app_model, user=account, args=args, - from_source='console', + invoke_from=InvokeFrom.DEBUGGER, streaming=streaming, is_model_config_override=True ) @@ -75,8 +77,7 @@ class CompletionMessageApi(Resource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -97,7 +98,7 @@ class CompletionMessageStopApi(Resource): account = flask_login.current_user - PubHandler.stop(account, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.DEBUGGER, account.id) return {'result': 'success'}, 200 @@ -132,7 +133,7 @@ class ChatMessageApi(Resource): app_model=app_model, user=account, args=args, - from_source='console', + invoke_from=InvokeFrom.DEBUGGER, streaming=streaming, is_model_config_override=True ) @@ -151,8 +152,7 @@ class ChatMessageApi(Resource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -182,9 +182,8 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: - yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" + except InvokeError as e: + yield "data: " + json.dumps(api.handle_error(CompletionRequestError(e.description)).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" except Exception: @@ -207,7 +206,7 @@ class ChatMessageStopApi(Resource): account = flask_login.current_user - PubHandler.stop(account, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.DEBUGGER, account.id) return {'result': 'success'}, 200 diff --git a/api/controllers/console/app/generator.py b/api/controllers/console/app/generator.py index f454426ab..90cb0a836 100644 --- a/api/controllers/console/app/generator.py +++ b/api/controllers/console/app/generator.py @@ -1,4 +1,6 @@ from flask_login import current_user + +from core.model_runtime.errors.invoke import InvokeError from libs.login import login_required from flask_restful import Resource, reqparse @@ -8,8 +10,7 @@ from controllers.console.app.error import ProviderNotInitializeError, ProviderQu from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required from core.generator.llm_generator import LLMGenerator -from core.model_providers.error import ProviderTokenNotInitError, QuotaExceededError, LLMBadRequestError, LLMAPIConnectionError, \ - LLMAPIUnavailableError, LLMRateLimitError, LLMAuthorizationError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError class RuleGenerateApi(Resource): @@ -36,8 +37,7 @@ class RuleGenerateApi(Resource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) return rules diff --git a/api/controllers/console/app/message.py b/api/controllers/console/app/message.py index b26287fd4..fb13f4f68 100644 --- a/api/controllers/console/app/message.py +++ b/api/controllers/console/app/message.py @@ -14,8 +14,9 @@ from controllers.console.app.error import CompletionRequestError, ProviderNotIni AppMoreLikeThisDisabledError, ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check -from core.model_providers.error import LLMRateLimitError, LLMBadRequestError, LLMAuthorizationError, LLMAPIConnectionError, \ - ProviderTokenNotInitError, LLMAPIUnavailableError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from libs.login import login_required from fields.conversation_fields import message_detail_fields, annotation_fields from libs.helper import uuid_value @@ -208,7 +209,13 @@ class MessageMoreLikeThisApi(Resource): app_model = _get_app(app_id, 'completion') try: - response = CompletionService.generate_more_like_this(app_model, current_user, message_id, streaming) + response = CompletionService.generate_more_like_this( + app_model=app_model, + user=current_user, + message_id=message_id, + invoke_from=InvokeFrom.DEBUGGER, + streaming=streaming + ) return compact_response(response) except MessageNotExistsError: raise NotFound("Message Not Exists.") @@ -220,8 +227,7 @@ class MessageMoreLikeThisApi(Resource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -249,8 +255,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: except ModelCurrentlyNotSupportError: yield "data: " + json.dumps( api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" @@ -290,8 +295,7 @@ class MessageSuggestedQuestionApi(Resource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except Exception: logging.exception("internal server error.") diff --git a/api/controllers/console/app/model_config.py b/api/controllers/console/app/model_config.py index 5103fddca..7ed92a653 100644 --- a/api/controllers/console/app/model_config.py +++ b/api/controllers/console/app/model_config.py @@ -31,7 +31,7 @@ class ModelConfigResource(Resource): tenant_id=current_user.current_tenant_id, account=current_user, config=request.json, - mode=app.mode + app_mode=app.mode ) new_app_model_config = AppModelConfig( diff --git a/api/controllers/console/datasets/datasets.py b/api/controllers/console/datasets/datasets.py index b4323f18e..ac7937466 100644 --- a/api/controllers/console/datasets/datasets.py +++ b/api/controllers/console/datasets/datasets.py @@ -4,6 +4,8 @@ from flask import request, current_app from flask_login import current_user from controllers.console.apikey import api_key_list, api_key_fields +from core.model_runtime.entities.model_entities import ModelType +from core.provider_manager import ProviderManager from libs.login import login_required from flask_restful import Resource, reqparse, marshal, marshal_with from werkzeug.exceptions import NotFound, Forbidden @@ -14,8 +16,7 @@ from controllers.console.datasets.error import DatasetNameDuplicateError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required from core.indexing_runner import IndexingRunner -from core.model_providers.error import LLMBadRequestError, ProviderTokenNotInitError -from core.model_providers.models.entity.model_params import ModelType +from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError from fields.app_fields import related_app_list from fields.dataset_fields import dataset_detail_fields, dataset_query_detail_fields from fields.document_fields import document_status_fields @@ -23,7 +24,6 @@ from extensions.ext_database import db from models.dataset import DocumentSegment, Document from models.model import UploadFile, ApiToken from services.dataset_service import DatasetService, DocumentService -from services.provider_service import ProviderService def _validate_name(name): @@ -55,16 +55,20 @@ class DatasetListApi(Resource): current_user.current_tenant_id, current_user) # check embedding setting - provider_service = ProviderService() - valid_model_list = provider_service.get_valid_model_list(current_user.current_tenant_id, - ModelType.EMBEDDINGS.value) - # if len(valid_model_list) == 0: - # raise ProviderNotInitializeError( - # f"No Embedding Model available. Please configure a valid provider " - # f"in the Settings -> Model Provider.") + provider_manager = ProviderManager() + configurations = provider_manager.get_configurations( + tenant_id=current_user.current_tenant_id + ) + + embedding_models = configurations.get_models( + model_type=ModelType.TEXT_EMBEDDING, + only_active=True + ) + model_names = [] - for valid_model in valid_model_list: - model_names.append(f"{valid_model['model_name']}:{valid_model['model_provider']['provider_name']}") + for embedding_model in embedding_models: + model_names.append(f"{embedding_model.model}:{embedding_model.provider.provider}") + data = marshal(datasets, dataset_detail_fields) for item in data: if item['indexing_technique'] == 'high_quality': @@ -75,6 +79,7 @@ class DatasetListApi(Resource): item['embedding_available'] = False else: item['embedding_available'] = True + response = { 'data': data, 'has_more': len(datasets) == limit, @@ -130,13 +135,20 @@ class DatasetApi(Resource): raise Forbidden(str(e)) data = marshal(dataset, dataset_detail_fields) # check embedding setting - provider_service = ProviderService() - # get valid model list - valid_model_list = provider_service.get_valid_model_list(current_user.current_tenant_id, - ModelType.EMBEDDINGS.value) + provider_manager = ProviderManager() + configurations = provider_manager.get_configurations( + tenant_id=current_user.current_tenant_id + ) + + embedding_models = configurations.get_models( + model_type=ModelType.TEXT_EMBEDDING, + only_active=True + ) + model_names = [] - for valid_model in valid_model_list: - model_names.append(f"{valid_model['model_name']}:{valid_model['model_provider']['provider_name']}") + for embedding_model in embedding_models: + model_names.append(f"{embedding_model.model}:{embedding_model.provider.provider}") + if data['indexing_technique'] == 'high_quality': item_model = f"{data['embedding_model']}:{data['embedding_model_provider']}" if item_model in model_names: diff --git a/api/controllers/console/datasets/datasets_document.py b/api/controllers/console/datasets/datasets_document.py index 128a76f18..1b501037a 100644 --- a/api/controllers/console/datasets/datasets_document.py +++ b/api/controllers/console/datasets/datasets_document.py @@ -2,8 +2,12 @@ from datetime import datetime from typing import List -from flask import request, current_app +from flask import request from flask_login import current_user + +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.errors.invoke import InvokeAuthorizationError from libs.login import login_required from flask_restful import Resource, fields, marshal, marshal_with, reqparse from sqlalchemy import desc, asc @@ -18,9 +22,8 @@ from controllers.console.datasets.error import DocumentAlreadyFinishedError, Inv from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check from core.indexing_runner import IndexingRunner -from core.model_providers.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError, \ +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError, \ LLMBadRequestError -from core.model_providers.model_factory import ModelFactory from extensions.ext_redis import redis_client from fields.document_fields import document_with_segments_fields, document_fields, \ dataset_and_document_fields, document_status_fields @@ -272,10 +275,12 @@ class DatasetInitApi(Resource): args = parser.parse_args() if args['indexing_technique'] == 'high_quality': try: - ModelFactory.get_embedding_model( - tenant_id=current_user.current_tenant_id + model_manager = ModelManager() + model_manager.get_default_model_instance( + tenant_id=current_user.current_tenant_id, + model_type=ModelType.TEXT_EMBEDDING ) - except LLMBadRequestError: + except InvokeAuthorizationError: raise ProviderNotInitializeError( f"No Embedding Model available. Please configure a valid provider " f"in the Settings -> Model Provider.") diff --git a/api/controllers/console/datasets/datasets_segments.py b/api/controllers/console/datasets/datasets_segments.py index 6051d1299..24cf2433e 100644 --- a/api/controllers/console/datasets/datasets_segments.py +++ b/api/controllers/console/datasets/datasets_segments.py @@ -12,8 +12,9 @@ from controllers.console.app.error import ProviderNotInitializeError from controllers.console.datasets.error import InvalidActionError, NoFileUploadedError, TooManyFilesError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check -from core.model_providers.error import LLMBadRequestError, ProviderTokenNotInitError -from core.model_providers.model_factory import ModelFactory +from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType from libs.login import login_required from extensions.ext_database import db from extensions.ext_redis import redis_client @@ -133,10 +134,12 @@ class DatasetDocumentSegmentApi(Resource): if dataset.indexing_technique == 'high_quality': # check embedding model setting try: - ModelFactory.get_embedding_model( + model_manager = ModelManager() + model_manager.get_model_instance( tenant_id=current_user.current_tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) except LLMBadRequestError: raise ProviderNotInitializeError( @@ -219,10 +222,12 @@ class DatasetDocumentSegmentAddApi(Resource): # check embedding model setting if dataset.indexing_technique == 'high_quality': try: - ModelFactory.get_embedding_model( + model_manager = ModelManager() + model_manager.get_model_instance( tenant_id=current_user.current_tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) except LLMBadRequestError: raise ProviderNotInitializeError( @@ -269,10 +274,12 @@ class DatasetDocumentSegmentUpdateApi(Resource): if dataset.indexing_technique == 'high_quality': # check embedding model setting try: - ModelFactory.get_embedding_model( + model_manager = ModelManager() + model_manager.get_model_instance( tenant_id=current_user.current_tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) except LLMBadRequestError: raise ProviderNotInitializeError( diff --git a/api/controllers/console/datasets/hit_testing.py b/api/controllers/console/datasets/hit_testing.py index ce4897100..79c787871 100644 --- a/api/controllers/console/datasets/hit_testing.py +++ b/api/controllers/console/datasets/hit_testing.py @@ -12,7 +12,7 @@ from controllers.console.app.error import ProviderNotInitializeError, ProviderQu from controllers.console.datasets.error import HighQualityDatasetOnlyError, DatasetNotInitializedError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required -from core.model_providers.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError, \ +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError, \ LLMBadRequestError from fields.hit_testing_fields import hit_testing_record_fields from services.dataset_service import DatasetService diff --git a/api/controllers/console/explore/audio.py b/api/controllers/console/explore/audio.py index 50ddfac98..12a5ff518 100644 --- a/api/controllers/console/explore/audio.py +++ b/api/controllers/console/explore/audio.py @@ -11,8 +11,8 @@ from controllers.console.app.error import AppUnavailableError, ProviderNotInitia NoAudioUploadedError, AudioTooLargeError, \ UnsupportedAudioTypeError, ProviderNotSupportSpeechToTextError from controllers.console.explore.wraps import InstalledAppResource -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from services.audio_service import AudioService from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, \ UnsupportedAudioTypeServiceError, ProviderNotSupportSpeechToTextServiceError @@ -53,8 +53,7 @@ class ChatAudioApi(InstalledAppResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e diff --git a/api/controllers/console/explore/completion.py b/api/controllers/console/explore/completion.py index f1527bf63..8d554720d 100644 --- a/api/controllers/console/explore/completion.py +++ b/api/controllers/console/explore/completion.py @@ -15,9 +15,10 @@ from controllers.console.app.error import ConversationCompletedError, AppUnavail ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError, CompletionRequestError from controllers.console.explore.error import NotCompletionAppError, NotChatAppError from controllers.console.explore.wraps import InstalledAppResource -from core.conversation_message_task import PubHandler -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from extensions.ext_database import db from libs.helper import uuid_value from services.completion_service import CompletionService @@ -50,7 +51,7 @@ class CompletionApi(InstalledAppResource): app_model=app_model, user=current_user, args=args, - from_source='console', + invoke_from=InvokeFrom.EXPLORE, streaming=streaming ) @@ -68,8 +69,7 @@ class CompletionApi(InstalledAppResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -84,7 +84,7 @@ class CompletionStopApi(InstalledAppResource): if app_model.mode != 'completion': raise NotCompletionAppError() - PubHandler.stop(current_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.EXPLORE, current_user.id) return {'result': 'success'}, 200 @@ -115,7 +115,7 @@ class ChatApi(InstalledAppResource): app_model=app_model, user=current_user, args=args, - from_source='console', + invoke_from=InvokeFrom.EXPLORE, streaming=streaming ) @@ -133,8 +133,7 @@ class ChatApi(InstalledAppResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -149,7 +148,7 @@ class ChatStopApi(InstalledAppResource): if app_model.mode != 'chat': raise NotChatAppError() - PubHandler.stop(current_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.EXPLORE, current_user.id) return {'result': 'success'}, 200 @@ -175,8 +174,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" diff --git a/api/controllers/console/explore/message.py b/api/controllers/console/explore/message.py index 5d07477b5..13d3696e1 100644 --- a/api/controllers/console/explore/message.py +++ b/api/controllers/console/explore/message.py @@ -5,7 +5,7 @@ from typing import Generator, Union from flask import stream_with_context, Response from flask_login import current_user -from flask_restful import reqparse, fields, marshal_with +from flask_restful import reqparse, marshal_with from flask_restful.inputs import int_range from werkzeug.exceptions import NotFound, InternalServerError @@ -13,12 +13,14 @@ import services from controllers.console import api from controllers.console.app.error import AppMoreLikeThisDisabledError, ProviderNotInitializeError, \ ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError, CompletionRequestError -from controllers.console.explore.error import NotCompletionAppError, AppSuggestedQuestionsAfterAnswerDisabledError +from controllers.console.explore.error import NotCompletionAppError, AppSuggestedQuestionsAfterAnswerDisabledError, \ + NotChatAppError from controllers.console.explore.wraps import InstalledAppResource -from core.model_providers.error import LLMRateLimitError, LLMBadRequestError, LLMAuthorizationError, LLMAPIConnectionError, \ - ProviderTokenNotInitError, LLMAPIUnavailableError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from fields.message_fields import message_infinite_scroll_pagination_fields -from libs.helper import uuid_value, TimestampField +from libs.helper import uuid_value from services.completion_service import CompletionService from services.errors.app import MoreLikeThisDisabledError from services.errors.conversation import ConversationNotExistsError @@ -83,7 +85,13 @@ class MessageMoreLikeThisApi(InstalledAppResource): streaming = args['response_mode'] == 'streaming' try: - response = CompletionService.generate_more_like_this(app_model, current_user, message_id, streaming) + response = CompletionService.generate_more_like_this( + app_model=app_model, + user=current_user, + message_id=message_id, + invoke_from=InvokeFrom.EXPLORE, + streaming=streaming + ) return compact_response(response) except MessageNotExistsError: raise NotFound("Message Not Exists.") @@ -95,8 +103,7 @@ class MessageMoreLikeThisApi(InstalledAppResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -123,8 +130,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" @@ -162,8 +168,7 @@ class MessageSuggestedQuestionApi(InstalledAppResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except Exception: logging.exception("internal server error.") diff --git a/api/controllers/console/universal_chat/audio.py b/api/controllers/console/universal_chat/audio.py index 38bcc25b2..ea48b2d82 100644 --- a/api/controllers/console/universal_chat/audio.py +++ b/api/controllers/console/universal_chat/audio.py @@ -11,8 +11,8 @@ from controllers.console.app.error import AppUnavailableError, ProviderNotInitia NoAudioUploadedError, AudioTooLargeError, \ UnsupportedAudioTypeError, ProviderNotSupportSpeechToTextError from controllers.console.universal_chat.wraps import UniversalChatResource -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from services.audio_service import AudioService from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, \ UnsupportedAudioTypeServiceError, ProviderNotSupportSpeechToTextServiceError @@ -53,8 +53,7 @@ class UniversalChatAudioApi(UniversalChatResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e diff --git a/api/controllers/console/universal_chat/chat.py b/api/controllers/console/universal_chat/chat.py index c50625adc..e7257157f 100644 --- a/api/controllers/console/universal_chat/chat.py +++ b/api/controllers/console/universal_chat/chat.py @@ -12,9 +12,10 @@ from controllers.console import api from controllers.console.app.error import ConversationCompletedError, AppUnavailableError, ProviderNotInitializeError, \ ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError, CompletionRequestError from controllers.console.universal_chat.wraps import UniversalChatResource -from core.conversation_message_task import PubHandler -from core.model_providers.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError, \ - LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, LLMRateLimitError, LLMAuthorizationError +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from libs.helper import uuid_value from services.completion_service import CompletionService @@ -68,7 +69,7 @@ class UniversalChatApi(UniversalChatResource): app_model=app_model, user=current_user, args=args, - from_source='console', + invoke_from=InvokeFrom.EXPLORE, streaming=True, is_model_config_override=True, ) @@ -87,8 +88,7 @@ class UniversalChatApi(UniversalChatResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -99,7 +99,7 @@ class UniversalChatApi(UniversalChatResource): class UniversalChatStopApi(UniversalChatResource): def post(self, universal_app, task_id): - PubHandler.stop(current_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.EXPLORE, current_user.id) return {'result': 'success'}, 200 @@ -125,8 +125,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" diff --git a/api/controllers/console/universal_chat/message.py b/api/controllers/console/universal_chat/message.py index 8568d3e9e..38f3712a1 100644 --- a/api/controllers/console/universal_chat/message.py +++ b/api/controllers/console/universal_chat/message.py @@ -12,8 +12,8 @@ from controllers.console.app.error import ProviderNotInitializeError, \ ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError, CompletionRequestError from controllers.console.explore.error import AppSuggestedQuestionsAfterAnswerDisabledError from controllers.console.universal_chat.wraps import UniversalChatResource -from core.model_providers.error import LLMRateLimitError, LLMBadRequestError, LLMAuthorizationError, LLMAPIConnectionError, \ - ProviderTokenNotInitError, LLMAPIUnavailableError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from libs.helper import uuid_value, TimestampField from services.errors.conversation import ConversationNotExistsError from services.errors.message import MessageNotExistsError, SuggestedQuestionsAfterAnswerDisabledError @@ -132,8 +132,7 @@ class UniversalChatMessageSuggestedQuestionApi(UniversalChatResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except Exception: logging.exception("internal server error.") diff --git a/api/controllers/console/workspace/model_providers.py b/api/controllers/console/workspace/model_providers.py index e92a07b2a..4086fdf04 100644 --- a/api/controllers/console/workspace/model_providers.py +++ b/api/controllers/console/workspace/model_providers.py @@ -1,16 +1,19 @@ +import io + +from flask import send_file from flask_login import current_user -from libs.login import login_required from flask_restful import Resource, reqparse from werkzeug.exceptions import Forbidden from controllers.console import api -from controllers.console.app.error import ProviderNotInitializeError from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import CredentialsValidateFailedError -from services.provider_service import ProviderService +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.utils.encoders import jsonable_encoder +from libs.login import login_required from services.billing_service import BillingService +from services.model_provider_service import ModelProviderService class ModelProviderListApi(Resource): @@ -22,13 +25,36 @@ class ModelProviderListApi(Resource): tenant_id = current_user.current_tenant_id parser = reqparse.RequestParser() - parser.add_argument('model_type', type=str, required=False, nullable=True, location='args') + parser.add_argument('model_type', type=str, required=False, nullable=True, + choices=[mt.value for mt in ModelType], location='args') args = parser.parse_args() - provider_service = ProviderService() - provider_list = provider_service.get_provider_list(tenant_id=tenant_id, model_type=args.get('model_type')) + model_provider_service = ModelProviderService() + provider_list = model_provider_service.get_provider_list( + tenant_id=tenant_id, + model_type=args.get('model_type') + ) - return provider_list + return jsonable_encoder({"data": provider_list}) + + +class ModelProviderCredentialApi(Resource): + + @setup_required + @login_required + @account_initialization_required + def get(self, provider: str): + tenant_id = current_user.current_tenant_id + + model_provider_service = ModelProviderService() + credentials = model_provider_service.get_provider_credentials( + tenant_id=tenant_id, + provider=provider + ) + + return { + "credentials": credentials + } class ModelProviderValidateApi(Resource): @@ -36,21 +62,24 @@ class ModelProviderValidateApi(Resource): @setup_required @login_required @account_initialization_required - def post(self, provider_name: str): + def post(self, provider: str): parser = reqparse.RequestParser() - parser.add_argument('config', type=dict, required=True, nullable=False, location='json') + parser.add_argument('credentials', type=dict, required=True, nullable=False, location='json') args = parser.parse_args() - provider_service = ProviderService() + tenant_id = current_user.current_tenant_id + + model_provider_service = ModelProviderService() result = True error = None try: - provider_service.custom_provider_config_validate( - provider_name=provider_name, - config=args['config'] + model_provider_service.provider_credentials_validate( + tenant_id=tenant_id, + provider=provider, + credentials=args['credentials'] ) except CredentialsValidateFailedError as ex: result = False @@ -64,26 +93,26 @@ class ModelProviderValidateApi(Resource): return response -class ModelProviderUpdateApi(Resource): +class ModelProviderApi(Resource): @setup_required @login_required @account_initialization_required - def post(self, provider_name: str): + def post(self, provider: str): if current_user.current_tenant.current_role not in ['admin', 'owner']: raise Forbidden() parser = reqparse.RequestParser() - parser.add_argument('config', type=dict, required=True, nullable=False, location='json') + parser.add_argument('credentials', type=dict, required=True, nullable=False, location='json') args = parser.parse_args() - provider_service = ProviderService() + model_provider_service = ModelProviderService() try: - provider_service.save_custom_provider_config( + model_provider_service.save_provider_credentials( tenant_id=current_user.current_tenant_id, - provider_name=provider_name, - config=args['config'] + provider=provider, + credentials=args['credentials'] ) except CredentialsValidateFailedError as ex: raise ValueError(str(ex)) @@ -93,109 +122,36 @@ class ModelProviderUpdateApi(Resource): @setup_required @login_required @account_initialization_required - def delete(self, provider_name: str): + def delete(self, provider: str): if current_user.current_tenant.current_role not in ['admin', 'owner']: raise Forbidden() - provider_service = ProviderService() - provider_service.delete_custom_provider( + model_provider_service = ModelProviderService() + model_provider_service.remove_provider_credentials( tenant_id=current_user.current_tenant_id, - provider_name=provider_name + provider=provider ) return {'result': 'success'}, 204 -class ModelProviderModelValidateApi(Resource): +class ModelProviderIconApi(Resource): + """ + Get model provider icon + """ @setup_required @login_required @account_initialization_required - def post(self, provider_name: str): - parser = reqparse.RequestParser() - parser.add_argument('model_name', type=str, required=True, nullable=False, location='json') - parser.add_argument('model_type', type=str, required=True, nullable=False, - choices=['text-generation', 'embeddings', 'speech2text', 'reranking'], location='json') - parser.add_argument('config', type=dict, required=True, nullable=False, location='json') - args = parser.parse_args() - - provider_service = ProviderService() - - result = True - error = None - - try: - provider_service.custom_provider_model_config_validate( - provider_name=provider_name, - model_name=args['model_name'], - model_type=args['model_type'], - config=args['config'] - ) - except CredentialsValidateFailedError as ex: - result = False - error = str(ex) - - response = {'result': 'success' if result else 'error'} - - if not result: - response['error'] = error - - return response - - -class ModelProviderModelUpdateApi(Resource): - - @setup_required - @login_required - @account_initialization_required - def post(self, provider_name: str): - if current_user.current_tenant.current_role not in ['admin', 'owner']: - raise Forbidden() - - parser = reqparse.RequestParser() - parser.add_argument('model_name', type=str, required=True, nullable=False, location='json') - parser.add_argument('model_type', type=str, required=True, nullable=False, - choices=['text-generation', 'embeddings', 'speech2text', 'reranking'], location='json') - parser.add_argument('config', type=dict, required=True, nullable=False, location='json') - args = parser.parse_args() - - provider_service = ProviderService() - - try: - provider_service.add_or_save_custom_provider_model_config( - tenant_id=current_user.current_tenant_id, - provider_name=provider_name, - model_name=args['model_name'], - model_type=args['model_type'], - config=args['config'] - ) - except CredentialsValidateFailedError as ex: - raise ValueError(str(ex)) - - return {'result': 'success'}, 200 - - @setup_required - @login_required - @account_initialization_required - def delete(self, provider_name: str): - if current_user.current_tenant.current_role not in ['admin', 'owner']: - raise Forbidden() - - parser = reqparse.RequestParser() - parser.add_argument('model_name', type=str, required=True, nullable=False, location='args') - parser.add_argument('model_type', type=str, required=True, nullable=False, - choices=['text-generation', 'embeddings', 'speech2text', 'reranking'], location='args') - args = parser.parse_args() - - provider_service = ProviderService() - provider_service.delete_custom_provider_model( - tenant_id=current_user.current_tenant_id, - provider_name=provider_name, - model_name=args['model_name'], - model_type=args['model_type'] + def get(self, provider: str, icon_type: str, lang: str): + model_provider_service = ModelProviderService() + icon, mimetype = model_provider_service.get_model_provider_icon( + provider=provider, + icon_type=icon_type, + lang=lang ) - return {'result': 'success'}, 204 + return send_file(io.BytesIO(icon), mimetype=mimetype) class PreferredProviderTypeUpdateApi(Resource): @@ -203,71 +159,36 @@ class PreferredProviderTypeUpdateApi(Resource): @setup_required @login_required @account_initialization_required - def post(self, provider_name: str): + def post(self, provider: str): if current_user.current_tenant.current_role not in ['admin', 'owner']: raise Forbidden() + tenant_id = current_user.current_tenant_id + parser = reqparse.RequestParser() parser.add_argument('preferred_provider_type', type=str, required=True, nullable=False, choices=['system', 'custom'], location='json') args = parser.parse_args() - provider_service = ProviderService() - provider_service.switch_preferred_provider( - tenant_id=current_user.current_tenant_id, - provider_name=provider_name, + model_provider_service = ModelProviderService() + model_provider_service.switch_preferred_provider( + tenant_id=tenant_id, + provider=provider, preferred_provider_type=args['preferred_provider_type'] ) return {'result': 'success'} -class ModelProviderModelParameterRuleApi(Resource): - - @setup_required - @login_required - @account_initialization_required - def get(self, provider_name: str): - parser = reqparse.RequestParser() - parser.add_argument('model_name', type=str, required=True, nullable=False, location='args') - args = parser.parse_args() - - provider_service = ProviderService() - - try: - parameter_rules = provider_service.get_model_parameter_rules( - tenant_id=current_user.current_tenant_id, - model_provider_name=provider_name, - model_name=args['model_name'], - model_type='text-generation' - ) - except LLMBadRequestError: - raise ProviderNotInitializeError( - f"Current Text Generation Model is invalid. Please switch to the available model.") - - rules = { - k: { - 'enabled': v.enabled, - 'min': v.min, - 'max': v.max, - 'default': v.default, - 'precision': v.precision - } - for k, v in vars(parameter_rules).items() - } - - return rules - - class ModelProviderPaymentCheckoutUrlApi(Resource): @setup_required @login_required @account_initialization_required - def get(self, provider_name: str): - if provider_name != 'anthropic': - raise ValueError(f'provider name {provider_name} is invalid') + def get(self, provider: str): + if provider != 'anthropic': + raise ValueError(f'provider name {provider} is invalid') - data = BillingService.get_model_provider_payment_link(provider_name=provider_name, + data = BillingService.get_model_provider_payment_link(provider_name=provider, tenant_id=current_user.current_tenant_id, account_id=current_user.id) return data @@ -277,11 +198,11 @@ class ModelProviderFreeQuotaSubmitApi(Resource): @setup_required @login_required @account_initialization_required - def post(self, provider_name: str): - provider_service = ProviderService() - result = provider_service.free_quota_submit( + def post(self, provider: str): + model_provider_service = ModelProviderService() + result = model_provider_service.free_quota_submit( tenant_id=current_user.current_tenant_id, - provider_name=provider_name + provider=provider ) return result @@ -291,15 +212,15 @@ class ModelProviderFreeQuotaQualificationVerifyApi(Resource): @setup_required @login_required @account_initialization_required - def get(self, provider_name: str): + def get(self, provider: str): parser = reqparse.RequestParser() parser.add_argument('token', type=str, required=False, nullable=True, location='args') args = parser.parse_args() - provider_service = ProviderService() - result = provider_service.free_quota_qualification_verify( + model_provider_service = ModelProviderService() + result = model_provider_service.free_quota_qualification_verify( tenant_id=current_user.current_tenant_id, - provider_name=provider_name, + provider=provider, token=args['token'] ) @@ -307,19 +228,18 @@ class ModelProviderFreeQuotaQualificationVerifyApi(Resource): api.add_resource(ModelProviderListApi, '/workspaces/current/model-providers') -api.add_resource(ModelProviderValidateApi, '/workspaces/current/model-providers//validate') -api.add_resource(ModelProviderUpdateApi, '/workspaces/current/model-providers/') -api.add_resource(ModelProviderModelValidateApi, - '/workspaces/current/model-providers//models/validate') -api.add_resource(ModelProviderModelUpdateApi, - '/workspaces/current/model-providers//models') + +api.add_resource(ModelProviderCredentialApi, '/workspaces/current/model-providers//credentials') +api.add_resource(ModelProviderValidateApi, '/workspaces/current/model-providers//credentials/validate') +api.add_resource(ModelProviderApi, '/workspaces/current/model-providers/') +api.add_resource(ModelProviderIconApi, '/workspaces/current/model-providers//' + '/') + api.add_resource(PreferredProviderTypeUpdateApi, - '/workspaces/current/model-providers//preferred-provider-type') -api.add_resource(ModelProviderModelParameterRuleApi, - '/workspaces/current/model-providers//models/parameter-rules') + '/workspaces/current/model-providers//preferred-provider-type') api.add_resource(ModelProviderPaymentCheckoutUrlApi, - '/workspaces/current/model-providers//checkout-url') + '/workspaces/current/model-providers//checkout-url') api.add_resource(ModelProviderFreeQuotaSubmitApi, - '/workspaces/current/model-providers//free-quota-submit') + '/workspaces/current/model-providers//free-quota-submit') api.add_resource(ModelProviderFreeQuotaQualificationVerifyApi, - '/workspaces/current/model-providers//free-quota-qualification-verify') + '/workspaces/current/model-providers//free-quota-qualification-verify') diff --git a/api/controllers/console/workspace/models.py b/api/controllers/console/workspace/models.py index 6df99ebe1..b5cb97d54 100644 --- a/api/controllers/console/workspace/models.py +++ b/api/controllers/console/workspace/models.py @@ -1,16 +1,17 @@ import logging from flask_login import current_user -from libs.login import login_required -from flask_restful import Resource, reqparse +from flask_restful import reqparse, Resource +from werkzeug.exceptions import Forbidden from controllers.console import api from controllers.console.setup import setup_required from controllers.console.wraps import account_initialization_required -from core.model_providers.model_provider_factory import ModelProviderFactory -from core.model_providers.models.entity.model_params import ModelType -from models.provider import ProviderType -from services.provider_service import ProviderService +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.utils.encoders import jsonable_encoder +from libs.login import login_required +from services.model_provider_service import ModelProviderService class DefaultModelApi(Resource): @@ -21,52 +22,20 @@ class DefaultModelApi(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument('model_type', type=str, required=True, nullable=False, - choices=['text-generation', 'embeddings', 'speech2text', 'reranking'], location='args') + choices=[mt.value for mt in ModelType], location='args') args = parser.parse_args() tenant_id = current_user.current_tenant_id - provider_service = ProviderService() - default_model = provider_service.get_default_model_of_model_type( + model_provider_service = ModelProviderService() + default_model_entity = model_provider_service.get_default_model_of_model_type( tenant_id=tenant_id, model_type=args['model_type'] ) - if not default_model: - return None - - model_provider = ModelProviderFactory.get_preferred_model_provider( - tenant_id, - default_model.provider_name - ) - - if not model_provider: - return { - 'model_name': default_model.model_name, - 'model_type': default_model.model_type, - 'model_provider': { - 'provider_name': default_model.provider_name - } - } - - provider = model_provider.provider - rst = { - 'model_name': default_model.model_name, - 'model_type': default_model.model_type, - 'model_provider': { - 'provider_name': provider.provider_name, - 'provider_type': provider.provider_type - } - } - - model_provider_rules = ModelProviderFactory.get_provider_rule(default_model.provider_name) - if provider.provider_type == ProviderType.SYSTEM.value: - rst['model_provider']['quota_type'] = provider.quota_type - rst['model_provider']['quota_unit'] = model_provider_rules['system_config']['quota_unit'] - rst['model_provider']['quota_limit'] = provider.quota_limit - rst['model_provider']['quota_used'] = provider.quota_used - - return rst + return jsonable_encoder({ + "data": default_model_entity + }) @setup_required @login_required @@ -76,15 +45,26 @@ class DefaultModelApi(Resource): parser.add_argument('model_settings', type=list, required=True, nullable=False, location='json') args = parser.parse_args() - provider_service = ProviderService() + tenant_id = current_user.current_tenant_id + + model_provider_service = ModelProviderService() model_settings = args['model_settings'] for model_setting in model_settings: + if 'model_type' not in model_setting or model_setting['model_type'] not in [mt.value for mt in ModelType]: + raise ValueError('invalid model type') + + if 'provider' not in model_setting: + continue + + if 'model' not in model_setting: + raise ValueError('invalid model') + try: - provider_service.update_default_model_of_model_type( - tenant_id=current_user.current_tenant_id, + model_provider_service.update_default_model_of_model_type( + tenant_id=tenant_id, model_type=model_setting['model_type'], - provider_name=model_setting['provider_name'], - model_name=model_setting['model_name'] + provider=model_setting['provider'], + model=model_setting['model'] ) except Exception: logging.warning(f"{model_setting['model_type']} save error") @@ -92,22 +72,198 @@ class DefaultModelApi(Resource): return {'result': 'success'} -class ValidModelApi(Resource): +class ModelProviderModelApi(Resource): + + @setup_required + @login_required + @account_initialization_required + def get(self, provider): + tenant_id = current_user.current_tenant_id + + model_provider_service = ModelProviderService() + models = model_provider_service.get_models_by_provider( + tenant_id=tenant_id, + provider=provider + ) + + return jsonable_encoder({ + "data": models + }) + + @setup_required + @login_required + @account_initialization_required + def post(self, provider: str): + if current_user.current_tenant.current_role not in ['admin', 'owner']: + raise Forbidden() + + tenant_id = current_user.current_tenant_id + + parser = reqparse.RequestParser() + parser.add_argument('model', type=str, required=True, nullable=False, location='json') + parser.add_argument('model_type', type=str, required=True, nullable=False, + choices=[mt.value for mt in ModelType], location='json') + parser.add_argument('credentials', type=dict, required=True, nullable=False, location='json') + args = parser.parse_args() + + model_provider_service = ModelProviderService() + + try: + model_provider_service.save_model_credentials( + tenant_id=tenant_id, + provider=provider, + model=args['model'], + model_type=args['model_type'], + credentials=args['credentials'] + ) + except CredentialsValidateFailedError as ex: + raise ValueError(str(ex)) + + return {'result': 'success'}, 200 + + @setup_required + @login_required + @account_initialization_required + def delete(self, provider: str): + if current_user.current_tenant.current_role not in ['admin', 'owner']: + raise Forbidden() + + tenant_id = current_user.current_tenant_id + + parser = reqparse.RequestParser() + parser.add_argument('model', type=str, required=True, nullable=False, location='json') + parser.add_argument('model_type', type=str, required=True, nullable=False, + choices=[mt.value for mt in ModelType], location='json') + args = parser.parse_args() + + model_provider_service = ModelProviderService() + model_provider_service.remove_model_credentials( + tenant_id=tenant_id, + provider=provider, + model=args['model'], + model_type=args['model_type'] + ) + + return {'result': 'success'}, 204 + + +class ModelProviderModelCredentialApi(Resource): + + @setup_required + @login_required + @account_initialization_required + def get(self, provider: str): + tenant_id = current_user.current_tenant_id + + parser = reqparse.RequestParser() + parser.add_argument('model', type=str, required=True, nullable=False, location='args') + parser.add_argument('model_type', type=str, required=True, nullable=False, + choices=[mt.value for mt in ModelType], location='args') + args = parser.parse_args() + + model_provider_service = ModelProviderService() + credentials = model_provider_service.get_model_credentials( + tenant_id=tenant_id, + provider=provider, + model_type=args['model_type'], + model=args['model'] + ) + + return { + "credentials": credentials + } + + +class ModelProviderModelValidateApi(Resource): + + @setup_required + @login_required + @account_initialization_required + def post(self, provider: str): + tenant_id = current_user.current_tenant_id + + parser = reqparse.RequestParser() + parser.add_argument('model', type=str, required=True, nullable=False, location='json') + parser.add_argument('model_type', type=str, required=True, nullable=False, + choices=[mt.value for mt in ModelType], location='json') + parser.add_argument('credentials', type=dict, required=True, nullable=False, location='json') + args = parser.parse_args() + + model_provider_service = ModelProviderService() + + result = True + error = None + + try: + model_provider_service.model_credentials_validate( + tenant_id=tenant_id, + provider=provider, + model=args['model'], + model_type=args['model_type'], + credentials=args['credentials'] + ) + except CredentialsValidateFailedError as ex: + result = False + error = str(ex) + + response = {'result': 'success' if result else 'error'} + + if not result: + response['error'] = error + + return response + + +class ModelProviderModelParameterRuleApi(Resource): + + @setup_required + @login_required + @account_initialization_required + def get(self, provider: str): + parser = reqparse.RequestParser() + parser.add_argument('model', type=str, required=True, nullable=False, location='args') + args = parser.parse_args() + + tenant_id = current_user.current_tenant_id + + model_provider_service = ModelProviderService() + parameter_rules = model_provider_service.get_model_parameter_rules( + tenant_id=tenant_id, + provider=provider, + model=args['model'] + ) + + return jsonable_encoder({ + "data": parameter_rules + }) + + +class ModelProviderAvailableModelApi(Resource): @setup_required @login_required @account_initialization_required def get(self, model_type): - ModelType.value_of(model_type) + tenant_id = current_user.current_tenant_id - provider_service = ProviderService() - valid_models = provider_service.get_valid_model_list( - tenant_id=current_user.current_tenant_id, + model_provider_service = ModelProviderService() + models = model_provider_service.get_models_by_model_type( + tenant_id=tenant_id, model_type=model_type ) - return valid_models + return jsonable_encoder({ + "data": models + }) +api.add_resource(ModelProviderModelApi, '/workspaces/current/model-providers//models') +api.add_resource(ModelProviderModelCredentialApi, + '/workspaces/current/model-providers//models/credentials') +api.add_resource(ModelProviderModelValidateApi, + '/workspaces/current/model-providers//models/credentials/validate') + +api.add_resource(ModelProviderModelParameterRuleApi, + '/workspaces/current/model-providers//models/parameter-rules') +api.add_resource(ModelProviderAvailableModelApi, '/workspaces/current/models/model-types/') api.add_resource(DefaultModelApi, '/workspaces/current/default-model') -api.add_resource(ValidModelApi, '/workspaces/current/models/model-type/') diff --git a/api/controllers/console/workspace/providers.py b/api/controllers/console/workspace/providers.py deleted file mode 100644 index 267fb6975..000000000 --- a/api/controllers/console/workspace/providers.py +++ /dev/null @@ -1,131 +0,0 @@ -# -*- coding:utf-8 -*- -from flask_login import current_user -from libs.login import login_required -from flask_restful import Resource, reqparse -from werkzeug.exceptions import Forbidden - -from controllers.console import api -from controllers.console.setup import setup_required -from controllers.console.wraps import account_initialization_required -from core.model_providers.providers.base import CredentialsValidateFailedError -from models.provider import ProviderType -from services.provider_service import ProviderService - - -class ProviderListApi(Resource): - - @setup_required - @login_required - @account_initialization_required - def get(self): - tenant_id = current_user.current_tenant_id - - """ - If the type is AZURE_OPENAI, decode and return the four fields of azure_api_type, azure_api_version:, - azure_api_base, azure_api_key as an object, where azure_api_key displays the first 6 bits in plaintext, and the - rest is replaced by * and the last two bits are displayed in plaintext - - If the type is other, decode and return the Token field directly, the field displays the first 6 bits in - plaintext, the rest is replaced by * and the last two bits are displayed in plaintext - """ - - provider_service = ProviderService() - provider_info_list = provider_service.get_provider_list(tenant_id) - - provider_list = [ - { - 'provider_name': p['provider_name'], - 'provider_type': p['provider_type'], - 'is_valid': p['is_valid'], - 'last_used': p['last_used'], - 'is_enabled': p['is_valid'], - **({ - 'quota_type': p['quota_type'], - 'quota_limit': p['quota_limit'], - 'quota_used': p['quota_used'] - } if p['provider_type'] == ProviderType.SYSTEM.value else {}), - 'token': (p['config'] if p['provider_name'] != 'openai' else p['config']['openai_api_key']) - if p['config'] else None - } - for name, provider_info in provider_info_list.items() - for p in provider_info['providers'] - ] - - return provider_list - - -class ProviderTokenApi(Resource): - - @setup_required - @login_required - @account_initialization_required - def post(self, provider): - # The role of the current user in the ta table must be admin or owner - if current_user.current_tenant.current_role not in ['admin', 'owner']: - raise Forbidden() - - parser = reqparse.RequestParser() - parser.add_argument('token', required=True, nullable=False, location='json') - args = parser.parse_args() - - if provider == 'openai': - args['token'] = { - 'openai_api_key': args['token'] - } - - provider_service = ProviderService() - try: - provider_service.save_custom_provider_config( - tenant_id=current_user.current_tenant_id, - provider_name=provider, - config=args['token'] - ) - except CredentialsValidateFailedError as ex: - raise ValueError(str(ex)) - - return {'result': 'success'}, 201 - - -class ProviderTokenValidateApi(Resource): - - @setup_required - @login_required - @account_initialization_required - def post(self, provider): - parser = reqparse.RequestParser() - parser.add_argument('token', required=True, nullable=False, location='json') - args = parser.parse_args() - - provider_service = ProviderService() - - if provider == 'openai': - args['token'] = { - 'openai_api_key': args['token'] - } - - result = True - error = None - - try: - provider_service.custom_provider_config_validate( - provider_name=provider, - config=args['token'] - ) - except CredentialsValidateFailedError as ex: - result = False - error = str(ex) - - response = {'result': 'success' if result else 'error'} - - if not result: - response['error'] = error - - return response - - -api.add_resource(ProviderTokenApi, '/workspaces/current/providers//token', - endpoint='workspaces_current_providers_token') # PUT for updating provider token -api.add_resource(ProviderTokenValidateApi, '/workspaces/current/providers//token-validate', - endpoint='workspaces_current_providers_token_validate') # POST for validating provider token - -api.add_resource(ProviderListApi, '/workspaces/current/providers') # GET for getting providers list diff --git a/api/controllers/console/workspace/workspace.py b/api/controllers/console/workspace/workspace.py index 2288ae21b..de07ab62c 100644 --- a/api/controllers/console/workspace/workspace.py +++ b/api/controllers/console/workspace/workspace.py @@ -34,7 +34,6 @@ tenant_fields = { 'status': fields.String, 'created_at': TimestampField, 'role': fields.String, - 'providers': fields.List(fields.Nested(provider_fields)), 'in_trial': fields.Boolean, 'trial_end_reason': fields.String, 'custom_config': fields.Raw(attribute='custom_config'), diff --git a/api/controllers/service_api/app/audio.py b/api/controllers/service_api/app/audio.py index 4b03de063..87bdadcdd 100644 --- a/api/controllers/service_api/app/audio.py +++ b/api/controllers/service_api/app/audio.py @@ -9,8 +9,8 @@ from controllers.service_api.app.error import AppUnavailableError, ProviderNotIn ProviderModelCurrentlyNotSupportError, NoAudioUploadedError, AudioTooLargeError, UnsupportedAudioTypeError, \ ProviderNotSupportSpeechToTextError from controllers.service_api.wraps import AppApiResource -from core.model_providers.error import LLMBadRequestError, LLMAuthorizationError, LLMAPIUnavailableError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from models.model import App, AppModelConfig from services.audio_service import AudioService from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, \ @@ -49,8 +49,7 @@ class AudioApi(AppApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e diff --git a/api/controllers/service_api/app/completion.py b/api/controllers/service_api/app/completion.py index 5cd33dcd5..a98b7c772 100644 --- a/api/controllers/service_api/app/completion.py +++ b/api/controllers/service_api/app/completion.py @@ -13,9 +13,10 @@ from controllers.service_api.app.error import AppUnavailableError, ProviderNotIn ConversationCompletedError, CompletionRequestError, ProviderQuotaExceededError, \ ProviderModelCurrentlyNotSupportError from controllers.service_api.wraps import AppApiResource -from core.conversation_message_task import PubHandler -from core.model_providers.error import LLMBadRequestError, LLMAuthorizationError, LLMAPIUnavailableError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from libs.helper import uuid_value from services.completion_service import CompletionService @@ -47,7 +48,7 @@ class CompletionApi(AppApiResource): app_model=app_model, user=end_user, args=args, - from_source='api', + invoke_from=InvokeFrom.SERVICE_API, streaming=streaming, ) @@ -65,8 +66,7 @@ class CompletionApi(AppApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -80,7 +80,7 @@ class CompletionStopApi(AppApiResource): if app_model.mode != 'completion': raise AppUnavailableError() - PubHandler.stop(end_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.SERVICE_API, end_user.id) return {'result': 'success'}, 200 @@ -112,7 +112,7 @@ class ChatApi(AppApiResource): app_model=app_model, user=end_user, args=args, - from_source='api', + invoke_from=InvokeFrom.SERVICE_API, streaming=streaming ) @@ -130,8 +130,7 @@ class ChatApi(AppApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -145,7 +144,7 @@ class ChatStopApi(AppApiResource): if app_model.mode != 'chat': raise NotChatAppError() - PubHandler.stop(end_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.SERVICE_API, end_user.id) return {'result': 'success'}, 200 @@ -171,8 +170,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" diff --git a/api/controllers/service_api/dataset/dataset.py b/api/controllers/service_api/dataset/dataset.py index 17b659cb1..813f92955 100644 --- a/api/controllers/service_api/dataset/dataset.py +++ b/api/controllers/service_api/dataset/dataset.py @@ -4,11 +4,11 @@ import services.dataset_service from controllers.service_api import api from controllers.service_api.dataset.error import DatasetNameDuplicateError from controllers.service_api.wraps import DatasetApiResource +from core.model_runtime.entities.model_entities import ModelType +from core.provider_manager import ProviderManager from libs.login import current_user -from core.model_providers.models.entity.model_params import ModelType from fields.dataset_fields import dataset_detail_fields from services.dataset_service import DatasetService -from services.provider_service import ProviderService def _validate_name(name): @@ -27,12 +27,20 @@ class DatasetApi(DatasetApiResource): datasets, total = DatasetService.get_datasets(page, limit, provider, tenant_id, current_user) # check embedding setting - provider_service = ProviderService() - valid_model_list = provider_service.get_valid_model_list(current_user.current_tenant_id, - ModelType.EMBEDDINGS.value) + provider_manager = ProviderManager() + configurations = provider_manager.get_configurations( + tenant_id=current_user.current_tenant_id + ) + + embedding_models = configurations.get_models( + model_type=ModelType.TEXT_EMBEDDING, + only_active=True + ) + model_names = [] - for valid_model in valid_model_list: - model_names.append(f"{valid_model['model_name']}:{valid_model['model_provider']['provider_name']}") + for embedding_model in embedding_models: + model_names.append(f"{embedding_model.model}:{embedding_model.provider.provider}") + data = marshal(datasets, dataset_detail_fields) for item in data: if item['indexing_technique'] == 'high_quality': diff --git a/api/controllers/service_api/dataset/document.py b/api/controllers/service_api/dataset/document.py index 6a4057c1f..e851799f7 100644 --- a/api/controllers/service_api/dataset/document.py +++ b/api/controllers/service_api/dataset/document.py @@ -13,7 +13,7 @@ from controllers.service_api.dataset.error import ArchivedDocumentImmutableError NoFileUploadedError, TooManyFilesError from controllers.service_api.wraps import DatasetApiResource, cloud_edition_billing_resource_check from libs.login import current_user -from core.model_providers.error import ProviderTokenNotInitError +from core.errors.error import ProviderTokenNotInitError from extensions.ext_database import db from fields.document_fields import document_fields, document_status_fields from models.dataset import Dataset, Document, DocumentSegment diff --git a/api/controllers/service_api/dataset/segment.py b/api/controllers/service_api/dataset/segment.py index 2cd6da3d1..9940dba1e 100644 --- a/api/controllers/service_api/dataset/segment.py +++ b/api/controllers/service_api/dataset/segment.py @@ -4,8 +4,9 @@ from werkzeug.exceptions import NotFound from controllers.service_api import api from controllers.service_api.app.error import ProviderNotInitializeError from controllers.service_api.wraps import DatasetApiResource, cloud_edition_billing_resource_check -from core.model_providers.error import ProviderTokenNotInitError, LLMBadRequestError -from core.model_providers.model_factory import ModelFactory +from core.errors.error import ProviderTokenNotInitError, LLMBadRequestError +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType from extensions.ext_database import db from fields.segment_fields import segment_fields from models.dataset import Dataset, DocumentSegment @@ -35,10 +36,12 @@ class SegmentApi(DatasetApiResource): # check embedding model setting if dataset.indexing_technique == 'high_quality': try: - ModelFactory.get_embedding_model( + model_manager = ModelManager() + model_manager.get_model_instance( tenant_id=current_user.current_tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) except LLMBadRequestError: raise ProviderNotInitializeError( @@ -77,10 +80,12 @@ class SegmentApi(DatasetApiResource): # check embedding model setting if dataset.indexing_technique == 'high_quality': try: - ModelFactory.get_embedding_model( + model_manager = ModelManager() + model_manager.get_model_instance( tenant_id=current_user.current_tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) except LLMBadRequestError: raise ProviderNotInitializeError( @@ -167,10 +172,12 @@ class DatasetSegmentApi(DatasetApiResource): if dataset.indexing_technique == 'high_quality': # check embedding model setting try: - ModelFactory.get_embedding_model( + model_manager = ModelManager() + model_manager.get_model_instance( tenant_id=current_user.current_tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) except LLMBadRequestError: raise ProviderNotInitializeError( diff --git a/api/controllers/web/audio.py b/api/controllers/web/audio.py index b3272de1c..e8c2fd335 100644 --- a/api/controllers/web/audio.py +++ b/api/controllers/web/audio.py @@ -10,8 +10,8 @@ from controllers.web.error import AppUnavailableError, ProviderNotInitializeErro ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError, NoAudioUploadedError, AudioTooLargeError, \ UnsupportedAudioTypeError, ProviderNotSupportSpeechToTextError from controllers.web.wraps import WebApiResource -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from services.audio_service import AudioService from services.errors.audio import NoAudioUploadedServiceError, AudioTooLargeServiceError, \ UnsupportedAudioTypeServiceError, ProviderNotSupportSpeechToTextServiceError @@ -51,8 +51,7 @@ class AudioApi(WebApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e diff --git a/api/controllers/web/completion.py b/api/controllers/web/completion.py index b49fec511..01dd3e1ab 100644 --- a/api/controllers/web/completion.py +++ b/api/controllers/web/completion.py @@ -13,9 +13,10 @@ from controllers.web.error import AppUnavailableError, ConversationCompletedErro ProviderNotInitializeError, NotChatAppError, NotCompletionAppError, CompletionRequestError, \ ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError from controllers.web.wraps import WebApiResource -from core.conversation_message_task import PubHandler -from core.model_providers.error import LLMBadRequestError, LLMAPIUnavailableError, LLMAuthorizationError, LLMAPIConnectionError, \ - LLMRateLimitError, ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from libs.helper import uuid_value from services.completion_service import CompletionService @@ -44,7 +45,7 @@ class CompletionApi(WebApiResource): app_model=app_model, user=end_user, args=args, - from_source='api', + invoke_from=InvokeFrom.WEB_APP, streaming=streaming ) @@ -62,8 +63,7 @@ class CompletionApi(WebApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -77,7 +77,7 @@ class CompletionStopApi(WebApiResource): if app_model.mode != 'completion': raise NotCompletionAppError() - PubHandler.stop(end_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.WEB_APP, end_user.id) return {'result': 'success'}, 200 @@ -105,7 +105,7 @@ class ChatApi(WebApiResource): app_model=app_model, user=end_user, args=args, - from_source='api', + invoke_from=InvokeFrom.WEB_APP, streaming=streaming ) @@ -123,8 +123,7 @@ class ChatApi(WebApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -138,7 +137,7 @@ class ChatStopApi(WebApiResource): if app_model.mode != 'chat': raise NotChatAppError() - PubHandler.stop(end_user, task_id) + ApplicationQueueManager.set_stop_flag(task_id, InvokeFrom.WEB_APP, end_user.id) return {'result': 'success'}, 200 @@ -164,8 +163,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" diff --git a/api/controllers/web/message.py b/api/controllers/web/message.py index 80b0741c0..d0789ee10 100644 --- a/api/controllers/web/message.py +++ b/api/controllers/web/message.py @@ -14,8 +14,9 @@ from controllers.web.error import NotChatAppError, CompletionRequestError, Provi AppMoreLikeThisDisabledError, NotCompletionAppError, AppSuggestedQuestionsAfterAnswerDisabledError, \ ProviderQuotaExceededError, ProviderModelCurrentlyNotSupportError from controllers.web.wraps import WebApiResource -from core.model_providers.error import LLMRateLimitError, LLMBadRequestError, LLMAuthorizationError, LLMAPIConnectionError, \ - ProviderTokenNotInitError, LLMAPIUnavailableError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.entities.application_entities import InvokeFrom +from core.errors.error import ProviderTokenNotInitError, QuotaExceededError, ModelCurrentlyNotSupportError +from core.model_runtime.errors.invoke import InvokeError from libs.helper import uuid_value, TimestampField from services.completion_service import CompletionService from services.errors.app import MoreLikeThisDisabledError @@ -117,7 +118,14 @@ class MessageMoreLikeThisApi(WebApiResource): streaming = args['response_mode'] == 'streaming' try: - response = CompletionService.generate_more_like_this(app_model, end_user, message_id, streaming, 'web_app') + response = CompletionService.generate_more_like_this( + app_model=app_model, + user=end_user, + message_id=message_id, + invoke_from=InvokeFrom.WEB_APP, + streaming=streaming + ) + return compact_response(response) except MessageNotExistsError: raise NotFound("Message Not Exists.") @@ -129,8 +137,7 @@ class MessageMoreLikeThisApi(WebApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except ValueError as e: raise e @@ -157,8 +164,7 @@ def compact_response(response: Union[dict, Generator]) -> Response: yield "data: " + json.dumps(api.handle_error(ProviderQuotaExceededError()).get_json()) + "\n\n" except ModelCurrentlyNotSupportError: yield "data: " + json.dumps(api.handle_error(ProviderModelCurrentlyNotSupportError()).get_json()) + "\n\n" - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: yield "data: " + json.dumps(api.handle_error(CompletionRequestError(str(e))).get_json()) + "\n\n" except ValueError as e: yield "data: " + json.dumps(api.handle_error(e).get_json()) + "\n\n" @@ -195,8 +201,7 @@ class MessageSuggestedQuestionApi(WebApiResource): raise ProviderQuotaExceededError() except ModelCurrentlyNotSupportError: raise ProviderModelCurrentlyNotSupportError() - except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, - LLMRateLimitError, LLMAuthorizationError) as e: + except InvokeError as e: raise CompletionRequestError(str(e)) except Exception: logging.exception("internal server error.") diff --git a/api/core/agent/agent/agent_llm_callback.py b/api/core/agent/agent/agent_llm_callback.py new file mode 100644 index 000000000..04b9bab14 --- /dev/null +++ b/api/core/agent/agent/agent_llm_callback.py @@ -0,0 +1,101 @@ +import logging +from typing import Optional, List + +from core.callback_handler.agent_loop_gather_callback_handler import AgentLoopGatherCallbackHandler +from core.model_runtime.callbacks.base_callback import Callback +from core.model_runtime.entities.llm_entities import LLMResultChunk, LLMResult +from core.model_runtime.entities.message_entities import PromptMessageTool, PromptMessage +from core.model_runtime.model_providers.__base.ai_model import AIModel + +logger = logging.getLogger(__name__) + + +class AgentLLMCallback(Callback): + + def __init__(self, agent_callback: AgentLoopGatherCallbackHandler) -> None: + self.agent_callback = agent_callback + + def on_before_invoke(self, llm_instance: AIModel, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + Before invoke callback + + :param llm_instance: LLM instance + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + self.agent_callback.on_llm_before_invoke( + prompt_messages=prompt_messages + ) + + def on_new_chunk(self, llm_instance: AIModel, chunk: LLMResultChunk, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None): + """ + On new chunk callback + + :param llm_instance: LLM instance + :param chunk: chunk + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + pass + + def on_after_invoke(self, llm_instance: AIModel, result: LLMResult, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + After invoke callback + + :param llm_instance: LLM instance + :param result: result + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + self.agent_callback.on_llm_after_invoke( + result=result + ) + + def on_invoke_error(self, llm_instance: AIModel, ex: Exception, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + Invoke error callback + + :param llm_instance: LLM instance + :param ex: exception + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + self.agent_callback.on_llm_error( + error=ex + ) diff --git a/api/core/agent/agent/calc_token_mixin.py b/api/core/agent/agent/calc_token_mixin.py index 97d2b7740..d8cdf9fe2 100644 --- a/api/core/agent/agent/calc_token_mixin.py +++ b/api/core/agent/agent/calc_token_mixin.py @@ -1,28 +1,49 @@ -from typing import List +from typing import List, cast from langchain.schema import BaseMessage -from core.model_providers.models.entity.message import to_prompt_messages -from core.model_providers.models.llm.base import BaseLLM +from core.entities.application_entities import ModelConfigEntity +from core.entities.message_entities import lc_messages_to_prompt_messages +from core.model_runtime.entities.message_entities import PromptMessage +from core.model_runtime.entities.model_entities import ModelPropertyKey +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel class CalcTokenMixin: - def get_num_tokens_from_messages(self, model_instance: BaseLLM, messages: List[BaseMessage], **kwargs) -> int: - return model_instance.get_num_tokens(to_prompt_messages(messages)) - - def get_message_rest_tokens(self, model_instance: BaseLLM, messages: List[BaseMessage], **kwargs) -> int: + def get_message_rest_tokens(self, model_config: ModelConfigEntity, messages: List[PromptMessage], **kwargs) -> int: """ Got the rest tokens available for the model after excluding messages tokens and completion max tokens - :param llm: + :param model_config: :param messages: :return: """ - llm_max_tokens = model_instance.model_rules.max_tokens.max - completion_max_tokens = model_instance.model_kwargs.max_tokens - used_tokens = self.get_num_tokens_from_messages(model_instance, messages, **kwargs) - rest_tokens = llm_max_tokens - completion_max_tokens - used_tokens + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + model_context_tokens = model_config.model_schema.model_properties.get(ModelPropertyKey.CONTEXT_SIZE) + + max_tokens = 0 + for parameter_rule in model_config.model_schema.parameter_rules: + if (parameter_rule.name == 'max_tokens' + or (parameter_rule.use_template and parameter_rule.use_template == 'max_tokens')): + max_tokens = (model_config.parameters.get(parameter_rule.name) + or model_config.parameters.get(parameter_rule.use_template)) or 0 + + if model_context_tokens is None: + return 0 + + if max_tokens is None: + max_tokens = 0 + + prompt_tokens = model_type_instance.get_num_tokens( + model_config.model, + model_config.credentials, + messages + ) + + rest_tokens = model_context_tokens - max_tokens - prompt_tokens return rest_tokens diff --git a/api/core/agent/agent/multi_dataset_router_agent.py b/api/core/agent/agent/multi_dataset_router_agent.py index 4fb712112..9b622a868 100644 --- a/api/core/agent/agent/multi_dataset_router_agent.py +++ b/api/core/agent/agent/multi_dataset_router_agent.py @@ -1,4 +1,3 @@ -import json from typing import Tuple, List, Any, Union, Sequence, Optional, cast from langchain.agents import OpenAIFunctionsAgent, BaseSingleActionAgent @@ -6,13 +5,14 @@ from langchain.agents.openai_functions_agent.base import _format_intermediate_st from langchain.callbacks.base import BaseCallbackManager from langchain.callbacks.manager import Callbacks from langchain.prompts.chat import BaseMessagePromptTemplate -from langchain.schema import AgentAction, AgentFinish, SystemMessage, Generation, LLMResult, AIMessage -from langchain.schema.language_model import BaseLanguageModel +from langchain.schema import AgentAction, AgentFinish, SystemMessage, AIMessage from langchain.tools import BaseTool from pydantic import root_validator -from core.model_providers.models.entity.message import to_prompt_messages -from core.model_providers.models.llm.base import BaseLLM +from core.entities.application_entities import ModelConfigEntity +from core.model_manager import ModelInstance +from core.entities.message_entities import lc_messages_to_prompt_messages +from core.model_runtime.entities.message_entities import PromptMessageTool from core.third_party.langchain.llms.fake import FakeLLM @@ -20,7 +20,7 @@ class MultiDatasetRouterAgent(OpenAIFunctionsAgent): """ An Multi Dataset Retrieve Agent driven by Router. """ - model_instance: BaseLLM + model_config: ModelConfigEntity class Config: """Configuration for this pydantic object.""" @@ -81,8 +81,7 @@ class MultiDatasetRouterAgent(OpenAIFunctionsAgent): agent_decision.return_values['output'] = '' return agent_decision except Exception as e: - new_exception = self.model_instance.handle_exceptions(e) - raise new_exception + raise e def real_plan( self, @@ -106,16 +105,39 @@ class MultiDatasetRouterAgent(OpenAIFunctionsAgent): full_inputs = dict(**selected_inputs, agent_scratchpad=agent_scratchpad) prompt = self.prompt.format_prompt(**full_inputs) messages = prompt.to_messages() - prompt_messages = to_prompt_messages(messages) - result = self.model_instance.run( - messages=prompt_messages, - functions=self.functions, + prompt_messages = lc_messages_to_prompt_messages(messages) + + model_instance = ModelInstance( + provider_model_bundle=self.model_config.provider_model_bundle, + model=self.model_config.model, + ) + + tools = [] + for function in self.functions: + tool = PromptMessageTool( + **function + ) + + tools.append(tool) + + result = model_instance.invoke_llm( + prompt_messages=prompt_messages, + tools=tools, + stream=False, + model_parameters={ + 'temperature': 0.2, + 'top_p': 0.3, + 'max_tokens': 1500 + } ) ai_message = AIMessage( - content=result.content, + content=result.message.content or "", additional_kwargs={ - 'function_call': result.function_call + 'function_call': { + 'id': result.message.tool_calls[0].id, + **result.message.tool_calls[0].function.dict() + } if result.message.tool_calls else None } ) @@ -133,7 +155,7 @@ class MultiDatasetRouterAgent(OpenAIFunctionsAgent): @classmethod def from_llm_and_tools( cls, - model_instance: BaseLLM, + model_config: ModelConfigEntity, tools: Sequence[BaseTool], callback_manager: Optional[BaseCallbackManager] = None, extra_prompt_messages: Optional[List[BaseMessagePromptTemplate]] = None, @@ -147,7 +169,7 @@ class MultiDatasetRouterAgent(OpenAIFunctionsAgent): system_message=system_message, ) return cls( - model_instance=model_instance, + model_config=model_config, llm=FakeLLM(response=''), prompt=prompt, tools=tools, diff --git a/api/core/agent/agent/openai_function_call.py b/api/core/agent/agent/openai_function_call.py index 8931bdc21..181208eb6 100644 --- a/api/core/agent/agent/openai_function_call.py +++ b/api/core/agent/agent/openai_function_call.py @@ -1,4 +1,4 @@ -from typing import List, Tuple, Any, Union, Sequence, Optional +from typing import List, Tuple, Any, Union, Sequence, Optional, cast from langchain.agents import OpenAIFunctionsAgent, BaseSingleActionAgent from langchain.agents.openai_functions_agent.base import _parse_ai_message, \ @@ -13,18 +13,23 @@ from langchain.schema import AgentAction, AgentFinish, SystemMessage, AIMessage, from langchain.tools import BaseTool from pydantic import root_validator +from core.agent.agent.agent_llm_callback import AgentLLMCallback from core.agent.agent.calc_token_mixin import ExceededLLMTokensLimitError, CalcTokenMixin from core.chain.llm_chain import LLMChain -from core.model_providers.models.entity.message import to_prompt_messages -from core.model_providers.models.llm.base import BaseLLM +from core.entities.application_entities import ModelConfigEntity +from core.model_manager import ModelInstance +from core.entities.message_entities import lc_messages_to_prompt_messages +from core.model_runtime.entities.message_entities import PromptMessageTool, PromptMessage +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel from core.third_party.langchain.llms.fake import FakeLLM class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixin): moving_summary_buffer: str = "" moving_summary_index: int = 0 - summary_model_instance: BaseLLM = None - model_instance: BaseLLM + summary_model_config: ModelConfigEntity = None + model_config: ModelConfigEntity + agent_llm_callback: Optional[AgentLLMCallback] = None class Config: """Configuration for this pydantic object.""" @@ -38,13 +43,14 @@ class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixi @classmethod def from_llm_and_tools( cls, - model_instance: BaseLLM, + model_config: ModelConfigEntity, tools: Sequence[BaseTool], callback_manager: Optional[BaseCallbackManager] = None, extra_prompt_messages: Optional[List[BaseMessagePromptTemplate]] = None, system_message: Optional[SystemMessage] = SystemMessage( content="You are a helpful AI assistant." ), + agent_llm_callback: Optional[AgentLLMCallback] = None, **kwargs: Any, ) -> BaseSingleActionAgent: prompt = cls.create_prompt( @@ -52,11 +58,12 @@ class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixi system_message=system_message, ) return cls( - model_instance=model_instance, + model_config=model_config, llm=FakeLLM(response=''), prompt=prompt, tools=tools, callback_manager=callback_manager, + agent_llm_callback=agent_llm_callback, **kwargs, ) @@ -67,28 +74,49 @@ class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixi :param query: :return: """ - original_max_tokens = self.model_instance.model_kwargs.max_tokens - self.model_instance.model_kwargs.max_tokens = 40 + original_max_tokens = 0 + for parameter_rule in self.model_config.model_schema.parameter_rules: + if (parameter_rule.name == 'max_tokens' + or (parameter_rule.use_template and parameter_rule.use_template == 'max_tokens')): + original_max_tokens = (self.model_config.parameters.get(parameter_rule.name) + or self.model_config.parameters.get(parameter_rule.use_template)) or 0 + + self.model_config.parameters['max_tokens'] = 40 prompt = self.prompt.format_prompt(input=query, agent_scratchpad=[]) messages = prompt.to_messages() try: - prompt_messages = to_prompt_messages(messages) - result = self.model_instance.run( - messages=prompt_messages, - functions=self.functions, - callbacks=None + prompt_messages = lc_messages_to_prompt_messages(messages) + model_instance = ModelInstance( + provider_model_bundle=self.model_config.provider_model_bundle, + model=self.model_config.model, + ) + + tools = [] + for function in self.functions: + tool = PromptMessageTool( + **function + ) + + tools.append(tool) + + result = model_instance.invoke_llm( + prompt_messages=prompt_messages, + tools=tools, + stream=False, + model_parameters={ + 'temperature': 0.2, + 'top_p': 0.3, + 'max_tokens': 1500 + } ) except Exception as e: - new_exception = self.model_instance.handle_exceptions(e) - raise new_exception + raise e - function_call = result.function_call + self.model_config.parameters['max_tokens'] = original_max_tokens - self.model_instance.model_kwargs.max_tokens = original_max_tokens - - return True if function_call else False + return True if result.message.tool_calls else False def plan( self, @@ -113,22 +141,46 @@ class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixi prompt = self.prompt.format_prompt(**full_inputs) messages = prompt.to_messages() + prompt_messages = lc_messages_to_prompt_messages(messages) + # summarize messages if rest_tokens < 0 try: - messages = self.summarize_messages_if_needed(messages, functions=self.functions) + prompt_messages = self.summarize_messages_if_needed(prompt_messages, functions=self.functions) except ExceededLLMTokensLimitError as e: return AgentFinish(return_values={"output": str(e)}, log=str(e)) - prompt_messages = to_prompt_messages(messages) - result = self.model_instance.run( - messages=prompt_messages, - functions=self.functions, + model_instance = ModelInstance( + provider_model_bundle=self.model_config.provider_model_bundle, + model=self.model_config.model, + ) + + tools = [] + for function in self.functions: + tool = PromptMessageTool( + **function + ) + + tools.append(tool) + + result = model_instance.invoke_llm( + prompt_messages=prompt_messages, + tools=tools, + stream=False, + callbacks=[self.agent_llm_callback] if self.agent_llm_callback else [], + model_parameters={ + 'temperature': 0.2, + 'top_p': 0.3, + 'max_tokens': 1500 + } ) ai_message = AIMessage( - content=result.content, + content=result.message.content or "", additional_kwargs={ - 'function_call': result.function_call + 'function_call': { + 'id': result.message.tool_calls[0].id, + **result.message.tool_calls[0].function.dict() + } if result.message.tool_calls else None } ) agent_decision = _parse_ai_message(ai_message) @@ -158,9 +210,14 @@ class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixi except ValueError: return AgentFinish({"output": "I'm sorry, I don't know how to respond to that."}, "") - def summarize_messages_if_needed(self, messages: List[BaseMessage], **kwargs) -> List[BaseMessage]: + def summarize_messages_if_needed(self, messages: List[PromptMessage], **kwargs) -> List[PromptMessage]: # calculate rest tokens and summarize previous function observation messages if rest_tokens < 0 - rest_tokens = self.get_message_rest_tokens(self.model_instance, messages, **kwargs) + rest_tokens = self.get_message_rest_tokens( + self.model_config, + messages, + **kwargs + ) + rest_tokens = rest_tokens - 20 # to deal with the inaccuracy of rest_tokens if rest_tokens >= 0: return messages @@ -210,19 +267,19 @@ class AutoSummarizingOpenAIFunctionCallAgent(OpenAIFunctionsAgent, CalcTokenMixi ai_prefix="AI", ) - chain = LLMChain(model_instance=self.summary_model_instance, prompt=SUMMARY_PROMPT) + chain = LLMChain(model_config=self.summary_model_config, prompt=SUMMARY_PROMPT) return chain.predict(summary=existing_summary, new_lines=new_lines) - def get_num_tokens_from_messages(self, model_instance: BaseLLM, messages: List[BaseMessage], **kwargs) -> int: + def get_num_tokens_from_messages(self, model_config: ModelConfigEntity, messages: List[BaseMessage], **kwargs) -> int: """Calculate num tokens for gpt-3.5-turbo and gpt-4 with tiktoken package. Official documentation: https://github.com/openai/openai-cookbook/blob/ main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb""" - if model_instance.model_provider.provider_name == 'azure_openai': - model = model_instance.base_model_name + if model_config.provider == 'azure_openai': + model = model_config.model model = model.replace("gpt-35", "gpt-3.5") else: - model = model_instance.base_model_name + model = model_config.credentials.get("base_model_name") tiktoken_ = _import_tiktoken() try: diff --git a/api/core/agent/agent/output_parser/retirver_dataset_agent.py b/api/core/agent/agent/output_parser/retirver_dataset_agent.py deleted file mode 100644 index 16b4a2ab2..000000000 --- a/api/core/agent/agent/output_parser/retirver_dataset_agent.py +++ /dev/null @@ -1,158 +0,0 @@ -import json -from typing import Tuple, List, Any, Union, Sequence, Optional, cast - -from langchain.agents import OpenAIFunctionsAgent, BaseSingleActionAgent -from langchain.agents.openai_functions_agent.base import _format_intermediate_steps, _parse_ai_message -from langchain.callbacks.base import BaseCallbackManager -from langchain.callbacks.manager import Callbacks -from langchain.prompts.chat import BaseMessagePromptTemplate -from langchain.schema import AgentAction, AgentFinish, SystemMessage, Generation, LLMResult, AIMessage -from langchain.schema.language_model import BaseLanguageModel -from langchain.tools import BaseTool -from pydantic import root_validator - -from core.model_providers.models.entity.message import to_prompt_messages -from core.model_providers.models.llm.base import BaseLLM -from core.third_party.langchain.llms.fake import FakeLLM -from core.tool.dataset_retriever_tool import DatasetRetrieverTool - - -class MultiDatasetRouterAgent(OpenAIFunctionsAgent): - """ - An Multi Dataset Retrieve Agent driven by Router. - """ - model_instance: BaseLLM - - class Config: - """Configuration for this pydantic object.""" - - arbitrary_types_allowed = True - - @root_validator - def validate_llm(cls, values: dict) -> dict: - return values - - def should_use_agent(self, query: str): - """ - return should use agent - - :param query: - :return: - """ - return True - - def plan( - self, - intermediate_steps: List[Tuple[AgentAction, str]], - callbacks: Callbacks = None, - **kwargs: Any, - ) -> Union[AgentAction, AgentFinish]: - """Given input, decided what to do. - - Args: - intermediate_steps: Steps the LLM has taken to date, along with observations - **kwargs: User inputs. - - Returns: - Action specifying what tool to use. - """ - if len(self.tools) == 0: - return AgentFinish(return_values={"output": ''}, log='') - elif len(self.tools) == 1: - tool = next(iter(self.tools)) - tool = cast(DatasetRetrieverTool, tool) - rst = tool.run(tool_input={'query': kwargs['input']}) - # output = '' - # rst_json = json.loads(rst) - # for item in rst_json: - # output += f'{item["content"]}\n' - return AgentFinish(return_values={"output": rst}, log=rst) - - if intermediate_steps: - _, observation = intermediate_steps[-1] - return AgentFinish(return_values={"output": observation}, log=observation) - - try: - agent_decision = self.real_plan(intermediate_steps, callbacks, **kwargs) - if isinstance(agent_decision, AgentAction): - tool_inputs = agent_decision.tool_input - if isinstance(tool_inputs, dict) and 'query' in tool_inputs and 'chat_history' not in kwargs: - tool_inputs['query'] = kwargs['input'] - agent_decision.tool_input = tool_inputs - else: - agent_decision.return_values['output'] = '' - return agent_decision - except Exception as e: - new_exception = self.model_instance.handle_exceptions(e) - raise new_exception - - def real_plan( - self, - intermediate_steps: List[Tuple[AgentAction, str]], - callbacks: Callbacks = None, - **kwargs: Any, - ) -> Union[AgentAction, AgentFinish]: - """Given input, decided what to do. - - Args: - intermediate_steps: Steps the LLM has taken to date, along with observations - **kwargs: User inputs. - - Returns: - Action specifying what tool to use. - """ - agent_scratchpad = _format_intermediate_steps(intermediate_steps) - selected_inputs = { - k: kwargs[k] for k in self.prompt.input_variables if k != "agent_scratchpad" - } - full_inputs = dict(**selected_inputs, agent_scratchpad=agent_scratchpad) - prompt = self.prompt.format_prompt(**full_inputs) - messages = prompt.to_messages() - prompt_messages = to_prompt_messages(messages) - result = self.model_instance.run( - messages=prompt_messages, - functions=self.functions, - ) - - ai_message = AIMessage( - content=result.content, - additional_kwargs={ - 'function_call': result.function_call - } - ) - - agent_decision = _parse_ai_message(ai_message) - return agent_decision - - async def aplan( - self, - intermediate_steps: List[Tuple[AgentAction, str]], - callbacks: Callbacks = None, - **kwargs: Any, - ) -> Union[AgentAction, AgentFinish]: - raise NotImplementedError() - - @classmethod - def from_llm_and_tools( - cls, - model_instance: BaseLLM, - tools: Sequence[BaseTool], - callback_manager: Optional[BaseCallbackManager] = None, - extra_prompt_messages: Optional[List[BaseMessagePromptTemplate]] = None, - system_message: Optional[SystemMessage] = SystemMessage( - content="You are a helpful AI assistant." - ), - **kwargs: Any, - ) -> BaseSingleActionAgent: - prompt = cls.create_prompt( - extra_prompt_messages=extra_prompt_messages, - system_message=system_message, - ) - return cls( - model_instance=model_instance, - llm=FakeLLM(response=''), - prompt=prompt, - tools=tools, - callback_manager=callback_manager, - **kwargs, - ) diff --git a/api/core/agent/agent/structed_multi_dataset_router_agent.py b/api/core/agent/agent/structed_multi_dataset_router_agent.py index 115ed69d1..bc35ef037 100644 --- a/api/core/agent/agent/structed_multi_dataset_router_agent.py +++ b/api/core/agent/agent/structed_multi_dataset_router_agent.py @@ -12,9 +12,7 @@ from langchain.tools import BaseTool from langchain.agents.structured_chat.prompt import PREFIX, SUFFIX from core.chain.llm_chain import LLMChain -from core.model_providers.models.entity.model_params import ModelMode -from core.model_providers.models.llm.base import BaseLLM -from core.tool.dataset_retriever_tool import DatasetRetrieverTool +from core.entities.application_entities import ModelConfigEntity FORMAT_INSTRUCTIONS = """Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input). The nouns in the format of "Thought", "Action", "Action Input", "Final Answer" must be expressed in English. @@ -69,10 +67,10 @@ class StructuredMultiDatasetRouterAgent(StructuredChatAgent): return True def plan( - self, - intermediate_steps: List[Tuple[AgentAction, str]], - callbacks: Callbacks = None, - **kwargs: Any, + self, + intermediate_steps: List[Tuple[AgentAction, str]], + callbacks: Callbacks = None, + **kwargs: Any, ) -> Union[AgentAction, AgentFinish]: """Given input, decided what to do. @@ -101,8 +99,7 @@ class StructuredMultiDatasetRouterAgent(StructuredChatAgent): try: full_output = self.llm_chain.predict(callbacks=callbacks, **full_inputs) except Exception as e: - new_exception = self.llm_chain.model_instance.handle_exceptions(e) - raise new_exception + raise e try: agent_decision = self.output_parser.parse(full_output) @@ -119,6 +116,7 @@ class StructuredMultiDatasetRouterAgent(StructuredChatAgent): except OutputParserException: return AgentFinish({"output": "I'm sorry, the answer of model is invalid, " "I don't know how to respond to that."}, "") + @classmethod def create_prompt( cls, @@ -182,7 +180,7 @@ Thought: {agent_scratchpad} return PromptTemplate(template=template, input_variables=input_variables) def _construct_scratchpad( - self, intermediate_steps: List[Tuple[AgentAction, str]] + self, intermediate_steps: List[Tuple[AgentAction, str]] ) -> str: agent_scratchpad = "" for action, observation in intermediate_steps: @@ -193,7 +191,7 @@ Thought: {agent_scratchpad} raise ValueError("agent_scratchpad should be of type string.") if agent_scratchpad: llm_chain = cast(LLMChain, self.llm_chain) - if llm_chain.model_instance.model_mode == ModelMode.CHAT: + if llm_chain.model_config.mode == "chat": return ( f"This was your previous work " f"(but I haven't seen any of it! I only see what " @@ -207,7 +205,7 @@ Thought: {agent_scratchpad} @classmethod def from_llm_and_tools( cls, - model_instance: BaseLLM, + model_config: ModelConfigEntity, tools: Sequence[BaseTool], callback_manager: Optional[BaseCallbackManager] = None, output_parser: Optional[AgentOutputParser] = None, @@ -221,7 +219,7 @@ Thought: {agent_scratchpad} ) -> Agent: """Construct an agent from an LLM and tools.""" cls._validate_tools(tools) - if model_instance.model_mode == ModelMode.CHAT: + if model_config.mode == "chat": prompt = cls.create_prompt( tools, prefix=prefix, @@ -238,10 +236,16 @@ Thought: {agent_scratchpad} format_instructions=format_instructions, input_variables=input_variables ) + llm_chain = LLMChain( - model_instance=model_instance, + model_config=model_config, prompt=prompt, callback_manager=callback_manager, + parameters={ + 'temperature': 0.2, + 'top_p': 0.3, + 'max_tokens': 1500 + } ) tool_names = [tool.name for tool in tools] _output_parser = output_parser diff --git a/api/core/agent/agent/structured_chat.py b/api/core/agent/agent/structured_chat.py index aca6de79b..bbce1ca44 100644 --- a/api/core/agent/agent/structured_chat.py +++ b/api/core/agent/agent/structured_chat.py @@ -13,10 +13,11 @@ from langchain.schema import AgentAction, AgentFinish, AIMessage, HumanMessage, from langchain.tools import BaseTool from langchain.agents.structured_chat.prompt import PREFIX, SUFFIX +from core.agent.agent.agent_llm_callback import AgentLLMCallback from core.agent.agent.calc_token_mixin import CalcTokenMixin, ExceededLLMTokensLimitError from core.chain.llm_chain import LLMChain -from core.model_providers.models.entity.model_params import ModelMode -from core.model_providers.models.llm.base import BaseLLM +from core.entities.application_entities import ModelConfigEntity +from core.entities.message_entities import lc_messages_to_prompt_messages FORMAT_INSTRUCTIONS = """Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input). The nouns in the format of "Thought", "Action", "Action Input", "Final Answer" must be expressed in English. @@ -54,7 +55,7 @@ Action: class AutoSummarizingStructuredChatAgent(StructuredChatAgent, CalcTokenMixin): moving_summary_buffer: str = "" moving_summary_index: int = 0 - summary_model_instance: BaseLLM = None + summary_model_config: ModelConfigEntity = None class Config: """Configuration for this pydantic object.""" @@ -82,7 +83,7 @@ class AutoSummarizingStructuredChatAgent(StructuredChatAgent, CalcTokenMixin): Args: intermediate_steps: Steps the LLM has taken to date, - along with observations + along with observatons callbacks: Callbacks to run. **kwargs: User inputs. @@ -96,15 +97,16 @@ class AutoSummarizingStructuredChatAgent(StructuredChatAgent, CalcTokenMixin): if prompts: messages = prompts[0].to_messages() - rest_tokens = self.get_message_rest_tokens(self.llm_chain.model_instance, messages) + prompt_messages = lc_messages_to_prompt_messages(messages) + + rest_tokens = self.get_message_rest_tokens(self.llm_chain.model_config, prompt_messages) if rest_tokens < 0: full_inputs = self.summarize_messages(intermediate_steps, **kwargs) try: full_output = self.llm_chain.predict(callbacks=callbacks, **full_inputs) except Exception as e: - new_exception = self.llm_chain.model_instance.handle_exceptions(e) - raise new_exception + raise e try: agent_decision = self.output_parser.parse(full_output) @@ -119,7 +121,7 @@ class AutoSummarizingStructuredChatAgent(StructuredChatAgent, CalcTokenMixin): "I don't know how to respond to that."}, "") def summarize_messages(self, intermediate_steps: List[Tuple[AgentAction, str]], **kwargs): - if len(intermediate_steps) >= 2 and self.summary_model_instance: + if len(intermediate_steps) >= 2 and self.summary_model_config: should_summary_intermediate_steps = intermediate_steps[self.moving_summary_index:-1] should_summary_messages = [AIMessage(content=observation) for _, observation in should_summary_intermediate_steps] @@ -153,7 +155,7 @@ class AutoSummarizingStructuredChatAgent(StructuredChatAgent, CalcTokenMixin): ai_prefix="AI", ) - chain = LLMChain(model_instance=self.summary_model_instance, prompt=SUMMARY_PROMPT) + chain = LLMChain(model_config=self.summary_model_config, prompt=SUMMARY_PROMPT) return chain.predict(summary=existing_summary, new_lines=new_lines) @classmethod @@ -229,7 +231,7 @@ Thought: {agent_scratchpad} raise ValueError("agent_scratchpad should be of type string.") if agent_scratchpad: llm_chain = cast(LLMChain, self.llm_chain) - if llm_chain.model_instance.model_mode == ModelMode.CHAT: + if llm_chain.model_config.mode == "chat": return ( f"This was your previous work " f"(but I haven't seen any of it! I only see what " @@ -243,7 +245,7 @@ Thought: {agent_scratchpad} @classmethod def from_llm_and_tools( cls, - model_instance: BaseLLM, + model_config: ModelConfigEntity, tools: Sequence[BaseTool], callback_manager: Optional[BaseCallbackManager] = None, output_parser: Optional[AgentOutputParser] = None, @@ -253,11 +255,12 @@ Thought: {agent_scratchpad} format_instructions: str = FORMAT_INSTRUCTIONS, input_variables: Optional[List[str]] = None, memory_prompts: Optional[List[BasePromptTemplate]] = None, + agent_llm_callback: Optional[AgentLLMCallback] = None, **kwargs: Any, ) -> Agent: """Construct an agent from an LLM and tools.""" cls._validate_tools(tools) - if model_instance.model_mode == ModelMode.CHAT: + if model_config.mode == "chat": prompt = cls.create_prompt( tools, prefix=prefix, @@ -275,9 +278,15 @@ Thought: {agent_scratchpad} input_variables=input_variables, ) llm_chain = LLMChain( - model_instance=model_instance, + model_config=model_config, prompt=prompt, callback_manager=callback_manager, + agent_llm_callback=agent_llm_callback, + parameters={ + 'temperature': 0.2, + 'top_p': 0.3, + 'max_tokens': 1500 + } ) tool_names = [tool.name for tool in tools] _output_parser = output_parser diff --git a/api/core/agent/agent_executor.py b/api/core/agent/agent_executor.py index 40200c60e..52cc424ff 100644 --- a/api/core/agent/agent_executor.py +++ b/api/core/agent/agent_executor.py @@ -4,10 +4,10 @@ from typing import Union, Optional from langchain.agents import BaseSingleActionAgent, BaseMultiActionAgent from langchain.callbacks.manager import Callbacks -from langchain.memory.chat_memory import BaseChatMemory from langchain.tools import BaseTool from pydantic import BaseModel, Extra +from core.agent.agent.agent_llm_callback import AgentLLMCallback from core.agent.agent.multi_dataset_router_agent import MultiDatasetRouterAgent from core.agent.agent.openai_function_call import AutoSummarizingOpenAIFunctionCallAgent from core.agent.agent.output_parser.structured_chat import StructuredChatOutputParser @@ -15,9 +15,11 @@ from core.agent.agent.structed_multi_dataset_router_agent import StructuredMulti from core.agent.agent.structured_chat import AutoSummarizingStructuredChatAgent from langchain.agents import AgentExecutor as LCAgentExecutor +from core.entities.application_entities import ModelConfigEntity +from core.entities.message_entities import prompt_messages_to_lc_messages from core.helper import moderation -from core.model_providers.error import LLMError -from core.model_providers.models.llm.base import BaseLLM +from core.memory.token_buffer_memory import TokenBufferMemory +from core.model_runtime.errors.invoke import InvokeError from core.tool.dataset_multi_retriever_tool import DatasetMultiRetrieverTool from core.tool.dataset_retriever_tool import DatasetRetrieverTool @@ -31,14 +33,15 @@ class PlanningStrategy(str, enum.Enum): class AgentConfiguration(BaseModel): strategy: PlanningStrategy - model_instance: BaseLLM + model_config: ModelConfigEntity tools: list[BaseTool] - summary_model_instance: BaseLLM = None - memory: Optional[BaseChatMemory] = None + summary_model_config: Optional[ModelConfigEntity] = None + memory: Optional[TokenBufferMemory] = None callbacks: Callbacks = None max_iterations: int = 6 max_execution_time: Optional[float] = None early_stopping_method: str = "generate" + agent_llm_callback: Optional[AgentLLMCallback] = None # `generate` will continue to complete the last inference after reaching the iteration limit or request time limit class Config: @@ -62,34 +65,42 @@ class AgentExecutor: def _init_agent(self) -> Union[BaseSingleActionAgent, BaseMultiActionAgent]: if self.configuration.strategy == PlanningStrategy.REACT: agent = AutoSummarizingStructuredChatAgent.from_llm_and_tools( - model_instance=self.configuration.model_instance, + model_config=self.configuration.model_config, tools=self.configuration.tools, output_parser=StructuredChatOutputParser(), - summary_model_instance=self.configuration.summary_model_instance - if self.configuration.summary_model_instance else None, + summary_model_config=self.configuration.summary_model_config + if self.configuration.summary_model_config else None, + agent_llm_callback=self.configuration.agent_llm_callback, verbose=True ) elif self.configuration.strategy == PlanningStrategy.FUNCTION_CALL: agent = AutoSummarizingOpenAIFunctionCallAgent.from_llm_and_tools( - model_instance=self.configuration.model_instance, + model_config=self.configuration.model_config, tools=self.configuration.tools, - extra_prompt_messages=self.configuration.memory.buffer if self.configuration.memory else None, # used for read chat histories memory - summary_model_instance=self.configuration.summary_model_instance - if self.configuration.summary_model_instance else None, + extra_prompt_messages=prompt_messages_to_lc_messages(self.configuration.memory.get_history_prompt_messages()) + if self.configuration.memory else None, # used for read chat histories memory + summary_model_config=self.configuration.summary_model_config + if self.configuration.summary_model_config else None, + agent_llm_callback=self.configuration.agent_llm_callback, verbose=True ) elif self.configuration.strategy == PlanningStrategy.ROUTER: - self.configuration.tools = [t for t in self.configuration.tools if isinstance(t, DatasetRetrieverTool) or isinstance(t, DatasetMultiRetrieverTool)] + self.configuration.tools = [t for t in self.configuration.tools + if isinstance(t, DatasetRetrieverTool) + or isinstance(t, DatasetMultiRetrieverTool)] agent = MultiDatasetRouterAgent.from_llm_and_tools( - model_instance=self.configuration.model_instance, + model_config=self.configuration.model_config, tools=self.configuration.tools, - extra_prompt_messages=self.configuration.memory.buffer if self.configuration.memory else None, + extra_prompt_messages=prompt_messages_to_lc_messages(self.configuration.memory.get_history_prompt_messages()) + if self.configuration.memory else None, verbose=True ) elif self.configuration.strategy == PlanningStrategy.REACT_ROUTER: - self.configuration.tools = [t for t in self.configuration.tools if isinstance(t, DatasetRetrieverTool) or isinstance(t, DatasetMultiRetrieverTool)] + self.configuration.tools = [t for t in self.configuration.tools + if isinstance(t, DatasetRetrieverTool) + or isinstance(t, DatasetMultiRetrieverTool)] agent = StructuredMultiDatasetRouterAgent.from_llm_and_tools( - model_instance=self.configuration.model_instance, + model_config=self.configuration.model_config, tools=self.configuration.tools, output_parser=StructuredChatOutputParser(), verbose=True @@ -104,11 +115,11 @@ class AgentExecutor: def run(self, query: str) -> AgentExecuteResult: moderation_result = moderation.check_moderation( - self.configuration.model_instance.model_provider, + self.configuration.model_config, query ) - if not moderation_result: + if moderation_result: return AgentExecuteResult( output="I apologize for any confusion, but I'm an AI assistant to be helpful, harmless, and honest.", strategy=self.configuration.strategy, @@ -118,7 +129,6 @@ class AgentExecutor: agent_executor = LCAgentExecutor.from_agent_and_tools( agent=self.agent, tools=self.configuration.tools, - memory=self.configuration.memory, max_iterations=self.configuration.max_iterations, max_execution_time=self.configuration.max_execution_time, early_stopping_method=self.configuration.early_stopping_method, @@ -126,8 +136,8 @@ class AgentExecutor: ) try: - output = agent_executor.run(query) - except LLMError as ex: + output = agent_executor.run(input=query) + except InvokeError as ex: raise ex except Exception as ex: logging.exception("agent_executor run failed") diff --git a/api/core/model_providers/models/__init__.py b/api/core/app_runner/__init__.py similarity index 100% rename from api/core/model_providers/models/__init__.py rename to api/core/app_runner/__init__.py diff --git a/api/core/app_runner/agent_app_runner.py b/api/core/app_runner/agent_app_runner.py new file mode 100644 index 000000000..02bdae900 --- /dev/null +++ b/api/core/app_runner/agent_app_runner.py @@ -0,0 +1,251 @@ +import json +import logging +from typing import cast + +from core.agent.agent.agent_llm_callback import AgentLLMCallback +from core.app_runner.app_runner import AppRunner +from core.callback_handler.agent_loop_gather_callback_handler import AgentLoopGatherCallbackHandler +from core.entities.application_entities import ApplicationGenerateEntity, PromptTemplateEntity, ModelConfigEntity +from core.application_queue_manager import ApplicationQueueManager +from core.features.agent_runner import AgentRunnerFeature +from core.memory.token_buffer_memory import TokenBufferMemory +from core.model_manager import ModelInstance +from core.model_runtime.entities.llm_entities import LLMUsage +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from extensions.ext_database import db +from models.model import Conversation, Message, App, MessageChain, MessageAgentThought + +logger = logging.getLogger(__name__) + + +class AgentApplicationRunner(AppRunner): + """ + Agent Application Runner + """ + + def run(self, application_generate_entity: ApplicationGenerateEntity, + queue_manager: ApplicationQueueManager, + conversation: Conversation, + message: Message) -> None: + """ + Run agent application + :param application_generate_entity: application generate entity + :param queue_manager: application queue manager + :param conversation: conversation + :param message: message + :return: + """ + app_record = db.session.query(App).filter(App.id == application_generate_entity.app_id).first() + if not app_record: + raise ValueError(f"App not found") + + app_orchestration_config = application_generate_entity.app_orchestration_config_entity + + inputs = application_generate_entity.inputs + query = application_generate_entity.query + files = application_generate_entity.files + + # Pre-calculate the number of tokens of the prompt messages, + # and return the rest number of tokens by model context token size limit and max token size limit. + # If the rest number of tokens is not enough, raise exception. + # Include: prompt template, inputs, query(optional), files(optional) + # Not Include: memory, external data, dataset context + self.get_pre_calculate_rest_tokens( + app_record=app_record, + model_config=app_orchestration_config.model_config, + prompt_template_entity=app_orchestration_config.prompt_template, + inputs=inputs, + files=files, + query=query + ) + + memory = None + if application_generate_entity.conversation_id: + # get memory of conversation (read-only) + model_instance = ModelInstance( + provider_model_bundle=app_orchestration_config.model_config.provider_model_bundle, + model=app_orchestration_config.model_config.model + ) + + memory = TokenBufferMemory( + conversation=conversation, + model_instance=model_instance + ) + + # reorganize all inputs and template to prompt messages + # Include: prompt template, inputs, query(optional), files(optional) + # memory(optional) + prompt_messages, stop = self.originze_prompt_messages( + app_record=app_record, + model_config=app_orchestration_config.model_config, + prompt_template_entity=app_orchestration_config.prompt_template, + inputs=inputs, + files=files, + query=query, + context=None, + memory=memory + ) + + # Create MessageChain + message_chain = self._init_message_chain( + message=message, + query=query + ) + + # add agent callback to record agent thoughts + agent_callback = AgentLoopGatherCallbackHandler( + model_config=app_orchestration_config.model_config, + message=message, + queue_manager=queue_manager, + message_chain=message_chain + ) + + # init LLM Callback + agent_llm_callback = AgentLLMCallback( + agent_callback=agent_callback + ) + + agent_runner = AgentRunnerFeature( + tenant_id=application_generate_entity.tenant_id, + app_orchestration_config=app_orchestration_config, + model_config=app_orchestration_config.model_config, + config=app_orchestration_config.agent, + queue_manager=queue_manager, + message=message, + user_id=application_generate_entity.user_id, + agent_llm_callback=agent_llm_callback, + callback=agent_callback, + memory=memory + ) + + # agent run + result = agent_runner.run( + query=query, + invoke_from=application_generate_entity.invoke_from + ) + + if result: + self._save_message_chain( + message_chain=message_chain, + output_text=result + ) + + if (result + and app_orchestration_config.prompt_template.prompt_type == PromptTemplateEntity.PromptType.SIMPLE + and app_orchestration_config.prompt_template.simple_prompt_template + ): + # Direct output if agent result exists and has pre prompt + self.direct_output( + queue_manager=queue_manager, + app_orchestration_config=app_orchestration_config, + prompt_messages=prompt_messages, + stream=application_generate_entity.stream, + text=result, + usage=self._get_usage_of_all_agent_thoughts( + model_config=app_orchestration_config.model_config, + message=message + ) + ) + else: + # As normal LLM run, agent result as context + context = result + + # reorganize all inputs and template to prompt messages + # Include: prompt template, inputs, query(optional), files(optional) + # memory(optional), external data, dataset context(optional) + prompt_messages, stop = self.originze_prompt_messages( + app_record=app_record, + model_config=app_orchestration_config.model_config, + prompt_template_entity=app_orchestration_config.prompt_template, + inputs=inputs, + files=files, + query=query, + context=context, + memory=memory + ) + + # Re-calculate the max tokens if sum(prompt_token + max_tokens) over model token limit + self.recale_llm_max_tokens( + model_config=app_orchestration_config.model_config, + prompt_messages=prompt_messages + ) + + # Invoke model + model_instance = ModelInstance( + provider_model_bundle=app_orchestration_config.model_config.provider_model_bundle, + model=app_orchestration_config.model_config.model + ) + + invoke_result = model_instance.invoke_llm( + prompt_messages=prompt_messages, + model_parameters=app_orchestration_config.model_config.parameters, + stop=stop, + stream=application_generate_entity.stream, + user=application_generate_entity.user_id, + ) + + # handle invoke result + self._handle_invoke_result( + invoke_result=invoke_result, + queue_manager=queue_manager, + stream=application_generate_entity.stream + ) + + def _init_message_chain(self, message: Message, query: str) -> MessageChain: + """ + Init MessageChain + :param message: message + :param query: query + :return: + """ + message_chain = MessageChain( + message_id=message.id, + type="AgentExecutor", + input=json.dumps({ + "input": query + }) + ) + + db.session.add(message_chain) + db.session.commit() + + return message_chain + + def _save_message_chain(self, message_chain: MessageChain, output_text: str) -> None: + """ + Save MessageChain + :param message_chain: message chain + :param output_text: output text + :return: + """ + message_chain.output = json.dumps({ + "output": output_text + }) + db.session.commit() + + def _get_usage_of_all_agent_thoughts(self, model_config: ModelConfigEntity, + message: Message) -> LLMUsage: + """ + Get usage of all agent thoughts + :param model_config: model config + :param message: message + :return: + """ + agent_thoughts = (db.session.query(MessageAgentThought) + .filter(MessageAgentThought.message_id == message.id).all()) + + all_message_tokens = 0 + all_answer_tokens = 0 + for agent_thought in agent_thoughts: + all_message_tokens += agent_thought.message_tokens + all_answer_tokens += agent_thought.answer_tokens + + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + return model_type_instance._calc_response_usage( + model_config.model, + model_config.credentials, + all_message_tokens, + all_answer_tokens + ) diff --git a/api/core/app_runner/app_runner.py b/api/core/app_runner/app_runner.py new file mode 100644 index 000000000..4f247aa8d --- /dev/null +++ b/api/core/app_runner/app_runner.py @@ -0,0 +1,267 @@ +import time +from typing import cast, Optional, List, Tuple, Generator, Union + +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import ModelConfigEntity, PromptTemplateEntity, AppOrchestrationConfigEntity +from core.file.file_obj import FileObj +from core.memory.token_buffer_memory import TokenBufferMemory +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage +from core.model_runtime.entities.message_entities import PromptMessage, AssistantPromptMessage +from core.model_runtime.entities.model_entities import ModelPropertyKey +from core.model_runtime.errors.invoke import InvokeBadRequestError +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.prompt.prompt_transform import PromptTransform +from models.model import App + + +class AppRunner: + def get_pre_calculate_rest_tokens(self, app_record: App, + model_config: ModelConfigEntity, + prompt_template_entity: PromptTemplateEntity, + inputs: dict[str, str], + files: list[FileObj], + query: Optional[str] = None) -> int: + """ + Get pre calculate rest tokens + :param app_record: app record + :param model_config: model config entity + :param prompt_template_entity: prompt template entity + :param inputs: inputs + :param files: files + :param query: query + :return: + """ + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + model_context_tokens = model_config.model_schema.model_properties.get(ModelPropertyKey.CONTEXT_SIZE) + + max_tokens = 0 + for parameter_rule in model_config.model_schema.parameter_rules: + if (parameter_rule.name == 'max_tokens' + or (parameter_rule.use_template and parameter_rule.use_template == 'max_tokens')): + max_tokens = (model_config.parameters.get(parameter_rule.name) + or model_config.parameters.get(parameter_rule.use_template)) or 0 + + if model_context_tokens is None: + return -1 + + if max_tokens is None: + max_tokens = 0 + + # get prompt messages without memory and context + prompt_messages, stop = self.originze_prompt_messages( + app_record=app_record, + model_config=model_config, + prompt_template_entity=prompt_template_entity, + inputs=inputs, + files=files, + query=query + ) + + prompt_tokens = model_type_instance.get_num_tokens( + model_config.model, + model_config.credentials, + prompt_messages + ) + + rest_tokens = model_context_tokens - max_tokens - prompt_tokens + if rest_tokens < 0: + raise InvokeBadRequestError("Query or prefix prompt is too long, you can reduce the prefix prompt, " + "or shrink the max token, or switch to a llm with a larger token limit size.") + + return rest_tokens + + def recale_llm_max_tokens(self, model_config: ModelConfigEntity, + prompt_messages: List[PromptMessage]): + # recalc max_tokens if sum(prompt_token + max_tokens) over model token limit + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + model_context_tokens = model_config.model_schema.model_properties.get(ModelPropertyKey.CONTEXT_SIZE) + + max_tokens = 0 + for parameter_rule in model_config.model_schema.parameter_rules: + if (parameter_rule.name == 'max_tokens' + or (parameter_rule.use_template and parameter_rule.use_template == 'max_tokens')): + max_tokens = (model_config.parameters.get(parameter_rule.name) + or model_config.parameters.get(parameter_rule.use_template)) or 0 + + if model_context_tokens is None: + return -1 + + if max_tokens is None: + max_tokens = 0 + + prompt_tokens = model_type_instance.get_num_tokens( + model_config.model, + model_config.credentials, + prompt_messages + ) + + if prompt_tokens + max_tokens > model_context_tokens: + max_tokens = max(model_context_tokens - prompt_tokens, 16) + + for parameter_rule in model_config.model_schema.parameter_rules: + if (parameter_rule.name == 'max_tokens' + or (parameter_rule.use_template and parameter_rule.use_template == 'max_tokens')): + model_config.parameters[parameter_rule.name] = max_tokens + + def originze_prompt_messages(self, app_record: App, + model_config: ModelConfigEntity, + prompt_template_entity: PromptTemplateEntity, + inputs: dict[str, str], + files: list[FileObj], + query: Optional[str] = None, + context: Optional[str] = None, + memory: Optional[TokenBufferMemory] = None) \ + -> Tuple[List[PromptMessage], Optional[List[str]]]: + """ + Organize prompt messages + :param context: + :param app_record: app record + :param model_config: model config entity + :param prompt_template_entity: prompt template entity + :param inputs: inputs + :param files: files + :param query: query + :param memory: memory + :return: + """ + prompt_transform = PromptTransform() + + # get prompt without memory and context + if prompt_template_entity.prompt_type == PromptTemplateEntity.PromptType.SIMPLE: + prompt_messages, stop = prompt_transform.get_prompt( + app_mode=app_record.mode, + prompt_template_entity=prompt_template_entity, + inputs=inputs, + query=query if query else '', + files=files, + context=context, + memory=memory, + model_config=model_config + ) + else: + prompt_messages = prompt_transform.get_advanced_prompt( + app_mode=app_record.mode, + prompt_template_entity=prompt_template_entity, + inputs=inputs, + query=query, + files=files, + context=context, + memory=memory, + model_config=model_config + ) + stop = model_config.stop + + return prompt_messages, stop + + def direct_output(self, queue_manager: ApplicationQueueManager, + app_orchestration_config: AppOrchestrationConfigEntity, + prompt_messages: list, + text: str, + stream: bool, + usage: Optional[LLMUsage] = None) -> None: + """ + Direct output + :param queue_manager: application queue manager + :param app_orchestration_config: app orchestration config + :param prompt_messages: prompt messages + :param text: text + :param stream: stream + :param usage: usage + :return: + """ + if stream: + index = 0 + for token in text: + queue_manager.publish_chunk_message(LLMResultChunk( + model=app_orchestration_config.model_config.model, + prompt_messages=prompt_messages, + delta=LLMResultChunkDelta( + index=index, + message=AssistantPromptMessage(content=token) + ) + )) + index += 1 + time.sleep(0.01) + + queue_manager.publish_message_end( + llm_result=LLMResult( + model=app_orchestration_config.model_config.model, + prompt_messages=prompt_messages, + message=AssistantPromptMessage(content=text), + usage=usage if usage else LLMUsage.empty_usage() + ) + ) + + def _handle_invoke_result(self, invoke_result: Union[LLMResult, Generator], + queue_manager: ApplicationQueueManager, + stream: bool) -> None: + """ + Handle invoke result + :param invoke_result: invoke result + :param queue_manager: application queue manager + :param stream: stream + :return: + """ + if not stream: + self._handle_invoke_result_direct( + invoke_result=invoke_result, + queue_manager=queue_manager + ) + else: + self._handle_invoke_result_stream( + invoke_result=invoke_result, + queue_manager=queue_manager + ) + + def _handle_invoke_result_direct(self, invoke_result: LLMResult, + queue_manager: ApplicationQueueManager) -> None: + """ + Handle invoke result direct + :param invoke_result: invoke result + :param queue_manager: application queue manager + :return: + """ + queue_manager.publish_message_end( + llm_result=invoke_result + ) + + def _handle_invoke_result_stream(self, invoke_result: Generator, + queue_manager: ApplicationQueueManager) -> None: + """ + Handle invoke result + :param invoke_result: invoke result + :param queue_manager: application queue manager + :return: + """ + model = None + prompt_messages = [] + text = '' + usage = None + for result in invoke_result: + queue_manager.publish_chunk_message(result) + + text += result.delta.message.content + + if not model: + model = result.model + + if not prompt_messages: + prompt_messages = result.prompt_messages + + if not usage and result.delta.usage: + usage = result.delta.usage + + llm_result = LLMResult( + model=model, + prompt_messages=prompt_messages, + message=AssistantPromptMessage(content=text), + usage=usage + ) + + queue_manager.publish_message_end( + llm_result=llm_result + ) diff --git a/api/core/app_runner/basic_app_runner.py b/api/core/app_runner/basic_app_runner.py new file mode 100644 index 000000000..517cd8302 --- /dev/null +++ b/api/core/app_runner/basic_app_runner.py @@ -0,0 +1,363 @@ +import logging +from typing import Tuple, Optional + +from core.app_runner.app_runner import AppRunner +from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler +from core.entities.application_entities import ApplicationGenerateEntity, ModelConfigEntity, \ + AppOrchestrationConfigEntity, InvokeFrom, ExternalDataVariableEntity, DatasetEntity +from core.application_queue_manager import ApplicationQueueManager +from core.features.annotation_reply import AnnotationReplyFeature +from core.features.dataset_retrieval import DatasetRetrievalFeature +from core.features.external_data_fetch import ExternalDataFetchFeature +from core.features.hosting_moderation import HostingModerationFeature +from core.features.moderation import ModerationFeature +from core.memory.token_buffer_memory import TokenBufferMemory +from core.model_manager import ModelInstance +from core.model_runtime.entities.message_entities import PromptMessage +from core.moderation.base import ModerationException +from core.prompt.prompt_transform import AppMode +from extensions.ext_database import db +from models.model import Conversation, Message, App, MessageAnnotation + +logger = logging.getLogger(__name__) + + +class BasicApplicationRunner(AppRunner): + """ + Basic Application Runner + """ + + def run(self, application_generate_entity: ApplicationGenerateEntity, + queue_manager: ApplicationQueueManager, + conversation: Conversation, + message: Message) -> None: + """ + Run application + :param application_generate_entity: application generate entity + :param queue_manager: application queue manager + :param conversation: conversation + :param message: message + :return: + """ + app_record = db.session.query(App).filter(App.id == application_generate_entity.app_id).first() + if not app_record: + raise ValueError(f"App not found") + + app_orchestration_config = application_generate_entity.app_orchestration_config_entity + + inputs = application_generate_entity.inputs + query = application_generate_entity.query + files = application_generate_entity.files + + # Pre-calculate the number of tokens of the prompt messages, + # and return the rest number of tokens by model context token size limit and max token size limit. + # If the rest number of tokens is not enough, raise exception. + # Include: prompt template, inputs, query(optional), files(optional) + # Not Include: memory, external data, dataset context + self.get_pre_calculate_rest_tokens( + app_record=app_record, + model_config=app_orchestration_config.model_config, + prompt_template_entity=app_orchestration_config.prompt_template, + inputs=inputs, + files=files, + query=query + ) + + memory = None + if application_generate_entity.conversation_id: + # get memory of conversation (read-only) + model_instance = ModelInstance( + provider_model_bundle=app_orchestration_config.model_config.provider_model_bundle, + model=app_orchestration_config.model_config.model + ) + + memory = TokenBufferMemory( + conversation=conversation, + model_instance=model_instance + ) + + # organize all inputs and template to prompt messages + # Include: prompt template, inputs, query(optional), files(optional) + # memory(optional) + prompt_messages, stop = self.originze_prompt_messages( + app_record=app_record, + model_config=app_orchestration_config.model_config, + prompt_template_entity=app_orchestration_config.prompt_template, + inputs=inputs, + files=files, + query=query, + memory=memory + ) + + # moderation + try: + # process sensitive_word_avoidance + _, inputs, query = self.moderation_for_inputs( + app_id=app_record.id, + tenant_id=application_generate_entity.tenant_id, + app_orchestration_config_entity=app_orchestration_config, + inputs=inputs, + query=query, + ) + except ModerationException as e: + self.direct_output( + queue_manager=queue_manager, + app_orchestration_config=app_orchestration_config, + prompt_messages=prompt_messages, + text=str(e), + stream=application_generate_entity.stream + ) + return + + if query: + # annotation reply + annotation_reply = self.query_app_annotations_to_reply( + app_record=app_record, + message=message, + query=query, + user_id=application_generate_entity.user_id, + invoke_from=application_generate_entity.invoke_from + ) + + if annotation_reply: + queue_manager.publish_annotation_reply( + message_annotation_id=annotation_reply.id + ) + self.direct_output( + queue_manager=queue_manager, + app_orchestration_config=app_orchestration_config, + prompt_messages=prompt_messages, + text=annotation_reply.content, + stream=application_generate_entity.stream + ) + return + + # fill in variable inputs from external data tools if exists + external_data_tools = app_orchestration_config.external_data_variables + if external_data_tools: + inputs = self.fill_in_inputs_from_external_data_tools( + tenant_id=app_record.tenant_id, + app_id=app_record.id, + external_data_tools=external_data_tools, + inputs=inputs, + query=query + ) + + # get context from datasets + context = None + if app_orchestration_config.dataset: + context = self.retrieve_dataset_context( + tenant_id=app_record.tenant_id, + app_record=app_record, + queue_manager=queue_manager, + model_config=app_orchestration_config.model_config, + show_retrieve_source=app_orchestration_config.show_retrieve_source, + dataset_config=app_orchestration_config.dataset, + message=message, + inputs=inputs, + query=query, + user_id=application_generate_entity.user_id, + invoke_from=application_generate_entity.invoke_from, + memory=memory + ) + + # reorganize all inputs and template to prompt messages + # Include: prompt template, inputs, query(optional), files(optional) + # memory(optional), external data, dataset context(optional) + prompt_messages, stop = self.originze_prompt_messages( + app_record=app_record, + model_config=app_orchestration_config.model_config, + prompt_template_entity=app_orchestration_config.prompt_template, + inputs=inputs, + files=files, + query=query, + context=context, + memory=memory + ) + + # check hosting moderation + hosting_moderation_result = self.check_hosting_moderation( + application_generate_entity=application_generate_entity, + queue_manager=queue_manager, + prompt_messages=prompt_messages + ) + + if hosting_moderation_result: + return + + # Re-calculate the max tokens if sum(prompt_token + max_tokens) over model token limit + self.recale_llm_max_tokens( + model_config=app_orchestration_config.model_config, + prompt_messages=prompt_messages + ) + + # Invoke model + model_instance = ModelInstance( + provider_model_bundle=app_orchestration_config.model_config.provider_model_bundle, + model=app_orchestration_config.model_config.model + ) + + invoke_result = model_instance.invoke_llm( + prompt_messages=prompt_messages, + model_parameters=app_orchestration_config.model_config.parameters, + stop=stop, + stream=application_generate_entity.stream, + user=application_generate_entity.user_id, + ) + + # handle invoke result + self._handle_invoke_result( + invoke_result=invoke_result, + queue_manager=queue_manager, + stream=application_generate_entity.stream + ) + + def moderation_for_inputs(self, app_id: str, + tenant_id: str, + app_orchestration_config_entity: AppOrchestrationConfigEntity, + inputs: dict, + query: str) -> Tuple[bool, dict, str]: + """ + Process sensitive_word_avoidance. + :param app_id: app id + :param tenant_id: tenant id + :param app_orchestration_config_entity: app orchestration config entity + :param inputs: inputs + :param query: query + :return: + """ + moderation_feature = ModerationFeature() + return moderation_feature.check( + app_id=app_id, + tenant_id=tenant_id, + app_orchestration_config_entity=app_orchestration_config_entity, + inputs=inputs, + query=query, + ) + + def query_app_annotations_to_reply(self, app_record: App, + message: Message, + query: str, + user_id: str, + invoke_from: InvokeFrom) -> Optional[MessageAnnotation]: + """ + Query app annotations to reply + :param app_record: app record + :param message: message + :param query: query + :param user_id: user id + :param invoke_from: invoke from + :return: + """ + annotation_reply_feature = AnnotationReplyFeature() + return annotation_reply_feature.query( + app_record=app_record, + message=message, + query=query, + user_id=user_id, + invoke_from=invoke_from + ) + + def fill_in_inputs_from_external_data_tools(self, tenant_id: str, + app_id: str, + external_data_tools: list[ExternalDataVariableEntity], + inputs: dict, + query: str) -> dict: + """ + Fill in variable inputs from external data tools if exists. + + :param tenant_id: workspace id + :param app_id: app id + :param external_data_tools: external data tools configs + :param inputs: the inputs + :param query: the query + :return: the filled inputs + """ + external_data_fetch_feature = ExternalDataFetchFeature() + return external_data_fetch_feature.fetch( + tenant_id=tenant_id, + app_id=app_id, + external_data_tools=external_data_tools, + inputs=inputs, + query=query + ) + + def retrieve_dataset_context(self, tenant_id: str, + app_record: App, + queue_manager: ApplicationQueueManager, + model_config: ModelConfigEntity, + dataset_config: DatasetEntity, + show_retrieve_source: bool, + message: Message, + inputs: dict, + query: str, + user_id: str, + invoke_from: InvokeFrom, + memory: Optional[TokenBufferMemory] = None) -> Optional[str]: + """ + Retrieve dataset context + :param tenant_id: tenant id + :param app_record: app record + :param queue_manager: queue manager + :param model_config: model config + :param dataset_config: dataset config + :param show_retrieve_source: show retrieve source + :param message: message + :param inputs: inputs + :param query: query + :param user_id: user id + :param invoke_from: invoke from + :param memory: memory + :return: + """ + hit_callback = DatasetIndexToolCallbackHandler( + queue_manager, + app_record.id, + message.id, + user_id, + invoke_from + ) + + if (app_record.mode == AppMode.COMPLETION.value and dataset_config + and dataset_config.retrieve_config.query_variable): + query = inputs.get(dataset_config.retrieve_config.query_variable, "") + + dataset_retrieval = DatasetRetrievalFeature() + return dataset_retrieval.retrieve( + tenant_id=tenant_id, + model_config=model_config, + config=dataset_config, + query=query, + invoke_from=invoke_from, + show_retrieve_source=show_retrieve_source, + hit_callback=hit_callback, + memory=memory + ) + + def check_hosting_moderation(self, application_generate_entity: ApplicationGenerateEntity, + queue_manager: ApplicationQueueManager, + prompt_messages: list[PromptMessage]) -> bool: + """ + Check hosting moderation + :param application_generate_entity: application generate entity + :param queue_manager: queue manager + :param prompt_messages: prompt messages + :return: + """ + hosting_moderation_feature = HostingModerationFeature() + moderation_result = hosting_moderation_feature.check( + application_generate_entity=application_generate_entity, + prompt_messages=prompt_messages + ) + + if moderation_result: + self.direct_output( + queue_manager=queue_manager, + app_orchestration_config=application_generate_entity.app_orchestration_config_entity, + prompt_messages=prompt_messages, + text="I apologize for any confusion, " \ + "but I'm an AI assistant to be helpful, harmless, and honest.", + stream=application_generate_entity.stream + ) + + return moderation_result diff --git a/api/core/app_runner/generate_task_pipeline.py b/api/core/app_runner/generate_task_pipeline.py new file mode 100644 index 000000000..028125945 --- /dev/null +++ b/api/core/app_runner/generate_task_pipeline.py @@ -0,0 +1,483 @@ +import json +import logging +import time +from typing import Union, Generator, cast, Optional + +from pydantic import BaseModel + +from core.app_runner.moderation_handler import OutputModerationHandler, ModerationRule +from core.entities.application_entities import ApplicationGenerateEntity +from core.application_queue_manager import ApplicationQueueManager +from core.entities.queue_entities import QueueErrorEvent, QueueStopEvent, QueueMessageEndEvent, \ + QueueRetrieverResourcesEvent, QueueAgentThoughtEvent, QueuePingEvent, QueueMessageEvent, QueueMessageReplaceEvent, \ + AnnotationReplyEvent +from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage, LLMResultChunk, LLMResultChunkDelta +from core.model_runtime.entities.message_entities import AssistantPromptMessage, PromptMessageRole, \ + TextPromptMessageContent, PromptMessageContentType, ImagePromptMessageContent, PromptMessage +from core.model_runtime.errors.invoke import InvokeError, InvokeAuthorizationError +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.prompt.prompt_template import PromptTemplateParser +from events.message_event import message_was_created +from extensions.ext_database import db +from models.model import Message, Conversation, MessageAgentThought +from services.annotation_service import AppAnnotationService + +logger = logging.getLogger(__name__) + + +class TaskState(BaseModel): + """ + TaskState entity + """ + llm_result: LLMResult + metadata: dict = {} + + +class GenerateTaskPipeline: + """ + GenerateTaskPipeline is a class that generate stream output and state management for Application. + """ + + def __init__(self, application_generate_entity: ApplicationGenerateEntity, + queue_manager: ApplicationQueueManager, + conversation: Conversation, + message: Message) -> None: + """ + Initialize GenerateTaskPipeline. + :param application_generate_entity: application generate entity + :param queue_manager: queue manager + :param conversation: conversation + :param message: message + """ + self._application_generate_entity = application_generate_entity + self._queue_manager = queue_manager + self._conversation = conversation + self._message = message + self._task_state = TaskState( + llm_result=LLMResult( + model=self._application_generate_entity.app_orchestration_config_entity.model_config.model, + prompt_messages=[], + message=AssistantPromptMessage(content=""), + usage=LLMUsage.empty_usage() + ) + ) + self._start_at = time.perf_counter() + self._output_moderation_handler = self._init_output_moderation() + + def process(self, stream: bool) -> Union[dict, Generator]: + """ + Process generate task pipeline. + :return: + """ + if stream: + return self._process_stream_response() + else: + return self._process_blocking_response() + + def _process_blocking_response(self) -> dict: + """ + Process blocking response. + :return: + """ + for queue_message in self._queue_manager.listen(): + event = queue_message.event + + if isinstance(event, QueueErrorEvent): + raise self._handle_error(event) + elif isinstance(event, QueueRetrieverResourcesEvent): + self._task_state.metadata['retriever_resources'] = event.retriever_resources + elif isinstance(event, AnnotationReplyEvent): + annotation = AppAnnotationService.get_annotation_by_id(event.message_annotation_id) + if annotation: + account = annotation.account + self._task_state.metadata['annotation_reply'] = { + 'id': annotation.id, + 'account': { + 'id': annotation.account_id, + 'name': account.name if account else 'Dify user' + } + } + + self._task_state.llm_result.message.content = annotation.content + elif isinstance(event, (QueueStopEvent, QueueMessageEndEvent)): + if isinstance(event, QueueMessageEndEvent): + self._task_state.llm_result = event.llm_result + else: + model_config = self._application_generate_entity.app_orchestration_config_entity.model_config + model = model_config.model + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + # calculate num tokens + prompt_tokens = 0 + if event.stopped_by != QueueStopEvent.StopBy.ANNOTATION_REPLY: + prompt_tokens = model_type_instance.get_num_tokens( + model, + model_config.credentials, + self._task_state.llm_result.prompt_messages + ) + + completion_tokens = 0 + if event.stopped_by == QueueStopEvent.StopBy.USER_MANUAL: + completion_tokens = model_type_instance.get_num_tokens( + model, + model_config.credentials, + [self._task_state.llm_result.message] + ) + + credentials = model_config.credentials + + # transform usage + self._task_state.llm_result.usage = model_type_instance._calc_response_usage( + model, + credentials, + prompt_tokens, + completion_tokens + ) + + # response moderation + if self._output_moderation_handler: + self._output_moderation_handler.stop_thread() + + self._task_state.llm_result.message.content = self._output_moderation_handler.moderation_completion( + completion=self._task_state.llm_result.message.content, + public_event=False + ) + + # Save message + self._save_message(event.llm_result) + + response = { + 'event': 'message', + 'task_id': self._application_generate_entity.task_id, + 'id': self._message.id, + 'mode': self._conversation.mode, + 'answer': event.llm_result.message.content, + 'metadata': {}, + 'created_at': int(self._message.created_at.timestamp()) + } + + if self._conversation.mode == 'chat': + response['conversation_id'] = self._conversation.id + + if self._task_state.metadata: + response['metadata'] = self._task_state.metadata + + return response + else: + continue + + def _process_stream_response(self) -> Generator: + """ + Process stream response. + :return: + """ + for message in self._queue_manager.listen(): + event = message.event + + if isinstance(event, QueueErrorEvent): + raise self._handle_error(event) + elif isinstance(event, (QueueStopEvent, QueueMessageEndEvent)): + if isinstance(event, QueueMessageEndEvent): + self._task_state.llm_result = event.llm_result + else: + model_config = self._application_generate_entity.app_orchestration_config_entity.model_config + model = model_config.model + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + # calculate num tokens + prompt_tokens = 0 + if event.stopped_by != QueueStopEvent.StopBy.ANNOTATION_REPLY: + prompt_tokens = model_type_instance.get_num_tokens( + model, + model_config.credentials, + self._task_state.llm_result.prompt_messages + ) + + completion_tokens = 0 + if event.stopped_by == QueueStopEvent.StopBy.USER_MANUAL: + completion_tokens = model_type_instance.get_num_tokens( + model, + model_config.credentials, + [self._task_state.llm_result.message] + ) + + credentials = model_config.credentials + + # transform usage + self._task_state.llm_result.usage = model_type_instance._calc_response_usage( + model, + credentials, + prompt_tokens, + completion_tokens + ) + + # response moderation + if self._output_moderation_handler: + self._output_moderation_handler.stop_thread() + + self._task_state.llm_result.message.content = self._output_moderation_handler.moderation_completion( + completion=self._task_state.llm_result.message.content, + public_event=False + ) + + self._output_moderation_handler = None + + replace_response = { + 'event': 'message_replace', + 'task_id': self._application_generate_entity.task_id, + 'message_id': self._message.id, + 'answer': self._task_state.llm_result.message.content, + 'created_at': int(self._message.created_at.timestamp()) + } + + if self._conversation.mode == 'chat': + replace_response['conversation_id'] = self._conversation.id + + yield self._yield_response(replace_response) + + # Save message + self._save_message(self._task_state.llm_result) + + response = { + 'event': 'message_end', + 'task_id': self._application_generate_entity.task_id, + 'id': self._message.id, + } + + if self._conversation.mode == 'chat': + response['conversation_id'] = self._conversation.id + + if self._task_state.metadata: + response['metadata'] = self._task_state.metadata + + yield self._yield_response(response) + elif isinstance(event, QueueRetrieverResourcesEvent): + self._task_state.metadata['retriever_resources'] = event.retriever_resources + elif isinstance(event, AnnotationReplyEvent): + annotation = AppAnnotationService.get_annotation_by_id(event.message_annotation_id) + if annotation: + account = annotation.account + self._task_state.metadata['annotation_reply'] = { + 'id': annotation.id, + 'account': { + 'id': annotation.account_id, + 'name': account.name if account else 'Dify user' + } + } + + self._task_state.llm_result.message.content = annotation.content + elif isinstance(event, QueueAgentThoughtEvent): + agent_thought = ( + db.session.query(MessageAgentThought) + .filter(MessageAgentThought.id == event.agent_thought_id) + .first() + ) + + if agent_thought: + response = { + 'event': 'agent_thought', + 'id': agent_thought.id, + 'task_id': self._application_generate_entity.task_id, + 'message_id': self._message.id, + 'position': agent_thought.position, + 'thought': agent_thought.thought, + 'tool': agent_thought.tool, + 'tool_input': agent_thought.tool_input, + 'created_at': int(self._message.created_at.timestamp()) + } + + if self._conversation.mode == 'chat': + response['conversation_id'] = self._conversation.id + + yield self._yield_response(response) + elif isinstance(event, QueueMessageEvent): + chunk = event.chunk + delta_text = chunk.delta.message.content + if delta_text is None: + continue + + if not self._task_state.llm_result.prompt_messages: + self._task_state.llm_result.prompt_messages = chunk.prompt_messages + + if self._output_moderation_handler: + if self._output_moderation_handler.should_direct_output(): + # stop subscribe new token when output moderation should direct output + self._task_state.llm_result.message.content = self._output_moderation_handler.get_final_output() + self._queue_manager.publish_chunk_message(LLMResultChunk( + model=self._task_state.llm_result.model, + prompt_messages=self._task_state.llm_result.prompt_messages, + delta=LLMResultChunkDelta( + index=0, + message=AssistantPromptMessage(content=self._task_state.llm_result.message.content) + ) + )) + self._queue_manager.publish(QueueStopEvent(stopped_by=QueueStopEvent.StopBy.OUTPUT_MODERATION)) + continue + else: + self._output_moderation_handler.append_new_token(delta_text) + + self._task_state.llm_result.message.content += delta_text + response = self._handle_chunk(delta_text) + yield self._yield_response(response) + elif isinstance(event, QueueMessageReplaceEvent): + response = { + 'event': 'message_replace', + 'task_id': self._application_generate_entity.task_id, + 'message_id': self._message.id, + 'answer': event.text, + 'created_at': int(self._message.created_at.timestamp()) + } + + if self._conversation.mode == 'chat': + response['conversation_id'] = self._conversation.id + + yield self._yield_response(response) + elif isinstance(event, QueuePingEvent): + yield "event: ping\n\n" + else: + continue + + def _save_message(self, llm_result: LLMResult) -> None: + """ + Save message. + :param llm_result: llm result + :return: + """ + usage = llm_result.usage + + self._message = db.session.query(Message).filter(Message.id == self._message.id).first() + + self._message.message = self._prompt_messages_to_prompt_for_saving(self._task_state.llm_result.prompt_messages) + self._message.message_tokens = usage.prompt_tokens + self._message.message_unit_price = usage.prompt_unit_price + self._message.message_price_unit = usage.prompt_price_unit + self._message.answer = PromptTemplateParser.remove_template_variables(llm_result.message.content.strip()) \ + if llm_result.message.content else '' + self._message.answer_tokens = usage.completion_tokens + self._message.answer_unit_price = usage.completion_unit_price + self._message.answer_price_unit = usage.completion_price_unit + self._message.provider_response_latency = time.perf_counter() - self._start_at + self._message.total_price = usage.total_price + + db.session.commit() + + message_was_created.send( + self._message, + application_generate_entity=self._application_generate_entity, + conversation=self._conversation, + is_first_message=self._application_generate_entity.conversation_id is None, + extras=self._application_generate_entity.extras + ) + + def _handle_chunk(self, text: str) -> dict: + """ + Handle completed event. + :param text: text + :return: + """ + response = { + 'event': 'message', + 'id': self._message.id, + 'task_id': self._application_generate_entity.task_id, + 'message_id': self._message.id, + 'answer': text, + 'created_at': int(self._message.created_at.timestamp()) + } + + if self._conversation.mode == 'chat': + response['conversation_id'] = self._conversation.id + + return response + + def _handle_error(self, event: QueueErrorEvent) -> Exception: + """ + Handle error event. + :param event: event + :return: + """ + logger.debug("error: %s", event.error) + e = event.error + + if isinstance(e, InvokeAuthorizationError): + return InvokeAuthorizationError('Incorrect API key provided') + elif isinstance(e, InvokeError) or isinstance(e, ValueError): + return e + else: + return Exception(e.description if getattr(e, 'description', None) is not None else str(e)) + + def _yield_response(self, response: dict) -> str: + """ + Yield response. + :param response: response + :return: + """ + return "data: " + json.dumps(response) + "\n\n" + + def _prompt_messages_to_prompt_for_saving(self, prompt_messages: list[PromptMessage]) -> list[dict]: + """ + Prompt messages to prompt for saving. + :param prompt_messages: prompt messages + :return: + """ + prompts = [] + if self._application_generate_entity.app_orchestration_config_entity.model_config.mode == 'chat': + for prompt_message in prompt_messages: + if prompt_message.role == PromptMessageRole.USER: + role = 'user' + elif prompt_message.role == PromptMessageRole.ASSISTANT: + role = 'assistant' + elif prompt_message.role == PromptMessageRole.SYSTEM: + role = 'system' + else: + continue + + text = '' + files = [] + if isinstance(prompt_message.content, list): + for content in prompt_message.content: + if content.type == PromptMessageContentType.TEXT: + content = cast(TextPromptMessageContent, content) + text += content.data + else: + content = cast(ImagePromptMessageContent, content) + files.append({ + "type": 'image', + "data": content.data[:10] + '...[TRUNCATED]...' + content.data[-10:], + "detail": content.detail.value + }) + else: + text = prompt_message.content + + prompts.append({ + "role": role, + "text": text, + "files": files + }) + else: + prompts.append({ + "role": 'user', + "text": prompt_messages[0].content + }) + + return prompts + + def _init_output_moderation(self) -> Optional[OutputModerationHandler]: + """ + Init output moderation. + :return: + """ + app_orchestration_config_entity = self._application_generate_entity.app_orchestration_config_entity + sensitive_word_avoidance = app_orchestration_config_entity.sensitive_word_avoidance + + if sensitive_word_avoidance: + return OutputModerationHandler( + tenant_id=self._application_generate_entity.tenant_id, + app_id=self._application_generate_entity.app_id, + rule=ModerationRule( + type=sensitive_word_avoidance.type, + config=sensitive_word_avoidance.config + ), + on_message_replace_func=self._queue_manager.publish_message_replace + ) diff --git a/api/core/app_runner/moderation_handler.py b/api/core/app_runner/moderation_handler.py new file mode 100644 index 000000000..c4f2403e7 --- /dev/null +++ b/api/core/app_runner/moderation_handler.py @@ -0,0 +1,138 @@ +import logging +import threading +import time +from typing import Any, Optional, Dict + +from flask import current_app, Flask +from pydantic import BaseModel + +from core.moderation.base import ModerationAction, ModerationOutputsResult +from core.moderation.factory import ModerationFactory + +logger = logging.getLogger(__name__) + + +class ModerationRule(BaseModel): + type: str + config: Dict[str, Any] + + +class OutputModerationHandler(BaseModel): + DEFAULT_BUFFER_SIZE: int = 300 + + tenant_id: str + app_id: str + + rule: ModerationRule + on_message_replace_func: Any + + thread: Optional[threading.Thread] = None + thread_running: bool = True + buffer: str = '' + is_final_chunk: bool = False + final_output: Optional[str] = None + + class Config: + arbitrary_types_allowed = True + + def should_direct_output(self): + return self.final_output is not None + + def get_final_output(self): + return self.final_output + + def append_new_token(self, token: str): + self.buffer += token + + if not self.thread: + self.thread = self.start_thread() + + def moderation_completion(self, completion: str, public_event: bool = False) -> str: + self.buffer = completion + self.is_final_chunk = True + + result = self.moderation( + tenant_id=self.tenant_id, + app_id=self.app_id, + moderation_buffer=completion + ) + + if not result or not result.flagged: + return completion + + if result.action == ModerationAction.DIRECT_OUTPUT: + final_output = result.preset_response + else: + final_output = result.text + + if public_event: + self.on_message_replace_func(final_output) + + return final_output + + def start_thread(self) -> threading.Thread: + buffer_size = int(current_app.config.get('MODERATION_BUFFER_SIZE', self.DEFAULT_BUFFER_SIZE)) + thread = threading.Thread(target=self.worker, kwargs={ + 'flask_app': current_app._get_current_object(), + 'buffer_size': buffer_size if buffer_size > 0 else self.DEFAULT_BUFFER_SIZE + }) + + thread.start() + + return thread + + def stop_thread(self): + if self.thread and self.thread.is_alive(): + self.thread_running = False + + def worker(self, flask_app: Flask, buffer_size: int): + with flask_app.app_context(): + current_length = 0 + while self.thread_running: + moderation_buffer = self.buffer + buffer_length = len(moderation_buffer) + if not self.is_final_chunk: + chunk_length = buffer_length - current_length + if 0 <= chunk_length < buffer_size: + time.sleep(1) + continue + + current_length = buffer_length + + result = self.moderation( + tenant_id=self.tenant_id, + app_id=self.app_id, + moderation_buffer=moderation_buffer + ) + + if not result or not result.flagged: + continue + + if result.action == ModerationAction.DIRECT_OUTPUT: + final_output = result.preset_response + self.final_output = final_output + else: + final_output = result.text + self.buffer[len(moderation_buffer):] + + # trigger replace event + if self.thread_running: + self.on_message_replace_func(final_output) + + if result.action == ModerationAction.DIRECT_OUTPUT: + break + + def moderation(self, tenant_id: str, app_id: str, moderation_buffer: str) -> Optional[ModerationOutputsResult]: + try: + moderation_factory = ModerationFactory( + name=self.rule.type, + app_id=app_id, + tenant_id=tenant_id, + config=self.rule.config + ) + + result: ModerationOutputsResult = moderation_factory.moderation_for_outputs(moderation_buffer) + return result + except Exception as e: + logger.error("Moderation Output error: %s", e) + + return None diff --git a/api/core/application_manager.py b/api/core/application_manager.py new file mode 100644 index 000000000..cad03c710 --- /dev/null +++ b/api/core/application_manager.py @@ -0,0 +1,655 @@ +import json +import logging +import threading +import uuid +from typing import cast, Optional, Any, Union, Generator, Tuple + +from flask import Flask, current_app +from pydantic import ValidationError + +from core.app_runner.agent_app_runner import AgentApplicationRunner +from core.app_runner.basic_app_runner import BasicApplicationRunner +from core.app_runner.generate_task_pipeline import GenerateTaskPipeline +from core.entities.application_entities import ApplicationGenerateEntity, AppOrchestrationConfigEntity, \ + ModelConfigEntity, PromptTemplateEntity, AdvancedChatPromptTemplateEntity, \ + AdvancedCompletionPromptTemplateEntity, ExternalDataVariableEntity, DatasetEntity, DatasetRetrieveConfigEntity, \ + AgentEntity, AgentToolEntity, FileUploadEntity, SensitiveWordAvoidanceEntity, InvokeFrom +from core.entities.model_entities import ModelStatus +from core.file.file_obj import FileObj +from core.errors.error import QuotaExceededError, ProviderTokenNotInitError, ModelCurrentlyNotSupportError +from core.model_runtime.entities.message_entities import PromptMessageRole +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.prompt.prompt_template import PromptTemplateParser +from core.provider_manager import ProviderManager +from core.application_queue_manager import ApplicationQueueManager, ConversationTaskStoppedException +from extensions.ext_database import db +from models.account import Account +from models.model import EndUser, Conversation, Message, MessageFile, App + +logger = logging.getLogger(__name__) + + +class ApplicationManager: + """ + This class is responsible for managing application + """ + + def generate(self, tenant_id: str, + app_id: str, + app_model_config_id: str, + app_model_config_dict: dict, + app_model_config_override: bool, + user: Union[Account, EndUser], + invoke_from: InvokeFrom, + inputs: dict[str, str], + query: Optional[str] = None, + files: Optional[list[FileObj]] = None, + conversation: Optional[Conversation] = None, + stream: bool = False, + extras: Optional[dict[str, Any]] = None) \ + -> Union[dict, Generator]: + """ + Generate App response. + + :param tenant_id: workspace ID + :param app_id: app ID + :param app_model_config_id: app model config id + :param app_model_config_dict: app model config dict + :param app_model_config_override: app model config override + :param user: account or end user + :param invoke_from: invoke from source + :param inputs: inputs + :param query: query + :param files: file obj list + :param conversation: conversation + :param stream: is stream + :param extras: extras + """ + # init task id + task_id = str(uuid.uuid4()) + + # init application generate entity + application_generate_entity = ApplicationGenerateEntity( + task_id=task_id, + tenant_id=tenant_id, + app_id=app_id, + app_model_config_id=app_model_config_id, + app_model_config_dict=app_model_config_dict, + app_orchestration_config_entity=self._convert_from_app_model_config_dict( + tenant_id=tenant_id, + app_model_config_dict=app_model_config_dict + ), + app_model_config_override=app_model_config_override, + conversation_id=conversation.id if conversation else None, + inputs=conversation.inputs if conversation else inputs, + query=query.replace('\x00', '') if query else None, + files=files if files else [], + user_id=user.id, + stream=stream, + invoke_from=invoke_from, + extras=extras + ) + + # init generate records + ( + conversation, + message + ) = self._init_generate_records(application_generate_entity) + + # init queue manager + queue_manager = ApplicationQueueManager( + task_id=application_generate_entity.task_id, + user_id=application_generate_entity.user_id, + invoke_from=application_generate_entity.invoke_from, + conversation_id=conversation.id, + app_mode=conversation.mode, + message_id=message.id + ) + + # new thread + worker_thread = threading.Thread(target=self._generate_worker, kwargs={ + 'flask_app': current_app._get_current_object(), + 'application_generate_entity': application_generate_entity, + 'queue_manager': queue_manager, + 'conversation_id': conversation.id, + 'message_id': message.id, + }) + + worker_thread.start() + + # return response or stream generator + return self._handle_response( + application_generate_entity=application_generate_entity, + queue_manager=queue_manager, + conversation=conversation, + message=message, + stream=stream + ) + + def _generate_worker(self, flask_app: Flask, + application_generate_entity: ApplicationGenerateEntity, + queue_manager: ApplicationQueueManager, + conversation_id: str, + message_id: str) -> None: + """ + Generate worker in a new thread. + :param flask_app: Flask app + :param application_generate_entity: application generate entity + :param queue_manager: queue manager + :param conversation_id: conversation ID + :param message_id: message ID + :return: + """ + with flask_app.app_context(): + try: + # get conversation and message + conversation = self._get_conversation(conversation_id) + message = self._get_message(message_id) + + if application_generate_entity.app_orchestration_config_entity.agent: + # agent app + runner = AgentApplicationRunner() + runner.run( + application_generate_entity=application_generate_entity, + queue_manager=queue_manager, + conversation=conversation, + message=message + ) + else: + # basic app + runner = BasicApplicationRunner() + runner.run( + application_generate_entity=application_generate_entity, + queue_manager=queue_manager, + conversation=conversation, + message=message + ) + except ConversationTaskStoppedException: + pass + except InvokeAuthorizationError: + queue_manager.publish_error(InvokeAuthorizationError('Incorrect API key provided')) + except ValidationError as e: + logger.exception("Validation Error when generating") + queue_manager.publish_error(e) + except (ValueError, InvokeError) as e: + queue_manager.publish_error(e) + except Exception as e: + logger.exception("Unknown Error when generating") + queue_manager.publish_error(e) + finally: + db.session.remove() + + def _handle_response(self, application_generate_entity: ApplicationGenerateEntity, + queue_manager: ApplicationQueueManager, + conversation: Conversation, + message: Message, + stream: bool = False) -> Union[dict, Generator]: + """ + Handle response. + :param application_generate_entity: application generate entity + :param queue_manager: queue manager + :param conversation: conversation + :param message: message + :param stream: is stream + :return: + """ + # init generate task pipeline + generate_task_pipeline = GenerateTaskPipeline( + application_generate_entity=application_generate_entity, + queue_manager=queue_manager, + conversation=conversation, + message=message + ) + + try: + return generate_task_pipeline.process(stream=stream) + except ValueError as e: + if e.args[0] == "I/O operation on closed file.": # ignore this error + raise ConversationTaskStoppedException() + else: + logger.exception(e) + raise e + finally: + db.session.remove() + + def _convert_from_app_model_config_dict(self, tenant_id: str, app_model_config_dict: dict) \ + -> AppOrchestrationConfigEntity: + """ + Convert app model config dict to entity. + :param tenant_id: tenant ID + :param app_model_config_dict: app model config dict + :raises ProviderTokenNotInitError: provider token not init error + :return: app orchestration config entity + """ + properties = {} + + copy_app_model_config_dict = app_model_config_dict.copy() + + provider_manager = ProviderManager() + provider_model_bundle = provider_manager.get_provider_model_bundle( + tenant_id=tenant_id, + provider=copy_app_model_config_dict['model']['provider'], + model_type=ModelType.LLM + ) + + provider_name = provider_model_bundle.configuration.provider.provider + model_name = copy_app_model_config_dict['model']['name'] + + model_type_instance = provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + # check model credentials + model_credentials = provider_model_bundle.configuration.get_current_credentials( + model_type=ModelType.LLM, + model=copy_app_model_config_dict['model']['name'] + ) + + if model_credentials is None: + raise ProviderTokenNotInitError(f"Model {model_name} credentials is not initialized.") + + # check model + provider_model = provider_model_bundle.configuration.get_provider_model( + model=copy_app_model_config_dict['model']['name'], + model_type=ModelType.LLM + ) + + if provider_model is None: + model_name = copy_app_model_config_dict['model']['name'] + raise ValueError(f"Model {model_name} not exist.") + + if provider_model.status == ModelStatus.NO_CONFIGURE: + raise ProviderTokenNotInitError(f"Model {model_name} credentials is not initialized.") + elif provider_model.status == ModelStatus.NO_PERMISSION: + raise ModelCurrentlyNotSupportError(f"Dify Hosted OpenAI {model_name} currently not support.") + elif provider_model.status == ModelStatus.QUOTA_EXCEEDED: + raise QuotaExceededError(f"Model provider {provider_name} quota exceeded.") + + # model config + completion_params = copy_app_model_config_dict['model'].get('completion_params') + stop = [] + if 'stop' in completion_params: + stop = completion_params['stop'] + del completion_params['stop'] + + # get model mode + model_mode = copy_app_model_config_dict['model'].get('mode') + if not model_mode: + mode_enum = model_type_instance.get_model_mode( + model=copy_app_model_config_dict['model']['name'], + credentials=model_credentials + ) + + model_mode = mode_enum.value + + model_schema = model_type_instance.get_model_schema( + copy_app_model_config_dict['model']['name'], + model_credentials + ) + + if not model_schema: + raise ValueError(f"Model {model_name} not exist.") + + properties['model_config'] = ModelConfigEntity( + provider=copy_app_model_config_dict['model']['provider'], + model=copy_app_model_config_dict['model']['name'], + model_schema=model_schema, + mode=model_mode, + provider_model_bundle=provider_model_bundle, + credentials=model_credentials, + parameters=completion_params, + stop=stop, + ) + + # prompt template + prompt_type = PromptTemplateEntity.PromptType.value_of(copy_app_model_config_dict['prompt_type']) + if prompt_type == PromptTemplateEntity.PromptType.SIMPLE: + simple_prompt_template = copy_app_model_config_dict.get("pre_prompt", "") + properties['prompt_template'] = PromptTemplateEntity( + prompt_type=prompt_type, + simple_prompt_template=simple_prompt_template + ) + else: + advanced_chat_prompt_template = None + chat_prompt_config = copy_app_model_config_dict.get("chat_prompt_config", {}) + if chat_prompt_config: + chat_prompt_messages = [] + for message in chat_prompt_config.get("prompt", []): + chat_prompt_messages.append({ + "text": message["text"], + "role": PromptMessageRole.value_of(message["role"]) + }) + + advanced_chat_prompt_template = AdvancedChatPromptTemplateEntity( + messages=chat_prompt_messages + ) + + advanced_completion_prompt_template = None + completion_prompt_config = copy_app_model_config_dict.get("completion_prompt_config", {}) + if completion_prompt_config: + completion_prompt_template_params = { + 'prompt': completion_prompt_config['prompt']['text'], + } + + if 'conversation_histories_role' in completion_prompt_config: + completion_prompt_template_params['role_prefix'] = { + 'user': completion_prompt_config['conversation_histories_role']['user_prefix'], + 'assistant': completion_prompt_config['conversation_histories_role']['assistant_prefix'] + } + + advanced_completion_prompt_template = AdvancedCompletionPromptTemplateEntity( + **completion_prompt_template_params + ) + + properties['prompt_template'] = PromptTemplateEntity( + prompt_type=prompt_type, + advanced_chat_prompt_template=advanced_chat_prompt_template, + advanced_completion_prompt_template=advanced_completion_prompt_template + ) + + # external data variables + properties['external_data_variables'] = [] + external_data_tools = copy_app_model_config_dict.get('external_data_tools', []) + for external_data_tool in external_data_tools: + if 'enabled' not in external_data_tool or not external_data_tool['enabled']: + continue + + properties['external_data_variables'].append( + ExternalDataVariableEntity( + variable=external_data_tool['variable'], + type=external_data_tool['type'], + config=external_data_tool['config'] + ) + ) + + # show retrieve source + show_retrieve_source = False + retriever_resource_dict = copy_app_model_config_dict.get('retriever_resource') + if retriever_resource_dict: + if 'enabled' in retriever_resource_dict and retriever_resource_dict['enabled']: + show_retrieve_source = True + + properties['show_retrieve_source'] = show_retrieve_source + + if 'agent_mode' in copy_app_model_config_dict and copy_app_model_config_dict['agent_mode'] \ + and 'enabled' in copy_app_model_config_dict['agent_mode'] and copy_app_model_config_dict['agent_mode'][ + 'enabled']: + agent_dict = copy_app_model_config_dict.get('agent_mode') + if agent_dict['strategy'] in ['router', 'react_router']: + dataset_ids = [] + for tool in agent_dict.get('tools', []): + key = list(tool.keys())[0] + + if key != 'dataset': + continue + + tool_item = tool[key] + + if "enabled" not in tool_item or not tool_item["enabled"]: + continue + + dataset_id = tool_item['id'] + dataset_ids.append(dataset_id) + + dataset_configs = copy_app_model_config_dict.get('dataset_configs', {'retrieval_model': 'single'}) + query_variable = copy_app_model_config_dict.get('dataset_query_variable') + if dataset_configs['retrieval_model'] == 'single': + properties['dataset'] = DatasetEntity( + dataset_ids=dataset_ids, + retrieve_config=DatasetRetrieveConfigEntity( + query_variable=query_variable, + retrieve_strategy=DatasetRetrieveConfigEntity.RetrieveStrategy.value_of( + dataset_configs['retrieval_model'] + ), + single_strategy=agent_dict['strategy'] + ) + ) + else: + properties['dataset'] = DatasetEntity( + dataset_ids=dataset_ids, + retrieve_config=DatasetRetrieveConfigEntity( + query_variable=query_variable, + retrieve_strategy=DatasetRetrieveConfigEntity.RetrieveStrategy.value_of( + dataset_configs['retrieval_model'] + ), + top_k=dataset_configs.get('top_k'), + score_threshold=dataset_configs.get('score_threshold'), + reranking_model=dataset_configs.get('reranking_model') + ) + ) + else: + if agent_dict['strategy'] == 'react': + strategy = AgentEntity.Strategy.CHAIN_OF_THOUGHT + else: + strategy = AgentEntity.Strategy.FUNCTION_CALLING + + agent_tools = [] + for tool in agent_dict.get('tools', []): + key = list(tool.keys())[0] + tool_item = tool[key] + + agent_tool_properties = { + "tool_id": key + } + + if "enabled" not in tool_item or not tool_item["enabled"]: + continue + + agent_tool_properties["config"] = tool_item + agent_tools.append(AgentToolEntity(**agent_tool_properties)) + + properties['agent'] = AgentEntity( + provider=properties['model_config'].provider, + model=properties['model_config'].model, + strategy=strategy, + tools=agent_tools + ) + + # file upload + file_upload_dict = copy_app_model_config_dict.get('file_upload') + if file_upload_dict: + if 'image' in file_upload_dict and file_upload_dict['image']: + if 'enabled' in file_upload_dict['image'] and file_upload_dict['image']['enabled']: + properties['file_upload'] = FileUploadEntity( + image_config={ + 'number_limits': file_upload_dict['image']['number_limits'], + 'detail': file_upload_dict['image']['detail'], + 'transfer_methods': file_upload_dict['image']['transfer_methods'] + } + ) + + # opening statement + properties['opening_statement'] = copy_app_model_config_dict.get('opening_statement') + + # suggested questions after answer + suggested_questions_after_answer_dict = copy_app_model_config_dict.get('suggested_questions_after_answer') + if suggested_questions_after_answer_dict: + if 'enabled' in suggested_questions_after_answer_dict and suggested_questions_after_answer_dict['enabled']: + properties['suggested_questions_after_answer'] = True + + # more like this + more_like_this_dict = copy_app_model_config_dict.get('more_like_this') + if more_like_this_dict: + if 'enabled' in more_like_this_dict and more_like_this_dict['enabled']: + properties['more_like_this'] = copy_app_model_config_dict.get('opening_statement') + + # speech to text + speech_to_text_dict = copy_app_model_config_dict.get('speech_to_text') + if speech_to_text_dict: + if 'enabled' in speech_to_text_dict and speech_to_text_dict['enabled']: + properties['speech_to_text'] = True + + # sensitive word avoidance + sensitive_word_avoidance_dict = copy_app_model_config_dict.get('sensitive_word_avoidance') + if sensitive_word_avoidance_dict: + if 'enabled' in sensitive_word_avoidance_dict and sensitive_word_avoidance_dict['enabled']: + properties['sensitive_word_avoidance'] = SensitiveWordAvoidanceEntity( + type=sensitive_word_avoidance_dict.get('type'), + config=sensitive_word_avoidance_dict.get('config'), + ) + + return AppOrchestrationConfigEntity(**properties) + + def _init_generate_records(self, application_generate_entity: ApplicationGenerateEntity) \ + -> Tuple[Conversation, Message]: + """ + Initialize generate records + :param application_generate_entity: application generate entity + :return: + """ + app_orchestration_config_entity = application_generate_entity.app_orchestration_config_entity + + model_type_instance = app_orchestration_config_entity.model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + model_schema = model_type_instance.get_model_schema( + model=app_orchestration_config_entity.model_config.model, + credentials=app_orchestration_config_entity.model_config.credentials + ) + + app_record = (db.session.query(App) + .filter(App.id == application_generate_entity.app_id).first()) + + app_mode = app_record.mode + + # get from source + end_user_id = None + account_id = None + if application_generate_entity.invoke_from in [InvokeFrom.WEB_APP, InvokeFrom.SERVICE_API]: + from_source = 'api' + end_user_id = application_generate_entity.user_id + else: + from_source = 'console' + account_id = application_generate_entity.user_id + + override_model_configs = None + if application_generate_entity.app_model_config_override: + override_model_configs = application_generate_entity.app_model_config_dict + + introduction = '' + if app_mode == 'chat': + # get conversation introduction + introduction = self._get_conversation_introduction(application_generate_entity) + + if not application_generate_entity.conversation_id: + conversation = Conversation( + app_id=app_record.id, + app_model_config_id=application_generate_entity.app_model_config_id, + model_provider=app_orchestration_config_entity.model_config.provider, + model_id=app_orchestration_config_entity.model_config.model, + override_model_configs=json.dumps(override_model_configs) if override_model_configs else None, + mode=app_mode, + name='New conversation', + inputs=application_generate_entity.inputs, + introduction=introduction, + system_instruction="", + system_instruction_tokens=0, + status='normal', + from_source=from_source, + from_end_user_id=end_user_id, + from_account_id=account_id, + ) + + db.session.add(conversation) + db.session.commit() + else: + conversation = ( + db.session.query(Conversation) + .filter( + Conversation.id == application_generate_entity.conversation_id, + Conversation.app_id == app_record.id + ).first() + ) + + currency = model_schema.pricing.currency if model_schema.pricing else 'USD' + + message = Message( + app_id=app_record.id, + model_provider=app_orchestration_config_entity.model_config.provider, + model_id=app_orchestration_config_entity.model_config.model, + override_model_configs=json.dumps(override_model_configs) if override_model_configs else None, + conversation_id=conversation.id, + inputs=application_generate_entity.inputs, + query=application_generate_entity.query or "", + message="", + message_tokens=0, + message_unit_price=0, + message_price_unit=0, + answer="", + answer_tokens=0, + answer_unit_price=0, + answer_price_unit=0, + provider_response_latency=0, + total_price=0, + currency=currency, + from_source=from_source, + from_end_user_id=end_user_id, + from_account_id=account_id, + agent_based=app_orchestration_config_entity.agent is not None + ) + + db.session.add(message) + db.session.commit() + + for file in application_generate_entity.files: + message_file = MessageFile( + message_id=message.id, + type=file.type.value, + transfer_method=file.transfer_method.value, + url=file.url, + upload_file_id=file.upload_file_id, + created_by_role=('account' if account_id else 'end_user'), + created_by=account_id or end_user_id, + ) + db.session.add(message_file) + db.session.commit() + + return conversation, message + + def _get_conversation_introduction(self, application_generate_entity: ApplicationGenerateEntity) -> str: + """ + Get conversation introduction + :param application_generate_entity: application generate entity + :return: conversation introduction + """ + app_orchestration_config_entity = application_generate_entity.app_orchestration_config_entity + introduction = app_orchestration_config_entity.opening_statement + + if introduction: + try: + inputs = application_generate_entity.inputs + prompt_template = PromptTemplateParser(template=introduction) + prompt_inputs = {k: inputs[k] for k in prompt_template.variable_keys if k in inputs} + introduction = prompt_template.format(prompt_inputs) + except KeyError: + pass + + return introduction + + def _get_conversation(self, conversation_id: str) -> Conversation: + """ + Get conversation by conversation id + :param conversation_id: conversation id + :return: conversation + """ + conversation = ( + db.session.query(Conversation) + .filter(Conversation.id == conversation_id) + .first() + ) + + return conversation + + def _get_message(self, message_id: str) -> Message: + """ + Get message by message id + :param message_id: message id + :return: message + """ + message = ( + db.session.query(Message) + .filter(Message.id == message_id) + .first() + ) + + return message diff --git a/api/core/application_queue_manager.py b/api/core/application_queue_manager.py new file mode 100644 index 000000000..fd549ff39 --- /dev/null +++ b/api/core/application_queue_manager.py @@ -0,0 +1,228 @@ +import queue +import time +from typing import Generator, Any + +from sqlalchemy.orm import DeclarativeMeta + +from core.entities.application_entities import InvokeFrom +from core.entities.queue_entities import QueueStopEvent, AppQueueEvent, QueuePingEvent, QueueErrorEvent, \ + QueueAgentThoughtEvent, QueueMessageEndEvent, QueueRetrieverResourcesEvent, QueueMessageReplaceEvent, \ + QueueMessageEvent, QueueMessage, AnnotationReplyEvent +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk +from extensions.ext_redis import redis_client +from models.model import MessageAgentThought + + +class ApplicationQueueManager: + def __init__(self, task_id: str, + user_id: str, + invoke_from: InvokeFrom, + conversation_id: str, + app_mode: str, + message_id: str) -> None: + if not user_id: + raise ValueError("user is required") + + self._task_id = task_id + self._user_id = user_id + self._invoke_from = invoke_from + self._conversation_id = str(conversation_id) + self._app_mode = app_mode + self._message_id = str(message_id) + + user_prefix = 'account' if self._invoke_from in [InvokeFrom.EXPLORE, InvokeFrom.DEBUGGER] else 'end-user' + redis_client.setex(ApplicationQueueManager._generate_task_belong_cache_key(self._task_id), 1800, f"{user_prefix}-{self._user_id}") + + q = queue.Queue() + + self._q = q + + def listen(self) -> Generator: + """ + Listen to queue + :return: + """ + # wait for 10 minutes to stop listen + listen_timeout = 600 + start_time = time.time() + last_ping_time = 0 + + while True: + try: + message = self._q.get(timeout=1) + if message is None: + break + + yield message + except queue.Empty: + continue + finally: + elapsed_time = time.time() - start_time + if elapsed_time >= listen_timeout or self._is_stopped(): + # publish two messages to make sure the client can receive the stop signal + # and stop listening after the stop signal processed + self.publish(QueueStopEvent(stopped_by=QueueStopEvent.StopBy.USER_MANUAL)) + self.stop_listen() + + if elapsed_time // 10 > last_ping_time: + self.publish(QueuePingEvent()) + last_ping_time = elapsed_time // 10 + + def stop_listen(self) -> None: + """ + Stop listen to queue + :return: + """ + self._q.put(None) + + def publish_chunk_message(self, chunk: LLMResultChunk) -> None: + """ + Publish chunk message to channel + + :param chunk: chunk + :return: + """ + self.publish(QueueMessageEvent( + chunk=chunk + )) + + def publish_message_replace(self, text: str) -> None: + """ + Publish message replace + :param text: text + :return: + """ + self.publish(QueueMessageReplaceEvent( + text=text + )) + + def publish_retriever_resources(self, retriever_resources: list[dict]) -> None: + """ + Publish retriever resources + :return: + """ + self.publish(QueueRetrieverResourcesEvent(retriever_resources=retriever_resources)) + + def publish_annotation_reply(self, message_annotation_id: str) -> None: + """ + Publish annotation reply + :param message_annotation_id: message annotation id + :return: + """ + self.publish(AnnotationReplyEvent(message_annotation_id=message_annotation_id)) + + def publish_message_end(self, llm_result: LLMResult) -> None: + """ + Publish message end + :param llm_result: llm result + :return: + """ + self.publish(QueueMessageEndEvent(llm_result=llm_result)) + self.stop_listen() + + def publish_agent_thought(self, message_agent_thought: MessageAgentThought) -> None: + """ + Publish agent thought + :param message_agent_thought: message agent thought + :return: + """ + self.publish(QueueAgentThoughtEvent( + agent_thought_id=message_agent_thought.id + )) + + def publish_error(self, e) -> None: + """ + Publish error + :param e: error + :return: + """ + self.publish(QueueErrorEvent( + error=e + )) + self.stop_listen() + + def publish(self, event: AppQueueEvent) -> None: + """ + Publish event to queue + :param event: + :return: + """ + self._check_for_sqlalchemy_models(event.dict()) + + message = QueueMessage( + task_id=self._task_id, + message_id=self._message_id, + conversation_id=self._conversation_id, + app_mode=self._app_mode, + event=event + ) + + self._q.put(message) + + if isinstance(event, QueueStopEvent): + self.stop_listen() + + @classmethod + def set_stop_flag(cls, task_id: str, invoke_from: InvokeFrom, user_id: str) -> None: + """ + Set task stop flag + :return: + """ + result = redis_client.get(cls._generate_task_belong_cache_key(task_id)) + if result is None: + return + + user_prefix = 'account' if invoke_from in [InvokeFrom.EXPLORE, InvokeFrom.DEBUGGER] else 'end-user' + if result != f"{user_prefix}-{user_id}": + return + + stopped_cache_key = cls._generate_stopped_cache_key(task_id) + redis_client.setex(stopped_cache_key, 600, 1) + + def _is_stopped(self) -> bool: + """ + Check if task is stopped + :return: + """ + stopped_cache_key = ApplicationQueueManager._generate_stopped_cache_key(self._task_id) + result = redis_client.get(stopped_cache_key) + if result is not None: + redis_client.delete(stopped_cache_key) + return True + + return False + + @classmethod + def _generate_task_belong_cache_key(cls, task_id: str) -> str: + """ + Generate task belong cache key + :param task_id: task id + :return: + """ + return f"generate_task_belong:{task_id}" + + @classmethod + def _generate_stopped_cache_key(cls, task_id: str) -> str: + """ + Generate stopped cache key + :param task_id: task id + :return: + """ + return f"generate_task_stopped:{task_id}" + + def _check_for_sqlalchemy_models(self, data: Any): + # from entity to dict or list + if isinstance(data, dict): + for key, value in data.items(): + self._check_for_sqlalchemy_models(value) + elif isinstance(data, list): + for item in data: + self._check_for_sqlalchemy_models(item) + else: + if isinstance(data, DeclarativeMeta) or hasattr(data, '_sa_instance_state'): + raise TypeError("Critical Error: Passing SQLAlchemy Model instances " + "that cause thread safety issues is not allowed.") + + +class ConversationTaskStoppedException(Exception): + pass diff --git a/api/core/callback_handler/agent_loop_gather_callback_handler.py b/api/core/callback_handler/agent_loop_gather_callback_handler.py index 218a9e4e0..ec2964f2a 100644 --- a/api/core/callback_handler/agent_loop_gather_callback_handler.py +++ b/api/core/callback_handler/agent_loop_gather_callback_handler.py @@ -2,30 +2,40 @@ import json import logging import time -from typing import Any, Dict, List, Union, Optional +from typing import Any, Dict, List, Union, Optional, cast from langchain.agents import openai_functions_agent, openai_functions_multi_agent from langchain.callbacks.base import BaseCallbackHandler from langchain.schema import AgentAction, AgentFinish, LLMResult, ChatGeneration, BaseMessage +from core.application_queue_manager import ApplicationQueueManager from core.callback_handler.entity.agent_loop import AgentLoop -from core.conversation_message_task import ConversationMessageTask -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.llm.base import BaseLLM +from core.entities.application_entities import ModelConfigEntity +from core.model_runtime.entities.llm_entities import LLMResult as RuntimeLLMResult +from core.model_runtime.entities.message_entities import UserPromptMessage, AssistantPromptMessage, PromptMessage +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from extensions.ext_database import db +from models.model import MessageChain, MessageAgentThought, Message class AgentLoopGatherCallbackHandler(BaseCallbackHandler): """Callback Handler that prints to std out.""" raise_error: bool = True - def __init__(self, model_instance: BaseLLM, conversation_message_task: ConversationMessageTask) -> None: + def __init__(self, model_config: ModelConfigEntity, + queue_manager: ApplicationQueueManager, + message: Message, + message_chain: MessageChain) -> None: """Initialize callback handler.""" - self.model_instance = model_instance - self.conversation_message_task = conversation_message_task + self.model_config = model_config + self.queue_manager = queue_manager + self.message = message + self.message_chain = message_chain + model_type_instance = self.model_config.provider_model_bundle.model_type_instance + self.model_type_instance = cast(LargeLanguageModel, model_type_instance) self._agent_loops = [] self._current_loop = None self._message_agent_thought = None - self.current_chain = None @property def agent_loops(self) -> List[AgentLoop]: @@ -46,65 +56,60 @@ class AgentLoopGatherCallbackHandler(BaseCallbackHandler): """Whether to ignore chain callbacks.""" return True + def on_llm_before_invoke(self, prompt_messages: list[PromptMessage]) -> None: + if not self._current_loop: + # Agent start with a LLM query + self._current_loop = AgentLoop( + position=len(self._agent_loops) + 1, + prompt="\n".join([prompt_message.content for prompt_message in prompt_messages]), + status='llm_started', + started_at=time.perf_counter() + ) + + def on_llm_after_invoke(self, result: RuntimeLLMResult) -> None: + if self._current_loop and self._current_loop.status == 'llm_started': + self._current_loop.status = 'llm_end' + if result.usage: + self._current_loop.prompt_tokens = result.usage.prompt_tokens + else: + self._current_loop.prompt_tokens = self.model_type_instance.get_num_tokens( + model=self.model_config.model, + credentials=self.model_config.credentials, + prompt_messages=[UserPromptMessage(content=self._current_loop.prompt)] + ) + + completion_message = result.message + if completion_message.tool_calls: + self._current_loop.completion \ + = json.dumps({'function_call': completion_message.tool_calls}) + else: + self._current_loop.completion = completion_message.content + + if result.usage: + self._current_loop.completion_tokens = result.usage.completion_tokens + else: + self._current_loop.completion_tokens = self.model_type_instance.get_num_tokens( + model=self.model_config.model, + credentials=self.model_config.credentials, + prompt_messages=[AssistantPromptMessage(content=self._current_loop.completion)] + ) + def on_chat_model_start( self, serialized: Dict[str, Any], messages: List[List[BaseMessage]], **kwargs: Any ) -> Any: - if not self._current_loop: - # Agent start with a LLM query - self._current_loop = AgentLoop( - position=len(self._agent_loops) + 1, - prompt="\n".join([message.content for message in messages[0]]), - status='llm_started', - started_at=time.perf_counter() - ) + pass def on_llm_start( self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any ) -> None: - """Print out the prompts.""" - # serialized={'name': 'OpenAI'} - # prompts=['Answer the following questions...\nThought:'] - # kwargs={} - if not self._current_loop: - # Agent start with a LLM query - self._current_loop = AgentLoop( - position=len(self._agent_loops) + 1, - prompt=prompts[0], - status='llm_started', - started_at=time.perf_counter() - ) + pass def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: """Do nothing.""" - # kwargs={} - if self._current_loop and self._current_loop.status == 'llm_started': - self._current_loop.status = 'llm_end' - if response.llm_output: - self._current_loop.prompt_tokens = response.llm_output['token_usage']['prompt_tokens'] - else: - self._current_loop.prompt_tokens = self.model_instance.get_num_tokens( - [PromptMessage(content=self._current_loop.prompt)] - ) - completion_generation = response.generations[0][0] - if isinstance(completion_generation, ChatGeneration): - completion_message = completion_generation.message - if 'function_call' in completion_message.additional_kwargs: - self._current_loop.completion \ - = json.dumps({'function_call': completion_message.additional_kwargs['function_call']}) - else: - self._current_loop.completion = response.generations[0][0].text - else: - self._current_loop.completion = completion_generation.text - - if response.llm_output: - self._current_loop.completion_tokens = response.llm_output['token_usage']['completion_tokens'] - else: - self._current_loop.completion_tokens = self.model_instance.get_num_tokens( - [PromptMessage(content=self._current_loop.completion)] - ) + pass def on_llm_error( self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any @@ -150,10 +155,7 @@ class AgentLoopGatherCallbackHandler(BaseCallbackHandler): if completion is not None: self._current_loop.completion = completion - self._message_agent_thought = self.conversation_message_task.on_agent_start( - self.current_chain, - self._current_loop - ) + self._message_agent_thought = self._init_agent_thought() def on_tool_end( self, @@ -176,9 +178,7 @@ class AgentLoopGatherCallbackHandler(BaseCallbackHandler): self._current_loop.completed_at = time.perf_counter() self._current_loop.latency = self._current_loop.completed_at - self._current_loop.started_at - self.conversation_message_task.on_agent_end( - self._message_agent_thought, self.model_instance, self._current_loop - ) + self._complete_agent_thought(self._message_agent_thought) self._agent_loops.append(self._current_loop) self._current_loop = None @@ -202,17 +202,62 @@ class AgentLoopGatherCallbackHandler(BaseCallbackHandler): self._current_loop.completed_at = time.perf_counter() self._current_loop.latency = self._current_loop.completed_at - self._current_loop.started_at self._current_loop.thought = '[DONE]' - self._message_agent_thought = self.conversation_message_task.on_agent_start( - self.current_chain, - self._current_loop - ) + self._message_agent_thought = self._init_agent_thought() - self.conversation_message_task.on_agent_end( - self._message_agent_thought, self.model_instance, self._current_loop - ) + self._complete_agent_thought(self._message_agent_thought) self._agent_loops.append(self._current_loop) self._current_loop = None self._message_agent_thought = None elif not self._current_loop and self._agent_loops: self._agent_loops[-1].status = 'agent_finish' + + def _init_agent_thought(self) -> MessageAgentThought: + message_agent_thought = MessageAgentThought( + message_id=self.message.id, + message_chain_id=self.message_chain.id, + position=self._current_loop.position, + thought=self._current_loop.thought, + tool=self._current_loop.tool_name, + tool_input=self._current_loop.tool_input, + message=self._current_loop.prompt, + message_price_unit=0, + answer=self._current_loop.completion, + answer_price_unit=0, + created_by_role=('account' if self.message.from_source == 'console' else 'end_user'), + created_by=(self.message.from_account_id + if self.message.from_source == 'console' else self.message.from_end_user_id) + ) + + db.session.add(message_agent_thought) + db.session.commit() + + self.queue_manager.publish_agent_thought(message_agent_thought) + + return message_agent_thought + + def _complete_agent_thought(self, message_agent_thought: MessageAgentThought) -> None: + loop_message_tokens = self._current_loop.prompt_tokens + loop_answer_tokens = self._current_loop.completion_tokens + + # transform usage + llm_usage = self.model_type_instance._calc_response_usage( + self.model_config.model, + self.model_config.credentials, + loop_message_tokens, + loop_answer_tokens + ) + + message_agent_thought.observation = self._current_loop.tool_output + message_agent_thought.tool_process_data = '' # currently not support + message_agent_thought.message_token = loop_message_tokens + message_agent_thought.message_unit_price = llm_usage.prompt_unit_price + message_agent_thought.message_price_unit = llm_usage.prompt_price_unit + message_agent_thought.answer_token = loop_answer_tokens + message_agent_thought.answer_unit_price = llm_usage.completion_unit_price + message_agent_thought.answer_price_unit = llm_usage.completion_price_unit + message_agent_thought.latency = self._current_loop.latency + message_agent_thought.tokens = self._current_loop.prompt_tokens + self._current_loop.completion_tokens + message_agent_thought.total_price = llm_usage.total_price + message_agent_thought.currency = llm_usage.currency + db.session.commit() diff --git a/api/core/callback_handler/dataset_tool_callback_handler.py b/api/core/callback_handler/dataset_tool_callback_handler.py deleted file mode 100644 index b1f9b8c60..000000000 --- a/api/core/callback_handler/dataset_tool_callback_handler.py +++ /dev/null @@ -1,74 +0,0 @@ -import json -import logging -from json import JSONDecodeError - -from typing import Any, Dict, List, Union, Optional - -from langchain.callbacks.base import BaseCallbackHandler - -from core.callback_handler.entity.dataset_query import DatasetQueryObj -from core.conversation_message_task import ConversationMessageTask - - -class DatasetToolCallbackHandler(BaseCallbackHandler): - """Callback Handler that prints to std out.""" - raise_error: bool = True - - def __init__(self, conversation_message_task: ConversationMessageTask) -> None: - """Initialize callback handler.""" - self.queries = [] - self.conversation_message_task = conversation_message_task - - @property - def always_verbose(self) -> bool: - """Whether to call verbose callbacks even if verbose is False.""" - return True - - @property - def ignore_llm(self) -> bool: - """Whether to ignore LLM callbacks.""" - return True - - @property - def ignore_chain(self) -> bool: - """Whether to ignore chain callbacks.""" - return True - - @property - def ignore_agent(self) -> bool: - """Whether to ignore agent callbacks.""" - return False - - def on_tool_start( - self, - serialized: Dict[str, Any], - input_str: str, - **kwargs: Any, - ) -> None: - tool_name: str = serialized.get('name') - dataset_id = tool_name.removeprefix('dataset-') - - try: - input_dict = json.loads(input_str.replace("'", "\"")) - query = input_dict.get('query') - except JSONDecodeError: - query = input_str - - self.conversation_message_task.on_dataset_query_end(DatasetQueryObj(dataset_id=dataset_id, query=query)) - - def on_tool_end( - self, - output: str, - color: Optional[str] = None, - observation_prefix: Optional[str] = None, - llm_prefix: Optional[str] = None, - **kwargs: Any, - ) -> None: - pass - - - def on_tool_error( - self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any - ) -> None: - """Do nothing.""" - logging.debug("Dataset tool on_llm_error: %s", error) diff --git a/api/core/callback_handler/entity/chain_result.py b/api/core/callback_handler/entity/chain_result.py deleted file mode 100644 index 596486cdb..000000000 --- a/api/core/callback_handler/entity/chain_result.py +++ /dev/null @@ -1,16 +0,0 @@ -from pydantic import BaseModel - - -class ChainResult(BaseModel): - type: str = None - prompt: dict = None - completion: dict = None - - status: str = 'chain_started' - completed: bool = False - - started_at: float = None - completed_at: float = None - - agent_result: dict = None - """only when type is 'AgentExecutor'""" diff --git a/api/core/callback_handler/entity/dataset_query.py b/api/core/callback_handler/entity/dataset_query.py deleted file mode 100644 index 23705e55a..000000000 --- a/api/core/callback_handler/entity/dataset_query.py +++ /dev/null @@ -1,6 +0,0 @@ -from pydantic import BaseModel - - -class DatasetQueryObj(BaseModel): - dataset_id: str = None - query: str = None diff --git a/api/core/callback_handler/entity/llm_message.py b/api/core/callback_handler/entity/llm_message.py deleted file mode 100644 index 61967340c..000000000 --- a/api/core/callback_handler/entity/llm_message.py +++ /dev/null @@ -1,8 +0,0 @@ -from pydantic import BaseModel - - -class LLMMessage(BaseModel): - prompt: str = '' - prompt_tokens: int = 0 - completion: str = '' - completion_tokens: int = 0 diff --git a/api/core/callback_handler/index_tool_callback_handler.py b/api/core/callback_handler/index_tool_callback_handler.py index ec91d6729..bfd305e2f 100644 --- a/api/core/callback_handler/index_tool_callback_handler.py +++ b/api/core/callback_handler/index_tool_callback_handler.py @@ -1,17 +1,44 @@ -from typing import List +from typing import List, Union from langchain.schema import Document -from core.conversation_message_task import ConversationMessageTask +from core.application_queue_manager import ApplicationQueueManager +from core.entities.application_entities import InvokeFrom from extensions.ext_database import db -from models.dataset import DocumentSegment +from models.dataset import DocumentSegment, DatasetQuery +from models.model import DatasetRetrieverResource class DatasetIndexToolCallbackHandler: """Callback handler for dataset tool.""" - def __init__(self, conversation_message_task: ConversationMessageTask) -> None: - self.conversation_message_task = conversation_message_task + def __init__(self, queue_manager: ApplicationQueueManager, + app_id: str, + message_id: str, + user_id: str, + invoke_from: InvokeFrom) -> None: + self._queue_manager = queue_manager + self._app_id = app_id + self._message_id = message_id + self._user_id = user_id + self._invoke_from = invoke_from + + def on_query(self, query: str, dataset_id: str) -> None: + """ + Handle query. + """ + dataset_query = DatasetQuery( + dataset_id=dataset_id, + content=query, + source='app', + source_app_id=self._app_id, + created_by_role=('account' + if self._invoke_from in [InvokeFrom.EXPLORE, InvokeFrom.DEBUGGER] else 'end_user'), + created_by=self._user_id + ) + + db.session.add(dataset_query) + db.session.commit() def on_tool_end(self, documents: List[Document]) -> None: """Handle tool end.""" @@ -30,4 +57,27 @@ class DatasetIndexToolCallbackHandler: def return_retriever_resource_info(self, resource: List): """Handle return_retriever_resource_info.""" - self.conversation_message_task.on_dataset_query_finish(resource) + if resource and len(resource) > 0: + for item in resource: + dataset_retriever_resource = DatasetRetrieverResource( + message_id=self._message_id, + position=item.get('position'), + dataset_id=item.get('dataset_id'), + dataset_name=item.get('dataset_name'), + document_id=item.get('document_id'), + document_name=item.get('document_name'), + data_source_type=item.get('data_source_type'), + segment_id=item.get('segment_id'), + score=item.get('score') if 'score' in item else None, + hit_count=item.get('hit_count') if 'hit_count' else None, + word_count=item.get('word_count') if 'word_count' in item else None, + segment_position=item.get('segment_position') if 'segment_position' in item else None, + index_node_hash=item.get('index_node_hash') if 'index_node_hash' in item else None, + content=item.get('content'), + retriever_from=item.get('retriever_from'), + created_by=self._user_id + ) + db.session.add(dataset_retriever_resource) + db.session.commit() + + self._queue_manager.publish_retriever_resources(resource) diff --git a/api/core/callback_handler/llm_callback_handler.py b/api/core/callback_handler/llm_callback_handler.py deleted file mode 100644 index 8cd8c693d..000000000 --- a/api/core/callback_handler/llm_callback_handler.py +++ /dev/null @@ -1,284 +0,0 @@ -import logging -import threading -import time -from typing import Any, Dict, List, Union, Optional - -from flask import Flask, current_app -from langchain.callbacks.base import BaseCallbackHandler -from langchain.schema import LLMResult, BaseMessage -from pydantic import BaseModel - -from core.callback_handler.entity.llm_message import LLMMessage -from core.conversation_message_task import ConversationMessageTask, ConversationTaskStoppedException, \ - ConversationTaskInterruptException -from core.model_providers.models.entity.message import to_prompt_messages, PromptMessage, LCHumanMessageWithFiles, \ - ImagePromptMessageFile -from core.model_providers.models.llm.base import BaseLLM -from core.moderation.base import ModerationOutputsResult, ModerationAction -from core.moderation.factory import ModerationFactory - - -class ModerationRule(BaseModel): - type: str - config: Dict[str, Any] - - -class LLMCallbackHandler(BaseCallbackHandler): - raise_error: bool = True - - def __init__(self, model_instance: BaseLLM, - conversation_message_task: ConversationMessageTask): - self.model_instance = model_instance - self.llm_message = LLMMessage() - self.start_at = None - self.conversation_message_task = conversation_message_task - - self.output_moderation_handler = None - self.init_output_moderation() - - def init_output_moderation(self): - app_model_config = self.conversation_message_task.app_model_config - sensitive_word_avoidance_dict = app_model_config.sensitive_word_avoidance_dict - - if sensitive_word_avoidance_dict and sensitive_word_avoidance_dict.get("enabled"): - self.output_moderation_handler = OutputModerationHandler( - tenant_id=self.conversation_message_task.tenant_id, - app_id=self.conversation_message_task.app.id, - rule=ModerationRule( - type=sensitive_word_avoidance_dict.get("type"), - config=sensitive_word_avoidance_dict.get("config") - ), - on_message_replace_func=self.conversation_message_task.on_message_replace - ) - - @property - def always_verbose(self) -> bool: - """Whether to call verbose callbacks even if verbose is False.""" - return True - - def on_chat_model_start( - self, - serialized: Dict[str, Any], - messages: List[List[BaseMessage]], - **kwargs: Any - ) -> Any: - real_prompts = [] - for message in messages[0]: - if message.type == 'human': - role = 'user' - elif message.type == 'ai': - role = 'assistant' - else: - role = 'system' - - real_prompts.append({ - "role": role, - "text": message.content, - "files": [{ - "type": file.type.value, - "data": file.data[:10] + '...[TRUNCATED]...' + file.data[-10:], - "detail": file.detail.value if isinstance(file, ImagePromptMessageFile) else None, - } for file in (message.files if isinstance(message, LCHumanMessageWithFiles) else [])] - }) - - self.llm_message.prompt = real_prompts - self.llm_message.prompt_tokens = self.model_instance.get_num_tokens(to_prompt_messages(messages[0])) - - def on_llm_start( - self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any - ) -> None: - self.llm_message.prompt = [{ - "role": 'user', - "text": prompts[0] - }] - - self.llm_message.prompt_tokens = self.model_instance.get_num_tokens([PromptMessage(content=prompts[0])]) - - def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: - if self.output_moderation_handler: - self.output_moderation_handler.stop_thread() - - self.llm_message.completion = self.output_moderation_handler.moderation_completion( - completion=response.generations[0][0].text, - public_event=True if self.conversation_message_task.streaming else False - ) - else: - self.llm_message.completion = response.generations[0][0].text - - if not self.conversation_message_task.streaming: - self.conversation_message_task.append_message_text(self.llm_message.completion) - - if response.llm_output and 'token_usage' in response.llm_output: - if 'prompt_tokens' in response.llm_output['token_usage']: - self.llm_message.prompt_tokens = response.llm_output['token_usage']['prompt_tokens'] - - if 'completion_tokens' in response.llm_output['token_usage']: - self.llm_message.completion_tokens = response.llm_output['token_usage']['completion_tokens'] - else: - self.llm_message.completion_tokens = self.model_instance.get_num_tokens( - [PromptMessage(content=self.llm_message.completion)]) - else: - self.llm_message.completion_tokens = self.model_instance.get_num_tokens( - [PromptMessage(content=self.llm_message.completion)]) - - self.conversation_message_task.save_message(self.llm_message) - - def on_llm_new_token(self, token: str, **kwargs: Any) -> None: - if self.output_moderation_handler and self.output_moderation_handler.should_direct_output(): - # stop subscribe new token when output moderation should direct output - ex = ConversationTaskInterruptException() - self.on_llm_error(error=ex) - raise ex - - try: - self.conversation_message_task.append_message_text(token) - self.llm_message.completion += token - - if self.output_moderation_handler: - self.output_moderation_handler.append_new_token(token) - except ConversationTaskStoppedException as ex: - self.on_llm_error(error=ex) - raise ex - - def on_llm_error( - self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any - ) -> None: - """Do nothing.""" - if self.output_moderation_handler: - self.output_moderation_handler.stop_thread() - - if isinstance(error, ConversationTaskStoppedException): - if self.conversation_message_task.streaming: - self.llm_message.completion_tokens = self.model_instance.get_num_tokens( - [PromptMessage(content=self.llm_message.completion)] - ) - self.conversation_message_task.save_message(llm_message=self.llm_message, by_stopped=True) - if isinstance(error, ConversationTaskInterruptException): - self.llm_message.completion = self.output_moderation_handler.get_final_output() - self.llm_message.completion_tokens = self.model_instance.get_num_tokens( - [PromptMessage(content=self.llm_message.completion)] - ) - self.conversation_message_task.save_message(llm_message=self.llm_message) - else: - logging.debug("on_llm_error: %s", error) - - -class OutputModerationHandler(BaseModel): - DEFAULT_BUFFER_SIZE: int = 300 - - tenant_id: str - app_id: str - - rule: ModerationRule - on_message_replace_func: Any - - thread: Optional[threading.Thread] = None - thread_running: bool = True - buffer: str = '' - is_final_chunk: bool = False - final_output: Optional[str] = None - - class Config: - arbitrary_types_allowed = True - - def should_direct_output(self): - return self.final_output is not None - - def get_final_output(self): - return self.final_output - - def append_new_token(self, token: str): - self.buffer += token - - if not self.thread: - self.thread = self.start_thread() - - def moderation_completion(self, completion: str, public_event: bool = False) -> str: - self.buffer = completion - self.is_final_chunk = True - - result = self.moderation( - tenant_id=self.tenant_id, - app_id=self.app_id, - moderation_buffer=completion - ) - - if not result or not result.flagged: - return completion - - if result.action == ModerationAction.DIRECT_OUTPUT: - final_output = result.preset_response - else: - final_output = result.text - - if public_event: - self.on_message_replace_func(final_output) - - return final_output - - def start_thread(self) -> threading.Thread: - buffer_size = int(current_app.config.get('MODERATION_BUFFER_SIZE', self.DEFAULT_BUFFER_SIZE)) - thread = threading.Thread(target=self.worker, kwargs={ - 'flask_app': current_app._get_current_object(), - 'buffer_size': buffer_size if buffer_size > 0 else self.DEFAULT_BUFFER_SIZE - }) - - thread.start() - - return thread - - def stop_thread(self): - if self.thread and self.thread.is_alive(): - self.thread_running = False - - def worker(self, flask_app: Flask, buffer_size: int): - with flask_app.app_context(): - current_length = 0 - while self.thread_running: - moderation_buffer = self.buffer - buffer_length = len(moderation_buffer) - if not self.is_final_chunk: - chunk_length = buffer_length - current_length - if 0 <= chunk_length < buffer_size: - time.sleep(1) - continue - - current_length = buffer_length - - result = self.moderation( - tenant_id=self.tenant_id, - app_id=self.app_id, - moderation_buffer=moderation_buffer - ) - - if not result or not result.flagged: - continue - - if result.action == ModerationAction.DIRECT_OUTPUT: - final_output = result.preset_response - self.final_output = final_output - else: - final_output = result.text + self.buffer[len(moderation_buffer):] - - # trigger replace event - if self.thread_running: - self.on_message_replace_func(final_output) - - if result.action == ModerationAction.DIRECT_OUTPUT: - break - - def moderation(self, tenant_id: str, app_id: str, moderation_buffer: str) -> Optional[ModerationOutputsResult]: - try: - moderation_factory = ModerationFactory( - name=self.rule.type, - app_id=app_id, - tenant_id=tenant_id, - config=self.rule.config - ) - - result: ModerationOutputsResult = moderation_factory.moderation_for_outputs(moderation_buffer) - return result - except Exception as e: - logging.error("Moderation Output error: %s", e) - - return None diff --git a/api/core/callback_handler/main_chain_gather_callback_handler.py b/api/core/callback_handler/main_chain_gather_callback_handler.py deleted file mode 100644 index aef7fb36a..000000000 --- a/api/core/callback_handler/main_chain_gather_callback_handler.py +++ /dev/null @@ -1,76 +0,0 @@ -import logging -import time - -from typing import Any, Dict, Union - -from langchain.callbacks.base import BaseCallbackHandler - -from core.callback_handler.entity.chain_result import ChainResult -from core.conversation_message_task import ConversationMessageTask - - -class MainChainGatherCallbackHandler(BaseCallbackHandler): - """Callback Handler that prints to std out.""" - raise_error: bool = True - - def __init__(self, conversation_message_task: ConversationMessageTask) -> None: - """Initialize callback handler.""" - self._current_chain_result = None - self._current_chain_message = None - self.conversation_message_task = conversation_message_task - self.agent_callback = None - - def clear_chain_results(self) -> None: - self._current_chain_result = None - self._current_chain_message = None - if self.agent_callback: - self.agent_callback.current_chain = None - - @property - def always_verbose(self) -> bool: - """Whether to call verbose callbacks even if verbose is False.""" - return True - - @property - def ignore_llm(self) -> bool: - """Whether to ignore LLM callbacks.""" - return True - - @property - def ignore_agent(self) -> bool: - """Whether to ignore agent callbacks.""" - return True - - def on_chain_start( - self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any - ) -> None: - """Print out that we are entering a chain.""" - if not self._current_chain_result: - chain_type = serialized['id'][-1] - if chain_type: - self._current_chain_result = ChainResult( - type=chain_type, - prompt=inputs, - started_at=time.perf_counter() - ) - self._current_chain_message = self.conversation_message_task.init_chain(self._current_chain_result) - if self.agent_callback: - self.agent_callback.current_chain = self._current_chain_message - - def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None: - """Print out that we finished a chain.""" - if self._current_chain_result and self._current_chain_result.status == 'chain_started': - self._current_chain_result.status = 'chain_ended' - self._current_chain_result.completion = outputs - self._current_chain_result.completed = True - self._current_chain_result.completed_at = time.perf_counter() - - self.conversation_message_task.on_chain_end(self._current_chain_message, self._current_chain_result) - - self.clear_chain_results() - - def on_chain_error( - self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any - ) -> None: - logging.debug("Dataset tool on_chain_error: %s", error) - self.clear_chain_results() diff --git a/api/core/callback_handler/std_out_callback_handler.py b/api/core/callback_handler/std_out_callback_handler.py index e0ff7950e..750d9d739 100644 --- a/api/core/callback_handler/std_out_callback_handler.py +++ b/api/core/callback_handler/std_out_callback_handler.py @@ -79,8 +79,11 @@ class DifyStdOutCallbackHandler(BaseCallbackHandler): """Run on agent action.""" tool = action.tool tool_input = action.tool_input - action_name_position = action.log.index("\nAction:") + 1 if action.log else -1 - thought = action.log[:action_name_position].strip() if action.log else '' + try: + action_name_position = action.log.index("\nAction:") + 1 if action.log else -1 + thought = action.log[:action_name_position].strip() if action.log else '' + except ValueError: + thought = '' log = f"Thought: {thought}\nTool: {tool}\nTool Input: {tool_input}" print_text("\n[on_agent_action]\n" + log + "\n", color='green') diff --git a/api/core/chain/llm_chain.py b/api/core/chain/llm_chain.py index 2a5b4b61a..4939ad9b1 100644 --- a/api/core/chain/llm_chain.py +++ b/api/core/chain/llm_chain.py @@ -5,15 +5,19 @@ from langchain.callbacks.manager import CallbackManagerForChainRun from langchain.schema import LLMResult, Generation from langchain.schema.language_model import BaseLanguageModel -from core.model_providers.models.entity.message import to_prompt_messages -from core.model_providers.models.llm.base import BaseLLM +from core.agent.agent.agent_llm_callback import AgentLLMCallback +from core.entities.application_entities import ModelConfigEntity +from core.model_manager import ModelInstance +from core.entities.message_entities import lc_messages_to_prompt_messages from core.third_party.langchain.llms.fake import FakeLLM class LLMChain(LCLLMChain): - model_instance: BaseLLM + model_config: ModelConfigEntity """The language model instance to use.""" llm: BaseLanguageModel = FakeLLM(response="") + parameters: Dict[str, Any] = {} + agent_llm_callback: Optional[AgentLLMCallback] = None def generate( self, @@ -23,14 +27,23 @@ class LLMChain(LCLLMChain): """Generate LLM result from inputs.""" prompts, stop = self.prep_prompts(input_list, run_manager=run_manager) messages = prompts[0].to_messages() - prompt_messages = to_prompt_messages(messages) - result = self.model_instance.run( - messages=prompt_messages, - stop=stop + prompt_messages = lc_messages_to_prompt_messages(messages) + + model_instance = ModelInstance( + provider_model_bundle=self.model_config.provider_model_bundle, + model=self.model_config.model, + ) + + result = model_instance.invoke_llm( + prompt_messages=prompt_messages, + stream=False, + stop=stop, + callbacks=[self.agent_llm_callback] if self.agent_llm_callback else None, + model_parameters=self.parameters ) generations = [ - [Generation(text=result.content)] + [Generation(text=result.message.content)] ] return LLMResult(generations=generations) diff --git a/api/core/completion.py b/api/core/completion.py deleted file mode 100644 index d219814db..000000000 --- a/api/core/completion.py +++ /dev/null @@ -1,501 +0,0 @@ -import concurrent -import json -import logging -from concurrent.futures import ThreadPoolExecutor -from typing import Optional, List, Union, Tuple - -from flask import current_app, Flask -from requests.exceptions import ChunkedEncodingError - -from core.agent.agent_executor import AgentExecuteResult, PlanningStrategy -from core.callback_handler.main_chain_gather_callback_handler import MainChainGatherCallbackHandler -from core.callback_handler.llm_callback_handler import LLMCallbackHandler -from core.conversation_message_task import ConversationMessageTask, ConversationTaskStoppedException, \ - ConversationTaskInterruptException -from core.embedding.cached_embedding import CacheEmbedding -from core.external_data_tool.factory import ExternalDataToolFactory -from core.file.file_obj import FileObj -from core.index.vector_index.vector_index import VectorIndex -from core.model_providers.error import LLMBadRequestError -from core.memory.read_only_conversation_token_db_buffer_shared_memory import \ - ReadOnlyConversationTokenDBBufferSharedMemory -from core.model_providers.model_factory import ModelFactory -from core.model_providers.models.entity.message import PromptMessage, PromptMessageFile -from core.model_providers.models.llm.base import BaseLLM -from core.orchestrator_rule_parser import OrchestratorRuleParser -from core.prompt.prompt_template import PromptTemplateParser -from core.prompt.prompt_transform import PromptTransform -from models.dataset import Dataset -from models.model import App, AppModelConfig, Account, Conversation, EndUser -from core.moderation.base import ModerationException, ModerationAction -from core.moderation.factory import ModerationFactory -from services.annotation_service import AppAnnotationService -from services.dataset_service import DatasetCollectionBindingService - - -class Completion: - @classmethod - def generate(cls, task_id: str, app: App, app_model_config: AppModelConfig, query: str, inputs: dict, - files: List[FileObj], user: Union[Account, EndUser], conversation: Optional[Conversation], - streaming: bool, is_override: bool = False, retriever_from: str = 'dev', - auto_generate_name: bool = True, from_source: str = 'console'): - """ - errors: ProviderTokenNotInitError - """ - query = PromptTemplateParser.remove_template_variables(query) - - memory = None - if conversation: - # get memory of conversation (read-only) - memory = cls.get_memory_from_conversation( - tenant_id=app.tenant_id, - app_model_config=app_model_config, - conversation=conversation, - return_messages=False - ) - - inputs = conversation.inputs - - final_model_instance = ModelFactory.get_text_generation_model_from_model_config( - tenant_id=app.tenant_id, - model_config=app_model_config.model_dict, - streaming=streaming - ) - - conversation_message_task = ConversationMessageTask( - task_id=task_id, - app=app, - app_model_config=app_model_config, - user=user, - conversation=conversation, - is_override=is_override, - inputs=inputs, - query=query, - files=files, - streaming=streaming, - model_instance=final_model_instance, - auto_generate_name=auto_generate_name - ) - - prompt_message_files = [file.prompt_message_file for file in files] - - rest_tokens_for_context_and_memory = cls.get_validate_rest_tokens( - mode=app.mode, - model_instance=final_model_instance, - app_model_config=app_model_config, - query=query, - inputs=inputs, - files=prompt_message_files - ) - - # init orchestrator rule parser - orchestrator_rule_parser = OrchestratorRuleParser( - tenant_id=app.tenant_id, - app_model_config=app_model_config - ) - - try: - chain_callback = MainChainGatherCallbackHandler(conversation_message_task) - - try: - # process sensitive_word_avoidance - inputs, query = cls.moderation_for_inputs(app.id, app.tenant_id, app_model_config, inputs, query) - except ModerationException as e: - cls.run_final_llm( - model_instance=final_model_instance, - mode=app.mode, - app_model_config=app_model_config, - query=query, - inputs=inputs, - files=prompt_message_files, - agent_execute_result=None, - conversation_message_task=conversation_message_task, - memory=memory, - fake_response=str(e) - ) - return - # check annotation reply - annotation_reply = cls.query_app_annotations_to_reply(conversation_message_task, from_source) - if annotation_reply: - return - # fill in variable inputs from external data tools if exists - external_data_tools = app_model_config.external_data_tools_list - if external_data_tools: - inputs = cls.fill_in_inputs_from_external_data_tools( - tenant_id=app.tenant_id, - app_id=app.id, - external_data_tools=external_data_tools, - inputs=inputs, - query=query - ) - - # get agent executor - agent_executor = orchestrator_rule_parser.to_agent_executor( - conversation_message_task=conversation_message_task, - memory=memory, - rest_tokens=rest_tokens_for_context_and_memory, - chain_callback=chain_callback, - tenant_id=app.tenant_id, - retriever_from=retriever_from - ) - - query_for_agent = cls.get_query_for_agent(app, app_model_config, query, inputs) - - # run agent executor - agent_execute_result = None - if query_for_agent and agent_executor: - should_use_agent = agent_executor.should_use_agent(query_for_agent) - if should_use_agent: - agent_execute_result = agent_executor.run(query_for_agent) - - # When no extra pre prompt is specified, - # the output of the agent can be used directly as the main output content without calling LLM again - fake_response = None - if not app_model_config.pre_prompt and agent_execute_result and agent_execute_result.output \ - and agent_execute_result.strategy not in [PlanningStrategy.ROUTER, - PlanningStrategy.REACT_ROUTER]: - fake_response = agent_execute_result.output - - # run the final llm - cls.run_final_llm( - model_instance=final_model_instance, - mode=app.mode, - app_model_config=app_model_config, - query=query, - inputs=inputs, - files=prompt_message_files, - agent_execute_result=agent_execute_result, - conversation_message_task=conversation_message_task, - memory=memory, - fake_response=fake_response - ) - except (ConversationTaskInterruptException, ConversationTaskStoppedException): - return - except ChunkedEncodingError as e: - # Interrupt by LLM (like OpenAI), handle it. - logging.warning(f'ChunkedEncodingError: {e}') - return - - @classmethod - def moderation_for_inputs(cls, app_id: str, tenant_id: str, app_model_config: AppModelConfig, inputs: dict, - query: str): - if not app_model_config.sensitive_word_avoidance_dict['enabled']: - return inputs, query - - type = app_model_config.sensitive_word_avoidance_dict['type'] - - moderation = ModerationFactory(type, app_id, tenant_id, - app_model_config.sensitive_word_avoidance_dict['config']) - moderation_result = moderation.moderation_for_inputs(inputs, query) - - if not moderation_result.flagged: - return inputs, query - - if moderation_result.action == ModerationAction.DIRECT_OUTPUT: - raise ModerationException(moderation_result.preset_response) - elif moderation_result.action == ModerationAction.OVERRIDED: - inputs = moderation_result.inputs - query = moderation_result.query - - return inputs, query - - @classmethod - def fill_in_inputs_from_external_data_tools(cls, tenant_id: str, app_id: str, external_data_tools: list[dict], - inputs: dict, query: str) -> dict: - """ - Fill in variable inputs from external data tools if exists. - - :param tenant_id: workspace id - :param app_id: app id - :param external_data_tools: external data tools configs - :param inputs: the inputs - :param query: the query - :return: the filled inputs - """ - # Group tools by type and config - grouped_tools = {} - for tool in external_data_tools: - if not tool.get("enabled"): - continue - - tool_key = (tool.get("type"), json.dumps(tool.get("config"), sort_keys=True)) - grouped_tools.setdefault(tool_key, []).append(tool) - - results = {} - with ThreadPoolExecutor() as executor: - futures = {} - for tool in external_data_tools: - if not tool.get("enabled"): - continue - - future = executor.submit( - cls.query_external_data_tool, current_app._get_current_object(), tenant_id, app_id, tool, - inputs, query - ) - - futures[future] = tool - - for future in concurrent.futures.as_completed(futures): - tool_variable, result = future.result() - results[tool_variable] = result - - inputs.update(results) - return inputs - - @classmethod - def query_external_data_tool(cls, flask_app: Flask, tenant_id: str, app_id: str, external_data_tool: dict, - inputs: dict, query: str) -> Tuple[Optional[str], Optional[str]]: - with flask_app.app_context(): - tool_variable = external_data_tool.get("variable") - tool_type = external_data_tool.get("type") - tool_config = external_data_tool.get("config") - - external_data_tool_factory = ExternalDataToolFactory( - name=tool_type, - tenant_id=tenant_id, - app_id=app_id, - variable=tool_variable, - config=tool_config - ) - - # query external data tool - result = external_data_tool_factory.query( - inputs=inputs, - query=query - ) - - return tool_variable, result - - @classmethod - def get_query_for_agent(cls, app: App, app_model_config: AppModelConfig, query: str, inputs: dict) -> str: - if app.mode != 'completion': - return query - - return inputs.get(app_model_config.dataset_query_variable, "") - - @classmethod - def run_final_llm(cls, model_instance: BaseLLM, mode: str, app_model_config: AppModelConfig, query: str, - inputs: dict, - files: List[PromptMessageFile], - agent_execute_result: Optional[AgentExecuteResult], - conversation_message_task: ConversationMessageTask, - memory: Optional[ReadOnlyConversationTokenDBBufferSharedMemory], - fake_response: Optional[str]): - prompt_transform = PromptTransform() - - # get llm prompt - if app_model_config.prompt_type == 'simple': - prompt_messages, stop_words = prompt_transform.get_prompt( - app_mode=mode, - pre_prompt=app_model_config.pre_prompt, - inputs=inputs, - query=query, - files=files, - context=agent_execute_result.output if agent_execute_result else None, - memory=memory, - model_instance=model_instance - ) - else: - prompt_messages = prompt_transform.get_advanced_prompt( - app_mode=mode, - app_model_config=app_model_config, - inputs=inputs, - query=query, - files=files, - context=agent_execute_result.output if agent_execute_result else None, - memory=memory, - model_instance=model_instance - ) - - model_config = app_model_config.model_dict - completion_params = model_config.get("completion_params", {}) - stop_words = completion_params.get("stop", []) - - cls.recale_llm_max_tokens( - model_instance=model_instance, - prompt_messages=prompt_messages, - ) - - response = model_instance.run( - messages=prompt_messages, - stop=stop_words if stop_words else None, - callbacks=[LLMCallbackHandler(model_instance, conversation_message_task)], - fake_response=fake_response - ) - return response - - @classmethod - def get_history_messages_from_memory(cls, memory: ReadOnlyConversationTokenDBBufferSharedMemory, - max_token_limit: int) -> str: - """Get memory messages.""" - memory.max_token_limit = max_token_limit - memory_key = memory.memory_variables[0] - external_context = memory.load_memory_variables({}) - return external_context[memory_key] - - @classmethod - def query_app_annotations_to_reply(cls, conversation_message_task: ConversationMessageTask, - from_source: str) -> bool: - """Get memory messages.""" - app_model_config = conversation_message_task.app_model_config - app = conversation_message_task.app - annotation_reply = app_model_config.annotation_reply_dict - if annotation_reply['enabled']: - try: - score_threshold = annotation_reply.get('score_threshold', 1) - embedding_provider_name = annotation_reply['embedding_model']['embedding_provider_name'] - embedding_model_name = annotation_reply['embedding_model']['embedding_model_name'] - # get embedding model - embedding_model = ModelFactory.get_embedding_model( - tenant_id=app.tenant_id, - model_provider_name=embedding_provider_name, - model_name=embedding_model_name - ) - embeddings = CacheEmbedding(embedding_model) - - dataset_collection_binding = DatasetCollectionBindingService.get_dataset_collection_binding( - embedding_provider_name, - embedding_model_name, - 'annotation' - ) - - dataset = Dataset( - id=app.id, - tenant_id=app.tenant_id, - indexing_technique='high_quality', - embedding_model_provider=embedding_provider_name, - embedding_model=embedding_model_name, - collection_binding_id=dataset_collection_binding.id - ) - - vector_index = VectorIndex( - dataset=dataset, - config=current_app.config, - embeddings=embeddings, - attributes=['doc_id', 'annotation_id', 'app_id'] - ) - - documents = vector_index.search( - conversation_message_task.query, - search_type='similarity_score_threshold', - search_kwargs={ - 'k': 1, - 'score_threshold': score_threshold, - 'filter': { - 'group_id': [dataset.id] - } - } - ) - if documents: - annotation_id = documents[0].metadata['annotation_id'] - score = documents[0].metadata['score'] - annotation = AppAnnotationService.get_annotation_by_id(annotation_id) - if annotation: - conversation_message_task.annotation_end(annotation.content, annotation.id, annotation.account.name) - # insert annotation history - AppAnnotationService.add_annotation_history(annotation.id, - app.id, - annotation.question, - annotation.content, - conversation_message_task.query, - conversation_message_task.user.id, - conversation_message_task.message.id, - from_source, - score) - return True - except Exception as e: - logging.warning(f'Query annotation failed, exception: {str(e)}.') - return False - return False - - @classmethod - def get_memory_from_conversation(cls, tenant_id: str, app_model_config: AppModelConfig, - conversation: Conversation, - **kwargs) -> ReadOnlyConversationTokenDBBufferSharedMemory: - # only for calc token in memory - memory_model_instance = ModelFactory.get_text_generation_model_from_model_config( - tenant_id=tenant_id, - model_config=app_model_config.model_dict - ) - - # use llm config from conversation - memory = ReadOnlyConversationTokenDBBufferSharedMemory( - conversation=conversation, - model_instance=memory_model_instance, - max_token_limit=kwargs.get("max_token_limit", 2048), - memory_key=kwargs.get("memory_key", "chat_history"), - return_messages=kwargs.get("return_messages", True), - input_key=kwargs.get("input_key", "input"), - output_key=kwargs.get("output_key", "output"), - message_limit=kwargs.get("message_limit", 10), - ) - - return memory - - @classmethod - def get_validate_rest_tokens(cls, mode: str, model_instance: BaseLLM, app_model_config: AppModelConfig, - query: str, inputs: dict, files: List[PromptMessageFile]) -> int: - model_limited_tokens = model_instance.model_rules.max_tokens.max - max_tokens = model_instance.get_model_kwargs().max_tokens - - if model_limited_tokens is None: - return -1 - - if max_tokens is None: - max_tokens = 0 - - prompt_transform = PromptTransform() - - # get prompt without memory and context - if app_model_config.prompt_type == 'simple': - prompt_messages, _ = prompt_transform.get_prompt( - app_mode=mode, - pre_prompt=app_model_config.pre_prompt, - inputs=inputs, - query=query, - files=files, - context=None, - memory=None, - model_instance=model_instance - ) - else: - prompt_messages = prompt_transform.get_advanced_prompt( - app_mode=mode, - app_model_config=app_model_config, - inputs=inputs, - query=query, - files=files, - context=None, - memory=None, - model_instance=model_instance - ) - - prompt_tokens = model_instance.get_num_tokens(prompt_messages) - rest_tokens = model_limited_tokens - max_tokens - prompt_tokens - if rest_tokens < 0: - raise LLMBadRequestError("Query or prefix prompt is too long, you can reduce the prefix prompt, " - "or shrink the max token, or switch to a llm with a larger token limit size.") - - return rest_tokens - - @classmethod - def recale_llm_max_tokens(cls, model_instance: BaseLLM, prompt_messages: List[PromptMessage]): - # recalc max_tokens if sum(prompt_token + max_tokens) over model token limit - model_limited_tokens = model_instance.model_rules.max_tokens.max - max_tokens = model_instance.get_model_kwargs().max_tokens - - if model_limited_tokens is None: - return - - if max_tokens is None: - max_tokens = 0 - - prompt_tokens = model_instance.get_num_tokens(prompt_messages) - - if prompt_tokens + max_tokens > model_limited_tokens: - max_tokens = max(model_limited_tokens - prompt_tokens, 16) - - # update model instance max tokens - model_kwargs = model_instance.get_model_kwargs() - model_kwargs.max_tokens = max_tokens - model_instance.set_model_kwargs(model_kwargs) diff --git a/api/core/conversation_message_task.py b/api/core/conversation_message_task.py deleted file mode 100644 index bf700b3be..000000000 --- a/api/core/conversation_message_task.py +++ /dev/null @@ -1,517 +0,0 @@ -import json -import time -from typing import Optional, Union, List - -from core.callback_handler.entity.agent_loop import AgentLoop -from core.callback_handler.entity.dataset_query import DatasetQueryObj -from core.callback_handler.entity.llm_message import LLMMessage -from core.callback_handler.entity.chain_result import ChainResult -from core.file.file_obj import FileObj -from core.model_providers.model_factory import ModelFactory -from core.model_providers.models.entity.message import to_prompt_messages, MessageType, PromptMessageFile -from core.model_providers.models.llm.base import BaseLLM -from core.prompt.prompt_builder import PromptBuilder -from core.prompt.prompt_template import PromptTemplateParser -from events.message_event import message_was_created -from extensions.ext_database import db -from extensions.ext_redis import redis_client -from models.dataset import DatasetQuery -from models.model import AppModelConfig, Conversation, Account, Message, EndUser, App, MessageAgentThought, \ - MessageChain, DatasetRetrieverResource, MessageFile - - -class ConversationMessageTask: - def __init__(self, task_id: str, app: App, app_model_config: AppModelConfig, user: Account, - inputs: dict, query: str, files: List[FileObj], streaming: bool, - model_instance: BaseLLM, conversation: Optional[Conversation] = None, is_override: bool = False, - auto_generate_name: bool = True): - self.start_at = time.perf_counter() - - self.task_id = task_id - - self.app = app - self.tenant_id = app.tenant_id - self.app_model_config = app_model_config - self.is_override = is_override - - self.user = user - self.inputs = inputs - self.query = query - self.files = files - self.streaming = streaming - - self.conversation = conversation - self.is_new_conversation = False - - self.model_instance = model_instance - - self.message = None - - self.retriever_resource = None - self.auto_generate_name = auto_generate_name - - self.model_dict = self.app_model_config.model_dict - self.provider_name = self.model_dict.get('provider') - self.model_name = self.model_dict.get('name') - self.mode = app.mode - - self.init() - - self._pub_handler = PubHandler( - user=self.user, - task_id=self.task_id, - message=self.message, - conversation=self.conversation, - chain_pub=False, # disabled currently - agent_thought_pub=True - ) - - def init(self): - - override_model_configs = None - if self.is_override: - override_model_configs = self.app_model_config.to_dict() - - introduction = '' - system_instruction = '' - system_instruction_tokens = 0 - if self.mode == 'chat': - introduction = self.app_model_config.opening_statement - if introduction: - prompt_template = PromptTemplateParser(template=introduction) - prompt_inputs = {k: self.inputs[k] for k in prompt_template.variable_keys if k in self.inputs} - try: - introduction = prompt_template.format(prompt_inputs) - except KeyError: - pass - - if self.app_model_config.pre_prompt: - system_message = PromptBuilder.to_system_message(self.app_model_config.pre_prompt, self.inputs) - system_instruction = system_message.content - model_instance = ModelFactory.get_text_generation_model( - tenant_id=self.tenant_id, - model_provider_name=self.provider_name, - model_name=self.model_name - ) - system_instruction_tokens = model_instance.get_num_tokens(to_prompt_messages([system_message])) - - if not self.conversation: - self.is_new_conversation = True - self.conversation = Conversation( - app_id=self.app.id, - app_model_config_id=self.app_model_config.id, - model_provider=self.provider_name, - model_id=self.model_name, - override_model_configs=json.dumps(override_model_configs) if override_model_configs else None, - mode=self.mode, - name='New conversation', - inputs=self.inputs, - introduction=introduction, - system_instruction=system_instruction, - system_instruction_tokens=system_instruction_tokens, - status='normal', - from_source=('console' if isinstance(self.user, Account) else 'api'), - from_end_user_id=(self.user.id if isinstance(self.user, EndUser) else None), - from_account_id=(self.user.id if isinstance(self.user, Account) else None), - ) - - db.session.add(self.conversation) - db.session.commit() - - self.message = Message( - app_id=self.app.id, - model_provider=self.provider_name, - model_id=self.model_name, - override_model_configs=json.dumps(override_model_configs) if override_model_configs else None, - conversation_id=self.conversation.id, - inputs=self.inputs, - query=self.query, - message="", - message_tokens=0, - message_unit_price=0, - message_price_unit=0, - answer="", - answer_tokens=0, - answer_unit_price=0, - answer_price_unit=0, - provider_response_latency=0, - total_price=0, - currency=self.model_instance.get_currency(), - from_source=('console' if isinstance(self.user, Account) else 'api'), - from_end_user_id=(self.user.id if isinstance(self.user, EndUser) else None), - from_account_id=(self.user.id if isinstance(self.user, Account) else None), - agent_based=self.app_model_config.agent_mode_dict.get('enabled'), - ) - - db.session.add(self.message) - db.session.commit() - - for file in self.files: - message_file = MessageFile( - message_id=self.message.id, - type=file.type.value, - transfer_method=file.transfer_method.value, - url=file.url, - upload_file_id=file.upload_file_id, - created_by_role=('account' if isinstance(self.user, Account) else 'end_user'), - created_by=self.user.id - ) - db.session.add(message_file) - db.session.commit() - - def append_message_text(self, text: str): - if text is not None: - self._pub_handler.pub_text(text) - - def save_message(self, llm_message: LLMMessage, by_stopped: bool = False): - message_tokens = llm_message.prompt_tokens - answer_tokens = llm_message.completion_tokens - - message_unit_price = self.model_instance.get_tokens_unit_price(MessageType.USER) - message_price_unit = self.model_instance.get_price_unit(MessageType.USER) - answer_unit_price = self.model_instance.get_tokens_unit_price(MessageType.ASSISTANT) - answer_price_unit = self.model_instance.get_price_unit(MessageType.ASSISTANT) - - message_total_price = self.model_instance.calc_tokens_price(message_tokens, MessageType.USER) - answer_total_price = self.model_instance.calc_tokens_price(answer_tokens, MessageType.ASSISTANT) - total_price = message_total_price + answer_total_price - - self.message.message = llm_message.prompt - self.message.message_tokens = message_tokens - self.message.message_unit_price = message_unit_price - self.message.message_price_unit = message_price_unit - self.message.answer = PromptTemplateParser.remove_template_variables( - llm_message.completion.strip()) if llm_message.completion else '' - self.message.answer_tokens = answer_tokens - self.message.answer_unit_price = answer_unit_price - self.message.answer_price_unit = answer_price_unit - self.message.provider_response_latency = time.perf_counter() - self.start_at - self.message.total_price = total_price - - db.session.commit() - - message_was_created.send( - self.message, - conversation=self.conversation, - is_first_message=self.is_new_conversation, - auto_generate_name=self.auto_generate_name - ) - - if not by_stopped: - self.end() - - def init_chain(self, chain_result: ChainResult): - message_chain = MessageChain( - message_id=self.message.id, - type=chain_result.type, - input=json.dumps(chain_result.prompt), - output='' - ) - - db.session.add(message_chain) - db.session.commit() - - return message_chain - - def on_chain_end(self, message_chain: MessageChain, chain_result: ChainResult): - message_chain.output = json.dumps(chain_result.completion) - db.session.commit() - - self._pub_handler.pub_chain(message_chain) - - def on_agent_start(self, message_chain: MessageChain, agent_loop: AgentLoop) -> MessageAgentThought: - message_agent_thought = MessageAgentThought( - message_id=self.message.id, - message_chain_id=message_chain.id, - position=agent_loop.position, - thought=agent_loop.thought, - tool=agent_loop.tool_name, - tool_input=agent_loop.tool_input, - message=agent_loop.prompt, - message_price_unit=0, - answer=agent_loop.completion, - answer_price_unit=0, - created_by_role=('account' if isinstance(self.user, Account) else 'end_user'), - created_by=self.user.id - ) - - db.session.add(message_agent_thought) - db.session.commit() - - self._pub_handler.pub_agent_thought(message_agent_thought) - - return message_agent_thought - - def on_agent_end(self, message_agent_thought: MessageAgentThought, agent_model_instance: BaseLLM, - agent_loop: AgentLoop): - agent_message_unit_price = agent_model_instance.get_tokens_unit_price(MessageType.USER) - agent_message_price_unit = agent_model_instance.get_price_unit(MessageType.USER) - agent_answer_unit_price = agent_model_instance.get_tokens_unit_price(MessageType.ASSISTANT) - agent_answer_price_unit = agent_model_instance.get_price_unit(MessageType.ASSISTANT) - - loop_message_tokens = agent_loop.prompt_tokens - loop_answer_tokens = agent_loop.completion_tokens - - loop_message_total_price = agent_model_instance.calc_tokens_price(loop_message_tokens, MessageType.USER) - loop_answer_total_price = agent_model_instance.calc_tokens_price(loop_answer_tokens, MessageType.ASSISTANT) - loop_total_price = loop_message_total_price + loop_answer_total_price - - message_agent_thought.observation = agent_loop.tool_output - message_agent_thought.tool_process_data = '' # currently not support - message_agent_thought.message_token = loop_message_tokens - message_agent_thought.message_unit_price = agent_message_unit_price - message_agent_thought.message_price_unit = agent_message_price_unit - message_agent_thought.answer_token = loop_answer_tokens - message_agent_thought.answer_unit_price = agent_answer_unit_price - message_agent_thought.answer_price_unit = agent_answer_price_unit - message_agent_thought.latency = agent_loop.latency - message_agent_thought.tokens = agent_loop.prompt_tokens + agent_loop.completion_tokens - message_agent_thought.total_price = loop_total_price - message_agent_thought.currency = agent_model_instance.get_currency() - db.session.commit() - - def on_dataset_query_end(self, dataset_query_obj: DatasetQueryObj): - dataset_query = DatasetQuery( - dataset_id=dataset_query_obj.dataset_id, - content=dataset_query_obj.query, - source='app', - source_app_id=self.app.id, - created_by_role=('account' if isinstance(self.user, Account) else 'end_user'), - created_by=self.user.id - ) - - db.session.add(dataset_query) - db.session.commit() - - def on_dataset_query_finish(self, resource: List): - if resource and len(resource) > 0: - for item in resource: - dataset_retriever_resource = DatasetRetrieverResource( - message_id=self.message.id, - position=item.get('position'), - dataset_id=item.get('dataset_id'), - dataset_name=item.get('dataset_name'), - document_id=item.get('document_id'), - document_name=item.get('document_name'), - data_source_type=item.get('data_source_type'), - segment_id=item.get('segment_id'), - score=item.get('score') if 'score' in item else None, - hit_count=item.get('hit_count') if 'hit_count' else None, - word_count=item.get('word_count') if 'word_count' in item else None, - segment_position=item.get('segment_position') if 'segment_position' in item else None, - index_node_hash=item.get('index_node_hash') if 'index_node_hash' in item else None, - content=item.get('content'), - retriever_from=item.get('retriever_from'), - created_by=self.user.id - ) - db.session.add(dataset_retriever_resource) - db.session.commit() - self.retriever_resource = resource - - def on_message_replace(self, text: str): - if text is not None: - self._pub_handler.pub_message_replace(text) - - def message_end(self): - self._pub_handler.pub_message_end(self.retriever_resource) - - def end(self): - self._pub_handler.pub_message_end(self.retriever_resource) - self._pub_handler.pub_end() - - def annotation_end(self, text: str, annotation_id: str, annotation_author_name: str): - self._pub_handler.pub_annotation(text, annotation_id, annotation_author_name, self.start_at) - self._pub_handler.pub_end() - - -class PubHandler: - def __init__(self, user: Union[Account, EndUser], task_id: str, - message: Message, conversation: Conversation, - chain_pub: bool = False, agent_thought_pub: bool = False): - self._channel = PubHandler.generate_channel_name(user, task_id) - self._stopped_cache_key = PubHandler.generate_stopped_cache_key(user, task_id) - - self._task_id = task_id - self._message = message - self._conversation = conversation - self._chain_pub = chain_pub - self._agent_thought_pub = agent_thought_pub - - @classmethod - def generate_channel_name(cls, user: Union[Account, EndUser], task_id: str): - if not user: - raise ValueError("user is required") - - user_str = 'account-' + str(user.id) if isinstance(user, Account) else 'end-user-' + str(user.id) - return "generate_result:{}-{}".format(user_str, task_id) - - @classmethod - def generate_stopped_cache_key(cls, user: Union[Account, EndUser], task_id: str): - user_str = 'account-' + str(user.id) if isinstance(user, Account) else 'end-user-' + str(user.id) - return "generate_result_stopped:{}-{}".format(user_str, task_id) - - def pub_text(self, text: str): - content = { - 'event': 'message', - 'data': { - 'task_id': self._task_id, - 'message_id': str(self._message.id), - 'text': text, - 'mode': self._conversation.mode, - 'conversation_id': str(self._conversation.id) - } - } - - redis_client.publish(self._channel, json.dumps(content)) - - if self._is_stopped(): - self.pub_end() - raise ConversationTaskStoppedException() - - def pub_message_replace(self, text: str): - content = { - 'event': 'message_replace', - 'data': { - 'task_id': self._task_id, - 'message_id': str(self._message.id), - 'text': text, - 'mode': self._conversation.mode, - 'conversation_id': str(self._conversation.id) - } - } - - redis_client.publish(self._channel, json.dumps(content)) - - if self._is_stopped(): - self.pub_end() - raise ConversationTaskStoppedException() - - def pub_chain(self, message_chain: MessageChain): - if self._chain_pub: - content = { - 'event': 'chain', - 'data': { - 'task_id': self._task_id, - 'message_id': self._message.id, - 'chain_id': message_chain.id, - 'type': message_chain.type, - 'input': json.loads(message_chain.input), - 'output': json.loads(message_chain.output), - 'mode': self._conversation.mode, - 'conversation_id': self._conversation.id - } - } - - redis_client.publish(self._channel, json.dumps(content)) - - if self._is_stopped(): - self.pub_end() - raise ConversationTaskStoppedException() - - def pub_agent_thought(self, message_agent_thought: MessageAgentThought): - if self._agent_thought_pub: - content = { - 'event': 'agent_thought', - 'data': { - 'id': message_agent_thought.id, - 'task_id': self._task_id, - 'message_id': self._message.id, - 'chain_id': message_agent_thought.message_chain_id, - 'position': message_agent_thought.position, - 'thought': message_agent_thought.thought, - 'tool': message_agent_thought.tool, - 'tool_input': message_agent_thought.tool_input, - 'mode': self._conversation.mode, - 'conversation_id': self._conversation.id - } - } - - redis_client.publish(self._channel, json.dumps(content)) - - if self._is_stopped(): - self.pub_end() - raise ConversationTaskStoppedException() - - def pub_message_end(self, retriever_resource: List): - content = { - 'event': 'message_end', - 'data': { - 'task_id': self._task_id, - 'message_id': self._message.id, - 'mode': self._conversation.mode, - 'conversation_id': self._conversation.id, - } - } - if retriever_resource: - content['data']['retriever_resources'] = retriever_resource - redis_client.publish(self._channel, json.dumps(content)) - - if self._is_stopped(): - self.pub_end() - raise ConversationTaskStoppedException() - - def pub_annotation(self, text: str, annotation_id: str, annotation_author_name: str, start_at: float): - content = { - 'event': 'annotation', - 'data': { - 'task_id': self._task_id, - 'message_id': self._message.id, - 'mode': self._conversation.mode, - 'conversation_id': self._conversation.id, - 'text': text, - 'annotation_id': annotation_id, - 'annotation_author_name': annotation_author_name - } - } - self._message.answer = text - self._message.provider_response_latency = time.perf_counter() - start_at - - db.session.commit() - - redis_client.publish(self._channel, json.dumps(content)) - - if self._is_stopped(): - self.pub_end() - raise ConversationTaskStoppedException() - - def pub_end(self): - content = { - 'event': 'end', - } - - redis_client.publish(self._channel, json.dumps(content)) - - @classmethod - def pub_error(cls, user: Union[Account, EndUser], task_id: str, e): - content = { - 'error': type(e).__name__, - 'description': e.description if getattr(e, 'description', None) is not None else str(e) - } - - channel = cls.generate_channel_name(user, task_id) - redis_client.publish(channel, json.dumps(content)) - - def _is_stopped(self): - return redis_client.get(self._stopped_cache_key) is not None - - @classmethod - def ping(cls, user: Union[Account, EndUser], task_id: str): - content = { - 'event': 'ping' - } - - channel = cls.generate_channel_name(user, task_id) - redis_client.publish(channel, json.dumps(content)) - - @classmethod - def stop(cls, user: Union[Account, EndUser], task_id: str): - stopped_cache_key = cls.generate_stopped_cache_key(user, task_id) - redis_client.setex(stopped_cache_key, 600, 1) - - -class ConversationTaskStoppedException(Exception): - pass - - -class ConversationTaskInterruptException(Exception): - pass diff --git a/api/core/docstore/dataset_docstore.py b/api/core/docstore/dataset_docstore.py index 634351740..77a5dde9e 100644 --- a/api/core/docstore/dataset_docstore.py +++ b/api/core/docstore/dataset_docstore.py @@ -1,9 +1,11 @@ -from typing import Any, Dict, Optional, Sequence +from typing import Any, Dict, Optional, Sequence, cast from langchain.schema import Document from sqlalchemy import func -from core.model_providers.model_factory import ModelFactory +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel from extensions.ext_database import db from models.dataset import Dataset, DocumentSegment @@ -69,10 +71,12 @@ class DatasetDocumentStore: max_position = 0 embedding_model = None if self._dataset.indexing_technique == 'high_quality': - embedding_model = ModelFactory.get_embedding_model( + model_manager = ModelManager() + embedding_model = model_manager.get_model_instance( tenant_id=self._dataset.tenant_id, - model_provider_name=self._dataset.embedding_model_provider, - model_name=self._dataset.embedding_model + provider=self._dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=self._dataset.embedding_model ) for doc in docs: @@ -89,7 +93,16 @@ class DatasetDocumentStore: ) # calc embedding use tokens - tokens = embedding_model.get_num_tokens(doc.page_content) if embedding_model else 0 + if embedding_model: + model_type_instance = embedding_model.model_type_instance + model_type_instance = cast(TextEmbeddingModel, model_type_instance) + tokens = model_type_instance.get_num_tokens( + model=embedding_model.model, + credentials=embedding_model.credentials, + texts=[doc.page_content] + ) + else: + tokens = 0 if not segment_document: max_position += 1 diff --git a/api/core/embedding/cached_embedding.py b/api/core/embedding/cached_embedding.py index dbdfe026d..0022c8b14 100644 --- a/api/core/embedding/cached_embedding.py +++ b/api/core/embedding/cached_embedding.py @@ -1,19 +1,22 @@ import logging -from typing import List +from typing import List, Optional import numpy as np from langchain.embeddings.base import Embeddings from sqlalchemy.exc import IntegrityError -from core.model_providers.models.embedding.base import BaseEmbedding +from core.model_manager import ModelInstance from extensions.ext_database import db from libs import helper from models.dataset import Embedding +logger = logging.getLogger(__name__) + class CacheEmbedding(Embeddings): - def __init__(self, embeddings: BaseEmbedding): - self._embeddings = embeddings + def __init__(self, model_instance: ModelInstance, user: Optional[str] = None) -> None: + self._model_instance = model_instance + self._user = user def embed_documents(self, texts: List[str]) -> List[List[float]]: """Embed search docs.""" @@ -22,7 +25,7 @@ class CacheEmbedding(Embeddings): embedding_queue_indices = [] for i, text in enumerate(texts): hash = helper.generate_text_hash(text) - embedding = db.session.query(Embedding).filter_by(model_name=self._embeddings.name, hash=hash).first() + embedding = db.session.query(Embedding).filter_by(model_name=self._model_instance.model, hash=hash).first() if embedding: text_embeddings[i] = embedding.get_embedding() else: @@ -30,15 +33,21 @@ class CacheEmbedding(Embeddings): if embedding_queue_indices: try: - embedding_results = self._embeddings.client.embed_documents([texts[i] for i in embedding_queue_indices]) + embedding_result = self._model_instance.invoke_text_embedding( + texts=[texts[i] for i in embedding_queue_indices], + user=self._user + ) + + embedding_results = embedding_result.embeddings except Exception as ex: - raise self._embeddings.handle_exceptions(ex) + logger.error('Failed to embed documents: ', ex) + raise ex for i, indice in enumerate(embedding_queue_indices): hash = helper.generate_text_hash(texts[indice]) try: - embedding = Embedding(model_name=self._embeddings.name, hash=hash) + embedding = Embedding(model_name=self._model_instance.model, hash=hash) vector = embedding_results[i] normalized_embedding = (vector / np.linalg.norm(vector)).tolist() text_embeddings[indice] = normalized_embedding @@ -58,18 +67,23 @@ class CacheEmbedding(Embeddings): """Embed query text.""" # use doc embedding cache or store if not exists hash = helper.generate_text_hash(text) - embedding = db.session.query(Embedding).filter_by(model_name=self._embeddings.name, hash=hash).first() + embedding = db.session.query(Embedding).filter_by(model_name=self._model_instance.model, hash=hash).first() if embedding: return embedding.get_embedding() try: - embedding_results = self._embeddings.client.embed_query(text) + embedding_result = self._model_instance.invoke_text_embedding( + texts=[text], + user=self._user + ) + + embedding_results = embedding_result.embeddings[0] embedding_results = (embedding_results / np.linalg.norm(embedding_results)).tolist() except Exception as ex: - raise self._embeddings.handle_exceptions(ex) + raise ex try: - embedding = Embedding(model_name=self._embeddings.name, hash=hash) + embedding = Embedding(model_name=self._model_instance.model, hash=hash) embedding.set_embedding(embedding_results) db.session.add(embedding) db.session.commit() @@ -79,4 +93,3 @@ class CacheEmbedding(Embeddings): logging.exception('Failed to add embedding to db') return embedding_results - diff --git a/api/core/model_providers/models/embedding/__init__.py b/api/core/entities/__init__.py similarity index 100% rename from api/core/model_providers/models/embedding/__init__.py rename to api/core/entities/__init__.py diff --git a/api/core/entities/application_entities.py b/api/core/entities/application_entities.py new file mode 100644 index 000000000..7e34eed51 --- /dev/null +++ b/api/core/entities/application_entities.py @@ -0,0 +1,265 @@ +from enum import Enum +from typing import Optional, Any, cast + +from pydantic import BaseModel + +from core.entities.provider_configuration import ProviderModelBundle +from core.file.file_obj import FileObj +from core.model_runtime.entities.message_entities import PromptMessageRole +from core.model_runtime.entities.model_entities import AIModelEntity + + +class ModelConfigEntity(BaseModel): + """ + Model Config Entity. + """ + provider: str + model: str + model_schema: AIModelEntity + mode: str + provider_model_bundle: ProviderModelBundle + credentials: dict[str, Any] = {} + parameters: dict[str, Any] = {} + stop: list[str] = [] + + +class AdvancedChatMessageEntity(BaseModel): + """ + Advanced Chat Message Entity. + """ + text: str + role: PromptMessageRole + + +class AdvancedChatPromptTemplateEntity(BaseModel): + """ + Advanced Chat Prompt Template Entity. + """ + messages: list[AdvancedChatMessageEntity] + + +class AdvancedCompletionPromptTemplateEntity(BaseModel): + """ + Advanced Completion Prompt Template Entity. + """ + class RolePrefixEntity(BaseModel): + """ + Role Prefix Entity. + """ + user: str + assistant: str + + prompt: str + role_prefix: Optional[RolePrefixEntity] = None + + +class PromptTemplateEntity(BaseModel): + """ + Prompt Template Entity. + """ + class PromptType(Enum): + """ + Prompt Type. + 'simple', 'advanced' + """ + SIMPLE = 'simple' + ADVANCED = 'advanced' + + @classmethod + def value_of(cls, value: str) -> 'PromptType': + """ + Get value of given mode. + + :param value: mode value + :return: mode + """ + for mode in cls: + if mode.value == value: + return mode + raise ValueError(f'invalid prompt type value {value}') + + prompt_type: PromptType + simple_prompt_template: Optional[str] = None + advanced_chat_prompt_template: Optional[AdvancedChatPromptTemplateEntity] = None + advanced_completion_prompt_template: Optional[AdvancedCompletionPromptTemplateEntity] = None + + +class ExternalDataVariableEntity(BaseModel): + """ + External Data Variable Entity. + """ + variable: str + type: str + config: dict[str, Any] = {} + + +class DatasetRetrieveConfigEntity(BaseModel): + """ + Dataset Retrieve Config Entity. + """ + class RetrieveStrategy(Enum): + """ + Dataset Retrieve Strategy. + 'single' or 'multiple' + """ + SINGLE = 'single' + MULTIPLE = 'multiple' + + @classmethod + def value_of(cls, value: str) -> 'RetrieveStrategy': + """ + Get value of given mode. + + :param value: mode value + :return: mode + """ + for mode in cls: + if mode.value == value: + return mode + raise ValueError(f'invalid retrieve strategy value {value}') + + query_variable: Optional[str] = None # Only when app mode is completion + + retrieve_strategy: RetrieveStrategy + single_strategy: Optional[str] = None # for temp + top_k: Optional[int] = None + score_threshold: Optional[float] = None + reranking_model: Optional[dict] = None + + +class DatasetEntity(BaseModel): + """ + Dataset Config Entity. + """ + dataset_ids: list[str] + retrieve_config: DatasetRetrieveConfigEntity + + +class SensitiveWordAvoidanceEntity(BaseModel): + """ + Sensitive Word Avoidance Entity. + """ + type: str + config: dict[str, Any] = {} + + +class FileUploadEntity(BaseModel): + """ + File Upload Entity. + """ + image_config: Optional[dict[str, Any]] = None + + +class AgentToolEntity(BaseModel): + """ + Agent Tool Entity. + """ + tool_id: str + config: dict[str, Any] = {} + + +class AgentEntity(BaseModel): + """ + Agent Entity. + """ + class Strategy(Enum): + """ + Agent Strategy. + """ + CHAIN_OF_THOUGHT = 'chain-of-thought' + FUNCTION_CALLING = 'function-calling' + + provider: str + model: str + strategy: Strategy + tools: list[AgentToolEntity] = [] + + +class AppOrchestrationConfigEntity(BaseModel): + """ + App Orchestration Config Entity. + """ + model_config: ModelConfigEntity + prompt_template: PromptTemplateEntity + external_data_variables: list[ExternalDataVariableEntity] = [] + agent: Optional[AgentEntity] = None + + # features + dataset: Optional[DatasetEntity] = None + file_upload: Optional[FileUploadEntity] = None + opening_statement: Optional[str] = None + suggested_questions_after_answer: bool = False + show_retrieve_source: bool = False + more_like_this: bool = False + speech_to_text: bool = False + sensitive_word_avoidance: Optional[SensitiveWordAvoidanceEntity] = None + + +class InvokeFrom(Enum): + """ + Invoke From. + """ + SERVICE_API = 'service-api' + WEB_APP = 'web-app' + EXPLORE = 'explore' + DEBUGGER = 'debugger' + + @classmethod + def value_of(cls, value: str) -> 'InvokeFrom': + """ + Get value of given mode. + + :param value: mode value + :return: mode + """ + for mode in cls: + if mode.value == value: + return mode + raise ValueError(f'invalid invoke from value {value}') + + def to_source(self) -> str: + """ + Get source of invoke from. + + :return: source + """ + if self == InvokeFrom.WEB_APP: + return 'web_app' + elif self == InvokeFrom.DEBUGGER: + return 'dev' + elif self == InvokeFrom.EXPLORE: + return 'explore_app' + elif self == InvokeFrom.SERVICE_API: + return 'api' + + return 'dev' + + +class ApplicationGenerateEntity(BaseModel): + """ + Application Generate Entity. + """ + task_id: str + tenant_id: str + + app_id: str + app_model_config_id: str + # for save + app_model_config_dict: dict + app_model_config_override: bool + + # Converted from app_model_config to Entity object, or directly covered by external input + app_orchestration_config_entity: AppOrchestrationConfigEntity + + conversation_id: Optional[str] = None + inputs: dict[str, str] + query: Optional[str] = None + files: list[FileObj] = [] + user_id: str + + # extras + stream: bool + invoke_from: InvokeFrom + + # extra parameters, like: auto_generate_conversation_name + extras: dict[str, Any] = {} diff --git a/api/core/entities/message_entities.py b/api/core/entities/message_entities.py new file mode 100644 index 000000000..d72f436aa --- /dev/null +++ b/api/core/entities/message_entities.py @@ -0,0 +1,128 @@ +import enum +from typing import Any, cast + +from langchain.schema import HumanMessage, AIMessage, SystemMessage, BaseMessage, FunctionMessage +from pydantic import BaseModel + +from core.model_runtime.entities.message_entities import PromptMessage, UserPromptMessage, TextPromptMessageContent, \ + ImagePromptMessageContent, AssistantPromptMessage, SystemPromptMessage, ToolPromptMessage + + +class PromptMessageFileType(enum.Enum): + IMAGE = 'image' + + @staticmethod + def value_of(value): + for member in PromptMessageFileType: + if member.value == value: + return member + raise ValueError(f"No matching enum found for value '{value}'") + + +class PromptMessageFile(BaseModel): + type: PromptMessageFileType + data: Any + + +class ImagePromptMessageFile(PromptMessageFile): + class DETAIL(enum.Enum): + LOW = 'low' + HIGH = 'high' + + type: PromptMessageFileType = PromptMessageFileType.IMAGE + detail: DETAIL = DETAIL.LOW + + +class LCHumanMessageWithFiles(HumanMessage): + # content: Union[str, List[Union[str, Dict]]] + content: str + files: list[PromptMessageFile] + + +def lc_messages_to_prompt_messages(messages: list[BaseMessage]) -> list[PromptMessage]: + prompt_messages = [] + for message in messages: + if isinstance(message, HumanMessage): + if isinstance(message, LCHumanMessageWithFiles): + file_prompt_message_contents = [] + for file in message.files: + if file.type == PromptMessageFileType.IMAGE: + file = cast(ImagePromptMessageFile, file) + file_prompt_message_contents.append(ImagePromptMessageContent( + data=file.data, + detail=ImagePromptMessageContent.DETAIL.HIGH + if file.detail.value == "high" else ImagePromptMessageContent.DETAIL.LOW + )) + + prompt_message_contents = [TextPromptMessageContent(data=message.content)] + prompt_message_contents.extend(file_prompt_message_contents) + + prompt_messages.append(UserPromptMessage(content=prompt_message_contents)) + else: + prompt_messages.append(UserPromptMessage(content=message.content)) + elif isinstance(message, AIMessage): + message_kwargs = { + 'content': message.content + } + + if 'function_call' in message.additional_kwargs: + message_kwargs['tool_calls'] = [ + AssistantPromptMessage.ToolCall( + id=message.additional_kwargs['function_call']['id'], + type='function', + function=AssistantPromptMessage.ToolCall.ToolCallFunction( + name=message.additional_kwargs['function_call']['name'], + arguments=message.additional_kwargs['function_call']['arguments'] + ) + ) + ] + + prompt_messages.append(AssistantPromptMessage(**message_kwargs)) + elif isinstance(message, SystemMessage): + prompt_messages.append(SystemPromptMessage(content=message.content)) + elif isinstance(message, FunctionMessage): + prompt_messages.append(ToolPromptMessage(content=message.content, tool_call_id=message.name)) + + return prompt_messages + + +def prompt_messages_to_lc_messages(prompt_messages: list[PromptMessage]) -> list[BaseMessage]: + messages = [] + for prompt_message in prompt_messages: + if isinstance(prompt_message, UserPromptMessage): + if isinstance(prompt_message.content, str): + messages.append(HumanMessage(content=prompt_message.content)) + else: + message_contents = [] + for content in prompt_message.content: + if isinstance(content, TextPromptMessageContent): + message_contents.append(content.data) + elif isinstance(content, ImagePromptMessageContent): + message_contents.append({ + 'type': 'image', + 'data': content.data, + 'detail': content.detail.value + }) + + messages.append(HumanMessage(content=message_contents)) + elif isinstance(prompt_message, AssistantPromptMessage): + message_kwargs = { + 'content': prompt_message.content + } + + if prompt_message.tool_calls: + message_kwargs['additional_kwargs'] = { + 'function_call': { + 'id': prompt_message.tool_calls[0].id, + 'name': prompt_message.tool_calls[0].function.name, + 'arguments': prompt_message.tool_calls[0].function.arguments + } + } + + messages.append(AIMessage(**message_kwargs)) + elif isinstance(prompt_message, SystemPromptMessage): + messages.append(SystemMessage(content=prompt_message.content)) + elif isinstance(prompt_message, ToolPromptMessage): + messages.append(FunctionMessage(name=prompt_message.tool_call_id, content=prompt_message.content)) + + return messages diff --git a/api/core/entities/model_entities.py b/api/core/entities/model_entities.py new file mode 100644 index 000000000..6b49ec924 --- /dev/null +++ b/api/core/entities/model_entities.py @@ -0,0 +1,71 @@ +from enum import Enum +from typing import Optional + +from pydantic import BaseModel + +from core.model_runtime.entities.common_entities import I18nObject +from core.model_runtime.entities.model_entities import ProviderModel, ModelType +from core.model_runtime.entities.provider_entities import SimpleProviderEntity, ProviderEntity + + +class ModelStatus(Enum): + """ + Enum class for model status. + """ + ACTIVE = "active" + NO_CONFIGURE = "no-configure" + QUOTA_EXCEEDED = "quota-exceeded" + NO_PERMISSION = "no-permission" + + +class SimpleModelProviderEntity(BaseModel): + """ + Simple provider. + """ + provider: str + label: I18nObject + icon_small: Optional[I18nObject] = None + icon_large: Optional[I18nObject] = None + supported_model_types: list[ModelType] + + def __init__(self, provider_entity: ProviderEntity) -> None: + """ + Init simple provider. + + :param provider_entity: provider entity + """ + super().__init__( + provider=provider_entity.provider, + label=provider_entity.label, + icon_small=provider_entity.icon_small, + icon_large=provider_entity.icon_large, + supported_model_types=provider_entity.supported_model_types + ) + + +class ModelWithProviderEntity(ProviderModel): + """ + Model with provider entity. + """ + provider: SimpleModelProviderEntity + status: ModelStatus + + +class DefaultModelProviderEntity(BaseModel): + """ + Default model provider entity. + """ + provider: str + label: I18nObject + icon_small: Optional[I18nObject] = None + icon_large: Optional[I18nObject] = None + supported_model_types: list[ModelType] + + +class DefaultModelEntity(BaseModel): + """ + Default model entity. + """ + model: str + model_type: ModelType + provider: DefaultModelProviderEntity diff --git a/api/core/entities/provider_configuration.py b/api/core/entities/provider_configuration.py new file mode 100644 index 000000000..2228560a8 --- /dev/null +++ b/api/core/entities/provider_configuration.py @@ -0,0 +1,657 @@ +import datetime +import json +import time +from json import JSONDecodeError +from typing import Optional, List, Dict, Tuple, Iterator + +from pydantic import BaseModel + +from core.entities.model_entities import ModelWithProviderEntity, ModelStatus, SimpleModelProviderEntity +from core.entities.provider_entities import SystemConfiguration, CustomConfiguration, SystemConfigurationStatus +from core.helper import encrypter +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.entities.provider_entities import ProviderEntity, CredentialFormSchema, FormType +from core.model_runtime.model_providers import model_provider_factory +from core.model_runtime.model_providers.__base.ai_model import AIModel +from core.model_runtime.model_providers.__base.model_provider import ModelProvider +from core.model_runtime.utils import encoders +from extensions.ext_database import db +from models.provider import ProviderType, Provider, ProviderModel, TenantPreferredModelProvider + + +class ProviderConfiguration(BaseModel): + """ + Model class for provider configuration. + """ + tenant_id: str + provider: ProviderEntity + preferred_provider_type: ProviderType + using_provider_type: ProviderType + system_configuration: SystemConfiguration + custom_configuration: CustomConfiguration + + def get_current_credentials(self, model_type: ModelType, model: str) -> Optional[dict]: + """ + Get current credentials. + + :param model_type: model type + :param model: model name + :return: + """ + if self.using_provider_type == ProviderType.SYSTEM: + return self.system_configuration.credentials + else: + if self.custom_configuration.models: + for model_configuration in self.custom_configuration.models: + if model_configuration.model_type == model_type and model_configuration.model == model: + return model_configuration.credentials + + if self.custom_configuration.provider: + return self.custom_configuration.provider.credentials + else: + return None + + def get_system_configuration_status(self) -> SystemConfigurationStatus: + """ + Get system configuration status. + :return: + """ + if self.system_configuration.enabled is False: + return SystemConfigurationStatus.UNSUPPORTED + + current_quota_type = self.system_configuration.current_quota_type + current_quota_configuration = next( + (q for q in self.system_configuration.quota_configurations if q.quota_type == current_quota_type), + None + ) + + return SystemConfigurationStatus.ACTIVE if current_quota_configuration.is_valid else \ + SystemConfigurationStatus.QUOTA_EXCEEDED + + def is_custom_configuration_available(self) -> bool: + """ + Check custom configuration available. + :return: + """ + return (self.custom_configuration.provider is not None + or len(self.custom_configuration.models) > 0) + + def get_custom_credentials(self, obfuscated: bool = False) -> Optional[dict]: + """ + Get custom credentials. + + :param obfuscated: obfuscated secret data in credentials + :return: + """ + if self.custom_configuration.provider is None: + return None + + credentials = self.custom_configuration.provider.credentials + if not obfuscated: + return credentials + + # Obfuscate credentials + return self._obfuscated_credentials( + credentials=credentials, + credential_form_schemas=self.provider.provider_credential_schema.credential_form_schemas + if self.provider.provider_credential_schema else [] + ) + + def custom_credentials_validate(self, credentials: dict) -> Tuple[Provider, dict]: + """ + Validate custom credentials. + :param credentials: provider credentials + :return: + """ + # get provider + provider_record = db.session.query(Provider) \ + .filter( + Provider.tenant_id == self.tenant_id, + Provider.provider_name == self.provider.provider, + Provider.provider_type == ProviderType.CUSTOM.value + ).first() + + # Get provider credential secret variables + provider_credential_secret_variables = self._extract_secret_variables( + self.provider.provider_credential_schema.credential_form_schemas + if self.provider.provider_credential_schema else [] + ) + + if provider_record: + try: + original_credentials = json.loads(provider_record.encrypted_config) if provider_record.encrypted_config else {} + except JSONDecodeError: + original_credentials = {} + + # encrypt credentials + for key, value in credentials.items(): + if key in provider_credential_secret_variables: + # if send [__HIDDEN__] in secret input, it will be same as original value + if value == '[__HIDDEN__]' and key in original_credentials: + credentials[key] = encrypter.decrypt_token(self.tenant_id, original_credentials[key]) + + model_provider_factory.provider_credentials_validate( + self.provider.provider, + credentials + ) + + for key, value in credentials.items(): + if key in provider_credential_secret_variables: + credentials[key] = encrypter.encrypt_token(self.tenant_id, value) + + return provider_record, credentials + + def add_or_update_custom_credentials(self, credentials: dict) -> None: + """ + Add or update custom provider credentials. + :param credentials: + :return: + """ + # validate custom provider config + provider_record, credentials = self.custom_credentials_validate(credentials) + + # save provider + # Note: Do not switch the preferred provider, which allows users to use quotas first + if provider_record: + provider_record.encrypted_config = json.dumps(credentials) + provider_record.is_valid = True + provider_record.updated_at = datetime.datetime.utcnow() + db.session.commit() + else: + provider_record = Provider( + tenant_id=self.tenant_id, + provider_name=self.provider.provider, + provider_type=ProviderType.CUSTOM.value, + encrypted_config=json.dumps(credentials), + is_valid=True + ) + db.session.add(provider_record) + db.session.commit() + + self.switch_preferred_provider_type(ProviderType.CUSTOM) + + def delete_custom_credentials(self) -> None: + """ + Delete custom provider credentials. + :return: + """ + # get provider + provider_record = db.session.query(Provider) \ + .filter( + Provider.tenant_id == self.tenant_id, + Provider.provider_name == self.provider.provider, + Provider.provider_type == ProviderType.CUSTOM.value + ).first() + + # delete provider + if provider_record: + self.switch_preferred_provider_type(ProviderType.SYSTEM) + + db.session.delete(provider_record) + db.session.commit() + + def get_custom_model_credentials(self, model_type: ModelType, model: str, obfuscated: bool = False) \ + -> Optional[dict]: + """ + Get custom model credentials. + + :param model_type: model type + :param model: model name + :param obfuscated: obfuscated secret data in credentials + :return: + """ + if not self.custom_configuration.models: + return None + + for model_configuration in self.custom_configuration.models: + if model_configuration.model_type == model_type and model_configuration.model == model: + credentials = model_configuration.credentials + if not obfuscated: + return credentials + + # Obfuscate credentials + return self._obfuscated_credentials( + credentials=credentials, + credential_form_schemas=self.provider.model_credential_schema.credential_form_schemas + if self.provider.model_credential_schema else [] + ) + + return None + + def custom_model_credentials_validate(self, model_type: ModelType, model: str, credentials: dict) \ + -> Tuple[ProviderModel, dict]: + """ + Validate custom model credentials. + + :param model_type: model type + :param model: model name + :param credentials: model credentials + :return: + """ + # get provider model + provider_model_record = db.session.query(ProviderModel) \ + .filter( + ProviderModel.tenant_id == self.tenant_id, + ProviderModel.provider_name == self.provider.provider, + ProviderModel.model_name == model, + ProviderModel.model_type == model_type.to_origin_model_type() + ).first() + + # Get provider credential secret variables + provider_credential_secret_variables = self._extract_secret_variables( + self.provider.model_credential_schema.credential_form_schemas + if self.provider.model_credential_schema else [] + ) + + if provider_model_record: + try: + original_credentials = json.loads(provider_model_record.encrypted_config) if provider_model_record.encrypted_config else {} + except JSONDecodeError: + original_credentials = {} + + # decrypt credentials + for key, value in credentials.items(): + if key in provider_credential_secret_variables: + # if send [__HIDDEN__] in secret input, it will be same as original value + if value == '[__HIDDEN__]' and key in original_credentials: + credentials[key] = encrypter.decrypt_token(self.tenant_id, original_credentials[key]) + + model_provider_factory.model_credentials_validate( + provider=self.provider.provider, + model_type=model_type, + model=model, + credentials=credentials + ) + + model_schema = ( + model_provider_factory.get_provider_instance(self.provider.provider) + .get_model_instance(model_type)._get_customizable_model_schema( + model=model, + credentials=credentials + ) + ) + + if model_schema: + credentials['schema'] = json.dumps(encoders.jsonable_encoder(model_schema)) + + for key, value in credentials.items(): + if key in provider_credential_secret_variables: + credentials[key] = encrypter.encrypt_token(self.tenant_id, value) + + return provider_model_record, credentials + + def add_or_update_custom_model_credentials(self, model_type: ModelType, model: str, credentials: dict) -> None: + """ + Add or update custom model credentials. + + :param model_type: model type + :param model: model name + :param credentials: model credentials + :return: + """ + # validate custom model config + provider_model_record, credentials = self.custom_model_credentials_validate(model_type, model, credentials) + + # save provider model + # Note: Do not switch the preferred provider, which allows users to use quotas first + if provider_model_record: + provider_model_record.encrypted_config = json.dumps(credentials) + provider_model_record.is_valid = True + provider_model_record.updated_at = datetime.datetime.utcnow() + db.session.commit() + else: + provider_model_record = ProviderModel( + tenant_id=self.tenant_id, + provider_name=self.provider.provider, + model_name=model, + model_type=model_type.to_origin_model_type(), + encrypted_config=json.dumps(credentials), + is_valid=True + ) + db.session.add(provider_model_record) + db.session.commit() + + def delete_custom_model_credentials(self, model_type: ModelType, model: str) -> None: + """ + Delete custom model credentials. + :param model_type: model type + :param model: model name + :return: + """ + # get provider model + provider_model_record = db.session.query(ProviderModel) \ + .filter( + ProviderModel.tenant_id == self.tenant_id, + ProviderModel.provider_name == self.provider.provider, + ProviderModel.model_name == model, + ProviderModel.model_type == model_type.to_origin_model_type() + ).first() + + # delete provider model + if provider_model_record: + db.session.delete(provider_model_record) + db.session.commit() + + def get_provider_instance(self) -> ModelProvider: + """ + Get provider instance. + :return: + """ + return model_provider_factory.get_provider_instance(self.provider.provider) + + def get_model_type_instance(self, model_type: ModelType) -> AIModel: + """ + Get current model type instance. + + :param model_type: model type + :return: + """ + # Get provider instance + provider_instance = self.get_provider_instance() + + # Get model instance of LLM + return provider_instance.get_model_instance(model_type) + + def switch_preferred_provider_type(self, provider_type: ProviderType) -> None: + """ + Switch preferred provider type. + :param provider_type: + :return: + """ + if provider_type == self.preferred_provider_type: + return + + if provider_type == ProviderType.SYSTEM and not self.system_configuration.enabled: + return + + # get preferred provider + preferred_model_provider = db.session.query(TenantPreferredModelProvider) \ + .filter( + TenantPreferredModelProvider.tenant_id == self.tenant_id, + TenantPreferredModelProvider.provider_name == self.provider.provider + ).first() + + if preferred_model_provider: + preferred_model_provider.preferred_provider_type = provider_type.value + else: + preferred_model_provider = TenantPreferredModelProvider( + tenant_id=self.tenant_id, + provider_name=self.provider.provider, + preferred_provider_type=provider_type.value + ) + db.session.add(preferred_model_provider) + + db.session.commit() + + def _extract_secret_variables(self, credential_form_schemas: list[CredentialFormSchema]) -> list[str]: + """ + Extract secret input form variables. + + :param credential_form_schemas: + :return: + """ + secret_input_form_variables = [] + for credential_form_schema in credential_form_schemas: + if credential_form_schema.type == FormType.SECRET_INPUT: + secret_input_form_variables.append(credential_form_schema.variable) + + return secret_input_form_variables + + def _obfuscated_credentials(self, credentials: dict, credential_form_schemas: list[CredentialFormSchema]) -> dict: + """ + Obfuscated credentials. + + :param credentials: credentials + :param credential_form_schemas: credential form schemas + :return: + """ + # Get provider credential secret variables + credential_secret_variables = self._extract_secret_variables( + credential_form_schemas + ) + + # Obfuscate provider credentials + copy_credentials = credentials.copy() + for key, value in copy_credentials.items(): + if key in credential_secret_variables: + copy_credentials[key] = encrypter.obfuscated_token(value) + + return copy_credentials + + def get_provider_model(self, model_type: ModelType, + model: str, + only_active: bool = False) -> Optional[ModelWithProviderEntity]: + """ + Get provider model. + :param model_type: model type + :param model: model name + :param only_active: return active model only + :return: + """ + provider_models = self.get_provider_models(model_type, only_active) + + for provider_model in provider_models: + if provider_model.model == model: + return provider_model + + return None + + def get_provider_models(self, model_type: Optional[ModelType] = None, + only_active: bool = False) -> list[ModelWithProviderEntity]: + """ + Get provider models. + :param model_type: model type + :param only_active: only active models + :return: + """ + provider_instance = self.get_provider_instance() + + model_types = [] + if model_type: + model_types.append(model_type) + else: + model_types = provider_instance.get_provider_schema().supported_model_types + + if self.using_provider_type == ProviderType.SYSTEM: + provider_models = self._get_system_provider_models( + model_types=model_types, + provider_instance=provider_instance + ) + else: + provider_models = self._get_custom_provider_models( + model_types=model_types, + provider_instance=provider_instance + ) + + if only_active: + provider_models = [m for m in provider_models if m.status == ModelStatus.ACTIVE] + + # resort provider_models + return sorted(provider_models, key=lambda x: x.model_type.value) + + def _get_system_provider_models(self, + model_types: list[ModelType], + provider_instance: ModelProvider) -> list[ModelWithProviderEntity]: + """ + Get system provider models. + + :param model_types: model types + :param provider_instance: provider instance + :return: + """ + provider_models = [] + for model_type in model_types: + provider_models.extend( + [ + ModelWithProviderEntity( + **m.dict(), + provider=SimpleModelProviderEntity(self.provider), + status=ModelStatus.ACTIVE + ) + for m in provider_instance.models(model_type) + ] + ) + + for quota_configuration in self.system_configuration.quota_configurations: + if self.system_configuration.current_quota_type != quota_configuration.quota_type: + continue + + restrict_llms = quota_configuration.restrict_llms + if not restrict_llms: + break + + # if llm name not in restricted llm list, remove it + for m in provider_models: + if m.model_type == ModelType.LLM and m.model not in restrict_llms: + m.status = ModelStatus.NO_PERMISSION + elif not quota_configuration.is_valid: + m.status = ModelStatus.QUOTA_EXCEEDED + + return provider_models + + def _get_custom_provider_models(self, + model_types: list[ModelType], + provider_instance: ModelProvider) -> list[ModelWithProviderEntity]: + """ + Get custom provider models. + + :param model_types: model types + :param provider_instance: provider instance + :return: + """ + provider_models = [] + + credentials = None + if self.custom_configuration.provider: + credentials = self.custom_configuration.provider.credentials + + for model_type in model_types: + if model_type not in self.provider.supported_model_types: + continue + + models = provider_instance.models(model_type) + for m in models: + provider_models.append( + ModelWithProviderEntity( + **m.dict(), + provider=SimpleModelProviderEntity(self.provider), + status=ModelStatus.ACTIVE if credentials else ModelStatus.NO_CONFIGURE + ) + ) + + # custom models + for model_configuration in self.custom_configuration.models: + if model_configuration.model_type not in model_types: + continue + + custom_model_schema = ( + provider_instance.get_model_instance(model_configuration.model_type) + .get_customizable_model_schema_from_credentials( + model_configuration.model, + model_configuration.credentials + ) + ) + + if not custom_model_schema: + continue + + provider_models.append( + ModelWithProviderEntity( + **custom_model_schema.dict(), + provider=SimpleModelProviderEntity(self.provider), + status=ModelStatus.ACTIVE + ) + ) + + return provider_models + + +class ProviderConfigurations(BaseModel): + """ + Model class for provider configuration dict. + """ + tenant_id: str + configurations: Dict[str, ProviderConfiguration] = {} + + def __init__(self, tenant_id: str): + super().__init__(tenant_id=tenant_id) + + def get_models(self, + provider: Optional[str] = None, + model_type: Optional[ModelType] = None, + only_active: bool = False) \ + -> list[ModelWithProviderEntity]: + """ + Get available models. + + If preferred provider type is `system`: + Get the current **system mode** if provider supported, + if all system modes are not available (no quota), it is considered to be the **custom credential mode**. + If there is no model configured in custom mode, it is treated as no_configure. + system > custom > no_configure + + If preferred provider type is `custom`: + If custom credentials are configured, it is treated as custom mode. + Otherwise, get the current **system mode** if supported, + If all system modes are not available (no quota), it is treated as no_configure. + custom > system > no_configure + + If real mode is `system`, use system credentials to get models, + paid quotas > provider free quotas > system free quotas + include pre-defined models (exclude GPT-4, status marked as `no_permission`). + If real mode is `custom`, use workspace custom credentials to get models, + include pre-defined models, custom models(manual append). + If real mode is `no_configure`, only return pre-defined models from `model runtime`. + (model status marked as `no_configure` if preferred provider type is `custom` otherwise `quota_exceeded`) + model status marked as `active` is available. + + :param provider: provider name + :param model_type: model type + :param only_active: only active models + :return: + """ + all_models = [] + for provider_configuration in self.values(): + if provider and provider_configuration.provider.provider != provider: + continue + + all_models.extend(provider_configuration.get_provider_models(model_type, only_active)) + + return all_models + + def to_list(self) -> List[ProviderConfiguration]: + """ + Convert to list. + + :return: + """ + return list(self.values()) + + def __getitem__(self, key): + return self.configurations[key] + + def __setitem__(self, key, value): + self.configurations[key] = value + + def __iter__(self): + return iter(self.configurations) + + def values(self) -> Iterator[ProviderConfiguration]: + return self.configurations.values() + + def get(self, key, default=None): + return self.configurations.get(key, default) + + +class ProviderModelBundle(BaseModel): + """ + Provider model bundle. + """ + configuration: ProviderConfiguration + provider_instance: ModelProvider + model_type_instance: AIModel + + class Config: + """Configuration for this pydantic object.""" + + arbitrary_types_allowed = True diff --git a/api/core/entities/provider_entities.py b/api/core/entities/provider_entities.py new file mode 100644 index 000000000..d8905c71a --- /dev/null +++ b/api/core/entities/provider_entities.py @@ -0,0 +1,67 @@ +from enum import Enum +from typing import Optional + +from pydantic import BaseModel + +from core.model_runtime.entities.model_entities import ModelType +from models.provider import ProviderQuotaType + + +class QuotaUnit(Enum): + TIMES = 'times' + TOKENS = 'tokens' + + +class SystemConfigurationStatus(Enum): + """ + Enum class for system configuration status. + """ + ACTIVE = 'active' + QUOTA_EXCEEDED = 'quota-exceeded' + UNSUPPORTED = 'unsupported' + + +class QuotaConfiguration(BaseModel): + """ + Model class for provider quota configuration. + """ + quota_type: ProviderQuotaType + quota_unit: QuotaUnit + quota_limit: int + quota_used: int + is_valid: bool + restrict_llms: list[str] = [] + + +class SystemConfiguration(BaseModel): + """ + Model class for provider system configuration. + """ + enabled: bool + current_quota_type: Optional[ProviderQuotaType] = None + quota_configurations: list[QuotaConfiguration] = [] + credentials: Optional[dict] = None + + +class CustomProviderConfiguration(BaseModel): + """ + Model class for provider custom configuration. + """ + credentials: dict + + +class CustomModelConfiguration(BaseModel): + """ + Model class for provider custom model configuration. + """ + model: str + model_type: ModelType + credentials: dict + + +class CustomConfiguration(BaseModel): + """ + Model class for provider custom configuration. + """ + provider: Optional[CustomProviderConfiguration] = None + models: list[CustomModelConfiguration] = [] diff --git a/api/core/entities/queue_entities.py b/api/core/entities/queue_entities.py new file mode 100644 index 000000000..20b434b05 --- /dev/null +++ b/api/core/entities/queue_entities.py @@ -0,0 +1,118 @@ +from enum import Enum +from typing import Any + +from pydantic import BaseModel + +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk + + +class QueueEvent(Enum): + """ + QueueEvent enum + """ + MESSAGE = "message" + MESSAGE_REPLACE = "message-replace" + MESSAGE_END = "message-end" + RETRIEVER_RESOURCES = "retriever-resources" + ANNOTATION_REPLY = "annotation-reply" + AGENT_THOUGHT = "agent-thought" + ERROR = "error" + PING = "ping" + STOP = "stop" + + +class AppQueueEvent(BaseModel): + """ + QueueEvent entity + """ + event: QueueEvent + + +class QueueMessageEvent(AppQueueEvent): + """ + QueueMessageEvent entity + """ + event = QueueEvent.MESSAGE + chunk: LLMResultChunk + + +class QueueMessageReplaceEvent(AppQueueEvent): + """ + QueueMessageReplaceEvent entity + """ + event = QueueEvent.MESSAGE_REPLACE + text: str + + +class QueueRetrieverResourcesEvent(AppQueueEvent): + """ + QueueRetrieverResourcesEvent entity + """ + event = QueueEvent.RETRIEVER_RESOURCES + retriever_resources: list[dict] + + +class AnnotationReplyEvent(AppQueueEvent): + """ + AnnotationReplyEvent entity + """ + event = QueueEvent.ANNOTATION_REPLY + message_annotation_id: str + + +class QueueMessageEndEvent(AppQueueEvent): + """ + QueueMessageEndEvent entity + """ + event = QueueEvent.MESSAGE_END + llm_result: LLMResult + + +class QueueAgentThoughtEvent(AppQueueEvent): + """ + QueueAgentThoughtEvent entity + """ + event = QueueEvent.AGENT_THOUGHT + agent_thought_id: str + + +class QueueErrorEvent(AppQueueEvent): + """ + QueueErrorEvent entity + """ + event = QueueEvent.ERROR + error: Any + + +class QueuePingEvent(AppQueueEvent): + """ + QueuePingEvent entity + """ + event = QueueEvent.PING + + +class QueueStopEvent(AppQueueEvent): + """ + QueueStopEvent entity + """ + class StopBy(Enum): + """ + Stop by enum + """ + USER_MANUAL = "user-manual" + ANNOTATION_REPLY = "annotation-reply" + OUTPUT_MODERATION = "output-moderation" + + event = QueueEvent.STOP + stopped_by: StopBy + + +class QueueMessage(BaseModel): + """ + QueueMessage entity + """ + task_id: str + message_id: str + conversation_id: str + app_mode: str + event: AppQueueEvent diff --git a/api/core/model_providers/models/entity/__init__.py b/api/core/errors/__init__.py similarity index 100% rename from api/core/model_providers/models/entity/__init__.py rename to api/core/errors/__init__.py diff --git a/api/core/model_providers/error.py b/api/core/errors/error.py similarity index 63% rename from api/core/model_providers/error.py rename to api/core/errors/error.py index 9bba8401f..fddfb345f 100644 --- a/api/core/model_providers/error.py +++ b/api/core/errors/error.py @@ -14,26 +14,6 @@ class LLMBadRequestError(LLMError): description = "Bad Request" -class LLMAPIConnectionError(LLMError): - """Raised when the LLM returns API connection error.""" - description = "API Connection Error" - - -class LLMAPIUnavailableError(LLMError): - """Raised when the LLM returns API unavailable error.""" - description = "API Unavailable Error" - - -class LLMRateLimitError(LLMError): - """Raised when the LLM returns rate limit error.""" - description = "Rate Limit Error" - - -class LLMAuthorizationError(LLMError): - """Raised when the LLM returns authorization error.""" - description = "Authorization Error" - - class ProviderTokenNotInitError(Exception): """ Custom exception raised when the provider token is not initialized. diff --git a/api/core/model_providers/models/llm/__init__.py b/api/core/external_data_tool/weather_search/__init__.py similarity index 100% rename from api/core/model_providers/models/llm/__init__.py rename to api/core/external_data_tool/weather_search/__init__.py diff --git a/api/core/external_data_tool/weather_search/schema.json b/api/core/external_data_tool/weather_search/schema.json new file mode 100644 index 000000000..6e8baffe5 --- /dev/null +++ b/api/core/external_data_tool/weather_search/schema.json @@ -0,0 +1,35 @@ +{ + "label": { + "en-US": "Weather Search", + "zh-Hans": "天气查询" + }, + "form_schema": [ + { + "type": "select", + "label": { + "en-US": "Temperature Unit", + "zh-Hans": "温度单位" + }, + "variable": "temperature_unit", + "required": true, + "options": [ + { + "label": { + "en-US": "Fahrenheit", + "zh-Hans": "华氏度" + }, + "value": "fahrenheit" + }, + { + "label": { + "en-US": "Centigrade", + "zh-Hans": "摄氏度" + }, + "value": "centigrade" + } + ], + "default": "centigrade", + "placeholder": "Please select temperature unit" + } + ] +} \ No newline at end of file diff --git a/api/core/external_data_tool/weather_search/weather_search.py b/api/core/external_data_tool/weather_search/weather_search.py new file mode 100644 index 000000000..70f11b72a --- /dev/null +++ b/api/core/external_data_tool/weather_search/weather_search.py @@ -0,0 +1,45 @@ +from typing import Optional + +from core.external_data_tool.base import ExternalDataTool + + +class WeatherSearch(ExternalDataTool): + """ + The name of custom type must be unique, keep the same with directory and file name. + """ + name: str = "weather_search" + + @classmethod + def validate_config(cls, tenant_id: str, config: dict) -> None: + """ + schema.json validation. It will be called when user save the config. + + Example: + .. code-block:: python + config = { + "temperature_unit": "centigrade" + } + + :param tenant_id: the id of workspace + :param config: the variables of form config + :return: + """ + + if not config.get('temperature_unit'): + raise ValueError('temperature unit is required') + + def query(self, inputs: dict, query: Optional[str] = None) -> str: + """ + Query the external data tool. + + :param inputs: user inputs + :param query: the query of chat app + :return: the tool query result + """ + city = inputs.get('city') + temperature_unit = self.config.get('temperature_unit') + + if temperature_unit == 'fahrenheit': + return f'Weather in {city} is 32°F' + else: + return f'Weather in {city} is 0°C' diff --git a/api/core/model_providers/models/moderation/__init__.py b/api/core/features/__init__.py similarity index 100% rename from api/core/model_providers/models/moderation/__init__.py rename to api/core/features/__init__.py diff --git a/api/core/features/agent_runner.py b/api/core/features/agent_runner.py new file mode 100644 index 000000000..2c63c6669 --- /dev/null +++ b/api/core/features/agent_runner.py @@ -0,0 +1,325 @@ +import logging +from typing import cast, Optional, List + +from langchain import WikipediaAPIWrapper +from langchain.callbacks.base import BaseCallbackHandler +from langchain.tools import BaseTool, WikipediaQueryRun, Tool +from pydantic import BaseModel, Field + +from core.agent.agent.agent_llm_callback import AgentLLMCallback +from core.agent.agent_executor import PlanningStrategy, AgentConfiguration, AgentExecutor +from core.application_queue_manager import ApplicationQueueManager +from core.callback_handler.agent_loop_gather_callback_handler import AgentLoopGatherCallbackHandler +from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler +from core.callback_handler.std_out_callback_handler import DifyStdOutCallbackHandler +from core.entities.application_entities import ModelConfigEntity, InvokeFrom, \ + AgentEntity, AgentToolEntity, AppOrchestrationConfigEntity +from core.memory.token_buffer_memory import TokenBufferMemory +from core.model_runtime.entities.model_entities import ModelFeature, ModelType +from core.model_runtime.model_providers import model_provider_factory +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.tool.current_datetime_tool import DatetimeTool +from core.tool.dataset_retriever_tool import DatasetRetrieverTool +from core.tool.provider.serpapi_provider import SerpAPIToolProvider +from core.tool.serpapi_wrapper import OptimizedSerpAPIWrapper, OptimizedSerpAPIInput +from core.tool.web_reader_tool import WebReaderTool +from extensions.ext_database import db +from models.dataset import Dataset +from models.model import Message + +logger = logging.getLogger(__name__) + + +class AgentRunnerFeature: + def __init__(self, tenant_id: str, + app_orchestration_config: AppOrchestrationConfigEntity, + model_config: ModelConfigEntity, + config: AgentEntity, + queue_manager: ApplicationQueueManager, + message: Message, + user_id: str, + agent_llm_callback: AgentLLMCallback, + callback: AgentLoopGatherCallbackHandler, + memory: Optional[TokenBufferMemory] = None,) -> None: + """ + Agent runner + :param tenant_id: tenant id + :param app_orchestration_config: app orchestration config + :param model_config: model config + :param config: dataset config + :param queue_manager: queue manager + :param message: message + :param user_id: user id + :param agent_llm_callback: agent llm callback + :param callback: callback + :param memory: memory + """ + self.tenant_id = tenant_id + self.app_orchestration_config = app_orchestration_config + self.model_config = model_config + self.config = config + self.queue_manager = queue_manager + self.message = message + self.user_id = user_id + self.agent_llm_callback = agent_llm_callback + self.callback = callback + self.memory = memory + + def run(self, query: str, + invoke_from: InvokeFrom) -> Optional[str]: + """ + Retrieve agent loop result. + :param query: query + :param invoke_from: invoke from + :return: + """ + provider = self.config.provider + model = self.config.model + tool_configs = self.config.tools + + # check model is support tool calling + provider_instance = model_provider_factory.get_provider_instance(provider=provider) + model_type_instance = provider_instance.get_model_instance(ModelType.LLM) + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + # get model schema + model_schema = model_type_instance.get_model_schema( + model=model, + credentials=self.model_config.credentials + ) + + if not model_schema: + return None + + planning_strategy = PlanningStrategy.REACT + features = model_schema.features + if features: + if ModelFeature.TOOL_CALL in features \ + or ModelFeature.MULTI_TOOL_CALL in features: + planning_strategy = PlanningStrategy.FUNCTION_CALL + + tools = self.to_tools( + tool_configs=tool_configs, + invoke_from=invoke_from, + callbacks=[self.callback, DifyStdOutCallbackHandler()], + ) + + if len(tools) == 0: + return None + + agent_configuration = AgentConfiguration( + strategy=planning_strategy, + model_config=self.model_config, + tools=tools, + memory=self.memory, + max_iterations=10, + max_execution_time=400.0, + early_stopping_method="generate", + agent_llm_callback=self.agent_llm_callback, + callbacks=[self.callback, DifyStdOutCallbackHandler()] + ) + + agent_executor = AgentExecutor(agent_configuration) + + try: + # check if should use agent + should_use_agent = agent_executor.should_use_agent(query) + if not should_use_agent: + return None + + result = agent_executor.run(query) + return result.output + except Exception as ex: + logger.exception("agent_executor run failed") + return None + + def to_tools(self, tool_configs: list[AgentToolEntity], + invoke_from: InvokeFrom, + callbacks: list[BaseCallbackHandler]) \ + -> Optional[List[BaseTool]]: + """ + Convert tool configs to tools + :param tool_configs: tool configs + :param invoke_from: invoke from + :param callbacks: callbacks + """ + tools = [] + for tool_config in tool_configs: + tool = None + if tool_config.tool_id == "dataset": + tool = self.to_dataset_retriever_tool( + tool_config=tool_config.config, + invoke_from=invoke_from + ) + elif tool_config.tool_id == "web_reader": + tool = self.to_web_reader_tool( + tool_config=tool_config.config, + invoke_from=invoke_from + ) + elif tool_config.tool_id == "google_search": + tool = self.to_google_search_tool( + tool_config=tool_config.config, + invoke_from=invoke_from + ) + elif tool_config.tool_id == "wikipedia": + tool = self.to_wikipedia_tool( + tool_config=tool_config.config, + invoke_from=invoke_from + ) + elif tool_config.tool_id == "current_datetime": + tool = self.to_current_datetime_tool( + tool_config=tool_config.config, + invoke_from=invoke_from + ) + + if tool: + if tool.callbacks is not None: + tool.callbacks.extend(callbacks) + else: + tool.callbacks = callbacks + + tools.append(tool) + + return tools + + def to_dataset_retriever_tool(self, tool_config: dict, + invoke_from: InvokeFrom) \ + -> Optional[BaseTool]: + """ + A dataset tool is a tool that can be used to retrieve information from a dataset + :param tool_config: tool config + :param invoke_from: invoke from + """ + show_retrieve_source = self.app_orchestration_config.show_retrieve_source + + hit_callback = DatasetIndexToolCallbackHandler( + queue_manager=self.queue_manager, + app_id=self.message.app_id, + message_id=self.message.id, + user_id=self.user_id, + invoke_from=invoke_from + ) + + # get dataset from dataset id + dataset = db.session.query(Dataset).filter( + Dataset.tenant_id == self.tenant_id, + Dataset.id == tool_config.get("id") + ).first() + + # pass if dataset is not available + if not dataset: + return None + + # pass if dataset is not available + if (dataset and dataset.available_document_count == 0 + and dataset.available_document_count == 0): + return None + + # get retrieval model config + default_retrieval_model = { + 'search_method': 'semantic_search', + 'reranking_enable': False, + 'reranking_model': { + 'reranking_provider_name': '', + 'reranking_model_name': '' + }, + 'top_k': 2, + 'score_threshold_enabled': False + } + + retrieval_model_config = dataset.retrieval_model \ + if dataset.retrieval_model else default_retrieval_model + + # get top k + top_k = retrieval_model_config['top_k'] + + # get score threshold + score_threshold = None + score_threshold_enabled = retrieval_model_config.get("score_threshold_enabled") + if score_threshold_enabled: + score_threshold = retrieval_model_config.get("score_threshold") + + tool = DatasetRetrieverTool.from_dataset( + dataset=dataset, + top_k=top_k, + score_threshold=score_threshold, + hit_callbacks=[hit_callback], + return_resource=show_retrieve_source, + retriever_from=invoke_from.to_source() + ) + + return tool + + def to_web_reader_tool(self, tool_config: dict, + invoke_from: InvokeFrom) -> Optional[BaseTool]: + """ + A tool for reading web pages + :param tool_config: tool config + :param invoke_from: invoke from + :return: + """ + model_parameters = { + "temperature": 0, + "max_tokens": 500 + } + + tool = WebReaderTool( + model_config=self.model_config, + model_parameters=model_parameters, + max_chunk_length=4000, + continue_reading=True + ) + + return tool + + def to_google_search_tool(self, tool_config: dict, + invoke_from: InvokeFrom) -> Optional[BaseTool]: + """ + A tool for performing a Google search and extracting snippets and webpages + :param tool_config: tool config + :param invoke_from: invoke from + :return: + """ + tool_provider = SerpAPIToolProvider(tenant_id=self.tenant_id) + func_kwargs = tool_provider.credentials_to_func_kwargs() + if not func_kwargs: + return None + + tool = Tool( + name="google_search", + description="A tool for performing a Google search and extracting snippets and webpages " + "when you need to search for something you don't know or when your information " + "is not up to date. " + "Input should be a search query.", + func=OptimizedSerpAPIWrapper(**func_kwargs).run, + args_schema=OptimizedSerpAPIInput + ) + + return tool + + def to_current_datetime_tool(self, tool_config: dict, + invoke_from: InvokeFrom) -> Optional[BaseTool]: + """ + A tool for getting the current date and time + :param tool_config: tool config + :param invoke_from: invoke from + :return: + """ + return DatetimeTool() + + def to_wikipedia_tool(self, tool_config: dict, + invoke_from: InvokeFrom) -> Optional[BaseTool]: + """ + A tool for searching Wikipedia + :param tool_config: tool config + :param invoke_from: invoke from + :return: + """ + class WikipediaInput(BaseModel): + query: str = Field(..., description="search query.") + + return WikipediaQueryRun( + name="wikipedia", + api_wrapper=WikipediaAPIWrapper(doc_content_chars_max=4000), + args_schema=WikipediaInput + ) diff --git a/api/core/features/annotation_reply.py b/api/core/features/annotation_reply.py new file mode 100644 index 000000000..060a6c20c --- /dev/null +++ b/api/core/features/annotation_reply.py @@ -0,0 +1,119 @@ +import logging +from typing import Optional + +from flask import current_app + +from core.embedding.cached_embedding import CacheEmbedding +from core.entities.application_entities import InvokeFrom +from core.index.vector_index.vector_index import VectorIndex +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType +from extensions.ext_database import db +from models.dataset import Dataset +from models.model import App, Message, AppAnnotationSetting, MessageAnnotation +from services.annotation_service import AppAnnotationService +from services.dataset_service import DatasetCollectionBindingService + +logger = logging.getLogger(__name__) + + +class AnnotationReplyFeature: + def query(self, app_record: App, + message: Message, + query: str, + user_id: str, + invoke_from: InvokeFrom) -> Optional[MessageAnnotation]: + """ + Query app annotations to reply + :param app_record: app record + :param message: message + :param query: query + :param user_id: user id + :param invoke_from: invoke from + :return: + """ + annotation_setting = db.session.query(AppAnnotationSetting).filter( + AppAnnotationSetting.app_id == app_record.id).first() + + if not annotation_setting: + return None + + collection_binding_detail = annotation_setting.collection_binding_detail + + try: + score_threshold = annotation_setting.score_threshold or 1 + embedding_provider_name = collection_binding_detail.provider_name + embedding_model_name = collection_binding_detail.model_name + + model_manager = ModelManager() + model_instance = model_manager.get_model_instance( + tenant_id=app_record.tenant_id, + provider=embedding_provider_name, + model_type=ModelType.TEXT_EMBEDDING, + model=embedding_model_name + ) + + # get embedding model + embeddings = CacheEmbedding(model_instance) + + dataset_collection_binding = DatasetCollectionBindingService.get_dataset_collection_binding( + embedding_provider_name, + embedding_model_name, + 'annotation' + ) + + dataset = Dataset( + id=app_record.id, + tenant_id=app_record.tenant_id, + indexing_technique='high_quality', + embedding_model_provider=embedding_provider_name, + embedding_model=embedding_model_name, + collection_binding_id=dataset_collection_binding.id + ) + + vector_index = VectorIndex( + dataset=dataset, + config=current_app.config, + embeddings=embeddings, + attributes=['doc_id', 'annotation_id', 'app_id'] + ) + + documents = vector_index.search( + query=query, + search_type='similarity_score_threshold', + search_kwargs={ + 'k': 1, + 'score_threshold': score_threshold, + 'filter': { + 'group_id': [dataset.id] + } + } + ) + + if documents: + annotation_id = documents[0].metadata['annotation_id'] + score = documents[0].metadata['score'] + annotation = AppAnnotationService.get_annotation_by_id(annotation_id) + if annotation: + if invoke_from in [InvokeFrom.SERVICE_API, InvokeFrom.WEB_APP]: + from_source = 'api' + else: + from_source = 'console' + + # insert annotation history + AppAnnotationService.add_annotation_history(annotation.id, + app_record.id, + annotation.question, + annotation.content, + query, + user_id, + message.id, + from_source, + score) + + return annotation + except Exception as e: + logger.warning(f'Query annotation failed, exception: {str(e)}.') + return None + + return None diff --git a/api/core/features/dataset_retrieval.py b/api/core/features/dataset_retrieval.py new file mode 100644 index 000000000..3476bf9ad --- /dev/null +++ b/api/core/features/dataset_retrieval.py @@ -0,0 +1,181 @@ +from typing import cast, Optional, List + +from langchain.tools import BaseTool + +from core.agent.agent_executor import PlanningStrategy, AgentConfiguration, AgentExecutor +from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler +from core.entities.application_entities import DatasetEntity, ModelConfigEntity, InvokeFrom, DatasetRetrieveConfigEntity +from core.memory.token_buffer_memory import TokenBufferMemory +from core.model_runtime.entities.model_entities import ModelFeature +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.tool.dataset_multi_retriever_tool import DatasetMultiRetrieverTool +from core.tool.dataset_retriever_tool import DatasetRetrieverTool +from extensions.ext_database import db +from models.dataset import Dataset + + +class DatasetRetrievalFeature: + def retrieve(self, tenant_id: str, + model_config: ModelConfigEntity, + config: DatasetEntity, + query: str, + invoke_from: InvokeFrom, + show_retrieve_source: bool, + hit_callback: DatasetIndexToolCallbackHandler, + memory: Optional[TokenBufferMemory] = None) -> Optional[str]: + """ + Retrieve dataset. + :param tenant_id: tenant id + :param model_config: model config + :param config: dataset config + :param query: query + :param invoke_from: invoke from + :param show_retrieve_source: show retrieve source + :param hit_callback: hit callback + :param memory: memory + :return: + """ + dataset_ids = config.dataset_ids + retrieve_config = config.retrieve_config + + # check model is support tool calling + model_type_instance = model_config.provider_model_bundle.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + + # get model schema + model_schema = model_type_instance.get_model_schema( + model=model_config.model, + credentials=model_config.credentials + ) + + if not model_schema: + return None + + planning_strategy = PlanningStrategy.REACT_ROUTER + features = model_schema.features + if features: + if ModelFeature.TOOL_CALL in features \ + or ModelFeature.MULTI_TOOL_CALL in features: + planning_strategy = PlanningStrategy.ROUTER + + dataset_retriever_tools = self.to_dataset_retriever_tool( + tenant_id=tenant_id, + dataset_ids=dataset_ids, + retrieve_config=retrieve_config, + return_resource=show_retrieve_source, + invoke_from=invoke_from, + hit_callback=hit_callback + ) + + if len(dataset_retriever_tools) == 0: + return None + + agent_configuration = AgentConfiguration( + strategy=planning_strategy, + model_config=model_config, + tools=dataset_retriever_tools, + memory=memory, + max_iterations=10, + max_execution_time=400.0, + early_stopping_method="generate" + ) + + agent_executor = AgentExecutor(agent_configuration) + + should_use_agent = agent_executor.should_use_agent(query) + if not should_use_agent: + return None + + result = agent_executor.run(query) + + return result.output + + def to_dataset_retriever_tool(self, tenant_id: str, + dataset_ids: list[str], + retrieve_config: DatasetRetrieveConfigEntity, + return_resource: bool, + invoke_from: InvokeFrom, + hit_callback: DatasetIndexToolCallbackHandler) \ + -> Optional[List[BaseTool]]: + """ + A dataset tool is a tool that can be used to retrieve information from a dataset + :param tenant_id: tenant id + :param dataset_ids: dataset ids + :param retrieve_config: retrieve config + :param return_resource: return resource + :param invoke_from: invoke from + :param hit_callback: hit callback + """ + tools = [] + available_datasets = [] + for dataset_id in dataset_ids: + # get dataset from dataset id + dataset = db.session.query(Dataset).filter( + Dataset.tenant_id == tenant_id, + Dataset.id == dataset_id + ).first() + + # pass if dataset is not available + if not dataset: + continue + + # pass if dataset is not available + if (dataset and dataset.available_document_count == 0 + and dataset.available_document_count == 0): + continue + + available_datasets.append(dataset) + + if retrieve_config.retrieve_strategy == DatasetRetrieveConfigEntity.RetrieveStrategy.SINGLE: + # get retrieval model config + default_retrieval_model = { + 'search_method': 'semantic_search', + 'reranking_enable': False, + 'reranking_model': { + 'reranking_provider_name': '', + 'reranking_model_name': '' + }, + 'top_k': 2, + 'score_threshold_enabled': False + } + + for dataset in available_datasets: + retrieval_model_config = dataset.retrieval_model \ + if dataset.retrieval_model else default_retrieval_model + + # get top k + top_k = retrieval_model_config['top_k'] + + # get score threshold + score_threshold = None + score_threshold_enabled = retrieval_model_config.get("score_threshold_enabled") + if score_threshold_enabled: + score_threshold = retrieval_model_config.get("score_threshold") + + tool = DatasetRetrieverTool.from_dataset( + dataset=dataset, + top_k=top_k, + score_threshold=score_threshold, + hit_callbacks=[hit_callback], + return_resource=return_resource, + retriever_from=invoke_from.to_source() + ) + + tools.append(tool) + elif retrieve_config.retrieve_strategy == DatasetRetrieveConfigEntity.RetrieveStrategy.MULTIPLE: + tool = DatasetMultiRetrieverTool.from_dataset( + dataset_ids=[dataset.id for dataset in available_datasets], + tenant_id=tenant_id, + top_k=retrieve_config.top_k or 2, + score_threshold=(retrieve_config.score_threshold or 0.5) + if retrieve_config.reranking_model.get('score_threshold_enabled', False) else None, + hit_callbacks=[hit_callback], + return_resource=return_resource, + retriever_from=invoke_from.to_source(), + reranking_provider_name=retrieve_config.reranking_model.get('reranking_provider_name'), + reranking_model_name=retrieve_config.reranking_model.get('reranking_model_name') + ) + + tools.append(tool) + + return tools diff --git a/api/core/features/external_data_fetch.py b/api/core/features/external_data_fetch.py new file mode 100644 index 000000000..272b7cee9 --- /dev/null +++ b/api/core/features/external_data_fetch.py @@ -0,0 +1,96 @@ +import concurrent +import json +import logging + +from concurrent.futures import ThreadPoolExecutor +from typing import Tuple, Optional + +from flask import current_app, Flask + +from core.entities.application_entities import ExternalDataVariableEntity +from core.external_data_tool.factory import ExternalDataToolFactory + +logger = logging.getLogger(__name__) + + +class ExternalDataFetchFeature: + def fetch(self, tenant_id: str, + app_id: str, + external_data_tools: list[ExternalDataVariableEntity], + inputs: dict, + query: str) -> dict: + """ + Fill in variable inputs from external data tools if exists. + + :param tenant_id: workspace id + :param app_id: app id + :param external_data_tools: external data tools configs + :param inputs: the inputs + :param query: the query + :return: the filled inputs + """ + # Group tools by type and config + grouped_tools = {} + for tool in external_data_tools: + tool_key = (tool.type, json.dumps(tool.config, sort_keys=True)) + grouped_tools.setdefault(tool_key, []).append(tool) + + results = {} + with ThreadPoolExecutor() as executor: + futures = {} + for tool in external_data_tools: + future = executor.submit( + self._query_external_data_tool, + current_app._get_current_object(), + tenant_id, + app_id, + tool, + inputs, + query + ) + + futures[future] = tool + + for future in concurrent.futures.as_completed(futures): + tool_variable, result = future.result() + results[tool_variable] = result + + inputs.update(results) + return inputs + + def _query_external_data_tool(self, flask_app: Flask, + tenant_id: str, + app_id: str, + external_data_tool: ExternalDataVariableEntity, + inputs: dict, + query: str) -> Tuple[Optional[str], Optional[str]]: + """ + Query external data tool. + :param flask_app: flask app + :param tenant_id: tenant id + :param app_id: app id + :param external_data_tool: external data tool + :param inputs: inputs + :param query: query + :return: + """ + with flask_app.app_context(): + tool_variable = external_data_tool.variable + tool_type = external_data_tool.type + tool_config = external_data_tool.config + + external_data_tool_factory = ExternalDataToolFactory( + name=tool_type, + tenant_id=tenant_id, + app_id=app_id, + variable=tool_variable, + config=tool_config + ) + + # query external data tool + result = external_data_tool_factory.query( + inputs=inputs, + query=query + ) + + return tool_variable, result diff --git a/api/core/features/hosting_moderation.py b/api/core/features/hosting_moderation.py new file mode 100644 index 000000000..d8ae7adca --- /dev/null +++ b/api/core/features/hosting_moderation.py @@ -0,0 +1,32 @@ +import logging + +from core.entities.application_entities import ApplicationGenerateEntity +from core.helper import moderation +from core.model_runtime.entities.message_entities import PromptMessage + +logger = logging.getLogger(__name__) + + +class HostingModerationFeature: + def check(self, application_generate_entity: ApplicationGenerateEntity, + prompt_messages: list[PromptMessage]) -> bool: + """ + Check hosting moderation + :param application_generate_entity: application generate entity + :param prompt_messages: prompt messages + :return: + """ + app_orchestration_config = application_generate_entity.app_orchestration_config_entity + model_config = app_orchestration_config.model_config + + text = "" + for prompt_message in prompt_messages: + if isinstance(prompt_message.content, str): + text += prompt_message.content + "\n" + + moderation_result = moderation.check_moderation( + model_config, + text + ) + + return moderation_result diff --git a/api/core/features/moderation.py b/api/core/features/moderation.py new file mode 100644 index 000000000..9735fad0e --- /dev/null +++ b/api/core/features/moderation.py @@ -0,0 +1,50 @@ +import logging +from typing import Tuple + +from core.entities.application_entities import AppOrchestrationConfigEntity +from core.moderation.base import ModerationAction, ModerationException +from core.moderation.factory import ModerationFactory + +logger = logging.getLogger(__name__) + + +class ModerationFeature: + def check(self, app_id: str, + tenant_id: str, + app_orchestration_config_entity: AppOrchestrationConfigEntity, + inputs: dict, + query: str) -> Tuple[bool, dict, str]: + """ + Process sensitive_word_avoidance. + :param app_id: app id + :param tenant_id: tenant id + :param app_orchestration_config_entity: app orchestration config entity + :param inputs: inputs + :param query: query + :return: + """ + if not app_orchestration_config_entity.sensitive_word_avoidance: + return False, inputs, query + + sensitive_word_avoidance_config = app_orchestration_config_entity.sensitive_word_avoidance + moderation_type = sensitive_word_avoidance_config.type + + moderation_factory = ModerationFactory( + name=moderation_type, + app_id=app_id, + tenant_id=tenant_id, + config=sensitive_word_avoidance_config.config + ) + + moderation_result = moderation_factory.moderation_for_inputs(inputs, query) + + if not moderation_result.flagged: + return False, inputs, query + + if moderation_result.action == ModerationAction.DIRECT_OUTPUT: + raise ModerationException(moderation_result.preset_response) + elif moderation_result.action == ModerationAction.OVERRIDED: + inputs = moderation_result.inputs + query = moderation_result.query + + return True, inputs, query diff --git a/api/core/file/file_obj.py b/api/core/file/file_obj.py index e2487e7ed..7f6e79b15 100644 --- a/api/core/file/file_obj.py +++ b/api/core/file/file_obj.py @@ -4,7 +4,7 @@ from typing import Optional from pydantic import BaseModel from core.file.upload_file_parser import UploadFileParser -from core.model_providers.models.entity.message import PromptMessageFile, ImagePromptMessageFile +from core.model_runtime.entities.message_entities import ImagePromptMessageContent from extensions.ext_database import db from models.model import UploadFile @@ -50,14 +50,14 @@ class FileObj(BaseModel): return self._get_data(force_url=True) @property - def prompt_message_file(self) -> PromptMessageFile: + def prompt_message_content(self) -> ImagePromptMessageContent: if self.type == FileType.IMAGE: image_config = self.file_config.get('image') - return ImagePromptMessageFile( + return ImagePromptMessageContent( data=self.data, - detail=ImagePromptMessageFile.DETAIL.HIGH - if image_config.get("detail") == "high" else ImagePromptMessageFile.DETAIL.LOW + detail=ImagePromptMessageContent.DETAIL.HIGH + if image_config.get("detail") == "high" else ImagePromptMessageContent.DETAIL.LOW ) def _get_data(self, force_url: bool = False) -> Optional[str]: diff --git a/api/core/generator/llm_generator.py b/api/core/generator/llm_generator.py index 87a934e55..acb7a6d2c 100644 --- a/api/core/generator/llm_generator.py +++ b/api/core/generator/llm_generator.py @@ -3,10 +3,10 @@ import logging from langchain.schema import OutputParserException -from core.model_providers.error import LLMError, ProviderTokenNotInitError -from core.model_providers.model_factory import ModelFactory -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs +from core.model_manager import ModelManager +from core.model_runtime.entities.message_entities import UserPromptMessage, SystemPromptMessage +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError from core.prompt.output_parser.rule_config_generator import RuleConfigGeneratorOutputParser from core.prompt.output_parser.suggested_questions_after_answer import SuggestedQuestionsAfterAnswerOutputParser @@ -26,17 +26,22 @@ class LLMGenerator: prompt += query + "\n" - model_instance = ModelFactory.get_text_generation_model( + model_manager = ModelManager() + model_instance = model_manager.get_default_model_instance( tenant_id=tenant_id, - model_kwargs=ModelKwargs( - temperature=1, - max_tokens=100 - ) + model_type=ModelType.LLM, ) - prompts = [PromptMessage(content=prompt)] - response = model_instance.run(prompts) - answer = response.content + prompts = [UserPromptMessage(content=prompt)] + response = model_instance.invoke_llm( + prompt_messages=prompts, + model_parameters={ + "max_tokens": 100, + "temperature": 1 + }, + stream=False + ) + answer = response.message.content result_dict = json.loads(answer) answer = result_dict['Your Output'] @@ -62,22 +67,28 @@ class LLMGenerator: }) try: - model_instance = ModelFactory.get_text_generation_model( + model_manager = ModelManager() + model_instance = model_manager.get_default_model_instance( tenant_id=tenant_id, - model_kwargs=ModelKwargs( - max_tokens=256, - temperature=0 - ) + model_type=ModelType.LLM, ) - except ProviderTokenNotInitError: + except InvokeAuthorizationError: return [] - prompt_messages = [PromptMessage(content=prompt)] + prompt_messages = [UserPromptMessage(content=prompt)] try: - output = model_instance.run(prompt_messages) - questions = output_parser.parse(output.content) - except LLMError: + response = model_instance.invoke_llm( + prompt_messages=prompt_messages, + model_parameters={ + "max_tokens": 256, + "temperature": 0 + }, + stream=False + ) + + questions = output_parser.parse(response.message.content) + except InvokeError: questions = [] except Exception as e: logging.exception(e) @@ -105,20 +116,26 @@ class LLMGenerator: remove_template_variables=False ) - model_instance = ModelFactory.get_text_generation_model( + model_manager = ModelManager() + model_instance = model_manager.get_default_model_instance( tenant_id=tenant_id, - model_kwargs=ModelKwargs( - max_tokens=512, - temperature=0 - ) + model_type=ModelType.LLM, ) - prompt_messages = [PromptMessage(content=prompt)] + prompt_messages = [UserPromptMessage(content=prompt)] try: - output = model_instance.run(prompt_messages) - rule_config = output_parser.parse(output.content) - except LLMError as e: + response = model_instance.invoke_llm( + prompt_messages=prompt_messages, + model_parameters={ + "max_tokens": 512, + "temperature": 0 + }, + stream=False + ) + + rule_config = output_parser.parse(response.message.content) + except InvokeError as e: raise e except OutputParserException: raise ValueError('Please give a valid input for intended audience or hoping to solve problems.') @@ -136,18 +153,24 @@ class LLMGenerator: def generate_qa_document(cls, tenant_id: str, query, document_language: str): prompt = GENERATOR_QA_PROMPT.format(language=document_language) - model_instance = ModelFactory.get_text_generation_model( + model_manager = ModelManager() + model_instance = model_manager.get_default_model_instance( tenant_id=tenant_id, - model_kwargs=ModelKwargs( - max_tokens=2000 - ) + model_type=ModelType.LLM, ) - prompts = [ - PromptMessage(content=prompt, type=MessageType.SYSTEM), - PromptMessage(content=query) + prompt_messages = [ + SystemPromptMessage(content=prompt), + UserPromptMessage(content=query) ] - response = model_instance.run(prompts) - answer = response.content + response = model_instance.invoke_llm( + prompt_messages=prompt_messages, + model_parameters={ + "max_tokens": 2000 + }, + stream=False + ) + + answer = response.message.content return answer.strip() diff --git a/api/core/helper/encrypter.py b/api/core/helper/encrypter.py index fa94867ba..4d57d2d5f 100644 --- a/api/core/helper/encrypter.py +++ b/api/core/helper/encrypter.py @@ -18,3 +18,17 @@ def encrypt_token(tenant_id: str, token: str): def decrypt_token(tenant_id: str, token: str): return rsa.decrypt(base64.b64decode(token), tenant_id) + + +def batch_decrypt_token(tenant_id: str, tokens: list[str]): + rsa_key, cipher_rsa = rsa.get_decrypt_decoding(tenant_id) + + return [rsa.decrypt_token_with_decoding(base64.b64decode(token), rsa_key, cipher_rsa) for token in tokens] + + +def get_decrypt_decoding(tenant_id: str): + return rsa.get_decrypt_decoding(tenant_id) + + +def decrypt_token_with_decoding(token: str, rsa_key, cipher_rsa): + return rsa.decrypt_token_with_decoding(base64.b64decode(token), rsa_key, cipher_rsa) diff --git a/api/core/helper/lru_cache.py b/api/core/helper/lru_cache.py new file mode 100644 index 000000000..518962c16 --- /dev/null +++ b/api/core/helper/lru_cache.py @@ -0,0 +1,22 @@ +from collections import OrderedDict +from typing import Any + + +class LRUCache: + def __init__(self, capacity: int): + self.cache = OrderedDict() + self.capacity = capacity + + def get(self, key: Any) -> Any: + if key not in self.cache: + return None + else: + self.cache.move_to_end(key) # move the key to the end of the OrderedDict + return self.cache[key] + + def put(self, key: Any, value: Any) -> None: + if key in self.cache: + self.cache.move_to_end(key) + self.cache[key] = value + if len(self.cache) > self.capacity: + self.cache.popitem(last=False) # pop the first item diff --git a/api/core/helper/moderation.py b/api/core/helper/moderation.py index ac71af9ef..86d6b498d 100644 --- a/api/core/helper/moderation.py +++ b/api/core/helper/moderation.py @@ -1,18 +1,27 @@ import logging import random -import openai - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.providers.hosted import hosted_config, hosted_model_providers +from core.entities.application_entities import ModelConfigEntity +from core.model_runtime.errors.invoke import InvokeBadRequestError +from core.model_runtime.model_providers.openai.moderation.moderation import OpenAIModerationModel +from extensions.ext_hosting_provider import hosting_configuration from models.provider import ProviderType +logger = logging.getLogger(__name__) + + +def check_moderation(model_config: ModelConfigEntity, text: str) -> bool: + moderation_config = hosting_configuration.moderation_config + if (moderation_config and moderation_config.enabled is True + and 'openai' in hosting_configuration.provider_map + and hosting_configuration.provider_map['openai'].enabled is True + ): + using_provider_type = model_config.provider_model_bundle.configuration.using_provider_type + provider_name = model_config.provider + if using_provider_type == ProviderType.SYSTEM \ + and provider_name in moderation_config.providers: + hosting_openai_config = hosting_configuration.provider_map['openai'] -def check_moderation(model_provider: BaseModelProvider, text: str) -> bool: - if hosted_config.moderation.enabled is True and hosted_model_providers.openai: - if model_provider.provider.provider_type == ProviderType.SYSTEM.value \ - and model_provider.provider_name in hosted_config.moderation.providers: # 2000 text per chunk length = 2000 text_chunks = [text[i:i + length] for i in range(0, len(text), length)] @@ -23,14 +32,17 @@ def check_moderation(model_provider: BaseModelProvider, text: str) -> bool: text_chunk = random.choice(text_chunks) try: - moderation_result = openai.Moderation.create(input=text_chunk, - api_key=hosted_model_providers.openai.api_key) + model_type_instance = OpenAIModerationModel() + moderation_result = model_type_instance.invoke( + model='text-moderation-stable', + credentials=hosting_openai_config.credentials, + text=text_chunk + ) + + if moderation_result is True: + return True except Exception as ex: - logging.exception(ex) - raise LLMBadRequestError('Rate limit exceeded, please try again later.') + logger.exception(ex) + raise InvokeBadRequestError('Rate limit exceeded, please try again later.') - for result in moderation_result.results: - if result['flagged'] is True: - return False - - return True + return False diff --git a/api/core/hosting_configuration.py b/api/core/hosting_configuration.py new file mode 100644 index 000000000..ad58dd382 --- /dev/null +++ b/api/core/hosting_configuration.py @@ -0,0 +1,213 @@ +import os +from typing import Optional + +from flask import Flask +from pydantic import BaseModel + +from core.entities.provider_entities import QuotaUnit +from models.provider import ProviderQuotaType + + +class HostingQuota(BaseModel): + quota_type: ProviderQuotaType + restrict_llms: list[str] = [] + + +class TrialHostingQuota(HostingQuota): + quota_type: ProviderQuotaType = ProviderQuotaType.TRIAL + quota_limit: int = 0 + """Quota limit for the hosting provider models. -1 means unlimited.""" + + +class PaidHostingQuota(HostingQuota): + quota_type: ProviderQuotaType = ProviderQuotaType.PAID + stripe_price_id: str = None + increase_quota: int = 1 + min_quantity: int = 20 + max_quantity: int = 100 + + +class FreeHostingQuota(HostingQuota): + quota_type: ProviderQuotaType = ProviderQuotaType.FREE + + +class HostingProvider(BaseModel): + enabled: bool = False + credentials: Optional[dict] = None + quota_unit: Optional[QuotaUnit] = None + quotas: list[HostingQuota] = [] + + +class HostedModerationConfig(BaseModel): + enabled: bool = False + providers: list[str] = [] + + +class HostingConfiguration: + provider_map: dict[str, HostingProvider] = {} + moderation_config: HostedModerationConfig = None + + def init_app(self, app: Flask): + if app.config.get('EDITION') != 'CLOUD': + return + + self.provider_map["openai"] = self.init_openai() + self.provider_map["anthropic"] = self.init_anthropic() + self.provider_map["minimax"] = self.init_minimax() + self.provider_map["spark"] = self.init_spark() + self.provider_map["zhipuai"] = self.init_zhipuai() + + self.moderation_config = self.init_moderation_config() + + def init_openai(self) -> HostingProvider: + quota_unit = QuotaUnit.TIMES + if os.environ.get("HOSTED_OPENAI_ENABLED") and os.environ.get("HOSTED_OPENAI_ENABLED").lower() == 'true': + credentials = { + "openai_api_key": os.environ.get("HOSTED_OPENAI_API_KEY"), + } + + if os.environ.get("HOSTED_OPENAI_API_BASE"): + credentials["openai_api_base"] = os.environ.get("HOSTED_OPENAI_API_BASE") + + if os.environ.get("HOSTED_OPENAI_API_ORGANIZATION"): + credentials["openai_organization"] = os.environ.get("HOSTED_OPENAI_API_ORGANIZATION") + + quotas = [] + hosted_quota_limit = int(os.environ.get("HOSTED_OPENAI_QUOTA_LIMIT", "200")) + if hosted_quota_limit != -1 or hosted_quota_limit > 0: + trial_quota = TrialHostingQuota( + quota_limit=hosted_quota_limit, + restrict_llms=[ + "gpt-3.5-turbo", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-instruct", + "gpt-3.5-turbo-16k", + "text-davinci-003" + ] + ) + quotas.append(trial_quota) + + if os.environ.get("HOSTED_OPENAI_PAID_ENABLED") and os.environ.get( + "HOSTED_OPENAI_PAID_ENABLED").lower() == 'true': + paid_quota = PaidHostingQuota( + stripe_price_id=os.environ.get("HOSTED_OPENAI_PAID_STRIPE_PRICE_ID"), + increase_quota=int(os.environ.get("HOSTED_OPENAI_PAID_INCREASE_QUOTA", "1")), + min_quantity=int(os.environ.get("HOSTED_OPENAI_PAID_MIN_QUANTITY", "1")), + max_quantity=int(os.environ.get("HOSTED_OPENAI_PAID_MAX_QUANTITY", "1")) + ) + quotas.append(paid_quota) + + return HostingProvider( + enabled=True, + credentials=credentials, + quota_unit=quota_unit, + quotas=quotas + ) + + return HostingProvider( + enabled=False, + quota_unit=quota_unit, + ) + + def init_anthropic(self) -> HostingProvider: + quota_unit = QuotaUnit.TOKENS + if os.environ.get("HOSTED_ANTHROPIC_ENABLED") and os.environ.get("HOSTED_ANTHROPIC_ENABLED").lower() == 'true': + credentials = { + "anthropic_api_key": os.environ.get("HOSTED_ANTHROPIC_API_KEY"), + } + + if os.environ.get("HOSTED_ANTHROPIC_API_BASE"): + credentials["anthropic_api_url"] = os.environ.get("HOSTED_ANTHROPIC_API_BASE") + + quotas = [] + hosted_quota_limit = int(os.environ.get("HOSTED_ANTHROPIC_QUOTA_LIMIT", "0")) + if hosted_quota_limit != -1 or hosted_quota_limit > 0: + trial_quota = TrialHostingQuota( + quota_limit=hosted_quota_limit + ) + quotas.append(trial_quota) + + if os.environ.get("HOSTED_ANTHROPIC_PAID_ENABLED") and os.environ.get( + "HOSTED_ANTHROPIC_PAID_ENABLED").lower() == 'true': + paid_quota = PaidHostingQuota( + stripe_price_id=os.environ.get("HOSTED_ANTHROPIC_PAID_STRIPE_PRICE_ID"), + increase_quota=int(os.environ.get("HOSTED_ANTHROPIC_PAID_INCREASE_QUOTA", "1000000")), + min_quantity=int(os.environ.get("HOSTED_ANTHROPIC_PAID_MIN_QUANTITY", "20")), + max_quantity=int(os.environ.get("HOSTED_ANTHROPIC_PAID_MAX_QUANTITY", "100")) + ) + quotas.append(paid_quota) + + return HostingProvider( + enabled=True, + credentials=credentials, + quota_unit=quota_unit, + quotas=quotas + ) + + return HostingProvider( + enabled=False, + quota_unit=quota_unit, + ) + + def init_minimax(self) -> HostingProvider: + quota_unit = QuotaUnit.TOKENS + if os.environ.get("HOSTED_MINIMAX_ENABLED") and os.environ.get("HOSTED_MINIMAX_ENABLED").lower() == 'true': + quotas = [FreeHostingQuota()] + + return HostingProvider( + enabled=True, + credentials=None, # use credentials from the provider + quota_unit=quota_unit, + quotas=quotas + ) + + return HostingProvider( + enabled=False, + quota_unit=quota_unit, + ) + + def init_spark(self) -> HostingProvider: + quota_unit = QuotaUnit.TOKENS + if os.environ.get("HOSTED_SPARK_ENABLED") and os.environ.get("HOSTED_SPARK_ENABLED").lower() == 'true': + quotas = [FreeHostingQuota()] + + return HostingProvider( + enabled=True, + credentials=None, # use credentials from the provider + quota_unit=quota_unit, + quotas=quotas + ) + + return HostingProvider( + enabled=False, + quota_unit=quota_unit, + ) + + def init_zhipuai(self) -> HostingProvider: + quota_unit = QuotaUnit.TOKENS + if os.environ.get("HOSTED_ZHIPUAI_ENABLED") and os.environ.get("HOSTED_ZHIPUAI_ENABLED").lower() == 'true': + quotas = [FreeHostingQuota()] + + return HostingProvider( + enabled=True, + credentials=None, # use credentials from the provider + quota_unit=quota_unit, + quotas=quotas + ) + + return HostingProvider( + enabled=False, + quota_unit=quota_unit, + ) + + def init_moderation_config(self) -> HostedModerationConfig: + if os.environ.get("HOSTED_MODERATION_ENABLED") and os.environ.get("HOSTED_MODERATION_ENABLED").lower() == 'true' \ + and os.environ.get("HOSTED_MODERATION_PROVIDERS"): + return HostedModerationConfig( + enabled=True, + providers=os.environ.get("HOSTED_MODERATION_PROVIDERS").split(',') + ) + + return HostedModerationConfig( + enabled=False + ) diff --git a/api/core/index/index.py b/api/core/index/index.py index be5ca3151..ce11171d0 100644 --- a/api/core/index/index.py +++ b/api/core/index/index.py @@ -1,18 +1,12 @@ -import json - from flask import current_app from langchain.embeddings import OpenAIEmbeddings from core.embedding.cached_embedding import CacheEmbedding from core.index.keyword_table_index.keyword_table_index import KeywordTableIndex, KeywordTableConfig from core.index.vector_index.vector_index import VectorIndex -from core.model_providers.model_factory import ModelFactory -from core.model_providers.models.embedding.openai_embedding import OpenAIEmbedding -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.openai_model import OpenAIModel -from core.model_providers.providers.openai_provider import OpenAIProvider +from core.model_manager import ModelManager +from core.model_runtime.entities.model_entities import ModelType from models.dataset import Dataset -from models.provider import Provider, ProviderType class IndexBuilder: @@ -22,10 +16,12 @@ class IndexBuilder: if not ignore_high_quality_check and dataset.indexing_technique != 'high_quality': return None - embedding_model = ModelFactory.get_embedding_model( + model_manager = ModelManager() + embedding_model = model_manager.get_model_instance( tenant_id=dataset.tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + model_type=ModelType.TEXT_EMBEDDING, + provider=dataset.embedding_model_provider, + model=dataset.embedding_model ) embeddings = CacheEmbedding(embedding_model) diff --git a/api/core/indexing_runner.py b/api/core/indexing_runner.py index 89fba99ca..d7e0843c8 100644 --- a/api/core/indexing_runner.py +++ b/api/core/indexing_runner.py @@ -18,9 +18,11 @@ from core.data_loader.loader.notion import NotionLoader from core.docstore.dataset_docstore import DatasetDocumentStore from core.generator.llm_generator import LLMGenerator from core.index.index import IndexBuilder -from core.model_providers.error import ProviderTokenNotInitError -from core.model_providers.model_factory import ModelFactory -from core.model_providers.models.entity.message import MessageType +from core.model_manager import ModelManager +from core.errors.error import ProviderTokenNotInitError +from core.model_runtime.entities.model_entities import ModelType, PriceType +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel from core.spiltter.fixed_text_splitter import FixedRecursiveCharacterTextSplitter from extensions.ext_database import db from extensions.ext_redis import redis_client @@ -36,6 +38,7 @@ class IndexingRunner: def __init__(self): self.storage = storage + self.model_manager = ModelManager() def run(self, dataset_documents: List[DatasetDocument]): """Run the indexing process.""" @@ -210,7 +213,7 @@ class IndexingRunner: """ Estimate the indexing for the document. """ - embedding_model = None + embedding_model_instance = None if dataset_id: dataset = Dataset.query.filter_by( id=dataset_id @@ -218,15 +221,17 @@ class IndexingRunner: if not dataset: raise ValueError('Dataset not found.') if dataset.indexing_technique == 'high_quality' or indexing_technique == 'high_quality': - embedding_model = ModelFactory.get_embedding_model( - tenant_id=dataset.tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + embedding_model_instance = self.model_manager.get_model_instance( + tenant_id=tenant_id, + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) else: if indexing_technique == 'high_quality': - embedding_model = ModelFactory.get_embedding_model( - tenant_id=tenant_id + embedding_model_instance = self.model_manager.get_default_model_instance( + tenant_id=tenant_id, + model_type=ModelType.TEXT_EMBEDDING, ) tokens = 0 preview_texts = [] @@ -255,32 +260,56 @@ class IndexingRunner: for document in documents: if len(preview_texts) < 5: preview_texts.append(document.page_content) - if indexing_technique == 'high_quality' or embedding_model: - tokens += embedding_model.get_num_tokens(self.filter_string(document.page_content)) + if indexing_technique == 'high_quality' or embedding_model_instance: + embedding_model_type_instance = embedding_model_instance.model_type_instance + embedding_model_type_instance = cast(TextEmbeddingModel, embedding_model_type_instance) + tokens += embedding_model_type_instance.get_num_tokens( + model=embedding_model_instance.model, + credentials=embedding_model_instance.credentials, + texts=[self.filter_string(document.page_content)] + ) if doc_form and doc_form == 'qa_model': - text_generation_model = ModelFactory.get_text_generation_model( - tenant_id=tenant_id + model_instance = self.model_manager.get_default_model_instance( + tenant_id=tenant_id, + model_type=ModelType.LLM ) + + model_type_instance = model_instance.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) + if len(preview_texts) > 0: # qa model document response = LLMGenerator.generate_qa_document(current_user.current_tenant_id, preview_texts[0], doc_language) document_qa_list = self.format_split_text(response) + price_info = model_type_instance.get_price( + model=model_instance.model, + credentials=model_instance.credentials, + price_type=PriceType.INPUT, + tokens=total_segments * 2000, + ) return { "total_segments": total_segments * 20, "tokens": total_segments * 2000, - "total_price": '{:f}'.format( - text_generation_model.calc_tokens_price(total_segments * 2000, MessageType.USER)), - "currency": embedding_model.get_currency(), + "total_price": '{:f}'.format(price_info.total_amount), + "currency": price_info.currency, "qa_preview": document_qa_list, "preview": preview_texts } + if embedding_model_instance: + embedding_model_type_instance = cast(TextEmbeddingModel, embedding_model_instance.model_type_instance) + embedding_price_info = embedding_model_type_instance.get_price( + model=embedding_model_instance.model, + credentials=embedding_model_instance.credentials, + price_type=PriceType.INPUT, + tokens=tokens + ) return { "total_segments": total_segments, "tokens": tokens, - "total_price": '{:f}'.format(embedding_model.calc_tokens_price(tokens)) if embedding_model else 0, - "currency": embedding_model.get_currency() if embedding_model else 'USD', + "total_price": '{:f}'.format(embedding_price_info.total_amount) if embedding_model_instance else 0, + "currency": embedding_price_info.currency if embedding_model_instance else 'USD', "preview": preview_texts } @@ -290,7 +319,7 @@ class IndexingRunner: """ Estimate the indexing for the document. """ - embedding_model = None + embedding_model_instance = None if dataset_id: dataset = Dataset.query.filter_by( id=dataset_id @@ -298,15 +327,17 @@ class IndexingRunner: if not dataset: raise ValueError('Dataset not found.') if dataset.indexing_technique == 'high_quality' or indexing_technique == 'high_quality': - embedding_model = ModelFactory.get_embedding_model( - tenant_id=dataset.tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + embedding_model_instance = self.model_manager.get_model_instance( + tenant_id=tenant_id, + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) else: if indexing_technique == 'high_quality': - embedding_model = ModelFactory.get_embedding_model( - tenant_id=tenant_id + embedding_model_instance = self.model_manager.get_default_model_instance( + tenant_id=tenant_id, + model_type=ModelType.TEXT_EMBEDDING ) # load data from notion tokens = 0 @@ -349,35 +380,63 @@ class IndexingRunner: processing_rule=processing_rule ) total_segments += len(documents) + + embedding_model_type_instance = embedding_model_instance.model_type_instance + embedding_model_type_instance = cast(TextEmbeddingModel, embedding_model_type_instance) + for document in documents: if len(preview_texts) < 5: preview_texts.append(document.page_content) - if indexing_technique == 'high_quality' or embedding_model: - tokens += embedding_model.get_num_tokens(document.page_content) + if indexing_technique == 'high_quality' or embedding_model_instance: + tokens += embedding_model_type_instance.get_num_tokens( + model=embedding_model_instance.model, + credentials=embedding_model_instance.credentials, + texts=[document.page_content] + ) if doc_form and doc_form == 'qa_model': - text_generation_model = ModelFactory.get_text_generation_model( - tenant_id=tenant_id + model_instance = self.model_manager.get_default_model_instance( + tenant_id=tenant_id, + model_type=ModelType.LLM ) + + model_type_instance = model_instance.model_type_instance + model_type_instance = cast(LargeLanguageModel, model_type_instance) if len(preview_texts) > 0: # qa model document response = LLMGenerator.generate_qa_document(current_user.current_tenant_id, preview_texts[0], doc_language) document_qa_list = self.format_split_text(response) + + price_info = model_type_instance.get_price( + model=model_instance.model, + credentials=model_instance.credentials, + price_type=PriceType.INPUT, + tokens=total_segments * 2000, + ) + return { "total_segments": total_segments * 20, "tokens": total_segments * 2000, - "total_price": '{:f}'.format( - text_generation_model.calc_tokens_price(total_segments * 2000, MessageType.USER)), - "currency": embedding_model.get_currency(), + "total_price": '{:f}'.format(price_info.total_amount), + "currency": price_info.currency, "qa_preview": document_qa_list, "preview": preview_texts } + + embedding_model_type_instance = embedding_model_instance.model_type_instance + embedding_model_type_instance = cast(TextEmbeddingModel, embedding_model_type_instance) + embedding_price_info = embedding_model_type_instance.get_price( + model=embedding_model_instance.model, + credentials=embedding_model_instance.credentials, + price_type=PriceType.INPUT, + tokens=tokens + ) return { "total_segments": total_segments, "tokens": tokens, - "total_price": '{:f}'.format(embedding_model.calc_tokens_price(tokens)) if embedding_model else 0, - "currency": embedding_model.get_currency() if embedding_model else 'USD', + "total_price": '{:f}'.format(embedding_price_info.total_amount) if embedding_model_instance else 0, + "currency": embedding_price_info.currency if embedding_model_instance else 'USD', "preview": preview_texts } @@ -656,25 +715,36 @@ class IndexingRunner: """ vector_index = IndexBuilder.get_index(dataset, 'high_quality') keyword_table_index = IndexBuilder.get_index(dataset, 'economy') - embedding_model = None + embedding_model_instance = None if dataset.indexing_technique == 'high_quality': - embedding_model = ModelFactory.get_embedding_model( + embedding_model_instance = self.model_manager.get_model_instance( tenant_id=dataset.tenant_id, - model_provider_name=dataset.embedding_model_provider, - model_name=dataset.embedding_model + provider=dataset.embedding_model_provider, + model_type=ModelType.TEXT_EMBEDDING, + model=dataset.embedding_model ) # chunk nodes by chunk size indexing_start_at = time.perf_counter() tokens = 0 chunk_size = 100 + + embedding_model_type_instance = None + if embedding_model_instance: + embedding_model_type_instance = embedding_model_instance.model_type_instance + embedding_model_type_instance = cast(TextEmbeddingModel, embedding_model_type_instance) + for i in range(0, len(documents), chunk_size): # check document is paused self._check_document_paused_status(dataset_document.id) chunk_documents = documents[i:i + chunk_size] - if dataset.indexing_technique == 'high_quality' or embedding_model: + if dataset.indexing_technique == 'high_quality' or embedding_model_type_instance: tokens += sum( - embedding_model.get_num_tokens(document.page_content) + embedding_model_type_instance.get_num_tokens( + embedding_model_instance.model, + embedding_model_instance.credentials, + [document.page_content] + ) for document in chunk_documents ) diff --git a/api/core/memory/read_only_conversation_token_db_buffer_shared_memory.py b/api/core/memory/read_only_conversation_token_db_buffer_shared_memory.py deleted file mode 100644 index 9840c5c22..000000000 --- a/api/core/memory/read_only_conversation_token_db_buffer_shared_memory.py +++ /dev/null @@ -1,95 +0,0 @@ -from typing import Any, List, Dict - -from langchain.memory.chat_memory import BaseChatMemory -from langchain.schema import get_buffer_string, BaseMessage - -from core.file.message_file_parser import MessageFileParser -from core.model_providers.models.entity.message import PromptMessage, MessageType, to_lc_messages -from core.model_providers.models.llm.base import BaseLLM -from extensions.ext_database import db -from models.model import Conversation, Message - - -class ReadOnlyConversationTokenDBBufferSharedMemory(BaseChatMemory): - conversation: Conversation - human_prefix: str = "Human" - ai_prefix: str = "Assistant" - model_instance: BaseLLM - memory_key: str = "chat_history" - max_token_limit: int = 2000 - message_limit: int = 10 - - @property - def buffer(self) -> List[BaseMessage]: - """String buffer of memory.""" - app_model = self.conversation.app - - # fetch limited messages desc, and return reversed - messages = db.session.query(Message).filter( - Message.conversation_id == self.conversation.id, - Message.answer != '' - ).order_by(Message.created_at.desc()).limit(self.message_limit).all() - - messages = list(reversed(messages)) - message_file_parser = MessageFileParser(tenant_id=app_model.tenant_id, app_id=self.conversation.app_id) - - chat_messages: List[PromptMessage] = [] - for message in messages: - files = message.message_files - if files: - file_objs = message_file_parser.transform_message_files( - files, message.app_model_config - ) - - prompt_message_files = [file_obj.prompt_message_file for file_obj in file_objs] - chat_messages.append(PromptMessage( - content=message.query, - type=MessageType.USER, - files=prompt_message_files - )) - else: - chat_messages.append(PromptMessage(content=message.query, type=MessageType.USER)) - - chat_messages.append(PromptMessage(content=message.answer, type=MessageType.ASSISTANT)) - - if not chat_messages: - return [] - - # prune the chat message if it exceeds the max token limit - curr_buffer_length = self.model_instance.get_num_tokens(chat_messages) - if curr_buffer_length > self.max_token_limit: - pruned_memory = [] - while curr_buffer_length > self.max_token_limit and chat_messages: - pruned_memory.append(chat_messages.pop(0)) - curr_buffer_length = self.model_instance.get_num_tokens(chat_messages) - - return to_lc_messages(chat_messages) - - @property - def memory_variables(self) -> List[str]: - """Will always return list of memory variables. - - :meta private: - """ - return [self.memory_key] - - def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]: - """Return history buffer.""" - buffer: Any = self.buffer - if self.return_messages: - final_buffer: Any = buffer - else: - final_buffer = get_buffer_string( - buffer, - human_prefix=self.human_prefix, - ai_prefix=self.ai_prefix, - ) - return {self.memory_key: final_buffer} - - def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None: - """Nothing should be saved or changed""" - pass - - def clear(self) -> None: - """Nothing to clear, got a memory like a vault.""" - pass diff --git a/api/core/memory/read_only_conversation_token_db_string_buffer_shared_memory.py b/api/core/memory/read_only_conversation_token_db_string_buffer_shared_memory.py deleted file mode 100644 index 0edd2445e..000000000 --- a/api/core/memory/read_only_conversation_token_db_string_buffer_shared_memory.py +++ /dev/null @@ -1,36 +0,0 @@ -from typing import Any, List, Dict - -from langchain.memory.chat_memory import BaseChatMemory -from langchain.schema import get_buffer_string - -from core.memory.read_only_conversation_token_db_buffer_shared_memory import \ - ReadOnlyConversationTokenDBBufferSharedMemory - - -class ReadOnlyConversationTokenDBStringBufferSharedMemory(BaseChatMemory): - memory: ReadOnlyConversationTokenDBBufferSharedMemory - - @property - def memory_variables(self) -> List[str]: - """Return memory variables.""" - return self.memory.memory_variables - - def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, str]: - """Load memory variables from memory.""" - buffer: Any = self.memory.buffer - - final_buffer = get_buffer_string( - buffer, - human_prefix=self.memory.human_prefix, - ai_prefix=self.memory.ai_prefix, - ) - - return {self.memory.memory_key: final_buffer} - - def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None: - """Nothing should be saved or changed""" - pass - - def clear(self) -> None: - """Nothing to clear, got a memory like a vault.""" - pass \ No newline at end of file diff --git a/api/core/memory/token_buffer_memory.py b/api/core/memory/token_buffer_memory.py new file mode 100644 index 000000000..285cb3eeb --- /dev/null +++ b/api/core/memory/token_buffer_memory.py @@ -0,0 +1,109 @@ +from core.file.message_file_parser import MessageFileParser +from core.model_manager import ModelInstance +from core.model_runtime.entities.message_entities import PromptMessage, TextPromptMessageContent, UserPromptMessage, \ + AssistantPromptMessage, PromptMessageRole +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.model_providers import model_provider_factory +from extensions.ext_database import db +from models.model import Conversation, Message + + +class TokenBufferMemory: + def __init__(self, conversation: Conversation, model_instance: ModelInstance) -> None: + self.conversation = conversation + self.model_instance = model_instance + + def get_history_prompt_messages(self, max_token_limit: int = 2000, + message_limit: int = 10) -> list[PromptMessage]: + """ + Get history prompt messages. + :param max_token_limit: max token limit + :param message_limit: message limit + """ + app_record = self.conversation.app + + # fetch limited messages, and return reversed + messages = db.session.query(Message).filter( + Message.conversation_id == self.conversation.id, + Message.answer != '' + ).order_by(Message.created_at.desc()).limit(message_limit).all() + + messages = list(reversed(messages)) + message_file_parser = MessageFileParser( + tenant_id=app_record.tenant_id, + app_id=app_record.id + ) + + prompt_messages = [] + for message in messages: + files = message.message_files + if files: + file_objs = message_file_parser.transform_message_files( + files, message.app_model_config + ) + + prompt_message_contents = [TextPromptMessageContent(data=message.query)] + for file_obj in file_objs: + prompt_message_contents.append(file_obj.prompt_message_content) + + prompt_messages.append(UserPromptMessage(content=prompt_message_contents)) + else: + prompt_messages.append(UserPromptMessage(content=message.query)) + + prompt_messages.append(AssistantPromptMessage(content=message.answer)) + + if not prompt_messages: + return [] + + # prune the chat message if it exceeds the max token limit + provider_instance = model_provider_factory.get_provider_instance(self.model_instance.provider) + model_type_instance = provider_instance.get_model_instance(ModelType.LLM) + + curr_message_tokens = model_type_instance.get_num_tokens( + self.model_instance.model, + self.model_instance.credentials, + prompt_messages + ) + + if curr_message_tokens > max_token_limit: + pruned_memory = [] + while curr_message_tokens > max_token_limit and prompt_messages: + pruned_memory.append(prompt_messages.pop(0)) + curr_message_tokens = model_type_instance.get_num_tokens( + self.model_instance.model, + self.model_instance.credentials, + prompt_messages + ) + + return prompt_messages + + def get_history_prompt_text(self, human_prefix: str = "Human", + ai_prefix: str = "Assistant", + max_token_limit: int = 2000, + message_limit: int = 10) -> str: + """ + Get history prompt text. + :param human_prefix: human prefix + :param ai_prefix: ai prefix + :param max_token_limit: max token limit + :param message_limit: message limit + :return: + """ + prompt_messages = self.get_history_prompt_messages( + max_token_limit=max_token_limit, + message_limit=message_limit + ) + + string_messages = [] + for m in prompt_messages: + if m.role == PromptMessageRole.USER: + role = human_prefix + elif m.role == PromptMessageRole.ASSISTANT: + role = ai_prefix + else: + continue + + message = f"{role}: {m.content}" + string_messages.append(message) + + return "\n".join(string_messages) \ No newline at end of file diff --git a/api/core/model_manager.py b/api/core/model_manager.py new file mode 100644 index 000000000..ffbec8578 --- /dev/null +++ b/api/core/model_manager.py @@ -0,0 +1,209 @@ +from typing import Optional, Union, Generator, cast, List, IO + +from core.entities.provider_configuration import ProviderModelBundle +from core.errors.error import ProviderTokenNotInitError +from core.model_runtime.callbacks.base_callback import Callback +from core.model_runtime.entities.llm_entities import LLMResult +from core.model_runtime.entities.message_entities import PromptMessageTool, PromptMessage +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.entities.rerank_entities import RerankResult +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.model_runtime.model_providers.__base.moderation_model import ModerationModel +from core.model_runtime.model_providers.__base.rerank_model import RerankModel +from core.model_runtime.model_providers.__base.speech2text_model import Speech2TextModel +from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel +from core.provider_manager import ProviderManager + + +class ModelInstance: + """ + Model instance class + """ + + def __init__(self, provider_model_bundle: ProviderModelBundle, model: str) -> None: + self._provider_model_bundle = provider_model_bundle + self.model = model + self.provider = provider_model_bundle.configuration.provider.provider + self.credentials = self._fetch_credentials_from_bundle(provider_model_bundle, model) + self.model_type_instance = self._provider_model_bundle.model_type_instance + + def _fetch_credentials_from_bundle(self, provider_model_bundle: ProviderModelBundle, model: str) -> dict: + """ + Fetch credentials from provider model bundle + :param provider_model_bundle: provider model bundle + :param model: model name + :return: + """ + credentials = provider_model_bundle.configuration.get_current_credentials( + model_type=provider_model_bundle.model_type_instance.model_type, + model=model + ) + + if credentials is None: + raise ProviderTokenNotInitError(f"Model {model} credentials is not initialized.") + + return credentials + + def invoke_llm(self, prompt_messages: list[PromptMessage], model_parameters: Optional[dict] = None, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None, callbacks: list[Callback] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :param callbacks: callbacks + :return: full response or stream response chunk generator result + """ + if not isinstance(self.model_type_instance, LargeLanguageModel): + raise Exception(f"Model type instance is not LargeLanguageModel") + + self.model_type_instance = cast(LargeLanguageModel, self.model_type_instance) + return self.model_type_instance.invoke( + model=self.model, + credentials=self.credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + + def invoke_text_embedding(self, texts: list[str], user: Optional[str] = None) \ + -> TextEmbeddingResult: + """ + Invoke large language model + + :param texts: texts to embed + :param user: unique user id + :return: embeddings result + """ + if not isinstance(self.model_type_instance, TextEmbeddingModel): + raise Exception(f"Model type instance is not TextEmbeddingModel") + + self.model_type_instance = cast(TextEmbeddingModel, self.model_type_instance) + return self.model_type_instance.invoke( + model=self.model, + credentials=self.credentials, + texts=texts, + user=user + ) + + def invoke_rerank(self, query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None, + user: Optional[str] = None) \ + -> RerankResult: + """ + Invoke rerank model + + :param query: search query + :param docs: docs for reranking + :param score_threshold: score threshold + :param top_n: top n + :param user: unique user id + :return: rerank result + """ + if not isinstance(self.model_type_instance, RerankModel): + raise Exception(f"Model type instance is not RerankModel") + + self.model_type_instance = cast(RerankModel, self.model_type_instance) + return self.model_type_instance.invoke( + model=self.model, + credentials=self.credentials, + query=query, + docs=docs, + score_threshold=score_threshold, + top_n=top_n, + user=user + ) + + def invoke_moderation(self, text: str, user: Optional[str] = None) \ + -> bool: + """ + Invoke moderation model + + :param text: text to moderate + :param user: unique user id + :return: false if text is safe, true otherwise + """ + if not isinstance(self.model_type_instance, ModerationModel): + raise Exception(f"Model type instance is not ModerationModel") + + self.model_type_instance = cast(ModerationModel, self.model_type_instance) + return self.model_type_instance.invoke( + model=self.model, + credentials=self.credentials, + text=text, + user=user + ) + + def invoke_speech2text(self, file: IO[bytes], user: Optional[str] = None) \ + -> str: + """ + Invoke large language model + + :param file: audio file + :param user: unique user id + :return: text for given audio file + """ + if not isinstance(self.model_type_instance, Speech2TextModel): + raise Exception(f"Model type instance is not Speech2TextModel") + + self.model_type_instance = cast(Speech2TextModel, self.model_type_instance) + return self.model_type_instance.invoke( + model=self.model, + credentials=self.credentials, + file=file, + user=user + ) + + +class ModelManager: + def __init__(self) -> None: + self._provider_manager = ProviderManager() + + def get_model_instance(self, tenant_id: str, provider: str, model_type: ModelType, model: str) -> ModelInstance: + """ + Get model instance + :param tenant_id: tenant id + :param provider: provider name + :param model_type: model type + :param model: model name + :return: + """ + provider_model_bundle = self._provider_manager.get_provider_model_bundle( + tenant_id=tenant_id, + provider=provider, + model_type=model_type + ) + + return ModelInstance(provider_model_bundle, model) + + def get_default_model_instance(self, tenant_id: str, model_type: ModelType) -> ModelInstance: + """ + Get default model instance + :param tenant_id: tenant id + :param model_type: model type + :return: + """ + default_model_entity = self._provider_manager.get_default_model( + tenant_id=tenant_id, + model_type=model_type + ) + + if not default_model_entity: + raise ProviderTokenNotInitError(f"Default model not found for {model_type}") + + return self.get_model_instance( + tenant_id=tenant_id, + provider=default_model_entity.provider.provider, + model_type=model_type, + model=default_model_entity.model + ) diff --git a/api/core/model_providers/model_factory.py b/api/core/model_providers/model_factory.py deleted file mode 100644 index f663707b0..000000000 --- a/api/core/model_providers/model_factory.py +++ /dev/null @@ -1,335 +0,0 @@ -from typing import Optional - -from langchain.callbacks.base import Callbacks - -from core.model_providers.error import ProviderTokenNotInitError, LLMBadRequestError -from core.model_providers.model_provider_factory import ModelProviderFactory, DEFAULT_MODELS -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.base import BaseEmbedding -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.moderation.base import BaseModeration -from core.model_providers.models.reranking.base import BaseReranking -from core.model_providers.models.speech2text.base import BaseSpeech2Text -from extensions.ext_database import db -from models.provider import TenantDefaultModel - - -class ModelFactory: - - @classmethod - def get_text_generation_model_from_model_config(cls, tenant_id: str, - model_config: dict, - streaming: bool = False, - callbacks: Callbacks = None) -> Optional[BaseLLM]: - provider_name = model_config.get("provider") - model_name = model_config.get("name") - completion_params = model_config.get("completion_params", {}) - - return cls.get_text_generation_model( - tenant_id=tenant_id, - model_provider_name=provider_name, - model_name=model_name, - model_kwargs=ModelKwargs( - temperature=completion_params.get('temperature', 0), - max_tokens=completion_params.get('max_tokens', 256), - top_p=completion_params.get('top_p', 0), - frequency_penalty=completion_params.get('frequency_penalty', 0.1), - presence_penalty=completion_params.get('presence_penalty', 0.1) - ), - streaming=streaming, - callbacks=callbacks - ) - - @classmethod - def get_text_generation_model(cls, - tenant_id: str, - model_provider_name: Optional[str] = None, - model_name: Optional[str] = None, - model_kwargs: Optional[ModelKwargs] = None, - streaming: bool = False, - callbacks: Callbacks = None, - deduct_quota: bool = True) -> Optional[BaseLLM]: - """ - get text generation model. - - :param tenant_id: a string representing the ID of the tenant. - :param model_provider_name: - :param model_name: - :param model_kwargs: - :param streaming: - :param callbacks: - :param deduct_quota: - :return: - """ - is_default_model = False - if model_provider_name is None and model_name is None: - default_model = cls.get_default_model(tenant_id, ModelType.TEXT_GENERATION) - - if not default_model: - raise LLMBadRequestError(f"Default model is not available. " - f"Please configure a Default System Reasoning Model " - f"in the Settings -> Model Provider.") - - model_provider_name = default_model.provider_name - model_name = default_model.model_name - is_default_model = True - - # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, model_provider_name) - - if not model_provider: - raise ProviderTokenNotInitError(f"Model {model_name} provider credentials is not initialized.") - - # init text generation model - model_class = model_provider.get_model_class(model_type=ModelType.TEXT_GENERATION) - - try: - model_instance = model_class( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs, - streaming=streaming, - callbacks=callbacks - ) - except LLMBadRequestError as e: - if is_default_model: - raise LLMBadRequestError(f"Default model {model_name} is not available. " - f"Please check your model provider credentials.") - else: - raise e - - if is_default_model or not deduct_quota: - model_instance.deduct_quota = False - - return model_instance - - @classmethod - def get_embedding_model(cls, - tenant_id: str, - model_provider_name: Optional[str] = None, - model_name: Optional[str] = None) -> Optional[BaseEmbedding]: - """ - get embedding model. - - :param tenant_id: a string representing the ID of the tenant. - :param model_provider_name: - :param model_name: - :return: - """ - if model_provider_name is None and model_name is None: - default_model = cls.get_default_model(tenant_id, ModelType.EMBEDDINGS) - - if not default_model: - raise LLMBadRequestError(f"Default model is not available. " - f"Please configure a Default Embedding Model " - f"in the Settings -> Model Provider.") - - model_provider_name = default_model.provider_name - model_name = default_model.model_name - - # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, model_provider_name) - - if not model_provider: - raise ProviderTokenNotInitError(f"Model {model_name} provider credentials is not initialized.") - - # init embedding model - model_class = model_provider.get_model_class(model_type=ModelType.EMBEDDINGS) - return model_class( - model_provider=model_provider, - name=model_name - ) - - - @classmethod - def get_reranking_model(cls, - tenant_id: str, - model_provider_name: Optional[str] = None, - model_name: Optional[str] = None) -> Optional[BaseReranking]: - """ - get reranking model. - - :param tenant_id: a string representing the ID of the tenant. - :param model_provider_name: - :param model_name: - :return: - """ - if (model_provider_name is None or len(model_provider_name) == 0) and (model_name is None or len(model_name) == 0): - default_model = cls.get_default_model(tenant_id, ModelType.RERANKING) - - if not default_model: - raise LLMBadRequestError(f"Default model is not available. " - f"Please configure a Default Reranking Model " - f"in the Settings -> Model Provider.") - - model_provider_name = default_model.provider_name - model_name = default_model.model_name - - # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, model_provider_name) - - if not model_provider: - raise ProviderTokenNotInitError(f"Model {model_name} provider credentials is not initialized.") - - # init reranking model - model_class = model_provider.get_model_class(model_type=ModelType.RERANKING) - return model_class( - model_provider=model_provider, - name=model_name - ) - - @classmethod - def get_speech2text_model(cls, - tenant_id: str, - model_provider_name: Optional[str] = None, - model_name: Optional[str] = None) -> Optional[BaseSpeech2Text]: - """ - get speech to text model. - - :param tenant_id: a string representing the ID of the tenant. - :param model_provider_name: - :param model_name: - :return: - """ - if model_provider_name is None and model_name is None: - default_model = cls.get_default_model(tenant_id, ModelType.SPEECH_TO_TEXT) - - if not default_model: - raise LLMBadRequestError(f"Default model is not available. " - f"Please configure a Default Speech-to-Text Model " - f"in the Settings -> Model Provider.") - - model_provider_name = default_model.provider_name - model_name = default_model.model_name - - # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, model_provider_name) - - if not model_provider: - raise ProviderTokenNotInitError(f"Model {model_name} provider credentials is not initialized.") - - # init speech to text model - model_class = model_provider.get_model_class(model_type=ModelType.SPEECH_TO_TEXT) - return model_class( - model_provider=model_provider, - name=model_name - ) - - @classmethod - def get_moderation_model(cls, - tenant_id: str, - model_provider_name: str, - model_name: str) -> Optional[BaseModeration]: - """ - get moderation model. - - :param tenant_id: a string representing the ID of the tenant. - :param model_provider_name: - :param model_name: - :return: - """ - # get model provider - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, model_provider_name) - - if not model_provider: - raise ProviderTokenNotInitError(f"Model {model_name} provider credentials is not initialized.") - - # init moderation model - model_class = model_provider.get_model_class(model_type=ModelType.MODERATION) - return model_class( - model_provider=model_provider, - name=model_name - ) - - @classmethod - def get_default_model(cls, tenant_id: str, model_type: ModelType) -> TenantDefaultModel: - """ - get default model of model type. - - :param tenant_id: - :param model_type: - :return: - """ - # get default model - default_model = db.session.query(TenantDefaultModel) \ - .filter( - TenantDefaultModel.tenant_id == tenant_id, - TenantDefaultModel.model_type == model_type.value - ).first() - - if not default_model: - model_provider_rules = ModelProviderFactory.get_provider_rules() - for model_provider_name, model_provider_rule in model_provider_rules.items(): - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, model_provider_name) - if not model_provider: - continue - - model_list = model_provider.get_supported_model_list(model_type) - if model_list: - model_info = model_list[0] - default_model = TenantDefaultModel( - tenant_id=tenant_id, - model_type=model_type.value, - provider_name=model_provider_name, - model_name=model_info['id'] - ) - db.session.add(default_model) - db.session.commit() - break - - return default_model - - @classmethod - def update_default_model(cls, - tenant_id: str, - model_type: ModelType, - provider_name: str, - model_name: str) -> TenantDefaultModel: - """ - update default model of model type. - - :param tenant_id: - :param model_type: - :param provider_name: - :param model_name: - :return: - """ - model_provider_name = ModelProviderFactory.get_provider_names() - if provider_name not in model_provider_name: - raise ValueError(f'Invalid provider name: {provider_name}') - - model_provider = ModelProviderFactory.get_preferred_model_provider(tenant_id, provider_name) - - if not model_provider: - raise ProviderTokenNotInitError(f"Model {model_name} provider credentials is not initialized.") - - model_list = model_provider.get_supported_model_list(model_type) - model_ids = [model['id'] for model in model_list] - if model_name not in model_ids: - raise ValueError(f'Invalid model name: {model_name}') - - # get default model - default_model = db.session.query(TenantDefaultModel) \ - .filter( - TenantDefaultModel.tenant_id == tenant_id, - TenantDefaultModel.model_type == model_type.value - ).first() - - if default_model: - # update default model - default_model.provider_name = provider_name - default_model.model_name = model_name - db.session.commit() - else: - # create default model - default_model = TenantDefaultModel( - tenant_id=tenant_id, - model_type=model_type.value, - provider_name=provider_name, - model_name=model_name, - ) - db.session.add(default_model) - db.session.commit() - - return default_model diff --git a/api/core/model_providers/model_provider_factory.py b/api/core/model_providers/model_provider_factory.py deleted file mode 100644 index de6b8287f..000000000 --- a/api/core/model_providers/model_provider_factory.py +++ /dev/null @@ -1,276 +0,0 @@ -from typing import Type - -from sqlalchemy.exc import IntegrityError - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.rules import provider_rules -from extensions.ext_database import db -from models.provider import TenantPreferredModelProvider, ProviderType, Provider, ProviderQuotaType - -DEFAULT_MODELS = { - ModelType.TEXT_GENERATION.value: { - 'provider_name': 'openai', - 'model_name': 'gpt-3.5-turbo', - }, - ModelType.EMBEDDINGS.value: { - 'provider_name': 'openai', - 'model_name': 'text-embedding-ada-002', - }, - ModelType.SPEECH_TO_TEXT.value: { - 'provider_name': 'openai', - 'model_name': 'whisper-1', - } -} - - -class ModelProviderFactory: - @classmethod - def get_model_provider_class(cls, provider_name: str) -> Type[BaseModelProvider]: - if provider_name == 'openai': - from core.model_providers.providers.openai_provider import OpenAIProvider - return OpenAIProvider - elif provider_name == 'anthropic': - from core.model_providers.providers.anthropic_provider import AnthropicProvider - return AnthropicProvider - elif provider_name == 'minimax': - from core.model_providers.providers.minimax_provider import MinimaxProvider - return MinimaxProvider - elif provider_name == 'spark': - from core.model_providers.providers.spark_provider import SparkProvider - return SparkProvider - elif provider_name == 'tongyi': - from core.model_providers.providers.tongyi_provider import TongyiProvider - return TongyiProvider - elif provider_name == 'wenxin': - from core.model_providers.providers.wenxin_provider import WenxinProvider - return WenxinProvider - elif provider_name == 'zhipuai': - from core.model_providers.providers.zhipuai_provider import ZhipuAIProvider - return ZhipuAIProvider - elif provider_name == 'chatglm': - from core.model_providers.providers.chatglm_provider import ChatGLMProvider - return ChatGLMProvider - elif provider_name == 'baichuan': - from core.model_providers.providers.baichuan_provider import BaichuanProvider - return BaichuanProvider - elif provider_name == 'azure_openai': - from core.model_providers.providers.azure_openai_provider import AzureOpenAIProvider - return AzureOpenAIProvider - elif provider_name == 'replicate': - from core.model_providers.providers.replicate_provider import ReplicateProvider - return ReplicateProvider - elif provider_name == 'huggingface_hub': - from core.model_providers.providers.huggingface_hub_provider import HuggingfaceHubProvider - return HuggingfaceHubProvider - elif provider_name == 'xinference': - from core.model_providers.providers.xinference_provider import XinferenceProvider - return XinferenceProvider - elif provider_name == 'openllm': - from core.model_providers.providers.openllm_provider import OpenLLMProvider - return OpenLLMProvider - elif provider_name == 'localai': - from core.model_providers.providers.localai_provider import LocalAIProvider - return LocalAIProvider - elif provider_name == 'cohere': - from core.model_providers.providers.cohere_provider import CohereProvider - return CohereProvider - elif provider_name == 'jina': - from core.model_providers.providers.jina_provider import JinaProvider - return JinaProvider - else: - raise NotImplementedError - - @classmethod - def get_provider_names(cls): - """ - Returns a list of provider names. - """ - return list(provider_rules.keys()) - - @classmethod - def get_provider_rules(cls): - """ - Returns a list of provider rules. - - :return: - """ - return provider_rules - - @classmethod - def get_provider_rule(cls, provider_name: str): - """ - Returns provider rule. - """ - return provider_rules[provider_name] - - @classmethod - def get_preferred_model_provider(cls, tenant_id: str, model_provider_name: str): - """ - get preferred model provider. - - :param tenant_id: a string representing the ID of the tenant. - :param model_provider_name: - :return: - """ - # get preferred provider - preferred_provider = cls._get_preferred_provider(tenant_id, model_provider_name) - if not preferred_provider or not preferred_provider.is_valid: - return None - - # init model provider - model_provider_class = ModelProviderFactory.get_model_provider_class(model_provider_name) - return model_provider_class(provider=preferred_provider) - - @classmethod - def get_preferred_type_by_preferred_model_provider(cls, - tenant_id: str, - model_provider_name: str, - preferred_model_provider: TenantPreferredModelProvider): - """ - get preferred provider type by preferred model provider. - - :param model_provider_name: - :param preferred_model_provider: - :return: - """ - if not preferred_model_provider: - model_provider_rules = ModelProviderFactory.get_provider_rule(model_provider_name) - support_provider_types = model_provider_rules['support_provider_types'] - - if ProviderType.CUSTOM.value in support_provider_types: - custom_provider = db.session.query(Provider) \ - .filter( - Provider.tenant_id == tenant_id, - Provider.provider_name == model_provider_name, - Provider.provider_type == ProviderType.CUSTOM.value, - Provider.is_valid == True - ).first() - - if custom_provider: - return ProviderType.CUSTOM.value - - model_provider = cls.get_model_provider_class(model_provider_name) - - if ProviderType.SYSTEM.value in support_provider_types \ - and model_provider.is_provider_type_system_supported(): - return ProviderType.SYSTEM.value - elif ProviderType.CUSTOM.value in support_provider_types: - return ProviderType.CUSTOM.value - else: - return preferred_model_provider.preferred_provider_type - - @classmethod - def _get_preferred_provider(cls, tenant_id: str, model_provider_name: str): - """ - get preferred provider of tenant. - - :param tenant_id: - :param model_provider_name: - :return: - """ - # get preferred provider type - preferred_provider_type = cls._get_preferred_provider_type(tenant_id, model_provider_name) - - # get providers by preferred provider type - providers = db.session.query(Provider) \ - .filter( - Provider.tenant_id == tenant_id, - Provider.provider_name == model_provider_name, - Provider.provider_type == preferred_provider_type - ).all() - - no_system_provider = False - if preferred_provider_type == ProviderType.SYSTEM.value: - quota_type_to_provider_dict = {} - for provider in providers: - quota_type_to_provider_dict[provider.quota_type] = provider - - model_provider_rules = ModelProviderFactory.get_provider_rule(model_provider_name) - for quota_type_enum in ProviderQuotaType: - quota_type = quota_type_enum.value - if quota_type in model_provider_rules['system_config']['supported_quota_types']: - if quota_type in quota_type_to_provider_dict.keys(): - provider = quota_type_to_provider_dict[quota_type] - if provider.is_valid and provider.quota_limit > provider.quota_used: - return provider - elif quota_type == ProviderQuotaType.TRIAL.value: - try: - provider = Provider( - tenant_id=tenant_id, - provider_name=model_provider_name, - provider_type=ProviderType.SYSTEM.value, - is_valid=True, - quota_type=ProviderQuotaType.TRIAL.value, - quota_limit=model_provider_rules['system_config']['quota_limit'], - quota_used=0 - ) - db.session.add(provider) - db.session.commit() - except IntegrityError: - db.session.rollback() - provider = db.session.query(Provider) \ - .filter( - Provider.tenant_id == tenant_id, - Provider.provider_name == model_provider_name, - Provider.provider_type == ProviderType.SYSTEM.value, - Provider.quota_type == ProviderQuotaType.TRIAL.value - ).first() - - if provider.quota_limit == 0: - return None - - return provider - - no_system_provider = True - - if no_system_provider: - providers = db.session.query(Provider) \ - .filter( - Provider.tenant_id == tenant_id, - Provider.provider_name == model_provider_name, - Provider.provider_type == ProviderType.CUSTOM.value - ).all() - - if preferred_provider_type == ProviderType.CUSTOM.value or no_system_provider: - if providers: - return providers[0] - else: - try: - provider = Provider( - tenant_id=tenant_id, - provider_name=model_provider_name, - provider_type=ProviderType.CUSTOM.value, - is_valid=False - ) - db.session.add(provider) - db.session.commit() - except IntegrityError: - db.session.rollback() - provider = db.session.query(Provider) \ - .filter( - Provider.tenant_id == tenant_id, - Provider.provider_name == model_provider_name, - Provider.provider_type == ProviderType.CUSTOM.value - ).first() - - return provider - - return None - - @classmethod - def _get_preferred_provider_type(cls, tenant_id: str, model_provider_name: str): - """ - get preferred provider type of tenant. - - :param tenant_id: - :param model_provider_name: - :return: - """ - preferred_model_provider = db.session.query(TenantPreferredModelProvider) \ - .filter( - TenantPreferredModelProvider.tenant_id == tenant_id, - TenantPreferredModelProvider.provider_name == model_provider_name - ).first() - - return cls.get_preferred_type_by_preferred_model_provider(tenant_id, model_provider_name, preferred_model_provider) diff --git a/api/core/model_providers/models/base.py b/api/core/model_providers/models/base.py deleted file mode 100644 index 01f83efa8..000000000 --- a/api/core/model_providers/models/base.py +++ /dev/null @@ -1,22 +0,0 @@ -from abc import ABC -from typing import Any - -from core.model_providers.providers.base import BaseModelProvider - - -class BaseProviderModel(ABC): - _client: Any - _model_provider: BaseModelProvider - - def __init__(self, model_provider: BaseModelProvider, client: Any): - self._model_provider = model_provider - self._client = client - - @property - def client(self): - return self._client - - @property - def model_provider(self): - return self._model_provider - diff --git a/api/core/model_providers/models/embedding/azure_openai_embedding.py b/api/core/model_providers/models/embedding/azure_openai_embedding.py deleted file mode 100644 index 506b32c55..000000000 --- a/api/core/model_providers/models/embedding/azure_openai_embedding.py +++ /dev/null @@ -1,78 +0,0 @@ -import decimal -import logging - -import openai -import tiktoken -from langchain.embeddings import OpenAIEmbeddings - -from core.model_providers.error import LLMBadRequestError, LLMAuthorizationError, LLMRateLimitError, \ - LLMAPIUnavailableError, LLMAPIConnectionError -from core.model_providers.models.embedding.base import BaseEmbedding -from core.model_providers.providers.base import BaseModelProvider - -AZURE_OPENAI_API_VERSION = '2023-07-01-preview' - - -class AzureOpenAIEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - self.credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = OpenAIEmbeddings( - deployment=name, - openai_api_type='azure', - openai_api_version=AZURE_OPENAI_API_VERSION, - chunk_size=16, - max_retries=1, - openai_api_key=self.credentials.get('openai_api_key'), - openai_api_base=self.credentials.get('openai_api_base') - ) - - super().__init__(model_provider, client, name) - - @property - def base_model_name(self) -> str: - """ - get base model name (not deployment) - - :return: str - """ - return self.credentials.get("base_model_name") - - def get_num_tokens(self, text: str) -> int: - """ - get num tokens of text. - - :param text: - :return: - """ - if len(text) == 0: - return 0 - - enc = tiktoken.encoding_for_model(self.credentials.get('base_model_name')) - - tokenized_text = enc.encode(text) - - # calculate the number of tokens in the encoded text - return len(tokenized_text) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to Azure OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to Azure OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("Azure OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError('Azure ' + str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError('Azure ' + str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError('Azure ' + ex.__class__.__name__ + ":" + str(ex)) - else: - return ex diff --git a/api/core/model_providers/models/embedding/base.py b/api/core/model_providers/models/embedding/base.py deleted file mode 100644 index 25f30894b..000000000 --- a/api/core/model_providers/models/embedding/base.py +++ /dev/null @@ -1,102 +0,0 @@ -from abc import abstractmethod -from typing import Any -import decimal - -import tiktoken -from langchain.schema.language_model import _get_token_ids_default_method - -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import BaseModelProvider -import logging -logger = logging.getLogger(__name__) - -class BaseEmbedding(BaseProviderModel): - name: str - type: ModelType = ModelType.EMBEDDINGS - - def __init__(self, model_provider: BaseModelProvider, client: Any, name: str): - super().__init__(model_provider, client) - self.name = name - - @property - def base_model_name(self) -> str: - """ - get base model name - - :return: str - """ - return self.name - - @property - def price_config(self) -> dict: - def get_or_default(): - default_price_config = { - 'completion': decimal.Decimal('0'), - 'unit': decimal.Decimal('0'), - 'currency': 'USD' - } - rules = self.model_provider.get_rules() - price_config = rules['price_config'][self.base_model_name] if 'price_config' in rules else default_price_config - price_config = { - 'completion': decimal.Decimal(price_config['completion']), - 'unit': decimal.Decimal(price_config['unit']), - 'currency': price_config['currency'] - } - return price_config - - self._price_config = self._price_config if hasattr(self, '_price_config') else get_or_default() - - logger.debug(f"model: {self.name} price_config: {self._price_config}") - return self._price_config - - def calc_tokens_price(self, tokens: int) -> decimal.Decimal: - """ - calc tokens total price. - - :param tokens: - :return: decimal.Decimal('0.0000001') - """ - unit_price = self.price_config['completion'] - unit = self.price_config['unit'] - total_price = tokens * unit_price * unit - total_price = total_price.quantize(decimal.Decimal('0.0000001'), rounding=decimal.ROUND_HALF_UP) - logging.debug(f"tokens={tokens}, unit_price={unit_price}, unit={unit}, total_price:{total_price}") - return total_price - - def get_tokens_unit_price(self) -> decimal.Decimal: - """ - get token price. - - :return: decimal.Decimal('0.0001') - - """ - unit_price = self.price_config['completion'] - unit_price = unit_price.quantize(decimal.Decimal('0.0001'), rounding=decimal.ROUND_HALF_UP) - logger.debug(f'unit_price:{unit_price}') - return unit_price - - def get_num_tokens(self, text: str) -> int: - """ - get num tokens of text. - - :param text: - :return: - """ - if len(text) == 0: - return 0 - - return len(_get_token_ids_default_method(text)) - - def get_currency(self): - """ - get token currency. - - :return: get from price config, default 'USD' - """ - currency = self.price_config['currency'] - return currency - - @abstractmethod - def handle_exceptions(self, ex: Exception) -> Exception: - raise NotImplementedError diff --git a/api/core/model_providers/models/embedding/huggingface_embedding.py b/api/core/model_providers/models/embedding/huggingface_embedding.py deleted file mode 100644 index 61af1cede..000000000 --- a/api/core/model_providers/models/embedding/huggingface_embedding.py +++ /dev/null @@ -1,22 +0,0 @@ -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.embeddings.huggingface_hub_embedding import HuggingfaceHubEmbeddings -from core.model_providers.models.embedding.base import BaseEmbedding - - -class HuggingfaceEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = HuggingfaceHubEmbeddings( - model=name, - **credentials - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Huggingface embedding: {str(ex)}") diff --git a/api/core/model_providers/models/embedding/jina_embedding.py b/api/core/model_providers/models/embedding/jina_embedding.py deleted file mode 100644 index 7c611af1c..000000000 --- a/api/core/model_providers/models/embedding/jina_embedding.py +++ /dev/null @@ -1,25 +0,0 @@ -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.embedding.base import BaseEmbedding -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.embeddings.jina_embedding import JinaEmbeddings - - -class JinaEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = JinaEmbeddings( - model=name, - **credentials - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, ValueError): - return LLMBadRequestError(f"Jina: {str(ex)}") - else: - return ex diff --git a/api/core/model_providers/models/embedding/localai_embedding.py b/api/core/model_providers/models/embedding/localai_embedding.py deleted file mode 100644 index 437e63c5a..000000000 --- a/api/core/model_providers/models/embedding/localai_embedding.py +++ /dev/null @@ -1,29 +0,0 @@ -from langchain.embeddings import LocalAIEmbeddings - -from replicate.exceptions import ModelError, ReplicateError - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.models.embedding.base import BaseEmbedding - - -class LocalAIEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = LocalAIEmbeddings( - model=name, - openai_api_key="1", - openai_api_base=credentials['server_url'], - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, (ModelError, ReplicateError)): - return LLMBadRequestError(f"LocalAI embedding: {str(ex)}") - else: - return ex diff --git a/api/core/model_providers/models/embedding/minimax_embedding.py b/api/core/model_providers/models/embedding/minimax_embedding.py deleted file mode 100644 index 690ca9946..000000000 --- a/api/core/model_providers/models/embedding/minimax_embedding.py +++ /dev/null @@ -1,26 +0,0 @@ -from langchain.embeddings import MiniMaxEmbeddings - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.embedding.base import BaseEmbedding -from core.model_providers.providers.base import BaseModelProvider - - -class MinimaxEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = MiniMaxEmbeddings( - model=name, - **credentials - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, ValueError): - return LLMBadRequestError(f"Minimax: {str(ex)}") - else: - return ex diff --git a/api/core/model_providers/models/embedding/openai_embedding.py b/api/core/model_providers/models/embedding/openai_embedding.py deleted file mode 100644 index 54444b121..000000000 --- a/api/core/model_providers/models/embedding/openai_embedding.py +++ /dev/null @@ -1,62 +0,0 @@ -import decimal -import logging - -import openai -import tiktoken -from langchain.embeddings import OpenAIEmbeddings - -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError -from core.model_providers.models.embedding.base import BaseEmbedding -from core.model_providers.providers.base import BaseModelProvider - - -class OpenAIEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = OpenAIEmbeddings( - max_retries=1, - **credentials - ) - - super().__init__(model_provider, client, name) - - def get_num_tokens(self, text: str) -> int: - """ - get num tokens of text. - - :param text: - :return: - """ - if len(text) == 0: - return 0 - - enc = tiktoken.encoding_for_model(self.name) - - tokenized_text = enc.encode(text) - - # calculate the number of tokens in the encoded text - return len(tokenized_text) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex diff --git a/api/core/model_providers/models/embedding/openllm_embedding.py b/api/core/model_providers/models/embedding/openllm_embedding.py deleted file mode 100644 index 8d27815bf..000000000 --- a/api/core/model_providers/models/embedding/openllm_embedding.py +++ /dev/null @@ -1,22 +0,0 @@ -from core.third_party.langchain.embeddings.openllm_embedding import OpenLLMEmbeddings - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.models.embedding.base import BaseEmbedding - - -class OpenLLMEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = OpenLLMEmbeddings( - server_url=credentials['server_url'] - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"OpenLLM embedding: {str(ex)}") diff --git a/api/core/model_providers/models/embedding/replicate_embedding.py b/api/core/model_providers/models/embedding/replicate_embedding.py deleted file mode 100644 index 962593fcd..000000000 --- a/api/core/model_providers/models/embedding/replicate_embedding.py +++ /dev/null @@ -1,29 +0,0 @@ -import decimal - -from replicate.exceptions import ModelError, ReplicateError - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.embeddings.replicate_embedding import ReplicateEmbeddings -from core.model_providers.models.embedding.base import BaseEmbedding - - -class ReplicateEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = ReplicateEmbeddings( - model=name + ':' + credentials.get('model_version'), - replicate_api_token=credentials.get('replicate_api_token') - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, (ModelError, ReplicateError)): - return LLMBadRequestError(f"Replicate: {str(ex)}") - else: - return ex diff --git a/api/core/model_providers/models/embedding/xinference_embedding.py b/api/core/model_providers/models/embedding/xinference_embedding.py deleted file mode 100644 index 81f9756a1..000000000 --- a/api/core/model_providers/models/embedding/xinference_embedding.py +++ /dev/null @@ -1,22 +0,0 @@ -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.models.embedding.base import BaseEmbedding -from core.third_party.langchain.embeddings.xinference_embedding import XinferenceEmbeddings - - -class XinferenceEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = XinferenceEmbeddings( - server_url=credentials['server_url'], - model_uid=credentials['model_uid'], - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Xinference embedding: {str(ex)}") diff --git a/api/core/model_providers/models/embedding/zhipuai_embedding.py b/api/core/model_providers/models/embedding/zhipuai_embedding.py deleted file mode 100644 index 97d5056c3..000000000 --- a/api/core/model_providers/models/embedding/zhipuai_embedding.py +++ /dev/null @@ -1,22 +0,0 @@ -from core.model_providers.error import LLMBadRequestError -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.models.embedding.base import BaseEmbedding -from core.third_party.langchain.embeddings.zhipuai_embedding import ZhipuAIEmbeddings - - -class ZhipuAIEmbedding(BaseEmbedding): - def __init__(self, model_provider: BaseModelProvider, name: str): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = ZhipuAIEmbeddings( - model=name, - **credentials, - ) - - super().__init__(model_provider, client, name) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"ZhipuAI embedding: {str(ex)}") diff --git a/api/core/model_providers/models/entity/message.py b/api/core/model_providers/models/entity/message.py deleted file mode 100644 index e3e49ba0f..000000000 --- a/api/core/model_providers/models/entity/message.py +++ /dev/null @@ -1,113 +0,0 @@ -import enum -from typing import Any, cast, Union, List, Dict - -from langchain.schema import HumanMessage, AIMessage, SystemMessage, BaseMessage, FunctionMessage -from pydantic import BaseModel - - -class LLMRunResult(BaseModel): - content: str - prompt_tokens: int - completion_tokens: int - source: list = None - function_call: dict = None - - -class MessageType(enum.Enum): - USER = 'user' - ASSISTANT = 'assistant' - SYSTEM = 'system' - - -class PromptMessageFileType(enum.Enum): - IMAGE = 'image' - - @staticmethod - def value_of(value): - for member in PromptMessageFileType: - if member.value == value: - return member - raise ValueError(f"No matching enum found for value '{value}'") - - - -class PromptMessageFile(BaseModel): - type: PromptMessageFileType - data: Any - - -class ImagePromptMessageFile(PromptMessageFile): - class DETAIL(enum.Enum): - LOW = 'low' - HIGH = 'high' - - type: PromptMessageFileType = PromptMessageFileType.IMAGE - detail: DETAIL = DETAIL.LOW - - -class PromptMessage(BaseModel): - type: MessageType = MessageType.USER - content: str = '' - files: list[PromptMessageFile] = [] - function_call: dict = None - - -class LCHumanMessageWithFiles(HumanMessage): - # content: Union[str, List[Union[str, Dict]]] - content: str - files: list[PromptMessageFile] - - -def to_lc_messages(messages: list[PromptMessage]): - lc_messages = [] - for message in messages: - if message.type == MessageType.USER: - if not message.files: - lc_messages.append(HumanMessage(content=message.content)) - else: - lc_messages.append(LCHumanMessageWithFiles(content=message.content, files=message.files)) - elif message.type == MessageType.ASSISTANT: - additional_kwargs = {} - if message.function_call: - additional_kwargs['function_call'] = message.function_call - lc_messages.append(AIMessage(content=message.content, additional_kwargs=additional_kwargs)) - elif message.type == MessageType.SYSTEM: - lc_messages.append(SystemMessage(content=message.content)) - - return lc_messages - - -def to_prompt_messages(messages: list[BaseMessage]): - prompt_messages = [] - for message in messages: - if isinstance(message, HumanMessage): - if isinstance(message, LCHumanMessageWithFiles): - prompt_messages.append(PromptMessage( - content=message.content, - type=MessageType.USER, - files=message.files - )) - else: - prompt_messages.append(PromptMessage(content=message.content, type=MessageType.USER)) - elif isinstance(message, AIMessage): - message_kwargs = { - 'content': message.content, - 'type': MessageType.ASSISTANT - } - - if 'function_call' in message.additional_kwargs: - message_kwargs['function_call'] = message.additional_kwargs['function_call'] - - prompt_messages.append(PromptMessage(**message_kwargs)) - elif isinstance(message, SystemMessage): - prompt_messages.append(PromptMessage(content=message.content, type=MessageType.SYSTEM)) - elif isinstance(message, FunctionMessage): - prompt_messages.append(PromptMessage(content=message.content, type=MessageType.USER)) - return prompt_messages - - -def str_to_prompt_messages(texts: list[str]): - prompt_messages = [] - for text in texts: - prompt_messages.append(PromptMessage(content=text)) - return prompt_messages diff --git a/api/core/model_providers/models/entity/model_params.py b/api/core/model_providers/models/entity/model_params.py deleted file mode 100644 index 0effa75e6..000000000 --- a/api/core/model_providers/models/entity/model_params.py +++ /dev/null @@ -1,60 +0,0 @@ -import enum -from typing import Optional, TypeVar, Generic - -from langchain.load.serializable import Serializable -from pydantic import BaseModel - - -class ModelMode(enum.Enum): - COMPLETION = 'completion' - CHAT = 'chat' - - -class ModelType(enum.Enum): - TEXT_GENERATION = 'text-generation' - EMBEDDINGS = 'embeddings' - SPEECH_TO_TEXT = 'speech2text' - IMAGE = 'image' - VIDEO = 'video' - MODERATION = 'moderation' - RERANKING = 'reranking' - @staticmethod - def value_of(value): - for member in ModelType: - if member.value == value: - return member - raise ValueError(f"No matching enum found for value '{value}'") - - -class ModelKwargs(BaseModel): - max_tokens: Optional[int] - temperature: Optional[float] - top_p: Optional[float] - presence_penalty: Optional[float] - frequency_penalty: Optional[float] - - -class KwargRuleType(enum.Enum): - STRING = 'string' - INTEGER = 'integer' - FLOAT = 'float' - - -T = TypeVar('T') - - -class KwargRule(Generic[T], BaseModel): - enabled: bool = True - min: Optional[T] = None - max: Optional[T] = None - default: Optional[T] = None - alias: Optional[str] = None - precision: Optional[int] = None - - -class ModelKwargsRules(BaseModel): - max_tokens: KwargRule = KwargRule[int](enabled=False) - temperature: KwargRule = KwargRule[float](enabled=False) - top_p: KwargRule = KwargRule[float](enabled=False) - presence_penalty: KwargRule = KwargRule[float](enabled=False) - frequency_penalty: KwargRule = KwargRule[float](enabled=False) diff --git a/api/core/model_providers/models/entity/provider.py b/api/core/model_providers/models/entity/provider.py deleted file mode 100644 index d9a32ec7d..000000000 --- a/api/core/model_providers/models/entity/provider.py +++ /dev/null @@ -1,11 +0,0 @@ -from enum import Enum - - -class ProviderQuotaUnit(Enum): - TIMES = 'times' - TOKENS = 'tokens' - - -class ModelFeature(Enum): - AGENT_THOUGHT = 'agent_thought' - VISION = 'vision' diff --git a/api/core/model_providers/models/llm/anthropic_model.py b/api/core/model_providers/models/llm/anthropic_model.py deleted file mode 100644 index 5ba7e29c1..000000000 --- a/api/core/model_providers/models/llm/anthropic_model.py +++ /dev/null @@ -1,79 +0,0 @@ -import logging -from typing import List, Optional, Any - -import anthropic -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.anthropic_llm import AnthropicLLM - - -class AnthropicModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return AnthropicLLM( - model=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - default_request_timeout=60, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens_from_messages(prompts) - len(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, anthropic.APIConnectionError): - logging.warning("Failed to connect to Anthropic API.") - return LLMAPIConnectionError(f"Anthropic: The server could not be reached, cause: {ex.__cause__}") - elif isinstance(ex, anthropic.RateLimitError): - return LLMRateLimitError("Anthropic: A 429 status code was received; we should back off a bit.") - elif isinstance(ex, anthropic.AuthenticationError): - return LLMAuthorizationError(f"Anthropic: {ex.message}") - elif isinstance(ex, anthropic.BadRequestError): - return LLMBadRequestError(f"Anthropic: {ex.message}") - elif isinstance(ex, anthropic.APIStatusError): - return LLMAPIUnavailableError(f"Anthropic: code: {ex.status_code}, cause: {ex.message}") - else: - return ex - - @property - def support_streaming(self): - return True - diff --git a/api/core/model_providers/models/llm/azure_openai_model.py b/api/core/model_providers/models/llm/azure_openai_model.py deleted file mode 100644 index 38977e3ad..000000000 --- a/api/core/model_providers/models/llm/azure_openai_model.py +++ /dev/null @@ -1,171 +0,0 @@ -import decimal -import logging -from functools import wraps -from typing import List, Optional, Any - -import openai -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.llms.azure_chat_open_ai import EnhanceAzureChatOpenAI -from core.third_party.langchain.llms.azure_open_ai import EnhanceAzureOpenAI -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs - -AZURE_OPENAI_API_VERSION = '2023-07-01-preview' - - -FUNCTION_CALL_MODELS = [ - 'gpt-4', - 'gpt-4-32k', - 'gpt-35-turbo', - 'gpt-35-turbo-16k', - 'gpt-4-1106-preview' -] - -class AzureOpenAIModel(BaseLLM): - def __init__(self, model_provider: BaseModelProvider, - name: str, - model_kwargs: ModelKwargs, - streaming: bool = False, - callbacks: Callbacks = None): - if name == 'text-davinci-003': - self.model_mode = ModelMode.COMPLETION - else: - self.model_mode = ModelMode.CHAT - super().__init__(model_provider, name, model_kwargs, streaming, callbacks) - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - if self.name == 'text-davinci-003': - client = EnhanceAzureOpenAI( - deployment_name=self.name, - streaming=self.streaming, - request_timeout=60, - openai_api_type='azure', - openai_api_version=AZURE_OPENAI_API_VERSION, - openai_api_key=self.credentials.get('openai_api_key'), - openai_api_base=self.credentials.get('openai_api_base'), - callbacks=self.callbacks, - **provider_model_kwargs - ) - else: - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p'), - 'frequency_penalty': provider_model_kwargs.get('frequency_penalty'), - 'presence_penalty': provider_model_kwargs.get('presence_penalty'), - } - - client = EnhanceAzureChatOpenAI( - deployment_name=self.name, - temperature=provider_model_kwargs.get('temperature'), - max_tokens=provider_model_kwargs.get('max_tokens'), - model_kwargs=extra_model_kwargs, - streaming=self.streaming, - request_timeout=60, - openai_api_type='azure', - openai_api_version=AZURE_OPENAI_API_VERSION, - openai_api_key=self.credentials.get('openai_api_key'), - openai_api_base=self.credentials.get('openai_api_base'), - callbacks=self.callbacks, - ) - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - generate_kwargs = { - 'stop': stop, - 'callbacks': callbacks - } - - if isinstance(prompts, str): - generate_kwargs['prompts'] = [prompts] - else: - generate_kwargs['messages'] = [prompts] - - if 'functions' in kwargs: - generate_kwargs['functions'] = kwargs['functions'] - - return self._client.generate(**generate_kwargs) - - @property - def base_model_name(self) -> str: - """ - get base model name (not deployment) - - :return: str - """ - return self.credentials.get("base_model_name") - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - if isinstance(prompts, str): - return self._client.get_num_tokens(prompts) - else: - return max(self._client.get_num_tokens_from_messages(prompts) - len(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - if self.name == 'text-davinci-003': - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - else: - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p'), - 'frequency_penalty': provider_model_kwargs.get('frequency_penalty'), - 'presence_penalty': provider_model_kwargs.get('presence_penalty'), - } - - self.client.temperature = provider_model_kwargs.get('temperature') - self.client.max_tokens = provider_model_kwargs.get('max_tokens') - self.client.model_kwargs = extra_model_kwargs - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to Azure OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to Azure OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("Azure OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError('Azure ' + str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError('Azure ' + str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError('Azure ' + ex.__class__.__name__ + ":" + str(ex)) - else: - return ex - - @property - def support_streaming(self): - return True - - @property - def support_function_call(self): - return self.base_model_name in FUNCTION_CALL_MODELS diff --git a/api/core/model_providers/models/llm/baichuan_model.py b/api/core/model_providers/models/llm/baichuan_model.py deleted file mode 100644 index e614547fa..000000000 --- a/api/core/model_providers/models/llm/baichuan_model.py +++ /dev/null @@ -1,61 +0,0 @@ -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.baichuan_llm import BaichuanChatLLM - - -class BaichuanModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return BaichuanChatLLM( - streaming=self.streaming, - callbacks=self.callbacks, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens_from_messages(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Baichuan: {str(ex)}") - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/base.py b/api/core/model_providers/models/llm/base.py deleted file mode 100644 index 9c8117015..000000000 --- a/api/core/model_providers/models/llm/base.py +++ /dev/null @@ -1,361 +0,0 @@ -from abc import abstractmethod -from typing import List, Optional, Any, Union -import decimal -import logging - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult, BaseMessage, ChatGeneration - -from core.callback_handler.std_out_callback_handler import DifyStreamingStdOutCallbackHandler, DifyStdOutCallbackHandler -from core.helper import moderation -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.message import PromptMessage, MessageType, LLMRunResult, to_lc_messages -from core.model_providers.models.entity.model_params import ModelType, ModelKwargs, ModelMode, ModelKwargsRules -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.llms.fake import FakeLLM - -logger = logging.getLogger(__name__) - - -class BaseLLM(BaseProviderModel): - model_mode: ModelMode = ModelMode.COMPLETION - name: str - model_kwargs: ModelKwargs - credentials: dict - streaming: bool = False - type: ModelType = ModelType.TEXT_GENERATION - deduct_quota: bool = True - - def __init__(self, model_provider: BaseModelProvider, - name: str, - model_kwargs: ModelKwargs, - streaming: bool = False, - callbacks: Callbacks = None): - self.name = name - self.model_rules = model_provider.get_model_parameter_rules(name, self.type) - self.model_kwargs = model_kwargs if model_kwargs else ModelKwargs( - max_tokens=None, - temperature=None, - top_p=None, - presence_penalty=None, - frequency_penalty=None - ) - self.credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - self.streaming = streaming - - if streaming: - default_callback = DifyStreamingStdOutCallbackHandler() - else: - default_callback = DifyStdOutCallbackHandler() - - if not callbacks: - callbacks = [default_callback] - else: - callbacks.append(default_callback) - - self.callbacks = callbacks - - client = self._init_client() - super().__init__(model_provider, client) - - @abstractmethod - def _init_client(self) -> Any: - raise NotImplementedError - - @property - def base_model_name(self) -> str: - """ - get llm base model name - - :return: str - """ - return self.name - - @property - def price_config(self) -> dict: - def get_or_default(): - default_price_config = { - 'prompt': decimal.Decimal('0'), - 'completion': decimal.Decimal('0'), - 'unit': decimal.Decimal('0'), - 'currency': 'USD' - } - rules = self.model_provider.get_rules() - price_config = rules['price_config'][ - self.base_model_name] if 'price_config' in rules else default_price_config - price_config = { - 'prompt': decimal.Decimal(price_config['prompt']), - 'completion': decimal.Decimal(price_config['completion']), - 'unit': decimal.Decimal(price_config['unit']), - 'currency': price_config['currency'] - } - return price_config - - self._price_config = self._price_config if hasattr(self, '_price_config') else get_or_default() - - logger.debug(f"model: {self.name} price_config: {self._price_config}") - return self._price_config - - def run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMRunResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - moderation_result = moderation.check_moderation( - self.model_provider, - "\n".join([message.content for message in messages]) - ) - - if not moderation_result: - kwargs['fake_response'] = "I apologize for any confusion, " \ - "but I'm an AI assistant to be helpful, harmless, and honest." - - if self.deduct_quota: - self.model_provider.check_quota_over_limit() - - if not callbacks: - callbacks = self.callbacks - else: - callbacks.extend(self.callbacks) - - if 'fake_response' in kwargs and kwargs['fake_response']: - prompts = self._get_prompt_from_messages(messages, ModelMode.CHAT) - fake_llm = FakeLLM( - response=kwargs['fake_response'], - num_token_func=self.get_num_tokens, - streaming=self.streaming, - callbacks=callbacks - ) - result = fake_llm.generate([prompts]) - else: - try: - result = self._run( - messages=messages, - stop=stop, - callbacks=callbacks if not (self.streaming and not self.support_streaming) else None, - **kwargs - ) - except Exception as ex: - raise self.handle_exceptions(ex) - - function_call = None - if isinstance(result.generations[0][0], ChatGeneration): - completion_content = result.generations[0][0].message.content - if 'function_call' in result.generations[0][0].message.additional_kwargs: - function_call = result.generations[0][0].message.additional_kwargs.get('function_call') - else: - completion_content = result.generations[0][0].text - - if self.streaming and not self.support_streaming: - # use FakeLLM to simulate streaming when current model not support streaming but streaming is True - prompts = self._get_prompt_from_messages(messages, ModelMode.CHAT) - fake_llm = FakeLLM( - response=completion_content, - num_token_func=self.get_num_tokens, - streaming=self.streaming, - callbacks=callbacks - ) - fake_llm.generate([prompts]) - - if result.llm_output and result.llm_output['token_usage']: - prompt_tokens = result.llm_output['token_usage']['prompt_tokens'] - completion_tokens = result.llm_output['token_usage']['completion_tokens'] - total_tokens = result.llm_output['token_usage']['total_tokens'] - else: - prompt_tokens = self.get_num_tokens(messages) - completion_tokens = self.get_num_tokens( - [PromptMessage(content=completion_content, type=MessageType.ASSISTANT)]) - total_tokens = prompt_tokens + completion_tokens - - self.model_provider.update_last_used() - - if self.deduct_quota: - self.model_provider.deduct_quota(total_tokens) - - return LLMRunResult( - content=completion_content, - prompt_tokens=prompt_tokens, - completion_tokens=completion_tokens, - function_call=function_call - ) - - @abstractmethod - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - raise NotImplementedError - - @abstractmethod - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - raise NotImplementedError - - def calc_tokens_price(self, tokens: int, message_type: MessageType) -> decimal.Decimal: - """ - calc tokens total price. - - :param tokens: - :param message_type: - :return: - """ - if message_type == MessageType.USER or message_type == MessageType.SYSTEM: - unit_price = self.price_config['prompt'] - else: - unit_price = self.price_config['completion'] - unit = self.get_price_unit(message_type) - - total_price = tokens * unit_price * unit - total_price = total_price.quantize(decimal.Decimal('0.0000001'), rounding=decimal.ROUND_HALF_UP) - logging.debug(f"tokens={tokens}, unit_price={unit_price}, unit={unit}, total_price:{total_price}") - return total_price - - def get_tokens_unit_price(self, message_type: MessageType) -> decimal.Decimal: - """ - get token price. - - :param message_type: - :return: decimal.Decimal('0.0001') - """ - if message_type == MessageType.USER or message_type == MessageType.SYSTEM: - unit_price = self.price_config['prompt'] - else: - unit_price = self.price_config['completion'] - unit_price = unit_price.quantize(decimal.Decimal('0.0001'), rounding=decimal.ROUND_HALF_UP) - logging.debug(f"unit_price={unit_price}") - return unit_price - - def get_price_unit(self, message_type: MessageType) -> decimal.Decimal: - """ - get price unit. - - :param message_type: - :return: decimal.Decimal('0.000001') - """ - if message_type == MessageType.USER or message_type == MessageType.SYSTEM: - price_unit = self.price_config['unit'] - else: - price_unit = self.price_config['unit'] - - price_unit = price_unit.quantize(decimal.Decimal('0.000001'), rounding=decimal.ROUND_HALF_UP) - logging.debug(f"price_unit={price_unit}") - return price_unit - - def get_currency(self) -> str: - """ - get token currency. - - :return: get from price config, default 'USD' - """ - currency = self.price_config['currency'] - return currency - - def get_model_kwargs(self): - return self.model_kwargs - - def set_model_kwargs(self, model_kwargs: ModelKwargs): - self.model_kwargs = model_kwargs - self._set_model_kwargs(model_kwargs) - - @abstractmethod - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - raise NotImplementedError - - @abstractmethod - def handle_exceptions(self, ex: Exception) -> Exception: - """ - Handle llm run exceptions. - - :param ex: - :return: - """ - raise NotImplementedError - - def add_callbacks(self, callbacks: Callbacks): - """ - Add callbacks to client. - - :param callbacks: - :return: - """ - if not self.client.callbacks: - self.client.callbacks = callbacks - else: - self.client.callbacks.extend(callbacks) - - @property - def support_streaming(self): - return False - - @property - def support_function_call(self): - return False - - def _get_prompt_from_messages(self, messages: List[PromptMessage], - model_mode: Optional[ModelMode] = None) -> Union[str , List[BaseMessage]]: - if not model_mode: - model_mode = self.model_mode - - if model_mode == ModelMode.COMPLETION: - if len(messages) == 0: - return '' - - return messages[0].content - else: - if len(messages) == 0: - return [] - - return to_lc_messages(messages) - - def _to_model_kwargs_input(self, model_rules: ModelKwargsRules, model_kwargs: ModelKwargs) -> dict: - """ - convert model kwargs to provider model kwargs. - - :param model_rules: - :param model_kwargs: - :return: - """ - model_kwargs_input = {} - for key, value in model_kwargs.dict().items(): - rule = getattr(model_rules, key) - if not rule.enabled: - continue - - if rule.alias: - key = rule.alias - - if rule.default is not None and value is None: - value = rule.default - - if rule.min is not None: - value = max(value, rule.min) - - if rule.max is not None: - value = min(value, rule.max) - - model_kwargs_input[key] = value - - return model_kwargs_input diff --git a/api/core/model_providers/models/llm/chatglm_model.py b/api/core/model_providers/models/llm/chatglm_model.py deleted file mode 100644 index cb6e98d5e..000000000 --- a/api/core/model_providers/models/llm/chatglm_model.py +++ /dev/null @@ -1,102 +0,0 @@ -import logging -from typing import List, Optional, Any - -import openai -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult, get_buffer_string - -from core.model_providers.error import LLMBadRequestError, LLMRateLimitError, LLMAuthorizationError, \ - LLMAPIUnavailableError, LLMAPIConnectionError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.chat_open_ai import EnhanceChatOpenAI - - -class ChatGLMModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p') - } - - if provider_model_kwargs.get('max_length') is not None: - extra_model_kwargs['max_length'] = provider_model_kwargs.get('max_length') - - client = EnhanceChatOpenAI( - model_name=self.name, - temperature=provider_model_kwargs.get('temperature'), - max_tokens=provider_model_kwargs.get('max_tokens'), - model_kwargs=extra_model_kwargs, - streaming=self.streaming, - callbacks=self.callbacks, - request_timeout=60, - openai_api_key="1", - openai_api_base=self.credentials['api_base'] + '/v1' - ) - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(sum([self._client.get_num_tokens(get_buffer_string([m])) for m in prompts]) - len(prompts), 0) - - def get_currency(self): - return 'RMB' - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p') - } - - self.client.temperature = provider_model_kwargs.get('temperature') - self.client.max_tokens = provider_model_kwargs.get('max_tokens') - self.client.model_kwargs = extra_model_kwargs - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to ChatGLM API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to ChatGLM API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("ChatGLM service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex - - @classmethod - def support_streaming(cls): - return True \ No newline at end of file diff --git a/api/core/model_providers/models/llm/huggingface_hub_model.py b/api/core/model_providers/models/llm/huggingface_hub_model.py deleted file mode 100644 index ca3f1d2cf..000000000 --- a/api/core/model_providers/models/llm/huggingface_hub_model.py +++ /dev/null @@ -1,84 +0,0 @@ -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.huggingface_endpoint_llm import HuggingFaceEndpointLLM -from core.third_party.langchain.llms.huggingface_hub_llm import HuggingFaceHubLLM - - -class HuggingfaceHubModel(BaseLLM): - model_mode: ModelMode = ModelMode.COMPLETION - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - if self.credentials['huggingfacehub_api_type'] == 'inference_endpoints': - streaming = self.streaming - - if 'baichuan' in self.name.lower(): - streaming = False - - client = HuggingFaceEndpointLLM( - endpoint_url=self.credentials['huggingfacehub_endpoint_url'], - task=self.credentials['task_type'], - model_kwargs=provider_model_kwargs, - huggingfacehub_api_token=self.credentials['huggingfacehub_api_token'], - callbacks=self.callbacks, - streaming=streaming - ) - else: - client = HuggingFaceHubLLM( - repo_id=self.name, - task=self.credentials['task_type'], - model_kwargs=provider_model_kwargs, - huggingfacehub_api_token=self.credentials['huggingfacehub_api_token'], - callbacks=self.callbacks, - ) - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.get_num_tokens(prompts) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - self.client.model_kwargs = provider_model_kwargs - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Huggingface Hub: {str(ex)}") - - @property - def support_streaming(self): - if self.credentials['huggingfacehub_api_type'] == 'inference_endpoints': - if 'baichuan' in self.name.lower(): - return False - - return True - else: - return False diff --git a/api/core/model_providers/models/llm/localai_model.py b/api/core/model_providers/models/llm/localai_model.py deleted file mode 100644 index 072b2f14b..000000000 --- a/api/core/model_providers/models/llm/localai_model.py +++ /dev/null @@ -1,131 +0,0 @@ -import logging -from typing import List, Optional, Any - -import openai -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult, get_buffer_string - -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.llms.chat_open_ai import EnhanceChatOpenAI -from core.third_party.langchain.llms.open_ai import EnhanceOpenAI -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs - - -class LocalAIModel(BaseLLM): - def __init__(self, model_provider: BaseModelProvider, - name: str, - model_kwargs: ModelKwargs, - streaming: bool = False, - callbacks: Callbacks = None): - credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - if credentials['completion_type'] == 'chat_completion': - self.model_mode = ModelMode.CHAT - else: - self.model_mode = ModelMode.COMPLETION - - super().__init__(model_provider, name, model_kwargs, streaming, callbacks) - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - if self.model_mode == ModelMode.COMPLETION: - client = EnhanceOpenAI( - model_name=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - request_timeout=60, - openai_api_key="1", - openai_api_base=self.credentials['server_url'] + '/v1', - **provider_model_kwargs - ) - else: - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p') - } - - client = EnhanceChatOpenAI( - model_name=self.name, - temperature=provider_model_kwargs.get('temperature'), - max_tokens=provider_model_kwargs.get('max_tokens'), - model_kwargs=extra_model_kwargs, - streaming=self.streaming, - callbacks=self.callbacks, - request_timeout=60, - openai_api_key="1", - openai_api_base=self.credentials['server_url'] + '/v1' - ) - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - if isinstance(prompts, str): - return self._client.get_num_tokens(prompts) - else: - return max(sum([self._client.get_num_tokens(get_buffer_string([m])) for m in prompts]) - len(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - if self.model_mode == ModelMode.COMPLETION: - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - else: - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p') - } - - self.client.temperature = provider_model_kwargs.get('temperature') - self.client.max_tokens = provider_model_kwargs.get('max_tokens') - self.client.model_kwargs = extra_model_kwargs - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to LocalAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to LocalAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("LocalAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex - - @classmethod - def support_streaming(cls): - return True diff --git a/api/core/model_providers/models/llm/minimax_model.py b/api/core/model_providers/models/llm/minimax_model.py deleted file mode 100644 index 83fca8fd7..000000000 --- a/api/core/model_providers/models/llm/minimax_model.py +++ /dev/null @@ -1,68 +0,0 @@ -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.minimax_llm import MinimaxChatLLM - - -class MinimaxModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return MinimaxChatLLM( - model=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens_from_messages(prompts), 0) - - def get_currency(self): - return 'RMB' - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, ValueError): - return LLMBadRequestError(f"Minimax: {str(ex)}") - else: - return ex - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/openai_model.py b/api/core/model_providers/models/llm/openai_model.py deleted file mode 100644 index 08331885b..000000000 --- a/api/core/model_providers/models/llm/openai_model.py +++ /dev/null @@ -1,215 +0,0 @@ -import logging -from typing import List, Optional, Any - -import openai -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.providers.base import BaseModelProvider -from core.third_party.langchain.llms.chat_open_ai import EnhanceChatOpenAI -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError, ModelCurrentlyNotSupportError -from core.third_party.langchain.llms.open_ai import EnhanceOpenAI -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from models.provider import ProviderType, ProviderQuotaType - -COMPLETION_MODELS = [ - 'gpt-3.5-turbo-instruct', # 4,096 tokens - 'text-davinci-003', # 4,097 tokens -] - -CHAT_MODELS = [ - 'gpt-4-1106-preview', # 128,000 tokens - 'gpt-4-vision-preview', # 128,000 tokens - 'gpt-4', # 8,192 tokens - 'gpt-4-32k', # 32,768 tokens - 'gpt-3.5-turbo-1106', # 16,384 tokens - 'gpt-3.5-turbo', # 4,096 tokens - 'gpt-3.5-turbo-16k', # 16,384 tokens -] - -MODEL_MAX_TOKENS = { - 'gpt-4-1106-preview': 128000, - 'gpt-4-vision-preview': 128000, - 'gpt-4': 8192, - 'gpt-4-32k': 32768, - 'gpt-3.5-turbo-1106': 16384, - 'gpt-3.5-turbo': 4096, - 'gpt-3.5-turbo-instruct': 4097, - 'gpt-3.5-turbo-16k': 16384, - 'text-davinci-003': 4097, -} - -FUNCTION_CALL_MODELS = [ - 'gpt-4-1106-preview', - 'gpt-4', - 'gpt-4-32k', - 'gpt-3.5-turbo-1106', - 'gpt-3.5-turbo', - 'gpt-3.5-turbo-16k' -] - - -class OpenAIModel(BaseLLM): - def __init__(self, model_provider: BaseModelProvider, - name: str, - model_kwargs: ModelKwargs, - streaming: bool = False, - callbacks: Callbacks = None): - if name in COMPLETION_MODELS: - self.model_mode = ModelMode.COMPLETION - else: - self.model_mode = ModelMode.CHAT - - super().__init__(model_provider, name, model_kwargs, streaming, callbacks) - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - if self.name in COMPLETION_MODELS: - client = EnhanceOpenAI( - model_name=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - request_timeout=60, - **self.credentials, - **provider_model_kwargs - ) - else: - # Fine-tuning is currently only available for the following base models: - # davinci, curie, babbage, and ada. - # This means that except for the fixed `completion` model, - # all other fine-tuned models are `completion` models. - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p'), - 'frequency_penalty': provider_model_kwargs.get('frequency_penalty'), - 'presence_penalty': provider_model_kwargs.get('presence_penalty'), - } - - client = EnhanceChatOpenAI( - model_name=self.name, - temperature=provider_model_kwargs.get('temperature'), - max_tokens=provider_model_kwargs.get('max_tokens'), - model_kwargs=extra_model_kwargs, - streaming=self.streaming, - callbacks=self.callbacks, - request_timeout=60, - **self.credentials - ) - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - if self.name.startswith('gpt-4') \ - and self.model_provider.provider.provider_type == ProviderType.SYSTEM.value \ - and self.model_provider.provider.quota_type == ProviderQuotaType.TRIAL.value: - raise ModelCurrentlyNotSupportError("Dify Hosted OpenAI GPT-4 currently not support.") - - prompts = self._get_prompt_from_messages(messages) - - generate_kwargs = { - 'stop': stop, - 'callbacks': callbacks - } - - if isinstance(prompts, str): - generate_kwargs['prompts'] = [prompts] - else: - generate_kwargs['messages'] = [prompts] - - if 'functions' in kwargs: - generate_kwargs['functions'] = kwargs['functions'] - - return self._client.generate(**generate_kwargs) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - if isinstance(prompts, str): - return self._client.get_num_tokens(prompts) - else: - return max(self._client.get_num_tokens_from_messages(prompts) - len(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - if self.name in COMPLETION_MODELS: - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - else: - extra_model_kwargs = { - 'top_p': provider_model_kwargs.get('top_p'), - 'frequency_penalty': provider_model_kwargs.get('frequency_penalty'), - 'presence_penalty': provider_model_kwargs.get('presence_penalty'), - } - - self.client.temperature = provider_model_kwargs.get('temperature') - self.client.max_tokens = provider_model_kwargs.get('max_tokens') - self.client.model_kwargs = extra_model_kwargs - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex - - @property - def support_streaming(self): - return True - - @property - def support_function_call(self): - return self.name in FUNCTION_CALL_MODELS - - # def is_model_valid_or_raise(self): - # """ - # check is a valid model. - # - # :return: - # """ - # credentials = self._model_provider.get_credentials() - # - # try: - # result = openai.Model.retrieve( - # id=self.name, - # api_key=credentials.get('openai_api_key'), - # request_timeout=60 - # ) - # - # if 'id' not in result or result['id'] != self.name: - # raise LLMNotExistsError(f"OpenAI Model {self.name} not exists.") - # except openai.error.OpenAIError as e: - # raise LLMNotExistsError(f"OpenAI Model {self.name} not exists, cause: {e.__class__.__name__}:{str(e)}") - # except Exception as e: - # logging.exception("OpenAI Model retrieve failed.") - # raise e diff --git a/api/core/model_providers/models/llm/openllm_model.py b/api/core/model_providers/models/llm/openllm_model.py deleted file mode 100644 index c92877fd8..000000000 --- a/api/core/model_providers/models/llm/openllm_model.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.openllm import OpenLLM - - -class OpenLLMModel(BaseLLM): - model_mode: ModelMode = ModelMode.COMPLETION - - def _init_client(self) -> Any: - self.provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - - client = OpenLLM( - server_url=self.credentials.get('server_url'), - callbacks=self.callbacks, - llm_kwargs=self.provider_model_kwargs - ) - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - pass - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"OpenLLM: {str(ex)}") diff --git a/api/core/model_providers/models/llm/replicate_model.py b/api/core/model_providers/models/llm/replicate_model.py deleted file mode 100644 index becc212ad..000000000 --- a/api/core/model_providers/models/llm/replicate_model.py +++ /dev/null @@ -1,96 +0,0 @@ -import decimal -from functools import wraps -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult, get_buffer_string -from replicate.exceptions import ReplicateError, ModelError - -from core.model_providers.providers.base import BaseModelProvider -from core.model_providers.error import LLMBadRequestError -from core.third_party.langchain.llms.replicate_llm import EnhanceReplicate -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs - - -class ReplicateModel(BaseLLM): - def __init__(self, model_provider: BaseModelProvider, - name: str, - model_kwargs: ModelKwargs, - streaming: bool = False, - callbacks: Callbacks = None): - self.model_mode = ModelMode.CHAT if name.endswith('-chat') else ModelMode.COMPLETION - - super().__init__(model_provider, name, model_kwargs, streaming, callbacks) - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - - return EnhanceReplicate( - model=self.name + ':' + self.credentials.get('model_version'), - input=provider_model_kwargs, - streaming=self.streaming, - replicate_api_token=self.credentials.get('replicate_api_token'), - callbacks=self.callbacks, - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - extra_kwargs = {} - if isinstance(prompts, list): - system_messages = [message for message in messages if message.type == 'system'] - if system_messages: - system_message = system_messages[0] - extra_kwargs['system_prompt'] = system_message.content - prompts = [message for message in messages if message.type != 'system'] - - prompts = get_buffer_string(prompts) - - # The maximum length the generated tokens can have. - # Corresponds to the length of the input prompt + max_new_tokens. - if 'max_length' in self._client.input: - self._client.input['max_length'] = min( - self._client.input['max_length'] + self.get_num_tokens(messages), - self.model_rules.max_tokens.max - ) - - return self._client.generate([prompts], stop, callbacks, **extra_kwargs) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - if isinstance(prompts, list): - prompts = get_buffer_string(prompts) - - return self._client.get_num_tokens(prompts) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - self.client.input = provider_model_kwargs - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, (ModelError, ReplicateError)): - return LLMBadRequestError(f"Replicate: {str(ex)}") - else: - return ex - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/spark_model.py b/api/core/model_providers/models/llm/spark_model.py deleted file mode 100644 index ecbcb103e..000000000 --- a/api/core/model_providers/models/llm/spark_model.py +++ /dev/null @@ -1,70 +0,0 @@ -import decimal -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.spark import ChatSpark -from core.third_party.spark.spark_llm import SparkError - - -class SparkModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return ChatSpark( - model_name=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - contents = [message.content for message in messages] - return max(self._client.get_num_tokens("".join(contents)), 0) - - def get_currency(self): - return 'RMB' - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, SparkError): - return LLMBadRequestError(f"Spark: {str(ex)}") - else: - return ex - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/tongyi_model.py b/api/core/model_providers/models/llm/tongyi_model.py deleted file mode 100644 index 319505817..000000000 --- a/api/core/model_providers/models/llm/tongyi_model.py +++ /dev/null @@ -1,72 +0,0 @@ -import decimal -from functools import wraps -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult -from requests import HTTPError - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.tongyi_llm import EnhanceTongyi - - -class TongyiModel(BaseLLM): - model_mode: ModelMode = ModelMode.COMPLETION - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return EnhanceTongyi( - model_name=self.name, - max_retries=1, - streaming=self.streaming, - callbacks=self.callbacks, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens(prompts), 0) - - def get_currency(self): - return 'RMB' - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, (ValueError, HTTPError)): - return LLMBadRequestError(f"Tongyi: {str(ex)}") - else: - return ex - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/wenxin_model.py b/api/core/model_providers/models/llm/wenxin_model.py deleted file mode 100644 index c912ffb5d..000000000 --- a/api/core/model_providers/models/llm/wenxin_model.py +++ /dev/null @@ -1,69 +0,0 @@ -import decimal -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.wenxin import Wenxin - - -class WenxinModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return Wenxin( - model=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - - generate_kwargs = {'stop': stop, 'callbacks': callbacks, 'messages': [prompts]} - - if 'functions' in kwargs: - generate_kwargs['functions'] = kwargs['functions'] - - return self._client.generate(**generate_kwargs) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens_from_messages(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Wenxin: {str(ex)}") - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/xinference_model.py b/api/core/model_providers/models/llm/xinference_model.py deleted file mode 100644 index 2239ef133..000000000 --- a/api/core/model_providers/models/llm/xinference_model.py +++ /dev/null @@ -1,70 +0,0 @@ -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.xinference_llm import XinferenceLLM - - -class XinferenceModel(BaseLLM): - model_mode: ModelMode = ModelMode.COMPLETION - - def _init_client(self) -> Any: - self.provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - - client = XinferenceLLM( - server_url=self.credentials['server_url'], - model_uid=self.credentials['model_uid'], - ) - - client.callbacks = self.callbacks - - return client - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate( - [prompts], - stop, - callbacks, - generate_config={ - "stop": stop, - "stream": self.streaming, - **self.provider_model_kwargs, - } - ) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - pass - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Xinference: {str(ex)}") - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/llm/zhipuai_model.py b/api/core/model_providers/models/llm/zhipuai_model.py deleted file mode 100644 index f94eb4e72..000000000 --- a/api/core/model_providers/models/llm/zhipuai_model.py +++ /dev/null @@ -1,62 +0,0 @@ -from typing import List, Optional, Any - -from langchain.callbacks.manager import Callbacks -from langchain.schema import LLMResult - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.llm.base import BaseLLM -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelMode, ModelKwargs -from core.third_party.langchain.llms.zhipuai_llm import ZhipuAIChatLLM - - -class ZhipuAIModel(BaseLLM): - model_mode: ModelMode = ModelMode.CHAT - - def _init_client(self) -> Any: - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, self.model_kwargs) - return ZhipuAIChatLLM( - model=self.name, - streaming=self.streaming, - callbacks=self.callbacks, - **self.credentials, - **provider_model_kwargs - ) - - def _run(self, messages: List[PromptMessage], - stop: Optional[List[str]] = None, - callbacks: Callbacks = None, - **kwargs) -> LLMResult: - """ - run predict by prompt messages and stop words. - - :param messages: - :param stop: - :param callbacks: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return self._client.generate([prompts], stop, callbacks) - - def get_num_tokens(self, messages: List[PromptMessage]) -> int: - """ - get num tokens of prompt messages. - - :param messages: - :return: - """ - prompts = self._get_prompt_from_messages(messages) - return max(self._client.get_num_tokens_from_messages(prompts), 0) - - def _set_model_kwargs(self, model_kwargs: ModelKwargs): - provider_model_kwargs = self._to_model_kwargs_input(self.model_rules, model_kwargs) - for k, v in provider_model_kwargs.items(): - if hasattr(self.client, k): - setattr(self.client, k, v) - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"ZhipuAI: {str(ex)}") - - @property - def support_streaming(self): - return True diff --git a/api/core/model_providers/models/moderation/base.py b/api/core/model_providers/models/moderation/base.py deleted file mode 100644 index 0d56739f1..000000000 --- a/api/core/model_providers/models/moderation/base.py +++ /dev/null @@ -1,29 +0,0 @@ -from abc import abstractmethod -from typing import Any - -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import BaseModelProvider - - -class BaseModeration(BaseProviderModel): - name: str - type: ModelType = ModelType.MODERATION - - def __init__(self, model_provider: BaseModelProvider, client: Any, name: str): - super().__init__(model_provider, client) - self.name = name - - def run(self, text: str) -> bool: - try: - return self._run(text) - except Exception as ex: - raise self.handle_exceptions(ex) - - @abstractmethod - def _run(self, text: str) -> bool: - raise NotImplementedError - - @abstractmethod - def handle_exceptions(self, ex: Exception) -> Exception: - raise NotImplementedError diff --git a/api/core/model_providers/models/moderation/openai_moderation.py b/api/core/model_providers/models/moderation/openai_moderation.py deleted file mode 100644 index f3dedc542..000000000 --- a/api/core/model_providers/models/moderation/openai_moderation.py +++ /dev/null @@ -1,58 +0,0 @@ -import logging - -import openai - -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError -from core.model_providers.models.moderation.base import BaseModeration -from core.model_providers.providers.base import BaseModelProvider - -DEFAULT_MODEL = 'whisper-1' - - -class OpenAIModeration(BaseModeration): - - def __init__(self, model_provider: BaseModelProvider, name: str): - super().__init__(model_provider, openai.Moderation, name) - - def _run(self, text: str) -> bool: - credentials = self.model_provider.get_model_credentials( - model_name=self.name, - model_type=self.type - ) - - # 2000 text per chunk - length = 2000 - text_chunks = [text[i:i + length] for i in range(0, len(text), length)] - - max_text_chunks = 32 - chunks = [text_chunks[i:i + max_text_chunks] for i in range(0, len(text_chunks), max_text_chunks)] - - for text_chunk in chunks: - moderation_result = self._client.create(input=text_chunk, - api_key=credentials['openai_api_key']) - - for result in moderation_result.results: - if result['flagged'] is True: - return False - - return True - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex diff --git a/api/core/model_providers/models/reranking/base.py b/api/core/model_providers/models/reranking/base.py deleted file mode 100644 index 85863895f..000000000 --- a/api/core/model_providers/models/reranking/base.py +++ /dev/null @@ -1,36 +0,0 @@ -from abc import abstractmethod -from typing import Any, Optional, List -from langchain.schema import Document - -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import BaseModelProvider -import logging - -logger = logging.getLogger(__name__) - - -class BaseReranking(BaseProviderModel): - name: str - type: ModelType = ModelType.RERANKING - - def __init__(self, model_provider: BaseModelProvider, client: Any, name: str): - super().__init__(model_provider, client) - self.name = name - - @property - def base_model_name(self) -> str: - """ - get base model name - - :return: str - """ - return self.name - - @abstractmethod - def rerank(self, query: str, documents: List[Document], score_threshold: Optional[float], top_k: Optional[int]) -> Optional[List[Document]]: - raise NotImplementedError - - @abstractmethod - def handle_exceptions(self, ex: Exception) -> Exception: - raise NotImplementedError diff --git a/api/core/model_providers/models/reranking/cohere_reranking.py b/api/core/model_providers/models/reranking/cohere_reranking.py deleted file mode 100644 index fa2748734..000000000 --- a/api/core/model_providers/models/reranking/cohere_reranking.py +++ /dev/null @@ -1,81 +0,0 @@ -import logging -from typing import List, Optional - -import cohere -import openai -from core.model_providers.error import (LLMAPIConnectionError, - LLMAPIUnavailableError, - LLMAuthorizationError, - LLMBadRequestError, LLMRateLimitError) -from core.model_providers.models.reranking.base import BaseReranking -from core.model_providers.providers.base import BaseModelProvider -from langchain.schema import Document - - -class CohereReranking(BaseReranking): - - def __init__(self, model_provider: BaseModelProvider, name: str): - self.credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = cohere.Client(self.credentials.get('api_key')) - - super().__init__(model_provider, client, name) - - def rerank(self, query: str, documents: List[Document], score_threshold: Optional[float], top_k: Optional[int]) -> \ - Optional[List[Document]]: - if not documents: - return [] - docs = [] - doc_id = [] - unique_documents = [] - for document in documents: - if document.metadata['doc_id'] not in doc_id: - doc_id.append(document.metadata['doc_id']) - docs.append(document.page_content) - unique_documents.append(document) - documents = unique_documents - - results = self.client.rerank(query=query, documents=docs, model=self.name, top_n=top_k) - rerank_documents = [] - - for idx, result in enumerate(results): - # format document - rerank_document = Document( - page_content=result.document['text'], - metadata={ - "doc_id": documents[result.index].metadata['doc_id'], - "doc_hash": documents[result.index].metadata['doc_hash'], - "document_id": documents[result.index].metadata['document_id'], - "dataset_id": documents[result.index].metadata['dataset_id'], - 'score': result.relevance_score - } - ) - # score threshold check - if score_threshold is not None: - if result.relevance_score >= score_threshold: - rerank_documents.append(rerank_document) - else: - rerank_documents.append(rerank_document) - return rerank_documents - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex diff --git a/api/core/model_providers/models/reranking/xinference_reranking.py b/api/core/model_providers/models/reranking/xinference_reranking.py deleted file mode 100644 index fda2772c7..000000000 --- a/api/core/model_providers/models/reranking/xinference_reranking.py +++ /dev/null @@ -1,62 +0,0 @@ -import logging -from typing import List, Optional - -from core.model_providers.error import LLMBadRequestError -from core.model_providers.models.reranking.base import BaseReranking -from core.model_providers.providers.base import BaseModelProvider -from langchain.schema import Document -from xinference_client.client.restful.restful_client import Client - - -class XinferenceReranking(BaseReranking): - - def __init__(self, model_provider: BaseModelProvider, name: str): - self.credentials = model_provider.get_model_credentials( - model_name=name, - model_type=self.type - ) - - client = Client(self.credentials['server_url']) - - super().__init__(model_provider, client, name) - - def rerank(self, query: str, documents: List[Document], score_threshold: Optional[float], top_k: Optional[int]) -> Optional[List[Document]]: - if not documents: - return [] - docs = [] - doc_id = [] - unique_documents = [] - for document in documents: - if document.metadata['doc_id'] not in doc_id: - doc_id.append(document.metadata['doc_id']) - docs.append(document.page_content) - unique_documents.append(document) - documents = unique_documents - - model = self.client.get_model(self.credentials['model_uid']) - response = model.rerank(query=query, documents=docs, top_n=top_k) - rerank_documents = [] - - for idx, result in enumerate(response['results']): - # format document - index = result['index'] - rerank_document = Document( - page_content=result['document'], - metadata={ - "doc_id": documents[index].metadata['doc_id'], - "doc_hash": documents[index].metadata['doc_hash'], - "document_id": documents[index].metadata['document_id'], - "dataset_id": documents[index].metadata['dataset_id'], - 'score': result['relevance_score'] - } - ) - # score threshold check - if score_threshold is not None: - if result['relevance_score'] >= score_threshold: - rerank_documents.append(rerank_document) - else: - rerank_documents.append(rerank_document) - return rerank_documents - - def handle_exceptions(self, ex: Exception) -> Exception: - return LLMBadRequestError(f"Xinference rerank: {str(ex)}") diff --git a/api/core/model_providers/models/speech2text/base.py b/api/core/model_providers/models/speech2text/base.py deleted file mode 100644 index 0b1ec1d55..000000000 --- a/api/core/model_providers/models/speech2text/base.py +++ /dev/null @@ -1,29 +0,0 @@ -from abc import abstractmethod -from typing import Any - -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import BaseModelProvider - - -class BaseSpeech2Text(BaseProviderModel): - name: str - type: ModelType = ModelType.SPEECH_TO_TEXT - - def __init__(self, model_provider: BaseModelProvider, client: Any, name: str): - super().__init__(model_provider, client) - self.name = name - - def run(self, file): - try: - return self._run(file) - except Exception as ex: - raise self.handle_exceptions(ex) - - @abstractmethod - def _run(self, file): - raise NotImplementedError - - @abstractmethod - def handle_exceptions(self, ex: Exception) -> Exception: - raise NotImplementedError diff --git a/api/core/model_providers/models/speech2text/openai_whisper.py b/api/core/model_providers/models/speech2text/openai_whisper.py deleted file mode 100644 index a1fdc484d..000000000 --- a/api/core/model_providers/models/speech2text/openai_whisper.py +++ /dev/null @@ -1,47 +0,0 @@ -import logging - -import openai - -from core.model_providers.error import LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError, \ - LLMRateLimitError, LLMAuthorizationError -from core.model_providers.models.speech2text.base import BaseSpeech2Text -from core.model_providers.providers.base import BaseModelProvider - - -class OpenAIWhisper(BaseSpeech2Text): - - def __init__(self, model_provider: BaseModelProvider, name: str): - super().__init__(model_provider, openai.Audio, name) - - def _run(self, file): - credentials = self.model_provider.get_model_credentials( - model_name=self.name, - model_type=self.type - ) - - return self._client.transcribe( - model=self.name, - file=file, - api_key=credentials.get('openai_api_key'), - api_base=credentials.get('openai_api_base'), - organization=credentials.get('openai_organization'), - ) - - def handle_exceptions(self, ex: Exception) -> Exception: - if isinstance(ex, openai.error.InvalidRequestError): - logging.warning("Invalid request to OpenAI API.") - return LLMBadRequestError(str(ex)) - elif isinstance(ex, openai.error.APIConnectionError): - logging.warning("Failed to connect to OpenAI API.") - return LLMAPIConnectionError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout)): - logging.warning("OpenAI service unavailable.") - return LLMAPIUnavailableError(ex.__class__.__name__ + ":" + str(ex)) - elif isinstance(ex, openai.error.RateLimitError): - return LLMRateLimitError(str(ex)) - elif isinstance(ex, openai.error.AuthenticationError): - return LLMAuthorizationError(str(ex)) - elif isinstance(ex, openai.error.OpenAIError): - return LLMBadRequestError(ex.__class__.__name__ + ":" + str(ex)) - else: - return ex diff --git a/api/core/model_providers/providers/anthropic_provider.py b/api/core/model_providers/providers/anthropic_provider.py deleted file mode 100644 index 7e9c383de..000000000 --- a/api/core/model_providers/providers/anthropic_provider.py +++ /dev/null @@ -1,228 +0,0 @@ -import json -import logging -from json import JSONDecodeError -from typing import Type, Optional - -import anthropic -from flask import current_app -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelMode -from core.model_providers.models.entity.provider import ModelFeature -from core.model_providers.models.llm.anthropic_model import AnthropicModel -from core.model_providers.models.llm.base import ModelType -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.model_providers.providers.hosted import hosted_model_providers -from core.third_party.langchain.llms.anthropic_llm import AnthropicLLM -from models.provider import ProviderType - - -class AnthropicProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'anthropic' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'claude-2.1', - 'name': 'claude-2.1', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'claude-2', - 'name': 'claude-2', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'claude-instant-1', - 'name': 'claude-instant-1', - 'mode': ModelMode.CHAT.value, - }, - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = AnthropicModel - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_max_tokens = { - 'claude-instant-1': 100000, - 'claude-2': 100000, - 'claude-2.1': 200000, - } - - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=1, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.7, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](alias="max_tokens_to_sample", min=10, max=model_max_tokens.get(model_name, 100000), default=256, precision=0), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'anthropic_api_key' not in credentials: - raise CredentialsValidateFailedError('Anthropic API Key must be provided.') - - try: - credential_kwargs = { - 'anthropic_api_key': credentials['anthropic_api_key'] - } - - if 'anthropic_api_url' in credentials: - credential_kwargs['anthropic_api_url'] = credentials['anthropic_api_url'] - - chat_llm = AnthropicLLM( - model='claude-instant-1', - max_tokens_to_sample=10, - temperature=0, - default_request_timeout=60, - **credential_kwargs - ) - - messages = [ - HumanMessage( - content="ping" - ) - ] - - chat_llm(messages) - except anthropic.APIConnectionError as ex: - raise CredentialsValidateFailedError(str(ex)) - except (anthropic.APIStatusError, anthropic.RateLimitError) as ex: - raise CredentialsValidateFailedError(str(ex)) - except Exception as ex: - logging.exception('Anthropic config validation failed') - raise ex - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['anthropic_api_key'] = encrypter.encrypt_token(tenant_id, credentials['anthropic_api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'anthropic_api_url': None, - 'anthropic_api_key': None - } - - if credentials['anthropic_api_key']: - credentials['anthropic_api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['anthropic_api_key'] - ) - - if obfuscated: - credentials['anthropic_api_key'] = encrypter.obfuscated_token(credentials['anthropic_api_key']) - - if 'anthropic_api_url' not in credentials: - credentials['anthropic_api_url'] = None - - return credentials - else: - if hosted_model_providers.anthropic: - return { - 'anthropic_api_url': hosted_model_providers.anthropic.api_base, - 'anthropic_api_key': hosted_model_providers.anthropic.api_key, - } - else: - return { - 'anthropic_api_url': None, - 'anthropic_api_key': None - } - - @classmethod - def is_provider_type_system_supported(cls) -> bool: - if current_app.config['EDITION'] != 'CLOUD': - return False - - if hosted_model_providers.anthropic: - return True - - return False - - def should_deduct_quota(self): - if hosted_model_providers.anthropic and \ - hosted_model_providers.anthropic.quota_limit and hosted_model_providers.anthropic.quota_limit > -1: - return True - - return False - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/azure_openai_provider.py b/api/core/model_providers/providers/azure_openai_provider.py deleted file mode 100644 index 25621e725..000000000 --- a/api/core/model_providers/providers/azure_openai_provider.py +++ /dev/null @@ -1,438 +0,0 @@ -import json -import logging -from json import JSONDecodeError -from typing import Type - -import openai -from flask import current_app -from langchain.embeddings import OpenAIEmbeddings -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.azure_openai_embedding import AzureOpenAIEmbedding, \ - AZURE_OPENAI_API_VERSION -from core.model_providers.models.entity.model_params import ModelType, ModelKwargsRules, KwargRule, ModelMode -from core.model_providers.models.entity.provider import ModelFeature -from core.model_providers.models.llm.azure_openai_model import AzureOpenAIModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.model_providers.providers.hosted import hosted_model_providers -from core.third_party.langchain.llms.azure_chat_open_ai import EnhanceAzureChatOpenAI -from extensions.ext_database import db -from models.provider import ProviderType, ProviderModel, ProviderQuotaType - -BASE_MODELS = [ - 'gpt-4', - 'gpt-4-32k', - 'gpt-4-1106-preview', - 'gpt-4-vision-preview', - 'gpt-35-turbo', - 'gpt-35-turbo-16k', - 'text-davinci-003', - 'text-embedding-ada-002', -] - - -class AzureOpenAIProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'azure_openai' - - def get_supported_model_list(self, model_type: ModelType) -> list[dict]: - # convert old provider config to provider models - self._convert_provider_config_to_model_config() - - if self.provider.provider_type == ProviderType.CUSTOM.value: - # get configurable provider models - provider_models = db.session.query(ProviderModel).filter( - ProviderModel.tenant_id == self.provider.tenant_id, - ProviderModel.provider_name == self.provider.provider_name, - ProviderModel.model_type == model_type.value, - ProviderModel.is_valid == True - ).order_by(ProviderModel.created_at.asc()).all() - - model_list = [] - for provider_model in provider_models: - model_dict = { - 'id': provider_model.model_name, - 'name': provider_model.model_name - } - - credentials = json.loads(provider_model.encrypted_config) - - if provider_model.model_type == ModelType.TEXT_GENERATION.value: - model_dict['mode'] = self._get_text_generation_model_mode(credentials['base_model_name']) - - if credentials['base_model_name'] in [ - 'gpt-4', - 'gpt-4-32k', - 'gpt-35-turbo', - 'gpt-35-turbo-16k', - ]: - model_dict['features'] = [ - ModelFeature.AGENT_THOUGHT.value - ] - - model_list.append(model_dict) - else: - model_list = self._get_fixed_model_list(model_type) - - return model_list - - def _get_text_generation_model_mode(self, model_name) -> str: - if model_name == 'text-davinci-003': - return ModelMode.COMPLETION.value - else: - return ModelMode.CHAT.value - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - models = [ - { - 'id': 'gpt-3.5-turbo', - 'name': 'gpt-3.5-turbo', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-3.5-turbo-16k', - 'name': 'gpt-3.5-turbo-16k', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4', - 'name': 'gpt-4', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4-32k', - 'name': 'gpt-4-32k', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4-1106-preview', - 'name': 'gpt-4-1106-preview', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4-vision-preview', - 'name': 'gpt-4-vision-preview', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.VISION.value - ] - }, - { - 'id': 'text-davinci-003', - 'name': 'text-davinci-003', - 'mode': ModelMode.COMPLETION.value, - } - ] - - if self.provider.provider_type == ProviderType.SYSTEM.value \ - and self.provider.quota_type == ProviderQuotaType.TRIAL.value: - models = [item for item in models if item['id'] not in ['gpt-4', 'gpt-4-32k']] - - return models - elif model_type == ModelType.EMBEDDINGS: - return [ - { - 'id': 'text-embedding-ada-002', - 'name': 'text-embedding-ada-002' - } - ] - else: - return [] - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = AzureOpenAIModel - elif model_type == ModelType.EMBEDDINGS: - model_class = AzureOpenAIEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - base_model_max_tokens = { - 'gpt-4': 8192, - 'gpt-4-32k': 32768, - 'gpt-4-1106-preview': 4096, - 'gpt-4-vision-preview': 4096, - 'gpt-35-turbo': 4096, - 'gpt-35-turbo-16k': 16384, - 'text-davinci-003': 4097, - } - - model_credentials = self.get_model_credentials(model_name, model_type) - - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=1, precision=2), - presence_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - frequency_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - max_tokens=KwargRule[int](min=10, max=base_model_max_tokens.get( - model_credentials['base_model_name'], - 4097 - ), default=16, precision=0), - ) - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - if 'openai_api_key' not in credentials: - raise CredentialsValidateFailedError('Azure OpenAI API key is required') - - if 'openai_api_base' not in credentials: - raise CredentialsValidateFailedError('Azure OpenAI API Base Endpoint is required') - - if 'base_model_name' not in credentials: - raise CredentialsValidateFailedError('Base Model Name is required') - - if credentials['base_model_name'] not in BASE_MODELS: - raise CredentialsValidateFailedError('Base Model Name is invalid') - - if model_type == ModelType.TEXT_GENERATION: - try: - client = EnhanceAzureChatOpenAI( - deployment_name=model_name, - temperature=0, - max_tokens=15, - request_timeout=10, - openai_api_type='azure', - openai_api_version='2023-07-01-preview', - openai_api_key=credentials['openai_api_key'], - openai_api_base=credentials['openai_api_base'], - ) - - client.generate([[HumanMessage(content='hi!')]]) - except openai.error.OpenAIError as e: - raise CredentialsValidateFailedError( - f"Azure OpenAI deployment {model_name} not exists, cause: {e.__class__.__name__}:{str(e)}") - except Exception as e: - logging.exception("Azure OpenAI Model retrieve failed.") - raise e - elif model_type == ModelType.EMBEDDINGS: - try: - client = OpenAIEmbeddings( - openai_api_type='azure', - openai_api_version=AZURE_OPENAI_API_VERSION, - deployment=model_name, - chunk_size=16, - max_retries=1, - openai_api_key=credentials['openai_api_key'], - openai_api_base=credentials['openai_api_base'] - ) - - client.embed_query('hi') - except openai.error.OpenAIError as e: - logging.exception("Azure OpenAI Model check error.") - raise CredentialsValidateFailedError( - f"Azure OpenAI deployment {model_name} not exists, cause: {e.__class__.__name__}:{str(e)}") - except Exception as e: - logging.exception("Azure OpenAI Model retrieve failed.") - raise e - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - credentials['openai_api_key'] = encrypter.encrypt_token(tenant_id, credentials['openai_api_key']) - return credentials - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - if self.provider.provider_type == ProviderType.CUSTOM.value: - # convert old provider config to provider models - self._convert_provider_config_to_model_config() - - provider_model = self._get_provider_model(model_name, model_type) - - if not provider_model.encrypted_config: - return { - 'openai_api_base': '', - 'openai_api_key': '', - 'base_model_name': '' - } - - credentials = json.loads(provider_model.encrypted_config) - if credentials['openai_api_key']: - credentials['openai_api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['openai_api_key'] - ) - - if obfuscated: - credentials['openai_api_key'] = encrypter.obfuscated_token(credentials['openai_api_key']) - - return { - 'openai_api_base': credentials['openai_api_base'], - 'openai_api_key': credentials['openai_api_key'], - 'base_model_name': credentials['base_model_name'] - } - else: - if hosted_model_providers.azure_openai: - return { - 'openai_api_base': hosted_model_providers.azure_openai.api_base, - 'openai_api_key': hosted_model_providers.azure_openai.api_key, - 'base_model_name': model_name - } - else: - return { - 'openai_api_base': None, - 'openai_api_key': None, - 'base_model_name': None - } - - @classmethod - def is_provider_type_system_supported(cls) -> bool: - if current_app.config['EDITION'] != 'CLOUD': - return False - - if hosted_model_providers.azure_openai: - return True - - return False - - def should_deduct_quota(self): - if hosted_model_providers.azure_openai \ - and hosted_model_providers.azure_openai.quota_limit and hosted_model_providers.azure_openai.quota_limit > -1: - return True - - return False - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - return - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return {} - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} - - def _convert_provider_config_to_model_config(self): - if self.provider.provider_type == ProviderType.CUSTOM.value \ - and self.provider.is_valid \ - and self.provider.encrypted_config: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'openai_api_base': '', - 'openai_api_key': '', - 'base_model_name': '' - } - - self._add_provider_model( - model_name='gpt-35-turbo', - model_type=ModelType.TEXT_GENERATION, - provider_credentials=credentials - ) - - self._add_provider_model( - model_name='gpt-35-turbo-16k', - model_type=ModelType.TEXT_GENERATION, - provider_credentials=credentials - ) - - self._add_provider_model( - model_name='gpt-4', - model_type=ModelType.TEXT_GENERATION, - provider_credentials=credentials - ) - - self._add_provider_model( - model_name='gpt-4-1106-preview', - model_type=ModelType.TEXT_GENERATION, - provider_credentials=credentials - ) - - self._add_provider_model( - model_name='gpt-4-vision-preview', - model_type=ModelType.TEXT_GENERATION, - provider_credentials=credentials - ) - - self._add_provider_model( - model_name='text-davinci-003', - model_type=ModelType.TEXT_GENERATION, - provider_credentials=credentials - ) - - self._add_provider_model( - model_name='text-embedding-ada-002', - model_type=ModelType.EMBEDDINGS, - provider_credentials=credentials - ) - - self.provider.encrypted_config = None - db.session.commit() - - def _add_provider_model(self, model_name: str, model_type: ModelType, provider_credentials: dict): - credentials = provider_credentials.copy() - credentials['base_model_name'] = model_name - provider_model = ProviderModel( - tenant_id=self.provider.tenant_id, - provider_name=self.provider.provider_name, - model_name=model_name, - model_type=model_type.value, - encrypted_config=json.dumps(credentials), - is_valid=True - ) - db.session.add(provider_model) - db.session.commit() diff --git a/api/core/model_providers/providers/baichuan_provider.py b/api/core/model_providers/providers/baichuan_provider.py deleted file mode 100644 index 784c9df2c..000000000 --- a/api/core/model_providers/providers/baichuan_provider.py +++ /dev/null @@ -1,171 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.baichuan_model import BaichuanModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.llms.baichuan_llm import BaichuanChatLLM -from models.provider import ProviderType - - -class BaichuanProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'baichuan' - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'baichuan2-53b', - 'name': 'Baichuan2-53B', - 'mode': ModelMode.CHAT.value, - } - ] - else: - return [] - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = BaichuanModel - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=1, default=0.3, precision=2), - top_p=KwargRule[float](min=0, max=0.99, default=0.85, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](enabled=False), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'api_key' not in credentials: - raise CredentialsValidateFailedError('Baichuan api_key must be provided.') - - if 'secret_key' not in credentials: - raise CredentialsValidateFailedError('Baichuan secret_key must be provided.') - - try: - credential_kwargs = { - 'api_key': credentials['api_key'], - 'secret_key': credentials['secret_key'], - } - - llm = BaichuanChatLLM( - temperature=0, - **credential_kwargs - ) - - llm([HumanMessage(content='ping')]) - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_key'] = encrypter.encrypt_token(tenant_id, credentials['api_key']) - credentials['secret_key'] = encrypter.encrypt_token(tenant_id, credentials['secret_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'api_key': None, - 'secret_key': None, - } - - if credentials['api_key']: - credentials['api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_key'] - ) - - if obfuscated: - credentials['api_key'] = encrypter.obfuscated_token(credentials['api_key']) - - if credentials['secret_key']: - credentials['secret_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['secret_key'] - ) - - if obfuscated: - credentials['secret_key'] = encrypter.obfuscated_token(credentials['secret_key']) - - return credentials - else: - return {} - - def should_deduct_quota(self): - return True - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/base.py b/api/core/model_providers/providers/base.py deleted file mode 100644 index 1ff03f286..000000000 --- a/api/core/model_providers/providers/base.py +++ /dev/null @@ -1,294 +0,0 @@ -from abc import ABC, abstractmethod -from datetime import datetime -from typing import Type, Optional - -from flask import current_app -from pydantic import BaseModel - -from core.model_providers.error import QuotaExceededError, LLMBadRequestError -from extensions.ext_database import db -from core.model_providers.models.entity.model_params import ModelType, ModelKwargsRules -from core.model_providers.models.entity.provider import ProviderQuotaUnit -from core.model_providers.rules import provider_rules -from models.provider import Provider, ProviderType, ProviderModel - - -class BaseModelProvider(BaseModel, ABC): - - provider: Provider - - class Config: - """Configuration for this pydantic object.""" - - arbitrary_types_allowed = True - - @property - @abstractmethod - def provider_name(self): - """ - Returns the name of a provider. - """ - raise NotImplementedError - - def get_rules(self): - """ - Returns the rules of a provider. - """ - return provider_rules[self.provider_name] - - def get_supported_model_list(self, model_type: ModelType) -> list[dict]: - """ - get supported model object list for use. - - :param model_type: - :return: - """ - rules = self.get_rules() - if 'custom' not in rules['support_provider_types']: - return self._get_fixed_model_list(model_type) - - if 'model_flexibility' not in rules: - return self._get_fixed_model_list(model_type) - - if rules['model_flexibility'] == 'fixed': - return self._get_fixed_model_list(model_type) - - # get configurable provider models - provider_models = db.session.query(ProviderModel).filter( - ProviderModel.tenant_id == self.provider.tenant_id, - ProviderModel.provider_name == self.provider.provider_name, - ProviderModel.model_type == model_type.value, - ProviderModel.is_valid == True - ).order_by(ProviderModel.created_at.asc()).all() - - provider_model_list = [] - for provider_model in provider_models: - provider_model_dict = { - 'id': provider_model.model_name, - 'name': provider_model.model_name - } - - if model_type == ModelType.TEXT_GENERATION: - provider_model_dict['mode'] = self._get_text_generation_model_mode(provider_model.model_name) - - provider_model_list.append(provider_model_dict) - - return provider_model_list - - @abstractmethod - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - """ - get supported model object list for use. - - :param model_type: - :return: - """ - raise NotImplementedError - - @abstractmethod - def _get_text_generation_model_mode(self, model_name) -> str: - """ - get text generation model mode. - - :param model_name: - :return: - """ - raise NotImplementedError - - @abstractmethod - def get_model_class(self, model_type: ModelType) -> Type: - """ - get specific model class. - - :param model_type: - :return: - """ - raise NotImplementedError - - @classmethod - @abstractmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - check provider credentials valid. - - :param credentials: - """ - raise NotImplementedError - - @classmethod - @abstractmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - """ - encrypt provider credentials for save. - - :param tenant_id: - :param credentials: - :return: - """ - raise NotImplementedError - - @abstractmethod - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param obfuscated: - :return: - """ - raise NotImplementedError - - @classmethod - @abstractmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - raise NotImplementedError - - @classmethod - @abstractmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - raise NotImplementedError - - @abstractmethod - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - raise NotImplementedError - - @abstractmethod - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - raise NotImplementedError - - @classmethod - def is_provider_type_system_supported(cls) -> bool: - return current_app.config['EDITION'] == 'CLOUD' - - def check_quota_over_limit(self): - """ - check provider quota over limit. - - :return: - """ - if self.provider.provider_type != ProviderType.SYSTEM.value: - return - - rules = self.get_rules() - if 'system' not in rules['support_provider_types']: - return - - provider = db.session.query(Provider).filter( - db.and_( - Provider.id == self.provider.id, - Provider.is_valid == True, - Provider.quota_limit > Provider.quota_used - ) - ).first() - - if not provider: - raise QuotaExceededError() - - def deduct_quota(self, used_tokens: int = 0) -> None: - """ - deduct available quota when provider type is system or paid. - - :return: - """ - if self.provider.provider_type != ProviderType.SYSTEM.value: - return - - rules = self.get_rules() - if 'system' not in rules['support_provider_types']: - return - - if not self.should_deduct_quota(): - return - - if 'system_config' not in rules: - quota_unit = ProviderQuotaUnit.TIMES.value - elif 'quota_unit' not in rules['system_config']: - quota_unit = ProviderQuotaUnit.TIMES.value - else: - quota_unit = rules['system_config']['quota_unit'] - - if quota_unit == ProviderQuotaUnit.TOKENS.value: - used_quota = used_tokens - else: - used_quota = 1 - - db.session.query(Provider).filter( - Provider.tenant_id == self.provider.tenant_id, - Provider.provider_name == self.provider.provider_name, - Provider.provider_type == self.provider.provider_type, - Provider.quota_type == self.provider.quota_type, - Provider.quota_limit > Provider.quota_used - ).update({'quota_used': Provider.quota_used + used_quota}) - db.session.commit() - - def should_deduct_quota(self): - return False - - def update_last_used(self) -> None: - """ - update last used time. - - :return: - """ - db.session.query(Provider).filter( - Provider.tenant_id == self.provider.tenant_id, - Provider.provider_name == self.provider.provider_name - ).update({'last_used': datetime.utcnow()}) - db.session.commit() - - def _get_provider_model(self, model_name: str, model_type: ModelType) -> ProviderModel: - """ - get provider model. - - :param model_name: - :param model_type: - :return: - """ - provider_model = db.session.query(ProviderModel).filter( - ProviderModel.tenant_id == self.provider.tenant_id, - ProviderModel.provider_name == self.provider.provider_name, - ProviderModel.model_name == model_name, - ProviderModel.model_type == model_type.value, - ProviderModel.is_valid == True - ).first() - - if not provider_model: - raise LLMBadRequestError(f"The model {model_name} does not exist. " - f"Please check the configuration.") - - return provider_model - - -class CredentialsValidateFailedError(Exception): - pass diff --git a/api/core/model_providers/providers/chatglm_provider.py b/api/core/model_providers/providers/chatglm_provider.py deleted file mode 100644 index e3db27b2d..000000000 --- a/api/core/model_providers/providers/chatglm_provider.py +++ /dev/null @@ -1,165 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -import requests -from langchain.llms import ChatGLM - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.chatglm_model import ChatGLMModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from models.provider import ProviderType - - -class ChatGLMProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'chatglm' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'chatglm3-6b', - 'name': 'ChatGLM3-6B', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'chatglm3-6b-32k', - 'name': 'ChatGLM3-6B-32K', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'chatglm2-6b', - 'name': 'ChatGLM2-6B', - 'mode': ModelMode.CHAT.value, - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = ChatGLMModel - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_max_tokens = { - 'chatglm3-6b-32k': 32000, - 'chatglm3-6b': 8000, - 'chatglm2-6b': 8000, - } - - max_tokens_alias = 'max_length' if model_name == 'chatglm2-6b' else 'max_tokens' - - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.7, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](alias=max_tokens_alias, min=10, max=model_max_tokens.get(model_name), default=2048, precision=0), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'api_base' not in credentials: - raise CredentialsValidateFailedError('ChatGLM Endpoint URL must be provided.') - - try: - response = requests.get(f"{credentials['api_base']}/v1/models", timeout=5) - - if response.status_code != 200: - raise Exception('ChatGLM Endpoint URL is invalid.') - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_base'] = encrypter.encrypt_token(tenant_id, credentials['api_base']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'api_base': None - } - - if credentials['api_base']: - credentials['api_base'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_base'] - ) - - if obfuscated: - credentials['api_base'] = encrypter.obfuscated_token(credentials['api_base']) - - return credentials - - return {} - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/cohere_provider.py b/api/core/model_providers/providers/cohere_provider.py deleted file mode 100644 index 9fa77dfff..000000000 --- a/api/core/model_providers/providers/cohere_provider.py +++ /dev/null @@ -1,152 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.reranking.cohere_reranking import CohereReranking -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from models.provider import ProviderType - - -class CohereProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'cohere' - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.RERANKING: - return [ - { - 'id': 'rerank-english-v2.0', - 'name': 'rerank-english-v2.0' - }, - { - 'id': 'rerank-multilingual-v2.0', - 'name': 'rerank-multilingual-v2.0' - } - ] - else: - return [] - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.RERANKING: - model_class = CohereReranking - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=1, default=0.3, precision=2), - top_p=KwargRule[float](min=0, max=0.99, default=0.85, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](enabled=False), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'api_key' not in credentials: - raise CredentialsValidateFailedError('Cohere api_key must be provided.') - - try: - credential_kwargs = { - 'api_key': credentials['api_key'], - } - # todo validate - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_key'] = encrypter.encrypt_token(tenant_id, credentials['api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'api_key': None, - } - - if credentials['api_key']: - credentials['api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_key'] - ) - - if obfuscated: - credentials['api_key'] = encrypter.obfuscated_token(credentials['api_key']) - - return credentials - else: - return {} - - def should_deduct_quota(self): - return True - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/hosted.py b/api/core/model_providers/providers/hosted.py deleted file mode 100644 index df8a769ac..000000000 --- a/api/core/model_providers/providers/hosted.py +++ /dev/null @@ -1,86 +0,0 @@ -import os -from typing import Optional - -import langchain -from flask import Flask -from pydantic import BaseModel - - -class HostedOpenAI(BaseModel): - api_base: str = None - api_organization: str = None - api_key: str - quota_limit: int = 0 - """Quota limit for the openai hosted model. -1 means unlimited.""" - paid_enabled: bool = False - - -class HostedAzureOpenAI(BaseModel): - api_base: str - api_key: str - quota_limit: int = 0 - """Quota limit for the azure openai hosted model. -1 means unlimited.""" - - -class HostedAnthropic(BaseModel): - api_base: str = None - api_key: str - quota_limit: int = 0 - """Quota limit for the anthropic hosted model. -1 means unlimited.""" - paid_enabled: bool = False - - -class HostedModelProviders(BaseModel): - openai: Optional[HostedOpenAI] = None - azure_openai: Optional[HostedAzureOpenAI] = None - anthropic: Optional[HostedAnthropic] = None - - -hosted_model_providers = HostedModelProviders() - - -class HostedModerationConfig(BaseModel): - enabled: bool = False - providers: list[str] = [] - - -class HostedConfig(BaseModel): - moderation = HostedModerationConfig() - - -hosted_config = HostedConfig() - - -def init_app(app: Flask): - if os.environ.get("DEBUG") and os.environ.get("DEBUG").lower() == 'true': - langchain.verbose = True - - if app.config.get("HOSTED_OPENAI_ENABLED"): - hosted_model_providers.openai = HostedOpenAI( - api_base=app.config.get("HOSTED_OPENAI_API_BASE"), - api_organization=app.config.get("HOSTED_OPENAI_API_ORGANIZATION"), - api_key=app.config.get("HOSTED_OPENAI_API_KEY"), - quota_limit=app.config.get("HOSTED_OPENAI_QUOTA_LIMIT"), - paid_enabled=app.config.get("HOSTED_OPENAI_PAID_ENABLED"), - ) - - if app.config.get("HOSTED_AZURE_OPENAI_ENABLED"): - hosted_model_providers.azure_openai = HostedAzureOpenAI( - api_base=app.config.get("HOSTED_AZURE_OPENAI_API_BASE"), - api_key=app.config.get("HOSTED_AZURE_OPENAI_API_KEY"), - quota_limit=app.config.get("HOSTED_AZURE_OPENAI_QUOTA_LIMIT"), - ) - - if app.config.get("HOSTED_ANTHROPIC_ENABLED"): - hosted_model_providers.anthropic = HostedAnthropic( - api_base=app.config.get("HOSTED_ANTHROPIC_API_BASE"), - api_key=app.config.get("HOSTED_ANTHROPIC_API_KEY"), - quota_limit=app.config.get("HOSTED_ANTHROPIC_QUOTA_LIMIT"), - paid_enabled=app.config.get("HOSTED_ANTHROPIC_PAID_ENABLED"), - ) - - if app.config.get("HOSTED_MODERATION_ENABLED") and app.config.get("HOSTED_MODERATION_PROVIDERS"): - hosted_config.moderation = HostedModerationConfig( - enabled=app.config.get("HOSTED_MODERATION_ENABLED"), - providers=app.config.get("HOSTED_MODERATION_PROVIDERS").split(',') - ) diff --git a/api/core/model_providers/providers/huggingface_hub_provider.py b/api/core/model_providers/providers/huggingface_hub_provider.py deleted file mode 100644 index 2cb7ff120..000000000 --- a/api/core/model_providers/providers/huggingface_hub_provider.py +++ /dev/null @@ -1,251 +0,0 @@ -import json -from typing import Type -import requests - -from huggingface_hub import HfApi - -from core.helper import encrypter -from core.model_providers.models.entity.model_params import KwargRule, ModelKwargsRules, ModelType, ModelMode -from core.model_providers.models.llm.huggingface_hub_model import HuggingfaceHubModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError - -from core.model_providers.models.base import BaseProviderModel -from core.third_party.langchain.llms.huggingface_endpoint_llm import HuggingFaceEndpointLLM -from core.third_party.langchain.embeddings.huggingface_hub_embedding import HuggingfaceHubEmbeddings -from core.model_providers.models.embedding.huggingface_embedding import HuggingfaceEmbedding -from models.provider import ProviderType - -HUGGINGFACE_ENDPOINT_API = 'https://api.endpoints.huggingface.cloud/v2/endpoint/' - - -class HuggingfaceHubProvider(BaseModelProvider): - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'huggingface_hub' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = HuggingfaceHubModel - elif model_type == ModelType.EMBEDDINGS: - model_class = HuggingfaceEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0.01, max=0.99, default=0.7, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](alias='max_new_tokens', min=10, max=4000, default=200, precision=0), - ) - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - if model_type not in [ModelType.TEXT_GENERATION, ModelType.EMBEDDINGS]: - raise NotImplementedError - - if 'huggingfacehub_api_type' not in credentials \ - or credentials['huggingfacehub_api_type'] not in ['hosted_inference_api', 'inference_endpoints']: - raise CredentialsValidateFailedError('Hugging Face Hub API Type invalid, ' - 'must be hosted_inference_api or inference_endpoints.') - - if 'huggingfacehub_api_token' not in credentials: - raise CredentialsValidateFailedError('Hugging Face Hub API Token must be provided.') - - hfapi = HfApi(token=credentials['huggingfacehub_api_token']) - - try: - hfapi.whoami() - except Exception: - raise CredentialsValidateFailedError("Invalid API Token.") - - if credentials['huggingfacehub_api_type'] == 'inference_endpoints': - if 'huggingfacehub_endpoint_url' not in credentials: - raise CredentialsValidateFailedError('Hugging Face Hub Endpoint URL must be provided.') - - if 'task_type' not in credentials: - raise CredentialsValidateFailedError('Task Type must be provided.') - - if credentials['task_type'] not in ("text2text-generation", "text-generation", 'feature-extraction'): - raise CredentialsValidateFailedError('Task Type must be one of text2text-generation, ' - 'text-generation, feature-extraction.') - - try: - if credentials['task_type'] == 'feature-extraction': - cls.check_embedding_valid(credentials, model_name) - else: - cls.check_llm_valid(credentials) - except Exception as e: - raise CredentialsValidateFailedError(f"{e.__class__.__name__}:{str(e)}") - else: - try: - model_info = hfapi.model_info(repo_id=model_name) - if not model_info: - raise ValueError(f'Model {model_name} not found.') - - if 'inference' in model_info.cardData and not model_info.cardData['inference']: - raise ValueError(f'Inference API has been turned off for this model {model_name}.') - - VALID_TASKS = ("text2text-generation", "text-generation", "feature-extraction") - if model_info.pipeline_tag not in VALID_TASKS: - raise ValueError(f"Model {model_name} is not a valid task, " - f"must be one of {VALID_TASKS}.") - except Exception as e: - raise CredentialsValidateFailedError(f"{e.__class__.__name__}:{str(e)}") - - @classmethod - def check_llm_valid(cls, credentials: dict): - llm = HuggingFaceEndpointLLM( - endpoint_url=credentials['huggingfacehub_endpoint_url'], - task=credentials['task_type'], - model_kwargs={"temperature": 0.5, "max_new_tokens": 200}, - huggingfacehub_api_token=credentials['huggingfacehub_api_token'] - ) - - llm("ping") - - @classmethod - def check_embedding_valid(cls, credentials: dict, model_name: str): - - cls.check_endpoint_url_model_repository_name(credentials, model_name) - - embedding_model = HuggingfaceHubEmbeddings( - model=model_name, - **credentials - ) - - embedding_model.embed_query("ping") - - @classmethod - def check_endpoint_url_model_repository_name(cls, credentials: dict, model_name: str): - try: - url = f'{HUGGINGFACE_ENDPOINT_API}{credentials["huggingface_namespace"]}' - headers = { - 'Authorization': f'Bearer {credentials["huggingfacehub_api_token"]}', - 'Content-Type': 'application/json' - } - - response =requests.get(url=url, headers=headers) - - if response.status_code != 200: - raise ValueError('User Name or Organization Name is invalid.') - - model_repository_name = '' - - for item in response.json().get("items", []): - if item.get("status", {}).get("url") == credentials['huggingfacehub_endpoint_url']: - model_repository_name = item.get("model", {}).get("repository") - break - - if model_repository_name != model_name: - raise ValueError(f'Model Name {model_name} is invalid. Please check it on the inference endpoints console.') - - except Exception as e: - raise ValueError(str(e)) - - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - credentials['huggingfacehub_api_token'] = encrypter.encrypt_token(tenant_id, credentials['huggingfacehub_api_token']) - - if credentials['huggingfacehub_api_type'] == 'hosted_inference_api': - hfapi = HfApi(token=credentials['huggingfacehub_api_token']) - model_info = hfapi.model_info(repo_id=model_name) - if not model_info: - raise ValueError(f'Model {model_name} not found.') - - if 'inference' in model_info.cardData and not model_info.cardData['inference']: - raise ValueError(f'Inference API has been turned off for this model {model_name}.') - - credentials['task_type'] = model_info.pipeline_tag - - return credentials - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - if self.provider.provider_type != ProviderType.CUSTOM.value: - raise NotImplementedError - - provider_model = self._get_provider_model(model_name, model_type) - - if not provider_model.encrypted_config: - return { - 'huggingfacehub_api_token': None, - 'task_type': None - } - - credentials = json.loads(provider_model.encrypted_config) - - if 'task_type' not in credentials: - credentials['task_type'] = 'text-generation' - - if credentials['huggingfacehub_api_token']: - credentials['huggingfacehub_api_token'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['huggingfacehub_api_token'] - ) - - if obfuscated: - credentials['huggingfacehub_api_token'] = encrypter.obfuscated_token(credentials['huggingfacehub_api_token']) - - return credentials - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - return - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return {} - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} diff --git a/api/core/model_providers/providers/jina_provider.py b/api/core/model_providers/providers/jina_provider.py deleted file mode 100644 index fd3402582..000000000 --- a/api/core/model_providers/providers/jina_provider.py +++ /dev/null @@ -1,141 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.jina_embedding import JinaEmbedding -from core.model_providers.models.entity.model_params import ModelType, ModelKwargsRules -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.embeddings.jina_embedding import JinaEmbeddings -from models.provider import ProviderType - - -class JinaProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'jina' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.EMBEDDINGS: - return [ - { - 'id': 'jina-embeddings-v2-base-en', - 'name': 'jina-embeddings-v2-base-en', - }, - { - 'id': 'jina-embeddings-v2-small-en', - 'name': 'jina-embeddings-v2-small-en', - } - ] - else: - return [] - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.EMBEDDINGS: - model_class = JinaEmbedding - else: - raise NotImplementedError - - return model_class - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'api_key' not in credentials: - raise CredentialsValidateFailedError('Jina API Key must be provided.') - - try: - credential_kwargs = { - 'api_key': credentials['api_key'], - } - - embedding = JinaEmbeddings( - model='jina-embeddings-v2-small-en', - **credential_kwargs - ) - - embedding.embed_query("ping") - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_key'] = encrypter.encrypt_token(tenant_id, credentials['api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'api_key': None, - } - - if credentials['api_key']: - credentials['api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_key'] - ) - - if obfuscated: - credentials['api_key'] = encrypter.obfuscated_token(credentials['api_key']) - - return credentials - - return {} - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) - - def _get_text_generation_model_mode(self, model_name) -> str: - raise NotImplementedError - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - raise NotImplementedError diff --git a/api/core/model_providers/providers/localai_provider.py b/api/core/model_providers/providers/localai_provider.py deleted file mode 100644 index 89279996f..000000000 --- a/api/core/model_providers/providers/localai_provider.py +++ /dev/null @@ -1,171 +0,0 @@ -import json -from typing import Type - -from langchain.embeddings import LocalAIEmbeddings -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.embedding.localai_embedding import LocalAIEmbedding -from core.model_providers.models.entity.model_params import ModelKwargsRules, ModelType, KwargRule, ModelMode -from core.model_providers.models.llm.localai_model import LocalAIModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError - -from core.model_providers.models.base import BaseProviderModel -from core.third_party.langchain.llms.chat_open_ai import EnhanceChatOpenAI -from core.third_party.langchain.llms.open_ai import EnhanceOpenAI -from models.provider import ProviderType - - -class LocalAIProvider(BaseModelProvider): - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'localai' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - credentials = self.get_model_credentials(model_name, ModelType.TEXT_GENERATION) - if credentials['completion_type'] == 'chat_completion': - return ModelMode.CHAT.value - else: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = LocalAIModel - elif model_type == ModelType.EMBEDDINGS: - model_class = LocalAIEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=2, default=0.7, precision=2), - top_p=KwargRule[float](min=0, max=1, default=1, precision=2), - max_tokens=KwargRule[int](min=10, max=4097, default=16, precision=0), - ) - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - if 'server_url' not in credentials: - raise CredentialsValidateFailedError('LocalAI Server URL must be provided.') - - try: - if model_type == ModelType.EMBEDDINGS: - model = LocalAIEmbeddings( - model=model_name, - openai_api_key='1', - openai_api_base=credentials['server_url'] - ) - - model.embed_query("ping") - else: - if ('completion_type' not in credentials - or credentials['completion_type'] not in ['completion', 'chat_completion']): - raise CredentialsValidateFailedError('LocalAI Completion Type must be provided.') - - if credentials['completion_type'] == 'chat_completion': - model = EnhanceChatOpenAI( - model_name=model_name, - openai_api_key='1', - openai_api_base=credentials['server_url'] + '/v1', - max_tokens=10, - request_timeout=60, - ) - - model([HumanMessage(content='ping')]) - else: - model = EnhanceOpenAI( - model_name=model_name, - openai_api_key='1', - openai_api_base=credentials['server_url'] + '/v1', - max_tokens=10, - request_timeout=60, - ) - - model('ping') - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - credentials['server_url'] = encrypter.encrypt_token(tenant_id, credentials['server_url']) - return credentials - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - if self.provider.provider_type != ProviderType.CUSTOM.value: - raise NotImplementedError - - provider_model = self._get_provider_model(model_name, model_type) - - if not provider_model.encrypted_config: - return { - 'server_url': None, - } - - credentials = json.loads(provider_model.encrypted_config) - if credentials['server_url']: - credentials['server_url'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['server_url'] - ) - - if obfuscated: - credentials['server_url'] = encrypter.obfuscated_token(credentials['server_url']) - - return credentials - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - return - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return {} - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} diff --git a/api/core/model_providers/providers/minimax_provider.py b/api/core/model_providers/providers/minimax_provider.py deleted file mode 100644 index f643e1e80..000000000 --- a/api/core/model_providers/providers/minimax_provider.py +++ /dev/null @@ -1,185 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.minimax_embedding import MinimaxEmbedding -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.minimax_model import MinimaxModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.llms.minimax_llm import MinimaxChatLLM -from models.provider import ProviderType, ProviderQuotaType - - -class MinimaxProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'minimax' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'abab5.5-chat', - 'name': 'abab5.5-chat', - 'mode': ModelMode.COMPLETION.value, - }, - { - 'id': 'abab5-chat', - 'name': 'abab5-chat', - 'mode': ModelMode.COMPLETION.value, - } - ] - elif model_type == ModelType.EMBEDDINGS: - return [ - { - 'id': 'embo-01', - 'name': 'embo-01', - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = MinimaxModel - elif model_type == ModelType.EMBEDDINGS: - model_class = MinimaxEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_max_tokens = { - 'abab5.5-chat': 16384, - 'abab5-chat': 6144, - } - - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=1, default=0.9, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.95, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](min=10, max=model_max_tokens.get(model_name, 6144), default=1024, precision=0), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'minimax_group_id' not in credentials: - raise CredentialsValidateFailedError('MiniMax Group ID must be provided.') - - if 'minimax_api_key' not in credentials: - raise CredentialsValidateFailedError('MiniMax API Key must be provided.') - - try: - credential_kwargs = { - 'minimax_group_id': credentials['minimax_group_id'], - 'minimax_api_key': credentials['minimax_api_key'], - } - - llm = MinimaxChatLLM( - model='abab5.5-chat', - max_tokens=10, - temperature=0.01, - **credential_kwargs - ) - - llm([HumanMessage(content='ping')]) - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['minimax_api_key'] = encrypter.encrypt_token(tenant_id, credentials['minimax_api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value \ - or (self.provider.provider_type == ProviderType.SYSTEM.value - and self.provider.quota_type == ProviderQuotaType.FREE.value): - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'minimax_group_id': None, - 'minimax_api_key': None, - } - - if credentials['minimax_api_key']: - credentials['minimax_api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['minimax_api_key'] - ) - - if obfuscated: - credentials['minimax_api_key'] = encrypter.obfuscated_token(credentials['minimax_api_key']) - - return credentials - - return {} - - def should_deduct_quota(self): - return True - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/openai_provider.py b/api/core/model_providers/providers/openai_provider.py deleted file mode 100644 index 0e890529c..000000000 --- a/api/core/model_providers/providers/openai_provider.py +++ /dev/null @@ -1,318 +0,0 @@ -import json -import logging -from json import JSONDecodeError -from typing import Type, Optional - -from flask import current_app -from openai.error import AuthenticationError, OpenAIError - -import openai - -from core.helper import encrypter -from core.model_providers.models.entity.provider import ModelFeature -from core.model_providers.models.speech2text.openai_whisper import OpenAIWhisper -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.openai_embedding import OpenAIEmbedding -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.openai_model import OpenAIModel, COMPLETION_MODELS -from core.model_providers.models.moderation.openai_moderation import OpenAIModeration -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.model_providers.providers.hosted import hosted_model_providers -from models.provider import ProviderType, ProviderQuotaType - - -class OpenAIProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'openai' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - models = [ - { - 'id': 'gpt-3.5-turbo', - 'name': 'gpt-3.5-turbo', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-3.5-turbo-1106', - 'name': 'gpt-3.5-turbo-1106', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-3.5-turbo-instruct', - 'name': 'gpt-3.5-turbo-instruct', - 'mode': ModelMode.COMPLETION.value, - }, - { - 'id': 'gpt-3.5-turbo-16k', - 'name': 'gpt-3.5-turbo-16k', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4', - 'name': 'gpt-4', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4-1106-preview', - 'name': 'gpt-4-1106-preview', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'gpt-4-vision-preview', - 'name': 'gpt-4-vision-preview', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.VISION.value - ] - }, - { - 'id': 'gpt-4-32k', - 'name': 'gpt-4-32k', - 'mode': ModelMode.CHAT.value, - 'features': [ - ModelFeature.AGENT_THOUGHT.value - ] - }, - { - 'id': 'text-davinci-003', - 'name': 'text-davinci-003', - 'mode': ModelMode.COMPLETION.value, - } - ] - - if self.provider.provider_type == ProviderType.SYSTEM.value \ - and self.provider.quota_type == ProviderQuotaType.TRIAL.value: - models = [item for item in models if not item['id'].startswith('gpt-4')] - - return models - elif model_type == ModelType.EMBEDDINGS: - return [ - { - 'id': 'text-embedding-ada-002', - 'name': 'text-embedding-ada-002' - } - ] - elif model_type == ModelType.SPEECH_TO_TEXT: - return [ - { - 'id': 'whisper-1', - 'name': 'whisper-1' - } - ] - elif model_type == ModelType.MODERATION: - return [ - { - 'id': 'text-moderation-stable', - 'name': 'text-moderation-stable' - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - if model_name in COMPLETION_MODELS: - return ModelMode.COMPLETION.value - else: - return ModelMode.CHAT.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = OpenAIModel - elif model_type == ModelType.EMBEDDINGS: - model_class = OpenAIEmbedding - elif model_type == ModelType.MODERATION: - model_class = OpenAIModeration - elif model_type == ModelType.SPEECH_TO_TEXT: - model_class = OpenAIWhisper - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_max_tokens = { - 'gpt-4-1106-preview': 128000, - 'gpt-4-vision-preview': 128000, - 'gpt-4': 8192, - 'gpt-4-32k': 32768, - 'gpt-3.5-turbo-1106': 16384, - 'gpt-3.5-turbo': 4096, - 'gpt-3.5-turbo-instruct': 4097, - 'gpt-3.5-turbo-16k': 16384, - 'text-davinci-003': 4097, - } - - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=1, precision=2), - presence_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - frequency_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - max_tokens=KwargRule[int](min=10, max=model_max_tokens.get(model_name, 4097), default=16, precision=0), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'openai_api_key' not in credentials: - raise CredentialsValidateFailedError('OpenAI API key is required') - - try: - credentials_kwargs = { - "api_key": credentials['openai_api_key'] - } - - if 'openai_api_base' in credentials and credentials['openai_api_base']: - credentials_kwargs['api_base'] = credentials['openai_api_base'] + '/v1' - - if 'openai_organization' in credentials: - credentials_kwargs['organization'] = credentials['openai_organization'] - - openai.ChatCompletion.create( - messages=[{"role": "user", "content": 'ping'}], - model='gpt-3.5-turbo', - timeout=10, - request_timeout=(5, 30), - max_tokens=20, - **credentials_kwargs - ) - except (AuthenticationError, OpenAIError) as ex: - raise CredentialsValidateFailedError(str(ex)) - except Exception as ex: - logging.exception('OpenAI config validation failed') - raise ex - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['openai_api_key'] = encrypter.encrypt_token(tenant_id, credentials['openai_api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'openai_api_base': None, - 'openai_api_key': self.provider.encrypted_config, - 'openai_organization': None - } - - if credentials['openai_api_key']: - credentials['openai_api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['openai_api_key'] - ) - - if obfuscated: - credentials['openai_api_key'] = encrypter.obfuscated_token(credentials['openai_api_key']) - - if 'openai_api_base' not in credentials or not credentials['openai_api_base']: - credentials['openai_api_base'] = None - else: - credentials['openai_api_base'] = credentials['openai_api_base'] + '/v1' - - if 'openai_organization' not in credentials: - credentials['openai_organization'] = None - - return credentials - else: - if hosted_model_providers.openai: - return { - 'openai_api_base': hosted_model_providers.openai.api_base, - 'openai_api_key': hosted_model_providers.openai.api_key, - 'openai_organization': hosted_model_providers.openai.api_organization - } - else: - return { - 'openai_api_base': None, - 'openai_api_key': None, - 'openai_organization': None - } - - @classmethod - def is_provider_type_system_supported(cls) -> bool: - if current_app.config['EDITION'] != 'CLOUD': - return False - - if hosted_model_providers.openai: - return True - - return False - - def should_deduct_quota(self): - if hosted_model_providers.openai \ - and hosted_model_providers.openai.quota_limit and hosted_model_providers.openai.quota_limit > -1: - return True - - return False - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/openllm_provider.py b/api/core/model_providers/providers/openllm_provider.py deleted file mode 100644 index ea0e0b860..000000000 --- a/api/core/model_providers/providers/openllm_provider.py +++ /dev/null @@ -1,152 +0,0 @@ -import json -from typing import Type - -from core.helper import encrypter -from core.model_providers.models.embedding.openllm_embedding import OpenLLMEmbedding -from core.model_providers.models.entity.model_params import KwargRule, ModelKwargsRules, ModelType, ModelMode -from core.model_providers.models.llm.openllm_model import OpenLLMModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError - -from core.model_providers.models.base import BaseProviderModel -from core.third_party.langchain.embeddings.openllm_embedding import OpenLLMEmbeddings -from core.third_party.langchain.llms.openllm import OpenLLM -from models.provider import ProviderType - - -class OpenLLMProvider(BaseModelProvider): - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'openllm' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = OpenLLMModel - elif model_type== ModelType.EMBEDDINGS: - model_class = OpenLLMEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.7, precision=2), - presence_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - frequency_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - max_tokens=KwargRule[int](alias='max_new_tokens', min=10, max=4000, default=128, precision=0), - ) - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - if 'server_url' not in credentials: - raise CredentialsValidateFailedError('OpenLLM Server URL must be provided.') - - try: - credential_kwargs = { - 'server_url': credentials['server_url'] - } - - if model_type == ModelType.TEXT_GENERATION: - llm = OpenLLM( - llm_kwargs={ - 'max_new_tokens': 10 - }, - **credential_kwargs - ) - - llm("ping") - elif model_type == ModelType.EMBEDDINGS: - embedding = OpenLLMEmbeddings( - **credential_kwargs - ) - - embedding.embed_query("ping") - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - credentials['server_url'] = encrypter.encrypt_token(tenant_id, credentials['server_url']) - return credentials - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - if self.provider.provider_type != ProviderType.CUSTOM.value: - raise NotImplementedError - - provider_model = self._get_provider_model(model_name, model_type) - - if not provider_model.encrypted_config: - return { - 'server_url': None - } - - credentials = json.loads(provider_model.encrypted_config) - if credentials['server_url']: - credentials['server_url'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['server_url'] - ) - - if obfuscated: - credentials['server_url'] = encrypter.obfuscated_token(credentials['server_url']) - - return credentials - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - return - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return {} - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} diff --git a/api/core/model_providers/providers/replicate_provider.py b/api/core/model_providers/providers/replicate_provider.py deleted file mode 100644 index be9a7aa7a..000000000 --- a/api/core/model_providers/providers/replicate_provider.py +++ /dev/null @@ -1,191 +0,0 @@ -import json -import logging -from typing import Type - -import replicate -from replicate.exceptions import ReplicateError - -from core.helper import encrypter -from core.model_providers.models.entity.model_params import KwargRule, KwargRuleType, ModelKwargsRules, ModelType, \ - ModelMode -from core.model_providers.models.llm.replicate_model import ReplicateModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError - -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.replicate_embedding import ReplicateEmbedding -from models.provider import ProviderType - - -class ReplicateProvider(BaseModelProvider): - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'replicate' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value if model_name.endswith('-chat') else ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = ReplicateModel - elif model_type == ModelType.EMBEDDINGS: - model_class = ReplicateEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_credentials = self.get_model_credentials(model_name, model_type) - - model = replicate.Client(api_token=model_credentials.get("replicate_api_token")).models.get(model_name) - - try: - version = model.versions.get(model_credentials['model_version']) - except ReplicateError as e: - raise CredentialsValidateFailedError(f"Model {model_name}:{model_credentials['model_version']} not exists, " - f"cause: {e.__class__.__name__}:{str(e)}") - except Exception as e: - logging.exception("Model validate failed.") - raise e - - model_kwargs_rules = ModelKwargsRules() - for key, value in version.openapi_schema['components']['schemas']['Input']['properties'].items(): - if key not in ['debug', 'prompt'] and value['type'] in ['number', 'integer']: - if key == ['temperature', 'top_p']: - kwarg_rule = KwargRule[float]( - type=KwargRuleType.FLOAT.value if value['type'] == 'number' else KwargRuleType.INTEGER.value, - min=float(value.get('minimum')) if value.get('minimum') is not None else None, - max=float(value.get('maximum')) if value.get('maximum') is not None else None, - default=float(value.get('default')) if value.get('default') is not None else None, - precision = 2 - ) - if key == 'temperature': - model_kwargs_rules.temperature = kwarg_rule - else: - model_kwargs_rules.top_p = kwarg_rule - elif key in ['max_length', 'max_new_tokens']: - model_kwargs_rules.max_tokens = KwargRule[int]( - alias=key, - type=KwargRuleType.INTEGER.value, - min=int(value.get('minimum')) if value.get('minimum') is not None else 1, - max=int(value.get('maximum')) if value.get('maximum') is not None else 8000, - default=int(value.get('default')) if value.get('default') is not None else 500, - precision = 0 - ) - - return model_kwargs_rules - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - if 'replicate_api_token' not in credentials: - raise CredentialsValidateFailedError('Replicate API Key must be provided.') - - if 'model_version' not in credentials: - raise CredentialsValidateFailedError('Replicate Model Version must be provided.') - - if model_name.count("/") != 1: - raise CredentialsValidateFailedError('Replicate Model Name must be provided, ' - 'format: {user_name}/{model_name}') - - version = credentials['model_version'] - try: - model = replicate.Client(api_token=credentials.get("replicate_api_token")).models.get(model_name) - rst = model.versions.get(version) - - if model_type == ModelType.EMBEDDINGS \ - and 'Embedding' not in rst.openapi_schema['components']['schemas']: - raise CredentialsValidateFailedError(f"Model {model_name}:{version} is not a Embedding model.") - elif model_type == ModelType.TEXT_GENERATION \ - and ('items' not in rst.openapi_schema['components']['schemas']['Output'] - or 'type' not in rst.openapi_schema['components']['schemas']['Output']['items'] - or rst.openapi_schema['components']['schemas']['Output']['items']['type'] != 'string'): - raise CredentialsValidateFailedError(f"Model {model_name}:{version} is not a Text Generation model.") - except ReplicateError as e: - raise CredentialsValidateFailedError( - f"Model {model_name}:{version} not exists, cause: {e.__class__.__name__}:{str(e)}") - except Exception as e: - logging.exception("Replicate config validation failed.") - raise e - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - credentials['replicate_api_token'] = encrypter.encrypt_token(tenant_id, credentials['replicate_api_token']) - return credentials - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - if self.provider.provider_type != ProviderType.CUSTOM.value: - raise NotImplementedError - - provider_model = self._get_provider_model(model_name, model_type) - - if not provider_model.encrypted_config: - return { - 'replicate_api_token': None, - } - - credentials = json.loads(provider_model.encrypted_config) - if credentials['replicate_api_token']: - credentials['replicate_api_token'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['replicate_api_token'] - ) - - if obfuscated: - credentials['replicate_api_token'] = encrypter.obfuscated_token(credentials['replicate_api_token']) - - return credentials - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - return - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return {} - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} diff --git a/api/core/model_providers/providers/spark_provider.py b/api/core/model_providers/providers/spark_provider.py deleted file mode 100644 index bd95db489..000000000 --- a/api/core/model_providers/providers/spark_provider.py +++ /dev/null @@ -1,242 +0,0 @@ -import json -import logging -from json import JSONDecodeError -from typing import Type - -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.spark_model import SparkModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.llms.spark import ChatSpark -from core.third_party.spark.spark_llm import SparkError -from models.provider import ProviderType, ProviderQuotaType - - -class SparkProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'spark' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'spark-v3', - 'name': 'Spark V3.0', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'spark-v2', - 'name': 'Spark V2.0', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'spark', - 'name': 'Spark V1.5', - 'mode': ModelMode.CHAT.value, - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = SparkModel - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0, max=1, default=0.5, precision=2), - top_p=KwargRule[float](enabled=False), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](min=10, max=4096, default=2048, precision=0), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'app_id' not in credentials: - raise CredentialsValidateFailedError('Spark app_id must be provided.') - - if 'api_key' not in credentials: - raise CredentialsValidateFailedError('Spark api_key must be provided.') - - if 'api_secret' not in credentials: - raise CredentialsValidateFailedError('Spark api_secret must be provided.') - - credential_kwargs = { - 'app_id': credentials['app_id'], - 'api_key': credentials['api_key'], - 'api_secret': credentials['api_secret'], - } - - try: - chat_llm = ChatSpark( - model_name='spark-v3', - max_tokens=10, - temperature=0.01, - **credential_kwargs - ) - - messages = [ - HumanMessage( - content="ping" - ) - ] - - chat_llm(messages) - except SparkError as ex: - # try spark v2.1 if v3.1 failed - try: - chat_llm = ChatSpark( - model_name='spark-v2', - max_tokens=10, - temperature=0.01, - **credential_kwargs - ) - - messages = [ - HumanMessage( - content="ping" - ) - ] - - chat_llm(messages) - except SparkError as ex: - # try spark v1.5 if v2.1 failed - try: - chat_llm = ChatSpark( - model_name='spark', - max_tokens=10, - temperature=0.01, - **credential_kwargs - ) - - messages = [ - HumanMessage( - content="ping" - ) - ] - - chat_llm(messages) - except SparkError as ex: - raise CredentialsValidateFailedError(str(ex)) - except Exception as ex: - logging.exception('Spark config validation failed') - raise ex - except Exception as ex: - logging.exception('Spark config validation failed') - raise ex - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_key'] = encrypter.encrypt_token(tenant_id, credentials['api_key']) - credentials['api_secret'] = encrypter.encrypt_token(tenant_id, credentials['api_secret']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value \ - or (self.provider.provider_type == ProviderType.SYSTEM.value - and self.provider.quota_type == ProviderQuotaType.FREE.value): - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'app_id': None, - 'api_key': None, - 'api_secret': None, - } - - if credentials['api_key']: - credentials['api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_key'] - ) - - if obfuscated: - credentials['api_key'] = encrypter.obfuscated_token(credentials['api_key']) - - if credentials['api_secret']: - credentials['api_secret'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_secret'] - ) - - if obfuscated: - credentials['api_secret'] = encrypter.obfuscated_token(credentials['api_secret']) - - return credentials - else: - return { - 'app_id': None, - 'api_key': None, - 'api_secret': None, - } - - def should_deduct_quota(self): - return True - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/tongyi_provider.py b/api/core/model_providers/providers/tongyi_provider.py deleted file mode 100644 index 49ff731ac..000000000 --- a/api/core/model_providers/providers/tongyi_provider.py +++ /dev/null @@ -1,162 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.tongyi_model import TongyiModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.llms.tongyi_llm import EnhanceTongyi -from models.provider import ProviderType - - -class TongyiProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'tongyi' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'qwen-turbo', - 'name': 'qwen-turbo', - 'mode': ModelMode.COMPLETION.value, - }, - { - 'id': 'qwen-plus', - 'name': 'qwen-plus', - 'mode': ModelMode.COMPLETION.value, - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = TongyiModel - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_max_tokens = { - 'qwen-turbo': 6000, - 'qwen-plus': 6000 - } - - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=1, default=1, precision=2), - top_p=KwargRule[float](min=0.01, max=0.99, default=0.5, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](enabled=False, max=model_max_tokens.get(model_name)), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'dashscope_api_key' not in credentials: - raise CredentialsValidateFailedError('Dashscope API Key must be provided.') - - try: - credential_kwargs = { - 'dashscope_api_key': credentials['dashscope_api_key'] - } - - llm = EnhanceTongyi( - model_name='qwen-turbo', - max_retries=1, - **credential_kwargs - ) - - llm("ping") - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['dashscope_api_key'] = encrypter.encrypt_token(tenant_id, credentials['dashscope_api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'dashscope_api_key': None - } - - if credentials['dashscope_api_key']: - credentials['dashscope_api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['dashscope_api_key'] - ) - - if obfuscated: - credentials['dashscope_api_key'] = encrypter.obfuscated_token(credentials['dashscope_api_key']) - - return credentials - - return {} - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/wenxin_provider.py b/api/core/model_providers/providers/wenxin_provider.py deleted file mode 100644 index 650acffcc..000000000 --- a/api/core/model_providers/providers/wenxin_provider.py +++ /dev/null @@ -1,201 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.wenxin_model import WenxinModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.llms.wenxin import Wenxin -from models.provider import ProviderType - - -class WenxinProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'wenxin' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'ernie-bot-4', - 'name': 'ERNIE-Bot-4', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'ernie-bot', - 'name': 'ERNIE-Bot', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'ernie-bot-turbo', - 'name': 'ERNIE-Bot-turbo', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'bloomz-7b', - 'name': 'BLOOMZ-7B', - 'mode': ModelMode.CHAT.value, - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = WenxinModel - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - model_max_tokens = { - 'ernie-bot-4': 4800, - 'ernie-bot': 4800, - 'ernie-bot-turbo': 11200, - } - - if model_name in ['ernie-bot-4', 'ernie-bot', 'ernie-bot-turbo']: - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=1, default=0.95, precision=2), - top_p=KwargRule[float](min=0.01, max=1, default=0.8, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](enabled=False, max=model_max_tokens.get(model_name)), - ) - else: - return ModelKwargsRules( - temperature=KwargRule[float](enabled=False), - top_p=KwargRule[float](enabled=False), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](enabled=False), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'api_key' not in credentials: - raise CredentialsValidateFailedError('Wenxin api_key must be provided.') - - if 'secret_key' not in credentials: - raise CredentialsValidateFailedError('Wenxin secret_key must be provided.') - - try: - credential_kwargs = { - 'api_key': credentials['api_key'], - 'secret_key': credentials['secret_key'], - } - - llm = Wenxin( - temperature=0.01, - **credential_kwargs - ) - - llm([HumanMessage(content='ping')]) - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_key'] = encrypter.encrypt_token(tenant_id, credentials['api_key']) - credentials['secret_key'] = encrypter.encrypt_token(tenant_id, credentials['secret_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value: - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'api_key': None, - 'secret_key': None, - } - - if credentials['api_key']: - credentials['api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_key'] - ) - - if obfuscated: - credentials['api_key'] = encrypter.obfuscated_token(credentials['api_key']) - - if credentials['secret_key']: - credentials['secret_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['secret_key'] - ) - - if obfuscated: - credentials['secret_key'] = encrypter.obfuscated_token(credentials['secret_key']) - - return credentials - else: - return { - 'api_key': None, - 'secret_key': None, - } - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/providers/xinference_provider.py b/api/core/model_providers/providers/xinference_provider.py deleted file mode 100644 index 133c5e7cf..000000000 --- a/api/core/model_providers/providers/xinference_provider.py +++ /dev/null @@ -1,212 +0,0 @@ -import json -from typing import Type - -import requests -from xinference_client.client.restful.restful_client import Client - -from core.helper import encrypter -from core.model_providers.models.embedding.xinference_embedding import XinferenceEmbedding -from core.model_providers.models.entity.model_params import KwargRule, ModelKwargsRules, ModelType, ModelMode -from core.model_providers.models.llm.xinference_model import XinferenceModel -from core.model_providers.models.reranking.xinference_reranking import XinferenceReranking -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError - -from core.model_providers.models.base import BaseProviderModel -from core.third_party.langchain.embeddings.xinference_embedding import XinferenceEmbeddings -from core.third_party.langchain.llms.xinference_llm import XinferenceLLM -from models.provider import ProviderType - - -class XinferenceProvider(BaseModelProvider): - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'xinference' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = XinferenceModel - elif model_type == ModelType.EMBEDDINGS: - model_class = XinferenceEmbedding - elif model_type == ModelType.RERANKING: - model_class = XinferenceReranking - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - credentials = self.get_model_credentials(model_name, model_type) - if credentials['model_format'] == "ggmlv3" and credentials["model_handle_type"] == "chatglm": - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.7, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](min=10, max=4000, default=256, precision=0), - ) - elif credentials['model_format'] == "ggmlv3": - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.7, precision=2), - presence_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - frequency_penalty=KwargRule[float](min=-2, max=2, default=0, precision=2), - max_tokens=KwargRule[int](min=10, max=4000, default=256, precision=0), - ) - else: - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=2, default=1, precision=2), - top_p=KwargRule[float](min=0, max=1, default=0.7, precision=2), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](min=10, max=4000, default=256, precision=0), - ) - - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - if 'server_url' not in credentials: - raise CredentialsValidateFailedError('Xinference Server URL must be provided.') - - if 'model_uid' not in credentials: - raise CredentialsValidateFailedError('Xinference Model UID must be provided.') - - try: - credential_kwargs = { - 'server_url': credentials['server_url'], - 'model_uid': credentials['model_uid'], - } - - if model_type == ModelType.TEXT_GENERATION: - llm = XinferenceLLM( - **credential_kwargs - ) - - llm("ping") - elif model_type == ModelType.EMBEDDINGS: - embedding = XinferenceEmbeddings( - **credential_kwargs - ) - - embedding.embed_query("ping") - elif model_type == ModelType.RERANKING: - rerank_client = Client(credential_kwargs['server_url']) - model = rerank_client.get_model(credential_kwargs['model_uid']) - model.rerank(query="ping", documents=["ping", "pong"], top_n=2) - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - extra_credentials = cls._get_extra_credentials(credentials) - credentials.update(extra_credentials) - - credentials['server_url'] = encrypter.encrypt_token(tenant_id, credentials['server_url']) - - return credentials - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - if self.provider.provider_type != ProviderType.CUSTOM.value: - raise NotImplementedError - - provider_model = self._get_provider_model(model_name, model_type) - - if not provider_model.encrypted_config: - return { - 'server_url': None, - 'model_uid': None, - } - - credentials = json.loads(provider_model.encrypted_config) - if credentials['server_url']: - credentials['server_url'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['server_url'] - ) - - if obfuscated: - credentials['server_url'] = encrypter.obfuscated_token(credentials['server_url']) - - return credentials - - @classmethod - def _get_extra_credentials(self, credentials: dict) -> dict: - url = f"{credentials['server_url']}/v1/models/{credentials['model_uid']}" - response = requests.get(url) - if response.status_code != 200: - raise RuntimeError( - f"Failed to get the model description, detail: {response.json()['detail']}" - ) - desc = response.json() - - extra_credentials = { - 'model_format': desc['model_format'], - } - if desc["model_format"] == "ggmlv3" and "chatglm" in desc["model_name"]: - extra_credentials['model_handle_type'] = 'chatglm' - elif "generate" in desc["model_ability"]: - extra_credentials['model_handle_type'] = 'generate' - elif "chat" in desc["model_ability"]: - extra_credentials['model_handle_type'] = 'chat' - else: - raise NotImplementedError(f"Model handle type not supported.") - - return extra_credentials - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - return - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return {} - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} diff --git a/api/core/model_providers/providers/zhipuai_provider.py b/api/core/model_providers/providers/zhipuai_provider.py deleted file mode 100644 index 2a7a0f65e..000000000 --- a/api/core/model_providers/providers/zhipuai_provider.py +++ /dev/null @@ -1,188 +0,0 @@ -import json -from json import JSONDecodeError -from typing import Type - -from langchain.schema import HumanMessage - -from core.helper import encrypter -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.embedding.zhipuai_embedding import ZhipuAIEmbedding -from core.model_providers.models.entity.model_params import ModelKwargsRules, KwargRule, ModelType, ModelMode -from core.model_providers.models.llm.zhipuai_model import ZhipuAIModel -from core.model_providers.providers.base import BaseModelProvider, CredentialsValidateFailedError -from core.third_party.langchain.llms.zhipuai_llm import ZhipuAIChatLLM -from models.provider import ProviderType, ProviderQuotaType - - -class ZhipuAIProvider(BaseModelProvider): - - @property - def provider_name(self): - """ - Returns the name of a provider. - """ - return 'zhipuai' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - if model_type == ModelType.TEXT_GENERATION: - return [ - { - 'id': 'chatglm_turbo', - 'name': 'chatglm_turbo', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'chatglm_pro', - 'name': 'chatglm_pro', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'chatglm_std', - 'name': 'chatglm_std', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'chatglm_lite', - 'name': 'chatglm_lite', - 'mode': ModelMode.CHAT.value, - }, - { - 'id': 'chatglm_lite_32k', - 'name': 'chatglm_lite_32k', - 'mode': ModelMode.CHAT.value, - } - ] - elif model_type == ModelType.EMBEDDINGS: - return [ - { - 'id': 'text_embedding', - 'name': 'text_embedding', - } - ] - else: - return [] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.CHAT.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - """ - Returns the model class. - - :param model_type: - :return: - """ - if model_type == ModelType.TEXT_GENERATION: - model_class = ZhipuAIModel - elif model_type == ModelType.EMBEDDINGS: - model_class = ZhipuAIEmbedding - else: - raise NotImplementedError - - return model_class - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - """ - get model parameter rules. - - :param model_name: - :param model_type: - :return: - """ - return ModelKwargsRules( - temperature=KwargRule[float](min=0.01, max=1, default=0.95, precision=2), - top_p=KwargRule[float](min=0.1, max=0.9, default=0.8, precision=1), - presence_penalty=KwargRule[float](enabled=False), - frequency_penalty=KwargRule[float](enabled=False), - max_tokens=KwargRule[int](enabled=False), - ) - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - """ - Validates the given credentials. - """ - if 'api_key' not in credentials: - raise CredentialsValidateFailedError('ZhipuAI api_key must be provided.') - - try: - credential_kwargs = { - 'api_key': credentials['api_key'] - } - - llm = ZhipuAIChatLLM( - temperature=0.01, - **credential_kwargs - ) - - llm([HumanMessage(content='ping')]) - except Exception as ex: - raise CredentialsValidateFailedError(str(ex)) - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - credentials['api_key'] = encrypter.encrypt_token(tenant_id, credentials['api_key']) - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - if self.provider.provider_type == ProviderType.CUSTOM.value \ - or (self.provider.provider_type == ProviderType.SYSTEM.value - and self.provider.quota_type == ProviderQuotaType.FREE.value): - try: - credentials = json.loads(self.provider.encrypted_config) - except JSONDecodeError: - credentials = { - 'api_key': None, - } - - if credentials['api_key']: - credentials['api_key'] = encrypter.decrypt_token( - self.provider.tenant_id, - credentials['api_key'] - ) - - if obfuscated: - credentials['api_key'] = encrypter.obfuscated_token(credentials['api_key']) - - return credentials - else: - return {} - - def should_deduct_quota(self): - return True - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - """ - check model credentials valid. - - :param model_name: - :param model_type: - :param credentials: - """ - return - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - """ - encrypt model credentials for save. - - :param tenant_id: - :param model_name: - :param model_type: - :param credentials: - :return: - """ - return {} - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - """ - get credentials for llm use. - - :param model_name: - :param model_type: - :param obfuscated: - :return: - """ - return self.get_provider_credentials(obfuscated) diff --git a/api/core/model_providers/rules.py b/api/core/model_providers/rules.py deleted file mode 100644 index 5a911500d..000000000 --- a/api/core/model_providers/rules.py +++ /dev/null @@ -1,47 +0,0 @@ -import json -import os - - -def init_provider_rules(): - # Get the absolute path of the subdirectory - subdirectory_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'rules') - - # Path to the providers.json file - providers_json_file_path = os.path.join(subdirectory_path, '_providers.json') - - try: - # Open the JSON file and read its content - with open(providers_json_file_path, 'r') as json_file: - data = json.load(json_file) - # Store the content in a dictionary with the key as the file name (without extension) - provider_names = data - except FileNotFoundError: - return "JSON file not found or path error" - except json.JSONDecodeError: - return "JSON file decoding error" - - # Dictionary to store the content of all JSON files - json_data = {} - - try: - # Loop through all files in the directory - for provider_name in provider_names: - filename = provider_name + '.json' - - # Path to each JSON file - json_file_path = os.path.join(subdirectory_path, filename) - - # Open each JSON file and read its content - with open(json_file_path, 'r') as json_file: - data = json.load(json_file) - # Store the content in the dictionary with the key as the file name (without extension) - json_data[os.path.splitext(filename)[0]] = data - - return json_data - except FileNotFoundError: - return "JSON file not found or path error" - except json.JSONDecodeError: - return "JSON file decoding error" - - -provider_rules = init_provider_rules() diff --git a/api/core/model_providers/rules/_providers.json b/api/core/model_providers/rules/_providers.json deleted file mode 100644 index 8c500e9dd..000000000 --- a/api/core/model_providers/rules/_providers.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - "openai", - "azure_openai", - "anthropic", - "minimax", - "tongyi", - "spark", - "wenxin", - "zhipuai", - "baichuan", - "chatglm", - "replicate", - "huggingface_hub", - "xinference", - "openllm", - "localai", - "cohere", - "jina" -] diff --git a/api/core/model_providers/rules/anthropic.json b/api/core/model_providers/rules/anthropic.json deleted file mode 100644 index bb02ce845..000000000 --- a/api/core/model_providers/rules/anthropic.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "support_provider_types": [ - "system", - "custom" - ], - "system_config": { - "supported_quota_types": [ - "paid", - "trial" - ], - "quota_unit": "tokens", - "quota_limit": 0 - }, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation" - ], - "price_config": { - "claude-instant-1": { - "prompt": "1.63", - "completion": "5.51", - "unit": "0.000001", - "currency": "USD" - }, - "claude-2": { - "prompt": "8.00", - "completion": "24.00", - "unit": "0.000001", - "currency": "USD" - }, - "claude-2.1": { - "prompt": "8.00", - "completion": "24.00", - "unit": "0.000001", - "currency": "USD" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/azure_openai.json b/api/core/model_providers/rules/azure_openai.json deleted file mode 100644 index 789abd4d4..000000000 --- a/api/core/model_providers/rules/azure_openai.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "configurable", - "supported_model_types": [ - "text-generation", - "embeddings" - ], - "price_config":{ - "gpt-4": { - "prompt": "0.03", - "completion": "0.06", - "unit": "0.001", - "currency": "USD" - }, - "gpt-4-32k": { - "prompt": "0.06", - "completion": "0.12", - "unit": "0.001", - "currency": "USD" - }, - "gpt-4-1106-preview": { - "prompt": "0.01", - "completion": "0.03", - "unit": "0.001", - "currency": "USD" - }, - "gpt-4-vision-preview": { - "prompt": "0.01", - "completion": "0.03", - "unit": "0.001", - "currency": "USD" - }, - "gpt-35-turbo": { - "prompt": "0.002", - "completion": "0.0015", - "unit": "0.001", - "currency": "USD" - }, - "gpt-35-turbo-16k": { - "prompt": "0.003", - "completion": "0.004", - "unit": "0.001", - "currency": "USD" - }, - "text-davinci-002": { - "prompt": "0.02", - "completion": "0.02", - "unit": "0.001", - "currency": "USD" - }, - "text-davinci-003": { - "prompt": "0.02", - "completion": "0.02", - "unit": "0.001", - "currency": "USD" - }, - "text-embedding-ada-002":{ - "completion": "0.0001", - "unit": "0.001", - "currency": "USD" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/baichuan.json b/api/core/model_providers/rules/baichuan.json deleted file mode 100644 index 70b847cd8..000000000 --- a/api/core/model_providers/rules/baichuan.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation" - ], - "price_config": { - "baichuan2-53b": { - "prompt": "0.01", - "completion": "0.01", - "unit": "0.001", - "currency": "RMB" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/chatglm.json b/api/core/model_providers/rules/chatglm.json deleted file mode 100644 index 3ddfb8cf5..000000000 --- a/api/core/model_providers/rules/chatglm.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/cohere.json b/api/core/model_providers/rules/cohere.json deleted file mode 100644 index 5ce0c9cc5..000000000 --- a/api/core/model_providers/rules/cohere.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "fixed", - "supported_model_types": [ - "reranking" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/huggingface_hub.json b/api/core/model_providers/rules/huggingface_hub.json deleted file mode 100644 index 3f1ee225f..000000000 --- a/api/core/model_providers/rules/huggingface_hub.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "configurable", - "supported_model_types": [ - "text-generation", - "embeddings" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/jina.json b/api/core/model_providers/rules/jina.json deleted file mode 100644 index e63bf3975..000000000 --- a/api/core/model_providers/rules/jina.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "fixed", - "supported_model_types": [ - "embeddings" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/localai.json b/api/core/model_providers/rules/localai.json deleted file mode 100644 index 3f1ee225f..000000000 --- a/api/core/model_providers/rules/localai.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "configurable", - "supported_model_types": [ - "text-generation", - "embeddings" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/minimax.json b/api/core/model_providers/rules/minimax.json deleted file mode 100644 index 0348ec3df..000000000 --- a/api/core/model_providers/rules/minimax.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "support_provider_types": [ - "system", - "custom" - ], - "system_config": { - "supported_quota_types": [ - "free" - ], - "quota_unit": "tokens" - }, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation", - "embeddings" - ], - "price_config": { - "abab5.5-chat": { - "prompt": "0.015", - "completion": "0.015", - "unit": "0.001", - "currency": "RMB" - }, - "abab5-chat": { - "prompt": "0.015", - "completion": "0.015", - "unit": "0.001", - "currency": "RMB" - }, - "embo-01": { - "completion": "0", - "unit": "0.0001", - "currency": "RMB" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/openai.json b/api/core/model_providers/rules/openai.json deleted file mode 100644 index 4f1f39b79..000000000 --- a/api/core/model_providers/rules/openai.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "support_provider_types": [ - "system", - "custom" - ], - "system_config": { - "supported_quota_types": [ - "trial" - ], - "quota_unit": "times", - "quota_limit": 200 - }, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation", - "embeddings", - "speech2text", - "moderation" - ], - "price_config": { - "gpt-4": { - "prompt": "0.03", - "completion": "0.06", - "unit": "0.001", - "currency": "USD" - }, - "gpt-4-32k": { - "prompt": "0.06", - "completion": "0.12", - "unit": "0.001", - "currency": "USD" - }, - "gpt-4-1106-preview": { - "prompt": "0.01", - "completion": "0.03", - "unit": "0.001", - "currency": "USD" - }, - "gpt-4-vision-preview": { - "prompt": "0.01", - "completion": "0.03", - "unit": "0.001", - "currency": "USD" - }, - "gpt-3.5-turbo": { - "prompt": "0.0015", - "completion": "0.002", - "unit": "0.001", - "currency": "USD" - }, - "gpt-3.5-turbo-1106": { - "prompt": "0.0010", - "completion": "0.002", - "unit": "0.001", - "currency": "USD" - }, - "gpt-3.5-turbo-instruct": { - "prompt": "0.0015", - "completion": "0.002", - "unit": "0.001", - "currency": "USD" - }, - "gpt-3.5-turbo-16k": { - "prompt": "0.003", - "completion": "0.004", - "unit": "0.001", - "currency": "USD" - }, - "text-davinci-003": { - "prompt": "0.02", - "completion": "0.02", - "unit": "0.001", - "currency": "USD" - }, - "text-embedding-ada-002":{ - "completion": "0.0001", - "unit": "0.001", - "currency": "USD" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/openllm.json b/api/core/model_providers/rules/openllm.json deleted file mode 100644 index 3f1ee225f..000000000 --- a/api/core/model_providers/rules/openllm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "configurable", - "supported_model_types": [ - "text-generation", - "embeddings" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/replicate.json b/api/core/model_providers/rules/replicate.json deleted file mode 100644 index 3f1ee225f..000000000 --- a/api/core/model_providers/rules/replicate.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "configurable", - "supported_model_types": [ - "text-generation", - "embeddings" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/spark.json b/api/core/model_providers/rules/spark.json deleted file mode 100644 index 4fa4d9a56..000000000 --- a/api/core/model_providers/rules/spark.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "support_provider_types": [ - "system", - "custom" - ], - "system_config": { - "supported_quota_types": [ - "free" - ], - "quota_unit": "tokens" - }, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation" - ], - "price_config": { - "spark": { - "prompt": "0.18", - "completion": "0.18", - "unit": "0.0001", - "currency": "RMB" - }, - "spark-v2": { - "prompt": "0.36", - "completion": "0.36", - "unit": "0.0001", - "currency": "RMB" - }, - "spark-v3": { - "prompt": "0.36", - "completion": "0.36", - "unit": "0.0001", - "currency": "RMB" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/tongyi.json b/api/core/model_providers/rules/tongyi.json deleted file mode 100644 index 319fbcaf9..000000000 --- a/api/core/model_providers/rules/tongyi.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation" - ], - "price_config": { - "qwen-turbo": { - "prompt": "0.012", - "completion": "0.012", - "unit": "0.001", - "currency": "RMB" - }, - "qwen-plus": { - "prompt": "0.14", - "completion": "0.14", - "unit": "0.001", - "currency": "RMB" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/wenxin.json b/api/core/model_providers/rules/wenxin.json deleted file mode 100644 index 193dccc41..000000000 --- a/api/core/model_providers/rules/wenxin.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation" - ], - "price_config": { - "ernie-bot-4": { - "prompt": "0", - "completion": "0", - "unit": "0.001", - "currency": "RMB" - }, - "ernie-bot": { - "prompt": "0.012", - "completion": "0.012", - "unit": "0.001", - "currency": "RMB" - }, - "ernie-bot-turbo": { - "prompt": "0.008", - "completion": "0.008", - "unit": "0.001", - "currency": "RMB" - }, - "bloomz-7b": { - "prompt": "0.006", - "completion": "0.006", - "unit": "0.001", - "currency": "RMB" - } - } -} \ No newline at end of file diff --git a/api/core/model_providers/rules/xinference.json b/api/core/model_providers/rules/xinference.json deleted file mode 100644 index 3e426a927..000000000 --- a/api/core/model_providers/rules/xinference.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "support_provider_types": [ - "custom" - ], - "system_config": null, - "model_flexibility": "configurable", - "supported_model_types": [ - "text-generation", - "embeddings", - "reranking" - ] -} \ No newline at end of file diff --git a/api/core/model_providers/rules/zhipuai.json b/api/core/model_providers/rules/zhipuai.json deleted file mode 100644 index 07badcc31..000000000 --- a/api/core/model_providers/rules/zhipuai.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "support_provider_types": [ - "system", - "custom" - ], - "system_config": { - "supported_quota_types": [ - "free" - ], - "quota_unit": "tokens" - }, - "model_flexibility": "fixed", - "supported_model_types": [ - "text-generation", - "embeddings" - ], - "price_config": { - "chatglm_turbo": { - "prompt": "0.005", - "completion": "0.005", - "unit": "0.001", - "currency": "RMB" - }, - "chatglm_pro": { - "prompt": "0.01", - "completion": "0.01", - "unit": "0.001", - "currency": "RMB" - }, - "chatglm_std": { - "prompt": "0.005", - "completion": "0.005", - "unit": "0.001", - "currency": "RMB" - }, - "chatglm_lite": { - "prompt": "0.002", - "completion": "0.002", - "unit": "0.001", - "currency": "RMB" - }, - "chatglm_lite_32k": { - "prompt": "0.0004", - "completion": "0.0004", - "unit": "0.001", - "currency": "RMB" - }, - "text_embedding": { - "completion": "0", - "unit": "0.001", - "currency": "RMB" - } - } -} \ No newline at end of file diff --git a/api/core/model_runtime/README.md b/api/core/model_runtime/README.md new file mode 100644 index 000000000..eba1f3f2d --- /dev/null +++ b/api/core/model_runtime/README.md @@ -0,0 +1,69 @@ +# Model Runtime + +This module provides the interface for invoking and authenticating various models, and offers Dify a unified information and credentials form rule for model providers. + +- On one hand, it decouples models from upstream and downstream processes, facilitating horizontal expansion for developers, +- On the other hand, it allows for direct display of providers and models in the frontend interface by simply defining them in the backend, eliminating the need to modify frontend logic. + +## Features + +- Supports capability invocation for 5 types of models + + - `LLM` - LLM text completion, dialogue, pre-computed tokens capability + - `Text Embedding Model` - Text Embedding, pre-computed tokens capability + - `Rerank Model` - Segment Rerank capability + - `Speech-to-text Model` - Speech to text capability + - `Moderation` - Moderation capability + +- Model provider display + + ![image-20231210143654461](./docs/en_US/images/index/image-20231210143654461.png) + + Displays a list of all supported providers, including provider names, icons, supported model types list, predefined model list, configuration method, and credentials form rules, etc. For detailed rule design, see: [Schema](./schema.md). + +- Selectable model list display + + ![image-20231210144229650](./docs/en_US/images/index/image-20231210144229650.png) + + After configuring provider/model credentials, the dropdown (application orchestration interface/default model) allows viewing of the available LLM list. Greyed out items represent predefined model lists from providers without configured credentials, facilitating user review of supported models. + + In addition, this list also returns configurable parameter information and rules for LLM, as shown below: + + ![image-20231210144814617](./docs/en_US/images/index/image-20231210144814617.png) + + These parameters are all defined in the backend, allowing different settings for various parameters supported by different models, as detailed in: [Schema](./docs/en_US/schema.md#ParameterRule). + +- Provider/model credential authentication + + ![image-20231210151548521](./docs/en_US/images/index/image-20231210151548521.png) + + ![image-20231210151628992](./docs/en_US/images/index/image-20231210151628992.png) + + The provider list returns configuration information for the credentials form, which can be authenticated through Runtime's interface. The first image above is a provider credential DEMO, and the second is a model credential DEMO. + +## Structure + +![](./docs/en_US/images/index/image-20231210165243632.png) + +Model Runtime is divided into three layers: + +- The outermost layer is the factory method + + It provides methods for obtaining all providers, all model lists, getting provider instances, and authenticating provider/model credentials. + +- The second layer is the provider layer + + It provides the current provider's model list, model instance obtaining, provider credential authentication, and provider configuration rule information, **allowing horizontal expansion** to support different providers. + +- The bottom layer is the model layer + + It offers direct invocation of various model types, predefined model configuration information, getting predefined/remote model lists, model credential authentication methods. Different models provide additional special methods, like LLM's pre-computed tokens method, cost information obtaining method, etc., **allowing horizontal expansion** for different models under the same provider (within supported model types). + + + +## Next Steps + +- Add new provider configuration: [Link](./docs/en_US/provider_scale_out.md) +- Add new models for existing providers: [Link](./docs/en_US/provider_scale_out.md#AddModel) +- View YAML configuration rules: [Link](./docs/en_US/schema.md) +- Implement interface methods: [Link](./docs/en_US/interfaces.md) diff --git a/api/core/model_runtime/README_CN.md b/api/core/model_runtime/README_CN.md new file mode 100644 index 000000000..d9000845c --- /dev/null +++ b/api/core/model_runtime/README_CN.md @@ -0,0 +1,88 @@ +# Model Runtime + +该模块提供了各模型的调用、鉴权接口,并为 Dify 提供了统一的模型供应商的信息和凭据表单规则。 + +- 一方面将模型和上下游解耦,方便开发者对模型横向扩展, +- 另一方面提供了只需在后端定义供应商和模型,即可在前端页面直接展示,无需修改前端逻辑。 + +## 功能介绍 + +- 支持 5 种模型类型的能力调用 + + - `LLM` - LLM 文本补全、对话,预计算 tokens 能力 + - `Text Embedidng Model` - 文本 Embedding ,预计算 tokens 能力 + - `Rerank Model` - 分段 Rerank 能力 + - `Speech-to-text Model` - 语音转文本能力 + - `Moderation` - Moderation 能力 + +- 模型供应商展示 + + ![image-20231210143654461](./docs/zh_Hans/images/index/image-20231210143654461.png) + +​ 展示所有已支持的供应商列表,除了返回供应商名称、图标之外,还提供了支持的模型类型列表,预定义模型列表、配置方式以及配置凭据的表单规则等等,规则设计详见:[Schema](./schema.md)。 + +- 可选择的模型列表展示 + + ![image-20231210144229650](./docs/zh_Hans/images/index/image-20231210144229650.png) + +​ 配置供应商/模型凭据后,可在此下拉(应用编排界面/默认模型)查看可用的 LLM 列表,其中灰色的为未配置凭据供应商的预定义模型列表,方便用户查看已支持的模型。 + +​ 除此之外,该列表还返回了 LLM 可配置的参数信息和规则,如下图: + +​ ![image-20231210144814617](./docs/zh_Hans/images/index/image-20231210144814617.png) + +​ 这里的参数均为后端定义,相比之前只有 5 种固定参数,这里可为不同模型设置所支持的各种参数,详见:[Schema](./docs/zh_Hans/schema.md#ParameterRule)。 + +- 供应商/模型凭据鉴权 + + ![image-20231210151548521](./docs/zh_Hans/images/index/image-20231210151548521.png) + +![image-20231210151628992](./docs/zh_Hans/images/index/image-20231210151628992.png) + +​ 供应商列表返回了凭据表单的配置信息,可通过 Runtime 提供的接口对凭据进行鉴权,上图 1 为供应商凭据 DEMO,上图 2 为模型凭据 DEMO。 + +## 结构 + +![](./docs/zh_Hans/images/index/image-20231210165243632.png) + +Model Runtime 分三层: + +- 最外层为工厂方法 + + 提供获取所有供应商、所有模型列表、获取供应商实例、供应商/模型凭据鉴权方法。 + +- 第二层为供应商层 + + 提供获取当前供应商模型列表、获取模型实例、供应商凭据鉴权、供应商配置规则信息,**可横向扩展**以支持不同的供应商。 + + 对于供应商/模型凭据,有两种情况 + - 如OpenAI这类中心化供应商,需要定义如**api_key**这类的鉴权凭据 + - 如[**Xinference**](https://github.com/xorbitsai/inference)这类本地部署的供应商,需要定义如**server_url**这类的地址凭据,有时候还需要定义**model_uid**之类的模型类型凭据,就像下面这样,当在供应商层定义了这些凭据后,就可以在前端页面上直接展示,无需修改前端逻辑。 + ![Alt text](docs/zh_Hans/images/index/image.png) + + 当配置好凭据后,就可以通过DifyRuntime的外部接口直接获取到对应供应商所需要的**Schema**(凭据表单规则),从而在可以在不修改前端逻辑的情况下,提供新的供应商/模型的支持。 + +- 最底层为模型层 + + 提供各种模型类型的直接调用、预定义模型配置信息、获取预定义/远程模型列表、模型凭据鉴权方法,不同模型额外提供了特殊方法,如 LLM 提供预计算 tokens 方法、获取费用信息方法等,**可横向扩展**同供应商下不同的模型(支持的模型类型下)。 + + 在这里我们需要先区分模型参数与模型凭据。 + + - 模型参数(**在本层定义**):这是一类经常需要变动,随时调整的参数,如 LLM 的 **max_tokens**、**temperature** 等,这些参数是由用户在前端页面上进行调整的,因此需要在后端定义参数的规则,以便前端页面进行展示和调整。在DifyRuntime中,他们的参数名一般为**model_parameters: dict[str, any]**。 + + - 模型凭据(**在供应商层定义**):这是一类不经常变动,一般在配置好后就不会再变动的参数,如 **api_key**、**server_url** 等。在DifyRuntime中,他们的参数名一般为**credentials: dict[str, any]**,Provider层的credentials会直接被传递到这一层,不需要再单独定义。 + +## 下一步 + +### [增加新的供应商配置 👈🏻](./docs/zh_Hans/provider_scale_out.md) +当添加后,这里将会出现一个新的供应商 + +![Alt text](docs/zh_Hans/images/index/image-1.png) + +### [为已存在的供应商新增模型 👈🏻](./docs/zh_Hans/provider_scale_out.md#增加模型) +当添加后,对应供应商的模型列表中将会出现一个新的预定义模型供用户选择,如GPT-3.5 GPT-4 ChatGLM3-6b等,而对于支持自定义模型的供应商,则不需要新增模型。 + +![Alt text](docs/zh_Hans/images/index/image-2.png) + +### [接口的具体实现 👈🏻](./docs/zh_Hans/interfaces.md) +你可以在这里找到你想要查看的接口的具体实现,以及接口的参数和返回值的具体含义。 \ No newline at end of file diff --git a/api/core/model_providers/models/reranking/__init__.py b/api/core/model_runtime/__init__.py similarity index 100% rename from api/core/model_providers/models/reranking/__init__.py rename to api/core/model_runtime/__init__.py diff --git a/api/core/model_providers/models/speech2text/__init__.py b/api/core/model_runtime/callbacks/__init__.py similarity index 100% rename from api/core/model_providers/models/speech2text/__init__.py rename to api/core/model_runtime/callbacks/__init__.py diff --git a/api/core/model_runtime/callbacks/base_callback.py b/api/core/model_runtime/callbacks/base_callback.py new file mode 100644 index 000000000..144b77954 --- /dev/null +++ b/api/core/model_runtime/callbacks/base_callback.py @@ -0,0 +1,113 @@ +from abc import ABC +from typing import Optional, List + +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk +from core.model_runtime.entities.message_entities import PromptMessageTool, PromptMessage +from core.model_runtime.model_providers.__base.ai_model import AIModel + +_TEXT_COLOR_MAPPING = { + "blue": "36;1", + "yellow": "33;1", + "pink": "38;5;200", + "green": "32;1", + "red": "31;1", +} + + +class Callback(ABC): + """ + Base class for callbacks. + Only for LLM. + """ + raise_error: bool = False + + def on_before_invoke(self, llm_instance: AIModel, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + Before invoke callback + + :param llm_instance: LLM instance + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + raise NotImplementedError() + + def on_new_chunk(self, llm_instance: AIModel, chunk: LLMResultChunk, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None): + """ + On new chunk callback + + :param llm_instance: LLM instance + :param chunk: chunk + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + raise NotImplementedError() + + def on_after_invoke(self, llm_instance: AIModel, result: LLMResult, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + After invoke callback + + :param llm_instance: LLM instance + :param result: result + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + raise NotImplementedError() + + def on_invoke_error(self, llm_instance: AIModel, ex: Exception, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + Invoke error callback + + :param llm_instance: LLM instance + :param ex: exception + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + raise NotImplementedError() + + def print_text( + self, text: str, color: Optional[str] = None, end: str = "" + ) -> None: + """Print text with highlighting and no end characters.""" + text_to_print = self._get_colored_text(text, color) if color else text + print(text_to_print, end=end) + + def _get_colored_text(self, text: str, color: str) -> str: + """Get colored text.""" + color_str = _TEXT_COLOR_MAPPING[color] + return f"\u001b[{color_str}m\033[1;3m{text}\u001b[0m" diff --git a/api/core/model_runtime/callbacks/logging_callback.py b/api/core/model_runtime/callbacks/logging_callback.py new file mode 100644 index 000000000..4bd86e81d --- /dev/null +++ b/api/core/model_runtime/callbacks/logging_callback.py @@ -0,0 +1,133 @@ +import json +import logging +import sys +from typing import Optional, List + +from core.model_runtime.callbacks.base_callback import Callback +from core.model_runtime.entities.llm_entities import LLMResultChunk, LLMResult +from core.model_runtime.entities.message_entities import PromptMessageTool, PromptMessage +from core.model_runtime.model_providers.__base.ai_model import AIModel + +logger = logging.getLogger(__name__) + +class LoggingCallback(Callback): + def on_before_invoke(self, llm_instance: AIModel, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + Before invoke callback + + :param llm_instance: LLM instance + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + self.print_text("\n[on_llm_before_invoke]\n", color='blue') + self.print_text(f"Model: {model}\n", color='blue') + self.print_text(f"Parameters:\n", color='blue') + for key, value in model_parameters.items(): + self.print_text(f"\t{key}: {value}\n", color='blue') + + if stop: + self.print_text(f"\tstop: {stop}\n", color='blue') + + if tools: + self.print_text(f"\tTools:\n", color='blue') + for tool in tools: + self.print_text(f"\t\t{tool.name}\n", color='blue') + + self.print_text(f"Stream: {stream}\n", color='blue') + + if user: + self.print_text(f"User: {user}\n", color='blue') + + self.print_text(f"Prompt messages:\n", color='blue') + for prompt_message in prompt_messages: + if prompt_message.name: + self.print_text(f"\tname: {prompt_message.name}\n", color='blue') + + self.print_text(f"\trole: {prompt_message.role.value}\n", color='blue') + self.print_text(f"\tcontent: {prompt_message.content}\n", color='blue') + + if stream: + self.print_text("\n[on_llm_new_chunk]") + + def on_new_chunk(self, llm_instance: AIModel, chunk: LLMResultChunk, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None): + """ + On new chunk callback + + :param llm_instance: LLM instance + :param chunk: chunk + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + sys.stdout.write(chunk.delta.message.content) + sys.stdout.flush() + + def on_after_invoke(self, llm_instance: AIModel, result: LLMResult, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + After invoke callback + + :param llm_instance: LLM instance + :param result: result + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + self.print_text("\n[on_llm_after_invoke]\n", color='yellow') + self.print_text(f"Content: {result.message.content}\n", color='yellow') + + if result.message.tool_calls: + self.print_text(f"Tool calls:\n", color='yellow') + for tool_call in result.message.tool_calls: + self.print_text(f"\t{tool_call.id}\n", color='yellow') + self.print_text(f"\t{tool_call.function.name}\n", color='yellow') + self.print_text(f"\t{json.dumps(tool_call.function.arguments)}\n", color='yellow') + + self.print_text(f"Model: {result.model}\n", color='yellow') + self.print_text(f"Usage: {result.usage}\n", color='yellow') + self.print_text(f"System Fingerprint: {result.system_fingerprint}\n", color='yellow') + + def on_invoke_error(self, llm_instance: AIModel, ex: Exception, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) -> None: + """ + Invoke error callback + + :param llm_instance: LLM instance + :param ex: exception + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + self.print_text("\n[on_llm_invoke_error]\n", color='red') + logger.exception(ex) diff --git a/api/core/model_runtime/docs/en_US/images/index/image-20231210143654461.png b/api/core/model_runtime/docs/en_US/images/index/image-20231210143654461.png new file mode 100644 index 0000000000000000000000000000000000000000..2e234f6c21807e91d3ecbc988bc53aead3788e74 GIT binary patch literal 379070 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%0Ak*aJ&%&Er7)G4)vswU@eN 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

HUFe7Pe6knv1N$<-Zw=jT<`;P{A0z(3 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�JK_$5zWm{!>4<5x5_?B}fBeNMMB3l}CRz4X$$%wgHT~Y-MyYL)*$|%>v-n&qp42Z%u_Ww-6uVxY~yY zHIqmY5e0>IwL!Hkx`ddAVdYj*TaqLZFnfqo6Kl`Nhddcw)eFqJW0B6xQiSl@sp?9- zwzk}{$eW$?)aU?oe!L`{%him=i5RvFD)85y95m;U9ubuCu~7&q=0jbvL!2y(5!5om zNGSpXB4Jg7=rD3j4}&EM}x4VmS$I-@jQGwS_iu z*37lZ(Q|iw2_nhr!_1_xS;1b>pdgAA+(ntk>k*0lB-B$~k|xSWzj1-E%a-<-xT+r! z8x|?zG_5Nsga5jl-$C3CM+QLHnQg1Nl7&d(^b z)DUCN$fHiSrf?bzJ{m;8f&hNy&pe5dBFTW|Y1xf{ zJ`g{dX6T`0ERU*lG2_7?HWU5`feduGh9=@qhc3*nM zW|_8!9Jg*IhbM3cz42ND&!hZD4HBI>Rm?2@!%1vH|GAzTmkaI@(K@LqW)AhD-(1+) zB(ixg<-5P|v1}r@#(5!&>%DutKkva^;=(FO`HjX}gImA4t=}Q$4U=KV(?u1LIKhYP zlS}&@a~wr_p@ao}X;7pwP&h}=<~%d(f;nX{a>7mMrJGurVRW4uUU%{2qsw0Rvh7}h z%o}I)S|(wQaV96OE^}U*6S1wt!e>uNjILRYG7G`tg!Qk?h=g_R+A-|1(af|NY>H_w z)QyHjhU~*J#=oX^iHI3Qn-O+NVb!f*2NBT=X>4!4I1F#zNavyV$1p&i#7@99I-`VS zY@G_tjF@dm{t8p@B|W58z251K5E}yf8AYfZ)|BRgr4q)lE;A|0qbVks^BECUsoB+` zCA6#lA}D5HDY)N=J8ufUrlMRY_2_-DWL=jK)Gp!pBP@!mUV2L$xP4u;L=oJgfjW*k zyFIpzT!`*_DW;S7H$((pk~>L`TSO3jfC3EWg(kS7z;HotUxj8?o@>}8bdl+ESVhX^ zkF6(WBpbdMH}PCgY+7=;OG z+rRHI^HpTMJmN9~yvb@uxz|Z8gyj@ncyqGaMX>=Dst~6=pMi}+bEM7v-G(F7dax}L z#^RhcAYaSdfaLYaXYdmfZ->S(`rWN4j z1f4Xnh}uxgD440b_NBHyjPHpl`PNNMLym0T@2s=1z7KzEr-!*>yq+!r=tMgE<1X*2 zd6zl@(YlQVm-~1{+S_lHEF*I&sFe;6DchB?65ijNIs4&dW1_h=HR;AANby#0nB?i2 zHIb%olHD*)T|p#gKs~AfZO{ADh8TBN7`eq`uN=M7nK84?C=!$512}2RB;o^5{YheW zQqd!{jM-f=J?dQM)9UdX+fV0uu4GUs>p*NrkD*{dKab*&nz97~Ld^Nm2WC~#m%hdd zkUqVy{O#P3uxe>V*k`0#K!tx}o-FYUdFg0~nW7~m~1SUD8*8)hdhv3L7H}%dfvrld9 z+2wN|G!T{`T>`(~9t!uIO%C#zF1=Sb5r8*v(4M{}9SUF2L^?iDVh?>&c`ja=X|b2E z8iZ`nNJt3HShlyFBATjgiaqtN*WAeygniL$6Z@s|SuS2P|JBRo3j&ANlEPq@AChc# zmkbyFlmc?=B2>k%Y>FA3ao`ste&NmY3|p7X^RdvZUU}7?Y?-dDhb`{n?AgnwOiFUS zZN6>PPp443tB53i%2o=V3g)`GxF=YC%vE3UM_OI_1t0mRmGM*8^G&xgPS66|3^3Xi?7c;$C6hnK7`Ss$F)f zE(4e1ZfAY-v0x3=1zAILUro-=2J;-1*~e*#pz8~=rf>k4lINwzCB(_1GopAsYX2IY zyZ_M~O3K8E5yRN3xCQ4izSIHm%>0=Ycu{&6>*9~+1o)< zOP@OCq}gOB)6ld_oZs)x}X!|GP&K=7<`yq=@@vvl)~VjkLhu^KN%He zjp%lp z)+Himz!b#e9jv9agho;~HX3F9dPF9uC+x#TQ4uoR{{Q!L^Yw-| zR~w9Hc_b;8fK4?cW7Uo+!_>B(WQn6t`rPc1pj~ixt&`oL>D3;dqNhpSTsn~4>!+D% z8QxkK-TII@nn|`DG59Iz_sy!6a@)J5#mbn*Hom>=kU+}IgwmeEWbJ%v8!#pYC}KIt|AN6UnbvmoIj^ggrhrCiah`n+QtT<@+Sz6}M$HcUl9|60Qki{y z5pvipqdU(ym^5f8XGb|Oqmt-O;S$o*Ua}!Ucj#qe$OoGU39Ug{aWOc%y@t~-e4?FJgv~EX6j66^ zrd+-_UA{T#PPud8tqUa@3n@sCM1P*L*uw;mF;IPGPPO!M%0@CqH#2B5XAYqti@~aD zMsoe^deWEP0gd)LAVCnrtq$)wcODhnYkR1YQyCGpAWDQ*FE!zHNpwc3>|nJgQYmP?G=4;q4`+55sUVEf}FxW~g#xW98l^SJFGM zx<9c|Nm!yt4tSGrdg7vs;&q2F7h790EgN}8q^8$=4Km55+^o9l_k{0^!!b8!Om@P) zRZp3TC&x}`H^qacbF83|RTLLjr=@D-0b!*gzG{3_q3R-!p3^vNM(gH9t8M<^D{o zA^m?oFQk!Xy?EncDOteb7xGBgWe*7BWEt%*;}qla-&>Cr&<%1wD0vy%XXsYA9XmuD zW8fqrc1UgCOuL~9o277(#d~bn=|vl%OI_LNscFUj3f0=LEYB)v$XBzmbR{RY&AJZt zs#b@0F0~lerBe2Lx>@$}T7Y;Jl{icM#dYXqcqZ*C4!nM#*+lbr$f2`#Nglgy?DU9y z5T_GDyBycpCTOXS#;&&@tu#HhmaR?S8##fn<5E+tDIAqQIWntAUzBuw24`ppYHF>i*8E!~U)PcR6ncTmr-YgW9BC-zi#&CVd?G zISp6!&WIGq9p1*7HkAaZ`D?8h2yYg1UVFu+pE4ABJRP?wql@YdE56oNNpOzMoTC1 zhV80RR~Ht;tow$om4(;`EVlxNnt#l3Z2^deUoLqFt2zVCLJc%GbUETJiBp3V4UgU7vmjod{b`uQ=@##T;vzth0`$1%`Qa6 z4tKy)@;>Oxiejlw5nPgszQlw|E@5&|gQ~RIs%HFRS_e;)jHnB%LMvCap6qf&j0Q05 z#cgDo8sA0{(_X0<>T0Ifz)s00Eee+@Wm({@s$Ho>EqHbgL|Y=a-Hh$9r`>(R*$Ls+ zP&@%UshE7SDc~Ev$}%s`ZlrrbZHyDdW05@360UVMP)5J%4tlCJx?59lujysNRyJ)7 z7oy{Sit}pEtEk(M5D^Wa%<3yc z!_JYh97es2xI_UE&Jixm6lbRvY0$U!ieAkgAw)Gs4TQqRAQjc6WL(W~&P353j#GmjjW&m-mFDijFPz2@>V9?~n9Wpst|l49 zbnLR}o(YNl_LtR|3%ArDn)e<1+8mt&Q0}M;;*!B81kL7GTT}`xtO^TaBjjpcr z=H%){PB+&$g-#B7v5y@u=L?A>MY&^0!tqa71kaLr)BdgSVau%n%nj3=$CwwW}*NtbRoWW-Mj|cJ6|fP}Pq(1dzcXIoi6RJl@e#L@9A6uS3m+ zTZEWt;+We|4K#ZoboJqzRTBX{dbw}Mp*g7}Vu+Wg8RpO3K36A;Ul5r~ZHW^c4#hQ= z(Ap5eFER^_BV(D%pVm$0e=7u~Q>}9OmP`)W42yAkZ;+z%K5o|fP3RX2M5mF5D=k*# zG&`o+X0V##BSl^K1+?v3n<7d1py0N@mYr~@S`7_&(?+)wYA};Ofjgt9x}CFH4d#6m zAqJ()Ema@0tVTBGQXP+hYUeAygl=x=h7mq=SDsyc_w2?YrcBw4;kDGs7ta6FFbh%$ zpq!*@TZhI07+m_}_K_#g33BRa@A4lDdidkdIVpSCQ0bx{3uwA2=xb6U&SNdLC& zFi<*>vP45AMytZ+OC95<)W43^v^44AdlwxunCQ4u@zrp^M0-9R)04SZn!`9w3Xwt*c^SO z=6sd5ea*o3!)5!ZsfP~MstqC#$DHzghUc_T4-N2_G*ASpvN4I&G71@$AXfRqs;nYSpC(mibsfKgkjR+1AB`2)`-+sMJ!?HEO5V!8qz9K`|lN zLB6WEwoZoG4G1$RKzf}_2zAO6jVv3pt^^nG`YFQz#EV^teIyUM2#dMUz;H2;TG4pJ zMp=@ZwIj}-Lu^0;+YFbE12{G<$~Pva%>c3Ee;Jb{tKrd>N)psB&s`rz#yhX_t8tfh zYpXGv5+g=v?NoDJArz~Ej5&a!e`}BKkd>%KhMy4uBp}@4Y-o;-!u^cM#ps~I-;Tn` zzJLULu}1u~V2^XIFCxXXk;@4S2+f3BGS*?$)r+nrN?(2Z6#OaM20qa$ElHNg2>)*A z={_`<-3GE4wIP6sC{caG75sk-bI?5pJNMvNAMt5x; z;+CD0h9jn8zKWP0vA?Ps2twx-o#T&?3a(cSW&J=w7@=~k2^&WUqc9Ig*hB|NA8)l! zizcRSh!-JVcH7luQ=aUQhBars`YtCna@7KH0XRQlr=dAWj!)Fa)%6~$E?A^fLw5$7 zhz4`&L&Bt}hFy3pDciMcmh%t{BBFZ=AkU0W0c24Nz2Rb54S;~}#GN~t2B4X3=C*~C ziR*MKNFW@#0AM_^8GXzLO%P<7BJY%~oo^DuH1E%%zDC@w>cUtZOh7=)By?ipXw()Q z64u~atrYsm54j`DUF4*ISBRM3RBlZ@!L~g%%>l2F2)7#Au_2XTrT3&gGNlq+uVzma z!zXI%dL*;O1fUfJx_RiuS(^C1^$d0pESCr^;cGR{_Mhvt zJu~xNlTbGo1t-N&VlG4;R*MfJbIDwrfN)wow9{-!^~%YHOIB-Dp?LjS;qOldpUwoP zncrjdlQG9tp%8d)NW7BxX#;a`J)_+*|5Oh|1K{+mcNwc(^bl=Ls6fr)G5Kmdenln) z1ihe8By@Vn@Cimjkhb2B;1dN@_lq*8pE!Mmx0;XPJLJ$_KiS+msm!iMmyp`l zkkLWqNqu}7r9<#+U(8Cbbaf}O!cflk2n~! zNZa-+T(l!A4eccOQCf?(JaGb17qL#ixeg0PONfZjXW?T5Fo8~mjdR`Ffis%tYyI9$ zgF0%hVXn+B?vAhifWxi#a9)(mnqY>7PMyCzop56|V_d3U!Ppl0(*Nz&rt9TDMjOG{ z#wKBiyV=NJ(I}tz`K$aiiz;Q1`=rwV`ReE?+@aJo#O$wjqM_ zbfQiZdPGFr_mYs1CF|so%lV2V3tu@;^YFy!w9PV6F>TNhc5~1)r$X;*`lEMh0YyZ! zdieadwv;R^n(vN|Cal4*W6F%rF4`67&*|wukw05)t#Q$@&bW*W zms?*}_65^xuI*~hI5EyHX3!-#ah1iP@eOJI4kpn>Vt=~?1t2cwjinN&Y*IRaft$uYMoIz=OdV+$P5E2?%zelihCfh1^2cQBN zsvX7s*-E?}A@~ zBo9UIfNje@D*)WWcl6gw94bX#=u1swtj$uV+UZ9O zcNRfq&4Sqy*$W4@U*GRbVBRAyK9Z2Jpy~H7ebJT0IQjKtWRY{dmbg-`>ZkQwV7~y% zvxvXx2^j8YS^b8fIxU8Tm?*=wysS6%mVCiPu*%U-eO$#%R<;AX7h!nZ;(wA5pO9)* zQ`6EaF?KQuQsP;0qoQ`Jb&_!{1V_EJd%xh^1*e)w*ITU}52L=?xE;JZ5DF!cfZIrj zaSfASEDA9u#_2c@^F211f7m1PS+FhsPNwucADfDu^un&ZXJ~S)N+2)euUt{J@lxb@ zBlLGu6X+9t{65W&!jmh%qWuYvy#(KohJq^PnLA%K^-0@(A6|;DJg|f(Q26!b%~|vE z{c;;X2;TI4-u^={DWQ8uS++)TJ)foml_wJV&xc!Z?DQ^$5;rXmm(-bG73;-ra{CjCzu2wh_4 zLPCamW@pfZ>QK_EPbWnh;LZtd>r^^>-~S7&%9tQE6sJe`5 z({Pmm|1M*{z37kvlFw4BtPeH&kYXs~gW>W;%F5F^lVXYnP?~(0<*tYy(_gI!7l^q> ze3qDy!a}C7E`J9p*lr=294Y$e8_8W$NY?$2;)+DDU;> z{@;GD>p`ljt2+FnB1WNyy!cdTW8Jl!4UKv_j`}?VlUbJds$KR(xO9K49;ufX`8&}1 z_G&Lx|8}z58GIp_kb7-Z7NyG5{u?IIJE0TmqksV8?|TnYc2RczCFn}ATAPZwwfhE= zMo~^@&{d7u<4z=hbC1h$m2r#2+W&D%Vxv8qndCGVeE&bLt^*wEKmJ>h3Poj8N$Qu( za9l?DMI}@!dzU>GF$dcq3q2aXFI|n|Sw*j~`ggwA)*V8g{OaWCpK^oo{-vD=eMIek zi|zJ@Xi4Ode&EySqdyj<<-;0Z=W?ABhLze&QXNC8;_@eM{;*L`C1%s487qkAoakS6hIRZGmy|Qeg z9(Rcdh-nn|8Zn#n%E-Alb9w*azBs}CUz)LeuD)IPbc?67oa3yH_a6EZlR^>G=7Q^A zeUqSJXwJxo1el|xDaJ-R6kA#NiWiL%1K*Xumr+qaX%=Pd1hJ@dn@hiO@q;^O^J^s} z=3M8PPTvXF<~yWzgqs;;`+~*(;Y}xA2?&0}F!HbctjwPi-a5XE=X8u&0U!MwNK^$-HV!<8sXkXOhRIbcnd{<;uMU0YivZF#`T6=E5Oa|*m53! z;BWqZ^yuQX)zw3=JO9`Z2Qh}+Tn_@b$eSF94c8^QjNp}TSYJg)=RAa(r;ehE;0e~R zf2Ee{xmytk!qZ8n%`oZM@e&ec))Pw?3qZ4>tCNUuY=TA@AN+PUKCr0P-(MD>XtA9FK zC77CUL-vKKZlh0R+T>0RMtJb|NFh<`*nnR(8ws<@q?mY*!r6FfT}hWtP$hWY&Nc5q z@Th3s)Wh=XYJC!1V7#050Mk1#wDNT5VBe|5%NP}Vxq&x2Nmoi9nYw>%wWA)@*U2nNt<bb4pS(P4hg zaC|tGvvdeoq)Rh^EES!jh{NX~#cadQ1a^&JcaVFR{f0%k=%o2|eN7 zxqs$x*{J`fT)xCgcxj3nNEmfT{-e7Dq`unx@ByIj0$@MI;_~TX^|&V3RALeD;X%6( zY1lqcJ@;_%;tXPT#?d=(eo=z6DJi=x@#w5i(r7L=oo;#7hqTv2_|!f5$AC#zTl1%O z(vPD*=($5X!fOe4qy(1E7@7I$ z4nJdtRVVspU(IgpuK-jjtB;ht~_zqH&eI zH#BO`_K72jm2h`|%5~@9m!4UMZ}ZsrKW~lC6h5Z-D!pPob}zACXtFT(E_*55>F$zo zEB<^seEv-k{5!ol?)V9286?JH2|q=8`9!1rcAjc*YtkPR*Pnb{;73XZ~XY2fr+F`)Xx^YPEBLq;s5vHLoW_zH<@i(($$2 z8ItK?eDVb=ig#qE1QePAmIv?(41}{s)@YT17EsgyMz$)hq%-L2bA4HQlYDq6y_!mv z8?bhz)vLZhF;wHP5*E2JJZgFCXk;~!ylYcpfP5MI+}F;l;m!^q%HY^~1`1yr*HUSR zU5eVq&t2D{CKMZ6#YY(y-%6^lY{-CR`RXw#hEj-H5wdR4r0M< zox-y!$BLyw!lEk1k_%x|lf_4ZakVF#VXmIkce=y;FtK>fyx0o;{r1LR@uy|iyG^H= za$+>8l+wTYcIb_EF9AE2ux{X7S7!qz&PNdMZ{I1pe5fh~!V(W))lkZnBFm!(P@!X{ z^I-zhF-af($L@plgzWb1kMxLR-yQyl#_*RbgJ`NH5~+Jrou2=B?R@OFYJ6&mzNEgC z=@uC$t0j0M8Jk2FO$ZefPhyEXlf=S_s=F0xx#Mbjb7(ZK(|X^hGf(kjcLrqf*`L3G z@0qKCR-}ZapVBcPd7Go>xD=RmvcFEp>G#!}#|c#2IU74By|~Cg?4ixR6ew^dh6L9X zWVqPaF>Qi<%}3-*OVkof`{F|)pSIfG{kYc@9oLySpgNN*t@gd@nvw|s-oMzTRt*uMn=g4>Fxxy?<%vpt`w1eM3@lo4`7d-U3#z}A?@kShqO{LA z9_onOE!xrN5aJJW#F39nRw{PoI#MvFr>958;8+!`9W>1P--! zl_#(UiMN{FXqk~(pF?SGE_Q#jn)q4i{0}#9DXw!aEbe~E84Uv8)(zp9b+Dj-<|yhtEat0Anp#;H+0?38S<)jyo~=!u2eYoJ3Z&<;?uWw z3*_n4nZW8wD!2bS(yP>oWFVm^+uEe2)y}e^63Zk{t8Rf(a(!Th+u9U|wnUsMv>{I( z>~2U{OZr&2w~`;bUh1T0od$+hFFVGqW6sL|b=G>%=;FOs#6mPeVZNiWezLrUiY{oM z`PMM2+){xf6?LNxB&Fqdh$~qlDvLXr}AGqFNHcWMZnCiP=i+hDewpDlTCG6w9K zJHt2BUK~rg^Ku}_?^oFwGQIOfzYc)4}Epul{JyF82gCb$N~Ly-RTG=co&CC57_oi zf8#z9ytc>b8qUQWyJ=%<-K`O3(Zisr^wyI4BCI)48$k&VRlJK89Y6hEgKa3X|0SE} zJHWZuxUm>E{mcSB7k+FNJI8;Dq0ihCnDX`f+MyVEeNk~^(5p~aEkrdnv1HENM|Nd>(#69hkObLG?x+?yL4M<2u!q09HkoKy5Uv?lA%) zVAg*S9|h8i#Q4YN(zsqoD!@Knm=21LU)IppXR08ktw;)0WS4#=z~Js3b8z0byVHM0 znVkwA>ju;f4+r2B%ug!39P*^lfBkeV{>c5(vbU*R8cP8&20cHvKcp*9sy*|ntBs&0 zjTt*jb(^_Sz{1z>Y{;=>>}CC9#V>lm;N?%dZb}wSytRJbb?Ge}Y@#vkjD1RIa@1_RY5$Kl`7T6=jgH{O%}KpsSoX4ReJj_|E{XZ2HB# zn*whsJ0aYr0t)2BbYnT+2VEAu>V!UZ;V9m_Bp5ha*MgK8UBr!5KYo(%U#NGJmXCLD zK50)j*9)^s8up9!>^2-j8lxSB9;qH~sQ$?*Pc~UM*e#=4TT!$y;5~$R17is%4t+O4 zzk#^Vmg~N%7}Gs9IJBfv#hQ#}Q+z7LnUYrHUWnRbK}BwN%^(jPPUg@#4m7O1 zfA4!Vu3OH?h$s$zH|7Z$a1nR^GsVR#z;`mZr+1->6(g$4OhyBE$cgKi2e8y&Bk^(L!3x--hPQWK zrrlR5?oZoVpQLIQ)-T9tUkOXAiE^I5eN6ahyH}5ti4P44WwLaBvsNH=ns4DKU{Dcf zpZk{dpk~FZ(A`2D9G{vX2_(SMmb4rgj}&H3jjk71I$!~k1OK7S8zzM_!hW6`%o9uO zHc=J;K29k@7XC~az6Wr~UZ{EcYWQZ5>*i3X?Tz81&^xQ8}ofMwM{Fa>)yEmz9Mb+Vua1SUpPU-sn_a{0cJ?Ay*Qz?1*R&U0Y83B~qE@06J{PDZ7! zJU=-7CzE>^b$+cWik}ynEm_erWGV&x!U>oe=<2{$41vyNHaU$SY&L~;HOw)S%MG)< z!*4BpY%E@@D&`kSK$_3*<8R!Ovb68km{R4&ril{2rThu34XaR#GPYFnpXd+q9dyhP zZ$j`1E<6*>%`WWVS>yFJiBI@Il(pmh5NyoWy7eHUhOiN`duwm!MyZ7N)dIP#M;)*9 zx7=3?^~+cwjd5&d|jNF*O{d0RK0#VbAfk^0I}N z;)k#reV`u$GP%T4prpnFU%o~VSYPQ(RV*IBMHxFn1XFCZlqUWyZOy`*15IrS4Q{ge z_4V}*<$nI$5ozC1;YzU$yg<3g+qwaof{x7$b7)Cfr+~c-TL+OY?Q1!5gtH?3O+gpf zls7#(DTKc6HlO}Gtwp#DrZZZci-leC6lk(VAsan&OuZR92;V@-Qs|~e#4eXd>b%gm zYHgchhH8WjdQ2p3&y3FJH6;!-QS_E1y*nWdgypQg3mr{kk7R340IN<9I?032W~SuQ zk;mZ+%fCu_iB0CCq!>!U9B-Y3^EPKBf7EmjupWbr%ax66Cim~*3%d~NNlgj-Ug_yr z;x+~RqKL1f0Hp(&H2sV;{?mK= zWv$fNySl56e=@E&(HBg8Fz)X(4 z^O*!tNy7dHr*z#K#%1%v*p`R!tl!eCvW$-Drbk}%znQY>(yj>2tku=b2T%!cFQ)TD zhreNo%+g2`rjr1HpY1@1d&eb=Y`_6&B9d!gm9>rHGG2Fd_4-pHq1Tq*{Irh<{u?=5 z38ak8SD-JyJVt+_&Ympfgna*bJ9C>N_~53&d3nCVd`7@O&f5(aOWn7@^t0Briy^Mv za%4};v?fpzVvxO%KUUkMpr?a0&%e#8PDvudYQ>HHpLRsOj+m$9Lxv#uHyO;<042xQqJ8;oT^&SE>Bu4J^3W zl^Vdm`PIj%MbHE*dXe`^0yBA$%TEGE6XVp0rfv-nFk}Awb{tZx_6YitXU=)9it|<4 zxhO69(KKI_;($>95}eS&3Zp#7G;hOS>sG~zgVWG|W7@LE>CCh4L!R#povQO07i;OU zJnZ5!tuH=?U5~nX%d#RerT0NwnrHKJrkA{X$G#)~#LEDPJtpl$^QX#(v(I-wCq0j( z2zPXo!N{&ZeQbu=%YrDG2;(~V3eSZZ!66e=pfM`vpXBOopw(W1AqVTT7knbUOgm+h z?;|5`nOl%ZT{8Jik}SwI@bm4jr!a8)Q`Y(R9WslK_#HxYovEwiV$5B06g|JQ;d+qm zfiboTrdILtdn^x=rNGh40leM9tT$uDO-lr7unPB*Tq+h=$DH_4m3pCXgb?NZn;F=I z@U#wbj9J0v03^K1{EW!vY~2zY3xAEp$*oEsGT1fFy{2MPG&m)Czsr=H@Q>5^@%k3z zG@Ji8L>f4k#EnAj%?qZe)|vqIqqD{~n>mnyk$yf4S#>hn82(jH)lq0~e4UfBTxC-9 z{)AxV4tFQUbb;z6Mfqt(87;f?lK<#?PhLzd{YN}wbnA2p_E8gaZG%F!i`xd-r_4-g zz5Lr|8&l{4{3bV&tajOcJCZPUW6aNVz$L=V7LhSqJY)|=FDbt8^kYNf?Z>3;l-yJs zSS*X9Uy^0O1o4AbCysg+X)Cfrh6998eRv4}s&wSr#gIVkpa-OUThR8VYm{wLQIu6B z#y|$QJXuw-b}^61r;V7S#`CpyoS>i3e0|VXyEcK))7#$H`6{#o{Z`duD;~E%>P*2@ zYxZ-vEbR%#2S?V$cFZSAm`V3R{Dg|Vhp2tCuPa?kVPUGWoH{RkysV3=hrH{YV@;QD zHk90+SXJKDE?rnx#{7|aPrfOh+@6Q`=L zJ2M*CE>@l0T8z>-2Z~tn9`o|l&>XYlj{&jEaX5`ZTL?arE-TFVdTN!bTOprge6e%k zUrN{eQn#_aT_;Exwf`d;YFebVB8s#x4pIOy>`#X(|5-OQMmB0k?*cqJ1 zefq3#*IDsaDX5%%N&I;C7EMrDI9HxTi1yAzs1$I=-S>du<@H&m?ByLU@{FBZ@c0)K z?@!o3$LRC>J*MXgBs)upzB(B^3Tg-W{0kNWYUoGdx`fBEBl>*AZ)4(;;2w?oa|=~b z?BnQGv9-HXSI%%zMPgNqwsXi+)?8Os7J>~39e)tAGDHQys5}}*71nH7KJtUyaj=77 z0?=z@F99;$6Ug7Z(c94e{jo)U&oJFPe^FUcTn=fTykD2KQD28(xj-7T8?*f6SLQac zcdNKStID`aTk%zE_pjQ@elJ^F0^x#n+1&VbBC~hdCOQ}CPOfS7{^CL%V>Ou6)!48= zKbaE>(X>{iGbV_;M?g&RE^~Y5{Y#qSlUW_miSU&q_h@#M$g910?lS+l2MU-h_$V+Gc_Sy z9fO5(TqqZWfIWYbG{vT0afS&DDIuQ>Sy{;i%Po=X$a2q;-hP(u@{C-UtJ|wt>0F{z zEk1;O<|mJ}!YYe7hS@-6IP*X?b!WVnjqW`gBcOm!eQhX4kaKH_p+=Q=i+Bb@7B`r67?@-v*NzQ*+S5`jhb`1A6}+jPXpS`=(ys1qm^4k>%R=^2 zK`*zPfju)*1#`JOKU>#h9)*r4gLi{0V4qq1hF`1J94I z8oRVOC&dYDKlKrHOH{pJ96+yA2l1TxBJH?WTm^AmcX0Y07>O&H_%dit_*QA4P9WQS zbhT)DsOUnW&VJVPw*swJzpEzu4z#cE!EU+7{gYY;(fDTD#gV+^N9fgs|C7;oy{|p9 zdDegH$+yi3-Q-ulyYHiD*d%V3+TSscp`r?b!XgqU*M|ZgGf_VI_oI&>H7)k~cP3h} zdBUqES`3~5%&4l3hOE0Rw%oK+Uy<8XhqL!juL~M}ErJtJ2qhN;3 z`CIC2_gRgr)!G zZvfU>OCBh+FsHEab!zv?g2?@9&FwR7T(W5Fr0H(9AqN|GIvaXE3fFv4q-6}Ex%jqp z)JPp#+cMoD$NBh;^>PvL<*>iM40z@@?31d{NI4>2+pl;$8SN*}hf3SIcNu)ia+X|9 z=9UcijMzwlgv-&uT3viL-j8*qcH{28y#-Fji*r4C4I>Bt;>2ylsXLt`eCK4U5F>kD zIv_LEtDLKkTF6^*XMem#ws;1=E$J_<6yzEcfhr%BZDpWs3?~U`pIVeg43YX4>#QsQIoB>K8#L(|~igjQK z5V=fEK8*tYS@bOuurNb}*4JcnFFNt3^M3hzBO|XRPyC{BLX5jTqt^Chrg8*K&S&SL z)lf)oXTPq}xejU+5Q_bZ5a*mDB-v zWPJBhw=Y=Nt*TvXv3LAhLov@G)=xeglU)!8MWE#)_&ZY0fF3oWm+pWV19b{rWp3D+q1@udEmVaw%H2uRPYM47myybuG*CFD+utYJnt!w)@$@5 z*MBqfm5YFFzS)4`;iaCSyDPo05<%@R6VQHp^)C%*LC)m44C7hqoPs?qN8=EC^!xm| z&;k~|nMfu2jT%cTy+FQM_1uOzH6odFrs9UU`?v_zmPYx(cizGqNc&aq4#n3iDAVxK zusp<4S6BPGI$r8wQv-|0FIJF`>3+hm6`t2<=H2Q#@oLEVtHu1%2Ot*ZKo#%Xc|k7$2imA#`i}EVcbyQE@(-vv&(0xtF!d?hn_X#O-o7vhfYN3`d>wBx~P^IvWi(!_a-X z{Pwe<{IC2np5_oS1P2X2EBZzLSg_*O0xG)#;0)2z2*~7xWvH8$YW*wLDmGHn0Ey6o zudwkZ){~Yp3u+~oK0_+sG^r`%j3-mRhBEeaRw@3&zl&l!d%gnuv6=~8EJh3LTT)sA zGy1RZqE9$WHHia9$KxT)%QQh#2c6oh7Xxe7hiYY@ubk)WwU*7Ij!-FuN8`25wclE4 zhwXwuRgJxyo-k>-TpcNmB#_jW)@y)gFE_8AY4OZ}{~YpgsTmYgor* z2&~$LcK+R0IgWY@kI@rLGhhcuJl$S0=4T`ES4EUPp;e$n2mf~W24@FSk|ng9^)v|7 z#LXhVfEKJgjUoL8BOSiXj}Paxot?lA8)Uz*rVz>+ytCHWl9NM~_x)RH16JHNTTR1P z6asO1Yag+bb0!pMrHu>@JaO%6r1bP`>ci`i`HJEno#i>WU^4-$7EEKd%2De+n3U;E zP9q*jORcVt?(zi_my9^Qz1IC$&^27`c$F3Llu~9f%4q8GHk(A}&TL&-?!#d!UaI$s zE?-MJd;}Yth&wlVYr^vN5zx}6PQ%)xTn_V5C37IH+esV6WKFo+?tQBuEDIiZa%K3` zd???KIB#Hz>RQE!k754oSIb z(tQ(F%ISkB&#|?xXnWI4;%^z-yl2Nk?eShJ*zYs5cD>$-HOBfzzHu>Yoc{n_c5-M& z=OLGLws++fZNe#=F^+{Syal*^DSqUKo7A*b8s zr!ALL5NLf;Xo`UH7dhzyS1n+loa2tYPG-y%>I^wn<0NXv7-OMm905t&zFfvJhB|0F zNQW^0YhSzf!8vw`;bKbZbNf=(2;&x%h0Y+p^AZ`=~Rmyk|TQftl30mpkD*GsIo`48;st;xvHwR8)sT;+es}s zF>e<&>J`CYVBI>?dHfA>qna=unM8)O@npsvSV(A;3cPNhOY!^Q=3N-ZpO9VwEO@P6 zj(Opjf-Jd-Y5#F^GcpGZ=8vbSb5;LH;)_J zMOhy|UxZ9-!Q6Eshu;Pd{q$<_)qlAywzNu&-<-+>>QQ8Xx(hhTWl%TW_ufnRs`wl=+@$k}OFTy9c1xW<#7uOlZETg$$PoD&85Mgu8& zKR?}QU0d1QxS)#oV5#oWc7uQ#*u3E#ktj$ZRob6}jq&JbF)rmq}4@HclSf(5F z1x^B{uUcv;-tY}|%khJ~^5CpuFw$oJBiBw=EHWD$?q;GwkW}AzDsWExB44rR9{5%y zuHu|dWfBjo!@JA8mT|X3ruW`qLZ{Ad8$*yzUxw(ut zfR5Yhfb;v62lbvt)bve@5rLydWaifj_c-v$@T(cRxcWQOdH>3TCy-$DNmBv-q@ZGjQ?g6OV<7&RtC|ix4Wc{vmUly)t7% z7(X0m{A}kx9w#++<}2{vl=K^S3%2Blg8NdlH)Hrs2kKi*Q*DsNNJX%J zs7B2R4RVjQ3Gn?PvUU?ZD_XxRovO)_2)#6Q7WquEIoqVR2f1um2l1}`C!r%N+a8i{ zUGVt+L5g=ZfOlyy)`yd`L!J6|5})Pp;CGfh$U(N6N{a0EFHNDDt?quvWC&j~h^ub> zLrL|fY~?bE@jbRqcZk33%{%vOHI~qPFx2vl#yMG|KYQ50t_a*u>;T#5b4RZ2SYTwz za0*+%w905hUoJk^{LQDGfm&*;xKo+~l^ebzOgU9p7gbSkC z;$(L$o2@HH99j#y{GdtxUp6}VO=Uq+a=bg(^*!Kk5hT2=)0dn(z{FL7HIL@`O`%aO z^|equMC(+DDegB1^{8!ne`#mX2o+s;+|Bxvz%O{>GqnqV0#lzF8&<{G5l4Or&hSSo ztvfr)A7;MRy^0p@ns1JZbOQwP|53;*LVTCwRhW41R3V;{CnrCjBFSq*AoOX=RlYQB zpB}xRvVQrU75{V~=?RsaB4Ngms1I$q=P_h>m1N~WWe+yF;|ALeOVriHtBf0MfnP40 zdOz!(gIvcKH+WKioXDh32J*xSzcxgrLM_sE_5JtWD-PeO%e-3|C%oI$h5mH$1fZ*z zbSc#Mci`@-fF-wD- zWsXZg;^dm{D2(Vvus(@+Z|xh9VO4+rZ`~o3TF1wl*WW&*m=~2X6mgA4$_-i}Qmp2N zvbz?$(_8|67v32Xt=TGXt(kGZYvw8*+vV?g<7yN$+do++*GbnCbq3EQWh^hu>whI zhQk-yeZUH+V;K2VU`*p=1$kMK@XH(hLq303pg@n5bF~>{gfku>qiwV`e&W8El=6_L z1ho2zZdS86y^QEaFK37%l&M<` zt(!c&E}(DI?#Ti~hecvBh*XYItgz$52wcZ*&rfWX2xk2ye*Ix)iYPgsvK_hu-)+aW zT{h(AIz5%by61ugL~YBBZIVI|36-U$p!1a_H~B3+wuYuyRu53S;i3D()K-8w9XdTh zB=0w@si*x~h*A`8wA{KuAuzI%SydYCve?BzXrj)^h*#QU*>C|4g&M>p`Iv>T};5Cuvb zPH)|R*ROZPUAsRPyc4eUmw+*+PN!OJz15OY^rU&ra$AViD&f?)nVNw=N@bK(57x4~ z;VQZM540`xEm#ju45^L<&MV^PvDTkv+})zS8d3`4m!)1o#EWl`hht}F zcmG|gOO@&y+i??Zg_V{H2oaO>7mP;$zj!KU@;E#;zS?*7G=JAGLVStyhu;LdX{gSj z-rz-v&+A`IF1`#g@VrSBk>n_DfGObUS6~-?IdL?H&?*q3zt5Gj#b0@p~6F0Z;;P}7n z3@r|uU1W8i;&x@*>EUn^=#n(Vy?a11ddE)~uXVuQFE-}O^`%n8ChxHKNtcHC#Gcvu1$mQ+ z9Li2f{b8r>c26Bl_L&UJ;#=Xu!0CHQZwOKTsv((e0y_e4=b` z1VsQA5}PcCm-M?mBO$i_9dHN_xzEI$?cNZm{r%9Z=!@%3Gr({vH{!u|FRTFefW6sS4vq4WLJgAV0biF| z?g8V>%eF+YG9Lj_e0^!IMnVaru25;aOyFqhRS%8 z{V)yL7FLJ;B9c);*6D z$P){(DjX5$LZv}WA~P^|)LkRrid3z^Dn*iWOo}@iAAZ1&vM-WmO0|KSB?-9vL34a4 zH3J$Czj!O!WzHpI0^?sKT%4<@VeMzb-|BI4d}V9{y1m)2>2DvsHv0L8U5A24RlQ)) ze$m}nwF(mYr8MKdd5|dhfDqdQWccQeyK@uXi{6o$apEfm6!yviATA>ntRNGU{e-uH z9D2YfOzYPlcrqyQFl`-RxIa4|8OQ0hmYD_lY@(szLM*ctETu} z^sfivO4N})zD5k$)pg-=VrQ;4hef8q_35JKLi%8zk@oXUd<`9b(?MWFdCCr+0kBwH zYT){AYe#7PY7{4eYi()r@@LEJYthh~o~(;cQeqr7F@-E)_}@j_Cdz;Sm+1U_P9HJ-ac#5ZS2bTIcE|&xrhF1t{&XP=_bG^lha)u)Je-jaD5rwpP3BzI!}R@= z+S@j02YzYbS+1skG!a0A1|4U7Z=IwX~@bn3Tocw<|lReH1P?uEkZuGih z)zA99e65}83Z#wb8T5W=ltO{mjdXh7FP94lP_X^UPY}wl7ZxJ!yqrAafT1 z*5FmM9HJQzA7??sv8H*$ynaJ2724JZ`BXms3BPAcyH&%&l{12+*Lu~if1We^pagy% zUAJHqlrm46bH|ADEh)OK+6nD0%Re#{?zmeSi0zD|<7>>Et@{}w!ZndNAAtXS5riFo z4k7mzT$g#Xb%4n9j`ivmYDlNWMAvQp{udaWE%1gcsqXEy6PdiuoO!?la!aL|$)`O< z9oyQ|GV|mhrl5{Kxr(~L#NL9I+`LrpIS(|WWd#N(?*xwJX)n}j}O zBwxMR$-zCX={#Iw30Z4JRa(6s2X(;06(vIq|IykMwXB~_AClbIwf+l^oovhcZsj%7 zwLS&9N==0)&`(dz&TXAmV{h_-B1wjX(bjVlykZT-DAkz^#G@Hm{P)(ViL#>Iz-N=S zLukjHX~WC`H$H1Bp^jLWzyBxF(iZ!$O;(8BYt^oydoNT5E%H|4vRGUfc88Huc!?Df!VqLiGmm27@^?tgTiHP4heovOKJv zcPQy(vV~K>wK05o7ln6davOwan0AOYM?-3P%L4dE7?tIlenb4P>shu;*KvHwW?rdC z1M~M0!tdnsFaGX$?C`h2FA&UOv!CJw^M2q>b;Spt9=gB{espiG&FNT!LTJ%KJVEW+ zH(c_|RDcDAlp}B<5v!6v(`*0vG@+cQoE@OyztIy!XriS z*N;kQ?HyG1S){F88HSixqKMvO!yb?|L|&6lR9kDoLW;K1L~<|MT@)B??j7fN8rZz% z4gK*M^aa1}5bjfKd52+nD`*6R23*v-6PkgjC0ZR^=+KlSi?tV7#3&_d)%PXw`@3Q zMcFIcpI0UXX0G;s{y^gIz;_EiBt)s13WeHlaYp0v`gql~Itmu}*QrzA!NUNNT<0Os zKWN7q3a5~|N6zkTpy!n5*jPkyo5wxk_o0rPY(s-m=%((i(`99AZncoOaCaZEotPh~ zrlEhSmU^e?y2x3i)FD4o1CYo%&Pm{md6c%p{|9WBTD9@}s>x#%aw3v{ST=IDDOsAg zc=s-Kl=uC*UdGi$A)-7srlg?lxOKZsC0%NF?kBZl)Y$YZE1{t7U&5usTINj#=)%uM zoo=a_41;V7kWV(eH7pcCe7nf3YPB#l==2Wp@=QWzBFHS0LvXL2T!ro56EgtB?OMWu zEQ{{}?kewv`tt#yeXF463P9m~CRW#)eR=zU&)ahT1BUT!2G#UlAO%xf{`IZvF1Le1 z>572d$bFdu&V|5dM$0vMjW`K0K+`Tw_U+NnDZ(n^-%n>#2kcRq7n)|Al-1S8U0hSr zmn;KljhehH+m_F&+NtXu2%I#7guP5@QZ9z^I=Pa<{}C_#pzbSGi!QH=;d}J<<`O?P zJJ|tBoU5Eh;QL-mdQ89??Q#XboXXq{YNt;;mA7Po${=7Y4@WMU6*1qIwpQ0750Z2+ z_iKITJf-)^V+HZ0zHixhjX!gJdy(7K>{$+T!6pW}8X5XR-g&f~x#DrsEYk#(>YRH? zi|7RvJ#K`%c+%_<&-qyyiGfk(N}A{whsoB1bj-=y`&T`g)ZR22==e>yv#`W<8#{MC z6%SvF^2Wvo(nE&=pdt=A*b83*~1c|GY6>jrQnD@mERqej)Y($QmX9fb*@DTtn*L2`MN)s_!Q=<_hw*& z3Mf{OVQco@Zox8g2NRAP?BA5H`iw1wBJLat9)vxnNf}xSA(CHgS>lM!;TMk<%B+|9 zwyV%+yOvnZF6!|n&{VQ%JB>|NM+tYQbTRAuXHeN>fFD?+;e6ITNcUYGttyAE7|)h1 zNqXLV20(`L?nHDIm2T%Jr=S4+s7UzT0xT;miqep`sCml&rAa>=+ggbRmyi})&kX`* zhLwLS^pCoLD@z4m8X!DVY1F+(1B^TIMD%jR>5&NlC7K20s4CKBo3}RnQO$JJA^J?W zbjTf47QgRzYL{dn=~9ey#Un~}IrmN5+ySHEbErsyA7zU<2#aA;zWA{o7K0}yssZJU zhc)hHBjGC)dOd$@NxhMFxpHHzj93TqB%W0ITGRnj_6(psC7Ft$~qU*Vv?&iYC5Sbvo+Nm!EeU-HXX z#ftNGC|X;NrluuGoeq|lmMo?|PJgAc{VBGW{OFGy+#T2pp=FwyCTrPNJ2G+oM#anF z-AQqK2=e_X`!AEg(|o<`4t`Tp(p^slH@-jUY{2`=Xoa$?BJyO__uDlyuKYekp&z8% z(z&{pTG==xa2r;PoMB_LhIczb8^m%RFo8LZ7{GtKq%Vforz;c{bNPM8@S(%qdxu#6 zDiRfhlcKiHMwhb^rZoXYoEP)xy?>brM$DTsQAVj99erK*@!#bbfu(&>7fh!*T4xTg z$rz(DKz*YWXJe^&NF4DaCcgA^X`cplVhai1)Fpy-a6G@G=0C7`PhH5SHony< zdALv1EBSn;PS5%3W#K&awS9{U<JGS-d_JEQSumI$is(zK4Bac9tKV zBClJq7t`ap9+ydJ48Y+rd=(sT10jSQD}w3)5i1 zQ@gird?tp3CwYZaheB&fn!BG75Mbi@pr##0YWbp-2i{9Wq;x7b&mQk z*l;C+_?VGIQstMf#DP{SJmFGmA?161Hd*qOfM3lPb}CsKudEB7PW`qyg1REI9_PeY z>e!DW@8xz19L{Q3WeZ&0Ebwn_`*?8H13C@lT)o%&C5F*W*2WhzT!(hk%k_ZVcvRP* zwzv%_Ci&8MjGtMb=<4qpePn$*ZA@^DO4e?r?9cJ=aVt$FV^Q$zC16qXW8E-9epz4D z1-s+(gXy}&-|5cg5b~dXK04!r^c!>+>ekX71}9kwSxUl312cMVGE6f4@i4{SjEmSk zY*L-0rz63K9kY>puRPrB9yzn_(UbXQ5QSoiYlZwjVcR^JO{@#N1-#vNdLlWgysi0f z@_W;&KDuBlyXS{zXnSOqBhszZuAs1R++Hhqu6|2aU`Ie8qPCqnCZg9mPW5mba)blQ zU5^`}s0_bLXO-{A<~!cGKbouksp*C<(YqA*qx4)@8HjIlAgOivdB$Ns5DoLIYi8DC zozSCeQg>0$fbJt3Z+6^ke?1>t?-3t-&_tGVDx3X(6ElvMhlcs~!%N+o<#UvMM~}}E z`p1h7eIL+?G42-z2Oq83R$@KPMji($n#wU|J>VGszmI|NCGTo4DtRCmXMK#l&0V0& zR|E_i5KYXR{f@4zB6qfJGq%8K?u~{owMkppC+~R3#ZmlC7142y_pzldk;FKuI*9*} z1HAOX*`pterWmHK|Eb{*6L^L*N{i!NI}S)>=v3)ld;na%f!JY@;QyT=^50#)Wk`e- z3%vWWc%dV-^F#Zk+o%55MK1yt@2evj|A(vV3~MTT`hrMN5F$zuAyNbs>Agmps5DuW zUJX@BK%|#|pnz1DUZbEO(g_fH=p90l8jAE9LN5skZ+3P6AKvH57w)~>Gv`h@b7p=s z=g)<^(qwlyW2w3+SH6nNm3ctbjD9zE_`F8F`vRU_Z?i4(TXG?c@v~+FGe-2Sm5s07 zbUWAhR3e1M{C_8O{?oL72rqM>@CiH3`C|8{=#QsNhGLso+Tj>c{699xkf-`)%nnFW z%a@&r{?W=13%;Rkh54-|yNmybb)=ykl#}+h62|bw6#oNTBAHC`5IZlZpbBD=1p4^* z%Aq7#Khl>8A!~VZ)D;r?doft&CYNdb$?7ZpHvN2WFLe@!o}_Gp%Up9JjrPs}lG zG`kAxn*148jNBK}USEXY{?EoAlB&?}45z}gmg@O5`gMNKBK{HfMt40+Ec@hfX3`wH zi2r~6rFe#p{;9*qX|`YgEkczlck2LaF`fdn#{Z>0_ir$0yv@F{r%>mMSN%`=?uNW2 z_XVDN$(PmA$+Poo{x@evirq_7mj;le;^0M9wT#~rGJhPrmf<;d#oGJ#W4O#q9PDk| z=>7podyLYBo14#{=hQz>bv2&-GBz}S>_y7C{}U)+pq|WFQBH?$G;@T}OLqNUG_3f% zRsL90k~Y2|mxa+nI;R@HFIj_szlmokoMQLa07&1yaAQ$Ky z`>(m8%)I37L3c_O-1d7_F$y4;g_P9#G@YhI2>#KjW`;T2tb;G`h}+nTvyK0RNBy2v z{+zPkE~&wWI^k`(=)Zj{Hx?YHb=|8&w0k~=8>=Ek_Lbv^YH^vwmrASBj zRQ;N3nbMlg{?IY_XRPKMH<}x^g5J0ktU5P_r9^B0zD_Gbw$se zbM)^WM=M*ox{ee5XPqt@cU;3|r++h*gt7}2gTx7m8A|;((I}lud|y`lQX5ni&o^|T zua7ZkLvY}$S82vooBZ(Anx%fdLW8kHX@Q!HCj5XRx;g_s=vP&HIHCy_k4H_jjYkR9 z@h96pebPA5bX;Zk>J^vft<6J*5a@Xq32Sa4=R8-w@#f$S-grBy%mpol_cgP#z)xTE z`_`v8g~B8sG@dA0UAPvZI&fF;(%7eX1Xc#0<~LSoF_v83H_tUc`QxQVJ@T7_z}EbC z`;%?adW`NIih*eZ=)26fH-8uz=`PA3m4`VcZ47&Jsstle#u zu2lL($@H}`7c<`kN68A0H{o}n(kDcpaMDfB)kV#@n|%koRu@}PXo9ilq3Eh2))y)? zw|<#eB19QJRI}4~5^m?^HQun}x%K8q-bNsfc4?3iw}GWfohQI9>_k9Zq+1XX$lNY+ zrKS99ovzYZ&Dor{bjGL-sIB3sI3u}I*jWJ-0wZkOuiD?z*cNWwi%FxCFctQ=Ox6+3 z5j1&6?rnF&!Vz;FGJ!0qKZh^dr&R%xHIxtYN|z;`E{RXz7vi8c#3j&9wG;U;a>A3@ z!a>S)CcZXETA=m*Ma{~MtE85Fy}z(K>5@(=9ojujNZTmi^)KNA8FN07zJx8y`9!)G za-_~+zUvEFlpeU+wd~PKb_0@oz(Pyzvo4QqTWoyx;rg~kXbZ%H2#7bmNpx3qH$@MP25Y>DiaQPJi|b9*3-52PY#NL8mSB z{ek0Yz^lH~*T=AY#_&;B#CG$C16(%kAivD@jb@8XU7K%v#p>&8U8b>eZ~JUuD*KfQlZD|-{14yUJI4}Wl&S}#fXN;r9k!ViW6#Zt_V zk;0p6d8TPLn}+a&K;EUPq+bohlZ$iGnTc%D^&jzr2kTX)t(9swsxpmkz?I)c-urZy zjHaT6>4T9K^(1dHqsZW?puD>s%vWkEFna(PADBJcqcGLe=j^-`Daw-^3Z`!Feykis z_K8|kCw`gs36JvM_C@2)D$;j75nt`L^bt_Qv9Yxo|G_}TlQ}GX$xh>1<`3Lh{$}Rr zNx+t26^hRY)80eJCbj(RygflzZo#b;XsUKPnB?23EG$#b2$hCRFAt_IMCb0iJpLX? zHtf;yafV!q9G8up-n#JWqQViXCR}?At?2J~_RhkKgl%f;T`|+kv1o4@R{{9-o<{b) z^pH!!9E#(K!2^%poOepoOxEsgJp!;8k=wE!&PGzk2hY;dB75zt}N-e2;WwYR&Ijr z%#kW3f4ACQ-rZ~7a|>K$7gAF<)a#I|C5CYd`)fV7nSEzIZW)-l7Gn>mzO`7v98Y!~ z`sq4<$$fON5dLv{-sKl1J@$#A@ZT2;;TP>RvKMWjuNpj-aJv}jrS4Dxwy$baMjT{~ z1_ZxAAYf8m<9&*H!}Td{9ZNm#);dzjaohf(Y({fuOh#bXjWw^S_ATd9dF0woJ@)DK z8i&bZA@XWg@i}g8foqWy1Bp{xj`Q_PvA!>5-Ymxh-9kRs+YQvo;_)ju_w5ztz{Y9_ zvT7~N$tm6iTO-Q)1}--=FE6{^(uycaO;nkpjB?dJ8dF&>w+r%MFI1R z2nRJ5$Igff!Wj&kRe(<~C>)W}{bkQ(U2%3NNfiXJidUT~;iDalv}X*K<&vKmK^|-J z+i1MxmH{uf*(dvczh@;LBey82H;(i{QLQEo+}vO@zj4YBh!_l z-EOgxm(KH1e>{+!dV<=fVwz$dF8^29&*_3y>@Dn>)~3tTdV|cjaM{eaG=S34L{2qBJDD*fF0T@X_WFk)kQ9=Z>O03l+arrU>PR*auYM|YdETtMD#At^Fwd1)anT( z&E}mdrUc~gul1ffanIVv;0nX5h;{I5lf3w=F$J(lhJF*YqzkCaUYnJDl^x2PMI&D{ zFk2L_LtKvJ2T4j|9?J?3RLyy>Ycxt2Ko62CtWuK(V|6oh&^`=VvO5-zT`Xu5TO%a{ zrl$9v&rAhUz<};D($TAKl9swKj)SvB@qn^2P#SDO3Ock6O4iMmW0UWT!t&YW^FzK` zP=8n+dloe{_MpvY1!K9IFDjTmII@(R6=fVa6&o{O+&JmF65f>xaU^6cEy|f@eCR^^ zcJ6g1pcX^}=mkp{n^w}Q<@$* z@*^jbFVJRzu5Mdl&;!%?V{$)1<(ZMg1OMSq3$~1sT>gPp0aX~aSA@x>M8*9up} z@kUf0K0cGBJrTh-(5V?$Jzl@ANSD%0mx+svG-MnbNwB#n&98AH1!{USd5C#KMD+3OD#f@wKg&5!HE!}F-TXwGl1sA_K2+ypSX^H?_6JFyZX?-MQ)I}RBz_;R*IpZ z%+h7w5unSglUk5?9}w2nsl%t4B6M`#D)%+A#g|Z&1Zm*)G_tc8H;8M%s@aJTEu8N4 zzSwcx*dLE+YR7_umKGuDlGD&rbc|H)MVYI&3Gt{GLCDQ5JSW^erl0fez;-a`p0;vlgeF$R5ZIjk_=2R_2C_|pa}68$I?{A_J#0g4sjr2*oF1sUL4`sW@vUL zfm+&F|8cl)IBay>tIDBmw}uOLF|97h)!XG+x0(*ihD#wQCK!zTMl2>~IhXeax@8lTI6ORFw zJc~x@^JN$B<>#d#E(=9VJ+z=!&!5Kg>G!h-oPYQ==}R+8tAdJwCh0|TjI|$6nJ3P= zPmoyd=RFrxIuE56Q2TJDTlrvQRbW5D;C7!h)_+*+m;DOqh0HGTAxX^Q2u$bUJP~cF zeR}7luSiK1_i(ieSCr(0jjMlRwGF;ML3bc12%6qrto)UfcDG2o?f!aO&=p2J2MKVx zt22*JX7p;Se!qpPJ)mSNmS8ONeUxeU^HaF?9Sx8f7ANNUIonYmihe|XuC;}*X6?6Y zHrY2yzRSTeUkWpB%w6wxV|%;$_i<66??ju0+05Aj{%>+D>tcNL<~n%f41l}>}_k9RPLLDTuO?oYiqgy~G;Sgy2Xbi5LVqE*A5Krb$F zy_~-RJB8(0_M9+3;h~znIcZ>+XCXy~J`LK}hn3hlZYWhASftnyr&o+uK9Sir^E>lZ zLp+>?JTse`@HD7MY|QO)|G`X9G&k*tz@%z!@ZRF9Z3K zpr!OP%5w~y8~0&?3k?a3yT7M8pO%-km2$+a$yN$-Jwe|&z@Yo8q` zSWbD;ILr*}6x41g zHu&5^-`4V%TC#ev6f$UQ+;__iv@~99Cqkhg35liHHt`+X1nu5?rmzh<^co>d zyk~$0xQ7fz;?YtU9>wdrx_ zYN>-18x1P{Gl;eZ$`y~LLhl;KcKoFqIq;np~_xQ{K@*=;^67dLX|lhM(9 z-FscJO^J6MUhxu*Ufjj=nM;_|P!`ej+_~5D&WRC<0S6L@MXtSBfyAE9myawIqLMfhLqF=`7n(^1j>1& zQSNPIPk0O47wXJpU3r8eA`S@_2!y^jjq**3su5Rh|3<$sKVCdh@6;W!b(xVkt%Bq- zpXquUwch;b@0YHt@5|`*>?tAfmi(V_7}sAPE=(tm*m8&>C6bA4lKs73EMwvz$C%5O zP2#)U)s@6o1lV!b+a}0-ko#`bw>1cDz?z@q8aQCU%8GIko^|3C!#VFRji(4QMV5>0 zNfw1C8Ez3WcIw)z*gzZDM2~(t9Zu+UZ^^gh@FP>14=X^g(6{SO)@YM-S0r;xv)$+E zj2(n_nsYbZjp+v81m>0N>~ada&Jvc$gKao*Nq)Xu(04_%-uWQYJ0~A_wwW7*9?Ov8 zO(`|q0wEW3yZ{eD7hUwc$ZfT4nGt`~s4jm0Ofmd3VkE1u`uIKhf^i0pMnwtEDlMB7XAh7q|W4I_A zMzSj9%h@OMlDh4@jVn&J7eh3wm7~PVRI_teb_l_YD1o9F)+VLBs@a}KonV(FQBN7W z3F$s*XAh^#(_8l@m>oRSpd&@5hH1AtN4_;4AXwiC+xhO*PG^@~1Z*4bz_@R~p)*y0 z#a+3H`9-DRUs@T<_hAjMSpzYNOQ=g^ln;x%jux><0u_A?j^h9}n(9&70?M|ZS;pP8 z^L+gcS`{#%1Yiic8j^E@u~^|Ht2Z>&35xpda?z0mF>r}+l5^HE#ISr!%KFYf96>Ej zZCB26rmy3s^5QzQW_6FoT}VJz?S-0=nrhff#>xlpEYurf-&<+6iQa+n@+^S)DbtNU zJYu@4zgtB;P!>?gy!fy)amS8&fZEJ4I--UrCkYpTitKhIXVJIndZp+qUL}QzE#;Mi zXB9*k%2?w*JEe$DfQod73|NBNqa6xSP-0vogOlE*f{eI9nW{r2Rw?)Pg;7=yH`8!| zcp%d!Iqhg(Q#G^CJ(2#ozCR<+-2OnCPkJQd814gUe*~>_~?$Q2ZQ}#XN zxMa&T2=zIxa=)^eI%F=T)c28=gc#tHT||9^j2bmJKlbfnG3#)c0>k47&VBbnMj5bb zYU4#N%xw*$?jF$%3S-D)CCs%DJSY+ab*S6u)qpt!71i@rW{PAl2&mm96|4R25&E2SWQ31`$RSstRjnGwx`1kDT5f(hiUZ5T-?ajj-flHsJ%E_Lgbi zP}$k0?+~WEV&(qg%{tgbHpVp+Y{t~eG>kcALNr!c&!p_qbN*e8a{8IEb%!AA4AO*7 zM%JX#WL7I;*h3PU-upC;(p|l4DISmusT$d3t)EwKHjxmU2cSjIBd5;The3R?$VEaP zEFAFb5Qe&!t>dy2E%Q8UVrQ_xX;;kO;m4i4f{2_J5D z69oY>p%|#e+F(lU<)=#l(zRNS!ux6su?JyOKq3;h2iV9Ab%Xq@$!4Hwx~QK&A{SJV z4P{qp13f$jhnlWUPoMj)<(JcrcESL@<*D46EDp+`r;MvEZp!`RBX{1Y_+{^dp{-aV zM0R3g1h)Bb^FEc!d9pM?$eC4XIT_>;#L3QyK-Kh%VC?sR-$h;gCidY&eA zN3)O~tsTJoLw=xwWk3EJIA&=w=y)wi$QtJum1+lSJ?>IEhO9bXd*L67I6Y%XbYy_+dde@po4B z4#hFdA19LMC@vau8op`z=hJg(iBE={GpwsF%#FAW!eK!yLc}@{KW!7+|r9K?qJ#vbL1h#`2au`>EgNQLCUIvrp#5WRX!CjaPN!5HwBh9F7~UU>WAcrt%1(2R7Xu(O3~c7UcO&=OFWRrm93YT)L&rNq%)e0WzB4x4ZSrM39hpy+~|2<6E0(J zyyUY(pe+%;^J4}WDK{XNSMm6X+A?j2lRSsJXmRvfmdwZ58VtM6oy>X;F##A{n6TL)N6gm2RK(O>k+wm(!7vQZp@Y zDjn~U<(qR=inEI|C}DnV0(uS<RYMcO)^pO=t)#rB6_LKJ$FKG)Sz`wM5t|f9CFc zzsEe%1inH=K(McIm}jab6MC!KbuYY8O#Zuomj0o*-ZJvI5ScDV7u0?JbK|fsubQxZ z_Ven+$8n9WsOGyjeq}52^OE^LH!(T7Nk&@K$#|bvqj3>YKh*naEDJM@!cJAbis;|* zo{qTG_3*Z+5O7!`$bk{a2-Wz>6GQW2FKC}A_C%exkxLd@-Hm0ZC&jh)60@rt=kV#0 z8~T2EH1539=6c|Cx6PSnng^lh#_8PE3NEQH=VgTPu9t77K30&}y1Z~V%nf=v6()!C zW*Ok%P_=noD2QoNT*wQz8-Leehk080Fy}S*Nmhfcq~FZ?X0Pw3B&DX3=HM0Qfv^Ok$b;pzlNK&qX4))Kg4P#`u6AM>rMPW(XK zqOXoJgN0+&*0a2>!}fWQLC{`#7SZA`#K)MsIfAPrc2MV*%N<9)ymyaz)SOAW65Uxc z^PH6@!OP5q6_iQPZge$YIdRFnUM}S_yJ9%=NHkiq7VdoH%;TK=JvFK16Q*$XbDD%W z$oQIEU&)-a3S{L>#mB6X`n9}tn?wvrDsrIbi_&8HAs63F(F#pOJp+Z^<{f_&-f{52 z7yN0)aPWG?M}0kAwO^#NCdbgCk@JrS&ddI0hQv8={JS$)GT)j`I$b_(r>?vXnw0x7 zQ4O|LpzL6xf2RIY7r^k33bfq&h26SWSIbSR)45{WcUMHT*vobrbIVn63RZ6J0+n_b z(X{CxQ|lVd9|ab5T_^dfBCv^6o!f=?T&IK1A4L!PiL8kKIG}d~Y%o{=XtbTH91eX5 zmQl@WJcah^0jljbSzxXPz(diRmlT}>KZ4%d?hoCvrbPtTusAx8Pe>9hGbRIbUngVW}-x-Z6}DG{z2uV6&S zz*{X<>n6i@bct%l9@^HyltF)|tn{6sq?%0MdX0a69}h-=+Ju}L3#lfIG60;%fWgkh zCQVD~7?(r&>Tq&|i>{O9NY^`1DCKrKV6_x=MC}F-B6TFOVx-erHb)3*hP4V)+$?EH zfa}wW5AY`QM&sCbfE?Lxh+z}1j4v6k07@8|wb$>7rC`6(=^Kb1$BAC6Tea<$tE5?p#6@*b4h^A>f{H@3Y! zqUhS4Y=CXV(MHQ))O1LG^)lr0rY?`zr>6SZ+o(wYmdhkBD`S1f4*1hMT1J>`X(u+v^L=$L<(=6`E&TE&ao8U3LFS3`D9e=WhpD4p(^7r znUm{O-B@43$j*^&egH7=9TStU9v8(-+uKgmUEE~>mktsIZ{WlfG9}sIJjO8ZNdTxe+y8FvWkCB(R1$)srao;?VsnqmKce zoFv{yW+bdz&&A_$@|YMpZ-o_($gd!Adc<~MOfTg*hI~y*FZ=0 z$k;SgI2~faaLY}MuI6a><<820R+pGlKps5^;{J}~71OISnn_*<XxC=!Vi=eC;N5<8{8u#@jic?YDJe-w z^X1*VxGK+*o(NoXm^TGw9x+Snnp{el0-5U?Xcp$81lD@lfAgop3=~sk*m!BMNn)7B zJ-)Ka*|t}rqbe41)KnSqQUEN+eS7ZsWKmv4Fej}zE!M$dG<@PV&+tHz#>=QN$Rh0cecG_b`pUnAJ)$k4hjNgAw-N^te4;6u*Q#feBvt2 zWY(!6Ov1?Xk<2te`d+9<@an5n#?@DlA zL(EYxRY$K}=zW3@JgUqtYe6;qx*@lDn!#dv#on3%R zsl^X2!SNrHjjNXm4%(o&d&q1_(q@Yte!1u^w$QM2KS#>h=ATUDb4v0XWqm_e_m%&Z z#YYr&Gz>9OR^hv!Zf#6lH&S3w8|t|c$PbU;e@$KzS>zi~O+|6~ywCZgvq0{6`O)#z z%|YtWM9rHrN{lV6*OJGDia>Wr1L$NEPFt_FF$cWTcAEoy6MPMO;t~-3-bJ8|%K_sr zj;+f1C}`;G)x1E%jH+F%%g5C*?fmIFKE-~vu zb(J7c`BK>a%Wn{lw>b|yPdlZLYdnVzw6`FEcdAoGr9!4DZ5WPR!9Fe-xnL}_J$_raEtQ6c(?l+2EVquEI2Lf0p*hl_c|rG27m)?8MM zG_T1a;}W%Mht*&?$AhXg?~Kmbk`_l_<3oq(CNBudubzeXPb)e>r@eBV0Gt4BN6QQ) z1?`Ut_3$x?J8#r^n4{1NM&F~6>VL7Zh+E>RMNBm z;kvbEJW*p}o9I6OJ!3OX&OO^^tY_RtIQN3E$f!3?JsB}RVc}mK^`o(-q{_UnVzX|9 zrbp<~1l=zd5B+EP8pFh)EM_B_dott_PC$>qSZt}mxJ~abe##Xq={m=6(xl}Gy}v$Q zf9CjU(lKcAZ*wo8rhFb6?U3QQHO?DR2?poS9yu37#2HJCxigd)O^WdrK6hZn7Yy%p z=4|0ug?d!f1oZ(h;9~Y5Pn!>C#`{l3(3bPFWLe+Hjr~7J4?&6_TRulaqi&3?Dk0N`Kfq2+=SkDNg_guy6J0q#Of)_xg8M8@{WCjp%>m;QP-OL zvUMogDQG%HV^&xPXaS&8g$b&l!wTFi;jks#U(#WkT>Ir^=0yQ{?2ucb4=;)bwLn?6 ztELZ|?bu;evpAaJ4&LSPE-7?ZPhan;Y*)!AvFN~cW|)hKt9;xd!T5X~b?A-rco@(X zNZyk6B%po8WbLJy)I2GZ2*r%v4br#Zf1V&rpl%t@fon_X_7!fUw=+3SKz1zqc6YBT zj9NsXSsMC{fM^+GP(|RL{Kk4|Wnq@;o@nTPV|kS*bK>i(dli+pJ`Fj3c=E0$?8z%Y zCGW#>15X2ruf<>&$A=J(O)eeL0SPY2Y9*sKKnR<>?|x0(;HpQ1m)M5r`GZ2+Vk&l= zQ*^6K7Op>Wz(^42T)fAn^d6%*FYC7J3sZ1yD^l37H@o&UV+_%$Gv<2oQ1oEA=j_$t z#%Pk~CwSgzb-^$Ac?_cKN?Al#rw634Zxm=^X&){4fh$wI+d7Kv zQpnT@c{y;;drSBfHfHI}@Xj2usNlDU|M4>EAf-jgvGc60pUM{gcxNi+>&A;ljoBBo zTK0jxG>KZD&fi6~cb3dG)RtVMRcVf$VAyvCs(hc?oU#R8A4s-EW7q*d^H>os4VJY* zjTf(-AmRAl!>Mzd>5Yf}3qzd9!g0SjV@LT~#U@@(8}MP8QG=cTr|$hILViX6)eSJX z*wJDjovy4q{fyH^(J5o`eEg)rKHDb-w9s!gfXhE5NgsyudEoeL_O@nHA;tDzlHr*E zl7mSGaF8Us$W7nSB$(wD4>lg15n`fhRu*onu+We7Yc*fLatqy+SUZqjeA54OWv@+f zpLZYr-6b>T&OMX_{+e`$kp8LIy;9a!V#&8$oIGteu?A^0T53YvTDFlo1~7>1oMSY@ znK2M=I*&8poJf6rdH}mv`VkN0tp>(fTb2>3QB4Q27fg<9uJj;gz&nzJ<~v`eYi&ra zNIPFIWg2GN5#FE5GtoJStJsSC;M-dvHZm=&%W52$_T6VY-KpfMC+U&%XJXJ3yZE0?A^B^FY%40(reF*`sC*Dx1K?)cIy#%d7C-=u!!>BJ_OCDn=x zscve@s%8)7grJ$5Op$yKW@&|JZ?{AQuLbCePoreSpTCNaLA!!MMgGelW*0gY*SSQN z!i#IlAeJkT;OD^-pZ=yUTg%S4kS3o1mF(laKxZjLML|f|OA3}e;aF~3 zK&`BOY98wsUa9K9V{vGFS(B?t*5VR+kG-5030QRY+bp|t`t^*1V{{O8+WF|x{0F$p zt>kcs8m;szEylQEZx$P?hx@A?b-R-j-XJC6r;~`qEGZ-M)#~JGcGbXuSA0z=q(4w+@EZ~Q- z!|moc%9&%?=F10|Yu7gN33a1tPu3zM?)hbOzs^C7azR)Vl@Eo^TqeuDm=u#j0Y|VC z5*P~~=-IU$Zf~~ilwR!hPIl$fT0x@nqfAxksRnd8KTzj@PY~thOxks|Whj%CFR(dj zg4v{AsGXgriUs5ooZ0vFnBPYm?*^N%y#gWev)IlIF{I@-NaHVb!qg>>H~KzMe44%Z zL3e$qQpB(!cpm0^Yz*Rll*tTOoV4kELsj`Dk3KGPqn?xrm8NmHy5~A#IQ5U)aF=x8 zGnCLL#Z|Qa_~DkZL4FH9n!#%nT@IfIRe|^L(KP zdrU~C8-V!;ND}{W@6T1=0|G1GDqvVE%gCEWG@RdjUyZu5d({sR0B%JuFGw1_!#Cu!TRS%gtVkgocr-9q#mVm>MpPl&4;ET)TzQfl65? zZi?QLhl|AXg>pLhb2tnrGDoQ&nh%`p4gBXayN(W?GD3-r8 zMOWaYErIwfOG++iHEMtW&Vj5)VR zq5um8n@*q)=k2?7qdGBa*5b{-GW=&Rg&LDJe0PhGvESmxdT~j;t2uf)9nfAZoX$%` zH($kFf3Tz)NIqIf;uccZbixDUmIBr@;f;ojVzuP#@fOv{C zy&zi1dmVmfK6uIqe-xnb%OYb2H#wVW5wI&kcXXtpPCO94L?q5;0yvX{DhyT%)<-!xyIEYx}Qo{%YR z44Aep(ofe7imm~AjGxc1JDwq4v2Ee@y(RP}Cu7iap9D;&*Rx#ZAYs^WWM!W&M*FSg z1dyvXEnPtn)XV*j+5IpCL{xdRhC%p$%5dz6)Z)E8p2teh{-r_Q6)EVuTo}g-UF<`z zPVkhNVR`?~CvKKDFg!Ki)P{1bqBl`rV3zJpbNksDv$&yKLc(=UFOs6zWQMds1t<5V zA6+Apmdfjr+Dj+9{*xw`qmnLgMHqQpwOr>^n$iCaRHpT2RY8S5mo&^WVRAL zM&%EVx+=w-(MhhCI(COFu+o7$bxsK0J~Pl+y{bllqOfIs=TUuvR}Iv1ZRZ=Ugir4g zgtEg@Nj~b5%W1zj{#-Ue$|y*O7so};HT05vCX}j!$BO=$W?}YkWAKghIY2!qev|$c z6PGpr=9|0kuIA7JGQPwQ?EQn+%rrVk`g#7**=Ex`CkLPr87;M>e9M-B;7p#1DLk@x zdZLVF^Spk*!>(6fzRQ|Nvqehr$U5p%psNiUxSbcdnLb9k&td&0w23Y3TmrAmovDY^ z)eB*STG)a9-zx(NOI>!kw&1+PxL-a^;w z_A=_$f9Bk=lmcWp44aIuaIJc&_|#r2AB${J6Ab_0lU2=${OyMn?n>gnHs0zRL-$4mfB?uv-hq z9uP!#Ogm$#@e*LGD}>ah_ht4Ux_t|_Jj#Q$jSm@d&wUg&`1_8Hm8$0MUnWcPTm$r!Wj4s{}% zC<_uV35giTXFkE^67B7;<~1Q|?{A$bnx+l$i^ zg^T!DCrU>b7aPs+_Dq`%Vp+QmJZj>qw}vK*9cheQ0k`5 z4)Z7;K9_G8ubRNP4rALO)F^bnpEBOKdHecK!XX=_=}_tM`O9xuBj~}W{ZGN#NX3=p zb*pCOnGc4L>2;6mTb3v)3^N&Eoie0FuZ&qs8zyjKd3)9Ynsoo4LICo{k5q&~QFW{z7={;FHI-!ms$JDH^z=NgU4>lt~s6 zuzLUE`C8>x2>WY{W$C~xVsiHRg4hPfVX>#y_IdRi!?@6S%~YjAtM1mM~5u+7x|icY&ls%dw%|1q2W z;63}n!J6)rfYG1Tp?vxRjE(xJUD2EFk;@%YvMu+e!rb!g%+|Q#z+}|Q*qW%ncwXJV z83Q1nI$=YenG&;}bTYaU9G!n^&&QM{d9s)91MC1unRyu|C}7UXSkUsRVPUp)(*l#RW zBM73Z(^=g{n#?KoN9Gtc*RUN4aoA$zLb>r-cvo1Uz;@hWoQW^INpASGZKnnQfcfY# zR01|aDn(cD?J9aWPW{d|^TT;sb`Swq7(ijZE*`*=$*`8>#esQq`7z7P?k7CR!W^vB zFMwL}BP1wnr%FKE#28cnNlPA6BjJG!7WgqVz3P5dMQTjQ%9RnBZ%II$3#^U!*Op21 z-cgBY6;89U?%Np&4cKJUWmgr0p`S7h#LSimtE%?>I8UVsR;D7sBO$X}}z8_Kk*t!m(}Wfs6l7xNe5xukTTED=c;< zPsB6+nra^!bM4(I%(`S$+O(|sbH~^l%E?8_$Rm8_8E$SMsY$Vx=W}~Yd<4mn5ewfH zN=w8fs867HZm;~f(cm_?W1e3vVM6R+blj+<Rc9V%}M}Wz~4Ho$R%Y z5N-j*^Cds`hc3NU0^1r#=Y42sv|c83ojbGQ*wjC|zNtfWT*K*%DxXxmHn%v52E+K{CTW0^U?7AmRfs8z59$IIt-_IjNe^?ADM9syLXw{2pb6eC7_d! zC8!1~1z&P>%01B?c#+`6_!(O^(^g`hw6VXmAMus10>(e#2e)o_M4vT&y5CN4sn62+ zCocZ))|w&2m*N33W6fo!kIv+By>Q0Mq#OU<5FwxWNyv38nEarI{q1dVJ%2@BXPr{x zj_a-ZCS(%NPpP&YGWXq2h3}pH*j0Q&+eQ>jH;=_?Jzg4xwS)tF~>&YK~~JWn#=w|zpFG{b*G z9U>k%QA>!e7fIgpR$``^%(5@J@lSQfBMP}E&80N0LvB~zddAm%{7o{;Tk;vNC?(ob zHD?s9oZJ{vmBQKFseO~%)%>Z29rbhHiKc1^KddmhR=5_>2&qi&1+8+%JE_iFzus;1 zKRIm?L1FNNnJNMkDH+cY63VLdZ3KvO!KBA+BTLedzkeo=A30eeXupa5GiJy>BTKtv znXiwMxOhTC2`O?mue|bwIx(@?iIH&*uBq|(s_&#joyz-lD*!(y*?4o)wuVN+N}ur4 z^G6k#0CO)?&{Dr_afl+igpsinr%S3k(wrP2EZxw@-4K=8pq_p5B-=!EO@Q-L4PYV!AxgU81!$WLNWjfJA`eli&~$Gt2Q3LBzpvRNDMt2NvzsCG5?)=MQ1el}98iS)-al(E=_h#CNdbuHogZVr zxT+`+ZD~=)tbA2s{_l~vM7~oTUiN=(YH{?No^_#+$3gbq6HA?%DZ#Tc^51@csP!x4 zQX&n^0ZDOx{%?qn!l%ew0yq7mL}T%>%73~r#7eH7&pr0cJj;s9%0wx0(mc&retWfdd`hV*Ut$;eb{4<#BX=s1~w3nS%+NB1b|zid7rujh1r#`A{^ zI!1oE_2`h-V*k_eK}MFZ{$&)~gD1jC{Qo{RL`Uv-dya1Nf&RaPSv{ihAxw`oc3*Z^ z52ACh*Q@%iW_}65(04-j>ZRFqE&d=DAA~5Ibb{SWrT#wu!`a{b{Y|2DNRHF%zt|M7 z3VUbR`AUoKy%rOz5OYFQ)3byW6x_F5`ts!qSz+xDbRk7&r_Q~GGS4j`?+N&=Mw6t@ z^HoQm;dr473Ulrbw#y|i{^I~k2v=x3o4^-^0un|%UvN3{kC^>~6#s*w49Ni%37`i0 zI4yzl$A7gt5pV*8!r7QtD=yPDvc~Y^eJ|#T{d0PbN!T`ND}GH0cK$QpG#e@}Hq(fw zfnj3Vy?+igb(bHB$-g;$zuexl)Kl#ueH`{^JOatcxb*LSUbX!0+0dYW!tn6eQCXtv zMN{DX)9)Gxv?F#@_n!V}Qp+V#9*S}8jFO#55>CmY8e0zw;F5i_{QifjX|-93GxBVF z^F;YHnAZI8y4j%;i2BY;jsI9L9rBnm5`oV5S`j9zH@8VD{r@whqpFU=kS+1L)!bhNbx zQ4L>B9V{Ql1)DEV`i;F8SDAV&ZS;kiOMz|AJK%h*ovVzmvrF^7l__lPT!(S8;N+>d z#oPKUmYH|)*|sRzFM)jqeATYNhvkw{8r*1Eq%5B-5aHT5XHNnO;Y;x`r_+NHF%iQi zxZEtkoQB`Rqjopr5%&pZd#1NugWSs({Wv@FKaTxj-6P!_{Grsd3BT%=C0?sWzotfvExtyPVqe*?G65g+K(WG@Y$(J!`3apslpq(Y&e-OL0D+c1nm78omC)r_xJJa z=wH!$zP!S^{%UbeoQXH-AxdI%kH>@ln7FUNw+rQ6U2Tsxg1a_HvOIwX_!{FOb3(hB zj7(u%F_@`OEzXQ{`-)9C7=QdwZ>U>bqydOfh2_al6XVESJeS^jpMMRH!Wk+`ZEE|| z+7Z?mu|U#}T%61<&;A)@zFIWLZhpUtr?6{&Y^TDLV6r5wD6S-K^ZP5T+zAq>_`V9| zrEiPSMfm1$7$vw%x=mwC5v5$4{U_gwTrYvYz~#&6+pfXE^W#eS4)fuusnBx7puu7P zi1#Z6gQCEMAg9vQtYPXjCd(_jqSIql&^{^|J>jB?$CMf;(VTm$|G-?~&O2{P zO3GtJ6RI7uqN#jP!!zxXnc)aVOPhw4#nvG2oZ~oc@W@nq_rh75`+=lni}lwdolf?c z#~#~ETHxue_g0R*2XrMA_X@qM@9zHa{TevzJiy*y@0{H9n&DkD}{wJr_ZR#wpz{QG*1_n|c^dioE4w3r}7>pOy9A9#&9%p#A}N1X!M z`sV6Y7=S{gmi%oU!iR)~jX)*U^zI!qDKpmIk#32ZDb&jHsHat*wG{Y}W{dYx5n+Zi zc#{U2_0X{u+(feFB`J@Bo!Oi^EmMSl6QoN^a=v|gfg--#N*mR@+&qA#mpp~osm%4X znh)G&nzm`+dHYUrTQfbk4UrIv@|iTx%Ez6vfEyfp12t&MfpyF$C3q4?1+~yPKDaq|GuGDpo6=%F~m*mcECCbV>FKc_2Z zSJJ}xPUOT|jgQ+1L;7BP3et%DLQrNtVwOA`wA@i|>z7jAE!|(T#}QtXm+!HHO*?l_ z|I=JmvAuAbnq^>FuFU*ans6apEnJFfyhOEbuA~hoM0tb4`Q_ufUwnnHNV=XB%<8mW zYMZ)zq*@Y5&!jF2jGaFX2HEjcQgiHlYy zF%gv`dcAnH@$9Zw9PbNtD*Kb~l^-^9m=N0^uS1CS2;*SdGwVvXn84b}0YNfo} zXHTsTyHvpL%0v5xjS%lKCIXYLdk2qxKOU-|HM=c4RweN$u{05OVzVxU6tll%%Gqtd z6)7)N$IlcIuf_O_gLlpBv7rWb0>sA(`#4rl=wxRArHAh(A-p{!`$B~nW^U8!IweR+ zAUUUnX|O%5m}Nb#mCJ#Obm$xtZaiJn(bZ!_Enue=3P3eNLeF+a&R%L%ql!>{7=-bf z(w+S}S=~cz!z+C{9sk+*bYg%_E=Xea@Y?;HV@UB?tei zQ%x&)Qa6G_W0of?wB@HamWG$LWh(aa{t}h*rL36R!!9{r(&}cMASv>SZp$q*j3*e> zr6CC#?rIww#Xm0~yMZt2Eag9l2B2qWl)Fgr(fYuq0QcY+9!8f>xYJVZVN}^!pPvu zrr@OCPvBEbqT^7Yev}yYkZ=}5&9g}E9KtRy@Fcbwq<_-QmH(iK(6d-|$CMm(_dxJC z`D_?7aCcs)s?iFGhvQfEv z8w??xqz@~+JsK}^ZX)Q&Ubu(cBAlrEs>N_W?_GR96@+(} zuenQ`MCmJGl!bG%(nttRot>hkRDV1(Dbxb)(*3gcM=_Yzl{G_61NyY=HD z3UAKfg)*=fl+&{PGS4$%Qd#7s+UVhPG)@&qPA~?VHOfEtH8K!RA*I=B%6&#d*cAA= zI4<^aOqgw)smrWW7)j6wMq8ejyq|!~du#n3ZLuk-ZM%-FHZq;Q#M0rn$qF8F!7#?qI{ZoHzs^Gle>e7LnwNkfQJ#_} z$%1gGGj%d0z-oGKlP>`IG=apJQ`FG2(n0J&Axaq$2I0OS<07xOLb?uYQ7v*EfG`}s zd42Tq>zHuvPt_>Ghwa4-NQ0EJ^L|fqlxvFIoQZtcZ}uA7upn@m-8GNwr>*PUK&joo z2-1t5lOJ*HWhpXxO`z+*eh`)4vITEun;uKVL#@FEhfNPMS0;Km&aAczt4P(zsQgHy zHCsbQ+UE(`wU(nd+7E&>QSRfZMGvVARy^W4BctY|Xr)j%>$35L;7~5$grP4DsZT&}2^%TH<0)I!|mW-nFa@t~D?3j^I zCE}Lh(4JDfp`bvJlzbYs8;u}Wn}EfiOzGmauF4HAMS+kwe7BL9w#&MUiY5MSI-myM zZ=AcTK+ofVIn4{7@}z(SkC40X1MCGIZ3Pj{_E>Ea8~*R_KA7aQj{S_q-RWj%WHB4xsrb#y+gB$I3Q$i|QGC<-zSUU2+_GEAY5p!ZO`QhBs_0et???Ij z`I?8!?gJVa&V^-p=QoLpIRfVM8$i*IfOa!(bOvPTA%6%}4 zR1yxs`Z81BU)@rh#8}MpEuoz%4F%<#xVyERGg&B-3>5R)(kgaPlZKK|7`Rs znx{<&@&i?1V=CK*7}eXK-$iDuj(1kun3IF~jOvGud=m@gj(8G1F`Vi6kP`lRHCGc3 z6c5IJK;b%;W-OExg0T}yr|EO$(?IB(@bvIog>^(z=*DS_Ak4V|IO(m7*_OE%+Zg`u4;Pg9JU4;LLBXCn}v58&98Cq z4m4r58qP`jxcesfBe!db`J_>Hd~#_e7`H|S1I!2y@`7hOtEtwa5T#TnYM`&+gsGWm z_Ra)E%9HUy-+ixIBYb(28|YI+C1seS>H+bx|s66d;stw^2aUpz@BFqGMa_Q zR1MIyM^^+lc3FHkRoRsRXKAqQ$NV+!{6SX z7dqj)h*eFgs59!{xlgJ#ol0YGQl=Gcs#jYQT39(dF|K`YwxHAqytSH(n#72GdBxMa zQi)x9V6Q+NqbmQud;v9Dk_CSEuYLEv;3`Qe`tWb&#=}NTDVaf4D;6WT(Aip0sB6bT znCO|@$02;t6Y)c7ggi^nSSB7Fdsl0ku1WZd@=uB6Pj9OMb@tWk4I&&5om}_tB`bJc zBD_GMg&`*fgr)|4EBuAFmA`2vgZTTkvk(iv*HM3_(&tOyQ)QOgC4Fbus~I?nf#76R zFICMr)f?pRHn`_NKMajBujL7Oc=x{9N4qo&6YhgTMZz5HyucqvKRLWlQw4l^f35E^ zCC8Ss6{y!k%V}%3GeQt_=Sv*xf+Ln4GD4zj{W??BA>N*z-1B_Z@ZRE+so%U+lkk@Q z+Z73Mx2#4+3LDdC<)*#1UU_hy_`+r|Y^H5!E5#7Arw_?jp=ZOAUC{G@`6P$Ej*f?? z{f=v-qFF)9iR+e)#;CX1w?)53W|*-2f09ml+B*G8)9q@LMh1NH`d_&y@p{V#PXUX^f}ia&8jl)fQ9Roge(o&@aX6Wxlkrj#jQl$XQsP@3%!59^cHL zBf-h(%K4@7#Z28aD#AFKnX(q*<>f9Tru{{s&j!q&c$O|j`4|LEi<}+esn=N^q9o&< zTqY7%#0rvMC_=u8Vb^ErJt)CLrydyWV9w2KZ1zAN>!2P$aYc(nU$&RkOZ&78WSW88 z&4?9Tpk6bGr!1(G<)RfsiD}TM@(DN9-Q^y3=R!idziAxoMW4VSCaL6KmhNDvHd966C=n)OLeH0kUe|J zSTz8gu9{|m_OaJv%X!9$3ho@?S1jX~5=;=?HWD4H%)4y0m>?J0GKSw9ft^-N?;X+d zG;@6x9p@K9Y$ltpdnL+-Llf`m+En#F7dJuq1#AxVVAJs0*siktMY$kOQUHu3t z0_8l_m?;k}1n8(UaVD_YU1m`dR7$}MCg?9d4_hfS(|zUQ?T&YBj=(8h^up+;P<}_| z)cp2CYOF;A4L=Xd6fJv+XekLm)^Di`FoR=P@+>tgh9gD`Q zvz~BPFLBy-s>rs2Vh81=Dy}$A$TAa%&F!|1PT)@rV=XN&%Fi~`S$JJmA@@A$IyL zuUF|kLp{Bu4o>@fZ{duV0HVseb)9mZZ~QZ>3Bm2nUn;B>r6DzMFm~{=wQP6OyhR0A zR;CRJgsSvUopr+zdE2aR@8;V%v;=+9eEWtShBW>=rk#lm2Pd1qpm=wLAXA^SHyuzX zp49afQ_ub;pl>T*0q-Jm4ew6}o4y~$K^bp)0W4(xgHtZ1To2o~m%D~D6tFV)a(-Q} zo1<^jWa*DCQ!&AKR-k7%sz`r>t{8S=gxKNhPgLkngd7m2yA78wllsL0buG&2T5Dg( zSm-P~=1_ryQo5z>oG-im@igClNhv#Q_IwpESU(jsP~laIQwe}CyMtS`Q9N9t;jB)^ zBX>#6gZJO`u;Pu7C)hkO$bHfiW@4;gQ5exNQ&XrTTL$xNWD7Zs=@U`jjsk$hIR z{?YA$o2((7U{vRv5mPKtzIL*vsnubgd%9ijc)QCO^wPTO>}K?A1@T#SW%Z#nN&(aq_>YV8(MzB`Bj z#VJf;Q(qjMr}R|#v05CyqTEFrPfEHuB0#a; z=W(9Oi6=}Xsmai(@f>>-G51yEWGN^jTp@7-9Hy*IheI6!Zclwd#pYf(SD zJ#bi(H|097b7u}_#fR$VXD14cvi zV|$Dp>0tXTP}5`l)&YJrWC;6TM0E`4EZd}Aqv)X+S&%1&GZ8s%UT$*NDGd^=NRu2L zRuKeLT5_U!xPGuJ`PC#ceQ#nf3B0#MPE>?dy!@;G>g=On0&v~q=1_HwYyXHAz%+ch zO6B=Fa}=+YP>yNA47`ZuqF?%}@cilFTHf+m+^y}mCV4$9+bZZ`B4=_hBkPq?sm6$m z65yj;aG&qrM1#fc(53e#MG@$TlchQ4FE>Z4IGGQo#-@BvCR2qu-cHg7MuC3}lD`Qg z5j-2R)aTdem5(t-)#*nJEiN;`8fKq^gYFk|d6R#?E-$8+?7)l73DJMFN2=byt;E+J zKM&9JL||=E0Rnu3&Kt<;1nQPCAOEjL3BWmD8rpi906pyF0$$TxO?;M~dbcLw=xxQn zku@z4F(0?YcNV7M4`RjSf3(Jsk)4nC{IFh6#DOPA)lgai-`E=M8c~5Bd@c_fd*c+M zGY%eU@AE=!i{{nj(4%KCh#$pB?F{pVJt6*=D%mhW_dTiwE`p?TdH+`F$~eAk0@%FA zxOyAcVInXv#ZLi?+}vc&V@5k71~Z+VU;Se88gYu+PnG#p(Gp^RNzLNpu_^fb`=8Y= z<=h~HS1uYZGhljePwnUYn*#0=G!cBNDn`vOS7CgOLJDyC-W_&y9lo8tigJQrysm``0LSSBzZ4 zO%f2Q0{^+k;)XuRLYfir1OK9@SLnqj>=z1#s$N10P1Y4z%=K52%Emb%7Zl4QKUdP< z>h2P_-crm0KD2}r42553uC#>!xR`n0Y}oKYxt9sT)LS*cKQO|u?Y=I5~(J46WS z>Z^3?pfDO0N}3n%g3)H~_Ub>#6i{hj*-xM;Tv`^v=enN}3-E`d@2+$Xi9uF#xy9#< zAXlcm)|*FY#$}ivGSzSiiuNsT{hOVU@$rWR>K$qw?|~-H5#iwv>)%jl#z5(rl%J@K73jsx6z#UhH$cH>*(*nz#qa;d zr*QIuJhwdOzZx!HNc`a>%f1E20}^|F1p^cKuoID{U|Zr$=X>eY(Fh0brm8 z-2evqLXXTCzQ;tR5=!Bb9Y5aLDbHk_tVFQw2I2P-p7es{cb&oOY4((>j%U^}EG>Ia zz5AlKe=IJhenc(dn<&?bZcbh9lJj-c9s%9G#4*ky#3d2iXzripVnPb!uVPl9oxA=8 zMDIZr#!g!6^#&AIA>41w&M-i{N$AqLQs+6QLB$77lh)H7$#ctT&Kw+0tz3l5?^rN^ zPO1U^{+>stXLyKxFWh`t%X*;}0bO`54^;dA4gv z{kCkA)CR3s0lB;DoLLEWC3aF^jjtj0h?G9J$O(!HB~>yMRL7{V?p;9_VKeCt=_p2a zF-3HBbssI6t~o3$z~)4VPa3_`X-{G%L8t$A1B8AMNKi9TywSS)THtR|6LkocI!1-y z^$s*3UNEZi4zyMoM%Gm1+!&n5;9Ft^u&)!s!pU)QPv73Du&ft#o5ZQfgLv*Y!QL)b z{Q4nvPATO4B94>_@hZ+ep*(8YDP7CM?W22lVLebHQ#|=*F|V)JOK2{%6lF1<2U{w& z8bDf)SlT#PNOd%PaVug!DgMcE8n{EJj5{aD@*$vu^Nx`5$!0NEV;sCSn-91fk|r^k z-)$y8AN-TJH-KUrWt{`%5_2_t-zKMSVNJ}_U$&mBQJuX2p>F)k@)iMjc}jGY$X_?~ ziJQGoJ7@(gz=k5abEQW@_mzHsU_rCqx`%20L0iZCnZxxK>{OvHw6zids6gLj{_GX# z;h*wEj!3O*i_#?#WqgYzC!5FT59igFB~v3KbT>X9U6B-m-upq1rT2jAB?oO@&@^^y zq*1#UcPNYTiIhI}xZChv)$V-`jKX)t#`;{?ivxWH0#-s@$r85$|L|35e!wLV$ChuqlPWwlS7G_u~*b*d&8F z>U#SHHa$T}MYNhK_=ZO2Jgllh{dEGyK2hNwnHJ9H)F2V`_q6UC4^LP#)aM@vXa*S%$Kt1fDvw9|)A zb*@{X{&!Xeif`k*Np`Lj-HupgMyq{~N9%HRQfMoD!rB-v(CK+oeUpu2M-NeCoBFf? z>4|ytCG;KNs~fkeVK!^r{Ia*tk5mM6wQiJKSXr!!C74)8GlgsA+Ym(C ztCzlAWQDi$9A8-SolLr^l3Ci%N}GX4VsSNO$g@4BbB}!Q%q*sL?1?8HEfp?|KuGXV z><;g0ru2*P?vdksJ9LNWd|bappk*c`CE>(;cq9}Aw$7a61*9KIG68frdeo-W%3r8$ z=J}Cgq*t`ng0@%7CgEw1$-OLw%D|lyQt-d%NPuapw*QK|IpKBWmLPKd$xKsBOR0J(agfrHYcyd{y)&qyGdW6m z`mYm}l8pW0h*}pGh)^d{)w|jR?t$V%J|K}dIr=CNHBDyb~vE!6S8v9s$Fn)6@MtU;h4?+EG!if{wX=fLo_~cl>xVVOO!ry0m%V{ zsoKf*FXBkT*&t33+qSz}msF~W(VGfsyRf`>aULHJn?u*+ZZ-ZWxL@{L&&8XQyUip_ zbScw?DuM5dhZ*|rUlZgb%D~Bt-;69feZzL677FP1kR=*9kvDc4FyU7};^WxVdOA{0 zyn9nGRW3s!s#!k)j_E?2>$BrtVHuLq4{V-wsiZmsGKuiOdcaucVTMsln56XND zekM580IeN@kl4F)lY~=R@ImLlW8C0F$CEZfkYkMAkWb{5Q#M}fF%&8*A?OXqTYo~X z6+>CPG#>7LuiN|I)O_^m#W9>4#jyE|1Qfo_ZnYZH#s{S<6DMiK#9HG*mjfmTxD;)habG4SoP1uMh!AYSU*2 ztS0i-V}>${B5RqWGVjfv*|u);ueV=2NKD_M1d5AqKh|NlNA$yon3I(kUNaXqwWyUG^uu zeE+=AnJmpU_lup>y37}lXEtAmi;x@h73%AAhEWB3RFAy>`bZP}S@4GAD=7PkL6|Iw zKf}SgBAs4|W{&7vx71ZgmxpoGQj^C<*LY=1&*H>~uojDcVb8@==OrV*Y+damRZ;XA zHzx#}L2W19wSkkPQ*}&n)uya3Q9=ix)yV4{-iJUSRq}@%JzeU0Wd||Qqp%i3gztkG zl;i%hfmzrm*gKz7b)~$!{xjl&Du&-bm(v@%G{{bg&D>co#k-Jv) z!C;sXcrPs8>i?SrVE<_bJHeGHbF<$(8epPzhyJYlPo)37h=14NEjkM zAhHD<+=&S;oQW;O)x^O{pCrt^?%MUy&5iHobzjL02n`!^$=yix3$#1QueE{n0eYJ^ zC;kNYk;Eo;PS(G57LUWJnub&30i)7e>t~+78qD8pNYCdNee#cQ&cj^nH!x?C)Y9<88tt%;`DuYurB$tlJxj0A^ZbwB4X6gS$aXZK z8c8>*A^%D|tXW}_)n5KekHc_Y9FuzbB;3spOa1lnTF^jI!g-4Wu=Gs%*&lBvFMtC$ zk)Ya6maF~ri0H!(jr%xh4yT|JJ1si|dOB7Q1w`P18!YvWP&{nOqg zn_qU`^&+L{Va(v~rup_yt;#bUM*Z&_ge-st?*(!N1&f-$uZO1^`w27Yp-d*m%^W$= zyyvaxD-iv1dCa^i>DWKJ z>5$m7{^K#CI&b~Z7=d)}T59WxU{HwPLO&l%X#kEYTf}Z$=HY8&!Vi3C1>9o@l3L*L zcA>}y=owgR0A{w8RhCa@h_cSEo#RDXmOAP4B&jbVotCAYL`)qtg9>Unux?fXfxRC9 zuXb4f0aLEqd)P95=N@|%)kN@2%WvbCykfrwAR}R$`sNm=j|pN$WJv^QJT`~hzEEu) z_@2$Up4Il1C+k`B{wfw)nsG7@revJVhVrD%(Z?qLlX!;9z5YpDe}~rKnUtN4)N) z!lRHZ)MJQ+OXKn3gstHcZX9LRUqXwpa`9k=EMBhsd1LSVRf3tpk(1WBAJ4W;6SMC= zhh79LIb~?*FI3e0WMQ(vvX@Pyi=o~w*#~F}QLOVoOT_zb1WF+qk3k`ZmCbKyrh0P) zUiw2+JWcf_h43K8h6{)>Yv$J1FI_s(91aNUS3m0qY5vInUsXHSeju%HRKx1(>^WWa zFja3?*UqpDogEo8cGmFZ{llN5vth=xvRPSKbsPOup69CiCG^R$0jf4)zp|kvrY*|1 z40b4=u|LxT_YBLf$Rcpw%_k=%DQC_E#}V}dq%O24M=1ApH&GF#6=T!ycg>^ODGq(b z&Wy@z>d!2^O)vuEe=m7eI^x_8*h18{%Ujvxq%HAuI9x=o7KFqKxvlZIh}A7XCwrpV zpgtZI!BPi6X=m5UiiLhBr9N+j!W#iT@E9uO&>#9B%A>$b3LSt+#j`7XQX*9vPNKgv8WmU^kNH`!~ZYB^{&+w3SlPf+BgSq)M- zl@J5Xoy5$b3M{F0zuB)|=qw;UtPYmU6wlgdB3uwB+l3wy!5$L;WQz)hRavf=z^S}g z1_Lr78==3R3xL_R4x$z6erXnlDOSI*sd{k%Wz?KEV)Al84MTU_SIQa_F!G?>gUFrt zt4XLSa?p>}7Vc^+Th0$A-4K>{t4Z}`hX}W@3;iuK4_x`lG3YaI7UgQgw0m8-h4qVP zv#NVun!Fm$yBrAyyZc#u$$n+NeuvkIUIX+!BiF~@#5fs&5EwZ)sCxJav0S#%f>Itc zq4~mP-!BEVqeRHLwucos^4$hl-nB(jQR-J#&C@Q`3v%tvGYu%y_e2-wZHlR_NfjFR z#273=CrvNNGgfa!84VC&BQFkDduDGRly*(>&HXxFccgGWYmBVmMR;0 z%SMg0t^@t^P{D1hhGDYmHCSy0?xU~c=M-)8^NAy-@WeXc#`uqFE5>3c-9e?e2eTeW$xeqekoY zqcbn1%l_w>)||~TFhAHAm<%I&2w>Ff+h$ofrFOJY1>xsHQJI~$M@xjUJHooSiAxbX z3IOC1p5(#V>s#NWp}&SDO5Lt909=MuUOO+wqHo~78F(p_Ay=ERnr%fp$c7F8;S6*I zQ0`Jf-{&8d0tTA!hzp$t_B4Xwvei+I54~G~t8p5)!^j54(&+Jr*bd3KT-xq>6-H~; zDO+52i+HT=hS1VqGPF43$Bg8jM9rQ;Q^EMpa)WE{Q(L@A zitR$&U~f!&^DVbpLDKh*qb}0$aq02iy|=uFwT(Ee&SH@$Q#G^X6sWp?)KqX(9-}dKo@zP3+!awrnCYm^dQ1-Z87u?Vd z9v1t?g0XxIx;CvnkeUDQpTTvpI`I4sQQHCD1IRqF*5|u~zev54HCXetso1aw`h!_wikdmgcS5_FZbWmp=U)s-%}`Cob*o9nHG7s#D0TujVA zci$ng`}A(W4z z0v9Fm%~XdTNXjvy=hGX4pXJY&mn2%RxA{(6C*afw_in^sy`L!!YBtMRasB=Y$0Lv( zIL7(VC6!y-^O6JL2?7R>9nHK){EMnpUUL7005U%BiXchSTm>R1>ISR<)MNy8IR#R1X!lDW_MWB z4?Cq&=CL^m?wCaT3|gji)4J#ru(1#W4PY0H%nB!GxYJ$gWLMgvSvN)2v?8lPbnP(e zb0v}xvZ=N+b{xL#QtYEUXdcYKG8suO>l&{4NC%T3`oyD(yv}Cy(2pyP3#EbkGtAk) z?p+KknXGYqbEr1>=E3_}xE+@$6_P;VYJzM516>K~l?@Me+&sN_scG{D+*}GYlO*5+ z)s$l@$+fbEn>%plDLk?*1`A*ZC_KdV933gYFP{5`z&6F%J1BDQN5TOth)!c`up#=qvs>W@ zzW07~df6be1(a+&oqIjo?%EROHstAS03T~MF4k02cwDg~1uiSidcEe5%9 zYhN!nt-3sH8bonmmwbr1Bv$gIM&$|EJQBHb>U%lrP`wT26Fk0LXdGuXbj~`BbhacE zdu8LbFM#hrs@kq{eiFv$GVev)rE73P)n#IU4844EAzAOeQc_9JH)k8-(fDE}>YaB& zDc9NIBL2*4B}4$eC(l%ZYr#qJW>$gRE{hiHez4=X9_;wzh0&S@Rp?JtZ*RaL$217) zZ2i7C-Da@ka@t#L_lK_YWT038Zw-vu?7dsXvPfT8r2wOy&Zu$hXhnNU^nBy-0RlPO zUNctgtl!qLl7D-1C$YDiMVN7CT7%Kct3!{@z=mrb-GHvzIXiHP+w$AR0=MMLl>thXi&F!Ar}3XrT^yH75ZG}5c_^wyjG-3s zrU2!3cz@*4>62)64#)wJ?z22>BB9E5J2^|P6P~o|QR?cs+?PLGNwPtjWOF-(;f-+` zG+6SVGPvLh=kFa9AGpAt&RNfUUve9ig=Ir+kO!5F&_qs^sHqrx$j>u>LdzEiI+ zxsq(ibCOF|0SD*dSvrn2wcx&KuciEgWL>^6iFei-ZdA6S7k(^Q3c18P><*TNUP#P! zMB`yc+vWQVWDu3XF4A3l+7EsTR{^KTXRJnzW>nxz^qVqlMI^plR zavsh2o48^A;vS+NZB~v0vT$HmLbx z$~@?}o{#JCPiWD|W&=bD>8#kwCCAbp_*wqVpA_R@6^s|+J`|~(YIiNaxU0Th2P@A) z`Nl8$<2)ec$8#3R;Qq<5OTMi?+7<<;Cu`pQ_3KG6u|}IYsR%4zg zNK4NpeoVXbo%&_%Nbe`}Vw!fOh>$U#s*AWVB-sZL9n%?VSL(7Ls2>!V` zcGm2nXuzCo4$-=Bt7+u#9x-oE=pjYi!v+hRV!{2#;8hmoQt0}!gP72yqi~1dYCW`- zbFCK)X5fo(3dEUkfzHKwLX)r}Vv-z<4@-Wy{IN_*5cT#r+%RcW>=#9)uY6$=tu&h< z7lmi6bOGhGvX+yPx(93Hf4(Ust%SUYaOvy)Sof_bn~<%}UbvkpGh*AiD#PsPXY%RM zO2jzC3O<`Wv!BfoP^GDRwzYzd^aQQWVNohuUyg~;oW!%RKNt26pE(Vu1xzvHzgAS^DuoI=OU}fO~Rj4qloXgR1md?CLe}VahU4tFC zpnk3IUZHM)g1(1_wIJ;n(o*=nt2ZJE(j{5zMRqt_VWsfeZ|LQ37TX`ACavw+pvPk* ziHJi6tEd2)XAd`bN&mb?epN6qS+y)F&Nvu&%iH+eY2S+yfwJ_vs3$;Jg|&drj&0_C z%pjU1X#$;lkWbvH4jiS&t8fqN5x)b1)BJ5aw*6J65StBI%?S4SaJQvowafcfGFf$= zLR`J$HMMRHySudL)8T_}v9Zx;s4@JS$mniKlx{PHF?NW8JoJ>P3xn?YsH;$W9!~)A z|D%JtQkC3S!xB5;9O!7JuS-b4&sP7iv~2Tpaq02(Y0zyF%Ke<)k$>#%z0DUxfcUOh z3EoAb#i)P#vo3o~spH9w3D8hu!b@?xz64JX;>8;40!76 zCk1o_A$g$_?_l9!^JHm0qn(|qO?T^@MM`S7U=S;V0U?hNq{idA6ECw;Y;x)o>#s;Q z(;2f}`FTd~hJf!fPTgZd^kd#u!A*M|mzD6wWXA8(aE!EoDgu5u#&ef2Hu_z8ulPi> z0}H}*f~u8ZK=c%!o~x0Zx^;Ygp*F zbkfnT`H@=Xi^O_C|H=Kjb<$uY<+)woarJy>Et2ZwAj0yakuSRoshW3q_z>6PqnKLy z7WpPWw#b@4ImD;Q#$bSLENFtGrXLyVe(nqB8l~+KJYei0JIBp=&0l-m)-U77yNWU&MwSXmY-#ph!TJb3J5%I@UAfJ zWZ8oK#`m6CBm9w?{4Ml;fa_5}z%IvJ>@t|1B#jYxPYkq1M$5bce0Tzn$b|PwGDT*AF?i&v~C;W$#>AR z^xq%)HTfU=kQPdRpS$R*B?%PiOpS`bnf|_rVO; zD^9TWhDWy53p1J%X83E9NV5KUr)R_UY9g63 zwbvDwo7!PLEoC?Fi_ZY9Su1(=xdB_U88$V>wSR7*7hF^jlmy!vN}ZcN%w9131o*51So;(#q~!X(H04%%F4_BH7=hB-eIDz zX-b!TYSI()Vea--^29R=SsqT91Y30bbn9g2Mz@s zU!Yuct?$K+wz^sSD`9>nUg2@qg-?^P9w}7LNQcpW7Tr@RW79Zt(L5At?|jXqsK;|C zw)I#A(GfpxIUhs^Lb716!);k-Ba)N|3r3hi7DRKT-+A><-S z4i>VqgZCKJ(^ab|2kyi`dh!YJ^J=n8(g?8QdESrFp9*1I$vceves zH=h79&xs!CcvQc`c$NmquLwXNQfR`y#s0eawwO%JF&I(nWYbLt7hZyOn}h$7DOneAOb( zWZA8*sb8(99p)vdrmk&a*5U|E5bwSH)9$SY>(d(|eq1X&^!48QzqfsflayozYKp`}g-`)MpS#)Ju)pkdW8cOsLP%wmsS zm$Fvp^fr!{pTfUMx7vSeOA-wT;oHyrIW*D zdU76y9e%)HG5$Y1eRV*S-}|;A%8&-7JEaAr8>FNZrCUlGBu9#Li^ym&2$k;c7)XpB zFktk6k=y8cr=Rcd{r`Ek=iKKycUYDfpBG?QJP0zo zCIs#sH7R8&T_|!Y*(;Aq4N@0lo<#tqV!Xs?6y_&5+cTMU484b0L5myin1JqbK!g`y}(I+0f=obCViW zwX*XCUv^%taaUyU(k8WfAa2`g&}!h)56wm~Ba4`YZ?~c~B4%tSZ*7#zACVP&@-N{a zwY=KEU-!xDbD(cn3S1>eOe6Bh)D>emxeRPRZ!@TZTKEjPAYAQY-yP_g^vL~Is|ss7 z)DC2j&Y=g;-@*-?U9u;^Bv%y*&y@3|#t}!82i5#HMyDpza%opA7-ovOM;}a2W@%?d z5{_3H-+DzG|NKlWOq#xFyeQ+k^cV@JGP+O&=$VAKqyXEuVkFmwO>SwP=g>Tmm1b>bOc!Av*N@+1-yOG5SqzXHmwZfzrRn4v#hvtu z6(&a2o)HjoPmi?@Gd{Y)eHb5aR!+8t=SzNbihF|U=3YEM|! z?=(L^x6RHj!fm+enj)vNZ+wLO)dm~yWBj7uk*9>^ZWc(ohT z!(D90i%0mSo-;9ck4& z?Jm16Pl9(ebKzE#nCMN z@r$ilQbXHV27Mm6(60pJFvYvz)th#geZM)cPXF1=1$1#bM}|8$BGgEw_6~ODRsWpp za+oC%M8)d26`Ig7GF&HJ)f}Arv(}puM@ivt$T0R4hj52TZGS%owwF*e#VXD*wmKi+ zZ$$Xp2-<%jeaz^r0WciB*ZxJwMqKtQ$b^~g$B(p zEer}%6nwMB)Fyh4zCCj%I3C`qUjst$6$4Kghuck35UQ00+MbV-?$5lBgdEt-G`vO4 zqitWk<7eM*a7j{}eR6L+i6bzt-1!^AB;DAaEU3)K6^vq`$z>jyBtaTS_%E_L%+u6i z*QUf}@XJt3*eQgtZ=Vs_B42?v)*O~{ereb(d%#l4s^1=Euhwh4^G58#Pc%@|2%_t|1SnNyp9YGDU zt;a}bCte)WHjDqF(q_85BPCSx&_#X(S)}v`4~^2^bFaNUTZB?Kal18YwU=iGVdPxT zJJ>td{At!`@~saofoqTP=0Flf9!1CRKwXP<{HmFly7!BO1gxLL{cDWxAXii)wI2Ya zHdC5`=Q-!qRQF3O&!Qwsxsn#SH(#`?S1t!fH>uq+c(t^BMlIMRJ)CQS9dCf9pV$xa zgD1t~HkdNO;eOc!M;i}qg+S+S)(i;nIW)$Gw!?HgP~8bm-veB3SKMs%(lM<{WaTyI z+JIXCatu7H;vc&ijOZVE*Jh{NWhpwW9WPInuUH7Fzb%e!B*0#3Z z&H9s?mIPXyW^ahD!d)5LX${3J{F!XuEi0ymT)r8K`qoW##`XXYJ ztl%_Dl*J(FleOCO{g!m7!Cne2?gL5GRkKs*q2k# zYk7^A9hl=@vR`$>P{U@zj6T_i!9D7)l9(B;lRH##hnz=8Ipy3skb@8&%4VID&A#X_ zttYPOksYn4We=78B5q=k$c@p|^TddRq>Vt9hk~YO`KHp)9&*3+t1#sI2ux!j1m?0T zaGWg0mN5HQ}wBRRS*Zn8~Ok|KY z?>Teh12O@Fuu);_{aBU+)cP@%2c_LH32-M?U{f|+I#laX4`*1; z#k8ilkWg-kjfIronpSr85$it0GYE4uh3ZjwM%StZ`t5A zn+$RN!79qqv6$}Sk~Aj_v=hz1995rZ%0V&8$QjgvVF1bM(zCu`O5`=0uc z6aa?d&^hu;Up!MmYt&4V95_Qln^x19H@#Q(5^VO^jjl` z4z+jP;oS?c@l6;>^__XPr`=-tb{~Y^NuXPoNVEaxG!4^C7D)ezdH(0}m+?J^Ma#hU zIbPh2pFpY}^nC{##CC>uk5@qdxvp~PNS6pc+hvi1-L;fOvf zFi*yE7?ok`@7ORy15h5yaUlEt=`e%jUdrPO<=xeJIO6!;QeQsrZ7`G%)UtQ_;+3SG z*w|6#GFmJ2XhhN?*}me|Xl@`?+cJVG+vWyykBKPY6X%v5B4^KKY4K*5u^N^4T8iQ^ z*=+8d+l0w~TKEMs>B(nj3kK35HuW_Tdsx_V3AFZ;Z%CAnm_V-wsFRZzmnDL#`;tM` zzdY*EHn1Ao(U*bD=Kp#DAjr~;0C*GQG0*s9+64UGct^kV6&BOIWp$BA^@qx5KR%f$ zq#Q63LZ_$MoG|Feb&eJZqP1k5r+Ebh4}12+=>$C1t}YK+gYH&H$Q3lkuWdte688i) zWD}6E5pwB@;8lsCrjD&E5#{{#R z`z_Aa_!jzMVu1h~_Y8gMv_<=ez8|EFc$D6~J>SNyPtD;b!;~;6S}B`t;Nu1{dIn?} zhf9n{JL`-xSrBoTaP_i2XK}@q+%B+g?fRMrd~1=JdLr%6VC;)X$>GyMrKiaT=9_1A z`Zg3NHnWX@jO~RUtzM!u1+;E9ZN%}ErXUiKO=BdDJ8nY|i)=kh5_oP4c>N@)CMOVJ zt?nllzZ2v=|aFXzqVz-MC=^9W*)k-t53Ljy$M1Lf=K#*v@ymBj1?w&PyoM8G`0)` zS%qJE0zwxgnB03k$eIqoO15AczC};vytD@MEk*MKc^6X&ngx(pN@yQi?kc^Q#y2uh(-`pKcEN*3gcoBHbG$ah1CjzpnU7 z9cV4K)(+wGmT(pD?N_lNDxVf=SJM&t%Az2m`m0y#M$81Bo>#Hi?WFCNS6A>h$@t^{{KN3(i@+7t8`+LichDoW-%OP8FFW(l&Fx}NK?&<^`$Sev%=a5wir%CR z+k5`@J{vScA$;lR^;ae0l-qTayFaO;a}k4KSn>l>3390Y{+WmW~-{ zJ`J)b2SR-zD$&}jv~`M4lbMgvVO1~oA2pq14ZYWwz4#e~oJPu_=6;_w=C*JCiT~Yg zu)2c1)Nx&(2XPovZEN(_=!9x83wsJB77EZ2dfX*8eh>>nSjY%`K&RSt=^bxEf=5tS zzLgKa$DVvfw-#r=F*0z81@TXP)`?5uPt@{-aIvF zbP|7;V{o7>t5gI34oz<)Kp!2Y$-lT4zsayjG52|v8BSu5ujWyw$31}Vz9{1z2UfnQ-`j{ZI;dL1saE(;oKWTnsGIidm;9<97-a`?Cq3 zhP1s6aZP-J(^3*x&BOJV8z#kJCgohqGK?Pm#G%gO%sgze9pzUT$RNKPzo3FhBN}{U zWojzQPrRztUUJTbSOwXI3E2{ zP=-{Hw)TM-5kB9l{&IwGb4n|+kNZb4LM2)ADV5?l880~nn*6C(n>W0>m(8o0Ifx%52bBke$6?$zIk_u1=F zCCv|*V3oXkcQk+KA0g9xhITT~9e&Uwf9Vdzi$5#P4)qSJOvDNzxm06$mAqby$%Vb# z=KRx&aYlIp;xgncoJ;j z?4`wvZ2JrpvN%0HPUC&sHTj~+c9B+E^Al=L*#H%^ZeWA&IrnqHO#sBg$#PLS6LIyC zJ>nT(s_u`CzM~}R6GN}qJ_((Z8$K_^1P%dP>h)6hr|)K(DM|tsz&5|Gd}_`{$Y+-) z9@1Bq`uI(&L|E3B%P6Zi-{)PoHxBEKSO(9Z`LbQ3Bj6mEu+VCWDrfW$SFN=i`*iu6 zNu*M16=Buhf#J@>o2y(`*JMp6@4{sJvJgSBRVaVu_{KXr5_IW~x$cf(kt<#7P>~QO z+@<_6T->C7u}Yct{-W7n>8NjgkH!2Rc9J=3f&v4oGduZ<&;w=w*jdG}Y8Wj~T0ox=E&!oI zg&$1$od&vJ_Bo?9irGyRXl?+ZlTS4XLkD-O0uI7ml8)Nnh(X-q;R}^R&sv+lEJo!+ z@m49rnA_l^^8Ms=tWWBzF^#z)i5i>$!G_sF3l+p+xlit#ZKpj>X(o%%xiYAx>rOns zEeF`e&nqcU$eQM1`4Rl~YQ}tJFNt1rg?5nAA}pPvg*49XemiNGTb}dGXbh5?QTSFe zWwiVJMF{1V-_=pm(8CQSQZ`*$#jMA2#YdLBWyv*mk7cDnE>Ta&2ap}lcpdrrhcJ=f zuK>D($PS{$BjX!wFXwhpcR%^e`L$%z2)%iUIPg9=aQZfJ*a(Evl=1n+NQTE zp_~QU*3=nWlWHk#c)X)T%l9coFe?pck=;CWR$(|APn;rhJ8npypRqpr-1KBk+gCu! zK>@Li?*^%>S3}7(ESiC8lNO*W-}wG}-#yFspTx zx5j|_8g#RYu<>FPBVVY8ZBlE*-9aw22|H7Um01Y>r(?|%6-a>kj*Sd9A0I&{00@4+ z9}3@DK54lb15=t9qA(H6CpCqzvi;&W07LhD`$6*x=)KLibaT~8@mxl^N+zsSqFY%E zIO*EB1wUj#lX#A%3-YNBOTeY#*0YF6F*Rsu<#^Yko|oMDi$6Nj9hp)Hvd%5Vj^`5S zUkvvv?%bSnccbbn3aRstP*e>C50_DY@6qSey&&V({E;U=a%Xp!uV*fq1L}~Q8Fjr{ zcH+r*3{rJIEuqf6*LvMEU^{M)xPIkgek2*~D*djSjq&l7j!U&}lvC5iSQ7sVu8{do?QY5a%vVzt;Pd4d3A`^>rBJIKRP%CMH*3a-*N;y} z=Ci~Kbb%ema_YfxVo#pw8TNHe#=VRoi^10$c*YKKb;~JweUNMWvC-Gr01yY~`V|=Ok8VT0CXc=NC8S=p~z%0of8aCJTX< zxI=Vu=Yiin)>Gk(bmgS~8%-Z8{k&3nLEv)g^0CJ&MrWG5Xp)QG<0#vYl?fW0t5#Kk=Nwc9 zX0dQPfx>h(;#7x}XWtzxOa`7}e0djJMSi0v$SBhXC2*}D5)Zh~p0^rv@3{94^=#7F zH$nW^mEb-1+mQH8M$hlGSZqb4dFK!l>}-%?wz~TxqDN5T$(=wRz3*^ z+f?ULiJ`LHSLw5ip;E{iX7VGW(auMhr+rmY<#J%O@ehg_o`!uDILViEKZBYEvICn~ zc|$AU@nfp!1CpH&mnW=zl91pg@>J;ZN7t8mdDzDFFWCIQCA-hu>1l*FO9#qPg+yJy z_u1*g3T02KjN3@apSomeusTic@vb)`_UBfJ%q|e@hWhy z)!`z)_y?1Knn$8eo&{8*!m2R1PvsY#53KgXkmrDYH%r?#?~U}?lZ4O zj5vWB)S8a_3HnzvmnuRYK7?6{8|19hD(ki2~0G3KKA zh9Fy3M%y8!Hod0~N^K6}164NLoQMKZB`7g#(aQ|rJ z5g$t~B8rZI<-jSW9BA}u|2rDuGHAR$MJ7J#=97F=HMVK$`u0)2K79xH_>U<13KWmfK zVTLD5QoQG?@YZ4&~y;gR#+r^R|*6&QCIYo_M#W>FvH6H+hzsNDH=v+`}Q>A+*!| zutk7HBe5EZT)MINCZ;PMo8+{N0|L@1n87WYgx&iS{kidvG>f?P6`a|WJ2z51NI8sg zvc2A)4?P6SJR*zjjb!GKkD)Yk_RDIlb2o6W5HBz!8+=Z?Ln2AwD;|7<9IS)3N@nY8 z=Ed{1Vz=FNIo?-BoOHJL?-?PX3%RxQSQ<*t3DwSQN$lJd)IGEKLq1FDZQPY8oXzUA zof)mdwq0#E9nen;5-GUW+LI7yzFui5ug2C2QCtKYFnP1c`d1VvXxZ?O0@u6Z#Mf{; zkKaWSV->|Z5lhRLPMxx?8oNuxpPnlJ+i*W~N5repw|!L$HHcp?AJ`T5dbB5%F;~X7 z2XbHfUoI-a&y@OnBu?EtM*?wWg1rc@kt!z)uaP1tMLYYqn#oWGLU8l1?Mw^L^rfy5 z_UXvKF=3gal~aJ&c8$j7Mb#Af57DN2KLM>?1Oky7j(5TpO}wv*ZA@rjzOucYY3u7I zH`nNBBW(5~Xw*M)mWP~EEo9TRtr0eST}hD~!srY#!^p&SbC*zNHiX{Z*xK8R(a=plgprlc=HtFTvJxmyIO;ms4@6!G;A?QseSXo3X`1JNr^o zP9(_`$UOdV38O(h;+aG6&Ai@sxom6>_G&Cw4-R~5VD%IqE|U6MWJTIOHFySzzt?h! z=pYOrO>eHY?v!84TdG=aGH8>PgR0KYpySZV=$M0=V3CmYzKJ%xUe89s9f+q)GDSm6 zbl*|+DK^Dd8vNaWK}JW+^@`9!$l&+_+XnRy2IaItmOgUbn#dA(vTr_dP<=GNK@&gX zsz#rgkdVZ2oj^h)5Q9zL5(}Z1dX`I{l_8E(l2vJ(c%iM$SY74HI#=oWBhkHYBU;3N zr1^(BGyG~8ChU1FGsD-k1$-3gF76j&{E>HNZ#nGV34>^6LXxY_#U&nvJS)!wW3uE@21POObDCj&h|Rct|Cu>ZXZ(41t|v` znEEFTzO8V7<)0G`KE7IWrWYhWeg8M{XaO&7=Mi|Y2q7uRfK45#FRTphJC21x&~ZK0 zb^#sbg;eLuCteGsxm5yDUlXe!o0-8_Xk|BNSwf%68C8U)wExr+tk?>!cL^F~+~38UaNi2`w#GJ*E*Wh7-p(g>l{B8I+i9=oLi8{WmE^@wHlmI`lx(tUk1TfdqD}p@vrDbh_42Q9 zywuD&$xEFj1E*nM*?2(yGGp_HcRsnTOF|%(b5Zi*JRJ+Slb!AAm7CoF)NX)>j*nJe zKyZBbnv6_2g2^)0ueV-X-<2ty4m`314*u~|$N0J$_^2=*Jz5ltq-e-T=<~Y1>PQ-5 zX5xdKyL>z!hviot&c&@gUObqy>Ckkw2<`=q5WMnVx||9t2({`=n)@wpFXC`nwSDxi z&rYHvIp1z()-zbvtHN(dI+?V$07gb<%hy|}8 zlp|@)I!||e8kvfnvM{q#oVdIZJPP}65OTcg53EBC%!DJj^3VfBoJt;^$wf@LfW7=S}?IA1=4Ae@dBkR0U#7+o&8Q9#<^h zzj0-sY0LfH+r^^kR1?>@&bJ*%g6ydIHzW7!ayl6qOyN^+&%Pbe)EpYo;RFUa$zdsWaNf!(S-~8@zKRJLq^j;0?;arZ%nLf$k*S7MLpx5hABeik~K@D<&NMm)ZPLEIN zXxhuv#$JjV5`=jVFF9Ykbpm!TY=@k-_1_TVp4hWhMn~gyFO-e<9i9VszY%jyQbf-r zbmnDcy&#@1Y9g!o39k$Ze)U*d;HvZW-;sBdgPTOi)VpkZX2guNx>C2xoVFX@3Fz~Jmhk^alyAMno#+a3%}vD6jYkg8+t!#yFaeD$ZQf9sTE3Q# zk+p4(-=X6vxQ+P0@>E2e%A+$|g)az78d1o{2w+$Gng-xIX))NGZwKm!HX9g1+HbtS z`3E%5HV62KI%zwS@&F=U@VO-t;WLxrEJk&@6v8V^4cjo0c6@6mt%=*TH7#Y+&~`Zy zue1YGQ^JEsE9uU2Du;df-Ol1pr>DjFu1srE_YVRBE)L`XX+}YLBT>&{Nw>ssTP;c6 z$U!aS+q1VWX=@nB%uQoIoJw0ZxY{l8W*W{31#9=z5i zUsRo~c++9fo*Vfg)Q>o;q^}f1QV<+Ev9PEap}^wMXR1d8T+v)Y)5zFOr)!SnftOiN!Ss2RkZcz3@jj!s;^r>s`RC#PpzSZd$-7gI9NSeji9ATOyYTX_XOVAX(jy5i}ZrpVH7LN2Ifym zbHDEPTCI!0k%(;Zt<%M7<33~&a-O9#%5HPM)Y_LZtgZjvA&*!#U{@d4ROLVLchWLf z&eZI@NW*h&c=lVt#iu!2XLPAsTeu)7?=cSnzE&w2=W>?S8>uh>hQvG9vsC>k&gnNv zkb4&RXF&-}yGbgwNp7_QFY`kDeomyvU6{8Rh~(;ti&RL{pk*X5(4|PFAXs;A zSvAwG2v75*Mj}~-?cTA=ieoyv?$OpD@BThz2)hH%z08|u@@Al?#kYNHaCDeSO--Dw zpEuuN$nHzYESs+SAp}8(^{Dz^6k87AjwH+|!t0o-6FV8}A!p4IiA71bCU2W^s!3?@ zb>-jcq&P&rSh8W;?g#AbfZ6$qwF)2OI43Gd*~>qk`WlKT6RHA+YcseE2mKk1f%ezb zxz&vd=7*e4h20~#PV&*x2*lR-waCI$O#YLSLOiKa<(0`Aob`$tW&Q(?n7($<2eFs2 ziMMoftsB{QHw32mhidS{UKRtjdTeX3Sl1^GUoyRi2e`Of9hkLB&z=jPyyH5k%{zc$ z)aKH#FA4=*@nR#x8DUoFfVH@X8vX2Q?l9Enn9hz^8jCQj>Y9~5Fem(84!gvw?g2l3n*__;E)2kGS zY=yP5EE<8JY|JR;^9j#9AycsL#!5lusDhPeo-9=Yv#J`1@q9&eg&`Y@_0v6Au@Ee5 zyzUu}XGc%G+IZBr2^!w6IOa+>r+^}c5cg8`jW55j-ZIvpydt4*$S7N&*(y?0lD0FAHS=evcIQ~+C2BE*qoO~v;vV6Ml4Ud;BpM?-{I#t-~ksMXP^`mse?0YNm{CE z;BFZ?^VQi&oJHH_G)dbrw04zUGpBt$@tBW4nc(`ElW{s@t)> z;9o=_MyAgsX3Vw^rc+i@#!f};p-S2Z3e4AK@8AuuI>K8S83j0*U}Td0@mQbCHP1f# zX`&3jh<$ih!u0LoaKUs-hQCQ-0AyH;3lBVL6GYv>+(JDhWiu>B*psoC?qVXJ$QhW6?O@A_I8{xoE2J7B=wLY4}RM_-@O%AC2Hb+qrFlE5V|j|8w|=8d;y0-vLI zm$v1!q28Xu7G`jo`no})dQO-|_vX4!xR_cEP;AZThm9}Sv`~rjHJMPh66F6=b$~Em zSYaP-mWbB9COfw%k}OeQE___Z=P!Q9f3B1|XfUtNfj{K#$$t*;rp4)6`=I@s&iu|A zTF50^X6v-(L=r5lG((mN25MXOKE^E_Z5vVjBC~Yp?FGHj`PWj$r5V;+&5>AReiqQ`GjX z27KA`o5KWHVB1t%RR}EcX#datDr9^~noY)3-W%hD*2g{*%C4zbiDL4*zD9m5^#4Jz z(9+$|+jGE_ z@`n($d|sRT`ht);|AS}Va}Z*-h+=bswi-Jnw?vvIQE_pbg8hO->jayiszhUabkU8Jie2?kGNJ zKqFd5vcDHkA#2#EAC$t6VZa@`OY@eyk@~jVQniyGTtA>-j+0SDUCmzettrb+)b1{O zJl92n**!;xy+KW-%O{`?ZWw!#3h(jsT&LZuH&=BEciit{f-l^+4;Wr&5YZRpR)y%^ zx+5UxCd(zlXfh+Wjvh*WB^1D4%uzpDQy%ALfhg%WOqLbX+DWS5o+aVy;9# z?++Qy-iJFB??(mp3(@hgyMEhajDSk&rKykpfj=z^RYIA;4@$b5&%0uG-O7LLaN<@2 zDy<74GE~cL3aq#h3ikjJvA&lh^+#D#KM@5FoaRnmFcjQOij zi))rr+<%3QA4q@3-pTF_RC#W7`a-iL@Bhxxe_qSqI6z;C8EaC-tK0;pdGxjV{_izX zoK5RKg{Qj88w@2&5pj#7i|3ZMUl>lhNyY0i}Ae!%aLFpc(oP~X41 zv|Bb@lPzi5Dn71PhF$a)J8pN*RDYudbCrsfpC07P|8f{#(uO_#nXXfZ!XI zos0R{TL~8A_&V0lW+~mo3HL-lXaQ3T#eFUF|a-hTaSB!HzY~Ft#hv{eq*H@>f!I5hFzR<{2j)Z86q$y=cPpf z*2Ow}@*Vfj)g$|EE z*x7o*cj)S@Crz=h&QphZ^DNF$>^ zE=5*e-1*ujRee`q(J~T?f=WHW7jxW(3MGmg=j5i7-gR4Hw{=nBw=?w#uzUARPKZBX z4nwyyWEuK*HB93(#RUDc#Y>?FO^o{#zne+7{Bd1o`K9gs-sg&5?yt|J?*9kyu~&fM z*-=ZgsME~IJrKWXLMJ2g7ZU@+v{6YZU+~9B5P!BtcSowUuM^l$M6kn7RhBr-d1eEvDqVk!pUg z_b*?2j2VYIICIZ1yvk54D-{|f@4nP3`Ij{sK&C~u+Pv2VyKK&7e`d*c_u{;`36Fke z@25rZ;uThQC{nADO2g-WrwG>WU=Pk;{?9qCb73K;i6~!l5UHT|XL>zLOg)>DIHe7U zE~;D>c9&P5!(anG>}tJ*adI1_>6OSER<=g_zjrC-dMykFdlY(~ju080jXQXV3;uf! zLyYru*16*YG0Qdx`Uy%~6IhG~`o(Q?!U>yIxcv&L+*ZVDC@hlR;7WNWE%MEM9KM{h+X(sd(^VP|8S(!B9cUo~RCJvaIT zNy|u3blLIyv#Is2J7=>QO&PWKbz@1ND18tLoK*Ekqmq=J6V;x!q>pn5!xV)!kq#+_$sS&B(`W>CVM1WOMd4SU6GZ-PyaE&CCdXc5_ z--8KrImt;{I)x5JP|Y8we*qVEqTJaK-;i%#HlvQ~TSBHE@;?|F03veNku#s##GYjs zu_-Gnul&A^P+$WP8j48|Ln>TvU7s8F{o9^(Rx5%(c9EVfLBFdDAAzGgRihrPi?vd7 zv<-9m0NB-W zSKR*J<@Yh!ySD-s@{|2G61Pv%?GtT^GF0;ji|8072u%Om^Jlmq^hjM!?NFa%h=BR< zZi81McB!v$FD@qvAH(mAzmw{t_zSjL5*%$8Cetjx@{HnhDr1(SmsF+DaljyUhaY9`Zd= zgLmEUd?G;==DXd{^oRT9Kbvv~rwt=pYe@*6X+qJAAhE|jTsbOYeLAwKsc?q()yT6{Do{vz;0f*cS9X3vTltu#C&LxS3 z#4JGn3|5$%!UyXH3a**xRLpF0fNLc(C6xG8z1!kjn-fsh`04Iq`fi>4`m9X|zZv=_ zaQ7&mtA*(jzA{~3mhIesj9Lq-H_37}ZRl6jKcz@b9kfZlZsp;-d@3dN*(G#SM9HJn zkG{e}l2Kg1{qn?NRziNYqFc0rSf7lCq)Nx?nUGNC`Ub)g`#0Ix9(BblRg6iA8|n3y zY_5A!TRi{H{C(V@Ny8TC@i%jM0vF>{&WTg4{wrx!!@r!cMW>50| zjf#3!^lMr3Rbd8#r&$>pFHk7-neKit5AYqdBSOtX2214wiSj(V`&6~OEDunwk=7NIvZ zgPDS%&Sp+iL(g`^U5E2Z1Mto-vMZ$6B##TI3?jiBhHaI2>Z^Z=`qudg zyI7wAXQ*`cXuhuG_WeP3bJYCdncd`edEh?UP#?;=xT=0Cf2cdi<#wS2_|8}nqJQk3 z9nkD=A=ICLer1Rwc|F>2NA%3QceJ6KmOE6nC<^g}2Q66Ig$`L}lNcy=`jo*J&0ln{G9|AQmG zUIbZW#Mb+7pH-)ph!ZP30~>*X>uF4g({74nO>D~NcZtF7wzUs8>sZ$0uT5pc$$ffL z|Im+YwoFOy{C}tmWE923F;@2IZORS z{PFl$^;5p%b6{Q$J=wq)bWECGddjGDC`KJ;5P9C`IDXtq$i08iAdlV-Y4PB2xfG!+ z>tecWGM13P8Cvhx4W0IN)TP>aASQr)CzS^$(A)b-tPj`Hy&{p8!Q|l4@j(N&T=N~{ zMv8+FO#*`$XtFT#UKeh{>1=nOoqK?OOzJgBHG@`lfxlQ@-annZ7^5&N1uAz-FSodK zmo_aW2ep$zjFE4X!_ul!p^TK49aq!RI6!Uc=X)p=-hgPX&|bZ+Pv~u6YTLnB$lNuc&-{ z!ZZ97i}}LnkvgsB$yb^`MI?IH1A`9E?JBk~im*4!u6JW~W$}v>XPNKh>5Mu|!jJY2 zvX2*Ph|(<~?GrWsfW$@m#CfD{bQ6kRAzT^Fd?#OvEFNq$#-%dWSN<&p%!O_>glxbF z*pEEHGQ36v6bEu_p)5J__P9^cJ$&a#VB29YBC0AD!G)c!NU(3o4sUUAIMdWvDqI)$ zWciK8WvIpp8}{E+lAOX{Jd^c2+2%Sg`Hl2TyyJI%(Xel!7hOthrIA||6#}|$dQ@h8 z7Fa%Yd5ukH+)}=x+LsvhpdqGQ-g-ECd)BEu7zp>V%W+w`u?Y0LY}n^69a4I}_zybG zkHV_4Y(@{3^-DF?ZN@qlSX-yC2JjwplAsvEX7l{uc`sJJC7wvlPab2>Rl#Cl<7{8r z48-dS&Ni?5J<9f85JFmQBnCfPWa2dPu_?S>IyIvKEE+|Rr+j1276{32gCDgb_>Al> zTZ|fH-Y>=mmgaMD7KiIUv#qAs(F&=Nx|%-DCpyvr4tD(R?jGW6)=1U$cO)Ctzr~LLlLA7K9#_=|*_V~u?yY4~Aa$Kd8i{!-|Y#WvG za@KH-9{)^jHUAU^Uk7CLl1_WR6MF!tlfvABWZ0Mane&BAhcUU~*R=&J6G8Jy`u-$=vw4)frbX&nCNf#(0gJwaja zC|%ZR`|F}2h3o5cq-qc)*>J-W$h}LeMcJ(-(rZTP>@zl(8!(+cvPz9Q_GbevCW<+l z3xq66YA!@cbKh)3;Cb}!ZUbnuoR+jY#B1b3U~VGGT)dm*v&G7@QSvjL1&Vf`A$wTm zHGvoMy5_f(ExOm_QiH9{(zYPTSQCMiyO_iFX&B^bbuhN@AmZ|Jm?wy1eI;%~Y#pPbdIeq=-LRex`I~I@ z-La&!N(yDaoKQ}gbYlKNs>yF^>9+THhq z0zd=60v^zagMMjt$Kmu_R+((UbwQxs%^tj!>#~^xvK3_~W~V@iZHtxb*k)-}-eg(3 z*0dr@ImXM8*YCD8|c%Mx*V%R{+iW?{LLc35-7Mx#=m+Y zoRe=&_qTJi>$8HVQA700JJ&23F6qm4QejGlx0SfabSg@3g|Jp3G3K6ZeiPh3P|UaQ zy8aW~ojG*Y(Me2J(LWws5CC~VzhpnO%pBz5^m#Im#8s^uHZA#XPiVcDh1zvmOK^2J zK7q89zDxErt6^K@1bTJK>z6N8|9#k`=DQO&2q>acvG=tKEfmiJAh#PBJFO$B zF5$db!O0Jq3j_~Fga2AlrWJu)W_Wx01Uc~x*MCyv%z)n|R&Sqw-0ldJsQ0MVLM{;2 zXG`w(zX#bSKzs*;>y9-WiMI}?KW|e%s;ig@KZ|iGbtTK4^>n&&o&axn zC^khaK5PoVTtGR+jCO6kfmRy6Jv_@2+&c(&UGUV#L|NVA(P%qdo!nYlt0KkjJBBcy5jV-6a@+&Yvcx?HwusS3?ZPXuD_puU z;P8Gv$GR%+9`AkS5(Fxf)ktX3#4Ld8q@6!YeYBjoCnQE8)9gx1xzheIygSi>p>Jlu zc>~P&5DicG&ofdmhm$ng+qA}wB$kB8x?mlV<;-=5u+rfg`{1+~LG=zfIyEd3T&oUF z&Vp*Ee4Gs?rthS?Gi0w%l+I7-$2p=7YEOPLnxJ@#$AZmP4$GsE>q#lc%_dRPHweCy zbY@ixI8!M;dLgz5d#@t$CGjv!R{ojUUh4wa8wTE)CXam)_s`79L^h|L8ZlEf$9N-; z-LHx>II&}~1-jC)=zV`qBdPUrVy{)nnl0hp!BI#^djc8W)Zq8r=?lXg!@$wkPtI?LIe0P&U_Dp0tXfCJ~?#Q4xwgI+L5CbbE$tC=#jUdhx{+I`T`?%Lud9tmmAO z;fVTT*?DAX`pC=2t}D9yR6RqqwLEM@N!#1TFg1-#4|r>dx3uhnqf2SW-L6;x^_8ir zMZY-{)2K<=&*7~f&Rl*nTHOLdjYp(yecTs=U}u6HT=9KA|Hx#;a z%kA{7MO4!+SI2;t$Uw<$IbieSyVTP36rQxA(dO8asv;NSgI_UyM#3KpIpt(Y=VM5r zthOKaz*~+rv##am-HsOupp>%Ihh@d*VeKQxYO%o&Hcv;*7Yz_EeE8NJ(pKkn?h4}eZCQmUL9mZlxPf$otAHI8Td_TWtPUkQ?~AX4lCDLg*)UH%$82Uv+Or0 zm2#|-KKAo_L}OWq!XF}!ik+# zF2vpYwSWuaXH~cCSjHUx=rcR|*bNJdY5~JUOMwo{Lu-?z2#sY)Z7V@v0jXXr<9F zK^f+pfy#i9r_DHGM7w~+X!P;R6X5&}IOpQUErf*zY}VFpXQ?}nw!k%N=@<()0G;2) zswBp%c_@DPCLkcdA&pY6XvU(c`G<}&|C_uu6Z;lEe~xIzZ@oF8&Rj2eNd{VN;I)DN zOg+`$TA!YpyXsRH@HgM6h(~?a@0^_kDzFAmM-~h|Bwfwq%`H4wmkSPJ1Lddd7u3!~ z&-I*-?X|I|Uwo`k?qWU`$^Un9Qg2ldZ=Ydm7B(6Q*FRlx{SE6+(dyDX5)s}YBOR3- zYFT%wY9$v~zp+l|VZ~NL6FxOq=}I~ULm29wly+D!=DABBlcpYy6Yc|LH}4tqVeej6 zjJi#<7Pt7~Jm0WBU2dh1(rR6)J3l34Z6nU{rrAo8nK@|jgr}b>d%igJKqG;5OYE#( zx~u&ZlyhK@Epu(Mg%CcjOZp=jtD$!N3x2|-To&h1rpUC&YWZmUlC`Ea*y7irVHo=& zHphCkQL!Ke^0whivvzY;&lg&Xg*|KQm2P-XQ3p$5Y#3azx5Plj4qUMV)dMWanJbt465itIb=rT+67c{&bhJGW<+eUfY7(yDd<06tiT;v2I(9ZcL;S zBg_TEdV1hTo2P6P_h}c7s(^G-EX>e{yx6wtHh^$v;4606OB@~59)Tt!?|lKXX&d&KuYpeu}jpVo&?ID<&j{K;+< z@@K{ptm=4aH8-r^Xzfxfu-r9PcQM27NdG)za=*l>;V3k|PJmw#N@JXtC0x?X(b-E8 zzuaoAU&Rwyoi8Czd~q(!p(LOreD2}Vyh5=(Htv43`mYv1o0U>k$|?(|OwVWw7Km!Q ziT@#F30d5?|0{CON*02wavaa{0AIT>zK}MP%^&SuS)trodt=B)6(Nw7%BnRDDUM(8 zJI~##ocH5v-KF=P-2yjj=I`p?KIjoEO1Rg<6qwtr$G=TsN;E0^+?LsurBTMbJ!AZY zm0`Q?!c~JgC5!5!25`mje;&f7^ZGi95SNtrE8JWfU6R7+{%xv)HM9Ygm-KvyKAF0O z-FM_rq2>4}kMv^o@uTtAqz?N-1)jo7_|rOa-9l%K(|cK+C4ByNX^;#$&c}wgPrruo z%OF@MuKRfwq6=E%RXlxdd{AJqy^k-cz4bo&)|mB;u_DuN)n|#) zf$$hwk#wJ#Ek3AqcJ@?`zO#FwY2cr;4g#M}K7lh&AS+im=;*QtA0$J(GR@qkeYGvE z#-mYiJZ=54qslr1tmc==q{RA{et)e*`}MMpM&LN59AGa?`xWX7s**D@zXwdOQ@R0_ zbYH9 z`aYPKf6HuEbSIE4kI^iV!g>bfjUsJ3DX8Lt4dioZLhCLh_&Fl;70FLds#%R!Fa4_{ z$fx|)02uUGs?jb{Q4g*@tf^yUvc|xLJlt4XQzBS?j9_n~V27)N3xlkrs8>KbesJ2e z?>$}_y(Al8b}% zxtloR@$i%#>~}Sfsr+5(8943F`&!?K9Z=LvIJ>jwY%C`0IOBRSSMBUtGND$=bSZZ+ zFOzkWM1N&jsq)SCqemXA0zE81Zd?EpzsF*(nkfzU158W%#qciBjNpv^JRlf(Q{>ut*cf?U!7}aJ&O-A`9@sH zsHlDpIC6DP8SdRP43i{Xgl@P^a!rG3EGiUn=yMCSBF(mF@+r)ZD6-i&+_biwL!#Q3 zD{SrG5`S1es9kI~Fb{*Se@{7eNwJf6Sm=PJ$U#Zx7b`rHqxExh>X7Jr3q0JzH*SfQ zhlwNBqQ*f_p0nAO)M-M^)%ytHk>9kwd^&`^Q{%?oi|?X3SVwr*LVWLE48%YaQp{~y z+c;TaN1q9fYW@OceLpE3_x2J|lx^>Ao(j(Pn{>7_iXwAgiRE?*W^RYuPMDC)Ff)5t zQ!Ww(bebv${O_f-^ zpp4pfl8ZJ!uSow|or+M67`l2Uq=PUaDNW(nDrfh&=-ZrO#~pKc=x{8bm{>X`xKK>c z$Iz^v}8s#%CTJI=teOZ#7<`>~jlUIruOR!E(57ekTjr|$F zt*3>(RHY<(sNc5`yNHg0_J3Ndz?+dHl*&XG!%smB>|KeH_^O?i{67lE$cl8$~p zw%OsTnYn{f418{8;Oej{Ix3yD-z=AuYIp@e_-P^+!+zdhX`T_`HlrB2x-DLK zQnz)?+iUZH`|`Fpql-{;Ol^JerUX1^uvzEZbx80NdSA&-ZKYPPHzGVd@b(f7`_$0- zPg?hBYB9gWtkO+f2D2z&KYE`WRgw~UK=2jB`8_KuSy|8A{ed3~9P7pL$voFL=_=o! z?AY#){1#e{)iL-4BGW>bryBBFRbWnHShXDeQ&UrCv1)jieaT`E+05yA2}l|gh%P)) zzBU|)Fw4GbH`B#Gh^=&%A!d>l)zT)G!4#(vH}JOMNK8}U2fuwog_(I7+9GrdlWB16 z>8<#ixdpZ~k&&JRmYp0SP}`OW1j_F@)x-Ye8b}EVR%!%Ba(8>^n8LcUCCjT$I1bM7 zeW&ykS^kUCUl=AsvACfce5qmg%=@)8_zIseV!LDbanCwuHPQlQb#z`GUtbF7VZUQU zY9~1+2Fm9~-M}GW+F5%#MliZm=OSs~=}Ffxe+u!jO)>A!U!$o3c1e>0d&ph-C?l0M zkW#=6VzfW%(Bd zu{}FM=tdMnF7#UGHk`*je(gkL>*K_Eeb2i$v%7N6y4 zp!O_D*HyYeJ4zeKm;$lkYQ7-<6>g>4rW{0l)1dIG4_+*7l4%-K$H9JV}VDNM5r_#dXv-1>Gxep<3=(gJ?0U zuXCN9x$GZ$m~jXw@5TJUbkyU0WzSX1&B%&$k@5{lPh3ufL}z5RuDaN;F9U`-gbe#o zl$DvGkVl|{Q9EilbR^R#IVL;%eH*ItQ`iX37cQOtrH7a`H@FoLsO$hPiuh?3Se|Gv zW*75AfEXawa7`Sl!q|dRpx|S;?^3$eG~o2i^k59EGu6XxwIAO8QB+7+*m9MV=eh06 zRfSdQd7oZ6)TcIJ5Q%T=4|zcJ4RZvv51 z%D05IrX`ka35AX%y)9D_&I{n!4O8Y}cti#oN~j^h%izA+fDQ*3!i;Z+X!fS7AOQEtF_?S%n`<&%ZXQAl$7!vG5Da(D2ysn|9``t|o zwm=5mDOG7s3(96WI}Axr1xGS^xrhqIA<>6S8nl0wtGb_r`8D$n4R;nT0!c`B9oJk= zOnTKsve;Q?jrJiX6W`clKfOk??JH6sGuoNZFY}O&aHsNCNhqWL*uS>?3D=xgvA77Jg`k%`-Q5(Qy*R(-C;BI_SxhwPonwB zhVGLPi}izVPr;bi!i{=a88l#4)m({^mTh3d0g$qI{y9Y&&L^UXt zZ2#AAaWoi5DEx-@=;0=Pv#RbF24!DaJ_TO_$R#mJxDeeFsjVcUs-=uN0@5GZE1o2`w$Jsvar5yJ>{#PIV$Hwq5@2+? zNNv06GX_17P0N>%04KhW{4wflSCDZv>a*~AFm~yNkR@148u7qyqPL5A9?e-999R!m z3(mc}>x)AxltWOe3MgQ?-IAqv~ z&p@s*wx}}qW@*gO>hY~#TGjT$53i%${2}Jp3k#;!dLH#Ip|Ogiy|;ln;Z8d;F!Wx( zeSpa{D$5I}pi#b&y|SVe+NsQ514j{ay;R zFMn~Y81@9KN<~M}{aT-yV+Tq}#Uv(<^eun7Lg=gYdwb7MP`Jw7&5gmCc2YAsKy!=1 z^X(6@#MHrr8jNt8e~b0&5$4Oq&(GrmRp=_M_G=~ceC&YmI<3tI|I*DMx3Lo_4hZgP zeOzck5lfb+sS*ua4^qAcFye9=+F=+W)64qNp`oDx@QU$4t(=b6*O7TN*zRPQB)@U2 zUW+_^I{fUOs0}>B`*5?md%%iZhVd$P7wFkNP|0r85EdMvE|ewDWRO--5tGRMYS#Q|j#Ui4U1Rbv_@SHXL@ zes{2JdP}@#7ye4=st>P_qrnGQr=WU6c%_ilNLb#~+l#7$n1z>C)NpBQLn;k(a<~ps zv0dhR42-zGogH}F(o3H{WPJEw7h7O5mnLB!{ylqLWN3?(Gw0=sTpEw;FMKODb74ZO zJe+1VQqUWjxF`}ACKE>VU)O?tIsM@o;X3`m`&hIL%gj_{SkWzkWXbPYX3==1GND{Z z(#GWMj}arZ>F2e^#^p-t!(ABJ|DFBZA;cX*8r?AL+_x{Iu~;*p*bzCatgZdplUrCs z9D`mGbSAy8eTl7|z%oz4m(YqDCb~k8yk<51%i$md^!4wA-k*K%8teRG$Qv3E#1pf5n`g4ut0^!cDu_&IB zAl4oJ9KKX?Ul`Ri~*OKRi@?N%+rmp6~LqF?HPfPjz=3eCam-Lb%a zw0UxZ^DcIH?o;<*u9URWzYS`qtv7wjR#7UlMrQarH7y`9El7(at9e*dkhwqZ9_)L{7IyokUWUu#1 z+<*wPb#-e?Lgr%gM^~`Qs%1JeXUodDFwyYDRLfOFDL}|0EYa2icHMq)-TQ-5FCIX}^uG0~CU`Uiz$Xk>xtjhCDBjNu=#5+t=v0LF0}$^3kFOmTuL-20lS#NfTbb@jY#@7*wUqA{n|QY zdLQ{SnD^+A+Gzi{=(+H*kvfA*8{ccEe=TV0#oc_SJh@G0&B3N+Z^rkxl31G#>svLs zEwh}1o7AV!I|Tp(2(v}0rPpt|$XL%Le9g%EXk17*02kG5BW8YWFEbJq9yyu#)d06o zQ|?VsE>g&pm#AogCzr_uz;f>L0Sj#^ z-oq!P=ou~HVL#$06C;yujMBEk=OM1r_~vRknZurshG%z>pHnnwJb470B0ei+jD@&r zQ8*9-tp@yV5&mV%4-RgFKy4?tpTQTj&E~l8PUA6fkTts|R(1UP)C5voSTy}b10|M| zyz*ah{U#-RxsrEć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 G21H`Pz*%A@aES#7*|pyt&hV=QGz{ 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

9nr<-U< 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

;$Q}#Ib_yDECN!8ZHXaPD8gW;+C1?ab^yKi{ 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 ZucpYl6sEuN8t?X}{#;wRRMGOo{{u;x%8>v7 literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/en_US/images/index/image-20231210151628992.png b/api/core/model_runtime/docs/en_US/images/index/image-20231210151628992.png new file mode 100644 index 0000000000000000000000000000000000000000..a07aaebd2fa3ab20465210c9a5a5b682b510c191 GIT binary patch literal 76990 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 literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/en_US/images/index/image-20231210165243632.png b/api/core/model_runtime/docs/en_US/images/index/image-20231210165243632.png new file mode 100644 index 0000000000000000000000000000000000000000..18ec605e83f7832ab15869601cc787e42128f7bd GIT binary patch literal 554357 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

r)(Lbc8ejsES_~cEEo>c2c6x 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%0AK7Q7nBR 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

t@?umI3hYgW|uzRSe1VaFz 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

@X9M|S}m8FsNi-XPvc zYL{-#M{MtVKiTu-m>qchLc$tIRq8Hg9hYEpea9g@r#fv>Pg>!Nt@{DDQpT8HwwwLk z)g}9w;13Ch_r&0IGE60#$AI3|Pf`nD=!lHcwC<0piFaXB0r-v*B2d}W7I>eSj8!^Wjw#GR*@uIjsaX1kTUPV< zYl_6&wS>06?j%P%zbL|7TapIr)<)hpY~8bV)bCq}9O>I&p@p6lx-c#Tfbz3M=87>y zR+3be$$M+qHkG-g*`6sa(LhlAsY z8!ynWULOjLxsNPwbj&d^NZSMLHq&-CoMz2VDT)fsYlC0uM$rA6@X7w!Sx&w)$j>VN^&ympeQV<+Q`XW;U z)>F~O5nm-FXS0YcRCt9KqGM^&6cku&Kb7vd>v1SJw%)AQOBm{9tA73+qYI2!fAJ%} z{!-yyz8`C}fxYH8zTI)usXfxr!wHz3Vr}hCRQ=lUX%uJmIC5knLx)6)zN-_b0loh? z;YY5{0$O*yc6`{ep^#O^Ef5eCGv*oj3K*f^P_|S$Vw*Lr+z=9>p^xh6_bD`@d1CP> zAm!maSeT90$FaDJOC}F|Z+PoB${%$me-%`KnQ@l-`&VQjw3=zz2_{O&D7<(%QE3&O zQPhL{{JA=uX17JEM@}4>KiSzp<8GYXQJR(I<^+nrH9ODPbN29Co?oJfh$t zmR{Hj4RV)Pq-AyEmuD=ddZUBM`&6V4)Rw-y#>-dN`XapPz7CD65b84(+g6b`aVyT0Z7*=mp&cIi1RJIudLSeeeL54t| ziwGMrh@-IrUsZ!O_HGT5sWHM<{h~W8?c`v%|Aw z3r$w!wH0eF2zEP>M;%^icKJ11=7{ICI}g8oDU_pqb5Xy@2r(nr3^Y0@4SSWv_u5vi z+?=Zx0MdqlfEY0E+CCN#XYt63C}qSx4^A@TT=gHf77^#096wV%Jk7)!!jq8Gvt!lXr7F(=aBo8ajxv|k{XMr5vM`*x#(lL7``YHCgk53k5Mq>0E= zu|F87y`QFKDy>gDGDs7`f^xb36Z!#1Vr7O(*YI9#PJ%$;w@|+%@>=EU2)c4C0 z2yor+0_Tf1YtuP8U)?1F-uIME?^Xm8wmM3e1K35ZB1OVf*%iYl;`~`By>LMo7Bfjo z3D;zqY}=R55!Lr@nsK90*s8Q0TXMe9?t6j!=HPlH4SA0&BdXCsgCLLhiQN~L+A=bb zDerI@wpND9+r}HS?TFgLxga+wLD%Kj`iiwGt+)VzX0s1|=HiQ=HWtJd!ikjR#5O)5 z+Kk`@uHd2VF`umE1do-3i(b?8P1cbYId)*Qq{;(1RAldz09k>d%#oMwG)H7q(1_#l z=ynjk#`J?gtA@yF*z;^uCjRH;7^l*pola zg0zgX$tXHRc=XPh9++GqYc7v@UAQh|d1W$}r_;(+Ca7m`ox51r_!Vjji-RvwhHq2m zu6a~j4#f5S=na4nbNkid|D}2F{bP4WB?$0o}`9e5D&1On9 zM>U7Y=`_*#WWI)%6kwB9~f&Av;3Lm^t+8{Fj4s@$)~LSH)CB6V@b zXg)gMtZ-11t#!l@)l=0#XP?*8N>a!wRRnqF-l@0Jn~$35)XPa+H@Dk*V_mY0#R`TP zlIX$4$c3elHrh{MFgzCF4y2NS19ws5kc8es*A5I&EBdmV zjD(5!hEEWG2!#5qeXJjG4N2^gXiBU>eRiCSj84bb(g3abdG1TorSwzmmE>z$SH0OF z>1Sr2xealp1>O2gCFeYHpBC)-$bX)3VGd2E^^O^FYvSJT&luCZWDczd`iasbpjD}e zXAa}uh#lEbMy~f9d$rYr{fyDyu?Sq_{JQ0`iExImT^7Jsf1EXg+&3rCTeW%GX^+vc z@$aE87P6$11^`{)?sX>QIN;+LST{ZtMKg1~o^;NzC~F^CjVin;;}*ui+EhvteK_4= zf)>#sp%2Dakq%3tP)O^N#HC}!6N?>UU@Qyh<5=gCSsSfn%YHn-dL<16Zrr@0?9C3V z4I8imM?kL+hjLHncuGsW)4F3yZ)$&Bj{G;j9pX*uIw(b?NL92fTC-acOaP_Ov$2NRUx0 zG{C+|hmxH{pLvx>E4k$~X z@xSIN5tMj{p1FXK6R+V{QdZ7*JrE!Eq6jRWVl!CIja~!7_busw~ZJ|&)8J@IZoppW_Mb(U0Im1q@Md%KApazWRlfbBPmmk6va>qwG`u*MnEQCPoT9d}{(c5NG7*St9JXgM z9Ty2w1I|oX%h}g<8{K!t_7ikrw0o0Eq9p0%OFeC~BC>EYYF$9$MS}r}(713p?L*Lf zQI9j@4EPI`hZ}lble-nxyjLB{C3Bq`Tj$Sb0-F*3$d27<^WI7dQSp$MFH_}2Y%mp8 z&wDV&`1ocGG}XX)oP|(RKe6V?K`oi>AdvRE3*Fi97x>JCtxZq>|C)Q}n&S#}9P7oI zE{~8-VV@o4mA5V&;`U8__IUzYX)VpyU?FG7v-1>H?eP3%an1pG&Yf}-#gNhH0lVpv zYG^qV4o$bRKIp;|APKPi!8&f7KQ-Jw6Psr3+C(i|54Nr4Vgq4S( zXdw_;`P>8I56{>4Hc)-fh|*5^$?gUU&44sCs$kt@EDTGkVxc0^B;aOp`k4VneUfkC zvU{2QvUAw{pt!n>jvbS=@c&~QVzKJiR}(f$%{Bt6CI0xj`{r61)zaH3JyxVMo9=5~ zZaQ=c$#0S*e6MHY-N<&+&^?!;JGSrnvZzOAV{ylt@wPv{>huHXevKsa?;cUrjeGJS z+qX{XbTYQnziLL~0z7YrDZ9B-*Z!}qivV-BSfaX)nbQq|FCu*CCWI(O&~NKrZsAcX6ZKXQziE^<7w|Cip^C!A{`RLX%5S!dRxgr1ezHc85?>%pFbn4IdPdFQHnwEISrwt-)**$dIi?pgOHI zodb>-rzpVYH4$CZH0-85Hds01tGvBXnv`YSqJ9X#Od>_i}>$(%au;$8~7J zS|$cOME8n}oRVimZUco*a(Q9W#j3FQ zHlHWvyW13YpW||O-6tKkGTrmW{RSl&w1O>~qBq^>l6#`4cS?HJG=#L>;oVd6=q5O! zr8o|4$f$N+=X_aD6az_Drjzn0g@ekt4^6H`)4nt<0TyH%ULN$RJ)1s9v-ZVtbOXxf z%WQ%dAYQRL-bB|Fi>8f8*ePz#XrT45proc|5gRwXh%Rz$8RkRm6V|@z5JM^WNyzxJ zZ;hZ%H3{X34Ze3ei0a5&k@CP5!o=q+?a{~bfrdPQSUL|VzU%IQo2h4)Jd(?6=JaJ= zutAWZnoDVdhlUv?Pp|a`aV{`Q0JF1+b66vyB_)gx5bIV>6WR-$wOMLO^tD>ce5g!k zQE}QF1q}k(#-gaR+_Cp(CR3dpv|9oW>a73~2-=Eb)8V{4yBjhuEnHnk;^yl|SAgu7Ly0DHw|qgyd>S>&E~n=;jK&%2>M=Kg#G zVLRqXoKqXDe6A^Kbc~X}Ewe`MT5B6^4u=rS)I5_m6tIcAYWf9MjCW^;{CBrKY`sJ0 zQ|j`omLft07w+>(k*0C{XoqBLS|E43N=pm!Wo6Lm&Q7#Yrw7_5fqt;EtD7Q!P*&lv zH173<$V`XccD-J)DIPv;XuxkxWZDx$Do+`9^;@h+*V4Rksen?AY7GJ*>8~lgj;bs+ zBp~*PDEZ~aP05&~Tw8<}p=f@;(YWExHqc-1%8qK$PG(*$dIQ9{@}1pgmOZc-BuCkh zkUy#-K+V7y$F{EO>xMy2ty)%r8%@^t8KJ^U_I~MFc{WRS1s%%+!WcUW2nAtku4&x5 z4&jAPPxQ2vy=*2_?Si2_XUnJNT+#ve;OlcO3Si(%6BQw>{a`9_!t*fp!%MRfb?m9b z65NBwZD7APkChsSJgfYY`(Hm!93*!&bOP(LT9bKh?!(9+CVJ6sdR3!j ze9YqFd)~GeldJC)e#4_Feh>eUFoSpR>2d0>E{X73Y@WRR3UyI(v@Bcch`CcxBEC8s zuLKGD?e?gsA2a1C?GrOuIt4(k=^0}5I3sgL+ZYId_i*psOVxRk^5)WmAoI8DPmxSh zSq1UUO-6aOtW6y#!|;Ul`S>1n+9LHJZ|s#4j%sw|^ND+?dEud|8hN}{eg$Uubc}=o zCcxdA#eHOlBQ|dz-Mp*u6)fOsNL!js>}oLsjN>iz3LusNX_jCsx0Wcv0j5Ox2zYHo&1%nqOF1_|gwtC)`WpE& zY>@tQKy=M1O83}+Jk72`>8jJ>Oe<)J%e3NQ-D>?peAPlP!SdOMY!2h)8d znN>BpXu?5?6Hg2%jXzpF>zAy=QfJEUQ$iW@vwo@Fc+A$tGUrcD({y%x3Bn=4&IsKFzV z^7lmIt`wb?q)x>XhP;UamND<CjHhgUNc<4&{G}h5 z0gYu_e-N-Jh>N>Wy3_}7#$U@Qf2ZZYx}+V`dxKWcl(t-^ih%(8d?qqdLl zp9U?93@_)R|ECtaIuQua##~=Y1G;gPHZJNTEd~0l)GQ-?G$4vSI$7k?I0E#nQ`IiE3vWW(~pzwf0k1xPNEH_e&-8!;TMl9UMCxogQU zO8BpYgSofhe<6XRRsJ!5dk**S9jnVES12j1lpA!hiJBu$Bmezt(H>sm=Cl%! zWD*3QQNmnBbI{3lukxJOX*GbUM6u>6{k}$^#x~j!e|&NPsjZ z`(F#3Q$tP{Up*RcgsggM^l{hgg(#LWCzy4RvA{zf;E&{DhPQ+KMk;&eTk_|}BEOKq?>fuA;6JGI=Ne;lUwQUyWBfWoZil5f^t&HFq=ac2yp*pLo^{*+ z`YWn+IfxVc2-S+;mgG>8rp_-QxNl*I@`@wm!HCECUD{KfC$w5CuzfAsy`J#&`n+M7 z$+<44yGQt^Bnuc51=1jyQP?8MnAazj;1mIZwp1z4sTK%|pgO}zFgftLr$EnkH;Qsi_i<8diu3cxo0T*@&rmmoCGQk@= zJ`vFI5z%CbuJ1o(VeofO{z-8VMXXhL&v6txocY{dZ$Iu?}Sp$5#!n4X>Ewg2|RxDIcUXKOoGRLnsee;ViA z4&+BwLXrR;F!GsDAp{fQ%UU|QPu_}9`YA){T3BM{GH<3f9?Kc0Sy6!_u8ow~PZ6NX zydn?iTfm3gO2N7V3<0{FBNbEN^ksUHEAdTPMhQ@gu_7GD^=jjn0@9i%nbe9&QUg?E z)|fmZZfX7P1V;pXbOp#|l8SM5(%d{8_1r4KQpJ0N_|x!q6W5-3bjat&CoBT&W(>qN z3YX%!`JZC`sf0OTbqFoy3H;}+Nx{IKm99_DpV-#<6Fc*{0E3ysH?fYA_(|lLAC85< zofOKU$wwaW-~RPaP{)%2(k!=Z{Nz*rkVy~@a^TL%Pu#r!eJ0FQhxpBY;QNX{1se7r zT}{B91|otl{)aOG`D%Has-m6)Lq!A#9v|9z$oAc*eRuV;sScYk3E2@0US z#&K=>3YL7!KTg?oA0X2X_r?DKp(enc90}K?{`*WqAgvIm#QG-AH@0MB9{@ zJN0j5e;%+slb7fTVfOml2vo+FXC7eGSVX2eAM*tT{&aF+76QS>+l_bnChiH?D!|3@ z>uh^B@rtOeh)ss_Dh=7L$HRGli zIojk(V=Fc}=H|T10iEMhJg$D2r%oR~<&SG7Md}^6n9RbXfgKa`^guP*kQQw{sVJ}M z^3`lQ84vxEW9u{dbweB=kraFS|4 zR3qjeT~auHMm_&ox~@KCjy!m8N~>h?9LjK~n=ZoYXjNkt+;l(YsAmR=KVI?=mX%0i z2CN^3rn+lDPVKXXhYAM%^L&suY?G9CwNIpGV2B^4cHK)X;^f+OZmr>+KV|{^f>p># zb?mva-MCRFT9hFei;~fnf}j0Px8G}%J4c5Cir5Q&lHi}Z4`WDR$TvwC*VA@_dZQ~# z72p?nUGd|q=T0g3@-Eu_i{lg7aVS0VQ}nkM?K>UA}-VA6s`~ZN8%fFsp=GV&xSFpbsB1oIjp;6+!Sh zqQ?FtOAw!}0@z=)CxHx29r5{`27mbKMCj0dwu{KNR2-u9pfgFJq|`;K>y1HOi!`IDMvewkY@^sR18)!3-%=0NuEO%gPE79KdM1P_9MaKR5~-T7ls@gVk;d!vzo2?PmhXF1Pgn zg~&rz1g16HMqhE|xE>uxd-w=5ZCG$MO3mmaBSB0(>oaZSgV`haZ2CZj?KkI@lR9jU z=+yWrE-;H)Ux%BXMi7TIM>~%+!Q#Vyvlb07`iky4p^`5meo=rFhis9t;3m)O8#kiL zk|>mjEr6v{>_L1dDa0eXz5;~Xr>l-4VeTUc* z<|lmy0(#=K(k(cv`rB|{w2gb5)SvYS?O(?!+?2MNBasP6!A%eGC($^!$ozoTA&GcC z0$_lQ)J-f&<3E8bp-f;i8Uf}G4-qNdD7Yjum(G>jAhKk75eP|MDkzcr`TQ9Tg2L*CA7&ePt?ccrF^EGNs~FIN((4Zr6Wj)f=Gb|`k%Ku6TbZ_y0x)C|Fi zg7pX3De3NRkVcRWK|s0=9n#&>c>w9| zJnu&I`Q7JUc)s`j=YB57wfCMiJ+o%k6sN?=zb)bWY&uzz{tOPtrpXyyq@d}S0o$zd zF1?OZA1J*$9f5{{FV3s6&PKY0K9io+#Q;rzSnhr`L=m#$p<1hYxM?v5u5BJ@%IjLR z*>OMoN9;7)YjjTo417U-lSDk#m<|k%Wc{z_?R*@xdp|}hrYXq z&5xk;WB?t5gVZb5i{idGOqyxOSEHna80ePm*Yz$V(_-f0q%T#Lz$Qg96VFuI}jutV6nhz`)8Zy-NOMox2bY`U$i9zbC^~KItnsx;N90dbjO7J3I4>gP7VWh*o>bp`vDO#d6g+-FSE8A(u-=>} zb3I4;Z&Q?kKRHOzklD(M0}$^eyo{5p6eKYrcEy?Mr*`R}1=%O!mJ zgL{yynJhV(Q7){vRz3()^7@(l_t4pjh29pm=k}+deZfd|Cu5RY?QX{DV z87?jd{A^KO4CE@WL522WJ->y#7&Bv}k1^yn!Yg@jYnzBFQmzaK>M; z<^Md#2L~&#wq?mIW5*(fUYP88F|3(inEz7{yDKyVWqXMNCt8z)d)0%c(a|(T5M2) zSg{4nN~6d&31FG{z@zYc(M`RJHsnD=Cl+IQgpMSnpYBbrs%Dw-L9u_^3vAwcP&MJV z(aO1a+a%^?FTQ!sPYEw$jxiY0oJJumiRD|U!WC*#l%UbXLk=kudtUuZx10b^?2tJc-nq)W0~ zavMu25?PfPLqXl@KPdbM5!gxUKVq?Ohdv^^CQk*$yW-bEA8eaEFoXCXyjYBdB_o?t zFcsCt#rJ?;v*j#%t`YAi&Z59NBePzvLp}M`85BQxPE(;oko5$&H(67Ss1k{M=#6b= z{_L8J_*Bgcf72nQo!}TcZ#~r?i{@4(o^5%#vIoVz0j{U*7%xv`38CA%Rq)1dpB{uv zQ6;7_?L~wn zvy)(4rFNm*fOL=z-qs5jX$b29hshnB@q(CV4dSgB8=STM1s@89K78YF(W35o^7&=) zBI-Hz*TZROL|-L#p5Dx8yR6fq42L;(*enPd3Eb8!+ABXXU^?0FkSUO_R%hmJNIYIG zU5)>>&93k{T|hAV@hKTXZJ}5|{;~gYi_gJTX;q8sTWjeKKl#fZZ5v~ZsU`Y@{B38qe|p~CsHu#Vzu0H?-?5=I z3Ug|oB|yS-e(P*E!j_N#!EKkqFAF?fF~U}?ED&k@7EQ3GGPx@@x1v~z*8|Vs@~RON z3A5%{FJUpKA#NlfLrE`DU(+U_2|=77rL;5sas?J+x>8-D*4(jk?o*oO=&h7%GrjA9 zb#mcU!FkQ*B2H`p#|K7W-%ugF7Qc~Z4da!thCyCx&4dcF=TC*s-&y8Im1SiaZHlG#1Zlpu z5<$)`F}(j%1LA>w5Hk6#SSnJY{nHCD-d8`kC*iF+#g?N?q*ynOhICMQcMyA&R#YSr z9K(}7mSQwrBqfj%75)0~q#BrfxYs%N))$ygY5<-IRv@ygZwpQoaJ+9J09Y_-E~*Fq zza)+CA%c>6gNu6^9t}iJM(K$_U4w#Yv7CNpgKn}PF}SL@PpGM<-@&%8MrcCWF(eVU z(8`BUhBmBbkwdTn9J!b3EJQG74M`tMCx*b;8>{h=8g5n5=&%J0%Pe1h!AZ@$yl|z8 zQUqkCqR;E1TFI}0zA6=zKg4jHg5^4=Cz|Wt2vdmufZl&g2mPJ zXmNNi`1GXbAKx!h2lhS8OZLF;&%T%8#-pqYxV$K-x%^`&==V z(Bmo^x_MHFom3PVkkC12#;Kxb18qTOCuAt5`p~H2f|1deLS@2hMtq6xjcNNTwiHR@ za~r|&8hdA^>0J%4PG?+uS9Hk9uqP<0b<~C=i6!RjHL#&2aug*tF+=Bb6M56RzE3WG z5@zL{(uD__u2Ud%RZ(O~+`~Tt6ZZKHtq;029R%HlCls7b3&doW!BX3;X?iITH!MCy zUba$1rbwwqU5V$k^PS3?%>=rC0!g~?r)tgQ`==2_<0Bb_VH*?@7cYFHIMNp4dTBUT zkuAXEymCT_FXG-il6Qzx{)k=cv*FokTz`z-#<=K5-liYGQLb`F*_PGBU`XtOdYKVD zZXCL&2OrOs>@Q_>)?CYe9}*0Xn^{uA8r&3qkY5l9et3a0<)k^%i?mO6W(~sBIrm0F zycy{tG-tH=1MQ*<_vVuZt8gl{^YhAW`u8T?FyJ644u`Dh9DSX~B0=3NXx`%XhXkaQ z8s*L1@N>Lx1>x{h3ox>booOD9JXwiTJQI(>qqw{iF`j1X!yDgttdjyrwfJ}m9o{F`J?!)ta^vYCqu$ZRJ507OB#!x6lWrR zUOjm|GTuUon@F#hWFKp2(abu7rXstr3+jpJWZ-E1aj}?qwpdmN4Mb9y+;!zOvqt4Q zXFM5`qVKioA3u2M!Nq0{v>W@+b79&k&&@wtFtHM_B3lYjm0|sLBvu8Z`Eq(REMhZx{9cH;qXY?gD z_KvqsH-Wa(;nMk9SMi2+ zE5mlc*ApH8j@`aNpslIA?)>m4!9pyfbE`Lv4K@9Iq4rW^6ER)pXIki_YW0Zg{MEC)lKYsCBy=+nP5@u{ml}Kg)~NEL62&O;OBnW8V0p)m4CZHVJR0J5jL|Iag)c z!Hi$ju$ce8hQ?1ylR(bEy>Rv@?PqB}Nc2t#OfB zWyKzZztWvHs-j|`0B*IZ`};Z1(Q zu@>*Os>lf%eIA+&ROgg5{ebmE@lW=l-$Tz2NkW@pr1uAhjO+#Q@gM*!l#$V1bB+B_ z6c`*Ovy}%(uk~LF@K)Q*At1@?JI`YfWqAU(=f6y&ZuP*)L&D7~xXkHP>LbH%7vmnw z!%M1Y2yV(Fc9t?8S94?|7jOjWTMqc1z<>RL$$qVP|K{KE zp&}s@GAY$sZRlYrDxZ$4>{jtkE*{b^n2nNZW3(DIZiTpBgWJ{yPT$gsu0dv&374?c8c~fDzCulW zW*}qST$0U)ROx_#^vkfB7n`=apnMIxmLD5DgS=;$9BWPRJ2G*MfM+7xW2jW2ghDb&WDPhmeKybOQ7|M7M6q*$Xsh`am(d$Mp?P`7m@=87aU$NcN9;>EAsrW}Jc%zA9>G(9kBC_X zes(2>jhdRwdq+o6eVh1Th>|OV2y;ROpk*fU$1b<&sO^SxdtpYA|&x9 zo>#WS*{z-r+qFyYDVW{`R1GJif?kBGQX3h!7BF}FU*@73>M@V~A9GK%}}3`6f<7PZPFQ>-5QKaZgd~*(0k~Bt(3@+=9!E&W1u^>jLH$_q>8_WqAfE$fOilb|m=x2VPKM)bb zG?^X*u-Oz3}8*0C1mX(+>_xIMr@I`(L}^8e`OOFMkcF5 z13UQh1$$iu;?|{hT()%Xpi8HT9bKvPk$_?J%FDW`wCOVFOPWhae(ccoRP?_ihA$6c zeXLlKZnke)R)aXt5B1l5D~tv^HxXVyd{jkH>o*p(|6&?xK@| zSoF;V8c`S;ljkk*9%L5>*(H-+;uF{DknTUl2lshaZZx3dbig-zpsg&8R^-V!`uAFC zDwg^bwrr+XU~VitX0Q(G)V4zeIqr*8lehYtuBSz&vl{U}+rlVJ=P&{XEIPe~dp zn?xO>Np^zb;wOd6j9VMA+19)=<=W+We<)M?u&&f;{?MZNjFvD^(9TbLqm;B^xNC>7 zOMJ7o4}l}L9|&rT8vV?nqt&sT=&0$h65B}I*)e`JJvX!I{4yQY25or_@IX#aW$qkZ zkDBJQMO0G%-hg&W97ot-GgU-{W8v3KtLjX59%`{NYJ`D~q@|SE0D}d7?+Z&?GHTy% z=6w+R#%QEg>wDnP9q-{P7T>cdE7>Cxw(9+4mg>aH1>qz06a!P7cYe4s2Fgywdg|6T zA@$XP>0k)ej!e>4115jXQmnO!2xgu4jY^IWOpv>P{_o z#*u5@e*2ca=ue$wJ)!-O=M@#PeffmR+C)_DqA}~-OBiPfAh1eun4F}$ram`a@?8X6 zFR@BV7U>jrxHuC5-aEE+JufiR%;wV7maCpuk#>#AJhOi2rgC(*O z6MGiELK9&~W$DocnR$r6#MR8}e`eF#1l&Q4z@-5(L99@9YE<6S$aw3PER)E(ii2MN zbY33IG3qa_%frDtGslfzK|k4S$90mne7J|PW&OAPfG-mOpf!=m< z@h$}PIQvusG69t}xJd>f%?h{+ixarGF)}b?ioSD%%anPQhjCK?NU~~k{^&H(4P2-UHk#;qv_h#`NUw7ewm*M3kM1-t zK0+0Vm29@LE}CBZwgEq2Cm4TX;myt5ye#GJ;}bf0m{GO3+N(~-lO&@{$f*W+OeCEO zIpGAZJ1Te_?+birhdb_}LOW6RLJPkvHeu?59oz0xj7teO@&KwFxLsS{1oIab-9N&Y z^LZ|k8qtKbD0#-IHLMzCJ%4 z&V?>8x|(5+<+1tkv0&5MK?e%-OzNcTheq`72IpesmTHn2Ee%Z+K|U0Wg>{T!ZEUQ1 z^eKA+&}Y!|=rZt4`fQ8}&4T6u;io{E@_u0!JoKsJP(ixoP#zOb87P5Thal>zBo+f& z3ZvHDj|&$Imbtu~U!_!MHh+M%gN$YfKW-e=2bx06AxSn884f19-(5Hz#FM1HSGh7i zpc$&TOo!v(A{VwB0ozO(AW5yqcGEFpjE%Vi+}-d(w+L&w3+K{6O0P_RuHy~)-?j6V zClYGz&bfIi3WgiWtbbRa5!dxZ(BhC5II2nd-s$71dT5Tso`R&paV z+ogmMaMC>A^pOv2ejz{)hZ1smP7!>gYwO1M6PC?*dVC>u?`KbVNP)F6S+3GzV})3 z-)Z{l>yn;M!C?7cM4AbXKcah=vQ$ZR*bNLBOy{8!Ls#1*S4gt>P;wNxEff*yllbmp zkv~hLoMe%q`U^qh9U8b@XX?YzxJg~ZUgchzlZJdNyr>d9uKlI%29nY>g>p0DFa`n$ z47L0Ez5!w@M1j5@v-a%i6Cy=@> zh2~vMjaD8Z_FjCmgIkq+xWRy)<+^@^F8mt z5FeNq4v4Ls57UPQvx>uSGVT795}t3Uv4AV=Mv zMO?>1>4v^VM-=L}Rd#T?RJDb9R-^^`$mIYfG>J2XUjPQ}1~}P=Ps06nSIB0~-E}Y0 zCcZ}aEoU2lXd%V7^z(kA8mIdpXAZ$|xv=H%!$uCnwCK9sYRvGPkO(#3|g`@6L)#KPmfWoHF`n-V))c`*RAlDf;Me ztW|v`ZDCmzw(AJ=Z^o+4t3J)&xAR0Vi6L6eDH!SXC^Fi7%j0->S;-g{{vM8btQgmU z$23p2DSfOU@$>In_Gxyv=aCkBkv1*e5s_3RxwM>8rEE=yevH`KM(_Lb&tL;8c-oK{x7%7_5&gQZZ76W$}8`V)&h0AQN zKO8hIqFF8y+~na+iJ^%&HSGGR{Ejyzg@8>_?RcOwW%M!Q#ma&IJ8w2=-Y6%Rhei`0 z5u|j#e706l=n~O%LdnMWgs=Io4Bdx00D_O75^w7pTgD-F2YM}>Zv}B~&fOQidN!@>uI40VH+TD#;Cy5X^_q$3~?=cMhj#GeRMf@nn@NJVg9g^60ei^Y- z-|!jQ(2xZ5zkPQ-Z&mJ?fnD-axC9Fh_fc#sNHd@a{E!i7W5;JiKs{{ zZ_|Cl1EKPAHuHJHYDM!MK3P+gwJ6YgTl>_Os8aYYlX+svRavX)5&T{nX{0=g;Qe}$ zQ|1qw7*dIfmO;fI^)g+Bs-AKP4_OK{hKR8mWH?R@bYyo$>B{?%v;G%sC zw!L6U$SU7R1Vv8xaq2-jm{zJ|C1`c>~=*kUh>wB7@bY zu2QD)Fr|x3wX7S?8++n3Pxr3RVF&r~rpJSRg#h_@@PfozMwO_nQ?pD{)r=qbEgR8@ zo?O+eFUELLUSS@$$|0SaxKTMbl7!uZhY@Xw7HV2)lGWrbAN&@w3xWJ_?XE~+`fGvg zsAUY2EKq@+l|QPCecbONMQEn_3WCeprc1+Eq`#X@?s zZ&MhYmh6AFz_haGrw^f3q@zWff$*7!0gXc;}`{Zgtrg8O~ix!=(|(q5RS&t9Dm?Z(UE9cUsm8& zrE|aC7`)^Tf9xdoP-N79$4pp)I`*^Q$b_K-F^%!qtpyWQuVw>#a`BNLaN3aNR!LnK zObkCKB<=G61Q6$4=Cylt#~lp2iaV9wX|8Yg-DC7n2V^;#-Tgq5S+;4F>jDr$10etQ zv{?YtM!lK^H&YB%p&ZM^a-ehH4q^6De z-qfnI4Bq<#u&K~&nS34MKaLV`0leO<*%gx>M8#Te2gOV}5OCvvwvG~7{g%os(d3EN z9luD(%9cL-V&~-!GJcfol1=y?_IOf8W{Cm8ha2NO00OrAFz#+|wUqbn@YHW37nNclXF`H#^nI0cMi5#FVm?*og|MI}i#*!M=h{|hVU>WYj z@lXN%Yg@fs37WUE%5z8EFKu@?qQ&3~N<=+8Q2sAy_>%42Q&R=}g~;$zGp&iY;XF|W z@^d0lkK>kBt&E>w*?=-fC9xDFKmkqbH1O|b0TV@4T7h$$UijnZE#&Z-n}^wP5oLV~ zU|`oIK8(h~m3XbmckaTQ5+Kc^j3jg4lRqmr+ZJT6^a333+bzWJml}~7KTHWoj2dMA z{r?5`G6?4Id#yLsH^UEUc?`=u$05CmebJ8{cGZ!PF7RJzvWFzHeBBxb>M=?-8(;rl zZ{s5ou3y@#)Zvy0Xq45^$Sv&+?^|iM`??+m8$9VNoyf<3$DIpf`)7ZR+0%b&)j!z#YhIf#8gTKg z{6ivc5xzfy^_#7M0%_TW!NCRfTY>rOKO}+x^dXvWAJiq-)=f4GzkB$D;(T&h`j^TL2BTOj+Hf*9f_)Pw#|E*}4UO zz5S~IF1E&w9vLgxbWyV?pC~=Tx(1ky99B+t+w!LT$n|f)k;HbQGaHw8SCBi2@XwqI zjOzypF$y#~#L8{_KDONcRjVqu8bz7V)CuL{NsutCNqR(F5 zDw7V%Zbz$*CwKQ77J+tH7>?-c%A@2O7;q(Av22NApw0jIay}nW+PAq8Fj1dKt>PCCxj)8wvVCGK;x|FCZm12S-jNqYpunr`n3a$ zuWjF#TK>nwf+YB1c{LX% zMgiomP6htgYd*UXbrIg)GiRZzZ@3mJ<}*QXcLObKX;o(?dU zyPYN4Z0{bqR7}4=civkztes&!8d1A4IG}Ks>u1`S?t+HL8GTNPx@SkA*1=qiwU-z!7cr)jP;=fx>hXa7p zjOv?mW9`k~`G8Lsa1-AT$7TP!)i_t>BoN=mzJG#w0}+6%7Hmw-<3E7AOCku7k)dBi z9Sz7?*=?}^+Wzo(D$2&|G^H) z7nsA^N@wNdhNV5-{c%;gvnv8XnYFyGIgI7$yTNc)FM;;raMp=niT@#H`s(!!SaV`Z zh)z6Z3!;0unHz>MLWZZ~m`g6d^#85^$>U(L0(UfFbuLMh8`JeyP$etE8nvT3_D)SZ zW{|wQ+7J7m{oHSe4K9s&^5lQ;exEbU;dE6EoD9Dk2`ulu>y-FnihNZk%kFi~E?8ivbh^&sg$=r8gsQv$tQZPtiXe< zmhZ4`-`8LGI288EO_(KpcK`0xosaLoIsM|{}J;91PJ#|2MK#)d?6)yIYEG)h% zaGJ0{lyPgvA+3H1v#t)v-?$w+b;0#j$#`dDrp@a8!RYO<15qmMlj}^=sC%*gc)S~| z44s=Su}P={O4?P{Q8PtDA|Mdq4GWxzn#k4WykY|XFU;}rzz+=%i_6PPY5nvMhX~Nn zA}<>uy6_xtE!+dYlX&(ha=g+3C3C34O`^uE0S%%oZ3D&ra?`TxkrN^`)ttplRU$#*9PvN#DuOo{N`w_ z-1)9damh?T)Nk7MCBUGNBFL|YjsIAqC^5*k+s9q>xF;$$ThI?7V0qOvagJ{{H-$Y= zU=WyC{JP{S@L)q+huoz+e4)1l5mUe=&Zr)-{byz5{I zgY)gt%jBeCvM;FnBkBR25`t$Dnc)rX^k<}UXr=LQ&8LhXRNiaV2 z%?b%Qxx*lQBqkSbmHIR=ujhw#EZgKk>_oyULmzqiBU|{xH>;`Yf=;PpoC{EZ47B`y zFpo%ex{eo(?9k}VF_C*7;^+V-kfg+ZZencm=Pm#NEVUm-GbcOA0Z4M0+@Oq--XMi3 z^1kyV2OF80eUCpZ$%5TyFe;z|2K}(i7vJb8#pr(}{JoD~_L;t$kkv)i=?`dBC8g== znq#UZn6d|TYl8YmFBfB}DSdQb9-_aUGlZZz$?t18fsIjgC2mqgU)_v(@f!+ht$Vi! z*YX4RReUuqfwRIzE(r0qtzel|zmJ=8T*cS~b23RN&0XEJwn&zdKRcyH8(uKGIHi|` zZlO}9(riLjL?wV*{V8(l?vK=#zgZg*H*2Iy$kM7gMkRhqRL3xqlCC**hViya-Bl$I z2g(m8zGKeZ#Hr;a)KMnB=25Kt0<6#ohEzHW;bCvcQCo-NFuS%o8he1!& zEpyy7Z(uY>vn_fyuoYBlKv)p?hg<(nC4pp8EDOC8?M^h?R3zz@)a#?IQNj%JzOTS% z+5GiyHwwSs=`2rz5yu{_!|kv|{R`@v7Z`byihz>b|3uyG{6A8vzg_@bGKP;!vbmiV z-`5Sp6=?Dxy$a__Ly0xsA^?B0Z_9>&&HjJ!z%BUw&%2U^-92zZ{&Qf5w(RGYhdEkM z_BM_52~maAG{gLy0t}FD&a5G(@g^h`rUS-74x3ax6q~;bxN~RW70sEL_}`XarHH8zpI9ko|g6| zB%@~m-CrmT3|9D-ZP*0PMaE}&1%15`@ql%vhLb}ie0C})M#B-`zT7)sQT=1W6*Wddy;p1ecEX9 z;`9Jy@)Nwax;ps?0!1rvq@kfP7zjqZ(Hq@;{cbEk-l99YZp~z4V#Ha!=X~^>s?2_I zsg4r6>WC#PL{Z5PG7Vc7xW#5)Gb=a3mbE6?49Or~?lOq?%WGm!GMdQ}dnbwwec_a8dBp`!cXw29i z9Sy5=F0N!GMWGO|bpTCe?}yiwEq=!6m22D1T)a>&)(ukfd)GDEZ?Q^~(KeKoWnjs9 zSkFrwKBDd{--uqC7sBX#63C?01V8q**m%->Nv&wE5yj+V1hq_fAY*NtH;uZ3c_G)~ z@jQdubFC&b_QO%_g@p*2;Xc87HO@==#}7Lp(KwyqicuYBTdv8Z0c0`H=O1k>HP}T& zDk4QsI;ig z^T{PcI@%-5lcK;f-wx@bXb&|+tXx7*)6VqE{ot2M)f_7PRDrF!X~*w!tKQGOE>3^t zi8W11P9dvEK7DyF&1TTSe@GEzcc!}otk%oWcX4t&+>FRbd`qEHW@7DJ1GMfG$*l1} zy$x0ENL*yt<{LDihqm^|DZXk-^|}d?+<`XDr+w<&N_XGou0gyKAvy-h;4%sw*djh%0y8oIdyc0YTga#Ro_vzJyFAU zT<~7f2*rLnZBxvpva5B1TSbUo}G7bQlv5UAtPh$|gSNm`Sj zPSIQ!UBw)nB7NOLuXC7X#h8KnFGMG4HRaL_yEovmIyWT-$q1KG=f; zhx1yW-?tD3;>|oRnwH-!G18Q#nspN8H?kWvrYqat3u6QhmqwoI9iFce|K-+jcB5$wPW4En%a(Y-ngu2yQy(8jZxg}J53cmFKhA_ z42yo{$Nui}@YNy!#fX=?6LF@YhPC^IxL*s#Ear85YwK_{hP6A=$lpV}8X>-ubYTAk z8zUtW$Vl1r%G+^b8Rf#+rUax-sjOnR=5uBS=`2f5CqWV!z`a>m@mvI7`zmdp`M5|@ zNWBXfg3tqL^)2`#5O(gk_3-qq3AbYO@38))3~w3v{(Z~{Wh+;W+IIQ`7civv-naFU z7O8sPm0?iLB=tCIiYi=|K*-MWM&5Ltb%}A=XJKFO6Ra9g>!<)*wbVL)+6C@VY~v-i z6Jw}ejxa$$Rk3JlAm9W?uf0dl`kism{SnEHMx0iH2jeg6xFttUqdP?6-R6M!>W)Wu*l(nGuC{k{h1oa;;xL^ zPuBK)CXVQpLfjNtw8!gXL zb$3dDRMno1hQfasWg^}=Jx18M7zo!tv*XT(|HqO4d!c%d`&G7EQR$%QN=oJ)UZ`rt z*{0*d6zkTiByvCAvr3N8*x0xBM^mny&PP*>(34zKo4p(?(yq=tY zg-m;++N>polIqI40RYkx9WSZi9^1JQ^cLxKmV|sL)B#CzZoG+MvbN~hr7;c)n*Wnp z`Rzqt|G5xR-$&}X2pVyrG6#V)96>HezEzX8-j5%0zL$i2HXgNTQ~)L|Q-$#Clps%= zhGMPBR?AUInH{jjHGl1%Sa7X7vM!sMER)|lS1~!+NSaImF>;9p#}1UUm^z&4JXPrQ zn-jF6nNL~q9Tg?XxMIZpdF}1%kG~fok)28Iv>Xa7D-nxcTRxY37=vfrtKKYdk2d+~ zCn2k0Z{yu#OqsUK*W^=@h@7??R?IY`@E#~AYWRMzScl72&b?e0IjR;r&71gYtIupK z`1$uoctM}?)ob43Fci5;Zcsm+QBN2J{}Q6THIgscLdYZ?oWu&6?q5@UvmO;~g%hv>j1H%D+uFK*Rx+(*A>ey*U`}d$=JOy@5-l+v_4s?l2^B*>z~$b=hz~;)Ol{-+G%Rl z9#pki!K-Q3y~JSYx)7P!7i7R8*xVRGZza!rx3m?fdS_Wc-He|fKYB0n=) zWZ*2Co|ZP8ETJfmPfu~Q*13w#{scQKH!C8D;6;V&EHWM&&`1eeWIos;jXK6 zU0ZXukYGF9253n-T=i{n8amo_tE3&wvx7BiZ*O6aHNo^Z^75;@M5rG|zc1;IKA}Sv zgI?ZarND^VHJ*TEu-NBjX7+6+_qU)Bq z|KemID49kC(qA1<^J~WzE`t+!nt#A*6-$lwq~oi;Ji;V49ymN6Yi(oKbAGewy1mm> zD4=HXLjCZ%PZxd0`0(JWPj~gUK3!D!b;nJ@F?(n>)4R<%rsa5TiauXYtaP1pCWC=6 zruWzKfPZIQJBT+kE~u50y$43l;X zGW&j?VCA_LD%b2C_TyR4bSK9OI%l1%2YjjSsBt>l=f^uH{=wZUVDO_f_y?YV0~u6g zu}G`-fMUIc*>)4b;&=}8eL;^TdY^0L#zdLSw5w}EHT1i0_XC=oZl#(!z{y2_f#hAP zQDu^_mi^`)MFcf5O-5G|_Z{YSofnk}Lb-aDMr@Kp~}j zNDPmBa9sa6G3lpOVt2Kp#q5QrNp%A2HC#^*ec$Y8T}(uO0tCK&m36Bbl~R2q@2s94 zg-L(b4JZ2GrPevA|Dpf}b&)$C(bXLTUwqqhuTukkaxf^4h7_`xk+Z?h7~itCvN{(e z>u{`I8f>a6gN?j<9_<7Zlqu?Ee&%)rKXzPy?qAt6-M2m0`2H{_hU1H%clE(A6AEi& z=gj4y?a96#!NkkAOx?ufD(^%VhPn}W2GH$5C{^OZiS8i(9R0;$fY zEhcIK^PZ@@k=AQ7GLMVKp7$RU%XXW&_Lnh+tuwebBd-LVgQR|V(j6nZHFQPAt=VZWVuR6s*iDIr=p z)Ua;VPEeAC*uCFh?%(xhR3+Cq>9CenR;CHzKK%UHenDvL3)F7q!wT;^x5wGcs`0MV z?7K^KbY{$;c&h<_Cevy0T@wQBnR0`ObCn68l054Dj4SlQ+9%L+G8B+AHNDSvf^=e< zo#E9dKbb1T^wtX&UkwDp%D~`{7q|j5x?z%fyN$xsdvCr8%31AQ$mQJ#*vI24t7~6? zN~Rx|8N8>`DpHd>rY=W5Hl<(CVJaAaMD0it$^3OyJP9Vu2E5FEshcqL@?yaY2!W33 zpxnweAJXF;RG}I z?j1(=Ivp|($Y8EJvhJJp3*!cKd-cB!B}+xMzc{ttovu9C91sR#`u4EnmtQ4ga@I(L zBY$Ko8YVgFoCIJO2}dK~G3#1Yi$hACCfMxHcc@wHcHXA;uo?M;EG4?~eA=ayYjV*589fjE+@aNVjIEk7>ETu&5Xo-Jybx^%BBn_LN1H92q@Ll|3JO$J)>Q&^ z>dL1dB1pV*yN~C5f_6tSp%QfTOuAiGHZBEJA|1&)>?c(aUh1y)e-8vMt{Pau0@Q*fN`w~C*p*E)sRIjd*cJLdu=(@iRGDctY*0*SI2 z@9c%?EElyF?d{p`o7vPNrr$rB&$qPMFU8X%;Y`w>9m?BG=m5+PGWm$l`fbYDWMGVK z7;uw0Z8xo!hJO5LPxTIbKUTD8G6O@jHd3<{#Zg!P(6Fz#G2y*%-StF zPLI}EoOn9LyYGWa%#c)j&SbyP-}?SjkM3)Abp}urUH=$EaFm>MO#VrHEq0&yyTTh! z<@k_bqSdW}N0|r=FKeWUT=r?$*FMUrb2{Qx+XXx=)iaxIZpP^fs;@)V?juF~7zVctsk)KVsXP4~-a z9%%q7&m;+fRSR%+bsb%6*GrK@0+!5l(5stGeiE9#K76~eYo$uw<$AM;?wE3`bTmx_ zRU2^K#6pY4xq{C_yquJP(%t$-s0ESlM?!k)#An4*Y&SP4=fPtUalCmDZ&$v)=a}vS z@*c_=OU#fBhw~Y5fg+^^WU_(@ zu>TBRn%^;QK5}rDs*h^C=!KpZ(y8xOb`6>}&CR2l7ne_O*Ud!ss$N*r%+$)|o%I|b zM1_ZIRqULag82E@KqpkveL-ur7S_8affKyY#aw!#`8zNtR~NY?B~l$-=Y#oB5ss}^ zg57b6sND-2(?0CrXU%|Bc)L(Rg*^hVEzaj;Ip$yW3m-cyuR7;X6pXWZ;bXkm+&ftS zaw}2TrgijHv@C6@P_quJv6?CYgCoE*AEj`hFU=ie@f;{DC?HDZ4iwZacUNU}=JK)&z) zWA81)s@l3gP(ctBl@4h^x|ME}ZcsV}kp^kllpBx4rX{7Nr8lw34XA{4cPSwa(hYY3 zdOUjIecyY(-v0-mXUntJTyu_|W6a+i+P^`cpEjvjTIK5;c*I(o0LOJtk4;4-aPFK3 z{KEK1Rj)nhVjt)>2l0tM+!6^bcuoVkQ8zU^;Ky75b2bw-c9di`YzPSLkrzs+$ zttz74Qxu1BSq$bBJ+*iPq=Rn>>>BNU{%R$48%-z`A8m-yWd_$}rF?m%^J4~H)BB9p zD7jd!mZA;;mX=7Cfzdz-z--(-v1#iwDAH1gvevf_Juu2hPK#we>X4KA8lOdGsXcKSmqo+1= zMqA?I^E{L8q_>dWH{@-^$v41)bhR{O?(0yyp7X)&MQT^E6Fs&>{pM`%0#O^2Hl|K> zvQK0|C;A$2-|3{OyVM)N88_u<6xnn7>J%n28`%uL^N}LQIQlNsC1GJ$`x4>4$DuQi z>9~|t?#CksDSu}kVPhL^&8rBHd~Wr4Y==EU?|I8_V6;9hwL%8mI#UuuD+YrK1w6WebsNo zo>fm&RhsVl1cY5hADoEq87+Ov3zG_?mUb@~-+FNDOQ~Jtez4sfDj{z_wV>9okggyk zeOquh>03nzlyJY`4to`En74ogk?SMc)UUoyX`Uwt_wD*+?_}l|v9q%|G*5>MHjp_+ z$GJ4z!7?)m>4VmO7T2Mk&P++iN|g*XK>52q^sA^to`{^Fz3JAxd?Ctv6FrpBI4_?2 zE9;%knnbPR6oVboy{`&Zk$kHaYRvp6Q?|`bcB#dwbz85r*_Fj(YrvJxRYNe~CV7AD=9&Gl)sqZ7r(qu?6_AVm%9O7K(R@ z>W<69^V|G{6|_uDHe?H0!sKvv;GkT;x7qvbY`YrlJvZdS36EFWMb~bjJW*AxpkmHR zE-T}PKC53Ds~mIq_%+0v9Z~toliqvW`Zb0_0T`T*Us<|tlF?k{kbP=S;?16^-?-G$ zU}8wbZjxkf=-{Zs09@y!H^>pgz!ccEp9xfZ^mOw(wuBTv5pjBN8W=+J;jTO4jqmeb z`P_7zRh{p6L<_U<8%tpt3LWN88K%QH?BJqcCQB)k=ns^{;1VNC|4so&T>wt|%+ zesg|ahH76Ax=vEQ??2JM(*T*7<#JQ=zB#T?{k>#WW^a4$Abia`#s1r%c|LG&iStKU z{O8Wwuc_9HVm)Z^(j}Q|_UqA~4fjgjKMC-Ej7ZRA$y;gZIlVP^6lpRvUq#I z@$(n(vS0=c;kEr;#x``pLrJf`@ew&s&w-<~RG4Ib@Jfa_cK66V-j!)_r|rf7oOn0X zxSz*&$5_5Bt5K)XkYE92dpuHzMJM*^x@r#R+S?k-O|pC7 zDTOG>NAb=O#=tRl4EOVo5X{_MTks&G&@gs zOx__LNV5pWAANXueLF&zvEZrRG96POl+t}reaYOnJt$P$;(GAzebT0_`H^MIC=b$$ zaSzk}e*);qR0E0ZUQkG~8FeF_##qmerR+w@H0xIn>UbKP0_Go2e{IBXPQ)LbMa0E} zMLUc3P=Tgq?YBypw^5XImVGubKU1Hc-r8g*_yHMm*Aae%TK)7rS#_yT9amBfyUFLI zr%tc`a$LpIQ%OrFtHK&C7NLl6)xod6e~ZU&9?5B6iT)+PF;+9S(#F&u& z6HYCP3M7f-dmJ}bGeffQBc;pSe2{_&XsBp9FctXvW6@;!mCf`#bRQB4hIr59%gn+1 zu+|ppcb39^C5+1n?4oyX6Hq36Os+E;`lHhS`+sAwzjLZdk^DU3(TR%?>`lPGujQRP zVodeqG5)gr&L@Wtz^&@>S0o)HULy*^+hjXrIX_}OMExryZqoOkg z{OjA&$$hW2ld#2CDyKEOYS-P_YrpNnDHBEo8Teqh;2qmjSDGj3%2L5D=Qi6MUKl~A z$zxFBx7H{i7&tnWVCrbk*w#Rgu=P}oQB z-Tl2`%kr>2{`*xgSoW^JYdHMZZg+aBkgbsIs<^A4)?&;wC zHbe&Rp59xfsc+*eyFV+%_U!k_%RiE^u+riaU$K{kM4h)2`Lh?qGL|n%K-9Le-g1@( zj|%u&rIcFOo~(X7A|jotZ0408ty2b5H&A)^#jQIH;#HMEyt#V4-wp1C#4kQW@ z|I3}24evJM7zT!9*DWK5vpIrAa6Wq^lE7P*dzN(%H%vQV`LkM}n{x7LT_a?n4f6cV zmSrbWLs_^^tsWapCzGzUd3?uYVJ?jphskj|{?jvz8(4d1H2cQ{&PU$95%ApeCMVm2 z2x=OdB4NlQE!@&lyfhAM)B|nUf~P5 zJyO-QP1+)&Es`+UPq{SZ3w?nx=M9LZ6>atpp)!%upWc>8bJ(eJjTx_|lyf_gFg-D@ ziKb>ba*P=-VQ3qN2?Rb9!84?Zj}~764MaAFoj0oaQydv^3GUpHUn~+j=6#`me|Z>A zL*i2Rlz~b4mE^aX>5~M}Kh}HB3KO5&hP5^JP-Nx0W>hG=Eb9X%fH>$miFu7Q1YTu)C$u7RfYFjyywk9FSohvl|m;DzAL(ftW37yf%tDMRK zKhw>!%G9qG^HuDO3uRQYen0zx{PX)J{=zwb6`1xo55tZ1DlBJ5Z(R4H8-6%a5Q3VV zsbRdWnqne3BaVWEq-=jhCG`Bw+GZs0q6j+gU?I-H=PW3{>DW(-f<*K`d2g9II&v-# zRSG43NsNn=_A&C@HS(%~r#ui42(x~NmF-yvHJ$Rt*#>kE2hcq^ONam1FR!x{acYXF zFxS_oJHf&T5Nat74)T+mZ$vTGFIGHBdnC z8aP*eF7qOik_+pDg@JY}BOnXnL@8`+Y@q+lV^cE_Z(Dn7`VjJa9TRE{28Elq(9^m? zLm7pQ*mJc?+nY(-YDX6#!036b*?(Q2oqtmqTtbb3fD0XyfH`};x&r37$6DpRpUm)2 zre56g2#k9jHB}umvGu<`TC0hLAqkBXf2?=$`u<^8|8LNL&@|}*BG8&Ao=*M!WhAaG zL~?VgVT4t;-U~@)@sUe8b@BSSXs9XbisrRmxOv`zPt&)L=Eg^Yn`@9QkI*%+B!F< z3ruj%Ch3by$0+sn(uTfp@-KV`x&*IRN<@GzxjB8J=O4R=Q4{X>LI>;ZS(m#D9Cp$& z;+hUz7y>KWwg)59fk4jeL8tS&rlUW&P5SB>bx!DS)%@*8PT|Yd1vQr|s_#Hxoa~o* z(&t>u5?)$)ssd3hNxiJ;5Bj zJn@Y1_9FVUXs%mmTKGvS=T86M%)bxbl^3jzb-I~;8YdDv!A}h=SP+MRG)Vu($^6Qv zcRkN87MeLq@Gi4pb(j+nVh%8N@|j9+x>(pc$q?;CaMHUD42yXOq!ol` zEh5gtS6&KMe4wFkXd&)@Zs@!Eg#?KoIpLgHoj!=r)WJcMrH+1|z=2EVdfNSPO~=)3 z)`~BflrUVy3L*?qA-&Rf)*%x-bK|B_%}`)qP&#H8w1p}>_+qiWrcGXL7`!?>#pi?q zeyCr}y(WKdM>jKSfmWK;y@Rc-vN7$tw=bp_&_S?V7)h~?lXQ|MhVRyb4jAVZ@B02( zLvV9xa*wW9G@zkxQBjc#(9rkWADZ@ylDBV6Po&L$z<#8f^!*7tF5q>;8|BU=Qx6fk zsa{0^;Y6gP$V}dDuE3hTY%T@;$m^>uMe=wPu^sUIE!{=EN+3cgmQm(8`x4NAlcJE* zgRS*=85(JN`!}`tr!@esSN3)-HPsaVheNsK;kna|$OxjKJr8P$YVOzWQrsfBXf!asxGWF0XX>kH7z$17K1-;PanerI=ni*w2@QodBC< zKcHp#-=9QB13v%tLl^sH0{^#EBvk_Y!HUIP&j0?T&#B4${>9{fXcMdh?pjgJ_%UXZ z7GhBmUEA}MUR{lPo0ZELVy>faVnTb%D86-Kir+K$-;$4l1WEFnfBTlvBpHP;_4*}L z(8omr^e1J!J8DMbtfOxpvRcl=q9;Q%z(V(*C9#K{*${SY--)ZngFpyaZtjtr3I62L?-t5lg}hoV zSPkh(K)_9>603-$tao5`ye_X8)y^)O^VmEo;mcCOaAupf2^+;-&Y^QsT2>xaIpqf?cD zkp%YRKmEBoHEWnyV}mr#Wfn;|$sKWR%+(ELm7F}}y)P?YzM`46W{s!5UiJ#hD9W<#Tbh+NUjjd1*!usL)d9 zj@Y^%o=IrP^P*eB7PDVPE)%0MOyAY%sY;hdeLw{XT5SdZlnXH40|XHqcTWA7OBy=5 zvwW%Ct0wzs9~>JK`R z;CzpFN3n4&FabOUH*L&$OlZJ%15Mfa_9fpEwnp6@ujXoar-^V8lDGi= zZ#Hn7Apgzg%YJlT1q>cYAA|j(wASx0&D{c`1324l&C4R%Uu@redFt~CkmN4Y;$Le6 zJpw$rb-*jtOBC=Qa}WURQ!>gm5$s7W7N;2r=D+}TbbSX2vE{#g$z_%wL){CA zOqa$=SxC59%m31T(~s?28-^wt%)O&7htVYUd(6#Rn5*FSUGadpi4I#*L+YY@zHUA+yNYXz#`TCGU zuw+pbC>5!4rce(EuA+dgfSSQC6M=N?q5jBg{B*QZooJZlNaPNeU?X%U;6ZmJlUDZ~ zt-_t9(Tn6?_yl!nEDC7#%fSUZZS}j;z?4Hnld*0oXmHbD1ReOwsrGso@}9}Aa3Y%a z#-vY42}&b;O2)-y)_q^el4(c9*rPgkhAFK8HJW>N)J_?bTd9p`V9LRYmj?cPvA@`1 z(L7tq?V?0n5(=^b)n8Xps5c_teqKGk@_KLF9c7(ukXta!U=jGbJeqSeFH?@&c@(JM zh8AbnPL@&B4$}Ta4xz6tpN$La&nJ=z?YMAl)@ZV_veUN$`ewM-7&?Rs_cyPc*8 zTCVn*>U-zYs*S;=MI=prg}K>D>zjNN;{!gFSBya-+!`%JH8u6zhy1pHP9E^k+o7r# zBOv>BXXqQW0|Q1pnN>k>#0`KhXprOZjI&})d+sxu-^JC2<06$6z;eoQwBRa8+Fa}>kf z3hxVsX$Q|v9CEhe^oU#4bMxvki3g?036pRQowjD1OE%W1K*wFcpqR@m|J)rZS2H!j zEH}I;3^*X5M(L}x%?Q|H7-Ch40MW%>u`HA{avsq?%P z>dgY-6iXh$P|;d3%tOUgQwL-Sh5H&Q0`7?P2O?-iJu*t^Rl08H3u_vudOb|TI$E6^ zeja21`7u{SOdOkjjbQUZsQTSxw_dblUlj)CvM-Mv)ZX}#2Rd``HM?j@P2@1{0L<@{ z{lajvvGu%k?1FtID+Z!!DuM6QeyJa-!GqYBPL zZR8Dw|EBmJY8Eg&HelNGw zlRiKvmK1XBPccs;|N6~jzzd5IJGlR_7|; zOM@DI>IwMt#!Rq7htnwR0sL#54%@r?s9r`dL|k0FJ1t5lL3fMKP6S=X z^u%B9d(LJzzEG)EBx--zTDsP{D+)FBLb^?8ZPJawVM9d;-J0`w4V;dMZ^c(UCSF}w z*FV51rw7-t#)Y7^`&vGPTnUuK7QtSlC$kaqVrrHsuM*FG8s1Ynb(lY~-LXt7euoOo z8u%q#Tm(m~8#SGKuUH~Yg!GlTd+_yRc`_x5-O~H=E(K!v!@cu@iN{|KIzwsIqV{8unNeB*=x8az z9EvE-Zw?&`=u-q4Jt_WuuXau8%Xmgy`1nT9M)%^xZogao=ab`gvH9Tf?@{w|o`(nX zi6<)^v!PWRdV(R$haaOh%smhK?SLqP=-XH@y2QlFXXJrM+ppe4*77IE?}9nn*1cv0 zbH8rim3vSjmGnohp@0{0rjI-;Ta2+ptk064!r1`8MxuGq!k#ne)@8?36DvY{E7W4D z`9n#to9ab91#K*bPN>%U0ll}pni_PU#;`fO+6L+8r5Fc@R z(rC|Q@fs6B*(;TI>lt0t?{Pvg^NVRrpA4>=ubvqLHD8(L7o)Tzb&t$z;u^#ydgy2p zx${F}t>GLeZuwy=p(~y>2d$L@bDuZ{j_;k;IBSlkvh&_kRW2-;Kkn5MTyY7mOv}zM zXFh6iJxOtM`LKuWxgrY&?snIna{?^lk)YS`j|_CNj{XSDl7YEsupxz(7Lj&Ra}BZx zIDCN^0|1znSoW#xlRYCgt~V{KVPPu z(8`HRu5xBs@;6^S&e&LIQi60SttdA$te31;>*o|k5H66gsm>JV9?ObOL>g+XSg#%8 z8EQKQ!6JK9N5&Z~_jHTyC$~y!1w8HwGSg`jRNIgku3xZFO>q6)A?W8`7yVMVsJEeI z+GttXou^aTGf{ISuu;Ly#}~_duf=8?* zaJ+EBIQnhp)yX#c#+&*`N<%}to)+lX=W+PKx3L}YpT#yX46PT<(IoB7X<(C(QxPZu zofLIR^8-1A=Zg)mL%UV(Hyd&A2CHB;OUM$csY%mLdXjcTxY6gm)!sy?p$1Zv< zc4$uP?Rv^+cGN_d9{f(~qzPnZ_|p2OvGv};=6-HXgnZeE&PFazwPP36eEjO3@Ta_^ z?~Q61&K$f6d&P&n;!{MlEkj?(`MB)j2rm9X5 zW6lozRnWTT+t01`Ff&HBc+RHp6$l#h?vrE4#-#5RzpEO5Ib+_$6v0{?2%OOZ;g~{p zB#H7VEN$Q<49{_lI6y331d|@J9*vk`2lbdchRLOgLHpRXKA?iZBR3;oz!6f6Ne3Bl zcs)0&s{^@U)!?qGmn8GQ)eWDJt|XdaYWB6Ilw**1&`4_xolRdL%6?Y|eG;rXtjQu* zl3?cA?6PjdTSg*Yr0)xwQVz!k-)dW+?XGv_K}~jp@5|ych=upmx%5>ZKG2cVTD2>J zwzUNJJ&xJT_)OOE44x8UT%s#D@Vnuz)x<1Yq2Wr^bD1GaW$^r-ve~V70Jk4<`lcGE zUgMzy=_7}zmDJe4fyGW86|}{gl}>z@IAH*Qvhd|^;?I} ziB8_jFR0R(`e)&3;U@9l)tROn&&GZq2rMvvQ(%E%K*Lgt?Socc1}gdc<1IH?h?-g< z?QC{}n%Yh#*H_&(?8NMB<+^F-l&Tp{@yeD&|H729ui8wMi1)HMF{?04TNqx6#=J1= z-?4=U4r5|32deVX4r_X_EM$Yidx|%zDgxyIGMdO_Z>d}*gBa7VN996zV3#yfI^S1wATb|1QNf?#Jfa6@ zi+7xO+=K4ntO7b_IT80*7Tgi!fzK%DMFGdvqdl2V>;N;ZbWmnKkTASwx>M-{aUGa= z@pyUo`}ad!Ix{YS3s(R;e3kWc#gA+(qZ~Qn9mo|Q=lpA&jJd@P?@KL)-V8kM#Rp@} zrrWLK(gN;fjmL`-!t{v35}xGWP*UQN!8@cO3u|zdjl&CzuXlyNiIqcb{L9Q`1QIRF zw2-N$%9qbEyq+{VJ2zE1A?VrSZDQv_;R=1}WgFWf-*^4HZAC5y60{`{F`m*pA+PG#@NY&bSCJ9aAcBXA%`m7j9Xy%fNyEq=&w5g_4SZr4*2#gR) zHH>Eo`2rTdCf3!5%bx{vanaD1?wWAc%V`A};cV5zlXJ@O47E74nu^q!`I_^O86y(I z%Jkg(vqXsd4ns4Ddmp!v?U4L#L-a9_61FyJ(kqEwW%tK~+#ZdOsh#8xWOyFN3dvy- zv+;059DjGP&O=t>-*_*Sh@vF=(KYUc8^{ngTz7Ju!j;ideKfWiTeGvj8D%{jbDPh? z?hy>=-`lrB;=wxBx+%M?>0ll_e2WI@ns9AD=`S{@(!Utxs}3LDqaWVLdLWbt{Akvh zKj-8gN&=i4;2t~7Qd zDW*COHtv$jf^x4eb<-fMajRLQy#$0^sw5Be5hsU8Vq&9X8uRleXVsT%y>tQOjP^ffVZqKi8#;w^rH2yXVC{gchHDmnAnnK3>{CtH4 zpHuscf2>$-ee2RYVMxVW?R%``K-TZtvm}S}VhM(Nf-v;H7>`rV?X{R(yOUtqoST^0 zqIIf73{LKR+4!ZGfIu!NN9mYL}+3URPEo>Zn;*fnAr zGn^4L3;qZ72L^az74mSkS2vosL@SB5^7+e2T$;lsXPTC6UHUd`$J!8i3HO)=@(76) z-F2G{)hsupg(SwH$Wndz+EytqA%!-n`LIfDampgw7}bszBbCPYW_@!m@72^etW(w) zTR-Mjxyx*w1UaG@Q3Um}Zu4%}95S0+7yZ+I5CUIwFENXn$*fUJ` zkfA0l55BUm88bN@sa1-fVcOHMcIfu}n<9Dr=g*SM)!2xysP)Z*MTl&U&UbMw7|zYE z)*9k@4H|-*aVZL3KXToJ81zfU%Rp%yWo1+Dhij!t#7DluTHyGcR$2?f++zt5G{}2 z+p>5KL1i}S?O3O0bP;LU%^+^=rgcrFYshfUkAfvw!tDd|I2MdkHv1NHj{}CrQ|M^ikHf%3ND%j7f##k1rc#y@T@TQqO=G$NQSf|sKPe*J4Z77=wEAMd z?_O#14>3MqZK=l5s)o?!%R@~*2*f2t-(%)tqvp@fUqG^Cz&=)Te zxbYIAHps@V&K_zsQDAE#p3RlN&$Vb*bo^JN?K{HFP%r z@v`3<>dxd4-FQlM`IiW%-mIY7cj5?4C8CzReih9^)=CyUpD7#4dADWWSB!S3ZbYax z`|?8x}WU4&cjo8V`81_BwTRcuOl@o@yN@*ey2Lo`s#Y_svDR4;iFY)!xXfPzdYTxN=goQ zc($g8_lk1`%<$x|Y3YAeXw!F{6ZpBSrhd^7`JlUeK5lpx^^LC@l6o&%2yLF_2#jfB zAq6$d*A}wO)%*dk#4E}fxRoR_$bw2a-p#T^qm5dX(j=)WS44KQ`d~R%E*Wo&i(aVN zs!=InI+EQSv{83%XY<(T ztXP-p_{VcC9vHY}?_{qmk9s`ku=rH0aYer5Bv3HQQ=CGsNIz-4!>CA*t8yTdB=3({ zNd$8c?y5kFgL&kBs9~HcN5u6_=cE=zD5hqj!d-%ph^VE*-_xpMufN!7wc7r;Q7FP= zwNx(@?#X*{_?pFoL+kD2SFyt3gL=Ia)#bzRFom3WGHzBSK0USfDUP46gAp(aNL#Ml zEM)$X_iw>2dol9b;eq%|(H!nBlgi-JV4u_i^DX7FhOq#%0+9>k3j{TX){9|5wR_q? zNj&VHOtp#yg5tA)8nfW0WAXe2z3?a+1^@e#@WZI@Yvp}?qz02PwE_^ZJWX>fyX;}J zo=U^dECio)75c1}R5qay|Hkw9i>F7jq_S&b8|=jS1f`=x$a<7JVa4X-nAr|cAu^x+ z^eO#~If48&`Pv?#7mxBjoqKrTaCY+tOtE8BlT3VBU<>2`xjJ;xql6@b^8tO0rx~J_ z!wBuAgdx+BiS5mpFLUS1yD_Uicj+#c)QYbSY+6f`WyPPVbFF^;(6o?0(IOWKHN1yq z#_dC$9p`mzYXiZ3b?Y}}5fxcs18h(d!TMC2a7>491BIYwi87TD^=iF133Abru|Avk z*T`{P{C6^IK%#Gzwrvk|nexYH7qag7ZULRXjSF~5xAw#MB0Q*D3~?MHN1m{FZk8-4xhF&| z-X;6ZUtr8}fzdrTYu2eHLO#7BbFMi&Oq|%N*5o2Rn3L#j_YdnKv)ANZ_)NJToOrki z+w9fbEk8U=&ew~{qqm&G#5b%A$<8Zht~trc5MT=o3Ywl>>qvmRZfs&40nO2)F^BTEl`{YGqK*Vko63`MIy zKkn5FFB;v6o@N@r7rCnB0mTyC)9qDCxM!8tZa`74EkB;&HtACBUS4JL$N{U;tp=o9 z%$GM%^d448TWO*;%>(2U`}Px13c{%yQ%2Xh>t`K_XJF!q_2`sa(izF73JhJt!e_`j@!^;`0n3- zlkk1FF?Hv#20bnK`3UH6@#JVxGiF0*?d>Kcs+#3@ELn`W zv}R1HK5h7*#d8Y12Pg>6BwANHxGq;xh+W#=~ytGClPt ze@-0t{K&_>N~z|Ju3LKyUTTq=j+Lq`nLCU)mhVA014M!5+AJgD#~@f}`cTJXC57zO zE+0p-Ky8R%#A3@qeC|UfL5P0xdI^O!oE##*`A)mk?)QpKXEtKuZhl8!jAQ@X;O35r z?cmis9oH@v!4yZ2k#?Pu4Q`iR1tIQ}D)&aqdC01Vkid3;&upU5?$_W9gBGA2_Z;%P zj2@i3<~UO#F5$M2n_b0zOk(Pybs1efCppwhjJT1+Y4#9)s1Q!XpiyVOI_^HB)qXvP z2iVY>TS+?nz-5?33FnY25ko6P_e}5~U_gV@- z_J>R050!LfQ&nk_r*vh%mD+W?K=&aBF8Yr+*{a`MACHzjUZDaqMFKcRQ4{{4NJ83f zlVrZCk5G-ulsr(sSY>iR)fh>1k{+wyxB*F@aZ-GTo;vQ-liPpM@=prn;WG!S%KI)p z9mx!!r6Eg{e0-hX*Y%XY>zJ16rX*jxo9((Y6YAIT)7ujIY!m-D%K;qLXXW6CZ|_hI z^PSqA3X;nhUrgBB%l154avKRU=AXGv=XEDxeW|F2rFvJTB!XeZc8SfU;$VC>{E0=A z%?D$_#P(L$mGUW)AbA#{17uTYXKo$4Wrgm<BAj z49~vXqniRP>pCvBHYU8K8LVm&Fsx5&QlyhY?c(6GtiEOA=qp3I}}K-*QSxM}xwP0tilK z`WOwU{MYgB`j@2X9%yR;TegoPDN4NnhdkArMePl1|wV4<&TqBbX{2Xi$<$)_ELmem{Qaj|H%CJ!)n_~mp=13FR_)b znn(cm-Nla|M%KtA9*^Sps&~6|O7_)S=f>L1qj?Xdq z)M<636m_pe?``&!Ilkuu_=1ye)U4+!-w8E|=RoE3EHta$`s8?&EHNT~mWyw*1K2;r zMY$cM1TQJx%Ehg;vM4V3%bdN>N66MA*BC$&(CKajy?S@8Z_zFheVjk~UCeV`o|fIt z_H`s>M#C%5PD{Dqb^z27U4$zMtuoFT1LJf-%oHCXNwM<+dtJgbzXPBSNV`~DH(frM+(lb27O@SHuK#)P7UcIr0tPuy#2CAgN(Y6I>N6#}f|#PX1uhnt%qBd4;Kp*TpD^Th5_8IDk?W}hOE2CU z@e>sO2yR|cVT`!OMIZ~;VT#~FABv_3`-u+_AuEdRuW#S=Z@Q7JF8dj{YxwtA2w2b& z%ZpjVmBC`{8FJtB>x-krWD~3`z7%gpmv_rms2A=j7#bSR&!q%wzA)F>Zq(n(W09Og z1PkI4tn@gVbN&psfy_sh;%#7$rr0HY71-06B~Xwj>ne&vv&71mZ1>k4{>XX!s(Ax< z@B;4vjCaA>I{ z$H73PAMVW5`sZrtX~|7K0LRomB0GFJyf>e=F)T*&Z=#+41;BBDaas(*e)u>7cJQDs zrK-zvHOCoh6;_k$RTDg#7W(razN^p*sh(w_u_2+;mGn*!jXs1%VNi)K)uCUdtB+KN}a7&(lfYR;Ao-@qO5 zjI&$e*?=MXkwXT>>n=Vmf(l?JQvKe(XXoL0i>#cp8Yq5Co#ErpPn{W1y#lPZC5tU( zJR_BI)dTJ8`+kcht{Uj=ZcA@nggC7USH(Sh&jxpAE^zIru0nZrJQ3*E^ge;G>CAq@ zW*>F%@UmE+7=}%N2nRbjH z0cWcA?Sa~#L#b`a3?iS^NW?Y(ndGz_4QXiP%E@Z3fPT=;{_=^8r{qy3P4eKxSV$|MJH1T2!VMh{6*-7lGn`6BS3 zy^8)=g@cPbTd1A|TUXz;o6bg0Nw;lq4B5WitC&Cr3I+BE8fRw$J1bt|(tXPTS&BjW zB@~-Mi1piKK;bYuR~hpIwvB~5P#lgMXj#1Q&~`RU0pQK-ztpCx(5XJ9h4j((=ab3! zSdJIpV2ajD!=<}sC-6mS!7BDo<)uW_Dy@c5&d^_kAp)dU~7FQ$-0#Vni(nI$ph+{deB%iL5cgg`eI@YU-f7xhf`$BgHR>A7Kw{G1^6L9?oi}P(d z{&|89KuYGs6tsp0e(`H+YAQad6=ix!0o(A6phZ$*#8!d*PawgYZ-ix+Bs%NH-4D9K zSHt$|JfWbED%=>M^b>D;d0v@seXQb z796kNvvUZ$ao=I(*IrggbhFm5*k&6|2V$65;-EhL1nPT8WMn1HJ8+P zzO^N$c7am;$zX<43?zl%+sjPx-(Lln+yf39G6kkr|2f3JP1yep`irK*#z@}Y-n@?s zlrJMO*y#H1iid`U`&%jCe!1JR;-~4PT1|WmacIAU`pLyi1kRYdIZaqo!Vb4@q^eiP z$DMH@$q+GFlkfjMgwf-U*8c}!W=()Yfa-^Tv;XWb`WgV7Qx8u|?>QE5vDK&auG7B) zh$`>G!2ZdZi~T+zY^r*-JKNbp*TyWs0QTK1+yBgZFpB6u8}v+%s->d)TOfb`0f0AG zm-xg-!jNO%%{M*mqCJb4Fc_58-+Z+DM-u5b=M548AeL~}8)N3L0N9mA_IX6WC`Il; zhyAtU-hIDISSCCIpiuz4qowikJR-94=H_=3;?wEetf(zm7Pxi<+@5+tzy=UN-3Vc# zFMs_?&ciL>>IVd!h%-_pselK^K4szLnn_9g%WR&{eVBo@lu*pI<%#C%DW2#j27}-Q zI5brKzC|sj{W+TP-@0k9L4IP`xWor){BoUO>jROUz)$cZ$({L6s^<59r{mv@nbSj< zXxmvG%q^Y)rbUciSj3uj*fZb5y9xEAl`#}$k0pKD|~ zUeS2x2!DNVLJyqWrwfifm&_U@gL$a47>*^9vZ$iia)bj_`yX}aznKW&yQe3jjN=)r zxe{IV7UBIhj=-kPBr4VR%z_CAUl)C5d1w%QG-AlqLwvD*0CW*vy>WBLs;4;MH%-0J z2zKh61_@iLM3;#0PbvfFN4 zhZjPoF2oX?X<9{XXQv`zGw<7)MwesFe@i|(Dvk(t&w~dVoucUMl9xeZYUxn{{gHsD zv9uJaL)h>0Yoq0wHh@j?aw}7V+w!$CE$N}IJ_HmPV?TqqgzI0BK7q2vGXSGFUprUDL^N6Bn$7D;a~mSPKX3+rtMQK?b6LV}`K0-%nZQ*s zD`sQ#i|&A~!G**%&(Gp4+^8#j_PD2KMx|*X-R@FAM2*4@~W!-J4iX@t{{j zkrOs)OA0JIKCNBV#$ZIheJdCC*o(HmPJaREVm;0QEc71cM0umr>TN{e)}WvMd|y_d z+CL~Tg7$LjcmSB_o!#5xBEsaajn7xM8Ct82@mg2(m9W$pFfrT>r+1o4tJ5jtrh8fZtDjefA`I+jFAg zq4rO&{$SPLmaT#kW1^|iX(Q+Za7zqZ^i3f~Vh+ee&7Pahu9ESbr==XJNoi^Ns z{%TnfZoEndM4FLf+;`5MBse_1Xqg`g4#N8T8^8YmP|TB+d%Hp7Y&5L#x!r8E62K6Q zPWNep-*}v|N0{a(bn?2E(T`f=pQ{Gf|AbD)0ed7AyeZ8GJA7D@O1iHNoGFy5 z>PW3LvVls*{{pRSd`Sj$cOWGI2camB!Zu*w54}ofOzV_K7%?n){8;19wfx|z{vKj= zkpgfCmM;>0(3nT-W~w@YPS1ie$$+k_PGYFZ`A!dj*kvpIC*U3cx|A**wUv=Ue|V(s z^_mTZ2^S{qr+G8gq`N|FztT_wFX9c8+)oU)Ccf{9{eFk>qOS5~l$O77bAM-hq|{o$ zb!Wv~zRLR}qAICmR~&tf>tfI{Q|g-^gr!Ad#8j2M6rlmX%ldg@OwVpie_6CELKwop zTvNrBV3B)nOx!70Ki33oHDUZPH~%s*H=}FGJ)JzaRMgOWO`NDg3_8Z)^C&`xUBVw0 z7|$rE?pI5Gavz4p<#KVb_EIDpH1LG)r`bleh-xkBWKEqOg~vK7Mn9nO%it>kgO z8?7b3p7YMK?waY~<|T^SUr?Lm;Z)OIejL$2nA1Sn2aF?4h|db(-DD=9^^MX5GpA|` zM!+KI&Fn`YG|>4IwsEcyU_oqxy44lKAfa#j2W$ieRKaR$h;)!^x@%*rX+RqUd@}g& zCH{-FUw{_F?trav0$rl=s=&fE<>JaW_m`-mbTyCX;x4u`|Io%cHn4pAveSL)cO(H0 zSLue8UZe!A4%%q#57*BKW1^&7RlDZ6ZM@oP+AukdZ%P~I~n7>1%;jOC7HTJ1Cw;YD|Cuc^oB5`*{CoXybz zM`V4=4^?N6T(j0JEo4Wo(rKD%fl06G#|Ep`U4+Q``Re&f;<0_p528N>r$qOxYFol} z*5{;S@STBl5uMRVtanV*6B#WjJQ=U0(eejlCmtDTBV#L>%{pY4$k;E6gXOOStX;wG-V%T&Ty>jWza5?@`Crxx zz`W@(>^9ldCII+ZjE74iAHI1()iz^-xfFvkyQYf4ni*btrdt1uns#U&P#v`Iz+MfN zZ@v8DlfON15*%^jVhE@k3ZUJvn$5zpGs;~Ph9G<0V#X1{s&@^|*)K06UA5a$ z=2Ud;p_-^-*KwKI>7mO=h_Q0&RWdbkzK&)bj^^+OX6F~D&*TYw`?{>cSvCqt|3;*z zXY?$!S}fGiP2K)ltiGfeX$7RA1A+W7uoWt{8mnNxZ{SfTR!v3a&%~cszCCQ;r=m97 zVaX;zwi+0;0H3s58>iK)(bMaO;4Cj$An@_I&Ygr$pBT@4X%x^9t{21C30HHO4wXoq z3gTlX0e+btdEYX9<~*(crT$&jvPEp+AM^V|%Q_{=5ov$iT4oVmw}ppn(7=VLNc}v$ zTNE#((0KK@7`Vf1m|KuJDOv23Ss`#DtJw1d?1uRYIM$lJ3|ttgf1w$k>%UEzxk`(YBMm-R>1~BlZP_Jmoyx`P?+^ZXbprPsGHTBj_ugK5I1ct zx=)0p+nYxQ5?;X5t{6;8RlbpNi4*zBO;%sT+zx)9_76j|*BBnPqFK<&J?W^_MR6%B z+<3&}&PJnGt(xHrhWEaZ3s?O>m}b5O;?QwR@Hgk)MCz4!3|A%n;IeZY_p$u_6aIuZ zhwm(?*0lSb0hrbv^8QbZ-5-|V?-{+KP)y(p+UO6q2&&-JgG=Uh+izF#tVzSl)ZjuV zcCg!Gy32==?F!gH52%{V=kEvn-RfOa4(pF}ovjHZq0G_@z!7Z(+YkzR;cLfKoH%O{&p7k-5=M8>t zGF&M(TZaCP`CFU+X8pm(kLbusb)#-JIP?BHlOUN@ABZWPi_kqn_+h15I`)dA8?2+X z0&lpI9V{HQ%${Bdx3B`vEWlQqx9t-jE405NBeW{ADZqucejddm9ZFzCxk^2$n&Kv= zBSzDF)$LOtSK6Xg8CzgrKzd?D2b?f6bhd2)GNmZ6m140jDtBxeW6ms{DrHsrpG8nu zUj_MgJ4tEjEjzoFN00pTT@({G+6_qwWgm9PsF_;q>9V2dj;*J>p*m4-SF4_w1M##S zZlu){w02a262(vU;!jwPzA@-UuDG?5@ODF9R(&Tii*2WT}ETO?cD%+4X>sSU^h8GowkbO6@O^z63X_%q1C2C}1 ztV3C*u}uudU}m0Q?|VKy=bX3ad47N0pWlDqd->kiec#vhy|(XzNTv@X7dDdUE{D=L zSi)lmz3&ntIXaH}Dc6YFGjulMBjs6RnH}tDJ2CK;PfC{aQ-@oI z!YsuXpLL^~>`K4)D)#4rQR3oOZoS0NQlsJSwo=}@gH&`Jv+R+m8fk91MIK9l0zsKi zK6%1j5LH7nBrk0lp>hj4EH!HakxgRRKkIb_>Hou}n5$qtMPztRoc?-q-6C3s^%)S{ zd?hW3#Y{DX)YN6$wAue0J$Q=W0zCBv<;4I{j;c`fFVg|U6e`ss+GV0O#;I+40yU3K zx>H~!K>gCie+@9~Fn3}uflvCnT19WKMejQjAFOXJJY|Msj|6@kGCi?gZH}I6{HuKL z&w>5lg8A8Cc4&}3wZCzglFoku43CZDex{Wm1`w8OFXiHu%+e$MU&iU93Q+3jDb6Ay zWH`*1Ko)Bw{3xzD>FblGvf%*Ydl|#55km7`Q-IDhl06?EdmAwO!T=~U056fcfgZz! z;~rR<6gZ-Y??!8k(;{~CiTdIQJNZ@LiQ;TJI|c$_&0dAP!=UcInx?DKST7Rjgz;yV z966mkyvGNpqnHD*yfs8$B|NxsNZ$L-he!9D+y7&o17NDL&eR8d!e+)ENEs-BNH~HV zx9pSg84l}1uU)E4Zc@`^Dda<^9}Z?^g^Z~@LX zSR!r&up%aB`r||T_M_;1zawZzhvvHta^PhMjD}8@Or61*p43Ty1^-1_Y<)Pfck`7~ zRK)I!1l@v;kns~<2!xd1;0?USnqtG7o|h_(tv+>y_Kzi1#KTsK>HE!lJdkWxv9gu* z^&^IdfOkByh!NaPUGbryS1q*q{}0t){*=ld;4>Qo6$zpsM10)hjl)S=%VuC9KY8-< z$SpiLD!{zm%252vuV(g&m~nhi+kMJN!O5yy)a-@U+VHo`B*C{CS@B%atL`Avu=dG7 z+YPLZd|fB|0fKb|Od0o~ni8N63a4T1G4+j~=pP25r{A8nUp&gMb08Q+yPKe0p)C>I z#|&{pNphe$j517&s?KcF-r`F^p5%8kEwr(8_69CykU+RQ-!+_{7H+T_IzQd)W3fvE zaV#R-T0Zqu4KE2BmX#rUJijOX|7)mX+&!0eagFB!c|wS8r%pS9a&645i~6p!p$*#I zFH4gq@IUkNoDc21Rat6$v+4F)aHal*7Q9?}Hp3fVJMSfJ)*)%AaA>(wQwHdKSdS&I z?rWpjBpMPj89jHF$|NA|+V-YX37LY7WCk3zTfCW`7Nw#?8@DiLXi>W--W&<+G**oY z=ubSucW*pjb44R){qMeLq8 z*zMl}d(_xpa`n&8usUjd3U_A!cO~lI?V{hd(+h{QD5Vtl>TVG=Xs)|=C`L|o_&PDW z>Q%B^v)V|LVce&Pb(jMNFX0>3wby))6_&wcwZDi#6$85Rso(iW6j#XY;IFiLEBw?Z zoj(Q<64BRA&P6j@88I3xHoQ|sy-ck zMui(iiHUg!s}ffLEhg1zh9N^R^zLFkRk-o2GcB- zM=>=&d35(=*{J7oaUHBOF}QraA;gtRc^84${nE!)uwdj9kjgr14QU0P%U3J$!Icub zHv@Wp;r09$`}Z3G#?J3&<4nI8%=_k`-{T`lHKe3!8c>elR=smWxm~Xd)gC+Zn~HsP zn5Nevpxu9S<-`Nt4rY(wUd3RiR;&9}ymQ?DN^n_|9BGRV0Ap@mBgAau&Lou;HLQ>a zoOWMrZilh#+qOn0hZ6`K41#`Pl6X9NQMtLLn`<#dG%8VXx3`k|RecWYo@B2VQ|}WZ zJ=%z3a3{h1PN(fvT2)%~CnA&CWgg?)M(St0CJe-@!R62(> zf@p0Q&o$T03x&n5Kjt&T;(~S~WES@R#>xEGvEmP?VvXqKW}r@Hkts?CgSGe0iGgIsE>LP-PfQ~SXxrTdWZ&4dAi;D zGh5pRnH~!iyR->D!``G4kiV=>VYOLZlQWs`qSu3cLZVj7;2uAmLJbl<3gasP=jn&USPpSI7o8UYK(#k3sFN-qEbtMGfw0g ze~EnSuOS9^ZI8_0vWGH1eg*saX_Gg3M^xLaTP=i{Ej_rb7$>*1pa8CmfUJ$Qw@h71 z&bCo(&8COu-mH5Dus_OvSjd)IJe(JKZhKYxk?syk!fXb&xnYMTgfC_iueTtL4rmsI zc3S(8<|^z)nGzht#V7JQA3X`sx$(otgq${NH&+KRP#R~JNwu|zaXASMyc3fnJS)uJ zn`V3fNJbg#EhH!XCp~C|n09ETYvcbU@<6_H*cO+2S-1S&{b2owm+SUv2?>HO99no0 zJ{WhQk+Htg?B$xom8wzZgu=}RQ+da|g`GO*8xf?*CE7``b+U zdxIsbB!nIs4FwmX{1F&`)pM5x2fW?OQ*;I}5tYJDTyMvtquk>@;Hx*wCBF(K8`G>WiT|OE3RfXb5Ss&RafBt+c zV#2!QQSIplh$DMife7y0Dpu3d$|zxHp`4CJ37lFBrezX?OW3?jytR49RambDWImP} zi=GBgKWbLE;+NV!P)uJ2Al{oBg=2+&lMTvZ(L0O#c1__fE|RmCadT$VhR1=AH z9~lU{gH4DC6T)6pRkh|Vdk&;BD2Cn4nIW_A1}6-D5QVUm!g!Cks8ML3ov z)YD#*wci!xPqU_wgO8W=sO zc)Ug$$M&~+J*9l;)Of?8l)$6@lLC`@O4`;RNF#ST+i^&Uj9+V8MQ!Q`(tS zF|FYHu0C%eLvCuKt&=Tw5yjEmSB{PhScPEVKe5WSt)@DH38L`=BbXDHUb(LI6}1S( zC-v1VIQS$-^&_*(uk!Vui!@4*Zy1x&4F8n3xvi7)(BxiypNFWw_Xpjua5W{lQ1n52 z^H$N^*KI*M9qS2N$)Ezg+dPV* zl-o7Y#|+0D=v^D04vHOPc{6^ojwhj4<>}+=9IN*RNe*j;VjD&Gi*1rCa9AQUl;AW-d%1TZTPS?w>N@qbvXb literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image-2.png b/api/core/model_runtime/docs/zh_Hans/images/index/image-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c70cd3da5eea19e6e3613126ba7b42ea33e699ee GIT binary patch literal 210087 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®^aQ5#KOZ7pfex#L4ou3P%--2~N$WQyBD=d{3 zPC7W~%0dwml#H8p1@M`=M6Me|pVjHYaJ@m9)g(L?A4Wn6LnGFtb)s;VldHbtElN&k zP!*%7Dg!w|>5hFOij(EUFc!XHjnkkTa&a9Ad-V_I^{&oLkwKqzU}qfRtKqEOcvxP< z#oudv?iK(}zP3Jzy*PC7a~BW%Mn$UNdN*T=VN zhHIBxj|>wr^1%E@-EwKcNgqfZrQpnW=sxfGd9UVlDSVBJ~NO z1D;1)pr`JNKHEEikNmVY{LK$bDfwzSasAp(sJY9O=`#2dlzw%r)_#BOIfCNJjYw$s zYjF_s0_99h$F0(!`iH2)rP5_ZH39dsq{h~!`I*JE<&uU9tCUvcR>|@0&O>o9sWK zUA5wq!Wss}3?JXBg@X$hc3{%`ODJMw)oQ*!z^_^cyKRCgRjLZ#GNLHS*N1uvW{s~$ zp5$MU=iCTQv*tgx(OR|&^~+SI%&bJu)H$sL^#xyB8{xk_Shn!MV~IHBeYkg|&@lTQ zVPGpttG6k#*kyKiw>0IR+6jJnmk(6Epq-5jmf=>xTAjmdUXOi@y5=9|ml$r_KL>A3 zabK$*ON!r=ZBtrJYM*W_6umPoxu_S!-0D?PS&DyMy!rV_$oxSZ1_5FYg@^!6fRq(8 z>HM)dT6U|_mK7F5MYi2*6}v85T-+vBevE$L`tm`&0i_EQcxV}h)qd?OU~X^v3Hg3? z((f2SF1_N!VequKtwQH1XPq|Zpx8>Q$*Kqb*B!2 zlrOMWsd%BFG&5Krw%T@tk%DRE7$CA4QC42u{0Pp~Cx;GeJkR{p#Em^+@)8+!pla=G zd5kuojB|;8v=^;NRj9Pt{E%%sJ6)imFPaKr3

Grwv=!9*TatX45e$TwCGb>WAQ! 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

`)W3@@#pAC_@dQ|x)(+$>?YRnT6W-0g|M?>kwf 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%0D#vZg}-nl%E54~{*dp()))xdr`+9mv{fwj zW1#8D$dpiNc~`!n6&Z8-ea#LVzkrWci6-lb5rp8wND^-}Tr>!i(*v}0lBc`iBI(;* z-02{4q4I;ecV2Fg%45HU5Hi}9i|cz*b<0hH>PHz@KT&xi4AJgMW#16vR9yJQBuaS0 z)~cmj_AvVWrw^RwLz$B69Dab;4^{oZ>aGGgB5SeUw-8}4bM_{rSyGI^3_x1P8~UOj z87NEmEEhC=xbSH4>3h=TJwC9sx*~}oXRhjYw9E2p)JX_rPr0BlBxntYf0_Bu}>tOfUYYgWLp%RJ=Y#`r{?`GYJeC8?8 z*icosK68XRf_Y?y`>(|T*$H8%cTCSj0iczlrk8r0#o36{4I>D;t>cw9z*y05K!5d! zaC#9JZ>g&)Uil|^=8*?cTpuf12x(79rY}9-Er#I?Dxv9x86O5tMR$2x)vc>68Qet1 zXK((l(R?e{p~FWRHGK%lyX{$c>RvlJ&H1^B_Kby? z8dhmxR_8^R(enPbb&KWBOvt!zX1mCLxZy$AhpG->eyc%wuMk8`gbWlC%)|KNu`?^6 z@OUG1S&0X6H!FWSLuJ>*AOO@9Yxa1eJ6s{ zULxsqvfgL-QFJEkV!0Ne>`{^cTEb~(t%|#Bxp4YfVX2l=WWVr}>W!eSY&C?w=trLwvRyqHrI#S244=C|Gj3*Qn&rImz-J;k3~#kd3Y^3!aMIwbCW5zFP+ zZfUV};Co|(lerRFeBsi~E_-4AULb8L`B{?QHE0kYu&tmXi|9VAqd=qkV2pb>6Hgx+ z3|=dd$o#ccu6;6-Yd~=_v({Rts$Evme#&X1b+>!!$T$B}=W_cKPh%l6E1`r z*D__s&P%>tuKMv1yGYGe-Y43;qHsJjX}Vsf0qhuezbCL^=1`NST9nBT_xze8;JA1g zTgekxWv#)cm>Y!5viUl{yO*3o@J{P(vM{T7wht7FyXgjG_%_0icMrPSP9;%M68=gZbBPYl+~UawCgUq?Z3z6bw2d) z??KU_G9uyXdc+jf0C=WX7$!`V&RAA|Jl&QUK)6$<{hI}7^7~vX5iuU2f1j&KGLqB_ zy4pvh;hkDWK6i?5Xdjbsd_*NkwUwaBVayB^PHa0tJqC6o`~2B=5k(HeV6$TjWt2{? z*H${&`hw<*F-=}K8YOc|BfGc;+13ZuGtZB**zl=^HuZNZJG{sJ+H%-G5dH?*O6y4o zWAvrH{Ipjx%C!nhOY(losoP3P;g5?VELO?$T}d0I!+#@s8CSsRN;`!Xn)_u?nN@{i z#&u3*j-e10)eo5M>#yvIBkWW9M}7VM=`&SxQDU2%u8`pOH*ZxiM7+Vu!y3h9#?WD>C3ni8d?Am>mN^A;+N5#t7uQq7pzf$`^4UI#T&b=$0zJlf924vmioN_h&?!4 z_MAKQ4H5uV-g9d42|~D`{PwFnea3b~z~I6-(=!63-DS)ksB3`gyeI2$hgJ*lSCYWV zavh30BZ^Xdj=RIuqF#(Pvv$>A5*c5cr>K~mwLefV(|lV~lC*W#px%9G#b&JDw>(v= z(4h#-=&pQKvtKGX?G2y0ISsr-jsE+#I&dMUp&)Lt(xb6q5s{Gf-vxa@W zW2eOwf6DOud3r!?5)crF-|Ovh*rS})^c0F3u#!Pz+HnvUiOfrG9E*Lx(R;7D_=1$t zE_B9zLh*3Am{}HUXAUtN42nrV%U&#cYneYqYBbWA6E56)InaSkfY+a1q9%Of9#Hiu zqh5X|YUihYe8XF2IOTd3Xx_hJ8NJ!4fpbx5ZhQ&NBZh_Q$!y67%zGmU6(d9Y5sP-H zaYLbMjsilGp_Dabf}6gzNW^b5Ik-{$B+h7iC9zN0IllhjS3#gP@bc~-Lkyy*w&eqzGxS~;op{`9ex!DFV%OxDAl>MG;XeO zz#!7Dd;iTxcyQp`-h5Tk#hau4prI_l(r9FFr33eB;R|0mL)n)Zch6<%ofW5@L%x+T zOw=cTrS?Dc7GzQSqkpT9bcgSW{q#8gX1jUu4M&>dXOp2;*k)XNTYEAQiz@bJOHUFE zB3^J52TL~czi!G#ZM?g1aP-b_zOA^8zFs>%(<-7ZdRq{m)dCs*xp2vG2HWhz8Vcvg z5TIfH@D>`j))n#q4(8NpjWE<$XEpzngWRo+#{4uMl~mbs+~6rN?|E}nzC zPq+fKfdmyBQcMxphrge}jko|veo>9aa_3@TbIo9aZ>uVb5C##l{3_Z~)yN)x%DzKK z862cgaWt0MW*pgkdvU`~*XD5$b@$*r(S8pffqA@mLbS)DdOC6Lrdpg$vuWAQX4!v? z=A`Jk06AQpL`0ji{o_DeH&9!r#oe=^`(VFQ)NBZIV0moE+4KWDx8S{YQSyqmQ4K&N zk(U*FwlC3+2e!qrnv66%= zPHL0Df|5!>aJ<5Pjnz4pjcG3>uS>c&i_q1F+5Bud6!AN^Q&83Mg15vTOQ(#?(tn{DT}SRb;noQjG2T;229qAwngpXi*;Ui zj{#A*=QAam6T&&Q2t_=qTh%WwN|`u56Q*y<4*bgCwa)lhR@?v z3r(7!i4ujJ&_i{rGMB+Gg2DG=K^GKH%! z?>bzPavJW3R3T^aI%H>7`^})-79iZKO=pC{PiLk(ZoS;j*w42HoPY2OW2o=~NL(J1 z%@?<3!^-Ftu2U>8>J!@N^?FR1oaA+jlZPyZy2*LW=dE>EJMccGG|UTygs8Ztd)>(kF2*K=|F|=0}Q)`-J;9)Fjpyf6;sbL9!Bv z(2tk1c1PvqhAk$cdqXJ<(dHvxhODD0gi|%Z`AE6&G{+>@IVe8$J_jmnXlhqrTJoks z{o7~htksRUx!1IA$LTzv40|5q!KVvtdjYkG+V3)N{I%Z?r;lwcmK$^wL3l0XS(-FZ zI8~3AZ=;>|P7PMBuRdSS(pipWlV;A@A84=-)fD?JDkHW+G>f!TQ97t7NB({ffr~)q zc*dkO!kZjVm&`|(qa^5(`{B7`)Zs>24?z$1@Gx8a5rO*6KC<}4Y?{iEz@{!=IYHU~ zcq>QDcb0J3xrBfVt~1L{ZgIC=6;u^RB~E9k_(C;>zNzz@D6RC!&i zGs-4!>uQkuK_|KA*UV+O)XC%Y#sK5k@nCfPoyt4+lPwn2>5i0NN|{LTljUm99%B{& zIAI*t0SVh{_v|6`hgSZ})a-YbSs!ItH)xoJUN{~xr$XR&pEAl?hO5m|na*qpJx^Q9DlzZR=f-ozpfVTHK3!?ye2+4e z`}fNI4^lfV2I?>3Sa!LW9?YPn@ZTC9HV&7yG0x#32CXhSSi}`S!llyFQAgQyn{0W}pOXyalQ@b-4sgQE@C-rrW@Z_tj=!G{a%~%eL!&u*`Qv0{IK~9AkBMF(}dk>|(uTjB8=FJS#tTBe7 zLJD8rJ-gyrJrM?LvvKJgOe*Xkhr|h&7<`Lj0(n0<#59wQ+TI^}VLjiF3Ypw36aKz5 z_h2O}@%ld>F-C%?D40`T3I&9cM7IxI=?ljMSjMObQ(u<_l<79L#&*S`Hm8*ECF2)s z5QZ!UTJk5J(QljpMZnbo7p7XJM0UIY-@t!z=R87DTeZp-o?0l8rd1&_=-*nxEwY+b zN?vVJ7ILYUA6Huqv94HxDs!$#B3%mMr%5Y(EbTR4o1odiRR9_)B!r z5pj~`BgNDirH^Crwe4-q#l$sxF4Y>0jWEySv*+RA`{EzERSz9t4f^%}v}8Xf1hu=| z7Pkv+WyNK^y0(@dJxsaRcjZoTX?Rr^bukz8T~lxRX}f=j)UlkYA;NY`T(4|5;4Y7$ zKflcjMInii5aUD~&LbJ#aa(JKe`~)ExF5+pf^`v#`drDk-xPNoFP#z1IbBuySr^%p zoZwDhY(2lrOX%5XK^BFDm`X8hUQ@JqL$aSKmS^g?EPYoJodF z=yZ}dynCP;^thabD-CrV7Ec0k^y_UiYW`S22xb`!k{vPMD{q^%pu4pX^lAF8*5&i7 z{UkhyfOjkmR0KK>ZzJX_cIN#zxDj~ayOEG{(uEJDbYGOQ;8TlT-7<`i{!;GkJG)v4 z*S+!0OGNJ?ke<{&P?trcna}n`*GSAYD;QcdefCu9zH>@AE`tp5nfH4`H(VRN8Z?YK zU8E!1cc9E}bWL44zEUUWPtNNU@VfP0W=DO0$|0TUbnfnJH3?+$4a>ygjI39QTkr1K zqH_Sw!CKGSc09L)|x|+E5|!o+{cHv_jmNs%YhRaBZ-Q*(&30t z1{GuIzZGBpEUSO(L>v=VqWaxChMUU;w_jp5Yz;B_ue1ekk7tZn%mEzQTZ$5@Tm!#5 z*Srz4j2ES{fkp{{L|uo=U3G=hEAa3y;-f`(s$qt3u*Oh!weU3B`$DUYd)-XA7%0#8 zD20NU1GEycc8c>F+7P@_?F5ux#X7#fYYZ8UY*FqMegY9##>--kq=Ky zzkja)RH^U)CXm^UUV}rlv$8AVwasQBbPnC_LB|1!8tKaFw{e2FyQ--YCbdRm!&{3h zT7{hFpV$rBU$s-*M!O>G@L0qft_Uk4=)R$Dq(wa*W(kJ+eqYin)}X^E<8>Tnr`omL z2jy6Rmpi^2<&^tLaT;_u_B`Qj)_sOj;|=N=iTJ0v&p)CUa7WjbIwjXR)5YUNJV0tB z_ia*;0FMk|OU<>_;#$8clD1N!6zZFX9;+2PcZEy#{myG0 zV)poWG7m%!wt8bZ03%^%0!WEg8LgeTJ@e!{o^pWndrSU^T8bmZ(*N8P&0;-%(&^$# zNAhA-o7?Q>zG zlPQfRr<>PLMSTy2KS%_wy^i@W&%J-}p9$3joeU(c-km)-nB0q}ygmE9d{i&i@Kkk& zy55_!g{ao_yRxg=Xqn9)-9c`DwI9_lA0|DwUz!KqVX(h3@idmt6p;^ID|*wGSZdhv zM%Vu$l-5VppV(=@{+oX`ZFE|BDqsLQ1O)1RZJ_(2PVubqn?mVm;~Xv=&u%ELem`WD zLY_Au)%DK^_AhAVzhl}B-B&a}4@E>lYqeg3)mNgg^sz!BMRfak&p7Kj{Wj(mZ`^9YrUPn6 z{xxye%UiDg5QWvnevSF-^Jd@PeMjnRvqCL7P5=cYB|JwFo87@s+Y#A{VD|JSl#i+0ug6E2SLMiOW z`t`Xj{x?*TVgePeh_l;^?dhG!x9<-){F0w*OtWT40mb$kfp_6M0@(1~$0khsQ zI5}}F3jn7pC^2LL4z?*oCTDb7S!(3gEA3H?rAuH&;6<|v1-qA8e|ORpe;i9K zoD10+h}%+&%fd78Dlu=HbcNN~@WX0r{DuUr53AG?K-IY9n*Z+MIJYKkcZT;6Gx zuhJ@|Rm^ZtjgDH5d{Mw|!q|FHaV)t8dzw@@n%Z1ftkA^6RN8n9&i_H+@Tp8!q~|eg z1qcyF4O`karSb{AO1@Tpm@$-#a}E|5v+R0Rvro$OKW{dRoHi6`8f-nRE4?@ob}!?> zlEvPcLlIw1>tXeOz#KnY3YCNFR=)e4u>l(Wqf)&2R@XwYa*xR%!nZ0UnWFBJeOC}o zx^He+B5)HxoMT20iXRjGk97A(QT-oZ=>f?Dns&r1K<9?#I-`E(9DG8X$fUwfQ)kWo zU6EvxUU;)Aj*Ra$b_qrakI%F=jGVhR4p5tsUagqvHZkptu?X?5p_y$H@)a z9V4TepnFs;s(N~y>$WD}isRs|J^WaKNvQy*c^N*H`m1FPqFdSFdQ|UnpBI|q&=|Jo=rYPdaA!mWI zTGxPJ$yB6=x6guMhaAvMd|&#BuY5{7jbGlg@a1K(UEjq3D-zcISjZo4CjXr{|EPut zRxxF~u5Kb@zdHldF5+yi7Z|G@?Ec(_G4{9-mt)bCzKl_Z3*R-RP^zq@I| z5I+!z;7?WWtx_9WFExHjBn-={+>$&VY?XRpgE6n)-)W>Ur zQ}jsJseFY4f^5vQOiZ-LEN<*J)ktS6SuJ98LC4p#Umc9;im~2aF)y`2@vnB|A_-r1 zw15dr8`Wwm8V>n4v9HBLFni$6d$4g-a|HjGA_tb?r8AqKW3J{;zQW+ z*@+DptETz*6?0FFTRy#?BOT@3Ui>7S$gY5L{Gnx~Ay`DWrT18ODZNcjv6e@p)b~%> zczN19LIMBt;@-HDJj$oIqb!4Ui^V7}_|}9by4v9#p@$oJ;ybG#!`b#{tr|_Sy~jeG zmUB<$YQyfqr=m1e8w)j-tQQZ;jY5yX7wT!yi!Y9x!&jmUug_W?Y)lhS>2Z*iWR=rt z+Z(Y$H)BylS`>*DgkL<_P;+8fBm% zs~4V}|L1@Af4|>fM4-P;?vL~OzvuVApUeOM=Ow`1qnUga`@bLckQag98pemil)TLm zpOTz*HdH*po1T@g9|OJL&}6$I*1!#+&tKxbd;m(1pTCj0OrnhWFnz(BCgy0DUKcs1NSn z$^FlZPPD*W@4~Rg#)JVCYD8H3q9WrjEr5S?6@edBk+>n!LhNxY6CYn^W{_}Wium1YKR0Zq+_e`g zHPlLf(D#>udf=Q)0QZd%kw^A_B{y1ILJ6srPVHHNqVJlA>OmZ~V@0lFOG#pSZCe}o znHdW1q9MdF_WonpoNevod2;F8o~7GkDWYWG&=3>f5L9Uw8i&IxEs%VrLe-rTPT`0C z69i;*wG~I;6X9y#J!(O}`+N~!u=1}$B?iyS?PMUZdHGzc=7_yDJ5EK!X2ny?IRN{n zXH0Tn_QaPetZ@Sp1D1#P1Jka*%Xnb1#t673B<@eH;Z2hr|8-9*f`P-Clg!%t+i&fU zgTbgl1+NJloY!6dTzQ8LMR&+1gf+P;M#J7CO?UmAoo-orxVwDXZ|vKN`g>leRbeNRPktT$5r)u?)bi|j&m|f2Hp5A9uudN?U(m!*Vreu>89~o z4%7Yy9=Td;Tu$}>)huGL0i5;l6qc@|f81I?;E)KlT%`42(sf#KYpV`F4kq{#U^}vO zKxz@S z(94lH2K0`48%%7L=Z3ZMuH-3z%RJGh*z>2gPV?bYwtlMAz##QM6DN? z`Ue_hXzKmJgaStf|5eX}CahzCS$Qpfc2mUoI#~_iN-!C;_87r`J zJs$Ma_>r*#TJe=&3jQA)Me2-cU#@lco9TM|k{@1M4=*{$)!cpM+MUCk73+mf zGCb6Qeph^)0)RJ^iXdVWCh5Bz+VokAH1U~&)jGav>B46YHvWSFhQFFE%xq}Rq0x_@ z(*jVTv{@SWU)LjAA7WaS7qMDt0O#x2PPkJv8Cj?XumG?`8wlha!J&N2f~76l~j^egVxfG ze9+*?YgZqw243gMV7lDTFi!6y=I>}KmRhU zzl+P5-$rL-o&>Ep|C|s7R;qMTCk|l1cB4*my<+&q7nK)krMJUF3rK+#PY;zyreph~ zZ+qwm_9SI?sZjBmC+3A+TVmKUCfbwob_hR-uVPu8MD&pkSJ02ZFFvrdgIG zwuX0|g!dRCs(Fs0yB z_Nq`SvU;X;LZLABG~RtR@;R{NN^1=rKFpRsjAE?m2k5fT<=wDbe82&C6ugcX%4`ai z2k4wG+d3afS>S_{W;_7Sj_Tn6WiUs!(a@%>xp7A}pjOM{ozyY6Gcnmi71G8%J1o0T zH8or7C`u(w13h|q|4sTPy`D-KlAia%Mt$7Q2L|}RDM81K4%(G8v}s!a8z8Cn{bfy6 z`+TL0MLQlN#@jwrB<3f1ve6{(ofziNLjRh9eMJ{v`ycZUi~yw8D-*DJb2(lh2yiFz z^|;{ISu#qa+dt}Uv8H6WXb}=)JVdz|bQ42wJx;KiPHBv5$8c0Hkz_-6fQvLa%ZIz! zU8%XBttJ6mS7U z{j|$wPDn{F;5#Do{_F95cPojqE6n$NTYq~Q{J*7Sk8c>}pRyK>Oja>&&>e0WXF~@a zavoP=!$5~}9TU~{Ikm~e(UwCKfo)}Pf5Xk^a{bg06=hx#^#(21GbXlbpV=&52D04z z3gvatzx?$*>Y$zAdq&-zGO!u6rCK_P9xqKlPe+x&ATpB=T7)jqd6802NTXj*?hy82 z9UW-{>&gRG0JB+NZg*WRsOhVQ1?-l7&3%aF&}$BfxoOW~*L(4HjTF@gV^RLg;aL2# zD-i3O$xBGuX_mE85wOBi13}fA-~nOV?foh*rU%16cug!ivAQeSpx)Tv^o`l-XTHR_X{h;pyu*v6u0tJ)Knnfh z8SCO6Gv^sQtS-H97e3KY}y>nFkGr&$XYAg%^s;_<5XU zfJFMCG)c(mTo@cmUl^;_%}8b6epjReHM`gAIFk$}AJn+=B^JT2_hi_%0R&Z(tNLV^ zig+U5(aQsYtE7Va4@?ZcfDVZH@p#YniWANLmayBcZoRE`UfkJ&_tza5d}~mW5KsbL zVR`?P>`v&I8!)eqJGxlRte8oH0oYtUDYxI4l*hy*gCipY6&yyZ`oC%&4R(fB-wjN; z^RLz(h$Z0=r0*#sM(JKWVrKX~Qv#y>T)4wR^OWK$R+k?DW^49KAiSut9NFA^ypG!w z0vIgy!D`XpA$NJfj}`DX;<-MY-}gBmEe{F?RPy#WvyJXj_5UW+sPcyc3`5ernoVs^6@G5*Tz+4fB9kJx^BcZd%#au4NG#v1r7R2;H z4Y+`SZ7GS{@@M?>PDj9v9p<;(e8M&+9l*c4#)@>MU^4RT<5B9F-BLpT;R8f1N z1Vm{_6F4@Tt+U5{H-rUhVD^C6=2== z+4O5YM(+0TarR*vr%_!qEqOI}#56#s;A_EK3c=hOVXxDr<06^gGus0nFVrBZhBA)! z(=Xt^OtH2(Gb^c&;-VPK4o;5YC9n`AX!oAroBqw_U2hudReumF-YsI ztX3cBD>j)YTl0D=lcm$TlK9y7_)Je^iLtNgl9Wkl7pMLkWi;4)*wJ*r&9?T$WYeq$ zi_-!p$p~13y-|pk8+=vAYJS=(dq~yDTr2^;~>f=*eCeqT6hN&Yx}l`pyP6FbHc9>pmw7jxhKk zVORrItS_`vc=vWus-{s$(21~-7h@!4wSrScuRbYf0A8-eL0cR9dHbU~a|kaE}T$3rVDb#+3aPF;*+eT?y+F`V3of!4d>i|GIu zm&)Qo@as8%XxF6CLX!(zb5|eMF!H8iE(5{G-c>;^cZZ5Hxaew?%UE;&L`_O)Gptkb zS+8%wL+diuum9`qikGk=k}%aLiX8}bU7Nawqw`f9d^h!9$t1NEUB z3MI_sF-_?FXa+&rBVGj43H)Ymn3R$e*fwEPpLO+81lIq#pE|@Q0 zv5_9jdFWS%?yLEp%jx^CQ6tXbuPl}Y+6|9bmY1E?#wq6af-koRQ*~HuUy*N$+%#81 zAvD_KfTb{FP{>&SuSG(P9O1o=PXEK&Gw%R}ADvIemH>3aufuP#cM~h#V5RR^77v7R zpnu+Yi64ZR#vH$*5yK`t4A*8<~-Oi8ZU(&4^6*V-xd-G+L$ zUV3%5EA=CUslWTLOH0HC3**SBUOT4I$-oz#L)pYP+{d0TC$?0qIg{kdPWu1WA#Sk`n1|7(lu~N*V>Jp`~kRq>=8S zyPFvpzQd!>`@a6ZwdRju&El+c&b{xwuWRpX-#gu6a2}o3y{TE0I<>*ItTmw-3LH{W zjRqXQ5YMLD`rx$c)#BASaJGWbcdc0W@uo%}6117B{c*J~45jN&#U>e-BVd`RHF82jY*27*Ybnqk|?Ih3f5BlT%-K=&|cGtmO7?a4nnM zLMaDI!!zLxiC!;VS z?h&GK_*(${f<=_`2Ye(W7VV6Vo=Q_l6>c+kuYRin371IMnJT(A<5}x*BHiZ`q_J)) zySw^2<=ecWbk8|`=fCB^An?Qn3kL`REX~piMTs%PpVn)X_|O^)!W4{oO{_1BEh~K z2;}6^av;4WRB{o5{glaoC@hmW<{J?(zFI*S**Kig98t4Mtb?5wLythJJ|McHK8=xS4KhNyk-A>@RbY`sOQi3TA;>0q^?T5sdjnjWB=fsIwRLjh3*v*w*SKC1#8Sui&u6Z zzdm4_e#p{+>pdG?*43XD3J5-oo9@K58EB~zCZ9Eu;^z7;T z$Fx&I+HDUb&gdlKu2L+TAXsP4$&0! zhS{^z`zWbyuTw~8u74E=9|u6HT)Sm@dh3NLbw} zdOKSZ+g%#E4(@_4Ma|407`(ndq!Z+e2moCg^x`|wZG#az`SY&FRsr!t#2q%*k@fqz zXGGM8wn`(DLz(lQ2rsA8%C9zHea!%6&(X5nnvt5VBPb*^^llmwQJc$xT}cqHB(m&T zSy`h+wsxt=!NM|9Y{BW~Q#$Ay1VKNe_?|#=gFGA?uM>;3St$3oJo}T^H`KW_w*l$o?ka7YuXQf_#q&3|sddO4A&2Dfi!t?- z?f7GXo3g>CJV3V)T<=oSeJDR&JXvd+{;kvNxn4cQHzj@7WnO0Y>4fW?Qy}Cp!?QTu z3u(e^Yg7p;_Vx&brn`Tew#bllBJ~zMwLD!`0ztew6cp9ezPrPdNXN{M+{zYrc#unH z;8MQFhmIWz)$>Il{j3{abzWZHkPYwfclIHuTOxK)har$O^B7&qJFZu4Rt9E80`Iv~L4Q8k zQTxnyD4g`Fc?Qpkwn87=?Y7lL?LE#?Lwls})~~>g(eQ1teL2z=(h}ovXfh#K_Sns$ zuqqUS0yc=BdK)+Y zRO<~EE9@M(H{k(+o>NtNysVAneE(*#NytWdX1}f^y|g(yG)?mm(Pe(=v0tNS5a8(% z$i@$oN^=>{-zq%ryXz6W(G+cs2n>eaG|^je+qXM`51O<`**zX-?kWjihPSd%9aJ(~m9x_(vA*tH?a$45Jddek<_*jr;m2 z;>&0b=bOQvJp#sR*HiA=%cvjIe}o|<_OGy7FiA{n_gh_#A{BZ)Q1lKa%u65v zbv$0{*Ut>nX9PXOk~T%r{=Yb=0?SPX8o)vo|q=L&XG6QOWx6WaWMD$BMN1p|9%O7khH_bkN2eA=V=#D@50is2vevX8@NDwm*m8CHRW;dw272^wo) z8E`bC*sL0{dAlFW!6`dY+;4?go^^XE^D){(-0elDe$LI>7Ek#)-Q1SLQC(DSBkN1q zOk?Z^)uEc)i6P8#f7cv`R51AT&85OH!1Z!4Ds67PlQ}9>G;E!-=cJ`@kIfdp6G&~j zRZ>QUdmY;}^$;|p74jXm56)iY{u)AREFwSozC4QnZ5H*CV!z5*{=(Ae4NA#);K0RB zwR2zL?<2m%&^8B&KjZyfZ$!a~qw$T0vu2fkZpuQ3OTq5_Rp5_i0b1^AKO4UID=^ad zex^m?e?bq&-!46t*56%B&TUilq5Mz(6+j*w?*jjr_9-pxKLaPl-CP^cWA&0y3$?Mt;&B1n)^A)}Q2oVPGA)2Pez3|Cj={*=LfqZ-<{MG?+d21jKlfB(C_+5VZMv+Wu1?TsHcD7j zT_Fh`+iEwE>h^AQ;K>TvyqitxGY$^b?INC8z+0Exoa^#>oIO7Mbul>BNl{4I-^X>@ zTd`SCTrAo(TuainBF)!=oWY45t%-{Gf~7&}5jFd?IxyuaX4APar=UfCQT425!`8u8=LXk4da`y6;5pxBdAn^sO$8Ncc=mF z>cew`9X-{oDwuQFtEP;P=H_oSbR1HW59ZFNbyQToj#HJ@=}UF352TcIcro%V$+ ziF-nfH$~p!gf=rhEj<+~eYCaB!z?BmuXa9?GdNVTnn20AIuQ&!zkCLls?xz*HMN2k zzXUm!mma=^&FhYRJRB@ni1v28bir;XwA^OJ?{h)140~QoJEBGxZ%M}-(yTw7HI9-pwsp}Yg%-%>`I_e4(M^CKy^+|y5!&JlJF-KE3 z!Qy(ivGi++Dz%F*CmRoiWy{_#N=$evDDacYU=Xv*es%suhpEEP7JhT`I`MQa`{}!@ z>t8bhj(tBkEE0vPh8DzM7dVZ-lN7o5sd{vIA(v88w;~^a^Ej}T*+-VDX0hBLk+M3c z*~Y-NtEMJu3~mvo*`p$Dai?SEjC{ot(DT^>gaWIiN@S0f~4sR`s>5swm(`wKHetYkgB&*Z83EHSby1 zYUk_alHnj_>o)w@+yd2snx9NRsLshMf4tK_LkSKl=#g_8LeejV0G8!h7`bStpSzh4Z`sTZ5K*VW!KBasdfF+Soc;eH1DiJ6w{9$XkVWD z*0cJP1hM7vX>uI%%%3%uOJ|7b%yt!Adj`10b@kfd(s@^n-5?)5`p>Clzb)g5C~&q; z*nYBI`>nrJKEVLP-IBEpG90o1WSaa zW+l{DYFkYrRQffXQ@jdp(zR#w)EpT~aAZ)r^0SeY2y3(@q;w+ekzK?OWL=w@r?eOQ zHQod0d0T=$U*fmqIRy2W5Tcs)Lw@nV$@_^cA+#Og-xmMz=xwaD5Iy>$KFpwud%EW_oi8MQOgMa8wYNKkC-?x zI#xeAF~E-wAb-BYv_n5k@yDS0u%9?a=<1f>FcebGFb=BID3Hs1!-wnnwhjQ)QDzPh zPJjql7n!N|bnj2wC}Eb(dOv#~qKSxUdDY4xWV=9gxZ|vpbrV(+9E#XDIrJ8p`PRh6 z6%A>Qy2js8#niScQ^^MDWG&y=Tepwvpiw+Eiq)ft1i@Y0ow$ZwhtVjm>2z!d^xLJC z9u*V}&v6HQe?;%Q#IR6O(?$0F6#Pz1>teQxWv0io<}8Vh7!|v!!D%^moNxDk0~+wX zLk93|hq^qGUv5ph?t!o0*_>oiZRfKXhgP{IEGqDunX_3dp~}t9ZRsNr)lF^P<{1`U zRW^otHMPfzO{Ktmk#^-f@3h6bNx!H_yN)u{eFNxB*Z1X^z`#4Fxg+dDEK|Qa@4hJX z?D~*6E~4Df=<42fI$`eY2SZT9HH=q9nK%l)fphrXyHe!k`9nZgFC5kx*Gzbt9@i|3 zXKa@MCAe=dRt>mK#?;i6GrW+M)1D)zV{+*!G_VZtzMja;n2eBTtC6Y!hR%fbT;Dv} z7x_y?J|aECLsaw4meXDWE`6=MAk7CKGfCHHBhgeB9jOU6N~>rCCJ)A8GIm14XI#r?mIzqzAHh z7knZk$)~Px_(r_)K7X%-ArqsMW%zA&bhRRTz~^hv`dIj0l!>(=IAuT^nA&;mOZM zC`_rSqE$J7nXHsl+*5Mds%ly)V%96D-M|aE%D+|YL9LLgsRiC3a9Y_vj|#rX%5a~r z?H2c2Pq+KF1p|53VeUmE_sc0N@*=O))X8%qMYgJgs|0542D8Wz)bEd0!yPy#tgI_q zrs4UdQ1sH~5l$YHRyrz9rkbuE>F4L$VEUWRk|w0$xeZ=MwIn_=g5?tw{e1SOCizJ$ z$6@LC!Psa^`Hi$E9UVC0&<5VAz293y^<`zoJ7ewy7UVi}q3yV>i_Zj3C_C@6!54#m zuz#Y*pHV@wsM3Xfu~|twdxOl3*~Dyk?9Gh=xgh&12mzav3NQfO{p6$Y+aEIXu!S#A z!nC>&pDpvkG%Q*}>4xaUXd3m~?I;q6^iO*4lNH7iBo;;MlU;1ebOLYIBCL0Vmg$P|orNXYYd%f0CTgGz_8d|$9uJ2{M zdTjG@FK&{}|ENO2xl8!C{9zD)pR(^DdDjB&{eZTD=y{aS|s3Wg>wN7sj8=` zZIw%W*q=@*&xH;9W9T2LscGcvy38^edhc~iysa8Mt0rd32ZFwOn*A{0fb^Iix5`0F z(DEEZn+W$;+g7fi8fX3M!5PKbu9cn^I`(S5?7gqi!<=WuHJeokRr~nX?9T5Ruy06s zqLKYPHCl=eVo8)q=l+Y2aogyzs)_nukmV)rPuNV0%4{Y9#533<0IL6u(0vy+PO2E5D0FMB-PYa@jLu5oB# z2*m4U6?tXzZbnj6V;OY)M*PvsdROv=v73ghvsou0-3Kf~i|kv|DSP8)o@dHHR(4%Z z3(=0seIA=D_^|hvNUSyM>h6TLO~JU1m&s{y@RX)>l#gt-zExRSh4;2q8@x)zm9_iW(@?QEyd`ygnr zkI%aA3ag<`D89z0%IiYFy_rLf;6E!Fn%sPgr3^ZXsTZL0bv0A!I=Pk&i-O=P zJ;tk_%SQB7Iz+Y_s47IQTOXDtyiEpg5ITb(FNFnrBOMyeZ@ZQ45kXKvfkdR>x4ui$ z>!-QaYkf(%?6pTZsXfyY1QN8I^uotikh>E-_yhvl_LK|io$%!InfmL!pgD}br_7X3 z=}IynZ(&Vg`AVV)Zgb15QLx8;4v6@p^)?&73cd*6%SNW9dOSM~Uix;nd;X>vg?GD% zX|9buv2CALP8xo&!4PKr)StdPf_1?PI&0_Y*|R#>G}V9MOYNkg<@Tku>E78U)(+IC zJ52_d>PaUcwV}ZGj~`MDh#Eyu zXZD{OD+Ti!+b;!b?~Um$?B6-tDV?C5-#?qN{^~sArfoWJc#Jo?X{x(5uxWAFYl8{4 zY~QV?5ky7>JwY(sXR_qPIl71)+^ot$eyQ)}oN$vf&a8oTKU_*VT(Wt`9*b6`Ab)Q~ zb$)#L-@MnKEtzQxD7QIgE!tvkQx0OX1kIhPb{QjH9UP5#1j9?0(4Q~!E-`9I#8Z0N z>MPDHkbTD`d1)@Qg2V0dhd4IqJ(9xyA4Ak;H2Wjsp#hI*Lf475j63X`3~s!fH3%|k z--B+3x6N7XMn)b&I%(aRF=2@>)FZpR4w%Qxa4Fi&HHa{!w{*ERn%;wVTiyyo3bE1{neGRt+xFoyftvxbqgJJ>HKRt zf*h*n(FH}Y&r&QC97a*YFdiw1H5WysJ%F#x$Uak8=o+C;)N}ixofH+3xER<&dTu95 zFlROCaK4*XV`KH@K{GM-Bq_?`3=RwewnzzisC`GKVmk~`YM^w#X0AN;scOfd_qz-D zc1R4fT`8BVr^7)--Q{F1-!d~OJtORWlq`Dj!r=O|Qr5pP$OBR!1a&wy3cS1BQXBRd zRGyCE?mZ5spNQK5nNm7A;KKszGC@+&{&Q@dZx^dY zEL4*~$pf9&Jc{xpr~HdfuoCCRsi4sP35Hz~_wJGVh)|YCmh53DiHrv_Hs~077i>Y) z=V9znl@k9wdTXP|V?J;ipI4yeeH{Zx%`(YNje^1zd!0dn)5s?Y=5+fe77Ka}9ml|k zs!h8o6D-q;iCiTPQ$GRWOm9$P6=5pN06uMhqL-wkU+c>vO*~P3(JGKz1!l zZ6w!TL02f^$q%TonGaYkr@1!FZ)V6Z98w%FQ4P1t2nT66dB(t|${pcWB48ti3^P*5(i-3fC8>&l~DG+nA7`&~re zYFk%*)h~R%bRaHjHGK~gbUrycdZ)(O_X$kr5ffz40nb+9c!6GNGk)tPw*OT;^MT|- zMJzR>xZ#s?hF>@7MRE`}UNwiy9OBD`K?%XcGZ|_1o8{!0?a$8>EZt;RwT&!TzK&C) z&koLd-7H(#A8T70i7AhZYKt+rV&cPgwVQD zQNJ)cHg4eD^lK!nn)%>Rtx~OD{ryl!eR{o~4rVig^sw5z(2V+@aD9uL4sIiMgGDRh zKOQ2Hc?hbn&ug62r#5odZW{8+GC%~oV`{cFv#6r`a)(5xL6byhwnPk+pO{5#Qri$U6IX|$1do!|868W(8LoFD3 zJEsr)KUvY|ThmUL8d4)KcWWoPmdM9O9aT?H@m{2<8X5T&6-14g45KJvXnG@K`kWOn zy!iNdbI!(}C^<|L+{|iwTm?rsQ-iO}D);krm$hP^r$0LEGT^y}l3XK9>ekCvk3y7AgZKj+8U6+5|6W@q&Qi$b&q(NI@cX6ud~c6epa z6zEo{VH+%d!Yr^>+*5KSY5nrz-;(J^9N+myAtcT~LU^nb;FJY}#K6!4A=B`k_J1_4;GLSqW;xy9 z9;I+M@m&#n)0DAq^!{S?Xf@J!?a#)-e%`;?z4=^riE4P{7bUuy@@84H#Rl_aR6_5L zdZac#SCf)sNiaD(c<6@g5zQJD^<>T%WOP(=>0B@gHP2n~Clt@1O+! zJIv|s;=7D{S%QN1fCFGGn|t8X)9>sIM*5Ry36>Ngs7T{7E^Q&)5$Sp*JH49N^wHfVxy21H;(mn=Z^h^@7*0qbe5m?mZ>Ecm=aR9{PS?>eMvddn|rli|OuXH1&ON zI*M+(=H1SWNRYg)*Ib(UQ5-c%XMK0z_A|?iWTi)Rt1fe9DX9gl91wp89L-uh1H#tY zQ{24?zemXr$tlRw7Q(r0zmDkm^wM3t$zWmsT!Ad+>GtArAP}8 zjytov;Yv3|VHKu#;ie$z7GQmX7Da>{IadzUOvFNFsId}+^PYS-?8Fs+Rl+_*2%Q*7+d+!ttWy!ceUG)wtr86_= znobF6rrY8br_B*MUT5B%d#ZEldgxEfTY1Y>?C~_7Kb%rqw*B8E`gAhTx>Ci|bM_mO zyuoRJXH+{7ZC~FheKW4lw!MC7SJ-fl39bn#E7nb*5>{qgFA}RdE#M7nlhV4*d^?viF|KSUdg=a?B1MO@+dO!(z-G{> zp;CK7~a4ol_@GNA`>9t7}&BJx+`ryD~#H>^^_xGnB0KC%80~Tjn7M~^U1`~x z#Vz?2EAiz~E3_J#W?xv-$-Ue%!gS_v(XKk!d#73w(AUp$k`n7{=zHgurzjX17O^3B zBfR!Vl4yWqtGo{~zmMuGUP$^^Lo=|L?ku|J^P(CyK|^mO3D>c@1M6f_S4+uZ*6As0 z8nEI$8Hy(vRXw15{OSL)wBI;C2w0b;TJ^_IZ)52L5#Pvn9e8#`)`pg^-Ze%=cyK`B z>ijq;HyblnjkU$x9~VBGr|4T1=)un^+&hj)CT4RKZ+cZi*kvuLcfDqvw-v^AT~gHM z2)xd3`itF<4QfhTYUMBXJe;P+s-LVxd>;EH;&Gy^1UldUx#dw9jvTQITCEs%Z6}8m zXz1a4T}igj8cpoRaah9Fui94frT?qD>^k$4g>g&nga2mfMaP zO6vGjoehW$JHxfyKch@!6@7x5Q+cI=&%T=%Ekev-N8@P^nSgZ2n;%MOIs|FVtykps#bNjx z%m`-rV0p2k@?lP1&j__-N~*IVfvchGQHAQclHR4+J+}orr^)@ZUz`2yA`{*)Uo&ON!E8cPuvJPhIQQ zyScvN7F5a<7H1&Mtf0te;F|50yI0RuMEk9~eCoijQZNpBIsZ@lrE)6J{YJX(w48Ul z;WD4#q}uk;YIP`hyxDI$k8$53`_V&&ESb=^sp*#!Q4bZfX~Vifv|9z^RFm6%C4_jD z)L&9n%aJdghIAqIFo1{Zvo0sP(6z(IIHv$=C(0Un9zlY8c`$Q+#wzL?O%08Gbwb3M z=aTLB*oO=EO?vy8pJDGq3WeoK+hWny)7(Cjv$3QU;gSmPqUfI;mR?tBZ;YJ?Oz5Dg zD=*95vBbtjC8hK7Y%{*<;-( zvP0L@z4Qb?^>y<$L`r>=A`d)0-aRI!bC$p}8CtVAN}4wOfp;Q@B)$RCePZc(El}wL zDexQUmnR1qPhM?vkP0EKteQ6A?lvfK84MZH4NIur`qNuaN$R;_#SLAAC7$XqU``?A zrU>L64$vECaV%lh&$}6R)372|3Q^LNOMBZt>FA+(3|pIi-t0N0-eWU{i2+TZ?wBcp z?Qj0dqhf&Xk6Ue~N1-08y~qc8FmoXRH6$<6%94Jn8num83WcORV!12X;Q8jL@R4=O z3q2;PCDDE^1KXpJAjoSe)-E}NLS@j+lEqk=43bafZNPzRK=9Nq*%h95S@&jKJ_xeU zq@a%bkacv4zcc!w=tJm%Eh%~#7)PtSBnll4Y4Sp37mEh^JjS22oCs|e5Jj#y#L#JW zdyN`k1=Dz>>6zUpya3XCswtKg#nak+(;cxywHWeLn$;{%qQ?5q1P!Hm+mYl`E0wZH z#M@3|Nw>bD@XD^J)p`7cZ06VYN!W)o2XjYa3!=LmGAzQnzGL%znf+F)-2@k-H#4<~ z+CPLuxz^nHQSXR*=k8Y9y9K{DdI#*WYeIs(rW>wZQ90&!m*bM2Nz0p&ruwc5Ve4l< zjFV>84)-xW2{Dl`v1i$Ww@ZX{Y~**9YLe=vylM8HD$y_eFp@qAqN2!B*LK3ZOg)?M z<~guATXaLkNBO=# zhFpl4lbSV}=2z|{<`g`-w`u{RX}D&Ehht5AMNvnjgr8{J*|I4pQc_{7dLs3t!)A_~ zW$#xH(D6a}gM<_n*3Ya3?ePd2I2yM;=sq?)VkAw?q2ZI5ZMrz3pik*H>_8GiVft6@ z92wJBj}Mc;-SPY^7u(f~E5uQ@#Av41*FEs^CenIVCGw-vLPB=aVD za|0p_Vl}J&=Vq1*;oI2kuUTnh?{m`*r_;{dsnv`CDeH}6L80$p)T$n#2zZwykJ7-T z2ZS;<-!CpQ$;AwP^$Iv(mCq=WT$s~y>-~Hqf8J%au33tGSHa>oq-o;Ox#GZ2?0*e_ z#Wpj1@QvndyMtVO_B|ow5~h;uc0pCJm@=q4{nDMvC1*>N+ct{KtS#Z= z%s*8U-}C@U(5RWWs2ljksY-HWBLu|`{If6_+_VS9itd3xd4wdIw{FV*9! zY4Uw_Ij7L9M%A}DO0>nL{XlK3j;>j9;k3me5`r z(87=9ddSi7m4MV9)$8h#q22Q!0j8)@nU^wHo_kGVP0c7M%viEg;%^1Z^$Sy z&}igR6*Idz++_JMUBu(()-gTFY+!SL`2OB|=YGcpjd> zpg}JOB=$D1$14;05g$AmB-b=Z`{v0jnj06aNTM4AOK*EyPYj)`gz(wJji=VBH0-9@ zA?PmbO&*WpI{d|+S~E=d(QRQLXG?j;JG~*B77RkcaM#a{s)vO{6&(0`6_)crfL@M% zeqCNq5w&p}yRqlXiQxqf?1F0f(v<}tf?~+rp8to0F%UPqG*2_%L}qD?$VA^tuiAVO?^a_hEV>h62@f1nXvg(Q_>V;Ealy+ock|LEUWNl zJ*;%rVVzw@&3<3gO=Ojzff{be6}Y#ty>)}4x;j%c{Y%=PkfHrp?;|Gt#5>Iv zCAztwm$x5`^itXT5i#Pe?qt(gKn}g(i&rX%<#@|06mj?Xd&F5&{jjuBa0(aE&qM%L zdxn$=<2a%Kd~+9f>Mp#BGzHLDgdDv3qh#B}@DvvKjU;uI6Rqt`i>;CPDh-K)lP*@WI}19rMA0aU%~-<$m3Gi|1D zF7OeE!jN{yXzyh9FPJO`#Sl`VFY8lvt4)vjF!*DVJF;>0x9F zeEsVaEk_d+f7M%*2cLs;s3CTi&5`K*kU-hZ6pS3_w*U5qH_CdQqes4-tC~|g%d`kaybbh7BSZhne#u4oe8gQ{?Z>@0c~SBqR|T#HI%HA1>Arc}76r=7!Nm1X zns2Q>nLG^t{TAgCnj743-zq3L*&^3O3t)cQ1@%7?;(Nh-B5yC7zpIUHSwKQ*dtaw< z6P~|*NU4;HQHKE-f$kFb5yM~fE7J#C?8#4Y(=PLtoScs>p`oD-irH_}PnJ9WeQLmk zRR6jh`H+_^Dk5DV6YX*d)q$KbS?@4$NcQ3LI9W9T`ML+xsPF}jCW}tsxP$-6h>9gL zDnCW@*7cH16al3_`twT#qi-EtP>oip>Q+n`$Bv4`d@^S-$n%$m#rG4vvX<6Ya|=?E z*%|?wKlb%R3JupndLhw+8CX2A&08Tz-9)!OWpBS_QnCf#Xq13~0GM5D`jVE*@V z%Y`-r0yRK#7ErU!1v$6FA8V0jSncxLX~3^p=egzGw+c&4FE;^!zqaxdRh=E zO0A)C(YSnTx`V+q+{15g)JR&^e1miabQ_PgiX`pZHePIPhfilaLE;OC->KyvP#>Fn1|0o@$Z2%> zuup$Um1@~PPvihB=-n{D7q-?>J^out>qv;E(oK_Gp8G{N&IghX;8RFOZoje<-Ny&! zr7Y+Cnw2SayC*%e-V*1IyZq#QnRfVNdNDg=^wad2TT_;#BHeiR zRe-|QL0B%tZ!jgNDRtC7l5~zod)NJF(7ZLSj}Li1M%TZ4g!Mtj9kdEhnnoUnpIy&- zUrRO$ZjWni!0@ay4X6SW)c`(>;yk_{ck7qp( zSkZDqAQo9Ve)%WJ|JOSW?P1UeWOui&mUEX?2Ve1+jLfCmvr1)L5u7Y~d;5(QP_kSs z=<5$R^_w`08Si+L=Be6zdAbz!X5zXQI_;?NBeA6mHk$7@c*D3)_*kf*TF`Rh#0#?! zW&VpZ?eWgxV&XakcRxMev}mVeP}rEOazb6Cob;}}_eHHZrCYb->0H#yxD2k`Ri&74 zgnNv&>Ebtefn#GLgPw{zr`JjrA=3tdZHWGGJ(a|X*@8q?#iRv$+c&(*0Ow)8i zM6&e@H$m(zR`79EQ{{I`?<5m;_)Yf+hE2EWQi3W160vgJa;xr}#5hPqId4k(u~r~A z6_rz0C((Y*G?kIlQ@h&TFQU}rwsyYG@|`dl*a(6tz(yEoLfgssJNyLrFvC4m9L{{j zsavbDleP-(5(@N~U@oIo+QM1Ka$S_B!mI1%_!ld`HBk1|XOP*A=V;seYiGD1ORDDh zmUic|bmmy;_N!{$!L1R*w{pVK&4ap)Rm_iTT1_O0Gm0@ zn$arw$yVE!rY`H13^0RA%{>8b09s$+#Er4vO}MwBpU4Z?*mMYr^*qqQ(VgXot*NFQ z+)|8PVf4eyD~>}|;YdI0>aKL13iz$s!jv=40czjB;go@(W&}rlGWU>^E&%Kzy~GEa z3qA{Pp<2;nJvSOnsD2qTgVD3KbTmHXqv40$6#;MB6*K}&{CBD}9L3+`V!Vs$xvffW zPjYx^Njpr`bFY`d#VzS#4qxh;o5MPyj%q-AOXm5tt6;u7QAxJD?CLwSwiOYyy-fk{ zUWp9M0a9Ux$t*>N?4mRoq9=@K9Yu5r!|_YCf64yE2nm}9ZP^AqjQFZt70bsUIavg( z6|*pZplPIYXg9H&Be^HECzE4SnNAHPSy%_l2fORDpK_+RVDf< z2S7h{;l5jv@dE9Fs>P<7(Phf5^|$-JBpj-Kjg6L&zA8dx?HgVF5T8D(H>r}Ays+MY`HX1pKS48FVO;|Z*i2$XuxPg#N3z; z4tnn_u%*Dd?5=+D9M5C`-75y}Q}a*8rr4Kt#q1>Al9==xufJ!4pPbP1f2c_C7ia!5 zgz_74h>_C1x8aEy>E;Z)L+U^{>i7oi8fJG+K2pw3H7ah#Hja3yE5BpU@w{VY?#jmg zQ;5yTyS4iKShHMU!epieFvb@K%qbeYjrILF3oObfrb1K*7YT`!^R7F8&}U{1w(UwMs}O><%Ki~8Iq?PVZ?<8|x=kHY7#&HPb^y_Mw8vl&dXp-@#@ zg2}kDVDBWnp}mBZLpE>SH(4rRKTI%rjnO}o{h}`Y+nVOHGV?-tZH8D8q|@7dE4w?E zei(wc6mwv8a9);vqf&7iQFITXoy=81Yqs2(7s$MBGuB{Y!BN+ zlv|xfvy0SV4&QfkXp~-`@kM4eaAFZmM{pWmA6jhEJu&6=TyMe}^D9pCpb8h@{FY2f z{tY{)W`HZuazCUa4{j>iDSUg`4FR+e?`(%X(Jbe70w$flFjtkijMyngdUBa6O~a;h z1uxx4)#B%f(Mbi$G~c}Y29cF3o;%HBRs$mXVNlf-Pj%K;Xu6+)M__l;a(mMupGi^; zGZfwZL?r}{T(0{P?>`${kje27>o>?!cEvbRcrI9op(=q&$d{do__ZHjdfMM!FDtFS zT^|pRzG1AXQ1q{&!BzKXD1)th*+=v3u~F!!%K9wY+5Ox7E5E`xLiVO=(moI5dht5Z zcDV6{lhwK9XXmHwt844SU>+{pJ*o|O2nqJ*kg1T)6*#3qrP8kSehTF;9t4eVu{f~l zCTb#u!`P*oXS3^va7f1T7qk_xSOT!oTY9cLJDJqPy`Xu;Pi|f0?e@RK=$qqRq}on$ zeD29ZyxlUin9yvQgIh~)ChbiVo(UexVK>uQ?k$?ruZ_|c30>5Mo%-2NFL~hw2Vd7U z6w}%0(OM|INCv;*HoG0t3#=tKTDSKY{kSGw!o30h=zTwV<~8Q*2-*4mn>R42@LsBs z)Te$m`U5L1ab!ACNm^;fEjCsdJoy>VHyE^;@e<}fi=p1KHXqUe$!AtTlLGEGJSCT? zKQSUO@THoXn&$HI$KSjDRVEM4!n$*;)`twQM|JPt#Ejl6QpG^JrQ)KAY!)M)+k9P! zS`s7~4a5LN!CFHSevr`EJxk*n?FKC9jfjZWfm z^pqbA*}AWZaLW6yhnU_w*_D7u6}sgC#}T}di%pl{tgujBg=3${3u>LI1o0`N=|%un zQtT}4CMvDu!~dhT*8j{SKv!XCXh>PWZ~4`~Hyn&D_L{TRHSY_Bwkwe!Ws_NdYeLlr z%cih|le^I7FOZ-3WmIYh#WSZJo--=SbnJ#wa2d45y9AxxYv6t7xCri5Oz zvb>q^zQ|FIUN6Kkn<(fX0Vy&XAYIZhr#=t#Nq*&osoOQalN5ivYhyJF>otL)BD5Q5 z?sSPqixC12MjwMTM3R*fjo{pkemi_SqC`aVDa}3{tNwC0%j@z^8<&JcQbCE0a(w*B z$OxH6h}ZAn?y#Oal-i6Gp8HOpqkS~uREVCq0ao!ENiT*HAcev+b}v92 z1(qwtV*9nMOyz1{LwVsp43oxJ7-zvkQ64`k#Zl06gf571i|6%A^}XJR86`<K-88WtFSOh=MwSP=jh}Knm0#c2 z8i|BFeKgA5SXWo9e5BbbXV9V;DZU`nY-0_Yd~qMv33TI%aRcF{TjwLAuOh9o3RT~* zi`@Rs^E97V7$3}_1*H5U7fUJw7V(i`FaFT8Xfc#ziCKjx_8cC0_TjSZ#4{;`SV&ap zg`Oz+=OomM0KHQN-w;9H4(~S{PZFL4*1QNY4$#+FrT8anBKDM!(}nan-FCk0o(KOh zqhG@-Tsv*yh)_cZCmrDpq4fK>SeQGs+(Z^Tqx4|yWqv+1u)~OnU9R4JXTA2@+{R(Y z@=*Ol)KCPai^$>kmb+&gypH`wodgOgB`O41(pFkeWr;2WNU!- z&y9W_uZo%?!H(GnBRLozG^g7V235>U2s)4)CZ5?Z*mngCEyAz*Z%hQQ_qssT=z{l91S8eR8k%MG3&g7YW-3fq4KYTyo(#l_e>`e2 zVC5U*=R{ENjfY0NDaP+lj+V|iSy(BivsYauh6!V{znOV}&74!HMVP7y*+!-x@Qpj| zxvf<5JzNUF??KGt2^u~x5}_Dp_8quw+jF@5;X*Wo@$6Z<4eP!Z=9yXZ9dNn1{!0?q z^%$e1)ez!{Orm`28= z5b%-wQ{evp>*+fDq5l84bhfgxv(CsUBO)Q2$SNFV9348l{A_n8oXm?P` zv(74!(HTd|CY$_D_%Yd zkeLM{3-W@viJN-6F{G%3_GZv<~_(zO2Vjp&q~lUQlzB5E@Xrf~o(rI}i--$#N)73BPjsUe??^G^Ij>^qAs36$p;ME>RP``VCTbrlYd&R3 zD56Gl+!LCYEX6-mP{a$?`fYB`dX&iagOwP0f&{lx$q>FjKSzU;hrBe+IE_ouzCJVl zvcPZ-AH(cLbdm{UQ(27zV~KX?Xs+nGTfYyB77MyKZa~KM6_0VwWtNlQ(sqZx&Z1Q} zBYj4{JsR05?KI@u2OJV+<LYalh8usUOKv`tBcFSc- z1}};4y&OP3QpGw%vQJD#)RnZLjNc#<S3>IpwzM3e+#T6Wk@?vY` zHD2XM#pYc|+Mx}$qIGORWO3D(GdsMimqyNNqA#J?*2_*?Dd(F3gGUEfh^+<#Imrom z$;^T3;+^UC=iMOmE^YHas{&O)HTYLgpYkmS#Jch-(!u=te|jJh-Rfvlo#wU#F*~TF z-Z7A^mu}=Jp~+g|dlM^*ALGBOV$G1MbM9S6l#|^QB953)RXrk({n8%Mcv}C|)aNr| zwtLh1EG#+-SyQtE^n6D$Y37xxO$iVU)vjt~32x*zOo~o8EYoVMfeRXBR}p>+!J_8m z4?L&`3ZY$JR#m*zITc&=?{Y$VCSEwPaIf!m$2wJJJji{|wliMk5r8qd*zk4@J^Hu3 zQUlAnB#TRMcK&5aD$4x~JWdp>6|ASxrjm`XKbb|?+X7+v)a;vg$r0PL?5dzOD|-TL zqVywe>YwLo{>+)5M|X&xQ0u(oP&jQ(@7Xv4lTtvI!jKvLPEAqUrirVcV~a9Rce!Sr zbOE+kGrvE_^bs`@p~~AELfWFUE%IibU+f);qfQm@%7)*^MXn98Ah7J_$B=eSOuPv9VnBc7f z8NPR%pAaJXL>Xk^BFs<*^6CJ4O&cY_30^n`e?UF?Q0`|g6Bs^&@S+u+_?#~t# zC{|n|EhtMMI*x|@_A)laZv?Jp?r?r_4y(;9+>HBck4U!S_zk%)VCRvsp3XmdMWzG98?b{fo(;$z zT@Wd^d8Cs(Oc6gA;7_+eksJApk9FUNW=zXOd86Mgq({8`B*p4|jeKt|0iplvyR8x9 z=2hFUM}~NXfX>ZOk#*K>(xP0HoR~{6)o^zgoEziPfW_J(Own-aHEynHl~(xwN*zPy z~v@z%k#gufi{l?CY?VE-iGbx23P5lO)Lb7Av4 zullx_E zFZq6-1FV{Bfz~_E0mFjjY#zMii(^ZoS`OrTU)cJd%%x?;E(}%^G7{IP6HsH*@p9OijhCQe! zC1Df?O_oEdH2i6(&IyMv8=8OWI7S@c!0Qh`&zC zcOTbWN-$9ae&v{UCA>DXc2mDloW*XKCs^~woViOlg{bS{HP#6#x6}4(xN#u4wbXuC z$jJs;(45pgXWAQmIN$PBc1vxXK?lGcs*+kQul?iT;0`5=kjXS4Z#j8~>e&a918+w? z8KW`Rr2*^2G|U-VV-q?w)JvQ#R65Fl4c}I^=W$(d*wZE#gxFXlE4`@HGQ2-ED%EK1 zMfpNY%G>1-TISF&z4^r5bruf)GeeUFv|Ik)K&_SJl}uNpCms~VhHq$?y9M26LodAC zJyEc?>X~o^oZ?fL!1k8m)Oh!Pd2IEvRn{8DoShCBvb7vNqfnv>1y2q)V;zz@$#0tW z`QagMm31Ck3XVbLy56%m!{JNY6T)^#z;#lRs83DfUl5Ojd`E-)B`kyBC!<&k;EWp4guGzh zy>{_R`(qt9rn8AHnLIR;e(#a`3o;&^|Ex$_Wo1pH)NkEYN`LyD-q%Aw zQ3o7Bbjv}%_ORW*9K;vXPo&0`vA@8_UtImV(}j()Hu8#EZJ)Q9l01MVhXwKEI)e~G zEWIz9op&IsAsT#izuhXjIz!oD%vN#+!pSVEeT+711siE3gFcYYCQ^zslfPw&W4lKQL9~q zMs;{P0LBf&G6f|aKSk+U4fh!ozJdO6{qEmO;ZAXS$I;PhgKq_=0L;mYa_w=gyvEMH@#WqDb*DsonO^?>0i{=D5>e#Sp%(fhD}rt7GHb8Z$eo{{Nei&$FcjC+1S_juXMtJvEwdr`0p<2Cc{%OHmQ1x-*QCi z<~x7VP!!QuVl`ZOUN)gqjTV|uD-f8uai3?!ym6!X|A0AvPvV&~+vJ0mWLkfvZ zD%kz$?~*s%lq;#bfqMLV#cA?ht<>m;wzVL|gTok^wlBVEB#PX3OtbDx9-T9Cw|R(kjxh3;jP}`u&ms literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210143654461.png b/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210143654461.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c30158dd452b41243e9e94154d54a2fd4c5bec GIT binary patch literal 394062 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

SOJ*djLAUdNw(9_`9D85)ddBW5||NO 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 D9@kPYSIs3OTP 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 ikD}2ii`vTHyYBjVJSXk% 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 G21H`Pz*%A@aES#7*|pyt&hV=QGz{ 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

Aq)Y_K^HhJl+@Ao9q$Rv9hEbl-_APR!PN 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 Ds_#HL literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210144814617.png b/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210144814617.png new file mode 100644 index 0000000000000000000000000000000000000000..b28aba83c9beb963ea23735e598a1a905566113d GIT binary patch literal 111420 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

9nr<-U< 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

;$Q}#Ib_yDECN!8ZHXaPD8gW;+C1?ab^yKi{ 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 ZucpYl6sEuN8t?X}{#;wRRMGOo{{u;x%8>v7 literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210151628992.png b/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210151628992.png new file mode 100644 index 0000000000000000000000000000000000000000..a07aaebd2fa3ab20465210c9a5a5b682b510c191 GIT binary patch literal 76990 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 literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210165243632.png b/api/core/model_runtime/docs/zh_Hans/images/index/image-20231210165243632.png new file mode 100644 index 0000000000000000000000000000000000000000..18ec605e83f7832ab15869601cc787e42128f7bd GIT binary patch literal 554357 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

r)(Lbc8ejsES_~cEEo>c2c6x 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%0AK7Q7nBR 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

t@?umI3hYgW|uzRSe1VaFz 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

Xxpk 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�{d-h~+9o%GJ7k~@z> z9I(z{I+eP=kSZma7C{F?ualv6U|>-JdTy<_{#uU49S7d?(z;dR4mvpNi5w__ptE+P z6dqzU>8-dS-=s$ry0!ja#JverQ|H${dNLA{00~0~gBpSZLVyGiQK^I(5j6~ApeQE@ zh)5ODDp-|-fHEp5U=Wl+WfC=@wrWw52#A1+Q>)e?sNhgr5p4?=$=!#3zpnqf_gnY7 z|F!N~e+XyJIU)N!@7eF(&wd{05%bEOAlL2`8Pf-us5X@k_&YZ1my%R{(3r#S;*=SE zPATH5CSd?4;c1E(qI1SzIY!%41VE2+H1qM-5d1UCr!6O4N>XKEn(GAMq7ZoMY- zyaus~ttw&gHIM}D3M~SONfHfzMGSP(KCQl(dMJ-t4rO4}E-L7cicYby-Fx;G4as~1 zOdYVwtbiuB9S0k+ShMN2uYOn?*a(!=0Z^s|QlUI5yKcd;V=PigQ@9<-o;lbhtYuL% z{sg5svumKVbfmu}u5C{wDBDH(?zetnws>f{z_*C4T-DzcK9}9nROT?0h1vJ5`}aiP z=MVpvA2=uLXacpu2h%^>x5~Pup{(p9D5*7p44$aB%;m&#w=H(z6TP5Ywo?g0PD+qh z$}^7h%g8ep#{g4s3Fzq*YF0>SpOS47vz-$pYn;1qe^_fcuwlO6b!yX1XTW(DE8C6?rj;Eb%{W|HFbz34x z^nC&R+Q-U3j3s+8+&n9|YnVbTE9t}esI65Hkb8sTf$qWMFdaC%l}zFMvaAqeP#0u# z)}X~gj{vE^Nobh`IU84tSJvi$T9$1Y@LYoq7F$#(wgrOh_&5P-ClO(qS*BDLK1UKx zC570V@*5+7LEH9lja__d?Ga5*PGIH6-SJ71Bd>;kskW>QTbCpeN3`q%rfiYDBur2O z0&rf6h(e&-&Y^Tk;YueYVJaZo=GR)o$EKDP?rY*VS^pvlwx`5`ATdDB7~+6AWkmfu9Gw+M)!`w>2Oq=v}IMBZR5O zjdEAxhS7DqRLdPSZt611ohdqQZ7*>HEH;4FpmX5= znL>Z06IY9LfoKDT$>`?MdZgCu^Q+C3}RCTA=t;RqfTfDj8vyUg+>M&)CPtF&& z)9K!f#?%ip>vLA<6ff`oEncx{dH;;>-~2jV5#{y^uYXx#=|g(%&lhrCt)ds7bNl+2 zKmp~-r0cnDxf>t+{62I4<-e|6`xDH)x3o&@O^K?174zxYb1vIIeZ?KZSE_5vbQ2zy z?ZNLSZqBXq8cTI6T6b^XhGmX z%G^vQVz!dvFyMx!4!W^ zvD0bt1hV14_w3^aY&>IWm*^q>g?$;F;RKZ}y>+9l87Q>gB~#kR?3u=5B73F@h-fM} zj7SO(AHs0v;pq&0ICsoU$Fi&axn7QTu9dm1p0tK07FP&KA6X?N;^`5}$xS77($)uBDslKHKR-)}9X^9v^PGdF!YH}b_|TDWp_@72NQ zb&Rsb*5UFuu@~+=8B=^({1EZY_=p!~sSm{UY+JYfk>vKw$a(A?6n02P#mrrY7pGLZ zd|Nq&L$ zW!bzfR4n&aG@Ixf%yufMCm9F$6a{Rc?U@716d=<))%+x~T)U=tXU`%akw8wTah>GUW@%@QQO5>XH>uP1> zB^9%mw9Lt2+qE|yTeMqrs4F28+(G#rM#ML;QS?Y6mYvGpPJppAaeJnG zK2$IVLZJGIe7@}W$1vE=2GlVOuAj-?KO3C(z!mb%y&S?I4wc)9Soy=zjtaZQk`KkA zeQ1p+Z2J0d$FIt}1Lhy5FOJV>t=W@!XQ`t7s5suzZD$-qzp^+WIyTz^ucs!9vbuR6 z#AjLQw~kVr;%;I6bC^TDKG|l=vfbvM25xjp*E{Y-5O@)bK8TfB!**iPc)n+TZTM3& z(*~-0eoteAeQEZtg!8 z?f>AClmG3ltDnF6klA%R%_(l|vgWpV&e$cVg27~3PzNn$jd|DWXn*zA)djUl=A_@9 z3bH;qa)+Jbw9(HeooKZih#`)+^)%51=aKWII;XA=X--F*CzJ*)UtY%QzF(6$(YIe^ zU|A}wz(*bHTODLFw^GC%vt6-w)7Ozt=J}i@OeTxF9yWct@ax1Azct_XpPjkgdCBg( zueJ~idyUWkz|E$52l@S4-GF}=SwD2uaKL6%)kzI@9p`CYF!=4=xU{>noZ$o)i@B5Q zr59TY8(9$StmkP1B-NU(2G^0!>%PV+F~qoObVQ?3iO=OJqf`0kG-@m_fSiDl>dkoyy&#HrWjSsH;i zh55rqs>i9ID?R%<1UvBqbEhPoA)*OV&_E{N!-`II>4ZSkLu?39f>-qwEE`II10nL| z1^%$NH5au~Gnj)jz{XmuK`YgK8)kND(MZvlpTwH$K^_Yn$)yw*We1T*kS+LUfCAe} zW3y^-?`UEc0K3|e1&9%fd(9I50Qj#>fca7Z*3S`_2%t?NK^r~7Lvj5y9BW{0X7<;( zo7ICBYKuv_9n*nwi*i$^amuLc4LjjJ;LwaYeoHRaYw;uIABJ#-CE zU>WH365o#`PGHP!+3R#8@ffHdU?R`RE7S+!m?MK01F$6%i-p}6)^IMi&9aP9cbt$F zEG5sXcV!9fMeK9uhRaJyAg)u%jcW6foj|g>aL{}-r2?9uD zadg}rh-5wmTVbIJ{2_?#l|CRiLIALGD!(7+6oBP_m+iAyRLe27yCnr&ATLtf$09gG zJP}4Uv>@`D=v13jcjG&itl2SbBr6t@fDLaF9`AOJNmLuuKTRYHLIm8IZa73ap9bKtOXTHuQ@EA#?Tm zoe;1lYe>+#5>$O&5GB)!!7eC3^rU)V87V+7kv4$H;*tQ2sg0Ix7;(hK(=vhUFVzvC zo~KDi;TVAQam3grWCXKujU#|K8v*@?0Ep-hm(ys3eQXRv|{al!9&+# zEuf85MdL)tlHr{Mhv3>uTg$n%!2v%;XjVKqU$J9xwEVKwv(CrQY<^u;OK}}&JTTwt zlA%FH;HKV=&-v9&X7_Hn9ozk*sQkx!+f8&gpDkN9|Mv3Go(Cn}-|unw;d0QgE0%ly zVftC>9=r|ajrGPWlUq5}pEUkT6 z0tC%+?xLqQVSy+>?_x6WE`a}pku5YPEYzxAZxRpVXOL2ZY$M#&SY{FQ*g;E8r`<4d z4wI0?cG#2P$Z&`vSL&Y~Y9M?K;m0Kqd)5biNk|}hVFAn~t&ot2o%(Bqw}HT1kU0=M zubCSBLcIrs$Y9`%fjd8Ay}>_u$^?AJ1a|pZ^>7JjXyfalA2V6^1)}CxWV^|&5b1(i zg1I1P_Xz^3a0^s}JZQaT`^x+te-GC&*FiIlmpYf+G&p^5FQDt)_|HJkQlD~2s~HQ7 zRqvZ*?xt_2Tq3`cm}i0>B~ZOgSm+4w1fH;X5Qt56@`d!@neWM|t~$AwPNzNsx|Sor zX?}$%bXzgzk9WvkIjVYdvX@34;9ie_>pl2Nt72y_$52|?Yan7puHvFsk7O za0(5NO<>w=*tlRkb)w_oq~x!0{l52_AMSfq48IlrHeWZO)9%;#e74Z(BFB!O%=~gN z!C)kic&g-6*kt`LKj>;s1(}{A?KY;IA9H(d{}E>`xO-N-$YIff#rG|ElyakG@u@Au zYk>?ZSVchr@gr5BX$VLi*os8N$jMvnkllIG|(MLNEXz z_`HW<=T3dFQMrfYO*Uy4aGc>)A=7w7C4mCKJpF8vl^B821cUg0AFl^Y38 z3?c?Z6#)spI)pmF8W>ui?n z;PL>#hlq{JvXw@oD$kbbC{7$aK8dv~X$I^YM;D9XI*~JUAE8B!s=WGb9AKYB$Cpn4 zKv@USUn$#HHyO$N)b!oAFQc8#ujRei);eGV@7*J! zL{_!rp;?7v=zua!sYVCorlYusB>|>E?EFG`-F$>^J%8GKAs}?#NWuOX&S`H5LT6Cb z4ul&&FT1uB;=+6(-y7gF&$;=vcXFL?}CPe2T)&zcov#1Ldi&{!A<~GvE@c&21@td zn=M*Po}pE7s+PwFuG3|iSX}t#NxFqj@5qo|=dRwu$&QWRtnbtw z?Xi7U{n;fk^8;VvxMSmuGmonOus1pTWzq0g&QFdnJ*jK%3=XC*{%Lh)nbp_pj)?+| z`^*dqJmPnhGzx@gJUdhm3<}Sdiu*wATiQo`P*%=^*z#SRm_;jB^sxki1^9a}mAsa) zBBD8uCh)l(wVb(nd1&bJU06BMiFya{JC4sQhhXi3^{Nk?P!NS4y^A}IcYbXu24oFL zJcBpY)d1?F=YAGbluW?cU=Le38aY`Gd+Hs;r{c~RgkZb%G5Z!fTq1*g9gj{od19x$ zuqi8VJ@WJHYvt7w1`-iE@0wDZu09q`1Ber-zrQS}of0c!w`J+F}!jdFp& zFYWGU(ijtfILdj?h8i55LAiAS2z9!fK*TsWdJ{a>4rs6kHwkk5tYT0Joz;Lvi6M)V z&O**>qedLDQlc?%d;6hA1*=@ajj^QXu)-vq$`Q(t&}b-n8R3Bgd=K`i5H0HhOG;2- zPLwbT+b@Rw$oC{A@+av63!G-Dp7aOVda0DIB}iR!PJKhUyqauHpj09BHG9d<-WrF2 z32v(1plM;&TsASxMKcFc-Nbq5$qjLn^fmI4xKB1_uXnO98(dCk(~YdXe-t)Cmjc`2 z0SbitJ7&Oxm3!GpH)!_SlYLna2D5NLc9<*WxI}L3;>ZVA$%Vvs_r-tjYc9YmEXAz~ z8tz14OiWjQaF;6Ux)KwuggP;jw62@yl;0&uWSPBnZzAH!2p&}C0py8|Fa$7?spKRY z-<^G}?D21zfMg(?qov)2EESAk{jw zeX3ps*85gyw~d3_1aAQh2{t+cw+cQ2OYt6(4uB@9aEAd_^(3ZG+?xXaJ$#g#Hw@d?qDvo?Gt)vGME+@X5Ncw%3hhzWJUN-lgo^3`is zr=5ocPc&$_r?oayt@gsfj zxSKkLoQg-R?-JkPma%b=yI}!xZi5qetQ1pd4dA{;hn=5FsyYLLLj(XifM+v^u2e`rt$R2wQIQK2py-ht9y!mZveoqS)TcM^lP+E>9 z&wqXTSn!s~279*#ueWab&F%+VyyW&yO?TcjH!o|l;vBf0(pH|Zytbv_)x1yWjq2Mr zGOu6nocMm_*S06OoUdrJC#(v{IebNb)b?xrbw@W?mPdU!yF0<~`i{>2pM|PdWzA;~ z-dJ()uL~}77u-8qlkx=rRgd|q!lKspA1dbFtDJn|{_DhV_B^T}RHnDzu{3f~sB8&c zFbHxT9&;BQ+!!yX%`!9OjlDR96#IX>AiM-U;(lO>Sz(}a|6Qwl{zqn}eRIg>$YOoV zb-l|IgN|C`C_bjwEQmtRf-OH?$j0%B@Gzv~XoXG)zD6XX@o)h~MZ@0mw_8_pmEL6S zy-pmiPXvtqI4L85E+}2Z_cY{tF7nL$)+51q;d;#<4df!+(}waXe!^P!Xmc`hV=H3m zklRVvD?)O$&SlaQ=o|$FZ-pGp;%0u*yF~FRlTcRLSfl*q z*zxUuFZwerlEh|_>Mm8)wH4Vta>&NN1?#yipGhL(DM{SgJ>DgI zgn#{W)c|q9A}I*x0&fCcF?%QD9P();z^yZcz@8|UZ1a+b|F5# z5ETtx&lDV=UEEZgCYb4#i}e$e={?cx;+&o~`vVJT)Mj&=9r;;}ZDsf~rq*9Py$51x zBiA?=x&j-2)}AYNGoHra^%=juHP`yLZKB8i5CT;O1#c4jm1MXmrX6zm>5mVQul)Fy zn{U6}^4fLd7G`k9tk;#>!?#tlvHn@ab2oCt|NdY4gDM31_O(xUB?g{tEp|rg&>a4dBukW#3)V){h1*iaBxYi=ByVkp$-jFqPW2y4u+O4mj zu)+uBcy+%=d>4%ze(oB5x|rVJ4cdU94Y_V9RL;ZC zr+d}XVe#&-g_EKMqm*5DQ%V|lEZy_XQP~}ublD$UENY5E2L`^FnQqLxv$ZklVc$ug zv4!`X%dC!%*PLv5z3@Zj2vHv=Or_KQdcW)Q*XN3N&GXdX)v>8YOf74Rm1;c}e=Z!z z6<$yxC!}-uf#d^9qQF&T;)Le&`TBCQkk2>AZ9#;yd3qW7HM#6dCFA8Bf3}HquG9{% zFu@C?9Q+Ok_WZqqY=#jRpp!x>Noc1^r}xvP02ROw#2Kb(2N3J4cw1I(e$P`eK0`(v zo{cYqEMS0xiJ2^fGKbG$sA_yoO8P19-BTH=x-GW){nUKHf|}cLYfVlrGYxcc^}I1N zO;x3;TZ_-@FI?~HZT;NDwK)^B??v}u12*s@{fpl)c-i-g< zJ+-Q{_b#5>UpU8w&$z+ywPp4f27WY=(GXvJULlnv@L+U4UyIl8r;zv@Q@D-^^Pj~| zm9L46P9gDdR8>9Ewj9|*vV{*_7~r06+VgUY8}~+4fs4SpQ|s#wpNuG2VBNAD4HckN z6r|m-e+w@QR-Hg$=83KRb1j7`d##Cn;c}v^emS{XXq}4DWJy(0RgJ1zjwkxa@wgl+ zokFL93zRuF>9ctvrf$egk*vM{3>t-5VI(2)YNT!=(qGhU5N&xb(m&FH+Zbt|sjjia zo;~AIu&BPA~MGw)JjZoOmd4il!*5P`xcQ$Iymd0>E zAkpW3A$v|8BYWt0<#YR%Q<#9FRUk`?xWrM5$0|~)% zB8Cyf;@l$+LP2KZC~PSg#ckeyeRvJU@?E?2E(StBip&%FbqxX+D;=?MNo~Ks7GxJg zI1EFES#}5qaovDEfBI2d?OV`|P;&jaCX(Ex8k527l>xh};tlGi^t*4n|3qUU-&OvL z-!N7oQp6)$iBHhtI(-C~-E2ixM4URKlgi*$85T@XRYx zbFvf}-?qypB@9>h*6$f@!zif*=utfK=dgj52N|=pqIsg{7(#r&^s;hNm z@8azjQ{&k$FK+bzpHVqe;G7XYs~k5$r_UxMJ*X3zBVrMZ20I4Wid|U(>4u6zNA%ldyT!o7uV9lZ#54e; z0G1~~YR-=*`?}DVC1yGbK-k@h2cg&N-f60sZeoo<<{qrkN>EcL@hn#H!;^fMn3lNp zr7E^6zBZS^ixjwo7T*Pgy>THbz|-lx1b*wpxnVwgI&qRLz>%l$byo!TG*jfe{G4@u4ExAouUU(@!Uzq!>vSJN0&<@k=uD~p)`4U06M@e? ziaODa%+B*!0D`{ zfevt}e8fw^Cd@?-7lw;Iwb&QhtI}2J_%31k#YDU?5=E`|Skx&JAI%unm-IsPfX`x8 zDUogj%I{Jvf#$9Ez!D`Hulw|X&!X}93K%7Jyk?Q~UeE{P`4z-tY^E#!EN&|l1Srjg zXK|>2hg_6%Xo^{KJ2tzYBvsK#IVg{W+oGpU;4dW*a43sFpr)`8F%Zm)2?WrAcKzMX zHp8`v5+&e6u`tK6`#~?UCzLYXdW!JbhQ0 zJY(;`RTkm3`hry-@>uf8r+zzaASsvMZ7}#J`qZEcv+v&?Pxa}X?@I6e$G*~yf(s!3 zyVeT5bt+46HuV%^?dA?p$^lMMzxgYuPuyQW0}6f^FG`9&ZG`Gqb^FMzv%4yLZww{A zA60ksKi?B*nK{MB?JnAmQ=LL5vdukXZl}GN z$SyeGQ+!PK!QpuX`xrfp-H4HY6I+(~4J<=q+(;m1Z6X3LIk2y*lYr0vZ|+d~R{@%u z#b_4bI}s@=rFaeP1%Yki7JTY#J_!j^T7h~DO76owl{|jspVo{XcO0HkxB=TnyOL{n6WHqXqJWTDal@)JcJ0c?CbhE4y5ENn|Ny=&6UTux3 z`@HrrWuGINS5P--7DPS~zlDef@^6`isZ8+FQdJ94CJZ^S+YT8RrJmev28)EA_qDnIDCrdZl|6^a5UmVXm*8QT>@mROZpT$&sQ~ogOn@pYJZqb6u zuQMt$=2sN)@4|SqXu=N0> zvwxEf$JoD5Q!}3s+=i>zk5o4V4I_E=vcrk@$m?%-@bB*Au7_>)%>|k>qaj^SHIt*(7wM8+8zAWKd5BD@npezEcQJWg(#Bq-;LT z7jh`Lev&Xk&9)CA;U2dz3lO_V{0XTU-xMAS&?OT#i+8cH{y81$Wpw4F3rfdly2-f5 zu{pAh4x!axD3kGnp9?Ju8?S-z(ZTUXP2rI_2S1>&2kd*!d6WtEy$7y3AqasV-Gp*Q zH>Q$3vErGI(x6@F8X$aq>l|Uln+b0973ML{`p<>9+ofLy-6qM^2S+S-gF|7hR;&F1jG9-eaYBA#rHBS|@$ zkqgR@a?=-&mlUHv#WiwJDOZeNiY!6(1s<2?j~@_tE(dj7yWTvz3RKpGA#&BIF9 zb*rUBRo$~$z8SWWzG;7#hxD^kPAWT=m9%A?iHTcfc4oAd%n2+vuNuF$Fe5HgHy)P} zxB1pl@lnja8FmK@ERpSz|MEYR{ev1PB_fF#ftww{_D6bZ&9w2NeBAM^`(MhQl9G;>PX8NypOLzJT;*Pe`YzfsxIRd>i4 z&LXRfGNHzf&aKfnz^O%Se@^^LTU<%l-0Ywl3sY`!o+)-kdOmXvlPlHOk^RFw;Ix!8 zxd9J5~%@dmRb3s91Of)!QXE%M!S2AFyA(&|B>oqF&Br-&-c zocY)Ii9-+V8AhY)KE5nC?-w?2W>nw8zphu={ruU%OcvB)iZ2~Bqt6D#M?9N~&s0!N z6d{oC#{)Zn^EfK!F=BN?@yz1*DgDshbM0vyWLxXM{WEMY-pDLoGNa=0cC#a0^7flA zE{yCQx%ui-%kSV#J&xRN@pwDS@Z+L=WByMxPTKif+PS~Wr#-N`{FJ_3K21GCD|pJB z1W`HdEv?`&`Th3n)oSxp|0nWkBWv3Yo=lJzsh->%6Fehq$28|g3fkH4$&0jUZd3Ag za&Ju5u9IP@PX;MFNCS2PID=WU4HyQ!Fw+*@(scpG^GVU5x6hzvkSGEkZp|QmFl!Jh zyo)bvHqHH>3#H#Xf##AZ_J8|-$i8yMHyc<;%(;3pf{IBmtY5mjbU~0r>&!rMQ<-H_ zDUk?0bo{l#h>&T>xt3{5k?A0%)`iX(CJH+dyo*vV#E&xf6DK+mI2YY0r=#zt)!g^e z16-76!xeg3O;>aF@-UJPk`7R9TkPmgLqOB{1p%m7Jg?Sxwiv;)q+1Vii8swjrw@C*8gp1tw0K3Iz77QI;8k`vv3kyM^&H(KNY`z> zvs1j{#$xORUHg=t-6-hUWkh3}z3Ojxt=Mkff9hMR_~#m`PaVxqv!O$e?S^KSPUb<@qM-H(QmySL~B}KuVQLzotqkOYEOb=P^jq35wg*q5Xy=jL6 ztrGcZ$CFzX?gr8PaAUEgv?)1Idy^-y<-Lgr-gQWVu%rF;NfSJR521i(?pnw@gMP8eI63z zLBXl~q(YRUpdk6Uh@dMsiaQcevtQd=@WnHaakREPB&(1h>!w#8Zg;6-02Q@Y~CA zp76QaTTJ?pYTb}*2!@~2S2#=$pYHn#7Dm-|9L+0e$Hm@5h|qMDfri{NIaA= zb5I@+=}>7#V%4&pTyu@hcc2eBB`3L?K1Zd2$%xC&71HY;7K7^bgaL~?5XU3~gj zR5#!zE)c#rw~gRm^1ukamim=!n(DsWH9dCDzi%sBT!IfY~{C2{=+mEr;IG)_}0Uy&%hl&0tP*T^r>|P07R&V~vHvr3WYJ%m`Tu28jRW2R?JAxJJn*Uc193h6s36Hd3I0(36z(~;k_~^{ za|X#kFkcKL@&oIH`KtVZ#V7F&!p}TP%cx3Ep@(47^3w=5a=WdH8#&`qu|UW)o?p{! zu|Hf;ogP(|Q<1B1QRvBT%O2<{Vo4uzJ!09hIUmF<1w*zOK=n}7fs;Y}9w7iL%+jDp z{4>2%&hql=rawZO9<@q2)Dy{1o4&#*V`#xxuH5HNne5pRx?N$dr-Q$7@pO!G`-Aw3 z*u1xERCOiNxvXF)?k}vHz2clv?q5+Jf-6s`P#WhcXJquU$FbEgnQ~T1RANF!VhRnP zP>GL>V$odM`XAtL-H`G2iFo-BOi=a=cbtsJpOsLeB$dEvlyrUcERU6tg6pO0N5zYI z{n-7hbDM5th&_L&m+HIWk;2PuXmFp4I$n&1wDAf^6;bh#QC4`BMPgJXqJjl@!9qnM zw#6b*WmcZ3D)-M5wzTp1v!i;EbZd%#qMi(-U4KG1%qj*USaKT#*JB{O(NZokJIajG zjR?>m{<$MZu40c=GTTZIxNI)L>19x`1q}@u7fWCA3o=zj6+7xS~7Q)oBoGh&* zRq1X(JN-w-vzb+&e>`!!3_xew2i}hxjr_jX>+d<@sE2>*zWi2u`k3dF*qZ~p$G)=5 zEq#4Bz~<1IiFn4%AD+f%P6qDc#~U{Yfb=GMBq0y@<%aS3pgq8&c;iF;;HB)rlu_c5)zlZ-^M; zlZ!%|n^y)~Bjc{s%f3$?JLLFbq$awkN#l_D*@100M`1S?Wwe<0AxFg|9^Nc#B%dZ{ zc$=CUkh3T?vRn_Vi;tP$ylOYT+G_OqJz-KO)Sdpv+ok-Nuc<}hlba)JFMzj9*uF@6E#0bP96W6|OJI>BbF%C>`4o1RtmZPp5&w)JNoJuEE9jl)BP&w{&tk-j^H{UfRA#Y9a1A~v> zE@;1PzZ?B?IB;8Z;i~fu4e96UcaJ}QTU#-we0;L+X)X zQFYr6YGd3Vg&TJ?V)yO1_)4Pc3J8)eH0(Db6fPnZ^R6PR-NPmBD?OwfK7va=dcUfy zeh3mmZVXOH9j47)pTq8n&enpz}bWCurkMJYW&~TzXp0y7ZhKRVRvh zeWVhJ6qX{R%E|+xSi2J{)(vI#D5EM8p|7#!^>NkEGgPdz8;?qW?JaFCH)QU}Sr>5K zS^io5eeT4**$DIsEdPW<elowY`FZ0?YESa*NJ!%n zR#E#S1>&(5!1DM<=t&J2knvTa+{St7u+ZRfy_dhIW!@geyupT^k^6%+mOJN>YwnJ@ zNsbwK?Wvi~NR|f}Fp|_QmL6_|K%G3uO}^@C#5~`?!3JcFZX|i+?w;KB2C4T)em0Pt z)a}XLa5Zo&Nv93z*i$`eX;b62r&_nC`s#|2+k5u!>6o-^*88eiLF7u}qEjlyCnP3s z4rP;_85xJ(p4g*4vZ}j-Rb?HGj%4h+mKZ;cO++LJPAa5UX>3?6O^44$^7%m#h6i@v zj8ZA*0g~tYN*~qB;^^rL<+`S!MbSs^?^NQFJAPZ;44gwSMuK|(c;Kp_etLj?J)`QK znBsIrI%eN2`#%jBoGs_?SlH%7&?y0zvG!1j$9m&R1g6-6bxl-Ntz9{d+t#mC!M>@b zmbQ<)0`67(D!Yn!6=p&uIf@0-*-?B_LJ2%ju*V1X6gbOkS4R0b@Z_~}O zu|KGD!=`zMZ;^Rw(DS~LNRL7{%)|O~W>j{hu&c@-zKx*bWx?BSGNZf;ye8>-a@;fU zog=+K!&}t+VP$@6ltHw8-N|bo?2TK;cAI-lI&Ds)Rpk^^oAW1qiVrYixHWf4THEAko@`s5?5qmMI@ljQ_ zUY6$Uf_3XTW5!jIw<0^PqmP zg?W5E#6FnEAuA-nL73%zF!{f-NzhfC`tVn@I$iYyMgVH?!j zhR4Wz#1l$s88IlX2Z&;n*cklA!B-*438Q<qhhNs8oWaPw|=eoSW zmFDOTR&2?kmW5SQ?>j%YHnrm)tG4KSS-2>SZXbN@WnN51gz)lFnop=iCjGPZ!K@QX=Zu2qe?eFM z!o2If1Lnk`vGBYQ?7At~72%o~jM?|NYXJDq+qaJX$A5N>>lUQP&R@86k;N_7_=m3X zv99rJT+s)v@ec$$VL5ibM=XzaZ5FL-ug48p`h9;<*HFacK^VbSv`r0SVNh!|JH={N zqFNH+U|y6N-`W;=d2&Nv_m%d@4&6}B$Jp3;L!%nq;m^9VGv($tGSZdp8~UC`b`0f= zo`11s&Ag%K=U>Fe@|-iyIGdd*J2PD~{_c$B=y>$_8g=w|w65HI0(-+GeM(A+Sx-(G z@EhPy#XZLObL99zMvbZ#{*<{wzHBk5a-0KQ4$wNIozgyV1L0UuXNlo!6Z*inBS#}A z)H#}2nqQkgB0?gMumqh(!y6_tIBKNdlysIn5+G>zU+bS>=JLo)%L!r6lH15RAr>Bn z7TMAug&ywq6v|3EcTYNg%#KiP`ileZuO1Z4Ac%6T)M7fG+JJ;uQ>PB$0>1&`9BU06vAO;Q!=-27Fn;Qv6jG zXu5-(dpYT7!YIhFgLpe=mHnwcRH=6}rDAvUs)&V6>8G2;DbpewzbRKs+QiKj-%Z7z z@45Y>Pj{4c)@CN1;=fw_YQ}=LZzI)*-d+(m&+xeNZPO9SM0o!Fsz=ETB}5_ zM1qEz#m+0B#ul}+rDHfYB@;y9K@I*nh_MaFI-4ER_4a|nT1FJq%?>?RW78MThYAej z&gS`jPydlp8^x5|5}tprKJ?41Z}vMlXP_OEk!yJ7`CT;|B8ibc4sg@L2sks_N5W9% z2KmhaSso%Kn@mz^vauN@M=eX`*WztIqb1@(~ZqttyER(T5TJ zOff!Jmdfy$*>ULCSd~6fvU{TtFi-p$9FmIkW!%H#R$B1Vur*7GCH$g0-r2k0m5Z;AOwgILzA`J+lk!yW4EqULew{(i z!75Lc2ch3t_^#^|rEm{1NL@NJ1a@isX3}R8LsVl(2u+>t0SpVm_7;k-6lo#CBBDZw z1Zl1hVjyanHoAoPXx)l~krDX^ADxU${%z&S=77^p(H-X#g6@|stWUlY3FU%_!KyDO z|6UbQ6dJapUI$=jAaw+C!16;AEuJkNSN9dZ^SCOX8Xr{)?id(yzRTEcZuPAno)T#N z_S4n(%MR7td}vTseDi7nJ!f6wwqA+4+j^TgVS&l9*9-Z>zKe_&uzZV+_`|WT-}^2q zc38yIQ*6F{1f-oo?OACpc@_A~e_dv|Ady9m zoVe-P^1|~yZ+hhBqZw<@dVE~erhdBX$Z)3rx{7Pq!7L*}@6>ra9LlH?%=P2aXbv{f=-om9fv5S5O8CrxSPtP}RE z^Z7~gICs;A2WZB?TFy2!b!(i+NlYp05|D4IMqfu?PAKY#A@$!uW1#xIm z20HDZ>MlKbyIT8P<*C+w)HCewF>;t@>7SnHm)E&Babb|+%?_~(3)h|CVkR%_StJ93b!FA@?wZyQ_5al8_smC4LV|wxetK$|NtM zv>V)_Tw-oDxJB5adWz*5-m$gwy~v*2k@=pm>jHPAAj^sHo%E@8tqT6s`^Qci#5mwj z+qa6%yidZU`2K_B4^d|O?B$W0R~p2cl|-4vDJ_*NyW&?;Ywov3IN;B8MLOV4`iolp zMc9!gk@h)}_FZCdvXgJa!EFxs);%q_R%&ac<%LLLsxV0qWfmIMWY)ZL!op`hMYX`w zf+UG#wu3km8K{K=Qsd=L%qm+SH&AfGyOPDzIz|#e7YWp#)a6Vi@DSU2=>{!;VtA6? zF=30J4;;hFgh4j_sNNhM@Cv6ELgn{_g%^lHh1h0}0e>;9Yg__zglFl}w$=+>#~=I( z3})If6>j9}$k^36W9k=GcU;81O5Rl)wo19Pw@%-zkcuxrqV@>KW$0+tjufaLDV{sB zj{at5)GyB)eyS`#2Z>g>-xR)XrG2+Pg|Ypcqt=B?9@GyGlB8zA9GoF8S*H4Cwb_?| zdnrn@x2gGE((@jlRsx~zrAfY--~p`?@-Nh3K;bx6Zz<73JBn@^hqZs!;KG zj%`J8)F~sY^spkuNEF&{AHP8&!RN?621dK39t#L`*PeCxdeQjWlUe-Qk(v+UsGJJ3 z9B!kq8O{jJ&z?2Ki`<)<|GGIpx0&ITpPyz*^B2kdBE!q9LY178BsNZXZ2Gm=UvEf%@<8`z&TiMF zG?&!D?F+6?RD6FtAxp5p!aZu-EV4gr;iiZ;rqRs~ww~E3-<3SxS7!WpK}oqt?y)iZ z$KHDR8}SQ!WTJ8V*yHx&LszeKK6Y>)KEAqSU-G@C62ldV4-(%TWF?QPVl=N_(CS03 zzjjZk>h^xI)VY7(^!d&n&O_csUJ-KG#j@FRYsTNRNo|GnoH6&M{>K{$_VB4{ED{+ZQ+n zX&`15+y?`!f*_LPBrvn(VYOyZMU5|qfi~0>(Ocv0;K~6-$D-9lp%)K1CG=UusS@&( zDPoS;VmnmQcVx<{dQQM>)deg4Lrx?VPS^#Mr|L9yCLUOfF4EA?9^$*W((r5=pfY{hhW8ZlZ01+oPbxI(5uWj$2zZ$gZwB$aS+q#B+MD*1U( z)Q>VP8PGdN#T4n3tjY`Kc@}Ep#dSFt3;lY@hHJ>sTsF@Yr z{5i+I)q7>u4-Za2N8YsaMA(;%;K-qhFTGt3PB)xR__|KyINOk3Ui$gmH`ELoG|I#Kr1+Gq@*T(9AqJVr-n4{_|#w4!rI-t^9iuKQ1 z9CqvDG5b>cN@AuX{&8=V2?gaxuwy2G%F@w}(E(3wYL`1LB%u##lPc1*30Hu;Lu8W) z6@p7iQ0KIyt#bAnF^Ih69V(Rx6aL{DbuKTZu6C!9q$dV=K-z%xi5#Jz$PP~V=>fbE z8jKSV+W{?THr0^>j2Wp=1%^U0NVX9SAWKB1{i9jdPFn*U3Bq%vGf;H)81a&AngHP> z$R+{P!cC|ogV{BxJ`*aD8CW6-stj+b2>%yp?*Y|R`uF?p^gu#LBnhDhP(%ol03sr4 zXo`x8q8Jc$ho&e>R8&w#5(q__SYUz`8#dIas8~jlP(+HNj3bN_A8%nJMsmYhX2{Ihl#sIRRt;61|iAHAlPN;#yj90 zaJN~wak#s@&2w>+XTkWrX!ZNA?ExoOPrNW%@R>TA@r`a&`}yR|*MEQ8^F8CA@BjR~ z6_UObs)wkgE2)Jp4gX~6v(~20d{SfNAD9(8K3|`#jmVF!n_iRdb4S+G2~V81s0ndPC>3A zkdeiw2yj3x?zvJCZmQ?LWVI+GV1wdrUJLDT}iqKpetY3wVJTLjUNPwFO$jO%p8 zkSXmRKX(B-gC7Ny-=6>v2%*pbBrhWfzI5Wv;S(^FmEt?%j922@T|3r5rQQZhS{bNg zjpeCfgzhmFI{a%4X#!b(_YhmC7(VU=4P7CpAU8pvE{?VevDH*V-QHKA7#0Px3DKyr zf>#(41vJ!f-EJ~0$uJD=QW2R2u=XG5yccEpvK?77=>xkcEC=V=P%>XpFUhCp9ix76 zH}u%%P};xQDR5n zdrkp`D>I6*PGVZ-3+gkr5qLEwJyQmfQy@ztOi>dCu!MNE*}%MSKj0vF-AFkB705IM z3eCo~C+l=EB;3EtIxTgD9DDThK&U+=*kkp3#@QG2>DDugc`c8bcvcH)Mx`N;=}u2z7YO~`jFY_A{ELUHN5Bv(^ zvr5ZE6>U_}>5{Zv1p}*ZJapv7|Lo)ulVkGL*RVKKH$jOzn{~n!d4Xt&8bq4{cvs@Z zI`A6OF}<6yRQu0}ohv*7dKTmADj_^~0*Yy7NB~Z!HZ8Ljt`uVG7UR^R$UF_?;``3L z1F7|pBoF!TkYx{-)5=~DU;bB-eBMhC(19ZjLV&Wk61BvaM761kfoYwL`4`&U*AanV z=UL3%sT>hdiHUqnm4lNBQXMdGgPsP22#=-mV^S;_5CFtbfayU1z-*I{Da;`w3OQd2 z=s01nR!+@i5gm9zK09N0tX}yuw#g0JDLh*VjY8wXcc5Ui^_wjX`VHYnTP*2 z^5Aft)Z0-0c~{;AL!bYmL**+BE*a4GK5`414jkVo~8ONuy7{u!$mA zcoG>n0O8q;lQSh^8^o8H5)aiSLke^4uBKBEjLw1${a z#8sxoNjqd_Ab2!}K|r`RAaDd)CTf$1ZSC_hdIBQEO^t@55%?7gtufewW^Dd^)%^w) z^ff#;{t4lsKkXhX^TT3W4gcAXBJH9^HY?v&$loDMLZb zJe-1zI56QXGMNnD3T2=|iD}rV!6U;8jrJRS^BN2m}gFo`okf zvv68DnaIPQpMXfQFAh}-&&CwOlPkq6{J;MF|8va7=c&}JP%|?VRd_XZ|KO1=p@c0a zZFN(_&3FgH=aL=L~NAo_Sqjhb*g7z`kE^&@|Ree&P< ztJoOrl|xn*x2{Cq9FBx7u1S6ycKxD4cx9b!MYXN3#`i9GIR15OXJ=LCl^O{sm6w^o z6SlP#cESBaCBvW0d4r*^j)>v)p-tb&;Gr7C5-TM!noBa7yGW_bj+iIaC zHhIV@p;J_wWu;t^Wks+`6;(TQI=nEswpLUFzcQ4O&^;~_ExUw;ljhI z!D^9Obl2qCM%D)E4eAZW%?*U47Y?1gPWbF3~f$1Ts7if%M3UQx7l#HA=;c;BPJfAQ517E*&a9CI)B*c>8|H!J$NRKcmOO+|6V}{znXaV#U6n}F*gL50rMDY?z zDtjWR+umL{YurVPp<7NMe^?T`hoCd`3^IsCJj z*t>TC#tDNCJEdi1Er6ln-H;M6>u#}S`XV6iw^+jl-|pd!Scsdl&qrr!#3R^ z6K;+Eul4)?ttkr-Ubj*4HtUj}2gTN^0inv0ANQMFYv$zSv57#Th%lj8SEh)Cpt~_W z*fJzkmNHp@>a>b;g{bCTzJwfJOE;kr_^jFN1xOyzHRvMNJh27~_bGUoEE#_jil_QR z3#&o5p`aS}Lk&j0m%}h!gIiJA4df!)>5b4nF9Ej*;6}hN;;UxB2y8PIHx)PY@Kl(r zLF1&fj*Y)nlmEi_g#U}rzo6X@l*Ufy&eMXzAjrakA|0sP$pJd$D$@|h(D^XQlKZLO zVeL*c0j67Ha%R9dVjQZ#I7*-f-~{6*HWe5K{W;#`H2K(64H3qWK|>a6mV995pS4tq z^XcMxP?g+GV313sx`|l~mQYBQ*E{rZ>Eb7J@qJ7z63-99C}jK~XxT9L<`JMy^MW)Q z$YTix!AZ@}Jdi7+^Xna;;cD99R;v6D(BD7*-}?POkH6;y6i)7;NspUS${%+ffhf4N zBbd17%6C_XpWUO_Db$K5C!AV!vC)_f?-7V)LC|s8NBjJvMs{rrK#vmYwDop^R@xC&wYl#bnr^Q-=<=CDz#r#nxq%H0$ZP| zO%gceN`s;gUbUg$2P=o-`=+0*r#Ig(qhN2Re_(qV1+tgWG&Dm$Q$KUW^bR?7PUcLO ze%8R85l1N6lQj!UD&SR_4w(*F40*~8`dQtx20SzU=-5X09%ZWOh+~f(0ptDEcxKL| z7|60YK>Rag&17}237EZ&(lQZR8c_0wE zqp-}ZeB1fG*<*o>dl*)ztP-NV-(^DDHOVeiviI;N_E*^b{l95uqjzC>>e2iMigR6c7Fdg9HfLf@WAQccbX22FF zAhQgud;t+#9ZRrHNOw%HvV~`(L5ERAD&_@9Aea!?hqcpGYzG3;M~pALFpL5PzrVeGirJj z#x}&xRGVTJ10hmnY>xsG|J>d~3Cp&Z51ftZJ&w9;I590-nsagnm(=fWUWOx2c2U)= zibK!seb_kLxU`@!+WoV6W@yTo#7PAK$pw~zFywA?<{NWBm;>|t&WM)3Pwk)S?=;z* zH-1%&elB3_9W5mHdB+bF{bnn=Uo3HspUx@u$e#D+aO$i0*t7#KplrbQ=?gu#%KGs6g7w^~19=w{J znX_aXdc4u)hy3z@qi}V{GDnLgr{n48KyRUWj>l;liCz_pX(*uQA{Y5I!0x$40uDg< zvHCT5=NRjmTf&dpcC@}Vw#aP-GC!dBv*$GrqsLKDUl4Ex>tpJZu@bmy<~;6*iN|5o3xB!lD2#GFGmz%yI^u)ZfG6 z@m|y?^s_eWf#@&x4bO6g>;A&3@Th2}G*WwKAB{FzHBq@}vs;^=PxbcCR9wcWS+}Nb zrg?{9aNESUz2hcqA3{$2w)Gb0Ps5tfQvwaHg8uXPBQI-zJ7ckj%zyXtr;(%o40jvh z&iuGD&Cnm;MY)qy`)0~dH-D=XOW!sJW)CaFM8w~6t#OPRf9rtHGtIv~_9bt1NKyp1 zO^&K`twSd4<5csuS@#HnS$;-k1E1-gPCx$;0C2M@}L z!Fxe35ctW0m0%Cll!3TW!#4a1P!!DU0F9>-qc~%|oBT(@E$^^NAS!8;(giv0X&^2X z6`)O_;nl8_iGnC}8jxBKR6hVwDG(v@XlNm|%)?CguNH2%g+wuJb}HYU+| zPdyRs@loknKEpxDZ`hjv- z5OAKm+#JAsIe&qn?+iEv04D1WopEA`E8w#LXa-T35wfeOQuNlo%mz7V>)a2PZ^}~iGhlY3k)}zs-n4~eE>AK!_CA-wDR$i^ zv5mdYDHgqHYagt;wrv2$=|5rYOdY(^r)c!qgr@D;w(;emGYK=gq^}Ph?~A=#wW$~z zfX~dH_PE$~to{BdI#2w9Y*|ulne{;PCB2eqE3uZ0jo2_)zI(i9Tg0r^Ehp+u+QK+{ z$5yfp8_Qw%-eW6i>7Vu(hEcfU#$45>zS!pbrNvVN^Y3$RPlW-zg;78#AYf&#|MeOR zcV2ddi^tv{hSz|dq3HL6Ne4D=qu9s|qr0u28s-{P7sBgAGs-AR2$=jqlc8TjOn1~g zB8-BcNB+-$hT%QLoiN&dG-wR!Jp>=e?nl~V+QXC=bQpiZs@$E?zDKr);OD4$NY&eI zqj&E?A1O1)sh*iL$lDcvcR!+jvC!I*x5Fji;u%!EXLd=9k^Gw3l1C7vIpR<=N4=-V zMkYnf!UO1jIsr zz!z4Z(8hjurq^`-NQnK?Ii*Yh%=Hee{jPI)g4rkCZZo%NXOvM31{4v5RSI-H4YZO> zWM)hk&H6nYO$}E#rOXuom+KXm2vG`ga7Wxl)IqbXfCjir`7+Hfl@F@amfcgp1G3Uv zd;#<+vrmCo;HfUqq>VoXJh~%z%`?Lg2QV$F>e_c#K)tpET6{9TDx!u3I(rUDW4dG} zo0GmJftv#8hqDZrgxVp1&cvUAE7d~MQJ6q{O%Vg`Bou&!NCuD#nV73V90~5g7YMMz zxqJz}9yVSBr%+DN1KYa-rxD29Q1D8inA1rtQ6zz9shumo1~~6uNOA?~P?}q9`K~m> z-+jY&!-hu&^<~31gJFMp^nw-NX7wc-ex7&JVBE3$X>G(OXPGIU5Wk zS-o~UN||b$kouvn>J5Vn(H)*wLmT)pSLWu=%~?8wS2HfA2Mntx`8^i9b^La@Pe24{ zbjj)}%n*4%_ZC8NA%i0Hu@+D$RDaz#btVpX99b(?13ErS$#35+2@cXK@ETd2qJu$6 z*VsQ%_Y~(Q*f3NBY80=PQ)c^KQ4M^EJv$fmiB%iP#U#0@DrH*)7(~FQXd~<%)7Loc zb)NbyY>V(0=KLT0MyZU#IypSMv4#wqXfj+sj!_<`Mwz%=N&=3-li?)@?*jt+psYr9 z8X)~(Rq-G5gdf<`Q@{XYB*(#G2+S4D+A)JS*u`Pth6z-U13L%kx8K3&v|!%GenI0~ zgH(aBUEPDNw9qljH-Kv~%RGoiV`t&j#@fM~AiAaiyNQ|tpk$c4jiLky3Pn?c3}l{A z=N#0-cF^%fS&#;PjH+PraB^5s@jwu@v~Nwv z`zhk2arXT*zNvE>_%$SvTyBtU*yn(zx;9f`+RuRAn!A2DJ^5M3WrN}5t{?6`GOYRj zd~nB7LMj<&*yeer)pM8msxkrwdOzzbF!}79L+94A3m8ZjhSzghR~r83EDj zL30P!j2D*6o1`?3U|td_jT19f;xpFv_o<2ddE(RZO4TIP9<^64l!mLqa#Z$}RB6EB zlvfgCDV~$ zg~yF`X_6)CY$*+g{rWLpcQ@1Jn<2SIHCt*4QL_*slg@~?5Eg0ocW;&zl0$41R+>M^ z3t95biY9u=H1XRkXPb&9R>fuly5Dq9~i>a0?BOSb8z6%1Dks_ju(( zRe+3gFr#PG@yCXe>M_J8)?<3Pga9fv8>!R}g&(n-2k>AM1@F;)4%Dk)<#p z0wIlsq}wEJ8Mue_0y(C!0HGOiAg%ze{9b?8S6A^JkGMspMY8Xi>(Kpx>NSMLU~ z7;@xq=$ie&IgDVe*;de1kRt;SE`Z`XA>adZ`s3DMz4cYNXet*FwCxySRt-4WG2rk_ z#BPM<|FjX&_S9&o7S)W4UPjaB4ehpnUhVut;PWqwC#`FK@+Q#6O{`kGvZnB$r^=50K$Ix+woE41%Zg*%Rr=>`Gfib%k(DDg!XrpfV=ln9wdK7Hc6 zhdjh71qSaieT`%x1LFgSZ!{_YiFboaOb0)aD|EvVDGwC_7}l{BI!7*?T-ZHMO+x2W zLJ_kR;6vsic|PDx6zizqecHt`rRGv|$pr9U$#F~qLN^8Pl|3BI%)>4S&xvEAngDyu zs|Y?utVD6>qy>t`6< zx!L7u?dtDthULNNx{nQ;H$}X;Ui_Og|*)-_fg}&kYwLg<`;fq(peqt7xT=Rex&sWf5*{4Uqh*u7)L@2 z14Wa`N%L_nu+qw7!vY1wQ!t`4y+$2PSJOduask9>PD_NCj+0$uLwb z2deP5q{{o4p6d?K`uLAJ2CSE0opflzDd-vsfbs`=-g=KG9q{hL-0<*8WrN1#q(l%G z#sq^;bbNya9`jaW$C{DqCJqF3t;QmTVM4cqgmH^O9)59R0SKD|ta!@W;`3i~fBu1^ zbiTQ~+is-Z-Ta%~sQovt*{J;&#G>pYarNLytyKlt-0-#4X=ka`5fQN{#q$}}vZm_C z=#<;Fw>cC3He?LF^F3fy9^E)=?w>`;I!X+>V&UKaRE*|}K@z7R^6;&MRf}87$P!62 zu?$_cHgh`?vBZ^g_soRM0uq-dfJuEo(NZzKa%qE{{q~h}v$MS{d+7%6Fj$pV0xsK) z53p#!tlzzeIw8TDXNu)`0SJ8GN;HYb^p3NO;$bxz8yPdkM@pXT0sQCWNW2a0dML!_ zh;f$|WMbHM?CWxH=%`QG0RXv!$WF;G(I%Tf1?eI>CHs^c-;4-hK~J2tQJ^Ni_3o9- zq_V>oQ)pA3;RP^*rqKZ4OvCC7>ybBu>`heP`u}`2f-%kaTI`btnP7lbH=F{zJVpb* zUNG;!h|?gm0^gCSrCrdqPsCzBvG*mu46#}uZDKHd0fk@~IcPAa26p*>XyIcta{hV% zMu$YLhW>vCCLo#t;a+3)xfE2P;S4Mc4W{Qmf>=rj2(ql@jDqGUz{tCRGH!r4Ft}_d zTv@Cx42A$7op-23T#bi=wrn0H?!!^~)o6?M+M(GGv}KF31jqF8`yhtL4jyD(U9B(L zub)0K&HxWVh>z4ZTk&OPHY}j7raQ)Uw@id$gMLro2%Hb$LfDeVYx|D6O2`?qmR-SUlytTmv|eu~p@ zplG7tz*W+)`z`cFbJzSYcUE{1;ppRL{0VL4&r-|y6WYheA6Om#0_Uub`g3I-)4gWT zgumR+?NY8wYRE2Iu-t)On9++*{@ySx0Rl~*Th;`aO>KnFZJQo z^{yTFEM%5ggfJvv9x7qHiDnY8&l(?irWVcI>(Pjfj>%4n5oa#}}%1!h_MSAGgFOU8t$0 zU3<23&DYL5w6A|0*>1Qr_)mrZ_8ZH7y#r_c)!J2{zth6MW91s}UKhV|RN?W@P|=1X z+iwIkfeO*BIArO{3qNf?_{;jpUEjA~`ub}1)qgJaw{|U!_<%mhl3x}IS!3nI$Zk;w;aiErLJ`{B9KYy?(gh+f?GDka} zwY}amE}bXdongqLjndtF#!1KZj57=gkLjg2rE)GD=1%5(wG!4@TI)oT7ui<9TbWzS zpD)X>z`OXDtgG3&a{KIs=QtC;4Ta8`T`YX3ttC&}7@$ty8~z|}^nqQMz=EPJ#_Cr* zDTc*F;)j2+3FW9jzYGm8dF%fsfJ8UWVfr2(u_8}nCZE4h(x;@6NqEl%o`IH0I$`%& ze(-W(U4&Vj&1uY~qUv!j z4yP>pEDCI&TQ-^)OAm5P7NXB4o5K7Tlm@|M;RqAytf{huA=^KO=Io-srhdex#xPax zZtL{SASc7r7;GS8qJkq9cZTL<4B38%xiqFf=znO$@izS>^-ti4w1LW*a=UVS02~Xm zbjKRUJ3Tfq>Bf}L$Qza0WeFd%rk*E^zvvXQFBt9B=0r5FT}#;{+wNX@H6mI)H?p## z%$mVZZTltkMLH3U!IOpjxZv!pE%E-GaUy=qTN6sQqNNh8!zoVhUnw8s1J9fE%9PFD zQ1iu#Xfz(;+ij#g)N5^ne+xfG-bC3Ix!)t<(aFK@(_}Fn;VqHP;iqRR%*Ig`oZ7c$ zQC9EJjyV~pw)762O4}T%-Mz;`qF1Nww#wYSB&c3{jJx@Sk<;+CJ?XE_+m2K|@B5h5 z3x1Zj4`&>{w`kuS&jZEjcHY~DcjVm*{nMRxVw8GimwN+<2H@i6_Ssbh zy?;%noft3;7j6)=d(+((XA~SAGTd|j(Qwapc*mS;%Drn$ z56(WdBX9hc-eJ#EMRU2EAv-?(wbSO|%sAS#*2XQg=})GQjcEx_$J{^{l61&ZGq@O`J*Cc=S(P!qQM#jNUqd zZQm{JH9`5A!ccsB$V}CtqQ?ggEjh?8dLXai;N?GSLz(x*&f`pG(+N4T8pZ56+Eb_w z|L0-_lf$!DL@JmdECKB|%5{*&M0Rc{w)nu|37qFd8%Xx82BaKbf$y;M(`A88>2SG@QkyzgqA7C_@B|0mWwgKabPfov)JF!dOQq z506;;1g=Ny_cn1ePe$gH;wv3_O|8C$p|(-qp|(#yClnuEqmLrW_Od$NW{$@tvUEWq+Qi-;8$Xp*^Hib2P?1dhb6-!;tpNi6U6 z?ooT{e5TT#Dq?1jDD7#6kwp{t#@D;sQv;Y+QWw8a8a`s1N)9{-_dgDHm6wL)8@W3f*U?w5ZrwnO$^> zIK&5sLx_BwBUZmF-HMHX51jk2|CdmaFFb^t^EeZFZn|UW8$?KmS;UU8A1CWgHXAYg z^R3CQOE{kVVD@)Ar#*^~qB;aQp+N$zXig<4O zRf6%TJu9y+!D>}GV{L+ZuTnSn=;-y7N5akz&GYzSoFEH`uB!GDmV`2086H=+&3l=c z+^|1l0_WBb-_M*medg4u%Ae*g*tV~4){CO z*PfXhLjfG0_8E+lD0LML&YaGFuP7cJnHFjA8t9H+U4 z$Bm*H$m9t8V)+3$vxz;tyPLFEK7v!AIGK>tcLr9Yu$t9~@J$*6PT;f4m1ub_f+?Q> zwDkayALKBM_&}za$>IxT2)^%H&Zc+O56iny3W=D{A960}hQ85Vh4tnHQXV@hKr>k( z7T0UzTK^yk-=qa~U2WB(8Z8=KT@ldwAT!SRSH+??0!1u6kU(k-9H+cSr+kjwyWawb z3Ri)*2d2Ha%np)5CUTDDqlZZ7%?b(6O(+q$+G(^Ic@-YIo=sesTV@QJ-5>iKrkVTP zy5DoF=+j+i)=vhjH?oaIkMCls+(k_<@=c3A-3~Bq|L&+ComH^ke$KFQ06_UemT&`H z{&n#G8^BTGM<+0O_zuK}9H60BBB|z;xON*SB(;CGN7I3R0^hvSbgd1Uz^9*!gbNtzzqvq z6zKuF4MB~@6L9^}jENSqX`xp%okQ=)`@A#LTF2nYh=Czdc^?U2I(H#O*N&; zyYu!^v*5}MjV3jYKtX5HaeAROLC5#u5#XgwCs4$&RcnAFQHH_Lux8X%v^>8xA{fQe z0FN1zVm{9ak)v!gMW$>a83*7nyja60Qsp5$5>l(rBbrED0L77i1;cM#k>uZV^;xHl z{NJnh-+KOkZ!rASWG6B*8J$e8q|0NZ9%QnSI3^a4|1I`}O4{UC4{ z;>vlu$W%>=n^?5IVAYc#ex4Fp*S7e4E)u{b)X7CukYeZIktxeUp8k48f|n4%PIUe$ z4WUJ>JB`wo|8>DI3gjis=-`Gobi`3<++*LpGc*;qa_sZi^I?St41EHr;k2-RzR3Bi zP{SqAXJhr->9yI2&fZzQ>%Z%lmcw7{{2&v(|M|f4@B_cdG>rkRbvWnxD}p*^bahT- zj#Hs{4rAqz!;)b@;^A^=QIsjJdR2mbfN57#4$^#Yqtd}D)8joa-^aK9xGItAv6^zYeKoB z3aJR@S@c?|M%MHklJu1F=5z=1sNE4zUan%HYj`F|gvzEnkC#(d%bO*?t)go1JVXxH z?ZywI_*lH!%#qY?S4XHJmvmE9mZ#7?6&jq0JYCEr@#=#&1}n2Bsa*90W+EnY^p~HQP@vLhFMa(w`i7)9I7&|smecl;eT4cMiLX1 zN#v~N^C;iU=q7V1@8g>WGp`RnO6+Sn7Q+M z;eWT^sQ7P;*yFq4(5*IfHyirarKUzlioyyQ_X-%>e_psfp@_27WU-A2#l6tYW|0wX zQJ*d}B~|`ehKi)^bcq{bwT-wTv)!{oO_vDBv;c>8^cuB5h+fkbxX6a9LohCTPki8wU_kP0djpN+EfkBg1Nvkn-CUV5YB#{mCT5*&E1zCEtP1fxIGywT4yEid=_^d@+_9q4E ztN1D*->k5FCI7(}S2e(jVoB&L$Zm=%3Hkb3Q35Lp?kt}k=TtP*1UXyEDl`?+004;- zs7$(ZNRWWXr1Qgs$Hh9*NOJ0np_f)eFN%8ZSiLUle8D!==Y>M!W%9V>aX!2-Ih=}D zC~4GeIGJZ|XrQo}!0l)AUcK4bsDCl^T2AC56R}DY;&4o%kp`MXF^ZRmqI>Z{amQFQ zWBB;lsK0_3L9~!CJPhB2{A^h)%MqUUfm`tDnASWpcy>7?#rs%vAlzv zEOXVY<4V;m`Sw!9OX!H$WQsm8XF|o)N@KlUKMA3dP`-+9pP6YP68*CO@Up}xk;HzF zsRNb)??{#vXH%RK`H?q0;r=|Y*Cg^I|WH*9&*^gj99$_l`0_$ z@H}UT$K_-W?}vC?fCI3I5aZ8wnBJ{@1&RoDL*(hI5Q~vna?nNqQG{>gj5(=eyLxQ= zHF#CxsHZZv<=HzHg&_X9eWQwF9Yb)8jQ6LMpOUv-aqRIca>k+o3&-)|MCD#Zo(L|l z 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⪻)P2+Z%Fm%9<)# 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


hV~u=CwSA|L>-w)5AcB0G03@gt9|O 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 literal 0 HcmV?d00001 diff --git a/api/tests/integration_tests/model_runtime/azure_openai/__init__.py b/api/tests/integration_tests/model_runtime/azure_openai/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/azure_openai/test_llm.py b/api/tests/integration_tests/model_runtime/azure_openai/test_llm.py new file mode 100644 index 000000000..e74465283 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/azure_openai/test_llm.py @@ -0,0 +1,340 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.entities.message_entities import AssistantPromptMessage, TextPromptMessageContent, \ + SystemPromptMessage, ImagePromptMessageContent, PromptMessageTool, UserPromptMessage +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.azure_openai.llm.llm import AzureOpenAILargeLanguageModel + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_validate_credentials_for_chat_model(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='gpt35', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': 'invalid_key', + 'base_model_name': 'gpt-35-turbo' + } + ) + + model.validate_credentials( + model='gpt35', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo' + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['completion']], indirect=True) +def test_validate_credentials_for_completion_model(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='gpt-35-turbo-instruct', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': 'invalid_key', + 'base_model_name': 'gpt-35-turbo-instruct' + } + ) + + model.validate_credentials( + model='gpt-35-turbo-instruct', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo-instruct' + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['completion']], indirect=True) +def test_invoke_completion_model(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-35-turbo-instruct', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo-instruct' + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 1 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + +@pytest.mark.parametrize('setup_openai_mock', [['completion']], indirect=True) +def test_invoke_stream_completion_model(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-35-turbo-instruct', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo-instruct' + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(result, Generator) + + for chunk in result: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_chat_model(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + result = model.invoke( + model='gpt35', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'top_p': 1.0, + 'presence_penalty': 0.0, + 'frequency_penalty': 0.0, + 'max_tokens': 10 + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + + for chunk in model._llm_result_to_stream(result): + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_stream_chat_model(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + result = model.invoke( + model='gpt35', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(result, Generator) + + for chunk in result: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + if chunk.delta.finish_reason is not None: + assert chunk.delta.usage is not None + assert chunk.delta.usage.completion_tokens > 0 + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_chat_model_with_vision(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-4v', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-4-vision-preview' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data='Hello World!', + ), + ImagePromptMessageContent( + data='data:image/png;base64,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' + ) + ] + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_chat_model_with_tools(setup_openai_mock): + model = AzureOpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-35-turbo', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'gpt-35-turbo' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content="what's the weather today in London?", + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + tools=[ + PromptMessageTool( + name='get_weather', + description='Determine weather in my location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "c", + "f" + ] + } + }, + "required": [ + "location" + ] + } + ), + PromptMessageTool( + name='get_stock_price', + description='Get the current stock price', + parameters={ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The stock symbol" + } + }, + "required": [ + "symbol" + ] + } + ) + ], + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert isinstance(result.message, AssistantPromptMessage) + assert len(result.message.tool_calls) > 0 + + +def test_get_num_tokens(): + model = AzureOpenAILargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='gpt-35-turbo-instruct', + credentials={ + 'base_model_name': 'gpt-35-turbo-instruct' + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 3 + + num_tokens = model.get_num_tokens( + model='gpt35', + credentials={ + 'base_model_name': 'gpt-35-turbo' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 21 diff --git a/api/tests/integration_tests/model_runtime/azure_openai/test_text_embedding.py b/api/tests/integration_tests/model_runtime/azure_openai/test_text_embedding.py new file mode 100644 index 000000000..797f69968 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/azure_openai/test_text_embedding.py @@ -0,0 +1,71 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.azure_openai.text_embedding.text_embedding import AzureOpenAITextEmbeddingModel + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['text_embedding']], indirect=True) +def test_validate_credentials(setup_openai_mock): + model = AzureOpenAITextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='embedding', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': 'invalid_key', + 'base_model_name': 'text-embedding-ada-002' + } + ) + + model.validate_credentials( + model='embedding', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'text-embedding-ada-002' + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['text_embedding']], indirect=True) +def test_invoke_model(setup_openai_mock): + model = AzureOpenAITextEmbeddingModel() + + result = model.invoke( + model='embedding', + credentials={ + 'openai_api_base': os.environ.get('AZURE_OPENAI_API_BASE'), + 'openai_api_key': os.environ.get('AZURE_OPENAI_API_KEY'), + 'base_model_name': 'text-embedding-ada-002' + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_get_num_tokens(): + model = AzureOpenAITextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='embedding', + credentials={ + 'base_model_name': 'text-embedding-ada-002' + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/baichuan/__init__.py b/api/tests/integration_tests/model_runtime/baichuan/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/baichuan/test_llm.py b/api/tests/integration_tests/model_runtime/baichuan/test_llm.py new file mode 100644 index 000000000..4421b5008 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/baichuan/test_llm.py @@ -0,0 +1,190 @@ +import os +import pytest + +from typing import Generator +from time import sleep + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage, SystemPromptMessage +from core.model_runtime.entities.model_entities import AIModelEntity +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.baichuan.llm.llm import BaichuanLarguageModel + +def test_predefined_models(): + model = BaichuanLarguageModel() + model_schemas = model.predefined_models() + assert len(model_schemas) >= 1 + assert isinstance(model_schemas[0], AIModelEntity) + +def test_validate_credentials_for_chat_model(): + sleep(3) + model = BaichuanLarguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='baichuan2-turbo', + credentials={ + 'api_key': 'invalid_key', + 'secret_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='baichuan2-turbo', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + 'secret_key': os.environ.get('BAICHUAN_SECRET_KEY') + } + ) + +def test_invoke_model(): + sleep(3) + model = BaichuanLarguageModel() + + response = model.invoke( + model='baichuan2-turbo', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + 'secret_key': os.environ.get('BAICHUAN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_model_with_system_message(): + sleep(3) + model = BaichuanLarguageModel() + + response = model.invoke( + model='baichuan2-turbo', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + 'secret_key': os.environ.get('BAICHUAN_SECRET_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='请记住你是Kasumi。' + ), + UserPromptMessage( + content='现在告诉我你是谁?' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_stream_model(): + sleep(3) + model = BaichuanLarguageModel() + + response = model.invoke( + model='baichuan2-turbo', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + 'secret_key': os.environ.get('BAICHUAN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_invoke_with_search(): + sleep(3) + model = BaichuanLarguageModel() + + response = model.invoke( + model='baichuan2-turbo', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + 'secret_key': os.environ.get('BAICHUAN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='北京今天的天气怎么样' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + 'with_search_enhance': True, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + total_message = '' + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if not chunk.delta.finish_reason else True + total_message += chunk.delta.message.content + + assert '不' not in total_message + +def test_get_num_tokens(): + sleep(3) + model = BaichuanLarguageModel() + + response = model.get_num_tokens( + model='baichuan2-turbo', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + 'secret_key': os.environ.get('BAICHUAN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[] + ) + + assert isinstance(response, int) + assert response == 9 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/baichuan/test_provider.py b/api/tests/integration_tests/model_runtime/baichuan/test_provider.py new file mode 100644 index 000000000..87b3d9a60 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/baichuan/test_provider.py @@ -0,0 +1,23 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.baichuan.baichuan import BaichuanProvider + + +def test_validate_provider_credentials(): + provider = BaichuanProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={ + 'api_key': 'hahahaha' + } + ) + + provider.validate_provider_credentials( + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/baichuan/test_text_embedding.py b/api/tests/integration_tests/model_runtime/baichuan/test_text_embedding.py new file mode 100644 index 000000000..b6d806df0 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/baichuan/test_text_embedding.py @@ -0,0 +1,61 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.baichuan.text_embedding.text_embedding import BaichuanTextEmbeddingModel + +def test_validate_credentials(): + model = BaichuanTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='baichuan-text-embedding', + credentials={ + 'api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='baichuan-text-embedding', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY') + } + ) + + +def test_invoke_model(): + model = BaichuanTextEmbeddingModel() + + result = model.invoke( + model='baichuan-text-embedding', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 6 + +def test_get_num_tokens(): + model = BaichuanTextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='baichuan-text-embedding', + credentials={ + 'api_key': os.environ.get('BAICHUAN_API_KEY'), + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/chatglm/__init__.py b/api/tests/integration_tests/model_runtime/chatglm/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/chatglm/test_llm.py b/api/tests/integration_tests/model_runtime/chatglm/test_llm.py new file mode 100644 index 000000000..0b139c9ee --- /dev/null +++ b/api/tests/integration_tests/model_runtime/chatglm/test_llm.py @@ -0,0 +1,287 @@ +import os +import pytest + +from typing import Generator + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, TextPromptMessageContent, UserPromptMessage, \ + SystemPromptMessage, PromptMessageTool +from core.model_runtime.entities.model_entities import AIModelEntity +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.chatglm.llm.llm import ChatGLMLargeLanguageModel + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +def test_predefined_models(): + model = ChatGLMLargeLanguageModel() + model_schemas = model.predefined_models() + assert len(model_schemas) >= 1 + assert isinstance(model_schemas[0], AIModelEntity) + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_validate_credentials_for_chat_model(setup_openai_mock): + model = ChatGLMLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='chatglm2-6b', + credentials={ + 'api_base': 'invalid_key' + } + ) + + model.validate_credentials( + model='chatglm2-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_model(setup_openai_mock): + model = ChatGLMLargeLanguageModel() + + response = model.invoke( + model='chatglm2-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_stream_model(setup_openai_mock): + model = ChatGLMLargeLanguageModel() + + response = model.invoke( + model='chatglm2-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_stream_model_with_functions(setup_openai_mock): + model = ChatGLMLargeLanguageModel() + + response = model.invoke( + model='chatglm3-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + }, + prompt_messages=[ + SystemPromptMessage( + content='你是一个天气机器人,你不知道今天的天气怎么样,你需要通过调用一个函数来获取天气信息。' + ), + UserPromptMessage( + content='波士顿天气如何?' + ) + ], + model_parameters={ + 'temperature': 0, + 'top_p': 1.0, + }, + stop=['you'], + user='abc-123', + stream=True, + tools=[ + PromptMessageTool( + name='get_current_weather', + description='Get the current weather in a given location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": ["celsius", "fahrenheit"] + } + }, + "required": [ + "location" + ] + } + ) + ] + ) + + assert isinstance(response, Generator) + + call: LLMResultChunk = None + chunks = [] + + for chunk in response: + chunks.append(chunk) + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + + if chunk.delta.message.tool_calls and len(chunk.delta.message.tool_calls) > 0: + call = chunk + break + + assert call is not None + assert call.delta.message.tool_calls[0].function.name == 'get_current_weather' + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_model_with_functions(setup_openai_mock): + model = ChatGLMLargeLanguageModel() + + response = model.invoke( + model='chatglm3-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + }, + prompt_messages=[ + UserPromptMessage( + content='What is the weather like in San Francisco?' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user='abc-123', + stream=False, + tools=[ + PromptMessageTool( + name='get_current_weather', + description='Get the current weather in a given location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "c", + "f" + ] + } + }, + "required": [ + "location" + ] + } + ) + ] + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + assert response.message.tool_calls[0].function.name == 'get_current_weather' + + +def test_get_num_tokens(): + model = ChatGLMLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='chatglm2-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[ + PromptMessageTool( + name='get_current_weather', + description='Get the current weather in a given location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "c", + "f" + ] + } + }, + "required": [ + "location" + ] + } + ) + ] + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 77 + + num_tokens = model.get_num_tokens( + model='chatglm2-6b', + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 21 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/chatglm/test_provider.py b/api/tests/integration_tests/model_runtime/chatglm/test_provider.py new file mode 100644 index 000000000..3cfcf7740 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/chatglm/test_provider.py @@ -0,0 +1,25 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.chatglm.chatglm import ChatGLMProvider + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_validate_provider_credentials(setup_openai_mock): + provider = ChatGLMProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={ + 'api_base': 'hahahaha' + } + ) + + provider.validate_provider_credentials( + credentials={ + 'api_base': os.environ.get('CHATGLM_API_BASE') + } + ) diff --git a/api/tests/integration_tests/model_runtime/cohere/__init__.py b/api/tests/integration_tests/model_runtime/cohere/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/cohere/test_provider.py b/api/tests/integration_tests/model_runtime/cohere/test_provider.py new file mode 100644 index 000000000..a8f56b619 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/cohere/test_provider.py @@ -0,0 +1,21 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.cohere.cohere import CohereProvider + + +def test_validate_provider_credentials(): + provider = CohereProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={} + ) + + provider.validate_provider_credentials( + credentials={ + 'api_key': os.environ.get('COHERE_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/cohere/test_rerank.py b/api/tests/integration_tests/model_runtime/cohere/test_rerank.py new file mode 100644 index 000000000..34546c034 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/cohere/test_rerank.py @@ -0,0 +1,51 @@ +import os +import pytest + +from core.model_runtime.entities.rerank_entities import RerankResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.cohere.rerank.rerank import CohereRerankModel + + +def test_validate_credentials(): + model = CohereRerankModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='rerank-english-v2.0', + credentials={ + 'api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='rerank-english-v2.0', + credentials={ + 'api_key': os.environ.get('COHERE_API_KEY') + } + ) + + +def test_invoke_model(): + model = CohereRerankModel() + + result = model.invoke( + model='rerank-english-v2.0', + credentials={ + 'api_key': os.environ.get('COHERE_API_KEY') + }, + query="What is the capital of the United States?", + docs=[ + "Carson City is the capital city of the American state of Nevada. At the 2010 United States " + "Census, Carson City had a population of 55,274.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) " + "is the capital of the United States. It is a federal district. The President of the USA and many major " + "national government offices are in the territory. This makes it the political center of the United " + "States of America." + ], + score_threshold=0.8 + ) + + assert isinstance(result, RerankResult) + assert len(result.docs) == 1 + assert result.docs[0].index == 1 + assert result.docs[0].score >= 0.8 diff --git a/api/tests/integration_tests/model_runtime/google/__init__.py b/api/tests/integration_tests/model_runtime/google/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/google/test_llm.py b/api/tests/integration_tests/model_runtime/google/test_llm.py new file mode 100644 index 000000000..907af0994 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/google/test_llm.py @@ -0,0 +1,229 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage, AssistantPromptMessage, TextPromptMessageContent, ImagePromptMessageContent +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, \ + LLMResultChunkDelta +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.google.llm.llm import GoogleLargeLanguageModel + +from tests.integration_tests.model_runtime.__mock.google import setup_google_mock + +@pytest.mark.parametrize('setup_google_mock', [['none']], indirect=True) +def test_validate_credentials(setup_google_mock): + model = GoogleLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='gemini-pro', + credentials={ + 'google_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='gemini-pro', + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_google_mock', [['none']], indirect=True) +def test_invoke_model(setup_google_mock): + model = GoogleLargeLanguageModel() + + response = model.invoke( + model='gemini-pro', + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Give me your worst dad joke or i will unplug you' + ), + AssistantPromptMessage( + content='Why did the scarecrow win an award? Because he was outstanding in his field!' + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data="ok something snarkier pls" + ), + TextPromptMessageContent( + data="i may still unplug you" + )] + ) + ], + model_parameters={ + 'temperature': 0.5, + 'top_p': 1.0, + 'max_tokens_to_sample': 2048 + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + +@pytest.mark.parametrize('setup_google_mock', [['none']], indirect=True) +def test_invoke_stream_model(setup_google_mock): + model = GoogleLargeLanguageModel() + + response = model.invoke( + model='gemini-pro', + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Give me your worst dad joke or i will unplug you' + ), + AssistantPromptMessage( + content='Why did the scarecrow win an award? Because he was outstanding in his field!' + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data="ok something snarkier pls" + ), + TextPromptMessageContent( + data="i may still unplug you" + )] + ) + ], + model_parameters={ + 'temperature': 0.2, + 'top_k': 5, + 'max_tokens_to_sample': 2048 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_google_mock', [['none']], indirect=True) +def test_invoke_chat_model_with_vision(setup_google_mock): + model = GoogleLargeLanguageModel() + + result = model.invoke( + model='gemini-pro-vision', + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data="what do you see?" + ), + ImagePromptMessageContent( + data='data:image/png;base64,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' + ) + ] + ) + ], + model_parameters={ + 'temperature': 0.3, + 'top_p': 0.2, + 'top_k': 3, + 'max_tokens': 100 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + +@pytest.mark.parametrize('setup_google_mock', [['none']], indirect=True) +def test_invoke_chat_model_with_vision_multi_pics(setup_google_mock): + model = GoogleLargeLanguageModel() + + result = model.invoke( + model='gemini-pro-vision', + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.' + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data="what do you see?" + ), + ImagePromptMessageContent( + data='data:image/png;base64,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' + ) + ] + ), + AssistantPromptMessage( + content="I see a blue letter 'D' with a gradient from light blue to dark blue." + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data="what about now?" + ), + ImagePromptMessageContent( + data='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAABAAAAAQBPJcTWAAADl0lEQVR4nC3Uf0zUdRjA8S9W6w//bGs1DUd5RT+gIY0oYeEqY0QCy5EbAnF4IEgyAnGuCBANWOjih6YOlK0BbtLAX+iAENFgUBLMkzs8uDuO+wEcxx3cgdx9v3fvvn/0x+v5PM+z56/n2T6CIAgIQUEECVsICnqOoC0v8PyLW3n5lW28GhLG9hAFwYowdoRsJ+Tzv3hdEcpOxVvsfDscheI1BIXKy5t7OwiPiCI8IZaIL+OISPKxK/IDdiU6ifwqjqj4WKISP5VN8mHSFNHJA7KnfJQYh7A7+g1i9hXw2dcX2JuSxhcJnxCfnEJ8ygESqtfYl3qA5O/1pKaX8E2Rn7R0JWnKXFkRaX0OhIOqUtJVRWQoj5ChyiOjb4XMQ0fIVB0lM6eEzMO5ZN5x8W1xD1nZh1Fm55OtzOdQTgEqZR6CSi5UjSI5hTnk3bWSX/gj+ccaKCgspaDkNIWlpygc3OTYtZc4fqKcE5Vn+eFkDWUp8ZS1ryOUn66lvGmCyt/8nLwxTlXZcapqL1Nd10B1Uy01FbnUnFVS+2sLvzTWUXfRRMOAgcb6KhovdSA0XnHRdL6Zcy1/0lyTS3NfgJbWNq6cu0nrPyu0FSlpu9pF21037ZFhXLtYT+eNIbp61+jq70bofv8drvf0c2vQz+3O3+nRrNI78JD+/psMfLefe0MG7p+a5v6tP3g48ojhC7mMXP2Y0YoZRitnEcbkMPaglzEnPAoNZrw4hXH1LBOtOiYfa3gcugO1+gnqZwGeaHRMTcyhaduKRjOBxiJfQSsnWq0W7YwVrd3PtH6BaeMST40adJ3V6OwBZlR7mNUvMWswYsiKxTA1gWHOgsGiRzCmRGOcW8QoD855JObWJUxmHSb5nfd4Mc+ZMFv1MjtmuWepSMNiMmAxz2LN2o1gbdmDdV6NdVnE1p6EzajHZp7BtjCLbSnAgsMtE1k8H8OiwyuTWPL4sLduwz5vRLA7XCzbLCw7PTiswzgWJnBsijhNwzhtw6xmRLLmdLC27sU9dBC324un/iieSyF4rPIS1/8eZOOego0NL898Epv14Wz2nMHrsOB12/Glh+Mrfg/fqgufKCHmxSC21SE6JxFdKwjihhFxw4O4aUf0bSKVRyN1pyKNXEcaDUbS3EZan5Sp/zeFtLGO5LUiSRKCJAXwZ0bg73oXv+kBfrsOv8uOXxIJ/JRG4N/9sjME1B3QXAjzd8CqhqWfkT8C4T8Z5+ciRtwo8gAAAABJRU5ErkJggg==' + ) + ] + ) + ], + model_parameters={ + 'temperature': 0.3, + 'top_p': 0.2, + 'top_k': 3, + 'max_tokens': 100 + }, + stream=False, + user="abc-123" + ) + + print(f"resultz: {result.message.content}") + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + + + +def test_get_num_tokens(): + model = GoogleLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='gemini-pro', + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens > 0 # The exact number of tokens may vary based on the model's tokenization diff --git a/api/tests/integration_tests/model_runtime/google/test_provider.py b/api/tests/integration_tests/model_runtime/google/test_provider.py new file mode 100644 index 000000000..0478b6c40 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/google/test_provider.py @@ -0,0 +1,23 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.google.google import GoogleProvider + +from tests.integration_tests.model_runtime.__mock.google import setup_google_mock + +@pytest.mark.parametrize('setup_google_mock', [['none']], indirect=True) +def test_validate_provider_credentials(setup_google_mock): + provider = GoogleProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={} + ) + + provider.validate_provider_credentials( + credentials={ + 'google_api_key': os.environ.get('GOOGLE_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/huggingface_hub/__init__.py b/api/tests/integration_tests/model_runtime/huggingface_hub/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/huggingface_hub/test_llm.py b/api/tests/integration_tests/model_runtime/huggingface_hub/test_llm.py new file mode 100644 index 000000000..ec96acc17 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/huggingface_hub/test_llm.py @@ -0,0 +1,304 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, \ + LLMResultChunkDelta +from core.model_runtime.entities.message_entities import UserPromptMessage, AssistantPromptMessage +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.huggingface_hub.llm.llm import HuggingfaceHubLargeLanguageModel + +from tests.integration_tests.model_runtime.__mock.huggingface import setup_huggingface_mock + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_hosted_inference_api_validate_credentials(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='HuggingFaceH4/zephyr-7b-beta', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': 'invalid_key' + } + ) + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='fake-model', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': 'invalid_key' + } + ) + + model.validate_credentials( + model='HuggingFaceH4/zephyr-7b-beta', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_hosted_inference_api_invoke_model(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + response = model.invoke( + model='HuggingFaceH4/zephyr-7b-beta', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_hosted_inference_api_invoke_stream_model(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + response = model.invoke( + model='HuggingFaceH4/zephyr-7b-beta', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_inference_endpoints_text_generation_validate_credentials(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='openchat/openchat_3.5', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': 'invalid_key', + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text-generation' + } + ) + + model.validate_credentials( + model='openchat/openchat_3.5', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text-generation' + } + ) + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_inference_endpoints_text_generation_invoke_model(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + response = model.invoke( + model='openchat/openchat_3.5', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text-generation' + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_inference_endpoints_text_generation_invoke_stream_model(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + response = model.invoke( + model='openchat/openchat_3.5', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text-generation' + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_inference_endpoints_text2text_generation_validate_credentials(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='google/mt5-base', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': 'invalid_key', + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text2text-generation' + } + ) + + model.validate_credentials( + model='google/mt5-base', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text2text-generation' + } + ) + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_inference_endpoints_text2text_generation_invoke_model(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + response = model.invoke( + model='google/mt5-base', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text2text-generation' + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + +@pytest.mark.parametrize('setup_huggingface_mock', [['none']], indirect=True) +def test_inference_endpoints_text2text_generation_invoke_stream_model(setup_huggingface_mock): + model = HuggingfaceHubLargeLanguageModel() + + response = model.invoke( + model='google/mt5-base', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text2text-generation' + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + + +def test_get_num_tokens(): + model = HuggingfaceHubLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='google/mt5-base', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL'), + 'task_type': 'text2text-generation' + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 7 diff --git a/api/tests/integration_tests/model_runtime/huggingface_hub/test_text_embedding.py b/api/tests/integration_tests/model_runtime/huggingface_hub/test_text_embedding.py new file mode 100644 index 000000000..e1774dd2f --- /dev/null +++ b/api/tests/integration_tests/model_runtime/huggingface_hub/test_text_embedding.py @@ -0,0 +1,120 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.huggingface_hub.text_embedding.text_embedding import \ + HuggingfaceHubTextEmbeddingModel + + +def test_hosted_inference_api_validate_credentials(): + model = HuggingfaceHubTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='facebook/bart-base', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': 'invalid_key', + } + ) + + model.validate_credentials( + model='facebook/bart-base', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + } + ) + + +def test_hosted_inference_api_invoke_model(): + model = HuggingfaceHubTextEmbeddingModel() + + result = model.invoke( + model='facebook/bart-base', + credentials={ + 'huggingfacehub_api_type': 'hosted_inference_api', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + }, + texts=[ + "hello", + "world" + ] + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_inference_endpoints_validate_credentials(): + model = HuggingfaceHubTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='all-MiniLM-L6-v2', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': 'invalid_key', + 'huggingface_namespace': 'Dify-AI', + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL'), + 'task_type': 'feature-extraction' + } + ) + + model.validate_credentials( + model='all-MiniLM-L6-v2', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingface_namespace': 'Dify-AI', + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL'), + 'task_type': 'feature-extraction' + } + ) + + +def test_inference_endpoints_invoke_model(): + model = HuggingfaceHubTextEmbeddingModel() + + result = model.invoke( + model='all-MiniLM-L6-v2', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingface_namespace': 'Dify-AI', + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL'), + 'task_type': 'feature-extraction' + }, + texts=[ + "hello", + "world" + ] + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 0 + + +def test_get_num_tokens(): + model = HuggingfaceHubTextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='all-MiniLM-L6-v2', + credentials={ + 'huggingfacehub_api_type': 'inference_endpoints', + 'huggingfacehub_api_token': os.environ.get('HUGGINGFACE_API_KEY'), + 'huggingface_namespace': 'Dify-AI', + 'huggingfacehub_endpoint_url': os.environ.get('HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL'), + 'task_type': 'feature-extraction' + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/jina/__init__.py b/api/tests/integration_tests/model_runtime/jina/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/jina/test_provider.py b/api/tests/integration_tests/model_runtime/jina/test_provider.py new file mode 100644 index 000000000..2b4324838 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/jina/test_provider.py @@ -0,0 +1,23 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.jina.jina import JinaProvider + + +def test_validate_provider_credentials(): + provider = JinaProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={ + 'api_key': 'hahahaha' + } + ) + + provider.validate_provider_credentials( + credentials={ + 'api_key': os.environ.get('JINA_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/jina/test_text_embedding.py b/api/tests/integration_tests/model_runtime/jina/test_text_embedding.py new file mode 100644 index 000000000..ac1756617 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/jina/test_text_embedding.py @@ -0,0 +1,63 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.jina.text_embedding.text_embedding import JinaTextEmbeddingModel + + +def test_validate_credentials(): + model = JinaTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='jina-embeddings-v2-base-en', + credentials={ + 'api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='jina-embeddings-v2-base-en', + credentials={ + 'api_key': os.environ.get('JINA_API_KEY') + } + ) + + +def test_invoke_model(): + model = JinaTextEmbeddingModel() + + result = model.invoke( + model='jina-embeddings-v2-base-en', + credentials={ + 'api_key': os.environ.get('JINA_API_KEY'), + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 6 + + +def test_get_num_tokens(): + model = JinaTextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='jina-embeddings-v2-base-en', + credentials={ + 'api_key': os.environ.get('JINA_API_KEY'), + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 6 diff --git a/api/tests/integration_tests/model_runtime/localai/__init__.py b/api/tests/integration_tests/model_runtime/localai/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/localai/test_embedding.py b/api/tests/integration_tests/model_runtime/localai/test_embedding.py new file mode 100644 index 000000000..5b1cdc86b --- /dev/null +++ b/api/tests/integration_tests/model_runtime/localai/test_embedding.py @@ -0,0 +1,4 @@ +""" + LocalAI Embedding Interface is temporarily unavaliable due to + we could not find a way to test it for now. +""" \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/localai/test_llm.py b/api/tests/integration_tests/model_runtime/localai/test_llm.py new file mode 100644 index 000000000..43d8eb633 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/localai/test_llm.py @@ -0,0 +1,213 @@ +import os +import pytest + +from typing import Generator + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, TextPromptMessageContent, UserPromptMessage, \ + SystemPromptMessage, PromptMessageTool +from core.model_runtime.entities.model_entities import ParameterRule +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.localai.llm.llm import LocalAILarguageModel + +def test_validate_credentials_for_chat_model(): + model = LocalAILarguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='chinese-llama-2-7b', + credentials={ + 'server_url': 'hahahaha', + 'completion_type': 'completion', + } + ) + + model.validate_credentials( + model='chinese-llama-2-7b', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'completion', + } + ) + +def test_invoke_completion_model(): + model = LocalAILarguageModel() + + response = model.invoke( + model='chinese-llama-2-7b', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'completion', + }, + prompt_messages=[ + UserPromptMessage( + content='ping' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'max_tokens': 10 + }, + stop=[], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_chat_model(): + model = LocalAILarguageModel() + + response = model.invoke( + model='chinese-llama-2-7b', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'chat_completion', + }, + prompt_messages=[ + UserPromptMessage( + content='ping' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'max_tokens': 10 + }, + stop=[], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_stream_completion_model(): + model = LocalAILarguageModel() + + response = model.invoke( + model='chinese-llama-2-7b', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'completion', + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'max_tokens': 10 + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_invoke_stream_chat_model(): + model = LocalAILarguageModel() + + response = model.invoke( + model='chinese-llama-2-7b', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'chat_completion', + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'max_tokens': 10 + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_get_num_tokens(): + model = LocalAILarguageModel() + + num_tokens = model.get_num_tokens( + model='????', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'chat_completion', + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[ + PromptMessageTool( + name='get_current_weather', + description='Get the current weather in a given location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "c", + "f" + ] + } + }, + "required": [ + "location" + ] + } + ) + ] + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 77 + + num_tokens = model.get_num_tokens( + model='????', + credentials={ + 'server_url': os.environ.get('LOCALAI_SERVER_URL'), + 'completion_type': 'chat_completion', + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 10 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/minimax/__init__.py b/api/tests/integration_tests/model_runtime/minimax/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/minimax/test_embedding.py b/api/tests/integration_tests/model_runtime/minimax/test_embedding.py new file mode 100644 index 000000000..fe1ad734d --- /dev/null +++ b/api/tests/integration_tests/model_runtime/minimax/test_embedding.py @@ -0,0 +1,64 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.minimax.text_embedding.text_embedding import MinimaxTextEmbeddingModel + +def test_validate_credentials(): + model = MinimaxTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='embo-01', + credentials={ + 'minimax_api_key': 'invalid_key', + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + } + ) + + model.validate_credentials( + model='embo-01', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + } + ) + +def test_invoke_model(): + model = MinimaxTextEmbeddingModel() + + result = model.invoke( + model='embo-01', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 16 + +def test_get_num_tokens(): + model = MinimaxTextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='embo-01', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/minimax/test_llm.py b/api/tests/integration_tests/model_runtime/minimax/test_llm.py new file mode 100644 index 000000000..a3ebbf756 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/minimax/test_llm.py @@ -0,0 +1,158 @@ +import os +import pytest + +from typing import Generator +from time import sleep + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage +from core.model_runtime.entities.model_entities import AIModelEntity +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.minimax.llm.llm import MinimaxLargeLanguageModel + +def test_predefined_models(): + model = MinimaxLargeLanguageModel() + model_schemas = model.predefined_models() + assert len(model_schemas) >= 1 + assert isinstance(model_schemas[0], AIModelEntity) + +def test_validate_credentials_for_chat_model(): + sleep(3) + model = MinimaxLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='abab5.5-chat', + credentials={ + 'minimax_api_key': 'invalid_key', + 'minimax_group_id': 'invalid_key' + } + ) + + model.validate_credentials( + model='abab5.5-chat', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + } + ) + +def test_invoke_model(): + sleep(3) + model = MinimaxLargeLanguageModel() + + response = model.invoke( + model='abab5-chat', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_stream_model(): + sleep(3) + model = MinimaxLargeLanguageModel() + + response = model.invoke( + model='abab5.5-chat', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_invoke_with_search(): + sleep(3) + model = MinimaxLargeLanguageModel() + + response = model.invoke( + model='abab5.5-chat', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + }, + prompt_messages=[ + UserPromptMessage( + content='北京今天的天气怎么样' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + 'plugin_web_search': True, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + total_message = '' + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + total_message += chunk.delta.message.content + assert len(chunk.delta.message.content) > 0 if not chunk.delta.finish_reason else True + + assert '参考资料' in total_message + +def test_get_num_tokens(): + sleep(3) + model = MinimaxLargeLanguageModel() + + response = model.get_num_tokens( + model='abab5.5-chat', + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[] + ) + + assert isinstance(response, int) + assert response == 30 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/minimax/test_provider.py b/api/tests/integration_tests/model_runtime/minimax/test_provider.py new file mode 100644 index 000000000..4c5462c6d --- /dev/null +++ b/api/tests/integration_tests/model_runtime/minimax/test_provider.py @@ -0,0 +1,25 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.minimax.minimax import MinimaxProvider + + +def test_validate_provider_credentials(): + provider = MinimaxProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={ + 'minimax_api_key': 'hahahaha', + 'minimax_group_id': '123', + } + ) + + provider.validate_provider_credentials( + credentials={ + 'minimax_api_key': os.environ.get('MINIMAX_API_KEY'), + 'minimax_group_id': os.environ.get('MINIMAX_GROUP_ID'), + } + ) diff --git a/api/tests/integration_tests/model_runtime/openai/__init__.py b/api/tests/integration_tests/model_runtime/openai/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/openai/test_llm.py b/api/tests/integration_tests/model_runtime/openai/test_llm.py new file mode 100644 index 000000000..b379758e5 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai/test_llm.py @@ -0,0 +1,382 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, TextPromptMessageContent, UserPromptMessage, \ + SystemPromptMessage, ImagePromptMessageContent, PromptMessageTool +from core.model_runtime.entities.model_entities import AIModelEntity, ModelType +from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai.llm.llm import OpenAILargeLanguageModel + +"""FOR MOCK FIXTURES, DO NOT REMOVE""" +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +def test_predefined_models(): + model = OpenAILargeLanguageModel() + model_schemas = model.predefined_models() + + assert len(model_schemas) >= 1 + assert isinstance(model_schemas[0], AIModelEntity) + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_validate_credentials_for_chat_model(setup_openai_mock): + model = OpenAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='gpt-3.5-turbo', + credentials={ + 'openai_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='gpt-3.5-turbo', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['completion']], indirect=True) +def test_validate_credentials_for_completion_model(setup_openai_mock): + model = OpenAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='text-davinci-003', + credentials={ + 'openai_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='text-davinci-003', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['completion']], indirect=True) +def test_invoke_completion_model(setup_openai_mock): + model = OpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-3.5-turbo-instruct', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY'), + 'openai_api_base': 'https://api.openai.com' + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 1 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + assert model._num_tokens_from_string('gpt-3.5-turbo-instruct', result.message.content) == 1 + +@pytest.mark.parametrize('setup_openai_mock', [['completion']], indirect=True) +def test_invoke_stream_completion_model(setup_openai_mock): + model = OpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-3.5-turbo-instruct', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY'), + 'openai_organization': os.environ.get('OPENAI_ORGANIZATION'), + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(result, Generator) + + for chunk in result: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_chat_model(setup_openai_mock): + model = OpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-3.5-turbo', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'top_p': 1.0, + 'presence_penalty': 0.0, + 'frequency_penalty': 0.0, + 'max_tokens': 10 + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + + for chunk in model._llm_result_to_stream(result): + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_chat_model_with_vision(setup_openai_mock): + model = OpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-4-vision-preview', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content=[ + TextPromptMessageContent( + data='Hello World!', + ), + ImagePromptMessageContent( + data='data:image/png;base64,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' + ) + ] + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert len(result.message.content) > 0 + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_chat_model_with_tools(setup_openai_mock): + model = OpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-3.5-turbo', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content="what's the weather today in London?", + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + tools=[ + PromptMessageTool( + name='get_weather', + description='Determine weather in my location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "c", + "f" + ] + } + }, + "required": [ + "location" + ] + } + ), + PromptMessageTool( + name='get_stock_price', + description='Get the current stock price', + parameters={ + "type": "object", + "properties": { + "symbol": { + "type": "string", + "description": "The stock symbol" + } + }, + "required": [ + "symbol" + ] + } + ) + ], + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert isinstance(result.message, AssistantPromptMessage) + assert len(result.message.tool_calls) > 0 + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_invoke_stream_chat_model(setup_openai_mock): + model = OpenAILargeLanguageModel() + + result = model.invoke( + model='gpt-3.5-turbo', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(result, Generator) + + for chunk in result: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + if chunk.delta.finish_reason is not None: + assert chunk.delta.usage is not None + assert chunk.delta.usage.completion_tokens > 0 + + +def test_get_num_tokens(): + model = OpenAILargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='gpt-3.5-turbo-instruct', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 3 + + num_tokens = model.get_num_tokens( + model='gpt-3.5-turbo', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 21 + +@pytest.mark.parametrize('setup_openai_mock', [['chat', 'remote']], indirect=True) +def test_fine_tuned_models(setup_openai_mock): + model = OpenAILargeLanguageModel() + + remote_models = model.remote_models(credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }) + + if not remote_models: + assert isinstance(remote_models, list) + else: + assert isinstance(remote_models[0], AIModelEntity) + + for llm_model in remote_models: + if llm_model.model_type == ModelType.LLM: + break + + assert isinstance(llm_model, AIModelEntity) + + # test invoke + result = model.invoke( + model=llm_model.model, + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 100 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + +def test__get_num_tokens_by_gpt2(): + model = OpenAILargeLanguageModel() + num_tokens = model._get_num_tokens_by_gpt2('Hello World!') + + assert num_tokens == 3 diff --git a/api/tests/integration_tests/model_runtime/openai/test_moderation.py b/api/tests/integration_tests/model_runtime/openai/test_moderation.py new file mode 100644 index 000000000..1a1c94314 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai/test_moderation.py @@ -0,0 +1,55 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai.moderation.moderation import OpenAIModerationModel + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['moderation']], indirect=True) +def test_validate_credentials(setup_openai_mock): + model = OpenAIModerationModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='text-moderation-stable', + credentials={ + 'openai_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='text-moderation-stable', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['moderation']], indirect=True) +def test_invoke_model(setup_openai_mock): + model = OpenAIModerationModel() + + result = model.invoke( + model='text-moderation-stable', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + text="hello", + user="abc-123" + ) + + assert isinstance(result, bool) + assert result is False + + result = model.invoke( + model='text-moderation-stable', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + text="i will kill you", + user="abc-123" + ) + + assert isinstance(result, bool) + assert result is True diff --git a/api/tests/integration_tests/model_runtime/openai/test_provider.py b/api/tests/integration_tests/model_runtime/openai/test_provider.py new file mode 100644 index 000000000..d667364e5 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai/test_provider.py @@ -0,0 +1,23 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai.openai import OpenAIProvider + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['chat']], indirect=True) +def test_validate_provider_credentials(setup_openai_mock): + provider = OpenAIProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={} + ) + + provider.validate_provider_credentials( + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/openai/test_speech2text.py b/api/tests/integration_tests/model_runtime/openai/test_speech2text.py new file mode 100644 index 000000000..6353743d6 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai/test_speech2text.py @@ -0,0 +1,56 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai.speech2text.speech2text import OpenAISpeech2TextModel + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['speech2text']], indirect=True) +def test_validate_credentials(setup_openai_mock): + model = OpenAISpeech2TextModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='whisper-1', + credentials={ + 'openai_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='whisper-1', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['speech2text']], indirect=True) +def test_invoke_model(setup_openai_mock): + model = OpenAISpeech2TextModel() + + # Get the directory of the current file + current_dir = os.path.dirname(os.path.abspath(__file__)) + + # Get assets directory + assets_dir = os.path.join(os.path.dirname(current_dir), 'assets') + + # Construct the path to the audio file + audio_file_path = os.path.join(assets_dir, 'audio.mp3') + + # Open the file and get the file object + with open(audio_file_path, 'rb') as audio_file: + file = audio_file + + result = model.invoke( + model='whisper-1', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + }, + file=file, + user="abc-123" + ) + + assert isinstance(result, str) + assert result == '1, 2, 3, 4, 5, 6, 7, 8, 9, 10' diff --git a/api/tests/integration_tests/model_runtime/openai/test_text_embedding.py b/api/tests/integration_tests/model_runtime/openai/test_text_embedding.py new file mode 100644 index 000000000..b86ee682f --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai/test_text_embedding.py @@ -0,0 +1,67 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai.text_embedding.text_embedding import OpenAITextEmbeddingModel + +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock + +@pytest.mark.parametrize('setup_openai_mock', [['text_embedding']], indirect=True) +def test_validate_credentials(setup_openai_mock): + model = OpenAITextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='text-embedding-ada-002', + credentials={ + 'openai_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='text-embedding-ada-002', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + +@pytest.mark.parametrize('setup_openai_mock', [['text_embedding']], indirect=True) +def test_invoke_model(setup_openai_mock): + model = OpenAITextEmbeddingModel() + + result = model.invoke( + model='text-embedding-ada-002', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY'), + 'openai_api_base': 'https://api.openai.com' + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_get_num_tokens(): + model = OpenAITextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='text-embedding-ada-002', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY'), + 'openai_api_base': 'https://api.openai.com' + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/openai_api_compatible/__init__.py b/api/tests/integration_tests/model_runtime/openai_api_compatible/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/openai_api_compatible/test_llm.py b/api/tests/integration_tests/model_runtime/openai_api_compatible/test_llm.py new file mode 100644 index 000000000..1d53b7a3f --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai_api_compatible/test_llm.py @@ -0,0 +1,181 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage, \ + SystemPromptMessage, PromptMessageTool +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai_api_compatible.llm.llm import OAIAPICompatLargeLanguageModel + +""" +Using Together.ai's OpenAI-compatible API as testing endpoint +""" + +def test_validate_credentials(): + model = OAIAPICompatLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='mistralai/Mixtral-8x7B-Instruct-v0.1', + credentials={ + 'api_key': 'invalid_key', + 'endpoint_url': 'https://api.together.xyz/v1/chat/completions', + 'mode': 'chat' + } + ) + + model.validate_credentials( + model='mistralai/Mixtral-8x7B-Instruct-v0.1', + credentials={ + 'api_key': os.environ.get('TOGETHER_API_KEY'), + 'endpoint_url': 'https://api.together.xyz/v1/chat/completions', + 'mode': 'chat' + } + ) + +def test_invoke_model(): + model = OAIAPICompatLargeLanguageModel() + + response = model.invoke( + model='mistralai/Mixtral-8x7B-Instruct-v0.1', + credentials={ + 'api_key': os.environ.get('TOGETHER_API_KEY'), + 'endpoint_url': 'https://api.together.xyz/v1/completions', + 'mode': 'completion' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + +def test_invoke_stream_model(): + model = OAIAPICompatLargeLanguageModel() + + response = model.invoke( + model='mistralai/Mixtral-8x7B-Instruct-v0.1', + credentials={ + 'api_key': os.environ.get('TOGETHER_API_KEY'), + 'endpoint_url': 'https://api.together.xyz/v1/chat/completions', + 'mode': 'chat' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + +# using OpenAI's ChatGPT-3.5 as testing endpoint +def test_invoke_chat_model_with_tools(): + model = OAIAPICompatLargeLanguageModel() + + result = model.invoke( + model='gpt-3.5-turbo', + credentials={ + 'api_key': os.environ.get('OPENAI_API_KEY'), + 'endpoint_url': 'https://api.openai.com/v1/chat/completions', + 'mode': 'chat' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content="what's the weather today in London?", + ) + ], + tools=[ + PromptMessageTool( + name='get_weather', + description='Determine weather in my location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "celsius", + "fahrenheit" + ] + } + }, + "required": [ + "location" + ] + } + ), + ], + model_parameters={ + 'temperature': 0.0, + 'max_tokens': 1024 + }, + stream=False, + user="abc-123" + ) + + assert isinstance(result, LLMResult) + assert isinstance(result.message, AssistantPromptMessage) + assert len(result.message.tool_calls) > 0 + +def test_get_num_tokens(): + model = OAIAPICompatLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='mistralai/Mixtral-8x7B-Instruct-v0.1', + credentials={ + 'api_key': os.environ.get('OPENAI_API_KEY'), + 'endpoint_url': 'https://api.openai.com/v1/chat/completions' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 21 diff --git a/api/tests/integration_tests/model_runtime/openai_api_compatible/test_text_embedding.py b/api/tests/integration_tests/model_runtime/openai_api_compatible/test_text_embedding.py new file mode 100644 index 000000000..d8c8a26a1 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openai_api_compatible/test_text_embedding.py @@ -0,0 +1,79 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openai_api_compatible.text_embedding.text_embedding import OAICompatEmbeddingModel + +""" +Using OpenAI's API as testing endpoint +""" + +def test_validate_credentials(): + model = OAICompatEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='text-embedding-ada-002', + credentials={ + 'api_key': 'invalid_key', + 'endpoint_url': 'https://api.openai.com/v1/embeddings', + 'context_size': 8184, + 'max_chunks': 32 + + } + ) + + model.validate_credentials( + model='text-embedding-ada-002', + credentials={ + 'api_key': os.environ.get('OPENAI_API_KEY'), + 'endpoint_url': 'https://api.openai.com/v1/embeddings', + 'context_size': 8184, + 'max_chunks': 32 + } + ) + + +def test_invoke_model(): + model = OAICompatEmbeddingModel() + + result = model.invoke( + model='text-embedding-ada-002', + credentials={ + 'api_key': os.environ.get('OPENAI_API_KEY'), + 'endpoint_url': 'https://api.openai.com/v1/embeddings', + 'context_size': 8184, + 'max_chunks': 32 + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_get_num_tokens(): + model = OAICompatEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='text-embedding-ada-002', + credentials={ + 'api_key': os.environ.get('OPENAI_API_KEY'), + 'endpoint_url': 'https://api.openai.com/v1/embeddings', + 'context_size': 8184, + 'max_chunks': 32 + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/openllm/__init__.py b/api/tests/integration_tests/model_runtime/openllm/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/openllm/test_embedding.py b/api/tests/integration_tests/model_runtime/openllm/test_embedding.py new file mode 100644 index 000000000..341e0255b --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openllm/test_embedding.py @@ -0,0 +1,61 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openllm.text_embedding.text_embedding import OpenLLMTextEmbeddingModel + +def test_validate_credentials(): + model = OpenLLMTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='NOT IMPORTANT', + credentials={ + 'server_url': 'ww' + os.environ.get('OPENLLM_SERVER_URL'), + } + ) + + model.validate_credentials( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + } + ) + + +def test_invoke_model(): + model = OpenLLMTextEmbeddingModel() + + result = model.invoke( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens > 0 + +def test_get_num_tokens(): + model = OpenLLMTextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/openllm/test_llm.py b/api/tests/integration_tests/model_runtime/openllm/test_llm.py new file mode 100644 index 000000000..8536dd207 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/openllm/test_llm.py @@ -0,0 +1,104 @@ +import os +import pytest + +from typing import Generator + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.openllm.llm.llm import OpenLLMLargeLanguageModel + +def test_validate_credentials_for_chat_model(): + model = OpenLLMLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='NOT IMPORTANT', + credentials={ + 'server_url': 'invalid_key', + } + ) + + model.validate_credentials( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + } + ) + +def test_invoke_model(): + model = OpenLLMLargeLanguageModel() + + response = model.invoke( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_stream_model(): + model = OpenLLMLargeLanguageModel() + + response = model.invoke( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'top_k': 1, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_get_num_tokens(): + model = OpenLLMLargeLanguageModel() + + response = model.get_num_tokens( + model='NOT IMPORTANT', + credentials={ + 'server_url': os.environ.get('OPENLLM_SERVER_URL'), + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[] + ) + + assert isinstance(response, int) + assert response == 3 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/replicate/__init__.py b/api/tests/integration_tests/model_runtime/replicate/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/replicate/test_llm.py b/api/tests/integration_tests/model_runtime/replicate/test_llm.py new file mode 100644 index 000000000..61a4ab280 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/replicate/test_llm.py @@ -0,0 +1,119 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage, AssistantPromptMessage +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, \ + LLMResultChunkDelta +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.replicate.llm.llm import ReplicateLargeLanguageModel + + +def test_validate_credentials(): + model = ReplicateLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='meta/llama-2-13b-chat', + credentials={ + 'replicate_api_token': 'invalid_key', + 'model_version': 'f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d' + } + ) + + model.validate_credentials( + model='meta/llama-2-13b-chat', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': 'f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d' + } + ) + + +def test_invoke_model(): + model = ReplicateLargeLanguageModel() + + response = model.invoke( + model='meta/llama-2-13b-chat', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': 'f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + + +def test_invoke_stream_model(): + model = ReplicateLargeLanguageModel() + + response = model.invoke( + model='mistralai/mixtral-8x7b-instruct-v0.1', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': '2b56576fcfbe32fa0526897d8385dd3fb3d36ba6fd0dbe033c72886b81ade93e' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 1.0, + 'top_k': 2, + 'top_p': 0.5, + }, + stop=['How'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + + +def test_get_num_tokens(): + model = ReplicateLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': '2b56576fcfbe32fa0526897d8385dd3fb3d36ba6fd0dbe033c72886b81ade93e' + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 14 diff --git a/api/tests/integration_tests/model_runtime/replicate/test_text_embedding.py b/api/tests/integration_tests/model_runtime/replicate/test_text_embedding.py new file mode 100644 index 000000000..5708ec9e5 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/replicate/test_text_embedding.py @@ -0,0 +1,151 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.replicate.text_embedding.text_embedding import ReplicateEmbeddingModel + + +def test_validate_credentials_one(): + model = ReplicateEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='replicate/all-mpnet-base-v2', + credentials={ + 'replicate_api_token': 'invalid_key', + 'model_version': 'b6b7585c9640cd7a9572c6e129c9549d79c9c31f0d3fdce7baac7c67ca38f305' + } + ) + + model.validate_credentials( + model='replicate/all-mpnet-base-v2', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': 'b6b7585c9640cd7a9572c6e129c9549d79c9c31f0d3fdce7baac7c67ca38f305' + } + ) + + +def test_validate_credentials_two(): + model = ReplicateEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='nateraw/bge-large-en-v1.5', + credentials={ + 'replicate_api_token': 'invalid_key', + 'model_version': '9cf9f015a9cb9c61d1a2610659cdac4a4ca222f2d3707a68517b18c198a9add1' + } + ) + + model.validate_credentials( + model='nateraw/bge-large-en-v1.5', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': '9cf9f015a9cb9c61d1a2610659cdac4a4ca222f2d3707a68517b18c198a9add1' + } + ) + + +def test_invoke_model_one(): + model = ReplicateEmbeddingModel() + + result = model.invoke( + model='nateraw/bge-large-en-v1.5', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': '9cf9f015a9cb9c61d1a2610659cdac4a4ca222f2d3707a68517b18c198a9add1' + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_invoke_model_two(): + model = ReplicateEmbeddingModel() + + result = model.invoke( + model='andreasjansson/clip-features', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': '75b33f253f7714a281ad3e9b28f63e3232d583716ef6718f2e46641077ea040a' + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_invoke_model_three(): + model = ReplicateEmbeddingModel() + + result = model.invoke( + model='replicate/all-mpnet-base-v2', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': 'b6b7585c9640cd7a9572c6e129c9549d79c9c31f0d3fdce7baac7c67ca38f305' + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_invoke_model_four(): + model = ReplicateEmbeddingModel() + + result = model.invoke( + model='nateraw/jina-embeddings-v2-base-en', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': 'f8367a1c072ba2bc28af549d1faeacfe9b88b3f0e475add7a75091dac507f79e' + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_get_num_tokens(): + model = ReplicateEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='nateraw/jina-embeddings-v2-base-en', + credentials={ + 'replicate_api_token': os.environ.get('REPLICATE_API_KEY'), + 'model_version': 'f8367a1c072ba2bc28af549d1faeacfe9b88b3f0e475add7a75091dac507f79e' + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/spark/__init__.py b/api/tests/integration_tests/model_runtime/spark/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/spark/test_llm.py b/api/tests/integration_tests/model_runtime/spark/test_llm.py new file mode 100644 index 000000000..2e3d77500 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/spark/test_llm.py @@ -0,0 +1,114 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage, AssistantPromptMessage +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, \ + LLMResultChunkDelta +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.spark.llm.llm import SparkLargeLanguageModel + + +def test_validate_credentials(): + model = SparkLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='spark-1.5', + credentials={ + 'app_id': 'invalid_key' + } + ) + + model.validate_credentials( + model='spark-1.5', + credentials={ + 'app_id': os.environ.get('SPARK_APP_ID'), + 'api_secret': os.environ.get('SPARK_API_SECRET'), + 'api_key': os.environ.get('SPARK_API_KEY') + } + ) + + +def test_invoke_model(): + model = SparkLargeLanguageModel() + + response = model.invoke( + model='spark-1.5', + credentials={ + 'app_id': os.environ.get('SPARK_APP_ID'), + 'api_secret': os.environ.get('SPARK_API_SECRET'), + 'api_key': os.environ.get('SPARK_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 0.5, + 'max_tokens': 10 + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + + +def test_invoke_stream_model(): + model = SparkLargeLanguageModel() + + response = model.invoke( + model='spark-1.5', + credentials={ + 'app_id': os.environ.get('SPARK_APP_ID'), + 'api_secret': os.environ.get('SPARK_API_SECRET'), + 'api_key': os.environ.get('SPARK_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.5, + 'max_tokens': 100 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + + +def test_get_num_tokens(): + model = SparkLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='spark-1.5', + credentials={ + 'app_id': os.environ.get('SPARK_APP_ID'), + 'api_secret': os.environ.get('SPARK_API_SECRET'), + 'api_key': os.environ.get('SPARK_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 14 diff --git a/api/tests/integration_tests/model_runtime/spark/test_provider.py b/api/tests/integration_tests/model_runtime/spark/test_provider.py new file mode 100644 index 000000000..8e22815a8 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/spark/test_provider.py @@ -0,0 +1,23 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.spark.spark import SparkProvider + + +def test_validate_provider_credentials(): + provider = SparkProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={} + ) + + provider.validate_provider_credentials( + credentials={ + 'app_id': os.environ.get('SPARK_APP_ID'), + 'api_secret': os.environ.get('SPARK_API_SECRET'), + 'api_key': os.environ.get('SPARK_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/test_model_provider_factory.py b/api/tests/integration_tests/model_runtime/test_model_provider_factory.py new file mode 100644 index 000000000..7551baef9 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/test_model_provider_factory.py @@ -0,0 +1,82 @@ +import logging +import os + +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.entities.provider_entities import SimpleProviderEntity, ProviderConfig, ProviderEntity +from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory, ModelProviderExtension + +logger = logging.getLogger(__name__) + + +def test_get_providers(): + factory = ModelProviderFactory() + providers = factory.get_providers() + + for provider in providers: + logger.debug(provider) + + assert len(providers) >= 1 + assert isinstance(providers[0], ProviderEntity) + + +def test_get_models(): + factory = ModelProviderFactory() + providers = factory.get_models( + model_type=ModelType.LLM, + provider_configs=[ + ProviderConfig( + provider='openai', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + ] + ) + + logger.debug(providers) + + assert len(providers) >= 1 + assert isinstance(providers[0], SimpleProviderEntity) + + # all provider models type equals to ModelType.LLM + for provider in providers: + for provider_model in provider.models: + assert provider_model.model_type == ModelType.LLM + + providers = factory.get_models( + provider='openai', + provider_configs=[ + ProviderConfig( + provider='openai', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + ] + ) + + assert len(providers) == 1 + assert isinstance(providers[0], SimpleProviderEntity) + assert providers[0].provider == 'openai' + + +def test_provider_credentials_validate(): + factory = ModelProviderFactory() + factory.provider_credentials_validate( + provider='openai', + credentials={ + 'openai_api_key': os.environ.get('OPENAI_API_KEY') + } + ) + + +def test__get_model_provider_map(): + factory = ModelProviderFactory() + model_providers = factory._get_model_provider_map() + + for name, model_provider in model_providers.items(): + logger.debug(name) + logger.debug(model_provider.provider_instance) + + assert len(model_providers) >= 1 + assert isinstance(model_providers['openai'], ModelProviderExtension) diff --git a/api/tests/integration_tests/model_runtime/tongyi/__init__.py b/api/tests/integration_tests/model_runtime/tongyi/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/tongyi/test_llm.py b/api/tests/integration_tests/model_runtime/tongyi/test_llm.py new file mode 100644 index 000000000..65e57f700 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/tongyi/test_llm.py @@ -0,0 +1,107 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage, AssistantPromptMessage +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, \ + LLMResultChunkDelta +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.tongyi.llm.llm import TongyiLargeLanguageModel + + +def test_validate_credentials(): + model = TongyiLargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='qwen-turbo', + credentials={ + 'dashscope_api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='qwen-turbo', + credentials={ + 'dashscope_api_key': os.environ.get('TONGYI_DASHSCOPE_API_KEY') + } + ) + + +def test_invoke_model(): + model = TongyiLargeLanguageModel() + + response = model.invoke( + model='qwen-turbo', + credentials={ + 'dashscope_api_key': os.environ.get('TONGYI_DASHSCOPE_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 0.5, + 'max_tokens': 10 + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + + +def test_invoke_stream_model(): + model = TongyiLargeLanguageModel() + + response = model.invoke( + model='qwen-turbo', + credentials={ + 'dashscope_api_key': os.environ.get('TONGYI_DASHSCOPE_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.5, + 'max_tokens': 100, + 'seed': 1234 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + + +def test_get_num_tokens(): + model = TongyiLargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='qwen-turbo', + credentials={ + 'dashscope_api_key': os.environ.get('TONGYI_DASHSCOPE_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 12 diff --git a/api/tests/integration_tests/model_runtime/tongyi/test_provider.py b/api/tests/integration_tests/model_runtime/tongyi/test_provider.py new file mode 100644 index 000000000..6145c1dc3 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/tongyi/test_provider.py @@ -0,0 +1,21 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.tongyi.tongyi import TongyiProvider + + +def test_validate_provider_credentials(): + provider = TongyiProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={} + ) + + provider.validate_provider_credentials( + credentials={ + 'dashscope_api_key': os.environ.get('TONGYI_DASHSCOPE_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/wenxin/__init__.py b/api/tests/integration_tests/model_runtime/wenxin/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/wenxin/test_llm.py b/api/tests/integration_tests/model_runtime/wenxin/test_llm.py new file mode 100644 index 000000000..a636f1f06 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/wenxin/test_llm.py @@ -0,0 +1,271 @@ +import os +import pytest + +from typing import Generator +from time import sleep + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage, SystemPromptMessage +from core.model_runtime.entities.model_entities import AIModelEntity +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.wenxin.llm.llm import ErnieBotLarguageModel + +def test_predefined_models(): + model = ErnieBotLarguageModel() + model_schemas = model.predefined_models() + assert len(model_schemas) >= 1 + assert isinstance(model_schemas[0], AIModelEntity) + +def test_validate_credentials_for_chat_model(): + sleep(3) + model = ErnieBotLarguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='ernie-bot', + credentials={ + 'api_key': 'invalid_key', + 'secret_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='ernie-bot', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + } + ) + +def test_invoke_model_ernie_bot(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_model_ernie_bot_turbo(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot-turbo', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_model_ernie_8k(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot-8k', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_model_ernie_bot_4(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot-4', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +def test_invoke_stream_model(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_invoke_model_with_system(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='你是Kasumi' + ), + UserPromptMessage( + content='你是谁?' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert 'kasumi' in response.message.content.lower() + +def test_invoke_with_search(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.invoke( + model='ernie-bot', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='北京今天的天气怎么样' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + 'disable_search': True, + }, + stop=[], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + total_message = '' + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + total_message += chunk.delta.message.content + print(chunk.delta.message.content) + assert len(chunk.delta.message.content) > 0 if not chunk.delta.finish_reason else True + + # there should be 对不起、我不能、不支持…… + assert ('不' in total_message or '抱歉' in total_message or '无法' in total_message) + +def test_get_num_tokens(): + sleep(3) + model = ErnieBotLarguageModel() + + response = model.get_num_tokens( + model='ernie-bot', + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[] + ) + + assert isinstance(response, int) + assert response == 10 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/wenxin/test_provider.py b/api/tests/integration_tests/model_runtime/wenxin/test_provider.py new file mode 100644 index 000000000..8922aa186 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/wenxin/test_provider.py @@ -0,0 +1,25 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.wenxin.wenxin import WenxinProvider + + +def test_validate_provider_credentials(): + provider = WenxinProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={ + 'api_key': 'hahahaha', + 'secret_key': 'hahahaha' + } + ) + + provider.validate_provider_credentials( + credentials={ + 'api_key': os.environ.get('WENXIN_API_KEY'), + 'secret_key': os.environ.get('WENXIN_SECRET_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/xinference/__init__.py b/api/tests/integration_tests/model_runtime/xinference/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/xinference/test_embeddings.py b/api/tests/integration_tests/model_runtime/xinference/test_embeddings.py new file mode 100644 index 000000000..f0ee893f7 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/xinference/test_embeddings.py @@ -0,0 +1,68 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.xinference.text_embedding.text_embedding import XinferenceTextEmbeddingModel + +from tests.integration_tests.model_runtime.__mock.xinference import setup_xinference_mock, MOCK + +@pytest.mark.parametrize('setup_xinference_mock', [['none']], indirect=True) +def test_validate_credentials(setup_xinference_mock): + model = XinferenceTextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='bge-base-en', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': 'www ' + os.environ.get('XINFERENCE_EMBEDDINGS_MODEL_UID') + } + ) + + model.validate_credentials( + model='bge-base-en', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_EMBEDDINGS_MODEL_UID') + } + ) + +@pytest.mark.parametrize('setup_xinference_mock', [['none']], indirect=True) +def test_invoke_model(setup_xinference_mock): + model = XinferenceTextEmbeddingModel() + + result = model.invoke( + model='bge-base-en', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_EMBEDDINGS_MODEL_UID') + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens > 0 + +def test_get_num_tokens(): + model = XinferenceTextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='bge-base-en', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_EMBEDDINGS_MODEL_UID') + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/model_runtime/xinference/test_llm.py b/api/tests/integration_tests/model_runtime/xinference/test_llm.py new file mode 100644 index 000000000..2974e8646 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/xinference/test_llm.py @@ -0,0 +1,392 @@ +import os +import pytest + +from typing import Generator + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, TextPromptMessageContent, UserPromptMessage, \ + SystemPromptMessage, PromptMessageTool +from core.model_runtime.entities.model_entities import AIModelEntity +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunkDelta, \ + LLMResultChunk +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.xinference.llm.llm import XinferenceAILargeLanguageModel + +"""FOR MOCK FIXTURES, DO NOT REMOVE""" +from tests.integration_tests.model_runtime.__mock.openai import setup_openai_mock +from tests.integration_tests.model_runtime.__mock.xinference import setup_xinference_mock + +@pytest.mark.parametrize('setup_openai_mock, setup_xinference_mock', [['chat', 'none']], indirect=True) +def test_validate_credentials_for_chat_model(setup_openai_mock, setup_xinference_mock): + model = XinferenceAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='ChatGLM3', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': 'www ' + os.environ.get('XINFERENCE_CHAT_MODEL_UID') + } + ) + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='aaaaa', + credentials={ + 'server_url': '', + 'model_uid': '' + } + ) + + model.validate_credentials( + model='ChatGLM3', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_CHAT_MODEL_UID') + } + ) + +@pytest.mark.parametrize('setup_openai_mock, setup_xinference_mock', [['chat', 'none']], indirect=True) +def test_invoke_chat_model(setup_openai_mock, setup_xinference_mock): + model = XinferenceAILargeLanguageModel() + + response = model.invoke( + model='ChatGLM3', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_CHAT_MODEL_UID') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +@pytest.mark.parametrize('setup_openai_mock, setup_xinference_mock', [['chat', 'none']], indirect=True) +def test_invoke_stream_chat_model(setup_openai_mock, setup_xinference_mock): + model = XinferenceAILargeLanguageModel() + + response = model.invoke( + model='ChatGLM3', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_CHAT_MODEL_UID') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True +""" + Funtion calling of xinference does not support stream mode currently +""" +# def test_invoke_stream_chat_model_with_functions(): +# model = XinferenceAILargeLanguageModel() + +# response = model.invoke( +# model='ChatGLM3-6b', +# credentials={ +# 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), +# 'model_type': 'text-generation', +# 'model_name': 'ChatGLM3', +# 'model_uid': os.environ.get('XINFERENCE_CHAT_MODEL_UID') +# }, +# prompt_messages=[ +# SystemPromptMessage( +# content='你是一个天气机器人,可以通过调用函数来获取天气信息', +# ), +# UserPromptMessage( +# content='波士顿天气如何?' +# ) +# ], +# model_parameters={ +# 'temperature': 0, +# 'top_p': 1.0, +# }, +# stop=['you'], +# user='abc-123', +# stream=True, +# tools=[ +# PromptMessageTool( +# name='get_current_weather', +# description='Get the current weather in a given location', +# parameters={ +# "type": "object", +# "properties": { +# "location": { +# "type": "string", +# "description": "The city and state e.g. San Francisco, CA" +# }, +# "unit": { +# "type": "string", +# "enum": ["celsius", "fahrenheit"] +# } +# }, +# "required": [ +# "location" +# ] +# } +# ) +# ] +# ) + +# assert isinstance(response, Generator) + +# call: LLMResultChunk = None +# chunks = [] + +# for chunk in response: +# chunks.append(chunk) +# assert isinstance(chunk, LLMResultChunk) +# assert isinstance(chunk.delta, LLMResultChunkDelta) +# assert isinstance(chunk.delta.message, AssistantPromptMessage) +# assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +# if chunk.delta.message.tool_calls and len(chunk.delta.message.tool_calls) > 0: +# call = chunk +# break + +# assert call is not None +# assert call.delta.message.tool_calls[0].function.name == 'get_current_weather' + +# def test_invoke_chat_model_with_functions(): +# model = XinferenceAILargeLanguageModel() + +# response = model.invoke( +# model='ChatGLM3-6b', +# credentials={ +# 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), +# 'model_type': 'text-generation', +# 'model_name': 'ChatGLM3', +# 'model_uid': os.environ.get('XINFERENCE_CHAT_MODEL_UID') +# }, +# prompt_messages=[ +# UserPromptMessage( +# content='What is the weather like in San Francisco?' +# ) +# ], +# model_parameters={ +# 'temperature': 0.7, +# 'top_p': 1.0, +# }, +# stop=['you'], +# user='abc-123', +# stream=False, +# tools=[ +# PromptMessageTool( +# name='get_current_weather', +# description='Get the current weather in a given location', +# parameters={ +# "type": "object", +# "properties": { +# "location": { +# "type": "string", +# "description": "The city and state e.g. San Francisco, CA" +# }, +# "unit": { +# "type": "string", +# "enum": [ +# "c", +# "f" +# ] +# } +# }, +# "required": [ +# "location" +# ] +# } +# ) +# ] +# ) + +# assert isinstance(response, LLMResult) +# assert len(response.message.content) > 0 +# assert response.usage.total_tokens > 0 +# assert response.message.tool_calls[0].function.name == 'get_current_weather' + +@pytest.mark.parametrize('setup_openai_mock, setup_xinference_mock', [['completion', 'none']], indirect=True) +def test_validate_credentials_for_generation_model(setup_openai_mock, setup_xinference_mock): + model = XinferenceAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='alapaca', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': 'www ' + os.environ.get('XINFERENCE_GENERATION_MODEL_UID') + } + ) + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='alapaca', + credentials={ + 'server_url': '', + 'model_uid': '' + } + ) + + model.validate_credentials( + model='alapaca', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_GENERATION_MODEL_UID') + } + ) + +@pytest.mark.parametrize('setup_openai_mock, setup_xinference_mock', [['completion', 'none']], indirect=True) +def test_invoke_generation_model(setup_openai_mock, setup_xinference_mock): + model = XinferenceAILargeLanguageModel() + + response = model.invoke( + model='alapaca', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_GENERATION_MODEL_UID') + }, + prompt_messages=[ + UserPromptMessage( + content='the United States is' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + user="abc-123", + stream=False + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + assert response.usage.total_tokens > 0 + +@pytest.mark.parametrize('setup_openai_mock, setup_xinference_mock', [['completion', 'none']], indirect=True) +def test_invoke_stream_generation_model(setup_openai_mock, setup_xinference_mock): + model = XinferenceAILargeLanguageModel() + + response = model.invoke( + model='alapaca', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_GENERATION_MODEL_UID') + }, + prompt_messages=[ + UserPromptMessage( + content='the United States is' + ) + ], + model_parameters={ + 'temperature': 0.7, + 'top_p': 1.0, + }, + stop=['you'], + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + +def test_get_num_tokens(): + model = XinferenceAILargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='ChatGLM3', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_GENERATION_MODEL_UID') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + tools=[ + PromptMessageTool( + name='get_current_weather', + description='Get the current weather in a given location', + parameters={ + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": [ + "c", + "f" + ] + } + }, + "required": [ + "location" + ] + } + ) + ] + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 77 + + num_tokens = model.get_num_tokens( + model='ChatGLM3', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_GENERATION_MODEL_UID') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ], + ) + + assert isinstance(num_tokens, int) + assert num_tokens == 21 \ No newline at end of file diff --git a/api/tests/integration_tests/model_runtime/xinference/test_rerank.py b/api/tests/integration_tests/model_runtime/xinference/test_rerank.py new file mode 100644 index 000000000..b1197aa6a --- /dev/null +++ b/api/tests/integration_tests/model_runtime/xinference/test_rerank.py @@ -0,0 +1,53 @@ +import os +import pytest + +from core.model_runtime.entities.rerank_entities import RerankResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.xinference.rerank.rerank import XinferenceRerankModel + +from tests.integration_tests.model_runtime.__mock.xinference import setup_xinference_mock, MOCK + +@pytest.mark.parametrize('setup_xinference_mock', [['none']], indirect=True) +def test_validate_credentials(setup_xinference_mock): + model = XinferenceRerankModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='bge-reranker-base', + credentials={ + 'server_url': 'awdawdaw', + 'model_uid': os.environ.get('XINFERENCE_RERANK_MODEL_UID') + } + ) + + model.validate_credentials( + model='bge-reranker-base', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_RERANK_MODEL_UID') + } + ) + +@pytest.mark.parametrize('setup_xinference_mock', [['none']], indirect=True) +def test_invoke_model(setup_xinference_mock): + model = XinferenceRerankModel() + + result = model.invoke( + model='bge-reranker-base', + credentials={ + 'server_url': os.environ.get('XINFERENCE_SERVER_URL'), + 'model_uid': os.environ.get('XINFERENCE_RERANK_MODEL_UID') + }, + query="Who is Kasumi?", + docs=[ + "Kasumi is a girl's name of Japanese origin meaning \"mist\".", + "Her music is a kawaii bass, a mix of future bass, pop, and kawaii music ", + "and she leads a team named PopiParty." + ], + score_threshold=0.8 + ) + + assert isinstance(result, RerankResult) + assert len(result.docs) == 1 + assert result.docs[0].index == 0 + assert result.docs[0].score >= 0.8 diff --git a/api/tests/integration_tests/model_runtime/zhipuai/__init__.py b/api/tests/integration_tests/model_runtime/zhipuai/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/tests/integration_tests/model_runtime/zhipuai/test_llm.py b/api/tests/integration_tests/model_runtime/zhipuai/test_llm.py new file mode 100644 index 000000000..adcaa51b3 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/zhipuai/test_llm.py @@ -0,0 +1,106 @@ +import os +from typing import Generator + +import pytest + +from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage, AssistantPromptMessage +from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, \ + LLMResultChunkDelta +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.zhipuai.llm.llm import ZhipuAILargeLanguageModel + + +def test_validate_credentials(): + model = ZhipuAILargeLanguageModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='chatglm_turbo', + credentials={ + 'api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='chatglm_turbo', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + } + ) + + +def test_invoke_model(): + model = ZhipuAILargeLanguageModel() + + response = model.invoke( + model='chatglm_turbo', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Who are you?' + ) + ], + model_parameters={ + 'temperature': 0.9, + 'top_p': 0.7 + }, + stop=['How'], + stream=False, + user="abc-123" + ) + + assert isinstance(response, LLMResult) + assert len(response.message.content) > 0 + + +def test_invoke_stream_model(): + model = ZhipuAILargeLanguageModel() + + response = model.invoke( + model='chatglm_turbo', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + }, + prompt_messages=[ + UserPromptMessage( + content='Hello World!' + ) + ], + model_parameters={ + 'temperature': 0.9, + 'top_p': 0.7 + }, + stream=True, + user="abc-123" + ) + + assert isinstance(response, Generator) + + for chunk in response: + assert isinstance(chunk, LLMResultChunk) + assert isinstance(chunk.delta, LLMResultChunkDelta) + assert isinstance(chunk.delta.message, AssistantPromptMessage) + assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True + + +def test_get_num_tokens(): + model = ZhipuAILargeLanguageModel() + + num_tokens = model.get_num_tokens( + model='chatglm_turbo', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + }, + prompt_messages=[ + SystemPromptMessage( + content='You are a helpful AI assistant.', + ), + UserPromptMessage( + content='Hello World!' + ) + ] + ) + + assert num_tokens == 14 diff --git a/api/tests/integration_tests/model_runtime/zhipuai/test_provider.py b/api/tests/integration_tests/model_runtime/zhipuai/test_provider.py new file mode 100644 index 000000000..032e15e84 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/zhipuai/test_provider.py @@ -0,0 +1,20 @@ +import os + +import pytest + +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.zhipuai.zhipuai import ZhipuaiProvider + +def test_validate_provider_credentials(): + provider = ZhipuaiProvider() + + with pytest.raises(CredentialsValidateFailedError): + provider.validate_provider_credentials( + credentials={} + ) + + provider.validate_provider_credentials( + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + } + ) diff --git a/api/tests/integration_tests/model_runtime/zhipuai/test_text_embedding.py b/api/tests/integration_tests/model_runtime/zhipuai/test_text_embedding.py new file mode 100644 index 000000000..15a9307a3 --- /dev/null +++ b/api/tests/integration_tests/model_runtime/zhipuai/test_text_embedding.py @@ -0,0 +1,63 @@ +import os + +import pytest + +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.zhipuai.text_embedding.text_embedding import ZhipuAITextEmbeddingModel + + +def test_validate_credentials(): + model = ZhipuAITextEmbeddingModel() + + with pytest.raises(CredentialsValidateFailedError): + model.validate_credentials( + model='text_embedding', + credentials={ + 'api_key': 'invalid_key' + } + ) + + model.validate_credentials( + model='text_embedding', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + } + ) + + +def test_invoke_model(): + model = ZhipuAITextEmbeddingModel() + + result = model.invoke( + model='text_embedding', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + }, + texts=[ + "hello", + "world" + ], + user="abc-123" + ) + + assert isinstance(result, TextEmbeddingResult) + assert len(result.embeddings) == 2 + assert result.usage.total_tokens == 2 + + +def test_get_num_tokens(): + model = ZhipuAITextEmbeddingModel() + + num_tokens = model.get_num_tokens( + model='text_embedding', + credentials={ + 'api_key': os.environ.get('ZHIPUAI_API_KEY') + }, + texts=[ + "hello", + "world" + ] + ) + + assert num_tokens == 2 diff --git a/api/tests/integration_tests/models/embedding/test_azure_openai_embedding.py b/api/tests/integration_tests/models/embedding/test_azure_openai_embedding.py deleted file mode 100644 index 9ea202a6f..000000000 --- a/api/tests/integration_tests/models/embedding/test_azure_openai_embedding.py +++ /dev/null @@ -1,57 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.azure_openai_provider import AzureOpenAIProvider -from core.model_providers.models.embedding.azure_openai_embedding import AzureOpenAIEmbedding -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='azure_openai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_azure_openai_embedding_model(mocker): - model_name = 'text-embedding-ada-002' - valid_openai_api_base = os.environ['AZURE_OPENAI_API_BASE'] - valid_openai_api_key = os.environ['AZURE_OPENAI_API_KEY'] - openai_provider = AzureOpenAIProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='azure_openai', - model_name=model_name, - model_type=ModelType.EMBEDDINGS.value, - encrypted_config=json.dumps({ - 'openai_api_base': valid_openai_api_base, - 'openai_api_key': valid_openai_api_key, - 'base_model_name': model_name - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return AzureOpenAIEmbedding( - model_provider=openai_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embedding(mock_decrypt, mocker): - embedding_model = get_mock_azure_openai_embedding_model(mocker) - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 1536 diff --git a/api/tests/integration_tests/models/embedding/test_huggingface_hub_embedding.py b/api/tests/integration_tests/models/embedding/test_huggingface_hub_embedding.py deleted file mode 100644 index 452af9e72..000000000 --- a/api/tests/integration_tests/models/embedding/test_huggingface_hub_embedding.py +++ /dev/null @@ -1,136 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.models.embedding.huggingface_embedding import HuggingfaceEmbedding -from core.model_providers.providers.huggingface_hub_provider import HuggingfaceHubProvider -from models.provider import Provider, ProviderType, ProviderModel - -DEFAULT_MODEL_NAME = 'obrizum/all-MiniLM-L6-v2' - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='huggingface_hub', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_embedding_model(model_name, huggingfacehub_api_type, mocker): - valid_api_key = os.environ['HUGGINGFACE_API_KEY'] - endpoint_url = os.environ['HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL'] - model_provider = HuggingfaceHubProvider(provider=get_mock_provider()) - - credentials = { - 'huggingfacehub_api_type': huggingfacehub_api_type, - 'huggingfacehub_api_token': valid_api_key, - 'task_type': 'feature-extraction' - } - - if huggingfacehub_api_type == 'inference_endpoints': - credentials['huggingfacehub_endpoint_url'] = endpoint_url - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='huggingface_hub', - model_name=model_name, - model_type=ModelType.EMBEDDINGS.value, - encrypted_config=json.dumps(credentials), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', - return_value=mock_query) - - return HuggingfaceEmbedding( - model_provider=model_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_hosted_inference_api_embed_documents(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model( - DEFAULT_MODEL_NAME, - 'hosted_inference_api', - mocker) - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - assert len(rst[0]) == 384 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_endpoint_url_inference_api_embed_documents(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model( - '', - 'inference_endpoints', - mocker) - mocker.patch('core.third_party.langchain.embeddings.huggingface_hub_embedding.InferenceClient.post' - , return_value=bytes(json.dumps([[1, 2, 3], [4, 5, 6]]), 'utf-8')) - - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - assert len(rst[0]) == 3 - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_endpoint_url_inference_api_embed_documents_two(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model( - '', - 'inference_endpoints', - mocker) - mocker.patch('core.third_party.langchain.embeddings.huggingface_hub_embedding.InferenceClient.post' - , return_value=bytes(json.dumps([[[[1,2,3],[4,5,6],[7,8,9]]],[[[1,2,3],[4,5,6],[7,8,9]]]]), 'utf-8')) - - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - assert len(rst[0]) == 3 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_hosted_inference_api_embed_query(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model( - DEFAULT_MODEL_NAME, - 'hosted_inference_api', - mocker) - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 384 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_endpoint_url_inference_api_embed_query(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model( - '', - 'inference_endpoints', - mocker) - - mocker.patch('core.third_party.langchain.embeddings.huggingface_hub_embedding.InferenceClient.post' - , return_value=bytes(json.dumps([[1, 2, 3]]), 'utf-8')) - - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 3 - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_endpoint_url_inference_api_embed_query_two(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model( - '', - 'inference_endpoints', - mocker) - - mocker.patch('core.third_party.langchain.embeddings.huggingface_hub_embedding.InferenceClient.post' - , return_value=bytes(json.dumps([[[[1,2,3],[4,5,6],[7,8,9]]]]), 'utf-8')) - - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 3 \ No newline at end of file diff --git a/api/tests/integration_tests/models/embedding/test_jina_embedding.py b/api/tests/integration_tests/models/embedding/test_jina_embedding.py deleted file mode 100644 index db76b253c..000000000 --- a/api/tests/integration_tests/models/embedding/test_jina_embedding.py +++ /dev/null @@ -1,42 +0,0 @@ -import json -import os -from unittest.mock import patch - -from core.model_providers.models.embedding.jina_embedding import JinaEmbedding -from core.model_providers.providers.jina_provider import JinaProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='jina', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'api_key': valid_api_key - }), - is_valid=True, - ) - - -def get_mock_embedding_model(): - model_name = 'jina-embeddings-v2-small-en' - valid_api_key = os.environ['JINA_API_KEY'] - provider = JinaProvider(provider=get_mock_provider(valid_api_key)) - return JinaEmbedding( - model_provider=provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embedding(mock_decrypt): - embedding_model = get_mock_embedding_model() - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 512 diff --git a/api/tests/integration_tests/models/embedding/test_localai_embedding.py b/api/tests/integration_tests/models/embedding/test_localai_embedding.py deleted file mode 100644 index a0b70abc6..000000000 --- a/api/tests/integration_tests/models/embedding/test_localai_embedding.py +++ /dev/null @@ -1,61 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.embedding.localai_embedding import LocalAIEmbedding -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.localai_provider import LocalAIProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='localai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_embedding_model(mocker): - model_name = 'text-embedding-ada-002' - server_url = os.environ['LOCALAI_SERVER_URL'] - model_provider = LocalAIProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='localai', - model_name=model_name, - model_type=ModelType.EMBEDDINGS.value, - encrypted_config=json.dumps({ - 'server_url': server_url, - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return LocalAIEmbedding( - model_provider=model_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_documents(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_query(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) diff --git a/api/tests/integration_tests/models/embedding/test_minimax_embedding.py b/api/tests/integration_tests/models/embedding/test_minimax_embedding.py deleted file mode 100644 index feaad6bb1..000000000 --- a/api/tests/integration_tests/models/embedding/test_minimax_embedding.py +++ /dev/null @@ -1,44 +0,0 @@ -import json -import os -from unittest.mock import patch - -from core.model_providers.models.embedding.minimax_embedding import MinimaxEmbedding -from core.model_providers.providers.minimax_provider import MinimaxProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_group_id, valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='minimax', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'minimax_group_id': valid_group_id, - 'minimax_api_key': valid_api_key - }), - is_valid=True, - ) - - -def get_mock_embedding_model(): - model_name = 'embo-01' - valid_api_key = os.environ['MINIMAX_API_KEY'] - valid_group_id = os.environ['MINIMAX_GROUP_ID'] - provider = MinimaxProvider(provider=get_mock_provider(valid_group_id, valid_api_key)) - return MinimaxEmbedding( - model_provider=provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embedding(mock_decrypt): - embedding_model = get_mock_embedding_model() - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 1536 diff --git a/api/tests/integration_tests/models/embedding/test_openai_embedding.py b/api/tests/integration_tests/models/embedding/test_openai_embedding.py deleted file mode 100644 index 14e613349..000000000 --- a/api/tests/integration_tests/models/embedding/test_openai_embedding.py +++ /dev/null @@ -1,40 +0,0 @@ -import json -import os -from unittest.mock import patch - -from core.model_providers.providers.openai_provider import OpenAIProvider -from core.model_providers.models.embedding.openai_embedding import OpenAIEmbedding -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_openai_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='openai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'openai_api_key': valid_openai_api_key}), - is_valid=True, - ) - - -def get_mock_openai_embedding_model(): - model_name = 'text-embedding-ada-002' - valid_openai_api_key = os.environ['OPENAI_API_KEY'] - openai_provider = OpenAIProvider(provider=get_mock_provider(valid_openai_api_key)) - return OpenAIEmbedding( - model_provider=openai_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embedding(mock_decrypt): - embedding_model = get_mock_openai_embedding_model() - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 1536 diff --git a/api/tests/integration_tests/models/embedding/test_openllm_embedding.py b/api/tests/integration_tests/models/embedding/test_openllm_embedding.py deleted file mode 100644 index 29c24af6b..000000000 --- a/api/tests/integration_tests/models/embedding/test_openllm_embedding.py +++ /dev/null @@ -1,63 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.embedding.openllm_embedding import OpenLLMEmbedding -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.openllm_provider import OpenLLMProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='openllm', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_embedding_model(mocker): - model_name = 'facebook/opt-125m' - server_url = os.environ['OPENLLM_SERVER_URL'] - model_provider = OpenLLMProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='openllm', - model_name=model_name, - model_type=ModelType.EMBEDDINGS.value, - encrypted_config=json.dumps({ - 'server_url': server_url - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return OpenLLMEmbedding( - model_provider=model_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_documents(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - assert len(rst[0]) > 0 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_query(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) > 0 diff --git a/api/tests/integration_tests/models/embedding/test_replicate_embedding.py b/api/tests/integration_tests/models/embedding/test_replicate_embedding.py deleted file mode 100644 index 16531574c..000000000 --- a/api/tests/integration_tests/models/embedding/test_replicate_embedding.py +++ /dev/null @@ -1,64 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.embedding.replicate_embedding import ReplicateEmbedding -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.replicate_provider import ReplicateProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='replicate', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_embedding_model(mocker): - model_name = 'replicate/all-mpnet-base-v2' - valid_api_key = os.environ['REPLICATE_API_TOKEN'] - model_provider = ReplicateProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='replicate', - model_name=model_name, - model_type=ModelType.EMBEDDINGS.value, - encrypted_config=json.dumps({ - 'replicate_api_token': valid_api_key, - 'model_version': 'b6b7585c9640cd7a9572c6e129c9549d79c9c31f0d3fdce7baac7c67ca38f305' - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return ReplicateEmbedding( - model_provider=model_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_documents(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - assert len(rst[0]) == 768 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_query(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 768 diff --git a/api/tests/integration_tests/models/embedding/test_xinference_embedding.py b/api/tests/integration_tests/models/embedding/test_xinference_embedding.py deleted file mode 100644 index 7b7db1892..000000000 --- a/api/tests/integration_tests/models/embedding/test_xinference_embedding.py +++ /dev/null @@ -1,65 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.embedding.xinference_embedding import XinferenceEmbedding -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.xinference_provider import XinferenceProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='xinference', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_embedding_model(mocker): - model_name = 'vicuna-v1.3' - server_url = os.environ['XINFERENCE_SERVER_URL'] - model_uid = os.environ['XINFERENCE_MODEL_UID'] - model_provider = XinferenceProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='xinference', - model_name=model_name, - model_type=ModelType.EMBEDDINGS.value, - encrypted_config=json.dumps({ - 'server_url': server_url, - 'model_uid': model_uid - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return XinferenceEmbedding( - model_provider=model_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_documents(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_documents(['test', 'test1']) - assert isinstance(rst, list) - assert len(rst) == 2 - assert len(rst[0]) == 4096 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embed_query(mock_decrypt, mocker): - embedding_model = get_mock_embedding_model(mocker) - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 4096 diff --git a/api/tests/integration_tests/models/embedding/test_zhipuai_embedding.py b/api/tests/integration_tests/models/embedding/test_zhipuai_embedding.py deleted file mode 100644 index be2898402..000000000 --- a/api/tests/integration_tests/models/embedding/test_zhipuai_embedding.py +++ /dev/null @@ -1,50 +0,0 @@ -import json -import os -from unittest.mock import patch - -from core.model_providers.models.embedding.zhipuai_embedding import ZhipuAIEmbedding -from core.model_providers.providers.zhipuai_provider import ZhipuAIProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='zhipuai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'api_key': valid_api_key - }), - is_valid=True, - ) - - -def get_mock_embedding_model(): - model_name = 'text_embedding' - valid_api_key = os.environ['ZHIPUAI_API_KEY'] - provider = ZhipuAIProvider(provider=get_mock_provider(valid_api_key)) - return ZhipuAIEmbedding( - model_provider=provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_embedding(mock_decrypt): - embedding_model = get_mock_embedding_model() - rst = embedding_model.client.embed_query('test') - assert isinstance(rst, list) - assert len(rst) == 1024 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_doc_embedding(mock_decrypt): - embedding_model = get_mock_embedding_model() - rst = embedding_model.client.embed_documents(['test', 'test2']) - assert isinstance(rst, list) - assert len(rst[0]) == 1024 diff --git a/api/tests/integration_tests/models/llm/test_anthropic_model.py b/api/tests/integration_tests/models/llm/test_anthropic_model.py deleted file mode 100644 index f0636f6e7..000000000 --- a/api/tests/integration_tests/models/llm/test_anthropic_model.py +++ /dev/null @@ -1,62 +0,0 @@ -import json -import os -from unittest.mock import patch - -from langchain.schema import ChatGeneration, AIMessage - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.anthropic_model import AnthropicModel -from core.model_providers.providers.anthropic_provider import AnthropicProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='anthropic', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'anthropic_api_key': valid_api_key}), - is_valid=True, - ) - - -def get_mock_model(model_name): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0 - ) - valid_api_key = os.environ['ANTHROPIC_API_KEY'] - model_provider = AnthropicProvider(provider=get_mock_provider(valid_api_key)) - return AnthropicModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt): - model = get_mock_model('claude-2') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 6 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('claude-2') - messages = [PromptMessage(content='Human: 1 + 1=? \nAssistant: ')] - rst = model.run( - messages, - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_azure_openai_model.py b/api/tests/integration_tests/models/llm/test_azure_openai_model.py deleted file mode 100644 index 9d289f404..000000000 --- a/api/tests/integration_tests/models/llm/test_azure_openai_model.py +++ /dev/null @@ -1,87 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -import pytest -from langchain.schema import ChatGeneration, AIMessage - -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from core.model_providers.models.llm.azure_openai_model import AzureOpenAIModel -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.providers.azure_openai_provider import AzureOpenAIProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='azure_openai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_azure_openai_model(model_name, mocker): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0 - ) - valid_openai_api_base = os.environ['AZURE_OPENAI_API_BASE'] - valid_openai_api_key = os.environ['AZURE_OPENAI_API_KEY'] - provider = AzureOpenAIProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='azure_openai', - model_name=model_name, - model_type=ModelType.TEXT_GENERATION.value, - encrypted_config=json.dumps({ - 'openai_api_base': valid_openai_api_base, - 'openai_api_key': valid_openai_api_key, - 'base_model_name': model_name - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return AzureOpenAIModel( - model_provider=provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt, mocker): - openai_model = get_mock_azure_openai_model('text-davinci-003', mocker) - rst = openai_model.get_num_tokens([PromptMessage(content='you are a kindness Assistant.')]) - assert rst == 6 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_get_num_tokens(mock_decrypt, mocker): - openai_model = get_mock_azure_openai_model('gpt-35-turbo', mocker) - rst = openai_model.get_num_tokens([ - PromptMessage(type=MessageType.SYSTEM, content='you are a kindness Assistant.'), - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 22 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - openai_model = get_mock_azure_openai_model('gpt-35-turbo', mocker) - messages = [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')] - rst = openai_model.run( - messages, - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_baichuan_model.py b/api/tests/integration_tests/models/llm/test_baichuan_model.py deleted file mode 100644 index c70b14ce2..000000000 --- a/api/tests/integration_tests/models/llm/test_baichuan_model.py +++ /dev/null @@ -1,81 +0,0 @@ -import json -import os -from unittest.mock import patch - - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.baichuan_model import BaichuanModel -from core.model_providers.providers.baichuan_provider import BaichuanProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key, valid_secret_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='baichuan', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'api_key': valid_api_key, - 'secret_key': valid_secret_key, - }), - is_valid=True, - ) - - -def get_mock_model(model_name: str, streaming: bool = False): - model_kwargs = ModelKwargs( - temperature=0.01, - ) - valid_api_key = os.environ['BAICHUAN_API_KEY'] - valid_secret_key = os.environ['BAICHUAN_SECRET_KEY'] - model_provider = BaichuanProvider(provider=get_mock_provider(valid_api_key, valid_secret_key)) - return BaichuanModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs, - streaming=streaming - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_get_num_tokens(mock_decrypt): - model = get_mock_model('baichuan2-53b') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.SYSTEM, content='you are a kindness Assistant.'), - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst > 0 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('baichuan2-53b') - messages = [ - PromptMessage(type=MessageType.USER, content='Are you Human? you MUST only answer `y` or `n`?') - ] - rst = model.run( - messages, - ) - assert len(rst.content) > 0 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_stream_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('baichuan2-53b', streaming=True) - messages = [ - PromptMessage(type=MessageType.USER, content='Are you Human? you MUST only answer `y` or `n`?') - ] - rst = model.run( - messages - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_huggingface_hub_model.py b/api/tests/integration_tests/models/llm/test_huggingface_hub_model.py deleted file mode 100644 index 2c8c4556b..000000000 --- a/api/tests/integration_tests/models/llm/test_huggingface_hub_model.py +++ /dev/null @@ -1,127 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from langchain.schema import Generation - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from core.model_providers.models.llm.huggingface_hub_model import HuggingfaceHubModel -from core.model_providers.providers.huggingface_hub_provider import HuggingfaceHubProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='huggingface_hub', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_model(model_name, huggingfacehub_api_type, mocker): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - valid_api_key = os.environ['HUGGINGFACE_API_KEY'] - endpoint_url = os.environ['HUGGINGFACE_ENDPOINT_URL'] - model_provider = HuggingfaceHubProvider(provider=get_mock_provider()) - - credentials = { - 'huggingfacehub_api_type': huggingfacehub_api_type, - 'huggingfacehub_api_token': valid_api_key - } - - if huggingfacehub_api_type == 'inference_endpoints': - credentials['huggingfacehub_endpoint_url'] = endpoint_url - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='huggingface_hub', - model_name=model_name, - model_type=ModelType.TEXT_GENERATION.value, - encrypted_config=json.dumps(credentials), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return HuggingfaceHubModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - -@patch('huggingface_hub.hf_api.ModelInfo') -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_hosted_inference_api_get_num_tokens(mock_decrypt, mock_model_info, mocker): - mock_model_info.return_value = MagicMock(pipeline_tag='text2text-generation') - mocker.patch('langchain.llms.huggingface_hub.HuggingFaceHub._call', return_value="abc") - - model = get_mock_model( - 'tiiuae/falcon-40b', - 'hosted_inference_api', - mocker - ) - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('huggingface_hub.hf_api.ModelInfo') -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_inference_endpoints_get_num_tokens(mock_decrypt, mock_model_info, mocker): - mock_model_info.return_value = MagicMock(pipeline_tag='text2text-generation') - mocker.patch('langchain.llms.huggingface_hub.HuggingFaceHub._call', return_value="abc") - - model = get_mock_model( - '', - 'inference_endpoints', - mocker - ) - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_hosted_inference_api_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model( - 'google/flan-t5-base', - 'hosted_inference_api', - mocker - ) - - rst = model.run( - [PromptMessage(content='Human: Are you Really Human? you MUST only answer `y` or `n`? \nAssistant: ')], - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 - assert rst.content.strip() == 'n' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_inference_endpoints_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model( - '', - 'inference_endpoints', - mocker - ) - - rst = model.run( - [PromptMessage(content='Answer the following yes/no question. Can you write a whole Haiku in a single tweet?')], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_localai_model.py b/api/tests/integration_tests/models/llm/test_localai_model.py deleted file mode 100644 index 130476131..000000000 --- a/api/tests/integration_tests/models/llm/test_localai_model.py +++ /dev/null @@ -1,68 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.llm.localai_model import LocalAIModel -from core.model_providers.providers.localai_provider import LocalAIProvider -from core.model_providers.models.entity.message import PromptMessage -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(server_url): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='localai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({}), - is_valid=True, - ) - - -def get_mock_model(model_name, mocker): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0 - ) - server_url = os.environ['LOCALAI_SERVER_URL'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='localai', - model_name=model_name, - model_type=ModelType.TEXT_GENERATION.value, - encrypted_config=json.dumps({'server_url': server_url, 'completion_type': 'completion'}), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - openai_provider = LocalAIProvider(provider=get_mock_provider(server_url)) - return LocalAIModel( - model_provider=openai_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt, mocker): - openai_model = get_mock_model('ggml-gpt4all-j', mocker) - rst = openai_model.get_num_tokens([PromptMessage(content='you are a kindness Assistant.')]) - assert rst > 0 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - openai_model = get_mock_model('ggml-gpt4all-j', mocker) - rst = openai_model.run( - [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')], - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_minimax_model.py b/api/tests/integration_tests/models/llm/test_minimax_model.py deleted file mode 100644 index 43634f349..000000000 --- a/api/tests/integration_tests/models/llm/test_minimax_model.py +++ /dev/null @@ -1,65 +0,0 @@ -import json -import os -from unittest.mock import patch - -from langchain.schema import ChatGeneration, AIMessage, Generation - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.minimax_model import MinimaxModel -from core.model_providers.providers.minimax_provider import MinimaxProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_group_id, valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='minimax', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'minimax_group_id': valid_group_id, - 'minimax_api_key': valid_api_key - }), - is_valid=True, - ) - - -def get_mock_model(model_name): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - valid_api_key = os.environ['MINIMAX_API_KEY'] - valid_group_id = os.environ['MINIMAX_GROUP_ID'] - model_provider = MinimaxProvider(provider=get_mock_provider(valid_group_id, valid_api_key)) - return MinimaxModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt): - model = get_mock_model('abab5.5-chat') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('abab5.5-chat') - rst = model.run( - [PromptMessage(content='Human: Are you a real Human? you MUST only answer `y` or `n`? \nAssistant: ')], - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_openai_model.py b/api/tests/integration_tests/models/llm/test_openai_model.py deleted file mode 100644 index e74836e9d..000000000 --- a/api/tests/integration_tests/models/llm/test_openai_model.py +++ /dev/null @@ -1,111 +0,0 @@ -import json -import os -from unittest.mock import patch - -from langchain.schema import Generation, ChatGeneration, AIMessage - -from core.model_providers.providers.openai_provider import OpenAIProvider -from core.model_providers.models.entity.message import PromptMessage, MessageType, ImageMessageFile -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.openai_model import OpenAIModel -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_openai_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='openai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'openai_api_key': valid_openai_api_key}), - is_valid=True, - ) - - -def get_mock_openai_model(model_name): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0 - ) - model_name = model_name - valid_openai_api_key = os.environ['OPENAI_API_KEY'] - openai_provider = OpenAIProvider(provider=get_mock_provider(valid_openai_api_key)) - return OpenAIModel( - model_provider=openai_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt): - openai_model = get_mock_openai_model('gpt-3.5-turbo-instruct') - rst = openai_model.get_num_tokens([PromptMessage(content='you are a kindness Assistant.')]) - assert rst == 6 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_get_num_tokens(mock_decrypt): - openai_model = get_mock_openai_model('gpt-3.5-turbo') - rst = openai_model.get_num_tokens([ - PromptMessage(type=MessageType.SYSTEM, content='you are a kindness Assistant.'), - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 22 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_vision_chat_get_num_tokens(mock_decrypt): - openai_model = get_mock_openai_model('gpt-4-vision-preview') - messages = [ - PromptMessage(content='What’s in first image?', files=[ - ImageMessageFile( - data='https://upload.wikimedia.org/wikipedia/commons/0/00/1890s_Carlisle_Boarding_School_Graduates_PA.jpg') - ]) - ] - rst = openai_model.get_num_tokens(messages) - assert rst == 77 - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - openai_model = get_mock_openai_model('gpt-3.5-turbo-instruct') - rst = openai_model.run( - [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')], - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 - assert rst.content.strip() == 'n' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - openai_model = get_mock_openai_model('gpt-3.5-turbo') - messages = [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')] - rst = openai_model.run( - messages, - stop=['\nHuman:'], - ) - assert (len(rst.content) > 0) - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_vision_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - openai_model = get_mock_openai_model('gpt-4-vision-preview') - messages = [ - PromptMessage(content='What’s in first image?', files=[ - ImageMessageFile(data='https://upload.wikimedia.org/wikipedia/commons/0/00/1890s_Carlisle_Boarding_School_Graduates_PA.jpg') - ]) - ] - rst = openai_model.run( - messages, - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_openllm_model.py b/api/tests/integration_tests/models/llm/test_openllm_model.py deleted file mode 100644 index 8a70e6ace..000000000 --- a/api/tests/integration_tests/models/llm/test_openllm_model.py +++ /dev/null @@ -1,72 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from core.model_providers.models.llm.openllm_model import OpenLLMModel -from core.model_providers.providers.openllm_provider import OpenLLMProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='openllm', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_model(model_name, mocker): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - server_url = os.environ['OPENLLM_SERVER_URL'] - model_provider = OpenLLMProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='openllm', - model_name=model_name, - model_type=ModelType.TEXT_GENERATION.value, - encrypted_config=json.dumps({ - 'server_url': server_url - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return OpenLLMModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt, mocker): - model = get_mock_model('facebook/opt-125m', mocker) - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('facebook/opt-125m', mocker) - messages = [PromptMessage(content='Human: who are you? \nAnswer: ')] - rst = model.run( - messages - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_replicate_model.py b/api/tests/integration_tests/models/llm/test_replicate_model.py deleted file mode 100644 index d5e55def4..000000000 --- a/api/tests/integration_tests/models/llm/test_replicate_model.py +++ /dev/null @@ -1,75 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from langchain.schema import Generation - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from core.model_providers.models.llm.replicate_model import ReplicateModel -from core.model_providers.providers.replicate_provider import ReplicateProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='replicate', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_model(model_name, model_version, mocker): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - valid_api_key = os.environ['REPLICATE_API_TOKEN'] - model_provider = ReplicateProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='replicate', - model_name=model_name, - model_type=ModelType.TEXT_GENERATION.value, - encrypted_config=json.dumps({ - 'replicate_api_token': valid_api_key, - 'model_version': model_version - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return ReplicateModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt, mocker): - model = get_mock_model('a16z-infra/llama-2-13b-chat', '2a7f981751ec7fdf87b5b91ad4db53683a98082e9ff7bfd12c8cd5ea85980a52', mocker) - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 7 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('a16z-infra/llama-2-13b-chat', '2a7f981751ec7fdf87b5b91ad4db53683a98082e9ff7bfd12c8cd5ea85980a52', mocker) - messages = [PromptMessage(content='Human: 1+1=? \nAnswer: ')] - rst = model.run( - messages - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_spark_model.py b/api/tests/integration_tests/models/llm/test_spark_model.py deleted file mode 100644 index e6fa45f0c..000000000 --- a/api/tests/integration_tests/models/llm/test_spark_model.py +++ /dev/null @@ -1,70 +0,0 @@ -import json -import os -from unittest.mock import patch - -from langchain.schema import ChatGeneration, AIMessage, Generation - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.minimax_model import MinimaxModel -from core.model_providers.models.llm.spark_model import SparkModel -from core.model_providers.providers.minimax_provider import MinimaxProvider -from core.model_providers.providers.spark_provider import SparkProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_app_id, valid_api_key, valid_api_secret): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='spark', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'app_id': valid_app_id, - 'api_key': valid_api_key, - 'api_secret': valid_api_secret, - }), - is_valid=True, - ) - - -def get_mock_model(model_name): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - valid_app_id = os.environ['SPARK_APP_ID'] - valid_api_key = os.environ['SPARK_API_KEY'] - valid_api_secret = os.environ['SPARK_API_SECRET'] - model_provider = SparkProvider(provider=get_mock_provider(valid_app_id, valid_api_key, valid_api_secret)) - return SparkModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt): - model = get_mock_model('spark') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 6 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('spark') - messages = [PromptMessage(content='Human: 1 + 1=? \nAssistant: Integer answer is:')] - rst = model.run( - messages, - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_tongyi_model.py b/api/tests/integration_tests/models/llm/test_tongyi_model.py deleted file mode 100644 index b448c29f4..000000000 --- a/api/tests/integration_tests/models/llm/test_tongyi_model.py +++ /dev/null @@ -1,63 +0,0 @@ -import json -import os -from unittest.mock import patch - -from langchain.schema import ChatGeneration, AIMessage, Generation - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.tongyi_model import TongyiModel -from core.model_providers.providers.tongyi_provider import TongyiProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='tongyi', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'dashscope_api_key': valid_api_key, - }), - is_valid=True, - ) - - -def get_mock_model(model_name): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - valid_api_key = os.environ['TONGYI_DASHSCOPE_API_KEY'] - model_provider = TongyiProvider(provider=get_mock_provider(valid_api_key)) - return TongyiModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt): - model = get_mock_model('qwen-turbo') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('qwen-turbo') - rst = model.run( - [PromptMessage(content='Human: Are you Human? you MUST only answer `y` or `n`? \nAssistant: ')], - stop=['\nHuman:'], - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_wenxin_model.py b/api/tests/integration_tests/models/llm/test_wenxin_model.py deleted file mode 100644 index 9378c620d..000000000 --- a/api/tests/integration_tests/models/llm/test_wenxin_model.py +++ /dev/null @@ -1,63 +0,0 @@ -import json -import os -from unittest.mock import patch - - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.wenxin_model import WenxinModel -from core.model_providers.providers.wenxin_provider import WenxinProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key, valid_secret_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='wenxin', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'api_key': valid_api_key, - 'secret_key': valid_secret_key, - }), - is_valid=True, - ) - - -def get_mock_model(model_name): - model_kwargs = ModelKwargs( - temperature=0.01 - ) - valid_api_key = os.environ['WENXIN_API_KEY'] - valid_secret_key = os.environ['WENXIN_SECRET_KEY'] - model_provider = WenxinProvider(provider=get_mock_provider(valid_api_key, valid_secret_key)) - return WenxinModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt): - model = get_mock_model('ernie-bot') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('ernie-bot') - messages = [PromptMessage(type=MessageType.USER, content='Human: 1 + 1=? \nAssistant: Integer answer is:')] - rst = model.run( - messages - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_xinference_model.py b/api/tests/integration_tests/models/llm/test_xinference_model.py deleted file mode 100644 index 01d5fcdd9..000000000 --- a/api/tests/integration_tests/models/llm/test_xinference_model.py +++ /dev/null @@ -1,74 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs, ModelType -from core.model_providers.models.llm.xinference_model import XinferenceModel -from core.model_providers.providers.xinference_provider import XinferenceProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='xinference', - provider_type=ProviderType.CUSTOM.value, - encrypted_config='', - is_valid=True, - ) - - -def get_mock_model(model_name, mocker): - model_kwargs = ModelKwargs( - max_tokens=10, - temperature=0.01 - ) - server_url = os.environ['XINFERENCE_SERVER_URL'] - model_uid = os.environ['XINFERENCE_MODEL_UID'] - model_provider = XinferenceProvider(provider=get_mock_provider()) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='xinference', - model_name=model_name, - model_type=ModelType.TEXT_GENERATION.value, - encrypted_config=json.dumps({ - 'server_url': server_url, - 'model_uid': model_uid - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return XinferenceModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_num_tokens(mock_decrypt, mocker): - model = get_mock_model('llama-2-chat', mocker) - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst == 5 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('llama-2-chat', mocker) - messages = [PromptMessage(content='Human: 1+1=? \nAnswer: ')] - rst = model.run( - messages - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/llm/test_zhipuai_model.py b/api/tests/integration_tests/models/llm/test_zhipuai_model.py deleted file mode 100644 index 8f1a60e8f..000000000 --- a/api/tests/integration_tests/models/llm/test_zhipuai_model.py +++ /dev/null @@ -1,79 +0,0 @@ -import json -import os -from unittest.mock import patch - - -from core.model_providers.models.entity.message import PromptMessage, MessageType -from core.model_providers.models.entity.model_params import ModelKwargs -from core.model_providers.models.llm.zhipuai_model import ZhipuAIModel -from core.model_providers.providers.zhipuai_provider import ZhipuAIProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='zhipuai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({ - 'api_key': valid_api_key - }), - is_valid=True, - ) - - -def get_mock_model(model_name: str, streaming: bool = False): - model_kwargs = ModelKwargs( - temperature=0.01, - ) - valid_api_key = os.environ['ZHIPUAI_API_KEY'] - model_provider = ZhipuAIProvider(provider=get_mock_provider(valid_api_key)) - return ZhipuAIModel( - model_provider=model_provider, - name=model_name, - model_kwargs=model_kwargs, - streaming=streaming - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_get_num_tokens(mock_decrypt): - model = get_mock_model('chatglm_lite') - rst = model.get_num_tokens([ - PromptMessage(type=MessageType.SYSTEM, content='you are a kindness Assistant.'), - PromptMessage(type=MessageType.USER, content='Who is your manufacturer?') - ]) - assert rst > 0 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('chatglm_lite') - messages = [ - PromptMessage(type=MessageType.USER, content='Are you Human? you MUST only answer `y` or `n`?') - ] - rst = model.run( - messages, - ) - assert len(rst.content) > 0 - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_chat_stream_run(mock_decrypt, mocker): - mocker.patch('core.model_providers.providers.base.BaseModelProvider.update_last_used', return_value=None) - - model = get_mock_model('chatglm_lite', streaming=True) - messages = [ - PromptMessage(type=MessageType.USER, content='Are you Human? you MUST only answer `y` or `n`?') - ] - rst = model.run( - messages - ) - assert len(rst.content) > 0 diff --git a/api/tests/integration_tests/models/moderation/test_openai_moderation.py b/api/tests/integration_tests/models/moderation/test_openai_moderation.py deleted file mode 100644 index 91027210b..000000000 --- a/api/tests/integration_tests/models/moderation/test_openai_moderation.py +++ /dev/null @@ -1,39 +0,0 @@ -import json -import os -from unittest.mock import patch - -from core.model_providers.models.moderation.openai_moderation import OpenAIModeration, DEFAULT_MODEL -from core.model_providers.providers.openai_provider import OpenAIProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_openai_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='openai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'openai_api_key': valid_openai_api_key}), - is_valid=True, - ) - - -def get_mock_openai_moderation_model(): - valid_openai_api_key = os.environ['OPENAI_API_KEY'] - openai_provider = OpenAIProvider(provider=get_mock_provider(valid_openai_api_key)) - return OpenAIModeration( - model_provider=openai_provider, - name=DEFAULT_MODEL - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt): - model = get_mock_openai_moderation_model() - rst = model.run('hello') - - assert rst is True diff --git a/api/tests/integration_tests/models/reranking/test_cohere_reranking.py b/api/tests/integration_tests/models/reranking/test_cohere_reranking.py deleted file mode 100644 index bbdd94cbe..000000000 --- a/api/tests/integration_tests/models/reranking/test_cohere_reranking.py +++ /dev/null @@ -1,61 +0,0 @@ -import json -import os -from unittest.mock import patch - -from langchain.schema import Document - -from core.model_providers.models.reranking.cohere_reranking import CohereReranking -from core.model_providers.providers.cohere_provider import CohereProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='cohere', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'api_key': valid_api_key}), - is_valid=True, - ) - - -def get_mock_model(): - valid_api_key = os.environ['COHERE_API_KEY'] - provider = CohereProvider(provider=get_mock_provider(valid_api_key)) - return CohereReranking( - model_provider=provider, - name='rerank-english-v2.0' - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt): - model = get_mock_model() - - docs = [] - docs.append(Document( - page_content='bye', - metadata={ - "doc_id": 'a', - "doc_hash": 'doc_hash', - "document_id": 'document_id', - "dataset_id": 'dataset_id', - } - )) - docs.append(Document( - page_content='hello', - metadata={ - "doc_id": 'b', - "doc_hash": 'doc_hash', - "document_id": 'document_id', - "dataset_id": 'dataset_id', - } - )) - rst = model.rerank('hello', docs, None, 2) - - assert rst[0].page_content == 'hello' diff --git a/api/tests/integration_tests/models/reranking/test_xinference_reranking.py b/api/tests/integration_tests/models/reranking/test_xinference_reranking.py deleted file mode 100644 index 1f22247e8..000000000 --- a/api/tests/integration_tests/models/reranking/test_xinference_reranking.py +++ /dev/null @@ -1,78 +0,0 @@ -import json -import os -from unittest.mock import patch, MagicMock - -from langchain.schema import Document - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.models.reranking.xinference_reranking import XinferenceReranking -from core.model_providers.providers.xinference_provider import XinferenceProvider -from models.provider import Provider, ProviderType, ProviderModel - - -def get_mock_provider(valid_server_url, valid_model_uid): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='xinference', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'server_url': valid_server_url, 'model_uid': valid_model_uid}), - is_valid=True, - ) - - -def get_mock_model(mocker): - valid_server_url = os.environ['XINFERENCE_SERVER_URL'] - valid_model_uid = os.environ['XINFERENCE_MODEL_UID'] - model_name = 'bge-reranker-base' - provider = XinferenceProvider(provider=get_mock_provider(valid_server_url, valid_model_uid)) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - provider_name='xinference', - model_name=model_name, - model_type=ModelType.RERANKING.value, - encrypted_config=json.dumps({ - 'server_url': valid_server_url, - 'model_uid': valid_model_uid - }), - is_valid=True, - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - return XinferenceReranking( - model_provider=provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_api_key): - return encrypted_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt, mocker): - model = get_mock_model(mocker) - - docs = [] - docs.append(Document( - page_content='bye', - metadata={ - "doc_id": 'a', - "doc_hash": 'doc_hash', - "document_id": 'document_id', - "dataset_id": 'dataset_id', - } - )) - docs.append(Document( - page_content='hello', - metadata={ - "doc_id": 'b', - "doc_hash": 'doc_hash', - "document_id": 'document_id', - "dataset_id": 'dataset_id', - } - )) - rst = model.rerank('hello', docs, None, 2) - - assert rst[0].page_content == 'hello' diff --git a/api/tests/integration_tests/models/speech2text/test_openai_whisper.py b/api/tests/integration_tests/models/speech2text/test_openai_whisper.py deleted file mode 100644 index a649c794e..000000000 --- a/api/tests/integration_tests/models/speech2text/test_openai_whisper.py +++ /dev/null @@ -1,50 +0,0 @@ -import json -import os -from unittest.mock import patch - -from core.model_providers.models.speech2text.openai_whisper import OpenAIWhisper -from core.model_providers.providers.openai_provider import OpenAIProvider -from models.provider import Provider, ProviderType - - -def get_mock_provider(valid_openai_api_key): - return Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name='openai', - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({'openai_api_key': valid_openai_api_key}), - is_valid=True, - ) - - -def get_mock_openai_whisper_model(): - model_name = 'whisper-1' - valid_openai_api_key = os.environ['OPENAI_API_KEY'] - openai_provider = OpenAIProvider(provider=get_mock_provider(valid_openai_api_key)) - return OpenAIWhisper( - model_provider=openai_provider, - name=model_name - ) - - -def decrypt_side_effect(tenant_id, encrypted_openai_api_key): - return encrypted_openai_api_key - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_run(mock_decrypt): - # Get the directory of the current file - current_dir = os.path.dirname(os.path.abspath(__file__)) - - # Construct the path to the audio file - audio_file_path = os.path.join(current_dir, 'audio.mp3') - - model = get_mock_openai_whisper_model() - - # Open the file and get the file object - with open(audio_file_path, 'rb') as audio_file: - rst = model.run(audio_file) - - assert isinstance(rst, dict) - assert rst['text'] == '1, 2, 3, 4, 5, 6, 7, 8, 9, 10' diff --git a/api/tests/unit_tests/model_providers/fake_model_provider.py b/api/tests/unit_tests/model_providers/fake_model_provider.py deleted file mode 100644 index 35c44061d..000000000 --- a/api/tests/unit_tests/model_providers/fake_model_provider.py +++ /dev/null @@ -1,47 +0,0 @@ -from typing import Type - -from core.model_providers.models.base import BaseProviderModel -from core.model_providers.models.entity.model_params import ModelType, ModelKwargsRules, ModelMode -from core.model_providers.models.llm.openai_model import OpenAIModel -from core.model_providers.providers.base import BaseModelProvider - - -class FakeModelProvider(BaseModelProvider): - @property - def provider_name(self): - return 'fake' - - def _get_fixed_model_list(self, model_type: ModelType) -> list[dict]: - return [{'id': 'test_model', 'name': 'Test Model', 'mode': 'completion'}] - - def _get_text_generation_model_mode(self, model_name) -> str: - return ModelMode.COMPLETION.value - - def get_model_class(self, model_type: ModelType) -> Type[BaseProviderModel]: - return OpenAIModel - - @classmethod - def is_provider_credentials_valid_or_raise(cls, credentials: dict): - pass - - @classmethod - def encrypt_provider_credentials(cls, tenant_id: str, credentials: dict) -> dict: - return credentials - - def get_provider_credentials(self, obfuscated: bool = False) -> dict: - return {} - - @classmethod - def is_model_credentials_valid_or_raise(cls, model_name: str, model_type: ModelType, credentials: dict): - pass - - @classmethod - def encrypt_model_credentials(cls, tenant_id: str, model_name: str, model_type: ModelType, - credentials: dict) -> dict: - return credentials - - def get_model_parameter_rules(self, model_name: str, model_type: ModelType) -> ModelKwargsRules: - return ModelKwargsRules() - - def get_model_credentials(self, model_name: str, model_type: ModelType, obfuscated: bool = False) -> dict: - return {} diff --git a/api/tests/unit_tests/model_providers/test_anthropic_provider.py b/api/tests/unit_tests/model_providers/test_anthropic_provider.py deleted file mode 100644 index d4cc9beaa..000000000 --- a/api/tests/unit_tests/model_providers/test_anthropic_provider.py +++ /dev/null @@ -1,123 +0,0 @@ -from typing import List, Optional, Any - -import anthropic -import httpx -import pytest -from unittest.mock import patch -import json - -from langchain.callbacks.manager import CallbackManagerForLLMRun -from langchain.schema import BaseMessage, ChatResult, ChatGeneration, AIMessage - -from core.model_providers.providers.anthropic_provider import AnthropicProvider -from core.model_providers.providers.base import CredentialsValidateFailedError -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'anthropic' -MODEL_PROVIDER_CLASS = AnthropicProvider -VALIDATE_CREDENTIAL_KEY = 'anthropic_api_key' - - -def mock_chat_generate(messages: List[BaseMessage], - stop: Optional[List[str]] = None, - run_manager: Optional[CallbackManagerForLLMRun] = None, - **kwargs: Any): - return ChatResult(generations=[ChatGeneration(message=AIMessage(content='answer'))]) - - -def mock_chat_generate_invalid(messages: List[BaseMessage], - stop: Optional[List[str]] = None, - run_manager: Optional[CallbackManagerForLLMRun] = None, - **kwargs: Any): - raise anthropic.APIStatusError('Invalid credentials', - response=httpx._models.Response( - status_code=401, - request=httpx._models.Request( - method='POST', - url='https://api.anthropic.com/v1/completions', - ) - ), - body=None - ) - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -@patch('langchain.chat_models.ChatAnthropic._generate', side_effect=mock_chat_generate) -def test_is_provider_credentials_valid_or_raise_valid(mock_create): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({VALIDATE_CREDENTIAL_KEY: 'valid_key'}) - - -@patch('langchain.chat_models.ChatAnthropic._generate', side_effect=mock_chat_generate_invalid) -def test_is_provider_credentials_valid_or_raise_invalid(mock_create): - # raise CredentialsValidateFailedError if anthropic_api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - # raise CredentialsValidateFailedError if anthropic_api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({VALIDATE_CREDENTIAL_KEY: 'invalid_key'}) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', {VALIDATE_CREDENTIAL_KEY: api_key}) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result[VALIDATE_CREDENTIAL_KEY] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({VALIDATE_CREDENTIAL_KEY: 'encrypted_valid_key'}), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result[VALIDATE_CREDENTIAL_KEY] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - api_key = 'valid_key' - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({VALIDATE_CREDENTIAL_KEY: f'encrypted_{api_key}'}), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result[VALIDATE_CREDENTIAL_KEY][6:-2] - assert len(middle_token) == max(len(api_key) - 8, 0) - assert all(char == '*' for char in middle_token) - - -@patch('core.model_providers.providers.hosted.hosted_model_providers.anthropic') -def test_get_credentials_hosted(mock_hosted): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.SYSTEM.value, - encrypted_config='', - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - mock_hosted.api_key = 'hosted_key' - result = model_provider.get_provider_credentials() - assert result[VALIDATE_CREDENTIAL_KEY] == 'hosted_key' diff --git a/api/tests/unit_tests/model_providers/test_azure_openai_provider.py b/api/tests/unit_tests/model_providers/test_azure_openai_provider.py deleted file mode 100644 index 43788d4e0..000000000 --- a/api/tests/unit_tests/model_providers/test_azure_openai_provider.py +++ /dev/null @@ -1,117 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.azure_openai_provider import AzureOpenAIProvider -from core.model_providers.providers.base import CredentialsValidateFailedError -from models.provider import ProviderType, Provider, ProviderModel - -PROVIDER_NAME = 'azure_openai' -MODEL_PROVIDER_CLASS = AzureOpenAIProvider -VALIDATE_CREDENTIAL = { - 'openai_api_base': 'https://xxxx.openai.azure.com/', - 'openai_api_key': 'valid_key', - 'base_model_name': 'gpt-35-turbo' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_model_credentials_valid_or_raise(mocker): - mocker.patch('langchain.chat_models.base.BaseChatModel.generate', return_value=None) - - # assert True if credentials is valid - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL - ) - - -def test_is_model_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if credentials is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={} - ) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_model_credentials(mock_encrypt): - openai_api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_model_credentials( - tenant_id='tenant_id', - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={'openai_api_key': openai_api_key} - ) - mock_encrypt.assert_called_with('tenant_id', openai_api_key) - assert result['openai_api_key'] == f'encrypted_{openai_api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_custom(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['openai_api_key'] = 'encrypted_' + encrypted_credential['openai_api_key'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION - ) - assert result['openai_api_key'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_obfuscated(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['openai_api_key'] = 'encrypted_' + encrypted_credential['openai_api_key'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - obfuscated=True - ) - middle_token = result['openai_api_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['openai_api_key']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_baichuan_provider.py b/api/tests/unit_tests/model_providers/test_baichuan_provider.py deleted file mode 100644 index 6d4b83240..000000000 --- a/api/tests/unit_tests/model_providers/test_baichuan_provider.py +++ /dev/null @@ -1,97 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from langchain.schema import ChatResult, ChatGeneration, AIMessage - -from core.model_providers.providers.baichuan_provider import BaichuanProvider -from core.model_providers.providers.base import CredentialsValidateFailedError -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'baichuan' -MODEL_PROVIDER_CLASS = BaichuanProvider -VALIDATE_CREDENTIAL = { - 'api_key': 'valid_key', - 'secret_key': 'valid_key', -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.baichuan_llm.BaichuanChatLLM._generate', - return_value=ChatResult(generations=[ChatGeneration(message=AIMessage(content='abc'))])) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['api_key'] = 'invalid_key' - credential['secret_key'] = 'invalid_key' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - assert result['api_key'] == f'encrypted_{VALIDATE_CREDENTIAL["api_key"]}' - assert result['secret_key'] == f'encrypted_{VALIDATE_CREDENTIAL["secret_key"]}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - encrypted_credential['secret_key'] = 'encrypted_' + encrypted_credential['secret_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['api_key'] == 'valid_key' - assert result['secret_key'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - encrypted_credential['secret_key'] = 'encrypted_' + encrypted_credential['secret_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['api_key'][6:-2] - secret_key_middle_token = result['secret_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['api_key']) - 8, 0) - assert len(secret_key_middle_token) == max(len(VALIDATE_CREDENTIAL['secret_key']) - 8, 0) - assert all(char == '*' for char in middle_token) - assert all(char == '*' for char in secret_key_middle_token) diff --git a/api/tests/unit_tests/model_providers/test_base_model_provider.py b/api/tests/unit_tests/model_providers/test_base_model_provider.py deleted file mode 100644 index 534599c31..000000000 --- a/api/tests/unit_tests/model_providers/test_base_model_provider.py +++ /dev/null @@ -1,72 +0,0 @@ -from unittest.mock import MagicMock - -import pytest - -from core.model_providers.error import QuotaExceededError -from core.model_providers.models.entity.model_params import ModelType -from models.provider import Provider, ProviderType -from tests.unit_tests.model_providers.fake_model_provider import FakeModelProvider - - -def test_get_supported_model_list(mocker): - mocker.patch.object( - FakeModelProvider, - 'get_rules', - return_value={'support_provider_types': ['custom'], 'model_flexibility': 'configurable'} - ) - - mock_provider_model = MagicMock() - mock_provider_model.model_name = 'test_model' - mock_query = MagicMock() - mock_query.filter.return_value.order_by.return_value.all.return_value = [mock_provider_model] - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - provider = FakeModelProvider(provider=Provider()) - result = provider.get_supported_model_list(ModelType.TEXT_GENERATION) - - assert result == [{'id': 'test_model', 'name': 'test_model', 'mode': 'completion'}] - - -def test_check_quota_over_limit(mocker): - mocker.patch.object( - FakeModelProvider, - 'get_rules', - return_value={'support_provider_types': ['system']} - ) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = None - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - provider = FakeModelProvider(provider=Provider(provider_type=ProviderType.SYSTEM.value)) - - with pytest.raises(QuotaExceededError): - provider.check_quota_over_limit() - - -def test_check_quota_not_over_limit(mocker): - mocker.patch.object( - FakeModelProvider, - 'get_rules', - return_value={'support_provider_types': ['system']} - ) - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = Provider() - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - provider = FakeModelProvider(provider=Provider(provider_type=ProviderType.SYSTEM.value)) - - assert provider.check_quota_over_limit() is None - - -def test_check_custom_quota_over_limit(mocker): - mocker.patch.object( - FakeModelProvider, - 'get_rules', - return_value={'support_provider_types': ['custom']} - ) - - provider = FakeModelProvider(provider=Provider(provider_type=ProviderType.CUSTOM.value)) - - assert provider.check_quota_over_limit() is None diff --git a/api/tests/unit_tests/model_providers/test_chatglm_provider.py b/api/tests/unit_tests/model_providers/test_chatglm_provider.py deleted file mode 100644 index 30e8be5b2..000000000 --- a/api/tests/unit_tests/model_providers/test_chatglm_provider.py +++ /dev/null @@ -1,94 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -import requests -from langchain.schema import LLMResult, Generation, AIMessage, ChatResult, ChatGeneration -from requests import Response - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.chatglm_provider import ChatGLMProvider -from core.model_providers.providers.spark_provider import SparkProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'chatglm' -MODEL_PROVIDER_CLASS = ChatGLMProvider -VALIDATE_CREDENTIAL = { - 'api_base': 'valid_api_base', -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mock_response = Response() - mock_response.status_code = 200 - mock_response._content = json.dumps({'models': []}).encode('utf-8') - mocker.patch('requests.get', - return_value=mock_response) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['api_base'] = 'invalid_api_base' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - assert result['api_base'] == f'encrypted_{VALIDATE_CREDENTIAL["api_base"]}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_base'] = 'encrypted_' + encrypted_credential['api_base'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['api_base'] == 'valid_api_base' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_base'] = 'encrypted_' + encrypted_credential['api_base'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['api_base'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['api_base']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_huggingface_hub_provider.py b/api/tests/unit_tests/model_providers/test_huggingface_hub_provider.py deleted file mode 100644 index 468d56038..000000000 --- a/api/tests/unit_tests/model_providers/test_huggingface_hub_provider.py +++ /dev/null @@ -1,165 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.huggingface_hub_provider import HuggingfaceHubProvider -from models.provider import ProviderType, Provider, ProviderModel - -PROVIDER_NAME = 'huggingface_hub' -MODEL_PROVIDER_CLASS = HuggingfaceHubProvider -HOSTED_INFERENCE_API_VALIDATE_CREDENTIAL = { - 'huggingfacehub_api_type': 'hosted_inference_api', - 'huggingfacehub_api_token': 'valid_key' -} - -INFERENCE_ENDPOINTS_VALIDATE_CREDENTIAL = { - 'huggingfacehub_api_type': 'inference_endpoints', - 'huggingfacehub_api_token': 'valid_key', - 'huggingfacehub_endpoint_url': 'valid_url', - 'task_type': 'text-generation' -} - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -@patch('huggingface_hub.hf_api.ModelInfo') -def test_hosted_inference_api_is_credentials_valid_or_raise_valid(mock_model_info, mocker): - mock_model_info.return_value = MagicMock(pipeline_tag='text2text-generation', cardData={'inference': True}) - mocker.patch('huggingface_hub.hf_api.HfApi.whoami', return_value="abc") - mocker.patch('huggingface_hub.hf_api.HfApi.model_info', return_value=mock_model_info.return_value) - - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=HOSTED_INFERENCE_API_VALIDATE_CREDENTIAL - ) - -@patch('huggingface_hub.hf_api.ModelInfo') -def test_hosted_inference_api_is_credentials_valid_or_raise_invalid(mock_model_info): - mock_model_info.return_value = MagicMock(pipeline_tag='text2text-generation') - - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={} - ) - - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={ - 'huggingfacehub_api_type': 'hosted_inference_api', - }) - - -def test_inference_endpoints_is_credentials_valid_or_raise_valid(mocker): - mocker.patch('huggingface_hub.hf_api.HfApi.whoami', return_value=None) - mocker.patch('core.third_party.langchain.llms.huggingface_endpoint_llm.HuggingFaceEndpointLLM._call', return_value="abc") - - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=INFERENCE_ENDPOINTS_VALIDATE_CREDENTIAL - ) - - -def test_inference_endpoints_is_credentials_valid_or_raise_invalid(mocker): - mocker.patch('huggingface_hub.hf_api.HfApi.whoami', return_value=None) - mocker.patch('core.third_party.langchain.llms.huggingface_endpoint_llm.HuggingFaceEndpointLLM._call', return_value="abc") - - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={} - ) - - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={ - 'huggingfacehub_api_type': 'inference_endpoints', - 'huggingfacehub_endpoint_url': 'valid_url' - }) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_model_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_model_credentials( - tenant_id='tenant_id', - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=INFERENCE_ENDPOINTS_VALIDATE_CREDENTIAL.copy() - ) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['huggingfacehub_api_token'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_custom(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = INFERENCE_ENDPOINTS_VALIDATE_CREDENTIAL.copy() - encrypted_credential['huggingfacehub_api_token'] = 'encrypted_' + encrypted_credential['huggingfacehub_api_token'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION - ) - assert result['huggingfacehub_api_token'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_obfuscated(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = INFERENCE_ENDPOINTS_VALIDATE_CREDENTIAL.copy() - encrypted_credential['huggingfacehub_api_token'] = 'encrypted_' + encrypted_credential['huggingfacehub_api_token'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - obfuscated=True - ) - middle_token = result['huggingfacehub_api_token'][6:-2] - assert len(middle_token) == max(len(INFERENCE_ENDPOINTS_VALIDATE_CREDENTIAL['huggingfacehub_api_token']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_jina_provider.py b/api/tests/unit_tests/model_providers/test_jina_provider.py deleted file mode 100644 index 539fa4929..000000000 --- a/api/tests/unit_tests/model_providers/test_jina_provider.py +++ /dev/null @@ -1,88 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.jina_provider import JinaProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'jina' -MODEL_PROVIDER_CLASS = JinaProvider -VALIDATE_CREDENTIAL = { - 'api_key': 'valid_key' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.embeddings.jina_embedding.JinaEmbeddings.embed_query', - return_value=[1, 2]) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['api_key'] = 'invalid_key' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['api_key'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['api_key'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['api_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['api_key']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_localai_provider.py b/api/tests/unit_tests/model_providers/test_localai_provider.py deleted file mode 100644 index 5ca54df08..000000000 --- a/api/tests/unit_tests/model_providers/test_localai_provider.py +++ /dev/null @@ -1,116 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.localai_provider import LocalAIProvider -from models.provider import ProviderType, Provider, ProviderModel - -PROVIDER_NAME = 'localai' -MODEL_PROVIDER_CLASS = LocalAIProvider -VALIDATE_CREDENTIAL = { - 'server_url': 'http://127.0.0.1:8080/' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_credentials_valid_or_raise_valid(mocker): - mocker.patch('langchain.embeddings.localai.LocalAIEmbeddings.embed_query', - return_value="abc") - - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='username/test_model_name', - model_type=ModelType.EMBEDDINGS, - credentials=VALIDATE_CREDENTIAL.copy() - ) - - -def test_is_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if server_url is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.EMBEDDINGS, - credentials={} - ) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_model_credentials(mock_encrypt, mocker): - server_url = 'http://127.0.0.1:8080/' - - result = MODEL_PROVIDER_CLASS.encrypt_model_credentials( - tenant_id='tenant_id', - model_name='test_model_name', - model_type=ModelType.EMBEDDINGS, - credentials=VALIDATE_CREDENTIAL.copy() - ) - mock_encrypt.assert_called_with('tenant_id', server_url) - assert result['server_url'] == f'encrypted_{server_url}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_custom(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['server_url'] = 'encrypted_' + encrypted_credential['server_url'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.EMBEDDINGS - ) - assert result['server_url'] == 'http://127.0.0.1:8080/' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_obfuscated(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['server_url'] = 'encrypted_' + encrypted_credential['server_url'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.EMBEDDINGS, - obfuscated=True - ) - middle_token = result['server_url'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['server_url']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_minimax_provider.py b/api/tests/unit_tests/model_providers/test_minimax_provider.py deleted file mode 100644 index fa98142e8..000000000 --- a/api/tests/unit_tests/model_providers/test_minimax_provider.py +++ /dev/null @@ -1,91 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from langchain.schema import ChatResult, ChatGeneration, AIMessage - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.minimax_provider import MinimaxProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'minimax' -MODEL_PROVIDER_CLASS = MinimaxProvider -VALIDATE_CREDENTIAL = { - 'minimax_group_id': 'fake-group-id', - 'minimax_api_key': 'valid_key' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.minimax_llm.MinimaxChatLLM._generate', - return_value=ChatResult(generations=[ChatGeneration(message=AIMessage(content='abc'))])) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['minimax_api_key'] = 'invalid_key' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['minimax_api_key'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['minimax_api_key'] = 'encrypted_' + encrypted_credential['minimax_api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['minimax_api_key'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['minimax_api_key'] = 'encrypted_' + encrypted_credential['minimax_api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['minimax_api_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['minimax_api_key']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_openai_provider.py b/api/tests/unit_tests/model_providers/test_openai_provider.py deleted file mode 100644 index 3e2f717ee..000000000 --- a/api/tests/unit_tests/model_providers/test_openai_provider.py +++ /dev/null @@ -1,126 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from openai.error import AuthenticationError - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.openai_provider import OpenAIProvider -from models.provider import ProviderType, Provider - -PROVIDER_NAME = 'openai' -MODEL_PROVIDER_CLASS = OpenAIProvider -VALIDATE_CREDENTIAL_KEY = 'openai_api_key' - - -def moderation_side_effect(*args, **kwargs): - if kwargs['api_key'] == 'valid_key': - mock_instance = MagicMock() - mock_instance.request = MagicMock() - return mock_instance, {} - else: - raise AuthenticationError('Invalid credentials') - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -@patch('openai.ChatCompletion.create', side_effect=moderation_side_effect) -def test_is_provider_credentials_valid_or_raise_valid(mock_create): - # assert True if api_key is valid - credentials = {VALIDATE_CREDENTIAL_KEY: 'valid_key'} - assert MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credentials) is None - - -@patch('openai.ChatCompletion.create', side_effect=moderation_side_effect) -def test_is_provider_credentials_valid_or_raise_invalid(mock_create): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({VALIDATE_CREDENTIAL_KEY: 'invalid_key'}) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', {VALIDATE_CREDENTIAL_KEY: api_key}) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result[VALIDATE_CREDENTIAL_KEY] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({VALIDATE_CREDENTIAL_KEY: 'encrypted_valid_key'}), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result[VALIDATE_CREDENTIAL_KEY] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom_str(mock_decrypt): - """ - Only the OpenAI provider needs to be compatible with the previous case where the encrypted_config was stored as a plain string. - - :param mock_decrypt: - :return: - """ - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config='encrypted_valid_key', - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result[VALIDATE_CREDENTIAL_KEY] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - openai_api_key = 'valid_key' - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps({VALIDATE_CREDENTIAL_KEY: f'encrypted_{openai_api_key}'}), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result[VALIDATE_CREDENTIAL_KEY][6:-2] - assert len(middle_token) == max(len(openai_api_key) - 8, 0) - assert all(char == '*' for char in middle_token) - - -@patch('core.model_providers.providers.hosted.hosted_model_providers.openai') -def test_get_credentials_hosted(mock_hosted): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.SYSTEM.value, - encrypted_config='', - is_valid=True - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - mock_hosted.api_key = 'hosted_key' - result = model_provider.get_provider_credentials() - assert result[VALIDATE_CREDENTIAL_KEY] == 'hosted_key' diff --git a/api/tests/unit_tests/model_providers/test_openllm_provider.py b/api/tests/unit_tests/model_providers/test_openllm_provider.py deleted file mode 100644 index bd00d2d86..000000000 --- a/api/tests/unit_tests/model_providers/test_openllm_provider.py +++ /dev/null @@ -1,122 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.openllm_provider import OpenLLMProvider -from models.provider import ProviderType, Provider, ProviderModel - -PROVIDER_NAME = 'openllm' -MODEL_PROVIDER_CLASS = OpenLLMProvider -VALIDATE_CREDENTIAL = { - 'server_url': 'http://127.0.0.1:3333/' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.openllm.OpenLLM._call', - return_value="abc") - - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='username/test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL.copy() - ) - - -def test_is_credentials_valid_or_raise_invalid(mocker): - # raise CredentialsValidateFailedError if credential is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={} - ) - - # raise CredentialsValidateFailedError if credential is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={'server_url': 'invalid'}) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_model_credentials(mock_encrypt): - api_key = 'http://127.0.0.1:3333/' - result = MODEL_PROVIDER_CLASS.encrypt_model_credentials( - tenant_id='tenant_id', - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL.copy() - ) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['server_url'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_custom(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['server_url'] = 'encrypted_' + encrypted_credential['server_url'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION - ) - assert result['server_url'] == 'http://127.0.0.1:3333/' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_obfuscated(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['server_url'] = 'encrypted_' + encrypted_credential['server_url'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - obfuscated=True - ) - middle_token = result['server_url'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['server_url']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_replicate_provider.py b/api/tests/unit_tests/model_providers/test_replicate_provider.py deleted file mode 100644 index 69f96368e..000000000 --- a/api/tests/unit_tests/model_providers/test_replicate_provider.py +++ /dev/null @@ -1,142 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.replicate_provider import ReplicateProvider -from models.provider import ProviderType, Provider, ProviderModel - -PROVIDER_NAME = 'replicate' -MODEL_PROVIDER_CLASS = ReplicateProvider -VALIDATE_CREDENTIAL = { - 'model_version': 'fake-version', - 'replicate_api_token': 'valid_key' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def version_effect(id: str): - mock_version = MagicMock() - mock_version.openapi_schema = { - 'components': { - 'schemas': { - 'Output': { - 'items': { - 'type': 'string' - } - } - } - } - } - - return mock_version - -@patch('replicate.version.VersionCollection.get', side_effect=version_effect) -def test_is_credentials_valid_or_raise_valid(mocker): - mock_query = MagicMock() - mock_query.return_value = None - - mocker.patch('replicate.model.ModelCollection.get', return_value=mock_query) - - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='username/test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL.copy() - ) - - -def test_is_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if replicate_api_token is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={} - ) - - # raise CredentialsValidateFailedError if replicate_api_token is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={'replicate_api_token': 'invalid_key'}) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_model_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_model_credentials( - tenant_id='tenant_id', - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL.copy() - ) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['replicate_api_token'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_custom(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['replicate_api_token'] = 'encrypted_' + encrypted_credential['replicate_api_token'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION - ) - assert result['replicate_api_token'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_obfuscated(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['replicate_api_token'] = 'encrypted_' + encrypted_credential['replicate_api_token'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - obfuscated=True - ) - middle_token = result['replicate_api_token'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['replicate_api_token']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_spark_provider.py b/api/tests/unit_tests/model_providers/test_spark_provider.py deleted file mode 100644 index c9e9c5832..000000000 --- a/api/tests/unit_tests/model_providers/test_spark_provider.py +++ /dev/null @@ -1,97 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from langchain.schema import LLMResult, Generation, AIMessage, ChatResult, ChatGeneration - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.spark_provider import SparkProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'spark' -MODEL_PROVIDER_CLASS = SparkProvider -VALIDATE_CREDENTIAL = { - 'app_id': 'valid_app_id', - 'api_key': 'valid_key', - 'api_secret': 'valid_secret' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.spark.ChatSpark._generate', - return_value=ChatResult(generations=[ChatGeneration(message=AIMessage(content="abc"))])) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - del credential['api_key'] - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - assert result['api_key'] == f'encrypted_{VALIDATE_CREDENTIAL["api_key"]}' - assert result['api_secret'] == f'encrypted_{VALIDATE_CREDENTIAL["api_secret"]}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - encrypted_credential['api_secret'] = 'encrypted_' + encrypted_credential['api_secret'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['api_key'] == 'valid_key' - assert result['api_secret'] == 'valid_secret' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - encrypted_credential['api_secret'] = 'encrypted_' + encrypted_credential['api_secret'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['api_key'][6:-2] - middle_secret = result['api_secret'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['api_key']) - 8, 0) - assert len(middle_secret) == max(len(VALIDATE_CREDENTIAL['api_secret']) - 8, 0) - assert all(char == '*' for char in middle_token) - assert all(char == '*' for char in middle_secret) diff --git a/api/tests/unit_tests/model_providers/test_tongyi_provider.py b/api/tests/unit_tests/model_providers/test_tongyi_provider.py deleted file mode 100644 index 763f570cf..000000000 --- a/api/tests/unit_tests/model_providers/test_tongyi_provider.py +++ /dev/null @@ -1,90 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from langchain.schema import LLMResult, Generation - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.minimax_provider import MinimaxProvider -from core.model_providers.providers.tongyi_provider import TongyiProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'tongyi' -MODEL_PROVIDER_CLASS = TongyiProvider -VALIDATE_CREDENTIAL = { - 'dashscope_api_key': 'valid_key' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.tongyi_llm.EnhanceTongyi._generate', return_value=LLMResult(generations=[[Generation(text="abc")]])) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['dashscope_api_key'] = 'invalid_key' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - api_key = 'valid_key' - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['dashscope_api_key'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['dashscope_api_key'] = 'encrypted_' + encrypted_credential['dashscope_api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['dashscope_api_key'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['dashscope_api_key'] = 'encrypted_' + encrypted_credential['dashscope_api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['dashscope_api_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['dashscope_api_key']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_wenxin_provider.py b/api/tests/unit_tests/model_providers/test_wenxin_provider.py deleted file mode 100644 index 5a7f8dab1..000000000 --- a/api/tests/unit_tests/model_providers/test_wenxin_provider.py +++ /dev/null @@ -1,96 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from langchain.schema import AIMessage, ChatGeneration, ChatResult - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.wenxin_provider import WenxinProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'wenxin' -MODEL_PROVIDER_CLASS = WenxinProvider -VALIDATE_CREDENTIAL = { - 'api_key': 'valid_key', - 'secret_key': 'valid_secret' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.wenxin.Wenxin._generate', - return_value=ChatResult(generations=[ChatGeneration(message=AIMessage(content='abc'))])) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['api_key'] = 'invalid_key' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - assert result['api_key'] == f'encrypted_{VALIDATE_CREDENTIAL["api_key"]}' - assert result['secret_key'] == f'encrypted_{VALIDATE_CREDENTIAL["secret_key"]}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - encrypted_credential['secret_key'] = 'encrypted_' + encrypted_credential['secret_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['api_key'] == 'valid_key' - assert result['secret_key'] == 'valid_secret' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - encrypted_credential['secret_key'] = 'encrypted_' + encrypted_credential['secret_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['api_key'][6:-2] - middle_secret = result['secret_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['api_key']) - 8, 0) - assert len(middle_secret) == max(len(VALIDATE_CREDENTIAL['secret_key']) - 8, 0) - assert all(char == '*' for char in middle_token) - assert all(char == '*' for char in middle_secret) diff --git a/api/tests/unit_tests/model_providers/test_xinference_provider.py b/api/tests/unit_tests/model_providers/test_xinference_provider.py deleted file mode 100644 index 84a7985ba..000000000 --- a/api/tests/unit_tests/model_providers/test_xinference_provider.py +++ /dev/null @@ -1,130 +0,0 @@ -import pytest -from unittest.mock import patch, MagicMock -import json - -from core.model_providers.models.entity.model_params import ModelType -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.xinference_provider import XinferenceProvider -from models.provider import ProviderType, Provider, ProviderModel - -PROVIDER_NAME = 'xinference' -MODEL_PROVIDER_CLASS = XinferenceProvider -VALIDATE_CREDENTIAL = { - 'model_uid': 'fake-model-uid', - 'server_url': 'http://127.0.0.1:9997/' -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.xinference_llm.XinferenceLLM._call', - return_value="abc") - - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='username/test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL.copy() - ) - - -def test_is_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if replicate_api_token is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={} - ) - - # raise CredentialsValidateFailedError if replicate_api_token is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_model_credentials_valid_or_raise( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials={'server_url': 'invalid'}) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_model_credentials(mock_encrypt, mocker): - api_key = 'http://127.0.0.1:9997/' - - mocker.patch('core.model_providers.providers.xinference_provider.XinferenceProvider._get_extra_credentials', - return_value={ - 'model_handle_type': 'generate', - 'model_format': 'ggmlv3' - }) - - result = MODEL_PROVIDER_CLASS.encrypt_model_credentials( - tenant_id='tenant_id', - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - credentials=VALIDATE_CREDENTIAL.copy() - ) - mock_encrypt.assert_called_with('tenant_id', api_key) - assert result['server_url'] == f'encrypted_{api_key}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_custom(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['server_url'] = 'encrypted_' + encrypted_credential['server_url'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION - ) - assert result['server_url'] == 'http://127.0.0.1:9997/' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_model_credentials_obfuscated(mock_decrypt, mocker): - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=None, - is_valid=True, - ) - - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['server_url'] = 'encrypted_' + encrypted_credential['server_url'] - - mock_query = MagicMock() - mock_query.filter.return_value.first.return_value = ProviderModel( - encrypted_config=json.dumps(encrypted_credential) - ) - mocker.patch('extensions.ext_database.db.session.query', return_value=mock_query) - - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_model_credentials( - model_name='test_model_name', - model_type=ModelType.TEXT_GENERATION, - obfuscated=True - ) - middle_token = result['server_url'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['server_url']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/api/tests/unit_tests/model_providers/test_zhipuai_provider.py b/api/tests/unit_tests/model_providers/test_zhipuai_provider.py deleted file mode 100644 index 7f9a43a3d..000000000 --- a/api/tests/unit_tests/model_providers/test_zhipuai_provider.py +++ /dev/null @@ -1,88 +0,0 @@ -import pytest -from unittest.mock import patch -import json - -from langchain.schema import ChatResult, ChatGeneration, AIMessage - -from core.model_providers.providers.base import CredentialsValidateFailedError -from core.model_providers.providers.zhipuai_provider import ZhipuAIProvider -from models.provider import ProviderType, Provider - - -PROVIDER_NAME = 'zhipuai' -MODEL_PROVIDER_CLASS = ZhipuAIProvider -VALIDATE_CREDENTIAL = { - 'api_key': 'valid_key', -} - - -def encrypt_side_effect(tenant_id, encrypt_key): - return f'encrypted_{encrypt_key}' - - -def decrypt_side_effect(tenant_id, encrypted_key): - return encrypted_key.replace('encrypted_', '') - - -def test_is_provider_credentials_valid_or_raise_valid(mocker): - mocker.patch('core.third_party.langchain.llms.zhipuai_llm.ZhipuAIChatLLM._generate', - return_value=ChatResult(generations=[ChatGeneration(message=AIMessage(content='abc'))])) - - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(VALIDATE_CREDENTIAL) - - -def test_is_provider_credentials_valid_or_raise_invalid(): - # raise CredentialsValidateFailedError if api_key is not in credentials - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise({}) - - credential = VALIDATE_CREDENTIAL.copy() - credential['api_key'] = 'invalid_key' - - # raise CredentialsValidateFailedError if api_key is invalid - with pytest.raises(CredentialsValidateFailedError): - MODEL_PROVIDER_CLASS.is_provider_credentials_valid_or_raise(credential) - - -@patch('core.helper.encrypter.encrypt_token', side_effect=encrypt_side_effect) -def test_encrypt_credentials(mock_encrypt): - result = MODEL_PROVIDER_CLASS.encrypt_provider_credentials('tenant_id', VALIDATE_CREDENTIAL.copy()) - assert result['api_key'] == f'encrypted_{VALIDATE_CREDENTIAL["api_key"]}' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_custom(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials() - assert result['api_key'] == 'valid_key' - - -@patch('core.helper.encrypter.decrypt_token', side_effect=decrypt_side_effect) -def test_get_credentials_obfuscated(mock_decrypt): - encrypted_credential = VALIDATE_CREDENTIAL.copy() - encrypted_credential['api_key'] = 'encrypted_' + encrypted_credential['api_key'] - - provider = Provider( - id='provider_id', - tenant_id='tenant_id', - provider_name=PROVIDER_NAME, - provider_type=ProviderType.CUSTOM.value, - encrypted_config=json.dumps(encrypted_credential), - is_valid=True, - ) - model_provider = MODEL_PROVIDER_CLASS(provider=provider) - result = model_provider.get_provider_credentials(obfuscated=True) - middle_token = result['api_key'][6:-2] - assert len(middle_token) == max(len(VALIDATE_CREDENTIAL['api_key']) - 8, 0) - assert all(char == '*' for char in middle_token) diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index e1ba6cd44..2446f4fa1 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3.1' services: # API service api: - image: langgenius/dify-api:0.3.34 + image: langgenius/dify-api:0.4.0 restart: always environment: # Startup mode, 'api' starts the API server. @@ -128,7 +128,7 @@ services: # worker service # The Celery worker for processing the queue. worker: - image: langgenius/dify-api:0.3.34 + image: langgenius/dify-api:0.4.0 restart: always environment: # Startup mode, 'worker' starts the Celery worker for processing the queue. @@ -196,7 +196,7 @@ services: # Frontend web application. web: - image: langgenius/dify-web:0.3.34 + image: langgenius/dify-web:0.4.0 restart: always environment: EDITION: SELF_HOSTED diff --git a/web/app/components/app/annotation/mock-data.ts b/web/app/components/app/annotation/mock-data.ts new file mode 100644 index 000000000..a944381d0 --- /dev/null +++ b/web/app/components/app/annotation/mock-data.ts @@ -0,0 +1,265 @@ +import type { AnnotationItem, HitHistoryItem } from './type' + +const list: AnnotationItem[] = [ + // create some mock data + { + id: '1', + question: 'What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?', + answer: 'What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?', + created_at: '2020-01-01T00:00:00Z', + hit_count: 1, + }, + { + id: '2', + question: 'What is the capital of Canada?', + answer: 'Ottawa', + created_at: '2020-01-02T00:00:00Z', + hit_count: 2, + }, + { + id: '3', + question: 'What is the capital of Mexico?', + answer: 'Mexico City', + created_at: '2020-01-03T00:00:00Z', + hit_count: 3, + }, + { + id: '4', + question: 'What is the capital of Brazil?', + answer: 'Brasilia', + created_at: '2020-01-04T00:00:00Z', + hit_count: 4, + }, + { + id: '5', + question: 'What is the capital of Argentina?', + answer: 'Buenos Aires', + created_at: '2020-01-05T00:00:00Z', + hit_count: 5, + }, + { + id: '6', + question: 'What is the capital of Chile?', + answer: 'Santiago', + created_at: '2020-01-06T00:00:00Z', + hit_count: 6, + }, + { + id: '7', + question: 'What is the capital of Peru?', + answer: 'Lima', + created_at: '2020-01-07T00:00:00Z', + hit_count: 7, + }, + { + id: '8', + question: 'What is the capital of Ecuador?', + answer: 'Quito', + created_at: '2020-01-08T00:00:00Z', + hit_count: 8, + }, + { + id: '9', + question: 'What is the capital of Colombia?', + answer: 'Bogota', + created_at: '2020-01-09T00:00:00Z', + hit_count: 9, + }, +] + +export const hitHistoryList: HitHistoryItem[] = [ + // create some mock data. source can only be: API/Webapp/Explore/Debug + { + id: '1', + question: 'What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?What is the capital of the United States?', + source: 'API', + score: 0.9, + created_at: '2020-01-01T00:00:00Z', + }, + { + id: '2', + question: 'What is the capital of Canada?', + source: 'Webapp', + score: 0.8, + created_at: '2020-01-02T00:00:00Z', + }, + { + id: '3', + question: 'What is the capital of Mexico?', + source: 'Explore', + score: 0.7, + created_at: '2020-01-03T00:00:00Z', + }, + { + id: '4', + question: 'What is the capital of Brazil?', + source: 'Debug', + score: 0.6, + created_at: '2020-01-04T00:00:00Z', + }, + { + id: '5', + question: 'What is the capital of Argentina?', + source: 'API', + score: 0.5, + created_at: '2020-01-05T00:00:00Z', + }, + { + id: '6', + question: 'What is the capital of Chile?', + source: 'Webapp', + score: 0.4, + created_at: '2020-01-06T00:00:00Z', + }, + { + id: '7', + question: 'What is the capital of Peru?', + source: 'Explore', + score: 0.3, + created_at: '2020-01-07T00:00:00Z', + }, + { + id: '8', + question: 'What is the capital of Ecuador?', + source: 'Debug', + score: 0.2, + created_at: '2020-01-08T00:00:00Z', + }, + { + id: '9', + question: 'What is the capital of Colombia?', + source: 'API', + score: 0.1, + created_at: '2020-01-09T00:00:00Z', + }, + // make more mock data + { + id: '10', + question: 'What is the capital of the United States?', + source: 'API', + score: 0.9, + created_at: '2020-01-01T00:00:00Z', + }, + { + id: '11', + question: 'What is the capital of Canada?', + source: 'Webapp', + score: 0.8, + created_at: '2020-01-02T00:00:00Z', + }, + { + id: '12', + question: 'What is the capital of Mexico?', + source: 'Explore', + score: 0.7, + created_at: '2020-01-03T00:00:00Z', + }, + { + id: '13', + question: 'What is the capital of Brazil?', + source: 'Debug', + score: 0.6, + created_at: '2020-01-04T00:00:00Z', + }, + { + id: '14', + question: 'What is the capital of Argentina?', + source: 'API', + score: 0.5, + created_at: '2020-01-05T00:00:00Z', + }, + { + id: '15', + question: 'What is the capital of Chile?', + source: 'Webapp', + score: 0.4, + created_at: '2020-01-06T00:00:00Z', + }, + { + id: '16', + question: 'What is the capital of Peru?', + source: 'Explore', + score: 0.3, + created_at: '2020-01-07T00:00:00Z', + }, + { + id: '17', + question: 'What is the capital of Ecuador?', + source: 'Debug', + score: 0.2, + created_at: '2020-01-08T00:00:00Z', + }, + { + id: '18', + question: 'What is the capital of Colombia?', + source: 'API', + score: 0.1, + created_at: '2020-01-09T00:00:00Z', + }, + // make more mock data + { + id: '19', + question: 'What is the capital of the United States?', + source: 'API', + score: 0.9, + created_at: '2020-01-01T00:00:00Z', + }, + { + id: '20', + question: 'What is the capital of Canada?', + source: 'Webapp', + score: 0.8, + created_at: '2020-01-02T00:00:00Z', + }, + { + id: '21', + question: 'What is the capital of Mexico?', + source: 'Explore', + score: 0.7, + created_at: '2020-01-03T00:00:00Z', + }, + { + id: '22', + question: 'What is the capital of Brazil?', + source: 'Debug', + score: 0.6, + created_at: '2020-01-04T00:00:00Z', + }, + { + id: '23', + question: 'What is the capital of Argentina?', + source: 'API', + score: 0.5, + created_at: '2020-01-05T00:00:00Z', + }, + { + id: '24', + question: 'What is the capital of Chile?', + source: 'Webapp', + score: 0.4, + created_at: '2020-01-06T00:00:00Z', + }, + { + id: '25', + question: 'What is the capital of Peru?', + source: 'Explore', + score: 0.3, + created_at: '2020-01-07T00:00:00Z', + }, + { + id: '26', + question: 'What is the capital of Ecuador?', + source: 'Debug', + score: 0.2, + created_at: '2020-01-08T00:00:00Z', + }, + { + id: '27', + question: 'What is the capital of Colombia?', + source: 'API', + score: 0.1, + created_at: '2020-01-09T00:00:00Z', + }, +] + +export default list diff --git a/web/app/components/app/chat/type.ts b/web/app/components/app/chat/type.ts index 972b9424a..fe34aced3 100644 --- a/web/app/components/app/chat/type.ts +++ b/web/app/components/app/chat/type.ts @@ -72,7 +72,16 @@ export type IChatItem = { export type MessageEnd = { id: string - retriever_resources?: CitationItem[] + metadata: { + retriever_resources?: CitationItem[] + annotation_reply: { + id: string + account: { + id: string + name: string + } + } + } } export type MessageReplace = { diff --git a/web/app/components/app/configuration/config-model/index.tsx b/web/app/components/app/configuration/config-model/index.tsx index 549bc704a..cf3e8aa85 100644 --- a/web/app/components/app/configuration/config-model/index.tsx +++ b/web/app/components/app/configuration/config-model/index.tsx @@ -7,9 +7,6 @@ import { useBoolean, useClickAway, useGetState } from 'ahooks' import { InformationCircleIcon } from '@heroicons/react/24/outline' import produce from 'immer' import ParamItem from './param-item' -import ModelIcon from './model-icon' -import ModelName from './model-name' -import ModelModeTypeLabel from './model-mode-type-label' import { SlidersH } from '@/app/components/base/icons/src/vender/line/mediaAndDevices' import Radio from '@/app/components/base/radio' import Panel from '@/app/components/base/panel' @@ -24,17 +21,19 @@ import { Target04 } from '@/app/components/base/icons/src/vender/solid/general' import { Sliders02 } from '@/app/components/base/icons/src/vender/solid/mediaAndDevices' import { fetchModelParams } from '@/service/debug' import Loading from '@/app/components/base/loading' -import ModelSelector from '@/app/components/header/account-setting/model-page/model-selector' -import { ModelType, ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' -import { useProviderContext } from '@/context/provider-context' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import type { ModelModeType } from '@/types/app' +import ModelIcon from '@/app/components/header/account-setting/model-provider-page/model-icon' +import ModelName from '@/app/components/header/account-setting/model-provider-page/model-name' +import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' +import { useTextGenerationCurrentProviderAndModelAndModelList } from '@/app/components/header/account-setting/model-provider-page/hooks' + export type IConfigModelProps = { isAdvancedMode: boolean mode: string modelId: string - provider: ProviderEnum - setModel: (model: { id: string; provider: ProviderEnum; mode: ModelModeType; features: string[] }) => void + provider: string + setModel: (model: { id: string; provider: string; mode: ModelModeType; features: string[] }) => void completionParams: CompletionParams onCompletionParamsChange: (newParams: CompletionParams) => void disabled: boolean @@ -50,11 +49,16 @@ const ConfigModel: FC = ({ disabled, }) => { const { t } = useTranslation() - const { textGenerationModelList } = useProviderContext() const [isShowConfig, { setFalse: hideConfig, toggle: toogleShowConfig }] = useBoolean(false) const [maxTokenSettingTipVisible, setMaxTokenSettingTipVisible] = useState(false) const configContentRef = React.useRef(null) - const currModel = textGenerationModelList.find(item => item.model_name === modelId) + const { + currentProvider, + currentModel: currModel, + textGenerationModelList, + } = useTextGenerationCurrentProviderAndModelAndModelList( + { provider, model: modelId }, + ) const media = useBreakpoints() const isMobile = media === MediaType.mobile @@ -81,7 +85,7 @@ const ConfigModel: FC = ({ setAllParams(newAllParams) } })() - }, [provider, modelId]) + }, [provider, modelId, allParams, setAllParams]) useClickAway(() => { hideConfig() @@ -89,7 +93,7 @@ const ConfigModel: FC = ({ const selectedModel = { name: modelId } // options.find(option => option.id === modelId) - const ensureModelParamLoaded = (provider: ProviderEnum, modelId: string) => { + const ensureModelParamLoaded = (provider: string, modelId: string) => { return new Promise((resolve) => { if (getAllParams()[provider]?.[modelId]) { resolve() @@ -126,13 +130,13 @@ const ConfigModel: FC = ({ return adjustedValue } - const handleSelectModel = ({ id, provider: nextProvider, mode, features }: { id: string; provider: ProviderEnum; mode: ModelModeType; features: string[] }) => { + const handleSelectModel = ({ id, provider: nextProvider, mode, features }: { id: string; provider: string; mode: ModelModeType; features: string[] }) => { return async () => { const prevParamsRule = getAllParams()[provider]?.[modelId] setModel({ id, - provider: nextProvider || ProviderEnum.openai, + provider: nextProvider || 'openai', mode, features, }) @@ -269,26 +273,34 @@ const ConfigModel: FC = ({ const max = currParams.max_tokens.max const isSupportMaxToken = currParams.max_tokens.enabled - if (isSupportMaxToken && currModel?.model_provider.provider_name !== ProviderEnum.anthropic && completionParams.max_tokens > max * 2 / 3) + if (isSupportMaxToken && currentProvider?.provider !== 'anthropic' && completionParams.max_tokens > max * 2 / 3) setMaxTokenSettingTipVisible(true) else setMaxTokenSettingTipVisible(false) - }, [currParams, completionParams.max_tokens, setMaxTokenSettingTipVisible]) + }, [currParams, completionParams.max_tokens, setMaxTokenSettingTipVisible, currentProvider]) return (
!disabled && toogleShowConfig()} > - -
- -
- {isAdvancedMode && } + { + currentProvider && ( + + ) + } + { + currModel && ( + + ) + } {disabled ? : }
{isShowConfig && ( @@ -312,21 +324,16 @@ const ConfigModel: FC = ({
{t('appDebug.modelConfig.model')}
{ + defaultModel={{ model: modelId, provider }} + modelList={textGenerationModelList} + onSelect={({ provider, model }) => { + const targetProvider = textGenerationModelList.find(modelItem => modelItem.provider === provider) + const targetModelItem = targetProvider?.models.find(modelItem => modelItem.model === model) handleSelectModel({ - id: model.model_name, - provider: model.model_provider.provider_name as ProviderEnum, - mode: model.model_mode, - features: model.features, + id: model, + provider, + mode: targetModelItem?.model_properties.mode as ModelModeType, + features: targetModelItem?.features || [], })() }} /> @@ -336,7 +343,7 @@ const ConfigModel: FC = ({ )} {/* Tone type */} - {[ProviderEnum.openai, ProviderEnum.azure_openai].includes(provider) && ( + {['openai', 'azure_openai'].includes(provider) && (
{t('appDebug.modelConfig.setTone')}
diff --git a/web/app/components/app/configuration/config-model/model-icon.tsx b/web/app/components/app/configuration/config-model/model-icon.tsx deleted file mode 100644 index 108ceca59..000000000 --- a/web/app/components/app/configuration/config-model/model-icon.tsx +++ /dev/null @@ -1,32 +0,0 @@ -'use client' -import type { FC } from 'react' -import React from 'react' -import cn from 'classnames' -import { - OpenaiGreen, - OpenaiViolet, -} from '@/app/components/base/icons/src/public/llm' -import { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' -import ProviderConfig from '@/app/components/header/account-setting/model-page/configs' - -export type IModelIconProps = { - modelId: string - providerName: ProviderEnum - className?: string -} - -const ModelIcon: FC = ({ modelId, providerName, className }) => { - let Icon = - if (providerName === ProviderEnum.openai) - Icon = modelId.includes('gpt-4') ? : - else - Icon = ProviderConfig[providerName]?.selector.icon - - return ( -
- {Icon} -
- ) -} - -export default React.memo(ModelIcon) diff --git a/web/app/components/app/configuration/config/index.tsx b/web/app/components/app/configuration/config/index.tsx index 0e75d7b11..b0d1e236a 100644 --- a/web/app/components/app/configuration/config/index.tsx +++ b/web/app/components/app/configuration/config/index.tsx @@ -21,10 +21,10 @@ import ConfigPrompt from '@/app/components/app/configuration/config-prompt' import ConfigVar from '@/app/components/app/configuration/config-var' import type { CitationConfig, ModelConfig, ModerationConfig, MoreLikeThisConfig, PromptVariable, SpeechToTextConfig, SuggestedQuestionsAfterAnswerConfig } from '@/models/debug' import { AppType, ModelModeType } from '@/types/app' -import { useProviderContext } from '@/context/provider-context' import { useModalContext } from '@/context/modal-context' import ConfigParamModal from '@/app/components/app/configuration/toolbox/annotation/config-param-modal' import AnnotationFullModal from '@/app/components/billing/annotation-full/modal' +import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' const Config: FC = () => { const { @@ -55,7 +55,7 @@ const Config: FC = () => { setModerationConfig, } = useContext(ConfigContext) const isChatApp = mode === AppType.chat - const { speech2textDefaultModel } = useProviderContext() + const { data: speech2textDefaultModel } = useDefaultModel(4) const { setShowModerationSettingModal } = useModalContext() const promptTemplate = modelConfig.configs.prompt_template diff --git a/web/app/components/app/configuration/dataset-config/params-config/index.tsx b/web/app/components/app/configuration/dataset-config/params-config/index.tsx index f9954c2e6..dcf22134c 100644 --- a/web/app/components/app/configuration/dataset-config/params-config/index.tsx +++ b/web/app/components/app/configuration/dataset-config/params-config/index.tsx @@ -12,15 +12,14 @@ import Modal from '@/app/components/base/modal' import Button from '@/app/components/base/button' import RadioCard from '@/app/components/base/radio-card/simple' import { RETRIEVE_TYPE } from '@/types/app' -import ModelSelector from '@/app/components/header/account-setting/model-page/model-selector' -import { useProviderContext } from '@/context/provider-context' -import { ModelType } from '@/app/components/header/account-setting/model-page/declarations' import Toast from '@/app/components/base/toast' import { DATASET_DEFAULT } from '@/config' import { MultiPathRetrieval, NTo1Retrieval, } from '@/app/components/base/icons/src/public/common' +import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' +import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' const ParamsConfig: FC = () => { const { t } = useTranslation() @@ -38,11 +37,11 @@ const ParamsConfig: FC = () => { retrieval_model: value, }) } - const { - rerankDefaultModel, - isRerankDefaultModelVaild, - } = useProviderContext() + modelList: rerankModelList, + defaultModel: rerankDefaultModel, + currentModel: isRerankDefaultModelVaild, + } = useModelListAndDefaultModelAndCurrentProviderAndModel(3) const rerankModel = (() => { if (tempDataSetConfigs.reranking_model) { @@ -53,8 +52,8 @@ const ParamsConfig: FC = () => { } else if (rerankDefaultModel) { return { - provider_name: rerankDefaultModel.model_provider.provider_name, - model_name: rerankDefaultModel.model_name, + provider_name: rerankDefaultModel.provider.provider, + model_name: rerankDefaultModel.model, } } })() @@ -104,8 +103,8 @@ const ParamsConfig: FC = () => { const config = { ...tempDataSetConfigs } if (config.retrieval_model === RETRIEVE_TYPE.multiWay && !config.reranking_model) { config.reranking_model = { - reranking_provider_name: rerankDefaultModel?.model_provider.provider_name, - reranking_model_name: rerankDefaultModel?.model_name, + reranking_provider_name: rerankDefaultModel?.provider, + reranking_model_name: rerankDefaultModel?.model, } as any } setDatasetConfigs(config) @@ -163,18 +162,17 @@ const ParamsConfig: FC = () => {
{t('common.modelProvider.rerankModel.key')}
{ + defaultModel={rerankModel && { provider: rerankModel?.provider_name, model: rerankModel?.model_name }} + onSelect={(v) => { setTempDataSetConfigs({ ...tempDataSetConfigs, reranking_model: { - reranking_provider_name: v.model_provider.provider_name, - reranking_model_name: v.model_name, + reranking_provider_name: v.provider, + reranking_model_name: v.model, }, }) }} + modelList={rerankModelList} />
diff --git a/web/app/components/app/configuration/dataset-config/settings-modal/index.tsx b/web/app/components/app/configuration/dataset-config/settings-modal/index.tsx index 1c6d25c4a..d94cc632c 100644 --- a/web/app/components/app/configuration/dataset-config/settings-modal/index.tsx +++ b/web/app/components/app/configuration/dataset-config/settings-modal/index.tsx @@ -6,9 +6,6 @@ import cn from 'classnames' import { BookOpenIcon } from '@heroicons/react/24/outline' import IndexMethodRadio from '@/app/components/datasets/settings/index-method-radio' import Button from '@/app/components/base/button' -import ModelSelector from '@/app/components/header/account-setting/model-page/model-selector' -import type { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' -import { ModelType } from '@/app/components/header/account-setting/model-page/declarations' import type { DataSet } from '@/models/datasets' import { useToastContext } from '@/app/components/base/toast' import { updateDatasetSetting } from '@/service/datasets' @@ -17,10 +14,14 @@ import { XClose } from '@/app/components/base/icons/src/vender/line/general' import type { RetrievalConfig } from '@/types/app' import RetrievalMethodConfig from '@/app/components/datasets/common/retrieval-method-config' import EconomicalRetrievalMethodConfig from '@/app/components/datasets/common/economical-retrieval-method-config' -import { useProviderContext } from '@/context/provider-context' import { ensureRerankModelSelected, isReRankModelSelected } from '@/app/components/datasets/common/check-rerank-model' import { AlertTriangle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback' import PermissionsRadio from '@/app/components/datasets/settings/permissions-radio' +import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' +import { + useModelList, + useModelListAndDefaultModelAndCurrentProviderAndModel, +} from '@/app/components/header/account-setting/model-provider-page/hooks' type SettingsModalProps = { currentDataset: DataSet @@ -41,6 +42,12 @@ const SettingsModal: FC = ({ onCancel, onSave, }) => { + const { data: embeddingsModelList } = useModelList(2) + const { + modelList: rerankModelList, + defaultModel: rerankDefaultModel, + currentModel: isRerankDefaultModelVaild, + } = useModelListAndDefaultModelAndCurrentProviderAndModel(3) const { t } = useTranslation() const { notify } = useToastContext() const ref = useRef(null) @@ -51,12 +58,6 @@ const SettingsModal: FC = ({ const [indexMethod, setIndexMethod] = useState(currentDataset.indexing_technique) const [retrievalConfig, setRetrievalConfig] = useState(localeCurrentDataset?.retrieval_model_dict as RetrievalConfig) - const { - rerankDefaultModel, - isRerankDefaultModelVaild, - rerankModelList, - } = useProviderContext() - const handleValueChange = (type: string, value: string) => { setLocaleCurrentDataset({ ...localeCurrentDataset, [type]: value }) } @@ -73,7 +74,7 @@ const SettingsModal: FC = ({ if ( !isReRankModelSelected({ rerankDefaultModel, - isRerankDefaultModelVaild, + isRerankDefaultModelVaild: !!isRerankDefaultModelVaild, rerankModelList, retrievalConfig, indexMethod, @@ -204,12 +205,11 @@ const SettingsModal: FC = ({
{}} + modelList={embeddingsModelList} />
diff --git a/web/app/components/app/configuration/debug/index.tsx b/web/app/components/app/configuration/debug/index.tsx index aa6224982..e2a3455ca 100644 --- a/web/app/components/app/configuration/debug/index.tsx +++ b/web/app/components/app/configuration/debug/index.tsx @@ -24,10 +24,11 @@ import type { ModelConfig as BackendModelConfig, VisionFile } from '@/types/app' import { promptVariablesToUserInputsForm } from '@/utils/model-config' import TextGeneration from '@/app/components/app/text-generate/item' import { IS_CE_EDITION } from '@/config' -import { useProviderContext } from '@/context/provider-context' import type { Inputs } from '@/models/debug' import { fetchFileUploadConfig } from '@/service/common' import type { Annotation as AnnotationType } from '@/models/log' +import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' + type IDebug = { hasSetAPIKEY: boolean onSetting: () => void @@ -69,7 +70,7 @@ const Debug: FC = ({ visionConfig, annotationConfig, } = useContext(ConfigContext) - const { speech2textDefaultModel } = useProviderContext() + const { data: speech2textDefaultModel } = useDefaultModel(4) const [chatList, setChatList, getChatList] = useGetState([]) const chatListDomRef = useRef(null) const { data: fileUploadConfigResponse } = useSWR({ url: '/files/upload' }, fetchFileUploadConfig) @@ -346,7 +347,27 @@ const Debug: FC = ({ } }, onMessageEnd: (messageEnd) => { - responseItem.citation = messageEnd.retriever_resources + // TODO + if (messageEnd.metadata?.annotation_reply) { + responseItem.id = messageEnd.id + responseItem.annotation = ({ + id: messageEnd.metadata.annotation_reply.id, + authorName: messageEnd.metadata.annotation_reply.account.name, + } as AnnotationType) + const newListWithAnswer = produce( + getChatList().filter(item => item.id !== responseItem.id && item.id !== placeholderAnswerId), + (draft) => { + if (!draft.find(item => item.id === questionId)) + draft.push({ ...questionItem }) + + draft.push({ + ...responseItem, + }) + }) + setChatList(newListWithAnswer) + return + } + responseItem.citation = messageEnd.metadata?.retriever_resources || [] const newListWithAnswer = produce( getChatList().filter(item => item.id !== responseItem.id && item.id !== placeholderAnswerId), @@ -362,6 +383,7 @@ const Debug: FC = ({ responseItem.content = messageReplace.answer }, onAnnotationReply: (annotationReply) => { + // TODO: temp debug responseItem.id = annotationReply.id responseItem.content = annotationReply.answer responseItem.annotation = ({ diff --git a/web/app/components/app/configuration/hooks/use-advanced-prompt-config.ts b/web/app/components/app/configuration/hooks/use-advanced-prompt-config.ts index faf929697..c9106c777 100644 --- a/web/app/components/app/configuration/hooks/use-advanced-prompt-config.ts +++ b/web/app/components/app/configuration/hooks/use-advanced-prompt-config.ts @@ -1,12 +1,13 @@ import { useState } from 'react' import { clone } from 'lodash-es' import produce from 'immer' -import type { ChatPromptConfig, CompletionParams, CompletionPromptConfig, ConversationHistoriesRole, PromptItem } from '@/models/debug' +import type { ChatPromptConfig, CompletionPromptConfig, ConversationHistoriesRole, PromptItem } from '@/models/debug' import { PromptMode } from '@/models/debug' import { AppType, ModelModeType } from '@/types/app' import { DEFAULT_CHAT_PROMPT_CONFIG, DEFAULT_COMPLETION_PROMPT_CONFIG } from '@/config' import { PRE_PROMPT_PLACEHOLDER_TEXT, checkHasContextBlock, checkHasHistoryBlock, checkHasQueryBlock } from '@/app/components/base/prompt-editor/constants' import { fetchPromptTemplate } from '@/service/debug' +import type { FormValue } from '@/app/components/header/account-setting/model-provider-page/declarations' type Param = { appMode: string @@ -16,8 +17,8 @@ type Param = { prePrompt: string onUserChangedPrompt: () => void hasSetDataSet: boolean - completionParams: CompletionParams - setCompletionParams: (params: CompletionParams) => void + completionParams: FormValue + setCompletionParams: (params: FormValue) => void setStop: (stop: string[]) => void } diff --git a/web/app/components/app/configuration/index.tsx b/web/app/components/app/configuration/index.tsx index 083adb333..7b219f992 100644 --- a/web/app/components/app/configuration/index.tsx +++ b/web/app/components/app/configuration/index.tsx @@ -16,7 +16,6 @@ import useAdvancedPromptConfig from './hooks/use-advanced-prompt-config' import EditHistoryModal from './config-prompt/conversation-histroy/edit-modal' import type { AnnotationReplyConfig, - CompletionParams, DatasetConfigs, Inputs, ModelConfig, @@ -29,11 +28,11 @@ import type { ExternalDataTool } from '@/models/common' import type { DataSet } from '@/models/datasets' import type { ModelConfig as BackendModelConfig, VisionSettings } from '@/types/app' import ConfigContext from '@/context/debug-configuration' -import ConfigModel from '@/app/components/app/configuration/config-model' +// import ConfigModel from '@/app/components/app/configuration/config-model' import Config from '@/app/components/app/configuration/config' import Debug from '@/app/components/app/configuration/debug' import Confirm from '@/app/components/base/confirm' -import { ModelFeature, ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' +import { ModelFeatureEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import { ToastContext } from '@/app/components/base/toast' import { fetchAppDetail, updateAppModelConfig } from '@/service/apps' import { promptVariablesToUserInputsForm, userInputsFormToPromptVariables } from '@/utils/model-config' @@ -48,10 +47,13 @@ import I18n from '@/context/i18n' import { useModalContext } from '@/context/modal-context' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import Drawer from '@/app/components/base/drawer' +import ModelParameterModal from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal' +import type { FormValue } from '@/app/components/header/account-setting/model-provider-page/declarations' +import { useTextGenerationCurrentProviderAndModelAndModelList } from '@/app/components/header/account-setting/model-provider-page/hooks' type PublichConfig = { modelConfig: ModelConfig - completionParams: CompletionParams + completionParams: FormValue } const Configuration: FC = () => { @@ -112,16 +114,9 @@ const Configuration: FC = () => { const [externalDataToolsConfig, setExternalDataToolsConfig] = useState([]) const [inputs, setInputs] = useState({}) const [query, setQuery] = useState('') - const [completionParams, doSetCompletionParams] = useState({ - max_tokens: 16, - temperature: 1, // 0-2 - top_p: 1, - presence_penalty: 1, // -2-2 - frequency_penalty: 1, // -2-2 - stop: [], - }) + const [completionParams, doSetCompletionParams] = useState({}) const [tempStop, setTempStop, getTempStop] = useGetState([]) - const setCompletionParams = (value: CompletionParams) => { + const setCompletionParams = (value: FormValue) => { const params = { ...value } // eslint-disable-next-line @typescript-eslint/no-use-before-define @@ -133,7 +128,7 @@ const Configuration: FC = () => { } const [modelConfig, doSetModelConfig] = useState({ - provider: ProviderEnum.openai, + provider: 'openai', model_id: 'gpt-3.5-turbo', mode: ModelModeType.unset, configs: { @@ -223,28 +218,21 @@ const Configuration: FC = () => { }) } - const { textGenerationModelList } = useProviderContext() - const currModel = textGenerationModelList.find(item => item.model_name === modelConfig.model_id) - const hasSetCustomAPIKEY = !!textGenerationModelList?.find(({ model_provider: provider }) => { - if (provider.provider_type === 'system' && provider.quota_type === 'paid') - return true - - if (provider.provider_type === 'custom') - return true - - return false - }) - const isTrailFinished = !hasSetCustomAPIKEY && textGenerationModelList - .filter(({ model_provider: provider }) => provider.quota_type === 'trial') - .every(({ model_provider: provider }) => { - const { quota_used, quota_limit } = provider - return quota_used === quota_limit - }) + const { hasSettedApiKey } = useProviderContext() + const { + currentModel: currModel, + textGenerationModelList, + } = useTextGenerationCurrentProviderAndModelAndModelList( + { + provider: modelConfig.provider, + model: modelConfig.model_id, + }, + ) // Fill old app data missing model mode. useEffect(() => { if (hasFetchedDetail && !modelModeType) { - const mode = textGenerationModelList.find(({ model_name }) => model_name === modelConfig.model_id)?.model_mode + const mode = currModel?.model_properties.mode as (ModelModeType | undefined) if (mode) { const newModelConfig = produce(modelConfig, (draft: ModelConfig) => { draft.mode = mode @@ -252,9 +240,7 @@ const Configuration: FC = () => { setModelConfig(newModelConfig) } } - }, [textGenerationModelList, hasFetchedDetail]) - - const hasSetAPIKEY = hasSetCustomAPIKEY || !isTrailFinished + }, [textGenerationModelList, hasFetchedDetail, modelModeType, currModel, modelConfig]) const [promptMode, doSetPromptMode] = useState(PromptMode.simple) const isAdvancedMode = promptMode === PromptMode.advanced @@ -295,11 +281,11 @@ const Configuration: FC = () => { }) const setModel = async ({ - id: modelId, + modelId, provider, mode: modeMode, features, - }: { id: string; provider: ProviderEnum; mode: ModelModeType; features: string[] }) => { + }: { modelId: string; provider: string; mode: string; features: string[] }) => { if (isAdvancedMode) { const appMode = mode @@ -321,11 +307,11 @@ const Configuration: FC = () => { const newModelConfig = produce(modelConfig, (draft: ModelConfig) => { draft.provider = provider draft.model_id = modelId - draft.mode = modeMode + draft.mode = modeMode as ModelModeType }) setModelConfig(newModelConfig) - const supportVision = features && features.includes(ModelFeature.vision) + const supportVision = features && features.includes(ModelFeatureEnum.vision) // eslint-disable-next-line @typescript-eslint/no-use-before-define setVisionConfig({ // eslint-disable-next-line @typescript-eslint/no-use-before-define @@ -334,7 +320,7 @@ const Configuration: FC = () => { }, true) } - const isShowVisionConfig = !!currModel?.features.includes(ModelFeature.vision) + const isShowVisionConfig = !!currModel?.features?.includes(ModelFeatureEnum.vision) const [visionConfig, doSetVisionConfig] = useState({ enabled: false, number_limits: 2, @@ -566,8 +552,8 @@ const Configuration: FC = () => { return ( {
{/* Model and Parameters */} - { + setModel={setModel as any} + onCompletionParamsChange={(newParams: FormValue) => { setCompletionParams(newParams) }} - disabled={!hasSetAPIKEY} + disabled={!hasSettedApiKey} />
@@ -689,7 +675,7 @@ const Configuration: FC = () => {
{!isMobile &&
setShowAccountSettingModal({ payload: 'provider' })} inputs={inputs} /> @@ -744,7 +730,7 @@ const Configuration: FC = () => { {isMobile && ( setShowAccountSettingModal({ payload: 'provider' })} inputs={inputs} /> diff --git a/web/app/components/app/configuration/toolbox/annotation/config-param-modal.tsx b/web/app/components/app/configuration/toolbox/annotation/config-param-modal.tsx index c273ba03d..c4f449628 100644 --- a/web/app/components/app/configuration/toolbox/annotation/config-param-modal.tsx +++ b/web/app/components/app/configuration/toolbox/annotation/config-param-modal.tsx @@ -6,12 +6,11 @@ import ScoreSlider from '../score-slider' import { Item } from './config-param' import Modal from '@/app/components/base/modal' import Button from '@/app/components/base/button' -import { ModelType } from '@/app/components/header/account-setting/model-page/declarations' -import ModelSelector from '@/app/components/header/account-setting/model-page/model-selector/portal-select' -import { useProviderContext } from '@/context/provider-context' import Toast from '@/app/components/base/toast' import type { AnnotationReplyConfig } from '@/models/debug' import { ANNOTATION_DEFAULT } from '@/config' +import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' +import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' type Props = { appId: string @@ -34,9 +33,10 @@ const ConfigParamModal: FC = ({ }) => { const { t } = useTranslation() const { - embeddingsDefaultModel, - isEmbeddingsDefaultModelValid, - } = useProviderContext() + modelList: embeddingsModelList, + defaultModel: embeddingsDefaultModel, + currentModel: isEmbeddingsDefaultModelValid, + } = useModelListAndDefaultModelAndCurrentProviderAndModel(2) const [annotationConfig, setAnnotationConfig] = useState(oldAnnotationConfig) const [isLoading, setLoading] = useState(false) @@ -47,8 +47,8 @@ const ConfigParamModal: FC = ({ } : (embeddingsDefaultModel ? { - providerName: embeddingsDefaultModel.model_provider.provider_name, - modelName: embeddingsDefaultModel.model_name, + providerName: embeddingsDefaultModel.provider.provider, + modelName: embeddingsDefaultModel.model, } : undefined)) const onHide = () => { @@ -57,7 +57,7 @@ const ConfigParamModal: FC = ({ } const handleSave = async () => { - if (!embeddingModel || !embeddingModel.modelName || (embeddingModel.modelName === embeddingsDefaultModel?.model_name && !isEmbeddingsDefaultModelValid)) { + if (!embeddingModel || !embeddingModel.modelName || (embeddingModel.modelName === embeddingsDefaultModel?.model && !isEmbeddingsDefaultModelValid)) { Toast.notify({ message: t('common.modelProvider.embeddingModel.required'), type: 'error', @@ -106,13 +106,15 @@ const ConfigParamModal: FC = ({ >
{ + defaultModel={embeddingModel && { + provider: embeddingModel.providerName, + model: embeddingModel.modelName, + }} + modelList={embeddingsModelList} + onSelect={(val) => { setEmbeddingModel({ - providerName: val.model_provider.provider_name, - modelName: val.model_name, + providerName: val.provider, + modelName: val.model, }) }} /> diff --git a/web/app/components/app/configuration/toolbox/moderation/moderation-setting-modal.tsx b/web/app/components/app/configuration/toolbox/moderation/moderation-setting-modal.tsx index 072339751..2522bd492 100644 --- a/web/app/components/app/configuration/toolbox/moderation/moderation-setting-modal.tsx +++ b/web/app/components/app/configuration/toolbox/moderation/moderation-setting-modal.tsx @@ -19,6 +19,7 @@ import type { CodeBasedExtensionItem } from '@/models/common' import I18n from '@/context/i18n' import { InfoCircle } from '@/app/components/base/icons/src/vender/line/general' import { useModalContext } from '@/context/modal-context' +import { CustomConfigurationStatusEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' const systemTypes = ['openai_moderation', 'keywords', 'api'] @@ -57,10 +58,11 @@ const ModerationSettingModal: FC = ({ '/code-based-extension?module=moderation', fetchCodeBasedExtensionList, ) - const systemOpenaiProvider = modelProviders?.openai.providers.find(item => item.provider_type === 'system') - const systemOpenaiProviderCanUse = systemOpenaiProvider && (((systemOpenaiProvider as any).quota_limit - (systemOpenaiProvider as any).quota_used) > 0) - const customOpenaiProviders = modelProviders?.openai.providers.filter(item => item.provider_type !== 'system') - const customOpenaiProvidersCanUse = customOpenaiProviders?.some(item => item.is_valid) + const openaiProvider = modelProviders?.data.find(item => item.provider === 'openai') + const systemOpenaiProviderEnabled = openaiProvider?.system_configuration.enabled + const systemOpenaiProviderQuota = systemOpenaiProviderEnabled ? openaiProvider?.system_configuration.quota_configurations.find(item => item.quota_type === openaiProvider.system_configuration.current_quota_type) : undefined + const systemOpenaiProviderCanUse = systemOpenaiProviderQuota?.is_valid + const customOpenaiProvidersCanUse = openaiProvider?.custom_configuration.status === CustomConfigurationStatusEnum.active const openaiProviderConfiged = customOpenaiProvidersCanUse || systemOpenaiProviderCanUse const providers: Provider[] = [ { diff --git a/web/app/components/app/log/list.tsx b/web/app/components/app/log/list.tsx index cb49e240d..a17c431c2 100644 --- a/web/app/components/app/log/list.tsx +++ b/web/app/components/app/log/list.tsx @@ -29,9 +29,9 @@ import Tooltip from '@/app/components/base/tooltip' import { ToastContext } from '@/app/components/base/toast' import { fetchChatConversationDetail, fetchChatMessages, fetchCompletionConversationDetail, updateLogMessageAnnotations, updateLogMessageFeedbacks } from '@/service/log' import { TONE_LIST } from '@/config' -import ModelIcon from '@/app/components/app/configuration/config-model/model-icon' -import ModelName from '@/app/components/app/configuration/config-model/model-name' -import ModelModeTypeLabel from '@/app/components/app/configuration/config-model/model-mode-type-label' +import ModelIcon from '@/app/components/header/account-setting/model-provider-page/model-icon' +import { useTextGenerationCurrentProviderAndModelAndModelList } from '@/app/components/header/account-setting/model-provider-page/hooks' +import ModelName from '@/app/components/header/account-setting/model-provider-page/model-name' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import TextGeneration from '@/app/components/app/text-generate/item' @@ -188,6 +188,12 @@ function DetailPanel { const itemContent = item[Object.keys(item)[0]] return { @@ -224,13 +230,13 @@ function DetailPanel + -
- -
-
{ const isCloud = !IS_CE_EDITION - const { locale } = useContext(I18n) - const { textGenerationModelList } = useProviderContext() + const { hasSettedApiKey } = useProviderContext() const { setShowAccountSettingModal } = useModalContext() const { t } = useTranslation() const [isShow, setIsShow] = useState(true) - const hasSetAPIKEY = !!textGenerationModelList?.find(({ model_provider: provider }) => { - if (provider.provider_type === 'system' && provider.quota_type === 'paid') - return true - - if (provider.provider_type === 'custom') - return true - - return false - }) - if (hasSetAPIKEY) + if (hasSettedApiKey) return null - // first show in trail and not used exhausted, else find the exhausted - const [used, total, unit, providerName] = (() => { - if (!textGenerationModelList || !isCloud) - return [0, 0, '', ''] - - let used = 0 - let total = 0 - let unit = 'times' - let trailProviderName = '' - let hasFoundNotExhausted = false - textGenerationModelList?.filter(({ model_provider: provider }) => { - return provider.quota_type === 'trial' - }).forEach(({ model_provider: provider }) => { - if (hasFoundNotExhausted) - return - const { provider_name, quota_used, quota_limit, quota_unit } = provider - if (quota_limit !== quota_used) - hasFoundNotExhausted = true - used = quota_used - total = quota_limit - unit = quota_unit - trailProviderName = provider_name - }) - - return [used, total, unit, trailProviderName] - })() - const usedPercent = Math.round(used / total * 100) - const exhausted = isCloud && usedPercent === 100 if (!(isShow)) return null return ( -
+
- {isCloud && } + {isCloud && } {isCloud ? ( -
{t(`appOverview.apiKeyInfo.cloud.${exhausted ? 'exhausted' : 'trial'}.title`, { providerName: (ProviderConfig as any)[providerName as string]?.selector?.name[locale] || providerName })}
+
{t('appOverview.apiKeyInfo.cloud.trial.title', { providerName: 'OpenAI' })}
) : (
@@ -84,18 +41,7 @@ const APIKeyInfoPanel: FC = () => { )}
{isCloud && ( -
{t(`appOverview.apiKeyInfo.cloud.${exhausted ? 'exhausted' : 'trial'}.description`)}
- )} - {/* Call times info */} - {isCloud && ( -
-
-
{t(`appOverview.apiKeyInfo.${unit === 'times' ? 'callTimes' : 'usedToken'}`)}
-
·
-
{formatNumber(used)}/{formatNumber(total)}
-
- -
+
{t(`appOverview.apiKeyInfo.cloud.${'trial'}.description`)}
)} - ) - } -
- ) -} - -export default Quota diff --git a/web/app/components/header/account-setting/model-page/model-card/index.tsx b/web/app/components/header/account-setting/model-page/model-card/index.tsx deleted file mode 100644 index 3d5bdd428..000000000 --- a/web/app/components/header/account-setting/model-page/model-card/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import type { FC } from 'react' -import { useTranslation } from 'react-i18next' -import { useContext } from 'use-context-selector' -import type { - FormValue, - Provider, - ProviderConfigItem, - ProviderWithConfig, -} from '../declarations' -import Indicator from '../../../indicator' -import Selector from '../selector' -import Quota from './Quota' -import { IS_CE_EDITION } from '@/config' -import I18n from '@/context/i18n' -import { Plus } from '@/app/components/base/icons/src/vender/line/general' - -type ModelCardProps = { - currentProvider?: Provider - modelItem: ProviderConfigItem - onOpenModal: (v?: FormValue) => void - onOperate: (v: Record) => void -} - -const ModelCard: FC = ({ - currentProvider, - modelItem, - onOpenModal, - onOperate, -}) => { - const { locale } = useContext(I18n) - const { t } = useTranslation() - const custom = currentProvider?.providers.find(p => p.provider_type === 'custom') as ProviderWithConfig - - return ( -
-
-
-
- {modelItem.titleIcon[locale]} -
-
{modelItem.desc?.[locale]}
-
- {modelItem.subTitleIcon} -
- { - !IS_CE_EDITION && currentProvider && - } - { - custom?.is_valid - ? ( -
- -
API key
-
onOpenModal(custom?.config)} - > - {t('common.operation.edit')} -
- -
- ) - : ( -
onOpenModal()} - > - -
{t('common.modelProvider.addApiKey')}
-
- ) - } -
- ) -} - -export default ModelCard diff --git a/web/app/components/header/account-setting/model-page/model-item/Card.tsx b/web/app/components/header/account-setting/model-page/model-item/Card.tsx deleted file mode 100644 index 5b2dfbd30..000000000 --- a/web/app/components/header/account-setting/model-page/model-item/Card.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import type { FC } from 'react' -import { useTranslation } from 'react-i18next' -import Indicator from '../../../indicator' -import Selector from '../selector' -import type { Model, ProviderEnum } from '../declarations' -import { ProviderEnum as ProviderEnumValue } from '../declarations' -import Button from '@/app/components/base/button' - -type CardProps = { - providerType: ProviderEnum - models: Model[] - onOpenModal: (v: Omit & Model['config']) => void - onOperate: (v: Record) => void -} - -const Card: FC = ({ - providerType, - models, - onOpenModal, - onOperate, -}) => { - const { t } = useTranslation() - - const renderDesc = (model: Model) => { - if (providerType === ProviderEnumValue.azure_openai) - return model.config.openai_api_base - if (providerType === ProviderEnumValue.replicate) - return `version: ${model.config.model_version}` - if (providerType === ProviderEnumValue.huggingface_hub) - return model.config.huggingfacehub_endpoint_url - } - - return ( -
- { - models.map(model => ( -
-
-
- {model.model_name} -
{model.model_type}
-
-
- {renderDesc(model)} -
-
-
- - - onOperate({ ...v, value: model })} - className={open => `${open && '!bg-gray-100 shadow-none'} flex justify-center items-center w-7 h-7 bg-white rounded-md border-[0.5px] border-gray-200 shadow-xs cursor-pointer hover:bg-gray-100`} - deleteText={t('common.operation.remove') || ''} - /> -
-
- )) - } -
- ) -} - -export default Card diff --git a/web/app/components/header/account-setting/model-page/model-item/FreeQuota.tsx b/web/app/components/header/account-setting/model-page/model-item/FreeQuota.tsx deleted file mode 100644 index b66563d01..000000000 --- a/web/app/components/header/account-setting/model-page/model-item/FreeQuota.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { useState } from 'react' -import type { FC } from 'react' -import { useTranslation } from 'react-i18next' -import { useContext } from 'use-context-selector' -import type { ProviderConfigItem, TypeWithI18N } from '../declarations' -import { ProviderEnum as ProviderEnumValue } from '../declarations' -import s from './index.module.css' -import I18n from '@/context/i18n' -import Button from '@/app/components/base/button' -import { submitFreeQuota } from '@/service/common' -import { LinkExternal01 } from '@/app/components/base/icons/src/vender/line/general' - -const TIP_MAP: { [k: string]: TypeWithI18N } = { - [ProviderEnumValue.minimax]: { - 'en': 'Earn 1 million tokens for free', - 'zh-Hans': '免费获取 100 万个 token', - }, - [ProviderEnumValue.spark]: { - 'en': 'Earn 3 million tokens (v3.0) for free', - 'zh-Hans': '免费获取 300 万个 token (v3.0)', - }, - [ProviderEnumValue.zhipuai]: { - 'en': 'Earn 10 million tokens for free', - 'zh-Hans': '免费获取 1000 万个 token', - }, -} -type FreeQuotaProps = { - modelItem: ProviderConfigItem - onUpdate: () => void -} -const FreeQuota: FC = ({ - modelItem, - onUpdate, -}) => { - const { locale } = useContext(I18n) - const { t } = useTranslation() - const [loading, setLoading] = useState(false) - - const handleClick = async () => { - try { - setLoading(true) - const res = await submitFreeQuota(`/workspaces/current/model-providers/${modelItem.key}/free-quota-submit`) - - if (res.type === 'redirect' && res.redirect_url) - window.location.href = res.redirect_url - else if (res.type === 'submit' && res.result === 'success') - onUpdate() - } - finally { - setLoading(false) - } - } - - return ( -
- 📣 -
{TIP_MAP[modelItem.key][locale]}
-
·
-
- {t('common.modelProvider.freeQuota.howToEarn')} - - - -
-
- ) -} - -export default FreeQuota diff --git a/web/app/components/header/account-setting/model-page/model-item/QuotaCard.tsx b/web/app/components/header/account-setting/model-page/model-item/QuotaCard.tsx deleted file mode 100644 index 71dcaf336..000000000 --- a/web/app/components/header/account-setting/model-page/model-item/QuotaCard.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import type { FC } from 'react' -import { useTranslation } from 'react-i18next' -import { formatNumber } from '@/utils/format' - -type QuotaCardProps = { - remainTokens: number -} - -const QuotaCard: FC = ({ - remainTokens, -}) => { - const { t } = useTranslation() - - return ( -
-
-
- {t('common.modelProvider.item.freeQuota')} -
-
- {formatNumber(remainTokens)} -
Tokens
-
-
-
- ) -} - -export default QuotaCard diff --git a/web/app/components/header/account-setting/model-page/model-item/Setting.tsx b/web/app/components/header/account-setting/model-page/model-item/Setting.tsx deleted file mode 100644 index 7c24452ec..000000000 --- a/web/app/components/header/account-setting/model-page/model-item/Setting.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import type { FC } from 'react' -import { useTranslation } from 'react-i18next' -import { useContext } from 'use-context-selector' -import type { FormValue, Provider, ProviderConfigItem, ProviderWithConfig, ProviderWithQuota } from '../declarations' -import { ProviderEnum } from '../declarations' -import Indicator from '../../../indicator' -import Selector from '../selector' -import FreeQuota from './FreeQuota' -import I18n from '@/context/i18n' -import Button from '@/app/components/base/button' -import { IS_CE_EDITION } from '@/config' - -type SettingProps = { - currentProvider?: Provider - modelItem: ProviderConfigItem - onOpenModal: (v?: FormValue) => void - onOperate: (v: Record) => void - onUpdate: () => void -} - -const Setting: FC = ({ - currentProvider, - modelItem, - onOpenModal, - onOperate, - onUpdate, -}) => { - const { locale } = useContext(I18n) - const { t } = useTranslation() - const configurable = currentProvider?.model_flexibility === 'configurable' - const systemFree = currentProvider?.providers.find(p => p.provider_type === 'system' && (p as ProviderWithQuota).quota_type === 'free') as ProviderWithQuota - const custom = currentProvider?.providers.find(p => p.provider_type === 'custom') as ProviderWithConfig - - return ( -
- { - (modelItem.key === ProviderEnum.minimax || modelItem.key === ProviderEnum.spark || modelItem.key === ProviderEnum.zhipuai) && systemFree && !systemFree?.is_valid && !IS_CE_EDITION && locale === 'zh-Hans' && ( - - ) - } - { - modelItem.disable && !IS_CE_EDITION && ( -
- {modelItem.disable.tip[locale]} - - {modelItem.disable.link.label[locale]} - -
-
- ) - } - { - configurable && ( - - ) - } - { - !configurable && custom?.config && ( -
- - - `${open && '!bg-gray-100 shadow-none'} flex justify-center items-center w-7 h-7 bg-white rounded-md border-[0.5px] border-gray-200 shadow-xs cursor-pointer hover:bg-gray-100`} - /> -
- ) - } - { - !configurable && !custom?.config && ( - - ) - } -
- ) -} - -export default Setting diff --git a/web/app/components/header/account-setting/model-page/model-item/index.tsx b/web/app/components/header/account-setting/model-page/model-item/index.tsx deleted file mode 100644 index 228aa22fa..000000000 --- a/web/app/components/header/account-setting/model-page/model-item/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import type { FC } from 'react' -import { useContext } from 'use-context-selector' -import type { - FormValue, - Provider, - ProviderConfigItem, - ProviderWithModels, - ProviderWithQuota, -} from '../declarations' -import Setting from './Setting' -import Card from './Card' -import QuotaCard from './QuotaCard' -import I18n from '@/context/i18n' -import { IS_CE_EDITION } from '@/config' - -type ModelItemProps = { - currentProvider?: Provider - modelItem: ProviderConfigItem - onOpenModal: (v?: FormValue) => void - onOperate: (v: Record) => void - onUpdate: () => void -} - -const ModelItem: FC = ({ - currentProvider, - modelItem, - onOpenModal, - onOperate, - onUpdate, -}) => { - const { locale } = useContext(I18n) - const custom = currentProvider?.providers.find(p => p.provider_type === 'custom') as ProviderWithModels - const systemFree = currentProvider?.providers.find(p => p.provider_type === 'system' && (p as ProviderWithQuota).quota_type === 'free') as ProviderWithQuota - - return ( -
-
-
- {modelItem.titleIcon[locale]} - { - modelItem.hit && ( -
{modelItem.hit[locale]}
- ) - } -
- -
- { - !!custom?.models?.length && ( - - ) - } - { - systemFree?.is_valid && !IS_CE_EDITION && ( - - ) - } -
- ) -} - -export default ModelItem diff --git a/web/app/components/header/account-setting/model-page/model-modal/Form.tsx b/web/app/components/header/account-setting/model-page/model-modal/Form.tsx deleted file mode 100644 index bd1017029..000000000 --- a/web/app/components/header/account-setting/model-page/model-modal/Form.tsx +++ /dev/null @@ -1,208 +0,0 @@ -import { useEffect, useState } from 'react' -import type { Dispatch, FC, SetStateAction } from 'react' -import { useContext } from 'use-context-selector' -import { type Field, type FormValue, type ProviderConfigModal, ProviderEnum } from '../declarations' -import { useValidate } from '../../key-validator/hooks' -import { ValidatingTip } from '../../key-validator/ValidateStatus' -import { validateModelProviderFn } from '../utils' -import Input from './Input' -import I18n from '@/context/i18n' -import { SimpleSelect } from '@/app/components/base/select' - -type FormProps = { - modelModal?: ProviderConfigModal - initValue?: FormValue - fields: Field[] - onChange: (v: FormValue) => void - onValidatedError: (v: string) => void - mode: string - cleared: boolean - onClearedChange: Dispatch> - onValidating: (validating: boolean) => void -} - -const nameClassName = ` -py-2 text-sm text-gray-900 -` - -const Form: FC = ({ - modelModal, - initValue = {}, - fields, - onChange, - onValidatedError, - mode, - cleared, - onClearedChange, - onValidating, -}) => { - const { locale } = useContext(I18n) - const [value, setValue] = useState(initValue) - const [validate, validating, validatedStatusState] = useValidate(value) - const [changeKey, setChangeKey] = useState('') - - useEffect(() => { - onValidatedError(validatedStatusState.message || '') - }, [validatedStatusState, onValidatedError]) - useEffect(() => { - onValidating(validating) - }, [validating, onValidating]) - - const updateValue = (v: FormValue) => { - setValue(v) - onChange(v) - } - - const handleMultiFormChange = (v: FormValue, newChangeKey: string) => { - updateValue(v) - setChangeKey(newChangeKey) - - const validateKeys = (typeof modelModal?.validateKeys === 'function' ? modelModal?.validateKeys(v) : modelModal?.validateKeys) || [] - if (validateKeys.length) { - validate({ - before: () => { - for (let i = 0; i < validateKeys.length; i++) { - if (!v[validateKeys[i]]) - return false - } - return true - }, - run: () => { - return validateModelProviderFn(modelModal!.key, modelModal?.filterValue ? modelModal?.filterValue(v) : v) - }, - }) - } - } - - const handleClear = (saveValue?: FormValue) => { - const needClearFields = modelModal?.fields.filter(field => field.type !== 'radio') - const newValue: Record = {} - needClearFields?.forEach((field) => { - newValue[field.key] = '' - }) - updateValue({ ...value, ...newValue, ...saveValue }) - onClearedChange(true) - } - - const handleFormChange = (k: string, v: string) => { - if (mode === 'edit' && !cleared) { - handleClear({ [k]: v }) - } - else { - const extraValue: Record = {} - if ( - ( - (k === 'model_type' && v === 'embeddings' && value.huggingfacehub_api_type === 'inference_endpoints') - || (k === 'huggingfacehub_api_type' && v === 'inference_endpoints' && value.model_type === 'embeddings') - ) - && modelModal?.key === ProviderEnum.huggingface_hub - ) - extraValue.task_type = 'feature-extraction' - - if ( - ( - (k === 'model_type' && v === 'text-generation' && value.huggingfacehub_api_type === 'inference_endpoints') - || (k === 'huggingfacehub_api_type' && v === 'inference_endpoints' && value.model_type === 'text-generation') - ) - && modelModal?.key === ProviderEnum.huggingface_hub - ) - extraValue.task_type = 'text-generation' - - if ( - ( - (k === 'model_type' && v === 'chat' && value.huggingfacehub_api_type === 'inference_endpoints') - || (k === 'huggingfacehub_api_type' && v === 'inference_endpoints' && value.model_type === 'chat') - ) - && modelModal?.key === ProviderEnum.huggingface_hub - ) - extraValue.task_type = 'question-answer' - - handleMultiFormChange({ ...value, [k]: v, ...extraValue }, k) - } - } - - const handleFocus = () => { - if (mode === 'edit' && !cleared) - handleClear() - } - - const renderField = (field: Field) => { - const hidden = typeof field.hidden === 'function' ? field.hidden(value) : field.hidden - - if (hidden) - return null - - if (field.type === 'text') { - return ( -
-
{field.label[locale]}
- handleMultiFormChange(v, field.key)} - onFocus={handleFocus} - validatedStatusState={validatedStatusState} - /> - {validating && changeKey === field.key && } -
- ) - } - - if (field.type === 'radio') { - const options = typeof field.options === 'function' ? field.options(value) : field.options - - return ( -
-
{field.label[locale]}
-
- { - options?.map(option => ( -
handleFormChange(field.key, option.key)} - key={`${field.key}-${option.key}`} - > -
-
{option.label[locale]}
-
- )) - } -
- {validating && changeKey === field.key && } -
- ) - } - - if (field.type === 'select') { - const options = typeof field.options === 'function' ? field.options(value) : field.options - - return ( -
-
{field.label[locale]}
- ({ value: option.key, name: option.label[locale] }))} - onSelect={item => handleFormChange(field.key, item.value as string)} - /> - {validating && changeKey === field.key && } -
- ) - } - } - - return ( -
- { - fields.map(field => renderField(field)) - } -
- ) -} - -export default Form diff --git a/web/app/components/header/account-setting/model-page/model-modal/Input.tsx b/web/app/components/header/account-setting/model-page/model-modal/Input.tsx deleted file mode 100644 index f78622f11..000000000 --- a/web/app/components/header/account-setting/model-page/model-modal/Input.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import type { FC } from 'react' -import { useContext } from 'use-context-selector' -import type { Field, FormValue } from '../declarations' -import { ValidatedSuccessIcon } from '../../key-validator/ValidateStatus' -import { ValidatedStatus } from '../../key-validator/declarations' -import type { ValidatedStatusState } from '../../key-validator/declarations' -import I18n from '@/context/i18n' - -type InputProps = { - field: Field - value: FormValue - onChange: (v: FormValue) => void - onFocus: () => void - validatedStatusState: ValidatedStatusState -} -const Input: FC = ({ - field, - value, - onChange, - onFocus, - validatedStatusState, -}) => { - const { locale } = useContext(I18n) - const showValidatedIcon = validatedStatusState.status === ValidatedStatus.Success && value[field.key] - - const getValidatedIcon = () => { - if (showValidatedIcon) - return
- } - - const handleChange = (v: string) => { - const newFormValue = { ...value, [field.key]: v } - onChange(newFormValue) - } - - return ( -
- handleChange(e.target.value)} - onFocus={onFocus} - value={value[field.key] || ''} - /> - {getValidatedIcon()} -
- ) -} - -export default Input diff --git a/web/app/components/header/account-setting/model-page/model-modal/index.tsx b/web/app/components/header/account-setting/model-page/model-modal/index.tsx deleted file mode 100644 index acc7bf0eb..000000000 --- a/web/app/components/header/account-setting/model-page/model-modal/index.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import { useCallback, useState } from 'react' -import type { FC } from 'react' -import { useTranslation } from 'react-i18next' -import { useContext } from 'use-context-selector' -import type { FormValue, ProviderConfigModal } from '../declarations' -import { ConfigurableProviders } from '../utils' -import Form from './Form' -import I18n from '@/context/i18n' -import Button from '@/app/components/base/button' -import { Lock01 } from '@/app/components/base/icons/src/vender/solid/security' -import { LinkExternal02 } from '@/app/components/base/icons/src/vender/line/general' -import { AlertCircle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback' -import { useEventEmitterContextContext } from '@/context/event-emitter' -import { - PortalToFollowElem, - PortalToFollowElemContent, -} from '@/app/components/base/portal-to-follow-elem' - -type ModelModalProps = { - isShow: boolean - onCancel: () => void - modelModal?: ProviderConfigModal - onSave: (v?: FormValue) => void - mode: string -} - -const ModelModal: FC = ({ - isShow, - onCancel, - modelModal, - onSave, - mode, -}) => { - const { t } = useTranslation() - const { locale } = useContext(I18n) - const { eventEmitter } = useEventEmitterContextContext() - const [value, setValue] = useState() - const [loading, setLoading] = useState(false) - const [errorMessage, setErrorMessage] = useState('') - const [cleared, setCleared] = useState(false) - const [prevIsShow, setPrevIsShow] = useState(isShow) - const [validating, setValidating] = useState(false) - - if (prevIsShow !== isShow) { - setCleared(false) - setPrevIsShow(isShow) - } - - eventEmitter?.useSubscription((v) => { - if (v === 'provider-save') - setLoading(true) - else - setLoading(false) - }) - const handleValidatedError = useCallback((newErrorMessage: string) => { - setErrorMessage(newErrorMessage) - }, []) - const handleValidating = useCallback((newValidating: boolean) => { - setValidating(newValidating) - }, []) - const validateRequiredValue = () => { - const validateValue = value || modelModal?.defaultValue - if (modelModal) { - const { fields } = modelModal - const requiredFields = fields.filter(field => !(typeof field.hidden === 'function' ? field.hidden(validateValue) : field.hidden) && field.required) - - for (let i = 0; i < requiredFields.length; i++) { - const currentField = requiredFields[i] - if (!validateValue?.[currentField.key]) { - setErrorMessage(t('appDebug.errorMessage.valueOfVarRequired', { key: currentField.label[locale] }) || '') - return false - } - } - return true - } - } - const handleSave = () => { - if (validateRequiredValue()) - onSave(value || modelModal?.defaultValue) - } - - const renderTitlePrefix = () => { - let prefix - if (mode === 'edit') - prefix = t('common.operation.edit') - else - prefix = ConfigurableProviders.includes(modelModal!.key) ? t('common.operation.create') : t('common.operation.setup') - - return `${prefix} ${modelModal?.title[locale]}` - } - - if (!isShow) - return null - - return ( - - -
-
-
-
-
{renderTitlePrefix()}
- {modelModal?.icon} -
-
setValue(newValue)} - onValidatedError={handleValidatedError} - mode={mode} - cleared={cleared} - onClearedChange={setCleared} - onValidating={handleValidating} - /> -
- - {modelModal?.link.label[locale]} - - -
- - -
-
-
-
- { - errorMessage - ? ( -
- - {errorMessage} -
- ) - : ( -
- - {t('common.modelProvider.encrypted.front')} - - PKCS1_OAEP - - {t('common.modelProvider.encrypted.back')} -
- ) - } -
-
-
-
-
- ) -} - -export default ModelModal diff --git a/web/app/components/header/account-setting/model-page/model-selector/index.tsx b/web/app/components/header/account-setting/model-page/model-selector/index.tsx deleted file mode 100644 index 69b46e0c7..000000000 --- a/web/app/components/header/account-setting/model-page/model-selector/index.tsx +++ /dev/null @@ -1,347 +0,0 @@ -import type { FC } from 'react' -import React, { Fragment, useEffect, useState } from 'react' -import useSWR from 'swr' -import { Popover, Transition } from '@headlessui/react' -import { useTranslation } from 'react-i18next' -import _ from 'lodash-es' -import cn from 'classnames' -import ModelModal from '../model-modal' -import cohereConfig from '../configs/cohere' -import s from './style.module.css' -import type { BackendModel, FormValue, ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' -import { ModelType } from '@/app/components/header/account-setting/model-page/declarations' -import { ChevronDown } from '@/app/components/base/icons/src/vender/line/arrows' -import { Check, LinkExternal01, SearchLg } from '@/app/components/base/icons/src/vender/line/general' -import { XCircle } from '@/app/components/base/icons/src/vender/solid/general' -import { AlertCircle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' -import Tooltip from '@/app/components/base/tooltip' -import ModelIcon from '@/app/components/app/configuration/config-model/model-icon' -import ModelName from '@/app/components/app/configuration/config-model/model-name' -import ProviderName from '@/app/components/app/configuration/config-model/provider-name' -import { useProviderContext } from '@/context/provider-context' -import ModelModeTypeLabel from '@/app/components/app/configuration/config-model/model-mode-type-label' -import type { ModelModeType } from '@/types/app' -import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' -import { useModalContext } from '@/context/modal-context' -import { useEventEmitterContextContext } from '@/context/event-emitter' -import { fetchDefaultModal, setModelProvider } from '@/service/common' -import { useToastContext } from '@/app/components/base/toast' - -type Props = { - value: { - providerName: ProviderEnum - modelName: string - } | undefined - modelType: ModelType - isShowModelModeType?: boolean - isShowAddModel?: boolean - supportAgentThought?: boolean - onChange: (value: BackendModel) => void - popClassName?: string - readonly?: boolean - triggerIconSmall?: boolean - whenEmptyGoToSetting?: boolean - onUpdate?: () => void -} - -type ModelOption = { - type: 'model' - value: string - providerName: ProviderEnum - modelDisplayName: string - model_mode: ModelModeType -} | { - type: 'provider' - value: ProviderEnum -} - -const ModelSelector: FC = ({ - value, - modelType, - isShowModelModeType, - isShowAddModel, - supportAgentThought, - onChange, - popClassName, - readonly, - triggerIconSmall, - whenEmptyGoToSetting, - onUpdate, -}) => { - const { t } = useTranslation() - const { setShowAccountSettingModal } = useModalContext() - const { - textGenerationModelList, - embeddingsModelList, - speech2textModelList, - rerankModelList, - agentThoughtModelList, - updateModelList, - } = useProviderContext() - const [search, setSearch] = useState('') - const modelList = supportAgentThought - ? agentThoughtModelList - : ({ - [ModelType.textGeneration]: textGenerationModelList, - [ModelType.embeddings]: embeddingsModelList, - [ModelType.speech2text]: speech2textModelList, - [ModelType.reranking]: rerankModelList, - })[modelType] - const currModel = modelList.find(item => item.model_name === value?.modelName && item.model_provider.provider_name === value.providerName) - const allModelNames = (() => { - if (!search) - return {} - - const res: Record = {} - modelList.forEach(({ model_name, model_display_name }) => { - res[model_name] = model_display_name - }) - return res - })() - const filteredModelList = search - ? modelList.filter(({ model_name }) => { - if (allModelNames[model_name].includes(search)) - return true - - return false - }) - : modelList - - const hasRemoved = (value && value.modelName && value.providerName) && !modelList.find(({ model_name, model_provider }) => model_name === value.modelName && model_provider.provider_name === value.providerName) - - const modelOptions: ModelOption[] = (() => { - const providers = _.uniq(filteredModelList.map(item => item.model_provider.provider_name)) - const res: ModelOption[] = [] - providers.forEach((providerName) => { - res.push({ - type: 'provider', - value: providerName, - }) - const models = filteredModelList.filter(m => m.model_provider.provider_name === providerName) - models.forEach(({ model_name, model_display_name, model_mode }) => { - res.push({ - type: 'model', - providerName, - value: model_name, - modelDisplayName: model_display_name, - model_mode, - }) - }) - }) - return res - })() - const { eventEmitter } = useEventEmitterContextContext() - const [showRerankModal, setShowRerankModal] = useState(false) - const [shouldFetchRerankDefaultModel, setShouldFetchRerankDefaultModel] = useState(false) - const { notify } = useToastContext() - const { data: rerankDefaultModel } = useSWR(shouldFetchRerankDefaultModel ? '/workspaces/current/default-model?model_type=reranking' : null, fetchDefaultModal) - const handleOpenRerankModal = (e: React.MouseEvent) => { - e.stopPropagation() - setShowRerankModal(true) - } - const handleRerankModalSave = async (originValue?: FormValue) => { - if (originValue) { - try { - eventEmitter?.emit('provider-save') - const res = await setModelProvider({ - url: `/workspaces/current/model-providers/${cohereConfig.modal.key}`, - body: { - config: originValue, - }, - }) - if (res.result === 'success') { - notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) - updateModelList(ModelType.reranking) - setShowRerankModal(false) - setShouldFetchRerankDefaultModel(true) - if (onUpdate) - onUpdate() - } - eventEmitter?.emit('') - } - catch (e) { - eventEmitter?.emit('') - } - } - } - - useEffect(() => { - if (rerankDefaultModel && whenEmptyGoToSetting) - onChange(rerankDefaultModel) - }, [rerankDefaultModel]) - - return ( -
- - - { - ({ open }) => ( - <> - { - (value && value.modelName && value.providerName) - ? ( - <> - -
- - {isShowModelModeType && ( - - )} -
- - ) - : whenEmptyGoToSetting - ? ( -
-
- - {t('common.modelProvider.selector.rerankTip')} -
- -
- ) - : ( -
{t('common.modelProvider.selectModel')}
- ) - } - { - hasRemoved && ( - {t('common.modelProvider.selector.tip')}
- } - > - - - ) - } - { - !readonly && !whenEmptyGoToSetting && ( - - ) - } - { - whenEmptyGoToSetting && (value && value.modelName && value.providerName) && ( - - ) - } - - ) - } - - {!readonly && ( - - -
-
-
-
- setSearch(e.target.value)} - className={` - block w-full h-8 bg-transparent text-[13px] text-gray-700 - outline-none appearance-none border-none - `} - placeholder={t('common.modelProvider.searchModel') || ''} - /> -
- { - search && ( -
setSearch('')}> - -
- ) - } -
-
- { - modelOptions.map((model) => { - if (model.type === 'provider') { - return ( -
- -
- ) - } - - if (model.type === 'model') { - return ( - { - const selectedModel = modelList.find((item) => { - return item.model_name === model.value && item.model_provider.provider_name === model.providerName - }) - onChange(selectedModel as BackendModel) - }} - > - -
- - {isShowModelModeType && ( - - )} -
- { (value?.providerName === model.providerName && value?.modelName === model.value) && } -
- ) - } - - return null - }) - } - {modelList.length !== 0 && (search && filteredModelList.length === 0) && ( -
{t('common.modelProvider.noModelFound', { model: search })}
- )} - - {isShowAddModel && ( -
setShowAccountSettingModal({ payload: 'provider' })} - > - -
{t('common.model.addMoreModel')}
-
- )} -
-
- )} - - setShowRerankModal(false)} - onSave={handleRerankModalSave} - mode={'add'} - /> -
- ) -} - -export default ModelSelector diff --git a/web/app/components/header/account-setting/model-page/model-selector/portal-select.tsx b/web/app/components/header/account-setting/model-page/model-selector/portal-select.tsx deleted file mode 100644 index 19ad97c39..000000000 --- a/web/app/components/header/account-setting/model-page/model-selector/portal-select.tsx +++ /dev/null @@ -1,358 +0,0 @@ -import type { FC } from 'react' -import React, { Fragment, useEffect, useRef, useState } from 'react' -import useSWR from 'swr' -import { useTranslation } from 'react-i18next' -import _ from 'lodash-es' -import cn from 'classnames' -import ModelModal from '../model-modal' -import cohereConfig from '../configs/cohere' -import s from './style.module.css' -import type { BackendModel, FormValue, ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' -import { ModelType } from '@/app/components/header/account-setting/model-page/declarations' -import { ChevronDown } from '@/app/components/base/icons/src/vender/line/arrows' -import { Check, LinkExternal01, SearchLg } from '@/app/components/base/icons/src/vender/line/general' -import { XCircle } from '@/app/components/base/icons/src/vender/solid/general' -import { AlertCircle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' -import Tooltip from '@/app/components/base/tooltip' -import ModelIcon from '@/app/components/app/configuration/config-model/model-icon' -import ModelName from '@/app/components/app/configuration/config-model/model-name' -import ProviderName from '@/app/components/app/configuration/config-model/provider-name' -import { useProviderContext } from '@/context/provider-context' -import ModelModeTypeLabel from '@/app/components/app/configuration/config-model/model-mode-type-label' -import type { ModelModeType } from '@/types/app' -import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' -import { useModalContext } from '@/context/modal-context' -import { useEventEmitterContextContext } from '@/context/event-emitter' -import { fetchDefaultModal, setModelProvider } from '@/service/common' -import { useToastContext } from '@/app/components/base/toast' -import { - PortalToFollowElem, - PortalToFollowElemContent, - PortalToFollowElemTrigger, -} from '@/app/components/base/portal-to-follow-elem' - -type Props = { - value: { - providerName: ProviderEnum - modelName: string - } | undefined - modelType: ModelType - isShowModelModeType?: boolean - isShowAddModel?: boolean - supportAgentThought?: boolean - onChange: (value: BackendModel) => void - popClassName?: string - readonly?: boolean - triggerIconSmall?: boolean - whenEmptyGoToSetting?: boolean - onUpdate?: () => void - widthSameToTrigger?: boolean -} - -type ModelOption = { - type: 'model' - value: string - providerName: ProviderEnum - modelDisplayName: string - model_mode: ModelModeType -} | { - type: 'provider' - value: ProviderEnum -} - -const ModelSelector: FC = ({ - value, - modelType, - isShowModelModeType, - isShowAddModel, - supportAgentThought, - onChange, - popClassName, - readonly, - triggerIconSmall, - whenEmptyGoToSetting, - onUpdate, - widthSameToTrigger, -}) => { - const { t } = useTranslation() - const { setShowAccountSettingModal } = useModalContext() - const { - textGenerationModelList, - embeddingsModelList, - speech2textModelList, - rerankModelList, - agentThoughtModelList, - updateModelList, - } = useProviderContext() - const [search, setSearch] = useState('') - const modelList = supportAgentThought - ? agentThoughtModelList - : ({ - [ModelType.textGeneration]: textGenerationModelList, - [ModelType.embeddings]: embeddingsModelList, - [ModelType.speech2text]: speech2textModelList, - [ModelType.reranking]: rerankModelList, - })[modelType] - const currModel = modelList.find(item => item.model_name === value?.modelName && item.model_provider.provider_name === value.providerName) - const allModelNames = (() => { - if (!search) - return {} - - const res: Record = {} - modelList.forEach(({ model_name, model_display_name }) => { - res[model_name] = model_display_name - }) - return res - })() - const filteredModelList = search - ? modelList.filter(({ model_name }) => { - if (allModelNames[model_name].includes(search)) - return true - - return false - }) - : modelList - - const hasRemoved = (value && value.modelName && value.providerName) && !modelList.find(({ model_name, model_provider }) => model_name === value.modelName && model_provider.provider_name === value.providerName) - - const modelOptions: ModelOption[] = (() => { - const providers = _.uniq(filteredModelList.map(item => item.model_provider.provider_name)) - const res: ModelOption[] = [] - providers.forEach((providerName) => { - res.push({ - type: 'provider', - value: providerName, - }) - const models = filteredModelList.filter(m => m.model_provider.provider_name === providerName) - models.forEach(({ model_name, model_display_name, model_mode }) => { - res.push({ - type: 'model', - providerName, - value: model_name, - modelDisplayName: model_display_name, - model_mode, - }) - }) - }) - return res - })() - const { eventEmitter } = useEventEmitterContextContext() - const [showRerankModal, setShowRerankModal] = useState(false) - const [shouldFetchRerankDefaultModel, setShouldFetchRerankDefaultModel] = useState(false) - const { notify } = useToastContext() - const { data: rerankDefaultModel } = useSWR(shouldFetchRerankDefaultModel ? '/workspaces/current/default-model?model_type=reranking' : null, fetchDefaultModal) - const handleOpenRerankModal = (e: React.MouseEvent) => { - e.stopPropagation() - setShowRerankModal(true) - } - const handleRerankModalSave = async (originValue?: FormValue) => { - if (originValue) { - try { - eventEmitter?.emit('provider-save') - const res = await setModelProvider({ - url: `/workspaces/current/model-providers/${cohereConfig.modal.key}`, - body: { - config: originValue, - }, - }) - if (res.result === 'success') { - notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) - updateModelList(ModelType.reranking) - setShowRerankModal(false) - setShouldFetchRerankDefaultModel(true) - if (onUpdate) - onUpdate() - } - eventEmitter?.emit('') - } - catch (e) { - eventEmitter?.emit('') - } - } - } - - const [open, setOpen] = useState(false) - const triggerRef = useRef(null) - - useEffect(() => { - if (rerankDefaultModel && whenEmptyGoToSetting) - onChange(rerankDefaultModel) - }, [rerankDefaultModel]) - - return ( - -
- setOpen(v => !v)} className={cn('flex items-center px-2.5 w-full h-9 rounded-lg', readonly ? '!cursor-auto bg-gray-100 opacity-50' : 'bg-gray-100', hasRemoved && '!bg-[#FEF3F2]')}> - { -
- { - (value && value.modelName && value.providerName) - ? ( - <> - -
- - {isShowModelModeType && ( - - )} -
- - ) - : whenEmptyGoToSetting - ? ( -
-
- - {t('common.modelProvider.selector.rerankTip')} -
- -
- ) - : ( -
{t('common.modelProvider.selectModel')}
- ) - } - { - hasRemoved && ( - {t('common.modelProvider.selector.tip')}
- } - > - - - ) - } - { - !readonly && !whenEmptyGoToSetting && ( - - ) - } - { - whenEmptyGoToSetting && (value && value.modelName && value.providerName) && ( - - ) - } -
- } - - {!readonly && ( - -
-
-
-
- setSearch(e.target.value)} - className={` - block w-full h-8 bg-transparent text-[13px] text-gray-700 - outline-none appearance-none border-none - `} - placeholder={t('common.modelProvider.searchModel') || ''} - /> -
- { - search && ( -
setSearch('')}> - -
- ) - } -
-
- { - modelOptions.map((model) => { - if (model.type === 'provider') { - return ( -
- -
- ) - } - - if (model.type === 'model') { - return ( -
{ - const selectedModel = modelList.find((item) => { - return item.model_name === model.value && item.model_provider.provider_name === model.providerName - }) - onChange(selectedModel as BackendModel) - setOpen(false) - }} - > - -
- - {isShowModelModeType && ( - - )} -
- {(value?.providerName === model.providerName && value?.modelName === model.value) && } -
- ) - } - - return null - }) - } - {modelList.length !== 0 && (search && filteredModelList.length === 0) && ( -
{t('common.modelProvider.noModelFound', { model: search })}
- )} - - {isShowAddModel && ( -
setShowAccountSettingModal({ payload: 'provider' })} - > - -
{t('common.model.addMoreModel')}
-
- )} -
- )} -
- setShowRerankModal(false)} - onSave={handleRerankModalSave} - mode={'add'} - /> - - ) -} - -export default ModelSelector diff --git a/web/app/components/header/account-setting/model-page/model-selector/style.module.css b/web/app/components/header/account-setting/model-page/model-selector/style.module.css deleted file mode 100644 index 91591220f..000000000 --- a/web/app/components/header/account-setting/model-page/model-selector/style.module.css +++ /dev/null @@ -1,7 +0,0 @@ -.modelModeLabel { - visibility: hidden; -} - -.optionItem:hover .modelModeLabel { - visibility: visible; -} \ No newline at end of file diff --git a/web/app/components/header/account-setting/model-page/selector/index.tsx b/web/app/components/header/account-setting/model-page/selector/index.tsx deleted file mode 100644 index 76301eed2..000000000 --- a/web/app/components/header/account-setting/model-page/selector/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { Fragment } from 'react' -import type { FC } from 'react' -import { Popover, Transition } from '@headlessui/react' -import { useTranslation } from 'react-i18next' -import { Check, DotsHorizontal, Trash03 } from '@/app/components/base/icons/src/vender/line/general' - -const itemClassName = ` -flex items-center px-3 h-9 text-sm text-gray-700 rounded-lg cursor-pointer -` - -type SelectorProps = { - value?: string - onOperate: (v: Record) => void - hiddenOptions?: boolean - className?: (v: boolean) => string - deleteText?: string -} -const Selector: FC = ({ - value, - onOperate, - hiddenOptions, - className, - deleteText, -}) => { - const { t } = useTranslation() - const options = [ - { - key: 'custom', - text: 'API', - }, - { - key: 'system', - text: t('common.modelProvider.quota'), - }, - ] - - return ( - - - { - ({ open }) => ( -
- -
- ) - } -
- - - { - !hiddenOptions && ( - <> -
-
{t('common.modelProvider.card.priorityUse')}
- { - options.map(option => ( - -
onOperate({ type: 'priority', value: option.key })}> -
{option.text}
- {value === option.key && } -
-
- )) - } -
-
- - ) - } -
- -
onOperate({ type: 'delete' })}> - - {deleteText || t('common.modelProvider.card.removeKey')} -
-
-
- - - - ) -} - -export default Selector diff --git a/web/app/components/header/account-setting/model-page/utils.ts b/web/app/components/header/account-setting/model-page/utils.ts deleted file mode 100644 index 32b3619db..000000000 --- a/web/app/components/header/account-setting/model-page/utils.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { ValidatedStatus } from '../key-validator/declarations' -import { ProviderEnum } from './declarations' -import { validateModelProvider } from '@/service/common' - -export const ConfigurableProviders = [ProviderEnum.azure_openai, ProviderEnum.replicate, ProviderEnum.huggingface_hub, ProviderEnum.xinference, ProviderEnum.openllm, ProviderEnum.localai] - -export const validateModelProviderFn = async (providerName: ProviderEnum, v: any) => { - let body, url - - if (ConfigurableProviders.includes(providerName)) { - const { model_name, model_type, ...config } = v - body = { - model_name, - model_type, - config, - } - url = `/workspaces/current/model-providers/${providerName}/models/validate` - } - else { - body = { - config: v, - } - url = `/workspaces/current/model-providers/${providerName}/validate` - } - try { - const res = await validateModelProvider({ url, body }) - if (res.result === 'success') - return Promise.resolve({ status: ValidatedStatus.Success }) - else - return Promise.resolve({ status: ValidatedStatus.Error, message: res.error }) - } - catch (e: any) { - return Promise.resolve({ status: ValidatedStatus.Error, message: e.message }) - } -} diff --git a/web/app/components/header/account-setting/model-provider-page/declarations.ts b/web/app/components/header/account-setting/model-provider-page/declarations.ts new file mode 100644 index 000000000..aa7a0b2c1 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/declarations.ts @@ -0,0 +1,216 @@ +export type FormValue = Record + +export type TypeWithI18N = { + 'en_US': T + 'zh_Hans': T +} + +export enum FormTypeEnum { + textInput = 'text-input', + secretInput = 'secret-input', + select = 'select', + radio = 'radio', +} + +export type FormOption = { + label: TypeWithI18N + value: string + show_on: FormShowOnObject[] +} + +export enum ModelTypeEnum { + textGeneration = 'llm', + textEmbedding = 'text-embedding', + rerank = 'rerank', + speech2text = 'speech2text', + moderation = 'moderation', +} + +export const MODEL_TYPE_TEXT = { + [ModelTypeEnum.textGeneration]: 'LLM', + [ModelTypeEnum.textEmbedding]: 'Text Embedding', + [ModelTypeEnum.rerank]: 'Rerank', + [ModelTypeEnum.speech2text]: 'Speech2text', + [ModelTypeEnum.moderation]: 'Moderation', +} + +export enum ConfigurateMethodEnum { + predefinedModel = 'predefined-model', + customizableModel = 'customizable-model', + fetchFromRemote = 'fetch-from-remote', +} + +export enum ModelFeatureEnum { + toolCall = 'tool-call', + multiToolCall = 'multi-tool-call', + agentThought = 'agent-thought', + vision = 'vision', +} + +export enum ModelFeatureTextEnum { + toolCall = 'Tool Call', + multiToolCall = 'Multi Tool Call', + agentThought = 'Agent Thought', + vision = 'Vision', +} + +export enum ModelStatusEnum { + active = 'active', + noConfigure = 'no-configure', + quotaExceeded = 'quota-exceeded', + noPermission = 'no-permission', +} + +export const MODEL_STATUS_TEXT = { + [ModelStatusEnum.noConfigure]: { + en_US: 'No Configure', + zh_Hans: '未配置凭据', + }, + [ModelStatusEnum.quotaExceeded]: { + en_US: 'Quota Exceeded', + zh_Hans: '额度不足', + }, + [ModelStatusEnum.noPermission]: { + en_US: 'No Permission', + zh_Hans: '无使用权限', + }, +} + +export enum CustomConfigurationStatusEnum { + active = 'active', + noConfigure = 'no-configure', +} + +export type FormShowOnObject = { + variable: string + value: string +} + +export type CredentialFormSchemaBase = { + variable: string + label: TypeWithI18N + type: FormTypeEnum + required: boolean + default?: string + show_on: FormShowOnObject[] +} + +export type CredentialFormSchemaTextInput = CredentialFormSchemaBase & { max_length?: number; placeholder?: TypeWithI18N } +export type CredentialFormSchemaSelect = CredentialFormSchemaBase & { options: FormOption[]; placeholder?: TypeWithI18N } +export type CredentialFormSchemaRadio = CredentialFormSchemaBase & { options: FormOption[] } +export type CredentialFormSchemaSecretInput = CredentialFormSchemaBase & { placeholder?: TypeWithI18N } +export type CredentialFormSchema = CredentialFormSchemaTextInput | CredentialFormSchemaSelect | CredentialFormSchemaRadio | CredentialFormSchemaSecretInput + +export type ModelItem = { + model: string + label: TypeWithI18N + model_type: ModelTypeEnum + features?: ModelFeatureEnum[] + fetch_from: ConfigurateMethodEnum + status: ModelStatusEnum + model_properties: Record + deprecated?: boolean +} + +export enum PreferredProviderTypeEnum { + system = 'system', + custom = 'custom', +} + +export enum CurrentSystemQuotaTypeEnum { + trial = 'trial', + free = 'free', + paid = 'paid', +} + +export enum QuotaUnitEnum { + times = 'times', + tokens = 'tokens', +} + +export type QuotaConfiguration = { + quota_type: CurrentSystemQuotaTypeEnum + quota_unit: QuotaUnitEnum + quota_limit: number + quota_used: number + last_used: number + is_valid: boolean +} + +export type ModelProvider = { + provider: string + label: TypeWithI18N + description?: TypeWithI18N + help: { + title: TypeWithI18N + url: TypeWithI18N + } + icon_small: TypeWithI18N + icon_large: TypeWithI18N + background?: string + supported_model_types: ModelTypeEnum[] + configurate_methods: ConfigurateMethodEnum[] + provider_credential_schema: { + credential_form_schemas: CredentialFormSchema[] + } + model_credential_schema: { + model: { + label: TypeWithI18N + placeholder: TypeWithI18N + } + credential_form_schemas: CredentialFormSchema[] + } + preferred_provider_type: PreferredProviderTypeEnum + custom_configuration: { + status: CustomConfigurationStatusEnum + } + system_configuration: { + enabled: boolean + current_quota_type: CurrentSystemQuotaTypeEnum + quota_configurations: QuotaConfiguration[] + } +} + +export type Model = { + provider: string + icon_large: TypeWithI18N + icon_small: TypeWithI18N + label: TypeWithI18N + models: ModelItem[] + status: ModelStatusEnum +} + +export type DefaultModelResponse = { + model: string + model_type: ModelTypeEnum + provider: { + provider: string + icon_large: TypeWithI18N + icon_small: TypeWithI18N + } +} + +export type DefaultModel = { + provider: string + model: string +} + +export type CustomConfigrationModelFixedFields = { + __model_name: string + __model_type: ModelTypeEnum +} + +export type ModelParameterRule = { + default?: number | string | boolean | string[] + help?: TypeWithI18N + label: TypeWithI18N + min?: number + max?: number + name: string + precision?: number + required: false + type: string + use_template?: string + options?: string[] + tagPlaceholder?: TypeWithI18N +} diff --git a/web/app/components/header/account-setting/model-provider-page/hooks.ts b/web/app/components/header/account-setting/model-provider-page/hooks.ts new file mode 100644 index 000000000..125740088 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/hooks.ts @@ -0,0 +1,271 @@ +import { + useCallback, + useEffect, + useMemo, + useState, +} from 'react' +import useSWR, { useSWRConfig } from 'swr' +import { useContext } from 'use-context-selector' +import type { + CustomConfigrationModelFixedFields, + DefaultModel, + DefaultModelResponse, + Model, +} from './declarations' +import { + ConfigurateMethodEnum, + ModelTypeEnum, +} from './declarations' +import { languageMaps } from './utils' +import I18n from '@/context/i18n' +import { + fetchDefaultModal, + fetchModelList, + fetchModelProviderCredentials, + fetchModelProviders, + getPayUrl, + submitFreeQuota, +} from '@/service/common' +import { useProviderContext } from '@/context/provider-context' + +type UseDefaultModelAndModelList = ( + defaultModel: DefaultModelResponse | undefined, + modelList: Model[], +) => [DefaultModel | undefined, (model: DefaultModel) => void] +export const useSystemDefaultModelAndModelList: UseDefaultModelAndModelList = ( + defaultModel, + modelList, +) => { + const currentDefaultModel = useMemo(() => { + const currentProvider = modelList.find(provider => provider.provider === defaultModel?.provider.provider) + const currentModel = currentProvider?.models.find(model => model.model === defaultModel?.model) + const currentDefaultModel = currentProvider && currentModel && { + model: currentModel.model, + provider: currentProvider.provider, + } + + return currentDefaultModel + }, [defaultModel, modelList]) + const [defaultModelState, setDefaultModelState] = useState(currentDefaultModel) + const handleDefaultModelChange = useCallback((model: DefaultModel) => { + setDefaultModelState(model) + }, []) + useEffect(() => { + setDefaultModelState(currentDefaultModel) + }, [currentDefaultModel]) + + return [defaultModelState, handleDefaultModelChange] +} + +export const useLanguage = () => { + const { locale } = useContext(I18n) + + return languageMaps[locale] +} + +export const useProviderCrenditialsFormSchemasValue = ( + provider: string, + configurateMethod: ConfigurateMethodEnum, + configured?: boolean, + currentCustomConfigrationModelFixedFields?: CustomConfigrationModelFixedFields, +) => { + const { data: predefinedFormSchemasValue } = useSWR( + (configurateMethod === ConfigurateMethodEnum.predefinedModel && configured) + ? `/workspaces/current/model-providers/${provider}/credentials` + : null, + fetchModelProviderCredentials, + ) + const { data: customFormSchemasValue } = useSWR( + (configurateMethod === ConfigurateMethodEnum.customizableModel && currentCustomConfigrationModelFixedFields) + ? `/workspaces/current/model-providers/${provider}/models/credentials?model=${currentCustomConfigrationModelFixedFields?.__model_name}&model_type=${currentCustomConfigrationModelFixedFields?.__model_type}` + : null, + fetchModelProviderCredentials, + ) + + const value = useMemo(() => { + return configurateMethod === ConfigurateMethodEnum.predefinedModel + ? predefinedFormSchemasValue?.credentials + : customFormSchemasValue?.credentials + ? { + ...customFormSchemasValue?.credentials, + ...currentCustomConfigrationModelFixedFields, + } + : undefined + }, [ + configurateMethod, + currentCustomConfigrationModelFixedFields, + customFormSchemasValue?.credentials, + predefinedFormSchemasValue?.credentials, + ]) + + return value +} + +export type ModelTypeIndex = 1 | 2 | 3 | 4 +export const MODEL_TYPE_MAPS = { + 1: ModelTypeEnum.textGeneration, + 2: ModelTypeEnum.textEmbedding, + 3: ModelTypeEnum.rerank, + 4: ModelTypeEnum.speech2text, +} + +export const useModelList = (type: ModelTypeIndex) => { + const { data, mutate, isLoading } = useSWR(`/workspaces/current/models/model-types/${MODEL_TYPE_MAPS[type]}`, fetchModelList) + + return { + data: data?.data || [], + mutate, + isLoading, + } +} + +export const useDefaultModel = (type: ModelTypeIndex) => { + const { data, mutate, isLoading } = useSWR(`/workspaces/current/default-model?model_type=${MODEL_TYPE_MAPS[type]}`, fetchDefaultModal) + + return { + data: data?.data, + mutate, + isLoading, + } +} + +export const useCurrentProviderAndModel = (modelList: Model[], defaultModel?: DefaultModel) => { + const currentProvider = modelList.find(provider => provider.provider === defaultModel?.provider) + const currentModel = currentProvider?.models.find(model => model.model === defaultModel?.model) + + return { + currentProvider, + currentModel, + } +} + +export const useTextGenerationCurrentProviderAndModelAndModelList = (defaultModel?: DefaultModel) => { + const { textGenerationModelList } = useProviderContext() + const { + currentProvider, + currentModel, + } = useCurrentProviderAndModel(textGenerationModelList, defaultModel) + + return { + currentProvider, + currentModel, + textGenerationModelList, + } +} + +export const useAgentThoughtCurrentProviderAndModelAndModelList = (defaultModel?: DefaultModel) => { + const { agentThoughtModelList } = useProviderContext() + const { + currentProvider, + currentModel, + } = useCurrentProviderAndModel(agentThoughtModelList, defaultModel) + + return { + currentProvider, + currentModel, + agentThoughtModelList, + } +} + +export const useModelListAndDefaultModel = (type: ModelTypeIndex) => { + const { data: modelList } = useModelList(type) + const { data: defaultModel } = useDefaultModel(type) + + return { + modelList, + defaultModel, + } +} + +export const useModelListAndDefaultModelAndCurrentProviderAndModel = (type: ModelTypeIndex) => { + const { modelList, defaultModel } = useModelListAndDefaultModel(type) + const { currentProvider, currentModel } = useCurrentProviderAndModel( + modelList, + { provider: defaultModel?.provider.provider || '', model: defaultModel?.model || '' }, + ) + + return { + modelList, + defaultModel, + currentProvider, + currentModel, + } +} + +export const useUpdateModelList = () => { + const { mutate } = useSWRConfig() + + const updateModelList = useCallback((type: ModelTypeIndex | ModelTypeEnum) => { + const modelType = typeof type === 'number' ? MODEL_TYPE_MAPS[type] : type + mutate(`/workspaces/current/models/model-types/${modelType}`) + }, [mutate]) + + return updateModelList +} + +export const useAnthropicBuyQuota = () => { + const [loading, setLoading] = useState(false) + + const handleGetPayUrl = async () => { + if (loading) + return + + setLoading(true) + try { + const res = await getPayUrl('/workspaces/current/model-providers/anthropic/checkout-url') + + window.location.href = res.url + } + finally { + setLoading(false) + } + } + + return handleGetPayUrl +} + +export const useFreeQuota = (onSuccess: () => void) => { + const [loading, setLoading] = useState(false) + + const handleClick = async (type: string) => { + if (loading) + return + + try { + setLoading(true) + const res = await submitFreeQuota(`/workspaces/current/model-providers/${type}/free-quota-submit`) + + if (res.type === 'redirect' && res.redirect_url) + window.location.href = res.redirect_url + else if (res.type === 'submit' && res.result === 'success') + onSuccess() + } + finally { + setLoading(false) + } + } + + return handleClick +} + +export const useModelProviders = () => { + const { data: providersData, mutate, isLoading } = useSWR('/workspaces/current/model-providers', fetchModelProviders) + + return { + data: providersData?.data || [], + mutate, + isLoading, + } +} + +export const useUpdateModelProvidersAndModelList = () => { + const { mutate } = useSWRConfig() + const updateModelList = useUpdateModelList() + + const updateModelProvidersAndModelList = useCallback(() => { + mutate('/workspaces/current/model-providers') + updateModelList(1) + }, [mutate, updateModelList]) + + return updateModelProvidersAndModelList +} diff --git a/web/app/components/header/account-setting/model-provider-page/index.tsx b/web/app/components/header/account-setting/model-provider-page/index.tsx new file mode 100644 index 000000000..c3dbb80b2 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/index.tsx @@ -0,0 +1,130 @@ +import { useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import SystemModelSelector from './system-model-selector' +import ProviderAddedCard, { UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST } from './provider-added-card' +import ProviderCard from './provider-card' +import type { + ConfigurateMethodEnum, + CustomConfigrationModelFixedFields, + ModelProvider, +} from './declarations' +import { CustomConfigurationStatusEnum } from './declarations' +import { + useDefaultModel, + useUpdateModelProvidersAndModelList, +} from './hooks' +import { AlertTriangle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback' +import { useProviderContext } from '@/context/provider-context' +import { useModalContext } from '@/context/modal-context' +import { useEventEmitterContextContext } from '@/context/event-emitter' + +const ModelProviderPage = () => { + const { t } = useTranslation() + const { eventEmitter } = useEventEmitterContextContext() + const updateModelProvidersAndModelList = useUpdateModelProvidersAndModelList() + const { data: textGenerationDefaultModel } = useDefaultModel(1) + const { data: embeddingsDefaultModel } = useDefaultModel(2) + const { data: rerankDefaultModel } = useDefaultModel(3) + const { data: speech2textDefaultModel } = useDefaultModel(4) + const { modelProviders: providers } = useProviderContext() + const { setShowModelModal } = useModalContext() + const defaultModelNotConfigured = !textGenerationDefaultModel && !embeddingsDefaultModel && !speech2textDefaultModel && !rerankDefaultModel + const [configedProviders, notConfigedProviders] = useMemo(() => { + const configedProviders: ModelProvider[] = [] + const notConfigedProviders: ModelProvider[] = [] + + providers.forEach((provider) => { + if (provider.custom_configuration.status === CustomConfigurationStatusEnum.active || provider.system_configuration.enabled === true) + configedProviders.push(provider) + else + notConfigedProviders.push(provider) + }) + + return [configedProviders, notConfigedProviders] + }, [providers]) + + const handleOpenModal = ( + provider: ModelProvider, + configurateMethod: ConfigurateMethodEnum, + customConfigrationModelFixedFields?: CustomConfigrationModelFixedFields, + ) => { + setShowModelModal({ + payload: { + currentProvider: provider, + currentConfigurateMethod: configurateMethod, + currentCustomConfigrationModelFixedFields: customConfigrationModelFixedFields, + }, + onSaveCallback: () => { + updateModelProvidersAndModelList() + + if (customConfigrationModelFixedFields && provider.custom_configuration.status === CustomConfigurationStatusEnum.active) { + eventEmitter?.emit({ + type: UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST, + payload: provider.provider, + } as any) + } + }, + }) + } + + return ( +
+
+ { + defaultModelNotConfigured + ? ( +
+ + {t('common.modelProvider.notConfigured')} +
+ ) + :
{t('common.modelProvider.models')}
+ } + +
+ { + !!configedProviders?.length && ( +
+ { + configedProviders?.map(provider => ( + handleOpenModal(provider, configurateMethod, currentCustomConfigrationModelFixedFields)} + /> + )) + } +
+ ) + } + { + !!notConfigedProviders?.length && ( + <> +
+ + {t('common.modelProvider.addMoreModelProvider')} + +
+
+ { + notConfigedProviders?.map(provider => ( + handleOpenModal(provider, configurateMethod)} + /> + )) + } +
+ + ) + } +
+ ) +} + +export default ModelProviderPage diff --git a/web/app/components/header/account-setting/model-provider-page/model-badge/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-badge/index.tsx new file mode 100644 index 000000000..e0ea74abe --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-badge/index.tsx @@ -0,0 +1,22 @@ +import type { FC, ReactNode } from 'react' + +type ModelBadgeProps = { + className?: string + children?: ReactNode +} +const ModelBadge: FC = ({ + className, + children, +}) => { + return ( +
+ {children} +
+ ) +} + +export default ModelBadge diff --git a/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx new file mode 100644 index 000000000..e9e9bccca --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-icon/index.tsx @@ -0,0 +1,45 @@ +import type { FC } from 'react' +import type { + Model, + ModelProvider, +} from '../declarations' +import { useLanguage } from '../hooks' +import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' +import { OpenaiViolet } from '@/app/components/base/icons/src/public/llm' + +type ModelIconProps = { + provider?: Model | ModelProvider + modelName?: string + className?: string +} +const ModelIcon: FC = ({ + provider, + className, + modelName, +}) => { + const language = useLanguage() + + if (provider?.provider === 'openai' && modelName?.startsWith('gpt-4')) + return + + if (provider?.icon_small) { + return ( + model-icon + ) + } + + return ( +
+ +
+ ) +} + +export default ModelIcon diff --git a/web/app/components/header/account-setting/model-provider-page/model-modal/Form.tsx b/web/app/components/header/account-setting/model-provider-page/model-modal/Form.tsx new file mode 100644 index 000000000..788d5d5d1 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-modal/Form.tsx @@ -0,0 +1,183 @@ +import { useState } from 'react' +import type { FC } from 'react' +import { ValidatingTip } from '../../key-validator/ValidateStatus' +import type { + CredentialFormSchema, + CredentialFormSchemaRadio, + CredentialFormSchemaSecretInput, + CredentialFormSchemaSelect, + CredentialFormSchemaTextInput, + FormValue, +} from '../declarations' +import { FormTypeEnum } from '../declarations' +import { useLanguage } from '../hooks' +import Input from './Input' +import { SimpleSelect } from '@/app/components/base/select' + +type FormProps = { + value: FormValue + onChange: (val: FormValue) => void + formSchemas: CredentialFormSchema[] + validating: boolean + validatedSuccess?: boolean + showOnVariableMap: Record +} + +const Form: FC = ({ + value, + onChange, + formSchemas, + validating, + validatedSuccess, + showOnVariableMap, +}) => { + const language = useLanguage() + const [changeKey, setChangeKey] = useState('') + + const handleFormChange = (key: string, val: string) => { + setChangeKey(key) + const shouldClearVariable: Record = {} + if (showOnVariableMap[key]?.length) { + showOnVariableMap[key].forEach((clearVariable) => { + shouldClearVariable[clearVariable] = undefined + }) + } + onChange({ ...value, [key]: val, ...shouldClearVariable }) + } + + const renderField = (formSchema: CredentialFormSchema) => { + if (formSchema.type === FormTypeEnum.textInput || formSchema.type === FormTypeEnum.secretInput) { + const { + variable, + label, + placeholder, + required, + show_on, + } = formSchema as (CredentialFormSchemaTextInput | CredentialFormSchemaSecretInput) + + if (show_on.length && !show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value)) + return null + + return ( +
+
+ {label[language]} + { + required && ( + * + ) + } +
+ handleFormChange(variable, val)} + validated={validatedSuccess} + placeholder={placeholder?.[language]} + /> + {validating && changeKey === variable && } +
+ ) + } + + if (formSchema.type === FormTypeEnum.radio) { + const { + options, + variable, + label, + show_on, + required, + } = formSchema as CredentialFormSchemaRadio + + if (show_on.length && !show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value)) + return null + + return ( +
+
+ {label[language]} + { + required && ( + * + ) + } +
+
+ { + options.filter((option) => { + if (option.show_on.length) + return option.show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value) + + return true + }).map(option => ( +
handleFormChange(variable, option.value)} + key={`${variable}-${option.value}`} + > +
+
{option.label[language]}
+
+ )) + } +
+ {validating && changeKey === variable && } +
+ ) + } + + if (formSchema.type === 'select') { + const { + options, + variable, + label, + show_on, + required, + placeholder, + } = formSchema as CredentialFormSchemaSelect + + if (show_on.length && !show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value)) + return null + + return ( +
+
+ {label[language]} + { + required && ( + * + ) + } +
+ { + if (option.show_on.length) + return option.show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value) + + return true + }).map(option => ({ value: option.value, name: option.label[language] }))} + onSelect={item => handleFormChange(variable, item.value as string)} + placeholder={placeholder?.[language]} + /> + {validating && changeKey === variable && } +
+ ) + } + } + + return ( +
+ { + formSchemas.map(formSchema => renderField(formSchema)) + } +
+ ) +} + +export default Form diff --git a/web/app/components/header/account-setting/model-provider-page/model-modal/Input.tsx b/web/app/components/header/account-setting/model-provider-page/model-modal/Input.tsx new file mode 100644 index 000000000..9fe8fd0b2 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-modal/Input.tsx @@ -0,0 +1,46 @@ +import type { FC } from 'react' +import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' + +type InputProps = { + value?: string + onChange: (v: string) => void + onFocus?: () => void + placeholder?: string + validated?: boolean +} +const Input: FC = ({ + value, + onChange, + onFocus, + placeholder, + validated, +}) => { + return ( +
+ onChange(e.target.value)} + onFocus={onFocus} + value={value || ''} + /> + { + validated && ( +
+ +
+ ) + } +
+ ) +} + +export default Input diff --git a/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx new file mode 100644 index 000000000..bd94df000 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx @@ -0,0 +1,330 @@ +import type { FC } from 'react' +import { + memo, + useCallback, + useEffect, + useMemo, + useState, +} from 'react' +import { useTranslation } from 'react-i18next' +import type { + CredentialFormSchema, + CredentialFormSchemaRadio, + CredentialFormSchemaSelect, + CustomConfigrationModelFixedFields, + FormValue, + ModelProvider, +} from '../declarations' +import { + ConfigurateMethodEnum, + CustomConfigurationStatusEnum, + FormTypeEnum, +} from '../declarations' +import { + genModelNameFormSchema, + genModelTypeFormSchema, + removeCredentials, + saveCredentials, +} from '../utils' +import { + useLanguage, + useProviderCrenditialsFormSchemasValue, +} from '../hooks' +import ProviderIcon from '../provider-icon' +import { useValidate } from '../../key-validator/hooks' +import { ValidatedStatus } from '../../key-validator/declarations' +import Form from './Form' +import Button from '@/app/components/base/button' +import { Lock01 } from '@/app/components/base/icons/src/vender/solid/security' +import { LinkExternal02 } from '@/app/components/base/icons/src/vender/line/general' +import { AlertCircle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback' +import { + PortalToFollowElem, + PortalToFollowElemContent, +} from '@/app/components/base/portal-to-follow-elem' +import { useToastContext } from '@/app/components/base/toast' +import ConfirmCommon from '@/app/components/base/confirm/common' + +type ModelModalProps = { + provider: ModelProvider + configurateMethod: ConfigurateMethodEnum + currentCustomConfigrationModelFixedFields?: CustomConfigrationModelFixedFields + onCancel: () => void + onSave: () => void +} + +const ModelModal: FC = ({ + provider, + configurateMethod, + currentCustomConfigrationModelFixedFields, + onCancel, + onSave, +}) => { + const providerFormSchemaPredefined = configurateMethod === ConfigurateMethodEnum.predefinedModel + const formSchemasValue = useProviderCrenditialsFormSchemasValue( + provider.provider, + configurateMethod, + providerFormSchemaPredefined && provider.custom_configuration.status === CustomConfigurationStatusEnum.active, + currentCustomConfigrationModelFixedFields, + ) + const isEditMode = !!formSchemasValue + const { t } = useTranslation() + const { notify } = useToastContext() + const language = useLanguage() + const [loading, setLoading] = useState(false) + const [showConfirm, setShowConfirm] = useState(false) + const formSchemas = useMemo(() => { + return providerFormSchemaPredefined + ? provider.provider_credential_schema.credential_form_schemas + : [ + genModelTypeFormSchema(provider.supported_model_types), + genModelNameFormSchema(provider.model_credential_schema?.model), + ...provider.model_credential_schema.credential_form_schemas, + ] + }, [ + providerFormSchemaPredefined, + provider.provider_credential_schema?.credential_form_schemas, + provider.supported_model_types, + provider.model_credential_schema?.credential_form_schemas, + provider.model_credential_schema?.model, + ]) + const [ + requiredFormSchemas, + secretFormSchemas, + defaultFormSchemaValue, + showOnVariableMap, + ] = useMemo(() => { + const requiredFormSchemas: CredentialFormSchema[] = [] + const secretFormSchemas: CredentialFormSchema[] = [] + const defaultFormSchemaValue: Record = {} + const showOnVariableMap: Record = {} + + formSchemas.forEach((formSchema) => { + if (formSchema.required) + requiredFormSchemas.push(formSchema) + + if (formSchema.type === FormTypeEnum.secretInput) + secretFormSchemas.push(formSchema) + + if (formSchema.default) + defaultFormSchemaValue[formSchema.variable] = formSchema.default + + if (formSchema.show_on.length) { + formSchema.show_on.forEach((showOnItem) => { + if (!showOnVariableMap[showOnItem.variable]) + showOnVariableMap[showOnItem.variable] = [] + + if (!showOnVariableMap[showOnItem.variable].includes(formSchema.variable)) + showOnVariableMap[showOnItem.variable].push(formSchema.variable) + }) + } + + if (formSchema.type === FormTypeEnum.select || formSchema.type === FormTypeEnum.radio) { + (formSchema as (CredentialFormSchemaRadio | CredentialFormSchemaSelect)).options.forEach((option) => { + if (option.show_on.length) { + option.show_on.forEach((showOnItem) => { + if (!showOnVariableMap[showOnItem.variable]) + showOnVariableMap[showOnItem.variable] = [] + + if (!showOnVariableMap[showOnItem.variable].includes(formSchema.variable)) + showOnVariableMap[showOnItem.variable].push(formSchema.variable) + }) + } + }) + } + }) + + return [ + requiredFormSchemas, + secretFormSchemas, + defaultFormSchemaValue, + showOnVariableMap, + ] + }, [formSchemas]) + const initialFormSchemasValue = useMemo(() => { + return { + ...defaultFormSchemaValue, + ...formSchemasValue, + } + }, [formSchemasValue, defaultFormSchemaValue]) + const [value, setValue] = useState(initialFormSchemasValue) + useEffect(() => { + setValue(initialFormSchemasValue) + }, [initialFormSchemasValue]) + const [validate, validating, validatedStatusState] = useValidate(value) + const filteredRequiredFormSchemas = requiredFormSchemas.filter((requiredFormSchema) => { + if (requiredFormSchema.show_on.length && requiredFormSchema.show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value)) + return true + + if (!requiredFormSchema.show_on.length) + return true + + return false + }) + const getSecretValues = useCallback((v: FormValue) => { + return secretFormSchemas.reduce((prev, next) => { + if (v[next.variable] === initialFormSchemasValue[next.variable]) + prev[next.variable] = '[__HIDDEN__]' + + return prev + }, {} as Record) + }, [initialFormSchemasValue, secretFormSchemas]) + + const handleValueChange = (v: FormValue) => { + setValue(v) + } + const handleSave = async () => { + try { + setLoading(true) + + const res = await saveCredentials( + providerFormSchemaPredefined, + provider.provider, + { + ...value, + ...getSecretValues(value), + }, + ) + if (res.result === 'success') { + notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) + onSave() + onCancel() + } + } + finally { + setLoading(false) + } + } + + const handleRemove = async () => { + try { + setLoading(true) + + const res = await removeCredentials( + providerFormSchemaPredefined, + provider.provider, + value, + ) + if (res.result === 'success') { + notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) + onSave() + onCancel() + } + } + finally { + setLoading(false) + } + } + + const renderTitlePrefix = () => { + const prefix = configurateMethod === ConfigurateMethodEnum.customizableModel ? t('common.operation.add') : t('common.operation.setup') + + return `${prefix} ${provider.label[language]}` + } + + return ( + + +
+
+
+
+
{renderTitlePrefix()}
+ +
+ +
+ { + (provider.help && (provider.help.title || provider.help.url)) + ? ( + !provider.help.url && e.preventDefault()} + > + {provider.help.title?.[language] || provider.help.url[language]} + + + ) + :
+ } +
+ { + isEditMode && ( + + ) + } + + +
+
+
+
+ { + (validatedStatusState.status === ValidatedStatus.Error && validatedStatusState.message) + ? ( +
+ + {validatedStatusState.message} +
+ ) + : ( +
+ + {t('common.modelProvider.encrypted.front')} + + PKCS1_OAEP + + {t('common.modelProvider.encrypted.back')} +
+ ) + } +
+
+ { + showConfirm && ( + setShowConfirm(false)} + onConfirm={handleRemove} + confirmWrapperClassName='z-[70]' + /> + ) + } +
+ + + ) +} + +export default memo(ModelModal) diff --git a/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx new file mode 100644 index 000000000..72d45bc06 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-name/index.tsx @@ -0,0 +1,85 @@ +import type { FC } from 'react' +import { + modelTypeFormat, + sizeFormat, +} from '../utils' +import { useLanguage } from '../hooks' +import type { ModelItem } from '../declarations' +import ModelBadge from '../model-badge' +import FeatureIcon from '../model-selector/feature-icon' + +type ModelNameProps = { + modelItem: ModelItem + className?: string + showModelType?: boolean + modelTypeClassName?: string + showMode?: boolean + modeClassName?: string + showFeatures?: boolean + featuresClassName?: string + showContextSize?: boolean +} +const ModelName: FC = ({ + modelItem, + className, + showModelType, + modelTypeClassName, + showMode, + modeClassName, + showFeatures, + featuresClassName, + showContextSize, +}) => { + const language = useLanguage() + + if (!modelItem) + return null + + return ( +
+
+ {modelItem.label[language]} +
+ { + showModelType && ( + + {modelTypeFormat(modelItem.model_type)} + + ) + } + { + modelItem.model_properties.mode && showMode && ( + + {(modelItem.model_properties.mode as string).toLocaleUpperCase()} + + ) + } + { + showFeatures && modelItem.features?.map(feature => ( + + )) + } + { + showContextSize && modelItem.model_properties.context_size && ( + + {sizeFormat(modelItem.model_properties.context_size as number)} + + ) + } +
+ ) +} + +export default ModelName diff --git a/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/index.tsx new file mode 100644 index 000000000..08ec2205a --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/index.tsx @@ -0,0 +1,223 @@ +import type { FC } from 'react' +import { useEffect, useState } from 'react' +import useSWR from 'swr' +import { useTranslation } from 'react-i18next' +import type { + DefaultModel, + FormValue, + ModelParameterRule, +} from '../declarations' +import ModelIcon from '../model-icon' +import ModelName from '../model-name' +import ModelSelector from '../model-selector' +import { useTextGenerationCurrentProviderAndModelAndModelList } from '../hooks' +import ParameterItem from './parameter-item' +import type { ParameterValue } from './parameter-item' +import { + PortalToFollowElem, + PortalToFollowElemContent, + PortalToFollowElemTrigger, +} from '@/app/components/base/portal-to-follow-elem' +import { SlidersH } from '@/app/components/base/icons/src/vender/line/mediaAndDevices' +import { AlertTriangle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' +import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' +import { fetchModelParameterRules } from '@/service/common' +import Loading from '@/app/components/base/loading' + +type ModelParameterModalProps = { + isAdvancedMode: boolean + mode: string + modelId: string + provider: string + setModel: (model: { modelId: string; provider: string; mode?: string; features: string[] }) => void + completionParams: FormValue + onCompletionParamsChange: (newParams: FormValue) => void + disabled: boolean +} +const stopParameerRule: ModelParameterRule = { + default: [], + help: { + en_US: 'Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.', + zh_Hans: '最多四个序列,API 将停止生成更多的 token。返回的文本将不包含停止序列。', + }, + label: { + en_US: 'Stop sequences', + zh_Hans: '停止序列 stop_sequences', + }, + name: 'stop', + required: false, + type: 'tag', + tagPlaceholder: { + en_US: 'Enter sequence and press Tab', + zh_Hans: '输入序列并按 Tab 键', + }, +} +const ModelParameterModal: FC = ({ + isAdvancedMode, + modelId, + provider, + setModel, + completionParams, + onCompletionParamsChange, + disabled, +}) => { + const { t } = useTranslation() + const [open, setOpen] = useState(false) + const { data: parameterRulesData, isLoading } = useSWR(`/workspaces/current/model-providers/${provider}/models/parameter-rules?model=${modelId}`, fetchModelParameterRules) + const { + currentProvider, + currentModel, + textGenerationModelList, + } = useTextGenerationCurrentProviderAndModelAndModelList( + { provider, model: modelId }, + ) + + const parameterRules = parameterRulesData?.data || [] + + const handleParamChange = (key: string, value: ParameterValue) => { + onCompletionParamsChange({ + ...completionParams, + [key]: value, + }) + } + + const handleChangeModel = ({ provider, model }: DefaultModel) => { + const targetProvider = textGenerationModelList.find(modelItem => modelItem.provider === provider) + const targetModelItem = targetProvider?.models.find(modelItem => modelItem.model === model) + setModel({ + modelId: model, + provider, + mode: targetModelItem?.model_properties.mode as string, + features: targetModelItem?.features || [], + }) + } + + const handleChangeParams = () => { + const newCompletionParams = parameterRules.reduce((acc, parameter) => { + if (parameter.default !== undefined) + acc[parameter.name] = parameter.default + + return acc + }, {} as Record) + + onCompletionParamsChange(newCompletionParams) + } + + useEffect(() => { + handleChangeParams() + }, [parameterRules]) + + const handleSwitch = (key: string, value: boolean, assignValue: ParameterValue) => { + if (!value) { + const newCompletionParams = { ...completionParams } + delete newCompletionParams[key] + + onCompletionParamsChange(newCompletionParams) + } + if (value) { + onCompletionParamsChange({ + ...completionParams, + [key]: assignValue, + }) + } + } + + return ( + +
+ setOpen(v => !v)} + className='block' + > +
+ { + currentProvider && ( + + ) + } + { + currentModel && ( + + ) + } + { + disabled + ? ( + + ) + : ( + + ) + } +
+
+ +
+
+ + {t('common.modelProvider.modelAndParameters')} +
+
+
+
+ {t('common.modelProvider.model')} +
+ +
+
+ { + isLoading && ( + + ) + } + { + !isLoading && ( + [ + ...parameterRules, + ...(isAdvancedMode ? [stopParameerRule] : []), + ].map(parameter => ( + handleParamChange(parameter.name, v)} + onSwitch={(checked, assignValue) => handleSwitch(parameter.name, checked, assignValue)} + /> + )) + ) + } +
+
+ +
+ + ) +} + +export default ModelParameterModal diff --git a/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/parameter-item.tsx b/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/parameter-item.tsx new file mode 100644 index 000000000..a641684ff --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/parameter-item.tsx @@ -0,0 +1,223 @@ +import type { FC } from 'react' +import { useState } from 'react' +import type { ModelParameterRule } from '../declarations' +import { useLanguage } from '../hooks' +import { isNullOrUndefined } from '../utils' +import { HelpCircle } from '@/app/components/base/icons/src/vender/line/general' +import Switch from '@/app/components/base/switch' +import Tooltip from '@/app/components/base/tooltip' +import Slider from '@/app/components/base/slider' +import Radio from '@/app/components/base/radio' +import { SimpleSelect } from '@/app/components/base/select' +import TagInput from '@/app/components/base/tag-input' + +export type ParameterValue = number | string | string[] | boolean | undefined +type ParameterItemProps = { + parameterRule: ModelParameterRule + value?: ParameterValue + onChange?: (value: ParameterValue) => void + className?: string + onSwitch?: (checked: boolean, assignValue: ParameterValue) => void +} +const ParameterItem: FC = ({ + parameterRule, + value, + onChange, + className, + onSwitch, +}) => { + const language = useLanguage() + const [localValue, setLocalValue] = useState(value) + const mergedValue = isNullOrUndefined(value) ? localValue : value + const renderValue = mergedValue === undefined ? parameterRule.default : mergedValue + + const handleChange = (v: ParameterValue) => { + setLocalValue(v) + if (!isNullOrUndefined(value) && onChange) + onChange(v) + } + + const handleNumberInputChange = (e: React.ChangeEvent) => { + let num = +e.target.value + + if (!isNullOrUndefined(parameterRule.max) && num > parameterRule.max!) + num = parameterRule.max as number + + if (!isNullOrUndefined(parameterRule.min) && num < parameterRule.min!) + num = parameterRule.min as number + + handleChange(num) + } + + const handleSlideChange = (num: number) => { + handleChange(num) + } + + const handleRadioChange = (v: number) => { + handleChange(v === 1) + } + + const handleStringInputChange = (e: React.ChangeEvent) => { + handleChange(e.target.value) + } + + const handleSelect = (option: { value: string | number; name: string }) => { + handleChange(option.value) + } + + const handleTagChange = (newSequences: string[]) => { + handleChange(newSequences) + } + + const handleSwitch = (checked: boolean) => { + if (onSwitch) { + let assignValue: ParameterValue = localValue + + if (isNullOrUndefined(localValue)) { + if (parameterRule.type === 'int' || parameterRule.type === 'float') + assignValue = !isNullOrUndefined(parameterRule.default) ? parameterRule.default : 0 + + if (parameterRule.type === 'string' && !parameterRule.options?.length) + assignValue = parameterRule.default || '' + + if (parameterRule.type === 'string' && parameterRule.options?.length) + assignValue = parameterRule.options[0] + + if (parameterRule.type === 'boolean') + assignValue = !isNullOrUndefined(parameterRule.default) ? parameterRule.default : false + + if (parameterRule.type === 'tag') + assignValue = !isNullOrUndefined(parameterRule.default) ? parameterRule.default : [] + } + + onSwitch(checked, assignValue) + } + } + + const numberInputWithSlide = (parameterRule.type === 'int' || parameterRule.type === 'float') + && !isNullOrUndefined(parameterRule.min) + && !isNullOrUndefined(parameterRule.max) + const numberInput = (parameterRule.type === 'int' || parameterRule.type === 'float') + && (isNullOrUndefined(parameterRule.min) || isNullOrUndefined(parameterRule.max)) + + return ( +
+
+
+
+ {parameterRule.label[language]} +
+ { + parameterRule.help && ( + {parameterRule.help[language]}
+ )} + > + + + ) + } + { + !parameterRule.required && parameterRule.name !== 'stop' && ( + + ) + } +
+ { + parameterRule.type === 'tag' && ( +
+ {parameterRule?.tagPlaceholder?.[language]} +
+ ) + } +
+ { + numberInputWithSlide && ( +
+ + +
+ ) + } + { + parameterRule.type === 'boolean' && ( + + True + False + + ) + } + { + numberInput && ( + + ) + } + { + parameterRule.type === 'string' && !parameterRule.options?.length && ( + + ) + } + { + parameterRule.type === 'string' && parameterRule?.options?.length && ( + ({ value: option, name: option }))} + /> + ) + } + { + parameterRule.type === 'tag' && ( +
+ +
+ ) + } +
+ ) +} + +export default ParameterItem diff --git a/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/stop-sequence.tsx b/web/app/components/header/account-setting/model-provider-page/model-parameter-modal/stop-sequence.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/empty-trigger.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/empty-trigger.tsx new file mode 100644 index 000000000..d48b484a3 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/empty-trigger.tsx @@ -0,0 +1,39 @@ +import type { FC } from 'react' +import { ChevronDown } from '@/app/components/base/icons/src/vender/line/arrows' +import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' + +type ModelTriggerProps = { + open: boolean + className?: string +} +const ModelTrigger: FC = ({ + open, + className, +}) => { + return ( +
+
+
+ +
+
+ Select model +
+
+
+ +
+
+ ) +} + +export default ModelTrigger diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx new file mode 100644 index 000000000..c64b8ca73 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx @@ -0,0 +1,77 @@ +import type { FC } from 'react' +import { useTranslation } from 'react-i18next' +import ModelBadge from '../model-badge' +import { + ModelFeatureEnum, + ModelFeatureTextEnum, +} from '../declarations' +import { + MagicBox, + MagicEyes, + MagicWand, + Robot, +} from '@/app/components/base/icons/src/vender/solid/mediaAndDevices' +import TooltipPlus from '@/app/components/base/tooltip-plus' + +type FeatureIconProps = { + feature: ModelFeatureEnum + className?: string +} +const FeatureIcon: FC = ({ + className, + feature, +}) => { + const { t } = useTranslation() + + if (feature === ModelFeatureEnum.agentThought) { + return ( + + + + + + ) + } + + if (feature === ModelFeatureEnum.toolCall) { + return ( + + + + + + ) + } + + if (feature === ModelFeatureEnum.multiToolCall) { + return ( + + + + + + ) + } + + if (feature === ModelFeatureEnum.vision) { + return ( + + + + + + ) + } + + return null +} + +export default FeatureIcon diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/index.tsx new file mode 100644 index 000000000..e6f1efeb5 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/index.tsx @@ -0,0 +1,100 @@ +import type { FC } from 'react' +import { useState } from 'react' +import type { + DefaultModel, + Model, + ModelItem, +} from '../declarations' +import { useCurrentProviderAndModel } from '../hooks' +import ModelTrigger from './model-trigger' +import EmptyTrigger from './empty-trigger' +import Popup from './popup' +import { + PortalToFollowElem, + PortalToFollowElemContent, + PortalToFollowElemTrigger, +} from '@/app/components/base/portal-to-follow-elem' + +type ModelSelectorProps = { + defaultModel?: DefaultModel + modelList: Model[] + triggerClassName?: string + popupClassName?: string + onSelect?: (model: DefaultModel) => void + readonly?: boolean +} +const ModelSelector: FC = ({ + defaultModel, + modelList, + triggerClassName, + popupClassName, + onSelect, + readonly, +}) => { + const [open, setOpen] = useState(false) + const { + currentProvider, + currentModel, + } = useCurrentProviderAndModel( + modelList, + defaultModel, + ) + + const handleSelect = (provider: string, model: ModelItem) => { + setOpen(false) + + if (onSelect) + onSelect({ provider, model: model.model }) + } + + const handleToggle = () => { + if (readonly) + return + + setOpen(v => !v) + } + + return ( + +
+ + { + currentModel && currentProvider && ( + + ) + } + { + !currentModel && ( + + ) + } + + + + +
+
+ ) +} + +export default ModelSelector diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx new file mode 100644 index 000000000..6a2d9b0f7 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx @@ -0,0 +1,51 @@ +import type { FC } from 'react' +import type { + Model, + ModelItem, +} from '../declarations' +import ModelIcon from '../model-icon' +import ModelName from '../model-name' +// import { AlertTriangle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback' +import { ChevronDown } from '@/app/components/base/icons/src/vender/line/arrows' + +type ModelTriggerProps = { + open: boolean + provider: Model + model: ModelItem + className?: string +} +const ModelTrigger: FC = ({ + open, + provider, + model, + className, +}) => { + return ( +
+ + +
+ +
+
+ ) +} + +export default ModelTrigger diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/popup-item.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/popup-item.tsx new file mode 100644 index 000000000..2a71859de --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/popup-item.tsx @@ -0,0 +1,127 @@ +import type { FC } from 'react' +import { useTranslation } from 'react-i18next' +import type { + DefaultModel, + Model, + ModelItem, +} from '../declarations' +import { + useLanguage, + useUpdateModelList, + useUpdateModelProvidersAndModelList, +} from '../hooks' +import ModelIcon from '../model-icon' +import ModelName from '../model-name' +import { + ConfigurateMethodEnum, + MODEL_STATUS_TEXT, + ModelStatusEnum, + ModelTypeEnum, +} from '../declarations' +import { Check } from '@/app/components/base/icons/src/vender/line/general' +import { useModalContext } from '@/context/modal-context' +import { useProviderContext } from '@/context/provider-context' +import Tooltip from '@/app/components/base/tooltip' + +type PopupItemProps = { + defaultModel?: DefaultModel + model: Model + onSelect: (provider: string, model: ModelItem) => void +} +const PopupItem: FC = ({ + defaultModel, + model, + onSelect, +}) => { + const { t } = useTranslation() + const language = useLanguage() + const { setShowModelModal } = useModalContext() + const { modelProviders } = useProviderContext() + const updateModelList = useUpdateModelList() + const updateModelProvidersAndModelList = useUpdateModelProvidersAndModelList() + const currentProvider = modelProviders.find(provider => provider.provider === model.provider)! + const handleSelect = (provider: string, modelItem: ModelItem) => { + if (modelItem.status !== ModelStatusEnum.active) + return + + onSelect(provider, modelItem) + } + const handleOpenModelModal = () => { + setShowModelModal({ + payload: { + currentProvider, + currentConfigurateMethod: ConfigurateMethodEnum.predefinedModel, + }, + onSaveCallback: () => { + updateModelProvidersAndModelList() + + const modelType = model.models[0].model_type + + if (modelType !== ModelTypeEnum.textGeneration) + updateModelList(modelType) + }, + }) + } + + return ( +
+
+ {model.label[language]} +
+ { + model.models.map(modelItem => ( + +
handleSelect(model.provider, modelItem)} + > + + + { + defaultModel?.model === modelItem.model && ( + + ) + } + { + modelItem.status === ModelStatusEnum.noConfigure && ( +
+ {t('common.operation.add').toLocaleUpperCase()} +
+ ) + } +
+
+ )) + } +
+ ) +} + +export default PopupItem diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/popup.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/popup.tsx new file mode 100644 index 000000000..3cb420c47 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/popup.tsx @@ -0,0 +1,80 @@ +import type { FC } from 'react' +import { useState } from 'react' +import type { + DefaultModel, + Model, + ModelItem, +} from '../declarations' +import { useLanguage } from '../hooks' +import PopupItem from './popup-item' +import { SearchLg } from '@/app/components/base/icons/src/vender/line/general' +import { XCircle } from '@/app/components/base/icons/src/vender/solid/general' + +type PopupProps = { + defaultModel?: DefaultModel + modelList: Model[] + onSelect: (provider: string, model: ModelItem) => void +} +const Popup: FC = ({ + defaultModel, + modelList, + onSelect, +}) => { + const language = useLanguage() + const [searchText, setSearchText] = useState('') + + const filteredModelList = modelList.filter(model => model.models.filter(modelItem => modelItem.label[language].includes(searchText)).length) + + return ( +
+
+
+ + setSearchText(e.target.value)} + /> + { + searchText && ( + setSearchText('')} + /> + ) + } +
+
+
+ { + filteredModelList.map(model => ( + + )) + } + { + !filteredModelList.length && ( +
+ {`No model found for “${searchText}”`} +
+ ) + } +
+
+ ) +} + +export default Popup diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/rerank-trigger.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/rerank-trigger.tsx new file mode 100644 index 000000000..251201f21 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/model-selector/rerank-trigger.tsx @@ -0,0 +1,25 @@ +import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' +import { LinkExternal01 } from '@/app/components/base/icons/src/vender/line/general' + +const ModelTrigger = () => { + return ( +
+
+
+ +
+
+ Please setup the Rerank model +
+
+
+ +
+
+ ) +} + +export default ModelTrigger diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/add-model-button.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/add-model-button.tsx new file mode 100644 index 000000000..cc8fa67ef --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/add-model-button.tsx @@ -0,0 +1,29 @@ +import type { FC } from 'react' +import { useTranslation } from 'react-i18next' +import { PlusCircle } from '@/app/components/base/icons/src/vender/solid/general' + +type AddModelButtonProps = { + className?: string + onClick: () => void +} +const AddModelButton: FC = ({ + className, + onClick, +}) => { + const { t } = useTranslation() + + return ( + + + {t('common.modelProvider.addModel')} + + ) +} + +export default AddModelButton diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx new file mode 100644 index 000000000..87752dba6 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx @@ -0,0 +1,81 @@ +import type { FC } from 'react' +import { useTranslation } from 'react-i18next' +import { useSWRConfig } from 'swr' +import type { ModelProvider } from '../declarations' +import { + CustomConfigurationStatusEnum, + PreferredProviderTypeEnum, +} from '../declarations' +import { useUpdateModelList } from '../hooks' +import PrioritySelector from './priority-selector' +import PriorityUseTip from './priority-use-tip' +import Indicator from '@/app/components/header/indicator' +import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' +import Button from '@/app/components/base/button' +import { changeModelProviderPriority } from '@/service/common' +import { useToastContext } from '@/app/components/base/toast' + +type CredentialPanelProps = { + provider: ModelProvider + onSetup: () => void +} +const CredentialPanel: FC = ({ + provider, + onSetup, +}) => { + const { t } = useTranslation() + const { notify } = useToastContext() + const { mutate } = useSWRConfig() + const updateModelList = useUpdateModelList() + const customConfig = provider.custom_configuration + const systemConfig = provider.system_configuration + const priorityUseType = provider.preferred_provider_type + const customConfiged = customConfig.status === CustomConfigurationStatusEnum.active + + const handleChangePriority = async (key: PreferredProviderTypeEnum) => { + const res = await changeModelProviderPriority({ + url: `/workspaces/current/model-providers/${provider.provider}/preferred-provider-type`, + body: { + preferred_provider_type: key, + }, + }) + if (res.result === 'success') { + notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) + mutate('/workspaces/current/model-providers') + updateModelList(1) + } + } + + return ( +
+
+ API-KEY + +
+
+ + { + systemConfig.enabled && customConfiged && ( + + ) + } +
+ { + priorityUseType === PreferredProviderTypeEnum.custom && systemConfig.enabled && ( + + ) + } +
+ ) +} + +export default CredentialPanel diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx new file mode 100644 index 000000000..9a689f6dc --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx @@ -0,0 +1,161 @@ +import type { FC } from 'react' +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import type { + CustomConfigrationModelFixedFields, + ModelItem, + ModelProvider, +} from '../declarations' +import { ConfigurateMethodEnum } from '../declarations' +import { + DEFAULT_BACKGROUND_COLOR, + modelTypeFormat, +} from '../utils' +import ProviderIcon from '../provider-icon' +import ModelBadge from '../model-badge' +import CredentialPanel from './credential-panel' +import QuotaPanel from './quota-panel' +import ModelList from './model-list' +import AddModelButton from './add-model-button' +import { ChevronDownDouble } from '@/app/components/base/icons/src/vender/line/arrows' +import { Loading02 } from '@/app/components/base/icons/src/vender/line/general' +import { fetchModelProviderModelList } from '@/service/common' +import { useEventEmitterContextContext } from '@/context/event-emitter' + +export const UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST = 'UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST' +type ProviderAddedCardProps = { + provider: ModelProvider + onOpenModal: (configurateMethod: ConfigurateMethodEnum, currentCustomConfigrationModelFixedFields?: CustomConfigrationModelFixedFields) => void +} +const ProviderAddedCard: FC = ({ + provider, + onOpenModal, +}) => { + const { t } = useTranslation() + const { eventEmitter } = useEventEmitterContextContext() + const [fetched, setFetched] = useState(false) + const [loading, setLoading] = useState(false) + const [collapsed, setCollapsed] = useState(true) + const [modelList, setModelList] = useState([]) + const configurateMethods = provider.configurate_methods.filter(method => method !== ConfigurateMethodEnum.fetchFromRemote) + const systemConfig = provider.system_configuration + const hasModelList = fetched && !!modelList.length + const showQuota = systemConfig.enabled || ['minimax', 'spark', 'zhipuai', 'anthropic'].includes(provider.provider) + + const getModelList = async (providerName: string) => { + if (loading) + return + try { + setLoading(true) + const modelsData = await fetchModelProviderModelList(`/workspaces/current/model-providers/${providerName}/models`) + setModelList(modelsData.data) + setCollapsed(false) + setFetched(true) + } + finally { + setLoading(false) + } + } + const handleOpenModelList = () => { + if (fetched) { + setCollapsed(false) + return + } + + getModelList(provider.provider) + } + + eventEmitter?.useSubscription((v: any) => { + if (v?.type === UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST && v.payload === provider.provider) + getModelList(v.payload) + }) + + return ( +
+
+
+ +
+ { + provider.supported_model_types.map(modelType => ( + + {modelTypeFormat(modelType)} + + )) + } +
+
+ { + showQuota && ( + + ) + } + { + configurateMethods.includes(ConfigurateMethodEnum.predefinedModel) && ( + onOpenModal(ConfigurateMethodEnum.predefinedModel)} + provider={provider} + /> + ) + } +
+ { + collapsed && ( +
+
+ { + hasModelList + ? t('common.modelProvider.modelsNum', { num: modelList.length }) + : t('common.modelProvider.showModels') + } +
+
+ + { + hasModelList + ? t('common.modelProvider.showModelsNum', { num: modelList.length }) + : t('common.modelProvider.showModels') + } + { + loading && ( + + ) + } +
+ { + configurateMethods.includes(ConfigurateMethodEnum.customizableModel) && ( + onOpenModal(ConfigurateMethodEnum.customizableModel)} + className='hidden group-hover:flex group-hover:text-primary-600' + /> + ) + } +
+ ) + } + { + !collapsed && ( + setCollapsed(true)} + onConfig={currentCustomConfigrationModelFixedFields => onOpenModal(ConfigurateMethodEnum.customizableModel, currentCustomConfigrationModelFixedFields)} + /> + ) + } +
+ ) +} + +export default ProviderAddedCard diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx new file mode 100644 index 000000000..ad0994790 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-list.tsx @@ -0,0 +1,121 @@ +import type { FC } from 'react' +import { useTranslation } from 'react-i18next' +import type { + CustomConfigrationModelFixedFields, + ModelItem, + ModelProvider, +} from '../declarations' +import { + ConfigurateMethodEnum, + ModelStatusEnum, +} from '../declarations' +import { useLanguage } from '../hooks' +import ModelIcon from '../model-icon' +import ModelName from '../model-name' +// import Tab from './tab' +import AddModelButton from './add-model-button' +import Indicator from '@/app/components/header/indicator' +import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' +import { ChevronDownDouble } from '@/app/components/base/icons/src/vender/line/arrows' +import Button from '@/app/components/base/button' + +type ModelListProps = { + provider: ModelProvider + models: ModelItem[] + onCollapse: () => void + onConfig: (currentCustomConfigrationModelFixedFields?: CustomConfigrationModelFixedFields) => void +} +const ModelList: FC = ({ + provider, + models, + onCollapse, + onConfig, +}) => { + const { t } = useTranslation() + const language = useLanguage() + const configurateMethods = provider.configurate_methods.filter(method => method !== ConfigurateMethodEnum.fetchFromRemote) + const canCustomConfig = configurateMethods.includes(ConfigurateMethodEnum.customizableModel) + // const canSystemConfig = configurateMethods.includes(ConfigurateMethodEnum.predefinedModel) + + return ( +
+
+
+ + + {t('common.modelProvider.modelsNum', { num: models.length })} + + + + {/* { + canCustomConfig && canSystemConfig && ( + + {}} /> + + ) + } */} + { + canCustomConfig && ( +
+ onConfig()} /> +
+ ) + } +
+ { + models.map(model => ( +
+
+ + +
+ { + model.fetch_from === ConfigurateMethodEnum.customizableModel && ( + + ) + } + +
+
+ )) + } +
+
+ ) +} + +export default ModelList diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-selector.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-selector.tsx new file mode 100644 index 000000000..3b9f73c55 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-selector.tsx @@ -0,0 +1,72 @@ +import { Fragment } from 'react' +import type { FC } from 'react' +import { Popover, Transition } from '@headlessui/react' +import { useTranslation } from 'react-i18next' +import { PreferredProviderTypeEnum } from '../declarations' +import { Check, DotsHorizontal } from '@/app/components/base/icons/src/vender/line/general' +import Button from '@/app/components/base/button' + +type SelectorProps = { + value?: string + onSelect: (key: PreferredProviderTypeEnum) => void +} +const Selector: FC = ({ + value, + onSelect, +}) => { + const { t } = useTranslation() + const options = [ + { + key: PreferredProviderTypeEnum.custom, + text: 'API', + }, + { + key: PreferredProviderTypeEnum.system, + text: t('common.modelProvider.quota'), + }, + ] + + return ( + + + { + ({ open }) => ( + + ) + } + + + +
+
{t('common.modelProvider.card.priorityUse')}
+ { + options.map(option => ( + +
onSelect(option.key)} + > +
{option.text}
+ {value === option.key && } +
+
+ )) + } +
+
+
+
+ ) +} + +export default Selector diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-use-tip.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-use-tip.tsx new file mode 100644 index 000000000..294a13ecf --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/priority-use-tip.tsx @@ -0,0 +1,20 @@ +import { useTranslation } from 'react-i18next' +import { ChevronDownDouble } from '@/app/components/base/icons/src/vender/line/arrows' +import Tooltip from '@/app/components/base/tooltip' + +const PriorityUseTip = () => { + const { t } = useTranslation() + + return ( + +
+ +
+
+ ) +} + +export default PriorityUseTip diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/quota-panel.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/quota-panel.tsx new file mode 100644 index 000000000..4a8731e89 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/quota-panel.tsx @@ -0,0 +1,98 @@ +import type { FC } from 'react' +import { useSWRConfig } from 'swr' +import { useTranslation } from 'react-i18next' +import type { ModelProvider } from '../declarations' +import { + CustomConfigurationStatusEnum, + PreferredProviderTypeEnum, + QuotaUnitEnum, +} from '../declarations' +import { + useAnthropicBuyQuota, + useFreeQuota, +} from '../hooks' +import PriorityUseTip from './priority-use-tip' +import { InfoCircle } from '@/app/components/base/icons/src/vender/line/general' +import Button from '@/app/components/base/button' + +type QuotaPanelProps = { + provider: ModelProvider +} +const QuotaPanel: FC = ({ + provider, +}) => { + const { t } = useTranslation() + const { mutate } = useSWRConfig() + const handlePay = useAnthropicBuyQuota() + const handleFreeQuotaSuccess = () => { + mutate('/workspaces/current/model-providers') + } + const handleFreeQuota = useFreeQuota(handleFreeQuotaSuccess) + const customConfig = provider.custom_configuration + const priorityUseType = provider.preferred_provider_type + const systemConfig = provider.system_configuration + const currentQuota = systemConfig.enabled && systemConfig.quota_configurations.find(item => item.quota_type === systemConfig.current_quota_type) + + return ( +
+
+ {t('common.modelProvider.quota')} + +
+ { + currentQuota && ( +
+ {(currentQuota?.quota_limit || 0) - (currentQuota?.quota_used || 0)} + { + currentQuota?.quota_unit === QuotaUnitEnum.tokens && 'Tokens' + } + { + currentQuota?.quota_unit === QuotaUnitEnum.times && t('common.modelProvider.callTimes') + } +
+ ) + } + { + !currentQuota && provider.provider === 'anthropic' && ( + + ) + } + { + !currentQuota && ['minimax', 'spark', 'zhipuai'].includes(provider.provider) && ( + + ) + } + { + provider.provider === 'anthropic' && systemConfig.enabled && ( + + ) + } + { + priorityUseType === PreferredProviderTypeEnum.system && customConfig.status === CustomConfigurationStatusEnum.active && ( + + ) + } +
+ ) +} + +export default QuotaPanel diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/tab.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/tab.tsx new file mode 100644 index 000000000..5a533947d --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/tab.tsx @@ -0,0 +1,45 @@ +import type { FC } from 'react' + +type TabProps = { + active: string + onSelect: (active: string) => void +} +const Tab: FC = ({ + active, + onSelect, +}) => { + const tabs = [ + { + key: 'all', + text: 'All', + }, + { + key: 'added', + text: 'Added', + }, + { + key: 'build-in', + text: 'Build-in', + }, + ] + return ( +
+ { + tabs.map(tab => ( +
onSelect(tab.key)} + > + {tab.text} +
+ )) + } +
+ ) +} + +export default Tab diff --git a/web/app/components/header/account-setting/model-page/model-item/index.module.css b/web/app/components/header/account-setting/model-provider-page/provider-card/index.module.css similarity index 100% rename from web/app/components/header/account-setting/model-page/model-item/index.module.css rename to web/app/components/header/account-setting/model-provider-page/provider-card/index.module.css diff --git a/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx b/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx new file mode 100644 index 000000000..b99732c21 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-card/index.tsx @@ -0,0 +1,154 @@ +import type { FC } from 'react' +import { useSWRConfig } from 'swr' +import { useTranslation } from 'react-i18next' +import type { + ModelProvider, + TypeWithI18N, +} from '../declarations' +import { ConfigurateMethodEnum } from '../declarations' +import { + DEFAULT_BACKGROUND_COLOR, + modelTypeFormat, +} from '../utils' +import { + useAnthropicBuyQuota, + useFreeQuota, + useLanguage, +} from '../hooks' +import ModelBadge from '../model-badge' +import ProviderIcon from '../provider-icon' +import s from './index.module.css' +import { Plus, Settings01 } from '@/app/components/base/icons/src/vender/line/general' +import { CoinsStacked01 } from '@/app/components/base/icons/src/vender/line/financeAndECommerce' +import Button from '@/app/components/base/button' + +type ProviderCardProps = { + provider: ModelProvider + onOpenModal: (configurateMethod: ConfigurateMethodEnum) => void +} + +const TIP_MAP: { [k: string]: TypeWithI18N } = { + minimax: { + en_US: 'Earn 1 million tokens for free', + zh_Hans: '免费获取 100 万个 token', + }, + spark: { + en_US: 'Earn 3 million tokens (v3.0) for free', + zh_Hans: '免费获取 300 万个 token (v3.0)', + }, + zhipuai: { + en_US: 'Earn 10 million tokens for free', + zh_Hans: '免费获取 1000 万个 token', + }, +} +const ProviderCard: FC = ({ + provider, + onOpenModal, +}) => { + const { t } = useTranslation() + const language = useLanguage() + const { mutate } = useSWRConfig() + const handlePay = useAnthropicBuyQuota() + const handleFreeQuotaSuccess = () => { + mutate('/workspaces/current/model-providers') + } + const handleFreeQuota = useFreeQuota(handleFreeQuotaSuccess) + const configurateMethods = provider.configurate_methods.filter(method => method !== ConfigurateMethodEnum.fetchFromRemote) + const canGetFreeQuota = ['mininmax', 'spark', 'zhipuai'].includes(provider.provider) + + return ( +
+
+
+ +
+ { + provider.description && ( +
{provider.description[language]}
+ ) + } +
+
+
+ { + provider.supported_model_types.map(modelType => ( + + {modelTypeFormat(modelType)} + + )) + } + { + canGetFreeQuota && ( +
+ 📣  +
+ {TIP_MAP[provider.provider][language]} +
+
+ ) + } +
+ { + canGetFreeQuota && ( +
+ +
+ ) + } +
+ { + configurateMethods.map((method) => { + if (method === ConfigurateMethodEnum.predefinedModel) { + return ( + + ) + } + return ( + + ) + }) + } + { + provider.provider === 'anthropic' && ( + + ) + } +
+
+
+ ) +} + +export default ProviderCard diff --git a/web/app/components/header/account-setting/model-provider-page/provider-icon/index.tsx b/web/app/components/header/account-setting/model-provider-page/provider-icon/index.tsx new file mode 100644 index 000000000..6b423ce75 --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-icon/index.tsx @@ -0,0 +1,34 @@ +import type { FC } from 'react' +import type { ModelProvider } from '../declarations' +import { useLanguage } from '../hooks' + +type ProviderIconProps = { + provider: ModelProvider + className?: string +} +const ProviderIcon: FC = ({ + provider, + className, +}) => { + const language = useLanguage() + + if (provider.icon_large) { + return ( + provider-icon + ) + } + + return ( +
+
+ {provider.label[language]} +
+
+ ) +} + +export default ProviderIcon diff --git a/web/app/components/header/account-setting/model-page/system-model/index.tsx b/web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx similarity index 55% rename from web/app/components/header/account-setting/model-page/system-model/index.tsx rename to web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx index b55dc7d8e..d382562bd 100644 --- a/web/app/components/header/account-setting/model-page/system-model/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx @@ -2,9 +2,16 @@ import type { FC } from 'react' import { useState } from 'react' import { useTranslation } from 'react-i18next' import ModelSelector from '../model-selector' +import { + useModelList, + useSystemDefaultModelAndModelList, + useUpdateModelList, +} from '../hooks' import type { - BackendModel, ProviderEnum, + DefaultModel, + DefaultModelResponse, } from '../declarations' +import { ModelTypeEnum } from '../declarations' import Tooltip from '@/app/components/base/tooltip' import { HelpCircle, Settings01 } from '@/app/components/base/icons/src/vender/line/general' import { @@ -12,76 +19,89 @@ import { PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' +import Button from '@/app/components/base/button' import { useProviderContext } from '@/context/provider-context' import { updateDefaultModel } from '@/service/common' -import { ModelType } from '@/app/components/header/account-setting/model-page/declarations' import { useToastContext } from '@/app/components/base/toast' -import Button from '@/app/components/base/button' -type SystemModelProps = { - onUpdate: () => void +type SystemModelSelectorProps = { + textGenerationDefaultModel: DefaultModelResponse | undefined + embeddingsDefaultModel: DefaultModelResponse | undefined + rerankDefaultModel: DefaultModelResponse | undefined + speech2textDefaultModel: DefaultModelResponse | undefined } -const SystemModel: FC = ({ - onUpdate, +const SystemModel: FC = ({ + textGenerationDefaultModel, + embeddingsDefaultModel, + rerankDefaultModel, + speech2textDefaultModel, }) => { const { t } = useTranslation() - const { - textGenerationDefaultModel, - mutateTextGenerationDefaultModel, - embeddingsDefaultModel, - mutateEmbeddingsDefaultModel, - speech2textDefaultModel, - mutateSpeech2textDefaultModel, - rerankDefaultModel, - mutateRerankDefaultModel, - } = useProviderContext() const { notify } = useToastContext() + const { textGenerationModelList } = useProviderContext() + const updateModelList = useUpdateModelList() + const { data: embeddingModelList } = useModelList(2) + const { data: rerankModelList } = useModelList(3) + const { data: speech2textModelList } = useModelList(4) + const [changedModelTypes, setChangedModelTypes] = useState([]) + const [currentTextGenerationDefaultModel, changeCurrentTextGenerationDefaultModel] = useSystemDefaultModelAndModelList(textGenerationDefaultModel, textGenerationModelList) + const [currentEmbeddingsDefaultModel, changeCurrentEmbeddingsDefaultModel] = useSystemDefaultModelAndModelList(embeddingsDefaultModel, embeddingModelList) + const [currentRerankDefaultModel, changeCurrentRerankDefaultModel] = useSystemDefaultModelAndModelList(rerankDefaultModel, rerankModelList) + const [currentSpeech2textDefaultModel, changeCurrentSpeech2textDefaultModel] = useSystemDefaultModelAndModelList(speech2textDefaultModel, speech2textModelList) const [open, setOpen] = useState(false) - const [selectedModel, setSelectedModel] = useState>({ - [ModelType.textGeneration]: textGenerationDefaultModel && { providerName: textGenerationDefaultModel.model_provider.provider_name, modelName: textGenerationDefaultModel.model_name }, - [ModelType.embeddings]: embeddingsDefaultModel && { providerName: embeddingsDefaultModel.model_provider.provider_name, modelName: embeddingsDefaultModel.model_name }, - [ModelType.speech2text]: speech2textDefaultModel && { providerName: speech2textDefaultModel.model_provider.provider_name, modelName: speech2textDefaultModel.model_name }, - [ModelType.reranking]: rerankDefaultModel && { providerName: rerankDefaultModel.model_provider.provider_name, modelName: rerankDefaultModel.model_name }, - }) - const mutateDefaultModel = (types: ModelType[]) => { - types.forEach((type) => { - if (type === ModelType.textGeneration) - mutateTextGenerationDefaultModel() - if (type === ModelType.embeddings) - mutateEmbeddingsDefaultModel() - if (type === ModelType.speech2text) - mutateSpeech2textDefaultModel() - if (type === ModelType.reranking) - mutateRerankDefaultModel() - }) + const getCurrentDefaultModelByModelType = (modelType: ModelTypeEnum) => { + if (modelType === ModelTypeEnum.textGeneration) + return currentTextGenerationDefaultModel + else if (modelType === ModelTypeEnum.textEmbedding) + return currentEmbeddingsDefaultModel + else if (modelType === ModelTypeEnum.rerank) + return currentRerankDefaultModel + else if (modelType === ModelTypeEnum.speech2text) + return currentSpeech2textDefaultModel + + return undefined } - const handleChangeDefaultModel = async (type: ModelType, v: BackendModel) => { - setSelectedModel({ - ...selectedModel, - [type]: { - providerName: v.model_provider.provider_name, - modelName: v.model_name, - }, - }) + const handleChangeDefaultModel = (modelType: ModelTypeEnum, model: DefaultModel) => { + if (modelType === ModelTypeEnum.textGeneration) + changeCurrentTextGenerationDefaultModel(model) + else if (modelType === ModelTypeEnum.textEmbedding) + changeCurrentEmbeddingsDefaultModel(model) + else if (modelType === ModelTypeEnum.rerank) + changeCurrentRerankDefaultModel(model) + else if (modelType === ModelTypeEnum.speech2text) + changeCurrentSpeech2textDefaultModel(model) + + if (!changedModelTypes.includes(modelType)) + setChangedModelTypes([...changedModelTypes, modelType]) } const handleSave = async () => { - const kesArray = Object.keys(selectedModel) as ModelType[] const res = await updateDefaultModel({ url: '/workspaces/current/default-model', body: { - model_settings: kesArray.map((key) => { + model_settings: [ModelTypeEnum.textGeneration, ModelTypeEnum.textEmbedding, ModelTypeEnum.rerank, ModelTypeEnum.speech2text].map((modelType) => { return { - model_type: key, - provider_name: selectedModel?.[key]?.providerName, - model_name: selectedModel?.[key]?.modelName, + model_type: modelType, + provider: getCurrentDefaultModelByModelType(modelType)?.provider, + model: getCurrentDefaultModelByModelType(modelType)?.model, } }), }, }) if (res.result === 'success') { notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) - mutateDefaultModel(kesArray) + setOpen(false) + + changedModelTypes.forEach((modelType) => { + if (modelType === ModelTypeEnum.textGeneration) + updateModelList(modelType) + else if (modelType === ModelTypeEnum.textEmbedding) + updateModelList(modelType) + else if (modelType === ModelTypeEnum.rerank) + updateModelList(modelType) + else if (modelType === ModelTypeEnum.speech2text) + updateModelList(modelType) + }) } } @@ -121,9 +141,9 @@ const SystemModel: FC = ({
handleChangeDefaultModel(ModelType.textGeneration, v)} + defaultModel={currentTextGenerationDefaultModel} + modelList={textGenerationModelList} + onSelect={model => handleChangeDefaultModel(ModelTypeEnum.textGeneration, model)} />
@@ -141,9 +161,9 @@ const SystemModel: FC = ({
handleChangeDefaultModel(ModelType.embeddings, v)} + defaultModel={currentEmbeddingsDefaultModel} + modelList={embeddingModelList} + onSelect={model => handleChangeDefaultModel(ModelTypeEnum.textEmbedding, model)} />
@@ -161,11 +181,9 @@ const SystemModel: FC = ({
handleChangeDefaultModel(ModelType.reranking, v)} - whenEmptyGoToSetting - onUpdate={onUpdate} + defaultModel={currentRerankDefaultModel} + modelList={rerankModelList} + onSelect={model => handleChangeDefaultModel(ModelTypeEnum.rerank, model)} />
@@ -183,9 +201,9 @@ const SystemModel: FC = ({
handleChangeDefaultModel(ModelType.speech2text, v)} + defaultModel={currentSpeech2textDefaultModel} + modelList={speech2textModelList} + onSelect={model => handleChangeDefaultModel(ModelTypeEnum.speech2text, model)} />
diff --git a/web/app/components/header/account-setting/model-provider-page/utils.ts b/web/app/components/header/account-setting/model-provider-page/utils.ts new file mode 100644 index 000000000..1a4b4ee9c --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/utils.ts @@ -0,0 +1,159 @@ +import { ValidatedStatus } from '../key-validator/declarations' +import type { + CredentialFormSchemaRadio, + CredentialFormSchemaTextInput, + FormValue, +} from './declarations' +import { + FormTypeEnum, + MODEL_TYPE_TEXT, + ModelTypeEnum, +} from './declarations' +import { + deleteModelProvider, + setModelProvider, + validateModelProvider, +} from '@/service/common' + +export const languageMaps = { + 'en': 'en_US', + 'zh-Hans': 'zh_Hans', +} as { + 'en': 'en_US' + 'zh-Hans': 'zh_Hans' +} + +export const DEFAULT_BACKGROUND_COLOR = '#F3F4F6' + +export const isNullOrUndefined = (value: any) => { + return value === undefined || value === null +} + +export const validateCredentials = async (predefined: boolean, provider: string, v: FormValue) => { + let body, url + + if (predefined) { + body = { + credentials: v, + } + url = `/workspaces/current/model-providers/${provider}/credentials/validate` + } + else { + const { __model_name, __model_type, ...credentials } = v + body = { + model: __model_name, + model_type: __model_type, + credentials, + } + url = `/workspaces/current/model-providers/${provider}/models/credentials/validate` + } + try { + const res = await validateModelProvider({ url, body }) + if (res.result === 'success') + return Promise.resolve({ status: ValidatedStatus.Success }) + else + return Promise.resolve({ status: ValidatedStatus.Error, message: res.error || 'error' }) + } + catch (e: any) { + return Promise.resolve({ status: ValidatedStatus.Error, message: e.message }) + } +} + +export const saveCredentials = async (predefined: boolean, provider: string, v: FormValue) => { + let body, url + + if (predefined) { + body = { + credentials: v, + } + url = `/workspaces/current/model-providers/${provider}` + } + else { + const { __model_name, __model_type, ...credentials } = v + body = { + model: __model_name, + model_type: __model_type, + credentials, + } + url = `/workspaces/current/model-providers/${provider}/models` + } + + return setModelProvider({ url, body }) +} + +export const removeCredentials = async (predefined: boolean, provider: string, v: FormValue) => { + let url = '' + let body + + if (predefined) { + url = `/workspaces/current/model-providers/${provider}` + } + else { + if (v) { + const { __model_name, __model_type } = v + body = { + model: __model_name, + model_type: __model_type, + } + url = `/workspaces/current/model-providers/${provider}/models` + } + } + + return deleteModelProvider({ url, body }) +} + +export const sizeFormat = (size: number) => { + const remainder = Math.floor(size / 1000) + if (remainder < 1) + return `${size}` + else + return `${remainder}K` +} + +export const modelTypeFormat = (modelType: ModelTypeEnum) => { + if (modelType === ModelTypeEnum.textEmbedding) + return 'TEXT EMBEDDING' + + return modelType.toLocaleUpperCase() +} + +export const genModelTypeFormSchema = (modelTypes: ModelTypeEnum[]) => { + return { + type: FormTypeEnum.radio, + label: { + zh_Hans: '模型类型', + en_US: 'Model Type', + }, + variable: '__model_type', + default: modelTypes[0], + required: true, + show_on: [], + options: modelTypes.map((modelType: ModelTypeEnum) => { + return { + value: modelType, + label: { + zh_Hans: MODEL_TYPE_TEXT[modelType], + en_US: MODEL_TYPE_TEXT[modelType], + }, + show_on: [], + } + }), + } as CredentialFormSchemaRadio +} + +export const genModelNameFormSchema = (model?: Pick) => { + return { + type: FormTypeEnum.textInput, + label: model?.label || { + zh_Hans: '模型名称', + en_US: 'Model Name', + }, + variable: '__model_name', + required: true, + show_on: [], + placeholder: model?.placeholder || { + zh_Hans: '请输入模型名称', + en_US: 'Please enter model name', + }, + } as CredentialFormSchemaTextInput +} diff --git a/web/app/components/share/chat/sidebar/index.tsx b/web/app/components/share/chat/sidebar/index.tsx index 51b564ace..8d3fffdfc 100644 --- a/web/app/components/share/chat/sidebar/index.tsx +++ b/web/app/components/share/chat/sidebar/index.tsx @@ -107,7 +107,7 @@ const Sidebar: FC = ({
diff --git a/web/app/components/share/chatbot/sidebar/index.tsx b/web/app/components/share/chatbot/sidebar/index.tsx index cfb8e86fb..a38e2f9c7 100644 --- a/web/app/components/share/chatbot/sidebar/index.tsx +++ b/web/app/components/share/chatbot/sidebar/index.tsx @@ -92,7 +92,7 @@ const Sidebar: FC = ({
diff --git a/web/app/styles/globals.css b/web/app/styles/globals.css index 8c8989082..cc9b1ea83 100644 --- a/web/app/styles/globals.css +++ b/web/app/styles/globals.css @@ -145,4 +145,6 @@ button:focus-within { right: 0; top: 0; bottom: 0; -} \ No newline at end of file +} + +@import '../components/base/button/index.css'; \ No newline at end of file diff --git a/web/context/debug-configuration.ts b/web/context/debug-configuration.ts index 17d61de16..f66649128 100644 --- a/web/context/debug-configuration.ts +++ b/web/context/debug-configuration.ts @@ -5,7 +5,6 @@ import type { BlockStatus, ChatPromptConfig, CitationConfig, - CompletionParams, CompletionPromptConfig, ConversationHistoriesRole, DatasetConfigs, @@ -23,6 +22,7 @@ import type { DataSet } from '@/models/datasets' import type { VisionSettings } from '@/types/app' import { ModelModeType, RETRIEVE_TYPE, Resolution, TransferMethod } from '@/types/app' import { ANNOTATION_DEFAULT, DEFAULT_CHAT_PROMPT_CONFIG, DEFAULT_COMPLETION_PROMPT_CONFIG } from '@/config' +import type { FormValue } from '@/app/components/header/account-setting/model-provider-page/declarations' type IDebugConfiguration = { appId: string @@ -72,8 +72,8 @@ type IDebugConfiguration = { query: string // user question setQuery: (query: string) => void // Belows are draft infos - completionParams: CompletionParams - setCompletionParams: (completionParams: CompletionParams) => void + completionParams: FormValue + setCompletionParams: (completionParams: FormValue) => void // model_config modelConfig: ModelConfig setModelConfig: (modelConfig: ModelConfig) => void diff --git a/web/context/modal-context.tsx b/web/context/modal-context.tsx index 6a2aaba26..df73dcd3a 100644 --- a/web/context/modal-context.tsx +++ b/web/context/modal-context.tsx @@ -1,7 +1,7 @@ 'use client' import type { Dispatch, SetStateAction } from 'react' -import { useState } from 'react' +import { useCallback, useState } from 'react' import { createContext, useContext } from 'use-context-selector' import { useRouter, useSearchParams } from 'next/navigation' import AccountSetting from '@/app/components/header/account-setting' @@ -9,6 +9,12 @@ import ApiBasedExtensionModal from '@/app/components/header/account-setting/api- import ModerationSettingModal from '@/app/components/app/configuration/toolbox/moderation/moderation-setting-modal' import ExternalDataToolModal from '@/app/components/app/configuration/tools/external-data-tool-modal' import AnnotationFullModal from '@/app/components/billing/annotation-full/modal' +import ModelModal from '@/app/components/header/account-setting/model-provider-page/model-modal' +import type { + ConfigurateMethodEnum, + CustomConfigrationModelFixedFields, + ModelProvider, +} from '@/app/components/header/account-setting/model-provider-page/declarations' import Pricing from '@/app/components/billing/pricing' import type { ModerationConfig } from '@/models/debug' @@ -24,6 +30,11 @@ export type ModalState = { onValidateBeforeSaveCallback?: (newPayload: T) => boolean } +export type ModelModalType = { + currentProvider: ModelProvider + currentConfigurateMethod: ConfigurateMethodEnum + currentCustomConfigrationModelFixedFields?: CustomConfigrationModelFixedFields +} const ModalContext = createContext<{ setShowAccountSettingModal: Dispatch | null>> setShowApiBasedExtensionModal: Dispatch | null>> @@ -31,6 +42,7 @@ const ModalContext = createContext<{ setShowExternalDataToolModal: Dispatch | null>> setShowPricingModal: Dispatch> setShowAnnotationFullModal: () => void + setShowModelModal: Dispatch | null>> }>({ setShowAccountSettingModal: () => { }, setShowApiBasedExtensionModal: () => { }, @@ -38,6 +50,7 @@ const ModalContext = createContext<{ setShowExternalDataToolModal: () => { }, setShowPricingModal: () => { }, setShowAnnotationFullModal: () => { }, + setShowModelModal: () => {}, }) export const useModalContext = () => useContext(ModalContext) @@ -52,6 +65,7 @@ export const ModalContextProvider = ({ const [showApiBasedExtensionModal, setShowApiBasedExtensionModal] = useState | null>(null) const [showModerationSettingModal, setShowModerationSettingModal] = useState | null>(null) const [showExternalDataToolModal, setShowExternalDataToolModal] = useState | null>(null) + const [showModelModal, setShowModelModal] = useState | null>(null) const searchParams = useSearchParams() const router = useRouter() const [showPricingModal, setShowPricingModal] = useState(searchParams.get('show-pricing') === '1') @@ -70,6 +84,20 @@ export const ModalContextProvider = ({ showModerationSettingModal.onCancelCallback() } + const handleCancelModelModal = useCallback(() => { + setShowModelModal(null) + + if (showModelModal?.onCancelCallback) + showModelModal.onCancelCallback() + }, [showModelModal]) + + const handleSaveModelModal = useCallback(() => { + if (showModelModal?.onSaveCallback) + showModelModal.onSaveCallback(showModelModal.payload) + + setShowModelModal(null) + }, [showModelModal]) + const handleSaveApiBasedExtension = (newApiBasedExtension: ApiBasedExtension) => { if (showApiBasedExtensionModal?.onSaveCallback) showApiBasedExtensionModal.onSaveCallback(newApiBasedExtension) @@ -106,6 +134,7 @@ export const ModalContextProvider = ({ setShowExternalDataToolModal, setShowPricingModal: () => setShowPricingModal(true), setShowAnnotationFullModal: () => setShowAnnotationFullModal(true), + setShowModelModal, }}> <> {children} @@ -165,6 +194,17 @@ export const ModalContextProvider = ({ onHide={() => setShowAnnotationFullModal(false)} /> ) } + { + !!showModelModal && ( + + ) + } ) diff --git a/web/context/provider-context.tsx b/web/context/provider-context.tsx index 9604ef6eb..56d6bc040 100644 --- a/web/context/provider-context.tsx +++ b/web/context/provider-context.tsx @@ -2,10 +2,18 @@ import { createContext, useContext } from 'use-context-selector' import useSWR from 'swr' -import { useEffect, useState } from 'react' -import { fetchDefaultModal, fetchModelList, fetchSupportRetrievalMethods } from '@/service/common' -import { ModelFeature, ModelType } from '@/app/components/header/account-setting/model-page/declarations' -import type { BackendModel } from '@/app/components/header/account-setting/model-page/declarations' +import { useEffect, useMemo, useState } from 'react' +import { + fetchModelList, + fetchModelProviders, + fetchSupportRetrievalMethods, +} from '@/service/common' +import { + ModelFeatureEnum, + ModelStatusEnum, + ModelTypeEnum, +} from '@/app/components/header/account-setting/model-provider-page/declarations' +import type { Model, ModelProvider } from '@/app/components/header/account-setting/model-provider-page/declarations' import type { RETRIEVE_METHOD } from '@/types/app' import { Plan, type UsagePlanInfo } from '@/app/components/billing/type' import { fetchCurrentPlanInfo } from '@/service/billing' @@ -13,23 +21,11 @@ import { parseCurrentPlan } from '@/app/components/billing/utils' import { defaultPlan } from '@/app/components/billing/config' const ProviderContext = createContext<{ - textGenerationModelList: BackendModel[] - embeddingsModelList: BackendModel[] - speech2textModelList: BackendModel[] - rerankModelList: BackendModel[] - agentThoughtModelList: BackendModel[] - updateModelList: (type: ModelType) => void - textGenerationDefaultModel?: BackendModel - mutateTextGenerationDefaultModel: () => void - embeddingsDefaultModel?: BackendModel - isEmbeddingsDefaultModelValid: boolean - mutateEmbeddingsDefaultModel: () => void - speech2textDefaultModel?: BackendModel - mutateSpeech2textDefaultModel: () => void - rerankDefaultModel?: BackendModel - isRerankDefaultModelVaild: boolean - mutateRerankDefaultModel: () => void + modelProviders: ModelProvider[] + textGenerationModelList: Model[] + agentThoughtModelList: Model[] supportRetrievalMethods: RETRIEVE_METHOD[] + hasSettedApiKey: boolean plan: { type: Plan usage: UsagePlanInfo @@ -39,42 +35,30 @@ const ProviderContext = createContext<{ enableBilling: boolean enableReplaceWebAppLogo: boolean }>({ - textGenerationModelList: [], - embeddingsModelList: [], - speech2textModelList: [], - rerankModelList: [], - agentThoughtModelList: [], - updateModelList: () => { }, - textGenerationDefaultModel: undefined, - mutateTextGenerationDefaultModel: () => { }, - speech2textDefaultModel: undefined, - mutateSpeech2textDefaultModel: () => { }, - embeddingsDefaultModel: undefined, - isEmbeddingsDefaultModelValid: false, - mutateEmbeddingsDefaultModel: () => { }, - rerankDefaultModel: undefined, - isRerankDefaultModelVaild: false, - mutateRerankDefaultModel: () => { }, - supportRetrievalMethods: [], - plan: { - type: Plan.sandbox, - usage: { - vectorSpace: 32, - buildApps: 12, - teamMembers: 1, - annotatedResponse: 1, - }, - total: { - vectorSpace: 200, - buildApps: 50, - teamMembers: 1, - annotatedResponse: 10, - }, - }, - isFetchedPlan: false, - enableBilling: false, - enableReplaceWebAppLogo: false, - }) + modelProviders: [], + textGenerationModelList: [], + agentThoughtModelList: [], + supportRetrievalMethods: [], + hasSettedApiKey: true, + plan: { + type: Plan.sandbox, + usage: { + vectorSpace: 32, + buildApps: 12, + teamMembers: 1, + annotatedResponse: 1, + }, + total: { + vectorSpace: 200, + buildApps: 50, + teamMembers: 1, + annotatedResponse: 10, + }, + }, + isFetchedPlan: false, + enableBilling: false, + enableReplaceWebAppLogo: false, +}) export const useProviderContext = () => useContext(ProviderContext) @@ -84,39 +68,30 @@ type ProviderContextProviderProps = { export const ProviderContextProvider = ({ children, }: ProviderContextProviderProps) => { - const { data: textGenerationDefaultModel, mutate: mutateTextGenerationDefaultModel } = useSWR('/workspaces/current/default-model?model_type=text-generation', fetchDefaultModal) - const { data: embeddingsDefaultModel, mutate: mutateEmbeddingsDefaultModel } = useSWR('/workspaces/current/default-model?model_type=embeddings', fetchDefaultModal) - const { data: speech2textDefaultModel, mutate: mutateSpeech2textDefaultModel } = useSWR('/workspaces/current/default-model?model_type=speech2text', fetchDefaultModal) - const { data: rerankDefaultModel, mutate: mutateRerankDefaultModel } = useSWR('/workspaces/current/default-model?model_type=reranking', fetchDefaultModal) - const fetchModelListUrlPrefix = '/workspaces/current/models/model-type/' - const { data: textGenerationModelList, mutate: mutateTextGenerationModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.textGeneration}`, fetchModelList) - const { data: embeddingsModelList, mutate: mutateEmbeddingsModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.embeddings}`, fetchModelList) - const { data: speech2textModelList, mutate: mutateSpeech2textModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.speech2text}`, fetchModelList) - const { data: rerankModelList, mutate: mutateRerankModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.reranking}`, fetchModelList) + const { data: providersData } = useSWR('/workspaces/current/model-providers', fetchModelProviders) + const fetchModelListUrlPrefix = '/workspaces/current/models/model-types/' + const { data: textGenerationModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelTypeEnum.textGeneration}`, fetchModelList) const { data: supportRetrievalMethods } = useSWR('/datasets/retrieval-setting', fetchSupportRetrievalMethods) - const agentThoughtModelList = textGenerationModelList?.filter((item) => { - return item.features?.includes(ModelFeature.agentThought) - }) + const agentThoughtModelList = useMemo(() => { + const result: Model[] = [] + if (textGenerationModelList?.data) { + textGenerationModelList?.data.forEach((item) => { + const agentThoughtModels = item.models.filter(model => model.features?.includes(ModelFeatureEnum.agentThought)) - const isRerankDefaultModelVaild = !!rerankModelList?.find( - item => item.model_name === rerankDefaultModel?.model_name && item.model_provider.provider_name === rerankDefaultModel?.model_provider.provider_name, - ) + if (agentThoughtModels.length) { + result.push({ + ...item, + models: agentThoughtModels, + }) + } + }) - const isEmbeddingsDefaultModelValid = !!embeddingsModelList?.find( - item => item.model_name === embeddingsDefaultModel?.model_name && item.model_provider.provider_name === embeddingsDefaultModel?.model_provider.provider_name, - ) + return result + } - const updateModelList = (type: ModelType) => { - if (type === ModelType.textGeneration) - mutateTextGenerationModelList() - if (type === ModelType.embeddings) - mutateEmbeddingsModelList() - if (type === ModelType.speech2text) - mutateSpeech2textModelList() - if (type === ModelType.reranking) - mutateRerankModelList() - } + return [] + }, [textGenerationModelList]) const [plan, setPlan] = useState(defaultPlan) const [isFetchedPlan, setIsFetchedPlan] = useState(false) @@ -144,22 +119,10 @@ export const ProviderContextProvider = ({ return ( model.status === ModelStatusEnum.active), supportRetrievalMethods: supportRetrievalMethods?.retrieval_method || [], plan, isFetchedPlan, diff --git a/web/hooks/use-pay.tsx b/web/hooks/use-pay.tsx index eb7132a0c..6ec479594 100644 --- a/web/hooks/use-pay.tsx +++ b/web/hooks/use-pay.tsx @@ -6,7 +6,6 @@ import { useTranslation } from 'react-i18next' import useSWR from 'swr' import { useContext } from 'use-context-selector' import I18n from '@/context/i18n' -import { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations' import { fetchDataSourceNotionBinding, fetchFreeQuotaVerify, @@ -24,7 +23,7 @@ export const useAnthropicCheckPay = () => { const paymentResult = searchParams.get('payment_result') useEffect(() => { - if (providerName === ProviderEnum.anthropic && (paymentResult === 'succeeded' || paymentResult === 'cancelled')) { + if (providerName === 'anthropic' && (paymentResult === 'succeeded' || paymentResult === 'cancelled')) { setConfirm({ type: paymentResult === 'succeeded' ? 'success' : 'danger', title: paymentResult === 'succeeded' ? t('common.actionMsg.paySucceeded') : t('common.actionMsg.payCancelled'), @@ -54,8 +53,8 @@ export const useBillingPay = () => { return confirm } -const QUOTA_RECEIVE_STATUS = { - [ProviderEnum.spark]: { +const QUOTA_RECEIVE_STATUS: Record = { + spark: { success: { 'en': 'Successful collection, the quota will be automatically increased after 5 minutes.', 'zh-Hans': '领取成功,将在 5 分钟后自动增加配额', @@ -65,7 +64,7 @@ const QUOTA_RECEIVE_STATUS = { 'zh-Hans': '领取失败', }, }, - [ProviderEnum.zhipuai]: { + zhipuai: { success: { 'en': 'Successful collection', 'zh-Hans': '领取成功', @@ -77,14 +76,14 @@ const QUOTA_RECEIVE_STATUS = { }, } -const FREE_CHECK_PROVIDER = [ProviderEnum.spark, ProviderEnum.zhipuai] +const FREE_CHECK_PROVIDER = ['spark', 'zhipuai'] export const useCheckFreeQuota = () => { const { locale } = useContext(I18n) const router = useRouter() const [shouldVerify, setShouldVerify] = useState(false) const searchParams = useSearchParams() const type = searchParams.get('type') - const provider = searchParams.get('provider') as (ProviderEnum.spark | ProviderEnum.zhipuai) + const provider = searchParams.get('provider') const result = searchParams.get('result') const token = searchParams.get('token') @@ -101,14 +100,14 @@ export const useCheckFreeQuota = () => { }, [error, router]) useEffect(() => { - if (type === 'provider_apply_callback' && FREE_CHECK_PROVIDER.includes(provider) && result === 'success') + if (type === 'provider_apply_callback' && FREE_CHECK_PROVIDER.includes(provider as string) && result === 'success') setShouldVerify(true) }, [type, provider, result]) return (data && provider) ? { type: data.flag ? 'success' : 'danger', - title: data.flag ? QUOTA_RECEIVE_STATUS[provider].success[locale] : QUOTA_RECEIVE_STATUS[provider].fail[locale], + title: data.flag ? QUOTA_RECEIVE_STATUS[provider as string].success[locale] : QUOTA_RECEIVE_STATUS[provider].fail[locale], desc: !data.flag ? data.reason : undefined, } : null diff --git a/web/i18n/lang/common.en.ts b/web/i18n/lang/common.en.ts index 00877d7fa..acd2bbfd6 100644 --- a/web/i18n/lang/common.en.ts +++ b/web/i18n/lang/common.en.ts @@ -286,6 +286,20 @@ const translation = { freeQuota: { howToEarn: 'How to earn', }, + addMoreModelProvider: 'ADD MORE MODEL PROVIDER', + addModel: 'Add Model', + modelsNum: '{{num}} Models', + showModels: 'Show Models', + showModelsNum: 'Show {{num}} Models', + collapse: 'Collapse', + config: 'Config', + modelAndParameters: 'Model and Parameters', + model: 'Model', + featureSupported: '{{feature}} supported', + callTimes: 'Call times', + buyQuota: 'Buy Quota', + getFreeTokens: 'Get free Tokens', + priorityUsing: 'Prioritize using', }, dataSource: { add: 'Add a data source', @@ -318,13 +332,13 @@ const translation = { }, }, apiBasedExtension: { - title: 'API-based extensions provide centralized API management, simplifying configuration for easy use across Dify\'s applications.', + title: 'API extensions provide centralized API management, simplifying configuration for easy use across Dify\'s applications.', link: 'Learn how to develop your own API Extension.', linkUrl: 'https://docs.dify.ai/advanced/api_based_extension', add: 'Add API Extension', selector: { title: 'API Extension', - placeholder: 'Please select API-based extension', + placeholder: 'Please select API extension', manage: 'Manage API Extension', }, modal: { diff --git a/web/i18n/lang/common.zh.ts b/web/i18n/lang/common.zh.ts index f8d4c9d16..cb18d5102 100644 --- a/web/i18n/lang/common.zh.ts +++ b/web/i18n/lang/common.zh.ts @@ -286,6 +286,20 @@ const translation = { freeQuota: { howToEarn: '如何获取', }, + addMoreModelProvider: '添加更多模型提供商', + addModel: '添加模型', + modelsNum: '{{num}} 个模型', + showModels: '显示模型', + showModelsNum: '显示 {{num}} 个模型', + collapse: '收起', + config: '配置', + modelAndParameters: '模型及参数', + model: '模型', + featureSupported: '支持 {{feature}} 功能', + callTimes: '调用次数', + buyQuota: '购买额度', + getFreeTokens: '获得免费 Tokens', + priorityUsing: '优先使用', }, dataSource: { add: '添加数据源', diff --git a/web/package.json b/web/package.json index 2a3979dc4..bd9ace835 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "dify-web", - "version": "0.3.34", + "version": "0.4.0", "private": true, "scripts": { "dev": "next dev", diff --git a/web/service/common.ts b/web/service/common.ts index f7c4eb197..a3a1c7c81 100644 --- a/web/service/common.ts +++ b/web/service/common.ts @@ -25,7 +25,13 @@ import type { UpdateOpenAIKeyResponse, ValidateOpenAIKeyResponse, } from '@/models/app' -import type { BackendModel, ProviderMap } from '@/app/components/header/account-setting/model-page/declarations' +import type { + DefaultModelResponse, + Model, + ModelItem, + ModelParameterRule, + ModelProvider, +} from '@/app/components/header/account-setting/model-provider-page/declarations' import type { RETRIEVE_METHOD } from '@/types/app' export const login: Fetcher }> = ({ url, body }) => { @@ -146,12 +152,20 @@ export const activateMember: Fetcher return post(url, { body }) } -export const fetchModelProviders: Fetcher = (url) => { - return get(url) +export const fetchModelProviders: Fetcher<{ data: ModelProvider[] }, string> = (url) => { + return get<{ data: ModelProvider[] }>(url) } -export const fetchModelList: Fetcher = (url) => { - return get(url) +export const fetchModelProviderCredentials: Fetcher<{ credentials?: Record }, string> = (url) => { + return get<{ credentials?: Record }>(url) +} + +export const fetchModelProviderModelList: Fetcher<{ data: ModelItem[] }, string> = (url) => { + return get<{ data: ModelItem[] }>(url) +} + +export const fetchModelList: Fetcher<{ data: Model[] }, string> = (url) => { + return get<{ data: Model[] }>(url) } export const validateModelProvider: Fetcher = ({ url, body }) => { @@ -162,8 +176,8 @@ export const setModelProvider: Fetcher(url, { body }) } -export const deleteModelProvider: Fetcher = ({ url }) => { - return del(url) +export const deleteModelProvider: Fetcher = ({ url, body }) => { + return del(url, { body }) } export const changeModelProviderPriority: Fetcher = ({ url, body }) => { @@ -182,14 +196,18 @@ export const getPayUrl: Fetcher<{ url: string }, string> = (url) => { return get<{ url: string }>(url) } -export const fetchDefaultModal: Fetcher = (url) => { - return get(url) +export const fetchDefaultModal: Fetcher<{ data: DefaultModelResponse }, string> = (url) => { + return get<{ data: DefaultModelResponse }>(url) } export const updateDefaultModel: Fetcher = ({ url, body }) => { return post(url, { body }) } +export const fetchModelParameterRules: Fetcher<{ data: ModelParameterRule[] }, string> = (url) => { + return get<{ data: ModelParameterRule[] }>(url) +} + export const submitFreeQuota: Fetcher<{ type: string; redirect_url?: string; result?: string }, string> = (url) => { return post<{ type: string; redirect_url?: string; result?: string }>(url) } diff --git a/web/service/debug.ts b/web/service/debug.ts index 41157cd34..c555ffe0d 100644 --- a/web/service/debug.ts +++ b/web/service/debug.ts @@ -2,6 +2,7 @@ import type { IOnAnnotationReply, IOnCompleted, IOnData, IOnError, IOnMessageEnd import { get, post, ssePost } from './base' import type { ChatPromptConfig, CompletionPromptConfig } from '@/models/debug' import type { ModelModeType } from '@/types/app' +import type { ModelParameterRule } from '@/app/components/header/account-setting/model-provider-page/declarations' export type AutomaticRes = { prompt: string @@ -65,9 +66,9 @@ export const generateRule = (body: Record) => { export const fetchModelParams = (providerName: string, modelId: string) => { return get(`workspaces/current/model-providers/${providerName}/models/parameter-rules`, { params: { - model_name: modelId, + model: modelId, }, - }) + }) as Promise<{ data: ModelParameterRule[] }> } export const fetchPromptTemplate = ({

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 TKZ9(JEn7^^o1e=wba?PDUY&?8 literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image.png b/api/core/model_runtime/docs/zh_Hans/images/index/image.png new file mode 100644 index 0000000000000000000000000000000000000000..eb63d107e1c385495f3ecf7a751582099873c0c5 GIT binary patch literal 267979 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 h3*@_&N(iHYy(NxrwrA!9 None: + """ + Validate provider credentials + You can choose any validate_credentials method of model type or implement validate method by yourself, + such as: get model list api + + if validate failed, raise exception + + :param credentials: provider credentials, credentials form defined in `provider_credential_schema`. + """ +``` + +- `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 定义,传入如:`api_key` 等。 + +验证失败请抛出 `errors.validate.CredentialsValidateFailedError` 错误。 + +**注:预定义模型需完整实现该接口,自定义模型供应商只需要如下简单实现即可** + +```python +class XinferenceProvider(Provider): + def validate_provider_credentials(self, credentials: dict) -> None: + pass +``` + +## 模型 + +模型分为 5 种不同的模型类型,不同模型类型继承的基类不同,需要实现的方法也不同。 + +### 通用接口 + +所有模型均需要统一实现下面 2 个方法: + +- 模型凭据校验 + + 与供应商凭据校验类似,这里针对单个模型进行校验。 + + ```python + def validate_credentials(self, model: str, credentials: dict) -> None: + """ + Validate model credentials + + :param model: model name + :param credentials: model credentials + :return: + """ + ``` + + 参数: + + - `model` (string) 模型名称 + + - `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 或 `model_credential_schema` 定义,传入如:`api_key` 等。 + + 验证失败请抛出 `errors.validate.CredentialsValidateFailedError` 错误。 + +- 调用异常错误映射表 + + 当模型调用异常时需要映射到 Runtime 指定的 `InvokeError` 类型,方便 Dify 针对不同错误做不同后续处理。 + + Runtime Errors: + + - `InvokeConnectionError` 调用连接错误 + - `InvokeServerUnavailableError ` 调用服务方不可用 + - `InvokeRateLimitError ` 调用达到限额 + - `InvokeAuthorizationError` 调用鉴权失败 + - `InvokeBadRequestError ` 调用传参有误 + + ```python + @property + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + """ + Map model invoke error to unified error + The key is the error type thrown to the caller + The value is the error type thrown by the model, + which needs to be converted into a unified error type for the caller. + + :return: Invoke error mapping + """ + ``` + + 也可以直接抛出对应Erros,并做如下定义,这样在之后的调用中可以直接抛出`InvokeConnectionError`等异常。 + + ```python + @property + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + return { + InvokeConnectionError: [ + InvokeConnectionError + ], + InvokeServerUnavailableError: [ + InvokeServerUnavailableError + ], + InvokeRateLimitError: [ + InvokeRateLimitError + ], + InvokeAuthorizationError: [ + InvokeAuthorizationError + ], + InvokeBadRequestError: [ + InvokeBadRequestError + ], + } + ``` + +​ 可参考 OpenAI `_invoke_error_mapping`。 + +### LLM + +继承 `__base.large_language_model.LargeLanguageModel` 基类,实现以下接口: + +- LLM 调用 + + 实现 LLM 调用的核心方法,可同时支持流式和同步返回。 + + ```python + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :return: full response or stream response chunk generator result + """ + ``` + + - 参数: + + - `model` (string) 模型名称 + + - `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 或 `model_credential_schema` 定义,传入如:`api_key` 等。 + + - `prompt_messages` (array[[PromptMessage](#PromptMessage)]) Prompt 列表 + + 若模型为 `Completion` 类型,则列表只需要传入一个 [UserPromptMessage](#UserPromptMessage) 元素即可; + + 若模型为 `Chat` 类型,需要根据消息不同传入 [SystemPromptMessage](#SystemPromptMessage), [UserPromptMessage](#UserPromptMessage), [AssistantPromptMessage](#AssistantPromptMessage), [ToolPromptMessage](#ToolPromptMessage) 元素列表 + + - `model_parameters` (object) 模型参数 + + 模型参数由模型 YAML 配置的 `parameter_rules` 定义。 + + - `tools` (array[[PromptMessageTool](#PromptMessageTool)]) [optional] 工具列表,等同于 `function calling` 中的 `function`。 + + 即传入 tool calling 的工具列表。 + + - `stop` (array[string]) [optional] 停止序列 + + 模型返回将在停止序列定义的字符串之前停止输出。 + + - `stream` (bool) 是否流式输出,默认 True + + 流式输出返回 Generator[[LLMResultChunk](#LLMResultChunk)],非流式输出返回 [LLMResult](#LLMResult)。 + + - `user` (string) [optional] 用户的唯一标识符 + + 可以帮助供应商监控和检测滥用行为。 + + - 返回 + + 流式输出返回 Generator[[LLMResultChunk](#LLMResultChunk)],非流式输出返回 [LLMResult](#LLMResult)。 + +- 预计算输入 tokens + + 若模型未提供预计算 tokens 接口,可直接返回 0。 + + ```python + def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage], + tools: Optional[list[PromptMessageTool]] = None) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param tools: tools for tool calling + :return: + """ + ``` + + 参数说明见上述 `LLM 调用`。 + + 该接口需要根据对应`model`选择合适的`tokenizer`进行计算,如果对应模型没有提供`tokenizer`,可以使用`AIModel`基类中的`_get_num_tokens_by_gpt2(text: str)`方法进行计算。 + +- 获取自定义模型规则 [可选] + + ```python + def get_customizable_model_schema(self, model: str, credentials: dict) -> Optional[AIModelEntity]: + """ + Get customizable model schema + + :param model: model name + :param credentials: model credentials + :return: model schema + """ + ``` + +​当供应商支持增加自定义 LLM 时,可实现此方法让自定义模型可获取模型规则,默认返回 None。 + +对于`OpenAI`供应商下的大部分微调模型,可以通过其微调模型名称获取到其基类模型,如`gpt-3.5-turbo-1106`,然后返回基类模型的预定义参数规则,参考[openai](https://github.com/langgenius/dify/blob/feat/model-runtime/api/core/model_runtime/model_providers/openai/llm/llm.py#L801) +的具体实现 + +### TextEmbedding + +继承 `__base.text_embedding_model.TextEmbeddingModel` 基类,实现以下接口: + +- Embedding 调用 + + ```python + def _invoke(self, model: str, credentials: dict, + texts: list[str], user: Optional[str] = None) \ + -> TextEmbeddingResult: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :param user: unique user id + :return: embeddings result + """ + ``` + + - 参数: + + - `model` (string) 模型名称 + + - `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 或 `model_credential_schema` 定义,传入如:`api_key` 等。 + + - `texts` (array[string]) 文本列表,可批量处理 + + - `user` (string) [optional] 用户的唯一标识符 + + 可以帮助供应商监控和检测滥用行为。 + + - 返回: + + [TextEmbeddingResult](#TextEmbeddingResult) 实体。 + +- 预计算 tokens + + ```python + def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :return: + """ + ``` + + 参数说明见上述 `Embedding 调用`。 + + 同上述`LargeLanguageModel`,该接口需要根据对应`model`选择合适的`tokenizer`进行计算,如果对应模型没有提供`tokenizer`,可以使用`AIModel`基类中的`_get_num_tokens_by_gpt2(text: str)`方法进行计算。 + +### Rerank + +继承 `__base.rerank_model.RerankModel` 基类,实现以下接口: + +- rerank 调用 + + ```python + def _invoke(self, model: str, credentials: dict, + query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None, + user: Optional[str] = None) \ + -> RerankResult: + """ + Invoke rerank model + + :param model: model name + :param credentials: model credentials + :param query: search query + :param docs: docs for reranking + :param score_threshold: score threshold + :param top_n: top n + :param user: unique user id + :return: rerank result + """ + ``` + + - 参数: + + - `model` (string) 模型名称 + + - `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 或 `model_credential_schema` 定义,传入如:`api_key` 等。 + + - `query` (string) 查询请求内容 + + - `docs` (array[string]) 需要重排的分段列表 + + - `score_threshold` (float) [optional] Score 阈值 + + - `top_n` (int) [optional] 取前 n 个分段 + + - `user` (string) [optional] 用户的唯一标识符 + + 可以帮助供应商监控和检测滥用行为。 + + - 返回: + + [RerankResult](#RerankResult) 实体。 + +### Speech2text + +继承 `__base.speech2text_model.Speech2TextModel` 基类,实现以下接口: + +- Invoke 调用 + + ```python + def _invoke(self, model: str, credentials: dict, + file: IO[bytes], user: Optional[str] = None) \ + -> str: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param file: audio file + :param user: unique user id + :return: text for given audio file + """ + ``` + + - 参数: + + - `model` (string) 模型名称 + + - `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 或 `model_credential_schema` 定义,传入如:`api_key` 等。 + + - `file` (File) 文件流 + + - `user` (string) [optional] 用户的唯一标识符 + + 可以帮助供应商监控和检测滥用行为。 + + - 返回: + + 语音转换后的字符串。 + +### Moderation + +继承 `__base.moderation_model.ModerationModel` 基类,实现以下接口: + +- Invoke 调用 + + ```python + def _invoke(self, model: str, credentials: dict, + text: str, user: Optional[str] = None) \ + -> bool: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param text: text to moderate + :param user: unique user id + :return: false if text is safe, true otherwise + """ + ``` + + - 参数: + + - `model` (string) 模型名称 + + - `credentials` (object) 凭据信息 + + 凭据信息的参数由供应商 YAML 配置文件的 `provider_credential_schema` 或 `model_credential_schema` 定义,传入如:`api_key` 等。 + + - `text` (string) 文本内容 + + - `user` (string) [optional] 用户的唯一标识符 + + 可以帮助供应商监控和检测滥用行为。 + + - 返回: + + False 代表传入的文本安全,True 则反之。 + + + +## 实体 + +### PromptMessageRole + +消息角色 + +```python +class PromptMessageRole(Enum): + """ + Enum class for prompt message. + """ + SYSTEM = "system" + USER = "user" + ASSISTANT = "assistant" + TOOL = "tool" +``` + +### PromptMessageContentType + +消息内容类型,分为纯文本和图片。 + +```python +class PromptMessageContentType(Enum): + """ + Enum class for prompt message content type. + """ + TEXT = 'text' + IMAGE = 'image' +``` + +### PromptMessageContent + +消息内容基类,仅作为参数声明用,不可初始化。 + +```python +class PromptMessageContent(BaseModel): + """ + Model class for prompt message content. + """ + type: PromptMessageContentType + data: str # 内容数据 +``` + +当前支持文本和图片两种类型,可支持同时传入文本和多图。 + +需要分别初始化 `TextPromptMessageContent` 和 `ImagePromptMessageContent` 传入。 + +### TextPromptMessageContent + +```python +class TextPromptMessageContent(PromptMessageContent): + """ + Model class for text prompt message content. + """ + type: PromptMessageContentType = PromptMessageContentType.TEXT +``` + +若传入图文,其中文字需要构造此实体作为 `content` 列表中的一部分。 + +### ImagePromptMessageContent + +```python +class ImagePromptMessageContent(PromptMessageContent): + """ + Model class for image prompt message content. + """ + class DETAIL(Enum): + LOW = 'low' + HIGH = 'high' + + type: PromptMessageContentType = PromptMessageContentType.IMAGE + detail: DETAIL = DETAIL.LOW # 分辨率 +``` + +若传入图文,其中图片需要构造此实体作为 `content` 列表中的一部分 + +`data` 可以为 `url` 或者图片 `base64` 加密后的字符串。 + +### PromptMessage + +所有 Role 消息体的基类,仅作为参数声明用,不可初始化。 + +```python +class PromptMessage(ABC, BaseModel): + """ + Model class for prompt message. + """ + role: PromptMessageRole # 消息角色 + content: Optional[str | list[PromptMessageContent]] = None # 支持两种类型,字符串和内容列表,内容列表是为了满足多模态的需要,可详见 PromptMessageContent 说明。 + name: Optional[str] = None # 名称,可选。 +``` + +### UserPromptMessage + +UserMessage 消息体,代表用户消息。 + +```python +class UserPromptMessage(PromptMessage): + """ + Model class for user prompt message. + """ + role: PromptMessageRole = PromptMessageRole.USER +``` + +### AssistantPromptMessage + +代表模型返回消息,通常用于 `few-shots` 或聊天历史传入。 + +```python +class AssistantPromptMessage(PromptMessage): + """ + Model class for assistant prompt message. + """ + class ToolCall(BaseModel): + """ + Model class for assistant prompt message tool call. + """ + class ToolCallFunction(BaseModel): + """ + Model class for assistant prompt message tool call function. + """ + name: str # 工具名称 + arguments: str # 工具参数 + + id: str # 工具 ID,仅在 OpenAI tool call 生效,为工具调用的唯一 ID,同一个工具可以调用多次 + type: str # 默认 function + function: ToolCallFunction # 工具调用信息 + + role: PromptMessageRole = PromptMessageRole.ASSISTANT + tool_calls: list[ToolCall] = [] # 模型回复的工具调用结果(仅当传入 tools,并且模型认为需要调用工具时返回) +``` + +其中 `tool_calls` 为调用模型传入 `tools` 后,由模型返回的 `tool call` 列表。 + +### SystemPromptMessage + +代表系统消息,通常用于设定给模型的系统指令。 + +```python +class SystemPromptMessage(PromptMessage): + """ + Model class for system prompt message. + """ + role: PromptMessageRole = PromptMessageRole.SYSTEM +``` + +### ToolPromptMessage + +代表工具消息,用于工具执行后将结果交给模型进行下一步计划。 + +```python +class ToolPromptMessage(PromptMessage): + """ + Model class for tool prompt message. + """ + role: PromptMessageRole = PromptMessageRole.TOOL + tool_call_id: str # 工具调用 ID,若不支持 OpenAI tool call,也可传入工具名称 +``` + +基类的 `content` 传入工具执行结果。 + +### PromptMessageTool + +```python +class PromptMessageTool(BaseModel): + """ + Model class for prompt message tool. + """ + name: str # 工具名称 + description: str # 工具描述 + parameters: dict # 工具参数 dict +``` + +--- + +### LLMResult + +```python +class LLMResult(BaseModel): + """ + Model class for llm result. + """ + model: str # 实际使用模型 + prompt_messages: list[PromptMessage] # prompt 消息列表 + message: AssistantPromptMessage # 回复消息 + usage: LLMUsage # 使用的 tokens 及费用信息 + system_fingerprint: Optional[str] = None # 请求指纹,可参考 OpenAI 该参数定义 +``` + +### LLMResultChunkDelta + +流式返回中每个迭代内部 `delta` 实体 + +```python +class LLMResultChunkDelta(BaseModel): + """ + Model class for llm result chunk delta. + """ + index: int # 序号 + message: AssistantPromptMessage # 回复消息 + usage: Optional[LLMUsage] = None # 使用的 tokens 及费用信息,仅最后一条返回 + finish_reason: Optional[str] = None # 结束原因,仅最后一条返回 +``` + +### LLMResultChunk + +流式返回中每个迭代实体 + +```python +class LLMResultChunk(BaseModel): + """ + Model class for llm result chunk. + """ + model: str # 实际使用模型 + prompt_messages: list[PromptMessage] # prompt 消息列表 + system_fingerprint: Optional[str] = None # 请求指纹,可参考 OpenAI 该参数定义 + delta: LLMResultChunkDelta # 每个迭代存在变化的内容 +``` + +### LLMUsage + +```python +class LLMUsage(ModelUsage): + """ + Model class for llm usage. + """ + prompt_tokens: int # prompt 使用 tokens + prompt_unit_price: Decimal # prompt 单价 + prompt_price_unit: Decimal # prompt 价格单位,即单价基于多少 tokens + prompt_price: Decimal # prompt 费用 + completion_tokens: int # 回复使用 tokens + completion_unit_price: Decimal # 回复单价 + completion_price_unit: Decimal # 回复价格单位,即单价基于多少 tokens + completion_price: Decimal # 回复费用 + total_tokens: int # 总使用 token 数 + total_price: Decimal # 总费用 + currency: str # 货币单位 + latency: float # 请求耗时(s) +``` + +--- + +### TextEmbeddingResult + +```python +class TextEmbeddingResult(BaseModel): + """ + Model class for text embedding result. + """ + model: str # 实际使用模型 + embeddings: list[list[float]] # embedding 向量列表,对应传入的 texts 列表 + usage: EmbeddingUsage # 使用信息 +``` + +### EmbeddingUsage + +```python +class EmbeddingUsage(ModelUsage): + """ + Model class for embedding usage. + """ + tokens: int # 使用 token 数 + total_tokens: int # 总使用 token 数 + unit_price: Decimal # 单价 + price_unit: Decimal # 价格单位,即单价基于多少 tokens + total_price: Decimal # 总费用 + currency: str # 货币单位 + latency: float # 请求耗时(s) +``` + +--- + +### RerankResult + +```python +class RerankResult(BaseModel): + """ + Model class for rerank result. + """ + model: str # 实际使用模型 + docs: list[RerankDocument] # 重排后的分段列表 +``` + +### RerankDocument + +```python +class RerankDocument(BaseModel): + """ + Model class for rerank document. + """ + index: int # 原序号 + text: str # 分段文本内容 + score: float # 分数 +``` diff --git a/api/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md b/api/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md new file mode 100644 index 000000000..5f4e84680 --- /dev/null +++ b/api/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md @@ -0,0 +1,171 @@ +## 预定义模型接入 + +供应商集成完成后,接下来为供应商下模型的接入。 + +我们首先需要确定接入模型的类型,并在对应供应商的目录下创建对应模型类型的 `module`。 + +当前支持模型类型如下: + +- `llm` 文本生成模型 +- `text_embedding` 文本 Embedding 模型 +- `rerank` Rerank 模型 +- `speech2text` 语音转文字 +- `moderation` 审查 + +依旧以 `Anthropic` 为例,`Anthropic` 仅支持 LLM,因此在 `model_providers.anthropic` 创建一个 `llm` 为名称的 `module`。 + +对于预定义的模型,我们首先需要在 `llm` `module` 下创建以模型名为文件名称的 YAML 文件,如:`claude-2.1.yaml`。 + +### 准备模型 YAML + +```yaml +model: claude-2.1 # 模型标识 +# 模型展示名称,可设置 en_US 英文、zh_Hans 中文两种语言,zh_Hans 不设置将默认使用 en_US。 +# 也可不设置 label,则使用 model 标识内容。 +label: + en_US: claude-2.1 +model_type: llm # 模型类型,claude-2.1 为 LLM +features: # 支持功能,agent-thought 为支持 Agent 推理,vision 为支持图片理解 +- agent-thought +model_properties: # 模型属性 + mode: chat # LLM 模式,complete 文本补全模型,chat 对话模型 + context_size: 200000 # 支持最大上下文大小 +parameter_rules: # 模型调用参数规则,仅 LLM 需要提供 +- name: temperature # 调用参数变量名 + # 默认预置了 5 种变量内容配置模板,temperature/top_p/max_tokens/presence_penalty/frequency_penalty + # 可在 use_template 中直接设置模板变量名,将会使用 entities.defaults.PARAMETER_RULE_TEMPLATE 中的默认配置 + # 若设置了额外的配置参数,将覆盖默认配置 + use_template: temperature +- name: top_p + use_template: top_p +- name: top_k + label: # 调用参数展示名称 + zh_Hans: 取样数量 + en_US: Top k + type: int # 参数类型,支持 float/int/string/boolean + help: # 帮助信息,描述参数作用 + zh_Hans: 仅从每个后续标记的前 K 个选项中采样。 + en_US: Only sample from the top K options for each subsequent token. + required: false # 是否必填,可不设置 +- name: max_tokens_to_sample + use_template: max_tokens + default: 4096 # 参数默认值 + min: 1 # 参数最小值,仅 float/int 可用 + max: 4096 # 参数最大值,仅 float/int 可用 +pricing: # 价格信息 + input: '8.00' # 输入单价,即 Prompt 单价 + output: '24.00' # 输出单价,即返回内容单价 + unit: '0.000001' # 价格单位,即上述价格为每 100K 的单价 + currency: USD # 价格货币 +``` + +建议将所有模型配置都准备完毕后再开始模型代码的实现。 + +同样,也可以参考 `model_providers` 目录下其他供应商对应模型类型目录下的 YAML 配置信息,完整的 YAML 规则见:[Schema](schema.md#AIModel)。 + +### 实现模型调用代码 + +接下来需要在 `llm` `module` 下创建一个同名的 python 文件 `llm.py` 来编写代码实现。 + +在 `llm.py` 中创建一个 Anthropic LLM 类,我们取名为 `AnthropicLargeLanguageModel`(随意),继承 `__base.large_language_model.LargeLanguageModel` 基类,实现以下几个方法: + +- LLM 调用 + + 实现 LLM 调用的核心方法,可同时支持流式和同步返回。 + + ```python + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :return: full response or stream response chunk generator result + """ + ``` + + 在实现时,需要注意使用两个函数来返回数据,分别用于处理同步返回和流式返回,因为Python会将函数中包含 `yield` 关键字的函数识别为生成器函数,返回的数据类型固定为 `Generator`,因此同步和流式返回需要分别实现,就像下面这样(注意下面例子使用了简化参数,实际实现时需要按照上面的参数列表进行实现): + + ```python + def _invoke(self, stream: bool, **kwargs) \ + -> Union[LLMResult, Generator]: + if stream: + return self._handle_stream_response(**kwargs) + return self._handle_sync_response(**kwargs) + + def _handle_stream_response(self, **kwargs) -> Generator: + for chunk in response: + yield chunk + def _handle_sync_response(self, **kwargs) -> LLMResult: + return LLMResult(**response) + ``` + +- 预计算输入 tokens + + 若模型未提供预计算 tokens 接口,可直接返回 0。 + + ```python + def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage], + tools: Optional[list[PromptMessageTool]] = None) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param tools: tools for tool calling + :return: + """ + ``` + +- 模型凭据校验 + + 与供应商凭据校验类似,这里针对单个模型进行校验。 + + ```python + def validate_credentials(self, model: str, credentials: dict) -> None: + """ + Validate model credentials + + :param model: model name + :param credentials: model credentials + :return: + """ + ``` + +- 调用异常错误映射表 + + 当模型调用异常时需要映射到 Runtime 指定的 `InvokeError` 类型,方便 Dify 针对不同错误做不同后续处理。 + + Runtime Errors: + + - `InvokeConnectionError` 调用连接错误 + - `InvokeServerUnavailableError ` 调用服务方不可用 + - `InvokeRateLimitError ` 调用达到限额 + - `InvokeAuthorizationError` 调用鉴权失败 + - `InvokeBadRequestError ` 调用传参有误 + + ```python + @property + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + """ + Map model invoke error to unified error + The key is the error type thrown to the caller + The value is the error type thrown by the model, + which needs to be converted into a unified error type for the caller. + + :return: Invoke error mapping + """ + ``` + +接口方法说明见:[Interfaces](./interfaces.md),具体实现可参考:[llm.py](https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/llm/llm.py)。 \ No newline at end of file diff --git a/api/core/model_runtime/docs/zh_Hans/provider_scale_out.md b/api/core/model_runtime/docs/zh_Hans/provider_scale_out.md new file mode 100644 index 000000000..b34544c78 --- /dev/null +++ b/api/core/model_runtime/docs/zh_Hans/provider_scale_out.md @@ -0,0 +1,188 @@ +## 增加新供应商 + +供应商支持三种模型配置方式: + +- `predefined-model ` 预定义模型 + + 表示用户只需要配置统一的供应商凭据即可使用供应商下的预定义模型。 + +- `customizable-model` 自定义模型 + + 用户需要新增每个模型的凭据配置,如Xinference,它同时支持 LLM 和 Text Embedding,但是每个模型都有唯一的**model_uid**,如果想要将两者同时接入,就需要为每个模型配置一个**model_uid**。 + +- `fetch-from-remote` 从远程获取 + + 与 `predefined-model` 配置方式一致,只需要配置统一的供应商凭据即可,模型通过凭据信息从供应商获取。 + + 如OpenAI,我们可以基于gpt-turbo-3.5来Fine Tune多个模型,而他们都位于同一个**api_key**下,当配置为 `fetch-from-remote` 时,开发者只需要配置统一的**api_key**即可让DifyRuntime获取到开发者所有的微调模型并接入Dify。 + +这三种配置方式**支持共存**,即存在供应商支持 `predefined-model` + `customizable-model` 或 `predefined-model` + `fetch-from-remote` 等,也就是配置了供应商统一凭据可以使用预定义模型和从远程获取的模型,若新增了模型,则可以在此基础上额外使用自定义的模型。 + +## 开始 + +### 介绍 + +#### 名词解释 + - `module`: 一个`module`即为一个Python Package,或者通俗一点,称为一个文件夹,里面包含了一个`__init__.py`文件,以及其他的`.py`文件。 + +#### 步骤 +新增一个供应商主要分为几步,这里简单列出,帮助大家有一个大概的认识,具体的步骤会在下面详细介绍。 + +- 创建供应商yaml文件,根据[ProviderSchema](./schema.md#provider)编写 +- 创建供应商代码,实现一个`class`。 +- 根据模型类型,在供应商`module`下创建对应的模型类型 `module`,如`llm`或`text_embedding`。 +- 根据模型类型,在对应的模型`module`下创建同名的代码文件,如`llm.py`,并实现一个`class`。 +- 如果有预定义模型,根据模型名称创建同名的yaml文件在模型`module`下,如`claude-2.1.yaml`,根据[AIModelEntity](./schema.md#aimodelentity)编写。 +- 编写测试代码,确保功能可用。 + +### 开始吧 + +增加一个新的供应商需要先确定供应商的英文标识,如 `anthropic`,使用该标识在 `model_providers` 创建以此为名称的 `module`。 + +在此 `module` 下,我们需要先准备供应商的 YAML 配置。 + +#### 准备供应商 YAML + +此处以 `Anthropic` 为例,预设了供应商基础信息、支持的模型类型、配置方式、凭据规则。 + +```YAML +provider: anthropic # 供应商标识 +label: # 供应商展示名称,可设置 en_US 英文、zh_Hans 中文两种语言,zh_Hans 不设置将默认使用 en_US。 + en_US: Anthropic +icon_small: # 供应商小图标,存储在对应供应商实现目录下的 _assets 目录,中英文策略同 label + en_US: icon_s_en.png +icon_large: # 供应商大图标,存储在对应供应商实现目录下的 _assets 目录,中英文策略同 label + en_US: icon_l_en.png +supported_model_types: # 支持的模型类型,Anthropic 仅支持 LLM +- llm +configurate_methods: # 支持的配置方式,Anthropic 仅支持预定义模型 +- predefined-model +provider_credential_schema: # 供应商凭据规则,由于 Anthropic 仅支持预定义模型,则需要定义统一供应商凭据规则 + credential_form_schemas: # 凭据表单项列表 + - variable: anthropic_api_key # 凭据参数变量名 + label: # 展示名称 + en_US: API Key + type: secret-input # 表单类型,此处 secret-input 代表加密信息输入框,编辑时只展示屏蔽后的信息。 + required: true # 是否必填 + placeholder: # PlaceHolder 信息 + zh_Hans: 在此输入您的 API Key + en_US: Enter your API Key + - variable: anthropic_api_url + label: + en_US: API URL + type: text-input # 表单类型,此处 text-input 代表文本输入框 + required: false + placeholder: + zh_Hans: 在此输入您的 API URL + en_US: Enter your API URL +``` + +如果接入的供应商提供自定义模型,比如`OpenAI`提供微调模型,那么我们就需要添加[`model_credential_schema`](./schema.md#modelcredentialschema),以`OpenAI`为例: + +```yaml +model_credential_schema: + model: # 微调模型名称 + label: + en_US: Model Name + zh_Hans: 模型名称 + placeholder: + en_US: Enter your model name + zh_Hans: 输入模型名称 + credential_form_schemas: + - variable: openai_api_key + label: + en_US: API Key + type: secret-input + required: true + placeholder: + zh_Hans: 在此输入您的 API Key + en_US: Enter your API Key + - variable: openai_organization + label: + zh_Hans: 组织 ID + en_US: Organization + type: text-input + required: false + placeholder: + zh_Hans: 在此输入您的组织 ID + en_US: Enter your Organization ID + - variable: openai_api_base + label: + zh_Hans: API Base + en_US: API Base + type: text-input + required: false + placeholder: + zh_Hans: 在此输入您的 API Base + en_US: Enter your API Base +``` + +也可以参考 `model_providers` 目录下其他供应商目录下的 YAML 配置信息,完整的 YAML 规则见:[Schema](schema.md#Provider)。 + +#### 实现供应商代码 + +我们需要在`model_providers`下创建一个同名的python文件,如`anthropic.py`,并实现一个`class`,继承`__base.provider.Provider`基类,如`AnthropicProvider`。 + +##### 自定义模型供应商 + +当供应商为Xinference等自定义模型供应商时,可跳过该步骤,仅创建一个空的`XinferenceProvider`类即可,并实现一个空的`validate_provider_credentials`方法,该方法并不会被实际使用,仅用作避免抽象类无法实例化。 + +```python +class XinferenceProvider(Provider): + def validate_provider_credentials(self, credentials: dict) -> None: + pass +``` + +##### 预定义模型供应商 + +供应商需要继承 `__base.model_provider.ModelProvider` 基类,实现 `validate_provider_credentials` 供应商统一凭据校验方法即可,可参考 [AnthropicProvider](https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/anthropic.py)。 + +```python +def validate_provider_credentials(self, credentials: dict) -> None: + """ + Validate provider credentials + You can choose any validate_credentials method of model type or implement validate method by yourself, + such as: get model list api + + if validate failed, raise exception + + :param credentials: provider credentials, credentials form defined in `provider_credential_schema`. + """ +``` + +当然也可以先预留 `validate_provider_credentials` 实现,在模型凭据校验方法实现后直接复用。 + +#### 增加模型 + +#### [增加预定义模型 👈🏻](./predefined_model_scale_out.md) +对于预定义模型,我们可以通过简单定义一个yaml,并通过实现调用代码来接入。 + +#### [增加自定义模型 👈🏻](./customizable_model_scale_out.md) +对于自定义模型,我们只需要实现调用代码即可接入,但是它需要处理的参数可能会更加复杂。 + +--- + +### 测试 + +为了保证接入供应商/模型的可用性,编写后的每个方法均需要在 `tests` 目录中编写对应的集成测试代码。 + +依旧以 `Anthropic` 为例。 + +在编写测试代码前,需要先在 `.env.example` 新增测试供应商所需要的凭据环境变量,如:`ANTHROPIC_API_KEY`。 + +在执行前需要将 `.env.example` 复制为 `.env` 再执行。 + +#### 编写测试代码 + +在 `tests` 目录下创建供应商同名的 `module`: `anthropic`,继续在此模块中创建 `test_provider.py` 以及对应模型类型的 test py 文件,如下所示: + +```shell +. +├── __init__.py +├── anthropic +│   ├── __init__.py +│   ├── test_llm.py # LLM 测试 +│   └── test_provider.py # 供应商测试 +``` + +针对上面实现的代码的各种情况进行测试代码编写,并测试通过后提交代码。 diff --git a/api/core/model_runtime/docs/zh_Hans/schema.md b/api/core/model_runtime/docs/zh_Hans/schema.md new file mode 100644 index 000000000..155750c06 --- /dev/null +++ b/api/core/model_runtime/docs/zh_Hans/schema.md @@ -0,0 +1,196 @@ +# 配置规则 + +- 供应商规则基于 [Provider](#Provider) 实体。 + +- 模型规则基于 [AIModelEntity](#AIModelEntity) 实体。 + +> 以下所有实体均基于 `Pydantic BaseModel`,可在 `entities` 模块中找到对应实体。 + +### Provider + +- `provider` (string) 供应商标识,如:`openai` +- `label` (object) 供应商展示名称,i18n,可设置 `en_US` 英文、`zh_Hans` 中文两种语言 + - `zh_Hans ` (string) [optional] 中文标签名,`zh_Hans` 不设置将默认使用 `en_US`。 + - `en_US` (string) 英文标签名 +- `description` (object) [optional] 供应商描述,i18n + - `zh_Hans` (string) [optional] 中文描述 + - `en_US` (string) 英文描述 +- `icon_small` (string) [optional] 供应商小 ICON,存储在对应供应商实现目录下的 `_assets` 目录,中英文策略同 `label` + - `zh_Hans` (string) [optional] 中文 ICON + - `en_US` (string) 英文 ICON +- `icon_large` (string) [optional] 供应商大 ICON,存储在对应供应商实现目录下的 _assets 目录,中英文策略同 label + - `zh_Hans `(string) [optional] 中文 ICON + - `en_US` (string) 英文 ICON +- `background` (string) [optional] 背景颜色色值,例:#FFFFFF,为空则展示前端默认色值。 +- `help` (object) [optional] 帮助信息 + - `title` (object) 帮助标题,i18n + - `zh_Hans` (string) [optional] 中文标题 + - `en_US` (string) 英文标题 + - `url` (object) 帮助链接,i18n + - `zh_Hans` (string) [optional] 中文链接 + - `en_US` (string) 英文链接 +- `supported_model_types` (array[[ModelType](#ModelType)]) 支持的模型类型 +- `configurate_methods` (array[[ConfigurateMethod](#ConfigurateMethod)]) 配置方式 +- `provider_credential_schema` ([ProviderCredentialSchema](#ProviderCredentialSchema)) 供应商凭据规格 +- `model_credential_schema` ([ModelCredentialSchema](#ModelCredentialSchema)) 模型凭据规格 + +### AIModelEntity + +- `model` (string) 模型标识,如:`gpt-3.5-turbo` +- `label` (object) [optional] 模型展示名称,i18n,可设置 `en_US` 英文、`zh_Hans` 中文两种语言 + - `zh_Hans `(string) [optional] 中文标签名 + - `en_US` (string) 英文标签名 +- `model_type` ([ModelType](#ModelType)) 模型类型 +- `features` (array[[ModelFeature](#ModelFeature)]) [optional] 支持功能列表 +- `model_properties` (object) 模型属性 + - `mode` ([LLMMode](#LLMMode)) 模式 (模型类型 `llm` 可用) + - `context_size` (int) 上下文大小 (模型类型 `llm` `text-embedding` 可用) + - `max_chunks` (int) 最大分块数量 (模型类型 `text-embedding ` `moderation` 可用) + - `file_upload_limit` (int) 文件最大上传限制,单位:MB。(模型类型 `speech2text` 可用) + - `supported_file_extensions` (string) 支持文件扩展格式,如:mp3,mp4(模型类型 `speech2text` 可用) + - `max_characters_per_chunk` (int) 每块最大字符数 (模型类型 `moderation` 可用) +- `parameter_rules` (array[[ParameterRule](#ParameterRule)]) [optional] 模型调用参数规则 +- `pricing` ([PriceConfig](#PriceConfig)) [optional] 价格信息 +- `deprecated` (bool) 是否废弃。若废弃,模型列表将不再展示,但已经配置的可以继续使用,默认 False。 + +### ModelType + +- `llm` 文本生成模型 +- `text-embedding` 文本 Embedding 模型 +- `rerank` Rerank 模型 +- `speech2text` 语音转文字 +- `moderation` 审查 + +### ConfigurateMethod + +- `predefined-model ` 预定义模型 + + 表示用户只需要配置统一的供应商凭据即可使用供应商下的预定义模型。 +- `customizable-model` 自定义模型 + + 用户需要新增每个模型的凭据配置。 + +- `fetch-from-remote` 从远程获取 + + 与 `predefined-model` 配置方式一致,只需要配置统一的供应商凭据即可,模型通过凭据信息从供应商获取。 + +### ModelFeature + +- `agent-thought` Agent 推理,一般超过 70B 有思维链能力。 +- `vision` 视觉,即:图像理解。 + +### FetchFrom + +- `predefined-model` 预定义模型 +- `fetch-from-remote` 远程模型 + +### LLMMode + +- `completion` 文本补全 +- `chat` 对话 + +### ParameterRule + +- `name` (string) 调用模型实际参数名 + +- `use_template` (string) [optional] 使用模板 + + 默认预置了 5 种变量内容配置模板: + + - `temperature` + - `top_p` + - `frequency_penalty` + - `presence_penalty` + - `max_tokens` + + 可在 use_template 中直接设置模板变量名,将会使用 entities.defaults.PARAMETER_RULE_TEMPLATE 中的默认配置 + 不用设置除 `name` 和 `use_template` 之外的所有参数,若设置了额外的配置参数,将覆盖默认配置。 + 可参考 `openai/llm/gpt-3.5-turbo.yaml`。 + +- `label` (object) [optional] 标签,i18n + + - `zh_Hans`(string) [optional] 中文标签名 + - `en_US` (string) 英文标签名 + +- `type`(string) [optional] 参数类型 + + - `int` 整数 + - `float` 浮点数 + - `string` 字符串 + - `boolean` 布尔型 + +- `help` (string) [optional] 帮助信息 + + - `zh_Hans` (string) [optional] 中文帮助信息 + - `en_US` (string) 英文帮助信息 + +- `required` (bool) 是否必填,默认 False。 + +- `default`(int/float/string/bool) [optional] 默认值 + +- `min`(int/float) [optional] 最小值,仅数字类型适用 + +- `max`(int/float) [optional] 最大值,仅数字类型适用 + +- `precision`(int) [optional] 精度,保留小数位数,仅数字类型适用 + +- `options` (array[string]) [optional] 下拉选项值,仅当 `type` 为 `string` 时适用,若不设置或为 null 则不限制选项值 + +### PriceConfig + +- `input` (float) 输入单价,即 Prompt 单价 +- `output` (float) 输出单价,即返回内容单价 +- `unit` (float) 价格单位,如:每 100K 的单价为 `0.000001` +- `currency` (string) 货币单位 + +### ProviderCredentialSchema + +- `credential_form_schemas` (array[[CredentialFormSchema](#CredentialFormSchema)]) 凭据表单规范 + +### ModelCredentialSchema + +- `model` (object) 模型标识,变量名默认 `model` + - `label` (object) 模型表单项展示名称 + - `en_US` (string) 英文 + - `zh_Hans`(string) [optional] 中文 + - `placeholder` (object) 模型提示内容 + - `en_US`(string) 英文 + - `zh_Hans`(string) [optional] 中文 +- `credential_form_schemas` (array[[CredentialFormSchema](#CredentialFormSchema)]) 凭据表单规范 + +### CredentialFormSchema + +- `variable` (string) 表单项变量名 +- `label` (object) 表单项标签名 + - `en_US`(string) 英文 + - `zh_Hans` (string) [optional] 中文 +- `type` ([FormType](#FormType)) 表单项类型 +- `required` (bool) 是否必填 +- `default`(string) 默认值 +- `options` (array[[FormOption](#FormOption)]) 表单项为 `select` 或 `radio` 专有属性,定义下拉内容 +- `placeholder`(object) 表单项为 `text-input `专有属性,表单项 PlaceHolder + - `en_US`(string) 英文 + - `zh_Hans` (string) [optional] 中文 +- `max_length` (int) 表单项为`text-input`专有属性,定义输入最大长度,0 为不限制。 +- `show_on` (array[[FormShowOnObject](#FormShowOnObject)]) 当其他表单项值符合条件时显示,为空则始终显示。 + +### FormType + +- `text-input` 文本输入组件 +- `secret-input` 密码输入组件 +- `select` 单选下拉 +- `radio` Radio 组件 +- `switch` 开关组件,仅支持 `true` 和 `false` + +### FormOption + +- `label` (object) 标签 + - `en_US`(string) 英文 + - `zh_Hans`(string) [optional] 中文 +- `value` (string) 下拉选项值 +- `show_on` (array[[FormShowOnObject](#FormShowOnObject)]) 当其他表单项值符合条件时显示,为空则始终显示。 + +### FormShowOnObject + +- `variable` (string) 其他表单项变量名 +- `value` (string) 其他表单项变量值 diff --git a/api/core/model_providers/providers/__init__.py b/api/core/model_runtime/entities/__init__.py similarity index 100% rename from api/core/model_providers/providers/__init__.py rename to api/core/model_runtime/entities/__init__.py diff --git a/api/core/model_runtime/entities/common_entities.py b/api/core/model_runtime/entities/common_entities.py new file mode 100644 index 000000000..175c13cfd --- /dev/null +++ b/api/core/model_runtime/entities/common_entities.py @@ -0,0 +1,16 @@ +from typing import Optional + +from pydantic import BaseModel + + +class I18nObject(BaseModel): + """ + Model class for i18n object. + """ + zh_Hans: Optional[str] = None + en_US: str + + def __init__(self, **data): + super().__init__(**data) + if not self.zh_Hans: + self.zh_Hans = self.en_US diff --git a/api/core/model_runtime/entities/defaults.py b/api/core/model_runtime/entities/defaults.py new file mode 100644 index 000000000..02929710d --- /dev/null +++ b/api/core/model_runtime/entities/defaults.py @@ -0,0 +1,87 @@ +from typing import Dict + +from core.model_runtime.entities.model_entities import DefaultParameterName + + +PARAMETER_RULE_TEMPLATE: Dict[DefaultParameterName, dict] = { + DefaultParameterName.TEMPERATURE: { + 'label': { + 'en_US': 'Temperature', + 'zh_Hans': '温度', + }, + 'type': 'float', + 'help': { + 'en_US': 'Controls randomness. Lower temperature results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive. Higher temperature results in more random completions.', + 'zh_Hans': '温度控制随机性。较低的温度会导致较少的随机完成。随着温度接近零,模型将变得确定性和重复性。较高的温度会导致更多的随机完成。', + }, + 'required': False, + 'default': 0.0, + 'min': 0.0, + 'max': 1.0, + 'precision': 1, + }, + DefaultParameterName.TOP_P: { + 'label': { + 'en_US': 'Top P', + 'zh_Hans': 'Top P', + }, + 'type': 'float', + 'help': { + 'en_US': 'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.', + 'zh_Hans': '通过核心采样控制多样性:0.5表示考虑了一半的所有可能性加权选项。', + }, + 'required': False, + 'default': 1.0, + 'min': 0.0, + 'max': 1.0, + 'precision': 1, + }, + DefaultParameterName.PRESENCE_PENALTY: { + 'label': { + 'en_US': 'Presence Penalty', + 'zh_Hans': '存在惩罚', + }, + 'type': 'float', + 'help': { + 'en_US': 'Applies a penalty to the log-probability of tokens already in the text.', + 'zh_Hans': '对文本中已有的标记的对数概率施加惩罚。', + }, + 'required': False, + 'default': 0.0, + 'min': 0.0, + 'max': 1.0, + 'precision': 1, + }, + DefaultParameterName.FREQUENCY_PENALTY: { + 'label': { + 'en_US': 'Frequency Penalty', + 'zh_Hans': '频率惩罚', + }, + 'type': 'float', + 'help': { + 'en_US': 'Applies a penalty to the log-probability of tokens that appear in the text.', + 'zh_Hans': '对文本中出现的标记的对数概率施加惩罚。', + }, + 'required': False, + 'default': 0.0, + 'min': 0.0, + 'max': 1.0, + 'precision': 1, + }, + DefaultParameterName.MAX_TOKENS: { + 'label': { + 'en_US': 'Max Tokens', + 'zh_Hans': '最大标记', + }, + 'type': 'int', + 'help': { + 'en_US': 'The maximum number of tokens to generate. Requests can use up to 2048 tokens shared between prompt and completion.', + 'zh_Hans': '要生成的标记的最大数量。请求可以使用最多2048个标记,这些标记在提示和完成之间共享。', + }, + 'required': False, + 'default': 64, + 'min': 1, + 'max': 2048, + 'precision': 0, + } +} \ No newline at end of file diff --git a/api/core/model_runtime/entities/llm_entities.py b/api/core/model_runtime/entities/llm_entities.py new file mode 100644 index 000000000..b5bd9e267 --- /dev/null +++ b/api/core/model_runtime/entities/llm_entities.py @@ -0,0 +1,102 @@ +from decimal import Decimal +from enum import Enum +from typing import Optional + +from pydantic import BaseModel + +from core.model_runtime.entities.message_entities import AssistantPromptMessage, PromptMessage +from core.model_runtime.entities.model_entities import ModelUsage, PriceInfo + + +class LLMMode(Enum): + """ + Enum class for large language model mode. + """ + COMPLETION = "completion" + CHAT = "chat" + + @classmethod + def value_of(cls, value: str) -> 'LLMMode': + """ + Get value of given mode. + + :param value: mode value + :return: mode + """ + for mode in cls: + if mode.value == value: + return mode + raise ValueError(f'invalid mode value {value}') + + +class LLMUsage(ModelUsage): + """ + Model class for llm usage. + """ + prompt_tokens: int + prompt_unit_price: Decimal + prompt_price_unit: Decimal + prompt_price: Decimal + completion_tokens: int + completion_unit_price: Decimal + completion_price_unit: Decimal + completion_price: Decimal + total_tokens: int + total_price: Decimal + currency: str + latency: float + + @classmethod + def empty_usage(cls): + return cls( + prompt_tokens=0, + prompt_unit_price=Decimal('0.0'), + prompt_price_unit=Decimal('0.0'), + prompt_price=Decimal('0.0'), + completion_tokens=0, + completion_unit_price=Decimal('0.0'), + completion_price_unit=Decimal('0.0'), + completion_price=Decimal('0.0'), + total_tokens=0, + total_price=Decimal('0.0'), + currency='USD', + latency=0.0 + ) + + +class LLMResult(BaseModel): + """ + Model class for llm result. + """ + model: str + prompt_messages: list[PromptMessage] + message: AssistantPromptMessage + usage: LLMUsage + system_fingerprint: Optional[str] = None + + +class LLMResultChunkDelta(BaseModel): + """ + Model class for llm result chunk delta. + """ + index: int + message: AssistantPromptMessage + usage: Optional[LLMUsage] = None + finish_reason: Optional[str] = None + + +class LLMResultChunk(BaseModel): + """ + Model class for llm result chunk. + """ + model: str + prompt_messages: list[PromptMessage] + system_fingerprint: Optional[str] = None + delta: LLMResultChunkDelta + + +class NumTokensResult(PriceInfo): + """ + Model class for number of tokens result. + """ + tokens: int diff --git a/api/core/model_runtime/entities/message_entities.py b/api/core/model_runtime/entities/message_entities.py new file mode 100644 index 000000000..83b12082b --- /dev/null +++ b/api/core/model_runtime/entities/message_entities.py @@ -0,0 +1,134 @@ +from abc import ABC +from enum import Enum +from typing import Optional + +from pydantic import BaseModel + + +class PromptMessageRole(Enum): + """ + Enum class for prompt message. + """ + SYSTEM = "system" + USER = "user" + ASSISTANT = "assistant" + TOOL = "tool" + + @classmethod + def value_of(cls, value: str) -> 'PromptMessageRole': + """ + Get value of given mode. + + :param value: mode value + :return: mode + """ + for mode in cls: + if mode.value == value: + return mode + raise ValueError(f'invalid prompt message type value {value}') + + +class PromptMessageTool(BaseModel): + """ + Model class for prompt message tool. + """ + name: str + description: str + parameters: dict + + +class PromptMessageFunction(BaseModel): + """ + Model class for prompt message function. + """ + type: str = 'function' + function: PromptMessageTool + + +class PromptMessageContentType(Enum): + """ + Enum class for prompt message content type. + """ + TEXT = 'text' + IMAGE = 'image' + + +class PromptMessageContent(BaseModel): + """ + Model class for prompt message content. + """ + type: PromptMessageContentType + data: str + + +class TextPromptMessageContent(PromptMessageContent): + """ + Model class for text prompt message content. + """ + type: PromptMessageContentType = PromptMessageContentType.TEXT + + +class ImagePromptMessageContent(PromptMessageContent): + """ + Model class for image prompt message content. + """ + class DETAIL(Enum): + LOW = 'low' + HIGH = 'high' + + type: PromptMessageContentType = PromptMessageContentType.IMAGE + detail: DETAIL = DETAIL.LOW + + +class PromptMessage(ABC, BaseModel): + """ + Model class for prompt message. + """ + role: PromptMessageRole + content: Optional[str | list[PromptMessageContent]] = None + name: Optional[str] = None + + +class UserPromptMessage(PromptMessage): + """ + Model class for user prompt message. + """ + role: PromptMessageRole = PromptMessageRole.USER + + +class AssistantPromptMessage(PromptMessage): + """ + Model class for assistant prompt message. + """ + class ToolCall(BaseModel): + """ + Model class for assistant prompt message tool call. + """ + class ToolCallFunction(BaseModel): + """ + Model class for assistant prompt message tool call function. + """ + name: str + arguments: str + + id: str + type: str + function: ToolCallFunction + + role: PromptMessageRole = PromptMessageRole.ASSISTANT + tool_calls: list[ToolCall] = [] + + +class SystemPromptMessage(PromptMessage): + """ + Model class for system prompt message. + """ + role: PromptMessageRole = PromptMessageRole.SYSTEM + + +class ToolPromptMessage(PromptMessage): + """ + Model class for tool prompt message. + """ + role: PromptMessageRole = PromptMessageRole.TOOL + tool_call_id: str diff --git a/api/core/model_runtime/entities/model_entities.py b/api/core/model_runtime/entities/model_entities.py new file mode 100644 index 000000000..b9393071a --- /dev/null +++ b/api/core/model_runtime/entities/model_entities.py @@ -0,0 +1,196 @@ +from decimal import Decimal +from enum import Enum +from typing import Any, Optional + +from pydantic import BaseModel + +from core.model_runtime.entities.common_entities import I18nObject + + +class ModelType(Enum): + """ + Enum class for model type. + """ + LLM = "llm" + TEXT_EMBEDDING = "text-embedding" + RERANK = "rerank" + SPEECH2TEXT = "speech2text" + MODERATION = "moderation" + # TTS = "tts" + # TEXT2IMG = "text2img" + + @classmethod + def value_of(cls, origin_model_type: str) -> "ModelType": + """ + Get model type from origin model type. + + :return: model type + """ + if origin_model_type == 'text-generation' or origin_model_type == cls.LLM.value: + return cls.LLM + elif origin_model_type == 'embeddings' or origin_model_type == cls.TEXT_EMBEDDING.value: + return cls.TEXT_EMBEDDING + elif origin_model_type == 'reranking' or origin_model_type == cls.RERANK.value: + return cls.RERANK + elif origin_model_type == cls.SPEECH2TEXT.value: + return cls.SPEECH2TEXT + elif origin_model_type == cls.MODERATION.value: + return cls.MODERATION + else: + raise ValueError(f'invalid origin model type {origin_model_type}') + + def to_origin_model_type(self) -> str: + """ + Get origin model type from model type. + + :return: origin model type + """ + if self == self.LLM: + return 'text-generation' + elif self == self.TEXT_EMBEDDING: + return 'embeddings' + elif self == self.RERANK: + return 'reranking' + elif self == self.SPEECH2TEXT: + return 'speech2text' + elif self == self.MODERATION: + return 'moderation' + else: + raise ValueError(f'invalid model type {self}') + + +class FetchFrom(Enum): + """ + Enum class for fetch from. + """ + PREDEFINED_MODEL = "predefined-model" + CUSTOMIZABLE_MODEL = "customizable-model" + + +class ModelFeature(Enum): + """ + Enum class for llm feature. + """ + TOOL_CALL = "tool-call" + MULTI_TOOL_CALL = "multi-tool-call" + AGENT_THOUGHT = "agent-thought" + VISION = "vision" + + +class DefaultParameterName(Enum): + """ + Enum class for parameter template variable. + """ + TEMPERATURE = "temperature" + TOP_P = "top_p" + PRESENCE_PENALTY = "presence_penalty" + FREQUENCY_PENALTY = "frequency_penalty" + MAX_TOKENS = "max_tokens" + + @classmethod + def value_of(cls, value: Any) -> 'DefaultParameterName': + """ + Get parameter name from value. + + :param value: parameter value + :return: parameter name + """ + for name in cls: + if name.value == value: + return name + raise ValueError(f'invalid parameter name {value}') + + +class ParameterType(Enum): + """ + Enum class for parameter type. + """ + FLOAT = "float" + INT = "int" + STRING = "string" + BOOLEAN = "boolean" + + +class ModelPropertyKey(Enum): + """ + Enum class for model property key. + """ + MODE = "mode" + CONTEXT_SIZE = "context_size" + MAX_CHUNKS = "max_chunks" + FILE_UPLOAD_LIMIT = "file_upload_limit" + SUPPORTED_FILE_EXTENSIONS = "supported_file_extensions" + MAX_CHARACTERS_PER_CHUNK = "max_characters_per_chunk" + + +class ProviderModel(BaseModel): + """ + Model class for provider model. + """ + model: str + label: I18nObject + model_type: ModelType + features: Optional[list[ModelFeature]] = None + fetch_from: FetchFrom + model_properties: dict[ModelPropertyKey, Any] + deprecated: bool = False + + class Config: + protected_namespaces = () + + +class ParameterRule(BaseModel): + """ + Model class for parameter rule. + """ + name: str + use_template: Optional[str] = None + label: I18nObject + type: ParameterType + help: Optional[I18nObject] = None + required: bool = False + default: Optional[Any] = None + min: Optional[float | int] = None + max: Optional[float | int] = None + precision: Optional[int] = None + options: list[str] = [] + + +class PriceConfig(BaseModel): + """ + Model class for pricing info. + """ + input: Decimal + output: Optional[Decimal] = None + unit: Decimal + currency: str + + +class AIModelEntity(ProviderModel): + """ + Model class for AI model. + """ + parameter_rules: list[ParameterRule] = [] + pricing: Optional[PriceConfig] = None + + +class ModelUsage(BaseModel): + pass + + +class PriceType(Enum): + """ + Enum class for price type. + """ + INPUT = "input" + OUTPUT = "output" + + +class PriceInfo(BaseModel): + """ + Model class for price info. + """ + unit_price: Decimal + unit: Decimal + total_amount: Decimal + currency: str diff --git a/api/core/model_runtime/entities/provider_entities.py b/api/core/model_runtime/entities/provider_entities.py new file mode 100644 index 000000000..bf3fe0878 --- /dev/null +++ b/api/core/model_runtime/entities/provider_entities.py @@ -0,0 +1,149 @@ +from enum import Enum +from typing import Optional + +from pydantic import BaseModel + +from core.model_runtime.entities.common_entities import I18nObject +from core.model_runtime.entities.model_entities import ModelType, ProviderModel, AIModelEntity + + +class ConfigurateMethod(Enum): + """ + Enum class for configurate method of provider model. + """ + PREDEFINED_MODEL = "predefined-model" + CUSTOMIZABLE_MODEL = "customizable-model" + + +class FormType(Enum): + """ + Enum class for form type. + """ + TEXT_INPUT = "text-input" + SECRET_INPUT = "secret-input" + SELECT = "select" + RADIO = "radio" + SWITCH = "switch" + + +class FormShowOnObject(BaseModel): + """ + Model class for form show on. + """ + variable: str + value: str + + +class FormOption(BaseModel): + """ + Model class for form option. + """ + label: I18nObject + value: str + show_on: list[FormShowOnObject] = [] + + def __init__(self, **data): + super().__init__(**data) + if not self.label: + self.label = I18nObject( + en_US=self.value + ) + + +class CredentialFormSchema(BaseModel): + """ + Model class for credential form schema. + """ + variable: str + label: I18nObject + type: FormType + required: bool = True + default: Optional[str] = None + options: Optional[list[FormOption]] = None + placeholder: Optional[I18nObject] = None + max_length: int = 0 + show_on: list[FormShowOnObject] = [] + + +class ProviderCredentialSchema(BaseModel): + """ + Model class for provider credential schema. + """ + credential_form_schemas: list[CredentialFormSchema] + + +class FieldModelSchema(BaseModel): + label: I18nObject + placeholder: Optional[I18nObject] = None + + +class ModelCredentialSchema(BaseModel): + """ + Model class for model credential schema. + """ + model: FieldModelSchema + credential_form_schemas: list[CredentialFormSchema] + + +class SimpleProviderEntity(BaseModel): + """ + Simple model class for provider. + """ + provider: str + label: I18nObject + icon_small: Optional[I18nObject] = None + icon_large: Optional[I18nObject] = None + supported_model_types: list[ModelType] + models: list[AIModelEntity] = [] + + +class ProviderHelpEntity(BaseModel): + """ + Model class for provider help. + """ + title: I18nObject + url: I18nObject + + +class ProviderEntity(BaseModel): + """ + Model class for provider. + """ + provider: str + label: I18nObject + description: Optional[I18nObject] = None + icon_small: Optional[I18nObject] = None + icon_large: Optional[I18nObject] = None + background: Optional[str] = None + help: Optional[ProviderHelpEntity] = None + supported_model_types: list[ModelType] + configurate_methods: list[ConfigurateMethod] + models: list[ProviderModel] = [] + provider_credential_schema: Optional[ProviderCredentialSchema] = None + model_credential_schema: Optional[ModelCredentialSchema] = None + + class Config: + protected_namespaces = () + + def to_simple_provider(self) -> SimpleProviderEntity: + """ + Convert to simple provider. + + :return: simple provider + """ + return SimpleProviderEntity( + provider=self.provider, + label=self.label, + icon_small=self.icon_small, + icon_large=self.icon_large, + supported_model_types=self.supported_model_types, + models=self.models + ) + + +class ProviderConfig(BaseModel): + """ + Model class for provider config. + """ + provider: str + credentials: dict diff --git a/api/core/model_runtime/entities/rerank_entities.py b/api/core/model_runtime/entities/rerank_entities.py new file mode 100644 index 000000000..d51efd2b3 --- /dev/null +++ b/api/core/model_runtime/entities/rerank_entities.py @@ -0,0 +1,18 @@ +from pydantic import BaseModel + + +class RerankDocument(BaseModel): + """ + Model class for rerank document. + """ + index: int + text: str + score: float + + +class RerankResult(BaseModel): + """ + Model class for rerank result. + """ + model: str + docs: list[RerankDocument] diff --git a/api/core/model_runtime/entities/text_embedding_entities.py b/api/core/model_runtime/entities/text_embedding_entities.py new file mode 100644 index 000000000..7be3def37 --- /dev/null +++ b/api/core/model_runtime/entities/text_embedding_entities.py @@ -0,0 +1,28 @@ +from decimal import Decimal + +from pydantic import BaseModel + +from core.model_runtime.entities.model_entities import ModelUsage + + +class EmbeddingUsage(ModelUsage): + """ + Model class for embedding usage. + """ + tokens: int + total_tokens: int + unit_price: Decimal + price_unit: Decimal + total_price: Decimal + currency: str + latency: float + + +class TextEmbeddingResult(BaseModel): + """ + Model class for text embedding result. + """ + model: str + embeddings: list[list[float]] + usage: EmbeddingUsage + diff --git a/api/core/third_party/langchain/embeddings/__init__.py b/api/core/model_runtime/errors/__init__.py similarity index 100% rename from api/core/third_party/langchain/embeddings/__init__.py rename to api/core/model_runtime/errors/__init__.py diff --git a/api/core/model_runtime/errors/invoke.py b/api/core/model_runtime/errors/invoke.py new file mode 100644 index 000000000..fc51f5c74 --- /dev/null +++ b/api/core/model_runtime/errors/invoke.py @@ -0,0 +1,34 @@ +from typing import Optional + + +class InvokeError(Exception): + """Base class for all LLM exceptions.""" + description: Optional[str] = None + + def __init__(self, description: Optional[str] = None) -> None: + self.description = description + + +class InvokeConnectionError(InvokeError): + """Raised when the Invoke returns connection error.""" + description = "Connection Error" + + +class InvokeServerUnavailableError(InvokeError): + """Raised when the Invoke returns server unavailable error.""" + description = "Server Unavailable Error" + + +class InvokeRateLimitError(InvokeError): + """Raised when the Invoke returns rate limit error.""" + description = "Rate Limit Error" + + +class InvokeAuthorizationError(InvokeError): + """Raised when the Invoke returns authorization error.""" + description = "Incorrect model credentials provided, please check and try again. " + + +class InvokeBadRequestError(InvokeError): + """Raised when the Invoke returns bad request.""" + description = "Bad Request Error" diff --git a/api/core/model_runtime/errors/validate.py b/api/core/model_runtime/errors/validate.py new file mode 100644 index 000000000..8db79a52b --- /dev/null +++ b/api/core/model_runtime/errors/validate.py @@ -0,0 +1,5 @@ +class CredentialsValidateFailedError(Exception): + """ + Credentials validate failed error + """ + pass diff --git a/api/tests/integration_tests/models/__init__.py b/api/core/model_runtime/model_providers/__base/__init__.py similarity index 100% rename from api/tests/integration_tests/models/__init__.py rename to api/core/model_runtime/model_providers/__base/__init__.py diff --git a/api/core/model_runtime/model_providers/__base/ai_model.py b/api/core/model_runtime/model_providers/__base/ai_model.py new file mode 100644 index 000000000..e0b1796da --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/ai_model.py @@ -0,0 +1,328 @@ +import decimal +import json +import logging +import os +from abc import ABC, abstractmethod +from typing import Optional + +import yaml +from pydantic import ValidationError + +from core.model_runtime.entities.defaults import PARAMETER_RULE_TEMPLATE +from core.model_runtime.entities.model_entities import PriceInfo, AIModelEntity, PriceType, PriceConfig, \ + DefaultParameterName, FetchFrom, ModelType +from core.model_runtime.entities.common_entities import I18nObject +from core.model_runtime.errors.invoke import InvokeError, InvokeAuthorizationError +from core.model_runtime.model_providers.__base.tokenizers.gpt2_tokenzier import GPT2Tokenizer + + +class AIModel(ABC): + """ + Base class for all models. + """ + model_type: ModelType + model_schemas: list[AIModelEntity] = None + started_at: float = 0 + + @abstractmethod + def validate_credentials(self, model: str, credentials: dict) -> None: + """ + Validate model credentials + + :param model: model name + :param credentials: model credentials + :return: + """ + raise NotImplementedError + + @property + @abstractmethod + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + """ + Map model invoke error to unified error + The key is the error type thrown to the caller + The value is the error type thrown by the model, + which needs to be converted into a unified error type for the caller. + + :return: Invoke error mapping + """ + raise NotImplementedError + + def _transform_invoke_error(self, error: Exception) -> InvokeError: + """ + Transform invoke error to unified error + + :param error: model invoke error + :return: unified error + """ + for invoke_error, model_errors in self._invoke_error_mapping.items(): + if isinstance(error, tuple(model_errors)): + if invoke_error == InvokeAuthorizationError: + return invoke_error(description="Incorrect model credentials provided, please check and try again. ") + + return invoke_error(description=f"{invoke_error.description}: {str(error)}") + + return InvokeError(description=f"Error: {str(error)}") + + def get_price(self, model: str, credentials: dict, price_type: PriceType, tokens: int) -> PriceInfo: + """ + Get price for given model and tokens + + :param model: model name + :param credentials: model credentials + :param price_type: price type + :param tokens: number of tokens + :return: price info + """ + # get model schema + model_schema = self.get_model_schema(model, credentials) + + # get price info from predefined model schema + price_config: Optional[PriceConfig] = None + if model_schema: + price_config: PriceConfig = model_schema.pricing + + # get unit price + unit_price = None + if price_config: + if price_type == PriceType.INPUT: + unit_price = price_config.input + elif price_type == PriceType.OUTPUT and price_config.output is not None: + unit_price = price_config.output + + if unit_price is None: + return PriceInfo( + unit_price=decimal.Decimal('0.0'), + unit=decimal.Decimal('0.0'), + total_amount=decimal.Decimal('0.0'), + currency="USD", + ) + + # calculate total amount + total_amount = tokens * unit_price * price_config.unit + total_amount = total_amount.quantize(decimal.Decimal('0.0000001'), rounding=decimal.ROUND_HALF_UP) + + return PriceInfo( + unit_price=unit_price, + unit=price_config.unit, + total_amount=total_amount, + currency=price_config.currency, + ) + + def predefined_models(self) -> list[AIModelEntity]: + """ + Get all predefined models for given provider. + + :return: + """ + if self.model_schemas: + return self.model_schemas + + model_schemas = [] + + # get module name + model_type = self.__class__.__module__.split('.')[-1] + + # get provider name + provider_name = self.__class__.__module__.split('.')[-3] + + # get the path of current classes + current_path = os.path.abspath(__file__) + # get parent path of the current path + provider_model_type_path = os.path.join(os.path.dirname(os.path.dirname(current_path)), provider_name, model_type) + + # get all yaml files path under provider_model_type_path that do not start with __ + model_schema_yaml_paths = [ + os.path.join(provider_model_type_path, model_schema_yaml) + for model_schema_yaml in os.listdir(provider_model_type_path) + if not model_schema_yaml.startswith('__') + and not model_schema_yaml.startswith('_') + and os.path.isfile(os.path.join(provider_model_type_path, model_schema_yaml)) + and model_schema_yaml.endswith('.yaml') + ] + + # get _position.yaml file path + position_file_path = os.path.join(provider_model_type_path, '_position.yaml') + + # read _position.yaml file + position_map = {} + if os.path.exists(position_file_path): + with open(position_file_path, 'r') as f: + position_map = yaml.safe_load(f) + + # traverse all model_schema_yaml_paths + for model_schema_yaml_path in model_schema_yaml_paths: + # read yaml data from yaml file + with open(model_schema_yaml_path, 'r') as f: + yaml_data = yaml.safe_load(f) + + new_parameter_rules = [] + for parameter_rule in yaml_data.get('parameter_rules', []): + if 'use_template' in parameter_rule: + try: + default_parameter_name = DefaultParameterName.value_of(parameter_rule['use_template']) + default_parameter_rule = self._get_default_parameter_rule_variable_map(default_parameter_name) + copy_default_parameter_rule = default_parameter_rule.copy() + copy_default_parameter_rule.update(parameter_rule) + parameter_rule = copy_default_parameter_rule + except ValueError: + pass + + if 'label' not in parameter_rule: + parameter_rule['label'] = { + 'zh_Hans': parameter_rule['name'], + 'en_US': parameter_rule['name'] + } + + new_parameter_rules.append(parameter_rule) + + yaml_data['parameter_rules'] = new_parameter_rules + + if 'label' not in yaml_data: + yaml_data['label'] = { + 'zh_Hans': yaml_data['model'], + 'en_US': yaml_data['model'] + } + + yaml_data['fetch_from'] = FetchFrom.PREDEFINED_MODEL.value + + try: + # yaml_data to entity + model_schema = AIModelEntity(**yaml_data) + except Exception as e: + model_schema_yaml_file_name = os.path.basename(model_schema_yaml_path).rstrip(".yaml") + raise Exception(f'Invalid model schema for {provider_name}.{model_type}.{model_schema_yaml_file_name}:' + f' {str(e)}') + + # cache model schema + model_schemas.append(model_schema) + + # resort model schemas by position + if position_map: + model_schemas.sort(key=lambda x: position_map.get(x.model, 999)) + + # cache model schemas + self.model_schemas = model_schemas + + return model_schemas + + def get_model_schema(self, model: str, credentials: Optional[dict] = None) -> Optional[AIModelEntity]: + """ + Get model schema by model name and credentials + + :param model: model name + :param credentials: model credentials + :return: model schema + """ + # get predefined models (predefined_models) + models = self.predefined_models() + + model_map = {model.model: model for model in models} + if model in model_map: + return model_map[model] + + if credentials: + model_schema = self.get_customizable_model_schema_from_credentials(model, credentials) + if model_schema: + return model_schema + + return None + + def get_customizable_model_schema_from_credentials(self, model: str, credentials: dict) -> Optional[AIModelEntity]: + """ + Get customizable model schema from credentials + + :param model: model name + :param credentials: model credentials + :return: model schema + """ + if 'schema' in credentials: + schema_dict = json.loads(credentials['schema']) + + try: + model_instance = AIModelEntity.parse_obj(schema_dict) + return model_instance + except ValidationError as e: + logging.exception(f"Invalid model schema for {model}") + return self._get_customizable_model_schema(model, credentials) + + return self._get_customizable_model_schema(model, credentials) + + def _get_customizable_model_schema(self, model: str, credentials: dict) -> Optional[AIModelEntity]: + """ + Get customizable model schema and fill in the template + """ + schema = self.get_customizable_model_schema(model, credentials) + + if not schema: + return None + + # fill in the template + new_parameter_rules = [] + for parameter_rule in schema.parameter_rules: + if parameter_rule.use_template: + try: + default_parameter_name = DefaultParameterName.value_of(parameter_rule.use_template) + default_parameter_rule = self._get_default_parameter_rule_variable_map(default_parameter_name) + if not parameter_rule.max: + parameter_rule.max = default_parameter_rule['max'] + if not parameter_rule.min: + parameter_rule.min = default_parameter_rule['min'] + if not parameter_rule.precision: + parameter_rule.default = default_parameter_rule['default'] + if not parameter_rule.precision: + parameter_rule.precision = default_parameter_rule['precision'] + if not parameter_rule.required: + parameter_rule.required = default_parameter_rule['required'] + if not parameter_rule.help: + parameter_rule.help = I18nObject( + en_US=default_parameter_rule['help']['en_US'], + ) + if not parameter_rule.help.en_US: + parameter_rule.help.en_US = default_parameter_rule['help']['en_US'] + if not parameter_rule.help.zh_Hans: + parameter_rule.help.zh_Hans = default_parameter_rule['help'].get('zh_Hans', default_parameter_rule['help']['en_US']) + except ValueError: + pass + + new_parameter_rules.append(parameter_rule) + + schema.parameter_rules = new_parameter_rules + + return schema + + def get_customizable_model_schema(self, model: str, credentials: dict) -> Optional[AIModelEntity]: + """ + Get customizable model schema + + :param model: model name + :param credentials: model credentials + :return: model schema + """ + return None + + def _get_default_parameter_rule_variable_map(self, name: DefaultParameterName) -> dict: + """ + Get default parameter rule for given name + + :param name: parameter name + :return: parameter rule + """ + default_parameter_rule = PARAMETER_RULE_TEMPLATE.get(name) + + if not default_parameter_rule: + raise Exception(f'Invalid model parameter rule name {name}') + + return default_parameter_rule + + def _get_num_tokens_by_gpt2(self, text: str) -> int: + """ + Get number of tokens for given prompt messages by gpt2 + Some provider models do not provide an interface for obtaining the number of tokens. + Here, the gpt2 tokenizer is used to calculate the number of tokens. + This method can be executed offline, and the gpt2 tokenizer has been cached in the project. + + :param text: plain text of prompt. You need to convert the original message to plain text + :return: number of tokens + """ + return GPT2Tokenizer.get_num_tokens(text) \ No newline at end of file diff --git a/api/tests/integration_tests/models/speech2text/audio.mp3 b/api/core/model_runtime/model_providers/__base/audio.mp3 similarity index 100% rename from api/tests/integration_tests/models/speech2text/audio.mp3 rename to api/core/model_runtime/model_providers/__base/audio.mp3 diff --git a/api/core/model_runtime/model_providers/__base/large_language_model.py b/api/core/model_runtime/model_providers/__base/large_language_model.py new file mode 100644 index 000000000..6b5ea88d4 --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/large_language_model.py @@ -0,0 +1,557 @@ +import logging +import os +import time +from abc import abstractmethod +from typing import Optional, Generator, Union, List + +from core.model_runtime.callbacks.base_callback import Callback +from core.model_runtime.callbacks.logging_callback import LoggingCallback +from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool, AssistantPromptMessage +from core.model_runtime.entities.model_entities import ModelPropertyKey, PriceType, ParameterType, ParameterRule, \ + ModelType +from core.model_runtime.entities.llm_entities import LLMResult, LLMMode, LLMUsage, \ + LLMResultChunk, LLMResultChunkDelta +from core.model_runtime.model_providers.__base.ai_model import AIModel + +logger = logging.getLogger(__name__) + + +class LargeLanguageModel(AIModel): + """ + Model class for large language model. + """ + model_type: ModelType = ModelType.LLM + + def invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: Optional[dict] = None, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None, callbacks: list[Callback] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :param callbacks: callbacks + :return: full response or stream response chunk generator result + """ + # validate and filter model parameters + if model_parameters is None: + model_parameters = {} + + model_parameters = self._validate_and_filter_model_parameters(model, model_parameters, credentials) + + self.started_at = time.perf_counter() + + callbacks = callbacks or [] + + if bool(os.environ.get("DEBUG")): + callbacks.append(LoggingCallback()) + + # trigger before invoke callbacks + self._trigger_before_invoke_callbacks( + model=model, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + + try: + result = self._invoke(model, credentials, prompt_messages, model_parameters, tools, stop, stream, user) + except Exception as e: + self._trigger_invoke_error_callbacks( + model=model, + ex=e, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + + raise self._transform_invoke_error(e) + + if stream and isinstance(result, Generator): + return self._invoke_result_generator( + model=model, + result=result, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + else: + self._trigger_after_invoke_callbacks( + model=model, + result=result, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + + return result + + def _invoke_result_generator(self, model: str, result: Generator, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, + stop: Optional[List[str]] = None, stream: bool = True, + user: Optional[str] = None, callbacks: list[Callback] = None) -> Generator: + """ + Invoke result generator + + :param result: result generator + :return: result generator + """ + prompt_message = AssistantPromptMessage( + content="" + ) + usage = None + system_fingerprint = None + real_model = model + + for chunk in result: + try: + yield chunk + + self._trigger_new_chunk_callbacks( + chunk=chunk, + model=model, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + + prompt_message.content += chunk.delta.message.content + real_model = chunk.model + if chunk.delta.usage: + usage = chunk.delta.usage + + if chunk.system_fingerprint: + system_fingerprint = chunk.system_fingerprint + except Exception as e: + raise self._transform_invoke_error(e) + + self._trigger_after_invoke_callbacks( + model=model, + result=LLMResult( + model=real_model, + prompt_messages=prompt_messages, + message=prompt_message, + usage=usage, + system_fingerprint=system_fingerprint + ), + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user, + callbacks=callbacks + ) + + @abstractmethod + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :return: full response or stream response chunk generator result + """ + raise NotImplementedError + + @abstractmethod + def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage], + tools: Optional[list[PromptMessageTool]] = None) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param tools: tools for tool calling + :return: + """ + raise NotImplementedError + + def _llm_result_to_stream(self, result: LLMResult) -> Generator: + """ + Transform llm result to stream + + :param result: llm result + :return: stream + """ + index = 0 + + tool_calls = result.message.tool_calls + + for word in result.message.content: + assistant_prompt_message = AssistantPromptMessage( + content=word, + tool_calls=tool_calls if index == (len(result.message.content) - 1) else [] + ) + + yield LLMResultChunk( + model=result.model, + prompt_messages=result.prompt_messages, + system_fingerprint=result.system_fingerprint, + delta=LLMResultChunkDelta( + index=index, + message=assistant_prompt_message, + ) + ) + + index += 1 + time.sleep(0.01) + + def get_parameter_rules(self, model: str, credentials: dict) -> list[ParameterRule]: + """ + Get parameter rules + + :param model: model name + :param credentials: model credentials + :return: parameter rules + """ + model_schema = self.get_model_schema(model, credentials) + if model_schema: + return model_schema.parameter_rules + + return [] + + def get_model_mode(self, model: str, credentials: Optional[dict] = None) -> LLMMode: + """ + Get model mode + + :param model: model name + :param credentials: model credentials + :return: model mode + """ + model_schema = self.get_model_schema(model, credentials) + + mode = LLMMode.CHAT + if model_schema and model_schema.model_properties.get(ModelPropertyKey.MODE): + mode = LLMMode.value_of(model_schema.model_properties[ModelPropertyKey.MODE]) + + return mode + + def _calc_response_usage(self, model: str, credentials: dict, prompt_tokens: int, completion_tokens: int) -> LLMUsage: + """ + Calculate response usage + + :param model: model name + :param credentials: model credentials + :param prompt_tokens: prompt tokens + :param completion_tokens: completion tokens + :return: usage + """ + # get prompt price info + prompt_price_info = self.get_price( + model=model, + credentials=credentials, + price_type=PriceType.INPUT, + tokens=prompt_tokens, + ) + + # get completion price info + completion_price_info = self.get_price( + model=model, + credentials=credentials, + price_type=PriceType.OUTPUT, + tokens=completion_tokens + ) + + # transform usage + usage = LLMUsage( + prompt_tokens=prompt_tokens, + prompt_unit_price=prompt_price_info.unit_price, + prompt_price_unit=prompt_price_info.unit, + prompt_price=prompt_price_info.total_amount, + completion_tokens=completion_tokens, + completion_unit_price=completion_price_info.unit_price, + completion_price_unit=completion_price_info.unit, + completion_price=completion_price_info.total_amount, + total_tokens=prompt_tokens + completion_tokens, + total_price=prompt_price_info.total_amount + completion_price_info.total_amount, + currency=prompt_price_info.currency, + latency=time.perf_counter() - self.started_at + ) + + return usage + + def _trigger_before_invoke_callbacks(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, + stop: Optional[List[str]] = None, stream: bool = True, + user: Optional[str] = None, callbacks: list[Callback] = None) -> None: + """ + Trigger before invoke callbacks + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :param callbacks: callbacks + """ + if callbacks: + for callback in callbacks: + try: + callback.on_before_invoke( + llm_instance=self, + model=model, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user + ) + except Exception as e: + if callback.raise_error: + raise e + else: + logger.warning(f"Callback {callback.__class__.__name__} on_before_invoke failed with error {e}") + + def _trigger_new_chunk_callbacks(self, chunk: LLMResultChunk, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, + stop: Optional[List[str]] = None, stream: bool = True, + user: Optional[str] = None, callbacks: list[Callback] = None) -> None: + """ + Trigger new chunk callbacks + + :param chunk: chunk + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + """ + if callbacks: + for callback in callbacks: + try: + callback.on_new_chunk( + llm_instance=self, + chunk=chunk, + model=model, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user + ) + except Exception as e: + if callback.raise_error: + raise e + else: + logger.warning(f"Callback {callback.__class__.__name__} on_new_chunk failed with error {e}") + + def _trigger_after_invoke_callbacks(self, model: str, result: LLMResult, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, + stop: Optional[List[str]] = None, stream: bool = True, + user: Optional[str] = None, callbacks: list[Callback] = None) -> None: + """ + Trigger after invoke callbacks + + :param model: model name + :param result: result + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :param callbacks: callbacks + """ + if callbacks: + for callback in callbacks: + try: + callback.on_after_invoke( + llm_instance=self, + result=result, + model=model, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user + ) + except Exception as e: + if callback.raise_error: + raise e + else: + logger.warning(f"Callback {callback.__class__.__name__} on_after_invoke failed with error {e}") + + def _trigger_invoke_error_callbacks(self, model: str, ex: Exception, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, + stop: Optional[List[str]] = None, stream: bool = True, + user: Optional[str] = None, callbacks: list[Callback] = None) -> None: + """ + Trigger invoke error callbacks + + :param model: model name + :param ex: exception + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :param callbacks: callbacks + """ + if callbacks: + for callback in callbacks: + try: + callback.on_invoke_error( + llm_instance=self, + ex=ex, + model=model, + credentials=credentials, + prompt_messages=prompt_messages, + model_parameters=model_parameters, + tools=tools, + stop=stop, + stream=stream, + user=user + ) + except Exception as e: + if callback.raise_error: + raise e + else: + logger.warning(f"Callback {callback.__class__.__name__} on_invoke_error failed with error {e}") + + def _validate_and_filter_model_parameters(self, model: str, model_parameters: dict, credentials: dict) -> dict: + """ + Validate model parameters + + :param model: model name + :param model_parameters: model parameters + :param credentials: model credentials + :return: + """ + parameter_rules = self.get_parameter_rules(model, credentials) + + # validate model parameters + filtered_model_parameters = {} + for parameter_rule in parameter_rules: + parameter_name = parameter_rule.name + parameter_value = model_parameters.get(parameter_name) + if parameter_value is None: + if parameter_rule.use_template and parameter_rule.use_template in model_parameters: + # if parameter value is None, use template value variable name instead + parameter_value = model_parameters[parameter_rule.use_template] + else: + if parameter_rule.required: + if parameter_rule.default is not None: + filtered_model_parameters[parameter_name] = parameter_rule.default + continue + else: + raise ValueError(f"Model Parameter {parameter_name} is required.") + else: + continue + + # validate parameter value type + if parameter_rule.type == ParameterType.INT: + if not isinstance(parameter_value, int): + raise ValueError(f"Model Parameter {parameter_name} should be int.") + + # validate parameter value range + if parameter_rule.min is not None and parameter_value < parameter_rule.min: + raise ValueError( + f"Model Parameter {parameter_name} should be greater than or equal to {parameter_rule.min}.") + + if parameter_rule.max is not None and parameter_value > parameter_rule.max: + raise ValueError( + f"Model Parameter {parameter_name} should be less than or equal to {parameter_rule.max}.") + elif parameter_rule.type == ParameterType.FLOAT: + if not isinstance(parameter_value, (float, int)): + raise ValueError(f"Model Parameter {parameter_name} should be float.") + + # validate parameter value precision + if parameter_rule.precision is not None: + if parameter_rule.precision == 0: + if parameter_value != int(parameter_value): + raise ValueError(f"Model Parameter {parameter_name} should be int.") + else: + if parameter_value != round(parameter_value, parameter_rule.precision): + raise ValueError( + f"Model Parameter {parameter_name} should be round to {parameter_rule.precision} decimal places.") + + # validate parameter value range + if parameter_rule.min is not None and parameter_value < parameter_rule.min: + raise ValueError( + f"Model Parameter {parameter_name} should be greater than or equal to {parameter_rule.min}.") + + if parameter_rule.max is not None and parameter_value > parameter_rule.max: + raise ValueError( + f"Model Parameter {parameter_name} should be less than or equal to {parameter_rule.max}.") + elif parameter_rule.type == ParameterType.BOOLEAN: + if not isinstance(parameter_value, bool): + raise ValueError(f"Model Parameter {parameter_name} should be bool.") + elif parameter_rule.type == ParameterType.STRING: + if not isinstance(parameter_value, str): + raise ValueError(f"Model Parameter {parameter_name} should be string.") + + # validate options + if parameter_rule.options and parameter_value not in parameter_rule.options: + raise ValueError(f"Model Parameter {parameter_name} should be one of {parameter_rule.options}.") + else: + raise ValueError(f"Model Parameter {parameter_name} type {parameter_rule.type} is not supported.") + + filtered_model_parameters[parameter_name] = parameter_value + + return filtered_model_parameters diff --git a/api/core/model_runtime/model_providers/__base/model_provider.py b/api/core/model_runtime/model_providers/__base/model_provider.py new file mode 100644 index 000000000..71d4a0c5d --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/model_provider.py @@ -0,0 +1,125 @@ +import importlib +import os +from abc import ABC, abstractmethod +from typing import Optional, Dict + +import yaml + +from core.model_runtime.entities.model_entities import ModelType, AIModelEntity +from core.model_runtime.entities.provider_entities import ProviderEntity +from core.model_runtime.model_providers.__base.ai_model import AIModel + + +class ModelProvider(ABC): + provider_schema: ProviderEntity = None + model_instance_map: Dict[str, AIModel] = {} + + @abstractmethod + def validate_provider_credentials(self, credentials: dict) -> None: + """ + Validate provider credentials + You can choose any validate_credentials method of model type or implement validate method by yourself, + such as: get model list api + + if validate failed, raise exception + + :param credentials: provider credentials, credentials form defined in `provider_credential_schema`. + """ + raise NotImplementedError + + def get_provider_schema(self) -> ProviderEntity: + """ + Get provider schema + + :return: provider schema + """ + if self.provider_schema: + return self.provider_schema + + # get dirname of the current path + provider_name = self.__class__.__module__.split('.')[-1] + + # get the path of the model_provider classes + base_path = os.path.abspath(__file__) + current_path = os.path.join(os.path.dirname(os.path.dirname(base_path)), provider_name) + + # read provider schema from yaml file + yaml_path = os.path.join(current_path, f'{provider_name}.yaml') + yaml_data = {} + if os.path.exists(yaml_path): + with open(yaml_path, 'r') as f: + yaml_data = yaml.safe_load(f) + + try: + # yaml_data to entity + provider_schema = ProviderEntity(**yaml_data) + except Exception as e: + raise Exception(f'Invalid provider schema for {provider_name}: {str(e)}') + + # cache schema + self.provider_schema = provider_schema + + return provider_schema + + def models(self, model_type: ModelType) -> list[AIModelEntity]: + """ + Get all models for given model type + + :param model_type: model type defined in `ModelType` + :return: list of models + """ + provider_schema = self.get_provider_schema() + if model_type not in provider_schema.supported_model_types: + return [] + + # get model instance of the model type + model_instance = self.get_model_instance(model_type) + + # get predefined models (predefined_models) + models = model_instance.predefined_models() + + # return models + return models + + def get_model_instance(self, model_type: ModelType) -> AIModel: + """ + Get model instance + + :param model_type: model type defined in `ModelType` + :return: + """ + # get dirname of the current path + provider_name = self.__class__.__module__.split('.')[-1] + + if f"{provider_name}.{model_type.value}" in self.model_instance_map: + return self.model_instance_map[f"{provider_name}.{model_type.value}"] + + # get the path of the model type classes + base_path = os.path.abspath(__file__) + model_type_name = model_type.value.replace('-', '_') + model_type_path = os.path.join(os.path.dirname(os.path.dirname(base_path)), provider_name, model_type_name) + model_type_py_path = os.path.join(model_type_path, f'{model_type_name}.py') + + if not os.path.isdir(model_type_path) or not os.path.exists(model_type_py_path): + raise Exception(f'Invalid model type {model_type} for provider {provider_name}') + + # Dynamic loading {model_type_name}.py file and find the subclass of AIModel + parent_module = '.'.join(self.__class__.__module__.split('.')[:-1]) + spec = importlib.util.spec_from_file_location(f"{parent_module}.{model_type_name}.{model_type_name}", model_type_py_path) + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + + model_class = None + for name, obj in vars(mod).items(): + if (isinstance(obj, type) and issubclass(obj, AIModel) and not obj.__abstractmethods__ + and obj != AIModel): + model_class = obj + break + + if not model_class: + raise Exception(f'Missing AIModel Class for model type {model_type} in {model_type_py_path}') + + model_instance_map = model_class() + self.model_instance_map[f"{provider_name}.{model_type.value}"] = model_instance_map + + return model_instance_map diff --git a/api/core/model_runtime/model_providers/__base/moderation_model.py b/api/core/model_runtime/model_providers/__base/moderation_model.py new file mode 100644 index 000000000..00cb1d6cc --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/moderation_model.py @@ -0,0 +1,48 @@ +import time +from abc import abstractmethod +from typing import Optional + +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.model_providers.__base.ai_model import AIModel + + +class ModerationModel(AIModel): + """ + Model class for moderation model. + """ + model_type: ModelType = ModelType.MODERATION + + def invoke(self, model: str, credentials: dict, + text: str, user: Optional[str] = None) \ + -> bool: + """ + Invoke moderation model + + :param model: model name + :param credentials: model credentials + :param text: text to moderate + :param user: unique user id + :return: false if text is safe, true otherwise + """ + self.started_at = time.perf_counter() + + try: + return self._invoke(model, credentials, text, user) + except Exception as e: + raise self._transform_invoke_error(e) + + @abstractmethod + def _invoke(self, model: str, credentials: dict, + text: str, user: Optional[str] = None) \ + -> bool: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param text: text to moderate + :param user: unique user id + :return: false if text is safe, true otherwise + """ + raise NotImplementedError + diff --git a/api/core/model_runtime/model_providers/__base/rerank_model.py b/api/core/model_runtime/model_providers/__base/rerank_model.py new file mode 100644 index 000000000..2c86f2518 --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/rerank_model.py @@ -0,0 +1,56 @@ +import time +from abc import abstractmethod +from typing import Optional + +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.entities.rerank_entities import RerankResult +from core.model_runtime.model_providers.__base.ai_model import AIModel + + +class RerankModel(AIModel): + """ + Base Model class for rerank model. + """ + model_type: ModelType = ModelType.RERANK + + def invoke(self, model: str, credentials: dict, + query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None, + user: Optional[str] = None) \ + -> RerankResult: + """ + Invoke rerank model + + :param model: model name + :param credentials: model credentials + :param query: search query + :param docs: docs for reranking + :param score_threshold: score threshold + :param top_n: top n + :param user: unique user id + :return: rerank result + """ + self.started_at = time.perf_counter() + + try: + return self._invoke(model, credentials, query, docs, score_threshold, top_n, user) + except Exception as e: + raise self._transform_invoke_error(e) + + @abstractmethod + def _invoke(self, model: str, credentials: dict, + query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None, + user: Optional[str] = None) \ + -> RerankResult: + """ + Invoke rerank model + + :param model: model name + :param credentials: model credentials + :param query: search query + :param docs: docs for reranking + :param score_threshold: score threshold + :param top_n: top n + :param user: unique user id + :return: rerank result + """ + raise NotImplementedError diff --git a/api/core/model_runtime/model_providers/__base/speech2text_model.py b/api/core/model_runtime/model_providers/__base/speech2text_model.py new file mode 100644 index 000000000..151bccc07 --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/speech2text_model.py @@ -0,0 +1,57 @@ +import os +from abc import abstractmethod +from typing import Optional, IO + +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.model_providers.__base.ai_model import AIModel + + +class Speech2TextModel(AIModel): + """ + Model class for speech2text model. + """ + model_type: ModelType = ModelType.SPEECH2TEXT + + def invoke(self, model: str, credentials: dict, + file: IO[bytes], user: Optional[str] = None) \ + -> str: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param file: audio file + :param user: unique user id + :return: text for given audio file + """ + try: + return self._invoke(model, credentials, file, user) + except Exception as e: + raise self._transform_invoke_error(e) + + @abstractmethod + def _invoke(self, model: str, credentials: dict, + file: IO[bytes], user: Optional[str] = None) \ + -> str: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param file: audio file + :param user: unique user id + :return: text for given audio file + """ + raise NotImplementedError + + def _get_demo_file_path(self) -> str: + """ + Get demo file for given model + + :return: demo file + """ + # Get the directory of the current file + current_dir = os.path.dirname(os.path.abspath(__file__)) + + # Construct the path to the audio file + return os.path.join(current_dir, 'audio.mp3') diff --git a/api/core/model_runtime/model_providers/__base/text_embedding_model.py b/api/core/model_runtime/model_providers/__base/text_embedding_model.py new file mode 100644 index 000000000..1da4dcef9 --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/text_embedding_model.py @@ -0,0 +1,90 @@ +import time +from abc import abstractmethod +from typing import Optional + +from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType +from core.model_runtime.entities.text_embedding_entities import TextEmbeddingResult +from core.model_runtime.model_providers.__base.ai_model import AIModel + + +class TextEmbeddingModel(AIModel): + """ + Model class for text embedding model. + """ + model_type: ModelType = ModelType.TEXT_EMBEDDING + + def invoke(self, model: str, credentials: dict, + texts: list[str], user: Optional[str] = None) \ + -> TextEmbeddingResult: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :param user: unique user id + :return: embeddings result + """ + self.started_at = time.perf_counter() + + try: + return self._invoke(model, credentials, texts, user) + except Exception as e: + raise self._transform_invoke_error(e) + + @abstractmethod + def _invoke(self, model: str, credentials: dict, + texts: list[str], user: Optional[str] = None) \ + -> TextEmbeddingResult: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :param user: unique user id + :return: embeddings result + """ + raise NotImplementedError + + @abstractmethod + def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :return: + """ + raise NotImplementedError + + def _get_context_size(self, model: str, credentials: dict) -> int: + """ + Get context size for given embedding model + + :param model: model name + :param credentials: model credentials + :return: context size + """ + model_schema = self.get_model_schema(model, credentials) + + if model_schema and ModelPropertyKey.CONTEXT_SIZE in model_schema.model_properties: + return model_schema.model_properties[ModelPropertyKey.CONTEXT_SIZE] + + return 1000 + + def _get_max_chunks(self, model: str, credentials: dict) -> int: + """ + Get max chunks for given embedding model + + :param model: model name + :param credentials: model credentials + :return: max chunks + """ + model_schema = self.get_model_schema(model, credentials) + + if model_schema and ModelPropertyKey.MAX_CHUNKS in model_schema.model_properties: + return model_schema.model_properties[ModelPropertyKey.MAX_CHUNKS] + + return 1 diff --git a/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/merges.txt b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/merges.txt new file mode 100644 index 000000000..226b0752c --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/merges.txt @@ -0,0 +1,50001 @@ +#version: 0.2 +Ġ t +Ġ a +h e +i n +r e +o n +Ġt he +e r +Ġ s +a t +Ġ w +Ġ o +e n +Ġ c +i t +i s +a n +o r +e s +Ġ b +e d +Ġ f +in g +Ġ p +o u +Ġa n +a l +a r +Ġt o +Ġ m +Ġo f +Ġ in +Ġ d +Ġ h +Ġan d +i c +a s +l e +Ġt h +i on +o m +l l +en t +Ġ n +Ġ l +s t +Ġ re +v e +Ġ e +r o +l y +Ġb e +Ġ g +Ġ T +c t +Ġ S +i d +o t +Ġ I +u t +e t +Ġ A +Ġ is +Ġ on +i m +a m +o w +a y +a d +s e +Ġth at +Ġ C +i g +Ġf or +a c +Ġ y +v er +u r +Ġ u +l d +Ġs t +Ġ M +' s +Ġ he +Ġ it +at ion +it h +i r +c e +Ġy ou +i l +Ġ B +Ġw h +o l +Ġ P +Ġw ith +Ġ 1 +t er +c h +Ġa s +Ġw e +Ġ ( +n d +i ll +Ġ D +i f +Ġ 2 +a g +er s +k e +Ġ " +Ġ H +e m +Ġc on +Ġ W +Ġ R +he r +Ġw as +Ġ r +o d +Ġ F +u l +at e +Ġa t +r i +p p +o re +ĠT he +Ġs e +u s +Ġp ro +Ġh a +u m +Ġa re +Ġd e +a in +an d +Ġo r +ig h +es t +is t +a b +r om +Ġ N +t h +Ġc om +Ġ G +u n +o p +0 0 +Ġ L +Ġn ot +es s +Ġe x +Ġ v +re s +Ġ E +e w +it y +an t +Ġb y +e l +o s +or t +o c +q u +Ġf rom +Ġha ve +Ġs u +i ve +ou ld +Ġs h +Ġth is +n t +r a +p e +igh t +ar t +m ent +Ġa l +u st +en d +- - +al l +Ġ O +ac k +Ġc h +Ġ le +i es +re d +ar d +â Ģ +ou t +Ġ J +Ġa b +e ar +i v +al ly +ou r +o st +g h +p t +Ġp l +as t +Ġc an +a k +om e +u d +T he +Ġh is +Ġd o +Ġg o +Ġh as +g e +' t +Ġ U +r ou +Ġs a +Ġ j +Ġb ut +Ġw or +Ġa ll +e ct +Ġ k +am e +Ġw ill +o k +Ġw he +Ġthe y +id e +0 1 +f f +ic h +p l +t her +Ġt r +. . +Ġin t +i e +u re +ag e +Ġn e +i al +a p +in e +ic e +Ġm e +Ġo ut +an s +on e +on g +ion s +Ġwh o +Ġ K +Ġu p +Ġthe ir +Ġa d +Ġ 3 +Ġu s +at ed +ou s +Ġm ore +u e +o g +ĠS t +in d +i ke +Ġs o +im e +p er +. " +b er +i z +a ct +Ġon e +Ġsa id +Ġ - +a re +Ġyou r +c c +ĠT h +Ġc l +e p +a ke +ab le +i p +Ġcon t +Ġwh ich +i a +Ġ im +Ġab out +Ġwe re +ver y +u b +Ġh ad +Ġ en +Ġcom p +, " +ĠI n +Ġu n +Ġa g +i re +ac e +a u +ar y +Ġw ould +as s +r y +Ġ âĢ +c l +o ok +e re +s o +Ġ V +ig n +i b +Ġof f +Ġt e +v en +Ġ Y +i le +o se +it e +or m +Ġ2 01 +Ġre s +Ġm an +Ġp er +Ġo ther +or d +ul t +Ġbe en +Ġl ike +as e +an ce +k s +ay s +ow n +en ce +Ġd is +ct ion +Ġan y +Ġa pp +Ġs p +in t +res s +ation s +a il +Ġ 4 +ic al +Ġthe m +Ġhe r +ou nt +ĠC h +Ġa r +Ġ if +Ġthe re +Ġp e +Ġy ear +a v +Ġm y +Ġs ome +Ġwhe n +ou gh +ac h +Ġth an +r u +on d +ic k +Ġo ver +ve l +Ġ qu +Ċ Ċ +Ġs c +re at +re e +ĠI t +ou nd +p ort +Ġal so +Ġp art +f ter +Ġk n +Ġbe c +Ġt ime +en s +Ġ 5 +op le +Ġwh at +Ġn o +d u +m er +an g +Ġn ew +-- -- +Ġg et +or y +it ion +ing s +Ġj ust +Ġint o +Ġ 0 +ent s +o ve +t e +Ġpe ople +Ġp re +Ġit s +Ġre c +Ġt w +i an +ir st +ar k +or s +Ġwor k +ad e +o b +Ġs he +Ġo ur +w n +in k +l ic +Ġ1 9 +ĠH e +is h +nd er +au se +Ġh im +on s +Ġ [ +Ġ ro +f orm +i ld +at es +ver s +Ġon ly +o ll +Ġs pe +c k +e ll +am p +Ġa cc +Ġb l +i ous +ur n +f t +o od +Ġh ow +he d +Ġ ' +Ġa fter +a w +Ġat t +o v +n e +Ġpl ay +er v +ic t +Ġc ould +it t +Ġa m +Ġf irst +Ġ 6 +Ġa ct +Ġ $ +e c +h ing +u al +u ll +Ġcom m +o y +o ld +c es +at er +Ġf e +Ġbe t +w e +if f +Ġtw o +oc k +Ġb ack +) . +id ent +Ġu nder +rou gh +se l +x t +Ġm ay +rou nd +Ġp o +p h +is s +Ġd es +Ġm ost +Ġd id +Ġad d +j ect +Ġin c +f ore +Ġp ol +on t +Ġag ain +cl ud +ter n +Ġkn ow +Ġne ed +Ġcon s +Ġc o +Ġ . +Ġw ant +Ġse e +Ġ 7 +n ing +i ew +ĠTh is +c ed +Ġe ven +Ġin d +t y +ĠW e +at h +Ġthe se +Ġp r +Ġu se +Ġbec ause +Ġf l +n g +Ġn ow +ĠâĢ ĵ +c om +is e +Ġm ake +Ġthe n +ow er +Ġe very +ĠU n +Ġse c +os s +u ch +Ġe m +Ġ = +ĠR e +i ed +r it +Ġin v +le ct +Ġsu pp +at ing +Ġl ook +m an +pe ct +Ġ 8 +ro w +Ġb u +Ġwhe re +if ic +Ġyear s +i ly +Ġd iff +Ġsh ould +Ġre m +T h +I n +Ġe v +d ay +' re +ri b +Ġre l +s s +Ġde f +Ġr ight +Ġs y +) , +l es +00 0 +he n +Ġth rough +ĠT r +_ _ +Ġw ay +Ġd on +Ġ , +Ġ1 0 +as ed +Ġas s +ub lic +Ġre g +ĠA nd +i x +Ġ very +Ġin clud +ot her +Ġim p +ot h +Ġsu b +ĠâĢ Ķ +Ġbe ing +ar g +ĠW h += = +ib le +Ġdo es +an ge +r am +Ġ 9 +er t +p s +it ed +ation al +Ġb r +Ġd own +Ġman y +ak ing +Ġc all +ur ing +it ies +Ġp h +ic s +al s +Ġde c +at ive +en er +Ġbe fore +il ity +Ġwe ll +Ġm uch +ers on +Ġth ose +Ġsu ch +Ġ ke +Ġ end +ĠB ut +as on +t ing +Ġl ong +e f +Ġth ink +y s +Ġbe l +Ġs m +it s +a x +Ġo wn +Ġpro v +Ġs et +if e +ment s +b le +w ard +Ġsh ow +Ġp res +m s +om et +Ġo b +Ġs ay +ĠS h +t s +f ul +Ġe ff +Ġg u +Ġin st +u nd +re n +c ess +Ġ ent +ĠY ou +Ġgo od +Ġst art +in ce +Ġm ade +t t +st em +ol og +u p +Ġ | +um p +Ġhe l +ver n +ul ar +u ally +Ġa c +Ġm on +Ġl ast +Ġ2 00 +1 0 +Ġst ud +u res +ĠA r +sel f +ar s +mer ic +u es +c y +Ġm in +oll ow +Ġc ol +i o +Ġm od +Ġc ount +ĠC om +he s +Ġf in +a ir +i er +âĢ Ķ +re ad +an k +at ch +e ver +Ġst r +Ġpo int +or k +ĠN ew +Ġs ur +o ol +al k +em ent +Ġus ed +ra ct +we en +Ġs ame +ou n +ĠA l +c i +Ġdiff ere +Ġwh ile +---- ---- +Ġg ame +ce pt +Ġs im +.. . +Ġin ter +e k +Ġre port +Ġpro du +Ġst ill +l ed +a h +Ġhe re +Ġwor ld +Ġth ough +Ġn um +ar ch +im es +al e +ĠS e +ĠI f +/ / +ĠL e +Ġre t +Ġre f +Ġtr ans +n er +ut ion +ter s +Ġt ake +ĠC l +Ġcon f +w ay +a ve +Ġgo ing +Ġs l +u g +ĠA meric +Ġspe c +Ġh and +Ġbet ween +ist s +ĠD e +o ot +I t +Ġe ar +Ġagain st +Ġh igh +g an +a z +at her +Ġex p +Ġo p +Ġin s +Ġg r +Ġhel p +Ġre qu +et s +in s +ĠP ro +is m +Ġf ound +l and +at a +us s +am es +Ġp erson +Ġg reat +p r +Ġs ign +ĠA n +' ve +Ġs omet +Ġs er +h ip +Ġr un +Ġ : +Ġt er +ire ct +Ġf ollow +Ġd et +ic es +Ġf ind +1 2 +Ġm em +Ġc r +e red +e x +Ġex t +ut h +en se +c o +Ġte am +v ing +ou se +as h +at t +v ed +Ġsy stem +ĠA s +d er +iv es +m in +Ġle ad +ĠB l +c ent +Ġa round +Ġgo vern +Ġc ur +vel op +an y +Ġc our +al th +ag es +iz e +Ġc ar +od e +Ġl aw +Ġre ad +' m +c on +Ġre al +Ġsupp ort +Ġ1 2 +.. .. +Ġre ally +n ess +Ġf act +Ġd ay +Ġb oth +y ing +Ġs erv +ĠF or +Ġth ree +Ġw om +Ġm ed +od y +ĠThe y +5 0 +Ġex per +t on +Ġe ach +ak es +Ġc he +Ġc re +in es +Ġre p +1 9 +g g +ill ion +Ġg rou +ut e +i k +W e +g et +E R +Ġm et +Ġs ays +o x +Ġd uring +er n +iz ed +a red +Ġf am +ic ally +Ġha pp +ĠI s +Ġch ar +m ed +v ent +Ġg ener +i ent +p le +i et +re nt +1 1 +v es +pt ion +Ġ2 0 +form ation +Ġc or +Ġoff ic +ie ld +Ġto o +is ion +Ġin f +Ġ Z +t he +o ad +Ġp ublic +Ġpro g +r ic +* * +Ġw ar +Ġp ower +v iew +Ġf ew +Ġl oc +Ġdiffere nt +Ġst ate +Ġhe ad +' ll +Ġp oss +Ġst at +re t +ant s +Ġv al +Ġis s +Ġc le +i vers +an c +Ġex pl +Ġan other +Ġ Q +Ġa v +th ing +n ce +W h +Ġch ild +Ġs ince +i red +l ess +Ġl ife +Ġde velop +itt le +Ġde p +Ġp ass +ã ĥ +Ġt urn +or n +Th is +b ers +ro ss +ĠA d +Ġf r +Ġres p +Ġsec ond +o h +Ġ / +Ġdis c +Ġ & +Ġsomet hing +Ġcomp le +Ġ ed +Ġf il +Ġmon th +a j +u c +Ġgovern ment +Ġwith out +Ġle g +Ġd ist +Ġp ut +Ġqu est +an n +Ġpro t +2 0 +Ġne ver +i ence +Ġle vel +Ġar t +Ġth ings +Ġm ight +Ġeff ect +Ġcont ro +Ġc ent +Ġ1 8 +Ġall ow +Ġbel ie +ch ool +ot t +Ġinc re +Ġfe el +Ġres ult +Ġl ot +Ġf un +ot e +Ġt y +ere st +Ġcont in +Ġus ing +Ġb ig +2 01 +Ġas k +Ġb est +Ġ ) +I N +Ġo pp +3 0 +Ġnum ber +in ess +S t +le ase +Ġc a +Ġm ust +Ġd irect +Ġg l +Ġ < +Ġop en +Ġp ost +Ġcom e +Ġse em +ord ing +Ġwe ek +ate ly +it al +Ġe l +ri end +Ġf ar +Ġt ra +in al +Ġp ri +ĠU S +Ġpl ace +Ġfor m +Ġto ld +" : +ain s +at ure +ĠTr ump +Ġst and +Ġ # +id er +ĠF r +Ġne xt +Ġs oc +Ġp ur +Ġle t +Ġl ittle +Ġh um +Ġ i +r on +1 5 +Ġ1 5 +Ġcomm un +Ġm ark +ĠThe re +Ġw r +ĠTh at +Ġin formation +w ays +Ġb us +a pp +Ġinv est +m e +Ġh ard +ain ed +e ad +Ġim port +Ġapp ro +Ġt est +Ġt ri +Ġre st +os ed +Ġf ull +Ġc are +ĠS p +Ġc ase +O N +Ġs k +Ġl ess +Ġ + +Ġpart ic +ĠP l +ab ly +u ck +is hed +ch n +b e +Ġl ist +at or +Ġto p +Ġad v +ĠB e +ru ct +Ġd em +r ation +l ing +g y +re en +g er +Ġh ome +Ġle ft +Ġbet ter +Ġd ata +Ġ1 1 +Ġatt ack +Ġpro ble +l ine +ard s +Ġbe h +r al +ĠH ow +ĠS he +ar ge +Ġ -- +: // +Ġb ro +ĠP h +at s +Ġbu ild +w w +id ed +a im +as es +en cy +Ġm ain +in ed +Ġinclud ing +Ġ { +Ġg ot +Ġint erest +Ġke ep +Ġ X +Ġe as +ain ing +Ġcl ass +âĢ ¦ +ĠN o +Ġv ar +Ġsm all +amp le +A T +Ġ ide +ĠS o +Ġre ce +Ġpol it +Ġm ov +Ġpl an +Ġper cent +iv ing +Ġc amp +Ġp ay +1 4 +s c +is ed +Ġu nt +one y +pl oy +== == +Ġdid n +ĠI nd +el s +ert ain +Ġp os +__ __ +i ver +Ġpro cess +Ġprog ram +if ied +ĠR ep +1 6 +u ro +olog y +at ter +in a +Ġn ame +ĠA ll +Ġf our +Ġret urn +v ious +b s +Ġcall ed +Ġm ove +ĠS c +ir d +Ġgrou p +Ġb re +Ġm en +Ġc ap +t en +e e +Ġd ri +le g +he re +uth or +Ġp at +Ġcur rent +id es +Ġp op +t o +ent ion +Ġal ways +Ġm il +Ġwom en +Ġ1 6 +Ġo ld +iv en +ra ph +ĠO r +r or +ent ly +Ġn ear +ĠE x +re am +s h +Ġ1 4 +Ġf ree +iss ion +st and +ĠC on +al ity +us ed +1 3 +Ġdes ign +Ġch ange +Ġch ang +Ġb o +Ġv is +em ber +Ġb ook +read y +Ġk ill +2 5 +pp ed +Ġa way +Ġab le +Ġcount ry +Ġcon st +ar n +Ġor der +A R +i or +i um +or th +1 8 +ail able +Ġs w +Ġm illion +Ġ1 3 +at ic +t ed +ĠG o +Ġo per +en g +Ġth ing +aj or +con om +ĠCom m +Ġwh y +u red +ur al +Ġs chool +b y +ĠM ar +Ġa ff +Ġd ays +Ġan n +us h +an e +I f +e g +Ġpro f +Ġhe alth +ou th +B ut +ion al +. , +Ġs ol +Ġal ready +Ġ3 0 +Ġchar act +H e +Ġf riend +E S +i ans +ic le +' d +ĠO n +Ġle ast +Ġp rom +Ġd r +Ġh ist +it her +Ġ est +i qu +1 7 +s on +Ġte ll +Ġt alk +oh n +o int +le ction +A N +Ġunt il +au gh +Ġl ater +Ġ ve +Ġv iew +end ing +iv ed +Ġwor d +w are +Ġc ost +Ġen ough +Ġg ive +ĠUn ited +Ġte chn +are nt +O R +Ġp ar +ĠD r +Ġ201 6 +r ist +er ing +Ġ  +Ġl arge +s ide +ac y +cc ess +Ġw in +Ġimport ant +Ġ19 9 +Ġdoes n +Ġ1 7 +Ġbus iness +Ġcle ar +Ġre se +" , +ur y +Ġe qu +as ter +al f +ĠAmeric an +n ect +Ġex pect +ivers ity +Ġo cc +ĠF l +Ġk ind +Ġme an +Ġp ast +Ġde v +Ġb as +le t +ra ft +Ġor gan +Ġde l +Ġper form +Ġst ory +Ġse ason +ĠC ol +Ġcl aim +Ġc ame +Ġwith in +Ġl ine +Ġpro ject +ĠA t +Ġcontro l +end ed +ĠS y +Ġa ir +iz ation +Ġ * +le y +Ġm oney +id d +Y ou +f or +Ġfam ily +Ġm aking +Ġb it +Ġpol ice +Ġhapp en +Ġ vers +on y +u ff +ĠW hen +Ġs it +ide o +l f +is on +Ġsu re +g in +Ġapp ear +Ġl ight +Ġ es +o f +Ġw ater +Ġt imes +n ot +Ġg row +Ġcomp any +ĠT e +ow s +Ġm ar +our ce +i ol +ar m +b r +Ġex ample +Ġcon c +Ġf ore +ĠT o +p ro +E N +ri es +Ġ2 5 +ĠC an +ne y +Ġact ually +Ġe ver +ur ity +ak en +ap s +Ġt ax +Ġm ajor +am a +Ġof ten +er al +Ġhum an +Ġj ob +is ter +Ġav ailable +oc r +en n +a id +iv id +Ġrec ord +? " +Ġs ing +ĠA m +id ence +Ġnew s +st er +Ġe conom +Ġfollow ing +ĠB r +is ing +Ġh our +m ost +um ent +Ġse x +Ġdes c +Ġbec ome +ĠE d +Ġto ok +Ġha ving +Ġprodu ct +a ult +A s +ar ing +Ġme ans +Ġh op +un e +Ġch o +Ġc ertain +Ġn on +Ġde al +2 4 +le ment +oc i +en e +Ġs ide +ĠP r +ĠM ay +Ġre ason +u ed +c hed +ul ation +Ġe lect +Ġoffic ial +Ġposs ible +Ġh old +and s +ot s +Ġc ity +or ies +Ġse ver +Ġchild ren +Ġon ce +Ġact iv +l er +Ġn ight +it ions +ĠJ ohn +a pe +pl ay +Ġd one +Ġl im +Ġwork ing +ĠP res +or ld +e b +ĠC o +Ġb ody +ail s +ut es +ĠM r +Ġwhe ther +Ġa uthor +ro p +Ġpro per +Ġse en +) ; +Ġf ac +ĠS u +Ġcon d +it ing +Ġcour se +Ġ } +-------- -------- +a ign +Ġev ent +Ġen g +Ġp ot +Ġin tern +i am +Ġsh ort +em pt +ã Ĥ +ĠG od +il ar +8 0 +Ġor ig +I S +our n +ab ility +it ive +Ġd am +Ġ1 00 +Ġp ress +Ġdo ing +Ġprot ect +r ing +Ġthough t +Ġquest ion +re w +ĠW ar +Ġsever al +ĠSt ate +Ġg iven +Ġf und +ĠT w +Ġw ent +an ces +w ork +p or +m y +4 0 +Ġar g +art ment +ust om +Ġpol ic +Ġme et +Ġc reat +2 2 +ĠSt ates +Ġg ames +ra w +ut ure +Ġunder stand +ur s +ĠO b +l ish +s y +Ġm akes +Ġw on +ag on +Ġh tt +Ġl ove +ent ial +Ġcomple te +p ar +ĠI m +A L +Ġacc ount + ł +ore d +ver t +Ġ ident +Ġ201 5 +Ġother s +ĠM in +i ber +ver age +The re +ition al +d d +Ġpro b +Ġyou ng +Ġal ong +Ġacc ording +Ġy et +Ġmem bers +ĠWh at +o id +ĠM an +A nd +Ġam ong +a i +Ġem ploy +ĠR es +Ġ > +Ġinv ol +Ġl ow +a f +ĠC ar +Ġh ig +ĠO ne +ĠS ec +in ation +Ġlike ly +Ġan t +ag ed +ĠR uss +Ġb en +Ġre le +F or +b ack +ĠN ot +Ġpres ident +b all +Ġacc ess +ivid ual +ĠD em +ĠE uro +6 0 +Ġkn own +ir l +ĠG r +Ġear ly +u se +iet y +âĢ ĵ +Ġf ight +Ġs ent +Ġto day +Ġmark et +" . +Ġb ased +Ġstr ong +ur ther +Ġde b +m ber +Ġproble m +Ġde ath +Ġsoc ial +im ate +A S +ort un +Ġcamp aign +er y +C h +Ġe y +i ally +Ġm us +w h +p os +Ġ er +Ġsa f +Ġmonth s +ir on +Ġv iol +Ġf ive +Ġst re +Ġplay ers +in c +al d +y ear +a un +Ġsu ccess +Ġpres ent +ere nce +Ġ201 4 +Ġsu gg +Ġpartic ular +Ġtr y +Ġsugg est +ĠCh rist +on es +Ġpri v +2 3 +Ġc rit +Ġl and +Ġloc al +if y +2 9 +Ġa ut +E D +ĠG u +Ġm ult +Ġpolit ical +Ġask ed +Ġfor mer +it ter +ri pt +Ġcl ose +Ġp ract +ĠY ork +Ġget ting +Ġac ross +Ġcom b +Ġbelie ve +Ġ z +Ġto get +Ġtoget her +ĠC ent +ir c +Ġind ividual +ĠM c +2 7 +is k +ĠE ng +Ġf ace +Ġ2 4 +Ġval ue +Ġare a +e v +Ġw rit +ĠPres ident +Ġv ot +Ġke y +Ġm om +p ut +Ġany thing +Ġexper ience +att le +Ġm ind +a ff +om m +Ġf uture +g ed +Ġc ut +Ġto t +it ch +Ġv ideo +Ġinvest ig +Ġn et +ĠM y +r ict +i en +. ) +Ġimp ro +th ough +ward s +Ġcon nect +ĠM ed +sel ves +ens ive +m b +o ber +at ors +A n +Ġ5 0 +Ġre du +res ent +Ġab ove +Ġf re +ĠEuro pe +s w +Ġam ount +ĠA pp +Ġe ither +Ġmil it +Ġan al +Ġf ail +ĠE n +al es +Ġspec ial +Ġbl ack +I T +c her +Ġlook ing +Ġf ire +y n +Ġal most +o on +Ġstud y +Ġm iss +c hes +ro wn +Ġt re +Ġcommun ity +Ġmed ia +Ġf ood +Ġcom es +ĠUn iversity +Ġsing le +Wh at +u ly +Ġh alf +ag ue +h od +ĠRep ublic +Ġstart ed +Ġqu ick +ot o +b ook +Ġiss ue +it or +Ġel se +Ġcons ider +2 6 +ro du +Ġt aken +2 8 +9 9 +ĠW ith +Ġtr ue +Ġw a +Ġtr ad +Ġag o +Ġm ess +ie f +Ġadd ed +o ke +Ġb ad +Ġf av +3 3 +Ġsim ilar +as k +ĠD on +Ġcharact er +ort s +ĠH ouse +Ġreport ed +Ġty pe +v al +i od +ĠHow ever +Ġt arg +Ġent ire +pp ing +Ġhist ory +Ġl ive +ff ic +.... .... +ed eral +Ġtr ying +Ġdisc uss +ĠH ar +ac es +l ished +Ġse lf +os p +re st +Ġro om +el t +Ġf all +ol ution +Ġe t +Ġ x +Ġis n +Ġide a +b o +Ġs ound +ĠD ep +Ġsome one +ci ally +ull y +Ġf oc +Ġob ject +if t +ap er +Ġplay er +Ġr ather +Ġserv ice +as hing +ĠD o +ĠP art +ru g +m on +p ly +Ġm or +Ġnot hing +Ġprov ide +I C +un g +Ġpart y +Ġex ist +Ġm ag +7 0 +Ġr ul +Ġh ouse +Ġbeh ind +Ġhow ever +ĠW orld +Ġs um +Ġapp lic +Ġ ; +Ġfun ction +g r +ĠP ol +Ġfr ont +2 00 +Ġser ies +Ġt em +Ġty p +ill s +Ġo pt +Ġpoint s +Ġbel ow +itt ed +Ġspec ific +Ġ201 7 +um b +Ġr a +Ġpre vious +Ġpre t +re me +Ġc ustom +Ġcour t +ĠM e +Ġre pl +Ġwho le +g o +c er +Ġt reat +ĠA ct +Ġprob ably +Ġle arn +end er +ĠA ss +Ġvers ion +n ow +Ġche ck +ĠC al +R E +min ist +O n +our ces +Ġben ef +Ġd oc +Ġdet er +Ġen c +Ġsu per +Ġadd ress +Ġv ict +Ġ201 3 +Ġme as +t r +Ġf ield +W hen +Ġsign ific +u ge +Ġfe at +Ġcomm on +l oad +Ġbe gin +Ġbr ing +Ġa ction +er man +Ġdesc rib +Ġind ust +Ġwant ed +ri ed +m ing +Ġatt empt +4 5 +f er +Ġd ue +ress ion +# # +Ġsh all +Ġs ix +o o +Ġst ep +Ġp ub +Ġhim self +Ġ2 3 +Ġc op +Ġd est +Ġst op +A C +ib ility +Ġl ab +ic ult +Ġhour s +Ġcre ate +Ġf urther +ĠAmeric a +ĠC ity +Ġd ou +he ad +S T +ĠN orth +c ing +Ġn ational +u le +ĠIn st +Ġt aking +ĠQ u +ir t +Ġre d +Ġrese arch +v iron +ĠG e +Ġbre ak +an a +Ġsp ace +ater ial +Ġrec ent +ĠA b +Ġgener al +Ġh it +Ġper iod +Ġevery thing +ive ly +Ġph ys +Ġsay ing +an ks +Ġc ou +Ġc ult +ac ed +e al +u ation +Ġc oun +l u +Ġinclud e +Ġpos ition +ĠA fter +ĠCan ad +ĠE m +Ġim m +ĠR ed +Ġp ick +Ġcom pl +Ġm atter +re g +e xt +ang u +is c +o le +a ut +Ġcomp et +e ed +f ect +Ġ2 1 +ĠS en +ĠThe se +as ing +Ġcan not +Ġin it +Ġrel ations +ac hed +Ġb ar +Ġ4 0 +ĠT H +Ġ201 2 +Ġv ol +Ġg round +Ġsec urity +Ġup d +il t +3 5 +Ġconc ern +ĠJ ust +Ġwh ite +Ġseem s +ĠH er +pe cially +i ents +Ġann oun +Ġf ig +ight s +Ġst ri +l ike +id s +Ġs us +Ġw atch +Ġ â +Ġw ind +ĠC ont +Ġit self +Ġm ass +A l +y le +iqu e +ĠN ational +Ġab s +Ġp ack +Ġout side +Ġan im +Ġp ain +et er +Ġman ag +du ct +og n +Ġ ] +ĠSe pt +se c +o ff +ĠJ an +Ġf oot +ad es +Ġth ird +Ġm ot +Ġev idence +int on +Ġth reat +a pt +pl es +c le +Ġl o +Ġde cl +Ġit em +med i +Ġrep resent +om b +am er +Ġsignific ant +og raph +s u +Ġc al +i res +00 00 +I D +A M +Ġsim ply +Ġlong er +Ġf ile +O T +c he +S o +ate g +or g +ĠH is +Ġen er +Ġd om +Ġup on +il i +": " +Ġthem selves +Ġcom ing +Ġqu ite +Ġdiff icult +ĠB ar +il ities +re l +end s +c ial +6 4 +Ġwom an +ra p +y r +Ġne cess +ip s +Ġte xt +Ġrequ ire +Ġmilit ary +Ġre view +Ġresp ons +7 5 +Ġsub ject +Ġinst ead +Ġiss ues +Ġg en +" ," +Ġmin utes +Ġwe ap +r ay +am ed +t ime +b l +H ow +Ġc ode +ĠS m +Ġhig her +ĠSt e +r is +Ġp age +Ġstud ents +ĠIn tern +Ġmet hod +ĠA ug +ĠP er +ĠA g +Ġpolic y +ĠS w +Ġex ec +Ġac cept +um e +rib ut +Ġword s +Ġfin al +Ġchang es +ĠDem ocr +Ġfriend s +Ġres pect +Ġe p +Ġcomp an +iv il +Ġdam age +** ** +og le +viron ment +Ġne g +ent al +Ġa p +Ġtot al +iv al +! " +l im +Ġneed s +Ġag re +Ġdevelop ment +Ġa ge +ip le +2 1 +Ġresult s +ĠA f +S h +Ġg un +ĠOb ama +ro ll +Ġ @ +Ġright s +ĠB rit +Ġrun ning +Ġwas n +Ġp ort +Ġr ate +Ġpret ty +Ġtarg et +Ġsa w +Ġc irc +Ġwor ks +ic ro +al t +o ver +ww w +Th at +l ier +Ġevery one +ud e +Ġp ie +idd le +ra el +Ġr ad +Ġbl ock +Ġw alk +T o +ã ģ +n es +ĠA ust +a ul +ro te +ĠS outh +ess ion +op h +Ġshow s +Ġs ite +Ġj o +Ġr isk +cl us +l t +Ġin j +id ing +ĠS pe +Ġch all +ir m +Ġ2 2 +itt ing +st r +Ġh y +L E +ke y +Ġbe gan +at ur +ashing ton +l am +ĠD av +b it +Ġs ize +ĠP ar +3 8 +ourn al +f ace +Ġdec ision +Ġl arg +Ġj ud +re ct +Ġcontin ue +ĠO ct +ove red +ĠI nt +==== ==== +Ġp arent +ĠW ill +Ġeas y +Ġd rug +ang er +Ġs ense +Ġd i +id ay +Ġener gy +ist ic +Ġass oci +ar ter +ob al +e ks +ĠE l +ur ch +Ġg irl +o e +it le +Ġ2 8 +ĠC he +Ġrequ est +Ġso on +Ġh ost +k y +Ġst ates +om es +Ġm aterial +le x +Ġmom ent +Ġan sw +on se +Ġes pecially +Ġn orm +Ġserv ices +p ite +r an +Ġro le +4 4 +) : +Ġc red +C l +____ ____ +Ġm at +Ġl og +ĠCl inton +O U +Ġoff ice +Ġ2 6 +Ġch arg +Ġtr ack +m a +Ġhe art +Ġb all +Ġperson al +Ġbuild ing +n a +s et +b ody +ĠBl ack +Ġincre ase +itt en +Ġneed ed +3 6 +3 2 += " +Ġl ost +Ġbec ame +Ġgrou ps +ĠM us +Ġw rote +ĠP e +Ġpro p +j oy +à © +ĠWh ite +Ġde ad +. ' +Ġhtt p +Ġwe bs +O S +Ġins ide +Ġwr ong +Ġstat ement +Ġ ... +y l +Ġfil m +Ġmus ic +Ġsh are +ific ation +Ġre lease +Ġfor ward +Ġst ay +Ġcomp ut +it te +s er +Ġorig inal +Ġc ard +Ġc and +Ġd iv +at ural +Ġfav or +O M +Ġc ases +us es +Ġse ction +Ġle ave +g ing +ov ed +ĠW ashington +3 9 +ĠG l +Ġrequ ired +act ion +ap an +o or +it er +ĠK ing +Ġcount ries +ĠG erman +ll ing +Ġ2 7 +3 4 +Ġquest ions +Ġpr im +Ġc ell +Ġsh oot +Ġany one +ĠW est +Ġaff ect +ep end +Ġon line +ĠIs rael +ĠSept ember +Ġab ility +Ġcont ent +is es +Ġre ve +Ġl aun +Ġind ic +Ġfor ce +c ast +Ġso ld +av ing +f l +Ġso ft +Ġcompan ies +ce ed +Ġart icle +Ġa ud +Ġre v +Ġed uc +Ġplay ing +0 5 +Ġhe ld +ct or +Ġrele ased +Ġf ederal +3 7 +Ġad minist +Ġinter view +Ġinst all +Ġrece ived +Ġs ource +u k +P h +Ġser ious +Ġcre ated +Ġc ause +Ġim medi +Ġdef in +u el +ĠDep artment +ct ions +ĠC our +ĠN ow +z e +it es +it ution +Ġl ate +Ġspe ak +n ers +Ġleg al +ar i +ĠC or +Ġwe eks +Ġmod el +Ġp red +Ġex act +B C +ĠB y +IN G +os ing +Ġt akes +Ġreg ard +Ġopp ortun +Ġpr ice +Ġ19 8 +ĠA pr +f ully +Ġor d +Ġproble ms +ru ction +h am +ĠC ount +le ge +Ġlead ers +E T +le v +Ġde ep +olog ical +es e +h aps +ĠS ome +Ġp ers +Ġcont ract +Ġrelations hip +s p +ou d +Ġb ase +4 8 +m it +A d +anc ial +Ġcons um +Ġpot ential +Ġl angu +re m +et h +Ġrel ig +ress ed +6 6 +Ġl ink +Ġl ower +ay er +ĠJ une +Ġf em +un t +er c +ur d +Ġcont act +Ġ ill +Ġm other +Ġest ab +h tt +ĠM arch +ĠB ro +ĠCh ina +Ġ2 9 +Ġs qu +Ġprov ided +Ġa verage +as ons +Ġ201 1 +Ġex am +l in +5 5 +n ed +Ġper fect +Ġt ou +al se +u x +Ġbu y +Ġsh ot +Ġcol lect +Ġph ot +Ġplay ed +Ġsur pr +Ġofficial s +Ġsim ple +av y +Ġindust ry +Ġhand s +g round +Ġp ull +Ġr ound +Ġus er +Ġr ange +u ary +Ġpriv ate +op s +e es +Ġw ays +ĠM ich +Ġve h +Ġex cept +Ġter ms +im um +pp er +I ON +ore s +ĠDr agon +ou l +Ġd en +Ġperform ance +Ġb ill +c il +4 7 +Ġen vironment +Ġex c +ad d +Ġwor th +Ġp ict +Ġch ance +Ġ201 8 +b or +Ġspe ed +ict ion +Ġal leg +ĠJ apan +at ory +re et +Ġm atch +ĠI I +Ġst ru +ord er +Ġst e +Ġl iving +Ġst ruct +in o +Ġse par +her n +Ġresp onse +Ġen joy +Ġv ia +A D +um ents +ace book +Ġmem ber +ib r +iz ing +Ġto ol +ĠM on +ĠWh ile +h ood +ĠA ng +ĠD ef +Ġoff er +T r +a ur +Ġturn ed +ĠJ uly +d own +an ced +Ġrec ently +ĠE ar +Ġc e +ĠSt ar +ĠC ong +rough t +Ġbl ood +Ġhop e +Ġcom ment +ain t +Ġar ri +il es +Ġpartic ip +ough t +ri ption +0 8 +4 9 +Ġg ave +Ġse lect +Ġkill ed +sy ch +Ġgo es +i j +Ġc oll +Ġimp act +at ives +ĠS er +0 9 +ĠAug ust +Ġb oy +d e +ĠD es +Ġf elt +U S +Ġexpect ed +Ġim age +ĠM ark +cc ording +o ice +E C +ĠM ag +en ed +h old +ĠP ost +Ġpre vent +N o +Ġinvol ved +Ġey es +Ġquick ly +A t +un k +Ġbeh av +Ġ ur +Ġl ed +c ome +e y +Ġcand id +Ġear lier +Ġfoc us +et y +P ro +led ge +ix ed +ill ed +Ġpop ular +A P +Ġset t +l ight +Ġvar ious +in ks +Ġlevel s +Ġro ad +ell ig +ab les +he l +itte e +ĠG ener +y pe +Ġhe ard +ic les +Ġm is +Ġus ers +ĠS an +Ġimpro ve +Ġf ather +Ġse arch +The y +v il +Ġprof ess +Ġkn ew +Ġl oss +Ġev ents +6 5 +Ġb illion +0 7 +0 2 +ĠNew s +ĠA M +Ġco ver +w here +ens ion +Ġb ott +Ġare as +en ces +op e +ĠTw itter +a el +Ġget s +ĠGo ogle +Ġs n +i ant +Ġv ote +Ġnear ly +Ġinclud ed +Ġrec ogn +z z +m m +al ed +Ġhappen ed +0 4 +Ġh ot +Ġwho se +Ġc ivil +Ġsu ff +o es +it iz +ĠSy ri +Ġresp ond +Ġh on +Ġfeat ures +Ġeconom ic +ĠApr il +r im +Ġtechn ology +Ġo ption +ag ing +Ġpur ch +R e +Ġl at +ch ie +is l +Ġrec omm +u f +Ġtr aining +Ġeffect s +Ġf ast +Ġ201 0 +Ġocc ur +Ġwebs ite +Ġem ail +Ġs ens +e ch +Ġo il +Ġinf lu +Ġcurrent ly +ĠS ch +ĠAd d +Ġgo al +Ġsc ient +Ġcon v +1 00 +em y +Ġdec ided +Ġtra vel +Ġm ention +L L +0 3 +Ġe lection +Ġph one +Ġlook s +Ġsit uation +Ġc y +Ġh or +b ed +ĠCour t +a ily +av es +Ġqu ality +ĠCom p +w ise +Ġt able +Ġst aff +ĠW ind +et t +Ġtri ed +ide red +Ġadd ition +Ġb ox +Ġl ack +ar ily +Ġw ide +Ġm id +Ġbo ard +ys is +Ġant i +h a +Ġd ig +en ing +Ġd ro +C on +6 8 +Ġsl ow +b ased +se qu +Ġp ath +E x +ak er +Ġwork ed +Ġp en +Ġeng ine +Ġlook ed +ĠSu per +ĠS erv +Ġvict im +U n +Ġproper ty +Ġint rodu +Ġexec ut +ĠP M +L e +Ġcol or +ĠM ore +Ġ6 0 +Ġnet work +Ġd ate +c ul +id ge +Ġext ra +3 1 +Ġs le +6 7 +Ġw ond +Ġreport s +j ust +ĠAust ral +Ġcap ital +Ġen s +Ġcomm and +Ġallow ed +Ġpre p +Ġca pt +h ib +Ġnum bers +ch an +Ġf air +m p +om s +Ġre ach +W ith +t ain +Ġbro ad +Ġcou ple +ec ause +ly ing +ĠF eb +Ġsc reen +Ġl ives +Ġpri or +ĠCong ress +A r +Ġappro ach +Ġe mer +ar ies +ĠD is +s erv +ĠN e +Ġbu ilt +c ies +Ġre pe +Ġrul es +for ce +ĠP al +Ġfin ancial +Ġcons idered +ĠCh ar +n ces +ĠI S +Ġb rought +Ġb i +i ers +ĠS im +O P +Ġproduct s +Ġvis it +Ġdoc ument +Ġcon duct +Ġcomplete ly +in ing +ĠCal if +ib ly +Ġwr itten +ĠT V +em ents +Ġd raw +O ne +Ġpub lished +Ġsec ret +r ain +he t +ĠF acebook +ond ay +ĠU p +Ġsex ual +Ġth ous +ĠP at +Ġ ess +Ġstand ard +Ġar m +g es +ect ion +Ġf ell +Ġfore ign +an i +ĠFr iday +Ġreg ular +in ary +Ġincre ased +Ġus ually +Ġdem on +Ġd ark +Ġadd itional +ro l +ĠO f +Ġprodu ction +! ! +und red +Ġintern ational +id ents +ĠF ree +rou p +Ġr ace +Ġm ach +Ġh uge +A ll +le ar +ove mber +Ġto wn +Ġatt ention +ĠO ff +y ond +ĠThe n +f ield +Ġter ror +ra z +ĠB o +Ġmeet ing +ĠP ark +Ġar rest +Ġf ear +Ġa w +ĠV al +or ing +' , +Ġext reme +ar r +Ġwork ers +A fter +Ġ3 1 +n et +am ent +Ġdirect ly +Ġpop ulation +ub e +ĠOct ober +ĠI N +ĠJan uary +5 9 +ĠDav id +Ġc ross +ce mber +ĠF irst +Ġmess age +ir it +Ġn ation +Ġp oll +is ions +Ġansw er +n y +is ode +Ġcar ry +ĠRuss ia +Ġhe ar +eng th +ro y +Ġn atural +in ally +Ġdo g +m itted +Ġtr ade +Ġsub st +Ġmult iple +ĠAf ric +Ġf ans +Ġs ort +Ġgl obal +ic ation +ĠW ed +ar a +Ġa chie +Ġlangu age +ve y +Ġt al +Ġnecess ary +Ġdet ails +Ġs en +ĠS und +ĠRe g +ĠR ec +0 6 +Ġs il +ress ive +Ġmed ical +un ch +orn ia +Ġu nd +f ort +oc ks +ĠM onday +ues day +c raft +7 7 +ur t +Ġ ver +ĠH ill +Ġrece ive +Ġmor ning +es tern +Ġb ank +Ġs at +ir th +ĠH igh +Ġdev ice +ĠTH E +ĠCent er +Ġsaf e +Ġp le +ĠCanad a +Ġsystem s +Ġass ist +Ġsur v +Ġb attle +ĠS oc +vert is +S he +Ġp aper +Ġgrow th +Ġc ast +S c +Ġpl ans +ll ed +Ġpart s +Ġw all +Ġmove ment +Ġpract ice +im ately +Ġdis play +Ġsomet imes +om p +ĠP aul +ĠY es +k ing +5 8 +o ly +Ġs on +Ġav oid +ok es +ĠJ ew +Ġto wards +as c +Ġ // +ĠK ore +Ġtalk ing +Ġcor rect +Ġsp ent +ic ks +i able +e ared +Ġter m +Ġwant s +om ing +Ġ ut +Ġdou b +Ġfor ces +Ġp lease +6 9 +ĠN ovember +at form +ond on +Ġon es +Ġimmedi ately +ĠRuss ian +ĠM et +Ġde g +Ġparent s +C H +ĠAmeric ans +al y +ĠM od +Ġsh own +Ġcond itions +Ġst uff +Ġre b +ĠY our +Ġinclud es +n own +ĠS am +Ġexper ien +m ission +ĠE ven +augh t +Ġannoun ced +ĠRepublic an +Ġdeter min +Ġdescrib ed +ĠCount y +( ) +Ġdo or +Ġchang ed +Ġne igh +ĠH ere +Ġcle an +Ġp an +ĠDe cember +ĠEurope an +ir ing +ap ter +Ġcl ub +ĠT uesday +Ġp aid +ĠN et +Ġattack s +Ġcharact ers +Ġal one +Ġdirect or +d om +Ġ3 5 +Ġl oad +Ġr out +ĠCalif ornia +Ġfin ally +Ġr ac +Ġcont r +Ġexact ly +res h +p ri +ĠIs lam +Ġn ature +Ġcare er +Ġlat est +Ġcon vers +ĠS l +p ose +ci ent +ĠIn c +iv ity +8 8 +ĠA tt +ĠM or +nes day +Ġwe ight +k en +Ġnot e +Ġteam s +Ġ \ +air s +ĠG reen +Ġh undred +on ent +Ġstre ng +Ġcons ist +ic ated +Ġreg ul +Ġl ic +ast ic +Ġt en +urs day +ellig ence +ous ly +ĠU K +B I +Ġcost s +Ġind epend +ĠA P +Ġnorm al +Ġh om +Ġob vious +Ġs we +Ġst ar +Ġread y +ac her +Ġimp lement +g est +Ġs ong +ĠG et +ĠL ab +Ġinterest ing +us ing +Ġg iving +ĠSund ay +Ġet c +Ġm iddle +Ġrem ember +r ight +os ition +ut ions +Ġm ax +4 6 +Ġyour self +Ġdem and +Ġtreat ment +Ġd anger +ĠC ons +Ġgu y +ĠBrit ish +Ġphys ical +Ġrel ated +Ġrem ain +Ġcould n +Ġref er +Ġc itiz +b ox +EN T +bo ard +Ġin n +I G +er o +ĠSt reet +osp ital +ren ch +cher s +Ġst ra +O L +ag er +ĠA N +Ġeas ily +I A +en ge +in y +Ġcl os +ock ed +Ġus es +ĠC oun +I m +u ild +? ? +m ore +Ġan g +Ġwr ite +ol ute +5 7 +Ġlead er +Ġread ing +< / +Ġaut om +est s +4 3 +Ġleg isl +ĠG old +Ġdesign ed +ĠS T +ĠLe g +a res +Ġbe aut +ĠT ex +Ġappear s +Ġstru gg +ĠR om +Ġ 00 +Ġcho ice +Ġparticular ly +ĠF rom +op er +ĠL ondon +ann ed +Ġallow s +ob ile +Ġdiffere nce +âĢ ¢ +ĠV iew +ĠWed nesday +Ġal though +Ġrel ative +Ġapplic ation +ate ver +Ġare n +Ġmy self +Ġim ag +Ġdis e +Ġsoc iety +Ġfre qu +ĠEng lish +Ġpo or +ĠD ay +Ġwrit ing +Ġse ven +Ġstart ing +Ġb ud +Ġpr int +ĠTr ans +uf act +ĠSt ud +n ew +Ġcr im +Ġg ives +Ġco ol +a e +i ance +ĠGener al +Ġthink ing +Ġsa ve +Ġlim ited +ĠPart y +Ġmean ing +p en +ow ers +ĠJ ack +E M +Ġn ice +ru pt +Ġg as +Ġe ight +Ġfe et +Ġeff ort +Ġ ign +ic it +B l +co in +Ġop in +Ġbr ain +Wh ile +he st +ĠTh ursday +Ġwould n +augh ter +Ġtou ch +le ments +Ġstud ies +Ġcent er +c ont +or ge +Ġcomput er +Ġinvestig ation +P l +or ks +Ġ200 8 +Ġincre asing +Ġst ore +Ġcom ments +Ġb al +m en +Ġdo ll +Ġl iber +Ġw ife +Ġlaw s +atur day +it ness +Ġmod ern +ĠS k +Ġadminist ration +Ġopportun ity +Ġs al +Ġpower ful +M y +Ġclaim s +ĠEar th +ord s +Ġt itle +Ġes c +n ame +N ot +om en +Ġbe yond +Ġc amer +Ġse ll +it ute +ear ch +Ġapp l +im ent +4 2 +ĠAr t +Ġun f +Ġviol ence +ur g +ĠE ast +Ġcomp ared +Ġopt ions +Ġthrough out +Ġv s +ig r +. [ +ac hes +7 8 +Ġfil es +F L +E L +ar ian +ĠJ ames +ĠA ir +an ch +Ġdet ail +Ġpie ce +P S +Ġn amed +Ġeduc ation +Ġdri ve +Ġitem s +Ġstud ent +ic ed +: : +ic o +Ġth row +Ġsc ene +Ġcomple x +Ġ200 9 +Ġpre c +ĠB re +7 9 +Ġcon cept +Ġstat us +am ing +Ġd ied +Ġknow ledge +Ġbegin ning +O D +ru ary +Ġcertain ly +Ġgu ys +Ġsl ight +in n +ound s +Ġf ine +Ġf at +ic ations +Ġper haps +ĠA nt +Ġinc ome +Ġhtt ps +Ġmajor ity +port s +st on +Ġgreat er +Ġfe ed +ent ially +Ġsaf ety +Ġun ique +and om +Ġg one +Ġshow ed +Ġhist or +Ġcoun ter +i us +id a +Ġlead ing +i pe +Ġs end +ĠDon ald +er ve +Ġdef ense +ines e +Ġy es +ĠF ire +ĠMus lim +ra q +Ġcontin ued +os h +Ġprov ides +Ġpr ison +ĠP re +Ġhapp y +Ġeconom y +Ġtr ust +ag s +ĠG ame +Ġweap ons +um an +ĠC le +it ation +Ġanal ysis +ĠT imes +Ġsc ience +- > +Ġfig ure +Ġdis app +ent y +Ġsoft ware +Ġu lt +Ġoffic ers +N ew +I s +Ġrem ains +ĠInd ia +Ġp sych +ri ef +Ġc at +es c +Ġob serv +Ġst age +ĠD ark +Ġent er +ch ange +Ġpass ed +Ġdes pite +ĠO ut +Ġmov ie +r s +Ġv oice +m ine +ĠPl ay +Ġto ward +ĠT er +Ġreg ion +Ġval ues +or ters +Ġm ount +Ġoffic er +ĠO ther +b an +Ġh ous +w ood +ro om +I V +ĠS un +se e +ĠO ver +ro g +9 0 +Ġl ay +ĠT ur +a wn +Ġpress ure +ĠS ub +Ġbook s +ed om +ĠS and +A A +ag o +Ġre asons +f ord +Ġactiv ity +U T +N ow +ĠSen ate +ce ll +n ight +Ġcall s +in ter +Ġlet ter +ĠR ob +ĠJ e +Ġcho ose +ĠL aw +G et +B e +Ġro b +Ġtyp es +Ġpl atform +Ġqu arter +R A +ĠT ime +Ġmay be +ĠC r +9 5 +p re +Ġmov ing +Ġl if +Ġgo ld +Ġs om +Ġpat ients +Ġtr uth +ĠK e +ur ance +ant ly +m ar +Ġchar ge +ĠG reat +Ġce le +---------------- ---------------- +Ġro ck +ro id +an cy +Ġcred it +a ud +B y +ĠE very +Ġmov ed +ing er +rib ution +Ġn ames +Ġstra ight +ĠHe alth +ĠW ell +Ġfe ature +Ġr ule +Ġsc he +in ated +ĠMich ael +ber g +4 1 +il ed +b and +Ġcl ick +ĠAng el +on ents +Â Ń +ĠI raq +ĠS aturday +Ġa ware +p art +Ġpat tern +O W +ĠL et +Ġgr ad +ign ed +Ġassoci ated +Ġst yle +n o +i ation +a ith +il ies +Ġst ories +ur ation +Ġindividual s +ĠâĢ ¦ +m iss +ĠAss oci +ish ing +ab y +Ġsum mer +ĠB en +Ġ3 2 +Ġar ch +ut y +ĠTex as +h ol +Ġfull y +Ġm ill +Ġfollow ed +ĠB ill +ĠInd ian +ĠSec ret +ĠB el +ĠFeb ruary +Ġjob s +Ġseem ed +ĠGo vern +i pped +Ġreal ity +Ġl ines +Ġp ark +Ġmeas ure +ĠO ur +I M +Ġbro ther +Ġgrow ing +Ġb an +Ġest im +Ġc ry +ĠS chool +Ġme chan +ĠO F +ĠWind ows +Ġr ates +ĠO h +Ġpos itive +Ġcult ure +ist ics +ic a +Ġh ar +y a +ite ly +i pp +Ġm ap +en cies +ĠWill iam +I I +ak ers +5 6 +ĠM art +ĠR em +Ġal tern +it ude +Ġco ach +row d +D on +Ġk ids +Ġj ournal +Ġcor por +Ġf alse +Ġwe b +Ġsle ep +Ġcont ain +Ġst o +Ġb ed +iver se +ĠR ich +ĠCh inese +Ġp un +Ġme ant +k nown +Ġnot ice +Ġfavor ite +a ven +Ġcond ition +Ġpur pose +) ) +Ġorgan ization +Ġchall eng +Ġman ufact +Ġsus p +ĠA c +Ġcrit ic +un es +uc lear +Ġm er +vent ion +Ġ8 0 +Ġm ist +ĠU s +ĠT or +htt p +ol f +Ġlarg er +Ġadv ant +Ġrese ar +Ġact ions +m l +Ġke pt +Ġa im +, ' +c ol +Ġbenef its +if ying +Ġact ual +ĠIntern ational +Ġveh icle +Ġch ief +Ġeff orts +ĠLe ague +ĠM ost +Ġwa it +Ġad ult +Ġover all +Ġspe ech +Ġhigh ly +Ġfem ale +Ġer ror +Ġeffect ive +5 4 +Ġenc our +w ell +Ġfail ed +Ġcons erv +Ġprogram s +Ġt rou +Ġa head +5 00 +vertis ement +I P +ĠF ound +p ir +Ġ % +Ġcr ime +and er +Ġloc ation +ĠI ran +Ġbehav ior +az ing +Ġr are +Ġem b +Ġca used +Ġsh ip +Ġact ive +Ġcont ribut +Ġg reen +Ġac qu +Ġref lect +ven ue +Ġf irm +Ġb irth +] . +Ġclear ly +Ġem ot +Ġag ency +ri age +Ġmem ory +9 8 +S A +ĠSe e +ac ing +C C +Ġbig gest +Ġr ap +Ġbas ic +Ġb and +e at +Ġsus pect +ĠM ac +Ġ9 0 +m ark +ist an +Ġsp read +am s +k i +as y +ra v +ĠR ober +Ġdemon str +r ated +Ġabs olute +Ġpl aces +Ġim pl +ibr ary +Ġc ards +Ġdest roy +Ġv irt +ve re +Ġapp eared +y an +p oint +Ġbe g +Ġtem per +s pe +ant ed +ear s +ĠD irect +Ġl ength +Ġbl og +am b +Ġint eg +Ġres ources +ac c +if ul +Ġsp ot +Ġfor ced +Ġthous ands +ĠMin ister +Ġqu al +ĠF rench +at ically +Ġgener ally +Ġdr ink +Ġth us +I L +od es +Ġappro pri +ĠRe ad +Ġwh om +Ġey e +Ġcol lege +Ġ4 5 +ire ction +Ġens ure +Ġapp arent +id ers +Ġrelig ious +Ġmin or +ol ic +Ġt ro +ĠWh y +rib ute +m et +Ġprim ary +Ġdevelop ed +Ġpe ace +Ġsk in +st e +av a +Ġbl ue +Ġfam ilies +Ġ ir +Ġapp ly +Ġin form +ĠSm ith +C T +i i +Ġlim it +Ġres ist +........ ........ +um n +Ġconf lic +Ġtw e +ud d +ĠT om +Ġl iter +qu e +b on +Ġha ir +Ġevent ually +Ġp us +Ġhelp ed +Ġag g +or ney +ĠApp le +Ġf it +ĠS ur +Ġpre m +Ġs ales +Ġsecond s +Ġstreng th +Ġfeel ing +¿ ½ +Ġt our +Ġknow s +o om +Ġex erc +Ġsom ew +ï ¿½ +> > +Ġsp okes +Ġide as +Ġreg ist +so ft +ĠD el +ĠP C +Ġpro pos +Ġlaun ch +Ġbott om +T H +ĠP lease +v est +it z +ĠIn ter +Ġsc ript +Ġr at +ar ning +Ġ il +ĠJ er +ĠA re +Ġwh atever +ok en +ci ence +Ġmod e +Ġag ree +Ġs ources +Ġinit ial +Ġrest rict +Ġwond er +us ion +## ## +ĠS il +vil le +Ġb urn +t w +as ion +Ġ £ +Ġn or +u ing +Ġre ached +Ġs un +Ġc ateg +ig ration +Ġc ook +Ġprom ot +Ġm ale +Ġcl imate +Ġf ix +Ġalleg ed +U R +all ed +Ġim ages +C ont +ot a +Ġschool s +i os +Ġd rop +Ġst ream +ĠM o +Ġprevious ly +al ing +Ġp et +Ġdou ble +Ġ( @ +ann el +Ġdef ault +t ies +Ġr ank +ĠD ec +ĠCoun cil +Ġweap on +Ġst ock +Ġanal y +ĠSt r +Ġpict ure +ĠPol ice +f erence +Ġcent ury +Ġcitiz ens +Ġon to +Ġexp and +Ġhe ro +ĠS ol +Ġw ild +Ġupd ate +Ġcustom ers +r ont +d ef +Ġl ik +Ġcrim inal +ĠChrist ian +S P +7 6 +Ġle aving +Ġother wise +ĠD ist +Ġbas is +5 2 +5 3 +ic ip +ĠB er +Ġrecomm end +Ġfl oor +Ġc rowd +ol es +Ġ7 0 +Ġcent ral +ĠE v +Ġd ream +Ġdown load +Ġconf ir +ĠTh om +Ġwind ow +Ġhapp ens +Ġun it +Ġt end +Ġs pl +Ġbec omes +Ġfight ing +Ġpred ict +ĠP ress +ĠP ower +Ġhe avy +ak ed +Ġf an +or ter +ate gy +B A +iz es +Ġsp end +H ere +Ġ200 7 +Ġad op +ĠH am +Ġfoot ball +ĠP ort +od ay +5 1 +amp ions +Ġtrans fer +h t +Ġ3 8 +ter m +ac ity +Ġb ur +] , +tern al +r ig +b ut +Ġthere fore +ĠB ecause +res p +re y +Ġm ission +S ome +Ġnot ed +Ġass um +Ġdise ase +Ġed it +Ġprog ress +r d +ĠB rown +oc al +Ġadd ing +Ġra ised +ĠAn y +Ġt ick +Ġsee ing +ĠPe ople +Ġagre ement +Ġser ver +Ġw at +Ġdeb ate +Ġsupp osed +il ing +Ġlarg est +Ġsuccess ful +ĠP ri +ĠDemocr atic +Ġj ump +ĠSyri a +Ġown ers +Ġoff ers +Ġshoot ing +Ġeff ic +se y +Ġha ven +ver se +te red +ĠL ight +im al +ĠB ig +Ġdef end +Ġbe at +Ġrecord s +% ) +Ġsc en +Ġemploy ees +Ġdev ices +he m +Ġcom mer +ĠM ex +Ġbenef it +ĠPro f +Ġil leg +Ġsur face +ĠAl so +Ġh arm +ing ly +w ide +ĠA lex +Ġsh ut +ĠC ur +Ġl ose +p m +Ġchall enge +se mb +Ġst ation +Ġint elligence +Ġacc ur +ĠFl or +Ġrequ ires +ĠM al +b um +Ġh ospital +Ġsp irit +Ġoff ered +Ġprodu ce +ĠComm un +Ġcreat ing +Ġcr is +s pect +Ġend ed +Ġd aily +Ġvot ers +land s +i as +i h +on a +Ġsm art +ĠOff ice +ĠL ord +ri al +ĠIntern et +Ġcirc um +Ġextreme ly +' . +Ġopin ion +ĠM il +Ġg ain +B S +ĠF in +y p +Ġuse ful +Ġbud get +Ġcom fort +is f +Ġback ground +el ine +Ġep isode +Ġen emy +Ġtri al +Ġestab lish +d ate +ĠC ap +Ġcontin ues +Ġshow ing +ĠUn ion +w ith +Ġpost ed +ĠSy stem +Ġe at +ri an +Ġr ise +ĠGerman y +il s +Ġsign ed +Ġv ill +Ġgr and +m or +ĠEng land +Ġproject s +um ber +Ġconf erence +z a +Ġrespons ible +ĠAr ab +Ġlearn ed +âĢĶ âĢĶ +i pping +ĠGe orge +O C +Ġreturn ed +ĠAustral ia +Ġb rief +Q u +Ġbr and +ill ing +ab led +Ġhig hest +Ġtr ain +ĠComm ission +wh ile +Ġn om +cept ion +Ġm ut +ĠBl ue +Ġinc ident +v ant +8 6 +ĠI D +Ġn uclear +7 4 +ĠL ike +ĠR E +ĠM icro +l i +m ail +Ġcharg es +8 9 +Ġad just +ad o +Ġear th +N A +Ġpr ices +P A +Ġd raft +Ġrun s +Ġcandid ate +ens es +Ġmanag ement +ĠPh il +ĠM iss +Ġte ach +g ram +Ġunderstand ing +a it +ic ago +A dd +ĠE p +sec ut +Ġsepar ate +Ġinst ance +Ġe th +Ġun less +**** **** +ĠF ore +in ate +Ġoper ations +S p +Ġf aith +g ar +ĠCh urch +ron ic +Ġconf ig +os ure +Ġactiv ities +Ġtrad itional +Ġ3 6 +Ġd irection +Ġmach ine +Ġsur round +Ġp ush +un ction +ĠE U +Ġeas ier +Ġarg ument +G B +Ġm icro +Ġsp ending +iz ations +Ġthe ory +ad ow +Ġcall ing +ĠL ast +Ġd er +Ġinflu ence +Ġcomm it +Ġph oto +Ġun c +ist ry +g n +ast e +ack s +Ġdis p +ad y +d o +ĠG ood +Ġ ` +Ġw ish +Ġreve aled +Âł Âł +l ig +Ġen force +ĠComm ittee +Ġche m +Ġmil es +Ġinterest ed +Ġsol ution +ic y +in ct +Ġ- > +ĠD et +Ġrem oved +Ġcomp ar +e ah +Ġpl ant +ĠS ince +Ġachie ve +Ġadvant age +Ġslight ly +b ing +Ġpl aced +u nder +201 5 +ĠM ad +Ġt im +os es +Ġc ru +ĠR ock +Ġmost ly +Ġneg ative +Ġset ting +Ġprodu ced +Ġm ur +Ġconnect ion +ĠM er +Ġdri ver +Ġexecut ive +Ġass ault +Ġb orn +ĠV er +t ained +Ġstruct ure +Ġredu ce +Ġdec ades +Ġd ed +u ke +ĠM any +idd en +Ġle ague +S e +Ġjo in +Ġdis co +Ġd ie +c ks +act ions +Ġass ess +ag n +Ġgo als +our s +I R +Ġsen ior +ill er +m od +ip ment +oc ol +u y +ĠQ ue +Ġpart ies +ir gin +Ġle arning +it able +Ġstre et +Ġcamer a +A pp +Ġsk ills +b re +c ious +Ġcele br +ĠFr anc +Ġexist ing +Ġwill ing +l or +Ġ id +ĠSp ace +Ġcrit ical +ĠL a +ortun ately +Ġser ve +Ġc old +Ġspec ies +T S +Ġanim als +ĠB ay +Ġold er +ĠU nder +est ic +ĠT re +Ġte acher +Ġpre fer +v is +Ġth read +ĠM att +Ġmanag er +ãĥ » +Ġprofess ional +ĠV ol +Ġnot es +The se +ul a +Ġf resh +ent ed +u zz +ed y +clus ion +ĠR el +Ġdoub t +E O +Ġopen ed +ĠB it +Ad vertisement +Ġgu ess +ĠU N +Ġse qu +Ġexpl ain +ott en +Ġatt ract +ak s +Ġstr ing +Ġcont ext +oss ible +ĠRepublic ans +Ġsol id +Ġc ities +Ġask ing +Ġr andom +u ps +ur ies +ar ant +dd en +g l +ĠFlor ida +Ġdep end +ĠSc ott +Ġ3 3 +Ġi T +ic on +Ġmention ed +Ġ2 000 +Ġclaim ed +Ġdefin itely +ul f +Ġc ore +Ġopen ing +ĠCon st +wh ich +ĠT ra +A G +7 2 +Ġbelie ved +ad a +Ġ4 8 +ĠSec urity +yr ight +ĠP et +ĠL ou +Ġhold ing +======== ======== +Ġ ice +Ġb row +Ġauthor ities +h ost +w ord +Ġsc ore +ĠD iv +Ġcell s +Ġtrans l +Ġneigh bor +Ġrem ove +u ct +Ġdist rict +ĠA ccording +Ġwor se +Ġconcern s +Ġpresident ial +Ġpolic ies +ĠH all +7 3 +Ġh us +A Y +Ġ200 6 +ĠJ ud +Ġindepend ent +ĠJust ice +ili ar +pr int +igh ter +Ġprotect ion +z en +Ġsu dden +h ouse +ĠJ es +P R +ĠIn f +Ġb ul +Ġ _ +ĠServ ice +ĠP R +Ġstr ategy +ff ect +Ġgirl s +Ġmiss ing +oy al +ĠTe am +ul ated +Ġd at +Ġpolit ics +ab or +A ccording +Ġspe ll +Ġg raph +ort hern +T C +A b +Ġlab or +is her +Ġk ick +ĠiT unes +Ġstep s +pos es +Ġsmall er +E n +ber t +Ġro ll +Ġresear chers +Ġcl osed +Ġtrans port +Ġlaw y +________ ________ +ĠCh icago +Ġas pect +Ġn one +Ġmar riage +9 6 +Ġe lements +ĠF re +ĠS al +Ġd ram +F C +t op +e qu +Ġhe aring +Ġsupport ed +Ġtest ing +co hol +Ġmass ive +Ġst ick +Ġgu ard +is co +ph one +F rom +How ever +Ġb order +Ġcop y +ograph y +l ist +7 1 +Ġown er +cl ass +ru it +r ate +ĠO nce +Ġdig ital +Ġt ask +ER S +Ġinc red +t es ++ + +ĠFr ance +Ġb reat +ow l +Ġiss ued +ĠW estern +Ġdet ect +Ġpart ners +Ġsh ared +ĠC all +Ġcan cer +ac he +rib e +Ġexpl ained +Ġhe at +{ " +Ġinvest ment +ĠB ook +Ġw ood +Ġtool s +ĠAl though +Ġbelie f +Ġcris is +Ġg e +ĠM P +Ġoper ation +ty pe +~ ~ +g a +Ġcont ains +ant a +Ġexp ress +ĠG roup +ĠJ ournal +k a +Ġam b +ĠUS A +Ġfind ing +Ġfund ing +h ow +Ġestab lished +ide os +Ġdeg ree +Ġdanger ous +ang ing +Ġfre edom +pp ort +out hern +Ġch urch +Ġc atch +ĠTw o +Ġpres ence +ĠGu ard +U p +Ġauthor ity +ĠPro ject +Ġbut ton +Ġcon sequ +Ġval id +Ġwe ak +Ġstart s +Ġref erence +ĠM em +" ) +U N +or age +ĠO pen +Ġcol lection +y m +g ency +Ġbeaut iful +ro s +Ġtell s +Ġwa iting +n el +Ġprov iding +ĠDemocr ats +Ġd aughter +Ġm aster +Ġpur poses +ĠJapan ese +Ġequ al +Ġturn s +Ġdoc uments +Ġwatch ing +R es +Ġr an +201 4 +Ġre ject +ĠKore a +Ġvictim s +Le vel +ere nces +Ġw itness +Ġ3 4 +Ġre form +com ing +Ġocc up +Ġc aught +Ġtra ffic +ad ing +Ġmod els +ar io +Ġserv ed +Ġb atter +u ate +ĠSecret ary +Ġagre ed +Ġtr uly +yn am +ĠR et +Ġun its +ĠRes earch +h and +az ine +ĠM ike +Ġvar iety +ot al +Ġam azing +Ġconfir med +Ġentire ly +Ġpurch ase +Ġe lement +Ġc ash +Ġdeter mine +D e +Ġc ars +ĠW all +â ĸ +Ġview s +Ġdrug s +Ġdep artment +ĠSt ep +u it +Ġ3 9 +as ure +ĠCl ass +Ġc overed +ĠB ank +Ġme re +u ana +Ġmult i +Ġm ix +Ġun like +lev ision +Ġsto pped +Ġs em +ĠG al +ul es +Ġwe l +ĠJohn son +l a +Ġsk ill +Ġbec oming +ri e +Ġappropri ate +f e +ell ow +ĠPro t +ul ate +oc ation +Ġweek end +od ies +Ġsit es +Ġanim al +ĠT im +Ġsc ale +Ġcharg ed +Ġinst ruct +ill a +Ġmethod s +Ġc ert +Ġjud ge +ĠH el +Ġdoll ars +Ġstand ing +ĠS qu +Ġdeb t +l iam +Ġdri ving +ĠS um +ĠEd ition +Ġal bum +and on +I F +ĠU k +6 3 +ad er +Ġcommer cial +es h +ĠGovern ment +Ġdisc overed +Ġout put +ĠHill ary +ĠCar ol +Ġ200 5 +Ġab use +anc ing +Ġsw itch +Ġann ual +T w +Ġst ated +ag ement +in ner +Ġdem ocr +Ġres idents +Ġallow ing +Ġfact ors +od d +Ġf uck +em ies +Ġoccur red +ot i +Ġn orth +ĠP ublic +Ġinj ury +Ġins urance +C L +oll y +ã Ģ +Ġrepe ated +Ġar ms +ang ed +Ġconst ruction +Ġf le +P U +ic ians +Ġfor ms +ĠMc C +ant ic +Ġm ental +p ire +Ġequ ipment +Ġf ant +Ġdiscuss ion +Ġregard ing +k in +ar p +Ġch air +og ue +Ġpro ceed +ĠI d +O ur +Ġmur der +M an +Ġ4 9 +as p +Ġsupp ly +Ġin put +Ġwe alth +liam ent +Ġpro ced +or ial +ĠSt at +ĠN FL +hen s +ĠInst itute +Ġput ting +ourn ament +et ic +Ġloc ated +Ġk id +er ia +r un +Ġpr inc +Ġ ! +go ing +ĠB et +Ġcl ot +Ġtell ing +Ġprop osed +i ot +or ry +Ġfund s +g ment +ĠL ife +Ġb aby +ĠB ack +Ġsp oke +Im age +Ġear n +ĠA T +g u +Ġex change +ĠL in +ov ing +Ġp air +M ore +az on +Ġarrest ed +Ġkill ing +c an +ĠC ard +y d +Ġident ified +Ġm obile +Ġthan ks +ony m +ĠF orm +Ġhundred s +ĠCh ris +ĠC at +Ġtre nd +h at +ĠA v +om an +Ġelect ric +ĠW il +S E +O f +Ġrest aur +ot ed +Ġtr ig +Ġn ine +Ġb omb +Wh y + ¯ +Ġco verage +Ġapp eal +ĠRober t +ĠS up +Ġfin ished +Ġfl ow +Ġdel iver +Ġcal cul +Ġphot os +Ġph il +Ġpie ces +Ġapp re +k es +Ġr ough +D o +Ġpart ner +Ġconcern ed +Ġ3 7 +ĠG en +C ol +ct ors +Ġ= > +st ate +Ġsuggest ed +ĠFor ce +C E +Ġher self +ĠPl an +w orks +o oth +ren cy +Ġcor ner +Ġhus band +Ġintern et +ĠA ut +em s +os en +ĠAt l +g en +Ġbal ance +6 2 +Ġsound s +te xt +Ġar r +ov es +Ġmill ions +Ġrad io +Ġsat isf +ĠD am +M r +G o +S pe +Ġcomb at +r ant +ĠG ree +Ġf uel +Ġdist ance +Ġtest s +Ġdec re +ĠE r +Ġman aged +D S +Ġt it +Ġmeas ures +ĠL iber +Ġatt end +as hed +ĠJ ose +ĠN ight +d it +ĠN ov +ĠE nd +out s +Ġgener ation +Ġadv oc +y th +Ġconvers ation +ĠS ky +act ive +ce l +ri er +ĠFr ank +Ġg ender +Ġcon cent +Ġcar ried +and a +ĠV irgin +Ġarri ved +ic ide +ad ed +Ġfail ure +Ġmin imum +le ts +Ġwor st +Ġkeep ing +Ġint ended +Ġilleg al +Ġsub sc +Ġdetermin ed +Ġtri p +Y es +Ġra ise +Ġ ~ +Ġfeel s +Ġpack age +ĠJ o +h i +201 6 +re al +Ġf ra +Ġsy mb +M e +uck y +p ret +ĠK h +ĠEd it +ĠWe b +em ic +ĠCol or +Ġjust ice +I nt +Ġfar m +ck now +" > +el ess +Ġredu ced +Ġ5 00 +x x +ĠR ad +ĠW ood +Ġcl in +Ġhy p +il er +ur a +k ins +8 5 +6 1 +ĠThe ir +ĠM ary +Ġs an +Ġno vel +ĠWh o +Ġcap acity +Ġimp ossible +Ġpl ays +Ġmin ister +ij uana +ic ate +ĠS et +Ġf ram +Ġ ing +Ġcommun ities +ĠF BI +it a +Ġb on +Ġstr ateg +Ġinterest s +l ock +g ers +m as +ĠAN D +Ġconflic t +Ġrequire ments +Ġs ac +Ġoper ating +in i +rel ated +Ġcomm itted +Ġrelative ly +Ġs outh +¯ ¯ +Ġaff ord +Ġident ity +Ġdec isions +Ġacc used +pl ace +Ġvict ory +o ch +i at +N ame +C om +t ion +ed s +Ġsee k +Ġt ight +ĠIm ages +Ġinit i +Ġhum ans +Ġfam iliar +Ġaud ience +Ġintern al +vent ure +Ġs ides +ĠT O +Ġd im +Ġcon clud +Ġapp oint +Ġenforce ment +ĠJ im +ĠAssoci ation +Ġcircum st +ĠCanad ian +Ġjo ined +Ġdiffere nces +ĠL os +Ġprot est +Ġtw ice +w in +Ġgl ass +ars h +ĠAr my +Ġexp ression +Ġdec ide +Ġplan ning +an ia +Ġhand le +ĠMicro soft +ĠN or +Ġmax imum +ĠRe v +Ġse a +Ġev al +Ġhel ps +re f +Ġb ound +Ġm outh +Ġstand ards +Ġcl im +ĠC amp +ĠF ox +cl es +Ġar my +ĠTe chn +ack ing +x y +S S +Ġ4 2 +Ġbu g +ĠUk rain +ĠM ax +ĠJ ones +ĠSh ow +l o +Ġplan et +Ġ7 5 +Ġwin ning +Ġf aster +Ġspe ct +Ġbro ken +T R +Ġdef ined +Ġhealth y +Ġcompet ition +htt ps +ĠIs land +ĠF e +Ġannoun ce +ĠC up +ĠInst ead +Ġcl ient +Ġposs ibly +se ction +ock et +l ook +Ġfin ish +Ġcre w +Ġres erv +Ġed itor +Ġh ate +Ġs ale +Ġcontro vers +Ġp ages +w ing +Ġnum er +Ġopp osition +Ġ200 4 +Ġref uge +Ġfl ight +Ġap art +ĠL at +A meric +ĠAfric a +Ġapplic ations +ĠPal est +ĠB ur +Ġg ar +ĠSoc ial +Ġup gr +Ġsh ape +Ġspe aking +ans ion +a o +ĠS n +Ġwor ry +ĠBrit ain +P lease +rou d +Ġh un +Ġintrodu ced +Ġd iet +I nd +ĠSec ond +Ġfun ctions +ut s +ĠE ach +ĠJe ff +Ġst ress +Ġaccount s +Ġgu arant +ĠAn n +ed ia +Ġhon est +Ġt ree +ĠAfric an +ĠB ush +} , +Ġs ch +ĠOn ly +Ġf if +ig an +Ġexerc ise +ĠEx p +Ġscient ists +Ġlegisl ation +ĠW ork +ĠS pr +à Ĥ +ĠH uman +Ġ è +Ġsur vey +Ġr ich +ri p +Ġmain tain +Ġfl o +Ġleaders hip +st ream +ĠIslam ic +Ġ 01 +ĠCol lege +Ġmag ic +ĠPr ime +Ġfig ures +201 7 +ind er +x ual +ĠDe ad +Ġabsolute ly +Ġfour th +Ġpresent ed +resp ond +rib le +Ġal cohol +at o +ĠD E +por ary +Ġgr ab +Ġvar i +Ġqu ant +ĠPh oto +Ġpl us +r ick +ar ks +Ġaltern ative +Ġp il +Ġappro x +th at +Ġobject s +ĠR o +ĠAnd roid +Ġsignificant ly +ĠR oad +k ay +R ead +av or +Ġa cknow +ĠH D +ĠS ing +O r +ĠM ont +Ġun s +pro f +Ġneg oti +ĠAr ch +ik i +Ġte levision +ĠJew ish +Ġcomm ittee +Ġmot or +Ġappear ance +Ġs itting +Ġstri ke +ĠD own +com p +ĠH ist +Ġf old +ac ement +ĠLou is +Ġbel ong +ĠâĢ ¢ +Ġm ort +Ġprep ared +Ġ6 4 +ĠM aster +Ġind eed +ĠD en +Ġre nt +T A +our ney +ar c +S u +9 7 +Ġadv ice +Ġchang ing +Ġlist ed +Ġlaun ched +is ation +ĠP eter +is hes +Ġl ived +ĠM el +ĠSup reme +ĠF ederal +Ġ) ; +ruct ure +Ġset s +Ġphil os +u ous +Ġ ł +Ġappl ied +ĠN OT +Ġhous ing +ĠM ount +Ġo dd +Ġsu st +D A +ffic ient +Ġ ? +ol ved +Ġp owers +Ġth r +Ġrem aining +ĠW ater +L C +Ġca uses +ãģ ® +Ġman ner +ad s +Ġsuggest s +Ġend s +stand ing +f ig +ĠD un +id th +Ġg ay +Ġter min +ĠAngel es +M S +Ġscient ific +Ġco al +ap ers +b ar +ĠThom as +Ġsy m +ĠR un +th is +P C +igr ants +Ġmin ute +ĠDist rict +cell ent +Ġle aves +Ġcomple ted +am in +Ġfoc used +Ġmon itor +Ġveh icles +M A +ĠM ass +ĠGr and +Ġaffect ed +itution al +Ġconst ruct +Ġfollow s +Ġt on +re ens +Ġh omes +ĠE xt +ĠLe vel +r ast +ĠI r +Ġel im +Ġlarge ly +ĠJ oe +Ġvot es +all s +Ġbusiness es +ĠFound ation +ĠCent ral +Ġy ards +Ġmaterial s +ul ner +Ġgu ide +Ġclos er +um s +Ġsp orts +ed er +J ust +Ġtax es +8 4 +ĠO ld +Ġdec ade +ol a +Ġv ir +Ġdro pped +Ġdel ay +it ect +Ġsec ure +ste in +le vel +Ġtre ated +Ġfil ed +ain e +Ġv an +Ġm ir +Ġcol umn +ict ed +e per +Ġro t +Ġcons ult +Ġent ry +Ġmar ijuana +ĠD ou +Ġapparent ly +ok ing +clus ive +Ġincre ases +an o +Ġspecific ally +Ġte le +ens ions +Ġrelig ion +ab ilities +Ġfr ame +ĠN ote +ĠLe e +Ġhelp ing +Ġed ge +ost on +Ġorgan izations +à ĥ +ĠB oth +hip s +Ġbig ger +Ġbo ost +ĠSt and +Ġro w +ul s +ab ase +Ġr id +L et +are n +ra ve +Ġst ret +P D +Ġv ision +Ġwe aring +Ġappre ci +Ġa ward +ĠU se +Ġfact or +w ar +ul ations +) ( +Ġg od +Ġter rit +Ġpar am +ast s +8 7 +Ġen emies +ĠG ames +F F +Ġacc ident +W ell +ĠMart in +T ER +Ġat h +ĠHe ll +Ġfor g +Ġve ter +ĠMed ic +f ree +Ġst ars +Ġexp ensive +Ġac ad +ra wn +ĠW he +Ġl ock +Ġform at +Ġsold iers +s m +Ġag ent +Ġrespons ibility +or a +ĠS cience +Ġrap id +Ġt ough +ĠJes us +Ġbelie ves +M L +Ġwe ar +le te +Ãĥ ÃĤ +ĠD ri +Ġcomm ission +ĠB ob +O h +ap ed +Ġwar m +ÃĥÃĤ ÃĥÃĤ +Ġ200 3 +ort ion +Ġhas n +ust er +Ġun ivers +ĠI ll +Ġk ing +olog ies +9 4 +ĠT em +ĠM os +Ġpat ient +ĠMex ico +ce an +ĠDe ath +ĠSand ers +y ou +ĠC ast +ĠComp any +pt y +Ġhappen ing +F P +ĠB attle +Ġb ought +A m +M od +U s +ut ers +ĠC re +ĠTh ose +Ġ4 4 +is er +Ġs oul +ĠT op +ĠHar ry +ĠA w +Ġse at +ff ee +Ġrev olution +Ġ( " +ĠD uring +et te +Ġr ing +Ġoff ensive +Ġreturn s +Ġv ideos +Ġdis cl +Ġfam ous +en ced +ĠS ign +ĠR iver +Ġ3 00 +P M +ĠB us +ĠC H +Ġcandid ates +ard en +Ġpercent age +Ġvis ual +Ġthan k +Ġtrou ble +ner gy +Ġ200 1 +Ġpro ve +ash ion +Ġen h +ĠL ong +U M +Ġconnect ed +Ġposs ibility +O ver +Ġexper t +Ġl ibrary +art s +ĠDirect or +Ġfell ow +9 2 +ir ty +Ġd ry +Ġsign s +ĠL ove +Ġqu iet +f oot +Ġp ure +ĠH un +Ġf illed +ph as +ĠE lect +end ment +ĠEx pl +Ġun able +n s +m o +Ġv ast +ob e +Ġident ify +app ing +ĠCarol ina +g ress +Ġpro te +Ġf ish +Ġcircumst ances +raz y +ĠPh ot +Ġb odies +ĠM ur +Ġdevelop ing +ĠA R +Ġexperien ced +Ġsubst ant +ĠBo ard +es ome +Ġdom estic +Ġcomb ined +ĠP ut +Ġchem ical +ĠCh ild +Ġpo ol +ĠC y +Ġe gg +c ons +st ers +Ġh urt +Ġmark ets +Ġconserv ative +Ġsupp orters +Ġag encies +id el +O b +ur b +Ġ4 3 +ĠDef ense +y e +ĠA p +du le +Ġtemper ature +Ġconduct ed +ĠCh ief +Ġpull ed +Ġf ol +L ast +ont o +os is +V ER +D es +ĠP an +F irst +Ġadv ance +Ġlic ense +r ors +ĠJ on +Ġimag ine +Ġhe ll +Ġf ixed +Ġinc or +os ite +ĠL og +ick en +] : +Ġsurpr ise +h ab +Ġc raft +ol t +ĠJ ul +Ġd ial +Ġrele vant +Ġent ered +Ġlead s +ĠA D +ĠCle an +Ġpict ures +ess or +Ġal t +Ġpay ing +P er +ĠMark et +Ġupd ates +am ily +ĠT ype +ĠH ome +Ġ5 5 +semb ly +rom e +8 3 +Ġgreat est +Ġhe ight +Ġhe av +ain ts +Ġlist en +as er +ĠS H +Ġcap able +ac le +Ġpers pect +in ating +Ġoff ering +ry pt +ĠDe velop +ab in +r c +Ġbr ight +al ty +ar row +Ġsupp l +ind ing +ack ed +gy pt +ĠAn other +p g +ĠVirgin ia +ĠL u +Ġpl anned +Ġp it +Ġswe et +T ype +ĠD i +Ġtyp ically +ĠFranc isco +Ġpro spect +ĠD an +Ġte en +re es +Ġsc hed +Ġh ol +Ġsc r +Ġlot s +l ife +Ġnews p +Ġfor get +ĠN one +ĠM iddle +ĠR yan +ed d +Ġse vere +Ġsu it +ll er +9 3 +Ġcor respond +Ġexpl os +u ations +Ġfl ag +g ame +r id +Ġpr in +ĠD ata +Ġde ploy +ĠEn ter +su it +gh an +ĠM en +Ġthough ts +Ġmat ters +Ġad apt +ĠA ri +Ġf ill +Ġfor th +Ġs am +Ġ4 1 +Ġpay ment +ĠH or +Ġsp ring +du c +Ġl osing +Ġbring ing +F O +al a +Ġdist ribution +he red +b our +ĠIsrael i +om a +Ġcomb ination +Ġpl enty +V E +C an +ĠH aw +Ġper man +ĠSpe cial +Ġto w +Ġsee king +Ġexam ples +Ġclass es +c r +Ġbe er +Ġmov es +ĠI P +ĠK n +Ġpan el +E ven +Ġproper ly +Ġr is +Ġpl ug +Ġestim ated +E very +Ġdef ensive +ag raph +Ġpre gn +Ġinst it +ĠV ict +Ġvol ume +Ġpos itions +Ġl inks +ĠPro gram +ĠWe ek +ag ues +Ġtrans form +k er +ĠC EO +Ġc as +Ġopp onent +Ġtwe et +ĠC ode +Ġsh op +Ġf ly +Ġtal ks +Ġb ag +Ph one +Ġa id +Ġpl ants +Ġ6 5 +Ġatt orney +ar ters +qu est +ĠMag ic +Ġbeg ins +Ġmy ster +Ġenvironment al +Ġst orage +N N +Ġm arg +Ġs ke +Ġmet al +ell y +Ġord ered +Ġrem ained +Ġl oved +Ġprom pt +Ġupd ated +Ġexper ts +Ġwalk ing +Ġan cient +Ġperform ed +AT E +Ġne ither +i ency +Ġmanufact ure +ĠP ak +Ġselect ed +Ġm ine +Ġult imately +Ġexpl an +Ġlab el +ĠServ ices +ribut ed +Tr ump +Ġsy n +ĠU lt +S C +Ġme at +Ġg iant +ĠW ars +ĠO N +Ġad m +Ġinter pret +Ġeven ing +Ġev il +ĠB oston +ĠW ild +Ġ à +ĠBit coin +ĠAm azon +D r +ĠIn formation +Ġobvious ly +Ġadv anced +Ph oto +ol ar +Ġwe ather +Ġsymb ol +Ġso le +Ġpot entially +ost er +Ġorig inally +m un +3 00 +az e +ess ions +Ġde ck +Ġst ood +Ġyou th +ĠB ern +R ep +ĠT est +Ġbas ically +ot ic +Ġinvol ve +ol it +ly n +S ee +Ġair craft +Ġconf irm +E W +Ġmess ages +ĠRich ard +Ġk it +Ġpro hib +Ġv ulner +is ters +Ġexist ence +Ġturn ing +ĠS P +Ġdes ire +Ġfl at +Ġm ent +se ason +ang es +Ġneighbor hood +ĠL ake +AT ION +Ġpoint ed +b ur +Ġinn ov +uc ks +U L +Ġprofess or +Ġexp ressed +A B +ic ious +Ġ200 2 +ĠDe v +Ġs ession +Ġb are +s en +Ġdis s +ĠC ath +ĠP ass +ĠP oint +Ġdo ctor +or row +ail ed +ĠR ub +ĠD C +ĠChar l +p erson +Ġwrit er +igh ters +ure au +Ġob lig +Ġrecord ed +Ġbro ke +Ġord ers +il ty +Ġmot ion +in ity +l aw +ad ium +Ġimm igration +Ġcontr ast +Ġb att +Ġex cellent +Ġtechn ical +am i +Ġt un +Ġcl oud +ĠY ear +ge on +Ġcre ation +Ġstr ange +Ġa uth +Ġfor t +b orn +Ġext ent +ĠT oday +ĠCl ub +Ġr ain +Ġs ample +Ġaccept ed +Ġt act +Ġf ired +ĠS on +Ġstand s +Ġb oot +Ġ4 7 +Ġstat ements +Ġvers ions +Ġse lling +ound ed +Ġ199 0 +Ġwere n +ĠW atch +Ġexper iment +P ost +Ġret ail +ul ed +In st +un te +ãĥ ¼ +Ġdep art +Ġb ond +i very +om pl +Ġre action +ĠSyri an +ĠP ac +app ed +ani el +D P +Ġres olution +Ġre act +Ġappro ved +on om +m ond +ĠO ffic +-- - +Ġrepl ace +Ġt ack +Ġsp ort +Ġch ain +Ġemer gency +r ad +ĠPalest in +Ġ4 6 +Ġautom atically +Ġrout e +Ġp al +Ġb anks +ĠPar is +ĠMed ia +ro ad +ic ing +i xt +ist ed +Ġg rew +Ġco ord +ĠW here +om in +Ġsub s +� � +Ġ ± +Ġcorpor ate +Ġse lection +n oon +ĠRep ort +c s +clud ing +ord ers +anc he +ĠIt s +Ġslow ly +ĠE gypt +ĠA cc +Ġcol le +iqu es +E X +Ġattempt s +ur l +ĠC ross +Ġfind ings +ĠS C +ĠO R +Ġind ex +ens ity +ĠW ay +ĠL and +Ġsh ock +d is +Ġd ynam +Ġc art +m osp +S ince +i est +ĠB oy +Ġst orm +ĠCont in +201 3 +he w +il it +Ġess ential +iqu id +O ther +ive red +Ġreason able +A ct +Ġsub sequ +ĠP ack +ĠF ort +Ġconsider ing +Ġun iversity +l og +Ġmar ried +Ġill ust +ĠTr ue +£ ı +Ġnumer ous +rast ructure +Ġserious ly +Ġrefer red +u a +Ġconsist ent +on na +ĠRe al +ru ption +ci ples +Ġfact s +9 1 +ot es +er g +The n +Ġacc ompl +N ote +Ġre venue +Ġpass ing +Ġm al +e en +ĠY et +Ġg ather +ter day +ew ork +ĠA uthor +P e +Ġopt im +Ġr ub +Ġè £ı +Ġun known +st one +Ġun ion +ol ve +Ġopportun ities +Ġbrow ser +ĠW al +ĠC ost +Ġreport ing +st s +p et +Ġs and +Ġsudden ly +Ġsurpr ising +ĠV R +Ġsomew hat +ĠB as +ult ure +iz z +ĠC D +Ġchalleng es +Ġsett ings +Ġexperien ces +ĠF ull +Ġcan n +Ġrece iving +ES T +Ġj oint +Ġcult ural +Ġa st +8 2 +as tern +ce ived +ĠC ru +Ġb ull +p ired +am m +Ġfac ing +p ower +Ġb oss +ĠH ol +Ġinst r +Ġincreasing ly +Ġsh ift +Ġstre ets +ĠWilliam s +ab b +Ġl ie +Ġl augh +ĠC a +P L +Ġadult s +Ġcustom er +Ġob tained +Ġsupport ing +ht ml +f ire +Ġdetail ed +Ġpick ed +ĠR ight +ld er +E E +st ood +ĠK im +Ġw ire +Ġs ight +Ġdevelop ers +Ġpers ons +Ġs ad +Ġc up +Ġwar ning +Ġboy s +l ong +Ġb ird +f o +Ġw al +Ġobserv ed +Ġz one +iven ess +Ġch annel +c ript +Ġref used +ĠAg ain +Ġsu c +Ġspokes man +ĠRe f +r ite +ou ston +ãĥ ³ +ĠS her +Ġact s +ĠN ame +Ġstrugg le +ar ry +omet imes +Ġdisc rim +H T +Ġcateg ory +Ġreal ize +Ġemploy ee +ĠAf ghan +en ger +Ġgun s +ĠSte ve +ĠM ot +ĠO l +ok ed +Ġth ick +Ġfair ly +ill y +Ġsur ve +ĠM at +we ight +â Ķ +Ġtro ops +Ġag ents +Ġbatter y +Ġmot iv +à ¡ +S ec +d en +o very +L S +Ġfl u +Ġconf ident +ĠO per +Ġem pty +Ġp hen +Ġse ctor +Ġexc ited +Ġrem ote +ap h +o en +Ġdestroy ed +Ġmor al +ĠH P +ĠR on +Ġd ress +ĠB at +Ġl it +ĠM S +Ġa f +H L +r um +is ms +Ġshould n +Ġsym pt +ĠTor onto +het ic +Ġcar bon +Ġinstall ed +Ġviol ent +Ġsol ar +j a +Ġpract ices +Ġr ide +ĠP enn +Ġimpro ved +Ġaud io +Ġbehav i +ĠP S +Ġe ating +D ata +ĠRe view +p ass +cl aim +u ated +ang ers +c hen +Ġproper ties +Ġany where +An other +Ġbl ow +ĠJack son +Ġp roud +Ġplan e +l ines +Ġsqu are +Ġpro of +ans as +Ġtalk ed +m akers +Ġs ister +Ġhold s +Ġres ident +Ġ= = +Ġresist ance +Ġspl it +Ġpro secut +Ġconf idence +res ents +Ġcut s +Ġexcept ion +Ġz ero +Get ty +Ġcop yright +Ġtot ally +orm al +ific ations +ĠAustral ian +Ġs ick +Ġ1 50 +Ġhouse hold +Ġfe es +Ġdri vers +og en +ĠN Y +Ġnecess arily +Ġregul ations +ear ing +s l +Ġperspect ive +c are +ic ial +H is +Ġesc ape +Ġsurpr ised +ĠV an +ur rent +Ġv ac +8 1 +ĠTh us +Ġem phas +ĠCh ampions +ĠI ce +Ġn arr +Ġhead s +Ġca using +b el +f ortunately +ĠM a +Ġtarg ets +ci pl +Ġafter noon +Ġadd s +ĠMay be +ĠF our +ess ed +ple te +Ġus ual +ch o +ing u +Ġwith d +ĠE nergy +ĠE conom +O O +Ġart icles +Ġinj ured +Ġman age +Ġexpl ains +Ġdi agn +R ec +at ures +Ġlink ed +Ġdiscuss ed +Ġexpl o +Ġocc asion +ath an +Ġopp osite +Ġfac es +Ġden ied +ĠK night +Ġn ut +Ġapprox imately +Ġdisapp oint +onym ous +ĠB est +ĠL o +ĠH y +ĠA ff +Ġvot ing +an while +ĠII I +Ġinstit utions +ag ram +ĠD aily +Ġdr ag +Ġnear by +Ġgu ilty +Ġcon ver +P re +s hip +Ġre ward +Ġphilos oph +ĠS S +u gh +Ġapp s +f riend +Ġu pper +Ġad vert +Ġs now +Ġfr ust +Ġour selves +F r +ĠD ie +amp ion +Ġdis miss +Ġc ere +Ġsign al +f rom +Ġ ). +Ġ5 2 +Ġcr imes +it ors +est ival +use um +Ġcoun cil +ĠS aud +M ay +ĠG un +ic ian +et her +Ġsu fficient +ĠH en +so le +Ġhistor ical +ĠF ar +ĠT urn +Ġp in +Ġsuc ceed +m at +ly mp +Ġtrad ition +ĠO k +Ġc ro +Ġdesc ription +al le +Ġsk y +T e +Ġwide ly +Ġw ave +Ġdefin ition +ĠJew s +Ġcy cle +Ġref ere +Ġbr ings +us al +Ġal ive +Ġfrequ ently +Ġint ention +ĠCont rol +l v +y stem +Ġpriv acy +g ent +ren ce +ĠQu est +ĠChrist mas +Ġr ail +Ġco oper +Ġtest ed +ĠC apt +as ks +Ġcomfort able +Ġdel ivered +sc ape +Ġdep th +ĠG OP +Ġwrit es +Ġass ets +Ġsa v +im ents +Ġtrans ition +Ġart ist +ĠL ook +Ġl ob +Ġcomp onents +ar ity +Ġwalk ed +Ġro ot +Ġparticip ants +Ġnot iced +Ġres c +Ġn av +ĠAd minist +d a +ut ral +pl ate +Ġimport ance +Ġass ert +ious ly +c ription +Ġinj uries +ĠChe ck +Ġregist ered +Ġint ent +Ġmiss ed +ograph ic +Ġsent ence +oun ter +Ġassist ance +ev in +Ġdat abase +Ġbuild ings +Ġclass ic +Ġth inks +ĠOh io +P r +ug g +Ġfe e +p an +Ġeffect ively +Ġfac ility +Ġbe ar +Ġch apter +Ġdog s +ĠCol umb +Ġl atter +it ial +Ġad mitted +T V +ĠGe org +Ġpost s +\ \ +Ġlawy er +Ġequ ival +Ġm and +Ġcontro lled +ĠW alk +ĠAnd rew +Ġmen u +am ental +Ġprotect ed +v a +Ġadminist r +or al +Ġre in +ĠS ar +Ġamount s +Ġn ative +ĠM oon +Ġrep resents +Ġab andon +Ġcarry ing +Ġt ank +m ary +Ġdecl ared +T ube +Ġh at +Ġpun ish +el lect +m es +Ġun iverse +ĠR od +ph y +Ġinf rastructure +Ġ5 1 +Ġopp osed +ow nt +c a +ĠM ake +Ġhard ware +Ġco ffee +R el +b al +w orld +ĠS af +ĠSe a +in als +Ġown ed +Ġh all +ers ion +Ġdescrib e +ĠP ot +Ġport ion +Ġat mosp +Ġgovern ments +Ġdep ending +Ġoff ense +Ġtr ick +aw a +ĠL ine +ĠV is +ĠH ard +ĠOr ig +ĠCl ick +Ġdes k +ĠVal ley +ĠS ov +Ġmov ies +Ġrem ark +Ġm ail +Ġcons cious +Ġrul ing +ĠR ights +Ġmed ic +he nt +ĠW omen +> < +Ġrepl aced +ĠP rem +ĠTh anks +Ġre new +ĠB all +if orm +Ġsh ots +C omm +Ġar med +Ġconst ant +Ġt aste +Ġreal ized +Ġbu ff +Ġm o +Ġeffic ient +M ost +or ation +if ies +Ġcommun ication +Ġfl ood +Ġconsequ ences +Ġany way +ig g +ĠG M +ĠTh ank +Ġ iron +Ġev olution +ĠC op +tw itter +Ġ9 5 +Ġrelationship s +ad el +ĠYou ng +Ġpropos al +ay ers +uild ing +ĠH ot +OR E +c os +Ġcoll abor +P G +ax y +Ġknow ing +Ġsupport s +ow ed +Ġcontrol s +Ġmere ly +um er +Ġath let +Ġf ashion +p ath +Ġg ift +Ġer a +AN D +Ġkind s +ĠKore an +Ġleg it +ul ous +Ġess entially +Ġthe rap +n ic +Ġsuff ered +Ġh ur +Ġprom ise +Ġex cess +Ġover w +Ġpr ime +ĠH ouston +er ry +ĠM s +R S +201 2 +Ġst ores +ĠO lymp +Ġj ourney +Al though +S ub +ĠE duc +ĠCh apter +Ġrequest s +Ġconsum ers +Ġt iny +Ġis ol +ĠF air +b a +ĠY OU +Ġcr ash +ce ler +Ġemot ional +Ġgood s +Ġelect ed +Ġmod er +ĠLin ux +Ġbl ocks +Ġis land +ĠSoc iety +Ġelect ions +Ġbroad cast +Ġche ap +Ġn ations +Ġse asons +4 00 +Ġwas te +ĠS at +Ġfield s +em ploy +Ġprof ile +Ġauth ors +AL L +ĠG ra +w est +ĠT y +Ġdeath s +Ġv acc +Ġfor med +Ġd u +Ġon going +ĠMuslim s +el f +ig ure +Ġass ume +ĠUkrain e +w ater +Ġco ast +Ġvot ed +g or +ĠA S +ĠMich igan +az a +ĠAr m +i ro +Ġf lex +as ters +' ' +Ġwel come +ar l +Ġloc ations +ig ation +ĠF il +Ġbu ying +Ġarch itect +Ġhard er +ĠC ub +Ġinter face +Ġrestaur ant +Ġdisco ver +Ġex ceed +Ġfav our +ger y +Ġd uty +Ġp itch +ad or +ĠM ach +b oy +Ġrespond ed +Ġext ended +her s +M any +ra id +if er +ĠIn s +S er +Ġmed ium +s he +ĠS ports +Ġmag azine +ut ation +Ġlim its +ĠG all +Ġex ternal +raz il +Ġyoung er +t le +Ġrem ind +ĠC ON +Ġimmedi ate +Ġh idden +Ġvol unte +Ġsim pl +od cast +Ġph ase +d r +Ġpl ot +Ġexp osure +R I +og rap +v in +an ish +ĠAc ad +ĠEng ine +Ġexp ansion +ĠP ay +Y our +Ġpus hed +ĠE ll +ĠHe ad +Ġmarket ing +ĠA C +k et +Ġh its +Ġg ro +ĠA ge +ĠSc ot +] [ +Ġst im +Ġi Phone +Ī Ĵ +Ġn arrow +ĠGet ty +ĠTur key +Ġperfect ly +Ġen able +ut ch +Ġprec ise +Ġreg ime +Ġsh if +Ġcomp ens +g un +d iv +Ġch osen +ĠK en +An y +Ġtre es +Ġrecomm ended +ĠR en +u able +ĠH T +F ollow +E G +ĠH and +ĠK enn +Ġarg uments +Ġex ists +Ġb ike +ĠCons erv +Ġbre aking +ĠG ar +Ġc razy +Ġvirt ual +ay lor +ix el +Ġ19 80 +Ġper mission +ĠSer ies +Ġconsum er +Ġclose ly +c alled +Ġ5 4 +Ġhop es +Ġar ray +ĠW in +ĠLab our +Ġsp ons +ĠI re +Ġp ow +Ġread ers +Ġemploy ment +Ġcreat ure +Ġresult ing +Ġaccur ate +Ġmom ents +Ġarg ued +Ġp ed +D uring +Ġ5 3 +ĠT al +Ġs ought +Ġsuff ering +Ġ icon +le e +Ġ( $ +al ian + ° +Ġp ra +Ġbon us +( " +k o +Ġact ing +D E +f all +Ġcompar ison +Ġsm ooth +ĠN AS +u pp +ĠJose ph +ep ing +ĠT ake +ĠM id +Ġs ending +f ast +ĠF all +Ġdeal ing +us er +ĠOr gan +C o +Ġatt ached +Ġse es +% . +Ġtyp ical +AR T +Ġfind s +ĠAs ia +um in +ĠC ore +ĠE nt +in ent +u ce +ĠBl ood +ĠN ever +Ġem ails +Ġhigh light +Ġconf ront +at us +ut ed +Ġun us +Ġtop ic +ĠAd am +Ġb le +at i +Ġunder stood +S et +st ruct +T P +Ġm ob +a a +ĠSt art +pect ed +se ll +Ġded icated +ĠC A +u an +Ġsong s +esc ription +Ġte ch +Ġr ape +Ġas ide +Ġgr ant +Ġ5 6 +s ub +Ġarg ue +Ġcont aining +Ġsche dule +Ġliber al +Ġpublic ly +Ġheav ily +ĠU t +in er +ĠS ection +ĠC are +we et +l s +D is +âĶ Ģ +ĠF ollow +B ack +ĠI T +Ġb es +j i +ĠH it +est ed +Ġevery body +ĠSw ed +Ġfem in +Ġfac ilities +Ġcon ven +C omp +ĠO S +c ore +Ġan x +Ġdiv ision +ĠC am +ĠSt an +m ates +Ġexpl ore +pl om +Ġsh ares +pl oad +an es +Ġide al +et ers +ĠB ase +Ġpl astic +Ġdist inct +ĠNet work +ĠSe attle +Ġtrad ing +ens us +int end +Ġex hib +Ġinit ially +ĠF ood +Ġthous and +ĠBus iness +act er +Ġpar agraph +Ġrough ly +Ġw ww +Ġcreat ive +ĠCon f +Ġconsum ption +Ġfil ms +ag an +Ġob tain +Ġt all +Ġt or +Ġacknow led +Ġg rown +al o +K E +Ġ4 00 +end ers +t aining +U G +Ġsu icide +Ġwat ched +ĠL ist +al i +re hens +Ġsurround ing +Ġp ip +Ġf lying +ĠJ ava +ord an +Ġserv ing +in ations +p ost +Ġsh o +A v +Ġj ail +z y +Ġ199 9 +Ġ< / +Ġliter ally +ĠS ir +Ġexp osed +Ġl ies +st ar +Ġb at +Ġear ned +ĠD ig +Ġspec ified +ĠSe ason +Ġdeg rees +Don ald +Ġcent re +Ġsh aring +Ġwin ter +ĠC O +C he +Ġ Î +M P +Ġun w +Ġfew er +ĠM ir +Ġsomew here +ĠK ey +Ġattack ed +ĠK ir +Ġdom ain +Ġstrong er +Ġ9 9 +Ġpen alty +I d +Sc ript +Ġdecl ined +Ġne ck +Ġfra ud +Ġcur rency +Ġr ising +R C +â̦ â̦ +H z +Ġt ab +Ġtal ent +n am +ĠN BA +Ġvill age +Ġleg s +ĠN ext +E d +Ġac id +Ġhy d +8 00 +Ġinvol ving +ĠIm age +ĠBe fore +F l +Ġyes terday +S ource +Ġterror ist +Ġsu p +Ġsy nt +ĠSaud i +Ġw est +Ġr u +b urg +Ġvis ible +Ġstru ck +r ison +Ġaw esome +Ġd rawn +Ġansw ers +ĠG irl +ĠR am +Ġthreat s +Ġdef eat +os it +Ġv ent +atur ally +Americ an +end a +ĠH oly +Ġr um +% , +c ase +ĠHist ory +ĠYou Tube +Ġsit uations +ĠD NA +S te +Ġsa ved +It em +Ġrec ip +olog ist +Ġfac ed +Ġel ig +O nce +ĠL i +u h +Ġmist ake +ĠDiv ision +ĠB ell +Ġsympt oms + ® +Ġdom in +Ġfall ing +Ġend ing +as hes +Ġmat ches +ĠOn line +Ġexplan ation +D ef +red it +Ġany more +ĠT otal +ĠF OR +us hed +Ġlet ters +Ġris ks +ĠO K +Ġreported ly +: \ +Ġpl ate +Ġsubject s +Ġattempt ed +if ier +ian a +Ġunlike ly +ĠTh ough +um a +ĠIn vest +ĠPr in +ic an +ĠD ar +ĠColor ado +au g +Ġve get +a os +ri a +Ġshe l +Ġmark ed +Ġ( ) +Ġsp r +p o +ĠL ink +Ġdef e +ĠJ r +Ġthem e +Ġpass ion +ĠP en +Ġinf o +iz er +Ġsh it +ĠC ivil +ap se +c re +Ġpo ly +Ġcomp onent +ĠChar les +ĠIre land +ĠPro v +Ġdo ctors +Ġgr anted +Ġpain t +Ġhon or +Ġsm oke +Ġpay ments +Ġprim arily +ĠKing dom +r ich +ate ll +Ġde als +Ġsched uled +Ġfund amental +Ġprote in +Ġnewsp aper +Ġcl ients +yth on +ĠD ate +h us +Ġfeed back +Ġstret ch +Ġc ock +Ġhot el +ĠQue en +Ġsu gar +Ġj u +Ġmil k +Ġappro val +ĠL ive +Ġequival ent +ef ully +Ġins ert +z ona +Ġext ension +d ri +J ohn +Ġacc omp +S m +ĠF und +Ġconst antly +Ġ` ` +Ġgener ated +ĠA ction +ĠP sych +ĠT ri +Ġrecogn ize +Ġv ary +ph a +ĠR a +d f +et ch +ĠSov iet +Tw o +Ġpattern s +Ġprof ession +an ing +T ime +ĠL im +Ġcol ors +ĠA z +ĠT R +Ġinf ect +Ġphen omen +Ġshe ll +Al so +Ġput s +Ġdel ivery +Ġbro wn +Ġprocess ing +Ġlight s +ess age +ĠBro ok +ĠA ud +l ation +Ġindust rial +L ike +ĠB razil +rou s +ES S +ĠL uc +Ġsome how +Ġ8 5 +Ġpro port +Ġpolit icians +Ġindic ate +Ġh ole +Ġtechn iques +Ġcompet itive +Ġph r +Ġv o +ist ent +ĠD ream +Ġcamp us +Ġaspect s +Ġhelp ful +Ġsh ield +or se +Ġtrig ger +m al +Ġ5 8 +Ġt ort +Ġperson ally +Ġt ag +Ġkeep s +ĠV ideo +Ġben ch +Ġg ap +a ire +Ġe ast +Ġrec overy +per ial +Ġprof it +ĠM ic +Ġ5 7 +Ġcol on +Ġstrong ly +st yle +Ġalleg ations +h an +Ġrep orters +j o +r ine +arg et +and al +Ġ0 3 +Ġfl ash +tr ans +Ġstr ict +Ġpark ing +ĠPak istan +Ġl i +Ġwe ird +ĠE ric +Ġreg ions +ĠJ un +Ġint ellect +ĠW H +od ing +rib utes +up id +ĠT it +Ġf inger +or ia +Ġe lev +ĠF ield +Ġcon clusion +; ; +Ġfeel ings +Ġext ensive +Ġm ixed +Ġne uro +v y +Ġhar ass +ĠC irc +ou ch +Ġterrit ory +Ġsuccess fully +M ar +Ġing red +Ġoverw hel +Ġl ayer +V iew +Ġall ies +ill ance +ĠTh ree +Ġb unch +Ġnorm ally +Ġnet works +Ġsac r +ĠC IA +b les +Ġch ose +Ġopp onents +Ġregard less +Ġfr anch +Ġpre f +ĠP o +Ġbr idge +ann a +ĠSil ver +Ġw age +p age +ri or +Ġrad ical +ĠL ittle +Ġman ip +Ġsecret ary +Ġg ang +D R +F A +Ġdec ent +ĠSp irit +Ġun cle +ĠDevelop ment +Ġinvest ors +Ġwall s +Ġpub lish +Ġgener ate +iss ions +c ar +Ġprom ote +Ġcut ting +Ġche st +Ġdrink ing +Ġcollect ed +Ġ7 2 +Ġhop ing +Ġem br +gor ith +Ġwar ned +Ġinstruct ions +O G +ĠD id +ĠAg ency +Ġg ear +Ġcritic ism +ĠF urther +Ġut il +ann y +R ed +Ġcoun sel +ĠAs ian +Ġredu ction +p ool +Ġteach ing +Ġdeep ly +i y +Ġestim ates +Ġcho ices +Ġperman ent +in em +ke l +Ġf asc +p se +f ile +ĠL ow +ĠP erson +Ġt ournament +st al +Ġm el +U ST +ĠR ay +az i +V al +Ġcont ained +ĠH olly +Ġw ake +Ġreve al +Ġprocess es +ĠIS IS +Ġ0 9 +Ġbl ind +Ġste el +ĠB ad +Ġcare fully +app y +ro it +Ġg aming +Ġhous es +ĠC oll +Ġtr uck +er m +Ġsc ored +Ġocc as +ret urn +b ound +v ar +Ġsh arp +Ġaf raid +ĠE X +am ber +c ific +Ġsche me +N C +ĠPol it +Ġdecl ine +Ġ199 8 +Ġpus hing +Ġposs ession +Ġpriv ile +Ġteacher s +Ġy ield +H A +ĠDav is +it led +#### #### +Ġr ig +ĠD aniel +ac on +Ġh ide +ut en +Ġcolle agues +Ġprin ciples +Ġl oud +Ġs in +ĠDem on +Ġst one +Ġ0 2 +Ġt aught +Ġter rible +Ġst uck +ĠPol icy +te en +Ġimplement ation +ĠB BC +ĠAP I +Ġwhe el +all as +Ġch ampions +ol ars +play er +Ġrepeated ly +ĠSt ill +Ġlik es +ast y +es ter +ĠCath olic +R L +Ġb ath +Ġno ise +t itle +Ġn orthern +P art +Ġmag n +Ġf ab +ĠAs h +Ġdis pl +Ġtick et +Ġm urd +Ġalong side +ĠMus ic +Ġr iver +ĠSte el +ĠC L +ĠPl ayer +ĠM ult +ow ing +re p +s ize +Ġt ur +ĠGeorg ia +isc al +ra ction +Ġc able +Ġ5 9 +Ġw ins +Ġup coming +Ġsurv ive +Ġins pired +ĠEduc ation +Ġstat istics +ĠF oot +iam i +Ġy ellow +ĠP age +. - +ĠH as +Ġur ban +Ġa x +es sel +\ " +Ġquarter back +Ġreg ister +ĠLab or +Ġab ilities +ĠF amily +Ġvar iable +ĠPr ice +Ġcont em +Ġth in +ĠE qu +d ata +Ġg otten +Ġconst it +Ġas ks +Ġt ail +Ġexc iting +ĠE ffect +ĠSp anish +Ġencour age +ins on +ĠA h +Ġcommit ment +C S +Ġr ally +Ġ: : +Ġsubs id +Ġsp in +Ġcapt ured +201 8 +Ġinn oc +Ġalleged ly +ĠC ome +Ġart ists +ĠN umber +Ġelect ronic +Ġreg ional +ap es +Ġw ra +Ġmy th +pr ise +ĠM iller +ĠC reat +ĠEp isode +b ell +Ġdirect ed +Ġext ract +Ġs orry +Ġv ice +ag ger +ĠSu pport +Ġ6 6 +ĠI ron +Ġwonder ful +Ġg ra +N et +ion e +E ng +Ġsh ips +ik es +ĠK evin +it ar +Ġactiv ists +tr ue +ĠAri zona +ent h +ĠDes pite +ĠS E +Ġha bit +ern el +Ġin qu +Ġab ortion +Ġv oid +Ġexpl icit +Ġeng aged +Ġang ry +Ġr ating +Ġfr ag +b ro +ick ing +d ev +Ġwor ried +Ġob ser +Ġap artment +ĠG T +Ġest ate +ĠConst itution +em on +ĠS now +Ġcount y +Ġdis ag +ĠStep hen +Ġimm igrants +w ind +ĠN ations +Ġfol ks +O ut +Ġg all +Ġtarget ed +Ġst ead +ĠB on +ĠL ib +Ġinform ed +Ġ12 0 +ch ain +idel ines +or ough +Ġdri ven +Ġregular ly +Ġbas ket +Ġprinc iple +oc ument +Ġst un +ib ilities +ĠRom an +ĠAb out +Ġal ert +Ġdemocr acy +Ġrepresent ed +H S +c ers +p arent +Ar t +p ack +Ġdi plom +re ts +ĠN O +Ġcapt ure +ĠAd v +Ħ ¢ +Ġannounce ment +ĠL ear +Ġh ook +Ġpur s +ĠS uch +ĠC amer +Ġrefuge es +ĠV e +P ol +Ġrecogn ized +l ib +Ġhad n +A ss +Ġpil ot +us hing +Ġreturn ing +Ġtra il +ĠSt one +Ġrout ine +Ġcour ts +Ġdes per +Ġfriend ly +ĠIt aly +Ġpl ed +Ġbreat h +Ġstud io +N S +Ġimp ressive +ĠAfghan istan +Ġf ing +Ġd ownt +ink ing +ĠR og +i ary +col or +se x +ar on +Ġf ault +ĠN ick +D own +ĠR ose +ĠS outhern +X X +is odes +L ist +6 00 +Ġout come +er r +Ġelse where +Ġret ire +Ġp ounds +ĠGl obal +Pe ople +Ġcommun ications +Ġlo an +Ġrat io +ĠEm pire +Ġg onna +Ġinv ent +D F +Ġ19 70 +ĠComm on +p at +Ġprom ised +Ġd inner +ĠH om +Ġcreat es +Ġoper ate +ver ty +ĠJ ordan +et ime +Ġsust ain +R eg +Ġincred ible +im a +Ġwar rant +Ġm m +A tt +Ġlaw suit +Ġreview s +it ure +ĠS ource +l ights +ĠF ord +Ġ6 3 +g roup +st ore +Ġfeat ured +Ġfore ver +Ġpo verty +ĠP op +ĠC NN +az z +ab is +ach ing +Ġl aid +ĠSu pp +Ġfil ter +en a +ĠCommun ity +Ġcreat ures +u ction +ĠR oyal +Ġassoci ation +ĠCon nect +ĠBr ad +âĸ Ī +l ers +the re +ĠG i +Ġval uable +AC K +ĠT aylor +Ġl iquid +ĠAtt orney +ĠCar l +ĠF inal +ag a +ĠWil son +B ecause +ĠProf essor +ak a +Ġincred ibly +r ance +! ) +R ef +s k +Ġsol utions +Ġatmosp here +Ġbl ame +um es +ĠN ob +C A +um ps +r ical +ĠPut in +ĠD est +or ic +ĠP A +Ġrespect ively +w an +Ġfif th +â Ħ¢ +ĠC ry +Ġgovern or +res ident +Ġpurch ased +Ġh ack +Ġint ense +ob s +Ġorig in +Ġdef ine +Ġcare ful +** * +Ġshould er +Cl ick +Ġt ied +Ġdest ruction +ou red +Ġno body +Ġh o +ĠEx per +Ġt ip +" ; +Ġtechn ique +Ġj ur +ĠP ok +b ow +Ġleg end +Ġacc ord +Ġbus y +ĠInt el +Ġh ang +ak i +. ] +âĢĶâĢĶ âĢĶâĢĶ +Ġsur gery +Ġrep rodu +Ġun iform +Ġscen es +c ode +Ġ6 2 +l isher +ĠH ave +ph ia +Ġcry pt +Ġrec on +Ġsc ream +Ġadop ted +Ġsc ores +N e +ĠIt alian +in cluding +B O +Ġindic ated +Ġent ertain +G u +T ext +i el +Ġtw enty +Ġeng age +off s +ĠPac ific +Ġsm ile +Ġperson nel +Ġto ler +Ġdo ors +Ġt one +Ġmach ines +Ġent ering +ten ance +C O +ĠJer sey +Ġfore st +Ġhor se +Ġcompl aint +ĠSpr ing +y o +ĠPl us +ed ing +ĠRet urn +qu arters +ial s +c ow +Ġacad emic +Ġf ruit +Ġ199 6 +og ether +Ġw ine +Ġpur su +ĠSte ven +Ġlic ens +Wh o +Ġclot hes +re ction +Ġsqu ad +Ġst able +Ġr aw +z ens +St ar +ut ies +anc er +Ġke ys +ĠM u +Ġcompl icated +ig er +ĠTe xt +Ġabs or +Ġ6 8 +Ġfun ny +Ġrel ief +ĠL ew +ĠC ook +Ġch art +Ġdraw ing +G E +Ġmod ule +ĠB ull +I LL +Ġs alt +0000 0000 +il le +Ġres ource +aw ay +adel phia +ĠB ru +Ġ6 7 +Ġsome body +Ġparticip ate +Ġro se +we red +Ġmus cle +Ġcons ent +Ġcontin uing +ĠGuard ian +ĠOr der +reg on +Ġre ar +Ġprov ision +Ġlik ed +ri ent +Ġb ra +Tr ans +Ġmeet ings +Ġto x +Ġcon vent +Ġaut o +Ġrec ording +ĠSo ft +00 1 +ĠR oll +Ġprogram ming +Ġp ic +Ġprov ed +Ġst ab +ĠA st +Ġca ption +ul ating +ĠAtt ack +Ġnew ly +Ġ199 7 +f r +Ġdis cipl +ĠGree k +Ġed ition +ĠDo es +ĠB ox +if le +ack et +Ġpass es +Ġgu est +Ġac celer +it als +U D +Ġaut hent +ĠR est +ov al +t a +u ine +Ġarm or +ĠT own +Ġcomp at +Ġinc hes +Des pite +Ġass ign +he rent +Ġprep are +ĠM eg +oc key +Ġdep ends +Ġtrack s +w atch +Ġl ists +ĠN orthern +Ġal ter +re c +ĠE astern +Ġcond em +Ġevery where +? ' +Ġaff ili +Ġf ought +": {" +Ġm ac +it arian +Ġsc ope +ĠA L +aw s +ar ms +Ġqu e +Ġenjoy ed +nes ota +Ġagg ressive +ĠSt ory +ĠI V +Ġrec ipe +Ġrare ly +ĠMed ical +val ue +ang el +ay ing +omet hing +Ġsub section +Ġs outhern +Ġfrequ ency +re te +roll ed +ult s +ĠN ic +Ġbeh alf +Ġsequ ence +ab et +Ġcontrovers ial +Ġcomp rom +Ġwork er +Ġmain ly +Ġal gorith +ĠM ajor +or ce +g ender +Ġorgan ized +Ġf ake +Ġconclud ed +ĠE D +ĠEx ec +r age +Ġch ances +ber ry +ĠTr ad +Ġconfig uration +Ġwithd raw +Ġf ro +ud es +ĠBro ther +ĠB rian +Ġtri es +Ġsam ples +Ġb id +ĠGold en +Ġphot ograph +if est +ĠD O +ĠPar liament +******** ******** +R em +Ġcont est +Ġsign ing +p x +ĠZ eal +âĶĢ âĶĢ +E ar +Ġex it +Be fore +ĠCor por +n ull +mon th +Ġrac ial +ott ed +ĠV eg +ĠRe uters +Ġsw ord +ps on +ĠRom ney +a ed +Ġt rib +Ġin ner +Ġprot ocol +ĠB i +ĠM iami +ever al +p ress +Ġsh ipping +ĠAm endment +ĠHow ard +con nect +ĠD isc +ĠJ ac +iam ond +ĠThere fore +s es +ĠPrin cess +ĠUS B +ĠAn th +Ġsurve illance +Ġap olog +Ġ6 1 +ow a +Ġf ulf +j s +Ġl uck +ust ed +Ġ § +n i +Ġant icip +em an +Ġwin ner +Ġsil ver +ll a +ic ity +Ġunus ual +Ġcr ack +Ġt ies +e z +Ġpract ical +Ġprov ince +ĠPl ace +Ġprior ity +IC E +Ġdescrib es +Ġbr anch +F orm +ask a +miss ions +b i +Ġp orn +ĠTur k +Ġent hus +Ġf ighters +Ġ0 8 +ĠDet roit +Ġfound ation +av id +A re +Ġjud gment +cl ing +Ġsol ve +ĠDes ign +W here +hes is +ĠT ro +a fter +Ġne utral +ĠPalestin ian +ĠHolly wood +Ġadv is +ĠN on +y es +ol is +Ġrep utation +Ġsm ell +Ġb read +ĠB ul +ĠBe ach +Ġclaim ing +Ġgen etic +Ġtechn ologies +Ġupgr ade +row s +Ġdevelop er +ĠJ osh +ĠDis ney +erv ed +ip al +Ġun ex +Ġbare ly +t hen +ĠP ub +Ġill ness +et ary +ĠB al +Ġp atch +Ġbut t +Ġst upid +ĠD og +ĠD allas +f ront +ie ce +Ġprot ests +Ġch at +oen ix +Ġw ing +Ġpar liament +Ġ7 7 +ose xual +Ġre nder +pt ions +ĠCo ast +os a +ĠG reg +h op +ĠMan agement +Ġbit coin +Ġrec over +Ġincor por +or ne +ĠUs ing +Ġpre ced +Ġthreat ened +Ġspirit ual +ĠE vent +ĠF red +Ġadvert ising +Ġimprove ments +ĠC ustom +Ġer rors +Ġsens itive +ĠN avy +Ġcre am +L ook +Ġex clusive +Ġcomp rehens +Ġde leg +Ġcon ce +Ġrem em +Ġstruct ures +Ġst ored +N D +Ġ1 000 +U P +ĠB udd +A F +w oman +ĠAcad emy +ð Ł +se a +Ġtem porary +Ab out +es ters +Ġtick ets +Ġposs ess +in ch +o z +Ġl a +Ġcontract s +Ġun p +Ġc ig +ĠK at +ult ural +as m +Ġmount ain +ĠCapt ain +St ep +m aking +ĠSp ain +Ġequ ally +Ġl ands +at ers +Ġreject ed +er a +im m +ri x +C D +Ġtrans action +g ener +less ly +Ġ| | +Ġc os +ĠHen ry +Ġprov isions +Ġg ained +Ġdirect ory +Ġra ising +ĠS ep +ol en +ond er +Ġcon sole +in st +Ġb om +Ġunc ertain +1 50 +ock ing +Ġmeas ured +Ġpl ain +Ġse ats +Ġd ict +S L +af e +Ġest imate +iz on +at hered +Ġcontribut ed +Ġep isodes +omm od +G r +AN T +Ġ6 9 +G ener +Ġ2 50 +vious ly +rog en +Ġterror ism +Ġmove ments +ent le +oun ce +ĠS oul +Ġpre v +ĠT able +act s +ri ors +t ab +Ġsuff er +Ġn erv +Ġmain stream +ĠW olf +Ġfranch ise +b at +Ġdem ands +Ġag enda +Ġdo zen +Ġclin ical +iz ard +ĠO p +t d +Ġvis ited +ĠPer haps +Ġact or +Ġde lic +Ġcont ribute +Ġin ject +ĠE s +ac co +Ġlist ening +Ġcon gress +epend ent +Ġprem ium +Ġ7 6 +ĠIr ish +Ġass igned +ĠPh ys +Ġworld wide +Ġnarr ative +ot ype +m ont +b ase +ĠB owl +ĠAdminist ration +Ġrel ation +ĠE V +C P +Ġco vers +Ġ7 8 +Ġcert ific +Ġgr ass +Ġ0 4 +pir acy +ir a +Ġengine ering +ĠM ars +Ġun employ +ĠFore ign +st ract +Ġv en +Ġst eal +Ġrepl ied +Ġult imate +Ġtit les +d ated +Ġj oy +a us +Ġhy per +ak u +Ġoffic ially +ĠPro duct +Ġdifficult y +per or +Ġresult ed +rib ed +l ink +wh o +~~ ~~ +ĠSpe ed +ĠV iet +W ind +ĠBar ack +Ġrestrict ions +ĠSh are +Ġ199 5 +ition ally +Ġbeaut y +op t +Ġm aps +ĠC R +ĠN ation +ĠCru z +W ill +Ġelectric ity +Ġor g +Ġb urd +Ġviol ation +Ġus age +Ġper mit +ĠCh ron +ĠF ant +Ġn aturally +Ġ0 7 +Ġth rown +ĠAw oken +Ġal ien +ĠHer o +ĠK ent +ĠR ick +ri ke +Ġp ace +}, {" +G L +Ġpo ison +ĠT ower +Ġform al +al ysis +Ġgen uine +Ġk il +a ver +Ġproced ure +ĠPro p +intend o +ĠM ain +as ant +Ġtr ained +G ame +ĠL oad +ĠM A +Ġcru cial +Ġle ts +ĠF R +Ġch ampion +1 01 +ĠCon ference +Ġwrit ers +Ġconnect ions +Ġo kay +ir ms +ĠR and +Ġenc ounter +ĠB uff +Ġachie ved +Ġche cks +isc ons +Ġassist ant +Ġwhen ever +ĠA ccess +ĠU r +b in +Ġcl ock +is p +op her +Ġb orrow +Ġm ad +Ġperson ality +on ly +IS T +ab ama +Ġg ains +Ġcommon ly +Ġter r +Ġhyp ot +Ġre ly +Ġt iss +iscons in +Ġrid ic +f unction +ĠO regon +Ġun com +r ating +el and +ĠN C +Ġm oon +ann on +Ġvulner able +ut ive +³³ ³³ +ĠRad io +Ġw estern +se ct +ĠT ony +Ġocc urs +ĠO s +ĠH on +Ã Ń +Ġv essel +ĠScot land +Ġdiscrim ination +Ġsubsequ ent +st ring +Ġfant asy +ĠSh adow +Ġtest im +W E +it i +r as +Ġbo at +Ġmar ks +Ġord inary +Ġre n +Ġrepresent ative +Ġpet ition +Ġ7 3 +Ġad venture +Ġign ore +ĠPhil adelphia +ĠS av +V P +Ġfact ory +Ġt asks +Ġdep ression +z ed +................ ................ +ĠSt orm +Ġc ogn +Ġelig ible +Ġredu cing +v ia +Ġ0 5 +Ġstri king +Ġdoll ar +h o +O V +Ġinstr ument +Ġphilosoph y +ĠMo ore +ĠA venue +Ġrul ed +ĠFr ont +IN E +ĠM ah +Ġscen ario +ĠNAS A +Ġen orm +Ġdeb ut +Ġte a +T oday +Ġabs ence +S im +Ġh am +le ep +Ġt ables +ĠHe art +M I +K e +re qu +V D +m ap +Ġchair man +Ġp ump +Ġrapid ly +v i +Ġsubstant ial +E P +d es +ch ant +ili pp +ĠS anta +ri ers +anche ster +L oad +ĠC ase +Ġsa ving +Ġ7 4 +ĠA FP +er ning +oun ced +ĠMin nesota +ĠW as +Ġrec ru +Ġassess ment +ĠB ron +U E +Ġdynam ic +Ġf urn +ul ator +Ġprop ag +h igh +Ġacc ommod +Ġst ack +ĠS us +w rit +Ġre ven +ĠGod d +ĠZeal and +ab s +Ġbr ut +Ġper pet +h ot +Ġhard ly +ĠB urn +ãĤ ¹ +Ġst y +Ġtrans actions +Ġg ate +Ġsc reens +Ġsub mitted +Ġ1 01 +Ġlangu ages +ugh t +em en +Ġfall s +Ġc oc +Ĥ ¬ +Ġstri kes +p a +Ġdel iber +ĠI M +Ġrel ax +ann els +ĠSen ator +Ġext rem +Ġ} , +ĠDe b +Ġbe ll +Ġdis order +c ut +Ġi OS +Ġl ocked +Ġem issions +Ġshort ly +" ] +ĠJud ge +ĠS ometimes +Ġr ival +Ġd ust +Ġreach ing +F ile +¯¯ ¯¯ +ino is +ĠJ ason +Ġs atell +are t +Ġst ations +Ġag ric +ĠTechn ology +com es +ĠUn fortunately +ĠChild ren +Ġappl ies +ast ed +Ġan ger +ail ability +ĠDam age +Ġcomp are +ĠStand ard +Ġaim ed +ĠB a +angu age +Ġreg ulation +Ġj ury +Ġair port +Ġse ctions +ĠPr ince +em ed +Ġmedic ine +Ġh itting +Ġsp ark +ol ves +Ġad s +St ate +Ġfood s +Ġrepl acement +Ġch icken +Ġlow est +Ġmind s +Ġinvol ves +u i +Ġarr ang +Ġproced ures +ĠWh ich +ivers ary +Ġb ills +Ġimprove ment +Ġin ev +Ġexpect ations +Ġintellect ual +Ġsp aces +Ġmechan ism +2 50 +bre ak +ĠZ e +ĠT enn +ĠB alt +Ġbar rel +Ġstat ic +man n +Pol ice +Ġt ips +Ġhand ling +c us +od ed +il ton +ir y +Ġjournal ists +our se +Ġcom ic +Ġnom ine +IT Y +Ġvers us +Ġlo op +Ġsur f +ĠInd ust +ĠHun ter +Ġbelief s +is an +Ġset up +Ġbre w +im age +Ġcomput ers +f ol +} ," +ĠMed al +Ġtax p +Ġdisplay ed +Ġg rav +Ġf iscal +M on +ĠMos cow +ĠK ong +ĠCent re +Ġcamer as +ĠMr s +ĠH ay +Ġa ver +ĠK elly +p y +Ġrequire ment +Ġent itled +omb ie +Ġsh adow +ag ic +ĠA k +Ġel ite +Ġdiv ided +Ġhead ing +Ġcop ies +Ġloss es +Ġv it +k ed +ĠB ry +Ġan s +ĠSte am +Ġrep orter +he im +ĠIt em +Ġsuper ior +d on +ere nt +à ¶ +Ġtherap y +Ġpe ak +ĠMod el +Ġl ying +Ġg am +z er +r itten +Ġrespons es +Ġconsider ation +ĠB ible +Ġl oyal +Ġinst ant +Ġp m +ĠFore st +à ¼ +Ġext end +Ġconv icted +Ġfound er +Ġconv in +ĠO ak +che ck +Ġsch olars +p ed +Ġover se +T op +c ount +ĠAr k + · +Ġ0 6 +ĠL A +m d +ĠLat in +im ental +ĠC PU +Ġsubst ance +Ġminor ity +Ġmanufact uring +E r +ocol ate +Ġatt ended +ĠMan ager +r ations +Ġappreci ate +om y +GB T +id ency +B L +Ġguarant ee +pos ition +Ġo cean +clud e +Ġhead ed +Ġt ape +Ġlo ose +Ġlog ic +Ġpro ven +Ġsp ir +Ġad mit +is a +Ġinvestig ate +Ġ199 4 +sy lv +ĠL ost +c est +Ġ7 1 +Ġrequest ed +Ġwind ows +ĠPok é +ĠWith out +M et +Ġbehavi our +Ġread er +Ġh ung +ĠKe ep +Ġro les +Ġimplement ed +Ġbl ank +Ġserv es +ĠJ ay +Ġc ited +ĠF riend +prof it +ap on +Ġrep air +it em +arr ass +Ġcrit ics +ad i +ĠF ather +Ġsh out +Ġf ool +Ġ8 8 +Ġprodu cing +Ġl ib +Ġround s +Ġcirc le +Ġpre par +Ġsub mit +Ġn ic +mor row +ãĥ « +U nder +Ġv ital +ater n +Ġpass word +Ġpublic ation +Ġprom inent +Ġspeak s +Ġb ars +Ġde eper +ĠM ill +port ed +Ġw id +Ġbut ter +Ġsm oking +Ġindic ates +K ey +rop ri +ĠF ile +all ing +ast ing +ĠR us +Ġad j +Ġ7 9 +av al +Ġpres um +bur gh +on ic +Ġf ur +Ġpoll s +ik a +Ġsecond ary +Ġmon ster +ig s +ĠCur rent +E vent +Ġowners hip +end ar +Ġarri ve +ĠT ax +Ġn ull +ĠPri v +Ġth ro +Ġk iss +c at +Ġup set +ang le +it ches +ect or +olog ists +ĠGal axy +Ġcor ruption +Ġh int +ent er +ĠH ospital +Ġgreat ly +Ġbeg un +es y +Ġso il +ĠAnt on +Ġmain tenance +ãĥ © +Ġdo zens +Ġhuman ity +ĠAl abama +Ġr om +w orth +ap ing +sylv ania +l ah +Ġg athered +G A +Ġattack ing +f ound +ĠSqu are +Ġar bit +ict ions +ĠW isconsin +Ġd ance +ĠS aint +arch y +Ġbase ball +Ġcontribut ions +Ġliter ature +Ġex ha +per ty +t est +Ġb ab +Ġcontain er +let ter +Ġfall en +Ġwebs ites +Ġbott le +ĠS ac +Ġbre ast +ĠP L +Ġveter an +Ġinterview s +ĠA le +Ġb anned +eng ers +ĠRev olution +in th +Ġconc erning +IV E +Ġexp enses +ĠMatt hew +ĠColumb ia +d s +ist ance +Ġent ity +.. ." +Ġrel iable +Ġpar alle +ĠChrist ians +Ġopin ions +Ġin du +l ow +Ġcompet e +Ġth orough +Ġemploy ed +Ġestablish ment +ig en +ĠC ro +Ġlawy ers +ĠSt ation +T E +ĠL ind +ĠP ur +it ary +Ġeffic iency +âĢ IJ +ĠL y +Ġm ask +Ġdis aster +Ġag es +ER E +es is +ĠH old +Ġcas ual +b led +Ġen abled +ĠEn vironment +ĠInt elligence +i per +ĠM ap +ĠB E +Ġemer ged +is dom +Ġc abin +Ġregist ration +Ġfing ers +Ġro ster +Ġfram ework +ĠDo ctor +et ts +Ġtransport ation +Ġaware ness +H er +Ġattempt ing +O ff +ĠSt ore +ÃĥÃĤÃĥÃĤ ÃĥÃĤÃĥÃĤ +ĠK now +Ġdef ence +Ġsc an +ĠT en +ĠCh air +ĠP H +ĠAtl anta +Ġfuck ing +Ġans wered +b n +ĠK ar +Ġcateg ories +Ġr ational +Ġc ust +Ġrob ot +Ġcorrect ly +Ġg if +Ġgraph ics +m ic +Ġground s +ĠO pp +i ate +Ġdist ributed +Ġsan ctions +Ġchalleng ing +ut o +Ġingred ients +Ġinv ited +Ġfound ed +ĠRe qu +d ed +Ġb owl +Ġbrother s +ĠH a +I O +Ġw ages +im ore +oc ial +Ġse ed +ative ly +Ġaddress es +ĠI owa +ab eth +Ġatt itude +is d +ch ild +Ġm ole +Ġdisco very +y ard +B r +Ġ8 2 +Ġsuppl ies +ell ing +Ġdist ingu +C R +Ġre cept +Ġ vert +Ġsw im +b ec +d oor +ĠY eah +Ġg al +Ġinter act +ĠE SP +ĠC S +amp s +Ġconvin ced +Ġobject ive +Ġdis h +ĠPhot os +l ad +Ġdownt own +o il +in ction +Ġto morrow +ĠC OM +Ġsurv ival +sh ot +Ġsett lement +C ons +ĠX box +int erest +ĠS M +arg o +en ess +Ġeth nic +b ered +M in +ĠT ok +Ġinc ent +ĠComm and +Ġmain tained +Ġbreak s +br idge +at ar +ag g +ĠF inally +un icip +ĠO nt +le ft +Ġrecogn ition +Ġ* / +ĠP ers +Ġwe lf +Ġaddress ed +ĠK ansas +Ġvir us +Ġwhere as +Ġp apers +ram s +ĠMin istry +Ġple asure +Ġacqu ired +Ġd uration +j pg +Ġcal m +ĠN HL +Ġburn ing +Ġfold er +ick ed +ĠP y +ĠIll inois +Cl ass +ĠGodd ess +Ġperform ing +Ġwelf are +j ar +In ter +Ġl in +Ġenh ance +Ġnot ion +f are +yp es +ĠAre a +Ġcann abis +ĠDie go +f s +ĠM anchester +com m +in ite +Ġcover ing +ĠS ound +Ġ19 60 +Ġ8 4 +e lect +z ing +Ġcitiz en +Ġph ones +Ġr aid +Ġign ored +ĠOb ject +Ġu pload +c ard +Ġmod ified +Ġroom s +ia h +r ange +he ast +ach us +Ġsuggest ing +âĢ ĭ +gr ade +E l +Ġclot hing +Ġr h +ĠH an +un ity +en cing +ĠAust in +sec ution +t ra +d em +ĠQ ual +Ġhe aven +Ġst ages +Ġw edd +pl us +ific ial +ĠIm m +ĠH o +iet ies +Ġphr ase +Ġbr ill +act ory +Ġprov iders +Ġsil ence +Ġa er +ĠA I +ĠAd venture +Ġplatform s +Ġdemonstr ated +Ġinter f +ing ton +Ġr aces +Ġgr ade +ult ane +ĠTh rough +f alse +Ġb ow +ĠA B +Ġfl avor +Ġhistor ic +g ov +Ġcol our +Ġview ed +ĠEm ail +el come +Ġinter vention +Ġd iversity +Ġperiod s +Ġre verse +ĠV ery +Ġqu ote +ĠLe ft +th rough +Ġsc rew +Ġland ing +Ġp ill +Ġw et +Ġprot esters +Ġrepe at +av ed +er k +Ġsal ary +ĠPenn sylvania +St ill +Ġmay or +Ġkit chen +Ġfeat uring +ĠM useum +ĠT ournament +ĠF al +Ġser vers +U C +Ġany body +im g +ĠTr ade +ixt ure +the less +Ġfin ance +Ġcl osing +ĠPat ri +i ac +ab el +Ġ> > +or ous +Ġf irms +sc reen +un a +Ġemb arrass +ul se +Ġlet ting +Ġth rew +ile y +Ġch annels +l an +ĠVeg as +Ġse ar +Ġfant astic +ar re +uzz le +ĠD er +Th ose +Ġsw ing +Ġshe et +ind ex +co ver +og an +Ġvari ables +ĠTe ch +Ġsp oken +ac hel +ĠD a +ĠMount ain +Ġload ed +Ġfoot age +vers ion +Ġun l +ĠPh oenix +Ġthrow ing +Ġf iring +Ġtrack ing +Ġw idth +Ġstrugg ling +ro oms +ot ion +Ġmonth ly +ĠSer ver +Ġegg s +op en +M C +Ġ199 3 +Ġh ired +Ġstay ed +ĠAll en +Ġst ro +Ġ9 8 +st ep +ĠTurk ish +Ġfab ric +ist ing +ĠD om +Ġd ates +Ġpr on +Ġbasket ball +Ġl ucky +ĠArab ia +Ġassum ed +est y +Ġaff airs +Ġgl ad +ĠInd eed +ĠF A +ĠW ord +Ġjo ining +if ice +p read +ir ts +ĠSe lect +Ġpop ulations +aw are +Ġn ose +Ġcompl aints +st art +Ġsc oring +Th anks +Ġmin ing +Ġvisit ors +S H +Ġdam aged +Ġcharacter istics +ĠP ent +D C +Ġ8 3 +ĠS ix +r ates +Ġfl ags +ĠB rew +d og +M ark +// // +Ġexec ution +Ġj oke +ph ones +Ġtestim ony +Ġob st +Q L +ĠC ut +Ġstud ied +ĠN intendo +ick et +ĠN BC +Ġl ad +ĠB ra +ĠM oh +Ġk ernel +Ġoverwhel ming +Ġag ed +Ġapplic able +ĠC ond +Ġroad s +ĠBl ock +m ade +od ge +Ġcomm ands +Ġoff ices +vel and +Ġt ut +Ġrece iver +ĠF ro +Ġsho pping +Ġi P +ĠSt re +ĠA BC +Ġentertain ment +ĠB ow +ort ed +M c +Ġread s +gr ad +ĠCol lect +Ġâ ĪĴ +ĠCap ital +eder ation +Ġemploy er +Ġinvolve ment +Ġanx iety +al ia +Ġro of +ĠAm ong +ĠDemocr at +Ġstat s +ĠV ill +Ġconst itutional +Ġrefer ring +itt y +Ġtack le +out ube +Ġback ed +ĠH ong +ĠBro ad +Ġe le +ĠO tt +Ġ199 2 +h our +achus etts +C al +Ġdefe ated +Ġ8 1 +es p +Ġseem ingly +w as +ĠJ enn +ĠK urd +Ġg ene +Ġdisc ount +R et +EC T +( ); +Ġclub s +Ġs id +ĠM arsh +Che ck +Ġp p +ĠE ag +ides pread +Ġbe ings +F T +Ġintrodu ction +ĠCh ange +AR D +Ġ1 10 +ad ows +ier ce +Ġme al +a uthor +ĠB ang +lah oma +Ġr anks +201 1 +?? ?? +m ax +Ġcoll apse +Ġop ens +Ġe cho +Ġs oph +Ġrac ist +Ġenorm ous +Ġw aves +Ġt ap +Ġcomprehens ive +. -- +ĠR oy +Ġfarm ers +Rel ated +a ired +ron es +ĠC rim +Ġproport ion +Ġdesign s +Ġnegoti ations +Ġvirt ually +ĠBat man +Ġwar n +Ġlegit imate +m ate +Ġcon vention +, , +net ic +ĠS D +Ġconsist ently +Ġcompens ation +Ġpunish ment +Ġy e +Ġt ie +ĠB ureau +ir lf +ĠB u +ĠA ren +ĠPh ilipp +Ġkn ife +Ġmem ories +ĠR oss +Ġang le +Ġ8 6 +ĠTh under +Ġre nd +ĠT our +Ġcount s +s ung +ĠIm p +Ġeduc ational +Ġaccess ible +C OM +Ġd rew +y er +G l +am ine +OR T +O B +I B +m aster +Ġtri als +og y +h ar +ĠTr ust +Ġprefer red +irlf riend +ĠN ev +Ġb in +Ġc ow +P age +Ġsign ature +ĠB L +7 00 +Ġret ired +Ġby tes +Ġneigh b +ĠLeg end +Ġdev ast +Ġsuspect ed +is ons +ĠPoké mon +sc ale +Ġcap abilities +Ġre vel +Ġche ese +d y +igr ant +Ġfail ing +b its +ĠHer oes +ĠG host +ĠS cient +Ġappoint ed +ur i +Ġinst itution +Ġexpand ed +g reg +Ġmonitor ing +Ġp odcast +Ġcoal ition +Ġ9 6 +J o +Ġst olen +ĠS ab +Ġstop s +Ġhol iday +Ġint r +C ar +Bl ack +ĠL GBT +Ġwar ming +ĠAnd erson +Ġ8 9 +Ġprodu cer +M ed +Ġaccur acy +ĠMar vel +iz abeth +ĠPat rick +m ony +Ġmin i +ac les +Ġover t +the y +Ġmembers hip +ĠV en +Ġex ch +Ġrem oval +ĠD ave +T Y +m ad +ĠF ind +Ġad equ +Ġe c +Ġte eth +Ġemot ion +Ġper m +Ġsole ly +d b +Ġextra ord +IG HT +c al +Ġgu idelines +Ġd ying +Ġsusp ended +ĠPrem ier +ĠAnth ony +el ve +Ġd ad +ĠE th +ĠFoot ball +Ġabandon ed +Ġ< < +Ġm arch +Ġhor ror +â̦ " +Ġchild hood +Ġcampaign s +Ġl unch +ĠAl bert +bl ock +âĸĪ âĸĪ +ound ing +Ġb one +or gan +ad ers +ĠFl ash +ĠDri ve +Ġton ight +Ġw ars +ĠF L +Ġform ation +con st +New s +Ġcom pe +or ious +ĠSt aff +Ġdiscuss ions +ĠProt ection +ĠJ am +Ġcrit eria +Ġinstall ation +Ġaccompl ish +iz za +Ġpub lisher +Ġresc ue +ĠT ry +U LL +ĠS om +ĠH op +ore t +th s +ord on +Ġp ocket +ĠIn v +Down load +ĠCr ime +Ġb ene +ĠGu ide +ĠAs sembly +Ġparam eters +I E +ĠAlex ander +Ġconc ert +ĠSc he +Ġsh oes +Ġvis iting +Ġrec all +Ġb ub +Ġr ural +Ġconc rete +ĠR os +N ext +R uss +Ġlo ans +ĠSh ield +Ġtre m +hem at +k g +ĠHar ris +is ition +ĠM ove +ĠF C +Ġf ate +ĠCh o +Ġt ired +Ġprinc ipal +h ist +ien ces +ath y +Ġse vent +Ġm ood +Ġstrateg ic +Ġdise ases +Ġfor um +Ġtem por +Ġhead quarters +P ar +ig e +fl ix +Ġgu itar +Ġ9 4 +On ly +Ġrele ases +ro ph +================ ================ +Ġ6 00 +ĠContin ue +ig ate +ĠC rit +sy stem +Ġdis abled +Ġunex pected +ith ub +Ġuncle ar +ĠE st +Ġcontr ad +Ġstrateg ies +vent ures +Ġpass age +AM E +Ġimpro ving +Ġreve als +Ġdecre ase +ov a +Ġann oy +ĠSh ort +ĠL ibrary +Ġcy ber +n ell +ĠH ur +ĠC B +Ġphot ograp +U I +Ġs ed +G e +Ġ8 7 +Ġd iverse +Ġencour aged +Ġcons piracy +Ġbird s +Ġoper ator +Ġhand ful +Ġclass ified +? ) +Ġdram atic +Ġinvestig ators +it o +Ġw idespread +ĠR oom +-------------------------------- -------------------------------- +Ġcollect ive +Ġjournal ist +St ring +Ġtemper atures +il a +Ġgu id +Ġins pect +Ġmiss ile +ĠMay or +Ġman ual +Ġsim ultane +Ġrat ings +Ġsu ck +Ġ9 7 +Ġunivers al +Ġph arm +Ġdis rupt +ian o +A V +Ġf t +Ġstat ist +old s +ĠWalk er +ph p +Ġunder t +ĠL as +ish op +nt il +res hold +ĠWhe ther +M s +Ġden y +ĠCl oud +Ġprov ider +Ġsurv iv +ĠUp date +h as +Ġmist akes +ch arge +pl ed +r ity +Ġn ode +ĠMass achusetts +ool s +lic ation +Ġf ails +em ale +or i +back s +Ġsh irt +Ġ' ' +ĠN AT +Ġwat ers +els on +Ġe ase +Ġsc ar +Ġcont ents +m ind +Ġcont ribution +Ġsh r +Ġhand ed +Ġst ability +Ġtra ve +E m +Ġmir ror +12 3 +Ġwe igh +Ġf iction +ou ver +ist ant +r ition +ĠF ed +Ġphys ically +Ġst ake +ĠArt icle +ĠAr c +ĠLew is +ĠM ind +Ġdemonstr ate +Ġprof its +v ision +om ic +ol id +Ġbatt les +Ġdri ves +Ġeas tern +ĠS ony +!! ! +ar ation +v ard +ĠG L +port ation +Ġ9 2 +Ġlaw makers +Ġprotect ing +ĠE PA +Ġy eah +Ġsh ame +ol ph +e ven +x it +Ġatt ach +Ġrepresent ing +Ġob s +ĠUt ah +iff s +ĠFre edom +à ³ +A K +Ġinc idents +it age +Ġview ers +c d +Ġm ouse +Ġcl ar +Ġaccord ance +Ġb ot +c or +ĠSum mer +he ld +Ġinnoc ent +Ġiniti ative +ol s +________________ ________________ +Ġsp ots +p ace +Ġconvent ional +Ġcorpor ations +Ġblock ed +H D +at tered +Ġref ers +Ġbu ck +ĠDig ital +12 0 +Ġtop ics +T F +Ä ģ +br id +re ement +Ġunder lying +ĠM ember +Ġinvestig ating +Ġpregn ancy +Ġtouch down +ĠB and +ĠCall er +Ġinst ances +P P +w a +G ood +Ġ199 1 +ĠC old +Ġfear s +Ġrem arks +Ĩ Ĵ +at al +Ġm it +Ġexper iments +i pt +Col or +ind u +Up date +Ġ9 3 +A g +Ġ å +anc ouver +B oth +Ġjud ges +Ob ject +Ġst ere +umb n +Ġparticip ation +ĠSt ars +ĠJ ere +Ġweek ly +ĠB an +Ġconvers ations +ĠP itt +u z +ĠIndian a +ĠK ick +Ġinf ection +Ġhero es +Ġsett led +Ġstri p +Ġh al +Ġd ump +ĠS ci +Ġl es +Ġref erences +ĠU RL +ĠBr idge +Ġwant ing +For ce +Ġex clus +Me anwhile +m n +Ġg entle +m aker +sen al +ĠG ro +ou ri +ĠR ain +ĠAll iance +Ġl ift +el a +S D +ĠCle veland +Ġrank ed +Ġst adium +Ġdead ly +ä ¸ +Ġr iding +ar ia +ĠAr mor +Ġdocument ation +ĠGree ce +ree k +Ġl ens +ĠS a +Ġg ross +ĠE mer +ag ers +ĠD ub +ĠR h +ĠAM D +Ġarri val +Ġdes ert +Ġsupp lement +ĠRes p +Ġkn ee +Ġmarg in +f ont +og g +201 0 +ĠP ir +ĠP rom +iv als +Ġint ake +Ġdifferent ly +ug s +Ġb its +clud ed +Ġsearch ing +ĠD u +um ble +Ġfunction al +ĠBalt imore +ĠC ould +Ġdes ired +Ġcirc uit +ĠL yn +ĠG O +ĠF alse +re pre +' : +alt ies +Ġmin im +Ġdro ve +ĠSh ould +Ġh ip +Ġpro s +Ġut ility +ĠN ature +ĠM ode +P resident +o pp +r at +form ance +Ġconcent ration +Ġf ont +ĠB ud +Ġam id +Ġre vers +ĠM L +B ar +Ġinter action +Ġjur isd +Ġspell s +d ep +f il +Ġcivil ians +ut ter +ĠCo oper +ĠBel ow +Ġent rance +Ġcon vert +Ġcontrovers y +ow ered +Ġcontr ary +Ġar c +ĠExec utive +ĠOffic er +Ġpack ages +Ġprog ressive +w idth +Ġreserv ed +v ol +ĠSam sung +Ġprint ed +Ġcent ers +Ġintrodu ce +ĠKenn edy +Ġodd s +Ġsure ly +Ġindepend ence +Ġpass engers +repre ne +ĠBe h +Ġl oves +ĠESP N +Ġfac ilit +Ġident ical +Ġdo ct +Ġpartners hip +con f +ĠH ide +Ġconf used +ĠC ow +M en +Ġw rest +ĠIraq i +Ġh oles +ĠStud ies +Ġpregn ant +h ard +Ġsign als +I X +Ġpull ing +Ġgrad uate +Ġnomine e +D ate +Ġper mitted +Ġâ Ĥ¬ +ĠOk lahoma +St art +Ġauthor ized +Ġal arm +ĠC os +v an +Ġgener ations +c ular +Ġdr agon +ĠSoft ware +ĠEd ward +Ġcontro ller +S en +ge red +ĠV ik +Ġappro ached +Th ank +Ġcan ce +Ġform ula +ĠSm all +Ġweak ness +Ġr amp +it udes +j ud +Ġbrill iant +Ġacc us +s ource +Ġ8 00 +ĠE vil +S w +Ġhom eless +we ek +i ens +r ics +ĠTh ird +T O +Ġorgan ic +Ġpresent ation +ag h +ĠDown load +v ation +Ġas sembly +or able +hold ers +ĠBern ie +ĠHel p +Ġt ong +ĠF ight +Ġbe ach +B ook +ĠL ic +Ġr ush +ĠR ound +ou p +ĠMar x +Ġcalcul ated +ĠDe vil +ĠSar ah +Ġoccasion ally +Ġbul let +Av ailable +g ate +Ġ9 1 +Ġh osp +Ġprom ises +ĠH IV +ĠSt adium +ĠSt ock +ĠCorpor ation +g age +N G +ĠC redit +Ġs ne +ib l +Ġacc um +s uch +Ġterror ists +Ġconscious ness +ĠZ h +Ġdram a +ool a +pir ation +Ġlab our +ĠN in +Ġut ter +Ġdemocr atic +Ġass ass +il ation +Ġg est +Ġab road +Ġmet ab +Ġs orts +Ġfl av +U B +Ġm g +ĠNot hing +ĠO d +Ġmus ical +200 9 +Ġdro ps +oc ated +ater al +0000 00 +Ġg re +Ġequ ality +Ġburd en +Ġv ig +ĠLe ader +-------- ---- +Ġcere mony +Ġf ighter +Ġact ors +Ġ æ +am an +F i +Ġal ign +put er +Ġe lder +ĠN SA +Ġrepresent ation +ĠOnt ario +IT H +usal em +Ġharass ment +itz er +Ġsy mp +Ġbox es +ĠD R +Ġman ifest +at re +Ġ ^ +Ġd ies +le ton +Ġmiss ions +et he +Ġres olve +Ġfollow ers +Ġas c +Ġk m +l ord +am med +Ġsil ent +ĠAssoci ated +Ġtim ing +Ġprison ers +ĠK ings +ĠF ive +Ġtow er +Ġappro aches +Ġprecise ly +Ġb ureau +ĠM other +ĠI ss +Ġkey board +it ual +Ġfund ed +Ġstay ing +Ġpsych ological +Ġm ile +ĠLe on +ĠBar b +w ill +Ġw ider +ĠAtl antic +Ġt ill +ĠR ome +ro t +Ġaccomp an +Ġfl our +ac o +W orld +ĠExp ress +ĠY u +C or +Ġple ased +part y +Ġpoint ing +Ġinf lation +Ġro y +Ġ ), +ain er +Ġwedd ing +orm on +Ġrequ iring +Ġqual ified +Ġse gment +EN D +Ġs izes +e als +Ġcor rupt +ass ador +Ġcele b +Ġdream s +ĠM ess +Ġcheck ing +ĠV ersion +Ġprep aring +Ġact ively +ĠD iff +Ġl ux +ĠW inter +act eria +ĠN E +Ġdep uty +Ġtrans gender +Ġsum mary +Ġin her +er ies +ch ar +ĠY an +Ġkn ock +ĠP ath +Ġl ip +roll er +Ġimp ression +Ġcelebr ate +Ġsl ide +Ġgu ests +Ġcl ip +F S +Ġsav ings +Ġcapt ain +Ġleg acy +ĠDen ver +Ġw ounded +tab oola +AC T +Ġpurs ue +Ġo xy +Ġ q +Ġsem i +ĠN eed +ĠAff airs +Ġob sc +Ġcheck ed +Ġd ual +C ode +ĠM D +le m +ult y +Ġ © +ĠEl izabeth +Ġcent uries +ard ed +s rc +Ġev ident +enn is +at in +Ġunemploy ment +ĠMar io +Ġint im +Ch rist +Ġbi ological +Ġsold ier +ĠAdd ed +Ġm ath +ĠG il +Ġbi as +Ġd ating +ĠO cean +Ġm ice +M us +h ire +ĠT es +Ser ver +lim ited +S ize +Ġmet ers +Ġrock et +es see +Ġcertific ate +ĠIran ian +AS S +Ġgr id +D ec +Ġro lling +com mun +ĠSwed en +b ury +Ġtiss ue +Ġrac ism +ĠL ocal +Ġmyster y +Ġexam ine +Ġst em +Ġs its +Ġhop ed +ot ing +Ġdial ogue +Ġpers u +W atch +l ay +M AN +Ġch ronic +ĠPort land +mark et +ĠS EC +Ġparalle l +Ġsc andal +Ġcar ries +Ġphenomen on +h uman +ack er +ĠO x +Ġretire ment +tain ment +ov ie +ĠG ear +Ġd uties +Ġdo se +Ġsc roll +M B +in f +Ġsa uce +Ġland scape +red dit +ĠChampions hip +ĠRed dit +al id +Ġco in +Ġover s +Ġpost ing +ab out +Ġf el +and y +Ġb old +Ġfocus ing +e ffect +G R +Ġde emed +Ġrecommend ations +Ġste pped +Ġvot er +ĠDe ep +ĠInst agram +Ġmoder ate +ĠMary land +Ġrestrict ed +ĠM B +ĠCh all +Ġto b +Ġc ir +ĠO cc +ĠE ver +Ġcoll aps +IN FO += - +ĠP ict +ĠAcc ount +n c +Ġo ught +Ġex port +Ġdr unk +( ' +Ġw ise +ĠM ort +ne cess +Ġan cest +ĠInc re +Ġfrequ ent +m ir +Ġinterpret ation +Ġdepend ent +Ġco ins +ĠB ol +V ideo +ĠJust in +Ġfat al +Ġcook ing +Ġconf usion +ip her +Ġcust ody +ĠMor gan +om ach +ĠGovern or +Ġrestaur ants +el ing +Ġacknowled ged +Ġthe r +Ġgen es +ch ing +He y +Ġtact ics +ĠMex ican +Ġv end +Ġhe s +qu er +Ġnot ing +ĠCamer on +Ġtarget ing +ro ck +Ġcred its +Ġemot ions +Ġrepresent atives +new s +Ġlegisl ative +Ġrem oving +Ġtweet ed +ĠCar ter +ĠF ixed +Ġfor cing +Ġspeak er +Ġm ales +ĠViet nam +l ined +Ġconcept s +Ġvo ices +o ir +ĠT rib +W he +ĠJer usalem +ĠS ant +Ġc ul +Ġl ady +ĠHaw ai +Ġar ts +ĠIn n +ĠMach ine +ĠEm peror +Ġsl ot +g ly +ĠPro cess +II I +Ġathlet es +ĠTem ple +ĠRep resent +Ġpres c +Ġt ons +Ġgold en +Ġp unch +ĠG R +iver pool +Ġen act +Ġlob by +Ġm os +Ġpick ing +Ġlif etime +Ġcogn itive +E ach +z o +Ġd ub +Ġcons ists +ol n +Ġf estival +am ous +Ġint ellig +w ords +ĠSm art +Ġde le +Ġl apt +Ġmag ical +ĠS in +b us +ur ities +igh th +ĠRub y +ĠS ure +ol ving +Ġj un +O ST +Ġimp osed +Ġast ron +Ġcor rel +ĠN S +ĠK it +ĠF uture +b urn +Ġimm une +oc us +Ġcour ses +ĠSt ring +Ġle an +Ġg host +Ġout comes +Ġexp ense +Ġevery day +Ġaccept able +A h +Ġequ ipped +Ġor ange +F R +ĠD utch +Th ough +ĠR ank +Q U +ĠRober ts +wh at +re nd +Ġdisapp ear +Ġsp awn +ĠL am +o is +Ġdes erve +Ġmin imal +Ġnerv ous +ĠW ould +Ġro ok +ĠV ancouver +Ġres ign +sh ire +ĠW orks +ĠB uild +Ġafford able +ĠG ary +ĠAren a +Ġh anging +Ġimpl ications +ĠS ong +Ġmain taining +Ġgu ards +C ON +Ġder ived +Ġexecut ed +Ġthe ories +Ġqu oted +ĠAnd re +og a +sel ess +in fo +ĠBel g +Ġt ears +ĠSur v +Ġbirth day +ig ious +im mer +Ġspect rum +Ġarchitect ure +Ġrec ruit +arm a +T able +Ġmon sters +ĠG ov +Ġdest ination +Ġattract ive +Ġf oss +ĠMore over +Ġpres ents +TH E +Ġrep ly +pt on +Ġc um +Ġdel ight +Ġaffect s +Ġdon ations +ĠT oy +ĠH im +M ENT +Ġover come +it ched +ĠFant asy +ĠH at +ĠBe ast +b ott +Ġinvestig ations +R un +Ġhun ting +d i +f und +Ġs essions +est yle +Ġport ray +oid s +Y eah +Ġcommun icate +Ġcom edy +ĠY ang +Ġbel t +ĠMar ine +Ġpredict ed +Pl ay +Ġimportant ly +Ġremark able +Ġelim inate +D avid +Ġb ind +V ID +Ġadvoc ates +ĠG aza +im p +D B +ĠN a +ĠSim ilar +I ES +Ġchar ity +v as +m ath +Ġâ ĸ +ok er +nd um +Ġcap s +ĠH al +2 000 +e an +Ġfle et +Ġrec re +R ight +Ġsleep ing +ij ing +k ind +Ġdesign ated +à ¤ +Ġanim ation +ke e +ĠInt rodu +Ġ/ > +Ġdelay ed +Ġtrem end +Ġcur ious +U se +Ġle ct +d am +Ġinnov ation +ĠPoint s +Ġload ing +Ġdisp ute +ct ic +ird s +ĠB Y +Ġn urs +ĠVal ue +ION S +ĠH um +Ġtem plate +m ers +Ġappear ances +ĠEnter tainment +Ġtransl ation +Ġsa ke +Ġbene ath +Ġin hib +Ġe uro +abet es +Ġstud ying +ĠM as +Ġper ceived +Ġexam ined +Ġe ager +Ġco aches +Ġim per +ch i +Ġprodu ces +" ). +ĠEvery one +Ġm unicip +Ġg irlfriend +Ġh ire +ĠV ice +Ġsu itable +op y +Ġin equ +ĠD uke +f ish +f irst +ĠO bs +Ġinter ior +ĠBru ce +ĠR y +Ġanal ys +Ġconsider able +Ġfore cast +Ġf ert +ors hip +ĠD rug +ĠA LL +: " +th ur +ĠM ail +Ġball ot +Ġinst antly +ĠCh annel +Ġp icks +Ġ198 9 +Ġt ent +ol i +Ġcivil ian +b ling +ell o +b u +Ġin ch +Ġlog o +Ġcooper ation +Ġwal ks +Ġinvest ments +Ġimp rison +ĠF estival +ĠK y +Ġleg ally +Ġg ri +ch arg +S l +Ġthreat ening +du ction +fl ow +Ġdismiss ed +ibr aries +c ap +e le +ĠMc G +ĠHar vard +ĠConserv ative +ĠC BS +p ng +Ġro ots +ĠH aving +umb led +ĠF un +\ / +ĠS earch +ple x +Ġdiscuss ing +Ġcontin u +ĠT ai +ĠW ik +F ree +f it +Ġref use +Ġmanag ing +Ġsy nd +ip edia +w alk +Ġprofession als +Ġguid ance +Ġunivers ities +Ġas semb +unt u +F inally +AS E +ĠAut o +ĠH ad +Ġann iversary +L D +ĠD ur +ĠUlt imate +ih ad +pro duct +Ġtrans it +Ġrest ore +Ġexpl aining +Ġass et +Ġtransfer red +Ġbur st +ap olis +ĠMag azine +ĠC ra +ĠB R +gg ed +ĠH E +M ich +b et +ĠL ady +yl um +erv es +Ġme ets +wh ite +L og +Ġcorrespond ing +Ġins isted +G G +Ġsurround ed +Ġt ens +Ġl ane +Ġco inc +h ome +Ġexist ed +ect ed +ĠDou ble +lam m +Ġske pt +ex p +Ġper ception +ie v +ĠBe ing +o ft +Ġadop t +. : +] ; +Wind ows +Ġsatell ite +AS H +Ġinf ant +d escription +ĠMe anwhile +c m +oc a +ĠT reat +act or +Ġtob acco +ĠN orm +em ption +Ġfl esh +Ġj e +o op +ĠHe aven +Ġbe ating +an im +Ġgather ing +Ġcult iv +G O +ab e +ĠJon athan +ĠSaf ety +Ġbad ly +pro t +Ġcho osing +Ġcontact ed +Ġqu it +Ġdist ur +Ġst ir +Ġto ken +D et +ĠP a +Ġfunction ality +00 3 +s ome +Ġlimit ations +Ġmet h +b uild +con fig +N T +re ll +ble m +ĠM om +Ġveter ans +ĠH u +Ġtrend s +are r +ĠG iven +ĠCa ption +m ay +AS T +Ġwond ering +ĠCl ark +n ormal +Ġsepar ated +Ġdes p +st ic +b rew +Ġrel ating +ĠN ik +ĠF arm +Ġenthus i +g ood +d eb +Ġactiv ist +Ġm art +Ġexplos ion +ĠEconom ic +L ink +Ġins ight +Ġconven ient +Ġcounter part +su pport +ĠV irt +ag en +ĠTenn essee +ĠSim on +ĠA ward +OC K +ĠF igure +Ġoverse as +Ġpr ide +ĠC as +n ote +m g +C urrent +Ġdispl ays +cont ent +Ġtravel ing +Ġhosp itals +ĠFin ancial +ĠP ast +Ġdefend ant +Ġstream ing +m ble +ĠBer lin +uk i +Ġdist ribut +Ġant ib +Ġch ocolate +ĠCast le +Ġinter rupt +ĠR ow +Ġconvers ion +Ġbug s +ĠR ather +li est +L Y +ĠJe an +com mon +ak h +Ġ1 30 +ot ton +ĠDe an +Ġam endment +Ġgame play +ĠWar ren +od a +Ġhigh lights +Ġir re +ĠNAT O +Ġball s +Ġdemand ing +U RE +ĠL uke +F igure +st op +on ia +z one +iz ers +ĠW R +Ġaward ed +Ġregul atory +ĠH art +ĠS N +pl ing +Ġs our +ĠP ixel +us ive +Ġf et +ĠS ent +Ġautom atic +Ġf er +vern ment +ĠKh an +T ON +f ather +Ġextraord inary +th rop +ĠP ython +ĠG PU +Ġsex ually +Ġdesk top +it ivity +ĠAnton io +Ġo rient +Ġe ars +ob by +ous es +vertis ements +Ġmanufacture rs +ic ient +min ute +Ġconv iction +Ġg arden +p ublic +Ġsatisf ied +f old +O K +Ġin hab +ĠTh ink +Ġprogram me +Ġst omach +Ġcoord in +Ġh oly +Ġth reshold +Ġr het +Ġser ial +Ġemploy ers +ĠEvery thing +ra h +Ġb other +Ġbr ands +Val ue +ĠT ed +ĠPlan et +Ġp ink +ĠFurther more +s a +P E +re ck +ĠUS D +ot te +Ġ& & +Ġland ed +g ets +Ġprodu cers +Ġhealth care +Ġdomin ant +Ġdest ro +Ġam ended +ch ron +Ġf its +ĠSy d +ĠAuthor ity +AT CH +Ġfight s +ĠL LC +Ġ-- - +ĠCor p +Ġtox ic +spe cific +ĠC orn +ĠChe l +Ġtele phone +ĠP ant +Ġmyster ious +aun ch +od ox +med ia +Ġwitness es +ag u +Ġquestion ed +ĠBre xit +ĠRem ember +ene z +Ġend orse +iat ric +ĠId ent +Ġridic ulous +1 10 +Ġpr ayer +Ġscient ist +Ġ19 50 +ĠA qu +Ġunder ground +ĠU FC +m are +ĠL ater +w ich +Ġsubsc rib +Ġhost s +Ġer r +Ġgr ants +ant om +Ġsum mon +ear ly +ĠC lear +ĠPr im +Ġsusp ension +Ġguarant eed +app er +Ġr ice +ĠSe an +ĠSh in +Ġrefere ndum +Ġfl ed +r ust +Ġ3 60 +ter y +Ġsh ocked +B R +ĠO il +ĠAll ah +Ġpart ly +Ġign or +Ġtrans mission +Ġhom osexual +ivers al +Ġhop efully +ãĤ ¤ +Ġless on +L eg +Ġ .. +Y et +t able +app ropri +re tt +Ġbo ards +Ġincor rect +Ġb acteria +ar u +am ac +Ġsn ap +.' " +Ġpar ad +t em +he art +Ġav ailability +Ġw isdom +Ġ( + +Ġpri est +ĠÂł ĠÂł +O pen +Ġsp an +Ġparam eter +Ġconv ince +Ġ( %) +r ac +Ġf o +Ġsafe ly +Ġconver ted +ĠOlymp ic +Ġres erve +Ġhe aling +ĠM ine +M ax +Ġin herent +ĠGra ham +Ġinteg rated +D em +Ġpip eline +Ġapp lying +Ġem bed +ĠCharl ie +Ġc ave +200 8 +Ġcons ensus +Ġre wards +P al +ĠHT ML +Ġpopular ity +look ing +ĠSw ord +ĠAr ts +' ) +Ġelect ron +clus ions +Ġinteg rity +Ġexclus ively +Ġgr ace +Ġtort ure +Ġburn ed +tw o +Ġ18 0 +P rodu +Ġent reprene +raph ics +Ġg ym +ric ane +ĠT am +Ġadministr ative +Ġmanufacture r +Ġ vel +ĠN i +Ġisol ated +ĠMedic ine +Ġback up +Ġpromot ing +Ġcommand er +Ġfle e +ĠRus sell +Ġforg otten +ĠMiss ouri +Ġres idence +m ons +Ġrese mb +Ġw and +Ġmeaning ful +P T +Ġb ol +Ġhe lic +Ġwealth y +Ġr ifle +str ong +row ing +pl an +as ury +â̦ . +Ġexpand ing +ĠHam ilton +Ġrece ives +S I +eat ures +ĠAn im +RE E +P ut +Ġbrief ly +ri ve +Ġstim ul +Ġ`` ( +Ġ __ +Ġch ip +Ġha z +Ġpri ze +ĠTh ings +AC E +ul in +d ict +ok u +Ġassoci ate +ock ets +y outube +St ory +ateg ory +Ġm ild +ail ing +ĠY e +O rig +ĠK a +or ig +Ġpropag anda +Ġan onymous +Ġstrugg led +Ġout rage +AT ED +ĠBe ijing +r ary +Ġle ather +Ġworld s +Ġbroad er +12 5 +id al +ĠBet ter +Ġt ear +E xt +Ġpropos als +Ġit er +ĠSqu ad +Ġvol unt +m i +D id +ĠP u +p in +Ġspeak ers +Ġb orders +Ġfig ured += ' +Ġsimultane ously +aed a +Ġcharg ing +Ġur ged +Ġcon j +25 6 +ĠG ordon +mer ce +Ġdocument ary +Sh are +it ol +ON E +ĠG arden +h att +ĠThom pson +ane ous +ap ore +Ġt anks +Ġless ons +tr ack +Ġout standing +Ġvolunte ers +Ġsp ray +Ġmanag ers +l arge +Ġcamp s +Ġart ificial +ĠR u +Ġb ags +th al +Ġcompat ible +ĠBl ade +Ġf ed +Ġarg ues +F I +Ġunf air +Ġcor n +Ġoff set +Ġdirect ions +Ġdisappoint ed +ĠCon vention +Ġview ing +M E +oc ity +Ġtown s +Ġlay ers +Ġro lled +Ġjump ed +Ġatt ribute +Ġun necess +inc oln +Ġsupp ose +ĠNet her +ch a +Ġbur ied +Ġsix th +B en +ress ing +OU R +Ġw ound +Ġcy cl +Ġmechan isms +Ġcongress ional +ĠE lement +Ġagre ements +Ġdec or +Ġclos est +ĠM it +Go ogle +} } +Ġm ixture +Ġflu id +S ign +ĠSch olar +Ġp ist +ask et +ab ling +Ġrac ing +he ro +ri el +ass y +Ġche aper +b en +Ġvert ical +amac are +ĠRead ing +g ments +Ġhelic op +Ġsacr ifice +ay a +p aren +V A +ĠL es +ĠStud io +Ġviol ations +ĠAn na +ac er +é ¾ +ĠR at +ĠBe ck +ĠD ick +ĠA CT +Ġcomp osition +Ġtext ure +ĠO wn +Ġsmart phone +ĠN A +Ġfor b +im port +Ġdef ending +il st +re r +Ġo h +ĠJere my +Ġbank ing +cept ions +Ġrespect ive +/ . +Ġdr inks +ĠW i +Ġb ands +ĠL iverpool +Ġg rip +ĠB uy +Ġopen ly +Ġreview ed +per t +Ġver ify +ĠCo le +ĠW ales +M O +Ġun pre +Ġshel ter +ĠIm perial +Ġgu i +ĠD ak +Ġsuggest ions +Ġexplicit ly +Ġsl ave +Ġblock chain +Ġcompet ing +Ġprom ising +S ON +Ġsoc cer +Ġconst itution +4 29 +Ġdist ract +ĠU ser +es ides +ĠMet hod +ĠTok yo +Ġaccompan ied +Cl ient +s ur +al og +Ġident ification +Ġinv asion +as ma +Ġindust ries +pp ers +Ġsub tle +ĠUn it +n atural +Ġsurv ived +Ġfl aw +ĺ ħ +ĠH oll +Ġdef icit +Ġtut orial +ĠCh ance +Ġarg uing +Ġcontem porary +Ġinteg ration +for ward +Ġt um +it is +Ġh iding +ĠD omin +ĠT an +ĠB uilding +ĠV in +Ġspokes person +ĠNot es +Ġemer ging +Ġprepar ation +Ġpro st +Ġsuspect s +Ġaut onom +D escription +Ġdeal t +ĠP ear +Ġstead y +Ġdecre ased +Ġso vere +ĠCl in +Ġgrad ually +ors es +ĠW AR +S erv +ãĤ ¢ +h r +Ġd irty +ĠB arn +ĠB C +Ġd il +Ġcal endar +Ġcompl iance +Ġch amber +b b +Ġpass enger +ate ful +ĠT itle +ĠSyd ney +ĠG ot +Ġdark ness +Ġdef ect +Ġpack ed +ass ion +Ġgod s +Ġh arsh +IC K +le ans +Ġalgorith m +Ġoxy gen +Ġvis its +Ġbl ade +Ġkil omet +ĠKent ucky +Ġkill er +P ack +enn y +Ġdiv ine +Ġnom ination +be ing +Ġeng ines +Ġc ats +Ġbuff er +ĠPh ill +Ġtra ff +AG E +Ġtong ue +Ġrad iation +ere r +m em +ĠExpl icit +é¾ į +Ġcou ples +Ġphys ics +ĠMc K +Ġpolit ically +aw ks +ĠBl oom +Ġwor ship +e ger +ut er +ĠF O +Ġmat hemat +Ġsent enced +Ġdis k +ĠM arg +Ġ/ * +P I +Ġoption al +Ġbab ies +Ġse eds +ĠScott ish +Ġth y +] ] +ĠHit ler +P H +ng th +Ġrec overed +ing e +Ġpow der +Ġl ips +Ġdesign er +Ġdis orders +Ġcour age +Ġch aos +" },{" +Ġcar rier +b ably +H igh +ĠR T +es ity +l en +Ġrout es +u ating +F il +N OT +w all +s burgh +Ġeng aging +ĠJava Script +ore r +li hood +Ġun ions +ĠF ederation +ĠTes la +Ġcomple tion +ĠT a +Ġprivile ge +ĠOr ange +Ġne ur +paren cy +Ġb ones +Ġtit led +Ġprosecut ors +ĠM E +Ġengine er +ĠUn iverse +ĠH ig +n ie +o ard +Ġheart s +ĠG re +uss ion +Ġmin istry +Ġpen et +ĠN ut +ĠO w +ĠX P +in stein +Ġbul k +S ystem +ic ism +ĠMarket able +Ġpre val +Ġpost er +Ġatt ending +ur able +Ġlicens ed +ĠG h +et ry +ĠTrad able +Ġbl ast +à ¤ +ĠTit an +ell ed +d ie +H ave +ĠFl ame +Ġprof ound +Ġparticip ating +Ġan ime +ĠE ss +Ġspec ify +Ġregard ed +ĠSpe ll +Ġs ons +own ed +Ġm erc +Ġexper imental +land o +h s +ĠDun geon +in os +Ġcomp ly +ĠSystem s +ar th +Ġse ized +l ocal +ĠGirl s +ud o +on ed +ĠF le +Ġconstruct ed +Ġhost ed +Ġsc ared +act ic +ĠIs lands +ĠM ORE +Ġbl ess +Ġblock ing +Ġch ips +Ġev ac +P s +Ġcorpor ation +Ġo x +Ġlight ing +Ġneighb ors +ĠU b +ar o +Ġbe ef +ĠU ber +F acebook +ar med +it ate +ĠR ating +ĠQu ick +Ġoccup ied +Ġaim s +ĠAdd itionally +ĠInt erest +Ġdram atically +Ġhe al +Ġpain ting +Ġengine ers +M M +ĠM ust +Ġquant ity +P aul +Ġearn ings +ĠPost s +st ra +ãĥ¼ ãĥ +Ġst ance +Ġdro pping +sc ript +Ġd ressed +M ake +Ġjust ify +ĠL td +Ġprompt ed +Ġscr ut +Ġspeed s +ĠGi ants +om er +ĠEd itor +Ġdescrib ing +ĠL ie +ment ed +Ġnow here +oc aly +Ġinst ruction +fort able +Ġent ities +Ġc m +ĠN atural +Ġinqu iry +Ġpress ed +iz ont +for ced +Ġra ises +ĠNet flix +ĠS ide +Ġout er +Ġamong st +im s +ows ki +Ġclim b +ne ver +Ġcomb ine +d ing +Ġcomp r +Ġsignific ance +Ġremem bered +ĠNev ada +ĠT el +ĠSc ar +ĠWar riors +ĠJ ane +Ġcou p +b as +Ġtermin al +, - +O H +Ġt ension +Ġw ings +ĠMy ster +�� �� +ĠUn like +val id +viron ments +ĠAl i +Ġn aked +book s +ĠM un +ĠG ulf +Ġd ensity +Ġdim in +Ġdesper ate +Ġpres idency +Ġ198 6 +h y +IN D +Ġun lock +im ens +Ġhand led +ĠE b +Ġdisapp eared +Ġgen re +Ġ198 8 +Ġdetermin ation +St ream +ik o +ap ters +Ġacknow ledge +J an +Ġcapital ism +P at +Ġ20 20 +Ġpain ful +Ġcur ve +Ġbom bs +st orm +ĠMet al +en cer +ĠF ig +ĠA aron +anc hes +Ġins piration +Ġexha ust +t ains +ash i +Ġdesc ript +Ġr itual +ĠChel sea +Ġpromot ion +ĠH ung +ĠW ard +iv a +ĠE T +Ġto ss +all ow +ĠFranc is +D ep +Ġhapp iness +ĠGl ass +Ġbet a +Ġstreng then +N E +o a +Ġbutt ons +ĠMur ray +Ġkick ed +Qu est +ĠT alk +ĠS everal +ĠZ ero +Ġdr one +ul k +Ġc am +ĠM obile +Ġprevent ing +Ġret ro +ĠA x +Ġcru el +Ġflo at +. ), +Ġfil ing +ĠGr ant +ĠB or +Ġr ib +Ġchampions hip +ĠM erc +Ġsty les +Ġc ake +Ġbuild s +ĠS elf +io x +Ġep ic +oy d +B el +ĠSt ew +. ( +ah u +ĠBe yond +Ġout s +Ġsol o +ĠT ree +Ġpres erve +Ġt ub +AR E +ro c +ĠIm pro +ĠW right +Ġbu nd +Ġtr aged +Ġoccas ional +b ian +Sec ond +r ons +Ġinter actions +form ed +s ing +Ġown s +Ġh ockey +Gener al +Ġlog ical +Ġexp end +Ġesc al +ĠGr iff +ĠC rown +ĠRes erve +Ġsto pping +Ġexc use +sec ond +Ġoper ated +Ġre aches +ĠMal ays +Ġpoll ution +ĠBrook lyn +Ġde lete +Ġhas h +Bl ock +ah a +âĢ ³ +Ġsh orter +p iece +> >> +ĠM ormon +t or +Ġpartic les +ĠB art +ry ption +Ġad min +Ġsqu ee +VID IA +Ġcreat or +iam eter +ic ular +N BC +Ġgrab bed +Ġn odd +Ġr ated +Ġrot ation +Ġgr asp +Ġexcess ive +ĠE C +ĠWh it +Ġinvent ory +ault s +ĠF B +Ġe cosystem +Ġbill ions +Ġvent ure +n amed +Ġdef ender +out e +Inst ead +ir able +W ar +Ġassum ption +Ġb ite +Ġearth qu +t ail +sp ace +Ġgif ts +boy s +Ġinev itable +Ġstruct ural +Ġbenef icial +Ġcompe lling +h ole +erv ation +Ġco at +o j +inc arn +ĠY ears +Ġdetermin ing +Ġrhet oric +Ġbound aries +Ġwh ites +A nt +add y +) - +ra ham +eter min +Ġhar vest +ĠCon c +Ġlapt op +ĠM atch +Ġenjoy ing +cc a +oll ar +Ġtri ps +Ġadd iction +ĠS ak +Ġpow ered +Ġc ous +ĠRuss ians +ie re +Ġret rie +qu ality +Ġdiff er +Ġking dom +ĠL aur +ĠCap itol +Ġcon clusions +ĠAl tern +ĠN av +Ġtrans parent +B ER +G roup +ĠCom plete +Ġinf er +Ġint rig +Ġins ane +R O +oph ob +is en +qu al +Mich ael +Ġm useum +ĠP ope +Ġres et +r ative +f ive +Ġagg reg +itte es +osit ory +Ġcar b +ĠRec ord +Ġdec ides +ĠF ix +Ġexcept ions +ĠCommission er +un s +ĠEnvironment al +Ġlegend ary +ist ence +Ġtun nel +k m +Ġins ult +Ġt roll +Ġsh ake +Ġdet ention +qu es +ĠCh rome +ĠF iles +Ġsub t +Ġprospect s +Ġpro l +re nder +pro of +Ġperform ances +St r +Ġh ref +ern ame +Ġachieve ment +Ġf ut +F ull +ĠLe ban +go ogle +ãĥ Ī +amp a +May be +Ġproject ed +ĠE mb +Ġcol leg +Ġa wards +Ġâ Ķ +G old +ĠBl ake +ĠR aj +if ting +Ġp ending +Ġinst inct +Ġdevelop ments +Con nect +ĠM and +ĠW ITH +ĠPhilipp ines +prof ile +Ġalt ogether +ĠB und +ĠT D +oo oo +amp ed +ip h +Ġste am +Ġold est +Ġdet ection +ul pt +Ġ ç +ĠWay ne +200 6 +f a +Ġcir cles +ĠF u +Ġdon ors +appropri ate +ĠDak ota +j amin +Ġmotiv ated +Ġpurch ases +ĠLouis iana +ĠS pl +Ġgl obe +Ġ10 5 +z ip +c all +Ġdepart ments +Ġsustain able +10 5 +ĠO P +if iers +Ġprevent ed +Ġinc omp +ĠComm ander +Ġdom inated +Ġ » +Ġinvest ed +Ġcomplex ity +Ġin cl +Ġens uring +Ġreal m +yn c +ĠInd ependent +r ained +ĠJ en +ĠFl ight +Ġat he +Ġspec ulation +ĠT E +oc ate +t ic +Ġpl aint +her ry +Ġto y +Ġ1 11 +Ġpl ates +st atus +ĠIs a +Ġdev oted +C op +ĠE S +25 5 +ur rency +M ain +Ġsl aves +Ġpe pper +Ġqu otes +Ġce iling +ĠF ish +Ġtrans formation +Ġfra ction +Ġadvant ages +Ġto ile +Ġstun ning +Ġmo ist +bre aking +s i +ĠL ocation +ĠMed ium +Ġtext s +Ġu gly +Ġb io +. âĢĶ +ĠB ased +Ġtr ains +ĠW ing +ĠAn cient +ĠRec ords +ĠH ope +Spe cial +ades h +ob i +[ / +Ġtempor arily +V er +h u +os er +Ġover night +Ġm amm +ĠTre asury +ĠV enezuel +ĠMeg a +Ġt ar +Ġexpect s +bl ack +or ph +\\ \\ +Ġaccept ance +Ġrad ar +s is +Ġjun ior +Ġfram es +Ġobserv ation +ac ies +P ower +ĠAdv anced +M ag +olog ically +ĠMe chan +Ġsent ences +Ġanaly sts +augh ters +force ment +Ġv ague +Ġcl ause +Ġdirect ors +Ġeval uate +Ġcabin et +M att +ĠClass ic +A ng +Ġcl er +ĠB uck +Ġresear cher +Ġ16 0 +Ġpoor ly +Ġexperien cing +ĠP ed +ĠMan hattan +Ġfre ed +Ġthem es +ad vant +Ġn in +Ġpra ise +10 4 +ĠLib ya +b est +Ġtrust ed +Ġce ase +Ġd ign +D irect +Ġbomb ing +Ġm igration +ĠSci ences +Ġmunicip al +ĠA verage +Ġgl ory +Ġreve aling +Ġare na +Ġuncertain ty +Ġbattle field +ia o +G od +Ġc inem +ra pe +el le +ap ons +Ġlist ing +Ġwa ited +Ġsp otted +ke ley +ĠAud io +e or +ard ing +idd ing +ig ma +ĠN eg +Ġl one +Ġ ---- +ex e +d eg +Ġtrans f +Ġwas h +Ġsl avery +Ġexpl oring +ĠW W +ats on +Ġen cl +l ies +ĠC reek +Ġwood en +Man ager +ĠBr and +um my +ĠAr thur +Ġbureau cr +Ġbl end +ar ians +F urther +Ġsupposed ly +Ġwind s +Ġ19 79 +Ġgrav ity +Ġanalys es +ĠTra vel +ĠV eter +Ġd umb +Ġaltern ate +g al +Ġconsum ed +Ġeffect iveness +.' ' +Ġpath s +ond a +L A +ĠStr ong +Ġen ables +Ġesc aped +Ġ" " +Ġ1 12 +Ġ198 3 +Ġsm iled +Ġtend ency +F ire +Ġp ars +ĠR oc +Ġl ake +Ġf itness +ĠA th +ĠH orn +Ġh ier +Ġimp ose +m other +Ġp ension +ic ut +bor ne +ic iary +. _ +ĠS U +Ġpol ar +is y +eng u +itial ized +AT A +w rite +Ġexerc ises +ĠD iamond +ot ypes +Ġharm ful +on z +Ġprint ing +st ory +Ġexpert ise +ĠG er +Ġtraged y +ĠF ly +Ġd ivid +amp ire +st ock +M em +Ġre ign +Ġun ve +Ġam end +ĠProp het +Ġmut ual +ĠF ac +Ġrepl acing +H ar +ĠCirc uit +Ġthro at +ĠSh ot +Ġbatter ies +Ġto ll +Ġaddress ing +ĠMedic aid +Ġp upp +ĠN ar +ol k +Ġequ ity +M R +ĠHis pan +ĠL arge +m id +D ev +Ġexp ed +Ġdem o +ĠMarsh all +erg us +Ġf iber +Ġdiv orce +ĠCre ate +Ġsl ower +ĠPark er +ĠStud ent +ĠTr aining +Ret urn +ĠT ru +Ġc ub +ĠRe ached +Ġpan ic +Ġqu arters +Ġre ct +Ġtreat ing +Ġr ats +ĠChristian ity +ol er +Ġsac red +Ġdecl are +ul ative +et ing +Ġdeliver ing +est one +Ġt el +ĠL arry +Ġmet a +ac cept +art z +ĠRog er +hand ed +Ġhead er +Ġtra pped +ĠCent ury +Ġkn ocked +ĠOx ford +Ġsurviv ors +b ot +Ġdemon stration +Ġd irt +Ġass ists +OM E +ĠD raft +ortun ate +fol io +pe red +ust ers +g t +ĠL ock +Ġjud icial +ver ted +Ġsec ured +out ing +ĠBook s +Ġhost ing +Ġlif ted +l ength +Ġj er +Ġwhe els +ĠR ange +umbn ails +Ġdiagn osis +te ch +ĠStew art +ĠP ract +Ġnation wide +Ġde ar +Ġoblig ations +Ġgrow s +Ġmand atory +Ġsusp icious +! ' +A pr +G reat +Ġmort gage +Ġprosecut or +Ġeditor ial +ĠK r +Ġprocess ed +ung le +Ġflex ibility +Ear lier +ĠC art +ĠS ug +Ġfoc uses +Ġstart up +Ġbre ach +ĠT ob +cy cle +ãĢ Į +ro se +Ġb izarre +ãĢ į +Ġveget ables +$ $ +Ġret reat +osh i +ĠSh op +ĠG round +ĠSt op +ĠHawai i +ĠA y +Per haps +ĠBe aut +uff er +enn a +Ġproduct ivity +F ixed +cont rol +Ġabs ent +ĠCamp aign +G reen +Ġident ifying +Ġreg ret +Ġpromot ed +ĠSe ven +Ġer u +ne ath +aug hed +ĠP in +ĠL iving +C ost +om atic +me ga +ĠN ig +oc y +Ġin box +Ġem pire +Ġhor izont +Ġbr anches +Ġmet aph +Act ive +ed i +ĠFil m +ĠS omething +Ġmod s +inc ial +ĠOrig inal +G en +Ġspir its +Ġear ning +H ist +Ġr iders +Ġsacr ific +M T +ĠV A +ĠS alt +Ġoccup ation +ĠM i +Ġdis g +lic t +Ġn it +Ġn odes +e em +ĠP ier +Ġhat red +ps y +ãĥ ī +Ġthe ater +Ġsophistic ated +Ġdef ended +Ġbes ides +Ġthorough ly +ĠMedic are +Ġbl amed +arent ly +Ġcry ing +F OR +pri v +Ġsing ing +ĠI l +Ġc ute +o ided +olit ical +ĠNe uro +å ¤ +Ġdon ation +ĠEag les +ĠG ive +T om +Ġsubstant ially +ĠLic ense +ĠJ a +Ġg rey +ĠAn imal +ĠE R +ĠU nd +Ġke en +Ġconclud e +ĠMississ ippi +Eng ine +ĠStud ios +P ress +o vers +ll ers +Ġ3 50 +ĠR angers +Ġr ou +ert o +E p +iss a +iv an +Ġse al +ĠReg ist +dis play +Ġwe aken +u um +ĠComm ons +ĠS ay +Ġcult ures +Ġl aughed +Ġsl ip +Ġtreat ments +iz able +m art +ĠR ice +Ġbe ast +Ġob esity +ĠLa ure +ig a +Wh ich +hold er +Ġelder ly +Ġp ays +Ġcompl ained +Ġc rop +Ġpro c +Ġexplos ive +ĠF an +ĠAr senal +A uthor +ef ul +Ġme als +Ġ( - +id ays +Ġimag ination +Ġann ually +Ġm s +as ures +H ead +ik h +m atic +Ġboy friend +ĠCom puter +Ġb ump +Ġsur ge +ĠCra ig +ĠKir k +D el +medi ate +Ġscen arios +ĠM ut +ĠSt ream +Ġcompet itors +Ù Ħ +ĠStan ford +ĠRes ources +az ed +b age +Ġorgan is +ĠRe lease +Ġsepar ately +Ġha bits +Ġmeasure ments +ĠCl ose +Ġaccomp any +Ġg ly +Ġt ang +ĠR ou +Ġplug in +Ġcon vey +ĠChall enge +oot s +j an +Ġcur s +ĠRel ations +ke eper +Ġapproach ing +p ing +Spe aking +Ġarrang ement +ĠV I +are ttes +Ġaffect ing +Ġperm its +b ecause +Ġu seless +ĠH us +!! !! +Ġdestro ying +Un fortunately +Ġfasc inating +S em +Ġelect oral +Ġtrans parency +ĠCh aos +Ġvolunte er +Ġstatist ical +Ġactiv ated +ro x +We b +H E +ĠHamp shire +is ive +M ap +Ġtr ash +ĠLaw rence +st ick +C r +Ġr ings +EX T +Ġoper ational +op es +D oes +ĠEv ans +Ġwitness ed +P ort +Ġlaunch ing +ec onom +w ear +ĠPart icip +um m +cul es +ĠR AM +ĠT un +Ġass ured +Ġb inary +Ġbet ray +Ġexpl oration +ĠF el +Ġad mission +it ated +S y +Ġav oided +ĠSim ulator +Ġcelebr ated +ĠElect ric +¥ ŀ +Ġcl uster +itzer land +he alth +L ine +ĠN ash +at on +Ġsp are +Ġenter prise +ĠD IS +clud es +Ġfl ights +Ġreg ards +ĠÃ Ĺ +h alf +Ġtr ucks +Ġcontact s +Ġunc ons +ĠCl imate +Ġimm ense +N EW +oc c +ect ive +Ġemb od +Ġpat rol +Ġbes ide +Ġv iable +Ġcre ep +Ġtrig gered +ver ning +Ġcompar able +q l +Ġg aining +ass es +Ġ( ); +ĠG rey +ĠM LS +s ized +Ġpros per +" ? +Ġpoll ing +Ġsh ar +ĠR C +Ġfire arm +or ient +Ġf ence +Ġvari ations +g iving +ĠP i +osp el +Ġpled ge +Ġc ure +Ġsp y +Ġviol ated +Ġr ushed +Ġstro ke +ĠBl og +sel s +ĠE c +,' ' +Ġp ale +ĠColl ins +ter ror +ĠCanad ians +Ġt une +Ġlabor atory +Ġn ons +t arian +Ġdis ability +ĠG am +Ġsing er +al g +ĠSen ior +Ġtrad ed +ĠWar rior +Ġinf ring +ĠFrank lin +Ġstr ain +ĠSwed ish +Ġsevent h +ĠB enn +ĠT ell +Ġsynd rome +Ġwond ered +id en +++ ++ +ig o +Ġpur ple +Ġjournal ism +Ġreb el +Ġf u +bl og +Ġinv ite +ren cies +ĠCont act +Is rael +ĠCont ent +Ġche er +Ġbed room +ĠEngine ering +ĠQue ens +Ġd well +ĠPlay Station +ĠD im +ĠCol on +l r +Ġoper ates +Ġmotiv ation +US A +ast ered +C ore +ĠTr uth +ol o +OS E +ĠMem ory +Ġpred ec +Ġan arch +Ġ19 20 +ĠY am +à ¨ +b id +Ġgr ateful +Ġexc itement +Ġtre asure +Ġlong est +ct ive +Ġdes erves +Ġreserv es +Ġcop s +ĠOtt awa +ĠEgypt ian +ank ed +Ġart if +Ġhypot hesis +: / +Ġpurch asing +Ġlove ly +H P +Ġdiv ide +Ġstrict ly +Ġquestion ing +Ġtaxp ayers +ĠJ oy +Ġroll s +ĠHe avy +Ġp orts +Ġmag netic +Ġinf lamm +Ġbr ush +t ics +â ĪĴ +Ġbott les +pp y +Ġp add +ãĤ ¯ +m illion +Ġdevast ating +Ġcomp iled +Ġmed ication +Ġtw elve +ĠPer ry +Sp ace +im b +y our +Ġle aked +ĠT ar +Ġun ity +Ġinfect ed +Ġtravel ed +ID E +ĠMc Donald +t xt +ĠPr inc +Ġinter ven +ĠTai wan +ĠP ow +Ġbe aring +ĠTh read +Ġz ones +iz ards +un ks +Ch apter +ll or +Ġ · +Ġw ounds +Ġdisc retion +Ġsucceed ed +ik ing +Ġicon ic +C all +Ġscreen ing +ĠM is +ict s +Ġmin isters +Ġsepar ation +Pl ayer +Ġb ip +Ġbel oved +Ġcount ing +ĠE ye +ar ound +ing ing +Ġtable t +Ġoff ence +in ance +h ave +ĠInf o +ĠNin ja +Ġprotect ive +ĠC ass +M ac +ĠQual ity +N orth +Ġ ic +ĠCub a +ĠChron icle +ĠPro perty +Ġfast est +ot os +ĠG erm +OW N +Ġbo om +ĠStan ley +ergus on +Ġcle ver +Ġent ers +m ode +ter ior +ĠS ens +Ġlin ear +AR K +Ġcomp aring +Ġpure ly +Ġsaf er +ĠPot ter +Ġc ups +R T +Ġgl uc +Ġatt ributed +Ġdu pl +ĠP ap +Ġprec ious +Ġp a +iction ary +ĠT ig +ĠTo o +ol utions +st an +Ġrob ots +Ġlob b +Ġstat ute +Ġprevent ion +w estern +16 0 +ĠAct ive +ĠMar ia +h al +N one +ell ar +ĠK B +ĠPart ners +ĠSing le +ĠFollow ing +ang o +ac ious +Ġth ou +Ġk g +Ġinflu ential +ĠFriend s +S ur +ain ted +Ġfor ums +Ġst arter +Ġcitizens hip +ĠE lection +on ge +ot ation +os ph +;; ;; +ut ical +p ur +ere n +Ġaccus ations +bit ious +ab bit +ĠOr d +Post ed +ir k +Ġsens itivity +ic he +ĠAm y +ĠF ab +Ġsum mit +Ġped est +Ġrub ber +Ġagric ultural +Ġcan cel +A E +Ġin aug +Ġcont am +Ġfirm ly +i w +st age +ĠK an +Ġt ier +Ġinv ention +Ġtransl ated +ĠR ules +B ox +Tw itter +ID S +Ġp izza +Ġdeb ug +ĠD rop +v s +Ġh orses +b ig +Ġb oring +Ġh ood +ĠMcC ain +at ched +ĠBro s +Ġsk ip +Ġess ay +st at +ĠLeg ends +Ġam munition +au c +Ġshoot er +Ġun h +Ġsuppl ied +Ġgener ic +ĠS K +ib an +yr ics +Ġ25 5 +Ġclim bing +Form er +Ġfl ip +Ġjump ing +Ġfrust ration +ĠTer ry +Ġneighborhood s +Ġmed ian +be an +Ġbr ains +Follow ing +Ġsh aped +Ġdraw s +Ġal tered +J ack +Ġrecip es +Ġsk illed +we alth +ach i +e lection +Ġbehavi ors +de als +ĠU ntil +F e +Ġdecl aration +mar ks +ĠBet ween +cel ona +Ġres on +Ġbub ble +Am ong +Ġim perial +G S +Ġfemin ist +200 5 +ĠK yle +Ġaccount ing +ĠTe le +ĠT yr +Ġconnect ing +Ġre hab +ĠP red +s im +Ġmeant ime +Ġphys ician +M W +ĠCamp bell +ĠBr andon +Ġcontribut ing +ĠR ule +ĠWe ight +ĠN ap +Ġinter active +Ġv ag +Ġhel met +ĠCom b +f our +Ġsh ipped +Ġcomple ting +ĠP D +PD ATE +Ġspread ing +Ġsc ary +erv ing +ĠG as +Ġfr ank +s chool +Ġrom antic +Ġstab il +R ob +Ġaccur ately +Ġac ute +ĠH ann +Ġsymbol s +Ġcivil ization +ĠA W +Ġlight ning +Ġcons iders +Ġven ue +Ġ × +Ġo ven +ĠS F +h is +Ġn u +ĠLear n +Ġpe oples +Ġst d +Ġsle e +Ġs lic +ĠStat istics +Ġcor ners +ĠB aker +Ġ: ) +ment ation +ol ver +Ġlaugh ing +ĠT odd +ond e +ĠH ills +Ġn uts +ĠW oman +pl ane +Ġl iver +ĠIn side +S orry +Ġagre es +Ġfund ament +ĠF isher +Ġa uction +Ġthread s +gl as +ĠBas ic +ĠN at +Ġlack ing +Ġceleb ration +j u +Ġs illy +E uro +Ġt att +ight y +cont rolled +T est +ĠSing h +Ġr age +Ġrh yth +o ffic +ĠPh antom +Ġhead lines +Ġrespond ing +ĠMor ning +Ġvit amin +Ġboot s +ĠS ite +al in +p i +Ġvir al +ĠU C +D ER +ĠSe x +Ġst ocks +c urrent +Ġch urches +ĠR are +ĠMur phy +Ġden ial +ĠG aming +Ġtou g +Ġn ick +Ġm akers +ĠRon ald +Ġgener ous +ĠD oc +ĠMor ris +Ġtransform ed +ĠN ormal +Ġ10 4 +ĠKick starter +ĠUp on +On line +ĠI RS +Ġw rap +Ġl oving +Ġarri ves +ĠD ue +Ġhe ter +ĠM ade +Ġrent al +Ġbelong s +Ġatt orneys +Ġcro ps +Ġmat ched +ul um +ol ine +10 9 +Ġdis par +Ġbuy ers +ĠCam bridge +Ġeth ics +rou ps +Ġjust ified +Ġmarg inal +Ġrespect ed +win ning +Ġnodd ed +ĠSer ge +ĠForm er +C raft +######## ######## +ĠWar ner +Ġd ash +et e +Ġent ert +ĠE scape +out heast +Ġkn ees +ĠB omb +Ġr ug +P ass +Ġatt itudes +go vernment +ĠPri or +Ġqual ities +Ġnot ification +ĠPh one +l ie +Ġanticip ated +ĠCom bat +ĠBar ry +Ġ198 2 +Us ers +on er +Ġcomput ing +ĠConnect icut +Ġless er +Ġpe ers +ĠC u +Ġtechn ically +Ġsub mission +ĠUn iversal +Ġman ually +our ge +Ġrespond ents +ĠB TC +ĠH ost +Ġf are +ĠB ird +Ġrece ipt +al so +Ġj ack +Ġagric ulture +Ġsk ull +Ġ! = +Ġpass ive +ĠC I +Ġsoc ieties +Ġremind ed +Ġinter ference +B uy +Ġâ ľ +g on +Ġscrut iny +ĠW itch +Ġconduct ing +Ġ ãĥ +Ġexch anges +ĠMit chell +Ġinhab it +Ġtw ist +B D +Ġwhere ver +group on +Ġj okes +ĠBen jamin +ĠR andom +fr ame +ĠL ions +Ġhighlight ed +ĠArk ansas +E nt +Ġp ile +Ġpre lim +g s +mind ed +Ġfel ony +ĠG A +ĠL uck +Ġpract ically +ĠB os +Ġact ress +D am +ĠB ou +Ġvis a +Ġembed ded +Ġhy brid +Ġear liest +Ġsoon er +s ocial +ĠH A +Ġste ep +Ġdis advant +Ġexplo it +ĠE gg +ĠUlt ra +Ġnecess ity +L ocal +ie ge +Ġd ated +Ġmass es +Ġsubsc ription +pl ess +Ġan onym +Ġpresum ably +Bl ue +The ir +asket ball +ĠPhil ip +Ġcom ed +load ed +r ane +Ġref lection +Ch ina +Ġext ends +Ġform ing +Ġund ers +200 1 +Ġgr at +Ġconcent rations +Ġins ulin +Ġsec ular +Ġwh ilst +Ġwin ners +Ad vertisements +Ġdeliber ately +ĠWork ing +Ġs ink +et ics +d ale +Ġmand ate +Ġg ram +Ġvac ation +Ġwarn ings +ri pp +ĠTH AT +Ġcomment ary +Ġint u +Ġa est +Ġreason ing +Ġbreak down +ĠZ ombie +Ġ-- > +ĠPolit ical +c ott +Ġthr ust +Ġtechn ological +Ġdec iding +Ġtraff icking +L ong +W elcome +pr ising +ĠCommun ications +Ġend ors +Ġsw ift +Ġmetab ol +co ins +res a +ĠHT TP +Ġen roll +ĠH appy +us r +int age +Ġ[ " +u ably +ĠM aterial +Ġrepe al +Se pt +k h +ĠMod i +Ġunder neath +ĠI L +sh ore +Ġdiagn osed +ace utical +Ġsh ower +au x +ĠSw itch +ĠStre ngth +Ġj ihad +n ational +Ġtra uma +uss y +on i +Ġcons olid +Ġcal ories +ĠF lynn +ag ged +16 8 +ĠP ink +Ġfulf ill +Ġch ains +Ġnot ably +ĠA V +L ife +ĠCh uck +m us +ĠUr ban +ĠH end +Ġdep osit +ĠS ad +Ġaff air +OR K +ie val +ĠF DA +Ġt rop +ĠOver all +Ġvirt ue +Ġsatisf action +au nd +Ġl un +ĠSw itzerland +ĠOper ation +pro cess +Ġsh ook +Ġcount ies +le ased +ĠCharl otte +1 12 +Ġtrans cript +Ġre dd +p ush +ĠHe y +ĠAn alysis +[ " +Ġaltern atives +ard less +Ġele ph +Ġpre jud +ĠLe af +H aving +ĠH ub +Ġexpress ions +ĠVol ume +Ġshock ing +ĠRed s +Ġread ily +Ġplan ets +ad ata +Ġcollaps ed +ĠMad rid +Ġir rit +i pper +ĠEn c +ĠW ire +Ġbu zz +ĠG P +ash a +Ġaccident ally +ur u +Ġfrust rated +ĠS A +Ġhung ry +ĠH uff +Ġlab els +ant o +ĠE P +Ġbar riers +) | +ĠBer keley +ĠJ ets +Ġp airs +ĠL an +J ames +ĠB ear +Ġhum or +ĠLiber ty +Ġmagn itude +Ġag ing +ĠM ason +Ġfriends hip +umb ling +Ġemer ge +Ġnewsp apers +Ġam bitious +ĠRich ards +atern al +Ġ198 1 +Ġcook ies +Ġsc ulpt +Ġpur suit +L ocation +Ġscript s +p c +Ġarrang ements +Ġd iameter +Ġl oses +am ation +Ġl iqu +ĠJ ake +aret te +Ġunderstand s +ĠZ en +v m +Ġappro ve +Ġw ip +Ġult ra +Ġint end +ĠD I +asc ular +Ġst ays +ĠK or +ĠK l +Ġinvest ing +L a +Ġbelie ving +b ad +m outh +Ġtaxp ayer +ãĥ ĥ +ĠQue bec +Ġl ap +ĠSw iss +d rop +Ġdr ain +ir i +et c +ft en +ĠN ex +Ġst raw +Ġscream ing +Ġcount ed +Ġdam aging +Ġamb assador +cent ury +Ġpro x +Ġarrest s +u v +il ateral +ĠCh arg +Ġpresc ribed +Ġindepend ently +Ġf ierce +ĠB aby +Ġb rave +Ġsu its += > +Ġbas eline +ĠR ate +Ġis lands +Ġ( ( +g reen +ix els +Ġname ly +ĠVill age +th an +am y +V ersion +g mail +ential s +ĠS ud +ĠMel bourne +Ġarri ving +Ġquant um +e ff +rop olitan +T ri +Ġfun eral +ĠI R +ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ +ĠC ob +it ably +Ġt urb +Ġcomb o +Re view +Ġdeploy ment +u ity +ĠB ott +Ġinv isible +Ġrender ing +Ġunl ocked +Ġa qu +ĠVlad imir +Ġp ad +ĠBr ain +ĠLeg acy +dr agon +ĠKurd ish +Ġsound ed +Ġdet ained +ĠD M +g ary +Ġd aughters +Ġdistur bing +uk a +ĠPar ad +Ġt ast +Ġunf ortunate +Ġu l +em in +Ġattend ance +tr l +Ġpar ks +ĠMem orial +ĠAl ice +oth y +gu ard +ĠD ise +ĠSh an +ĠFor um +R ich +Ġshif ted +ue z +Ġl ighter +ĠMag n +Ġc od +S ch +ham mad +P ub +3 50 +ĠP okemon +Ġprot otype +Ġun re +B ase +ĠStud ents +ĠRep ly +ĠCommun ist +Ġg au +ĠTy ler +I Z +Ġparticip ated +Ġsup rem +ĠDet ails +Ġvessel s +ro d +Ġt ribe +ke ep +Ġassum ptions +Ġp ound +Ġcr ude +ĠAv ailable +Ġswim ming +Ġin clusion +Ġadv ances +c ulation +Ġconserv ation +Ġover d +ĠBuff alo +Art icle +ed ge +Ġaw a +ĠMad ison +Ġsid ew +Ġcat ast +ĠK rist +uc le +ĠHigh way +ĠTer ror +Ġactiv ation +Ġuncons cious +ĠSat an +ĠSus an +ill ery +Ġarr anged +i op +Ġrum ors +ur ring +th ink +ĠKe ith +ĠK ind +Ġavoid ing +by n +n ut +ĠSpe aker +r us +n ames +Ġgu ilt +ĠOlymp ics +Ġsa il +ĠM es +lev ant +ĠColumb us +a ft +C ity +S outh +ĠHar vey +ĠP un +S everal +Ġment ally +Ġimp ress +m ount +ĠUb untu +âĢĶâĢĶâĢĶâĢĶ âĢĶâĢĶâĢĶâĢĶ +ĠSuper man +ĠMP s +Ġintent ions +ĠR acing +Ġlike lihood +Ġ2 40 +T otal +Ġto ys +ĠW atson +Ġur ge +L ear +ĠP aper +Ġoccur ring +ĠB eng +ĠC ert +Ġst ones +T im +ĠTw in +z b +ĠD ynam +Ġpolit ician +k ens +ĠEnter prise +UT ERS +Ġab ol +Ġref resh +Ġarbit rary +pe ction +Ġtrou bles +Ġ} ); +t v +Ġpil ots +Ġdist ribute +Ġaud it +Ġp ause +orig inal +Ġr ivals + £ +F ig +T L +ab il +ry ing +L in +ion ed +l on +Ġf ancy +Ġcr ashed +Ġt ract +Ġshe d +Ġcons ume +B ased +down load +in it +Ġvolt age +Int rodu +Ġcondem ned +ĠFin ance +res pect +Ġex cluded +Ġestablish ing +her ic +Ġher itage +Ġspect acular +Ġun st +ĠSnow den +ĠL ane +S an +Ġprotect ions +st ruction +inc inn +Ġmac ro +C ustom +ios ity +Ġes p +Ġfunction ing +Ġm ush +Ġp uzzle +Ġeth ical +M al +Ġgo verning +ĠF erguson +Ġrest ored +Ġst ressed +ĠCoun ter +ĠK as +cl ip +AN S +Ġse iz +U K +by ss +old own +ap i +Ġperman ently +oun ters +W est +Th rough +L ight +at oes +Ġne at +Ġc ord +ure r +Ġsevere ly +ĠA ven +Ġinter rog +Ġtri ple +G iven +N umber +Ġar ise +Ġs her +pl ant +Ġfl ower +ĠC ou +Ġat e +Ġnew er +b ul +Ġmean while +ĠL air +Ġadjust ment +ĠCop yright +Ġd ivers +i ological +Ġgam ers +o at +Ġhistor ically +Ġanal og +Ġlong time +Ġpres cription +ĠM ist +ĠHy per +ĠM aine +ĠDe ity +Ġmulti pl +ĠRe incarn +ĠH yd +ĠP ic +S il +r ants +ĠC ris +. ; +( { +epend ence +Ġrec y +ate ur +Ġqu ad +Ġgl ob +Ġcon ced +te am +Ġcapital ist +ĠL ot +Ġroy al +ĠCy ber +Ġblack s +met ic +ri v +ĠD anny +Ġsp o +ĠR O +Ġanim ated +rypt ed +ĠDep uty +Ġrend ered +F E +Ġstre ak +Ġcloud s +ĠDou g +~~~~ ~~~~ +Ġdisc our +ĠVe h +Ġpsych ology +ĠJ ourney +Ġcry stal +ĠFro st +Ġsuspic ion +Ġrel ate +or us +ĠC rypt +ĠN VIDIA +com ed +ut ing +incinn ati +Ġvulner ability +ost ic +Ġisol ation +Ġcool ing +ĠCoal ition +Ġ1 19 +F our +ĠDe al +Ġâ ī +se mble +ram ent +ĠBar celona +Ġ10 2 +Ġcoc aine +ocaly pse +F eb +ogen ic +Ġmut ation +Ġcrypt oc +ĠK el +ĠG it +a is +Ġs isters +AN K +Ġactiv ate +T er +Ġd read +yl on +Ġprop ri +A ust +ĠDef ault +Ġout door +Ġshe er +ce ive +Ġg ently +Ð ¾ +Pro gram +Ġâ ĨĴ +Ġve gan +ĠCr us +Ġrespons ibilities +ĠH R +OL D +Ġprev ents +Ġst iff +ĠW ere +Ġathlet ic +ĠSc ore +Ġ) : +Ġcolumn s +ĠL oc +av ailable +ĠF ram +ĠS essions +Ġcompan ion +Ġpack s +14 0 +ĠKn ights +Ġf art +Ġstream s +Ġsh ore +Ġapp eals +ĠPer formance +h aul +ĠSt ra +ĠN ag +10 3 +ĠTrans portation +B B +E v +z an +P ublic +Ġtw in +uls ion +M ult +Ġelect ro +Ġstat ue +ation ally +ĠN ort +Ġins pection +/ * +ig ue +Ġcomp assion +ĠT ales +ĠSte in +ĠSc reen +ĠB ug +ĠL ion +g irl +Ġwithdraw al +Ġobject ives +Ġblood y +Ġprelim inary +Ġj acket +Ġdim ensions +ĠC ool +ĠOcc up +Ġw reck +Ġdoub led +ank ing +Ġ19 75 +Ġglass es +ĠW ang +pro v +P ath +connect ed +ĠMult i +ĠNor way +agon ist +Ġfe ared +Ġtouch ing +Ġarg uably +¯¯¯¯ ¯¯¯¯ +ĠNC AA +che m +Ġsp at +ĠW WE +ĠC el +ig ger +Ġattack er +ĠJo in +ob ject +ett a +Ġelim inated +d et +Ġdest ruct +ĠLuc as +ct uary +18 0 +ĠBr ady +ĠBl ues +B ay +au kee +Ġtim eline +Ġdeleg ates +w ritten +uff icient +Ġsh apes +Cop yright +ou ble +serv ice +Ġp ione +Ġcolleg es +Ġrow s +Ġsp ite +Ġassess ed +3 60 +Ġle ase +Ġconfident ial +ck er +ĠMan ning +ĠV oice +Ġse aled +Ġcalcul ate +N O +ĠAss istant +Ġteen ager +ul ent +ather ine +Ġm ock +Ġd iamond +Ġf est +Ġsw itched +Ġres ume +ĠPu erto +Ġl anes +ir ation +ĠSimilar ly +Ġro d +ĠS el +ĠPal ace +ĠLim ited +e ous +Ġvar iant +Ġw ard +Ġ) ) +Sh ow +OO K +A lex +ĠN ep +br is +ĠWik ipedia +Ġexcept ional +Ġman ages +ĠD raw +Ag ain +Ġco pper +ut t +Ġex ports +Ġport folio +Ġelev ated +R ated +ĠOther wise +ĠT act +ĠShe l +ĠT X +" âĢĶ +Ġres ur +ĠW a +ven ant +Ġmon etary +pe ople +E mail +Ġfif ty +ĠS weet +ĠMalays ia +Ġconf using +ĠR io +ud a +uten ant +" ); +Ġpra ised +Ġvol umes +t urn +Ġm ature +Ġnon profit +Ġpassion ate +ĠPriv ate +Ġ10 3 +Ġdesc end +ç ¥ŀ +uff y +head ed +Whe ther +ri en +ze ch +be it +Ġch rom +ĠMc M +Ġd ancing +Ġe leg +ĠNot iced +11 5 +Ġadvoc acy +ENT S +amb ling +ĠMin or +ĠF inn +Ġprior ities +Ġthere of +ĠSt age +ĠRog ers +Ġsubst itute +ĠJ ar +ĠJeff erson +Ġlight ly +10 2 +ĠL isa +u its +ys ical +Ġshif ts +Ġd rones +Ġwork place +Ġres id +ens ed +ah n +Ġpref erences +ser ver +Ġdeb ates +d oc +ĠGod s +Ġhelicop ter +Ġhon our +Ġconsider ably +ed ed +ĠF emale +ĠAn ne +Ġre un +ĠF ace +ĠHall ow +ĠBud get +Ġcondem n +Ġt ender +Pro f +ocr atic +ĠTurn er +ĠAg ric +Ġ19 76 +Ġa pt +d isc +ĠF ighter +ĠA ur +Ġgar bage +in put +ĠK arl +ĠOl iver +ĠL anguage +k n +N on +ĠCl ar +Ġtrad itions +Ġad vertisement +ĠS or +Ġarch ive +Ġvill ages +7 50 +Ġimplement ing +w aukee +Ġdiet ary +Ġswitch ing +Rep ublic +Ġvel ocity +Ġc it +ĠA wards +Ġfin ancing +Ġlast ed +) ] +Ġrem inder +P erson +Ġprec ision +Ġdesign ers +ĠF ried +ĠB order +Ġtr agic +Ġw ield +Ġiniti atives +ĠT ank +w er +Ġjo ins +R o +in ery +Ġar row +Ġgener ating +found er +Ġsear ches +Ġrandom ly +A ccess +Ġb atch +Ġp osed +l at +Ġpursu ing +as a +Ġtest ified +form ing +ĠSh ar +w iki +ĠE ither +S ometimes +Ġsen ators +ĠJohn ny +ĠTal iban +ĠG PS +":" / +ãģ® å +Ġanaly zed +ĠRub io +ĠMove ment +op ard +ii i +St and +f ight +Ġign oring +i ang +ĠG N +so ever +ĠST AT +Ġref using +Ġswe at +Ġb ay +P ORT +ir med +ak y +Ġdis pro +Ġlabel ed +Ġ10 8 +H ello +Ġple asant +ab a +Ġtri umph +Ġab oard +Ġinc om +ĠC row +le tt +Ġfol k +Ġch ase +` ` +ĠBr us +Ġte ens +c ue +Ġter rain +h yd +il ight +OR Y +Su pport +ew s +ll i +rain ts +ĠC and +Ġab used +ach ment +l arg +B as +ĠC ancer +Ġ19 78 +Ġsupp orter +ac cess +ĠTer min +ĠT ampa +ĠAN Y +Ġnew est +ĠCrim inal +ed u +Ġ19 30 +Ġadm its +Ġend e +Ġfail ures +ur ate +ful ness +cy cl +ĠSub ject +Ġinf inite +th ree +W A +p it +ĠInst all +R ad +ili ation +G M +Ġcontin ent +Ġaccommod ate +ĠCl ay +Ġp up +ĠF unction +Ġham mer +ĠAlbert a +Ġrev ised +Ġminor ities +Ġmeasure ment +Con nell +Ġdis able +ĠM ix +In cre +Ġfor k +ĠR osen +Ġimpl ies +umb lr +AN G +Ġprote ins +Ġagg ression +Ġfacilit ate +S N +Ġilleg ally +u er +Ġacad em +Ġp uzz +ĠSh ift +p ay +oll o +Ġaud iences +B uild +Ġno ble +Ġsynt ax +â ĺħ +Ġbe am +ĠB ed +ĠA ld +Ġorig ins +v ideo +Ġ19 77 +ĠAss ault +Ġgar age +Te am +Ġver dict +Ġd war +ĠVirt ual +e vent +Ke ep +Ġsent iment +Ġwild life +sh irt +Ġb urg +Ġrecommend ation +rep resent +Ġgall ery +own ers +Ġsch olar +Ġconven ience +ĠSw ift +Ġconv inc +C ap +Ġwar fare +ĠVis ual +Ġconst itute +Ġab ort +ĠWe ather +ĠLook ing +ĠH em +Ġmart ial +Ġinc oming +et ition +Ġtoler ance +ĠCre ated +Ġfl ows +ĠE lder +Ġsoul s +Ġf oul +ĠP ain +ĠC AN +Ġ2 20 +b c +he nd +Ġgen ius +R eal +ĠW r +omet er +p ad +Ġlim iting +ĠS i +ĠL ore +ĠAd ventures +Ġvar ied +D isc +f in +ĠPerson al +Ch ris +Ġinv ented +Ġd ive +ĠR ise +Ġo z +ĠCom ics +Ġexp ose +ĠRe b +let ters +s ite +im ated +Ġh acking +Ġeduc ated +ĠNob ody +Ġdep ri +Ġincent ive +ãĤ · +Ġovers ight +Ġtrib es +ĠBelg ium +Ġlicens ing +our t +Produ ct +ah l +ĠG em +Ġspecial ist +Ġc ra +ann ers +ĠCor byn +Ġ19 73 +RE AD +Ġsum mar +Ġover look +ĠApp lication +Ġin appropriate +Ġdownload ed +Q ue +ĠB ears +Ġth umb +ĠChar acter +ĠReincarn ated +ĠS id +Ġdemonstr ates +s ky +ĠBloom berg +ĠAr ray +ĠRes ults +ĠFour th +ĠED T +ĠO scar +c end +Ġ10 6 +ĠN ULL +ĠH ERE +m atch +ĠBr un +Ġgluc ose +ie g +eg u +Ġcert ified +Ġrel ie +Ġhuman itarian +Ġpr ayers +K ing +Ġn an +h ou +10 8 +ul u +Ġrenew able +Ġdistingu ish +Ġd ense +ĠV ent +ĠPack age +ĠB oss +Ġedit ors +Ġm igr +T ra +ĠPet ers +ĠAr ctic +200 4 +ĠC ape +Ġloc ally +Ġlast ing +Ġhand y +. ). +P an +ĠR ES +Ind ex +Ġt ensions +Ġformer ly +Ġide ological +Ġsens ors +Ġdeal ers +Ġdef ines +S k +Ġproceed s +Ġpro xy +az ines +ĠB ash +ĠP ad +ĠC raft +eal ous +Ġshe ets +omet ry +J une +cl ock +T T +ĠThe atre +ĠB uzz +Ġch apters +Ġmill enn +Ġd ough +ĠCongress ional +Ġimag ined +av ior +Ġclin ic +Ġ19 45 +Ġhold er +ro ot +oles ter +Ġrest art +B N +ĠHam as +ĠJ ob +Ġor b +Ġr am +Ġdiscl ose +Ġtransl ate +Ġimm igrant +Ġannoy ing +Ġtreat y +an ium +ĠTe a +ĠLeg ion +Ġcrowd s +ĠB ec +ĠA er +oh yd +B ro +Look ing +Ġl bs +Ġagg ress +Ġse am +Ġinter cept +ĠM I +mer cial +act iv +ĠC it +Ġdim ension +Ġconsist ency +Ġr ushing +ĠDou glas +Ġtr im +Inst all +ick er +Ġsh y +10 6 +Ġment ions +pe lled +ĠT ak +c ost +Ġclass room +Ġfort une +dri ven +Ġun le +ĠWhe el +Ġinvest or +ĠM asters +k it +Ġassoci ations +ĠEv olution +op ing +us cript +Ġprov incial +ĠWal ter +av i +S O +Ġun limited +Eng lish +ĠC ards +ĠEb ola +ne red +Ġreven ge +Ġout right +um per +Ġf itting +ĠSol id +Ġform ally +Ġproblem atic +Ġhaz ard +Ġenc ryption +Ġstraight forward +ĠA K +Ġp se +ĠOr b +ĠCh amber +ĠM ak +Cont ents +Ġloyal ty +Ġl yrics +ĠSy m +Ġwel comed +Ġcook ed +Ġmon op +Ġn urse +Ġmis leading +Ġe ternal +Ġshif ting +Ġ+ = +V is +Ġinst itutional +ill ary +Ġp ant +VER T +ĠA CC +ĠEn h +Ġinc on +ĠRE UTERS +Ġdon ated +â̦â̦ â̦â̦ +In tern +Ġexhib it +Ġt ire +ĠR ic +ĠCh ampion +ĠMu hammad +N ING +ĠSoc cer +Ġmob ility +Ġvary ing +ĠM ovie +Ġl ord +o ak +F ield +Ġve ctor +us ions +Ġsc rap +Ġen abling +m ake +T or +. * +| | +ĠWe bsite +ĠN PC +Ġsocial ist +ĠBill y +ĠAdd itional +Ġc argo +Ġfar ms +ĠSo on +ĠPri ze +Ġmid night +Ġ9 00 +se en +ĠSp ot +Ġshe ep +Ġspons ored +ĠH i +ĠJ ump +Ġ19 67 +Micro soft +ĠAg ent +Ġch arts +d ir +Ġadj acent +Ġtr icks +Ġman ga +Ġex agger +/ > +foot ball +ĠF CC +G C +ĠT ier +and ra +OU ND +% ), +Ġfru its +V C +ĠA A +R ober +Ġmid st +â Ĺ +ank a +Ġlegisl ature +ĠNe il +Ġtour ists +" " +ĠWar ning +ĠNever theless +ĠOffic ial +ĠWh atever +Ġm old +Ġdraft ed +Ġsubst ances +Ġbre ed +Ġt ags +ĠT ask +Ġver b +Ġmanufact ured +com ments +ĠPol ish +Pro v +Ġdetermin es +Ob ama +k ers +Ġutter ly +Ġse ct +sc he +ĠG ates +ĠCh ap +Ġal uminum +Ġz ombie +ĠT ouch +ĠU P +Ġsatisf y +Ġpred omin +asc ript +Ġelabor ate +Ġ19 68 +Ġmeas uring +ĠV ari +any ahu +Ġs ir +ul ates +id ges +ick ets +ĠSp encer +T M +oub ted +Ġpre y +Ġinstall ing +ĠC ab +re ed +re ated +Su pp +Ġwr ist +ĠK erry +10 7 +ĠK le +ĠR achel +Ġc otton +ĠA RE +ĠE le +Cont rol +Ġload s +ĠD od +an as +b one +Ġclass ical +ĠReg ional +ĠInt eg +V M +Ġdes ires +Ġaut ism +support ed +ĠM essage +Ġcomp act +writ er +Ġ10 9 +ĠHur ricane +c ision +Ġcy cles +Ġdr ill +Ġcolle ague +Ġm aker +G erman +Ġmist aken +S un +ĠG ay +Ġwhat soever +Ġsell s +ĠA irl +l iv +ĠO ption +Ġsol ved +Ġse ctors +Ġhorizont al +Ġequ ation +ĠSk ill +ĠB io +g ement +ĠSn ap +ĠLeg al +Ġtradem ark +Ġmake up +Ġassemb led +Ġsa ves +ĠHallow een +ĠVer mont +ĠFR OM +Ġfar ming +ĠP odcast +accept able +ĠHig her +Ġas leep +ull ivan +Ġrefere n +ĠLe v +Ġbul lets +ok o +H C +Ġst airs +Ġmain tains +ĠL ower +ĠV i +Ġmar ine +Ġac res +Ġcoordin ator +ĠJ oh +Ġcounterpart s +ĠBrother s +Ġind ict +b ra +Ġch unk +Ġc ents +H ome +ĠMon th +Ġaccording ly +if les +ĠGerm ans +ĠSy n +H ub +Ġey eb +âĶĢâĶĢ âĶĢâĶĢ +Ġr anges +ĠHoll and +ĠRob ot +f c +M ike +Ġpl asma +Ġsw ap +Ġath lete +ĠR ams +,' " +Ġinfect ions +Ġcor rid +Ġv ib +Ġpat ches +Ġtradition ally +Ġrevel ation +Ġswe ep +Ġgl ance +Ġin ex +200 3 +ĠR aw +work ing +os ures +ĠD at +ĠLyn ch +Ġle verage +ĠRe id +Ġcorrel ation +ian ces +av ascript +Ġrep ository +ret ty +Ġ19 72 +24 0 +Ġo un +p ol +ĠRe ed +Ġtact ical +is ite +App le +ĠQu inn +Ġrap ed +ill o +Euro pe +Ġalgorith ms +ĠRod rig +i u +Ġill um +Ġf ame +Ġintrodu cing +Ġdel ays +ĠRaid ers +Ġwh istle +Ġnovel s +ĠRe ally +Ġder iv +Ġpublic ations +ĠNe ither +ĠCom merce +Ġa ston +l anguage +Not es +ĠR oth +ĠF ear +Ġm ate +Ġpar ade +ĠQ B +Ġman eu +ĠC incinnati +m itting +Ġwa ist +ĠR ew +Ġdisc ont +Ð ° +Ġst aring +Ġal ias +Ġsec urities +Ġtoile t +ĠJ edi +Ġun law +v ised +//// //// +] ( +ĠWe iss +Ġpre st +ĠComp an +Ġmem o +ĠGr ace +J uly +ĠEl ite +cent er +ĠSt ay +Ġgal axy +Ġto oth +ĠS ettings +Ġsubject ed +ãĤ ¦ +Ġline back +Ġretail ers +ĠW ant +Ġd angers +A ir +Ġvolunt ary +ew ay +Ġinterpret ed +ot ine +à § +Ġp el +Serv ice +ĠEvent ually +Ġcare ers +Ġthreat en +Ġmem or +ĠBrad ley +anc ies +s n +ĠUn known +N ational +Ġsh adows +ail and +ĠD ash +Every one +izz ard +M arch += ( +Ġpull s +Ġstr anger +Ġback wards +ĠBern ard +imens ional +Ġch ron +Ġtheoret ical +k top +Ġw are +ĠInvest ig +ĠIn iti +ĠOper ations +o ven +oc ide +* / +Ġfl ames +ĠC ash +sh it +Ġc ab +ĠAn aly +ĠSe ah +Ġdefin ing +Ġorder ing +Ġimm un +Ġpers istent +AC H +Russ ian +m ans +Ġh ind +Ġphot ography + © +Ġh ug +Ġ10 7 +ĠH ence +i ots +ude au +Ġsubsid ies +Ġroutine ly +ĠDev ice +it ic +Ġdisg ust +land er +Ġ19 40 +Ġassign ment +ĠB esides +w ick +ĠD ust +us c +struct ed +11 1 +de velop +Ġf ond +Ġinter section +Ġdign ity +Ġcommission er +With out +re ach +Ġcart oon +Ġsc ales +ãĥ Ń +F IG +Ġsurve ys +ĠIndones ia +Ġart work +Ġun ch +Ġcy cling +un ct +au er +or ate +ĠOb viously +Ġcharacter ized +fe ld +Ġaff irm +Ġinn ings +Ġ é +Ġal iens +Ġcl oth +et ooth +ĠC ertain + § +Ġdig est +k now +ĠX L +Ġpredict ions +Ġd in +W AR +Ġafter math +Ex ample +ĠSu ccess +ĠTh r +IG N +Ġmin er +B us +Ġcl arity +heim er +ĠO UT +ĠS end +ĠCirc le +ĠD iet +Ġpron ounced +Ġcreat ors +Ġearthqu ake +atter y +ge ons +Ġo d +Ġlay ing +or p +U lt +pro ject +Ġunder min +Ġsequ el +S am +ĠDark ness +Ġre ception +b ull +Y S +ĠV ir +Ġsequ ences +ĠCo in +Ġout fit +ĠW ait +1 19 +Ġdel ivers +.... .. +Ġbl own +ĠE sc +ĠM ath +per m +ĠU l +Ġgl im +Ġfac ial +Ġgreen house +Ġto kens +/ - +ĠAnn ual +ĠON E +Ġteen age +ĠPhys ical +ĠL ang +ĠC elt +Ġsu ed +ivid ually +Ġpat ience +ch air +reg ular +Ġa ug +in v +ex cept +ĠL il +Ġn est +f d +s um +ĠCh ase +Russ ia +ĠJenn ifer +Ġoff season +Over all +F ore +Ġr iot +A ud +form er +Ġdefend ers +ĠC T +iot ic +rib ly +Ġautom ated +Ġpen is +Ġins ist +Ġdi agram +ĠS QL +ĠG arc +Ġw itch +cl ient +ier ra +am bers +Ġrec ount +f ar +V ery +oster one +Ġappreci ated +ĠPer fect +S ection +Ġd oses +oca ust +Ġcost ly +Ġg rams +ĠSh i +Ġwrest ling +Ġ19 71 +Ġtro phy +Ġn erve +ĠK az +ĠExper ience +Ġpled ged +Ġplay back +Ġcreat ivity +by e +Ġattack ers +Ġhold ers +ĠCo ach +ĠPh D +Ġtransf ers +Ġcol ored +ĠH indu +Ġd rown +Ġlist ened +ĠW A +ias m +P O +Ġappeal ing +Ġdiscl osed +ĠCh icken +ag ging +Ġple aded +Ġnav igation +ĠReturn s +Ġ[ [ +R OR +E A +Ġphotograp her +ĠR ider +ipp ers +Ġsl ice +Ġe rect +Ġhe d +iss ance +ĠVik ings +ur ious +Ġapp et +oubted ly +Ch ild +Ġauthent ic +o os +ĠM aking +Ġannoun cing +Ġb od +Ġmet er +ĠN ine +ĠR ogue +Ġwork force +Ġrenew ed +Ġorganis ations +ac s +P LE +Sh ort +Ġcomp ounds +ĠVis it +Ġen velop +ear th +Ġsupport ive +gg le +ĠBrus sels +ĠGu ild +Cre ate +RE L +Ġaver aged +Ġ19 69 +ri ages +Ġlength y +Ġforg ot +O kay +ĠE rd +Ġdeal er +Ġrec ession +D D +Ġdesper ately +Ġhun ger +Ġst icks +Ġm ph +ĠF aith +Ġintention ally +Ġdem ol +ue ller +ĠS ale +Ġde bris +s pring +Ġle ap +>> >> +Ġcontain ers +se lling +rane an +atter ing +Ġcomment ed +ĠC M +on ut +Ġwood s +es pecially +Ġorgan ize +iv ic +ĠWood s +ang a +s qu +Ġm aj +am on +Ġax is +Ġ19 74 +ĠDen mark +Ġwar rior +ĠP and +Ġout lined +ĠB O +ins ula +z illa +eb ook +Ġd are +Ġsear ched +Ġnav igate +S n +writ ing +Ġun ited +J apan +ĠHe brew +Ġfl ame +Ġrel ies +Ġcatch ing +ĠSh o +Ġimprison ment +Ġp ockets +Ġclos ure +ĠF am +t im +ade qu +Act ivity +Ġrecru iting +ĠW ATCH +ĠArgent ina +d est +Ġapolog ize +or o +Ġlack s +Ġtun ed +ĠGriff in +Ġinf amous +Ġcelebr ity +ss on +Ġ ---------------------------------------------------------------- +ĠIs is +ĠDis play +Ġcred ibility +Ġeconom ies +Ġhead line +ĠCow boys +Ġind ef +Ġl ately +Ġincent ives +but ton +ĠM ob +A ut +Ġres igned +ĠO m +c amp +Ġprof iles +Ġsche mes +olph ins +ay ed +Cl inton +en h +ĠY ahoo +Ġab st +Ġan k +su its +Ġw ished +ĠMar co +udd en +Ġsp here +ĠB ishop +Ġincorpor ated +ĠPl ant +11 4 +Ġh ated +p ic +Ġdon ate +Ġl ined +Ġbe ans +Ġsteal ing +Ġcost ume +Ġsher iff +Ġfor ty +Ġint act +Ġadapt ed +Ġtrave lling +b art +Ġnice ly +Ġdri ed +Ġsc al +os ity +NOT E +ĠB h +ĠBron cos +ĠI gn +Ġint imate +Ġchem istry +Ġopt imal +D eb +ĠGener ation +Ġ] , +ich i +ĠW ii +ĠYOU R +vent ions +W rite +Ġpop ul +un ning +ĠW or +V ol +Ġqu een +head s +K K +Ġanaly ze +op ic +ear chers +Ġd ot +leg raph +ast ically +Ġupgr ades +Ġca res +Ġext ending +Ġfree ze +Ġin ability +Ġorg ans +Ġpret end +Ġout let +11 3 +ol an +ĠM all +ul ing +t alk +Ġexpress ing +ĠAl ways +ĠBe gin +f iles +Ġlic enses +% % +ĠM itt +Ġfil ters +ĠMil waukee +G N +Ġunf old +M o +Ġnut rition +pp o +B o +Ġfound ing +Ġunder mine +Ġeas iest +ĠC zech +ĠM ack +Ġsexual ity +ĠN ixon +W in +ĠAr n +ĠK in +ãĤ £ +ic er +Ġfort un +Ġsurf aces +agh d +Ġcar riers +ĠP ART +ĠT ib +Ġinter val +Ġfrust rating +ĠSh ip +ĠAr med +ff e +Ġbo ats +ĠAb raham +in is +Ġsu ited +th read +i ov +ab ul +ĠVenezuel a +Ġto m +su per +Ġcast le +alth ough +iox ide +ec hes +Ġevolution ary +Ġnegoti ate +Ġconfront ed +Rem ember +Ġ17 0 +S uch +Ġ9 11 +m ult +ĠA byss +ur ry +ke es +spe c +ĠBarb ara +Ġbelong ing +Ġvill ain +ist ani +Ġaccount able +Ġport ions +ĠDe cl +U r +ĠK ate +g re +Ġmag azines +UC K +Ġregul ate +om on +ĠAl most +Ġover view +Ġsc ram +Ġl oot +ĠF itz +Ġcharacter istic +ĠSn ake +s ay +ĠR ico +Ġtra it +ĠJo ined +au cus +Ġadapt ation +ĠAirl ines +Ġarch ae +ĠI de +Ġb ikes +Ġliter ary +Ġinflu ences +ĠUs ed +C reat +Ġple a +ĠDef ence +ĠAss ass +Ġp ond +UL T +) " +Ġeval uated +Ġob taining +Ġdem ographic +Ġvig il +ale y +Ġsp ouse +ĠSeah awks +resp ons +ĠB elt +um atic +Ġr ises +run ner +ĠMichel le +Ġpot ent +r ace +ĠP AC +F ind +olester ol +IS S +ĠIntrodu ced +ress es +ign ment +O s +ĠT u +ĠDe x +ic ides +Ġspark ed +ĠLaur a +ĠBry ant +Ġsm iling +ĠNex us +Ġdefend ants +ĠCat al +Ġdis hes +sh aped +Ġpro long +m t +( $ +ãĢ Ĥ +Ġcalcul ations +ĠS ame +Ġp iv +H H +Ġcance lled +Ġgr in +Ġterrit ories +ist ically +C ome +ĠP arent +Pro ject +Ġneg lig +ĠPriv acy +Ġam mo +LE CT +olute ly +ĠEp ic +Ġmis under +w al +Apr il +m os +path y +ĠC arson +Ġalbum s +ĠE asy +Ġpist ol +< < +Ġ\ ( +t arget +hel p +Ġinter pre +cons cious +ĠH ousing +ĠJ oint +12 7 +Ġbe ers +s cience +ĠFire fox +effect ive +ĠC abin +ĠO kay +ĠApp lic +Ġspace craft +ĠS R +ve t +ĠStr ange +S B +Ġcor ps +iber al +e fficient +Ġpreval ence +Ġeconom ists +11 8 +Th read +ord able +OD E +ĠC ant +=- =- +if iable +ĠA round +Ġpo le +Ġwilling ness +CL A +ĠK id +Ġcomple ment +Ġsc attered +Ġin mates +Ġble eding +e very +Ġque ue +ĠTr ain +Ġh ij +Ġme lee +ple ted +Ġdig it +Ġg em +offic ial +Ġlif ting +Ð µ +Re qu +it utes +Ġpack aging +ĠWork ers +h ran +ĠLeban on +ol esc +Ġpun ished +ĠJ uan +Ġj am +ĠD ocument +Ġm apping +ic ates +Ġinev itably +Ġvan illa +ĠT on +Ġwat ches +Ġle agues +Ġiniti ated +deg ree +port ion +Ġrec alls +Ġru in +Ġm elt +I AN +Ġhe m +Ex p +Ġb aking +ĠCol omb +at ible +Ġrad ius +pl ug +ĠI F +et ically +Ġf ict +H ER +ĠT ap +atin um +Ġin k +Ġco h +ĠW izard +b oth +te x +Ġsp ends +ĠCurrent ly +ĠP it +Ġneur ons +ig nt +Ġr all +Ġbus es +b uilding +Ġadjust ments +Ġc ried +ibl ical +att ed +ĠZ ion +ĠM atter +Ġmed itation +ĠD ennis +Ġour s +ĠT ab +Ġrank ings +ort al +Ġad vers +Ġsur render +ĠG ob +ci um +om as +im eter +Ġmulti player +Ġhero in +Ġoptim istic +Ġindic ator +ĠBr ig +Ġgro cery +Ġapplic ant +ĠRock et +v id +Ex ception +p ent +Ġorgan izing +Ġenc ounters +ĠT OD +Ġjew el +S ave +ĠChrist ie +Ġhe ating +Ġl azy +ĠC P +Ġcous in +Con fig +Ġreg ener +Ġne arest +Ġachie ving +EN S +th row +ĠRich mond +ant le +200 2 +Ġan ten +b ird +13 3 +Ġn arc +r aint +un ny +ĠHispan ic +ourn aments +Ġprop he +ĠTh ailand +ĠT i +Ġinject ion +Ġinher it +rav is +Ġmed i +Ġwho ever +ĠDE BUG +G P +ĠH ud +C ard +p rom +Ġp or +Ġover head +L aw +Ġviol ate +Ġhe ated +Ġdescript ions +Ġachieve ments +ĠBe er +ĠQu ant +W as +Ġe ighth +ĠI v +Ġspecial ized +U PDATE +ĠD elta +P op +J ul +ĠAs k +oph y +Ġnews letters +ĠT ool +Ġg ard +ĠConf eder +ĠGM T +ĠAb bott +Ġimm unity +ĠV M +Is lam +Ġimpl icit +w d +Ġ19 44 +rav ity +omet ric +Ġsurv iving +ur ai +ĠPr ison +Ġr ust +ĠSk etch +Ġbe es +ĠThe ory +Ġmer it +T ex +ch at +Ġm im +Ġpast e +ĠK och +Ġignor ance +ĠSh oot +Ġbas ement +Un ited +ĠAd vis +he ight +Ġf oster +Ġdet ain +in formation +Ġne ural +' ; +Ġprov es +all ery +Ġinv itation +um bers +Ġc attle +Ġbicy cle +z i +Ġconsult ant +Ġap ology +ĠT iger +Ġ12 3 +99 9 +Ġind ividually +r t +ig ion +ĠBrazil ian +Ġdist urb +Ġentreprene urs +Ġfore sts +cer pt +pl ates +p her +clip se +Ġtw itter +Ġac ids +ograph ical +h um +ĠB ald +if ully +Ġcomp iler +ĠD A +Ġdon or +as i +Ġtrib al +l ash +ĠCon fig +Ġapplic ants +Ġsal aries +13 5 +Put in +ĠF ocus +ir s +Ġmisc onduct +ĠH az +Ġeat en +M obile +Mus lim +ĠMar cus +v iol +Ġfavor able +Ġst ub +ad in +ĠH ob +Ġfaith ful +Ġelectron ics +Ġvac uum +w ait +back ed +econom ic +d ist +Ġten ure +Ġsince re +ĠT ogether +ĠW ave +Ġprog ression +Ġden ying +Ġdist ress +br aska +th ird +Ġmix ing +Ġcolon ial +Ġpriv ately +Ġun rest +atern ity +Ġprem ises +ant i +greg ation +Ġlic ence +ĠH ind +ĠSam uel +Ġconvinc ing +ĠA ce +ĠR ust +ĠNet anyahu +Ġhand les +ĠP atch +orient ed +ah o +ĠG onz +Ġhack ers +claim er +Ġcustom s +ĠGr an +f ighters +Ġl uc +Ġman uscript +aren thood +Ġdev il +Ġwar riors +Ġoff enders +Will iam +Ġhol idays +Ġnight mare +Ġle ver +iff erent +St at +Ġexhib ition +put ed +ĠP ure +Ġal pha +Ġenthus iasm +ĠRepresent atives +E AR +ĠT yp +Ġwhe at +ĠAl f +Ġcor rection +Ġev angel +AT T +M iss +Ġs oup +Ġimpl ied +par am +Ġsex y +ĠL ux +Ġrep ublic +p atch +ab lish +Ġic ons +Ġfather s +ĠG ET +ĠCar ib +Ġregul ated +ĠCo hen +ĠBob by +Ġn er +Ġb ent +vent ory +ĠAl ong +ĠE ST +ĠWall ace +Ġmurd ers +r ise +ke ll +ĠCommon wealth +Ġn asty +et a +ĠM IT +Ġadminist ered +Ġgenuine ly +Ed itor +n ick +Ġhyd ro +**************** **************** +ĠB le +Ġfin es +Ġg orge +aus ible +r h +Ġapp le +ment ioned +Ġro pe +ot yp +H R +Ġdisappoint ing +Ġc age +n ik +Ġdoub ts +ĠF REE +print s +ĠM UST +Ġvend ors +ĠIn qu +Ġliber als +Ġcontract or +Ġup side +child ren +Ġtrick y +Ġregul ators +charg ed +l iter +Ġ *** +Ġreb ell +l ang +Ġloc als +Ġphys icians +Ġhe y +ar se +t m +ĠLe x +Ġbehavior al +success ful +F X +Ġbr ick +ov ic +Ġcon form +Ġreview ing +Ġins ights +Ġbi ology +ĠRem ove +ĠExt ra +Ġcomm itting +indu ced +ignt y +ig m +Ġat omic +Comm on +ĠE M +ĠP ere +ĠIt ems +e h +Ġpres erved +ĠH ood +Ġprison er +Ġbankrupt cy +Ġg ren +us hes +Ġexplo itation +Ġsign atures +Ġfin an +] ," +ĠM R +Ġme g +rem lin +Ġmusic ians +Ġselect ing +Ġexam ining +IN K +l ated +H i +Ġart ic +Ġp ets +Ġimp air +ĠM AN +Ġtable ts +in clude +R ange +Ġca ut +Ġlog s +Ġmount ing +Ġun aware +Ġdynam ics +ĠPalest ine +ĠQu arter +ĠPur ple +Ġm a +ĠIm port +Ġcollect ions +ci ation +Ġsuccess or +Ġcl one +Ġaim ing +Ġposs essed +Ġstick ing +Ġsh aking +Ġloc ate +ĠH ockey +T urn +17 0 +Ġfif teen +ĠHar rison +Ġcontinu ously +ĠT C +ĠVal ent +ĠRes cue +Ġby pass +am ount +Ġm ast +Ġprotect s +Ġart istic +Ġsomet ime +Ġsh oe +Ġshout ed +ific ant +et itive +ĠReg ister +ĠJ in +Ġconcent rated +ling ton +on ies +Ġgener ator +yr im +ĠAr men +Ġclear ing +id o +ĠT W +al ph +Ġlad ies +H ard +Ġdial og +Ġinput s +æ ľ +Ġpos es +Ġsl ots +ĠPrem ium +Ġle aks +Ġboss es +Ġ11 3 +c ourse +A cc +ĠNew ton +ĠAust ria +ĠM age +Ġte aches +ab ad +Ġwe ars +Ġc yl +Ġcur se +ĠS ales +ĠW ings +Ġp sy +Ġg aps +ĠIce land +ĠP interest +Ġland lord +Ġdefin itions +ĠK er +Ġsufficient ly +ĠP ence +ĠArch itect +Ġsur pass +Ġ11 4 +Ġsuper hero +ĠDise ase +Ġpri ests +ĠC ulture +Ġdefin itive +Ġsecret ly +ĠD ance +inst all +ch ief +ĠJess ica +W ould +Up dated +Ġlock er +ĠK ay +Ġmem orial +è ¦ +f at +Ġdis gu +Ġflav ors +ĠBase ball +ĠRes istance +Ġk icks +Ġen v +Ġteen agers +D ark +ĠC AR +Ġh alt +ĠL G +ĠGab riel +Ġfe ver +Ġs atur +Ġm all +Ġaffili ate +ĠS leep +ĠSpe cific +ĠV el +Ġj ar +ĠSac red +ĠEd wards +ĠA CL +Ġret ained +ĠG iant +Ġlim itation +in ces +Ġref usal +ĠT ale +ĠBut ler +Ġacc idents +ĠC SS +Ġimport ed +ĠCop y +Î ± +ER T +z el +Ġdiv isions +h ots +ĠAl b +ĠD S +Load er +W ashington +at isf +ĠCreat ive +\ . +ĠAut om +red ict +Ġrecept or +ĠCarl os +Met hod +ok a +Ġmal icious +Ġste pping +, [ +ĠD ad +Ġatt raction +ĠEffect s +ĠPir ate +ĠC er +ĠIndust ry +ĠR ud +Ġchar ter +Ġd ining +Ġins ists +Ġconfig ure +Ġ( # +ĠSim ple +ĠSc roll +UT C +17 5 +ĠK on +Ġmarket place +Ġ ãĤ +Ġref res +Ġg ates +er red +ĠP od +Ġbeh ave +Fr ank +n ode +Ġendors ed +he tt +as ive +ĠHom eland +Ġr ides +ĠLe ave +er ness +Ġflood ing +A FP +Ġris en +Ġcontin ually +Ġun anim +ĠCont ract +ĠP as +Ġgu ided +ĠCh ile +b d +Ġsu cc +pt ic +Ġcomm ittees +ĠL uther +ĠAny one +Ġs ab +12 4 +Ġp ixel +ĠB ak +ĠT ag +ĠBenn ett +En ter +sm all +ĠPresident ial +Ġp ul +Ġcontr ace +arch ive +Ġcoast al +ĠK ids +19 2 +âĢ ² +ick y +ING TON +Ġw olf +ĠSt alin +T ur +id get +am as +ĠUn less +Ġspons or +Ġmor ph +ĠCho ose +Ġrun ner +Ġun bel +Ġm ud +ĠMan a +Ġdub bed +Ġg odd +ure rs +wind ow +Ġrel ied +Ġcelebr ating +os c +Ġ13 5 +Ġlobb ying +Ġincom plete +Ġrestrict ion +Ġinc ap +it us +Ġexpect ation +ĠAp ollo +Ġint ens +Ġsyn c +G H +Ġmanip ulation +B Y +Ġspe ar +Ġbre asts +Ġvol can +il ia +M aterial +Ġform ats +ĠB ast +Ġparliament ary +Ġsn ake +Ġserv ants +ĠTr udeau +ĠGr im +ĠArab ic +ĠSC P +ĠBoy s +st ation +Ġprospect ive +ord e +in itialized +Ġb ored +AB LE +Ġaccess ed +Ġtax i +ĠShe ll +aid en +urs ed +in ates +ĠIns urance +ĠPet e +Sept ember +6 50 +Ġad ventures +ĠCo ver +Ġt ribute +Ġsk etch +Ġem power +Ġ Ø +ĠGl enn +ĠD aw += \" +ĠPolit ics +Ġgu ides +Ġd ioxide +ĠG ore +ĠBr ight +ĠS ierra +Ġval ued +c ond +Ġpo inter +Se lect +Ġrisk y +Ġabsor b +im ages +Ġref uses +Ġbon uses +__ _ +Ġh ilar +ĠF eatures +2 20 +ĠCollect or +F oot +Ġ19 64 +cul us +Ġd awn +Ġwork out +ĠL O +Ġphilosoph ical +ĠSand y +ĠYou th +Ġl iable +A f +bl ue +Ġovert urn +less ness +ĠTrib une +ĠIn g +Ġfact ories +Ġcat ches +Ġpr one +Ġmat rix +Ġlog in +Ġin acc +Ġex ert +s ys +Ġneed le +ĠQ ur +Ġnot ified +ould er +t x +Ġremind s +Ġpublisher s +Ġn ort +Ġg it +Ġfl ies +ĠEm ily +Ġflow ing +ĠAl ien +ĠStr ateg +Ġhard est +Ġmod ification +AP I +ĠM Y +Ġcr ashes +st airs +n umber +Ġur ging +ch annel +ĠFal con +Ġinhabit ants +Ġterr ifying +Ġutil ize +Ġban ner +Ġcig arettes +Ġsens es +ĠHol mes +Ġpract ition +ĠPhill ips +ott o +Ġcomp ile +Mod el +ĠK o +Ġ[ ] +Americ ans +ĠTer ms +Ġmed ications +ĠAn a +Ġfundament ally +ĠNot ice +Ġwe aker +Ġ 0000 +Ġgar lic +Ġout break +Ġeconom ist +ĠB irth +Ġobst acles +ar cer +ĠOr thodox +Ġplace bo +ĠC rew +asp berry +ĠAng els +Ġdis charge +Ġdestruct ive +11 7 +ĠR ising +Ġd airy +l ate +Ġcoll ision +ĠTig ers +ean or +ocument ed +ĠIn valid +Ġd ont +ĠL iter +ĠV a +Ġhyd rogen +Ġvari ants +ĠBrown s +Ġ19 65 +Ġind igenous +Ġtrad es +Ġremain der +Ġswe pt +ĠImp act +Ġred ist +Ġun int +grad uate +ãĥ ķ +ĠW ILL +ãģ® ç +ĠCrit ical +Ġf isher +Ġv icious +Ġrevers ed +Y ear +ĠS ox +Ġshoot ings +Ġfil ming +Ġtouchdown s +ai res +m el +Ġgrand father +Ġaffect ion +ing le +Ġover ly +Add itional +Ġsup reme +ĠGr ad +Ġsport ing +Ġmer cy +ĠBrook s +ount y +Ġperform s +Ġtight ly +Ġdem ons +Ġkill ings +Ġfact ion +ĠNov a +aut s +Ġund oubtedly +ar in +Ġunder way +ra k +Ġl iv +ĠReg ion +Ġbrief ing +s ers +cl oud +ĠM ik +us p +Ġpred iction +az or +Ġport able +ĠG and +Ġpresent ing +Ġ10 80 + » +ush i +ĠSp ark +there um +Ġjust ification +ĠN y +Ġcontract ors +ming ham +ĠSt yle +å ħ +ĠChron icles +ĠPict ure +Ġprov ing +Ġw ives +set t +Ġmole cules +ĠFair y +Ġconsist ing +Ġp ier +al one +in ition +Ġn ucle +j son +Ġg otta +Ġmob il +Ġver bal +ar ium +Ġmon ument +uck ed +Ġ25 6 +T ech +mine craft +ĠTr ack +Ġt ile +Ġcompat ibility +as is +Ġs add +Ġinstruct ed +ĠM ueller +Ġle thal +Ġhorm one +Ġor che +el se +Ġske let +Ġentert aining +Ġminim ize +ag ain +Ġunder go +Ġconst raints +Ġcig arette +ĠIslam ist +Ġtravel s +ĠPant hers +l ings +C are +Ġlaw suits +ur as +Ġcry st +Ġlow ered +Ġaer ial +Ġcomb inations +Ġha un +Ġch a +Ġv ine +Ġquant ities +Ġlink ing +b ank +Ġso y +B ill +ĠAngel a +Ġrecip ient +ĠProt est +Ġs ocket +Ġsolid arity +Ġâ Ĩ +m ill +Ġvar ies +ĠPak istani +Dr agon +Ġun e +Ġhor izon +³³³³ ³³³³ +Ġprov inces +Ġfrank ly +Ġenact ed +not es +[ ' +Ġ19 2 +ocr acy +Ġendorse ment +Ġover time +Tr ue +L ab +lic ted +ĠD NC +Ġbe ats +ĠJam ie +15 2 +ĠIN T +Cont act +Ġaccount ed +h ash +ĠPack ers +p ires +Ġles bian +Ġamend ments +Ġhop eful +ĠFin land +Ġspot light +Ġconfig ured +Ġtrou bled +Ġg aze +ĠCal gary +Ġrel iability +Ġins urg +sw er +b uy +ĠSk in +Ġp ixels +Ġhand gun +Ġpar as +Ġcateg or +ĠE L +ĠRe x +Ind eed +Ġkind a +Ġconj unction +ĠBry an +ĠMan ufact +y ang +Pl us +S QL +ish ment +Ġdom inate +Ġn ail +Ġo ath +Ġeru pt +ĠF ine +it bart +ĠCh ip +ĠAb d +ĠN am +Ġbuy er +Ġdiss ent +Le aks +Cont in +Ġr ider +ĠSome one +Ġill usion +c in +ĠBoe ing +Ġin adequ +ov ation +i ants +Ġreb uild +4 50 +ĠDest iny +S W +ĠT ill +H it +ia z +ĠBang l +acher s +ĠRe form +Ġse gments +Ġsystem atic +d c +ĠConserv atives +Ġport al +h or +ĠDragon bound +Ġdrag ged +om o +Ġthe e +ad vert +ĠRep orts +ĠE t +Ġbarrel s +Aug ust +Ġcompar isons +Ġhe x +Ġan throp +" [ +bor ough +ab i +Ġpict ured +play ing +ĠAdd ress +ĠMir ror +Sm ith +Ġt ires +ĠN PR +AA AA +Ġclass ification +ĠTh an +ĠH arm +ĠR A +Ġreject ion +min ation +Ġr anged +ĠF alls +D I +H ost +ãĤ ´ +ĠEx ample +list ed +th irds +Ġsaf egu +br and +Ġprob able +Can ada +IT ION +ĠQ aeda +Ġch ick +Ġimport s +h it +l oc +W W +Ġble w +Ġany time +Ġwh oles +ik ed +Ġcal culation +cre ate +ĠO ri +Ġupgr aded +Ġapp ar +ut ory +ĠM ol +B rit +ĠJ ong +IN AL +ĠStart ing +Ġd ice +urt le +Ġre lying +cl osure +Ġprof itable +Ġsl aughter +ĠMan ual +c aster +Ġ" $ +Ġfe ather +ĠSim ply +ie ves +Ġdeter ior +ĠPC I +Ġst amp +Ġfl aws +Ġsh ade +ham mer +Ġpass port +Ġcont ing +am el +Ġobser vers +Ġneg lect +ĠR B +ĠBrother hood +Ġskept ical +f amily +us k +Ġemotion ally +â Ļ +ĠBet a +ason able +id ity +ĠM ul +Ġkick ing +ĠC arm +oll ah +VERT IS +ĠAt hen +Ġlad der +ĠBul let +å £ +00 01 +ĠWild life +ĠM ask +ĠN an +R ev +Ġun acceptable +leg al +Ġcrowd ed +ag i +ĠC ox +j e +Ġmor ality +Ġfu els +Ġc ables +Ġman kind +ĠCarib bean +Ġanch or +Ġby te +ĠO ften +ĠO z +Ġcraft ed +Ġhistor ian +ĠW u +Ġtow ers +ĠCitiz ens +Ġhel m +Ġcred entials +Ġsing ular +ĠJes se +Ġtack les +Ġcont empt +Ġa fore +ĠSh adows +Ġn il +Ġur gent +app le +bl ood +Ġv on +Ġoff line +Ġbreat he +Ġj umps +Ġirre levant +ox ic +om al +import ant +J im +Ġgl oves +arm ing +dep th +Ġtal ents +ook ie +ĠS B +Ġpal m +uff s +est a +IG H +Ġcan on +ĠVer izon +ĠP le +Ġcou pled +vel t +Ġfundra ising +ĠGet ting +ĠD LC +Ġmathemat ical +ĠH S +ĠCard inals +te lling +Ġspons ors +Ġ Ï +ĠBull s +op tion +Ġprop ose +Ġmem orable +Ġembr aced +Ġdecl ining +He alth +ed a +Ġ} ; +Ġsp am +m ile +Ġpit cher +ĠE ight +Ġcar ing +ut ic +ro le +Ġair line +ernand ez +ĠAth let +Ġcert ification +ux e +rig er +Ġem pir +Ġsens ation +Ġdis m +Ġb olt +Ġev olve +H ouse +Ġconsult ation +ĠD uty +Ġtou ches +ĠN athan +Ġf aint +h ad +" ( +ĠCons umer +ĠExt reme +Ġ12 7 +ĠHer m +ĠSac rament +iz oph +Ġanx ious +ul ously +Ġsoc ially +ĠU TC +Ġsol ving +ĠLet ter +Hist ory +ed uc +Pr ice +) ); +Ġrel oad +am ic +Ġp ork +Ġdisc ourse +Ġt ournaments +ai ro +ĠK ur +ĠCost a +Ġviol ating +Ġinterf ere +Ġrecre ational +uff le +Ġspe eches +Ġneed ing +Ġremem bers +Ġcred ited +n ia +f ocused +amer a +Ġb ru +um bs +ĠCub an +Ġpreced ing +Ġnons ense +ac ial +Ġsmart phones +ĠSt ories +S ports +ĠEmer gency +oun cing +ef ined +Ġb er +Ġconsult ing +Ġm asters +he astern +." [ +ĠRun ning +Ġsus cept +ĠF eng +Americ a +pr ises +st itial +ĠWeek ly +ĠGreat er +mod ules +if ter +G raphics +ul er +Ġwho lly +Ġsupp ress +Ġconce aled +Ġhapp ily +Ġaccept s +ĠEn joy +Ġr ivers +ĠEx cept +2 25 +ĠN HS +ĠMc Connell +Ġp ussy +fer red +ut able +Ġatt ain +Ġ> = +Ġdepos its +roph ic +Ġnot orious +ĠSh aw +il itation +Ġepid emic +all ic +Ġsmall est +ov ich +Ġaccess ories +per ties +Ġsur plus +ĠMe ch +Ġamb ig +ĠImm igration +Ġch im +ev al +Ġpract icing +ĠMyster y +Ġdom ains +ĠSil icon +app s +Ġkilomet ers +e a +ĠSm ash +Ġwarrant y +Ġn ost +s il +re v +J on +ĠDub lin +Ġtast es +Ġb out +g reat +er ror +Ġsw itches +ĠB apt +D O +ok i +Ġsour ced +pro du +Ġattach ment +ĠIss ue +ĠQuest ion +Jo in +Ġf itted +Ġunlaw ful +^ ^ +ere k +Ġauthent ication +Ġst ole +Ġaccount ability +l abel +S earch +Ġal beit +atic an +fund ed +ĠAdd ing +ĠI Q +Ġsub mar +l it +a que +ĠLear ning +Ġint eger +M aster +ĠCh rom +Ġprem ier +O p +ĠLi u +Ġbl essed +ĠGl obe +ĠResp onse +Ġlegit im +ĠMer kel +Ġdispos al + ´ +Ġgau ge +pe at +Ġindu ced +Ġquestion able +arth y +ĠV it +ĠF eed +U ntil +U t +worth y +R Y +ĠH erald +ĠHam mer +Ġmed al +ĠR ivers +ĠH ack +Ġclar ify +Ġtrack ed +Ġautonom ous +Ġten ant +ĠQ atar +er ie +Ġgr im +ĠMon itor +Ġresist ant +ĠSpe c +ĠWell s +N AS +14 8 +Ġmin ers +iot ics +Ġmiss es +11 6 +g ian +g it +ĠE yes +p res +Ġgrad uated +Ġang el +Ġsyn chron +Ġefficient ly +Ġtrans mitted +H arry +Ġglob ally +EN CE +ĠMont ana +r aged +ĠPre vention +Ġp iss +ĠL l +Ġshe lf +ĠB JP +ĠTest ament +ĠL ate +ik er +ĠH app +ĠJul ian +h all +Ġsp ont +Ġshut down +Ġincons istent +Ġsubscrib ers +Ġske leton +ĠNe braska +Ġins pire +ĠV oid +F eed +Ġang les +ĠSpr ings +Ġbench mark +Ġvacc ines +izoph ren +se xual +uff ed +Ġsh ine +ĠK ath +Ġgest ure +ine a +Ġr ip +Ġopp ression +Ġcons cience +b t +ĠL um +Ġinc idence +ĠF a +w r +Ġmin eral +ĠSp urs +alk y +Ġth under +Ġop io +Be ing +ĠPal m +Ġwas ted +Ġl b +i aries +ĠIniti ative +Ġcur ric +Ġmark er +ĠMc L +Ġext ensions +ĠP v +ĠAr ms +Ġoffer ings +Ġdef enses +Ġvend or +Ġcontrad ict +ĠCol in +Ġredd it +Ġper ipher +12 2 +Ġs ins +E dit +IC T +So ft +ĠSh ah +Ġadministr ator +ĠT rip +Ġporn ography +Ġtu ition +in ence +ĠPro gress +Ġcat alog +Ġsu ite +Ġh ike +Ġreprodu ctive +eng ine +Ġd rought +ĠNo ah +Ġ2 30 +Ġd ude +Ġrelax ed +Ġpart ition +Ġparticip ant +Ġtel esc +Ġfe as +ĠF F +own er +Ġswe eping +Ġl enses +Ġmatch up +ĠRe pl +ourn als +Ġcred ible +Ġgrand mother +Ġther mal +Ġsubscrib ing +Ġident ities +col m +U CT +Ġreluct ant +us ers +ĠC ort +Ġassist ed +OS S +ATION S +IS H +Ġpharm aceutical +ic able +ad ian +ĠSon ic +ĠF ury +ĠM ong +A H +ĠPsych ology +Ġph osph +Ġtreat s +Ń Ķ +Ġstead ily +ĠHell o +Ġrel ates +Ġcl ue +Ex pl +a uth +Ġrev ision +Ġe ld +os ion +Ġbr on +14 4 +ri kes +Ġmin es +Ġblank et +ĠF ail +el ed +ĠIm agine +ĠPl anned +a ic +Re quest +M ad +ĠHor se +ĠEag le +Ġcap ac +15 7 +Ġl ing +ĠN ice +ĠP arenthood +min ster +og s +ens itive +Not hing +Ġcar n +F in +ĠP E +Ġr ifles +ĠL P +S and +Ġgui Active +Ġtour ist +C NN +Ġunve iled +Ġpredec essor +} { +u ber +Ġoff shore +Ġopt ical +ĠR ot +ĠPear l +et on +Ġst ared +Ġfart her +at ility +cont in +ĠG y +ĠF oster +ĠC oc +ri ents +Ġdesign ing +ĠEconom y +ON G +W omen +ĠN ancy +er ver +Ġmas cul +Ġcasual ties +Ġ2 25 +ĠS ullivan +ĠCh oice +Ġa ster +w s +Ġhot els +Ġconsider ations +Ġcou ch +ĠSt rip +ĠG n +Ġmanip ulate +l ied +Ġsynt hetic +Ġassault ed +Ġoff enses +ĠDra ke +Ġim pe +Oct ober +ĠHer itage +h l +ĠBl air +Un like +Ġg rief +Ġ4 50 +Ġopt ed +Ġresign ation +il o +Ġver se +ĠT omb +Ġu pt +Ġa ired +ĠH ook +ĠML B +Ġassum es +out ed +ĠV ers +Ġinfer ior +Ġbund le +ĠD NS +ograp her +Ġmult ip +ĠSoul s +Ġillust rated +Ġtact ic +Ġdress ing +Ġdu o +Con f +Ġrel ent +Ġc ant +Ġscar ce +Ġcand y +ĠC F +Ġaffili ated +Ġspr int +yl an +ĠGarc ia +Ġj unk +Pr int +ex ec +C rit +Ġport rait +ir ies +ĠOF F +Ġdisp utes +W R +L ove +ãģ Ħ +ĠRe yn +Ġh ipp +op ath +Ġflo ors +ĠFe el +Ġwor ries +Ġsett lements +ĠP os +Ġmos que +Ġfin als +Ġcr ushed +ĠPro bably +ĠB ot +ĠM ans +ĠPer iod +Ġsovere ignty +Ġsell er +Ġap ost +Ġam ateur +Ġd orm +Ġconsum ing +Ġarm our +ĠRo ose +Ġint ensive +Ġelim inating +ĠSun ni +ĠAle ppo +j in +Ġadv ise +p al +ĠH alo +Ġdes cent +Ġsimpl er +Ġbo oth +ST R +L ater +ĠC ave +== = +Ġm ol +Ġf ist +Ġshot gun +su pp +Ġrob bery +E ffect +Ġobsc ure +ĠProf essional +Ġemb assy +Ġmilit ant +Ġinc arcer +Ġgener ates +Ġlaun ches +Ġadministr ators +Ġsh aft +Ġcirc ular +Ġfresh man +ĠW es +ĠJo el +ĠD rew +ĠDun can +ĠApp arently +s ight +ĠIntern al +ĠInd ividual +ĠF E +Ġb ore +ĠM t +Ġbroad ly +ĠO ptions +ount ain +ip es +ĠV ideos +20 4 +Ġh ills +Ġsim ulation +Ġdisappoint ment +it an +ĠLabor atory +Ġup ward +Ġbound ary +Ġdark er +h art +Ġdomin ance +C ong +ĠOr acle +ĠL ords +Ġscholars hip +ĠVin cent +ed e +ĠR ah +Ġencour ages +ro v +Ġqu o +Ġprem ise +ĠCris is +ĠHol ocaust +Ġrhyth m +Ġmet ric +cl ub +Ġtransport ed +Ġn od +ĠP ist +Ġancest ors +ĠFred er +th umbnails +ĠC E +ON D +Ph il +ven ge +ĠProduct s +cast le +Ġqual ifying +ĠK aren +VERTIS EMENT +Ġmight y +Ġexplan ations +Ġfix ing +D i +Ġdecl aring +Ġanonym ity +Ġju ven +ĠN ord +ĠDo om +ĠAct ually +O k +ph is +ĠDes ert +Ġ11 6 +I K +ĠF M +Ġinc omes +V EL +ok ers +Ġpe cul +Ġlight weight +g ue +Ġacc ent +Ġincre ment +ĠCh an +Ġcompl aining +ĠB aghd +Ġmidfield er +Ġover haul +Pro cess +ĠH ollow +ĠTit ans +Sm all +man uel +ĠUn ity +ĠEv ents +S ty +Ġdispro portion +n esty +en es +ĠC od +Ġdemonstr ations +ĠCrim son +ĠO H +Ġen rolled +Ġc el +ĠBre tt +Ġa ide +Ġhe els +Ġbroad band +Ġmark ing +Ġw izard +ĠN J +ĠChief s +Ġingred ient +Ġd ug +ĠSh ut +urch ase +end or +Ġfar mer +ĠGold man +12 9 +15 5 +Or der +Ġl ion +i ably +Ġst ain +ar ray +ilit ary +ĠFA Q +Ġexpl oded +ĠMcC arthy +ĠT weet +ĠG reens +ek ing +l n +ens en +Ġmotor cycle +Ġpartic le +Ġch olesterol +B ron +Ġst air +Ġox id +Ġdes irable +ib les +Ġthe or +for cing +Ġpromot ional +ov o +b oot +ĠBon us +raw ling +Ġshort age +ĠP sy +Ġrecru ited +Ġinf ants +Ġtest osterone +Ġded uct +Ġdistinct ive +Ġfirm ware +bu ilt +14 5 +Ġexpl ored +Ġfact ions +Ġv ide +Ġtatt oo +Ġfinan cially +Ġfat igue +Ġproceed ing +const itutional +Ġmis er +Ġch airs +gg ing +ipp le +Ġd ent +Ġdis reg +ç Ķ +st ant +ll o +b ps +aken ing +Ġab normal +ĠE RA +å£ « +ĠH BO +ĠM AR +Ġcon cess +Ġserv ant +Ġas pir +l av +ĠPan el +am o +Ġprec ip +Ġrecord ings +Ġproceed ed +Ġcol ony +ĠT ang +ab lo +Ġstri pped +Le ft +to o +Ġpot atoes +Ġfin est +% ). +Ġc rap +ĠZ ach +ab ases +ĠG oth +Ġbillion aire +w olf +Ġsan ction +S K +Ġlog ged +P o +ey ed +un al +Ġcr icket +Ġarm ies +Ġunc overed +Cl oud +ó n +Ġreb ounds +Ġm es +O per +P ac +Ġnation ally +Ġinsert ed +p ict +Ġgovern ance +Ð ¸ +Ġprivile ges +G ET +Ġfavor ites +im ity +Ġlo ver +the m +em pl +Ġgorge ous +An n +Ġsl ipped +Ġve to +B ob +Ġsl im +u cc +ĠF ame +udden ly +Ġden ies +ĠM aur +Ġdist ances +Ġw anna +t ar +ĠS ER +Ġâ Ī +Ġle mon +at hetic +Ġlit eral +Ġdistingu ished +Ġansw ering +G I +Ġrelig ions +ĠPhil os +ĠL ay +Ġcomp os +ire ments +ĠK os +ine z +roll ing +Ġyoung est +and ise +ĠB orn +Ġalt ar +am ina +ĠB oot +v oc +Ġdig ging +Ġpress ures +Ġl en +26 4 +Ġassass ination +ĠBir mingham +ĠMy th +Ġsovere ign +ĠArt ist +ĠPhot ograph +Ġdep icted +Ġdisp ens +orth y +Ġamb ul +int eg +ĠC ele +ĠTib et +Ġhier archy +Ġc u +Ġpre season +ĠPet erson +Ġcol ours +Ġworry ing +Ġback ers +ĠPal mer +ĠÎ ¼ +Ġcontribut or +Ġhear ings +Ġur ine +Ġ Ù +ourge ois +Sim ilar +ĠZ immer +s omething +ĠUS C +Ġstrength s +ĠF I +Ġlog ging +As ked +ĠTh ai +in qu +ĠW alt +Ġcrew s +it ism +3 01 +Ġshar ply +um ed +Ġred irect +r ators +In f +ĠWe apons +Ġte asp +19 99 +L ive +ĠEs pecially +ĠS ter +ĠVeter ans +Ġint ro +other apy +Ġmal ware +Ġbre eding +Ġmole cular +ĠR oute +ĠCom ment +oc hem +Ġa in +Se ason +Ġlineback er +Ä « +ĠEconom ics +es ar +ĠL ives +ĠEm ma +Ġk in +ĠTer rit +Ġpl anted +ot on +ĠBut ter +ĠSp ons +P ER +Ġdun geon +Ġsymb olic +Ġfil med +Ġdi ets +Ġconclud es +Ġcertain ty +ĠForm at +Ġstr angers +form at +ĠPh ase +Ġcop ied +Ġmet res +ld a +ĠUs ers +Ġdeliber ate +Ġwas hed +ĠL ance +im ation +Ġimpro per +ĠGen esis +ick r +ĠK ush +Ġreal ise +Ġembarrass ing +alk ing +b ucks +Ġver ified +Ġout line +year s +ĠIn come +20 2 +Ġz ombies +F inal +ĠMill enn +Ġmod ifications +ĠV ision +ĠM oses +ver b +iter ranean +ĠJ et +Ġnav al +ĠA gg +Ġur l +Ġvict ories +Ġnon etheless +Ġinj ust +ĠF act +ç ļ +Ġins ufficient +re view +face book +Ġnegoti ating +Ġguarant ees +im en +uten berg +Ġg ambling +Ġcon gr +Load ing +Ġnever theless +Ġpres idents +ĠIndust rial +Ġ11 8 +Ġp oured +ĠT ory +Ġ17 5 +Ġ: = +Sc ott +ange red +T ok +Ġorgan izers +M at +ĠG rowth +Ġad ul +Ġens ures +Ġ11 7 +é¾į å +Ġmass acre +Ġgr ades +be fore +AD VERTISEMENT +ĠSl ow +ĠM MA +âĢĶ " +ĠV atican +Q aeda +Ġo we +66 66 +ĠS orry +ĠGr ass +Ġbackground s +Ġexha usted +Ġcl an +Ġcomprom ised +ĠE lf +ĠIsa ac +ens on +In vest +IF A +Ġinterrupt ed +ãĥī ãĥ© +Ġtw isted +ĠDrag ons +M ode +ĠK remlin +Ġfert il +he res +ph an +ĠN ode +f ed +ĠOr c +Ġunw illing +C ent +Ġprior it +Ġgrad uates +Ġsubject ive +Ġiss uing +ĠL t +Ġview er +Ġw oke +Th us +bro ok +Ġdep ressed +Ġbr acket +ĠG or +ĠFight ing +Ġstri ker +Rep ort +ĠPortug al +Ġne o +w ed +19 9 +Ġflee ing +sh adow +ident ified +US E +Ste am +Ġstret ched +Ġrevel ations +art ed +ĠD w +Ġalign ment +est on +ĠJ ared +S ep +Ġblog s +up date +g om +r isk +Ġcl ash +ĠH our +Ġrun time +Ġunw anted +Ġsc am +Ġr ack +Ġen light +on est +ĠF err +Ġconv ictions +Ġp iano +Ġcirc ulation +ĠW elcome +Ġback lash +ĠW ade +Ġrece ivers +ot ive +J eff +Ġnetwork ing +ĠPre p +ĠExpl orer +Ġlect ure +Ġupload ed +ĠMe at +B LE +ĠNaz is +ĠSy nd +st ud +ro ots +ri ans +Ġportray ed +Ġ ?? +ĠBudd ha +s un +Rober t +ĠCom plex +Ġover see +Ġste alth +T itle +ĠJ obs +ĠK um +Ġappreci ation +ĠM OD +Ġbas ics +Ġcl ips +Ġnurs ing +Ġpropos ition +Ġreal ised +ĠNY C +Ġall ocated +ri um +ar an +ĠPro duction +ĠV ote +Ġsm ugg +Ġhun ter +az er +ĠCh anges +Ġfl uct +y on +Ar ray +Ġk its +W ater +Ġuncom mon +Ġrest ing +ell s +w ould +Ġpurs ued +Ġassert ion +omet own +ĠMos ul +ĠPl atform +io let +Ġshare holders +Ġtra ils +P ay +ĠEn forcement +ty pes +ĠAn onymous +Ġsatisf ying +il ogy +Ġ( ' +w ave +c ity +Ste ve +Ġconfront ation +ĠE ld +C apt +ah an +ht m +ĠC trl +ON S +2 30 +if a +hold ing +Ġdelic ate +Ġj aw +ĠGo ing +or um +S al +Ġd ull +ĠB eth +Ġpr isons +Ġe go +ĠEl sa +avor ite +ĠG ang +ĠN uclear +Ġsp ider +ats u +Ġsam pling +Ġabsor bed +ĠPh arm +iet h +Ġbuck et +ĠRec omm +O F +ĠF actory +AN CE +Ġb acter +H as +ĠObs erv +12 1 +Ġprem iere +De velop +Ġcur rencies +C ast +Ġaccompany ing +ĠNash ville +Ġfat ty +ĠBre nd +Ġloc ks +Ġcent ered +ĠU T +augh s +or ie +ĠAff ordable +v ance +D L +em et +Ġthr one +ĠBlu etooth +Ġn aming +if ts +AD E +Ġcorrect ed +Ġprompt ly +ĠST R +Ġgen ome +Ġcop e +Ġval ley +Ġround ed +ĠK end +al ion +p ers +Ġtour ism +Ġst ark +v l +Ġblow ing +ĠSche dule +st d +Ġunh appy +Ġlit igation +ced es +Ġand roid +Ġinteg ral +ere rs +ud ed +t ax +Ġre iter +ĠMot ors +oci ated +Ġwond ers +ĠAp ost +uck ing +ĠRoose velt +f ram +Ġyield s +Ġconstit utes +aw k +Int erest +Ġinter im +Ġbreak through +ĠC her +Ġpro sec +ĠD j +ĠM T +Res p +ĠP T +Ġs perm +ed it +B T +Lin ux +count ry +le ague +Ġd ick +Ġo ct +Ġinsert ing +Ġsc ra +ĠBrew ing +Ġ19 66 +Ġrun ners +Ġpl un +id y +ĠD ian +Ġdys function +Ġex clusion +Ġdis gr +Ġincorpor ate +Ġrecon c +Ġnom inated +ĠAr cher +d raw +achel or +Ġwrit ings +Ġshall ow +Ġh ast +ĠB MW +ĠR S +Ġth igh +Ġ19 63 +Ġl amb +Ġfav ored +ag le +Ġcool er +ĠH ours +ĠG U +ĠOrig in +Ġglim pse +---------------- ---- +L im +Ġche ek +Ġj ealous +- ' +Ġhar ness +ĠPo ison +Ġdis abilities +ne apolis +Ġout look +Ġnot ify +ĠIndian apolis +Ġab rupt +ns ic +Ġenc rypted +Ġfor fe +reat h +Ġr abb +Ġfound ations +Ġcompl iment +ĠInter view +ĠS we +Ġad olesc +Ġmon itors +ĠSacrament o +Ġtime ly +Ġcontem pl +Ġposition ed +Ġpost ers +ph ies +iov ascular +v oid +ĠFif th +Ġinvestig ative +OU N +Ġinteg rate +ĠIN C +ish a +ibl ings +ĠRe quest +ĠRodrig uez +Ġsl ides +ĠD X +Ġfemin ism +Ġdat as +Ġb end +ir us +ĠNig eria +F ox +Ch ange +Ġair plane +ĠLad en +Ġpublic ity +ixt y +Ġcommit ments +Ġaggreg ate +Ġdisplay ing +ĠAr row +Ġ12 2 +Ġrespect s +and roid +s ix +ĠSh a +Ġrest oration +) \ +W S +oy s +Ġillust rate +with out +12 6 +ĠâĶ Ĥ +Ġpick up +n els +Ġ .... +f ood +ĠF en +) ? +Ġphenomen a +Ġcompan ions +ĠW rite +Ġsp ill +Ġbr idges +ĠUp dated +ĠF o +Ġinsect s +ASH INGTON +Ġsc are +il tr +ĠZh ang +Ġsever ity +Ġind ul +14 9 +ĠCo ffee +Ġnorm s +Ġp ulse +ĠF T +Ġhorr ific +ĠDest roy +ĠJ SON +Ġo live +Ġdiscuss es +R est +E lect +ĠW inn +ĠSurv iv +ĠH ait +S ure +op ed +Ġro oted +ĠS ke +ĠBron ze +Ġl ol +Def ault +Ġcommod ity +red ited +Ġliber tarian +Ġforb idden +Ġgr an +à ¨ +Ġl ag +en z +dri ve +Ġmathemat ics +Ġw ires +Ġcrit ically +Ġcarb ohyd +ĠChance llor +ĠEd die +Ġban ning +ĠF ri +Ġcompl ications +et ric +ĠBangl adesh +Ġband width +St op +ĠOrig inally +Ġhalf way +yn asty +sh ine +Ġt ales +rit ies +av ier +Ġspin ning +ĠWH O +Ġneighbour hood +b ach +Ġcommer ce +ĠS le +B U +Ġentreprene ur +Ġpecul iar +ĠCom ments +f re +3 20 +IC S +Ġimag ery +ĠCan on +ĠElect ronic +sh ort +( ( +D ig +Ġcomm em +u ced +Ġincl ined +ĠSum mon +Ġcl iff +ĠMed iterranean +Ġpo etry +Ġprosper ity +ĠRe ce +Ġp ills +m ember +Ġfin ale +un c +ĠG ig +ä ½ +Ġl od +Ġback ward +- + +ĠFor ward +Ġth ri +s ure +Ġso ap +ĠF X +R ES +ĠSe xual +oul os +Ġfool ish +Ġright eous +Ġco ff +terror ism +ust ain +ot er +Ġab uses +ne xt +Ġab usive +Ġthere after +Ġprohib ition +ĠS UP +Ġd ip +Ġr ipped +Ġinher ited +Ġb ats +st ru +G T +Ġflaw ed +ph abet +Ġf og +do ors +Ġim aging +Ġdig its +ĠHung ary +Ġar rog +Ġteach ings +Ġprotocol s +ĠB anks +à ¸ +p ound +ĠC urt +." ) +. / +Ġex emption +end ix +ĠM ull +Ġimpro ves +ĠG amer +d imensional +I con +ĠMarg aret +St atus +d ates +Ġint ends +Ġdep ict +Ġpark ed +J oe +ĠMar ines +chn ology +! ). +Ġjud ged +Ġwe ights +R ay +Ġapart ments +he ster +Ġrein force +Ġoff ender +occ up +Ġs ore +e pt +ĠPH P +ĠB row +Ġauthor ization +ĠR isk +ĠDel aware +ĠQ U +Ġnot ifications +Ġsun light +Ġex clude +d at +Ġm esh +ĠSud an +Ġbelong ed +Ġsub way +Ġno on +ĠInter ior +ol ics +ĠL akers +Ġc oding +Dis claimer +Cal if +O ld +Ġdis l +???? ? +Ġconfir ms +Ġrecruit ment +Ġhom icide +Cons ider +ĠJeff rey +ft y +} ; +Ġobject ion +do ing +ĠLe o +W ant +Ġgl ow +ĠClar ke +ĠNorm an +Ġver ification +Ġpack et +ĠForm ula +Ġpl ag +es ville +Ġshout ing +Ġo v +ĠR EC +ĠB ub +Ġn inth +Ġener g +Ġvalid ity +Ġup s +j ack +Ġneighbor ing +ĠN ec +ew orks +ĠH ab +are z +Ġsp ine +Ġevent ual +ĠLe aders +ĠC arn +Ġprob ation +Ġrom ance +ms g +ĠMechan ical +ER Y +R ock +Ġpart isan +N ode +ass ets +min ent +Ġforeign ers +Ġtest ify +ĠUs ually +l ords +ĠG ren +ĠPow ell +BI L +Ġs r +Ġadd ict +Ġshell s +Ġs igh +ĠY ale +tern ity +Ġ7 50 +E U +ĠR ifle +Ġpat ron +em a +ĠB annon +an ity +Ġtrop ical +ĠV II +c ross +Every thing +ĠIS O +Ġhum ble +ass ing +ĠF IG +Ġupd ating +ys on +Ġcal cium +Ġcompet ent +Ġste ering +Pro t +ĠS Y +ĠFin als +ĠR ug +15 9 +13 7 +ĠG olf +Ġ12 6 +Ġaccommod ation +ĠHug hes +Ġaest hetic +art isan +ĠTw ilight +Ġpr ince +ĠAgric ulture +ĠDis co +Ġpreced ent +Ġtyp ing +author ized +O ption +ĠA ub +l ishes +ach t +m ag +P eter +ĠU FO +mont on +ĠL ith +Ġa rom +Ġsec uring +Ġconf ined +priv ate +Ġsw ords +Ġmark ers +Ġmetab olic +se lect +ĠCur se +ĠO t +g ressive +Ġinc umb +ĠS aga +Ġpr iced +Ġclear ance +Cont ent +Ġdr illing +Ġnot ices +Ġb ourgeois +Ġv est +Ġcook ie +ĠGuard ians +ry s +in yl +Ġ12 4 +Ġpl ausible +on gh +ĠOd in +Ġconcept ion +ĠY uk +ĠBaghd ad +ĠFl ag +Aust ral +ĠI BM +Ġintern ationally +ĠWiki Leaks +I ED +Ġc yn +Ġcho oses +ĠP ill +Ġcomb ining +Ġrad i +ĠMoh ammed +def ense +atch ing +Sub ject +ic iency +Fr ame +Ġ{ " +Ġche ss +Ġtim er +19 0 +Ġt in +Ġord inance +emet ery +Ġacc using +Ġnotice able +Ġcent res +Ġl id +ĠM ills +img ur +Ġz oom +erg ic +Ġcomp ression +pr im +f ind +Ġsur g +Ġp and +ĠK ee +ĠCh ad +cell ence +oy le +Ġsocial ism +ĠT ravis +ĠM Hz +Ġgu ild +ALL Y +ĠSub scribe +ĠRel ated +Ġoccur rence +itch ing +Ġfict ional +Ġcr ush +ĠE A +c od +m ix +ĠTri ple +Ġretrie ve +Ġstimul us +Ġpsych iat +ĠDo or +Ġhomosexual ity +Ġelement ary +Ġcell ular +id ian +ĠL aun +Ġintrig uing +Ġfo am +ĠB ass +id i +its u +Ġass ure +Ġcongr at +Ġbusiness man +ĠBo ost +cl ose +Ġl ied +Ġsc iences +ĠO mega +ĠG raphics +Ġ< = +sp oken +Ġconnect ivity +S aturday +ĠAven gers +Ġto ggle +Ġank le +Ġnational ist +mod el +ĠP ool +ophob ia +V ar +ĠM ons +ator ies +Ġaggress ively +C lear +For ge +act ers +Ġhed ge +Ġpip es +Ġbl unt +Ġs q +Ġremote ly +W ed +as ers +Ġref riger +Ġt iles +Ġresc ued +Ġcompr ised +ins ky +Ġman if +avan augh +Ġprol ifer +Ġal igned +x ml +Ġtri v +Ġcoord ination +ĠP ER +ĠQu ote +13 4 +b f +ĠS aw +Ġtermin ation +Ġ19 0 +Ġadd itions +Ġtri o +Ġproject ions +Ġpositive ly +Ġin clusive +Ġmem br +19 90 +old er +Ġpract iced +ink le +Ar ch +Ġstar ters +ari us +Ġinter mediate +ĠBen ef +ĠK iller +Ġinter ventions +ĠK il +ĠF lying +In v +Ġprem ature +Ġpsych iatric +Ġind ie +Ġcoll ar +ĠRain bow +af i +Ġdis ruption +ĠFO X +cast ing +Ġmis dem +c ro +Ġw ipe +ard on +Ġb ast +ĠTom my +ĠRepresent ative +Ġbell y +ĠP O +ĠBre itbart +13 2 +Ġmess aging +Sh ould +Ref erences +ĠG RE +ist ical +L P +ĠC av +ĠC razy +Ġintu itive +ke eping +ĠM oss +Ġdiscont in +ĠMod ule +Ġun related +ĠPract ice +ĠTrans port +Ġstatist ically +orn s +Ġs ized +p u +Ġca f +ĠWorld s +ĠRod gers +ĠL un +ĠCom ic +l iving +Ġc ared +Ġclim bed +) { +Ġconsist ed +Ġmed ieval +fol k +Ġh acked +Ġd ire +ĠHerm ione +Ġt ended +ce ans +D aniel +w ent +Ġlegisl ators +Ġred es +g ames +Ġg n +am iliar +Ġ+ + +gg y +th reat +Ġmag net +Ġper ceive +Ġz ip +Ġindict ment +Ġcrit ique +g ard +ĠSaf e +ĠC ream +Ġad vent +ob a +Ġv owed +ous ands +Ġsk i +Ġabort ions +u art +Ġstun ned +Ġadv ancing +Ġlack ed +Ġ\ " +Ġsch izophren +Ġeleg ant +Ġconf erences +Ġcance led +ĠHud son +ĠHop efully +Ġtr ump +Ġfrequ encies +Ġmet eor +ĠJun ior +ĠFle et +ĠMal colm +ĠT ools +Ġ ........ +Ġh obby +ĠEurope ans +Ġ15 00 +ĠInt o +Ġs way +ĠApp ro +ĠCom pl +Comm unity +Ġt ide +ĠSum mit +ä » +Ġinter vals +ĠE ther +Ġhabit at +ĠSteven s +lish ing +ĠDom ain +Ġtrig gers +Ġch asing +Ġchar m +ĠFl ower +it ored +Ġbless ing +Ġtext ures +F ive +Ġliqu or +R P +F IN +Ġ19 62 +C AR +Un known +Ġres il +ĠL ily +Ġabund ance +Ġpredict able +r ar +Ġbull shit +le en +che t +M or +M uch +ä ¹ +Ġemphas ized +Ġcr ust +Ġprim itive +Ġenjoy able +ĠPict ures +Ġteam mate +pl er +ĠT ol +ĠK ane +Ġsummon ed +th y +ram a +ĠH onda +Ġreal izing +Ġquick er +Ġconcent rate +cle ar +Ġ2 10 +ĠErd ogan +ar is +Ġrespond s +ĠB I +Ġelig ibility +Ġpus hes +ĠId aho +Ġagg rav +Ġru ins +ur ations +Ġb ans +Ġan at +sh are +Ġgr ind +h in +um en +Ġut ilities +ĠYan kees +Ġdat abases +ĠD D +Ġdispl aced +Ġdepend encies +Ġstim ulation +h un +h ouses +ĠP retty +ĠRaven s +ĠTOD AY +Ġassoci ates +Ġthe rape +cl ed +Ġde er +Ġrep airs +rent ice +Ġrecept ors +Ġrem ed +ĠC e +Ġmar riages +Ġball ots +ĠSold ier +Ġhilar ious +op l +13 8 +Ġinherent ly +Ġignor ant +Ġb ounce +ĠE aster +REL ATED +ĠCur rency +E V +ãĥ ŀ +ĠLe ad +Ġdece ased +B rien +ĠMus k +J S +Ġmer ge +heart ed +c reat +m itt +m und +ĠâĢ ĭ +ĠB ag +Ġproject ion +Ġj ava +ĠStand ards +ĠLeon ard +Ġcoc onut +ĠPop ulation +Ġtra ject +Ġimp ly +Ġcur iosity +ĠD B +ĠF resh +ĠP or +Ġheav ier +ne ys +gom ery +Ġdes erved +Ġphr ases +ĠG C +Ġye ast +d esc +De ath +Ġreb oot +Ġmet adata +IC AL +Ġrep ay +ĠInd ependence +Ġsubur ban +ical s +Ġat op +Ġall ocation +gener ation +ĠG ram +Ġmoist ure +Ġp ine +ĠLiber als +Ġa ides +Ġund erest +ĠBer ry +Ġcere mon +3 70 +ast rous +ĠPir ates +Ġt ense +ĠIndust ries +ĠApp eals +ĠN ear +Ġè£ı ç +Ġlo vers +ĠC AP +ĠC raw +Ġg iants +Ġeffic acy +E lement +ĠBeh avior +ĠToy ota +Ġint est +P riv +A I +Ġmaneu ver +Ġperfect ion +Ġb ang +p aper +r ill +Ge orge +b order +in ters +ĠS eth +Ġcl ues +ĠLe vi +ĠRe venue +14 7 +Ġv apor +Ġfortun ate +Ġthreat ens +Ġve t +Ġdepend ency +ers ed +art icle +ĠBl izzard +Ġch lor +Ġmin us +ĠB ills +Ġcryptoc urrency +Ġmetabol ism +ter ing +Ġp estic +step s +ĠTre asure +ract ed +ĠConst ant +Ġtem p +13 9 +ĠDet ective +ur ally +Ġrecover ing +Ġcort ex +Ġ14 4 +cl osed +Ġprejud ice +aun ted +Ġstorm s +ĠN OW +Ġmach inery +Add ress +Ġcompe lled +27 0 +Ġdesp air +b ane +Ġveget able +Ġbed s +Lear n +Ġcolor ful +Ġsp ike +Ġmarg ins +Ġsymp athy +Ġworks hop +ĠC BC +S at +Ġburn s +ĠG ender +Ġ12 9 +ĠC able +Ġdeb ts +ĠThe resa +Ġreflect ing +Ġa irst +Ġr im +ram id +Ġweakness es +W rit +ogg le +t i +ĠCh arge +Ġwe ighed +Ġ( . +Ġl aughter +Ġrou ter +ĠDemocr acy +D ear +Ġhas ht +Ġd y +Ġhint s +run ning +Ġfin ishes +ar us +M ass +res ult +asc us +Ġv intage +Ġcon qu +Ġwild ly +ac ist +Ġl ingu +Ġprot agonist +st rom +te enth +ĠSol o +m ac +f illed +Ġre nown +it ives +Ġmot ive +ĠAnt ar +ĠM ann +ĠAd just +Ġrock ets +Ġtrou bling +e i +Ġorgan isms +ass is +Christ ian +Ġ14 5 +ĠH ass +Ġsw all +Ġw ax +ĠSurv ival +V S +ĠM urd +v d +stand ard +Ġdrag ons +Ġacceler ation +r ational +f inal +Ġp aired +ĠE thereum +Ġinterf aces +Ġres ent +Ġartif acts +Å « +are l +Ġcompet itor +ĠNich olas +ĠSur face +c pp +ĠT ot +Ġeconom ically +Ġorgan ised +Ġen forced +in ho +Ġvar ieties +Ġab dom +ĠBa iley +id av +ĠSal v +p aid +Ġalt itude +ess ert +ĠG utenberg +are a +op oulos +Ġprofess ors +igg s +ĠF ate +he y +Ġ3 000 +D ist +Ġtw ins +c ill +ĠM aps +Ġtra ps +Ġwe ed +ĠK iss +Ġy oga +Ġrecip ients +ĠWest minster +Ġpool s +ĠWal mart +18 8 +ĠSchool s +att ack +ĠAR M +par agraph +W arning +j l +Ġself ish +anche z +ĠHe ights +F re +ĠS oph +Ġ -------------------------------- +t ml +33 3 +Ġraid s +Ġsatell ites +KE Y +Ġlast s +Ñ Ĥ +In s +ĠD ame +Ġunp redict +// / +gh ai +Ġart illery +Ġcru ise +Ġg el +ĠCabin et +Ġbl ows +ĠE sp +Ġprox imity +ot he +ĠSk ills +ĠU pper +ob o +ĠN DP +Ġenjoy s +Ġrepe ating +ĠConst ruction +ĠQuest ions +H illary +Ġu int +Ġprocess ors +ĠGib son +ĠMult iple +q a +ĠB om +ĠM iles +vent ional +Ġhur ts +s kin +ĠA IDS +Ġadvis ers +ĠR oot +Ġmethod ology +ĠD ale +Ġdet on +ĠKnow ledge +sequ ently +Ġ12 1 +Ġconnect s +C y +ĠD anger +Ġcontribut ors +ĠB ent +Ġbr ass +ĠGun s +int o +ĠFort une +Ġbro ker +bal ance +Ġlength s +Ġv ic +Ġaver aging +Ġappropri ately +ĠCamer a +Ġsand wich +ĠCD C +Ġcoord inate +Ġnav ig +Ġgood ness +l aim +Ġbra ke +Ġextrem ist +ĠW ake +ĠM end +ĠT iny +ĠC OL +ĠR F +ĠD ual +ĠW ine +C ase +Ġref ined +Ġl amp +L ead +Ġb apt +ĠCar b +ĠS add +ĠMin neapolis +PD F +Ear ly +ĠH idden +I ts +ĠT IME +Ġp ap +Ġcommission ed +ĠF ew +ĠCol ts +ĠB ren +Ġbot hered +Ġlike wise +Ex per +ĠSch w +c ry +n n +ĠM itch +im on +M G +b m +UM P +r ays +Ġregist ry +Ġ2 70 +ach ine +re lla +ant ing +00 000 +Ġru ined +sp ot +Ġt a +Ġmaxim ize +Ġincon ven +D ead +H uman +En abled +ĠMar ie +Ġch ill +ĠParad ise +Ġstar ring +ĠLat ino +ĠProt ocol +ĠE VER +Ġsuppl iers +m essage +ĠBro ck +Ġser um +âĸĪâĸĪ âĸĪâĸĪ +Ġen comp +Ġamb ition +ues e +Ġar rows +And rew +Ġanten na +Ġ19 61 +ĠB ark +Ġb ool +ãĤ ª +ĠSt orage +Ġrail way +Ġtoug her +ĠC ad +Ġwas hing +P y +' ] +em bed +ĠMem phis +ack le +Ġfam ously +ĠF ortunately +ov ies +Ġmind set +Ġsne ak +ĠD h +RA W +ĠSim pson +Ġliv est +Ġland mark +Ġc ement +L ow +Ġthr illed +ĠCour se +in el +Ġch uck +id ate +gl obal +Ġwh it +Ġ � +ad ays +s ki +ĠS V +Ġvir uses +30 6 +ĠResp ons +Ġthe aters +ĠBr anch +ĠGene va +ĠM K +Ġunbel iev +Ġcommun ist +Orig inal +ĠRe ceived +ĠTrans fer +ĠAr g +In put +ĠStr ategy +Ġpal ace +the ning +D ri +Ġsent encing +umbn ail +Ġp ins +re cy +Ġs iblings +Get ting +ĠB U +ĠNorth west +Ġprolong ed +ĠSak ura +C omb +ĠB our +Ġinadequ ate +ĠK ash +Ġus ername +ĠImpro ve +Ġbatt ling +ĠM AC +Ġcurric ulum +Ġs oda +ĠC annon +Ġsens ible +sp ons +De cember +Ġw icked +ĠP engu +Ġdict ators +ĠHe arts +og yn +Ġsimilar ities +ĠSt ats +Ġh ollow +it ations +": [ +Ġh over +ĠList en +s ch +S und +Ġc ad +ĠPar ks +Ġl ur +Ġhy pe +ĠL em +N AME +is ure +Fr iday +Ġshoot s +Ġclos es +Ġd b +ĠR idge +ĠDiff erent +Ġrepl ies +ĠBroad way +op ers +Ġint oler +ĠZe us +akes pe +Ġpropri etary +Ġrequest ing +Ġcontro llers +ĠM IN +im edia +be cca +Ġexp ans +Ġoil s +B ot +ĠCh and +Ġpr inter +Ġto pped +ĠP OL +ĠEar lier +S ocial +av in +Ġdecre ases +ĠSe b +Ġspecific ations +ĠBl ast +ĠK urt +Ġfre el +B rown +Ġdil ig +ro e +ĠPro blem +ĠQu ad +Ġdecent ral +ĠV ector +an ut +Ġplug ins +ĠGreg ory +Ġfuck ed +el ines +ĠAmb assador +t ake +Ġcle ans +ong yang +An onymous +st ro +" } +al ine +ĠO dd +ĠE ug +2 16 +Ġbo il +ĠP owers +Ġnurs es +Ob viously +ĠTechn ical +Ġexceed ed +OR S +Ġextrem ists +Ġtr aces +ex pl +Ġcom r +ĠS ach +) / +Ġm asks +Ġsc i +B on +Ġreg ression +we gian +Ġadvis or +it ures +ĠV o +ex ample +ĠInst ruct +Ġs iege +Ġredu ctions +pt r +Ġstat utory +Ġrem oves +Ġp uck +red its +Ġbe e +Ġsal ad +Ġpromot ions +ĠJosh ua +with standing +ET H +ĠCh a +im us +Ġexpend iture +aun ting +Ġdelight ed +Ġ15 5 +be h +Ġcar pet +ĠSp art +Ġj ungle +l ists +Ġbull ying +ĠNob el +ĠGl en +Ġreferen ced +Ġintrodu ces +se in +Ġcho pped +gl ass +ĠW rest +Ġneutral ity +Ġâ Ļ +Ġinvestig ator +Ġshel ves +Ġun constitutional +Ġreprodu ction +Ġmer chant +m ia +Ġmet rics +Ġexplos ives +ĠSon ia +Ġbod ily +Ġthick ness +Ġpredomin antly +ĠAb ility +Ġmon itored +IC H +Ġ] . +ĠMart inez +Ġvis ibility +Ġqu eries +Ġgen ocide +ĠWar fare +Qu ery +Ġstud ios +Ġemb ry +Ġcorrid or +Ġclean ed +com plete +ĠM H +Ġenroll ment +ING S +Ġimpact ed +Ġdis astrous +ĠY un +ĠCl aire +ĠBas ically +y t +uster ity +Ġindirect ly +w ik +Ġd od +ĠCar r +Ġam p +Ġprohib it +ĠIn itial +ĠR d +ij i +Ġeduc ate +c orn +i ott +ĠBeaut y +Ġdetect ive +ĠCon n +s ince +Ġst agger +Ġob ese +Ġb ree +olog ic +is se +walk er +Ġbl ades +Ġlaw ful +fun c +ĠBeh ind +Ġappet ite +Ġ( * +Ġt ennis +Ġoff spring +Ġj ets +Ġstruct ured +Ġafore mentioned +N ov +Ġsc aling +f ill +Ġst ew +Ġcur b +ĠStep han +ed In +S F +ob ic +é ŃĶ +ou g +ĠM M +Ġgen etically +ope z +13 6 +Ġu mb +anc ers +Ġcoh ort +Ġmerch andise +Ġimp osing +ĠLegisl ature +ĠArch ive +iv ia +ĠN aval +Ġoff ences +Ġmir acle +Ġsn apped +Ġf oes +Ġextensive ly +ĠR af +Ġc ater +ed ience +K it +ĠB in +Ġrecomm ends +ĠC ities +Ġrig id +ĠRE AD +ĠNob le +ĠT ian +Ġcertific ates +ant is +o iler +ĠBudd hist +d id +Ġsurvey ed +Ġdown ward +Ġprint s +ĠMot ion +ron ics +ĠS ans +oss ibly +u ctions +Ġcolon ies +ĠDan ish +un it +Ġsp oil +Ġadvis ory +ber ries +Pl an +Ġspecific ation +op hers +ĠRes ource +Ġsh irts +prising ly +commun ications +Ġtriv ial +Ġmention ing +ise xual +Ġsupp lements +Ġsuper vision +B P +v or +Ġw it +Ġco oldown +Ġplaint iff +ĠReview s +ĠS ri +ĠM int +ĠSug ar +Ġafter ward +ĠPri est +ĠInvest ment +og ene +ĠT aking +Ġstretch ing +Ġinflamm ation +ĠTe hran +Ġl ining +Ġfree zing +ĠEnt ity +Ġins piring +spe cial +pr ice +Ġsu e +ĠP orter +oun ge +ET A +ĠD erek +ĠLu is +u o +ym ph +Ġex terior +ih il +ĠAsh ley +in ator +Ġnut rients +ĠTh rones +Ġfin ances +ĠIn spect +Ġspe cially +ĠRequ ired +ĠP TS +ĠViol ence +oint ed +sh ots +Ġex cerpt +co on +IN S +ĠG ri +Ġrecogn ised +We ek +You ng +Ġv om +is le +ĠCur ry +ĠBudd h +Ġnot ebook +Ġd urable +/ ? +ĠG ad +ĠP upp +Ġforg ive +p ark +Ġpersonal ities +an alysis +cl amation +Ġelev ator +Ġware house +ĠR ole +un n +Ġillust ration +ĠSc an +Ġatmosp heric +Im port +AN C +rict ed +f u +01 0 +Ġar che +Ġreward ed +akespe are +Ġintern ally +ĠR BI +alk er +Ġeleph ant +ow itz +ĠP izza +Ġbip artisan +é s +Ġslow ed +ĠSt ark +Ġover ride +OU S +Ġ3 20 +undred s +ĠDe ck +ĠC ensus +be e +14 6 +ot or +Ġ ip +Ġu b +oc ations +ĠBut ton +r ice +Ġc ripp +ff f +Ġorig inated +Ġoverwhel med +app a +Ġfore most +âĢ ij +ĠL EG +re lease +eat ured +at ches +Ġre ps +Ġl ending +ĠRe ference +ĠCl ient +16 5 +vent h +Com plete +ĠPat rol +Ġsw orn +c am +Ġshut tle +ĠR alph +Ġh ometown +- , +on al +ĠB P +å ı +Ġpersu ade +ĠAlex and +Ġcomb ines +Ġv ivid +ĠL ag +Ġenc oding +Ġsal vation +w en +ĠRec overy +i ya +Un iversity +ĠB iden +Ġbud gets +ĠTex ans +f its +Ġhon ored +Ġp ython +T D +## # +cl one +Ġbl ink +ĠL iquid +Ġunemploy ed +Ġcl ashes +ĠCoun sel +Ġdirect ing +Ġpun ct +ĠFal cons +Ġsh ark +ĠDam ascus +Ġje ans +Ġemb ark +Ġse ize +Ġup wards +2 80 +ĠE z +ĠAny thing +Ġex otic +l ower +ĠCreat or +ĠU m +Ġsubur bs +ber ger +ĠW end +Ġm int +ĠX X +ĠD ro +Ġsuff ers +Ġher b +t ree +Ġfrag ile +Ġflood ed +ĠAl cohol +ole an +ny der +ĠK O +F ram +Ġ13 6 +Ġow ed +ĠMe lee +ĠH ash +Ġwh isk +Ġsu do +r r +Qu ick +app ro +Ġi i +ĠEx amples +he e +Ġpromot es +per ature +k ar +ĠHon or +Ġs odium +ĠL if +ros so +intend ent +Ġcorrespond ent +F ound +sec ret +Ġident ifies +ag ne +Ġl ou +ĠP P +Ġcoinc idence +m ove +Ġmilit ia +Ġinf iltr +ĠPrim ary +Ġpitch ing +ĠI b +ĠGO OD +ãĤ ¸ +ĠW izards +ir al +ĠVen us +R R +ĠâĢ ķ +ĠCase y +Ġsad ly +Ġadm ire +Ġembarrass ed +c b +M el +Ġtub es +Ġbeaut ifully +ĠQueens land +Bel ow +re z +qu et +ple asant +Ġ « +C amp +Ġdec isive +19 98 +ĠL amb +ut ton +h n +ĠJ agu +au nder +ĠC ord +Ġcl erk +Ġca ffe +Ġwip ed +Ġre im +ĠMount ains +Ġimprison ed +Ġdevelop s +ĠP ra +Ġmodel ing +Any one +ance l +ĠS it +Ġshield s +Ġl awn +Ġcard iovascular +Ġdemonstr ating +Ġpar se +ĠIsrael is +Ġeuro s +14 3 +Ġgl orious +ins ki +ec d +Ġcondition ing +Ġhel pless +Ġmicro sc +ĠHar bor +Ġst akes +Ġ2 60 +Ġun equ +ĠFl oyd +Ġd amp +Ġappar atus +ĠLaw s +Ġcoun ters +Ġindu ce +at able +ĠAh med +Ġsl am +N ovember +Ġpers ist +Ġim minent +á n +Ġsh red +Ġph ases +ĠEd monton +ĠArm strong +ĠMe et +ĠK itty +Ñ Ģ +c irc +ĠAd ult +Ġa rose +ĠX en +D an +g ow +Ġsuper f +ĠAd mir +Ġend ure +Ġkey word +yr us +Ġy arn +Ġpath way +ĠHop kins +mid t +Ġcens orship +d ependent +Ġinstruct or +S ources +Ġto e +Ġball oon +N ob +Ġsw ear +ĠCast ro +Ġgl oss +ĠK avanaugh +Ġremark ably +Ph otos +ĠN om +ĠS outheast +y ers +Ġvalid ation +Ġcann on +ĠVict ory +ĠPier re +Ġcaut ious +Aud io +Ġf etch +ĠG ift +ĠH yp +Ġrem edy +Z E +Ġsc ent +Ġbe ard +ĠR ut +- " +Ġpat ents +H y +Ġun just +Ġpot ato +Ġforth coming +Ġche f +ĠR ift +aff e +ĠR OM +ĠL aunch +Ġp ads +ĠNe o +Ġon set +Ġsquee ze +s afe +Ġpref ix +ĠT M +ĠN early +ĠClin ical +ĠM ental +ot iation +ĠUn ic +ant ry +ĠC ir +Ġep it +à ¦ +Ġextract ed +verse ly +ri ad +Ġstr ains +Ġto ps +Ġpo em +ĠRand y +ĠMap le +TH ER +up iter +ĠSS D +ļ é +Ġun con +per ing +Ġsle pt +in ers +Ġunder water +ĠEv idence +g one +20 5 +Ġhistor ians +Ġsynt hesis +Ġf rog +b asketball +Ġvibr ant +Ġsub ord +Ġ3 65 +ĠD ial +Ġcooper ate +HA HA +Ġgreet ed +15 8 +Ġj azz +Ġinto x +ĠWalk ing +Ġsuper visor +ĠF usion +ĠMer cedes +s end +H am +s d +n l +Ġtour s +ĠF IFA +Ġcul p +g d +30 4 +Ġple as +Ġillust rates +ĠColomb ia +Ġhighlight ing +ĠSum mary +Ġexp osing +ĠD ru +Ġir ony +r itional +ĠCar roll +ĠEll is +P ict +ĠR apt +Ġad apter +Ġun m +Ġcor pse +Ġceleb rities +D en +at um +ĠAp ocalypse +ĠW ag +lin ing +Ġhorm ones +R ub +ĠX i +ĠV aults +20 8 +alky rie +inos aur +Ġfeed s +v ity +Ġdefe ating +W ait +Ġemphas ize +ĠSteel ers +yr inth +le ys +ĠWhe never +Current ly +ĠCl ock +Ġcollect ively +any on +ĠJ P +Ġment ality +Ġdownload s +Ġsurround ings +ĠBarn es +Ġflags hip +Ġindic ators +Ġgra pp +Jan uary +ĠElement al +ĠAthen a +ib al +Ġs ights +Ġcap ita +ĠTreat y +Ġvo iced +ĠG az +let te +Ġy a +Ġexp ired +Leg end +H ot +n ature +Ġunst able +Ġ2 80 +à º +Com ment +AL E +Ġquest s +Ġhand ler +n is +Ġvers atile +Ġconce al +enge ance +ĠInter active +Ġobs essed +ĠDog s +Ġcr acked +S ound +s v +ĠD ylan +ro ads +f x +ĠCath olics +ĠH ag +Ġsl ammed +Ġgl owing +s ale +Ġtiss ues +ĠCh i +ne e +Ġc her +s ic +ur rection +Ġb acon +ul atory +) ." +Ġir regular +FOR M +ass ed +Ġintention al +Ġcompens ate +ĠSpe aking +ĠS ets +15 3 +Ġconvent ions +b ands +em ade +Ġe cc +ĠWin ston +ĠAssass in +ĠBelg ian +Ġdepend ence +Ġnic he +Ġb ark +ĠJ azz +Ġdisadvant age +Ġgas oline +Ġ16 5 +çļ Ħ +ess a +mod ule +ang ular +O Y +ĠTreat ment +it as +ol ation +ĠArn old +Ġfe ud +ĠN est +Ġthe atre +ew ater +Ġmin ors +olic y +ĠH aven +div ision +Ġtr unk +F ar +ĠP ull +Ġcapt uring +Ġ18 00 +ĠTe en +Ġex empl +Ġclin ics +ĠB urg +Ġsubst it +Ġpay load +ĠL av +ĠT roy +ĠW itness +Ġfrag ments +Ġpass words +Ġg ospel +ĠG in +Ġten ants +ol ith +S ix +Pre vious +ĠAg es +ĠDar win +Ġbl at +Ġem pathy +sm ith +b ag +ĠE cho +ĠC amb +ĠM add +ĠB oo +Ġred e +ĠBurn ing +Ġsmooth ly +ĠAd rian +ĠV ampire +ĠMon sters +ste am +Sty le +M a +re a +ĠD war +aly st +urs or +Ġelim ination +Ġcrypt o +ch t +ĠE ternal +â̦ ] +ĠS orce +I ll +N ER +Ġu h +Con clusion +w age +Ġresp ir +Ġrem inis +het ical +Ġg y +Ġutil ized +ic idal +Ġ19 00 +Ġhun ters +ĠSw an +ĠRe act +Ġvis itor +ĠThanks giving +30 8 +Post s +Ġh ips +19 97 +om ers +Ġkn ocking +ĠVeh icle +Ġt il +Ġ13 8 +Ġm i +ĠInvest igation +ĠKen ya +Ġcas ino +Ġmot ives +Ġreg ain +re x +Ġweek ends +Ġstab bed +bor o +Ġexplo ited +ĠHA VE +ĠTe levision +c ock +Ġprepar ations +Ġende av +ĠRem ote +ĠM aker +ĠPro du +ĠEv an +Ġinform ational +ĠLouis ville +15 4 +ĠDream s +Ġpl ots +ĠRun ner +Ġhur ting +Ġacad emy +ĠMont gomery +n m +ĠL anc +ĠAl z +2 10 +el ong +Ġretail er +Ġar ising +Ġrebell ion +Ġbl onde +play ed +Ġinstrument al +C ross +Ġret ention +Ġtherape utic +Ġse as +Ġinfant ry +ĠCl int +Ġprompt ing +Ġbit ch +Ġst ems +ĠK ra +Ġthe sis +ĠB og +ru ed +Ġk ings +Ġcl ay +ific ent +ĠY ES +ĠTh ing +ĠCub s +vey ard +els h +in arily +ĠE y +ĠRoll ing +Ġev olving +Ind ia +Ġrecogn izes +Ġgrad uation +is ers +Ġfert ility +ĠMil an +Comm and +Ġbox ing +Ġ19 43 +Ġgl uten +ĠEm ir +Ġid ol +Ġcon ceived +ĠCre ation +Mer it +udd y +uss ions +ĠLie utenant +iet al +Ġunch anged +ĠSc ale +ĠCrime a +ball s +ator ial +Ġdepth s +Ġempir ical +Ġtrans m +Ġuns afe +miss ible +com fort +15 6 +Ġmechan ic +00 2 +l ins +Ġsm oked +P os +Ġslow ing +Ġl av +Tex as +Ġche ating +ĠMet ropolitan +eth yl +Ġdiscover ing +as se +Ġpen cil +ĠPy ongyang +Ġclos et +ĠShe et +ĠEnt ry +ou stic +Ġmy st +er ate +ari at +Ġminer als +Ġmusic ian +ĠP ul +ĠM az +24 9 +Ġper missions +Ġ iv +en ary +ick ers +ĠB ing +he a +en able +Ġgri ev +Ġassert ed +ĠColon el +Ġaff idav +w o +Ġse ated +ĠR ide +Ġpaint ings +ĠP ix +Ġ13 7 +ish i +umb ai +g otten +ĠEar l +Ġin ning +Ġc ensus +Ġtrave lled +ĠCons ult +18 5 +b ind +Ġsimpl icity +Ġoverlook ed +ĠHelp ful +Ġmon key +Ġoverwhelming ly +Bl ood +ĠFl int +ĠJ ama +ĠPres ent +ĠR age +ĠT A +pt ive +Ġturn out +w ald +ĠD olphins +ĠV PN +Ġon ion +Ġcraft ing +m ma +ĠMerc ury +Ġarr ange +Ġalert s +ĠO T +zb ollah +Ġg ases +ĠRichards on +s al +l ar +Ġfro st +Ġlower ing +Ġacc laim +Ġstart ups +ĠG ain +ess ment +Ġguard ian +äº º +ĠP ie +ĠL inks +Ġmer its +Ġaw ake +Ġparent al +Ġexceed s +Ġid le +ĠPil ot +Ġe Bay +ĠAc cept +ipe g +C am +ĠK ot +Ġtrad ers +olit ics +unk er +ĠP ale +os i +an mar +Ġ19 47 +ĠF ell +est ial +it ating +G F +ĠS r +if ted +Ġconnect or +ĠB one +ill es +2 60 +h ma +Ġoverl ap +ĠGit Hub +Ġclean er +ĠBapt ist +ĠW AS +Ġlung s +Ñ ģ +ĠB UT +Ġc ite +Ġpit ched +reat ment +Ġtro phies +ĠN u +38 6 +ĠPr ide +Ġattend ees +[ ] +17 9 +Ġspat ial +Ġpri zes +ĠRel igion +Ġshow case +ĠC ategory +vid ia +T arget +Pro perty +? , +Ġf usion +p ie +ĠU CLA +Ġsound track +Ġprin cess +ĠC aval +sh ould +Ġlim bs +Back ground +Ġlone ly +Ġc ores +ĠT ail +she et +Ġ13 2 +R a +ãĤ « +ĠB olt +Ġbook ed +Ġadmin ister +Ġequ als +w y +Ġobserv ing +ĠBar on +ĠAd obe +Ġv irgin +ĠSocial ist +M ove +gh azi +ĠLind a +2 12 +Ġbre wing +Ġmerch ants +bur se +Ġdiv or +Ġmet als +ĠN er +Ġsum s +ĠEn emy +Ġen vision +Ġgrant ing +ĠH oney +ĠSk yrim +Ġsoc io +gr aded +Ġselect ive +W ASHINGTON +Ġ19 48 +ĠSir ius +ĠG ross +act ivity +ĠI van +Ġfur ious +BS D +ĠPre vious +Ġrespons ive +Ġchar itable +Ġle aning +ĠP ew +Ġviol ates +\\\\ \\\\ +ĠCom ing +w ire +Ġpo et +Ġres olutions +comm and +ĠPortug uese +Ġnick name +Ġde af +Feb ruary +Ġrecogn ise +Ġentire ty +Ġseason al +pl aced +ĠTe legraph +Ġmicro phone +our ing +Ġgr ains +Ġgovern ed +Ġpost p +ĠW aters +in ement +Ġund ocumented +ĠCom cast +Ġf ox +Ġassault s +re on +man y +ĠJen kins +ĠAny way +Ġassess ments +Ġdown s +ĠM ouse +Ġsuper b +k t +ĠD ow +Ġtax ation +4 01 +Ġsm iles +Ġundert aken +Ġex h +Ġenthusi astic +Ġtw ent +Ġgovernment al +Ġautonom y +ĠTechn ologies +ĠCh ain +Ġpreval ent +f b +Ġnic otine +og ram +j ob +Ġawa iting +ĠMen u +Ġdep uties +k ov +ish ops +But ton +ĠShan ghai +Ġdies el +ĠD uck +R yan +ĠPC s +N F +j ury +ent e +Ġinacc urate +edd y +Wh atever +Ġshow c +ĠN ad +od us +et r +Ġplaint iffs +ĠW OR +ĠAss ange +Ġpriv at +Ġpremium s +Ġt am +UR L +Ġel ites +ĠR anger +otten ham +ĠH off +ĠAt hens +Ġdefin ite +Ġs ighed +Ġeven ly +2 11 +ĠAm ber +ak ia +Ġmail ing +Ġcr ashing +ĠConfeder ate +ru gged +W al +ĠDep ths +Ġjuven ile +Ġreact or +Introdu ction +ĠDel uxe +19 95 +ĠS anchez +ĠM ead +iv able +: - +ĠPlan ning +ĠT rap +qu in +ĠProt ect +ve red +In formation +Ġkid ney +inn amon +l as +Ġpolic ing +Ġtoler ate +ĠQ i +Ġbi ased +F ort +ĠK i +s ave +Ġprivile ged +Ġbe asts +ĠGl as +ĠC inem +Ġcome back +Sund ay +Ġext inction +h ops +Ġtrans mit +Ġdoub les +ĠFl at +16 7 +Ġdis puted +Ġinjust ice +f oo +V ict +role um +ĠJul ie +Con text +ĠR arity +iss ue +Comp onent +Ġcounsel ing +an ne +d ark +Ġobject ions +u ilt +Ġg ast +Ġpl ac +Ġun used +ãĥ ĩ +ĠT rial +ĠJ as +hed ral +ob b +Ġtempor al +ĠPR O +ĠN W +ĠAnn iversary +L arge +Ġther m +Ġd avid +Ġsystem ic +ĠSh ir +m ut +ĠNe pt +add ress +Ġscan ning +Ġunderstand able +Ġcan vas +C at +ĠZ oo +Ġang els +L O +ĠStat ement +ĠS ig +ov able +ĠA way +sh aring +ocr ats +st ated +Ġweigh ing +N or +w ild +B ey +Ġaston ishing +ĠReyn olds +Ġop ener +Ġtrain er +Ġsurg ical +p n +Ġadjust ing +whe el +Ġf rown +erv ative +Ġsusp end +With in +te in +Ġobst acle +Ġliber ties +ym es +Ġur anium +ans om +an ol +ub a +ĠL oss +Ġa rous +ĠHend erson +W ow +s pl +c ur +ĠÂ Ń +Ġtheir s +Dam age +Ġdownload ing +Ġdisc ern +ĠSt o +ĠFl a +Ġh ath +ĠA j +Ġun pleasant +Europe an +exp ensive +Ġscreens hot +ĠU V +Ġall ied +ĠPers ian +Ġmonop oly +Ġat om +ĠReds kins +"> < +Ġcan cell +Ġcinem a +13 1 +f air +ĠAlf red +Ġd uck +arg s +22 3 +ĠIS I +Ġsign aling +in ar +Ġlaugh s +Ġfor wards +Ġreck less +Ġlisten ers +at ivity +Ġvast ly +n ant +L ess +ĠHun ting +ĠScient ific +IT ED +Ġkn ight +ĠH TC +us a +t mp +Ġr ude +ĠLegend ary +Ġar ises +B ad +ĠCl aim +pe g +Ġreal ities +Th ink +Ġ ° +Ġro de +Ġstri ve +Ġan ecd +Ġshort s +Ġhypot hes +Ġcoord inated +ĠGand hi +ĠF PS +R ED +Ġsuscept ible +Ġshr ink +ĠCh art +Hel p +Ġ ion +de ep +rib es +ĠK ai +ĠCustom er +Sum mary +Ġc ough +w ife +Ġl end +Ġposition ing +Ġlot tery +ĠC anyon +Ġf ade +Ġbron ze +ĠKenn y +Ġbo asts +ĠEnh anced +rec ord +Ġemer gence +Ġa kin +ĠB ert +it ous +âĸ ij +Ġst ip +Ġexch anged +om ore +als h +Ġreserv oir +Ġstand point +W M +Ġiniti ate +Ġdec ay +Ġbrew ery +Ġter ribly +Ġmort al +lev ard +Ġrev is +N I +el o +Ġconf ess +ĠMS NBC +Ġsub missions +Cont roller +Ġ20 2 +ĠR uth +} ); +ĠAz ure +Ġ ." +20 6 +ĠMarket ing +Ġl aund +ien cies +Ġrenown ed +ĠT rou +ĠN GO +ble ms +Ġterr ified +Ġwar ns +Ġper t +Ġuns ure +4 80 +ale z +ult z +ĠOut side +Ġst yl +ĠUnder ground +Ġp anc +Ġd ictionary +Ġf oe +rim inal +ĠNor wegian +Ġj ailed +Ġm aternal +é e +ĠLu cy +c op +Ch o +Ġuns igned +ĠZe lda +ĠIns ider +ĠContin ued +Ġ13 3 +ĠNar uto +ĠMajor ity +16 9 +ĠW o +ãĤ ĵ +Ġpast or +Ġinform al +Ð ½ +an throp +jo in +ãģ Ĺ +it ational +N P +ĠWrit ing +f n +ĠB ever +19 5 +Ġy elling +Ġdr astically +Ġe ject +Ġne ut +Ġth rive +ĠFre qu +ou x +Ġpossess es +ĠSen ators +ĠD ES +ĠSh akespeare +ĠFran co +ĠL B +uch i +Ġinc arn +Ġfound ers +F unction +Ġbright ness +ĠB T +Ġwh ale +ĠThe ater +m ass +ĠD oll +S omething +Ġecho ed +ĠHe x +c rit +af ia +Ġgodd ess +Ġele ven +ĠPre view +ĠAur ora +Ġ4 01 +uls ive +ĠLog an +in burgh +ĠCent ers +ĠON LY +ĠA id +Ġparad ox +Ġh urd +ĠL C +D ue +c ourt +Ġoff ended +Ġeval uating +ĠMatthew s +Ġto mb +Ġpay roll +Ġextra ction +ĠH ands +if i +Ġsuper natural +ĠCOM M +] = +dog s +Ġ5 12 +ĠMe eting +Rich ard +ĠMax imum +Ġide als +Th ings +m and +ĠReg ardless +Ġhum ili +b uffer +L ittle +ĠD ani +ĠN ak +Ġliber ation +ĠA be +ĠO L +Ġstuff ed +ac a +ind a +raph ic +Ġmos qu +Ġcampaign ing +Ġoccup y +S qu +r ina +ĠW el +ĠV S +Ġphys ic +Ġp uls +r int +oad ed +ET F +ĠArch ives +Ġven ues +h ner +ĠTur bo +Ġl ust +Ġappeal ed +que z +il ib +ĠTim othy +Ġo mn +d ro +Ġobs ession +ĠSav age +19 96 +Gl obal +J es +2 14 +Ġsl iding +Ġdisapp ro +ĠMag ical +Ġvolunt arily +g b +ane y +Ġprop het +ĠRe in +ĠJul ia +ĠW orth +aur us +Ġb ounds +ie u +)) ) +Ġcro re +ĠCitiz en +S ky +Ġcolumn ist +Ġseek ers +ond o +IS A +ĠL ength +Ġnost alg +Ġnew com +Ġdet rim +ent ric +3 75 +ĠG E +Ġaut op +Ġacadem ics +App Data +ĠS hen +Ġid iot +ĠTrans it +Ġteasp oon +W il +K O +ĠCom edy +> , +Ġpop ulated +W D +Ġp igs +ĠO culus +Ġsymp athetic +Ġmar athon +19 8 +Ġseiz ure +s ided +Ġd op +irt ual +L and +ĠFl oor +osa urs +... ] +Ġl os +Ġsubsid iary +E Y +ĠPart s +ĠSt ef +ĠJud iciary +Ġ13 4 +Ġmir rors +Ġk et +t imes +Ġneuro log +Ġc av +ĠGu est +Ġtum or +sc ill +ĠLl oyd +E st +Ġcle arer +Ġstere otypes +Ġd ur +not hing +Red dit +Ġnegoti ated +---------------- -------- +23 5 +Ġfl own +ĠSe oul +ĠRes ident +ĠS CH +Ġdisappear ance +ĠV ince +g rown +Ġgrab s +r il +ĠInf inite +ĠTw enty +Ġpedest rian +Ġjer sey +ĠF ur +ĠInf inity +ĠEll iott +Ġment or +Ġmor ally +Ġob ey +sec ure +iff e +Ġantib iotics +ang led +ĠFre eman +ĠIntrodu ction +J un +Ġm arsh +ic ans +ĠEV ENTS +och ond +W all +icult y +Ġmisdem eanor +Ġl y +Th omas +ĠRes olution +Ġanim ations +ĠD ry +Ġinter course +ĠNew castle +ĠH og +ĠEqu ipment +17 7 +Ġterrit orial +Ġarch ives +20 3 +Fil ter +ĠMun ich +Ġcommand ed +ĠW and +Ġpit ches +ĠCro at +Ġrat ios +ĠM its +Ġaccum ulated +ĠSpecific ally +Ġgentle man +acer b +Ġp enn +Ġa ka +ĠF uk +Ġinterven e +ĠRef uge +ĠAlz heimer +Ġsuccess ion +oh an +d oes +L ord +Ġsepar at +Ġcorrespond ence +Ġsh iny +P rior +Ġs ulf +Ġmiser able +Ġded ication +( ). +Ġspecial ists +Ġdefect s +ĠC ult +ĠX ia +Ġje opard +ĠO re +Ab ility +Ġle ar +Ġamb itions +ĠB MI +ĠArab s +Ġ19 42 +Ġpres ervation +ific ate +Ġash amed +l oss +ĠRest aur +Ġrese mble +Ġen rich +ĠK N +ĠCl an +fl oat +Ġplay able +IT T +Ġharm ony +arr ison +ĠWe instein +w ere +Ġpoison ing +ĠCom put +ĠWord Press +m ajor +ĠVal ve +F an +ĠTh row +ĠRom ans +ĠDep ression +ad os +Ġtort ured +Ġbal ancing +bott om +Ġacqu iring +ĠMon te +ard i +Ġa ura +Ġ# # +ĠStand ing +ĠAtl as +C F +Ġintr ins +ĠBen ghazi +Ġcamp ing +Ġt apped +bl ade +st rous +ĠR abb +ĠW ritten +t ip +ĠNe igh +ster dam +ĠAll ow +ĠHe aling +ĠR hod +n um +Ġcaffe ine +ĠPer cent +Ġbo o +Ġapp les +30 5 +Ġwel coming +Ġappl aud +Ġa usterity + ± +ĠRe ality +ef e +å ® +Ġsu cks +Ġtab s +ĠPay Pal +Ġback pack +Ġgif ted +abul ary +ĠSc out +ir teen +Ġch in +Ġo mitted +Ġnegative ly +Ġaccess ing +ĠE arn +Ġambul ance +Ġhead phones +Ġ20 5 +ĠRef resh +p resident +ĠKit chen +ĠEnt ered +ĠS nyder +00 5 +om ical +Ġborrow ed +ĠN em +Ġav iation +Ġst all +rim ination +Ġuniform s +it ime +ĠSim mons +ener gy +ab lished +y y +qual ified +Ġrall ies +ĠSt uart +fl ight +Ġgang s +r ag +Ġv ault +lu x +ĠCom par +Ġdesign ation +20 9 +ĠJ os +d ollar +z ero +Ġwell s +30 3 +Ġconstitu ents +Ġhe ck +Ġc ows +Ġcommand ers +Ġdifferent ial +ĠC atherine +29 9 +Ġval ve +Ġbr ace +Ġperspect ives +c ert +f act +icular ly +ĠMc N +pl anes +Ġint ric +Ġpe as +ov an +Ġtoss ed +ret ch +ĠL opez +Ġunf amiliar +de ath +ĠA part +ĠCh ang +Ġrelie ved +rop he +Ġair ports +Ġfre ak +ut il +M ill +ĠCh in +ĠOw en +m ale +ĠBro ken +ĠWind s +ro b +r ising +Ġfire fighters +Ġauthor itarian +Ġ14 8 +Bit coin +ex ternal +Ġbrow sers +iche ver +or ian +Ġun b +Ġpo ke +ĠZ ot +M id +ĠPop ular +Ġco vert +Ġcont ributes +Ġ6 50 +Ġcont ention +G ate +Ġcons oles +Ġchrom os +ĠI X +Ġvis ually +ĠE isen +Ġjewel ry +Ġdeleg ation +Ġacceler ate +ĠR iley +Ġsl ope +Ġind oor +it ially +Ġhuge ly +Ġtun nels +Ġfin ed +Ġdirect ive +Ġfore head +ustom ed +Ġsk ate +Mus ic +g as +Ġrecogn izing +am bo +Ġover weight +ĠGr ade +Ù Ĭ +Ġsound ing +Ġlock ing +ĠR EM +St ore +Ġexc av +ĠLike wise +ĠL ights +Ġel bow +ĠSupp ly +w ic +Ġhands ome +19 94 +C oll +Ġadequ ately +ĠAssoci ate +Ġstri ps +Ġcrack down +Ġmar vel +ĠK un +Ġpass ages +@@ @@ +ĠT all +Ġthought ful +names e +Ġprost itution +bus iness +Ġball istic +person al +c ig +iz ational +R ound +ĠÂłĠÂł ĠÂłĠÂł +ĠCole man +Ġadm itting +ĠPl ug +Ġbit coins +ĠSu z +Ġfair ness +Ġsupp lier +Ġcatast rophic +ĠHel en +o qu +M arc +ĠArt icles +g ie +Ġend angered +Ġdest iny +ĠVol t +ol ia +ax is +Ġche at +Ġun ified +IC O +qu ote +30 2 +ĠS ed +Ġsupp ression +Ġanaly zing +Ġsqu at +Ġfig uring +Ġcoordin ates +Ġch unks +Ġ19 46 +Ġsub p +Ġw iki +ĠFor bes +ĠJ upiter +ĠE rik +im er +ĠCom mercial +\ ) +Ġlegitim acy +Ġd ental +ĠMe an +Ġdefic its +5 50 +Orig inally +ĠHor ror +Ġcontam ination +ll ah +Ġconf isc +ĠCl are +T B +ĠF ailed +an ed +Ġrul er +ĠCont roller +Ġfemin ists +F ix +g ay +20 7 +Ġr abbit +Th ird +ownt own +Ġgl ue +Ġvol atile +Ġsh ining +Ġf oll +Ġimp aired +Ġsup ers +æ Ī +Ġcl utch +ļé ĨĴ +Ġpro let +Ġ( ! +Ġy elled +ĠK iev +ĠEr n +ĠSh ock +K B +Ġsit uated +qu ery +ĠN as +Ġan nex +char acter +ĠHol iday +Ġautom ation +ĠJ ill +ĠRem astered +Ġl inem +Ġwild erness +ĠHor izon +ĠGu inea +A Z +Ġmain land +Ġsec recy +LE ASE +Ġp unk +ĠProv ince +( ), +Spe ed +Ġhand ing +ĠSeb ast +S ir +r ase +Ġj ournals +Ġcon gest +ĠT ut +ir rel +Ġschizophren ia +Ġmis ogyn +health y +I ron +Ġreact ed +- $ +25 2 +Ġpl ural +Ġpl um +Ġbarg ain +Ġground ed +f inder +Ġdis se +ĠL az +O OD +Ġat roc +F actory +Ġmin ions +Ġo ri +ĠB rave +ĠP RE +ĠMy anmar +ĠH od +Ġexped ition +Ġexpl ode +ĠCo ord +Ġext r +ĠB rief +ĠAD HD +Ġhard core +feed ing +Ġd ile +ĠF ruit +Ġvacc ination +ĠM ao +osp here +Ġcont ests +- | +Ġf ren +isp here +R om +ĠSh arp +ĠTre nd +Ġdis connect +âĢ¢ âĢ¢ +Ġper secution +Ear th +Ġhealth ier +38 4 +Ġc ob +ĠTr inity +OW S +AN N +Ġspecial ty +Ġg ru +Ġcooper ative +wh y +Start ing +ĠIss ues +st re +ens or +Ġ18 5 +Ad v +! ? +ĠRe vel +em ia +ĠH ulk +Ġcelebr ations +ĠS ou +ra ud +ĠKle in +Ġun real +con text +Ġpartners hips +Ġadop ting +t ical +Ġspl ash +ĠHe zbollah +c ategory +cycl op +xt on +ĠD ot +urd y +t z +Ġenvelop e +ĠN L +â ķ +Ġwhere in +Spe c +18 4 +Ġte lev +al iation +Ġmyth s +å ° +Ġrig orous +Ġcommun icating +Ġobser ver +Ġre he +ĠW ash +Ġapolog ized +ĠT in +Ġexpend itures +work ers +d ocument +Ġhes itate +ĠLen in +Ġunpredict able +Ġrenew al +cl er +ok ia +ĠCON T +Ġpost season +Tok ens +Ġex acerb +Ġbet ting +Ġ14 7 +Ġelev ation +W ood +ĠSol omon +19 4 +00 4 +out put +Ġredu nd +ĠM umbai +Ġp H +Ġreprodu ce +ĠD uration +MA X +Ġb og +C BS +ĠBal ance +ĠS gt +ĠRec ent +Ġc d +Ġpo pped +Ġincomp et +pro p +ay an +g uy +Pac ific +Ġty r +Ġ{ { +ĠMy stic +ĠD ana +Ġmast urb +Ġge ometry +à ¢ +ĠCor rect +Ġtraject ory +Ġdistract ed +Ġf oo +ĠW elsh +L uc +m ith +Ġrug by +Ġrespir atory +Ġtri angle +Ġ2 15 +Ġunder graduate +ĠSuper ior +ch anging +_ - +Ġright ly +Ġrefere e +Ġluc rative +Ġun authorized +Ġresemb les +ĠGN U +ĠDer by +Ġpath ways +ĠL ed +Ġend urance +Ġst int +Ġcollect or +F ast +Ġd ots +Ġnational s +ĠSec urities +Ġwh ip +Par am +Ġlearn s +M agic +Ġdetail ing +m oon +Ġbroadcast ing +Ġb aked +26 5 +hol m +ĠS ah +ĠHus sein +ĠCourt esy +17 4 +Ġ14 6 +Ġge ographic +pe ace +Ġjud ging +ĠS tern +B ur +Ġstory line +G un +ĠSt ick +24 5 +30 7 +ãĤ´ ãĥ³ +ĠAdminist rator +Ġbur nt +Ġp ave +ch oes +Ex ec +Ġcamp uses +Res ult +Ġmut ations +ĠCh arter +Ġcapt ures +Ġcomp ares +Ġbad ge +S cient +Ġer ad +ier y +o i +ett es +ĠE state +Ġst rap +Ġproud ly +Ġf ried +Ġwithd rawn +ĠV oy +ph ony +It ems +ĠP ierce +b ard +Ġann otation +ant on +ill on +Im pro +... ) +Ġhapp ier +---- -- +ad just +Ġstaff ers +Ġactiv ism +Ġper f +Ġal right +N eed +Ġcomm ence +Ġopio id +ĠAm anda +E s +ĠP ars +ĠK aw +W orks +24 8 +Ġind o +t c +end ant +ĠM oto +Ġlegal ization +OT E +Ġtask ed +Ġt sp +ĠACT IONS +16 6 +Ġrefres hing +ĠN R +ĠPere z +Ġinfring ement +S Y +List en +in ning +k u +Ġrot ate +pro gram +ar ah +Des ign +Ġ( £ +Ġst oring +Ġwar rants +Ġjud gement +ĠB rist +us ually +ph oto +ĠR an +ĠP ine +Ġoutrage ous +ĠValent ine +lu ence +ĠEvery body +Al tern +Ġrele vance +Ġtermin ated +Ġd essert +Ġfulf illed +Ġprosecut ed +ĠW ords +Ġm igrant +Ġcultiv ation +ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ +idel ity +ĠV ern +ĠLog in +Ġmetaph or +ĠT ip +Ġrecru its +ĠP ig +rib ing +Ġenthusi asts +ex per +Ġfright ening +ĠH air +ans on +str ate +Ġh i +He ight +Ġown ing +n one +Ġdis like +Ġkn ives +pher d +Ġloud ly +ĠAP Is +Dis play +ĠL ac +ĠUS S +ab l +ver ages +J ew +Ġ17 2 +ĠHist orical +at oon +ĠPhys ics +in tern +Ġwarm th +Ġto pp +D M +Ġgun man +Ġem peror +od i +ãĥ £ +in atory +ĠR ib +Ġ13 1 +ĠSat urn +ĠSh ining +Ġw aking +Qu otes +Ġcomed ian +en berg + ½ +Ġbelie vers +Ġpaper work +c ustom +Ġle v +Ġl ament +Ġpour ing +22 2 +p olitical +ĠSupp lement +m aid +Ġcruel ty +Ġt read +ys ics +A w +rit es +Ġmod ifier +ĠP osition +Ad am +l b +ub s +Ġimper fect +Ġcl usters +ĠEngine er +ĠC herry +Ġinaug uration +ĠS au +Ġembod iment +ĠUn cle +Ġover r +Ġexplos ions +c ule +ĠPrinc eton +ĠAndre a +Ġincorrect ly +Ġearn est +Ġpil gr +ĠS print +Ġslee ve +Ġhe ars +ĠAm azing +Ġbrow sing +ag in +Ġhom eland +Ġha w +Ġd iving +ist ered +17 8 +Ġbarg aining +ĠArc ade +Ġdeleg ate +ters on +................................ ................................ +ĠJackson ville +27 5 +Ġst agn +Ġad am +ĠSher man +C B +Ġsub urb +ĠFood s +Ġconver ting +ĠAr ist +Ġch ambers +l ove +Ġam ino +ĠG an +Ġmad ness +m c +ĠUS E +def ined +Ġul tr +ind ust +Ġw olves +l ance +Add itionally +Ġcr acks +as ia +ĠRe ason +ĠP ump +Ġaccident al +ĠL aser +ĠR id +Ġinitial ized +ell i +Ġun named +Ġn oun +ĠPass ed +Ġhost age +ĠEth iop +sh irts +Ġun rel +ĠEmb assy +Ġ19 41 +Ġat oms +Ġpur ported +16 4 +ĠF i +Ġgall ons +ĠMon ica +Ġp g +en ment +Ġsort ed +ĠG ospel +Ġhe ights +Ġtr aced +Ġunder going +She ll +Ġs acks +Ġproport ions +Ġhall uc +F ont +ac et +Ġwar mer +ĠIN TER +Ġgrab bing +Pl ug +Ġreal ization +ĠBur ke +Ġen chant +AT ER +ĠSe ed +Ġabund ant +F M +Ġc ivic +V s +is i +Ġv ow +Ġre per +ĠPartners hip +Ġpenet ration +Ġax e +Ġsh attered +ĠZ ombies +Ġv inyl +ĠAl ert +e on +Ġoblig ed +ĠIll ust +ĠPl aza +ĠFront ier +Ġdavid jl +ĠSer ial +ĠH av +ĠNut rition +B i +Ġâĸ Ī +ĠJ ays +lin ux +Ġhur ry +Ġv oy +Ġhop eless +ĠSte alth +Ġ ãģ +ess ors +tt le +b org +ĠSaf ari +f ell +Ġw ary +d ue +ĠAb ove +H a +E LL +Ġnot or +ĠW on +T oo +Ġoccup ations +Ġposs essions +Ġinv iting +Ġpred ators +Ġacceler ated +Ġ15 7 +uter te +ĠC ube +e ast +acc ount +G ive +Ġtrans plant +red ients +id able +Ġscreens hots +ĠG und +ĠF S +Ġtravel ers +Ġsens ory +ĠF iat +ĠRock ets +İ ĭ +_ { +F riend +Ġchar ming +AL S +Ġenjoy ment +m ph +Ġ5 000 +ĠRE G +Ù Ĩ +b ia +Ġcomp ilation +ro st +ĠV P +ĠSch ne +201 9 +Ġcop ying +M ORE +ĠFl ore +f alls +2 15 +t otal +Ġdis ciples +d ouble +Ġexceed ing +Ġsm ashed +Ġconcept ual +ĠRom ania +ĠB rent +ĠI CE +ĠT ou +Ġg rap +Ġn ails +18 9 +ãĥ ĺ +Ġproc ure +e ur +Ġconfir ming +ĠC ec +aw i +ĠEd en +Ġn g +Ġengine ered +at ics +Ġhook ed +Ġdisgust ing +ĠMur der +ãĤ ¿ +L ibrary +Ġ16 8 +Al most +hem atic +Men u +ĠNot re +ĠJ ur +Ġkidn apped +Ġhack er +ĠJ ade +Ġcreep y +Ġdraw ings +ĠSpons or +Ġcycl ists +ĠGob lin +Ġoptim ized +Ġst aged +ĠMc D +bet ween +A ge +en o +S ex +ĠW ide +n ings +av is +Ġincap able +ĠK ob +Ġreward ing +ĠL one +oles cent +Ġcontract ed +Ġstick y +J ose +B all +f est +ĠIn put +ĠRec ently +Ġto mat +squ are +App lication +Ġnit rogen +Ġdupl icate +ĠRec on +ĠD ear +L ondon +Ġint ra +Ġd ock +Ġout reach +ĠM illion +Ġmamm als +am pton +V AL +Ġsn aps +Ġd os +ĠWh ole +ĠRead y +T ry +ĠWinn ipeg +ear ance +Ġinc urred +ren ched +ĠNS W +il ot +rain e +Ġc ube +g ot +Ġrun way +etermin ed +ĠHaw ks +Ġsurviv or +ĠW ish +ĠD in +ĠDE F +ĠV ault +18 7 +Ġmush rooms +Ġcris p +be y +ĠDisco very +Ġdevelopment al +Ġparad igm +Ġcha otic +ĠT su +Ġ3 33 +b ons +Ġbacter ial +Ġcomm its +Ġcos mic +Ġme ga +oc ative +ĠP aint +ophob ic +Ġv ain +Ġcar ved +ĠTh ief +ĠG ul +ows hip +Ġc ites +ĠEd inburgh +Ġdimin ished +Ġacknowled ges +ĠK ills +Ġmic row +ĠHer a +Ġsen iors +Ġwhere by +H op +at ron +Ġun available +ĠN ate +Ġ4 80 +Ġsl ated +ĠRe becca +ĠB attery +Ġgram mar +Ġhead set +Ġcurs or +Ġex cluding +any e +aunder ing +eb in +Ġfeas ible +ĠPub lishing +ĠLab s +ĠCl iff +ĠFerr ari +Ġp ac +vis ible +mark ed +pe ll +Ġpol ite +Ġstagger ing +ĠGal actic +Ġsuper st +Ġpar an +ĠOffic ers +ãĢ ģ +Ġspecific s +ul us +23 9 +ĠP aste +AM P +ĠPan ama +ĠDe lete +angu ard +rest rial +Ġhero ic +ĠD y +ا ÙĦ +Ġincumb ent +Ġcr unch +t ro +Ġsc oop +Ġblog ger +Ġsell ers +ure n +Ġmedic ines +ĠC aps +ĠAnim ation +ox y +Ġout ward +Ġinqu iries +22 9 +Ġpsych ologist +ĠS ask +ev il +Ġcontam inated +ãĤ ¨ +he rence +Ġbrand ed +ĠAbd ul +z h +Ġparagraph s +Ġmin s +Ġcor related +er b +Ġimp art +Ġmil estone +ĠSol utions +ot le +Ġunder cover +Ġmar ched +ĠCharg ers +f ax +ĠSec rets +Ġr uth +we ather +Ġfemin ine +Ġsh am +Ġprest igious +igg ins +Ġs ung +hist ory +ett le +gg ie +Ġout dated +ol and +Ġper ceptions +ĠS ession +ĠDod gers +u j +ĠE ND +D oc +Ġdefic iency +Gr and +ĠJ oker +Ġretro spect +Ġdiagn ostic +Ġharm less +Ġro gue +ĠA val +E qu +Ġtrans c +ĠRoberts on +ĠDep ending +ĠBurn s +iv o +Ġhost ility +F eatures +ĵ ĺ +Ġdis comfort +ĠL CD +spec ified +ĠEx pect +3 40 +Ġimper ative +ĠReg ular +Ch inese +Ġstate wide +Ġsy mm +Ġlo ops +Ġaut umn +N ick +Ġsh aping +Ġqu ot +Ġc herry +ĠCross ref +è¦ ļéĨĴ +Stand ard +he ed +ĠD ell +ĠViet namese +Ġo st +ĠV alkyrie +O A +Ass ad +Ġreb ound +ĠTra ffic +pl aces +æ ĺ +ĠB uc +17 2 +Ġshel ters +Ġins isting +ĠCertain ly +ĠKenn eth +ĠT CP +Ġpen al +ĠRe play +he ard +Ġdial ect +iz a +ĠF Y +it cher +ĠD L +Ġspir al +Ġquarterback s +Ġh ull +Ġgo ogle +Ġto dd +ĠSter ling +ĠPl ate +Ġsp ying +mb ol +ĠReal m +ĠPro ced +ĠCr ash +Ġtermin ate +Ġprotest ing +C enter +gu ided +Ġun cover +Ġboy cott +Ġreal izes +s ound +Ġpret ending +ĠV as +19 80 +Ġfram ed +Ġ13 9 +Ġdesc ended +Ġrehab ilitation +Ġborrow ing +ĠB uch +Ġbl ur +R on +ĠFro zen +en za +Ch ief +ĠP oor +Ġtransl ates +M IN +Ġ2 12 +J ECT +Ġerupt ed +Ġsuccess es +S EC +Ġpl ague +Ġg ems +d oms +Ġstret ches +ĠSp y +Ġstory telling +C redit +ĠP ush +Ġtra ction +Ġin effective +ĠL una +Ġt apes +Ġanaly tics +erc ise +Ġprogram mes +ĠCar bon +Ġbeh old +he avy +ĠConserv ation +ĠF IR +Ġs ack +ter min +ric ks +Ġhous ed +Ġunus ually +I ce +Ġexecut ing +ĠMor oc +ed ay +Ġed itions +Ġsm arter +ĠB A +Ġout law +Ġvan ished +ib a +AL SE +ĠSil va +23 8 +C ould +Ġphilos opher +Ġevac uated +Sec ret +14 2 +Ġvis as +ãĤ ¬ +ĠM alt +ĠClear ly +ĠN iger +ĠC airo +ĠF ist +3 80 +ĠX ML +aut o +it ant +Ġrein forced +Rec ord +ĠSurviv or +G Hz +Ġscrew s +parent s +Ġo ceans +ma res +Ġbra kes +vas ive +Ġhell o +ĠS IM +rim p +Ġo re +ĠArm our +24 7 +Ġterr ific +Ġt ones +14 1 +ĠMin utes +Ep isode +Ġcur ves +Ġinflamm atory +Ġbat ting +ĠBeaut iful +L ay +Ġunp op +v able +Ġr iots +ĠTact ics +b augh +ĠC ock +Ġorg asm +ĠS as +Ġconstruct or +et z +G ov +Ġant agon +Ġthe at +Ġde eds +ha o +c uts +ĠMc Cl +Ġu m +ĠScient ists +Ġgrass roots +ys sey +"] => +Ġsurf aced +Ġsh ades +Ġneighb ours +Ġad vertis +oy a +Ġmer ged +Up on +Ġg ad +Ġanticip ate +Any way +Ġsl ogan +Ġdis respect +I ran +ĠT B +act ed +Ġsubp oen +medi ately +OO OO +Ġwa iver +Ġvulner abilities +ott esville +ĠHuff ington +J osh +ĠD H +M onday +ĠEll en +K now +x on +it ems +22 8 +Ġf ills +ĠN ike +Ġcum ulative +and als +I r +Ġ ì +Ġfr iction +ig ator +Ġsc ans +ĠVi enna +ld om +Ġperform ers +P rim +Ġb idding +M ur +Ġlean ed +ĠPri x +al ks +Ġ[ â̦] +ĠTw itch +ĠDevelop er +ĠG ir +Ġcall back +Ab stract +Ġacc ustomed +Ġfreed oms +ĠP G +ur acy +Ġl ump +is man +,, ,, +19 92 +ĠR ED +Ġwor m +M atch +ĠPl atinum +I J +ĠOwn er +Tri via +com pl +Ġnew born +Ġfant as +O wn +Ġ19 59 +Ġsymp ath +Ġub iqu +Ġoutput s +Ġal lev +Ġpr ag +K evin +Ġfav ors +Ġbur ial +Ġn urt +so lete +c ache +Ġ15 6 +Ġunl ocks +te chn +M aking +Ġcon quer +ad ic +æ ĸ +Ġel f +Ġelect orate +ĠKurd s +ĠSt ack +ĠSam urai +Ġâ ĺħ +Ġ{ } +ĠS aid +ĠFall out +Ġkind ness +ĠCustom s +ĠBou levard +Ġhelicop ters +ot ics +ĠVe get +com ment +Ġcritic ised +Ġpol ished +ĠRem ix +ĠC ultural +Ġrec ons +Ġdo i +at em +Sc reen +Ġbar red +Com ments +ĠGener ally +Ġsl ap +7 20 +V ari +p ine +Ġem pt +Ġh ats +ĠPlay ing +l ab +a verage +form s +ĠC otton +Ġcan s +ĠD ON +ĠSom alia +C rypt +ĠIncre ases +E ver +mod ern +Ġsur geon +3 000 +Ġrandom ized +================================ ================================ +B ern +im pl +ĠC OR +Ġpro claim +th ouse +Ġto es +Ġam ple +Ġpres erving +Ġdis bel +gr and +B esides +Ġsil k +ĠPat tern +h m +Ġenter prises +Ġaffidav it +ĠAdvis ory +Ġadvert ised +ĠRel igious +se ctions +psy ch +ĠField s +aw ays +Ġhasht ag +ĠNight mare +Ġv ampire +Ġfore nsic +rosso ver +n ar +Ġn avy +Ġvac ant +ĠD uel +Ġhall way +Ġface book +ident ally +ĠN RA +Ġm att +Ġhur ricane +ĠKir by +ĠP uzzle +Ġsk irt +ou st +du llah +Ġanal ogy +in ion +Ġtomat oes +ĠN V +ĠPe ak +ĠMe yer +Ġappoint ments +Ġm asc +Ġal ley +re hend +Ġchar ities +Ġund o +Ġdest inations +ĠTest ing +"> " +c ats +* . +Ġgest ures +gener al +Le ague +Ġpack ets +ĠInspect or +ĠBer g +Ġfraud ulent +Ġcritic ize +F un +Ġbl aming +nd ra +Ġsl ash +ĠE ston +Ġpropos ing +Ġwh ales +Ġtherap ist +Ġsub set +Ġle isure +EL D +ĠC VE +ĠAct ivity +Ġcul min +sh op +ĠD AY +is cher +ĠAdmir al +ĠAtt acks +Ġ19 58 +Ġmem oir +Ġfold ed +Ġsex ist +Ġ15 3 +ĠL I +Ġread ings +Ġembarrass ment +ĠEmploy ment +w art +ch in +Ġcontin uation +l ia +Rec ently +Ġd uel +Ġevac uation +ĠKash mir +Ġdis position +ĠR ig +Ġbol ts +Ġins urers +4 67 +M ex +Ġret aliation +Ġmis ery +Ġunre asonable +r aining +I mm +ĠP U +em er +Ġgen ital +ãĤ ³ +ĠC andy +Ġon ions +ĠP att +lin er +Ġconced ed +Ġf a +Ġfor c +ĠH ernandez +ĠGe off +deb ian +ĠTe ams +Ġc ries +Ġhome owners +23 7 +A BC +Ġst itch +Ġstat istic +Ġhead ers +ĠBi ology +Ġmot ors +ĠG EN +ĠL ip +Ġh ates +Ġhe el +S elf +i pl +ED IT +ort ing +Ġann ot +ĠSpe ech +old emort +ĠJ avascript +ĠLe Bron +Ġfoot print +Ġf n +Ġseiz ures +n as +h ide +Ġ19 54 +ĠBe e +ĠDecl aration +ĠKat ie +Ġreserv ations +N R +f emale +Ġsatur ated +Ġb iblical +Ġtroll s +Dev ice +ph otos +Ġdr ums +ãĥīãĥ© ãĤ´ãĥ³ +N ight +f ighter +ĠH ak +ri ber +Ġc ush +Ġdiscipl inary +ba um +ĠG H +ĠSch midt +ilib rium +Ġs ixty +ĠKush ner +ro ts +Ġp und +ĠR ac +Ġspr ings +Ġcon ve +Bus iness +F all +Ġqual ifications +Ġvers es +Ġnarc iss +ĠK oh +ĠW ow +ĠCharl ottesville +ed o +Ġinterrog ation +ĠW ool +36 5 +B rian +Ġâľ ĵ +Ġalleg es +ond s +id ation +ĠJack ie +y u +Ġl akes +Ġworth while +Ġcryst als +ĠJud a +Ġcomp rehend +Ġfl ush +Ġabsor ption +ĠO C +Ġfright ened +ĠCh ocolate +Mart in +Ġbu ys +Ġbu cks +Ġapp ell +ĠChampions hips +Ġlist ener +ĠDef ensive +Ġc z +ud s +ĠM ate +Ġre play +Ġdecor ated +Ġs unk +ĠV IP +ĠAn k +Ġ19 5 +aa aa +Nob ody +ĠMil k +ĠG ur +ĠM k +ĠS ara +Ġse ating +ĠW id +Tr ack +Ġemploy s +Ġgig antic +AP P +ãĤ § +in ventory +Ġtow el +at che +l asting +ĠT L +Ġlat ency +Ġkn e +B er +me aning +Ġup held +Ġplay ground +Ġm ant +S ide +Ġstere o +Ġnorth west +Ġexception ally +Ġr ays +Ġrec urring +D rive +Ġup right +Ġab duct +ĠMar athon +Ġgood bye +Ġal phabet +h p +Ġcourt room +ring ton +ot hing +T ag +Ġdiplom ats +Ġbar bar +ĠAqu a +18 3 +33 33 +Ġmat urity +Ġinst ability +ĠAp ache +Ġ= == +Ġfast ing +ĠGr id +Mod Loader +Ġ15 2 +A bs +ĠOper ating +ett i +Ġacqu aint +Don nell +ĠK em +ĠFor ge +Ġarm ored +M il +Ġphilos ophers +in vest +Pl ayers +â Ī +Ġmy riad +Ġcomr ades +R ot +Ġremember ing +Ġcorrespond s +Ġprogram mers +ĠLyn n +Ġo lig +Ġco herent +yn chron +ĠChem ical +Ġj ugg +p air +post s +E ye +ĠIn ner +Ġsem ester +ott est +ĠEmir ates +ric anes +or ously +m its +ĠW is +Ġd odge +l ocation +Ġf aded +Am azon +ĠPro ceed +ĠIN FO +j ournal +ĠTru ck +T en +Ġ2 17 +Ġstat utes +m obile +ĠT ypes +Rec omm +b uster +pe x +Ġleg ends +Ġhead ache +f aced +ĠWi Fi +if ty +ĠH ER +Ġcirc uits +ER ROR +22 6 +ol in +Ġcyl inder +osp ace +ik ers +P rem +Qu ant +Ġconflic ting +Ġslight est +Ġfor ged +ion age +Step hen +ĠK ub +ĠOpp ortun +ĠHe al +Ġbl o +Ġrul ers +Ġh uh +Ġsubmar ine +f y +ass er +Ġallow ance +ĠKas ich +ĠT as +ĠAustral ians +Forge ModLoader +ĠâĨ ij +ĠMat rix +am ins +Ġ12 00 +ĠAc qu +23 6 +D ocument +ĠBre aking +19 3 +ĠSub st +ĠRoll er +ĠPro perties +ĠN I +t ier +Ġcr ushing +Ġadvoc ating +Further more +keep ers +Ġsex ism +x d +Ġcall er +ĠS ense +chie ve +ĠT F +Ġfuel ed +Ġreminis cent +Ġobs ess +ur st +Ġup hold +ĠF ans +het ics +Ġâ Ĺ +ĠB ath +Ġbe verage +Ġo scill +25 4 +Ġpol es +Ġgrad ual +Ġex ting +ĠS uff +ĠS uddenly +Ġlik ing +Ġ19 49 +un ciation +am ination +ĠO mar +ĠL V +ĠCon sequently +Ġsynt hes +ĠG IF +Ġp ains +Ġinteract ing +u ously +inc re +Ġrum or +ĠScient ology +19 7 +ĠZ ig +Ġspe lling +ĠA SS +Ġexting u +ms on +Ġg h +Ġremark ed +ĠStrateg ic +ĠM ON +å ¥ +g ae +ĠWH AT +E ric +ĠCamp us +Ġmeth ane +Ġimag in +J UST +ĠAl m +X T +i q +ĠR SS +Ġwrong doing +att a +Ġbig ot +Ġdemonstr ators +ĠCal vin +ĠV illa +Ġmembr ane +ĠAw esome +Ġbenef ic +26 8 +Ġmagn ificent +ĠL ots +G reg +ĠBor is +Ġdetain ees +ĠH erman +Ġwhis pered +Ġa we +Prof essor +fund ing +Ġphys iological +ĠDest ruction +Ġlim b +Ġmanip ulated +Ġbub bles +Ġpse ud +Ġhyd ra +ĠBrist ol +Ġst ellar +ĠExp ansion +ĠK ell +ĠInterest ingly +Ġm ans +Ġdrag ging +Ġec ological +ĠF it +Ġg ent +Ġbenef ited +ĠHait i +Ġpoly g +ãĥ İ +Ġ20 30 +Ġpro w +Ġrecon struction +Ġwas t +Ġpsych ic +ĠGree ks +Hand ler +16 2 +ĠP ulse +Ġsol icit +Ġsy s +Ġinflu x +ĠG entle +per cent +Ġprolifer ation +Ġtax able +Ġdisreg ard +Ġesc aping +Ġg inger +Ġwith stand +Ġdevast ated +ĠD ew +ser ies +Ġinject ed +ela ide +Ġturn over +he at +Ļ Ĥ +H appy +ĠSil ent +ãĤ Ń +iv ism +Ġir rational +AM A +Ġre ef +r ub +Ġ16 2 +Ġbank ers +ĠEth ics +v v +Ġcritic isms +K n +18 6 +M ovie +ĠT ories +Ġno od +Ġdist ortion +F alse +od ore +Ġt asty +Res earch +ĠU ID +- ) +Ġdivor ced +ĠM U +ĠHay es +ĠIs n +ian i +ĠH Q +Ġ" # +ign ant +Ġtra umatic +ĠL ing +H un +Ġsab ot +on line +r andom +Ġren amed +ra red +K A +d ead +é t +ĠAss istance +Ġse af +++++ ++++ +Ġse ldom +ĠWeb b +Ġbo olean +u let +Ġref rain +ĠDI Y +ru le +Ġshut ting +Ġutil izing +load ing +ĠPar am +co al +oot er +Ġattract ing +ĠD ol +Ġher s +ag netic +ĠRe ach +im o +Ġdisc arded +ĠP ip +01 5 +ü r +Ġm ug +Im agine +C OL +Ġcurs ed +ĠSh ows +ĠCurt is +ĠSach s +spe aking +ĠV ista +ĠFram ework +ong o +Ġsub reddit +Ġcr us +ĠO val +R ow +g rowing +Ġinstall ment +Ġgl ac +ĠAdv ance +EC K +ĠLGBT Q +LE Y +Ġac et +Ġsuccess ive +ĠNic ole +Ġ19 57 +Qu ote +Ġcircumst ance +ack ets +Ġ14 2 +ort ium +Ġguess ed +ĠFr ame +Ġperpet rators +ĠAv iation +ĠBen ch +Ġhand c +A p +Ġ19 56 +25 9 +r and +Net Message +d in +urt les +h ig +ĠV III +ff iti +ĠSw ords +b ial +Ġkidn apping +dev ice +Ġb arn +ĠEl i +auc as +S end +Con structed +Ġ ½ +Ġneed les +Ġad vertisements +Ġv ou +Ġexhib ited +ĠFort ress +As k +B erry +TY PE +Ġcan cers +ump ing +ĠTerrit ory +Ġpr ud +Ġn as +Ġathe ist +Ġbal ances +ãģ Ł +ĠSh awn +& & +Ġland sc +ĠR GB +Ġpet ty +Ġex cellence +Ġtransl ations +Ġpar cel +ĠChe v +E ast +ĠOut put +im i +Ġamb ient +ĠTh reat +Ġvill ains +Ġ5 50 +IC A +Ġtall er +Ġle aking +c up +Ġpol ish +Ġinfect ious +ĠK C +Ġ@ @ +back ground +Ġbureaucr acy +ĠS ai +un less +it ious +ĠSky pe +At l +ID ENT +00 8 +Ġhyp ocr +Ġpit chers +Ġguess ing +ĠF INAL +Bet ween +Ġvill agers +Ġ25 2 +f ashion +ĠTun is +Be h +ĠEx c +ĠM ID +28 8 +ĠHas kell +19 6 +ĠN OR +Ġspec s +Ġinv ari +Ġgl ut +ĠC ars +Ġimp ulse +Ġhon ors +g el +Ġjurisd ictions +ĠBund le +ul as +Calif ornia +ĠIncre ase +Ġp ear +Ġsing les +Ġc ues +Ġunder went +ĠW S +Ġexagger ated +Ġdub ious +Ġfl ashing +L OG +) ]. +J ournal +t g +V an +ĠI stanbul +ĠIn sp +ĠFrank en +D raw +Ġsad ness +Ġiron ic +ĠF ry +x c +Ġ16 4 +is ch +W ay +ĠProtest ant +h orn +Ġun aff +ĠV iv +ill as +ĠProduct ions +ĠH ogan +Ġper imeter +ĠS isters +Ġspont aneous +Ġdown side +Ġdescend ants +Ġor n +w orm +Japan ese +Ġ19 55 +Ġ15 1 +ĠDo ing +els en +umb les +Ġrad ically +ĠDr um +ĠB ach +Ġli abilities +ĠO B +ĠElement ary +Ġmem e +yn es +Ġfinger print +ĠGr ab +Ġundert ake +Mem bers +ĠRead er +ĠSim s +g od +Ġhypot hetical +s cient +ĠA J +Ġchar ism +Ġad missions +ĠMiss ile +tr ade +Ġexerc ising +ĠBack ground +W ritten +Ġvoc als +whe ther +Ġv i +ĠW inner +Ġl itter +ĠSh ooting +ST EM +ãĤ ¡ +ĠA FL +Ġvari ability +Ġe ats +ĠD PS +b row +Ġeleph ants +Ġstr at +Ġ Å +Ġsett lers +Matt hew +Ġin advert +H I +ĠIM F +ĠGo al +Ġnerv es +John son +ey e +ablish ment +Th ursday +BIL ITY +H ad +am oto +het amine +ep s +Ġmit ochond +Ġcomp ressed +ĠTre vor +ĠAnim als +T ool +L ock +Ġtwe ak +Ġpin ch +Ġcancell ation +P ot +Ġfoc al +ĠAst ron +17 3 +ĠA SC +ĠO THER +umn i +Ġdem ise +d l +Ù ħ +Sem itism +Ġcr acking +Ġcollabor ative +Ġexpl ores +s ql +Ġher bs +Ġconfig urations +m is +ĠRes ult +ace y +ĠSm oke +Ġsan ct +el ia +Ġdeg ener +Ġdeep est +Ġscream ed +Ġn ap +Soft ware +ĠST AR +E F +ĠX in +spons ored +mans hip +23 3 +Ġprim aries +Ġfilter ing +Ġas semble +m il +ĠMy ers +b ows +Ġpun ched +M ic +Ġinnov ations +Ġfun c +and o +Ġfr acking +ĠV ul +о Ð +osh op +ĠIm mun +Ġsett ling +Ġadolesc ents +Ġreb uilding +Ġtransform ing +Ġpar ole +Ġhar bor +Ġbook ing +ot ional +onge vity +ĠY o +b ug +Ġemer ges +ĠMethod s +ĠCh u +P res +ĠDun geons +Ġtra iling +ĠR um +ĠH ugh +å¤ © +ĠE ra +ĠBatt les +Res ults +ĠTr ading +Ġvers a +c ss +ax ies +he et +Ġgre ed +19 89 +Ġgard ens +Ġconting ent +P ark +ĠLeaf s +h ook +ro be +Ġdiplom acy +ĠF uel +ĠInv asion +Ġupgr ading +M ale +Ġe lic +Ġrelent less +ĠCo venant +ap esh +ĠT rop +T y +pro duction +art y +Ġpun ches +ak o +cyclop edia +ĠR abbit +ĠHD MI +Ġ14 1 +Ġf oil +Item Image +ĠF G +Ġimplement ations +ĠP om +ixt ures +Ġaw ait +Ġ3 30 +am us +Ġumb rella +Ġfore see +se par +Ġcircum cision +Ġperipher al +S ay +ĠExper t +In c +Ġwithd rew +ĠAnd ers +f ried +Ġradio active +ĠOp ening +Ġboard ing +ĠN D +Ġover throw +Act iv +W P +ĠAct s +× Ļ +Ġmot ions +v ic +ĠM ighty +ĠDef ender +a er +Ġthank ful +ĠK illing +ĠBr is +mo il +Ġpredict ing +26 6 +ch oice +Ġkill ers +Ġinc ub +ĠChe st +ather ing +Ġpro claimed +fl ower +oss om +umbled ore +ĠCy cling +ĠOccup y +AG ES +P en +ĠY ug +Ġpack aged +Ġheight ened +c ot +st ack +C ond +Ġst amps +m age +Ġpersu aded +Ġens l +ĠCard inal +Ġsol itary +Ġpossess ing +ĠC ork +Ġev id +ĠT ay +Ġbl ues +Ġextrem ism +Ġlun ar +Ġcl own +Te chn +Ġfest ivals +ĠPv P +ĠL ar +Ġconsequ ently +p resent +Ġsom eday +ç İĭ +ĠMet eor +Ġtour ing +c ulture +Ġbe aches +S hip +c ause +ĠFl ood +ãĥ ¯ +Ġpur ity +th ose +Ġem ission +b olt +Ġch ord +ĠScript ure +L u +Ġ$ { +cre ated +Other s +25 8 +Ġelement al +Ġannoy ed +ĠA E +d an +ĠS ag +Res earchers +Ġfair y +âĢĵ âĢĵ +======== ==== +Sm art +GG GG +Ġskelet ons +Ġpup ils +link ed +Ġur gency +en abled +ĠF uck +Ġcoun cill +r ab +U AL +T I +Ġlif es +Ġconf essed +B ug +Ġharm on +ĠCON FIG +ĠNe utral +D ouble +Ġst aple +ĠSH A +Brit ish +ĠSN P +AT OR +oc o +Ġswing ing +ge x +ole on +pl ain +ĠMiss ing +ĠTro phy +v ari +ran ch +Ġ3 01 +4 40 +00000000 00000000 +Ġrest oring +Ġha ul +uc ing +ner g +Ġfut ures +Ġstrateg ist +quest ion +Ġlater al +ĠB ard +Ġs or +ĠRhod es +ĠD owntown +????? - +ĠL it +ĠB ened +Ġco il +st reet +ĠPort al +FI LE +ĠG ru +* , +23 1 +ne um +Ġsuck ed +Ġr apper +Ġtend encies +ĠLaure n +cell aneous +26 7 +Ġbrow se +Ġover c +head er +o ise +Ġbe et +ĠG le +St ay +Ġm um +Ġtyp ed +Ġdiscount s +T alk +ĠO g +ex isting +ĠS ell +u ph +C I +ĠAust rian +ĠW arm +Ġdismiss al +Ġaver ages +c amera +Ġalleg iance +L AN +=" # +Ġcomment ators +ĠSet ting +ĠMid west +Ġpharm ac +ĠEX P +Ġstain less +Ch icago +Ġt an +24 4 +Ġcountry side +ĠV ac +29 5 +Ġpin ned +Ġcr ises +Ġstandard ized +T ask +ĠJ ail +ĠD ocker +col ored +f orth +" }, +Ġpat rons +Ġsp ice +Ġm ourn +ĠM ood +Ġlaund ry +Ġequ ip +ĠM ole +y ll +ĠTH C +n ation +ĠSher lock +Ġiss u +ĠK re +ĠAmeric as +ĠA AA +Ġsystem atically +Ġcont ra +ĠS ally +Ġrational e +Ġcar riage +Ġpe aks +Ġcontrad iction +ens ation +ĠFail ure +Ġpro ps +Ġnames pace +Ġc ove +field s +ãĤ ĭ +Ġw ool +ĠC atch +Ġpresum ed +ĠD iana +r agon +ig i +Ġh amm +Ġst unt +ĠG UI +ĠObserv atory +ĠSh ore +Ġsmell s +ann ah +Ġcock pit +ĠD uterte +8 50 +Ġopp ressed +bre aker +ĠCont ribut +ĠPer u +ĠMons anto +ĠAtt empt +Ġcommand ing +Ġfr idge +ĠR in +ĠChe ss +ual ity +Ġo l +Republic an +ĠGl ory +ĠW IN +.... ... +ag ent +read ing +Ġin h +J ones +Ġcl icks +al an +Ġ[ ]; +ĠMaj esty +ĠC ed +op us +ate l +à ª +AR C +ĠEc uador +ãĥ ł +ĠK uro +Ġritual s +Ġcapt ive +Ġoun ce +Ġdisag reement +Ġsl og +f uel +P et +M ail +Ġexerc ised +Ġsol ic +Ġrain fall +Ġdev otion +ĠAss essment +Ġrob otic +opt ions +ĠR P +ĠFam ilies +ĠFl ames +Ġassign ments +00 7 +aked own +Ġvoc abulary +Re illy +Ġc aval +g ars +Ġsupp ressed +ĠS ET +ĠJohn s +Ġwar p +bro ken +Ġstat ues +Ġadvoc ated +Ġ2 75 +Ġper il +om orph +ĠF emin +per fect +Ġh atch +L ib +5 12 +Ġlif elong +3 13 +Ġche eks +Ġnum bered +ĠM ug +B ody +ra vel +We ight +ĠJ ak +ĠHe ath +Ġkiss ing +ĠJ UST +Ġw aving +u pload +Ġins ider +ĠPro gressive +ĠFil ter +tt a +ĠBe am +Ġviol ently +ip ation +Ġskept icism +Ġ19 18 +ĠAnn ie +ĠS I +Ġgen etics +Ġon board +at l +ĠFried man +ĠB ri +cept ive +Ġpir ate +ĠRep orter +27 8 +Ġmyth ology +Ġe clipse +Ġsk ins +Ġgly ph +ing ham +F iles +C our +w omen +Ġreg imes +Ġphotograp hed +K at +ĠMA X +Offic ials +Ġunexpected ly +Ġimpress ions +F ront +;;;; ;;;; +Ġsuprem acy +Ġs ang +Ġaggrav ated +Ġabrupt ly +ĠS ector +Ġexc uses +Ġcost ing +ide press +St ack +ĠR NA +ob il +Ġghost s +ld on +at ibility +Top ics +Ġreim burse +ĠH M +ĠDe g +Ġth ief +y et +ogen esis +le aning +ĠK ol +ĠB asketball +Ġf i +ĠSee ing +Ġrecy cling +Ġ[ - +Cong ress +Ġlect ures +P sy +Ġne p +Ġm aid +Ġori ented +A X +Ġrespect ful +re ne +fl ush +ĠUn loaded +re quest +gr id +ĠAltern atively +ĠHug o +Ġdec ree +ĠBuddh ism +and um +And roid +ĠCong o +ĠJoy ce +Ġacknowled ging +hes ive +ĠTom orrow +ĠH iro +th ren +ĠM aced +Ġho ax +ĠIncre ased +ĠPr adesh +W ild +____ __ +16 1 +Ġa unt +Ġdistribut ing +ĠT ucker +ĠSS L +ĠW olves +B uilding +ou lt +ĠLu o +ĠY as +ĠSp ir +ĠSh ape +ĠCamb od +ĠIP v +Ġm l +Ġext rad +39 0 +ĠPenn y +d ream +Ġstation ed +opt ional +ew orthy +. +ĠWorks hop +ĠRet ail +ĠAv atar +6 25 +N a +ĠV C +ĠSec ure +M Y +19 88 +oss ip +Ġpro state +Ġund en +Ġg amer +ĠCont ents +ĠWar hammer +ĠSent inel +3 10 +Ġse gregation +ĠF lex +ĠM AY +Ġdr ills +ĠDrug s +Islam ic +Ġsp ur +Ġca fe +Ġimag inary +Ġgu iding +Ġsw ings +ĠThe me +ob y +Ġn ud +Ġbe gging +Ġstr ongh +Ġreject ing +Ġpedest rians +ĠPro spect +R are +s le +Ġconcess ions +ĠConst itutional +Ġbe ams +Ġfib ers +p oon +Ġinstinct s +pro perty +ĠB IG +Sand ers +im ates +Ġco ating +Ġcorps es +ĠTR UE +check ed +Ġ16 6 +A sh +ĠJ S +ĠF iction +Ġcommun al +Ġener getic +oooo oooo +Ġnow adays +IL D +ib o +ĠSU V +R en +Ġdwell ing +Sil ver +Ġt ally +ĠM oving +Ġcow ard +Ġgener als +Ġhorn s +Ġcirc ulated +Ġrob bed +ĠUn limited +Ġharass ed +Ġinhib it +Ġcomp oser +ĠSpot ify +Ġspread s +3 64 +Ġsu icidal +Ġno ises +ĠSt ur +Ġs aga +ĠK ag +is o +Ġtheoret ically +M oney +Ġsimilar ity +Ġslic ed +ut ils +ing es +" - +Ġan th +Ġimp ed +Mod ule +Through out +Ġmen us +comm ittee +and i +ob j +in av +f ired +ĠAb dullah +Ġund ead +Ġfont s +H old +EN G +Ġsustain ability +Ġfl ick +Ġr azor +ĠF est +ĠChar acters +Ġword ing +Ġpopul ist +Ġcritic izing +Ġm use +v ine +Ġcard board +Ġkind ly +Ġfr inge +ĠThe ft +icult ural +Ġgovern ors +Ġ ���� +Ġ16 3 +Ġtime out +ĠA uth +Child ren +A U +Ġred emption +ĠAl ger +Ġ19 14 +Ġw aved +Ġastron auts +og rams +Ġsw amp +ĠFinn ish +Ġcand le +Ġton nes +ut m +Ġr ay +Ġsp un +Ġfear ful +art icles +Ġca us +or ically +ĠRequ ires +ĠG ol +Ġpop e +Ġinaug ural +Ġg le +AD A +ĠIS IL +ĠOff ensive +Ġwatch dog +Ġbal con +ent ity +ĠH oo +Ġgall on +AC C +Ġdoub ling +Ġimpl ication +ĠS ight +Ġdoct r +---- --- +Ġ\ \ +Ġm alt +R oll +Ġâī ¥ +Ġrec ap +add ing +u ces +ĠB end +fig ure +Ġtur key +Ġsoc ietal +ĠT ickets +Ġcommer cially +Ġsp icy +Ġ2 16 +ĠR amp +Ġsuperior ity +à ¯ +ĠTr acker +C arl +ĠC oy +ĠPatri ot +Ġconsult ed +Ġlist ings +Ġsle w +reens hot +ĠG one +Ġ[ ...] +30 9 +Ġh ottest +Ø ± +Ġrock y +ĠD iaz +Ġmass age +Ġpar aly +Ġp ony +A z +Ġcart ridge +ĠN Z +Ġsn ack +ĠLam ar +ple ment +ĠLes lie +Ġm ater +Ġsn ipp +24 6 +Ġjoint ly +ĠBris bane +ĠiP od +Ġpump ing +Ġgo at +ĠSh aron +eal ing +Ġcor on +Ġan omal +rah im +ĠConnect ion +Ġsculpt ure +Ġsched uling +ĠD addy +at hing +Ġeyeb rows +Ġcur ved +Ġsent iments +Ġdraft ing +D rop +( [ +Ġnom inal +ĠLeaders hip +ĠG row +Ġ17 6 +Ġconstruct ive +iv ation +Ġcorrupt ed +ger ald +ĠC ros +ĠChe ster +ĠL ap +ãģ ª +OT H +D ATA +Ġal mond +pro bably +I mp +Ġfe ast +ĠWar craft +F lor +Ġcheck point +Ġtrans cription +Ġ20 4 +Ġtwe aks +Ġrel ieve +S cience +Ġperform er +Z one +Ġtur moil +ig ated +hib it +ĠC afe +the med +Ġflu or +ben ch +Ġde com +ĠU nt +ĠBar rett +ĠF acts +Ġt asting +ĠPTS D +ĠSe al +ĠJuda ism +ĠDynam ic +ĠC ors +V e +ĠM ing +ĠTrans form +v on +ĠDef enders +ĠTact ical +ĠV on +ĠUn ivers +Ġdist orted +ĠB reath +?' " +Ġag on +ĠDead ly +Ġl an +ĠCy cle +orn ed +Ġrel iably +Ġgl or +ĠMon key +ãĥ ¡ +Ġad ren +Ġmicrow ave +ĠAl ban +irc raft +dig it +sm art +ĠD read +¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯ +{ { +ĠRoc hester +Ġsimpl ified +Ġinf licted +Ġtake over +Ġyour selves +ad itional +Ġmus cular +K S +Ġing en +T ax +ĠFe ature +27 7 +Ġcru c +Ġcr ate +Ġun identified +Ġacclaim ed +ĠM anga +ĠFr ances +ĠNep al +ĠG erald +ĠKu wait +Ġsl ain +ĠHe b +ĠG oku +ãģ® æ +28 6 +M rs +ĠC ody +ĠSan ctuary +01 6 +Ġdism ant +Ġdatas et +ĠH ond +b uck +ĠPat terson +Ġpal ette +ĠG D +ic ol +ĠL odge +Ġplanet ary +ak in +ĠRegist ered +ab we +ĠPeters burg +Ġha iled +ĠP iece +S che +ĠDO J +Ġen umer +18 1 +ĠObs erver +ĠB old +f ounded +com merce +Ġexplo its +ĠF inding +UR N +ĠS ne +ĠAc id +ay ette +ĠVal ues +Ġdr astic +Ġarchitect ural +Ġ" . +× ķ +ump ed +Ġwra pping +Ġwid ow +ĠSl ayer +l ace +on ce +German y +av oid +Ġtem ples +P AR +à ´ +ĠLuc ifer +ĠFl ickr +l ov +for ces +Ġsc outing +Ġlou der +tes y +Ġbefore hand +Ä ĵ +ĠNe on +ĠW ol +ĠTyp ically +ĠPolit ico +-+ -+ +Ġbuild er +Ġder ive +K ill +Ġp oker +Ġambig uous +Ġlif ts +Ġcy t +Ġrib s +ood le +ĠS ounds +h air +ĠSynd rome +t f +Ġproport ional +u id +Ġper taining +ĠKind le +ĠNeg ro +Ġreiter ated +ĠTon ight +oth s +ĠCorn ell +Ġo wing +Ġ20 8 +elf are +oc ating +ĠB irds +Sub scribe +Ġess ays +Ġburd ens +Ġillust rations +ar ious +ER AL +ĠCal cul +Ġx en +ĠLink edIn +ĠJ ung +Ġredes ign +Con nor +29 6 +Ġrevers al +ĠAd elaide +ĠL L +Ġs inking +Ġg um +US H +c apt +ĠGr imm +Ġfoot steps +ĠCB D +isp ers +Ġpro se +Wed nesday +ĠM ovies +ed in +Ġoverturn ed +Ġcontent ious +US B +~~~~~~~~ ~~~~~~~~ +ĠCo pper +Ġpoint less +N V +val ues +olph in +d ain +Ġdepos ited +ĠG W +Ġpreced ed +ĠCl a +ĠGo lem +ĠN im +ĠÎ ² +ĠEngine ers +m iddle +Ġfl att +oper ative +Ġcouncil s +imb abwe +el in +Ġstress ful +ĠL D +Ġres h +l ake +Ġwheel chair +ĠAltern ative +Ġoptim ize +oper ation +Ġpe ek +Ġones elf +ig il +Ġtrans itions +op athy +bl ank +Ġ16 9 +17 1 +________________________________ ________________________________ +Ġl aundering +En c +ĠD EC +Ġwork outs +Ġsp ikes +Ġdin osaurs +Ġdiscrim inatory +P ool +R ather +38 5 +R NA +tes ters +et o +ĠIdent ity +Ġve in +ĠBur ton +Ġarc ade +4 20 +Ult imately +ĠSad ly +à ° +p ill +Ġcub ic +ĠSpect rum +the se +st ates +Ġun official +h awks +ĠEVER Y +Ġrain bow +Ġincarcer ation +and ing +Ġsy ll +ĠEver ton +Ġ17 9 +ĠSer bia +Ġ18 9 +m eter +ĠMic key +Ġant iqu +Ġfact ual +ne ck +ĠN are +n orm +m ust +Ġhigh ways +Ġgl am +Ġdivid ing +ĠSquad ron +ĠMar tha +Ġbirth s +C over +//////// //////// +ĠW ong +Ph ot +ĠA LS +ri o +ĠNon etheless +ĠL emon +Ġ20 6 +ĠE E +Ġderiv ative +ĠWW II +v ote +Ġthere in +Ġsepar ating +44 6 +sy nc +ĠStre ets +Ġr att +Ġmunicip ality +ĠShort ly +Ġmon k +) ," +Ġscr ub +Ġoper atives +Ne ither +Pl ace +ĠLim it +F emale +ĠAct or +Char acter +Ġconstit uted +35 7 +Ġprotest ed +ĠSt raw +ĠHe ight +ild a +ĠTy ph +Ġflood s +Ġcos metic +W AY +pert ure +up on +t ons +ess ing +ĠP ocket +Ġro oft +ĠC aucas +Ġant idepress +Ġincomp atible +EC D +Ġoper a +ĠCont est +Ġgener ators +l ime +Def ense +19 87 +for um +Ġsav age +ĠHung arian +n z +Ġmet allic +Ġex pelled +Ġres idency +Ġdress es +66 6 +ĠC lement +f ires +C ategory +Ġge ek +al is +Ġc emetery +educ ated +Ġc rawl +ĠUn able +ĠT yson +ak is +Ġp ardon +ĠW ra +Ġstrengthen ed +ĠF ors +33 5 +ĠH C +ĠM ond +Ġvisual s +ĠBeat les +ett lement +Ġ ï +g ro +Ġb ash +Ġpo orest +Ġex cel +Ġaspir ations +ĠM unicip +ens ible +Ġceremon ies +Ġintimid ation +ĠCON TR +be ck +ĠK ap +as u +Ġtradem arks +ĠS ew +ĠComp etition +net work +ĠAr ri +ĠT et +Ro aming +W C +D at +Ġso b +Ġpair ing +Ġoverd ose +SA Y +ab er +Ġrev olt +ĠF ah +act ing +e q +est ation +F ight +ĠMar ks +27 3 +Ġ17 8 +R aw +ãģ ĭ +34 9 +bl ocks +Ġver ge +est ine +ĠPod esta +Ġinv asive +Ġprofound ly +ĠA o +e ach +Ġl est +inter pret +Ġshr inking +Ġerr one +Ġche es +ly s +ĠI vy +ĠDirect ory +Ġhint ed +V ICE +Ġcontact ing +ĠG ent +he i +Ġlabel ing +Ġmerc ury +ĠL ite +Ġexp ires +Ġdest abil +rit is +c u +Ġfeather s +Ġste er +Ġprogram med +ĠV ader +Go ing +ĠE lim +Ġy o +ĠMic he +Ġ20 3 +Ġslee ves +Ġb ully +ĠHum ans +36 8 +Ġcomp ress +ĠBan ner +AR S +Ġa while +Ġcal ib +Ġspons orship +ĠDiff iculty +ĠP apers +Ġident ifier +} . +Ġy og +ĠSh ia +Ġclean up +Ġvib e +int rodu +im ming +Austral ia +Ġout lines +ĠY outube +tr ain +ĠM akes +Ġde ported +Ġcent r +ĠD ug +ĠB oulder +ĠBuff y +Ġinj unction +ĠHar ley +ĠG roups +ĠD umbledore +ĠCl ara +Ġ" - +Ġsacrific ed +ep h +Sh adow +ib ling +Ġfreel ance +Ġevident ly +ph al +Ġret ains +M ir +Ġfin ite +d ar +ĠC ous +Ġrep aired +Ġperiod ic +Ġchampions hips +Ġaster oid +bl ind +Ġexpress ly +ĠAst ros +Ġsc aled +Ġge ographical +ĠRap ids +En joy +Ġel astic +ĠMoh amed +Mark et +be gin +Ġdisco vers +Ġtele communications +Ġscan ner +Ġen large +Ġsh arks +Ġpsy chedel +ĠRou ge +Ġsnap shot +is ine +X P +Ġpestic ides +ĠL SD +ĠDist ribution +re ally +Ġde gradation +Ġdisgu ise +Ġbi om +ĠEX T +Ġequ ations +Ġhaz ards +ĠComp ared +) * +Ġvirt ues +Ġeld ers +Ġenh ancing +ĠAc ross +er os +ang ling +Ġcomb ust +ucc i +Ġconc ussion +Ġcontrace ption +ĠK ang +Ġexpress es +Ġa ux +ĠP ione +Ġexhib its +Deb ug +OT AL +ĠAl ready +ĠWheel er +Ġexp ands +? : +Ġreconc iliation +Ġpir ates +Ġpur se +Ġdiscour age +Ġspect acle +R ank +Ġwra ps +ĠTh ought +Ġimp ending +O pp +ĠAng lo +ĠE UR +Ġscrew ed +ret ched +Ġencour agement +mod els +Ġconf use +mm m +ĠVit amin +âĸij âĸij +C ru +Ġkn ights +Ġdisc ard +Ġb ishops +ĠW ear +ĠGar rett +k an +ãĥ Ł +Ġmascul ine +cap ital +ĠA us +Ġfat ally +th anks +ĠA U +ĠG ut +12 00 +Ġ 00000000 +Ġsur rog +ĠBI OS +ra its +ĠWat ts +Ġresur rection +ĠElect oral +ĠT ips +4 000 +Ġnut rient +Ġdepict ing +Ġspr ink +Ġm uff +ĠL IM +ĠS ample +ps c +ib i +gener ated +Ġspec imens +Ġdiss atisf +Ġtail ored +Ġhold ings +ĠMonth ly +ĠE at +po ons +Ġne c +ĠC age +ĠLot us +ĠLan tern +Ġfront ier +Ġp ensions +Ġj oked +ĠHard y +=-=- =-=- +r ade +U ID +Ġr ails +Ġem it +Ġsl ate +Ġsm ug +Ġsp it +ĠCall s +ĠJac obs +f eat +ĠU E +Ġrest ruct +Ġregener ation +Ġenerg ies +ĠCon nor +OH N +ĠChe ese +Ġg er +Ġresur rect +man agement +N W +Ġpres ently +ĠBru ins +M ember +ĠM ang +id an +Ġboost ing +w yn ++ . +requ isite +ĠNY PD +ĠMe gan +ĠCond itions +Ġp ics +nes ium +ĠR ash +Ġ17 4 +ĠD ucks +Ġemb ro +z u +on ian +rel igious +Ġc raz +ĠAC A +ĠZ ucker +EM A +ĠPro s +We apon +ĠKn ox +ĠAr duino +Ġst ove +Ġheaven s +ĠP urchase +Ġher d +Ġfundra iser +Dig ital +5 000 +Ġprop onents +/ âĢĭ +Ġj elly +ĠVis a +Ġmon ks +Ġadvance ment +ĠW er +Ġ18 7 +e us +ert ility +Ġfet al +Ġ19 36 +L o +Ġout fits +Ġstair case +b omb +Ġcustom ized +cl air +T ree +Ġm apped +ĠConsider ing +ĠTor res +Ġmeth yl +Ġapprox imate +Ġdo om +ĠHans en +Ġc rossover +Ġstand alone +ä ¼ +Ġinv ites +Ġgra veyard +Ġh p +Donald Trump +Ġesc ort +G ar +Ġpredec essors +Ġh ay +Ġen zyme +ĠStra ight +vis ors +I ng +ane ously +ĠApp lied +Ġf ec +ĠDur ant +Ġout spoken +or b +Ġz eal +Ġdisgr ace +' ). +ĠChe ng +28 9 +ĠRen a +ĠSu icide +29 4 +Ġout raged +ĠNew man +ĠN vidia +ĠA ber +ĠB ers +Ġrecre ation +Wind ow +ĠD P +x e +Ġped oph +Ġfall out +ambo o +Ġpresent ations +ĠApp s +Ġh tml +3 45 +ĠX XX +Ġrub bing +ĠLe ather +Ġhum idity +se ys +est ablished +ĠUn its +64 6 +Ġrespect able +A uto +Ġthri ving +ĠInn ovation +ang s +Ext ra +reg ulation +29 8 +p ick +Ex amples +ĠC J +Att ack +Ġdr acon +L T +Ġstick er +re rs +Ġsun ny +I ss +reg ulated +d im +ĠAb stract +Ġhus bands +Off ice +om ination +it ars +AN GE +asc al +ĠK ris +ĠInf antry +Ġm alf +ĠA the +ĠR ally +bal anced +................ ........ +OU P +Ġmole cule +met ics +ĠSpl it +ĠInstruct ions +ĠN ights +c ards +Ġt ug +Ġcon e +å Ń +Ġt x +ĠDisc ussion +Ġcatast rophe +pp e +g io +Ġcommun ism +Ġhal ted +ĠGu ant +cle an +ĠSc hed +ĠK anye +Ġw ander +ĠSer iously +Ġ18 8 +enn ial +f ollow +product ive +ĠFl ow +ĠS ail +Ġc raw +Ġsim ulations +or u +ang les +ĠN olan +Ġmen stru +4 70 +Ġ20 7 +aj a +Ġcas ually +board ing +Ġ2 22 +ov y +ĠN umbers +um at +O E +28 7 +ĠCle mson +Ġcert s +Ġsl id +ĠT ribe +Ġto ast +Ġfort unes +Ġf als +ĠComm ittees +Ġg p +Ġf iery +ĠN ets +ĠAn ime +Pack age +ĠComp are +l aughter +in fect +Ġatroc ities +Ġjust ices +Ġins ults +ĠVern on +Ġsh aken +Ġperson a +est amp +36 7 +br ain +Ġexperiment ing +K en +ĠElect ronics +Ġ16 1 +dom ain +Ġgraph ical +b ishop +Ġwho pping +ĠEv angel +Ġadvertis ers +ĠSpe ar +Ġb ids +Ġdestro ys +ut z +Ġunders c +ĠAD D +Ġan ts +ĠC um +ipp les +ĠF ill +Ġgl anced +Ġind icted +ĠE ff +Ġmis con +ĠDes ktop +Ġab ide +ãĥ Ģ +ĠI o +ĠC oul +Ġcaps ule +ĠCh rys +M ON +Ġund es +ĠI RA +Ġc itation +Ġdict ate +ĠNet works +ĠConf lict +ĠSt uff +x a +is ec +ĠChem istry +Ġquarter ly +William s +an an +O pt +ĠAlexand ria +out heastern +ĠSpring field +ĠBlack s +Ġge ography +24 2 +Ġut most +ĠEx xon +ab outs +E VA +ĠEn able +ĠBar r +Ġdisag reed +ĠCy prus +Ġdement ia +Ġlab s +Ġubiqu itous +ĠLO VE +Ġconsolid ated +s r +Ġcream y +ĠTim ber +Reg ardless +ĠCert ificate +Ġ" ... +ogen ous +Capt ain +Ġinsult ing +ĠSor os +ĠInst r +ĠBulgar ia +bet ter +Ġsuck ing +ĠDavid son +at z +Ġcoll ateral +g if +Ġplag ued +ĠC ancel +ĠGard ner +R B +Ġsix teen +Rem ove +ur istic +c ook +R od +Ġcompr ising +f le +) âĢĶ +ĠVik ing +g rowth +agon al +Ġsr f +af ety +m ot +N early +st own +ĠF actor +Ġautom obile +Ġproced ural +m ask +amp ires +Ġdisapp ears +j ab +3 15 +Ġ19 51 +ne eded +Ġd aring +le ader +Ġp odium +Ġun healthy +Ġm und +Ġpy ramid +oc re +Ġkiss ed +Ġdream ed +ĠFant astic +ĠG ly +å Ĭ +Ġgreat ness +Ġsp ices +Ġmet ropolitan +Ġcomp uls +i ets +101 6 +ĠSh am +ĠP yr +fl ies +ĠMid night +Ġswall owed +Ġgen res +ĠL ucky +ĠRew ards +Ġdisp atch +ĠI PA +ĠApp ly +Ġa ven +al ities +3 12 +th ings +Ġ( ). +Ġm ates +ĠS z +ĠC OP +ol ate +O FF +Ġre charge +c aps +ĠYork er +ic one +Ġgal axies +ile aks +D ave +ĠP uzz +ĠCelt ic +ĠA FC +27 6 +ĠS ons +Ġaffirm ative +H or +Ġtutorial s +ĠC ITY +ĠR osa +ĠExt ension +Ser ies +Ġf ats +Ġr ab +l is +Ġun ic +Ġe ve +ĠSp in +Ġadul thood +ty p +Ġsect arian +Ġcheck out +ĠCy cl +S ingle +Ġmart yr +Ġch illing +88 8 +ou fl +Ġ] ; +Ġcongest ion +m k +ĠWhere as +Ġ19 38 +ur rencies +er ion +Ġbo ast +ĠPat ients +Ġch ap +ĠB D +real DonaldTrump +Ġexam ines +h ov +Ġstart ling +ĠBab ylon +w id +om ew +br ance +ĠOd yssey +w ig +Ġtor ch +ĠV ox +ĠMo z +ĠT roll +ĠAn s +Similar ly +ĠF ul +00 6 +Un less +ĠAl one +st ead +ĠPub lisher +r ights +t u +ĠDoes n +Ġprofession ally +Ġcl o +ic z +Ġste als +Ġ á +19 86 +Ġst urdy +ĠJoh ann +Ġmed als +Ġfil ings +ĠFr aser +d one +Ġmult inational +Ġf eder +Ġworth less +Ġp est +Yes terday +ank ind +Ġg ays +Ġb orne +ĠP OS +Pict ure +Ġpercent ages +25 1 +r ame +Ġpot ions +AM D +ĠLeban ese +Ġr ang +ĠL SU +ong s +Ġpen insula +ĠCl ause +AL K +oh a +ĠMac Book +Ġunanim ous +Ġl enders +Ġhang s +Ġfranch ises +ore rs +ĠUp dates +Ġisol ate +and ro +S oon +Ġdisrupt ive +ĠSur ve +Ġst itches +ĠSc orp +ĠDomin ion +Ġsupp lying +Ar g +Ġtur ret +ĠL uk +Ġbr ackets +* ) +ĠRevolution ary +ĠHon est +Ġnot icing +ĠSh annon +Ġafford ed +Ġth a +ĠJan et +! -- +ĠNare ndra +ĠPl ot +H ol +se ver +e enth +Ġobst ruction +Ġ10 24 +st aff +j as +or get +sc enes +l aughs +ĠF argo +cr ime +Ġorche str +Ġde let +ili ary +rie ved +Ġmilit ar +ĠGreen e +âĹ ı +ãģ ¦ +ĠGu ards +Ġunle ashed +ĠWe ber +Ġadjust able +Ġcal iber +Ġmotiv ations +Ġà ł +m Ah +ĠL anka +hand le +Ġp ent +ĠR av +ĠAng ular +ĠK au +umb ing +Ġphil anthrop +Ġde hyd +Ġtox icity +e er +ĠY ORK +w itz +å ¼ +ĠI E +commun ity +ĠA H +Ġret ali +Ġmass ively +ĠDani els +ĠD EL +Ġcar cin +Ur l +Ġrout ing +ĠNPC s +ĠR AF +ry ce +Ġwa ived +ĠGu atem +Every body +Ġco venant +Ġ17 3 +Ġrelax ing +Ġqu art +al most +Ġguard ed +ĠSold iers +ĠPL AY +Ġout going +L AND +Ġre write +ĠM OV +ĠIm per +ĠS olution +Ġphenomen al +Ġl ongevity +Ġimp at +ĠN issan +ir ie +Ġod or +ĠZ ar +ok s +Ġmilit ias +ĠSP EC +Ġtoler ated +ars er +ĠBrad ford ++ , +Ġsur real +s f +Can adian +Ġresemb lance +Ġcarbohyd rate +VI EW +Ġaccess ory +me al +larg est +ieg el +Some one +Ġtoug hest +os o +Ġfun nel +Ġcondemn ation +lu ent +Ġw ired +ĠSun set +Jes us +ĠP ST +ĠP ages +ĠTy coon +ĠP F +Ġselect ions +Ġ ठ+part isan +Ġhigh s +ĠR une +Ġcraft s +le ad +ĠParent s +Ġre claim +ek er +ĠAll ied +ae per +Ġlo oming +Ġbenefic iaries +ĠH ull +Stud ents +Jew ish +d j +Ġp act +tem plate +ĠOffic ials +ĠBay lor +Ġhe mp +Ġyouth s +ĠLevel s +ĠX iao +ĠC hes +Ġende avor +ĠRem oved +Ġhipp ocamp +H ell +ãĤ Ĭ +80 5 +Ġd inosaur +ĠWr ath +ĠIndones ian +Ġcalcul ator +ĠD ictionary +Ġ4 20 +ĠM AG +( _ +! , +t arians +Ġrestrict ing +rac use +Ġweek day +OU NT +Ġsh rugged +leg round +Ġb ald +ĠDo ctors +Ġt outed +ĠMax well +Ġ2 14 +Ġdiplom at +Ġrep ression +Ġconstitu ency +v ice +r anked +ĠNap oleon +g ang +ĠFore ver +t un +Ġbul b +ĠPD T +ĠC isco +V EN +Ġres umed +Ste ven +ĠManit oba +Ġfab ulous +ĠAg ents +19 84 +Ġam using +ĠMyster ies +Ġor thodox +fl oor +Ġquestion naire +Ġpenet rate +Ġfilm makers +ĠUn c +Ġst amped +Ġth irteen +Ġout field +Ġforward ed +Ġapp ra +Ġa ided +t ry +Ġunf ocused +ĠL iz +ĠWend y +ĠSc ene +Ch arg +Ġreject s +Ġleft ist +ĠProv idence +ĠBr id +reg n +Ġprophe cy +ĠL IVE +4 99 +Ġfor ge +ĠF ML +Ġintrins ic +ĠF rog +Ġw ont +ĠH olt +Ġfam ed +CL US +aeper nick +ĠH ate +ĠC ay +Ġregister ing +ort ality +rop y +ocaly ptic +a an +n av +Ġfasc ist +IF IED +Ġimpl icated +ĠRes ort +ĠChand ler +ĠBr ick +P in +ys c +Us age +ĠHel m +us ra +âĺħ âĺħ +ĠAb bas +Ġunanim ously +Ġke eper +Ġadd icted +?? ? +Ġhelm ets +Ġant ioxid +aps ed +80 8 +gi ene +Ġwa its +Ġmin ion +ra ved +ĠP orsche +Ġdream ing +Ġ17 1 +ĠC ain +Ġun for +ass o +ĠConfig uration +k un +hard t +Ġn ested +ĠL DS +L ES +Ġt ying +en os +Ġc ue +ĠMar qu +sk irts +Ġclick ed +Ġexp iration +ĠAccording ly +ĠW C +Ġbless ings +Ġaddict ive +ĠN arr +y x +ĠJagu ars +Ġrent s +ĠS iber +Ġt ipped +ous se +ĠFitz gerald +Ġhier arch +out ine +Ġwa velength +> . +ch id +ĠProcess ing +/ + +r anking +E asy +ĠConst ruct +Ġt et +ins ured +H UD +Ġqu oting +Ġcommun icated +in x +Ġin mate +Ġerect ed +ĠAbs olutely +ĠSure ly +Ġun im +ĠThr one +he id +Ġcl aws +Ġsuper star +ĠL enn +ĠWh is +U k +ab ol +Ġsk et +ĠN iet +Ġper ks +Ġaff inity +Ġopen ings +phas is +Ġdiscrim inate +T ip +v c +Ġgr inding +ĠJenn y +Ġast hma +hol es +ĠHom er +Ġreg isters +ĠGl ad +Ġcre ations +Ġlith ium +Ġappl ause +unt il +Just ice +ĠTur ks +Ġsc andals +Ġb ake +t ank +M ech +ĠMe ans +ĠM aid +Republic ans +is al +wind ows +ĠSant os +Ġveget ation +33 8 +t ri +Ġfl ux +ins ert +Ġclar ified +Ġmort g +ĠCh im +ĠT ort +Ġdiscl aim +met al +ĠAs ide +Ġindu ction +Ġinf l +Ġathe ists +amp h +Ġe ther +ĠV ital +ĠBu ilt +M ind +Ġweapon ry +S ET +Ġ18 6 +ad min +g am +cont ract +af a +Ġderiv atives +Ġsn acks +Ġch urn +E conom +Ġca pped +ĠUnder standing +ĠH ers +ĠI z +Ġd uct +I ENT +augh ty +Ġâľ Ķ +ĠN P +Ġsa iling +In itialized +Ġt ed +Ġreact ors +ĠL omb +Ġcho ke +ĠW orm +Ġadm iration +Ġsw ung +ens ibly +Ġr ash +ĠGo als +ĠImport ant +Sh ot +ĠR as +Ġtrain ers +ĠB un +Work ing +Ġhar med +ĠPand ora +ĠL TE +Ġmush room +ĠCH AR +ĠF ee +ĠM oy +B orn +ol iberal +ĠMart ial +Ġgentle men +Ġling ering +Offic ial +Ġgra ffiti +ĠN ames +D er +Ġqu int +ist rate +aze era +ĠNOT ICE +ĠFlore nce +Ġpay able +Ġdep icts +ĠSpe cies +He art +âĶĢâĶĢâĶĢâĶĢ âĶĢâĶĢâĶĢâĶĢ +Ġencl osed +Incre ases +D aily +ĠL is +Ġenact ment +ĠB acon +ĠSt eele +dem and +Ġ18 3 +Ġmouth s +Ġstr anded +Ġenhance ment +01 1 +ĠWh ats +Ġhe aled +en y +ĠR ab +Ġ3 40 +ĠLab yrinth +ro ach +ĠY osh +ĠCl ippers +Ġconcert s +Intern et +35 5 +Ġstick ers +Ġter med +ĠAx e +Ġgrand parents +Fr ance +ĠCl im +ĠU h +ul ic +Ġthr ill +cent ric +ĠOver view +ĠCond uct +Ġsubstant ive +Ġ18 2 +m ur +Ġstr ay +ĠCo ff +Ġrep etitive +ĠFor gotten +Ġqual ification +ew itness +ĠZ imbabwe +Ġsim ulated +ĠJ D +25 3 +ĠW are +Ġun sc +T imes +Ġsum mons +Ġdis connected +Ġ18 4 +ci us +ĠGu jar +od ka +Ġer ase +ĠTob acco +elect ed +Ġun cont +ĠShe pard +ĠL amp +Ġalert ed +Ġoper ative +arn a +u int +Ġneglig ence +ac ements +Ġsup ra +Ġprev ail +ĠSh ark +Ġbel ts +ãģ « +Ġt ighter +Engine ers +Ġin active +Ġexp onent +ĠWill ie +a ples +Ġhe ir +ĠH its +ian n +ĠS ays +Ġcurrent s +ĠBeng al +Ġar ist +B uffer +Ġbree ze +ĠWes ley +Col a +Ġpron oun +Ġde ed +ĠK ling +Ġof t +Ġinf lict +Ġpun ishing +Ġn m +ik u +OD UCT +01 4 +Ġsubsid y +ĠDE A +ĠHer bert +ĠJ al +B ank +Ġdef erred +Ġship ment +B ott +Ġal le +b earing +HT ML +Off line +Ġ2 13 +Ġscroll ing +Ġsc anned +ĠLib yan +ĠT OP +ch rom +d t +col umn +Psy NetMessage +Z ero +Ġtor so +0 50 +âķ IJ +Ġimp erson +ĠSchw artz +ud ic +Ġpiss ed +ĠS app +25 7 +ĠIS Ps +og l +Ġsuper vised +Ġad olescent +Ġatt ained +ĠDel ivery +ĠB unny +Ġ19 37 +Ġmini ature +Ġo s +Ġ3 70 +60 8 +ĠMour inho +Ġinn ate +Ġtem po +ĠN M +ĠFall en +00 9 +Ġprov ocative +Stream er +ĠBened ict +ĠBol she +Ġt urtle +ĠPC B +ĠEqu al +Direct or +ĠR end +Ġflu ids +Author ities +Ġcous ins +requ ency +ĠNeigh bor +s ets +sh ared +Char les +pass word +Ġg ears +Ġ2 11 +ĠHard ware +ri ka +Ġup stream +H om +Ġdisproportion ately +iv ities +Ġund efined +Ġelect rons +Ġcommem or +Event ually +Ġ> < +Ġir responsible +2 18 +ĠRe leased +ĠO VER +ĠI GN +ĠB read +st ellar +ĠS age +tt ed +dam age +ed ition +ĠPre c +Ġl ime +Ġconf inement +Ġcal orie +we apon +Ġdiff ering +ĠS ina +m ys +am d +Ġintric ate +k k +ĠP AT +ã o +st ones +lin ks +Ġr anch +Sem itic +Ġdifferent iate +ĠS inger +occup ied +Ġfort ress +c md +Ġinter ception +ĠAnk ara +Ġre pt +ĠSol itaire +Ġrem ake +p red +Ġd ared +aut ions +ĠB ACK +Run ning +Ġdebug ging +Ġgraph s +3 99 +ĠNig el +Ġb un +Ġpill ow +Ġprog ressed +fashion ed +Ġob edience +ER N +Ġrehe ars +C ell +t l +S her +Ġher ald +ĠPay ment +ĠC ory +ĠDe pt +Ġrep ent +ĠWe ak +uck land +Ġple asing +Ġshort ages +Ġjur ors +ĠK ab +q qa +Ant i +Ġw ow +ĠRC MP +Ġt sun +ĠS ic +Ġcomp rises +Ġsp ies +Ġprec inct +n u +Ġur ges +Ġtim ed +Ġstrip es +ĠB oots +Ġy en +Adv anced +Ġdisc rete +ĠArch angel +employ ment +D iff +Ġmon uments +Ġ20 9 +work er +Ġ19 6 +ĠI g +utter stock +T PS +J ac +Ġhomeless ness +Ġcomment ator +Ġrac ially +f ing +se ed +E le +ell ation +Ġeth anol +Ġpar ish +ĠD ong +ĠAw akening +Ġdev iation +ĠB earing +ĠTsu k +Ġrec ess +Ġl ymph +ĠCann abis +å ľ +ĠNEW S +Ġd ra +ĠStef an +ĠWr ong +ĠS AM +Ġloose ly +Ġinterpre ter +ĠPl ain +Go vernment +Ġbigot ry +Ġgren ades +ave z +pict ured +Ġmand ated +ĠMon k +ĠPed ro +Ġl ava +27 4 +Ġcyn ical +ĠScroll s +l ocks +M p +Ġcon gregation +orn ings +ph il +ĠI bid +Ġf erv +Ġdisapp earing +Ġarrog ant +sy n +ĠMa ver +ĠSu it +24 1 +Ġab bre +ack ers +P a +ĠY el +Whe never +Ġ23 5 +ĠV ine +ĠAn at +Ġext inct +LE T +Ġexecut able +V ERS +ox ide +D NA +ĠP rel +Ġresent ment +Ġcompr ise +ĠAv iv +Ġinter ceptions +Ġprol ific +IN A +ĠEr in +though t +2 19 +ĠPsychiat ry +un ky +chem ist +H o +ĠMcC oy +Ġbr icks +L os +ri ly +ĠUS SR +Ġr ud +Ġl aud +ĠW ise +ĠEmer ald +Ġrev ived +Ġdam ned +ĠRep air +id em +ct ica +Ġpatri arch +ĠN urs +me g +Ġcheap est +re ements +empt y +ĠCele br +Ġdepri vation +ch anted +ĠTh umbnails +E nergy +ĠEth an +ĠQ ing +Ġopp oses +W IND +v ik +ĠM au +ĠS UB +66 7 +G RE +ĠVol unte +nt on +C ook +å IJ +es que +Ġplum met +Ġsu ing +Ġpron ounce +Ġresist ing +ĠF ishing +ĠTri als +Ġy ell +Ġ3 10 +Ġin duct +Ġpersonal ized +oft en +R eb +EM BER +Ġview point +Ġexist ential +() ) +rem ove +MENT S +l asses +Ġev apor +Ġa isle +met a +Ġreflect ive +Ġentit lement +Ġdev ised +mus ic +asc ade +Ġwind ing +off set +Ġaccess ibility +ke red +Bet ter +ĠJohn ston +th inking +S now +ĠCroat ia +ĠAt omic +27 1 +34 8 +Ġtext book +ĠSix th +Ġ اÙĦ +Ġsl ider +ĠBur ger +b ol +S ync +Ġgrand children +Ġc erv ++ ) +Ġe ternity +Ġtweet ing +Ġspec ulative +Ġpiv otal +ĠW P +ĠT ER +ynam ic +Ġu pl +ĠC ats +per haps +Ġclass mates +Ġblat ant +' - +Ġl akh +ant ine +ĠB org +i om +/ ( +ĠAthlet ic +Ġs ar +OT A +ĠHoff man +Never theless +Ġad orable +Ġspawn ed +Ass ociated +ĠDom estic +Ġimpl ant +ĠLux em +ĠK ens +Ġp umps +ĠS AT +Att ributes +50 9 +av our +Ġcentral ized +ĠT N +Ġfresh ly +ĠA chieve +Ġouts iders +her ty +ĠRe e +ĠT owers +ĠD art +ak able +Ġm p +ĠHeaven ly +Ġr ipe +ĠCarol ine +ry an +Ġclass ics +Ġret iring +Ġ2 28 +Ġa h +Ġdeal ings +Ġpunch ing +ĠChap man +O ptions +max well +vol ume +Ġst al +Ġex ported +ĠQu ite +Ġnumer ical +B urn +F act +ĠKey stone +Ġtrend ing +Ġalter ing +ĠAfric ans +47 8 +ĠM N +ĠKn ock +Ġtempt ation +Ġprest ige +Over view +ĠTrad itional +ĠBah rain +Priv ate +ĠH OU +Ġbar r +ĠT at +C ube +US D +ĠGrand e +ĠG at +ĠFl o +Ġres ides +Ġind ec +vol ent +Ġperpet ual +ub es +Ġworld view +ĠQuant um +Ġfil tered +Ġen su +orget own +ERS ON +ĠM ild +37 9 +OT T +à ¥ +Ġvit amins +Ġrib bon +Ġsincere ly +ĠH in +Ġeight een +Ġcontradict ory +Ġgl aring +Ġexpect ancy +Ġcons pir +Ġmon strous +Ġ3 80 +re ci +Ġhand ic +Ġpump ed +Ġindic ative +Ġr app +Ġav ail +ĠLEG O +ĠMar ijuana +19 85 +ert on +Ġtwent ieth +################ ################ +ĠSw amp +Ġval uation +Ġaffili ates +adjust ed +ĠFac ility +26 2 +Ġenz ymes +itud inal +Ġimp rint +S ite +Ġinstall er +ĠT RA +m ology +lin ear +ĠCollect ive +ig ating +ĠT oken +Ġspec ulated +K N +ĠC ly +or ity +Ġdef er +Ġinspect ors +appro ved +R M +ĠSun s +Ġinform ing +ĠSy racuse +ib li +7 65 +Ġgl ove +Ġauthor ize +â̦â̦â̦â̦ â̦â̦â̦â̦ +ĠCru ise +Ġcontract ing +she ll +IF E +ĠJew el +p ract +ĠPhot oshop +ĠKnow ing +h arm +Ġattract ions +ad an +et us +01 8 +w agen +Al t +Ġmultip ly +Ġequ ilibrium +: { +ĠF ighters +ĠEd gar +Ġfour teen +Go vern +Ġmis use +Ġab using +Ġancest ry +ram er +64 4 +Ġwor ms +Ġthick er +ĠComb ine +Ġpeas ants +Ġv ind +Ġcon quest +Ġm ocked +Ġc innamon +ĠC ald +ĠGall up +Ġavoid ance +Ġincarn ation +ĠStr at +Ġt asted +ent a +ĠN eal +p ared +Ġtermin ology +ject ion +Scient ists +ĠIN S +ĠDe e +Ġdirect ories +R oad +ĠSh ap +br ight +ĠDirect ors +ĠCol umn +Ġb ob +Ġprefer ably +Ġgl itch +f urt +Ġe g +id is +C BC +Ġsur rendered +Ġtest ament +33 6 +ug gest +ĠN il +an other +Ġpat hetic +ĠDon na +Ġ2 18 +ĠA very +Ġwhis key +Ġf ixture +ĠCon quest +Ġbet s +O cc +ĠLe icester +] ." +Ġ) ); +Ġfl ashes +45 6 +Ġmask ed +ge bra +Ġcomput ed +che l +aud er +Ġdefe ats +ĠLiber ation +ĠOs ama +ĠV ive +Ch anges +Ch annel +Ġtar iffs +Ġm age +ĠS ax +Ġinadvert ently +ĠC RE +ĠRe aper +ink y +gr ading +Ġstere otyp +Ġcur l +ĠF ANT +Ġfram eworks +M om +ĠAn ch +Ġflav our +car bon +Ġperm itting +let cher +ĠMo zilla +ĠPark ing +ĠCh amp +Sc roll +Ġmurd erer +Ġrest ed +Ġow es +ĠP oss +AD D +IF F +res olution +ĠMin ing +Ġcompar ative +D im +Ġneighbour ing +ĠA ST +ĠT oxic +Ġbi ases +Ġgun fire +ur ous +ĠMom ent +19 83 +Ġper vasive +tt p +ĠNorm ally +r ir +S arah +ĠAlb any +Ġun sett +ĠS MS +ip ers +l ayer +ĠWh ites +up le +Ġtur bo +ĠLe eds +Ġthat s +ĠMin er +M ER +ĠRe ign +Ġper me +ĠBl itz +Ġ19 34 +Ġintimid ating +t ube +Ġecc entric +ab olic +box es +ĠAssoci ates +v otes +Ġsim ulate +um bo +aster y +Ġship ments +FF FF +an th +Ġseason ed +Ġexperiment ation +âĸ ł +law s +Me et +idd les +ant ics +R ating +IS IS +h ift +Ġfront s +b uf +01 7 +Ġun att +ĠD il +le ases +ĠGard ens +77 7 +t ouch +ve ll +45 8 +Ġ= ==== +s aving +Ġer osion +ĠQu in +Ġearn s +Ġaccomplish ment +ĠWe i +Ġ< [ +____ _ +Ġir rig +ĠT eddy +Ġconqu ered +ĠArm ored +Ġassert s +Ġmanip ulating +r é +Ġtranscript s +G allery +Ġplot ting +Ne il +Ġbetray al +load er +ĠS ul +Ġdispl acement +Ġroy alty +ĠW I +he it +ĠDev ices +alle l +Ġmunicipal ities +Ġcan al +St ars +ĠU AE +Ġ" â̦ +ĠC U +ab ove +Ġreson ance +ĠguiActive Un +add ed +ĠBra ves +ĠI bn +Ġhere by +ĠB RE +Ġshare holder +ĠH ir +ĠJ i +Ġstrange ly +Ġadm ired +Ġpl ight +Ġb achelor +ĠP ole +cipl inary +T ony +ĠArmen ian +Ġun man +ĠZion ist +St age +isco ver +Ġautom otive +Ġs idelines +Ġsl ick +ĠRena issance +ĠF UN +Im ages +ĠH aj +Ġp ing +Ġshort cut +ĠBl vd +ĠLook s +Ġbur sts +Ġcl amp +Ġm ish +Ġsort ing +Ġpatri ot +Ġcorrect ness +ĠScand inav +ĠCaval iers +p ython +az ar +Ġ3 75 +ĠJa une +40 9 +Ġdetrim ental +Ġstab bing +Ġpoison ed +Ġf ountain +oc ent +or st +ĠMar i +Ġr ains +ĠO vers +ĠInst itution +ud get +AM Y +t ale +ĠK R +ĠPr ices +Ġhead aches +Ġlands l +ĠA ura +Bon us +ĠZ hao +ĠH ip +Ġhop s +ĠKurd istan +Ġexplo iting +ry n +Ġhypocr isy +op ening +Ġgun shot +Ġw ed +inter stitial +Inter stitial +Ġam en +Bre aking +Ġmarket ed +W ire +ĠC rowd +Contin ue +ĠK nown +ĠEffect ive +ore an +iz ons +Jose ph +Ġescal ation +us ername +Ġcur tain +AT ES +ĠP AR +ĠM iy +Ġcounter fe +l ene +Ġcont enders +d aily +ĠAs c +ĠPhill ip +most ly +Ġfil ename +he ne +Ġresemb ling +Ġst aging +ĠCh loe +Ġw iring +H on +ĠRen ew +ott age +ĠHy brid +m uch +Ġstro kes +Ġpolicy makers +AP TER +ĠArk ham +pl ot +Ġassist ants +Ġde port +ĠSe ga +Ġinflu enza +ĠC ursed +ĠK obe +Ġskin ny +Prov ider +ĠR ip +Ġincrement al +product s +B F +Ġd ome +ĠC redits +Ġlos ers +int s +ĠBet ty +ĠTal ent +ĠD AM +L v +E ss +Ġd ens +tem p +J udge +od ic +Ġ' ( +UR ES +ets k +V O +Ġretrie ved +Ġarchitect s +Ù ĩ +Ġeth ic +ĠSecond ary +st ocks +ad ia +Ġ3 25 +ĠOp inion +Ġsimultane ous +Ġd izz +ul p +Ġsmugg ling +ipp ery +R andom +f acing +ĠD as +Ġstock p +Ġdiscl osures +po inter +Ġcor al +ĠSe lection +ĠP ike +ival ent +Ġruth less +ĠR im +Ġensu ing +ĠExper iment +Ġcongress man +Ġbelie ver +Ġun specified +ĠM ord +Ġknowledge able +ĠV ERY +T X +Ġstra ps +Ġtur f +apesh ifter +Ġmar ital +Ġfl ock +ãģ Ĩ +26 3 +AM ES +ĠOpp osition +Ġtre asures +ĠG OD +Ġmodel ed +ĠWOR LD +Ġ( [ +ĠUs age +H F +Ġ$ ( +uss ed +Ġpione er +E ight +par se +b read +rit z +ĠMir anda +ĠK ant +++ ) +ore n +Ġprov oked +Ġbre eds +ĠIn cludes +ĠPast ebin +ĠFl ip +J ava +Ġbr ink +Ġrum ored +Ġun seen +Ġgar nered +ĠDef in +al ted +Ġtatt oos +Ġhes itation +is itions +ĠWe aver +ĠReport ing +Ġtherap ies +Ġconsult ants +Ġresid ual +ĠMal i +ĠRom a +i ago +ĠRes idents +ub i +Ġremed ies +Ġadapt ive +ĠAl ive +ĠBar cl +Ġwal lets +c rypt +etermin ation +ĠPel osi +Ġsl ipping +oton in +Ġall iances +pat rick +ir is +Ġor th +ĠPer kins +ĠDe V +ĠG ets +Ġdry ing +ge e +fore st +ĠFor get +ore m +33 9 +Ġvague ly +ĠD ion +ĠP orn +ĠH OW +Ġp neum +Ġrub ble +ĠT aste +enc ia +ĠG el +Ġd st +Ġ24 5 +ĠMoroc co +inf lamm +ĠTw ins +Ġb ots +d aughter +ĠB alk +Ġbre thren +Ġlog os +Ġgo bl +f ps +Ġsub division +Ġp awn +Ġsquee zed +Ġmor ale +ĠD W +' " +Ġkn ot +ook y +Ġdiv isive +Ġboost ed +ch y +ãĥ IJ +if act +Ġnewcom ers +ĠWrest ling +Ġsc outs +w olves +R at +Ġnin eteenth +ĠOs borne +St ats +Ġem powered +Ġpsych opath +ĠO EM +ugg age +ĠP K +ĠMoh ammad +P ak +Ġanarch ists +ĠExt ract +est hes +ĠStock holm +l oo +ĠG raph +Ġdeploy ing +ĠStr anger +ĠM old +Ġstaff er +Ġdiscount ed +uck le +ple ase +ĠLand ing +ÃŃ a +Ġ19 3 +Ġan te +Ġrep etition +Ġ+ /- +Ġpar ody +Ġlive ly +AA A +ĠHor us +Ġp its +ind ers +L OC +ĠVen ice +40 6 +ĠDis cover +â Ĩ +ellect ual +Ġp ens +Ġey el +ig uous +Im pl +Ġj oking +Ġinv al +ĠBel fast +Ġcredit ors +ĠSky walker +ov sky +Ġcease fire +Ġse als +is oft +) ). +ĠFel ix +IT S +Ġt resp +ĠBlock chain +ew are +ĠSch war +en ne +mount ed +ĠBe acon +les h +Ġimmense ly +Ġche ering +Em ploy +sc ene +ish ly +atche wan +ĠNic olas +Ġdr ained +ĠEx it +ĠAz erb +j un +Ġflo ated +u ania +De ep +Ġsuper v +Ġmyst ical +ĠD ollar +ĠApost le +ĠR EL +ĠProv ided +ĠB ucks +ãĥ ´ +cut ting +Ġenhance ments +ĠPengu ins +ĠIsa iah +Ġj erk +ĠW yn +Ġst alled +Ġcryptoc urrencies +ĠR oland +sing le +Ġl umin +ĠF ellow +ĠCap acity +ĠKaz akh +W N +Ġfin anced +38 9 +Ġt id +Ġcoll usion +ĠMy r +î Ģ +Sen ator +Ġped iatric +Ġneat ly +Ġsandwic hes +ĠArchitect ure +Ġt ucked +Ġbalcon y +Ġearthqu akes +qu ire +F uture +Ġhe fty +é Ĺ +Ġspecial izes +Ġstress es +Ġs ender +Ġmisunder standing +Ġep ile +Ġprov oke +ĠCol ors +Ġdis may +uk o +[ _ +58 6 +ne utral +Ġdon ating +ĠRand all +Mult i +Ġconvenient ly +ĠS ung +ĠC oca +Ġt ents +ĠAc celer +Ġpart nered +27 2 +ir ming +ĠB AS +s ometimes +Ġobject ed +ub ric +p osed +LC S +gr ass +Ġattribut able +V IS +Israel i +Ġrepe ats +ĠR M +v ag +ut a +in ous +Ġin ert +ĠMig uel +æ Ń +ĠHawai ian +B oard +Ġart ific +ĠAzerb ai +as io +ĠR ent +A IN +Ġappl iances +Ġnational ity +Ġass hole +ĠN eb +Ġnot ch +h ani +ĠBr ide +Av ailability +Ġintercept ed +Ġcontin ental +Ġsw elling +ĠPers pect +b ies +. < +ith metic +ĠL ara +Ġtempt ing +add r +Ġoversee ing +cl ad +ĠD V +ĠGing rich +Ġm un +ĠApp ropri +Ġalter ations +ĠPat reon +Ġha voc +Ġdiscipl ines +Ġnotor iously +aku ya +ier i +? ). +ĠW ent +Ġsil icon +Ġtre mb +Cont ainer +K nown +Ġmort ar +est e +ick a +Ar thur +ĠPre viously +ĠMart y +Ġsp arse +g ins +Ġin ward +ĠParticip ant +C opy +ĠM isc +Ġantib iotic +ĠRet ro +Ġel usive +Ġass ail +ĠBatt alion +ĠB ought +Ġdimin ish +ĠEuro pa +s ession +ĠDanger ous +ies el +Ġdisbel ief +Ġbl asts +ext reme +ĠBoy d +ĠProject s +ĠGu ys +Ġunder gone +Ġgr ill +ĠDw ight +Ġ19 7 +US ER +Ġfiles ystem +Ġcl ocks +T aylor +Ġwra pper +Ġfold ing +ous and +ĠPhilipp ine +ATION AL +ĠPer th +Ġas hes +Ġaccum ulate +ĠGate way +Sh op +orks hire +H an +ĠBar rel +ĠLe h +ĠX V +Ġwh im +Ġrep o +ĠC G +ĠM am +Ġincorpor ating +Ġbail out +Ġlingu istic +Ġdis integ +C LE +Ġcinem atic +ĠF iber +S yn +il ion +ĠCom pos +c hens +Ġne oc +Ġbo iled +F INE +on o +un cle +ik en +ĠB M +Î ¹ +Ġreceipt s +Ġdisp osed +ĠTh irty +ĠR ough +ĠA BS +Ġnot withstanding +oll en +# $ +Ġunrel iable +Ġbl oom +Ġmedi ocre +Ġtr am +ĠTas man +Ġsh akes +Ġmanifest o +ĠM W +Ġsatisf actory +Ġsh ores +Ġcomput ation +Ġassert ions +orm ons +ar ag +ab it +Dem ocrats +ĠL oot +ĠVol ks +ha ired +Ġgrav itational +S ing +ĠM iz +Ġthro ttle +Ġtyr anny +ĠView s +Ġrob ber +ĠMinor ity +Ġsh rine +sc ope +pur pose +Ġnucle us +our cing +ĠUS DA +ĠD HS +w ra +ĠBow ie +Sc ale +ĠB EL +x i +I ter +Ġ( ), +w right +Ġsail ors +ous ed +NAS A +ĠPro of +ĠMin eral +t oken +ĠF D +R ew +Ġe ll +6 30 +Ġchance llor +ĠG os +Ġamount ed +ĠRec re +ome z +ĠOpt im +ĠOl ive +Ġtrack er +ow ler +ĠUn ique +R oot +Ġmar itime +ĠQur an +ĠAd apt +Ġecosystem s +ĠRe peat +ĠS oy +ĠI MP +Ġgrad uating +and em +P ur +ĠRes et +ĠTr ick +ĠPh illy +ĠT ue +ĠMalays ian +Ġclim ax +Ġb ury +Ġcons pic +ĠSouth ampton +ĠFl owers +Ġesc orted +ĠEduc ational +ĠI RC +Ġbrut ally +e ating +Ġpill ar +ĠS ang +ĠJ ude +ar ling +ĠAm nesty +Ġrem inding +ĠAdminist rative +hes da +Ġfl ashed +ĠP BS +per ate +fe ature +Ġsw ipe +Ġgra ves +oult ry +26 1 +bre aks +ĠGu er +Ġsh rimp +ĠV oting +qu ist +Ġanaly tical +Ġtables poons +ĠS OU +Ġresear ched +Ġdisrupt ed +Ġj our +Ġrepl ica +Ġcart oons +b ians +} ) +c opy +G ot +ou ched +P UT +Ġsw arm +not ations +s aid +Ġreb uilt +Ġcollabor ate +Ġr aging +Ġn ar +Ġdem ographics +ĠD DR +Ġdist rust +oss ier +ĠK ro +Ġpump kin +Ġreg rets +Ġfatal ities +ĠL ens +ĠO le +p d +Ġpupp et +ĠOut look +ĠSt am +O l +F air +U U +Ġre written +Ä ± +Ġfasc inated +Ġve ctors +Ġtrib unal +u ay +ĠM ats +ĠCo ins +[ [ +Ġ18 1 +Ġrend ers +ĠK aepernick +Ġesp ionage +Ġsum m +Ġd itch +Acc ount +Ġspread sheet +Ġmut ant +p ast +40 7 +Ġd ye +Ġinit iation +Ġ4 000 +Ġpunish able +Ġth inner +ĠKh al +Ġinter medi +D un +ĠGoth am +Ġeager ly +Ġvag inal +p owers +V W +ĠWATCH ED +Ġpred ator +ams ung +Ġdispar ity +Ġ[ * +Ġam ph +Ġout skirts +ĠSpir its +Ġskelet al +Ð » +ĠR ear +Ġissu ance +ĠLog ic +re leased +Z Z +ĠB ound +Ent ry +Ġex its +is ol +ĠFound er +Ġw re +ĠGreen land +ĠM MO +t aker +IN C +ãģ ¾ +Ġhour ly +hen ko +Ġfantas ies +Ġdis ob +Ġdemol ition +ãĥ ĭ +Ġen listed +rat ulations +Ġmis guided +Ġens ured +Ġdiscour aged +m ort +Ġfl ank +Ġc ess +Ġreact s +ĠS ere +s ensitive +ĠSer pent +ass ad +Ġ24 7 +Ġcalm ly +b usters +Ġble ed +ĠSt ro +Ġamuse ment +ĠAntar ctica +Ġs cept +ĠG aw +a q +ason ic +Ġsp rawling +n ative +atur ated +ĠBattle field +IV ERS +E B +ĠG ems +ĠNorth western +ĠFil ms +ĠAut omatic +Ġappre hend +ãģ ¨ +Ġgui Name +Ġback end +Ġevid enced +ge ant +01 2 +ĠS iege +Ġexternal To +Ġunfocused Range +ĠguiActiveUn focused +Ġgui Icon +ĠexternalTo EVA +ĠexternalToEVA Only +F ri +ch ard +en aries +Ġchief s +Ġc f +ĠH UD +Ġcorro bor +Ġd B +ĠT aken +ĠPat ricia +ra il +ĠCh arm +ĠLiber tarian +rie ve +Person al +ĠO UR +ger ies +Ġdump ing +Ġneurolog ical +it imate +ĠClint ons +raft ed +ĠM olly +Ġtermin als +reg ister +Ġfl are +Ġenc oded +Ġautop sy +p el +m achine +Ġexempt ions +ĠRoy als +d istance +Ġdraft s +Ġl ame +ĠC unning +Ġsp ouses +ĠMark ets +ĠCar rier +Ġimp lying +ĠY ak +s id +Ġl oser +Ġvigil ant +Ġimpe achment +Ġaug mented +ĠEmploy ees +Ġunint ended +tern ally +ĠW att +Ġrecogn izable +ess im +æ Ŀ +Ġco ated +r ha +Ġlie utenant +ĠLegisl ation +pub lished +44 4 +01 3 +Ġide ally +ĠPass word +Ġsimpl ify +ĠMet a +ĠM RI +Ġple ading +organ ized +hand ler +Ġun ravel +cor rect +Ġ icy +Ġparan oid +Ġpass er +Ġinspect ions +of er +ĠHealth care +28 3 +ĠBr ut +iol a +for ge +ĠMed ieval +MS N +ie vers +ĠProgram ming +å ī +Ġ2 23 +m u +ĠC LE +ug a +Ġsho ppers +Ġinform ative +ĠPl ans +Ġsupplement ation +ĠT ests +ty ard +ocy tes +ĠVeg a +ĠGujar at +erman ent +Ex cept +ĠL OT +all a +ĠC umm +ĠO sw +Ġven om +ĠDeb t +ĠD OWN +Ġreun ion +Ġm uc +ĠRel ief +Ġge op +ĠðŁ ĺ +al ogue +An th +ech o +Ġcor ros +Ġrepl ication +ĠBl azing +ĠD aughter +Ġinf lic +ĠLind sey +Ù Ī +28 4 +Ex it +Ġgl oom +TA IN +Ġundermin ing +Ġadv ising +h idden +Ġover flow +Ġg or +urd ue +Ġe choes +enh agen +Ġimp uls +d rug +c ash +Ġas ync +Ġmir ac +at ts +p unk +Ġpiv ot +ĠLegisl ative +Ġblog gers +ĠCl aw +s burg +d yl +ĠRecomm end +Ġver te +Ġprohib iting +ĠPant her +Jon athan +Ġo min +Ġhate ful +28 1 +ĠOr che +ĠMurd och +down s +Ġas ymm +G ER +Al ways +Ġinform s +ĠW M +ĠP ony +ĠApp endix +ĠAr lington +J am +Ġmedic inal +ĠS lam +IT IES +Ġre aff +ĠR i +F G +S pring +b ool +Ġthigh s +Ġmark ings +ĠRa qqa +ĠL ak +p oll +ts ky +ĠMort y +ĠDef inition +Ġdeb unk +end ered +ĠLe one +a vers +Ġmortg ages +App arently +N ic +ha us +ĠTh ousands +au ld +Ġm ash +sh oot +Ġdi arr +Ġconscious ly +H ero +e as +ĠN aturally +ĠDestroy er +Ġdash board +serv ices +R og +Ġmillenn ials +Ġinv ade +- ( +Ġcomm issions +ĠA uckland +Ġbroadcast s +Ġfront al +Ġcr ank +ĠHist oric +Ġrum ours +CT V +Ġster il +Ġboost er +rock et +ãĤ ¼ +ut sche +ĠP I +Ġ2 33 +ĠProdu cer +ĠAnaly tics +Ġinval uable +Ġunint ention +ĠC Y +Ġscrut in +Ġg igg +Ġeng ulf +Ġprolet ariat +Ġh acks +ĠH ew +ar ak +ĠSl ime +ield ing +ag her +ĠEll iot +Ġtele com +Ġ2 19 +ult an +ĠAr bor +ĠSc outs +B an +Ġlifes pan +Ġbl asp +38 8 +Ġjud iciary +ĠContin ental +ask ing +Mc C +L ED +Ġbag gage +ĠSorce rer +Ġrem nants +ĠGriff ith +ets u +ĠSub aru +ĠPerson ality +des igned +ush ima +agn ar +Ġrec oil +Ġpass ions +\ ": +Ġte e +Ġabol ition +ĠCreat ing +j ac +Ġ19 4 +01 9 +Ġpill ars +ric hed +/ " +t k +Ġlive lihood +Ġro asted +ah on +ĠH utch +ass ert +Ġdivid end +Ġkn it +Ġd aunting +Ġdisturb ance +Ġsh ale +Ġcultiv ated +Ġrefriger ator +L B +ĠN ET +Ġcommercial s +Ġthink ers +45 5 +Ġch op +B road +Ġsuspic ions +Ġtag ged +l ifting +Ġsty lish +ĠShield s +Short ly +Ġt ails +A uth +ST E +ĠG AME +Ġse ism +ĠK is +olog ne +Ġcow ork +Ġforc ibly +Ġthy roid +ĠP B +AN E +mar ried +h orse +Ġpoly mer +ĠCh al +od or +DE BUG +ĠCon text +Ġbl iss +Ġpin point +ĠMat hemat +leg ram +ĠWeek end +Ġlab elled +Ġb art +it les +Ġest rogen +âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ +" ' +Ġvis ibly +Ġouts ider +aid a +Are a +Ġdisse min +Ġdish onest +ĠCl osed +ĠBullet in +ĠRam sey +sw ord +ĠX I +our ced +S ame +34 6 +ĠRe pe +ĠK ou +c ake +em is +C ache +ĠMe aning +ĠEn light +onom y +Ġmanifest ation +sw orth +J ay +Ġch ore +ö r +D ream +Ġsanction ed +Ġcult urally +ĠA ra +N av +Ġthe ological +Ġstr ut +ĠV O +ĠHand book +Ġconstruct ing +Ġ ¶ +ĠBenef its +ĠPsych ological +s ac +å ¸ +p olicy +ĠMat ters +ĠReport ed +ĠBy te +Ġvit ro +ĠM aiden +Ġl am +ĠJenn ings +Ġgar ment +ĠRut gers +ĠStaff ord +ĠWell ington +Ġinter mitt +Ġn pm +Ġord eal +Ġplug ged +o oming +in ished +fram ework +Ġtim ber +Ġc ass +Ġ8 50 +il ess +ĠRed ux +7 68 +St re +Ġsurpass ed +w hel +Ġparalle ls +Ġve il +ĠG I +ĠR EST +Ġread iness +s ort +Ġmod ifying +ĠSl ate +ru ff +Ġmar ble +Ġinf rared +Ġaud itor +ĠFANT ASY +ĠP overty +ĠS PD +Ġ" ( +K y +RA Y +Ġexecut ions +ĠBever ly +ĠMarx ism +ĠBur st +ĠK ali +est ones +Clear ly +E ll +ãģ § +ĠProceed ings +T oken +IF IC +ñ a +Cent ral +ĠH aley +ĠD rama +Ġform ations +OR N +Book s +Ġdom inating +ĠFly ers +ĠCompan ion +Ġdiscipl ined +ĠYug oslav +ĠSpell s +Ġv engeance +Ġland lords +L en +ĠO gre +ano ia +Ġpier cing +Ġcon greg +Ġscore r +ob ia +Ġnic kel +ĠLear ns +Ġre jo +Ġmaster piece +Fl ash +Ġinhab ited +ĠOpen GL +ĠD ud +ĠI CO +Ġar ter +Ġpl ur +Ġmaster y +Ġlong standing +st ed +Ġw ines +Ġtelev ised +ĠSh rine +ĠBay ern +Ġâ ĵĺ +Ġencl osure +j ohn +Ġprophe ts +ĠRes urrection +ĠOrd ers +Ġun even +r als +Ġd wind +ĠL ah +ĠSl oven +37 8 +Ġins istence +aff le +ĠCl one +Ġhard ship +ĠCongress man +Ġple ad +Ġreview ers +Ġc ured +Ġ19 35 +as ley +f ake +ĠTh inking +yd ia +P ART +ĠD ota +o it +Ġwh ipped +Ġb ouncing +ĠHispan ics +com ings +Ġcann abin +ĠCh ambers +ĠZ ack +Option al +Ġco ats +Ġprow ess +ĠNort on +Ġplain ly +Ġfre ight +Ġinhib ition +Ġcl am +Ġ30 3 +ke f +ale igh +L uke +Ġpsych o +ator ium +M ED +Ġtreat ies +Ġind isc +Ġd c +OP S +Ġresil ient +ĠInter state +Ġsl ack +Ġmund ane +Ġestab lishes +35 9 +Ġstr ained +Ġn ond +S us +Ġcast e +ar ate +ie ving +Ġunfair ly +Ġpars er +on ial +urs ive +V ia +ĠOtt o +ĠAuthor ities +stro ke +K R +ĠMer cy +Ġfurn ished +Ġout set +Ġmet ic +19 82 +olith ic +ĠT ent +og ical +ĠA ircraft +Ġh ides +ĠBec ame +Ġeduc ators +re aching +Ġvol atility +Ġtodd ler +ĠNAS CAR +ĠTw elve +ĠHigh lights +Ġgra pe +Ġspl its +Ġpe asant +Ġre neg +ĠMS I +Tem p +st ars +Ġtre k +ĠHy de +b inding +Ġreal ism +Ġox ide +ĠH os +Ġmount s +Ġbit ing +Ġcollaps ing +Ġpost al +Ġmuse ums +Ġdet ached +Ġrespect ing +Ġmonop ol +Ġwork flow +ĠC ake +Tem plate +ĠOrgan isation +Ġpers istence +36 9 +C oming +B rad +Ġredund ant +ĠG TA +Ġb ending +Ġrev oked +Ġoff ending +Ġfram ing +Ġprint f +Comm un +mem bers +Out side +Ġconst rued +Ġc oded +F ORE +Ġch ast +Ch at +Ind ian +ĠY ard +? !" +ĠP orts +ĠX avier +ĠR ET +' ." +ĠBo at +iv ated +ich t +umer able +D s +ĠDun n +Ġcoff in +Ġsecure ly +ĠRapt ors +ĠB es +Install ation +Ġin ception +ĠHealth y +end ants +Ġpsych ologists +ĠShe ikh +c ultural +ĠBlack Berry +sh ift +F red +oc he +Ġc akes +ĠS EO +ĠG ian +ĠAs ians +og ging +e lement +Ġpund its +ĠV augh +ĠG avin +Ġh itter +Ġdrown ed +Ġch alk +ĠZ ika +Ġmeas les +80 2 +â̦ .. +ĠAW S +] " +Ġdist ort +ĠM ast +Ġantib odies +ĠM ash +Mem ory +ĠUg anda +ĠPro b +Ġvom iting +ĠTurn s +Ġoccup ying +Ġev asion +ĠTher apy +Ġprom o +Ġelect r +Ġblue print +ĠD re +pr iced +ĠDep ot +Ġallev iate +ĠSom ali +m arg +n ine +Ġnostalg ia +ĠShe pherd +Ġcaval ry +Ġtor ped +ĠBlood y +x b +Ġs ank +Ġgo alt +report print +embed reportprint +clone embedreportprint +ĠIn itially +ĠF ischer +Ġnot eworthy +c ern +Ġin efficient +raw download +rawdownload cloneembedreportprint +c ation +ĠD ynasty +l ag +D ES +Ġdistinct ly +ĠEston ia +Ġopen ness +Ġg ossip +ru ck +W idth +ĠIb rahim +Ġpet roleum +Ġav atar +ĠH ed +ath a +ĠHog warts +Ġc aves +67 8 +Ġsafegu ard +ĠM og +iss on +ĠDur ham +sl aught +ĠGrad uate +Ġsub conscious +ĠEx cellent +ĠD um +---- - +Ġp iles +ĠW ORK +ĠG arn +ĠF ol +ĠAT M +Ġavoid s +ĠT ul +Ġble ak +EL Y +iv ist +light ly +P ers +ĠD ob +ĠL S +Ġins anity +Î µ +atal ie +En large +Ġtw ists +Ġfault y +Ġpir acy +Ġimp over +Ġrug ged +ĠF ashion +Ġs ands +' ? +sw ick +Ġn atives +Ġhe n +ĠNo ise +ãĥ Ĺ +Ġg reens +Ġfree zer +Ġd ynasty +ĠFather s +ĠNew ark +Ġarchae ological +Ġo t +ob ar +Ġblock ade +Ġall erg +L V +Ġdeb it +ĠR FC +ĠMil ton +ĠPress ure +Ġwill ingly +Ġdisproportion ate +Ġopp ressive +Ġdiamond s +Ġbelong ings +19 70 +Ġbell s +Ġimperial ism +Ġ2 27 +Ġexpl oding +ĠE clipse +Ġ19 19 +Ġr ant +Ġnom inations +34 7 +Ġpeace fully +ric a +ĠF UCK +Ġvib ration +mal ink +Ġro pes +ĠIv anka +ĠBrew ery +ĠBook er +ĠOw ens +go ers +Serv ices +ĠSn ape +Ġ19 1 +39 5 +Ġ2 99 +just ice +Ġb ri +Ġdisc s +Ġprom inently +Ġvul gar +Ġsk ipping +l ves +Ġtsun ami +37 4 +ĠU rug +ĠE id +rec ated +p hen +Ġfault s +ĠStart ed +9 50 +Ġp i +Ġdetect or +Ġbast ard +Ġvalid ated +Space Engineers +OUR CE +Ġ( ~ +Ġuns ur +Ġaff irmed +Ġfasc ism +Ġres olving +ĠCh avez +ĠC yn +Ġdet ract +L ost +Ġrig ged +Ġhom age +ĠBrun o +55 5 +ec a +Ġpress es +Ġhum our +Ġsp acing +Ġ' / +olk ien +C oun +OP ER +T re +S on +ĠCambod ia +ier re +m ong +o zy +Ġliquid ity +ĠSov iets +ĠFernand o +Ġ2 29 +Ġsl ug +ĠCatal an +elect ric +Ġsc enery +ĠH earth +Ġconst rained +Ġgoal ie +ĠGu idelines +ĠAm mo +ĠPear son +Ġtax ed +Ġfet us +Resp onse +ĠAlex is +th ia +G uy +Ġrecon struct +Ġextrem es +Ġconclud ing +ĠP eg +ook s +Ġded uctions +R ose +Ġground breaking +ĠT arg +ãĥ ģ +ĠRe ve +res ource +Ġmo ons +Ġelectrom agnetic +Ġamid st +ĠVik tor +N ESS +B ACK +Ġcomm ute +ĠAna heim +Ġfluct uations +6 40 +Ġnood les +ĠCop enhagen +ĠT ide +ĠGri zz +ĠS EE +Ġpip elines +Ġsc ars +end o +ag us +ĠE TF +/ # +ĠBec ome +44 8 +Ġvis c +ĠRecomm ended +Ġj umper +Ġcogn ition +Ġassass in +Ġwitness ing +ĠSet up +Ġl ac +v im +IS M +p ages +SS L +35 8 +Ġad ject +indust rial +l ore +cher y +Ġgl itter +Ġc alf +Flor ida +Ġspoil ers +Ġsucceed s +Ġch anting +Ġslog ans +ĠTr acy +Vis it +rol ogy +Ġm ornings +Ġline age +Ġs ip +Ġintense ly +Ġflour ish +ĠSle eping +ĠF em +or por +ĠK lan +ĠDar th +h ack +ĠNi elsen +Ġtum ors +Ġprocure ment +ĠY orkshire +Ġra ided +K Y +An na +Ġ// [ +ĠDis order +ĠMust ang +ĠW en +ĠTry ing +s q +Ġdeliver ies +Ġshut ter +Ġcere bral +Ġbip olar +ĠC N +l ass +j et +Ġdeb ating +> : +Ġe agle +gr ades +ĠD ixon +UG C +M AS +ĠDr aco +ĠMach ines +aff er +Ġem an + ² +pr on +ĠG ym +Ġcompar atively +ĠTrib unal +PR O +Ġle x +Ġfert ile +Ġdep ressing +Ġsuperf icial +ess ential +ĠHun ters +g p +Ġprom inence +L iber +ĠAn cest +ote chnology +Ġm ocking +ĠTra ff +ĸ ļ +Med ium +I raq +Ġpsychiat rist +Quant ity +ĠL ect +Ġno isy +5 20 +G Y +Ġsl apped +ĠM TV +Ġpar a +p ull +Mult iple +as her +Ġn our +ĠSe g +Spe ll +v ous +ord ial +Sen ior +ĠGold berg +ĠPl asma +ne ed +Ġmess enger +ere t +Ġteam ed +Ġliter acy +ĠLe ah +ĠD oyle +Ġem itted +U X +Ġev ade +Ġm aze +Ġwrong ly +ĠL ars +Ġstere otype +Ġpled ges +Ġarom a +ĠM ET +Ġac re +ĠO D +Ġf f +Ġbrew eries +ĠH ilton +und le +ĠK ak +ĠThank fully +ĠCan ucks +in ctions +ĠApp ears +Ġco er +Ġundermin ed +ro vers +And re +Ġbl aze +um ers +Ġfam ine +amp hetamine +ulk an +Am ount +Ġdesper ation +wik ipedia +develop ment +ĠCor inth +uss ia +Jack son +L I +N ative +R s +Oh io +ĠKath leen +F ortunately +Ġattend ant +ĠPre ferred +ĠDid n +ĠV s +M is +Ġrespond ent +Ġb oun +st able +Ġp aved +Ġunex pl +ĠChe ney +L M +ĠC ull +bl own +Ġconfront ing +oc ese +serv ing +W i +ĠLith uania +ann i +Ġst alk +h d +Ġv ener +AP H +ynchron ous +UR R +um ably +hist oric +H alf +H ay +Ġresil ience +spe ction +Ġabandon ing +O bs +ĠDeb bie +Ġgrad ient +ĠPl aint +ĠCan al +AR CH +Ġexpans ive +Ġfun g +Ġb ounced +U nd +Ġprec autions +Ġclar ification +Ġd agger +Ġgri ps +Ġ µ +ĠRiver a +ĠUnd ead +is ites +ĠFIR ST +ñ o +aud i +Ġhost ages +Ġcompl iant +Ġal umni +Se ven +Ġcyber security +e ither +Col lect +Ġinvari ably +ĠS oci +Ġlaw maker +Ġa le +ĠPerson ally +N azi +Ġcustom ization +ĠPro c +ĠSask atchewan +eat uring +Ġsp ared +Ġdiscontin ued +Ġcomput ational +ĠMotor ola +Ġsuprem acist +government al +Ġparad ise +ĠDown ing +ĠNik on +Ġcat alyst +ber ra +Tor onto +8 75 +bet a +ĠMac ron +Ġunreal istic +ve ctor +ĠVeh icles +it iveness +ĠR V +ĠCol bert +s in +o ji +ent in +ĠKr ish +hell o +ff ield +ok y +ĠT ate +Ġmap le +Ġa ids +chem ical +33 4 +n uts +ĠWar p +Ġx x +ĠRob b +umer ous +_- _ +ft ime +ĠV W +Ġw inger +ĠD ome +t ools +ĠP V +ĠGe orgetown +Ġg eared +Ġjihad ists +Ġc p +Ġster oids +M other +cler osis +ĠDR M +nes ia +Ġl inger +Ġimm ersive +ĠC OUN +Ġoutwe igh +ens ual +B and +Ġtransform s +mat ched +ps ons +ĠJud icial +f actor +Ġrefer ral +Ġodd ly +ĠW enger +B ring +ĠB ows +60 2 +IC LE +Ġl ions +ĠAcad emic +ĠTh orn +ĠRa ider +kef eller +St orage +L ower +ĠOr t +ĠEqu ality +AL T +ĠS OC +T ypes +Ġl yn +ĠAss et +co at +TP P +C VE +ĠPione er +app lication +Mod ern +ĠH K +En vironment +Al right +R ain +IP P +ĠShi ite +Ġm ound +ĠAb ilities +cond ition +St aff +Ġcompet ence +ĠM oor +ĠDi ablo +Ġwith held +Ġost ensibly +ĠB rom +Ġms g +Ġden omin +ĠRef erences +ĠF P +Ġplun ged +Ġp amph +m oving +cent ral +Ġdown right +Ġf ading +T al +T yp +ĠTh y +uk es +it he +Ġo ve +Ġbatt led +Ġseaf ood +Ġfig ur +ĠR D +c rop +Ġsqu ads +{ \ +à ¹ +ĠE h +Ġinterview ing +ĠQ in +Ġas piring +PL IC +Ġcla uses +ĠG ast +ĠN ir +Ġl uggage +Ġh ose +Ġsystem d +Ġdesc ending +ĠRev ised +ĠR ails +al ign +70 9 +33 7 +Ġf ug +charg ing +t ags +Ġut er +k ish +WAR NING +49 0 +prof its +Ġvoy age +Ġa ce +ĠV anguard +ĠT anks +ĠM uk +Ġ2 26 +S afe +Ar mor +Ġvolcan ic +Ġwom b +ĠM IL +Ġbegin ner +ĠRec ogn +ĠA AP +PL AY +) ! +Ġdetect ing +c n +Ġbre aches +Bas ically +ĠP ag +ĠMunicip al +ĠInd ie +ĠL af +ĠDis able +ĠOl son +Ġrest rained +Ġrul ings +Ġhum ane +ev ents +ĠCinem a +display Text +ĠH atch +action Date +onna issance +Ġassault ing +ĠL ug +CH AT +Ġvig orous +ĠPer se +Ġintoler ance +ĠSnap chat +ĠSh arks +Ġd ummy +ĠDi agn +ĠGu itar +im eters +40 3 +RE G +A x +Ġsepar ates +ĠMah m +Ġt v +j ah +O OL +C irc +ĠWinds or +uss ian +Ġintu ition +Ġdis dain +ĠDon ovan +Ġ2 21 +E mb +Ġcondem ning +Ġgener osity +zz y +Ġpant ies +ĠPre vent +Action Code +AN A +34 2 +external ActionCode +Ġspec ifying +Ġcryst all +J ere +Ġru pt +ĠApp rentice +Ġprof iling +Ð º +St rike +Ġsid eline +Ġoblig ated +Ġocc ult +Ġbureaucr atic +ant ically +rupt ed +neg ative +ĠEthiop ia +ĠC ivic +Ġins iders +el igible +ĠTV s +ĠB AR +ĠT I +i ologist +ĠA IR +Ġsubstit uted +Ar ab +ĠS aul +ĠY og +p rem +Ġbuild ers +Ġstation ary +Ġdoubt ful +Ġvig orously +Ġthr illing +Ph ysical +ĠCare y +ĠHyd ra +geon ing +ĠS ly +y ton +Ġborrow ers +ĠPark inson +Ġ ë +ĠJama ica +Ġsat ir +Ġinsurg ents +ĠF irm +Ġis ot +ĠK arn +our ning +ak ens +doc s +l ittle +ĠMon aco +CL ASS +Tur key +L y +ĠCon an +ass ic +Ġstar red +ĠPac ers +et ies +Ġt ipping +M oon +ĠR w +s ame +Ġcav ity +Ġgo of +ĠZ o +Sh ock +um mer +Ġemphas izes +Ġreg rett +Ġnovel ty +Ġen vy +ĠPass ive +r w +50 5 +Ġind ifferent +ĠR ica +ĠHim self +ĠFred die +Ġad ip +ä¸ Ģ +Ġbreak out +Ġhur ried +ĠHu ang +ĠD isk +Ġro aming +?????- ?????- +U V +ĠRick y +ĠS igma +Ġmarginal ized +Ġed its +Ġ30 4 +mem ory +Ġspec imen +29 3 +ãģ ¯ +Ġvert ically +Ġaud ition +ĠHe ck +Ġc aster +ĠHold ings +ad al +ĠC ron +ĠL iam +Ġdef lect +P ick +ĠDeb ug +RE F +Ġvers atility +ot hes +class ified +ĠMah ar +ĠH ort +C ounter +st asy +not iced +33 1 +ĠSh im +f uck +ĠB ie +Ġair ing +ĠPro tein +ĠHold ing +Ġspect ators +ili ated +ĠThat cher +n osis +ãĥ¼ ãĥ³ +Te le +B oston +ĠTem pl +st ay +Ġdecl arations +47 9 +Vol ume +ĠDesign er +ĠOver watch +id ae +Ġon wards +Ġn ets +ĠMan ila +part icularly +Ġpolit ic +o other +Ġport raits +Ġpave ment +c ffff +Ġs aints +Ġbegin ners +ES PN +Ġshort comings +âķIJ âķIJ +Ġcom et +ĠOrgan ic +qu el +Ġhospital ized +Bre ak +Ġpe el +dyl ib +asp x +ur ances +ĠT IM +P g +Ġread able +ĠMal ik +Ġm uzzle +Ġbench marks +d al +ĠV acc +ĠH icks +60 9 +ĠB iblical +he ng +Ġover load +ĠCivil ization +Ġimm oral +Ġf ries +ãĤ Ĵ +Ġreprodu ced +Ġform ulation +j ug +ire z +g ear +Ġco ached +Mp Server +ĠS J +ĠK w +In it +d eal +ĠO ro +ĠL oki +ĠSong s +Ġ23 2 +ĠLou ise +asion ally +Ġunc ond +olly wood +Ġprogress ives +ĠEn ough +ĠDo e +Ġwreck age +Ġbr ushed +ĠBase Type +Ġz oning +ish able +het ically +ĠC aucus +ĠH ue +Ġk arma +ĠSport ing +Ġtrad er +Ġseem ing +ĠCapt ure +4 30 +b ish +Ġt unes +Ġindo ors +ĠSp here +ĠD ancing +TER N +Ġno b +ĠG ST +m aps +Ġpe ppers +F it +Ġoverse es +ĠRabb i +ĠR uler +vert ising +off ice +xx x +Ġra ft +Ch anged +Ġtext books +L inks +ĠO mn +ãĢ ij +Ġinconven ience +ĠDon etsk += ~ +Ġimplicit ly +Ġboost s +ĠB ones +ĠBo om +Cour tesy +Ġsens ational +AN Y +Ġgre edy +ed en +Ġinex per +ĠL er +ĠV ale +Ġtight en +ĠE AR +ĠN um +Ġancest or +S ent +ĠH orde +urg ical +all ah +Ġsa p +amb a +ĠSp read +tw itch +Ġgrand son +Ġfract ure +Ġmoder ator +ĠSe venth +ĠRe verse +Ġestim ation +Cho ose +Ġpar ach +Ġbar ric +ãĢ IJ +Ġcomp ass +Ġall ergic +âĢ ķ +OT HER +err illa +Ġw agon +Ġz inc +Ġrub bed +ĠFull er +ĠLuxem bourg +ĠHoo ver +Ġli ar +ĠEven ing +ĠCob b +est eem +Ġselect or +ĠB rawl +is ance +ĠE k +Ġtro op +Ġg uts +ĠApp eal +ĠTibet an +Ġrout ines +ĠM ent +Ġsummar ized +steam apps +Ġtr anqu +Ġ19 29 +or an +ĠAut hent +Ġg maxwell +Ġappre hens +Ġpo ems +Ġsa usage +ĠWeb ster +ur us +Ġthem ed +Ġl ounge +Ġcharg er +Sp oiler +Ġsp illed +h og +ĠSu nder +ĠA in +ĠAng ry +Ġdis qual +ĠFrequ ency +ĠEther net +Ġhel per +Per cent +Ġhorr ifying +Ġa il +ĠAll an +EE E +ĠCross ing +44 9 +Ġh olog +ĠPuzz les +ĠGo es +eren n +60 4 +ãģ ı +ĠRaf ael +Ġatt en +ĠE manuel +Ġup ro +ĠSus p +P sych +ĠTr ainer +ĠN ES +ĠHun ts +bec ue +Ġcounsel or +R ule +Ġtox ins +Ġb anners +r ifice +Ġgreet ing +Ġfren zy +Ġall ocate +Ġ* ) +ex pr +50 3 +ĠCh ick +ĠT orn +Ġconsolid ation +ĠF letcher +sw itch +fr ac +cl ips +ĠMcK in +ĠLun ar +Mon th +IT CH +Ġscholar ly +rap ed +39 8 +Ġ19 10 +Ġe greg +Ġin secure +Ġvict orious +cffff cc +Ġsing led +Ġel ves +ĠW ond +bur st +Ġcam oufl +ĠBL ACK +Ġcondition ed +ç ī +ans wered +Ġcompuls ory +asc ist +Ġpodcast s +ĠFrank furt +bn b +Ġne oliberal +ĠKey board +ĠBel le +w arm +Ġtrust s +Ġins ured +ĠBu cc +us able +60 7 +ĠPl ains +Ġ18 90 +Ġsabot age +Ġlod ged +f elt +Ġg a +ĠN arc +ĠSal em +Ġsevent y +ĠBl ank +p ocket +Ġwhis per +Ġm ating +om ics +ĠSal man +ĠK ad +Ġan gered +Ġcoll isions +Ġextraord inarily +Ġcoerc ion +G host +b irds +è Ģ +k ok +Ġper missible +avor able +Ġpo inters +Ġdiss ip +ac i +Ġtheat rical +ĠCos mic +Ġforget ting +Ġfinal ized +å¤ § +y out +l ibrary +Ġbo oming +ĠBel ieve +ĠTe acher +ĠL iv +ĠGOOD MAN +ĠDomin ican +OR ED +ĠPart ies +Ġprecip itation +ĠSl ot +R oy +ĠComb ined +Ġinteg rating +Ġch rome +Ġintest inal +ĠRe bell +Ġmatch ups +Ġblock buster +ĠLore n +ĠLe vy +Ġpre aching +ĠS ending +ĠPur pose +ra x +f if +Ġauthor itative +ĠP ET +ast ical +Ġdish on +Ġchat ting +Ġ"$ :/ +Connect ion +Ġrecre ate +Ġdel inqu +Ġbro th +ĠD irty +ĠAd min +z man +Ġscholars hips +Ġ25 3 +cont act +als a +7 67 +c reen +abb age +Ġ19 15 +Ġbl ended +Ġal armed +L anguage +35 6 +Ġbl ends +ĠCh anged +W olf +Ġhe pat +Creat ing +Ġper secut +Ġsweet ness +art e +Ġforfe iture +ĠRober to +im pro +N FL +ĠMag net +Det ailed +Ġinsign ificant +ĠPOL IT +ĠBB Q +ĠC PS +Ġse aw +amin er +m L +end if +f inals +Ġ26 5 +u ish +Ġ} ) +ĠPro blems +Ġem blem +Ġserious ness +Ġpars ing +Ġsubst itution +Ġpress ured +Ġrecy cled +ale b +Rub y +Ġprof iciency +Dri ver +ĠW ester +: ' +AF TA +Ġm antle +ĠClay ton +fl ag +Ġpractition er +c overed +ĠSt ruct +add afi +4 25 +ĠTown ship +ĠHyd ro +Lou is +34 3 +Ġcond o +ĠT ao +Ġutil ization +Ġnause a +ĠDem s +rid ges +p ause +Ġform ulas +Ġchall enger +37 6 +Ġdefect ive +ĠRail way +ĠPub Med +Ġyog urt +l bs +ĠNor folk +OP E +ĠMood y +Ġdistribut or +Ġscroll s +Ġextract s +St an +Ġv iability +Ġexp oses +Ġstar vation +ĠStep s +ĠD odd +f ew +ST D +33 2 +Ġclos ures +Ġcomplement ary +ĠS asha +ump y +Ġmon et +Ġartic ulate +ĠDo ct +k iller +Ġsc rim +Ġ2 64 +Ġprost itutes +Ġse vered +Ġattach ments +Ġcool ed +L ev +ĠF alk +f ail +Ġpolic eman +ĠD ag +Ġpray ed +ĠK ernel +Ġcl ut +Ġc ath +Ġan omaly +St orm +em aker +ĠBreak fast +ul i +o ire +J J +h z +Oper ation +ĠS ick +35 4 +ĠGuatem ala +R ate +Ġexp osures +f aces +ĠArch ae +ra f +ĠM ia +Ġ20 25 +Ġop aque +Ġdisgu ised +ĠHead quarters +S ah +Ġp ots +9 78 +ĠM alf +Ġfrown ed +Ġpoison ous +ĠCon vers +ee ks +Ġcr ab +." " +Ġtre ason +Ġr anc +Ġescal ating +Ġwar r +Ġmob s +Ġl amps +ĠSun shine +ĠBrun swick +Ph ones +Ġspe lled +ĠSk ip +Ġ20 50 +Ġ19 11 +ĠPl uto +ĠAm end +Ġme ats +38 7 +Ġst omp +ĠZh ou +ĠLevi athan +ĠHaz ard +ad v +ĠOr well +Ġal oud +Ġb umper +ĠAn arch +ub untu +ĠSer ious +f itting +ĠOption al +ĠCec il +RE AM +Ġser otonin +Ġcultiv ate +ag ogue +} \ +Ġmos ques +ĠSun ny +Ġre active +rev olution +ĠL up +ĠFed ora +Ġdefense man +ĠV ID +ist ine +Ġdrown ing +ĠBroad casting +Ġthr iller +ĠS cy +Ġacceler ating +Ġdirect s +od ied +b ike +d uration +Ġpain fully +R edd +Ġproduct ions +Ġg ag +Ġwh ist +Ġs ock +Ġinf initely +ĠConc ern +ĠCit adel +Ġlie u +Ġcand les +ogene ous +arg er +Ġheaven ly +inflamm atory +Per formance +C s +ruct ose +az aki +Ġp essim +Ġinf erence +Ġpow d +ĠZ oe +Ġpain ts +Ġd azz +pt a +-------- --- +Ġins pir +ĠExper imental +ĠKn ife +reg or +b ors +Ġshow ers +rom eda +Ġs aint +Ġben ign +ĠJ iang +Ġenvision ed +Ġsh roud +IF T +H O +Ġsh uff +ĠI CC +Ġse greg +Ġrevis it +ighth ouse +L i +Ġsub strate +ĠSe as +ĠRew ard +ĠH ep +ĠBr ass +s bm +Ġelim inates +Ġst amina +ĠV AT +ĠLo an +Ġconst raint +Ġappropri ated +Ġp es +ĠA LE +r anging +Ġ40 4 +39 2 +Ġintellectual s +ach u +Ġrestruct uring +ĠLe vin +Ġrun es +Ġdelight ful +Ġcarbohyd rates +ĠMod els +ĠExp o +Ġtransport ing +all oc +Ġring ing +S amsung +Ġscarce ly +ĠURL s +ĠM AS +Ġprot otypes +Ġnarr ator +ĠCPU s +cd n +ĠBart on +Ġdecided ly +ĠSh u +ix ir +oc ious +ĠMy st +N intendo +Ġre use +Ġforg iven +F ew +in ical +n at +Ġseam less +ĠEv a +ĠE VE +ĠJ O +land ers +Ġso fter +neg ie +Ġtrans ient +Ġorb ital +Ġfulf il +ĠK om +Hop efully +Ġdynam ically +ĠHun ger +å Ľ +ĠArmen ia +el man +ber to +Ġp ige +ĠID s +lim it +Ġve ins +Ġso aring +p acks +Gold en +ĠCr ab +ist or +ĠR PM +Ġ$ $ +g ression +Ġjihad ist +Ġgam ble +Ġcare g +Ġinf lated +F ace +ĠFire arms +ĠEm manuel +â Ŀ +Ġsh ocks +gr ab +Ġspl end +ĠHP V +ab ortion +Ab ove +Ent ity +play ers +Ġcomm enced +ul ence +Ġfulfill ment +Ġembod iments +ĠW elfare +Ġha il +Ġ< @ +tt en +Ġcat cher +ĠJ azeera +Ġvolcan o +Ġstabil ize +ĠHand ler +Ġintens ified +ĠAb rams +Ġhum iliation +p aced +60 5 +ĠCent OS +Spe cific +Ġhe ed +ĠC AM +ĠGal ile +D ie +Ġabol ished +ĠThom son +ĠTe achers +ĠW ass +j ong +ĠIS BN +ĠAll ies +sh ake +å · +v ict +How ard +Ġde em +Ġexceed ingly +ĠSmart stocks +ib e +Ġdoor way +Ġcompet ed +ig mat +Ġnational ists +Ġg room +ĠKe en +Ġdispos able +de cl +ĠT olkien +ĠSche me +Ġb iod +Ġav id +ĠEl on +ag ar +ĠT SA +R oman +Ġartific ially +Ġadvis ors +X L +ĠInf erno +36 6 +Ġted ious +ĠPhot ography +ĠCar rie +Ġtro pe +ĠSand ra +Ġdec imal +Que en +ĠGund am +ĠO M +ote ch +N BA +Ġ19 32 +Ġent renched +ĠMar ion +Ġfr aternity +Lab our +Hen ry +Ġlat itude +E ither +Ġenh ances +ĠPot ential +Ġsh ines +id ad +Ġbread th +Ġcapac ities +ĠðŁ ĻĤ +ĠBron x +Ġsex es +Ġdifferent iation +Ġheavy weight +ĠT aj +d ra +Ġmigr ate +Ġexhaust ion +ĠR UN +els ius +ĠCu omo +Ġgu itars +Ġcl ones +ĠSom ew +ĠP ry +------------ - +Ġwarr anted +cy cles +Ġsalv age +Ġdis ks +R ANT +ĠNGO s +ĠMart ian +":[ {" +Ġadd icts +oj ure +il let +Ġamazing ly +art ments +p ixel +ĠGPU s +Lay out +è £ +ĠTam il +ĠBas il +Ġimpart ial +ĠSt ructure +f ork +b ryce +Ġr idge +ĠHamb urg +ri ous +Ġbl itz +cig arettes +Ġcan ned +40 2 +Ġiron ically +Ġcompassion ate +ĠHaw kins +. # +ĠCat hedral +Ġrall ied +in ternal +Ġqu ota +st akes +T EXT +m om +Ġcomple tes +Ġ23 8 +Ġsh rug +ãĥ ij +ĠN inth +Ġrev ise +ĠProv ider +Ġtre acher +Ġqu asi +ĠPR ES +Ġdep osition +Ġconfidential ity +iss ors +Ġim balance +Ġspan ning +Ġang ular +ĠC ul +commun ication +ĠNor a +ĠGen ius +op ter +Ġs acked +Sp ot +Ġfine ly +ĠCH R +28 2 +w aves +Pal est +ĠRo hing +N L +è ¿ +Ġsh itty +ĠSc alia +4 75 +Pro gress +Ġreferen cing +Ġclass rooms +ab ee +Ġs od +hes ion +70 8 +ĠZucker berg +ĠFin ish +ĠScot ia +ĠSav ior +ĠInstall ation +an tha +( - +Ġ30 2 +ĠP unk +Ġcr ater +yout u +Ġro ast +Ġinflu encing +Ġd up +ĠJ R +ĠG rav +Ġstat ure +Ġbath rooms +A side +W iki +me an +ĠZ ak +ĠOn es +ĠN ath +Ġhyper t +Ġcommence ment +C ivil +Ġmoder ately +Ġdistribut ors +Ġbreast feeding +Ġ9 80 +ĠS ik +ĠC ig +ĠAM ER +R IP +ĠCare er +ust ing +Ġmess ed +Ġe h +ĠJ ensen +/ $ +Ġblack mail +Ġconvers ions +Ġscientific ally +Ġmant ra +p aying +Ġiv ory +ĠCour ts +OU GH +aunt let +Ser ial +B row +ĠH undreds +3 23 +Ġpe e +Ġlin ux +Ġsub mer +ĠPrinc ipal +48 5 +ĠD SL +ĠCous ins +Ġdoctr ines +ĠAthlet ics +Ġ3 15 +ĠK arma +Ġatt ent +ur ger +Ġpresc ribe +Ġenc aps +ĠC ame +Ġsecret ive +ĠCr imes +d n +C lean +ĠEgypt ians +ĠCar penter +Ġ ll +H um +ĠMil o +Ġcapital ists +Ġbrief ed +T we +ĠBas in +elve t +M os +Ġplun ge +ĠKa iser +ĠFu j +ill in +Ġsafegu ards +Ġo ste +ĠOpportun ity +ĠM afia +ĠCall ing +ap a +ur ban +br ush +ill ard +c é +int elligence +ĠL ob +ĠDru id +Ġsm oother +Ġfoot ing +Ġmotor ists +arc ity +Ġmascul inity +Ġm ism +Ġabdom inal +ĠTa vern +ĠR oh +Ġesc apes +s igned +Anth ony +Ġsacrific ing +Ġintim acy +Ġan terior +ĠK od +Ġmot if +Ġg raz +Ġvisual ization +Ġguitar ist +ĠTro tsky +m agic +D ar +ĠMor i +Ġw ards +Ġtoile ts +l est +Ġtele port +ĠSund ays +ĠPl at +ET S +Ġe Sports +Pat rick +ĠK atherine +en ko +Ġhas sle +ĠM ick +gg les +Ġh ob +aint ain +Ġair borne +Ġsp ans +Ġch ili +Ġa perture +Ġvolunte ered +ĠInc ident +ĠF res +ĠVeter an +augh tered +ing o +Ġun insured +CL OSE +Ġf use +Ġer otic +Ġadvert ise +ra ising +Text ure +Ġatt ends +ĠRE AL +udd led +Ġsm oot +Ġ30 5 +ĠWill is +Ġbl ond +An alysis +ĠV T +on ica +Ġstrongh old +R F +N M +. >> +Ġprosper ous +Ġbo asted +29 2 +ĠManufact uring +PR ESS +g ren +Ġpharm acy +ĠRoc kefeller +k ai +Ġth umbs +ĠH ut +Ġmother board +Ġguard ians +ĠAl ter +ll ular +Ġsh ack +Ġwise ly +Ġback bone +erv a +Ġsu icides +ĠMcG regor +ij ah +E mer +ĠB rav +Ġdesign ate +P OST +produ ced +Ġcleans ing +irl wind +ex istent +ĠHum ph +ĠPay ne +Ġv ested +Å ¡ +Ġstring ent +ion a +Ġuns ub +Ġsum med +ĠHer cules +sub ject +ĠR agnar +ĠN os +Ġcharacter ization +Ġsav vy +ĠDaw son +ĠCas ino +Ġf ri +ĠBar rier +Ġmis information +Ġins ulation +Ġcorrid ors +Ġair planes +ĠNo ct +ah i +Ġ19 16 +k b +arm ac +Ġsh un +Ġsche ma +Ġhorr ified +Ġ23 9 +aund ers +N B +i ates +er ity +ĠSh ard +Ġr arity +Ġgroup ed +ĠGh ana +again st +ĠBi ological +ĠA ware +ow ell +Ï Ħ +ĠBe au +sh aw +H ack +ĠJul ius +US S +ol son +aun a +c ru +ĠMaur ice +ĠI k +Ġsequ encing +Ġradical s +Ġ( ?, +v irtual +Ġany ways +Ġreper c +Ġhand lers +Ġhes itant +é ĥ +ĠM F +ple mentation +ass ociated +Ġcampaign ed +ĠY ue +ut ations +ĠY oga +Ġsim mer +Ġro ds +Ġmel ody +Ġconv oy +v ideos +Ġscreen ed +N eg +ochem ical +Ġ( )) +Ġultr as +Ġant ip +ĠIsland ers +70 4 +Ġfet ish +Ġridic ulously +ĠK art +Ġmitochond rial +Ġinterf ering +Build er +Ġover fl +Ġac ne +ĠM ud +ĠK err +f lex +ĠPost al +ĠBalt ic +47 7 +ĠPers ons +our age +H B +ĠM use +ĠImm ortal +ĠDri ving +Ġpet itions +Ġsubsc ript +Ġs orce +ĠProcess or +ut on +S ony +Ġph on +Ġr aced +ĠAnth rop +Ġday time +ĠEx ercise +Add ing +Ġeng ages +ĠQual comm +Ġmir acles +Ġmem es +ĠDr ink +ĠOri oles +Ġhair s +ĠPol ar +ath om +Ġsl ippery +ĠR emy +Ġcar amel +ĠY EAR +Ġal k +I gn +a ution +ĠMer lin +ĠC ran +Ġap ologies +Ġ4 10 +Ġout ing +ĠMem ories +app ointed +Ġcount ered +u ld +pos ing +Ġfire wall +ĠW ast +ĠW et +work ed +se ller +Ġrepe aled +ere o +ass uming +BL IC +m ite +ĠCEO s +ĠChap el +ellig ent +________________ ________ +D og +Ġw art +Ġsubsc riber +s ports +Ġbe gged +ĠM V +Ġsem if +eth ical +Ġpre ach +Ġrev ital +Ġpun itive +Ġshort cuts +Ġinstit uted +ĠWars aw +Ġabdom en +ĠK ING +Ġsuper intendent +Ġf ry +ĠGe o +T OR +Ġcontrad ictions +apt ic +Ġlandsc apes +b ugs +Ġcl ust +Ġvol ley +c ribed +Ġt andem +Ġrob es +WH AT +Ġpromot er +Ġel oqu +review ed +ĠD K +ĠPl ato +Ġf ps +T ank +ĠDer rick +Ġpriorit ize +as per +ĠHond uras +ĠCom pleted +ne c +Ġm og +n ir +ĠMay o +DE F +st all +in ness +ĠVolks wagen +Ġprec aution +ĠM ell +i ak +ist ries +Ġ24 8 +Ġoverl apping +Sen ate +ĠEnh ance +res y +rac ial +OR TS +ĠM ormons +Str ong +ĠCo ch +Mex ico +ĠMad uro +Ġj ars +Ġcan e +W ik +oll a +iff erence +Ġphysic ist +ĠMag gie +Ġ28 5 +Ġdep iction +ĠMcL aren +J u +Ġsl ows +Ġcommission ers +ĠWill ow +ĠExpl os +hov ah +Ġtechn ician +Ġhom icides +ĠFl av +ĠTr uman +Ġ100 00 +u ctor +Ġsh ader +News letter +45 7 +Ġre ver +Ġhard ened +Ġwhere abouts +Ġrede velop +Ġcar bs +Ġtra vers +Ġsqu irrel +Ġfoll ower +Ġs ings +50 8 +Ġrabb its +emon ium +Ġdocument ing +Ġmisunder stood +) ' +R ick +gg ies +Ġprem ie +Ġsk ating +Ġpass ports +Ġf ists +aged don +H aw +AC P +0 80 +ĠThough ts +ĠCarl son +Ġpriest hood +h ua +Ġdun geons +ĠLo ans +Ġant is +Ġfamiliar ity +ĠS abb +op al +ĠIn k +st rike +Ġc ram +Ġlegal ized +Ġcu isine +Ġfib re +Tra vel +ĠMon ument +OD Y +eth y +Ġinter state +ĠP UR +em porary +ĠArab ian +develop ed +Ġsadd le +Ġg ithub +ĠOff er +ĠIS P +ro let +ĠSUP ER +ĠDen is +Ġmultipl ier +Ġstir red +Interest ingly +Ġcustom ary +Ġbill ed +he x +Ġmultipl ied +Ġfl ipping +ĠCros by +Ġfundament als +ia e +ĠPlay ed +ĠAt om +am azon +ĠFl am +ee z +activ ated +Ġtables poon +Ġliberal ism +ĠPal in +ĠP atel +N um +ĠT AM +Ġs urn +ĠRel oaded +Ġco ined +" ], +ĠCl ash +ĠAg u +Ġprag matic +ĠActiv ate +Ġ8 02 +Ġtrail ers +Ġsil hou +Ġprob es +Ġcirc us +ĠB ain +ĠLind say +ĠAb bey +Del ivery +Ġconcess ion +Ġgast ro +ĠSpr ite +Ä Ł +and el +Ġg imm +Ġaut obi +ĠT urtle +Ġwonder fully +ĠHar am +ĠWorld wide +ĠHand le +Ġtheor ists +Ġsle ek +ĠZh u +ograph ically +EG A +ĠOwn ers +ath s +ĠAntar ctic +n atal +=" " +fl ags +`` `` +Ġs ul +K h +Ġpot assium +Ġlinem an +Ġcere al +ĠSe asons +Ġ20 22 +Ġmat hematic +Ġastron omers +prof essional +Ġf ares +cknow led +Ġch i +Ġyoung sters +Ġmistaken ly +Ġhem isphere +ĠDiv inity +r one +Ġ" , +r ings +Ġattract s +v ana +å ¹ +C AP +Ġplay list +Ġpor ch +ãģ £ +Ġincorpor ates +Ġso ak +Ġassert ing +ĠTerror ism +ĠP ablo +J a +ces ter +Ġfear ing +ĠPr ayer +Ġescal ated +G W +Ġro be +ĠBright on +ac ists +ĠSym phony +ĠDwar f +ĠPar ade +ĠLe go +Ġinex pl +Ġl ords +le af +RA G +l iber +Ġcig ars +ĠJe hovah +60 6 +WIND OWS +ĠLiber ia +eb us +He avy +Ġl ubric +ĠR W +angu ages +Ġnarrow ed +com puter +ĠE mber +Ġmurder ing +Ġdown stream +ĠT uls +ĠT ables +Top ic +ĠAcc uracy += / +l ost +ĠRe i +Ġprogress es +b ear +Ġestablish ments +Just in +ĠPe ach +ĠG omez +å ¿ +ĠTri angle +Id ent +ĠH ive +Res ources +Ġmix es +ĠAss uming +M u +Ġhyp oc +Ġs ane +ĠW an +id ious +Su ccess +Ġ io +Ang el +Ġdanger ously +ĠCreat ure +W ORK +: [ +ĠKat rina +List ener +M iller +ĠId lib +h ang +Ġcircum vent +h ref +Ġcel estial +ĠWe eks +ĠP ug +ĠDal ton +Ġsubpoen a +uk u +Ġpers isted +pe i +old ing +ĠDoc uments +ĠH ast +ĠC ENT +Ġprim er +Ġsyn onymous +Ġn ib +om bs +Ġnot ation +ĠD ish +ĠAt mosp +Ġforb id +ĠAN G +pat tern +l os +Ġproject iles +b rown +." , +ĠVen om +Ġfierce ly +ub lished +ĠU ran +ĠNic arag +4 10 +ĠC AL +OT OS +ĠMir acle +ĠEn chant +Ġguard ing +app end +Att ach +Ġlevel ed +Ġcond oms +ih ilation +64 9 +Ġnight mares +ĠTHE Y +ĠST ART +ĠK inn +Ġroomm ate +Ġhy giene +o pping +J ob +Ġl vl +ĠV ER +ĠKe eping +ab etic +Ġformat ting +eral a +Ġrev isions +Ġres urg +T el +ĠGood man +35 3 +p od +Ġind isp +ĠTrans lation +Ġg own +ĠM und +Ġc is +Ġby stand +col lect +ĠPun jab +act ively +ĠG amb +te ll +Ġimport ing +g encies +Ġloc om +ĠBr ill +H oly +ĠBer ger +Ġshow down +Ġrespond ers +IL Y +Ġt akedown +le ted +Ġmat tered +Ġpredict ive +Ġover lay +G PU +ĠV ick +Ġconvey ed +T ab +pe er +Sc an +Ġdefensive ly +v ae +Ġappro ving +Ġt iers +ĠV ia +quer ade +ĠSaud is +Ġdemol ished +ĠProp he +Ġmon o +Ġhospital ity +H AM +ĠAri el +M OD +ĠTor ah +Ġbl ah +ĠBel arus +erent ial +ĠT uc +Ġbank er +39 7 +Ġmosqu it +ĠScient ist +ĠMus ical +Ġh ust +Sh ift +Ġtor ment +Ġstand off +E duc +ĠF og +Ġampl ifier +Sh ape +Inst ance +ĠCrit ics +Ġda emon +H ouston +Ġmatt ress +ĠID F +Ġobsc ene +ĠA mer +hett i +Ġcomp iling +35 2 +vere tt +ĠRed uction +ist ration +ĠBl essed +ĠB achelor +3 16 +Ġpr ank +ĠVul can +dd ing +Ġm ourning +ĠQu int +ĠBl aster +test ing +Ġsed iment +>> > +ĠE ternity +ĠWH ERE +ĠM aze +Ġreact ing +ĠAl v +oms day +ĠC RA +Ġtransl ator +Ġbog us +at u +We bsite +oll s +Ġbapt ism +Ġs ibling +ĠAut umn +ve z +ãģ® é +gu ards +Ge org +assad ors +ĠFre ud +Ġcontin ents +ĠReg istry +Bern ie +ĸļ 士 +Ġtoler ant +ĠU W +Ġhor ribly +99 5 +ĠMID I +Ġimpat ient +oc ado +er i +ĠWor st +ĠNor ris +ĠTalk ing +Ġdef ends +ens able +Ġ20 21 +Ġanat omy +L ew +Ġdraw er +ĠCan berra +Ġpatri otic +é¾įå ĸļ士 +ĠAv g +AR M +Ġundis closed +Ġfare well +45 9 +b able +ĠAll ison +OL OG +Ġcon co +t ight +ĠAC PI +ĠM ines +l ich +ĠâĶ ľ +represent ed +200 000 +Ġenthusi ast +OT S +b il +ĠIng redients +Ġinvent or +ĠMy SQL +³³ Âł +ĠAB OUT +with in +Ġm k +B ul +ĠF ake +Ġdracon ian +W a +hel m +ĠTer ran +erv ille +Ġcommon place +SI ZE +Ġ" < +re place +ograph s +ĠSE LECT +inc ible +ĠMost ly +ĠShe ffield +ĠID E +ugg le +Ġcit ations +h urst +ĠUn ix +Ġunle ash +ĠP iper +ĠN ano +Ġsucc umb +Ġreluct ance +Ġ25 00 +ĠMer chant +Ġwire t +Ġcomb os +ĠBirth day +Ġchar coal +ĠU PS +ĠFair fax +Ġdrive way +ĠT ek +ĠP itch +ove re +Ġtechn icians +ĠAct ual +fl ation +ĠF iscal +ĠEm pty +an amo +Ġmag nesium +Ġsl ut +Ġgrow ers +Invest igators +( ): +ĠS atellite +ĠKe ynes +miss ive +l ane +Ġb orough +3 44 +ĠTE AM +ĠBet hesda +C V +h ower +ĠR AD +Ġch ant +ĠR iy +Ġcompos itions +Ġmild ly +Ġmedd ling +Ġag ility +ane ers +5 01 +Ġsyn th +ling er +29 1 +Ġex claimed +Part y +Ġcont amin +ĠMan or +ĠResp ond +Ġpra ising +Ġman ners +fle et +Sum mer +ĠLy nd +ĠDef initely +gr im +Ġbow ling +st ri +ç Ľ +y nt +Ġmand ates +D IV +Ġreconc ile +view s +ĠDam on +vet te +F lo +ĠGreat est +il on +ic ia +Ġportray al +Ġcush ion +50 4 +19 79 +oss al +App lic +sc ription +Ġmit igation +AT S +p ac +Ġer ased +Ġdefic iencies +ĠHolland e +ĠX u +Ġb red +Ġpregn ancies +f emin +Ġem ph +Ġpl anners +Ġout per +utter ing +Ġperpet rator +Ġm otto +ĠEll ison +ĠNE VER +Ġadmitted ly +AR I +ĠAzerbai jan +Ġmill isec +Ġcombust ion +ĠBott le +ĠL und +ĠP s +ĠD ress +Ġfabric ated +Ġbat tered +Ġs idel +ĠNot ting +Fore ign +ĠJer ome +0 20 +ĠAr bit +Ġkn ots +ĠR IGHT +M oving +ãģ Ļ +Ġsur geries +Ġcour thouse +Ġm astered +Ġhover ing +ĠBr an +ĠAl ison +Ġsaf est +m ilitary +Ġbull ied +Ġbar rage +Read er +ES E +ĠGe ographic +T ools +3 14 +ĠGe ek +ro th +gl ers +ĠF IN +Ï ģ +ĠA ston +al tern +48 8 +Ġveter in +G amer +Ġint el +ren ches +Sh ield +Ġam nesty +ĠB har +Ġp iled +Ġhonor able +ĠInst itutes +Ġso aked +Ġcom a +ĠE FF +34 1 +by tes +ĠG mail +le in +ĠCanad iens +m aterial +I l +Ġinstruct ors +ĠK Y +Ġconce ive +ub b +ĠP ossible +Ġeas ing +ĠChrist ina +Ġcar ic +ĠHD R +R OM +Ġsho vel +de lete +Ġp uff +ĠCh anging +Ġseam lessly +Att ribute +Ġacqu isitions +ak ery +ĠE F +Ġaut istic +ĠT akes +ĠPow der +ĠSt ir +5 10 +ĠBub ble +sett ings +ĠF owler +Ġmust ard +Ġmore over +Ġcopyright ed +ĠLED s +15 00 +æ ī +ĠH IS +en f +Ġcust od +ĠH uck +G i +Ġim g +An swer +C t +j ay +ĠInf rastructure +Ġfeder ally +L oc +Ġmicro bes +Ġover run +dd s +ot ent +adi ator +>>>> >>>> +Ġtorn ado +Ġadj ud +Ġintrig ued +Ġs i +ĠRevel ation +pro gress +Ġburgl ary +ĠSai yan +ĠK athy +Ġser pent +ĠAndre as +Ġcomp el +ess ler +ĠPl astic +ĠAd vent +ĠPos itive +ĠQ t +ĠHind us +reg istered +ular ity +Ġrighteous ness +Ġdemon ic +u itive +ĠB DS +ĠGre gg +c ia +ĠCrus ade +ĠSina i +W ARE ++ ( +Ġme ll +Ġder ail +y ards +A st +Ġnotice ably +ĠO ber +R am +Ġun noticed +Ġse q +av age +T s +Ġ6 40 +Ġconced e +Ġ] ) +F ill +Ġcapt ivity +ĠImprove ment +ĠCrus ader +ara oh +M AP +æ Ĺ +Ġstr ide +al ways +F ly +N it +Ġal gae +ĠCook ing +ĠDo ors +Mal ley +Ġpolic emen +ãģ į +Ġastron aut +access ible +49 5 +ĠR AW +cl iffe +udic rous +Ġdep ended +al ach +Ġvent ures +ra ke +Ġt its +ĠH ou +Ġcond om +ormon al +Ġind ent +Ġupload ing +Foot note +Import ant +Ġ27 1 +Ġmind ful +Ġcont ends +C ra +Ġcal ibr +ĠO ECD +plug in +F at +ĠIS S +ĠDynam ics +ans en +68 6 +' ), +Ġsp rite +Ġhand held +ĠH ipp +=~ =~ +Tr ust +Ġsem antics +ĠBund es +ĠRen o +ĠLiter ature +s ense +G ary +ĠA eg +ĠTr in +EE K +Ġcler ic +ĠSS H +Ġch rist +Ġinv ading +ib u +Ġen um +aur a +Ġal lege +ĠInc redible +B BC +Ġth ru +Ġsa iled +Ġem ulate +Ġin security +Ġc rou +Ġaccommod ations +Ġincompet ent +Ġsl ips +ĠEarth qu +s ama +IL LE +Ġi Phones +as aki +Ġby e +Ġar d +Ġext ras +Ġsl aughtered +Ġcrowd funding +res so +Ġfil ib +ĠER ROR +ĠT LS +e gg +ĠIt al +Ġen list +ĠCatal onia +ĠSc ots +Ġser geant +Ġdiss olve +N H +Ġstand ings +ri que +I Q +Ġbenef iciary +Ġaqu arium +You Tube +ĠPower Shell +Ġbright est +ĠWar rant +S old +Writ ing +Ġbegin nings +ĠRes erved +ĠLatin os +head ing +Ġ4 40 +Ġrooft op +AT ING +Ġ3 90 +VP N +G s +k ernel +turn ed +Ġprefer able +Ġturn overs +ĠH els +S a +ĠShin ji +ve h +ĠMOD ULE +V iol +Ġex iting +Ġj ab +ĠVan illa +Ġac ron +ĠG ap +ber n +A k +ĠMc Gu +Ġend lessly +ĠFar age +ĠNo el +V a +M K +Ġbr ute +ĠK ru +ĠES V +ĠOl ivia +âĢ ł +ĠK af +Ġtrust ing +Ġh ots +3 24 +Ġmal aria +Ġj son +Ġp ounding +ort ment +Count ry +Ġpostp oned +Ġunequ iv +? ), +ĠRo oney +udd ing +ĠLe ap +ur rence +sh apeshifter +ĠH AS +os ate +Ġca vern +Ġconserv atism +ĠB AD +Ġmile age +Ġarrest ing +V aults +Ġmix er +Dem ocratic +ĠB enson +Ġauth ored +8 000 +Ġpro active +ĠSpirit ual +t re +Ġincarcer ated +ĠS ort +Ġpe aked +Ġwield ing +re ciation +×Ļ × +P atch +ĠEm my +Ġex qu +tt o +ĠRat io +ĠP icks +ĠG ry +ph ant +Ġf ret +Ġeth n +Ġarch ived +% - +c ases +ĠBl aze +Ġim b +c v +y ss +im ony +Ġcount down +Ġaw akening +ĠTunis ia +ĠRe fer +ĠM J +Ġun natural +ĠCar negie +iz en +ĠN uggets +he ss +Ġev ils +64 7 +Ġintrodu ctory +l oving +ĠMcM ahon +Ġambig uity +L abel +ĠAlm ighty +Ġcolor ing +ĠCl aus +set ting +N ULL +ĠF avorite +ĠS IG +> ( +ĠSh iva +ĠMay er +Ġstorm ed +ĠCo verage +we apons +igh am +Ġun answered +Ġle ve +Ġc oy +c as +b ags +as ured +Se attle +ĠSant orum +ser ious +Ġcourage ous +ĠS oup +Ġconfisc ated +Ġ// / +Ġuncon ventional +Ġmom s +ĠRohing ya +ĠOrche stra +ĠPot ion +Ġdisc redit +ĠF IL +f ixed +ĠDe er +do i +ĠDim ension +Ġbureaucr ats +et een +Ġaction Group +oh m +Ġb umps +ĠUt ility +Ġsubmar ines +ren heit +re search +ĠShap iro +Ġsket ches +Ġde ceptive +ĠV il +es ame +ĠEss entially +Ġramp age +isk y +Ġmut tered +th ritis +Ġ23 6 +f et +b ars +Ġpup il +ĠTh ou +o S +s ong +Ġfract ured +Ġre vert +pict ure +Ġcrit erion +us her +Ġreperc ussions +ĠV intage +ĠSuper intendent +Offic ers +Ġflag ged +Ġbl ames +Ġin verse +ograp hers +Ġmakes hift +Ġdev oid +Ġfoss ils +ĠArist otle +ĠFund s +Ġde pleted +ĠFl u +ĠY uan +Ġw oes +Ġlip id +Ġsit u +requ isites +Ġfurn ish +ĠSam ar +Ġshame ful +Ġadverse ly +Ġad ept +Ġrem orse +Ġmurder ous +uck les +ĠE SL +Ġ3 14 +s ent +Ġred ef +ĠC ache +ĠP urs +ig ans +Ġ4 60 +Ġpres criptions +Ġf res +F uck +ocr ates +Tw enty +ĠWe ird +ĠT oggle +ĠC alled +itiz ens +Ġp oultry +Ġharvest ing +ãĤ¦ ãĤ¹ +Bott om +Ġcaution ed +t n +39 6 +ĠNik ki +Ġeval uations +Ġharass ing +Ġbind ings +ĠMon etary +Ġhit ters +Ġadvers ary +un ts +Ġset back +Ġenc rypt +ĠC ait +Ġl ows +eng es +ĠN orn +Ġbul bs +Ġbott led +ĠVoy ager +3 17 +Ġsp heres +p olitics +Ġsubt ract +Ġsens ations +Ġapp alling +Ġ3 16 +Ġenvironment ally +ĠST EM +Ġpub lishes +5 60 +Ġdilig ence +48 4 +Ġadv ises +Ġpet rol +Ġimag ining +Ġpatrol s +ĠInt eger +ĠAs hes +act us +ĠRad iant +ĠL T +it ability +ht aking +Set ting +Ġnu anced +ĠRe ef +ĠDevelop ers +N i +pie ces +99 0 +Lic ense +Ġlow ers +ĠOtt oman +3 27 +oo o +Ġqu itting +mark ets +Beh ind +Ġbas in +Ġdoc s +an ie +fl ash +ct l +Ġcivil ized +ĠFuk ushima +"] ," +ĠK S +ĠHonest ly +ar at +Ġconstruct s +ĠL ans +ĠD ire +ĠLI KE +ĠTrou ble +Ġwith holding +ĠOb livion +Ġsan ity +any a +Con st +Ġgro cer +ĠC elsius +Ġrecount ed +ĠW ife +B order +ate red +h appy +Ġspo iler +Ġlog ically +H all +Ġsucceed ing +Ġpoly morph +Ġax es +ĠShot gun +ĠS lim +ĠPrin ciples +ĠL eth +art a +Ġsc or +Sc reenshot +Ġrelax ation +#$ #$ +Ġdeter rent +idd y +Ġpower less +Ġles bians +Ġch ords +ĠEd ited +se lected +Ġseparat ists +000 2 +Ġair space +Ġturn around +Ġc unning +P ATH +P oly +Ġbomb ed +Ġt ion +x s +Ġwith hold +Ġw aged +ĠLiber ties +Fl ag +Ġcomfort ing +45 4 +ĠI ris +are rs +Ġr ag +Ġrel ocated +ĠGu arant +Ġstrateg ically +Ġgam ma +uber ty +ĠLock heed +g res +Ġgr illed +ĠLow e +st ats +ĠR ocks +Ġsens ing +Ġrent ing +ĠGe ological +ا Ø +ot rop +Ġse w +Ġimproper ly +48 6 +Ġâĸ ł +Ġstar ving +ĠB j +Disc ussion +3 28 +ĠCom bo +ĠFix es +N AT +Ġstri ving +th ora +Ġharvest ed +ĠP ing +Ġplay ful +Ġaven ues +Ġoccup ational +Ġw akes +ĠCou rier +Ġdrum mer +ĠBrow ser +ĠH outh +it u +Ġapp arel +p aste +Ġhun ted +ĠSecond ly +l ain +X Y +ĠP IN +ic ons +Ġcock tails +Ġs izable +Ġhurd les +est inal +ĠRecre ation +Ġe co +64 8 +ĠD ied +m int +Ġfinger prints +Ġdis pose +ĠBos nia +ts y +22 00 +Ġins pected +ĠF ou +Ġf uss +Ġamb ush +ĠR ak +Ġmanif ested +Pro secut +Ġsuff ice +ren ces +Ġcompens ated +ĠC yrus +Ġgen us +ĠWolver ine +ĠTrend s +Ġh ikes +ĠSe en +Ġen rol +C old +Ġpol itely +ĠSl av +ĠRu pert +Ġey ewitness +ĠAl to +Ġun comp +Ġposter ior +M ust +ĠHer z +Ġprogress ively +Ġ23 4 +Ġind ifference +ĠCunning ham +Ġacadem ia +Ġse wer +Ġast ounding +ĠA ES +r ather +Ġeld est +Ġclim bs +ĠAdd s +Ġout cry +Ġcont ag +ĠH ouses +Ġpe pt +ĠMel ania +interest ed +ĠU CH +ĠR oots +ĠHub bard +ĠT BD +ĠRoman ian +fil ename +St one +ĠIm pl +Ġchromos ome +C le +d x +Ġscram bled +ĠP t +Ġ24 2 +OP LE +Ġtremend ously +St reet +Ġcra ving +Ġbund led +ĠR G +p ipe +Ġinj uring +Ġarc ane +Part icip +ĠHero ic +st y +Ġto pping +ĠTemp est +rent ices +b h +Ġpar anoia +ĠUnic ode +Ġegreg ious +Ġ\ ' +ĠOsw ald +Ġgra vel +ĠSim psons +Ġbl and +ĠGuant anamo +Writ er +lin ers +ĠD ice +J C +Ġpar ity +Ġs ided +Ġ23 7 +ĠPyr rha +at ters +d k +F ine +comp an +Ġform ulated +ĠId ol +il ers +hem oth +ĠF av +Ġintr usion +Ġcar rots +ĠL ayer +ĠH acker +Ġ ---------------- +Ġmoder ation +é ģ +oc oc +Ġcharacter ize +ĠTe resa +Ġsocio economic +Ġper k +ĠParticip ation +tr aining +ĠPaul o +ph ys +Ġtrust worthy +Ġembod ied +ĠMer ch +c urrency +ĠPrior ity +Ġte asing +Ġabsor bing +Ġunf inished +ĠCompar ison +Ġdis ple +writ ers +Ġprofess ions +ĠPengu in +Ġang rily +ĠL INK +68 8 +ĠCor respond +Ġprev ailed +Ġcart el +l p +as ms +ĠRed emption +ĠIslam ists +effect s +d ose +ĠL atter +ĠHal ifax +Ġv as +ĠTop ics +ĠN amed +advert ising +zz a +IC ES +Ġret arded +ach able +ĠPupp et +ĠItem Level +Ġret ract +Ġident ifiable +A aron +ĠB uster +s ol +hel le +as semb +H ope +r anged +B a +ĠP urch +é Ģ +ĠSir i +Ġarri vals +Ġ19 12 +Ġshort ened +Ġ3 12 +Ġdiscrep ancy +ĠTem perature +ĠWal ton +Ġkind erg +p olit +Ġrem ix +Ġconnect ors +ãĥĺ ãĥ© +ĠKazakh stan +dom inated +Ġsu gars +im ble +ĠPan ic +ĠDem and +ĠCol ony +on en +ĠM ER +7 75 +ur ia +aza ar +ĠDeg ree +P ri +Ġsun shine +Ġ25 1 +Ġpsychedel ic +Ġdigit ally +ĠBra un +Ġsh immer +Ġsh ave +ĠTel esc +ĠAst ral +ĠVenezuel an +ĠO G +Ġc rawling +Int eg +ĠFe ather +Ġunfold ing +Ġappropri ation +Ġè£ı è +ĠMob ility +ĠN ey +- . +b ilt +L IN +ĠT ube +ĠCon versely +Ġkey boards +ĠC ao +Ġover th +Ġla ure +>> \ +ĠV iper +ach a +Off set +ĠR aleigh +ĠJ ae +J ordan +j p +Ġtotal itarian +Connect or +Ġobserv es +ĠSpart an +ĠIm mediately +ĠSc al +C ool +Ġt aps +Ġro ar +P ast +Ġch ars +ĠB ender +ĠShe ldon +Ġpain ter +Ġbe acon +ĠCreat ures +Ġdownt urn +Ġh inder +ĠAnd romeda +à Ľ +cc oli +ĠF itness +et rical +Ġutil izes +Ġsen ate +Ġen semble +Ġche ers +T W +Ġaff luent +k il +ry lic +ord ering +Com puter +Ġgru esome +ost ics +ĠUb isoft +ĠKel ley +Ġw rench +Ġbourgeois ie +IB LE +ĠPrest on +w orn +ar ist +reat ing +Ġst ained +ar ine +Ġsl ime +EN N +Ġche sts +Ġground water +ann ot +ĠTr ay +ĠLoc ke +ĠC TR +Ġd udes +ĠEx ternal +ĠDec oder +Ġpar amed +ĠMed line +80 9 +ĠD inner +rup al +g z +ĠG um +ĠDem o +j ee +Ġd h +ber man +arch s +Ġen qu +ĠEp stein +Ġdevast ation +Ġfriends hips +ĠAr d +Ġ23 1 +ĠRub in +ĠDist ance +Ġsp urred +Ġd ossier +Ġover looking +\\\\\\\\ \\\\\\\\ +Fore st +ĠCom es +\ ", +ĠIran ians +Ġf ixtures +L aughs +Ġcur ry +ĠKing ston +Ġsqu ash +Ġcat alogue +Ġabnormal ities +Ġdigest ive +.... ..... +Ġsubord inate +og ly +Ġ24 9 +M iddle +Ġmass ac +Ġburg ers +Ġdown stairs +Ġ19 31 +39 4 +ĠV G +Ġl asers +ĠS ikh +ĠAlex a +der ived +Ġcycl ist +ãģ® éŃĶ +onel iness +!!!! !!!! +Ġbuff s +leg ate +Ġrap ing +Ġrecomm ending +ro red +Ġmult icultural +un ique +Ġbusiness men +Ġune asy +ĠM AP +Ġdisp ersed +cipl ine +J ess +ĠK erala +å § +Ġabst raction +Sur v +U h +Ġprin ters +ij a +ow der +Ġanalog ous +ĠA SP +af er +Ġunfold ed +Ġlevel ing +Ġbre ached +ĠH earing +Ġn at +Ġtransl ating +crit ical +Ġant agonist +ĠYes terday +Ġfuzz y +w ash +m ere +Ġbe wild +ĠM ae +V irgin +ph rase +Ġsign aled +ĠH IGH +Ġprot ester +Ġgar ner +unk nown +Ġk ay +Ġabduct ed +Ġst alking +am n +Ġdes erving +ĠR iv +ĠJ orge +Ġscratch ing +ĠS aving +ip ing +Ġte ase +Ġmission ary +ĠMor row +T IME +P resent +Ġchem otherapy +tern ess +ĠH omes +ĠP urdue +Ġst aunch +ĠWhit ney +ĠTH ERE +Î ¼ +iat us +ĠErn est +ĠDe ploy +Ġcove ted +F ML +ĠDial ogue +Ġex ited +f ruit +Ġner d +":" "," +Ġv ivo +ru ly +4 60 +ĠAm en +rehens ible +Ġâ ĺ +D IR +Ġad herence +Ġche w +ĠCo ke +ĠSerge i +dig ital +ĠNe ck +g ently +enth al +/ ) +Ġwe ary +Ġgu ise +ĠConc ord +ĠOn ion +at cher +Ġb inge +ĠDirect ive +Ġman ned +ans k +Ġill usions +Ġbillion aires +38 3 +oly n +odynam ic +ĠWhe at +ĠA lic +Ġcol oured +ĠN AFTA +ab o +Ġmac ros +ind ependent +s weet +Ġsp ac +ĠK abul +Ġ Ä +em e +Ġdict ated +Ġsh outs += { +Ġr ipping +ĠSh ay +ĠCr icket +direct ed +Ġanalys ed +ĠWAR RANT +ag ons +ĠBlaz ers +Ġche ered +Ġar ithmetic +ĠTan z +37 3 +ĠFl ags +Ġ29 5 +Ġw itches +ĠIn cluded +ĠG ained +ĠBl ades +G am +ĠSam antha +ĠAtl antis +ĠPr att +Ġspo iled +ĠI B +ĠRam irez +Pro bably +re ro +ĠN g +ĠWar lock +t p +Ġover he +Ġadministr ations +Ġt int +Ġreg iment +Ġpist ols +Ġblank ets +Ġep ist +Ġbowl s +Ġhydra ulic +Ġde an +Ġj ung +Ġasc end +70 5 +ĠSant iago +à ® +Ġun avoid +ĠSh aman +re b +Ġstem ming +99 8 +ĠM G +st icks +esthes ia +ER O +Ġmor bid +ĠGr ill +ĠP oe +any l +Ġdele ting +ĠSurve illance +Ġdirect ives +Ġiter ations +ĠR ox +ĠMil ky +F ather +Ġpat ented +44 7 +Ġprec ursor +Ġm aiden +ĠP hen +ĠVe gan +ĠPat ent +K elly +Redd itor +Ġn ods +Ġvent ilation +ĠSchwar z +Ġw izards +Ġomin ous +ĠHe ads +ĠB G +Ġl umber +ĠSp iel +Ġis Enabled +Ġancest ral +ĠSh ips +Ġwrest ler +ph i +Ġy uan +ĠRebell ion +Ġice berg +Ġmag ically +Ġdivers ion +ar ro +yth m +ĠR iders +ĠRob bie +ĠK ara +ĠMain tenance +ĠHer b +Ġhar ms +p acked +ĠFe instein +Ġmarry ing +Ġbl ending +ĠR ates +Ġ18 80 +Ġwr ink +ĠUn ch +ĠTor ch +desc ribed +Ġhuman oid +ilit ating +ĠCon v +ĠFe ld +IGH TS +Ġwhistlebl ower +ort mund +ets y +arre tt +ĠMon o +ĠI ke +ĠC NBC +ĠW AY +ĠMD MA +ĠIndividual s +Ġsupplement al +Ġpower house +ĠSt ru +F ocus +aph ael +ĠCol leg +att i +Z A +Ġp erenn +ĠSign ature +ĠRod ney +Ġcub es +idd led +ĠD ante +ĠIN V +iling ual +ĠC th +Ġso fa +Ġintimid ate +ĠR oe +ĠDi plom +ĠCount ries +ays on +Ġextrad ition +Ġdis abling +ĠCard iff +Ġmemor andum +ĠTr ace +Ġ?? ? +se ctor +ĠRou hani +ĠY ates +ĠFree ze +Ġbl adder +M otor +ĠProm ise +ant asy +Ġforesee able +ĠC ologne +cont ainer +ĠTre es +ĠG ors +ĠSin clair +Ġbar ring +key e +Ġsl ashed +ĠStat istical +é ĩ +Ġâĸ º +All ows +Ġhum ility +Ġdr illed +ĠF urn +44 3 +Ġse wage +Ġhome page +Ġcour tyard +Ġv ile +Ġsubsid iaries +aj o +direct ory +Ġam mon +V ers +charg es +Ġ} } +ĠCh ains +Ġ24 6 +n ob +Ġper cept +Ġg rit +Ġfisher men +ĠIraq is +ĠDIS TR +ĠF ULL +ĠEval uation +g raph +at ial +Ġcooper ating +Ġmel an +Ġenlight ened +Ġal i +t ailed +Ġsal ute +Ġweak est +ĠBull dogs +U A +ĠAll oy +Ġsem en +oc ene +ĠWilliam son +s pr +, âĢĶ +ĠG F +itt ens +Be at +ĠJ unk +iph ate +ĠFarm ers +ĠBit coins +ig ers +d h +ĠL oyal +p ayer +Ġentert ained +Ġpenn ed +Ġcoup on +Que ue +Ġweaken ing +c arry +Ġunderest imate +Ġshoot out +Ġcharism atic +ĠProced ure +Ġprud ent +in ances +Ġric hes +Ġcort ical +Ġstr ides +Ġd rib +ĠOil ers +5 40 +ĠPer form +ĠBang kok +Ġe uth +S ER +Ġsimpl istic +t ops +camp aign +Q uality +Ġimpover ished +ĠEisen hower +Ġaug ment +ĠH arden +Ġinterven ed +Ġlist ens +ĠK ok +Ġs age +Ġrub bish +ĠD ed +Ġm ull +pe lling +Ġvide ot +Produ ction +D J +m iah +Ġadapt ations +Ġmed ically +Ġboard ed +Ġarrog ance +Ġscra pped +Ġopp ress +FORM ATION +Ġj unction +4 15 +EE EE +S kill +Ġsub du +ĠSug gest +ĠP ett +Ġle tt +ĠMan ip +ĠC af +ĠCooper ation +T her +Ġreg ained +¶ æ +ref lect +Ġth ugs +ĠShel by +Ġdict ates +ĠWe iner +ĠH ale +Ġbatt leground +s child +Ġcond ol +h unt +osit ories +Ġacc uses +Fil ename +Ġsh ri +Ġmotiv ate +Ġreflect ions +N ull +ĠL obby +¥ µ +ĠS ATA +ĠBack up +Ñ ĥ +n in +ĠCor rection +Ġju icy +ut ra +ĠP ric +Ġrest raining +ĠAir bnb +ĠAr rest +Ġappropri ations +Ġsl opes +Ġmans laughter +Ġwork ings +ĠH uss +ĠF rey +Le ave +ĠHarm ony +ĠF eder +Ġ4 30 +Ġt rench +Ġglad ly +Ġbull pen +ĠG au +b ones +Ġgro ove +Ġpre text +ã ħĭ +Ġtransm itter +ĠComp onent +Ġunder age +ĠEm pires +T ile +Ġo y +ĠMar vin +ĠC AS +Ġbl oss +Ġrepl icated +ĠMar iners +Marc us +ĠBl ocks +Ġliber ated +Ġbutter fly +Fe el +Ġfer mentation +Ġyou tube +Ġoff end +ĠTer m +res ist +Ġcess ation +Ġinsurg ency +Ġb ir +ĠRa ise +59 5 +Ġhypothes es +50 2 +Ġpl aque +ocr at +Ġjack ets +ĠHuff Post +am ong +Ġconf er +48 7 +ĠL illy +Ġadapt ing +ĠF ay +Ġsh oved +ve c +Ġref ine +Ġg on +Ġgun men +z ai +ĠShut tle +ĠI zan +Ġ19 13 +Ġple thora +· · +Ġ5 10 +Ġp uberty +Ġ24 1 +ĠWe alth +ĠAl ma +ĠM EM +ĠAd ults +C as +pr ison +R ace +Ġwater proof +Ġathlet icism +Ġcapital ize +ĠJu ice +Ġillum inated +ĠP ascal +Ġirrit ation +ĠWitness es +ad le +ĠAst ro +Ġf ax +ĠEl vis +Prim ary +ĠL ich +ĠEl ves +Ġres iding +Ġst umble +3 19 +ĠP KK +Ġadvers aries +D OS +ĠR itual +Ġsm ear +Ġar son +ident al +Ġsc ant +Ġmon archy +Ġhal ftime +Ġresid ue +Ġind ign +ĠSh aun +ĠEl m +aur i +A ff +W ATCH +ĠLy on +hel ps +36 1 +Ġlobby ist +Ġdimin ishing +Ġout breaks +Ġgo ats +f avorite +ĠN ah +son ian +ĠBo oster +Ġsand box +ĠF are +ĠMalt a +Ġatt Rot +ĠM OR +ld e +Ġnavig ating +T ouch +Ġunt rue +ĠDis aster +Ġl udicrous +Pass word +ĠJ FK +blog spot +4 16 +ĠUN DER +ern al +Ġdelay ing +T OP +Ġimpl ants +ĠAV G +ĠH uge +att r +Ġjournal istic +ĠPe yton +ĠI A +R ap +go al +ĠProgram me +Ġsm ashing +w ives +print ln +ĠPl ague +in us +EE P +Ġcru iser +ĠPar ish +umin ium +Ġoccup ants +ĠJ ihad +m op +Ġp int +Ġhe ct +ĠMe cca +direct or +ĠFund ing +ĠM ixed +Ġst ag +T ier +Ġg ust +Ġbright ly +ors i +Ġup hill +R D +Ġles ions +ĠBund y +liv ious +Ġbi ologist +ĠFac ulty +ĠAuthor ization +Ġ24 4 +All ow +ï ¸ +ĠGi ul +Ġpert inent +ot aur +es se +ĠRo of +Ġunman ned +35 1 +ĠSh ak +ĠO rient +Ġend anger +D ir +Ġrepl en +ed ient +Ġtail or +Ġgad gets +Ġaud ible +âĺ Ĩ +N ice +Ġbomb ard +ĠR ape +Ġdef iance +ĠTW O +ĠFilip ino +Ġunaff ected +erv atives +Ġso ared +ĠBol ton +Ġcomprom ising +ĠBrew ers +R AL +ĠA HL +icy cle +Ġv ampires +Ġdi pped +oy er +ĠX III +Ġsidew ays +ĠW aste +ĠD iss +ĠâĶľ âĶĢâĶĢ +$ . +Ġhabit ats +ĠBe ef +tr uth +tr ained +spl it +R us +And y +ĠB ram +RE P +p id +è£ ħ +ĠMut ant +An im +ĠMar ina +Ġfut ile +hig hest +f requency +Ġepile psy +Ġcop ing +Ġconc ise +Ġtr acing +ĠS UN +pan el +ĠSoph ie +ĠCrow ley +ĠAd olf +ĠShoot er +Ġsh aky +ĠI G +ĠL ies +ĠBar ber +p kg +Ġupt ake +Ġpred atory +UL TS +/ ** +Ġintox icated +ĠWest brook +od der +he ment +Ġbas eman +AP D +st orage +ĠFif ty +ed itor +G EN +UT ION +ir ting +Ġse wing +r ift +Ġag ony +ĠS ands +Ġ25 4 +C ash +Ġl odge +Ġp unt +N atural +ĠIde as +Ġerrone ous +ĠSens or +ĠHann ity +Ġ19 21 +Ġm ould +ĠG on +kay a +Ġanonym ously +ĠK EY +Ġsim ulator +W inter +Ġstream ed +50 7 +? ", +Ġte ased +Ġco efficient +Ġwart ime +ĠTH R +' '. +ĠBank ing +mp ire +Ġf andom +Ġl ia +G a +Ġdown hill +Ġinterpre ting +Ind ividual +N orm +Ġjealous y +bit coin +Ġple asures +ĠToy s +ĠChev rolet +ĠAd visor +IZ E +Ġrecept ions +70 6 +C ro +Ġ26 2 +Ġcit rus +ir u +Review er +ject ed +U ES +an z +19 81 +ĠWork er +Ġcompl ied +ores cent +contin ental +T on +ĠPr ism +ĠShe ep +Ġ28 8 +n ox +ĠV og +O rd +Ġreal ms +te k +Ġirrig ation +Ġbicy cles +Ġelectron ically +p oly +t all +() ); +Ġaest hetics +ĠInteg rated +Expl ore +Ġd unk +47 6 +p ain +ĠJac ques +ĠD mit +Fram es +Ġreun ited +Ġhum id +D ro +P olitical +Ġyouth ful +Ġent ails +Ġmosqu ito +36 3 +spe cies +Ġcoord inating +ĠMay hem +ĠMagn us +M ount +Impro ved +ĠST ATE +ATT LE +Ġflow ed +Ġtack led +Ġfashion ed +Ġre organ +iv ari +f inger +Ġreluct antly +et ting +ĠV and +you ng +ĠGar land +Ġpresum ption +Ġamen ities +ĠPle asant +on ential +ĠO xy +Ġmor als +ĠY ah +Read y +Sim on +En h +D emon +Ġcl ich +Mon itor +ĠD U +Ġwel comes +Ġstand out +Ġdread ful +Ġban anas +Ġball oons +h ooting +bas ic +Ġsuff ix +Ġd uly +can o +Ch ain +at os +Ġgeop olitical +Ġ( & +ĠGem ini +ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ +Ġacqu itted +L uck +prot ect +10 24 +Ġsc arcity +Ġmind fulness +ec ided +D N +pr ime +ĠPres idents +ĠVID EO +Ġ( âĪĴ +add ock +N OR +ĠP ru +p un +ĠL OL +)) )) +ĠL iqu +ĠS AS +Ġsty ling +Ġpunish ments +Ġnum b +Ġasc ertain +ĠRock ies +f lu +Th umbnail +Ġperpet rated +ĠSem i +Ġdis arm +ĠOld er +ĠEx ception +Ġexponent ially +ĠCommun ities +Ġabol ish +ĠPart ner +pt oms +Ġ7 77 +ĠFo ley +ĠC ases +Ġgre ase +ĠReb irth +G round +Ġ; ) +ĠDoct rine +ik ini +Y e +ĠBl ossom +Ġpers ists +b ill +Ġinf usion +Ġbud dies +9 11 +ĠPat ient +Ġdem os +Ġacquaint ance +ĠP aw +at ari +Ġx ml +Ġfasc ination +ĠSer ve +Ï Ĥ +br anded +Ġa z +Return s +Ġover shadow +Ġro am +Ġspeed y +n umbered +hel ial +Ġdisc iple +Ġass urances +g iven +pect ing +ĠN atalie +çĶ ° +Ġmosquit oes +rote in +Ġnumer ic +Ġindepend ents +Ġtrans itional +Ġreaction ary +ĠMech dragon +do ctor +Ġshort est +Ġsequ ential +ĠB ac +ĠAccount s +ãģ Į +ach y +ract ive +ĠReg iment +Ġbreat htaking +ffic iency +ĠB ates +Ġ3 11 +Ġward robe +ft s +ĠBer k +Sim ply +ĠRivers ide +iver ing +ident ial +lu cent +Ġen riched +ĠCon ver +ĠG iving +ãĥ Ļ +Ġlegal ize +ĠF TC +Ġfre aking +M ix +Ġter restrial +es ian +ci ents +W ing +LO AD +Ġled ge +ĠViol ent +ĠMet all +Ġ30 8 +Ġs outheastern +hett o +M eat +Ġslow down +Ġret reated +Jere my +end as +**** * +er ic +Ġre ins +opp able +ĠHuman ity +ear ances +rig an +C amera +Ġwa ivers +s oc +Ġalter ation +trans form +ĠC emetery +50 6 +Ġindef inite +Ġstim ulating +y g +60 3 +ĠS op +Ġdescript ive +Ph ase +ĠEd mund +Ġpneum onia +vent us +A mb +Ġlabor atories +ĠEx clusive +ug ar +W ere +Ġmalf unction +Ġhomosexual s +Ġ---- --- +un i +Ġturb ines +ĠEqu ity +D u +Ġmind ed +ĠR H +ĠBlack hawks +Ġfe ats +Ġ17 00 +re pl +36 2 +lad en +Ġindisp ensable +ly ss +tt i +Ġre el +Ġdiver ted +Ġlik eness +Ġsubscript ions +Ġfing ert +Ġfil thy +dest ruct +d raft +ĠBernard ino +l aunch +Ġper plex +ĠS UM +car b +Ġswe ater +ĠVent ure +ĠJ ag +ĠCele b +ĠV oters +Ġstead fast +Ġathlet ics +ĠHans on +ĠDr ac +Tr acker +Ġcomm end +ĠPres idency +ĠD ID +in formed +Ġweb page +P retty +Ġforce fully +ãĥĥ ãĤ¯ +Ġrel ocation +Ġsat ire +â ī +ĠSunder land +æ Ħ +V oice +???? ???? +Ġinform ant +Ġbow el +ĠUn iform +Ġ ..." +Ġpur ge +Ġpic nic +ĠU mb +ĠU PDATE +ĠSapp hire +ĠSt all +le arn +Ġobject ively +Ġob liter +Ġlooph ole +Ġjour neys +Ġo mission +Pro s +ĠSid ney +pl oma +Ġspray ed +Ġg uru +Ġtra itor +Ġtim et +Ġsn apping +ĠSe vent +urn al +ĠUk ip +Ġb owed +por al +l iberal +R os +Quest ions +i OS +Ġsummar ize +ST AT +Ġ18 50 +ap est +Ġl ender +ĠVari able +br inging +ĠL ORD +, ) +Ġcollaps es +x iety +ĠN ed +Y D +ĠSch a +Ġantib ody +Ġdis band +y re +ill usion +Ġro ver +s hed +ĠHiro sh +cc i +Ġcal am +ĠMort on +P interest +Ġ19 28 +ĠE uras +ord es +Ġf ences +ĠIn ventory +ĠVal encia +ĠU d +ĠT iff +Ġsqu e +Ġqu otation +Ġtroubles ome +er ker +QU EST +ĠKing doms +s outh +Ġle vy +Pr ince +ĠSt ing +Ġnick named +Ġapp e +Ġphot ographic +Ġcorp us +re ference +ĠT rog +U nt +) =( +ĠLat via +Ġactiv ating +Ġlicense e +Ġdispar ities +ĠNews letter +ãĥĥ ãĥĪ +Ġfree ing +ĠJe ep +ĠPer ception +ins k +Ġsil icone +ĠHay den +Le an +ĠSuz uki +ibr arian +66 8 +Ġsp or +Ġcorrel ations +ag hetti +Ġtu ber +ĠIP CC +il us +ĠV u +Ġwealth iest +ĠCarb uncle +an za +Ġfool ed +ĠZ ur +Ġd addy +ran o +il ian +Ġknock out +f man +requ ired +ĠWik ileaks +ĠD uffy +ON T +Ġins ol +ĠObject s +Ġb ou +ĠNord ic +ĠIns ert +sc an +Ġd ancers +Ġid iots +major ity +ĠNev ille +ĠFree BSD +Ġt art +pan ic +69 0 +Ġcoc oa +Ġsam pled +Ġlook up +Ind ust +Ġinject ions +gen re +Ġa u +Ġroad way +Ġgen itals +K ind +ĠEx aminer +ĠY az +F resh +Ġpar alysis +ĠAl uminum +Ġre ap +ok é +Ġsl oppy +ĠTun nel +pos ium +ner y +en ic +Ġher bal +ĠOut er +ĠBuild er +Ġinc ur +Ġide ologies +Ġback ups +cons uming +ĠDet ect +de ck +ĠKN OW +ĠG ret +ĠM IC +Ġtough ness +ĠEx hibit +Ġh ive +L es +ĠSCH OOL +ĠAt ari +ald e +ĠN ull +and estine +m ouse +Ġbrig ade +48 9 +Ġrev ol +ĠLaw son +ĠW ah +op oly +eb ted +ĠS aunders +Ġ3 13 +ĠW inc +Ġtab oo +ĠHel met +Ġw edge +ch ip +ĠT ina +b g +Ġinf uri +r n +Ġanomal ies +ĠSy nc +ĠEx am +ĠComm it +ĠDi ary +ĠALS O +ĠDe bor +omed ical +Ġcomprehens ion +6 55 +Ġempower ing +Ġ ire +Ġju ices +ĠE TH +ĠBox ing +=" / +Ġfacilit ated +p oke +ĠPars ons +ĠMod er +tra vel +Ġcivil izations +Ġliber tarians +Ġrun e +ĠCl arks +at hed +Ġcampaign ers +ĠDis patch +ĠFah renheit +ĠCap com +-------- -- +Ġl ace +Ġdr aining +Ġl iner +ĠArt ificial +é n +t ask +] ). +ĠGM O +ĠOper ator +ord inary +ĠInf luence +ĠU ps +Ġpot ency +uss en +osp ons +ĠSw im +ĠDead line +Un ity +Ġcul inary +Ġenlight enment +Ġwe arer +Ġmin ed +Ġp ly +Ġinc est +ĠDVD s +W alk +B TC +Tr ade +Ġdev al +ib and +ĠOvers ight +Palest inian +Ġd art +Ġm ul +L R +Ġrem ovable +ĠReal ms +ì Ŀ +Ġmisc ar +ĠV ulkan +68 5 +è re +ĠS ap +Ġmer ging +ĠCar ly +che ster +Ġbr isk +Ġlux urious +ĠGener ator +Ġbit terness +Ġed ible +Ġ24 3 +T G +Ġrect angle +With No +bel ow +J enn +Ġdark est +Ġh itch +Ġdos age +Ġsc aven +ĠK eller +ĠIllust rated +Certain ly +ĠMaver icks +Marg inal +Ġdiarr hea +Ġenorm ously +Ġ9 99 +sh r +qu art +Ġadam ant +ĠM ew +Ġren ovation +Ġcerv ical +ĠPercent age +en ers +ĠKim ber +Ġflo ats +Ġde x +ĠW itcher +ĠSwan sea +d m +Ġsal ty +y ellow +Ġca pe +ĠDr ain +ĠPaul a +ĠTol edo +les i +Mag azine +ĠW ick +ĠM n +ĠA ck +ĠR iding +AS ON +Ġhom ophobic +AR P +Ġwand ered +C PU +ood oo +ĠP ipe +Ġtight ening +ĠBut t +3 18 +Ġdesert ed +S ession +Ġfacilit ating +J ump +Ġemer gencies +OW ER +Ġexhaust ive +ĠAF TER +Ġheart beat +ĠLab el +ack y +ĠCert ified +ilt ration +Z e +ĠU tt +Ġ13 00 +Ġpres ume +ĠDis p +Ġsur ged +Ġdoll s +Col umb +Ġchim pan +ĠR azor +Ġt icks +Ġcouncill or +Ġpilgr image +ĠReb els +ĠQ C +ĠA uction +x ia +ik k +b red +Ġinsert ion +Ġco arse +d B +SE E +ĠZ ap +ĠF oo +Ġcontem por +ĠQuarter ly +ot ions +ĠAl chemist +ĠT rey +ĠDu o +S weet +80 4 +ĠGi ov +Ġfun n +N in +h off +Ġram ifications +Ġ19 22 +ĠExper ts +az es +Ġgar ments +ar ial +ĠN ab +Ġ25 7 +ĠV ed +Ġhum orous +ĠPom pe +Ġn ylon +Ġlur king +ĠSerge y +ĠMatt is +Ġmisogyn y +ĠComp onents +ĠWatch ing +ĠF olk +ract ical +B ush +Ġt aped +Ġgroup ing +Ġbe ads +Ġ20 48 +Ġcon du +quer que +Read ing +Ġgriev ances +Ult ra +Ġend point +H ig +ĠSt atic +ĠScar borough +L ua +ĠMess i +a qu +ĠPsy Net +ĠR udd +Ġa venue +v p +J er +Ġsh ady +ĠRes ist +ĠArt emis +Ġcare less +Ġbro kers +Ġtemper ament +Ġ5 20 +T ags +ĠTurn ing +Ġut tered +Ġp edd +Ġimpro vised +Ġ: ( +Ġtab l +Ġpl ains +16 00 +press ure +ĠEss ence +marg in +friend s +ĠRest oration +Ġpoll ut +ĠPok er +ĠAugust ine +ĠC IS +ĠSE AL +or ama +Ġth wart +se ek +Ġp agan + º +cp u +Ġg arn +Ġass ortment +ĠI LCS +t ower +Recomm ended +Ġun born +ĠRandom Redditor +ĠRandomRedditor WithNo +Ġparaly zed +Ġeru ption +Ġinter sect +ĠSt oke +ĠS co +B ind +å ¾ +ĠP NG +ĠNeg ative +ĠNO AA +Le on +Ġall oy +ĠL ama +ĠD iversity +5 75 +Ġunderest imated +ĠSc or +Ġm ural +Ġb usted +so on +l if +Ġnone x +Ġall ergy +ĠUnder world +ĠR ays +ĠBl asio +Ġh rs +ĠD ir +Ġ3 27 +by ter +Ġrepl acements +Ġactiv ates +ri ved +M H +Ġp ans +ĠH I +Ġlong itudinal +Ġnu isance +al er +Ġsw ell +ĠS igned +s ci +ĠIs les +ĠA GA +Ġdef iant +Ġson ic +oc on +K C +ĠA im +t ie +ah ah +Ġm L +D X +Ġb isc +ĠBill board +ĠSY STEM +NE Y +ga ard +Ġdist ressed +former ly +Al an +Ġche fs +Ġopt ics +ĠC omet +ĠAM C +Ġredes igned +irm ation +Ġsight ings +38 2 +3 11 +ĠW B +Ġcont raction +ĠT OTAL +D ual +Ġstart led +Ġunderstand ably +Ġsung lasses +ETH OD +Ġd ocker +Ġsurf ing +ĠH EL +ĠSl ack +ton es +Ġsh alt +Vis ual +49 8 +Dep artment +c ussion +Ġunrest ricted +Ġt ad +Ġre name +employ ed +Ġeduc ating +Ġgrin ned +bed room +ĠActiv ities +ĠV elvet +ĠSW AT +Ġsh uffle +ig or +Ġsatur ation +F inding +c ream +ic ter +Ġv odka +tr acking +te c +Ġfore ground +iest a +Ġve hement +ĠEC B +ĠT ie +E y +Ġt urtles +ĠRail road +ĠKat z +ĠFram es +Ġmen ace +ĠFell owship +ĠEss ential +ugg ish +Ġdri p +ch witz +ĠKy oto +s b +ĠN ina +Param eter +Ġal arms +ĠCl aud +Ġpione ering +Ġchief ly +ĠSc ream +Col lection +Ġthank fully +ĠRonald o +åŃ IJ +st rip +ĠDisney land +com mercial +See ing +S oul +Ġevac uate +Ġc iv +ĠAs he +Ġdiv ides +ĠD agger +rehens ive +Ġber ries +ĠD F +Ġs ushi +Ġplur ality +W I +Ġdisadvant aged +Ġbatt alion +ob iles +45 1 +Ġcl ing +Ġunden iable +ĠL ounge +Ġha unt +p he +Ġquant ify +Ġdiff ered +Ġ[* ] +ĠV iz +c um +sl ave +Ġvide og +Ġqu ar +Ġbund les +ĠAl onso +t ackle +Ġneur onal +Ġlandsl ide +conf irmed +ĠDep th +Ġrenew ables +B ear +ĠMaced onia +Ġjer seys +Ġb unk +ĠSp awn +ĠControl s +ĠBuch anan +Ġrobot ics +Ġemphas izing +ĠTut orial +h yp +ist on +Ġmonument al +æ ° +ĠCar ry +Ġt bsp +en ance +H ill +art hed +Ġro tten +De an +Ġtw isting +Ġgood will +Ġimm ersion +L iving +Ġbr ushes +ĠC GI +ĠAt k +tr aditional +Ġph antom +ĠSt amina +Ġexpans ions +ĠMar in +Ġembark ed +ĠE g +int estinal +ĠPE OPLE +ĠBo oth +ĠApp alach +Ġreleg ated +V T +M IT +Ġmust er +Ġwithdraw ing +Ġmicrosc ope +ĠG athering +ĠC rescent +ĠArgent ine +ĠDec re +ĠDomin ic +Ġbud s +ant age +ĠI on +Ġwid ened +ONS ORED +ĠGl oves +iann opoulos +raz en +fe el +Ġrepay ment +Ġhind sight +ĠRE ALLY +ĠPist ol +ĠBra h +Ġwat ts +Ġsurv ives +Ġfl urry +iss y +Al ert +ĠUrug uay +Ph oenix +S low +ĠG rave +ĠF ir +Ġmanage able +Ġtar iff +ĠU DP +ĠPist ons +ĠNiger ian +Ġstrike outs +Ġcos metics +whel ming +f ab +c ape +pro xy +Ġre think +Ġover coming +sim ple +Ġw oo +Ġdistract ing +ĠSt anton +ĠTuls a +ĠD ock +65 9 +Ġdisc ord +ĠEm acs +ĠV es +ĠR OB +Ġreass uring +Ġcons ortium +Muslim s +3 21 +Ġprompt s +se i +ĠH itch +imp osed +ĠF ool +Ġindisc rim +wr ong +bu querque +D avis +! ] +Ġtim eless +ĠNE ED +Ġpestic ide +Ġrally ing +ĠCal der +Ġå ¤ +Ġx p +ĠUn le +ĠEx port +lu aj +B uff +) [ +Ġsq or +S audi +Ġis tg +Ġindul ge +pro c +Ġdisg usted +Ġcomp ounded +Ġn em +Ġschool ing +ĠC ure +process ing +S ol +Ġpro verb +it ized +ĠAlv arez +Ġscar f +Ġrect angular +re ve +Ġh ormonal +ĠSt ress +itiz en +Ġ4 25 +girl s +ĠNo ir +ĠR app +Ġmar ches +ch urch +ĠUs es +Ġ40 5 +ĠBer m +Ġord inances +ĠJud gment +Charg es +ĠZ in +Ġdust y +Ġstraw berries +Ġper ce +ĠTh ur +ĠDebor ah +net flix +ĠLam bert +Ġam used +ĠGu ang +Y OU +R GB +ĠC CTV +Ġf iat +r ang +Ġf ederation +ĠM ant +ĠB ust +ĠM are +respect ive +ĠM igration +ĠB IT +59 0 +Ġpatriot ism +Ġout lining +reg ion +ĠJos é +Ġbl asting +ĠEz ra +B s +Ġundermin es +ĠSm ooth +Ġcl ashed +rad io +Ġtransition ing +ĠBucc aneers +ĠOw l +Ġplug s +Ġh iatus +ĠPin ball +Ġm ig +ĠNut r +ĠWolf e +Ġinteg ers +Ġor bits +ĠEd win +ĠDirect X +b ite +Ġbl azing +v r +Ed ge +ĠP ID +ex it +ĠCom ed +ĠPath finder +ĠGu id +ĠSign s +ĠZ er +ĠAg enda +Ġreimburse ment +M esh +i Phone +ĠMar cos +ĠS ites +h ate +en burg +Ġs ockets +p end +Bat man +v ir +ĠSH OW +Ġprovision al +con n +ĠDeath s +AT IVE +Pro file +sy m +J A +Ġnin ja +inst alled +id ates +eb ra +ĠOm aha +Ġse izing +ĠBe asts +Ġsal ts +M ission +Gener ally +ĠTr ilogy +he on +leg ates +Ġd ime +Ġf aire +par able +G raph +Ġtotal ing +Ġdiagram s +ĠYan uk +ple t +ĠMe h +Ġmyth ical +ĠStep hens +aut ical +ochem istry +Ġkil ograms +Ġel bows +anc ock +ĠB CE +ĠPr ague +Ġimpro v +ĠDev in +Ġ" \ +par alle +Ġsuprem acists +ĠB illion +Ġreg imen +inn acle +Ġrequ isite +ang an +ĠBur lington +ain ment +ĠObject ive +oms ky +G V +Ġun ilateral +Ġt c +Ġh ires +ment al +Ġinvol untary +Ġtrans pl +ĠASC II + ¨ +Ev ents +Ġdoub ted +ĠKa plan +ĠCour age +ig on +ĠMan aging +ĠT art +Ġfalse hood +ĠV iolet +Ġair s +Ġfertil izer +Brit ain +Ġaqu atic +ou f +W ords +ĠHart ford +Ġeven ings +ĠV engeance +qu ite +G all +ĠP ret +Ġp df +ĠL M +ĠSo chi +ĠInter cept +9 20 +Ġprofit ability +ĠId le +ĠMac Donald +ĠEst ablishment +um sy +Ġgather ings +ĠN aj +Charl ie +Ġas cent +ĠProt ector +Ġal gebra +Ġbi os +for ums +EL S +Introdu ced +Ġ3 35 +Ġastron omy +Cont ribut +ĠPol ic +Pl atform +Ġcontain ment +w rap +Ġcoron ary +ĠJ elly +man ager +Ġheart breaking +c air +ĠChe ro +c gi +Med ical +ĠAccount ability +! !" +oph ile +Ġpsych otic +ĠRest rict +Ġequ itable +iss ues +Ġ19 05 +ĠN ek +c ised +ĠTr acking +Ġo zone +Ġcook er +ros is +Ġre open +Ġinf inity +ĠPharm aceutical +ens ional +Att empt +ĠR ory +Mar co +Ġawa its +H OW +t reated +Ġbol st +Ġreve red +Ġp ods +opp ers +00 10 +Ġampl itude +ric an +SP ONSORED +Ġtrou sers +Ġhal ves +ĠK aine +ĠCut ler +ĠA UTH +Ġsplend id +Ġprevent ive +ĠDud ley +if acts +umin ati +ĠY in +Ġad mon +ĠV ag +Ġin verted +Ġhast ily +ĠH ague +L yn +Ġled ger +Ġastron omical +get ting +Ġcirc a +ĠC ic +ĠTenn is +Lim ited +Ġd ru +ĠBY U +Ġtrave llers +Ġp ane +ĠInt ro +Ġpatient ly +Ġa iding +Ġlo os +ĠT ough +Ġ29 3 +Ġconsum es +Source File +Ġ"" " +Ġbond ing +Ġtil ted +Ġmenstru al +ĠCel estial +UL AR +Plug in +Ġrisk ing +N az +ĠRiy adh +Ġacc redited +Ġsk irm +é Ľ +Ġexam iner +Ġmess ing +Ġnear ing +ĠC hern +ĠBeck ham +Ġsw apped +Ġgo ose +K ay +Ġlo fty +ĠWal let +Ġ[ ' +Ġap ocalypse +Ġb amboo +ĠSP ACE +ĠEl ena +Ġ30 6 +ac ons +Ġtight ened +Ġadolesc ence +Ġrain y +Ġvandal ism +ĠNew town +Ġcon ject +c akes +Ġche ated +Ġmoder ators +par ams +E FF +Ġdece it +ĠST L +ĠTanz ania +ĠR I +Ġ19 23 +ĠEx ile +the l +Ġthe olog +Ġquir ky +ĠIr vine +Ġneed y +or is +U m +K a +Ġmail box +3 22 +Ġb os +ĠPet ra +K ING +Ġenlarg ed +O ften +Ġbad ass +Ġ3 43 +ĠPl aces +ĠC AD +Ġpr istine +Ġinterven ing +d irection +Ġl az +ĠD SM +Ġproject ing +ĠF unk +ag og +pay ment +n ov +Ġch atter +AR B +Ġexam inations +ĠHouse hold +ĠG us +F ord +4 14 +B oss +Ġmy stic +Ġle aps +ĠB av +ul z +b udget +Foot ball +Ġsubsid ized +Ġfirst hand +Ġcoinc ide +oc ular +Con n +ĠColl abor +Ġfool s +am ura +ah ar +r ists +Ġsw ollen +Ġexp ended +ĠP au +s up +Ġsp ar +Ġkey note +s uff +Ġunequ al +Ġprogress ing +str ings +ĠGamer gate +Dis ney +ĠEle ven +om nia +Ġscript ed +Ġear ners +bro ther +ĠEn abled +æ ³ +Ġlar vae +ĠL OC +m ess +Wil son +ĠTem plate +success fully +Ġparam ount +Ġcamoufl age +Ġbind s +ĠQu iet +ĠSh utterstock +r ush +Ġmasc ot +fort une +ĠCol t +ĠBe yon +hab i +Ġha irc +Ġ26 7 +ĠDe us +Ġtw itch +Ġconcent rating +Ġn ipples +c ible +Ġg ir +N Z +M ath +n ih +Requ ired +Ġp onder +ĠS AN +Ġwedd ings +Ġl oneliness +N ES +ĠMah jong +69 5 +add le +ĠGar ner +ĠC OUR +Br idge +Ġsp ree +ĠCald well +Ġbri bery +Ġ���� ���� +plug ins +Ġr acket +Ġchamp agne +vers ible +V ote +Ġmod ifiers +May or +6 80 +Ġassemb lies +ĠS ultan +ĠN ing +ĠLad ies +Ġsulf ur +Ġor bs +Ġ---- - +____ ___ +ĠJournal ism +Ġes ports +Ġl ush +Ġh ue +Ġspect ral +H onest +ãĥ ı +Ġbus hes +Ġrein forcement +Ġre opened +ĠWhe els +ĠM org +rie ving +Ġaux iliary +Ġj Query +ĠB AT +tes que +Ġver tex +p ure +f rey +ãĤ º +d os +Ġty ph +Ġc ull +Ġe q +Ġdec on +Ġtoss ing +Ġdispar ate +ĠBr igham +print f +led ged +Ġsu nd +Ġco zy +Ġhepat itis +per forming +Ġav al +ĠG G +f uture +Ġpet ertodd +ĠKos ovo +Ġmagn ets +Al ready +ĠEd ison +ĠCe res +ĠRA ID +Ġbrill iance +57 6 +Ġder ives +Ġhypert ension +ĠÎ Ķ +Ġlamb da +Ġfl air +Ġmission aries +Ġrap es +ĠSt arter +ĠMon ths +Ġdef y +Ġseism ic +ĠR aphael +Ġeuro zone +65 6 +z sche +Ġscr atched +Ġb ows +ĠLenn on +ĠGa ia +Ġdri pping +f acts +A le +Ġfrog s +ĠBre ast +ogene ity +ĠProsecut or +Ġampl ified +ĠHod g +ĠF n +Th ousands +ĠNI H +ĠMonitor ing +FT WARE +ĠPri ebus +ĠG rowing +hun ter +Ġdiagn ose +ĠM ald +ĠL R +Ġcrown ed +Ġburst ing +Ġdiss olution +j avascript +Ġuseful ness +ĠExec ution +: ( +ĠIv ory +a ah +Ġpersecut ed +viol ence +ist as +ĠCr ate +Ġimpuls es +ĠSp ani +ed es +Hand le +ĠZ erg +think able +Last ly +Ġspont aneously +Ġinconven ient +Ġdismiss ing +Ġpl otted +Ġeight y +Ġ7 37 +r ish +ĠThor nton +ath am +Ġsit com +V en +Rec ipe +t el +l und +Ġcle ars +ĠSas uke +Ġ25 8 +Ġopt ing +Ġen raged +est hetic +ĠA e +uch s +Pre p +Fl ow +Ġrun off +ĠE ating +ĠG iles +ĠAct ing +res ources +ib aba +Ġr pm +Ġske wed +ĠBl anc +ĠS akuya +Ġhot ter +Ġ19 24 +op ian +ck o +Ġcr umbling +Ġcapt ains +ĠAppropri ations +le aders +dro pping +an uts +Ġrevers ing +ĠP ose +ĠS ek +Sc ot +ĠIde a +c ise +ĠSloven ia +Ġ3 17 +Do ctor +Ġcro cod +ald i +Se a +ĠFar rell +Ġmerc enaries +ĠR NC +ĠGu ess +Ġp acing +M achine +Streamer Bot +ĠChar ity +Ġ29 8 +Ġcann ons +ĠTob y +TPP StreamerBot +ĠPass ion +cf g +Th om +Ġbad ges +ĠBern stein +. âĢĵ +ĠP OP +ĠCon j +Ġinitial ization +Ġbiod iversity +D ub +Ġfeud al +Ġdisclaim er +Ġc row +Ġign ition +ar f +S HA +Ġk Hz +h azard +ĠArt ists +oe uv +67 9 +ĠRud y +N ine +ĠRam adan +å ½ +itt o +Ġadren aline +C ert +Ġsmell ed +Ġimp unity +Ġag endas +ĠRe born +ĠCon cent +ĠSe ems +Ġo mega +ĠDust in +Ġback er +ĠSau ce +ĠBoy le +W IN +Ġsp ins +Ġpa uses +u pt +Ġshred ded +Ġstra pped +ĠCor ruption +Ġscr atches +Ġn i +Ġatt ire +ĠS AF +Factory Reloaded +ĠI PS +Ġ( % +Ġsem inar +f ocus +c ivil +Ġ18 60 +int osh +Ġcontin ual +Ġabbre vi +ĠS ok +oc obo +X M +Ġfr antic +Ġunavoid able +Ġar tery +Ġannot ations +b ath +Cl imate +Ġd ors +ĠSl ide +co ord +ĠRel oad +ĠL DL +ĠLove craft +Ġunim agin +Ġresemb led +Ġbarr acks +n p +Ġsurrog ate +Ġcategor ized +ãĤ © +Ġvacc inated +Ġdrain age +Ġind ist +ĠWhats App +Ġ18 70 +oler ance +inv oke +am orph +Ġrecon nect +Ġem anc +Ġblind ness +Ġ12 80 +intern et +c ollar +Ġalt ru +Ġab yss +ĠT RI +65 7 +Ġinf used +HE AD +Ġforest ry +ĠWood y +ĠC i +w i +s am +78 4 +hol iday +Ġmog ul +ĠF ees +ĠD EN +In ternal +ur bed +f usc +at om +ĠIll usion +Ġpoll ed +Ġfl ap +Ġco ax +L GBT +An aly +ĠSect ions +ĠCalif orn +em n +Ġh ither +ĠN IGHT +Ġn ailed +ĠPip eline +39 1 +o of +ĠPr imal +vere nd +Ġsl ashing +Ġret ri +avi our +Ġdepart ing +g il +IS C +Ġmid way +Ġultras ound +Ġbeh aving +ĠT ara +class es +V irtual +ĠColon ial +Ġstri pping +Ġorchestr ated +ĠGra ves +45 2 +ĠIron ically +ĠWrit ers +Ġl ends +ĠMan z +Ġra ven +Ġoxid ative +Ġ26 6 +EL F +act ually +asc ar +D raft +Ġfavour able +Ġhumili ating +Ġf idelity +ĠH of +ĠX uan +49 6 +Ġlay ered +at is +79 0 +Ġpay check +it on +K ar +ĠVM ware +ĠFar mer +Ġserv ic +gl omer +Ġsl ump +ĠFab ric +ĠD OC +est ing +Ġreass ure +Ġph yl +v olt +it ory +R ules +Ġoxid ation +Ġpri zed +Ġmist ress +ĠDj ango +WAR N +å ij +Ġenc ode +ĠFeed back +Ġstupid ity +I an +ĠYugoslav ia +× ¨ +ac l +UT E +19 77 +Ġqual ifies +Ġpuls es +pret ty +Ġfro ze +Ġs s +Iter ator +Ġur gently +Ġm ailed +ĠCh am +Ġsust aining +Ġbas il +Ġpupp ies +il ant +ĠP LEASE +l ap +ace ous +F ear +ĠMaster y +aut omatic +ĠT AG +Ġant im +ag les +47 3 +fram es +Ġwh ispers +ĠWho ever +Ġbra very +ĠUK IP +ract ions +"" " +Ġt ame +Ġpart ed +every thing +CON T +Ġind ebted +Ġadd r +re k +IR ED +Ġem inent +cl inton +Ġo usted +Ġreview er +Ġmelt down +Ġre arr +ĠY ao +the real +aby te +Ġst umbling +Ġbat ches +Ġ25 9 +Ġcontrace ptive +Ġprost itute +ens is +De cl +ĠSt rikes +M ilitary +ĠO ath +v acc +pp ings +05 2 +Ġpart Name +amp ing +Rep orts +K I +CH R +Ġsubt ly +sw ers +Bl ake +us ual +Ġcontest ants +Ġcart ridges +ĠGRE AT +Ġbl ush +ĠâĢ º +47 2 +Ġreason ed +ãĥ ¤ +paralle led +Ġd yn +ag ate +Ġnight ly +å Ĩ +55 6 +Ġsem antic +ĠAdv oc +Ġ !! +Ġdisag rees +ĠB W +V eh +Ġharm ing +Ġembr aces +Ġstri ves +Ġin land +ĠK ard +Ġhe ats +ĠGin ny +ut an +ern aut +yl ene +ĠE lev +J D +Ġh ars +ĠStar r +Ġsk ysc +Ġcollabor ators +Us ually +Ġrev olutions +ĠSTAT S +Ġdism antle +Ġconfident ly +Ġkin etic +Al i +Ġpercent ile +Ġextract ing +ill ian +est ead +Ġphysic ists +ĠMarsh al +Ġfell owship +Ġd ashed +ĠU R +ĠSi oux +ĠComp act +am ide +P ython +ĠLe igh +ĠPharm ac +ist rates +her ical +Ġf ue +ĠE min +Ġ( { +ĠNeighbor hood +Ġdisrupt ing +ĠD up +Ġg land +ĠSe v +ĠMar ian +arg on +ĠD und +Ġ< !-- +Ġstr and +Ġstadium s +z os +Ġpsych osis +ĠR ack +Ġbrilliant ly +ï¸ ı +Ġsubmer ged +ĠInst it +ĠCh ow +Ġc ages +ĠH ats +ĠU rs +Ġdil uted +us at +ien ne +ĠMembers hip +ĠBur k +Ġ ie +Ġarche type +D rug +ult on +ĠSp ock +ĠMcK ay +ĠDep end +F eatured +S oc +19 78 +ĠB ere +Ġrelent lessly +Ġcripp ling +Ġar thritis +çĶ Ł +ĠTrop ical +ĠBul g +ĠCher yl +Ġadm irable +Ġsub title +Over ride +Ġorig inating +ĠC CP +Ġsw ore +ĠSo le +ĠDis orders +3 29 +Ġprocess ion +Ġref urb +Ġimm ersed +requ ently +Ġskept ics +Ġcer amic +m itter +en stein +b elt +ĠT IT +b idden +Ġf ir +m ist +> ] +Ġwe ave +ĠParad ox +Ġentr usted +ĠBarcl ays +Ġnovel ist +og ie +80 6 +Ġnin ety +Ġdisag reements +@@@@ @@@@ +ĠAus chwitz +c ars +ĠL ET +t ub +arant ine +P OS +Ġback story +Ġcheer ful +ĠR ag +ek a +bi ased +Ġinexper ienced +ak ra +ĠW itt +t an +Ġrap ist +Ġplate au +ch al +ĠInqu is +exp ression +Ġc ipher +Ġsh aving +add en +re ly +( \ +ism a +ĠReg ulatory +CH AR +ily n +N VIDIA +G U +Ġmur m +la us +Christ opher +Ġcontract ual +ĠPro xy +ĠJa ime +ĠMethod ist +Ġstew ards +st a +per ia +Ġphys iology +Ġbump ed +Ġf ructose +Austral ian +ĠMet allic +ĠMas querade +ar b +Ġprom ul +Ġdown fall +Ġbut cher +Ġb our +ĠIN FORMATION +ĠB is +pect s +ad ena +Ġcontempl ating +ar oo +cent ered +ĠPe aks +Us ed +Ġmod em +Ġg enders +Ġ8 000 +37 1 +Ġm aternity +ĠR az +Ġrock ing +Ġhandgun s +ĠD ACA +Aut om +ĠN ile +Ġtum ult +ĠBenef it +ĠAppro ach +works hop +ĠLe aving +G er +inst ead +Ġvibr ations +Ġrep ositories +49 7 +ĠA unt +ĠJ ub +ĠExp edition +Al pha +Ġs ans +Ġoverd ue +Ġoverc rowd +Ġlegisl atures +Ġp aternal +ĠLeon ardo +Ġexp ressive +Ġdistract ions +Ġsil enced +tr ust +Ġb iking +Ġ5 60 +Ġpropri et +Ġimp osition +Ġcon glomer +Ġ= ================================================================ +ĠTe aching +ĠY ose +int ensive +T own +Ġtroll ing +ĠGr ac +ĠAS US +Y o +Ġspecial s +ĠNep h +ĠGod zilla +Dat abase +ĠHe gel +Ġ27 2 +19 76 +ĠGl oria +Ġdis emb +ĠInvestig ations +ĠB ane +ag ements +St range +Ġtre asury +ĠPl ays +Ġundes irable +Ġwid ening +Ġverb ally +Ġinf ancy +Ġcut ter +f ml +Ġ21 00 +prot otype +f ine +Ġdec riminal +Ġdysfunction al +Ġbes ie +ĠErn st +z eb +Ġnort heastern +Ġa ust +por ate +ĠMar lins +Ġsegreg ated +ew orld +ĠMa her +Ġtra verse +Ġmon astery +ur gy +G ear +s and +Com pl +ĠE MP +Ġpl ent +ĠMer cer +Ġ27 6 +TA BLE +Config uration +H undreds +Ġpr ic +Ġcollabor ating +ĠPar amount +ĠCumm ings +Ġ( < +Ġrecord er +Ġfl ats +Ġ4 16 +wh ose +Font Size +ĠOr bit +Y R +Ġwr ists +Ġb akery +) } +ĠB ounty +ĠLanc aster +Ġend ings +acc ording +ĠSal am +e asy +75 5 +ĠBur r +ĠBarn ett +onom ous +Un ion +Ġpreced ence +ĠScholars hip +ĠU X +Ġroll out +Ġbo on +al m +ĠCan ter +æ µ +Ġround ing +Ġcl ad +Ġv ap +ĠF eatured +is ations +Ġ5 40 +pol ice +Ġunsett ling +Ġdr ifting +ĠLum ia +ĠObama Care +ĠF avor +Hy per +ĠRoth schild +ĠMil iband +an aly +ĠJul iet +H u +Ġrec alling +a head +69 6 +Ġunf avorable +Ġd ances +O x +Ġleg ality +Ġ40 3 +rom ancer +Ġinqu ire +ĠM oves +\ "> +ĠVari ant +ĠMess iah +ĠL CS +ĠBah á +75 6 +Ġeyeb row +Ġ ¥ +ĠMc F +ĠFort y +M as +Ġpan icked +Ġtransform ations +q q +Ġrev olves +ring e +ĠA i +ax e +Ġon ward +ĠC FR +ĠB are +log in +Ġliqu ids +Ġde comp +second ary +il an +ĠCon vert +ami ya +Ġprosecut ing +Ġâī ¡ +ĠYork ers +ĠByr ne +sl ow +aw ei +J ean +Ġ26 9 +ĠSky dragon +Ġ é +ĠNicarag ua +ĠHuck abee +ĠHigh ly +Ġamph ib +ĠPast or +ĠL ets +Ġbl urred +Ġvisc eral +ĠC BO +Ġcollabor ated +z ig +Leg al +Ġapart heid +Ġbr id +Ġpres et +ĠD ET +ĠAM A +× Ķ +arch ing +auc uses +build er +Ġpo etic +Ġem ulator +ĠMole cular +Ġhon oring +ise um +Ġtract or +ĠCl uster +ĠCal m +ared evil +Ġsidew alks +Ġviol in +Ġgeneral ized +ĠAle c +Ġemb argo +Ġfast ball +ĠHT TPS +ĠL ack +ĠCh ill +ri ver +C hel +ĠSw arm +ĠLev ine +ro ying +L aunch +Ġkick er +Ġadd itive +ĠDe als +W idget +cont aining +Ġescal ate +ĠOP EN +Ġtwe aked +Ġst ash +Ġsp arks +ĠEs sex +ĠE cc +Ġconv ict +Ġblog ging +I ER +ĠH L +Ġmurd erers +75 9 +ĠH ib +Ġde pl +ĠJ ord +S ac +Ġdis sect +ĠHow e +os her +Ġcustom izable +ĠFran z +Ġat ro +Ä ĩ +Ġ000 4 +Ġout post +R oss +Ġglyph osate +ĠHast ings +ĠBE FORE +Ġsh ove +o pped +ĠSc ala +Ġam ulet +an ian +Ġexacerb ated +Ġe ater +47 1 +UM E +Ġpul p +izont al +ĠZ am +ĠAT I +imm une +aby tes +Ġunnecess arily +ĠC AT +ĠAx is +Ġvisual ize +à ī +ĠRad ical +f m +Doc uments +ĠFor rest +Ġcontext ual +ĠSy mbol +Ġtent ative +ĠDO ES +ĠGood s +Ġintermitt ent +} : +medi ated +Ġridic ule +Ġathe ism +Ġpath ogens +ĠM um +Ġre introdu +Ġ30 7 +i HUD +Ġflash light +Ġsw earing +Ġp engu +B u +Ġrot ated +ĠCr ane +Ġ() ); +Ġfashion able +Ġendors ing +46 3 +) [ +Ġingest ion +Ġcook s +Ġ9 50 +ot omy +ĠIm am +Ġk a +Ġte aser +ĠGhost s +ĠãĤ µ +19 69 +Ï ĥ +ub by +Ġconver ter +zan ne +end e +ĠPre par +ĠNic kel +ĠChim era +h im +ĠTyr ann +ĠSabb ath +ĠNich ols +Ġra pt +ih ar +Ġshe lling +Ġillum inate +Ġdent ist +ut or +ĠInteg ration +Ġwh ims +ĠLiter ary +Be aut +Ġp archment +ag ara +Br and +Ġder og +â̦ ) +ĠNor se +Ġunw itting +Ġc uc +Ġborder line +Ġupset ting +Ġrec ourse +Ġd raped +ĠRad ar +Ġcold er +ĠPep si +im inary +], [ +65 8 +V i +ĠF rem +ĠP es +Ġveter inary +ĠT ED +ĠEp idem +n ova +k id +Ġdev out +o ct +j ad +M oh +ĠP AY +Ġge ometric +Ġ3 23 +Ġcircum ference +ich ick +19 75 +ĠY uri +ĠSh all +ĠH over +un in +S pr +Ġg raft +ĠHapp iness +Ġdisadvant ages +att acks +Ġhub s +ĠStar Craft +é ĸ +Ġgall eries +ĠKor ra +Ġgrocer ies +ĠGors uch +Ġrap ists +Ġfun gi +ĠTyph oon +V ector +ĠEm press +b attle +4 68 +Ġparas ite +ĠBom ber +S G +ex ist +ĠP f +Ġun se +Ġsurge ons +B irth +ĠUn sure +ĠPrint ed +ĠBehavior al +ĠA ster +Pak istan +Ġun ethical +Ġs v +ĠIo T +Ġlay outs +P ain +Ġconst ants +ĠL W +ĠB ake +Ġtow els +Ġdeterior ation +ĠBol ivia +Ġblind ed +ĠW arden +ĠMist ress +Ġon stage +Ġcl ans +ĠB EST +19 60 +Ġant ique +Ġrhet orical +ĠPer cy +ĠRw anda +, . +B ruce +Ġtra umat +ĠParliament ary +Ġfoot note +id ia +ĠLear ned +se eking +gen ic +Ġdim ensional +H ide +èĢ ħ +Ġintrig ue +in se +Ġle ases +Ġapp rentices +w ashing +Ġ19 26 +V ILLE +Ġsw oop +s cl +Ġbed rooms +on ics +ĠCr unch +comp atible +Ġincap ac +ĠYemen i +ash tra +z hou +d anger +Ġmanifest ations +ĠDem ons +AA F +Secret ary +ACT ED +L OD +Ġam y +ra per +eth nic +4 17 +Ġpos itives +Ġ27 3 +ĠRefuge es +Ġus b +ĠV ald +odd y +ĠMahm oud +As ia +Ġskull s +ĠEx odus +ĠComp et +ĠL IC +ĠM ansion +ĠA me +Ġconsolid ate +storm s +ont ent +99 6 +Ġcl en +Ġm ummy +fl at +75 8 +ĠV OL +oter ic +n en +ĠMin ute +S ov +Ġfin er +R h +ly cer +Ġreinforce ments +ĠJohann es +ĠGall agher +Ġgym n +S uddenly +Ġext ortion +k r +i ator +T a +Ġhippocamp us +N PR +ĠComput ing +Ġsquare ly +Ġmod elling +ĠFor ums +ĠL isp +ĠKrish na +Ġ3 24 +Ġr ushes +Ġens ued +Ġcre eping +on te +n ai +il ater +ĠHorn ets +Ġob livious +IN ST +55 9 +Ġjeopard y +Ġdistingu ishing +j ured +Ġbeg s +sim ilar +ph ot +5 30 +ĠPark way +Ġs inks +ĠHearth stone +ib ur +ĠBat on +Av oid +Ġd ancer +Ġmag istrate +ary n +Ġdisturb ances +ĠRom ero +Ġpar aph +Ġmis chief +âĸ ĵ +ĠSh aria +Ġur inary +r oute +iv as +f itted +Ġeject ed +ĠAl buquerque +Ġ4 70 +Ġirrit ated +ĠZ ip +ĠB iol +à į +Ġden ounce +Ġbin aries +ĠVer se +Ġopp os +ĠKend rick +ĠG PL +Ġsp ew +ĠEl ijah +ĠE as +Ġdr ifted +so far +Ġannoy ance +ĠB ET +47 4 +ĠSt rongh +it ates +ĠCogn itive +oph one +ĠIdent ification +ocr ine +connect ion +Ġbox er +ĠAS D +ĠAre as +Y ang +t ch +ull ah +Ġdece ive +Comb at +ep isode +cre te +W itness +Ġcondol ences +ht ar +Ġhe als +Ġbuck ets +ĠLA W +B lu +Ġsl ab +ĠOR DER +oc l +att on +ĠSteven son +ĠG inger +ĠFriend ly +ĠVander bilt +sp irit +ig l +ĠReg arding +ĠPR OG +Ġse aling +start ing +Ġcard inal +ĠV ec +ĠBe ir +Ġmillisec onds +we ak +per se +Ġster ile +ĠCont emporary +ĠPh ant +ĠCl o +Ġout p +Ġex iled +Ġ27 7 +Ġself ie +Ġman ic +Ġn ano +ter ms +Alex ander +Ġres olves +Ġmillenn ia +Ġexpl odes +Ġconst ellation +Ġadul tery +m otion +D OC +Ġbroad casters +Ġkinderg arten +ĠMay weather +ĠE co +ich o +Ġ28 7 +l aun +Ġm ute +Ġdisc reet +Ġpres chool +Ġpre empt +De lete +ĠFre ed +P i +H K +Ġblock er +ĠC umber +Ġw rought +d ating +Ġins urer +Ġquot as +Ġpre ached +Ġev iction +ĠReg ina +ĠP ens +Ġsevent een +ĠN ass +D ick +Ġfold s +Ġd otted +ĠA ad +Un iversal +Ġp izz +ĠG uru +Ġso ils +Ġno vice +ĠNe ander +Ġst ool +Ġdeton ated +ĠPik achu +ĠMass ive +IV ER +ĠAb del +Ġsubdu ed +Ġtall est +Ġprec arious +Ġa y +r ification +ĠOb j +c ale +Ġun question +cul osis +ad as +igr ated +D ays +Ġque ens +ĠGaz ette +ĠCol our +ĠBow man +ĠJ J +ï ve +Ġdomin ates +Stud ent +Ġm u +Ġback log +ĠElect ro +Tr uth +48 3 +Ġcond ensed +r ules +ĠCons piracy +Ġacron ym +hand led +ĠMat te +j ri +ĠImp ossible +l ude +cre ation +Ġwar med +ĠSl ave +Ġmis led +Ġfer ment +ĠK ah +ink i +ke leton +cy l +ĠKar in +Hun ter +Reg ister +ĠSur rey +Ġst ares +ĠW idth +ĠN ay +ĠSk i +Ġblack list +uck et +Ġexp ulsion +im et +Ġret weet +vant age +Fe ature +Ġtro opers +Ġhom ers +9 69 +Ġconting ency +ĠW TC +ĠBrew er +fore ign +W are +S olar +Ġund ue +RE C +ulner able +path ic +ĠBo ise +Ġ3 22 +Ġarous ed +ĠY ing +ä¸ į +uel ess +Ġp as +Ġmor p +Ġfl oral +Ex press +ud ging +k B +ĠGr anted +Ø ¯ +ĠMich a +ĠGoth ic +ĠSPEC IAL +ĠRic ardo +F ran +Ġadminister ing +6 20 +por a +Ġ ® +Ġcomprom ises +Ġb itten +Ac cept +Th irty +Ð ² +Ġmater ially +ĠTer r +ig matic +ch ains +Ġdo ve +stad t +Mar vel +FA ULT +Ġwind shield +Ġ3 36 +ad ier +Ġsw apping +Ġflaw less +ĠPred ator +ĠMiche le +Ġprop ulsion +ĠPsych ic +Ġassign ing +Ġfabric ation +Ġbar ley +l ust +Ġtow ering +Ġalter cation +ĠBent ley +Sp here +Ġtun a +ĠClass es +Fre edom +un er +L ady +v oice +Ġcool est +or r +Ġpal p +$ { +Ġhyster ia +ĠMet atron +p ants +Ġspawn ing +Exper ts +ĠInvest ors +ĠAn archy +Ġshr unk +ĠVict im +Ġ28 9 +Ġec stasy +ĠB inding +58 5 +ĠMel ody +57 8 +ot ally +ĠE tsy +lig a +Ġapplaud ed +Ġswe ating +Ġredist ributed +Ġpop corn +Ġsem inal +f ur +ĠNeuro science +R and +ĠO st +ĠMadd en +ĠIncre asing +ĠDaw kins +ĠSub way +Ġar sen +cons erv +B UR +Ġsp iked +ĠLy ft +ĠImper ium +ĠDrop box +Ġfav oured +Ġencomp asses +gh ost +Ġins pires +Ġbur geoning +ĠY oshi +ĠVert ical +ĠAud itor +Ġint ending +Ġfilib uster +Bl oom +f ac +ĠCav s +ign ing +Ġcowork ers +ĠBarb arian +rem ember +FL AG +Ġaudit ory +ason ry +Col lege +Ġmut ed +gem ony +ob in +ĠPsych o +9 68 +Ġlav ish +Ġhierarch ical +ĠDr one +ou k +Ġcripp led +ĠMax im +Sl ot +Ġqu iz +ĠV id +if ling +Ġarchae ologists +Ġabandon ment +d ial +le on +ĠF as +T ed +Ġr aspberry +Ġmaneu vers +Ġbehavi ours +Ġins ure +Ġrem od +Sw itch +h oe +Ġsp aced +Ġafford ability +ĠF ern +not ation +ĠBal anced +Ġoccup ies +en vironment +Ġneck lace +Ġsed an +F U +ĠBrav o +Ġab users +ĠAn ita +met adata +ĠG ithub +ait o +ĠF aster +ĠWass erman +ĠF lesh +Ġth orn +r arily +ĠMer ry +w ine +Ġpopul ace +ĠL ann +Ġrepair ing +Ġpsy che +Ġmod ulation +aw aru +âĢĭ âĢĭ +ari j +Ġdecor ations +Ġapolog ise +ĠG arg +app ly +Ġgive away +ĠFl an +ĠWy att +U ber +Ġauthor ised +ĠMor al +HAHA HAHA +activ ate +Ġtorped o +ĠF AR +Ġam assed +ĠA ram +ark in +ĠVict ims +st ab +Ġo m +ĠE CO +Ġopio ids +Ġpurpose ly +ĠV est +Ġer g +at an +ĠSur gery +Ġcorrect ing +ĠOrt iz +ĠBe et +Ġrev oke +Ġfre eway +ĠH iggins +F ail +ĠFar ms +ĠAT P +h ound +Ġp oking +ĠCommun ists +mon ster +iment ary +Ġunlock ing +Ġunf it +we ed +en ario +at ical +ĠEnlight enment +ĠN G +ĠComp ensation +de en +ĠWid ow +ĠCind y +ĠAfter wards +Ġ6 000 +ikh ail +ag ically +Ġrat ified +Ġcasual ty +H OME +p sey +f ee +Ġspark ling +Ġd é +Ġconcert ed +C atal +Ġcomp lying +ĠA res +ĠD ent +Sh ut +Ġsk im +ad minist +Ġhost ilities +ĠG ins +Ġ6 08 +Ġm uddy +ĠMc Int +ĠDec ay +5 25 +Ġconspic uous +ĠEx posure +Ġresc ind +Ġwear able +Ġ3 28 +our met +ah s +ĠRob ots +Ġe clips +inst ance +ĠRE PORT +ĠApp l +0 30 +ĠSk ies +01 00 +Ġfall acy +S ocket +ĠRece iver +Ġsol ves +ĠButter fly +ĠSho pping +ĠFI RE +65 4 +Med ic +Ġsing ers +ĠNeed less +'' '' +isher s +ĠD ive +58 8 +Ġselect ively +Ġcl umsy +88 9 +Ġpurch aser +ear ned +ard y +Ġbenef iting +eng lish +Ġyield ing +ĠP our +Ġspin ach +Ġdel ve +ĠC rom +6 10 +Ġexport ing +ĠMA KE +Ġ26 3 +Ġg rop +Ġenv oy +ĠInqu iry +ĠLu igi +d ry +ĠT uring +Thumbnail Image +ĠVar iety +Ġfac et +Ġfl uffy +Ġexcerpt s +Ġsh orth +ĠOl sen +CL UD +Ġrel iant +ĠUN C +T our +Ġbat hing +Comp any +Ġglobal ization +P red +ĠMalf oy +Ġh oc +j am +craft ed +ĠBond s +ĠKiss inger +Eng land +Ġorder ly +cat entry +Ġ26 1 +Ġexch anging +ĠInt ent +ĠAmend ments +D OM +Ġst out +³³³³³³³³ ³³³³³³³³ +ĠAir bus +Ġ27 8 +hy de +P oll +Item ThumbnailImage +Ġlooph oles +ĠPill ar +Ġexpl or +St retch +A part +Ġun married +Lim it +ĠTransform ers +Ġintellect ually +unct ure +18 00 +Ġd arn +B razil +Ġleft over +ber us +f red +Mine craft +3 26 +ĠForm s +Ġproof s +ĠDes igned +Ġindex es +ĠSupp ose +EM S +ĠL oving +ĠBon nie +im ating +OT US +Ġconduct or +Ġbehav ed +ĠF ren +Ġsy nerg +Ġmillenn ium +Ġcater ing +ĠL auder +W r +ĠY iannopoulos +ĠAT F +Ġensl aved +Ġawaken ed +D VD +ĠED ITION +ĠConc ert +ĠChall enger +ĠH aku +umer ic +Ġdep recated +ĠSH AR +4 12 +Ġdy stop +Ġtremb ling +Ġdread ed +ĠSp ac +p adding +Re pl +ĠG arrison +M ini +Ġun paralleled +am ar +URR ENT +w reck +c ertain +t al +ĠC LS +app ings +Ġsens ed +Ġf encing +ĠPas o +ĠDes k +Ġsc off +Ġcontem plate +ĠL iga +l iquid +75 7 +Ġapp rentice +ĠUCH IJ +5 70 +ĠTh ousand +ĠIll um +Ġchampion ed +ãĤ Į +Ġelect ors +Ġ3 98 +ĠH ancock +round ed +ĠJ OHN +Ġuns atisf +Ġqual ifier +ĠGad get +EN E +Ġdead liest +ĠPl ants +Ġ ions +Ġacc ents +Ġtwe aking +Ġsh aved +F REE +ĠCh aser +Again st +9 60 +Ġmeth amphetamine +Ġnormal ized +Ġ$ \ +ĠPre cision +ĠGu am +Ġch oked +ĠX II +ĠCast ing +Tor rent +Ġscal p +ĠJagu ar +w it +Ġsem ic +ix ie +ĠG ould +Ġconf ines +N usra +ĠL on +ĠJ ugg +y cle +ĠCod ec +E gypt +Ġrest rain +ĠAl iens +Ġch oking +ĠD unk +ĠBell a +ab c +Ġsl ang +Ġneuro trans +s av +Ġempower ment +â ĨĴ +Ġclim bers +ĠM im +ĠF ra +ros se +Cap ital +ĠCth ulhu +Inter face +Ġprof icient +ĠIN TO +Ġ3 18 +ront al +5 80 +ĠDes pair +K enn +Ġscrim mage +ĠCo at +as ions +Ġwall paper +ĠJ ol +Ġresurg ence +Ġant iv +ĠB alls +² ¾ +Ġbuff ers +Ġsub system +ĠSt ellar +ĠL ung +A IDS +Ġerad icate +Ġblat antly +Ġbehav es +ĠN un +Ġant ics +ex port +DE V +w b +Ġph p +ĠInteg rity +Ġexplore r +Ġrev olving +auth ored +g ans +Ġbas k +Ġas ynchronous +å į +TH ING +69 8 +G ene +ĠR acer +ĠN ico +iss ued +Ġser mon +p ossibly +Ġsize of +Ġentrepreneur ial +ox in +ĠMin erva +Ġpl atoon +n os +ri ks +A UT +ĠAval anche +ĠDes c +ij 士 +ĠP oc +Ġconf erred +Î » +Ġpat ched +F BI +66 2 +Ġfract ures +Ġdetect s +Ġded icate +Ġconstitu ent +Ġcos mos +W T +Ġswe ats +Ġspr ung +b ara +s olid +Ġuns us +Ġbul ky +ĠPhilipp e +ĠFen rir +Ġtherap ists +ore al +^^ ^^ +Ġtotal ed +Ġboo ze +ĠR PC +Prosecut ors +Ġdis eng +ĠSh ared +Ġmotor cycles +Ġinvent ions +Ġlett uce +ĠMer ge +ĠJ C +Ġspiritual ity +ĠWAR NING +Ġunl ucky +ĠT ess +Ġtong ues +ĠD UI +T umblr +Ġle ans +Ġinv aders +Ġcan opy +ĠHur ricanes +ĠB ret +ĠAP PLIC +id ine +ick le +Reg arding +Ġve ggies +Ġe jac +ju ven +F ish +D EM +ĠD ino +Th row +ĠCheck ing +be ard +( & +Ġj ails +Ġh r +trans fer +iv ating +Ġfle ets +ĠIm ag +ĠMc Donnell +Ġsnipp et +Is a +ĠCh att +ĠSt ain +ĠSet FontSize +ĠO y +ĠMathemat ics +49 4 +Ġelectro ly +ĠG ott +ĠBr as +B OOK +ĠF inger +d ump +Ġmut ants +Ġrent als +Ġinter tw +Ġc reek +ail a +Bro ther +ĠDisc ord +pe e +raw ler +Ġcar p +Ġ27 9 +ãĤ· ãĥ£ +rel ations +Ġcontr asts +Col umn +Ġrec onnaissance +Ġun know +Ġl ooting +Ġregul ates +Ġopt imum +ĠChero kee +ĠA ry +Lat est +Ġroad side +Ġd anced +ĠUnic orn +A cknowled +Ġuncont roll +ĠM US +at io +ch ance +ha ven +VAL UE +Ġfavour ites +Ġceremon ial +b inary +pe ed +wood s +EM P +Ġv ascular +Ġcontempl ated +Ġbar ren +ĠL IST +Y ellow +ospons ors +Ġwhisk y +ĠM amm +ĠDeV os +min imum +H ung +44 2 +P ic +ĠSnap dragon +77 6 +Ġcar ving +Ġund ecided +Ġadvantage ous +Ġpal ms +ĠA Q +Ġst arch +L oop +Ġpadd le +Ġfl aming +ĠHor izons +An imation +bo ost +Ġprob abilities +ĠM ish +Ġex odus +ĠEditor ial +Ġfung us +Ġdissent ing +ĠDel icious +rog ram +ĠD yn +d isk +t om +Ġfab rics +ĠC ove +ĠB ans +Ġsoft en +ĠCON S +Ġin eligible +Ġestim ating +ĠLex ington +pract ice +of i +Ġshe dding +ĠN ope +Ġbreat hed +ĠCorinth ians +y ne +ek i +B ull +Ġatt aching +reens hots +Ġanaly se +ĠK appa +Ġuns ustainable +Ġinter pol +ank y +he mer +Ġprot agonists +Ġform atted +ĠBry ce +ĠAch illes +ĠAb edin +sh ock +Ġb um +b os +qu a +ĠW arn +q t +ĠDi abetes +8 64 +ĠIn visible +Ġvan ish +Ġtrans mitting +Ġmur ky +ĠFe i +Ġawa ited +ĠJur assic +umm ies +Ġmen acing +g all +C ath +B uilt +ild o +ĠV otes +Ġon t +Ġmun itions +ĠFre em +ÃŃ n +Ġdec ency +lo pp +ie ved +ĠG ord +Ġun thinkable +ĠNews week +Ġ3 21 +He at +Ġpresent er +ji ang +Ġpl ank +ĠAval on +Ġben z +ĠR out +Ġslam ming +ĠD ai +ou ter +ĠCook ie +ĠAlic ia +ge y +Ġvan ity +Ġow l +á µ +t ested +ĠAw akens +Ġcan v +Ġblind ly +ĠRid ley +ĠEm ails +Requ ires +ĠSer bian +ograp hed +if rame +eter ia +Ġaltern ating +qu iet +Ġsoc iology +ĠUn lock +ĠCommun ism +Ġo ps +Ġatt ribution +Ġab duction +ĠAb ram +Ġsidel ined +ĠB OOK +Ġref ining +ĠFe eling +ĠOs lo +ĠPru itt +r ack +ang ible +Ġcaut iously +ĠM ARK +eed s +M ouse +ĠStep h +ĠP air +S ab +99 7 +ĠBa al +B ec +Ġcomm a +ĠP all +ĠG ael +Ġmisunder stand +ĠP esh +Order able +Ġdis mal +ĠSh iny +% " +Ġreal istically +Ġpat io +ĠG w +ĠVirt ue +Ġexhaust ing +wh atever +oph ys +y ip +4 18 +Ad just +ĠWa iting +ess on +ĠMaz da +ĠDo zens +Ġstream lined +Ġincompet ence +ĠM eth +Ġeth os +ON ES +Ġincent iv +Ġgr itty +ĠBut cher +Head er +Ġexp onential +Ã Ł +Ġcorrel ate +Ġcons ensual +s ounding +R ing +Orig in +Ġcon clusive +fe et +ac ly +ĠF ernandez +Buy able +Ġd ucks +aunt lets +Ġel ong +Ġ28 6 +Ġsim ul +G as +ĠK irst +Ġprot r +ĠRob o +ĠAo E +op ol +Ġpsych ologically +sp in +ilater ally +ĠCon rad +W ave +44 1 +ĠAd vertisement +ĠHarm on +ĠOri ental +is Special +Ġpresum ptive +Ġw il +ĠK ier +ne a +Ġp pm +Ġhar bour +ĠW ired +comp any +Ġcor oner +atur days +ĠP roud +ĠN EXT +ĠFl ake +val ued +ce iver +Ġfra ught +Ġc asing +Ġrun away +Ġg in +ĠLaure nt +ĠHar lem +ĠCur iosity +qu ished +Ġneuro science +ĠH ulu +Ġborrow er +Ġpetition er +ĠCo oldown +W ARD +Ġinv oking +conf idence +For ward +Ġst s +pop ulation +Delivery Date +Fil m +ĠC ov +quick Ship +quickShip Available +prim ary +isSpecial Orderable +inventory Quantity +channel Availability +BO X +ĠMulti player +ĠJen ner +77 8 +ĠM d +Ġ~ /. +M N +Ġchild ish +Ġantioxid ant +ĠChrom ebook +Ġ27 4 +Ġscreen play +Ġadvent urous +ĠRelations hip +respons ive +ming ton +Ġcorner stone +ĠF ey +F IR +Ġrook ies +ĠF eaturing +Ġorig inate +Ġelectro des +ant es +Ġscript ures +Ġgl ued +Ġdiscont ent +Ġaff licted +lay out +B rave +Ġm osa +ĠQuant ity +ĠH ik +w inner +H ours +Ġent ail +ĠCell s +olog ue +Ġv il +Ġpre acher +Ġdecor ative +d ifferent +Ġprejud ices +ĠSm oking +ĠNotting ham +so Type +Ġrhyth ms +ĠAl ph +bl ast +Ste el +ĠDaniel le +Ġstr ife +Ġrem atch +so DeliveryDate +ĠF ork +t rip +ol ulu +hes es +C G +ĠPOLIT ICO +ost a +ĠDr ift +é¾įå ¥ +é¾įå¥ ij士 +Ġvet ting +ĠJin ping +ĠRec ession +Min or +ĠF raud +enf ranch +Ġconven ed +ĠNA ACP +ĠMill ions +ĠFarm ing +ĠW oo +ĠFl are +rit o +imm igrant +Ġvac ancy +ĠHE AD +ĠV aj +eg al +ĠV igil +Stud y +Ġru ining +Ġr acks +Ġhe ater +ĠRand olph +ĠBr ush +ĠT ir +Ø ¨ +Ġc ov +% ] +Ġrecount s +ĠO PT +ĠM elt +Ġtr uce +Ġcas inos +Ġcrus ade +Ġcarn age +Ġstri pe +ĠK yl +Text ures +Ġ6 98 +Ġpro clamation +Ġgood ies +Ġ........ .. +pro claimed +P olit +Ġtop ical +Ġspecial ize +ĠA min +g m +Ġanch ored +Ġbear ings +s ample +ĠHigh land +ĠAut ism +Ġmerc enary +Ġinterview er +L ER +ĠSom ers +Ġembry o +ĠAss y +Ġ28 1 +ĠEd iting +ĠCh osen +6 60 +Ġp ci +ĠThunder bolt +BI LL +Ġchuck led +jri wal +h of +Ġearth ly +() { +ind ependence +Ġdisp ers +ĠV endor +ĠG areth +Ġp als +P enn +ĠSub mit +ic um +Th u +Ġcl andestine +Ġcann ibal +ĠCl erk +E Stream +gal itarian +âĻ ¥ +g ew +Ġhor rend +ĠL ov +ĠRe action +ocr in +Class ic +Ġecho ing +Ġdiscl osing +ĠIns ight +og un +ĠInc arn +upload s +pp erc +guy en +Ġ19 01 +ĠB ars +68 7 +Ġb ribes +ĠFres no +ur at +ĠRe ese +Ġintr usive +Ġgri pping +ĠBlue print +ĠR asm +un ia +man aged +ĠHeb do +Ġ3 45 +Ġdec oding +Ġpo ets +Ġj aws +ĠF IGHT +am eless +ĠMead ows +ĠHar baugh +Inter view +ĠH osp +ĠB RA +Ġdelet ion +m ob +W alker +ĠMoon light +ĠJ ed +ĠSoph ia +Ġus ur +Ġfortun ately +ĠPut ting +ĠF old +Ġsan itation +Ġpart isans +IS ON +B ow +ĠCON C +ĠRed uced +ĠS utton +Ġtouch screen +Ġembry os +âĢ¢âĢ¢ âĢ¢âĢ¢ +ĠK rug +com bat +ĠPet roleum +Ġam d +ĠCos mos +Ġpresc ribing +Ġconform ity +ours es +Ġplent iful +Ġdis illusion +ĠEc ology +itt al +Ġf anc +Ġassass inated +regn ancy +Ġperenn ial +ĠBul lets +Ġst ale +Ġc ached +ĠJud ith +ĠDise ases +All en +Ġl as +Ġsh ards +ĠSu arez +ĠFriend ship +inter face +ĠSupp orters +add ons +46 2 +ĠIm ran +ĠW im +Ġnew found +ĠM b +An imal +Ġd arling +and e +Ġrh y +ĠTw isted +pos al +yn ski +Var ious +× ľ +ĠK iw +uy omi +Ġwell being +ĠL au +an os +Ġunm ist +Ġmac OS +Ġrest room +ĠOl iv +ĠAir ways +Ġtimet able +9 80 +Ġrad ios +v oy +ias co +Ġcloud y +ĠDraw ing +Any thing +Sy ria +ĠH ert +st aking +Ġun checked +Ġb razen +ĠN RS +69 7 +onom ic +est ablish +Ġl eng +Ġdi agonal +ĠF ior +L air +ĠSt ard +Ġdef icient +jo ining +be am +Ġomn ip +Ġbl ender +Ġsun rise +Mo ore +ĠF ault +ĠCost ume +ĠM ub +Fl ags +an se +Ġpay out +ĠGovern ors +ĠD illon +ĠBan ana +N ar +Ġtra iled +Ġimperial ist +um ann +ats uki +4 35 +ĠRoad s +Ġsl ur +ĠIde ally +Ġt renches +C trl +Ġmir rored +ĠZ el +ĠC rest +Comp at +ĠRoll s +sc rib +ĠTra ils +omet ers +w inter +Ġimm ortality +il ated +Ġcontrad icts +un iversal +ill ions +ĠM ama +opt im +AT URE +Ġge o +et ter +ĠCar lo +4 24 +Ġcanon ical +ĠStrongh old +n ear +Ġperf ume +Ġorche stra +od iac +Ġup he +Ġreign ing +vers ive +Ġc aucuses +ĠD EM +Ġinsult ed +Ġ---- -- +ĠCr ush +Ġroot ing +ĠWra ith +Ġwh ore +Ġto fu +C md +ĠB ree +Ġ$ _ +Ġr ive +ĠAd vertising +Ġw att +ĠH O +Ġpersu asive +ĠParam eters +Ġobserv ational +ĠN CT +ĠMo j +ĠSal on +Ġtr unc +Ġexqu isite +ĠMar a +Ġpo op +ĠAN N +Ex c +ĠWonder ful +ĠT aco +Ġhome owner +ĠSmith sonian +orpor ated +mm mm +Ġlo af +ĠYam ato +ĠInd o +Ġcl inging +á s +Ġimm utable +h ub +Or ange +Ġfingert ips +ĠWood en +ĠK idd +ĠJ PM +ĠDam n +C ow +c odes +48 2 +Ġiniti ating +ĠEl k +ĠCut ting +Ġabsent ee +ĠV ance +ĠLil ith +G UI +Ġobsc ured +Ġdwar ves +ĠCh op +ĠB oko +Val ues +Ġmult imedia +Ġbrew ed +Reg ular +CRIP TION +ĠMort al +Ġa pex +Ġtravel er +Ġbo ils +Ġspray ing +Rep resent +ĠStars hip +4 28 +Ġdisappro val +Ġshadow y +Ġlament ed +ĠRe place +ĠFran ç +67 7 +d or +Ġunst oppable +Ġcoh orts +gy n +ĠClass ics +ĠAm ph +Ġsl uggish +ĠAdd iction +ĠPad res +Ġins cription +Ġin human +min us +ĠJere miah +at ars +Ter ror +ĠT os +ĠSh arma +ast a +c atch +Ġpl umbing +ĠTim bers +Sh ar +H al +ĠO sc +Ġcou pling +hum ans +Ġsp onge +Ġid ols +ĠSp a +ĠAdv ocate +ĠBe ats +lu a +Ġtick ing +Ġload er +ĠG ron +8 10 +Ġstim ulated +Ġside bar +ĠManufact urer +ore And +19 73 +Ġpra ises +ĠFl ores +dis able +ĠElect rical +ra ise +E th +Ġmigr ated +Ġlect urer +K ids +ĠCa vern +Ġk ettle +Ġgly c +ĠMand ela +ĠF ully +å§ « +FIN EST +Ġsquee zing +ĠRy der +amp oo +oreAnd Online +Inst oreAndOnline +Buyable InstoreAndOnline +Ġcommem orate +ĠRamp age +Aust in +ĠSh roud +ĠRu ins +9 15 +ĠK H +Ġwater front +ĠE SC +b aby +ĠC out +ĠEm blem +Ġequival ents +49 2 +Un ique +ĠNiet zsche +brow ser +Ġim itation +ĠWere wolf +ĠKir in +ac as +' ," +Ġà ¾ +Review ed +Ġc unt +Ġvo ic +ĠLen ovo +Ġbond ed +48 1 +Ġinhib itors +Ġendeav ors +ĠHav ana +ĠSt out +ĠJ olly +A ctor +*/ ( +Ġoccur rences +ĠT ens +Incre ased +ĠACT ION +Ġ ãĢĮ +ĠRank ings +ĠB reat +Ġ30 9 +D ou +Ġimpact ing +ĠDuc hess +pre fix +Q B +Ġsummon ing +Ġbest owed +ĠKe pler +ĠPOW ER +c ube +ĠK its +ĠG rip +Ġop ium +Ġrep utable +t oc +ich ael +ĠR ipple +Ġcaf é +ĠZ oom +ĠBur ma +Ġwa ive +Ġst alls +Ġdem eanor +inc erity +Ġfluor ide +ĠSH OULD +Par is +Ġlong ing +Ġpl at +Ġgross ly +Ġbull s +Ġshowc asing +ex pected +ĠG addafi +engine ering +Re peat +ĠK ut +Ġconce ivable +Ġtrim med +osc ope +ĠCand idate +ĠT ears +rol og +Lew is +S UP +Ġroad map +Ġsal iva +Ġtrump et +Jim my +Ġmirac ulous +Ġcolon ization +Ġam put +ĠGN OME +ate ch +D ifferent +ĠE LE +ĠGovern ments +ĠA head +ãħĭ ãħĭ +word press +L IB +ĠIn clude +ĠDor othy +0 45 +ĠColomb ian +Ġle ased +88 4 +Ġde grading +ĠDa isy +i ations +Ġbapt ized +Ġsurn ame +co x +Ġblink ed +ãĥ ¢ +Ġpoll en +Ġder mat +Ġre gex +ĠNich olson +ĠE ater +ç ľ +rad or +Ġnarrow er +Ġhur ricanes +Ġhalluc inations +r idden +ISS ION +ĠFire fly +Ġattain ment +Ġnom inate +Ġav ocado +ĠM eredith +Ġt s +Ġreve rence +Ġe uph +Ġcr ates +ĠT EXT +Ġ4 43 +Ġ3 19 +J SON +iqu ette +Ġshort stop +ic key +Ġpro pelled +Ġap i +ĠTh ieves +77 9 +Ġovers aw +Ġcol i +ĠNic ola +Ġover cl +ik awa +ĠC yr +Ġ38 4 +78 9 +ĠAll ows +10 27 +Det roit +TR Y +set up +ĠSocial ism +Sov iet +s usp +ĠAP R +ĠShut down +Ġal uminium +zb ek +ĠL over +GGGG GGGG +Ġdemocr acies +Ġ19 08 +ĠMer rill +ĠFranco is +gd ala +Ġtraff ickers +ĠT il +ĠGo at +Ġsp ed +ĠRes erv +Ġpro d +55 2 +Ġc ac +ĠUn iv +ĠSch we +Ġsw irling +ĠWild erness +ĠEgg s +Ġsadd ened +Ġarch aic +H yd +Ġexcess ively +B RE +Ġaer ospace +ĠVo ices +Cra ig +Ġign ited +In itially +ĠMc A +Ġhand set +Ġreform ing +Ġfrust rations +ĠDead pool +ĠBel ichick +ract or +ĠRagnar ok +ĠD rupal +ĠApp roximately +19 20 +ĠHub ble +arm or +ĠSar as +ĠJon as +Ġnostalg ic +Ġfeas ibility +Sah aran +Ġorb iting +Ġ9 70 +R u +Ġsh in +ĠInvestig ators +Ġinconsist encies +ĠP AN +B G +Ġgraz ing +Ġdetect ors +ĠStart up +ĠFun ny +ĠNa omi +Consider ing +Ġh og +ut f +ce mic +Ġfort ified +ĠFun ctions +Ġcod ec +nut rition +H at +" ! +micro soft +55 8 +ĠTh in +ĠA CE +Al ias +ĠO PS +p apers +P K +ãĢ İ +Ġimpro bable +N orthern +equ al +Ġlook out +Ġty res +ĠMod ified +ĠK op +Abs olutely +Ġbuild up +sil ver +Ġaud i +Ġgro tesque +ĠSab er +ĠPres byter +ON Y +Ġglac iers +ĠSho als +ĠK ass +ĠH RC +ĠNic ol +ĠL unch +ĠF oss +âĸ Ĵ +AD RA +ĠOne Plus +o ing +ground s +Ġincident al +Ġdatas ets +68 9 +ĠClarks on +Ġassemb ling +ĠCorrect ions +Ġdrink ers +Ġqual ifiers +Ġle ash +Ġunf ounded +ĠH undred +Ġkick off +T i +Ġrecon cil +ĠGr ants +ĠCompl iance +ĠDexter ity +Ġ19 06 +w arn +D allas +Max imum +n ard +av ia +be aut +ens itivity +tr ace +Ġpione ers +ĠF ract +ãĢ ı +Ġpre cept +Ġgloss y +ĠI EEE +Ac ross +Ġ6 80 +S leep +che on +Ġsatir ical +ĠMin otaur +ĠCla ude +Ġr é +ape go +Ġcar rot +ĠSem in +ino a +Ġz o +Ind ependent +Ġdiagn oses +ĠC ue +M AR +Ġrend ition +ĠK ik +Ġpath ology +Ġselect s +Link edIn +Ġass ay +ĠD res +Ġtext ual +post ed +IT AL +ĠM aul +N eal +Ġinter connected +Ġerr atic +ĠVir us +Ġ5 30 +Ġenvironmental ists +ĠP helps +Ġeng agements +ĠIN ST +Ġeconom ical +nox ious +Ġg earing +izz y +Ġfavor ably +ĠMcG ill +T erm +Ġh anged +Ġball park +ĠRe yes +Ġbe ware +ĠP sal +ĠMass acre +q i +Ġin accessible +acly sm +Ġfr ay +ill ac +Ġbitter ly +ĠCert ification +Mich igan +Ġir respective +al ore +Em pty +Ġendorse ments +Ġund et +f g +equ ipped +Ġmerc iless +ĠC ust +Ġimm ature +Ġvou cher +ĠBlack well +Ñ ı +h awk +dis ciplinary +ile e +ĠMak oto +ĠD ude +ãĥĩ ãĤ£ +Y ears +Ġin ver +Ġsh aman +ĠY ong +ip el +ell en +ĠCath y +br ids +Ġs arc +65 1 +N ear +Ġground work +Ġam az +Ġ4 15 +ĠHunting ton +hew s +ĠB ung +Ġarbit rarily +ĠW it +ĠAl berto +Ġdis qualified +best os +46 1 +Ġp c +Ġ28 4 +ro bat +Rob in +Ġh ugs +ĠTrans ition +ĠOcc asionally +Ġ3 26 +ĠWh ilst +ĠLe y +Ġspaces hip +cs v +Ġun successfully +ĠA u +le ck +ĠWing ed +ĠGrizz lies +. � +Ġne arer +ĠSorce ress +ĠInd igo +El se +8 40 +let es +Co ach +Ġup bringing +ĠK es +Ġseparat ist +Ġrac ists +Ġch ained +Ġabst inence +lear ning +Ġrein stated +Ġsymm etry +Ġremind ers +ĠChe vy +Ġm ont +Ġexempl ary +ĠT OR +Z X +Ġqual itative +ĠSt amp +ĠSav annah +ĠRoss i +Ġp aed +Ġdispens aries +ĠWall s +ĠCh ronic +Ġcompliment ary +ĠBeir ut +Ġ+ --- +igs list +Ġcrypt ographic +mas ters +ĠCap itals +Ġmax imal +Ġent ropy +Point s +Ġcombat ants +l ip +ĠGl ob +ĠB MC +ph ase +th ank +HT TP +Ġcomm uter +Ġ\( \ +.. / +ĠReg ener +ĠDO I +ĠActiv ision +Ġsl it +os al +RE M +Ġch ants +Y u +Ke ys +Bre xit +ĠFor ced +Ari zona +Ġsquad ron +IS O +ĠMal one +Ġ3 38 +Ġcontrast ing +Ġt idal +Ġlib el +Ġimpl anted +Ġupro ar +ĠC ater +Ġpropos itions +M anchester +ĠEuro s +it amin +G il +ĠEl ven +ĠSe ek +ĠB ai +Ġredevelop ment +ĠTown s +ĠL ub +! ", +al on +K rist +Ġmeas urable +Ġimagin able +Ġapost les +Y N +7 60 +Ġster oid +Ġspecific ity +ĠL ocated +ĠBeck er +ĠE du +ĠDiet ary +uts ch +ĠMar ilyn +Ġbl ister +ĠM EP +ĠK oz +ĠC MS +y ahoo +ĠCar ney +Ġbo asting +ĠC aleb +By te +read s +ad en +Pro blem +ĠWood ward +S we +S up +ĠK GB +Set up +Ġtac it +Ġret ribution +Ġd ues +ĠM ü +. ? +ä¸ Ń +p ots +Ġcame o +ĠP AL +educ ation +A my +like ly +g ling +Ġconstitution ally +ĠHam m +ĠSpe ak +Ġwid gets +br ate +Ġcra ppy +ĠI ter +Ġanticip ating +ĠB out +P ixel +ĠY ep +ĠLaur ie +Ġh ut +Ġbullet in +ĠSal vation +Ġch ats +ear able +Honest ly +AL TH +onse qu +c ult +isco very +ovy ch +Ġse lves +ĠSat oshi +S ounds +Ġconver gence +ĠRosen berg +19 74 +Ġnas al +Ġfull est +Ġfer ocious +x us +ist e +AM S +Ġlobb ied +Ġso othing +ĠGun n +t oday +0 24 +Ġinspir ational +ĠN BN +p b +g ewater +or ah +all owed +ĠCol iseum +Ġspecial izing +Ġinsane ly +ĠT ape +del ay +Ġt arn +ĠP ound +Ġmel anch +Ġdeploy ments +il and +Ġless en +Ġfur ry +ĠUE FA +Ġblood shed +ĠMe ier +ither ing +Ġhe irs +ĠJ aw +ax ter +ĠPublic ations +Ġal ters +int ention +ĠWinc hester +d etermination +ĠLif etime +th in +Mon ster +7 80 +Ġapprox imation +Ġsuper markets +ĠSecond s +or os +h uge +Ġb ribe +ĠLIM ITED +un ed +Ġmis interpret +ĠIn jury +Ġ3 67 +Ġthreshold s +ĠCarn ival +Ġgastro intestinal +Ġguid eline +Ġde ceived +f eatures +Ġpurported ly +ĠRon nie +ĠNew t +Ġsp acious +as us +Ġsuperhero es +ĠCyn thia +le gged +k amp +ch io +Ġth umbnail +ĠShir ley +ill ation +Ġshe ds +ĠZ y +E PA +Ġdam s +Ġy awn +n ah +ĠPe ggy +ĠE rie +ĠJu ventus +ĠF ountain +r x +don ald +al bum +ĠComp rehensive +Ġc aching +ĠU z +ulner ability +ĠPrinc iple +ĠJ ian +ing ers +cast s +ĠOs iris +ch art +t ile +ĠTiff any +ĠPatt on +ĠWh ip +Ġovers ized +J e +ĠCind erella +ĠB orders +ĠDa esh +M ah +Ġdog ma +Ġcommun ists +v u +Coun cil +Ġfresh water +Ġw ounding +Ġdeb acle +Ġyoung ster +Ġthread ed +ĠB ots +ĠSav ings +ãģ Ĥ +ol ing +oh o +Ġillum ination +M RI +Ġlo osen +tr ump +ag ency +ur ion +Ġmoment arily +ĠCh un +ĠBud apest +ĠAl ley +D isk +Ġaston ished +ĠCon quer +ĠAccount ing +h aving +ĠWe in +ĠAl right +Ġrev olver +Ġdel usion +Ġrelic s +Ġad herent +qu ant +Ġhand made +or io +Ġcomb ating +c oded +Ġquad ru +re th +N ik +ĠTrib al +ĠMyster ious +Ġin hal +ĠWin ning +ĠClass ification +ch anged +Ġun ab +Ġsc orn +icip ated +w l +ond uctor +Ġrein forcing +ĠChild hood +an ova +Ġadventure r +Ġdoctor al +ĠStrateg ies +Ġengulf ed +ĠEnc ounter +Ġl ashes +Crit ical +ric ular +ĠU TF +oci ation +check ing +ĠConsult ing +Run time +per iod +ĠAs gard +Ġdist illed +ĠPas adena +ĠD ying +ĠCOUN TY +Ġgran ite +Ġsm ack +Ġparach ute +ĠS UR +Virgin ia +ĠF urious +78 7 +ĠO kin +Ġcam el +ĠM bps +19 72 +ĠCh ao +ĠC yan +j oice +ef er +ĠW rap +ĠDeb ate +S eg +Ġfore arm +ĠIgn ore +Ġtim estamp +Ġprob ing +ĠNo on +ĠGra il +f en +Ġdorm ant +ĠFirst ly +ĠE ighth +ĠH UN +ĠDes ire +or as +Girl s +ĠDes mond +z ar +am ines +O AD +exec ute +Ġbo obs +ĠAT L +_ ( +Chel sea +Ġmasturb ation +ĠCo C +Ġdestroy er +ĠCh omsky +Ġsc atter +ĠAss ets +79 6 +ĠC argo +Ġrecept ive +ĠSc ope +Ġmarket ers +Ġlaun chers +Ġax le +ĠSE A +se q +ĠM off +f inding +ĠGib bs +Georg ia +extreme ly +N J +Ġlab orers +st als +Ġmed iation +ĠH edge +at own +Ġi od +des pite +v ill +J ane +ex istence +Ġcoinc ided +ĠUt ilities +ĠChe ap +Ġlog istical +Ġcul mination +ĠNic otine +p ak +F older +Ġrod ents +st uff +Ġlaw fully +Ġreper to +io ch +j j +Dial ogue +HH HH +lic tion +Look s +Ġ29 7 +Ġtur rets +ĠAb andon +Ġinc ess +ĠTraff ord +Ġcur led +Ġprefer ring +Ġprivat ization +Ġir resist +ĠP anda +ĠSh ake +ĠMc Gr +ãĥ Ħ +und ers +Ġdiscrim inated +Ġbart ender +I LE +Atl antic +Ġprop ensity +ĠW iz +ĠG im +con ference +Ġrein forces +G h +w agon +Ġe erie +F al +Ġhug ged +rac ist +R IC +F u +Ġf iller +ĠSt ub +Ġeng raved +ĠWrest le +Ġimagin ative +ĠPe er +ĠFact ors +an us +ĠDrac ula +mon itor +Ġrou ters +ib ia +ĠBoo lean +end ale +ĠSl aughter +ĠSh ack +R FC +ĠSpiel berg +S ax +ĠPH OTO +ĠCl over +ĠR ae +Dep ending +ĠMem or +ar am +Ġpier ced +Ġcur tains +v ale +ĠInqu isition +ĠP oke +Ġforecast ing +Ġcompl ains +S ense +ĠHer mes +isc overed +Ġb ible +ĠMor ph +Ġg erm +78 5 +D ON +Ġcon gen +Ġcr ane +ĠD PR +Ġrespect fully +R oom +ĠN aw +ĠDal ai +re ason +ĠAng us +Educ ation +ĠTitan ic +Ë ľ +Ġo val +un ited +Ġthird s +Ġmoist ur +ĠC PC +M iami +Ġtent acles +ĠPol aris +ex c +ex clusive +ĠPra irie +Ġcol ossal +ĠBl end +sur prisingly +ÃŃ s +Ġindo ctr +Ġbas al +ĠMP EG +und o +Spl it +Develop ment +Ġlan tern +19 71 +Ġprov ocation +Ġang uish +ĠB ind +ĠLe ia +duc ers +ipp y +conserv ancy +Ġinitial ize +ĠTw ice +ĠSu k +Ġpred ic +Ġdi ploma +Ġsoc iop +Ing redients +Ġhamm ered +ĠIr ma +Q aida +Ġglim ps +ĠB ian +Ġst acking +Ġf end +gov track +Ġun n +dem ocratic +ig ree +Ġ5 80 +Ġ29 4 +Ġstraw berry +ID ER +Ġcher ished +ĠH ots +Ġinfer red +Ġ8 08 +ĠS ocrates +O regon +ĠR oses +ĠFO IA +Ġins ensitive +Ġ40 8 +Recomm end +ĠSh ine +Ġpain staking +UG E +ĠHell er +ĠEnter prises +I OR +ad j +N RS +L G +Ġalien ated +Ġacknowled gement +ĠA UD +ĠRen eg +Ġvou chers +Ġ9 60 +Ġm oot +ĠDim ensions +Ġc abbage +B right +g at +ĠK lu +Ġlat ent +Ġz e +ĠM eng +Ġdis perse +Ġpand emonium +H Q +Ġvirt uous +ĠLoc ations +ee per +prov ided +Ġse ams +ĠW T +iz o +PR OV +Ġtit anium +Ġrecol lection +Ġcr an +Ġ7 80 +ĠN F +49 1 +64 2 +p acking +59 8 +text ure +Sp ider +fre edom +cipl ed +ĠTAM ADRA +âĻ ¦ +aut hent +ĠW ANT +r ified +Ġr ites +Ġuter us +k iss +Ġâī ¤ +Ġsk illet +Ġdis enfranch +ĠGa al +Comp an +Ġage ing +gu ide +B alt +Ġiter ator +Ġdiscretion ary +t ips +Ġprim ates +ĠTechn ique +ĠPay ments +az el +ĠR OCK +stant ial +0 60 +Ġd mg +ĠJack ets +ĠPlay off +Ġnurs ery +ĠSy mb +art on +Ġannex ation +Color ado +Ġco ils +ĠSh oes +âĦ¢ : +ĠRo z +COM PLE +ĠEve rest +ĠTri umph +J oy +G rid +à ¼ +process or +ĠPros per +ĠSever us +ĠSelect ed +r g +ĠTay yip +St ra +Ġski ing +Ġ? ) +Ġpe g +Tes la +Ġtime frame +Ġmaster mind +ĠN B +scient ific +ĠSh it +gener ic +IN TER +N UM +Ġst roll +ĠEn ix +ĠM MR +ĠE MS +m ovie +Ĥ ª +Ġminim izing +idd ling +Ġilleg itimate +Ġprot otyp +Ġpremature ly +Ġmanual s +obb ies +ĠCass idy +D EC +des ktop +Ġaer os +Ġscreen ings +Ġdeb ilitating +ĠGr ind +nature conservancy +Ġf ades +ter mination +assets adobe +F actor +Ġdefinitive ly +P oké +ap ult +ĠLaf ayette +C orn +ĠCor al +Ġstagn ant +T ue +Ġdissatisf action +G ender +Ġkid neys +ĠG ow +ĠDef eat +ĠAsh ton +Ġcart els +Ġfore closure +ĠExpl ore +stre ngth +ot in +Ġveterin arian +Ġf umble +Ġpar ap +ĠSt rait +r ils +Ġpr ick +ĠBerm uda +ĠAm munition +skin ned +Ġab ound +ĠB raz +Ġshar per +ĠAsc ension +Ġ9 78 +Ġpreview s +Ġcommun ion +ĠX Y +Ġph ony +Ġnewcom er +Ġ3 32 +." ," +Ġredist ribution +Prot ect +ĠSo f +K al +Ġlip stick +w orst +Ġtang led +Ġretrospect ive +int eger +Ġvolunte ering +Ġ19 07 +Ġ -------------------- +ic hen +Ġunve iling +Ġsen seless +Ġfisher ies +\ - +Ġh inges +Ġcalcul us +My th +Ġund efeated +Ġoptim izations +Ġdep ress +Ġbill board +ĠY ad +ĠPy ramid +Is n +I de +Ġleg ion +ĠK ramer +ent anyl +Ġpenet rating +ĠHaw th +ĠPR ODUCT +ĠGer ard +ĠP act +ĠIn cluding +ĠEl ias +ĠEl aine +vis ual +Ġhum ming +Ġcond esc +ĠF asc +ä¸ Ĭ +Ġe galitarian +Ġdev s +ĠD ahl +O ps +D H +ĠB ounce +id ated +ald o +Ġrepublic an +Ġh amb +ĠS ett +ograph ies +CH APTER +Ġtrans sexual +Ġsky rocket +ans wer +Ġmark up +Ø ª +Ġhero ine +Comp are +ĠT av +Be ast +Ġsuccess ors +Ġna ïve +ĠBuck ley +st ress +me at +Ġdownload able +Ġindex ed +Ġsc aff +ĠL ump +ĠHom o +Stud io +In sp +Ġr acked +far ious +ĠPet ty +Ex ternal +Ġ19 09 +W ars +com mit +put ers +Ġun ob +ĠEr r +ĠE G +ĠAl am +ĠSiber ia +ĠAtmosp heric +IS TER +ĠSatan ic +trans lation +ĠL oud +tra umatic +l ique +Ġreson ate +ĠWel ch +Ġspark ing +ĠT OM +t one +Ġout l +Ġhandc uffed +ĠSer ie +8 01 +Ġland marks +ĠRee ves +Ġsoft ened +Ġdazz ling +ĠW anted +month s +Mag ikarp +Ġunt reated +ĠBed ford +M i +ĠDynam o +O re +79 5 +Ġwrong ful +Ġl ured +Ġcort isol +Ġve x +d rawn +ile t +Download ha +ĠF action +Ġlab yrinth +Ġhij acked +w aters +er ick +Ġsuper iors +ĠRow ling +ĠGu inness +Ġt d +99 2 +Ġune arthed +Ġcentr if +Ġsham eless +P od +ĠF ib +Ġ icing +Ġpredict or +Ġ29 2 +fore station +con struct +C and +@ # +Ġag itated +Ġre pr +OV A +Ġkn itting +ĠLim a +Ġf odder +68 4 +ĠPerson a +k l +7 01 +Ġbreak up +á ¸ +Ġapp alled +Ġantidepress ants +ĠSus sex +Har ris +ĠTher mal +ee ee +U pload +Ġg ulf +Ġdoor step +ĠSh ank +L U +ĠM EN +ĠP ond +s orry +Ġmis fortune +n ance +Ġb ona +M ut +Ġde graded +ĠL OG +ĠN ess +an imal +Ġa version +und own +Ġsupplement ed +ĠC ups +Ġ50 4 +Ġdep rive +ĠSpark le +Å Ĥ +ĠMed itation +auth ors +ĠSab an +ĠN aked +air d +ĠMand arin +ĠScript ures +ĠPerson nel +ĠMahar ashtra +Ġ19 03 +ĠP ai +ĠMir age +omb at +Access ory +Ġfrag mented +T ogether +Ġbelie vable +ĠGl adiator +al igned +ĠSl ug +M AT +Ġconvert ible +ĠBour bon +amer on +ĠRe hab +nt ax +Ġpowd ered +pill ar +Ġsm oker +ĠMans on +ĠB F +5 11 +ĠGood ell +ĠD AR +m ud +g art +Ġob edient +ĠTrans mission +ĠDon ation +8 80 +Ġbother ing +Material s +ãĤ ± +dest roy +Ġfore going +Ġanarch ism +ĠK ry +ice ps +Ġl ittered +ĠSch iff +Ġanecd otal +un its +Ġf ian +ĠSt im +ĠS OME +ĠInv aders +Ġbehaviour al +ĠVent ures +Ġsub lime +Ġfru ition +ĠPen alty +Ġcorros ion +¶ ħ +Ġlik ened +Ġbesie ged +ween ey +ĠCre ep +Ġlinem en +mult i +ic ably +ud der +Ġvital ity +Ġshort fall +ĠP ants +ap ist +H idden +ĠDro ps +med ical +Ġpron unciation +ĠN RL +Ġinsight ful +J V +ĠBe ard +ĠCh ou +Ġchar ms +Ġb ins +Ġamb assadors +ĠS aturdays +Ġinhib itor +ĠFr anch +6 01 +', ' +ĠCon or +art ney +ĠX peria +g rave +be es +ĠProtest ants +Ġso aking +ĠM andal +Ġph ased +Ġ6 60 +Ġsc ams +Ġbuzz ing +ĠItal ians +ĠLoren zo +ĠJ A +Ġhes itated +Ġcl iffs +ĠG OT +ingu ishable +Ġk o +Ġinter ruption +Z ip +Lear ning +Ġundersc ores +ĠBl ink +K u +57 9 +ĠAut ob +I RE +Ġwater ing +Ġpast ry +8 20 +Ġvision ary +ĠTempl ar +awa ited +Ġpist on +Ġant id +current ly +Ġp ard +Ġw aging +Ġnob ility +ĠY us +Ġinject ing +f aith +ĠP ASS +å º +Ġret ake +ĠPR OC +Ġcat hedral +b ash +Ġwrest lers +Ġpartner ing +Ġn oses +Ġ3 58 +Trans form +am en +Ġb outs +ĠId eal +ĠConstant in +Ġse p +ĠMon arch +att en +ĠPe oples +mod ified +Ġmor atorium +Ġpen chant +Ġoffensive ly +Ġprox ies +ok ane +ĠTaiwan ese +ĠP oo +ĠH OME +us ional +Ġver bs +ĠO man +vis ory +Ġpersu asion +Ġmult it +Ġsc issors +G ay +ow ay +oph ysical +l us +gn u +Ġap ocalyptic +Ġabsurd ity +Ġplay book +Ġautobi ography +I UM +Ġsne aking +ĠSim ulation +pp s +ell ery +Plan et +Ġright fully +Ġn iece +ĠN EC +ĠIP O +ĠDis closure +lean or +ous y +ST ER +Ġ28 2 +Cru z +Ch all +64 3 +ĠSurv ive +ĠF atal +ĠAm id +ap o +We apons +D EN +7 70 +ĠGreen wald +Ġlin en +al os +Ġpollut ants +ĠPCI e +k at +Ġp aw +ĠK raft +C hem +ĠTermin ator +Ġre incarn +Ġ] [ +ĠSe eds +Ġsilhou ette +ĠSt ores +Ġgro oming +ĠD irection +ĠIs abel +ĠBr idges +ðŁ ij +E ED +ĠM orsi +Ġval ves +ĠRank ed +ĠPh arma +ĠOrgan izations +Ġpenet rated +ĠRod ham +ĠProt oss +Ġove rest +Ġex asper +ĠT J +Ġ 000000 +Ġtrick le +Ġbour bon +WH O +Ġw retched +Ġmicrosc opic +Ġcheck list +Ġad orned +R oyal +Ad minist +ĠRet irement +ĠHig hest +We ather +ile ge +Ġincre ments +ĠC osponsors +Ġmas se +ĠS inn +r f +Ġh ordes +as sembly +75 4 +ĠNat asha +ĠTY PE +ĠGEN ERAL +Ġarr anging +Ġ40 7 +l ator +Ġg lean +Ġdisc redited +Ġclin icians +UN E +Ġachie ves +ĠEm erson +com plex += [ +Ġprincip ally +Ġfra il +p icked +Ġthan king +Ġre cl +ĠL AST +Ġsupp ressing +il ic +Ġantidepress ant +ĠLis bon +Ġth or +Ġsp a +Ġking doms +ĠPear ce +em o +Ġpl ung +Ġdiv est +Ġ ******************************** +b is +osp els +ad r +Sp irit +hall a +P ink +end ez +Ġresurrect ed +esc ape +ĠRosen stein +Ġge ological +Ġnecess ities +Ġcarn iv +ĠE lys +ĠBar ney +Ġ29 6 +dig y +ST ON +D OWN +Ġmil estones +Ġk er +Ġdismant ling +Ġre prim +Ġcross ings +19 45 +Ġpatri archy +Ġblasp hemy +Ġ3 59 +met ry +ĠOb esity +ĠDiff erences +bl ocking +ãĥķ ãĤ¡ +ich ita +ĠSab ha +ph alt +ĠCol o +ual a +effic ients +ĠMed ina +con sole +55 7 +ĠHann ibal +ĠHab it +ĠF ever +Ġthen ce +Ġsyn agogue +Ġessential s +Ġw ink +ĠTr ader +ID A +ĠSp oiler +ĠIceland ic +ĠHay ward +Ġpe ac +Ġmal ice +Ġflash back +Ġth w +Ġlay offs +L iquid +Ġtro oper +Ġh inge +ĠRead ers +Ph ill +ĠB auer +Cre ated +Ġaud its +ac compan +Ġunsus pecting +ier a +6666 6666 +Ġbro ch +Ġapprehend ed +ĠM alk +cer ning +ĠCod ex +O VER +M arsh +ĠD eng +ĠExp ression +Ġdisrespect ful +Ġasc ending +t ests +ĠPlaint iff +ster y +ĠAl ibaba +din and +ĠDem psey +Applic ations +mor al +Ġthrough put +Ġquar rel +Ġm ills +Ġhe mor +ĠC ASE +terror ist +st im +ifest yle +ro zen +CE PT +Ar k +u ci +lect ic +Ġirrit ating +she ets +A y +Ġrede emed +Ġhorn y +ĠTe ach +ĠS ear +dem ocracy +4 65 +ĠRest ore +Ġstand by +ĠP is +iff in +Ġsleep y +Ġextr ater +Ġcompl iments +Fram eworks +Ġinstall s +Ġb anging +sur face +found land +Ġmetaph ysical +Ġ28 3 +oul s +dev ices +Ar gs +ĠSac rifice +ĠMcC orm +es on +Cons ervative +ĠM ikhail +see ing +is ively +ĠRo oms +ĠGener ic +Ġenthusi astically +Ġgri pped +Ġcomed ic +ĠElectric ity +Ġgu errilla +Ġdec oration +ĠPerspect ive +Ġconsult ations +Ġun amb +Ġplag iar +Ġmagic ian +Ġe rection +ĠTour ism +or ied +ro xy +11 00 +T am +Ī è +Î ³ +× ª +ĠPred ators +Nit rome +Ġtelesc opes +project s +Ġun protected +Ġst ocked +ĠEnt reprene +nex pected +Ġwast ewater +V ill +Ġint imately +Ġi Cloud +ĠConst able +Ġspo of +Ġne farious +Ġfin s +Ġcens or +ĠMod es +ĠEs per +ar bon +Ġinter sections +Ġlaud ed +Ġphys i +Ġgener ously +ĠThe Nitrome +ĠTheNitrome Fan +Ġar isen +ĠÙ Ī +Ġg lands +ĠPav ilion +ĠGu pta +Ġuniform ly +Ġr amps +ri et +ĠWH EN +ĠVan essa +Ġrout ed +Ġlim p +ĠC PI +p ter +int uitive +Ġv aping +Ġexperiment ed +ĠOlymp us +ĠAm on +Ġsight ing +Ġinfiltr ate +ĠGentle man +Ġsign ings +ĠMe ow +ĠNav igation +che cks +4 33 +Ġel apsed +ĠBulg arian +esp ie +ĠS OM +d uring +Ġsp ills +anc a +ĠPly mouth +M AL +Ġdomest ically +ĠWater gate +ĠF AM +k illed +ed ited +ĠYour self +Ġsynchron ization +ĠPract ices +ST EP +Ġgen omes +ĠQ R +not ice +Ġloc ating +z in +Ġ3 29 +al cohol +Ġk itten +V o +Ġr inse +Ġgrapp le +ĠSc rew +ĠD ul +A IR +Ġle asing +ĠCaf é +Ġro ses +ĠRes pect +Ġmis lead +Ġperfect ed +Ġnud ity +Ġnon partisan +ĠCons umption +Report ing +Ġnu ances +Ġdeduct ible +ĠSh ots +Ġ3 77 +Ġæ ľ +ano oga +Ben ef +ĠB am +ĠS amp +if ix +Ġgal van +ĠMed als +rad ius +Ġno bles +Ġe aves +igr ate +K T +ĠHar bour +u ers +Ġrisk ed +re q +Ġneuro t +get table +ain a +Rom ney +Ġunder pin +Ġlo ft +ĠSub committee +ĠMong ol +b iz +Ġmanif ests +ass isted +ĠG aga +Ġsy nergy +Ġreligious ly +ĠPre f +ĠG erry +T AG +ĠCho i +4 66 +beh ind +ĠO u +Gold Magikarp +Ġhemor rh +R iver +Ġtend on +Ġinj ure +ĠF iona +Ġp ag +Ġag itation +|| || +ur an +ĠE SA +Ġest eem +Ġdod ging +Ġ4 12 +r ss +Ġce ases +ex cluding +Ġint akes +Ġinsert s +Ġemb old +ĠO ral +up uncture +4 11 +ĠUn ified +ĠDe le +Ġfurn ace +ĠCoy otes +ĠBr ach +L abor +Ġhand shake +Ġbru ises +Gr ade +éĹ ĺ +ĠGram my +ile en +St ates +ĠScandinav ian +ĠKard ash +8 66 +Ġeffort lessly +ĠDI RECT +ĠTH EN +ĠMe i +ert ation +19 68 +Ġgro in +w itch +Requ irements +98 5 +Ġroof s +Ġest ates +ĠH F +Ġha ha +Ġdense ly +ĠO CT +Ġpl astics +Ġincident ally +ĠTr acks +ĠTax es +Ġch anted +Ġforce ful +ĠBie ber +ĠK ahn +K ent +ĠC ot +lic ts +F ed +Ġhide ous +ĠVer d +ĠSynd icate +ĠIl legal +J et +ĠD AV +re asonable +c rew +Ġfundamental ist +Ġtruth ful +ĠJ ing +Ġl il +Ġdown ed +Ġen chanted +ĠPolic ies +ĠMcM aster +ĠH are +ides how +Ġpar ams +en cers +gorith m +Ġallow ances +Ġturb ulent +Ġcomplex ities +ĠK T +Ġ3 37 +ĠGen etic +F UN +D oug +t ick +Ġg igs +ument hal +Ġpatriarch al +Ġcal c +, ... +Ġc out +ĠGu an +Ġpath ological +ĠR ivals +Ġunder rated +Ġflu orescent +ĠJ iu +arna ev +ĠQu an +Ġ4 29 +Ġ ਠ+M ario +Con struct +ĠC itation +ĠR acial +ĠR SA +ĠF idel +Ġ3 95 +Person ally +C ause +à » +rad ical +in en +Ġvehement ly +ĠPap a +Ġintern ship +Ġfl akes +ĠRe ck +Luck ily +B ra +20 20 +rav ings +R N +W onder +Ser iously +Ġre usable +Ġpoll uted +ĠP eng +le igh +ind le +Ġcircuit ry +ĠMad onna +ĠB ART +Res idents +att ribute +Phil adelphia +Cl ub +Ġplan ner +Ġfr antically +Ġfaith fully +ĠTerrit ories +ĠL AT +ĠAnders en +an u +ĠP ARK +ĠS ora +i age +ĠPlay offs +ĠG CC +4 27 +Ġab norm +ĠL ever +Ġdisob edience +As ync +ĠShe a +V ert +Ġsk irts +ĠSaw yer +x p +Ġwors ening +Ġsc apego +ĠAng le +oth al +Ġtro ve +ĠSt y +ĠN guyen +mar ine +ide on +Dep ths +Bl og +ĠIll uminati +Ġtract s +Ġorgan ise +Ġo str +F s +Ġlever aging +ĠD aredevil +as ar +Ġl ang +Ġex termin +urs ions +ĠRom o +ãĤ¤ ãĥĪ +Ġcont ended +Ġencounter ing +ĠTable t +ĠAltern ate +sk ill +Ġswe ets +Ġco hesive +cap acity +Ġrep ud +Ġl izard +ro o +Ġpilgr ims +ĠR uff +ĠInstr ument +ĠLog o +uit ous +E H +Ġsales man +Ġank les +L ed +ĠPat ty +ud os +Own er +Ġdiscrep ancies +k j +M U +Ġuncond itional +Dragon Magazine +i ard +O ak +ĠConvers ation +be er +ĠOs aka +D elta +us ky +Ġsecret ion +Ġpl aza +Ġm ing +Ġde pletion +ĠM ous +ĠI TS +ĠH imal +ĠFle ming +Ġcyt ok +ĠH ick +Ġbat ters +ĠInt ellectual +6 75 +é r +IS ION +ĠQu entin +ĠCh apters +ih adi +Ġco aster +WAY S +ĠL izard +ĠY or +and ering +S kin +ha ust +ab by +Ġportray ing +Ġwield ed +d ash +Ġprop onent +Ġr ipple +Ġgrap hene +Ġfly er +Ġrec urrent +Ġdev ils +Ġwater fall +æĺ ¯ +go o +Text Color +Ġtam pering +IV ES +TR UMP +ĠAb el +ĠS AL +ĠHend ricks +ĠLu cius +b ots +Ġ40 96 +IST ORY +Gu est +ĠN X +in ant +Ben z +ĠLoad ed +ĠCle ver +t reatment +Ġta vern +Ġ3 39 +ĠT NT +ific antly +Tem perature +F el +Ġunder world +ĠJud ges +Ġ< + +Ġst ump +Ġoccup ancy +Ġab er +ĠF inder +) ", +ĠN unes +res et +in et +ect omy +Ġwell ness +ĠP eb +quart ered +and an +Ġneg atives +ĠTh iel +ĠCl ip +ĠL TD +Ġbl ight +Ġreperto ire +K yle +Ġqu er +ĠC es +Ġha pl +98 9 +ĠTh ames +isc opal +Des k +ivari ate +ĠEx cellence +found ation +Ġâ ĩ +X i +Ġmyster iously +esty les +Ġper ish +ĠEng els +ĠDE AD +09 0 +}} } +ĠUn real +Ġrest less +ID ES +orth odox +ĠInter mediate +Ġdin ners +ĠTr out +ĠSe ym +ĠHall s +og ged +Ġtraged ies +Ġdid nt +67 6 +Ġail ments +Ġobserv able +ĠV ide +ad apt +ĠD usk +Ġprofessional ism +ĠPres cott +ĠInd ies +p ox +ĠMe hran +W ide +Ġend emic +ĠPar an +B ird +Ġped als +ĠI U +ĠAdam ant +ĠH urt +Ġcorrel ates +urd en +Ġspons oring +cl imate +ĠUnivers ities +ĠK not +enn es +ĠDam ian +ĠAx el +S port +Ġbar b +ĠS no +sh own +ste en +ud ence +Ġnon violent +Ġhom ophobia +Ġbiom ass +ĠDet ail +Ġsrf N +ĠT une +accompan ied +I ENCE +Al bert +ĠMong o +z x +ĠCer berus +or bit +c ens +Ġsl ay +SH ARE +H Y +Ġb rawl +ĠPro be +Ġnonex istent +ĠClare nce +ĠBlack burn +Ġport als +ĠR ita +ĠRem ain +ĠLe vant +Ġtrick ed +ĠF erry +aver ing +ĠStraw berry +ĠAn swers +Ġhorrend ous +ĠA man +Supp lement +ĠT oad +Ġpe eled +Ġman oeuv +ĠU zbek +mond s +ĠH ector +Ġ40 2 +pe es +fix es +Ġd j +Ġres umes +Ġaccount ant +Ġadvers ity +Ġham pered +ĠL arson +Ġd oping +part s +H ur +Ġbe arded +Ġy r +ĠPlug in +å¥ ³ +Ġ/ ** +rol ley +Ġwaters hed +ĠSub mission +if lower +AS C +Ġcho ir +Ġsculpt ures +m A +incre asing +ai i +Ġsne akers +Ġconfront s +ĠEle phant +ĠEl ixir +Ġrec al +ĠT TL +w idget +ĠW ax +ĠGr ayson +Ġha irst +Ġhumili ated +ĠWAR N +app iness +ĠT TC +F uel +Ġpol io +Ġcomplex es +Ġbab e +ĠX IV +P F +). [ +P arts +Ġ4 35 +M eg +ĠY ards +ĠAL P +Ġy ells +Ġprin ces +Ġbull ies +ĠCapital ism +ex empt +FA Q +ĠSp onge +ĠAl a +Ġpleas antly +Ġbu f +Ġden ote +Ġunp ublished +Ġkne eling +asc a +Ġl apse +al ien +99 4 +Ġrefere es +ĠLaw yers +S anta +Ġpuzz ling +ĠProm etheus +ĠPh araoh +ĠDel ay +Ġfacilit ates +ĠC ES +Ġjew els +Ġbook let +ond ing +Ġpolar ization +ĠMor an +ĠSal ad +ĠS OS +ĠAdv ice +PH OTOS +IC AN +iat ures +ex press +ĠWonder land +ĠC ODE +ĠCL ASS +9 75 +Ġg rep +ĠD iesel +ĠGl ac +! ?" +Ġr m +o ine +disc rimination +ĠN urse +m allow +Ġv ortex +ĠCons ortium +Ġlarge Download +stra ight +augh lin +G rad +Ġpublic ized +ĠW aves +ĠRed d +Ġfest ivities +ĠM ane +ar ov +Ġfleet ing +ĠDr unk +ug en +C ele +Ġchromos omes +ĠD OT +-+-+ -+-+ +Ġbus iest +ĠBe aver +Sy rian +ĠK yr +k as +ĠCross Ref +19 50 +76 01 +Ġrepe aling +ĠWin ners +ĠMac ro +ĠD OD +bl ance +S ort +64 1 +Ġmet re +ĠD irk +Ġgo ggles +Ġdraw backs +Ġcomplain ant +Ġauthor izing +Ġantit rust +oper ated +Ġm ah +Ġexagger ation +Am azing +ĠSer aph +Ġha ze +w ow +Ġextingu ished +Ġcan yon +ĠB osh +Ġv ents +Ġsc rape +Cor rect +4 26 +Ġav g +Dem and +ĠâĪ ¼ +Ġmicrobi ota +"} ]," +ĠSt ev +B io +ĠPlan es +Ġsuggest ive +Ġdec ipher +ĠRefuge e +ĠKe jriwal +ĠGreen peace +Ġdecl ass +ĠSound ers +Ġth o +Ġdec rypt +Ġbr ushing +ĠJane iro +ip op +S i +8 77 +ĠGeoff rey +Ġc pu +ĠHaz el +Ġview points +Ġcris py +ĠNot ification +Ġsold er +ĠMod est +ĠHem isphere +Ġcass ette +in cludes +Ġident ifiers +ĠC ALL +in cent +T odd +ĠSwe ep +Ġ3 34 +b oss +Ġsm ir +gin x +Ġtown ship +Ġg rieving +ĠMos que +Net flix +AS ED +ĠMillenn ials +oc om +19 67 +Ġbold ly +s leep +Ġes che +arij uana +Ġsw irl +ĠPen al +Ġneglig ent +ĠStephen son +K ER +ĠZ oro +ris is +Ġlocal ization +ĠSeym our +ĠAng lic +red itation +prot ection +ĠPa ige +Ġo mit +ĠR ousse +ĠT ub +Ġinv itations +t ty +Ġm oss +ph ysical +C redits +Ġan archy +Ġchild care +Ġl ull +ĠM ek +ĠL anguages +lat est +ĠSan ford +Ġus ability +Ġdiff use +ĠD ATA +Ġsp rites +ĠVeget a +ĠProm otion +ãĥ¼ ãĤ¯ +rict ing +z ee +Tur kish +ĠTD s +pro ven +57 1 +Ġsmug glers +707 10 +Ġreform ed +ĠLo is +Ġun fl +ĠWITH OUT +ĠReturn ing +ann ie +ĠTom as +Fr anc +ĠProf it +ĠSER V +ĠR umble +ik uman +es an +Ġt esters +Ġgad get +Ġbrace let +ĠF SA +comp onent +Ġparamed ics +Ġj an +ĠRem em +ĠSk inner +Ġl ov +ĠQu ake +rom a +Ġfl ask +Pr inc +Ġover power +Ġlod ging +ĠK KK +ret te +Ġabsor bs +w rote +Ġ ," +K ings +ĠH ail +ĠFall ing +xt ap +ĠHel ena +ire ns +L arry +Ġpamph let +ĠC PR +G ro +ĠHirosh ima +Ġhol istic +". [ +Ġdet achment +Ġas pire +Ġcompl icit +ĠGreen wood +Ġresp awn +ĠSt upid +ĠFin ished +f al +b ass +Ġab hor +Ġmock ery +ĠFe ast +VID EO +Ġcon sec +ĠHung ry +P ull +ĠH ust +it ance +? ãĢį +) -- +ĠPar allel +con v +4 69 +ha ar +w ant +P aper +m ins +ĠTor o +ĠTR UMP +ĠR ai +D W +ĠW icked +ĠL ep +Ġfun ky +Ġdetrim ent +ios is +ache v +Ġde grade +im ilation +Ġret ard +Ġfrag mentation +Ġcow boy +ĠY PG +ĠH AL +Parent s +ĠS ieg +ĠStra uss +ĠRub ber +× IJ +Fr ag +Ġp t +Ġoption ally +ĠZ IP +ĠTrans cript +ĠD well +88 2 +M erc +ĠM OT +ãĥ¯ ãĥ³ +Ġhun ts +Ġexec utes +In cludes +Ġacid ic +ĠRespons ibility +ĠD umb +we i +And erson +ĠJas per +ight on +abs olutely +Ad ult +Ġpl under +Mor ning +ĠT ours +ĠD ane +Î º +ĠT EST +ĠG ina +Ġcan ine +aw an +Ġsocial ists +ĠS oda +Ġimp etus +ĠSupplement ary +oli ath +ĠKinn ikuman +mitted ly +second s +Ġorganis ers +Ġdocument aries +Vari able +GRE EN +Ġres orts +Ġbr agging +Ġ3 68 +Art ist +w k +bl ers +Un common +ĠRet rieved +Ġhect ares +Ġtox in +r ank +Ġfaith s +ĠG raphic +Ġve c +ĠL IA +Af rican +Ġard ent +end iary +L ake +ĠD OS +cient ious +ĠOk awaru +ĠAll y +ĠTim eline +D ash +ĠI c +contin ue +Ġt idy +Ġinstinct ively +ĠP ossibly +ĠOut door +ĠWould n +Ġl ich +ĠBr ay +ĠA X +Ġà ī +Ġ+ # +\ ' +Direct ory +ab iding +Ġf eral +ic ative +but t +Ġper verse +S alt +Ġwar ped +Ġnin eteen +Ġcabin ets +Ġsrf Attach +ĠSl oan +Ġpower ing +reg ation +F light +se vere +Ġst ren +Ġc og +ap ache +Ġâ Ŀ +Ġcaf eteria +p aces +ĠGrim oire +uton ium +Ġr aining +Ġcir cling +Ġlineback ers +c redit +Ġrep atri +ĠCam den +lic ense +Ġly ric +Ġdescript or +Ġval leys +Ġre q +Ġback stage +ĠPro hibition +ĠK et +Op ening +S ym +æĸ ¹ +Ġserv ings +Ġoverse en +Ġaster oids +ĠMod s +ĠSpr inger +ĠCont ainer +è » +ĠM ens +Ġmult im +Ġfire fighter +pe c +Ġchlor ine +Ð ¼ +end i +Ġsp aring +Ġpolyg amy +ĠR N +ĠP ell +Ġt igers +Ġflash y +ĠMad ame +S word +Ġpref rontal +Ġpre requisite +uc a +Ġw ifi +Ġmiscon ception +Ġharsh ly +ĠStream ing +ot om +ĠGiul iani +foot ed +Ġtub ing +ind ividual +z ek +n uclear +m ol +Ġright ful +49 3 +Ġspecial ization +Ġpassion ately +ĠVel ocity +ĠAv ailability +T enn +Ġl atch +ĠSome body +Ġhel ium +cl aw +Ġdi pping +XX X +Ġinter personal +7 10 +Ġsub ter +Ġbi ologists +ĠLight ing +Ġopt ic +Ġden im +end on +ĠC orm +Ġ3 41 +ĠC oup +Ġfear less +Ġal ot +ĠCliff ord +ĠRun time +ĠProv ision +up dated +lene ck +Ġneur on +Ġgrad ing +ĠC t +sequ ence +in ia +con cept +Ġro aring +ri val +ĠCaucas ian +Ġmon og +key es +Ġappell ate +Ġlia ison +EStream Frame +ĠPl um +! . +Ġsp herical +Ġper ished +Ġbl ot +Ġben ches +Ġ4 11 +Ġpione ered +Ġhur led +Jenn ifer +ĠYose mite +Ch air +Ġreef s +Ġelect or +ĠAnt hem +65 2 +Ġun install +Ġimp ede +Ġbl inking +Ġgot o +Dec re +A ren +Ġstabil ization +ĠDis abled +ĠYanuk ovych +Ġoutlaw ed +ĠVent ura +ten ess +Ġplant ation +Ġy acht +ĠHu awei +Ġsol vent +Ġgr acious +Ġcur iously +Ġcapac itor +Ġc x +ĠRef lex +Ph ys +ĠC f +pt in +cons ervative +Ġinv ocation +c our +F N +ĠNew ly +H our +As ian +ĠLe ading +ĠAer ospace +An ne +Ġpre natal +Ġdeterior ating +H CR +ĠNorm andy +ol ini +ĠAm bro +9 10 +Ġset backs +ĠT RE +Ġs ig +ĠSc ourge +59 7 +79 8 +Game play +Ġm sec +M X +Ġprice y +ĠL LP +aker u +Ġover arching +ĠB ale +Ġworld ly +Cl ark +Ġscen ic +Ġdisl iked +ĠCont rolled +T ickets +ĠE W +ab ies +ĠPl enty +Non etheless +Ġart isan +Trans fer +ĠF amous +Ġinf ield +ble y +Ġunres olved +ĠML A +ãĤ Ĥ +Cor rection +Ġdemocr at +ĠMore no +ro cal +il ings +Ġsail or +Ġr ife +h ung +Ġtrop es +Ġsn atched +ĠL IN +ĠB ib +ES A +ĠPre v +ĠCam el +run time +Ġob noxious +4 37 +Ġsum mers +Ġunexpl ained +ĠWal ters +cal iber +Ġg ull +ĠEnd urance +ä½ ľ +Ġ3 47 +Ir ish +Ġaer obic +Ġcr amped +ĠHon olulu +à © +us erc +ec ast +AC Y +ĠQu ery +ãĤ¹ ãĥĪ +Bet a +Ġsuscept ibility +ĠSh iv +ĠLim baugh +Ġà ĸ +ĠN XT +ĠM uss +ĠBrit ons +ES CO +EG IN +Ġ% % +Ġsec ession +ĠPat ron +ĠLu a +n aires +ĠJPM organ +us b +ocy te +Ġcouncill ors +ĠLi ang +f arm +Ġnerv ously +Ġattract iveness +ĠK ov +j ump +Pl ot +Ġst ains +ĠStat ue +ĠApost les +he ter +ĠSUP PORT +Ġoverwhel m +Y ES +Ġ29 1 +d ensity +Ġtra pping +M it +Ġf ide +ĠPam ela +atl antic +Dam n +Ġp ts +OP A +Ġserv icing +Ġoverfl owing +ul o +ĠE rit +t icket +light ing +ĠH mm +ãĥ¼ ãĥ« +im oto +Ġchuck le +4 23 +ãģ ķ +sh ape +Ġque ues +Ġanch ors +ãĤ¼ ãĤ¦ãĤ¹ +F er +Ġaw oke +Ġ6 66 +h ands +Ġdiver gence +Ġ50 5 +T ips +Ġdep ot +Ġske w +ĠDel iver +op ot +Ġdiv ul +ĠE B +uns igned +ĠUn i +X box +Ġfor ks +Ġ7 02 +å ¯ +Ġpromot ers +ĠV apor +Ġlev ied +sl ot +Ġpig ment +Ġcyl inders +C RE +Ġsn atch +Ġperpet ually +Ġl icking +ĠFe et +ĠKra ken +ĠHold en +ĠCLS ID +m r +Ġproject or +Ġden otes +Ġchap el +ĠTor rent +b ler +R oute +ĠDef endant +ĠPublisher s +ĠM ales +ĠInn ov +ĠAg ility +rit er +ty mology +st ores +L ind +Ġf olly +ĠZur ich +B le +Ġnurt ure +Ġcoast line +uch in +D omin +Ġfri vol +ĠCons olid +res ults +M J +Ġphyl ogen +Ġha uled +ĠW iley +ĠJess ie +ĠPrep are +ĠE ps +Ġtreasure r +I AS +Ġcolon ists +Ġin und +ĠWW F +ĠCon verted +6 000 +out side +ĠApp earance +ĠRel ic +ĠM ister +s aw +Ġresult ant +Ġadject ive +ĠLaure l +ĠHind i +b da +Pe ace +Ġreb irth +Ġmembr anes +Ġforward ing +Ġcoll ided +ĠCar olyn +K ansas +5 99 +ĠSolid GoldMagikarp +Be ck +Ġstress ing +ĠGo o +ĠCooper ative +Ġf s +ĠAr chie +L iter +ĠK lopp +J erry +Ġfoot wear +War ren +Ġsc ree +h are +Under standing +P ed +Ġanth ology +ĠAnn ounce +M ega +Ġflu ent +Ġbond age +ĠDisc ount +il ial +C art +ĠNight mares +Sh am +ĠB oll +uss ie +H ttp +Atl anta +Ġun recogn +ĠB id +Ġunder grad +Ġforg iving +ĠGl over +AAAA AAAA +4 45 +V G +pa io +kill ers +Ġrespons ibly +Ġmobil ize +Ġeffect ed +ĠL umin +Ġk ale +Ġinfring ing +ann ounced +Ġf itt +b atch +ĠT ackle +ĠL ime +ĠAP P +uke mia +Ġrub y +Ġex oner +ĠCas ual +0 70 +Ġpel vic +Ġautom ate +ĠK ear +ĠCoast al +Ġcre ed +Ġbored om +ĠSt un +ri ott +Ĥ İ +Ġregener ate +Ġcomed ians +ĠOP ER +Sp ons +id ium +on is +L ocated +05 7 +Ġsusp ense +ĠD ating +C ass +Ġneoc ons +ĠShin zo +Ġaw oken +ch rist +ĠMess ages +att led +ĠSpr ay +ĠSp ice +C W +Ġshield ing +ĠG aul +Am id +Ġparam ilitary +Ġmult if +ĠTan ner +il k +Ġgodd amn +g ements +Ġbe friend +m obi +Ġ3 88 +fold er +acc a +Ġins in +g ap +N ev +fif th +Ġpsychiat ry +b anks +TH IS +Ġhar b +ac qu +Ġfac ade +ĠPower Point +80 3 +Ġbl uff +Sh ares +Ġfavor ing +El izabeth +Ãį Ãį +Ġr anger +77 2 +ĠAr che +h ak +ĠGen etics +ĠF EMA +Ġev olves +Ġest e +ĠP ets +ĠM é +ĠInterest ing +ĠCanter bury +ch apter +ĠStar fleet +Sp anish +Ġdraw back +ĠNor wich +9 70 +n orth +ag anda +Ġtransform ative +ram ids +bi ology +ad ay +Ġpropag ation +ĠGam ma +ĠDen ise +ĠCalcul ator +ent imes +ĠB ett +Ġapp endix +ĠHD D +AK ING +Ġst igmat +Ġhol ster +Ġord inarily +Ch ance +ĠCont rary +Ġad hesive +Ġgather s +6 12 +re au +ony ms +ew ays +Ġindu ces +Ġinterchange able +se m +Wh it +Ġtr ance +Ġincorpor ation +ĠExt ras +Fin ancial +Ġawkward ly +ĠStur geon +ĠH Y +Norm ally +ĠEnd ing +ĠAss ist +enc rypted +Ġsub jug +Ġn os +Ġfan atic +C ub +C U +?" . +Ġirre versible +å Ĥ +03 1 +ĠH AR +sp read +ul ia += $ +Sc ope +L ots +Ġlif estyles +ol on +Ġf eds +Ġcongrat ulate +web kit +Ġindist inguishable +ĠSw ing +Ġcommand ments +qu ila +ab ella +m ethyl +ann abin +Ġo vere +Ġlob ster +ĠQU EST +ĠCONT IN +bern atorial +:::: :::: +ĠTra ve +ĠSam oa +AN I +75 2 +Ð ´ +userc ontent +ĠMod erate +y eah +ĠK itt +Ġwe e +Ġstuff ing +ĠInter vention +ĠD ign +Ġware houses +ĠF iji +Ġpel lets +Ġtake away +ĠT ABLE +ĠClass ical +col lection +Ġland fall +ĠMus cle +Ġsett les +ĠAD V +Ġ3 44 +L aura +Ġf ared +ĠPart ial +4 36 +oss ibility +ĠD aly +ĠT arant +ĠFu ji +am l +c ence +55 1 +ĠProced ures +ĠO CD +ĠU D +t in +Q UI +ach o +4 38 +Ġgl itches +Ġenchant ment +Ġcalcul ates +IR O +ĠH ua +alys es +ĠL ift +um o +Ġle apt +Ġhypothes ized +ĠGust av +it ans +VERS ION +æ ł +Rog er +Ġr and +ĠAd apter +Ġ3 31 +ĠPet ition +k ies +M ars +Ġunder cut +ze es +ĠLy ons +ĠDH CP +Miss ing +Ġretire es +Ġins idious +el i +> ) +. ãĢį +Ġfinal ists +ĠA ure +Ġacc user +Ġwas tes +ĠY s +ĠL ori +Ġconstitu encies +Ġsupp er +Ġmay hem +or ange +Ġmis placed +Ġmanager ial +Ġex ce +ĠCL I +Ġprim al +ĠL ent +Cry stal +h over +ĠN TS +end um +Ġd w +ĠAl c +n ostic +Ġpres erves +ĠTs arnaev +Ġtri pled +rel ative +Arc ade +k illing +ĠW EEK +ĠH anna +D ust +Com pleted +ģ « +Ġappro ves +ĠSur f +ĠLuther an +ven ants +Ġrobber ies +we ights +soft ware +at ana +ug al +Ġgrav y +ĠC ance +OLOG Y +ly ak +Ton ight +Ġunve il +Ġ19 04 +ĠMin ion +ent ious +st ice +pack ages +ĠG EAR +Ġg ol +ĠHutch inson +ĠProf ession +ĠG UN +ĠDiff erence +ĠTsuk uyomi +ĠLes bian +6 70 +Ġfug itive +ĠPlan etary +-------------------------------- ------------------------ +Ġacc rued +Ġch icks +Ġsto pp +Ġblock ers +C od +Ġcomment ers +ĠSomew here +ĠPhot ographer +the me +Ġmay oral +w u +Ġanten nas +Ġrev amped +ĠSubject s +it é +im ura +Ġentr ances +liter ally +Ġten ets +ĠO MG +ĠMP H +ĠDon key +ĠOff ense +Ġ" + +Sn ap +ĠAF B +Ġan imate +ĠS od +His panic +Ġinconsist ency +D b +F Y +Ex port +Ġa pe +Ġpear l +ib el +ĠPAC s +Ġ{ \ +Ġact u +ĠHS BC +camp us +Ġpay off +Ġde ities +ĠN ato +ou ple +Ġcens ored +ĠCl ojure +Ġconf ounding +en i +Ġreck on +op he +Ġspot ting +Ġsign ifies +Ġprop el +Ġfest ive +S uggest +Ġpled ging +ĠB erman +Ġrebell ious +Ġovershadow ed +Ġinfiltr ated +j obs +67 2 +Ġscal able +Ġdomin ion +ĠNew foundland +ĠMead ow +Ġpart itions +AM I +Ġsupplement ary +str ument +Ġhair y +Ġperpet uate +Ġnuts hell +ĠPot ato +ĠHob bit +Ġcur ses +Flo at +Ġquiet er +Ġfuel ing +Ġcaps ules +ĠL ust +ĠH aunted +Exec utive +Ġchild birth +G re +Ġrad iant +å İ +Ġm alls +Ġin ept +ĠWarrant y +Ġspect ator +E h +t hens +Ġculmin ating +æ © +ary a +ãĤ ® +ilit arian +ĠOR IG +ĠSp ending +pt ives +ĠS iren +ĠRec ording +ay ne +Ġv im +Ġspr ang +T ang +ĠM FT +mor ning +ĠWe ed +m peg +cess ion +ĠCh ung +7 30 +w arning +56 2 +handed ly +P oor +P olitics +: # +Ġp ian +Ġfec es +ĠDocument ation +Ġban ished +Ġ3 99 +ĠAR C +Ġhe inous +J ake +ĠAm ir +way ne +v re +os henko +Ġnotebook s +Ġfound ational +Ġmarvel ous +ixt ape +Ġwithdraw als +Ġh orde +ĠD habi +is able +ĠK D +Ġcontag ious +ĠD ip +ĠAr rows +Ġpronoun s +Ġmorph ine +ĠB US +68 2 +Ġk osher +fin ished +ĠInstr uments +Ġf used +yd en +ĠSal mon +F ab +aff ected +K EN +C ENT +Dom ain +Ġpoke mon +ĠDr inking +G rowing +ĠInvestig ative +ĠA ether +em i +Ġtabl oid +Ġrep ro +ĠNot withstanding +ĠBers erker +Ġdram as +Ġclich é +Ġb ung +ĠU RI +ĠD os +0 44 +Ġpast ors +Ġl s +Ġac rylic +aun ts +Ed ward +Ġmajor ities +B ang +Ġfield ing +ĠRepl acement +ĠAl chemy +pp ard +ĠRome o +ĠSan ct +ĠLav rov +ib ble +Inst ruct +Ġimp ractical +ĠPlay boy +ce phal +Ġsw aps +Ġk an +ĠThe o +Ġillust rating +Ġdismant led +ĠTrans gender +ĠG uth +UG H +Ġtriumph ant +Ġencomp ass +Ġbook mark +udd in +j er +Ġpred icate +ES H +Ġwhen ce +ĠAB E +Ġnon profits +Se qu +Ġdi abetic +Ġp end +Ġheart felt +sh i +Ġinter acts +ĠTele com +Ġbombard ment +dep ending +ĠLow ry +ĠAd mission +ĠBl ooming +ust ration +ene gger +B rew +Ġmol ten +ĠNer d +P IN +âĸ Ģ +ave ment +Ġtou red +Ġco efficients +ĠTray von +ans son +Ġsand y +t old +fl ows +Ġpop ulous +ĠT inder +ĠBl iss +R achel +Min imum +Ġcontest ant +ĠRed uce +ĠMor se +ĠGrass ley +ĠClick er +Ġexp r +Ġs incerity +Ġmar qu +Ġelic it +ĠPro position +ĠDemon ic +Ġtac os +G reek +Ġpost war +Ġin sofar +ĠP ork +Ġ35 2 +doctor al +walk ing +Ġmid term +ĠSam my +sight ed +ĠTR ANS +ic i +AL D +ĠUS L +ĠF ISA +ĠAm pl +ĠAlex andra +ine lli +Tr ain +Ġsign ify +ĠVers us +Ġob fusc +Ġk h +Ġagg ro +ĠRen ault +Ġ3 48 +5 18 +ox icity +0 22 +ĠTw ist +Ġgoof y +D ynamic +Ġbrief ings +m ight +8 99 +Ġderog atory +T ro +Ġfor ging +ĠKor an +ĠMar ried +ĠBuc s +Ġpal ate +ĠCon version +m able +4 13 +Ġ( _ +Ġs iph +ĠN EO +col lege +Ġmarg inally +Ġfl irt +ĠTra ps +ĠP ace +é »Ĵ +Ġgoalt ender +Ġforb ids +Ġcler ks +ĠT ant +ĠRobb ins +ĠPrint ing +Ġpremie red +Ġmagn ification +ĠT G +ĠR ouse +ĠM ock +odynam ics +Ġpre clude +ism o +ĠPul itzer +Ġaval anche +ĠK odi +rib une +ĠL ena +Elect ric +Ġref inery +Ġend owed +Ġcounsel ors +Ġd olphin +ĠM ith +Ġarm oured +hib ited +Beg in +ĠP W +O il +ĠV or +ĠShar if +ĠFraz ier +est ate +Ġj ams +Pro xy +Ġband its +ĠPresbyter ian +ĠPrem iere +t iny +ĠCru el +Test ing +Ġhom er +ĠV ERS +ĠPro l +ĠDep osit +ĠCoff in +Ġsemin ars +Ġs ql +ĠDef endants +Altern atively +ĠR ats +ç « +ethy st +' > +Ġiss uer +58 9 +Ġch aired +ĠAccess ories +man ent +Ġmar row +ĠPrim ordial +C N +Ġlimit less +ĠCarn age +Ġund rafted +q v +IN ESS +on ew +Ġco hesion +98 7 +Ġne cks +Ġfootball er +ĠG ER +Ġdetect able +ĠSupport ing +ĠCS V +oc ally +k Hz +Ġund e +Ġsh one +Ġbud ding +tra k +Stand ing +ĠStar craft +ĠKem p +Ben ch +Ġthw arted +ĠGround s +ath i +L isa +Dial og +ĠS X +V ision +Ġingen ious +Ù IJ +Ġfost ering +ĠZ a +ĠIn gram +Ġ" @ +N aturally +6 16 +0 35 +ĠF AC +H mm +55 4 +Ġacceler ator +ĠV end +Ġsun screen +Ġtuber culosis +rav iolet +ĠFunction al +ĠEr rors +ed ar +19 66 +ĠSpect re +ĠRec ipes +88 5 +ĠM ankind +L iverpool +Ġ| -- +Ġsubst itutes +ĠX T +w ired +Ġinc o +ĠAf gh +E va +ic c +S ong +K night +Ġdilig ently +ĠBroad cast +A id +Ġaf ar +ĠH MS +aton in +ĠGr ateful +Ġfire place +ĠOm ni +e uro +ĠF RE +ĠSh ib +ĠDig est +t oggle +Ġheads ets +Ġdiff usion +ĠSqu irrel +ĠF N +Ġdark ened +out her +Ġsleep s +ĠX er +gun s +Ġset ups +Ġpars ed +Ġmamm oth +ĠCur ious +g ob +ĠFitz patrick +ĠEm il +im ov +........ ..... +ĠB enny +Second ly +Ġheart y +Ġcons on +st ained +Ġgal actic +cl ave +Ġplummet ed +Ġp ests +Ġsw at +Ġrefer rals +ĠLion el +h oly +Ġunder dog +ĠSl ater +ĠProv ide +ĠAm ar +ress or +å Į +ong a +Ġtim id +Ġp iety +ĠD ek +Ġsur ging +az o +Ġ6 10 +Ġdes ks +ĠSp okane +ĠAn field +Ġwars hips +ĠCob ra +Ġar ming +clus ively +ĠBad ge +ag ascar +ĠPR ESS +ĠMcK enzie +ĠFer dinand +burn ing +Af ee +Ġtyr ann +ĠI w +ĠBo one +100 7 +ĠRe pt +Ċ Âł +Ġcar avan +ĠD ill +ĠBundes liga +Ch uck +Ġheal er +ãĥ¼ãĥ Ĩ +ĠH obby +Ġneg ate +Ġcrit iques +section al +mop olitan +Ġd x +Ġouts ourcing +ĠC ipher +t ap +Sh arp +Ġup beat +Ġhang ar +Ġcru ising +ĠNi agara +Ġ3 42 +ill us +ĠS v +Ġsubt itles +Ġsqu ared +Ġbook store +Ġrevolution aries +ĠCarl ton +ab al +Ut ah +Ġdesp ise +ĠU M +cons ider +aid o +Ġc arts +ĠT urtles +Tr aining +Ġhonor ary + ¢ +Ġtri angles +4 22 +Ġreprint ed +Ġgrace ful +ĠMong olia +Ġdisrupt ions +ĠB oh +Ġ3 49 +Ġdr ains +Ġcons ulate +Ġb ends +Ġm afia +ur on +ĠF ulton +m isc +Ġren al +Ġin action +ck ing +Ġphot ons +Ġbru ised +ĠC odes +og i +Ġn ests +ĠLove ly +ĠLib re +ĠD aryl +Ġ# ## +S ys +. ," +Ġfree zes +est ablishment +and owski +Ġcum bers +ĠSt arg +ĠBom bs +Ġleg ions +Ġhand writing +Ġgr un +ĠC ah +sequ ent +Ġm oth +ĠMS M +Ins ert +F if +Ġmot el +Ġdex ter +ĠB ild +hearted ly +Ġpro pe +ĠText ure +ĠJ unction +ynt hesis +oc ard +ĠVer a +ĠBar th +Ġμ g +Ġl ashed +Ġ35 1 +ĠZ amb +ĠSt aples +ĠCort ex +ĠCork er +Ġcontinu um +ĠWR ITE +unt a +rid or +Ġde ems +0 33 +ĠG OLD +p as +Ġrep ressive +ãĥĨ ãĤ£ +Ġbaff led +Sc ar +Ġc rave +Ġ ______ +Ġentrepreneurs hip +ĠDirector ate +Ġ' [ +Ġv ines +Ġasc ended +ĠGR OUP +ĠGood bye +Ġdo gged +ãĥ´ ãĤ¡ +Man ufact +Ġunimagin able +ri ots +ier rez +Ġrel ativity +ĠCraft ing +ra ught +ud en +c ookie +Ġassass ins +Ġdissatisf ied +ac ci +Ġcondu it +Sp read +ĠR ican +n ice +izz le +Ġsc ares +ĠWH Y +ph ans +5 35 +Ġprot racted +ĠKrist en +5 36 +ĠSc rib +ĠNe h +Ġtwent ies +Ġpredic ament +Ġhandc uffs +Ġfruit ful +ĠU L +ĠLud wig +Ġatt est +ĠBre aker +Ġbi ologically +ĠDeal er +Ġrenov ations +f w +ess en +Al ice +ĠHen ri +Ġun ilaterally +ĠS idd +h ai +ĠSt retch +S ales +Ġcumbers ome +ĠJ avier +Ġtrend y +Ġrot ting +ĠChall enges +Ġscra ps +Ġfac ets +ĠVer onica +ĠVer ge +ĠS ana +Al ien +ĠR ih +Ġrad ial +ect ar +Ġ6 30 +cl i +Mar ie +Ġwild fire +ĠCat o +h ander +Ġwait ress +Ġch ops +ĠS ECTION +Ġblunt ly +ĠCat alog +n ian +stud y +Ġpat rolling +ĠT enth +nex us +ĠN ON +op sy +Ġsc athing +s ie +Ġdeterior ated +V B +Naz is +Ġdep ictions +Ġauthent icated +ĠCon ce +k rit +Ġpromul g +ĠL ONG +U FC +ĠVis itors +ĠRec all +Ġrehab ilit +ĠSL I +Ġglac ier +ĠB ite +Ġ50 3 +Ġvom it +Ġfer mented +ĠKh alid +Ġgrad ed +ĠMag icka +ĠIch igo +power ful +ic ators +75 3 +Ġsh rew +Ġ35 6 +Ġlegal izing +Ġall otted +ĠArch demon +ith ing +igg urat +V OL +Le od +Ġo ily +Ġindu cing +Ġamy gdala +Ġadm ins +ĠAcqu isition +C AN +Ġsche matic +Ġmo an +ĠCamer oon +Ġt ink +Ġmer ry +Ġbutter flies +ĠGo ff +Ġworks pace +ĠCor ona +Ġj avascript +ĠD olphin +ĠCant or +4 64 +to e +AP S +ĠAg ing +Ġpadd ed +ĠZ heng +ĠHe ld +Ġest ranged +Ġ7 70 +. } +ĠDun ham +Ġsm okes +Ġcap itals +und ai +Sh in +ĠFound ing +Ġent itle +Ġcenter piece +D iscover +Ġthere to +al ert +ĠN ou +ĠAnaly st +l c +F H +FI ELD +ĠP OV +gr ay +Ġar cs +ĠH OT +Ġr s +Ġoblig atory +ĠArchitect s +ĠS ven +ĠF EC +0 200 +Christ mas +ĠAlban ia +rat om +58 7 +Ġhard ships +Ġaut os +ĠCharg es +Ġap es +Ġ3 76 +wal let +Ġintox ication +Ġgobl in +Ġ5 70 +++++++++ ++++++++ +ĠYel p +ĠMag netic +ĠBr iggs +R ail +Ġspawn s +ĠW iggins +Ġshowc ased +Ġres orted +ub en +Ġwh ipping +Ġim itate +Ġdigest ion +ĠUS PS +ĠG est +Ġye a +ĠT ight +ind al +ic as +` . +C AST +'' ; +ĠF et +opath ic +In valid +Ġregrett ed +Ġbro ccoli +ĠSc ores +e ve +Ġpost ings +Ġaccum ulating +Ġneed less +elf th +Ġmay ors +Ġsc rib +Ġanecd otes +Ġbot ched +ĠRib bon +ĠConstant ine +i uses +ess es +Ġdev ise +Comp ared +Ġp udding +Ġg arg +Ġev oke +79 7 +Ġdet ox +9 09 +ĠPie ces +ĠMcC artney +Ġmet ast +ĠK rypt +P OR +Ġt ending +ĠMerch ants +Pro of +ĠV arg +ĠPort able +ãĥ¼ãĥĨ ãĤ£ +B rain +25 00 +Ġfol iage +Ø ¹ +Ġment ors +ĠA ires +Ġminimal ist +Ġing ested +ĠTro jan +ĠQ ian +inv olved +0 27 +Ġer oded +RA FT +Ġbl urry +M ob +Ġbuff et +ĠFn atic +ae a +KN OWN +ĠIn it +s afety +en um +ACT ION +ĠCrus her +ĠD ates +Ġ ................ +c alling +ak ov +Ġvent ured +Ġ5 55 +au ga +H art +ĠA ero +M AC +Ġthin ly +Ġar ra +ST ATE +ild e +ĠJac qu +ĠFem ales +Ġthe orem +Ġ3 46 +Ġsmart est +ĠPU BLIC +ĠK ron +ĠB its +ĠV essel +ĠTele phone +Ġdec ap +Ġadj unct +ĠS EN +mer ga +Ġred acted +Ġpre historic +Ġexplan atory +ĠRun s +ĠUtt ar +ĠM anny +ĠAUTH OR +ĠUnle ashed +ĠBow ling +be ans +79 3 +Ġunivers es +Ġsens it +ĠK ung +re peat +ctr l +Ġp aced +Ġfull er +Cl ock +Ġrec omb +ĠF aul +ĠB unker +Ġpool ed +Ġan a +ĠM outh +LL OW +hum ane +Ġbull do +ĠMicha els +f am +Ġwreck ed +Ġport rays +ĠWh ale +ĠH es +Ġguess es +ĠBrow se +ĠL APD +Ġconsequ ential +ĠInn ocent +ĠD RAG +Ġtrans gress +ĠO aks +Ġtri via +ĠRes on +ĠA DS +-- + +ĠT oll +Ġgrasp ing +ĠTHE M +ĠT ags +ĠCon clusion +Ġpract icable +Ġho op +Ġunintention ally +Ġign ite +ĠM ov +ur ized +le hem +Ter min +Ġcolour ful +ĠLin ear +ĠEll ie +G y +Ġman power +Ġj s +Ġem oji +ĠSHAR ES +_ . +0000 7 +Ġsophistic ation +Ġunders core +Ġpract ise +Ġbl ob +op ens +Uk raine +Ke eping +Y C +J R +ult imate +Cl aim +Ġautom obiles +99 3 +ste el +Ġpart ing +ĠL ank +... ? +Ġ38 5 +Ġremem brance +Ġe ased +Ġcov ari +ĠS ind +Effect ive +Ġdisse mination +ĠMo ose +ĠCl apper +br ates +App ly +Ġinv is +Ġwors ened +âĢĶ - +Ġlegisl ator +ĠL ol +ĠRow e +Ġdealers hip +um ar +id ences +Ġinvestig ates +Ġc ascade +Ġbid der +ĠB EN +Iron ically +Ġpres iding +Ġd ing +Ġcontrad icted +Ġshut s +ĠF IX +Ġ3 66 +Dist rict +Ġsin ful +ĠChar isma +o ops +Ġtot ality +Ġrest itution +ĠOpt imus +ĠD ah +Ġcl ueless +urn ed +Ġnut rit +Ġland owners +Ġfl ushed +Ġbroad en +m ie +Ġprint ln +Ġn ig +ĠCorp us +J en +Ġprot o +ĠWik imedia +ĠPal o +C OR +Ġstory lines +Ġevangel icals +ĠDar rell +Ġrot or +ĠH W +sk illed +ery l +Ġbe gg +ĠBl umenthal +Ġwe aving +Ġdown wards +ĠJack et +ĠANG EL +Te chnology +Ġes oteric +alde hyde +Ġfur iously +Ġforeign er +We ak +CH O +ĠH ound +Exper ience +ĠPlay station +ĠM IA +ĠU ng +cl oth +ag all +Ġcal ming +iz ens +St ruct +ĠW itches +ĠCeleb ration +Ġ........ ...... +pt roller +ĠTC U +Ġb unny +ãĥ į +ut orial +Ġup scale +ĠSt a +ĠCol ossus +Ġchlor ide +ĠZ ac +ĠRe asons +ĠBrook ings +ĠWH ITE +][ / +ĠL ose +9 05 +Ġunders ide +ern els +Ġv ape +do zen +upp et +ĠST OP +mat ical +ĠStat ements +hed dar +P AC +Custom er +Ġmem os +ĠP J +end ars +ĠLim its +l augh +Ġstabil ized +ĠALE C +Y A +Up grade +al am +Ġtechn o +Ġan ew +fore seen +Ġcolleg iate +ĠPy ro +ĠD ism +Ġfront line +Ġammon ia +I U +Qu ite +John ny +ass in +G OP +ĠSt yles +ĠSovere ign +acter ial +5 49 +ĠR IP +ĠL ists +Ġ3 64 +ĠRece p +s ocket +ĠByr d +ĠCand le +An cient +Ġappell ant +en forcement +ace a +ans ki +Ġold s +88 6 +Ġsl urs +Ġem pires +Ġbuck le +Ġalien ation +ĠAber deen +Ġunic orn +Ġoverr iding +ĠL X +pp a +Ġdesp ised +ĠB ugs +ĠB ST +S outhern +5 33 +Ġhall mark +ĠPost er +Ġstem med +Ġprincip als +ĠT ECH +ĠSand wich +It aly +Ġche esy +ĠSet TextColor +ĠProt ective +ĠC ohn +J O +apt op +Re ason +Lead er +ĠUnder stand +ĠFr idays +ĠContin uous +Ġcl ipping +ĠR ye +Ġber th +tim er +ann is +re act +Ġbuff alo +ĠPar as +Ġ6 55 +Ġpres ided +ĠSun rise +Ġve ts +Ġcl oves +ĠMcC ull +Stre ngth +G AN +Ġill iter +ĠPric ing +l é +Ġresist or +Ġbr un +ĠSuff olk +Ñ ĭ +ĠL iver +Re leased +Ġwhat s +8 60 +ĠMe asures +Ġden ouncing +ĠRy zen +Ġsou ven +Ġcareg ivers +ch ini +ĠScar lett +Ġt rough +Cong ratulations +Ġtax is +ĠTrad ition +j it +Ġtable top +Ġhither to +Ġdis information +off ensive +h ra +ĠDISTR ICT +Ġcompl icate +chen ko +ĠRecon struction +Ġpalp able +Ġa usp +Ġ4 28 +Ġshowc ases +ĠPublic ation +know ledge +inn on +4 19 +Ġretri eval +and ers +Ġref ute +Ġinqu ired +g ur +Ġneg ativity +Ġcons erve +Ġafter life +Ġpres upp +ĠGill espie +Ġm t +ĠD N +T ap +Ġper pend +ĠS my +does n +Ġsp illing +Ġhyp ers +K ate +® , +ke pt +ĠP owered +Ġj a +ĠK lux +ard e +ab an +Ġ4 44 +Ġflatt ened +ĠImprove ments +urg a +ĠK und +Ġins cribed +Ġfac ult +Ġunpre pared +ĠCons umers +Ġsatisf ies +Ġpul monary +Ġinf iltration +Ġex ternally +Ġcongrat ulations +ag han +Ġair liner +Ġfl ung +Ġfly ers +G D +Ġsnipp ets +Ġrec ursive +Ġmaster ing +L ex +Ġovert ly +v g +Ġluck ily +Ġenc ro +ĠLanc et +ĠAbyss al +function al +Ġs ow +Ġsqu id +Ġnar ration +Ġn aughty +ĠHon our +ĠSpart ans +Ġsh atter +ĠTac oma +ĠCal ories +ĠR aces +Sub mit +Ġpurpose fully +w av +ĠY ok +F est +ĠG err +Met ro +Ġit iner +f amous +Ġ" { +in line +was her +Iss ue +ĠCL IENT +oz o +Vers ions +7 25 +ĠGl ock +Ġshield ed +ĠPC R +ENC Y +ĠWe ld +ĠSim pl +Ġredirect ed +ĠK ham +Ġ( > +Ġlab ou +Ġdi apers +ss l +Ġcell ar +organ isms +ore sc +ĠBer ks +did n +Sh ipping +C hest +Ġund one +Ġmillion aire +Ġc ords +ĠYoung er +appropri ately +Ġsequ els +u ve +ant icipated +Ġle wd +ĠSh irt +ĠDmit ry +V eter +Ġsl aying +ĠY ar +Ġcompl ication +I owa +ĠEric a +ĠBL M +g irlfriend +b odied +6 26 +19 63 +Ġintermedi ary +Ġcons olation +M ask +ĠSi em +ow an +Beg inning +Ġfix me +Ġculmin ated +Ġcon duc +ĠVolunte er +Ġpos itional +Ġgre ets +ĠDefin itions +Ġthink er +Ġingen uity +Ġfresh men +ĠMom ents +Ġ35 7 +ate urs +ĠFed Ex +s g +69 4 +Ġdwind ling +ĠBO X +sel age +Ġt mp +Ġst en +ĠS ut +Ġneighbourhood s +Ġclass mate +f ledged +Ġleft ists +Ġclim ates +ATH ER +ĠScy the +ul iffe +Ġs ag +Ġho pped +ĠF t +ĠE ck +ĠC K +ĠDo omsday +k ids +Ġgas ped +Ġmon iker +ĠL od +ĠC FL +t ions +r ums +fol ios +Ġm d +Ġunc anny +Ġtrans ports +ĠLab rador +Ġrail ways +Ġappl iance +ĠCTR L +æ Ģ +Pop ulation +ĠConfeder acy +Ġunb earable +Ġdors al +ĠIn form +op ted +ĠK ILL +Mar x +Ġhypoc ritical +q us +ĠN umerous +ĠGeorg ian +ĠAmbro se +ĠL och +Ġgu bernatorial +ĠX eon +ĠSupp orts +ens er +ee ly +ĠAven ger +19 65 +Ar my +Ġju xtap +Ġcho pping +ĠSpl ash +ĠS ustainable +ĠFin ch +Ġ18 61 +ict ive +at meal +ĠG ohan +Ġlights aber +ĠG PA +ug u +ĠRE PL +vari able +Ġher pes +Ġdesert s +ac iously +Ġsitu ational +week ly +ob l +Ġtext ile +ĠCorn wall +Ġcontrace ptives +ĠA ke +] - +ä¹ ĭ +: , +ĠW em +ĠB ihar +Ġ' . +Ġbe re +Ġanal ogue +ĠCook ies +Ġtake off +Whe el +Ġmaj estic +Ġcomm uting +0 23 +ĠCor pse +ass ment +min i +Ġgor illa +ĠAl as +ere e +Ġacquaint ances +ĠAd vantage +Ġspirit ually +Ġey ed +pm wiki +ĠE nder +Ġtrans lucent +Ġnight time +ĠIM AGES +5 45 +ĠK amp +ĠFre ak +Ġ ig +Port land +4 32 +ĠM ata +Ġmar ines +Ġh ors +ater asu +ĠAtt ribution +Ġ-------- - +Ġk ins +ĠBEL OW +++ + +Ġre eling +ol ed +Ġcl utter +ĠRel ative +Ġ4 27 +B US +Ġa vert +ĠChe ong +ĠA ble +ĠPry or +Develop er +Ġen cyclopedia +ĠUSA F +ĠG arry +Sp ain +Bl ocks +Ġexp osition +ĠGamer Gate +W OR +Ġstockp ile +Ġclot hed +ĠT one +ĠR ue +t umblr +Ġtreacher ous +Ġf rying +Ñ Į +ĠS ph +Ġrest raints +Ġemb odies +ĠG es +S afety +Ġnegoti ators +min ing +ĠAppalach ian +L OS +ĠJenn a +Ġpass ers +ç ĭ +sn ap +Ġshort en +creat or +Ġinn umerable +uther land +67 4 +ĠW OM +ĠAs cend +ĠArm ory +ĠTrans action +K ick +Ġsuit case +day Name +Ġwaste ful +mar riage +ĠMcC abe +ite ch +ĠO ss +Cl osure +ĠTreasure r +Ġindec ent +ĠD ull +Ġresid ences +19 59 +ĠS ettlement +Ham ilton +Ġself ies +ĠRank ing +ĠBark ley +ĠB ore +ĠW CS +ĠMar itime +ĠH uh +ĠForest ry +Ġcultiv ating +ĠBall ard +Ġg arrison +ĠSD L +9 30 +Ġnas cent +Ġirresist ible +Ġaw fully +\/ \/ +Ġequ ate +Ġanthrop ology +ĠSylv ia +Ġintest ine +Ġinnoc uous +cess ive +ag ra +ĠMet roid +G rant +8 55 +ģ ĸ +Ġ" _ +ãĥĥ ãĥī +Ġappra isal +ĠFred dy +04 6 +Ġ40 6 +Ġ18 30 +Ġd ocking +St atic +Ġp ont +ĠVolt age +ĠSt ead +ĠMort gage +ĠJon ah +Y L +CLASS IFIED +Ġas bestos +nik ov +Ġcoll agen +ĠOrb ital +P ocket +7 99 +Ġhy brids +inc hes +Ġinv oice +und y +Ġinequ alities +T rend +w ashed +B ALL +Ġluc id +ĠComment ary +Ġw itty +Br andon +Ġbru ising +Ġ6 20 +es cent +box ing +P OL +Ġ3 78 +R ect +Ġlic ences +ĠMcG ee +p ressed +D anny +Ġj ammed +ord inate +Ġle th +Ġdistingu ishes +ĠYam aha +IL S +ĠH ume +ĠC ategories +Rober ts +Ch art +Ġbeet le +ĠGra veyard +Ġ($ ) +o ÄŁ +Ġtw ilight +are lla +á ½ +Ġbooth s +ĠH HS +ĠFeld man +Ġexcav ation +Ġphilosoph ies +at ography +ĠGar age +te chnology +Ġunfor gettable +Ġver ifying +Ġsubord inates +E ls +Ġne b +G aming +EN A +ĠAchieve ment +it ters +ĠG abe +Ġd umps +for cer +Ġpo ignant +ĠM BA +ĠHe idi +ime i +Ġm ages +Ġliber ate +Ġcircum cised +ĠMer maid +ĠMat th +t ogether +ĠW ichita +Ġstore front +ĠAd in +V II +Four th +Ġexplore rs +W ER +Not able +Bro ok +m ens +F aith +-------- - +ĠJ ou +¬ ¼ +Ġpine apple +Ġam alg +el n +ark able +ĠãĤµ ãĥ¼ãĥĨãĤ£ +ĠãĤµãĥ¼ãĥĨãĤ£ ãĥ¯ãĥ³ +Ġov arian +ĠE choes +Ġhairc ut +Ġp av +Ġch illed +anas ia +Ġsty led +Ġd ab +ni per +Ġminister ial +ĠD UP +T an +Ġsul ph +ĠD eter +ĠBo hem +od an +Ġeduc ator +â ĵĺ +sp ir +Ch icken +ĠE leanor +Ġqu i +Ġheav iest +Ġgrasp ed +U RA +Ġcro oked +Jess ica +pro blem +Ġpred etermined +Ġman iac +Ġbreath s +ĠLauder dale +Ġh obbies +y z +Cr ime +Ġcharism a +d L +Ġle aping +Ġk ittens +Ang elo +ĠJ ACK +ĠSu zanne +Ġhal ting +ENT ION +Ġswall owing +ĠEarthqu ake +Ġeight eenth +ĠN IC +ĠIN F +ĠCons cious +Ġparticular s +circ le +7 40 +Ġbene volent +Ġ7 47 +Ġ4 90 +Ġr undown +ĠVal erie +ĠB UR +Ġcivil isation +ĠS chn +W B +ot ide +intern ational +Ġj ohn +Ġ19 02 +Ġpe anuts +Ġflav ored +k us +Ġro ared +Ġcut off +é £ +Ġorn ament +Ġarchitect ures +Ġ3 69 +ol or +ĠWild e +ĠC RC +ĠAdjust ed +Ġprov oking +land ish +Ġrational ity +Ġjust ifies +Ġdisp el +Ġa meric +ĠPol es +Ø © +Ġen vis +ĠD oodle +ä½ ¿ +igs aw +auld ron +Techn ical +T een +up hem +ĠX iang +Ġdetract ors +ĠZ i +ĠJournal ists +Ġconduc ive +ĠVolunte ers +Ġs d +Know ing +Ġtrans missions +ĠPL AN +ĠL IB +Ġall uded +Ġob e +Ġd ope +ĠGold stein +Ġwavelength s +ĠDest ination +nd a +ug i +Ġattent ive +ĠLe an +ral tar +Ġman g +mb uds +ak ings +b ender +Ġacc ol +Ġcraw led +N OW +Min nesota +Ġflour ished +ĠZ up +ĠSuper visor +ĠOliv ier +Ex cellent +Ġwid en +D one +Ġw ig +Ġmiscon ceptions +Cor p +W an +Ġvener able +ĠNot ably +ĠKling on +an imate +Bo ost +ĠS AY +miss ing +ibli ography +mel on +Ġpay day +Ø ³ +bo le +Ġve iled +ĠAl phabet +It alian +Ġever lasting +ĠR IS +ĠC ree +rom pt +Ġh ating +Ġgrin ning +Ġge ographically +OS H +Ġwe eping +ĠÂłĠÂłĠÂłĠÂł ĠÂłĠÂłĠÂłĠÂł +Ġimpe cc +Let ter +Ġblo ated +PL A +ĠFe in +Ġper sever +Th under +Ġa ur +ĠR L +Ġpit falls +âĸ º +Ġpredomin ant +Ġ5 25 +7 18 +AP E +7 14 +Ġfarm land +ĠQ iao +Ġv iolet +ĠBah amas +Ġinflic ting +ĠE fficiency +Ġhome brew +Ġundert ook +Ġcur ly +ĠHard ing +man ia +59 6 +Ġtem pered +Ġhar rowing +ĠP ledge +ĠFranken stein +è ª +M otion +Ġpredict ably +ĠExpl osion +oc using +er d +col o +FF ER +Ġback field +ĠV IDE +ue bl +N arr +ĠArg ument +Ġgen omic +Ġbout ique +Ġbatt ed +ĠB inary +Ġg amb +ĠRh ythm +67 3 +Ġa float +ĠOlymp ia +Y ING +Ġend if +is in +Ġwin ters +Ġsc attering +I v +D istance +Ġtr u +ĠCom fort +Ġne xus +Ġair flow +ĠByz antine +p ayers +con i +ĠB etsy +D eal +ĠN ug +ĠContin ent +red ibly +Ġoptim izing +al beit +Ġec static +ĠPro to +ç · +iv ot +âĸ Ħ +em p +rou nder +Ġcl out +ĠI ST +66 3 +ĠDoll ars +ĠD AC +Ġsubsc ribed +Ġrehears al +Ġam ps +ĠSh ang +es m +Ġspr inkle +Ġassail ant +ĠO o +ĠCoin base +T act +Ġret ina +Ġn uns +R ON +att o +Ġj ug +ĠSV G +Ġb ikini +ĠFI LE +ĠFound ers +ep ort +ĠK P +Ġrest ores +ĠTh ick +Ġash ore +Ġappro vals +R ender +M AG +G raham +ĠCort ana +ãĥ³ ãĤ¸ +ss h +or ians +ars ity +ĠInsp ired +u pper +Ġsign alling +Ġreb uke +Ġfl ares +Ġdownt ime +Stud ies +Ġstagn ation +ĠSequ ence +Ġgr unt +Ġass ures +ĠPL A +59 2 +Ġintra ven +d epend +Sus an +ĠManz iel +Man ia +Cont ract +Ġsl ams +Ġcult ured +Ġcred itor +L IST +ĠH UM +ĠChatt anooga +serv ed +Ġclo aked +ĠF TP +p owder +ĠSt ella +uct ive +Ġcheap ly +ĠMU CH +ĠGalile o +Ġsu ites +spe ech +Ġdeliber ations +ĠCh ips +« ĺ +Bal ance +ĠWyn ne +ĠAk ron +Ass et +Ġhon oured +Ġed ged +Like wise +anim ous +ĠW age +ĠEz ek +ad vertisement +ĠRT X +ĠM AD +Ġmigr ating +ĠS QU +Ġ4 75 +Ed ited +Ġshorth and +ĠBas ics +Ġcro tch +ĠEV EN +Ġv m +effic iency +Ġcal ves +ĠF rie +ĠBrill iant +Ġstri kers +Ġrepent ance +Ġarter ies +r l +B ed +h ap +Ġcrypt ography +ĠSab res +Ġ4 14 +vi ks +ih ara +aps es +T alking +Ġintertw ined +Ġdoc ks +Ġalle le +ĠArt ifact +ĠH IM +t orn +ç ķ +Ġop acity +ĠE ly +os uke +Ġn ipple +Ġhand written +ĠV K +ĠChamber lain +ĠLa os +ig raph +g row +Ġtr illions +Ġdescend ant +ĠSail or +as uring +Ġce ilings +ĠWare house +f lying +ĠGl ow +Ġn ont +Ġmiscar riage +Ġrig s +Ġmin istries +Ġelabor ated +Ġdel usional +ĠHum ane +Ġ3 79 +n ets +Ġblack out +add ers +Ġn p +ĠT ire +ro sc +Ġsub div +Ġlink age +Ġchron ological +ĠHER O +Ġres ettlement +ĠVin yl +Ġpast oral +ĠMob il +ĠBar bar +Co oldown +ĠF ritz +c riminal +re pe +Ġbell ig +ĠBre ed +Ġ4 18 +Ġsem blance +ij k +Ġcur tail +Ġclin ch +cont ained +ĠProm pt +ast on +Ġw i +Ġpursu its +5 15 +ĠGl oss +Ġfl ips +Ġcoup ons +Ġcl oning +ĠLike ly +Rem oved +ĠQu artz +r ices +ĠSpe ars +Ġp ious +Ġdep reciation +ĠD are +oun ces +am az +O nt +Ġp innacle +d ocker +0 26 +ĠW yr +ĠPro per +Ë Ī +n il +By tes +Ġseek er +t rial +Ġunf olds +ĠMar se +Ġextravag ant +ĠSurviv ors +RED ACTED +ĠSpeed way +ĠCra igslist +sub mit +ĠGener ations +Ġup holding +Ġblood stream +ĠMiss ions +ĠL awn +Ġlim bo +ene i +H uh +ĠWild cats +pre p +ĠMark us +ĠFor bidden +rit ic +IN O +Ġexhib iting +requ ent +ch uk +Ġhabit ual +ĠComp atibility +Dr ag +RIP T +uj ah +GR OUND +Ġdelinqu ent +Ġburn er +Ġcontempor aries +Ġgimm ick +load s +Ġno zzle +p odcast +ĠW ak +ĠStat en +ĠK uh +ãģ ĵ +inter rupted +Ġinv incible +ĠBurn ett +cig arette +ĠPeb ble +ĠTem porary +ĠMar ino +58 2 +Ġwast eland +ident ly +T x +Ġr ite +ĠPan asonic +ĠM iddles +ĠHort on +ae us +Ġc uring +Ġm ats +Ġadj ourn +Ġfears ome +pe z +bo ats +Ġpro pell +Ġconflic ted +ĠAng er +Ġinsurg ent +K arl +Ġco ales +Ġsouth western +Ġdis su +ĠO vert +******** **** +Ġbox ed +ĠBr une +aa a +Ġgard ening +ĠEng el +tr acks +Ġpur ified +Ġplace holder +ĠL ikes +Ġd an +G ab +Ġe ct +ĠF aw +ĠEl iot +Ġ' , +otrop ic +ĠRu in +hed on +Ġca ul +Ġa ft +ĠCad illac +gh a +ass ian +ud eb +ĠT ick +Ġadjust s +AR GET +5 37 +isc he +ant y +ĠFried rich +ĠBl izz +ĠA OL +Camp aign +Ġmamm al +ĠVe il +ĠK ev +ĠMaur it +ĠDam ien +N ation +E astern +Ġ{ : +Ġ= ================================ +Ġstereotyp ical +Ġatt ic +ĠCy borg +requ ire +Ġaward ing +ĠPap ua +bt n +b ent +B oo +Ġ( = +ĠX ander +ĠSomers et +Ġcatch y +Ġcert ify +STR UCT +Ġit al +Ġt ides +ĠBr ands +G ray +comp etitive +Ġcur ator +ĠD G +omin ium +ĠGM Os +ci ating +ĠCarm en +ow ard +Balt imore +Ġr gb +C u +Ġwip es +spe ll +IT NESS +Ġsummar izes +ĠRe vis +Ġwhistlebl owers +ĠBre ach +Ġcro chet +k os +ews ki +Ġrep et +Ġcrim son +ĠKar achi +read able +dim ension +ĠI gor +ild ed +ĠZ ed +ĠKe ane +ĠCos metic +DE P +Ġretreat ing +ĠU A +ens ical +Ġd usk +ĠDick ens +Ġaren as +ĠPass age +level s +Ġcur v +P ope +Ġch ores +ĠEl ise +ĠComp ass +b ub +Ġmamm alian +ĠSans krit +ĠAN C +ĠCr ack +Q ual +L aun +amp unk +Ġlearn ers +Ġglam orous +Ġfur the +erm ott +c and +Gener ic +Ġnarr ated +Ġdisorder ly +ĠTrans actions +ĠDet ention +ĠR oku +Ä į +Ġunder statement +ĠS aur +ĠRodrig o +ĠAS AP +S in +Ġre joice +Method s +Ġelectro de +Ġworsh ipped +Ġid i +ĠPhys icians +Ġpop up +Ġde ft +ĠRem oval +ĠBu enos +ver bs +Ġfun k +ush a +rict ion +ore a +ĠBang alore +ĠKen obi +zz i +Ġnorm ative +Ġgobl ins +Ġcaf es +ĠUN CLASSIFIED +ĠF ired +S IGN +Ġs clerosis +ĠV oter +ĠSon ny +ĠExt end +ĠEV s +Ar senal +Ġp si +Ġwid est +ĠT us +Ġlo oms +Ġjust ifying +ĠGr anger +è ¯ +Ref er +58 3 +Ġflour ishing +ab re +Ġr ave +ĠCont ra +Ġ18 98 +Add s +Ġf ul +ĠCo oke +some one += # +67 1 +Ġy ak +Ġar te +ĠMis cellaneous +ĠDet ection +ĠCl ancy +â ģ +ass ies +Ġval iant +ĠFemin ist +cor ruption +V el +P ear +Ġsucc inct +Ġquick est +k w +Ġsp itting +ĠL ibraries +åħ ī +ant z +D ad +ĠSpec ifications +rup ulous +and r +RES ULTS +Ġsnow ball +Ġpred is +ĠB axter +ĠNurs ing +ĠCh aff +s we +Ġout age +Ġnest ing +Ġnotor iety +tr igger +on ite +j on +Ġf ou +ook ed +ĠCelebr ity +re ality +Ġfat ig +Ġhug ging +Ġbother s +ĠPan zer +ĠCh andra +fig ured +Ġvol ts +ĠCloud s +Ġfee ble +ĠCur ve +ĠAs us +78 6 +abs or +ĠV ICE +ĠH ess +Ġmanufact ures +Ġgri zz +ĠPower ful +ac id +Ġsub sections +ĠKrug man +ĠAl ps +is u +Ġsequ est +ĠUlt ron +ĠT inker +ĠGo ose +Ġmism atch +Att orney +Ġmorph ology +ĠSix ers +ut tered +ĠE LECT +gr an +Rus sell +ĠG SL +Ġfort night +Ġ. ) +Ġapost le +pr one +el ist +Unt itled +ĠIm plementation +ist ors +Ġtank er +Ġpl ush +Ġattend ants +ĠT ik +ĠGreen wich +ĠY on +ĠSP L +cell s +unt led +S olution +ĠQu é +Ġvac ated +Ġupt ick +ĠMer idian +æ ĥ +ĠDr ill +9 25 +58 4 +Ġrenov ated +ĠKub rick +zy k +Ġl ousy +pp el +ohyd rate +ĠI zzy +lesi astical +CC C +ĠAj ax +Ġad apters +ĠPetra eus +Ġaffirm ation +ĠST OR +le ms +ad oes +ĠConstantin ople +Ġp onies +Ġl ighthouse +Ġadherent s +ĠBre es +omorph ic +Fight ing +Ġpl aster +ĠP VC +ĠOb st +Ġdear ly +ĠTo oth +icks on +Ġsh aming +P lex +A gg +Ġâ̦ " +Ġsub reddits +Ġpige on +ĠResident ial +ĠPass ing +Ġl um +ĠP ension +Ġpessim istic +Ġ4 32 +z inski +c ade +0 75 +Ġapolog ised +iy ah +Put ting +Ġgloom y +ĠLy me +=-=-=-=- =-=-=-=- +ĠT ome +ĠPsych iatric +ĠH IT +c ms +ap olog +Ġbreak er +Ġdeep en +Ġtheor ist +ĠHigh lands +Ġb aker +Ġst aples +Ġinterf ered +ĠAb ortion +jo ined +ch u +Ġform ulate +Ġvacc inations +Ġban ter +phe us +Ġoutfield er +ĠM eter +Ġ# #### +Ġ18 95 +Ġnarrow ing +ĠST ORY +f p +ĠC ST +ign ore +Ġproclaim ing +ĠR U +ĠB ALL +yn a +65 3 +Ġpos it +P RE +59 4 +ĠRegist rar +ĠPil grim +ic io +Ġpre tt +Ġlif eless +Ġ__ _ +Ne igh +ĠCh urches +orn o +Ġor cs +Ġkind red +ĠAud it +Ġmillenn ial +ĠPers ia +g ravity +ĠDis ability +ĠD ARK +W s +od on +Ġgrand daughter +ĠBro oke +ĠA DA +ER A +Ġpick ups +ĠWil kinson +ĠSh ards +ĠN K +Ġexp el +ĠKis lyak +Ġj argon +Ġpolar ized +ian e +Pub lisher +Ġreb utt +Ġapprehens ion +ĠK essler +Ġpr ism +F UL +19 64 +ĠL oll +ä ¿ +le thal +Å Ł +Ġg hetto +Ġb oulder +ĠSlow ly +ĠOsc ars +ĠInst ruction +ĠUl tr +ĠM oe +N ich +ĠP ATH +( * +ĠRE LEASE +un ing +rou se +en eg +Ġre imb +ĠDet ected +Do S +Ġster ling +Ġaggreg ation +ĠLone ly +ĠAtt end +hig her +Ġairst rike +ks on +SE LECT +Ġdef lation +ĠHer rera +C ole +rit ch +Ġadvis able +F ax +Ġwork around +Ġp id +mort em +ers en +Ġtyp o +Ġal um +78 2 +ĠJam al +script s +Ġcapt ives +ĠPres ence +ĠLie berman +angel o +Ġalcohol ism +ass i +Ġrec ite +Ġgap ing +Ġbask ets +ĠG ou +Brow ser +ne au +Ġcorrect ive +und a +sc oring +ĠX D +Ġfil ament +Ġdeep ening +ĠStain less +Int eger +Ġbu ggy +Ġten ancy +ĠMub arak +Ġt uple +ĠD roid +ĠS itting +Ġforfe it +ĠRasm ussen +ixt ies +es i +ĠKim mel +Ġmetic ulously +Ġap opt +ĠS eller +08 8 +ec ake +hem atically +T N +Ġmind less +Ġdig s +ĠAcc ord +ons ense +em ing +br ace +Ġe Book +ĠDist ribut +ĠInvest ments +w t +] ), +beh avior +56 3 +Ġbl inding +ĠPro testers +top ia +Ġreb orn +ĠKel vin +ĠDo ver +ĠD airy +ĠOut s +Ġ[ / +Ï Ģ +b p +ĠVan ity +ĠRec ap +ĠHOU SE +ĠF ACE +Ġ4 22 +69 2 +ĠAnt ioch +cook ed +Ġcoll ide +Ġa pr +Ġsle eper +ĠJar vis +Ġalternative ly +ĠLe aves +ĠM aw +Ġantiqu ity +ĠAdin ida +Ġab user +Poké mon +Ġass orted +ĠRev ision +ĠP iano +ĠG ideon +O cean +Ġsal on +Ġbust ling +ogn itive +ĠRah man +Ġwa iter +Ġpres ets +ĠO sh +ĠG HC +oper ator +Ġrept iles +Ġ4 13 +ĠG arr +ĠCh ak +Ġhas hes +Ġfail ings +Ġfolk lore +Ġab l +ĠC ena +ĠMac Arthur +ĠCOUR T +Ġperipher y +app ers +Ġreck oned +ĠInf lu +ĠC ET +Ġ3 72 +ĠDefin itive +ass ault +4 21 +Ġreservoir s +Ġd ives +ĠCo il +DA Q +Ġvivid ly +ĠR J +ĠBel lev +Ġec lectic +ĠShow down +ĠK M +ip ed +reet ings +ĠAs uka +L iberal +ĠÏ Ħ +Ġbystand ers +ĠGood win +uk ong +S it +ĠT rem +Ġcrim inally +ĠCirc us +ch rome +88 7 +Ġnan op +ĠOb i +ĠL OW +o gh +ĠAuth ors +ob yl +Ur ban +Ġt i +ĠWe ir +t rap +ag y +Ġparent heses +Ġout numbered +Ġcounter productive +ĠTob ias +ub is +P arser +ST AR +Ġsyn aptic +ĠG ears +Ġh iber +Ġdebunk ed +Ġex alted +aw atts +H OU +Ch urch +ĠPix ie +ĠU ri +ĠForm ation +ĠPred iction +C EO +Ġthro tt +ĠBrit ann +ĠMad agascar +ë ĭ +Ġbill boards +ĠRPG s +ĠBe es +complete ly +F IL +Ġdoes nt +ĠGreen berg +re ys +Ġsl ing +Ġempt ied +ĠPix ar +ĠDh arma +l uck +ingu ished +Ġend ot +Ġbab ys +05 9 +che st +r ats +Ġr idden +Ġbeet les +Ġillum inating +Ġfict itious +ĠProv incial +Ġ7 68 +Ġshe pherd +ĠR ender +Ġ18 96 +C rew +Ġmold ed +ĠXia omi +ĠSp iral +Ġdel im +Ġorgan ising +Ġho ops +ĠBe i +z hen +Ġfuck in +Ġdec ad +Ġun biased +am my +sw ing +Ġsmugg led +Ġk ios +ĠP ERSON +ĠInquis itor +Ġsnow y +Ġscrap ing +ĠBurg ess +P tr +ag ame +R W +Ġdro id +ĠL ys +ĠCass andra +Jac ob +Ġ35 4 +Ġpast ure +Ġfr anc +ĠScot ch +ĠEnd s +ĠI GF +def inition +Ġhyster ical +ĠBrown e +77 1 +Ġmobil ization +æ ķ +iqu eness +Th or +Ġspear headed +Ġembro iled +Ġconject ure +jud icial +Ch oice +Ġpaper back +P ir +Ġrec overs +ĠSur ge +ĠSh ogun +ĠPed iatrics +ãģ ł +Ġsweep s +ĠLabor atories +ĠP acks +al us +add in +Ġhead lights +g ra +Ev idence +COL OR +Ad min +Ĭ ± +Ġconco ct +s ufficient +Ġun marked +Ġrich ness +Ġdiss ertation +Ġseason ing +Ġg ib +ĠM ages +un ctions +ĠN id +che at +ĠTM Z +c itizens +ĠCatholic ism +n b +Ġdisemb ark +ĠPROG RAM +a ques +Ty ler +Or g +ĠSl ay +ĠN ero +ĠTown send +IN TON +te le +Ġmes mer +9 01 +Ġfire ball +ev idence +aff iliated +ĠFrench man +ĠAugust a +0 21 +Ġs led +Ġre used +ĠImmun ity +Ġwrest le +assemb led +Mar ia +Ġgun shots +ĠBarb ie +Ġcannabin oids +ĠTo ast +ĠK inder +IR D +Ġre juven +Ġg ore +Ġrupt ure +Ġbre aching +ĠCart oon +Ġ4 55 +ĠPale o +6 14 +Ġspe ars +ĠAm es +ab us +Mad ison +GR OUP +Ġab orted +y ah +Ġfel on +Ġcaus ation +Ġprep aid +Ġp itted +op lan +ĠShel ley +ĠRus so +ĠP agan +Ġwill fully +ĠCan aver +und rum +ĠSal ary +ĠAr paio +read er +ĠR ational +ĠOver se +ĠCa uses +Ġ* . +Ġw ob +Ke ith +ĠCons ent +man ac +77 3 +6 23 +Ġfate ful +et imes +Ġspir ited +ĠD ys +Ġhe gemony +Ġboy cot +ĠEn rique +em outh +Ġtim elines +ĠSah ara +ĠRel ax +ĠQuin cy +ĠLess ons +ĠE QU +SE A +N K +ĠCost co +Incre ase +Ġmotiv ating +ĠCh ong +am aru +ĠDiv ide +Ġped igree +ĠTasman ia +ĠPrel ude +L as +9 40 +57 4 +Ġch au +ĠSp iegel +un ic +-- > +ĠPhil ips +ĠKaf ka +Ġuphe aval +Ġsent imental +Ġsa x +ĠAk ira +ser ial +Mat rix +Ġelect ing +Ġcomment er +ĠNeb ula +ple ts +ĠNad u +ĠAd ren +Ġen shr +ĠR AND +fin ancial +ĠCly de +uther ford +Ġsign age +Ġde line +Ġphosph ate +rovers ial +f ascist +ĠV all +ĠBeth lehem +Ġfor s +Ġeng lish +S olid +N ature +Ġv a +ĠGu ests +Ġtant al +Ġauto immune +;;;;;;;; ;;;; +ĠTot ally +ĠO v +Ġdef ences +ĠCoc onut +Ġtranqu il +Ġpl oy +Ġflav ours +ĠFl ask +ãĤ¨ ãĥ« +ĠWest on +ĠVol vo +8 70 +Ġmicro phones +ver bal +R PG +Ġi ii +; } +0 28 +Ġhead lined +Ġprim ed +Ġho ard +ĠSh ad +ĠEN TER +Ġtri angular +Ġcap it +l ik +ĠAn cients +Ġl ash +Ġconv ol +Ġcolon el +en emy +G ra +Ġpub s +ut ters +Ġassign s +ĠPen et +ĠMon strous +ĠBow en +il ver +H aunted +ĠD ing +start ed +pl in +Ġcontamin ants +ĠDO E +ff en +ĠTechn ician +R y +Ġrob bers +Ġhot line +ĠGuard iola +ĠKau fman +row er +ĠDres den +ĠAl pine +E lf +Ġf mt +ĠS ard +urs es +g pu +Un ix +Ġunequiv ocally +ĠCitizens hip +qu ad +m ire +ĠS weeney +B attery +6 15 +Ġpanc akes +Ġo ats +M aps +ĠCont rast +mbuds man +ĠE PS +Ġsub committee +Ġsour cing +Ġs izing +ĠBuff er +ĠMand atory +Ġmoder ates +ĠPattern s +ĠCh ocobo +ĠZ an +ĠSTAT ES +ĠJud ging +ĠIn her +* : +Ġb il +ĠY en +Ġexh ilar +oll ower +z ers +Ġsn ug +max imum +Ġdesp icable +ĠP ACK +ĠAn nex +Ġsarcast ic +Ġlate x +Ġt amp +ĠS ao +b ah +ĠRe verend +ĠChin atown +ĠA UT +d ocumented +ĠGA BA +ĠCan aan +ĠÙ ħ +Ġgovern s +pre v +E sc +ĠEst imates +OS P +Ġendeav our +ĠCl osing +omet ime +every one +Ġwor sen +Ġsc anners +Ġdev iations +ĠRobot ics +ĠCom pton +Ġsorce rer +Ġend ogenous +Ġem ulation +ĠPier cing +ĠA ph +ĠS ocket +Ġb ould +ĠO U +ĠBorder lands +Ġ18 63 +G ordon +ĠW TO +Ġrestrict s +Ġmosa ic +Ġmel odies +ç Ħ +T ar +Ġdis son +ĠProv ides +Ġ ...... +b ek +F IX +Ġbro om +ans hip +Do ctors +Ġner ds +ĠReg ions +na issance +Ġmet e +Ġcre pt +pl ings +Ġgirlfriend s +kn it +ig ent +ow e +Ġus hered +ĠB az +M obil +4 34 +ĠPres ents +orig in +Ġins omnia +ĠA ux +4 39 +ĠCh ili +irs ch +G AME +Ġgest ation +alg ia +rom ising +$ , +c row +ĠIn spection +at omic +Rel ations +J OHN +rom an +ĠClock work +ĠBak r +m one +M ET +Ġthirst y +Ġb c +Ġfacult ies +R um +Ġnu ance +ĠD arius +ple ting +fter s +etch up +Reg istration +ĠK E +R ah +Ġpref erential +ĠL ash +ĠH H +Val id +ĠN AV +Ġstar ve +ĠG ong +z ynski +ĠAct ress +Ġw ik +Ġun accompanied +lv l +Br ide +AD S +ĠCommand o +ĠVaugh n +Wal let +Ġho pping +ĠV ie +Ġcave ats +Ġal as +if led +ab use +66 1 +Ġib n +Ġg ul +Ġrob bing +t il +IL A +Ġmit igating +Ġapt ly +Ġty rant +Ġmid day +ĠGil more +ĠDe cker +Ġ§ § +part ial +Ex actly +Ġphen otype +Ġ[+ ] +ĠP lex +ĠI ps +vers ions +Ġe book +Ġch ic +g ross +":" "},{" +ĠSur prisingly +M organ +Ġresid ues +ĠConf ederation +in feld +Ġl yr +mod erate +Ġperpend icular +V K +Ġsynchron ized +Ġrefres hed +Ġad ore +ĠTor ment +ol ina +Ġ26 00 +Item Tracker +Ġp ies +ĠF AT +ĠR HP +0 48 +ĠRES P +ĠB J +all ows +P and +Ġunw elcome +ĠV oc +ĠBast ard +ĠO W +ĠL AR +ĠHeal er +Environment al +ĠKen yan +ĠTr ance +ĠP ats +Ġali ases +ĠGar field +Ġcampaign er +Ġadvance ments +ĠOkin awa +ĠC oh +ows ky +Ġstar ved +Ġsize able +Ġ: -) +Ġm RNA +Ġsusp ensions +ist ar +Scot land +Pr in +-------------------------------- ---------------- +Ġ50 2 +Ġteasp oons +Ġ10 50 +Ġcoerc ive +ĠMason ic +edd ed +ĠPass enger +Ġl att +Ġbr aces +ĠSt eal +ĠNY T +ĠK ats +ĠCel est +ae z +T u +ĠCoul ter +ðŁ ĺ +Fl ickr +ĠWil mington +ith s +++ ; +Ġv ending +Ġneg ro +ĠPh i +ĠYellow stone +Call back +Ġsh ampoo +ĠSh ades +w at +Ġsuper human +Ġridic uled +Ġhol iest +om bo +Ġintern s +Ġh one +ĠPar agu +UR I +Ġd angling +ãĤ » +so v +ict ional +av ailability +Ġrev ocation +Ġd ow +in ic +ĠTHE IR +Ġis o +Ġout ings +ĠLeth al +Ġ) )) +Ġinacc ur +Ġout landish +Ġan us +let ico +id on +l ol +Ġun regulated +Ġsuccumb ed +Ġc uff +ĠWast eland +let al +Ġsub str +Ġcoff ers +Ġautom akers +ov i +ĠX ue +ĠDayton a +Ġjar ring +Ġf umes +Ġdisband ed +z ik +itt on +Ġstriking ly +Ġsp ores +Ad apter +.) : +ĠLynd on +ival ry +Ġor ally +Ġtumult uous +Ġdisple asure +Ġcon es +or rect +Ġappe ase +Ġder by +ĠTrip oli +ĠAl ess +Ġp oked +ĠGu ilty +v P +En ough +Ġorig inals +6 99 +Ġrabb i +Ġproverb ial +Ġpostp one +el ope +ĠMist y +Ġstaff ed +ĠUn employment +redit ary +Ġdilig ent +re comm +me asures +as in +8 25 +Ġpond s +Ġmm ol +ĠS AR +ĠC ARE +Ġ3 71 +Ġclen ched +ĠCors air +Ġcaric ature +z n +att ach +ĠSch ro +spe ak +p ainted +ĠS uc +ĠE NT +Ġcell ul +ĠP aid +di agn +WH ERE +Ġtext ed +B arn +Ġret racted +ĠRe ferred +S av +Ġup keep +Ġwork places +ĠTok ens +Ġampl ify +cl inical +Ġmult ic +mber g +Ġconvol uted +Reg ion +5 65 +ĠTop ic +Ġsn ail +Ġsal ine +Ġins urrection +ĠPet r +f orts +B AT +ĠNav ajo +Ġrud imentary +ĠLak sh +OND ON +Me asure +Ġtransform er +ĠGodd ard +Ġcoinc ides +ir in +R ex +ĠB ok +qu it +Ġshotgun s +Ġprolet arian +Ġsc orp +ĠAd a +5 14 +Ġsl ander +record ed +Ġemb ell +ris ome +Ġapolog izing +ĠMul cair +ĠGib raltar +Cl a +Ġall ot +ĠAtt ention +Ġ4 33 +le ave +Ġwh ine +ĠIss a +ĠFa ust +ĠBar ron +hen y +Ġvictim ized +J ews +Ġnurt uring +ett el +W inged +ĠSub tle +Ġflavor ful +ĠRep s +eng ed +call back +Ġdirection al +Ġcl asp +ĠDirect ions +plan et +icult ure +Hel per +ic ion +ac ia +Ġç ¥ŀ +Ġsur ges +Ġcan oe +ĠPrem iership +be en +Ġdef ied +ĠTro oper +Ġtrip od +Ġgas p +ĠE uph +ĠAd s +vern ight +high ly +R ole +Ġent angled +ĠZe it +6 18 +ĠRust y +Ġhaven s +ĠVaugh an +HA EL +ĠSER VICE +/ , +Ġstr icken +Ġdel usions +Ġb is +ĠH af +Ġgrat ification +Ġent icing +UN CH +Ad ams +ĠOL ED +ĠBeet le +Ġ18 99 +ĠSO FTWARE +ateg or +V L +ĠTot em +ĠG ators +AT URES +Ġimped ance +Reg istered +ĠC ary +ĠAer ial +on ne +en ium +Ġd red +ĠBe g +Ġconcurrent ly +Ġsuper power +ĠX an +j ew +imes ter +ĠDick inson +âĶ ģ +F la +Ġp ree +ĠRoll ins +© ¶æ +Ġden omination +ĠL ana +5 16 +Ġinc iting +sc ribed +j uries +ĠWond ers +app roximately +Ġsusp ending +Ġmountain ous +ĠL augh +oid al +N s +Det ect +) = +ĠL uthor +ĠSchwarz enegger +ĠMull er +ĠDev i +ec ycle +J ar +6 13 +ĠL ongh +B ah +ĠSP ORTS +n w +Ġref inement +Ġwater ways +Ġd iner +Bl ade +68 3 +F ac +Ġinitial s +Ġro g +Ġparan ormal +B UT +Ġ[ ( +ĠSw anson +ĠM esh +âĸ ¬ +Impro ve +ĠRad iation +ĠEst her +ĠE sk +ĠA ly +ik y +Ġir rad +ĠBuck ingham +Ġref ill +Ġ. _ +Re pe +CON CLUS +Ġdifferent iated +Ġchi rop +ĠAt kins +Pat tern +Ġexc ise +Ġcab al +N SA +ĠST A +ĠS IL +ĠPar aly +Ġr ye +ĠHow ell +ĠCount down +ness es +alys ed +Ġres ize +ãĤ ½ +Ġbudget ary +ĠStr as +w ang +Ġap iece +Ġprecinct s +Ġpe ach +Ġsky line +Ġ35 3 +pop ular +App earances +ĠMechan ics +ĠDev Online +S ullivan +Z en +Ġp u +op olis +5 44 +Ġde form +Ġcounter act +ĠL ange +Ġ4 17 +Con sole +77 4 +Ġnodd ing +Ġpopul ism +Ġhe p +Ġcoun selling +compl iance +U FF +Ġunden iably +Ġrail ing +ĠHor owitz +ĠSim one +ĠBung ie +Ġa k +ĠTal ks +x ff +fl ake +Cr ash +Ġsweat y +Ġban quet +ĠOFF IC +Ġinvent ive +Ġastron omer +ĠStam ford +ĠSc are +ĠGRE EN +olic ited +Ġr usher +Ġcent rist +ight ing +Ġsub class +Ġdis av +Ġdef und +ĠN anto +oci ate +m ast +Ġpac if +Ġm end +e ers +imm igration +ESS ION +Ġnumber ing +Ġlaugh able +ĠEnd ed +v iation +em ark +P itt +Ġmetic ulous +ĠL F +Ġcongrat ulated +ĠBir ch +Ġsway ed +Ġsemif inals +Ġhum ankind +m atter +ĠEqu ip +opa usal +S aid +ĠLay out +Ġvo icing +Ġth ug +Ġporn ographic +I PS +Ġmo aning +Ġgriev ance +Ġconf essions +esc al +TEXT URE +Aut hent +os aurus +P urchase +Ġreleg ation +al ter +ĠÂł Âł +Ġr iddled +Ġo gre +ĠLow ell +Occ up +E at +ĠHy der +ĠAdvis er +Com merce +H unt +ĠOr th +ĠComp etitive +ĠCL A +CD C +Ġsal ads +F le +Ġindustrial ized +` , +ĠO WN +Ġbec k +ĠPart icularly +oub t +Ġm M +ĠHuss ain +ĠChen nai +Ġ9 20 +Ġappoint ing +ĠCull en +,,,, ,,,, +Ġp ores +ver ified +Ġbi ochemical +em ate +Ġcoward ly +ĠHels inki +ĠEthiop ian +S OURCE +ER C +est ro +Ġbi otech +ĠS our +Ġbrew er +Bloom berg +Ġintens ify +Gl ass +an co +ĠF DR +gre SQL +ĠF ires +©¶æ ¥µ +ec o +100 1 +ĠHom eless +Ġinstant aneous +ĠH aste +ig el +D iamond +Ġp aving +Ġland fill +Ġd ads +h oun +: ] +Ġinc endiary +ĠLiving ston +ĠHil bert +ĠChe cks +st yles +in ators +ĠCl ive +ph rine +Ġchimpan zees +Ġp all +ĠJ M +ĠAad haar +ð Ŀ +Ġachie vable +dis abled +P ET +OOOO OOOO +M ot +Ġint angible +Ġbal let +ĠWe bs +ĠEst imated +Effect s +Ġb ailed +Josh ua +Ġturb ulence +Ġoccup ant +ĠDay light +Ġ36 1 +me et +Ġstat ically +Ġon look +Ġk i +il legal +Ġvel vet +Ġdehyd ration +Ġacqu ies +ĠRe z +ak ura +ĠU pton +at ro +Ġincomp rehensible +Ġback door +ĠRh ino +7 27 +Ġmath s +) + +Ġhe resy +Ġd f +ĠRoc he +ĠL ydia +Ġpanc reat +re ply +arre ll +Ġsolicit ation +Ġcirc adian +BI P +Ġfor ay +Ġcrypt ic +iz u +ime o +ĠTom ato +ĠH oms +ex amination +Ġqu arry +ĠVal iant +ĠJer icho +ĠIN CLUD +Ġ18 40 +5 19 +Ġres ists +Ġsnap shots +ĠSp ur +ĠAnt iqu +Log in +Ġbest selling +Ġant ic +ĠS utherland +ãĤ¢ ãĥ« +Ġ~ / +ĠP arm +è ĥ +P ages +int ensity +Ġimm obil +Ġ18 65 +zz o +Ġn ifty +Ġf entanyl +ĠPres ervation +op hen +Ġd arts +ĠD inosaur +po inters +ĠR ite +s uggest +aware ness +ĠSher idan +Ġst ances +Ġsor cery +Ġper jury +ĠNik ola +ie ver +Ġf iance +ĠJordan ian +ĠBall oon +Ġn ab +Ġk b +Ġhuman ities +ĠTan aka +hill ary +Ġconsult ancy +ĠZ ub +Ġrem ission +Ġconf id +CH Q +ĠF ug +Ġimpro vis +Y ep +/ _ +Ġunwilling ness +Ġport folios +05 5 +ĠInstruct or +aim an +Ġclaim ants +M bps +ĠBy e +re ceived +T weet +Ġind emn +ri z +am ara +N at +Ġeval uates +ĠL ur +ep ad +FO X +ĠTh ro +Ġrust y +Ġbed rock +ĠOp rah +J B +Ġmanip ulative +Ġwill ful +Ġrel apse +Ġext ant +The me +S ensor +ĠSt ability +go vern +Ġpo ppy +Ġkn ack +Ġins ulated +ĠT ile +ĠExt rem +Ġunt old +Ġconver ge +Ġref uel +ig roup +Ġdistort ions +Ġrav aged +Ġmechan ically +ĠRe illy +ĠN ose +ĠIncarn ation +ĠBeck y +abb ling +Ġt aco +Ġr ake +Ġmelanch oly +Ġillust rious +ĠDart mouth +Gu ide +ĠR azer +ĠBen z +Ult imate +ĠSur prise +Ġpage ant +off er +Who ever +Ġw iser +Ġchem ist +ĠHE LL +ĠBul k +Ġpl utonium +ĠCO VER +Ö ¼ +f ailed +Ġtire lessly +Ġinf ertility +ĠTr ident +ĠShow time +ĠC iv +V ice +requ ires +itt ance +Ġun controlled +interest ing +56 1 +Ġinnov ate +ateg ic +L ie +ĠS elling +U l +Ġsav ior +ĠT osh +Ġsw ast +P ASS +Ġr ink +Ġcard io +ĠI ro +ud i +Ġv antage +Ġv ans +ĠNi ño ++ = +Ġpropag ate +< ? +Ġmethod ological +204 39 +Ġtrig lycer +Ġing rained +ĠAn notations +arr anted +6 17 +ĠS odium +ĠA AC +techn ical +mult ipl +Ġ3 73 +å ĭ +Ġdec isively +Ġboost ers +Ġdessert s +ĠGren ade +Ġtest ifying +ĠSc ully +ID s +Ġlock down +ĠSc her +ĠR é +ĠWhit man +ĠRams ay +rem ote +Ġh ikers +ĠHy undai +Ġcons cientious +Ġcler ics +ĠSiber ian +ut i +is bury +Ġrel ayed +Ġqu artz +ĠC BI +seek ers +ull a +Ġweld ing +ĠSh al +ble acher +T ai +ĠSam son +Ġt umble +ĠInvest or +Ġsub contract +ĠShin ra +ow icz +j andro +d ad +Ġtermin ating +ĠNe ural +ä» £ +Ġleak age +ĠMid lands +ĠCaucas us +í ķ +c it +ll an +iv ably +ĠAlb ion +Ġ4 57 +Ġregist rations +Ġcomr ade +Ġclip board +0 47 +Ġdiscour aging +ĠO ops +Ad apt +Ġem path +n v +ĠPR OT +ĠDon n +ĠP ax +ĠB ayer +t is +Squ are +Ġfoot prints +part icip +ĠChile an +B rend +ind ucing +M agn +Ġclub house +ĠMagn um +Ġenc amp +ĠEth nic +uch a +ere y +Ġw atered +ĠCal ais +Ġcomplex ion +Ġsect s +Ġren ters +Ġbr as +oÄŁ an +Time out +Man agement +Ġinf ographic +P okemon +Cl ar +Ġloc ality +Ġfl ora +as el +P ont +Ġpop ulate +ĠO ng +Ġsubs istence +Ġa uctions +ĠMcA uliffe +ĠL OOK +br inger +Ġtit an +Ġmanif old +ĠâĹ ı +Ġcalibr ated +Ġcal iphate +ĠSH E +ĠCommission ers +ce ivable +j c +W inner +5 24 +Ġcond one +Other wise +Ġp iling +Ġem body +ĠCrime an +ut ics +ĠEx hibition +Ġ4 26 +e ering +Ġv ying +ĠH UGE +* =- +Ġprin cipled +à ¦ +Ġquir ks +ĠEdit ors +put ing +G ES +ĠF TA +ठ¾ +add on +ĠH AM +ĠFrie za +W oman +. $ +Ġc rib +ĠHer od +Ġtim ers +ĠSp aces +ĠMac intosh +at aka +Ġgl ide +Ġsmell ing +ĠB AL +Ġun su +Ġcond os +Ġbicy cl +ĠRev ival +55 3 +Ġjugg ling +H ug +ĠKardash ian +ĠBalk ans +mult iple +Ġnutrit ious +oc ry +19 00 +Ġinteg rates +Ġad joining +ĠF older +roll ment +ven ient +Ġu ber +y i +Ġwh iff +ĠJu ven +ĠB orough +net te +Ġb ilingual +ĠSp arks +ph thal +man ufact +Ġt outing +ĠPH I +Ke efe +Rew ard +Ġinf all +ĠTem per +typ ically +ĠNik ol +Ġregular s +Ġpseud onym +Ġexhib itions +Ġbl aster +Ġ40 9 +w arming +Ġrever ber +Ġrecip rocal +Ġ6 70 +ip ient +b ett +ĠBe gins +Ġit ching +ĠPh ar +Ass uming +Ġem itting +ĠML G +Ġbirth place +Ġt aunt +ĠL uffy +ĠAm it +Ġcir cled +ĠN ost +enn ett +Ġde forestation +ĠHist orically +ĠEvery day +Ġovert ake +79 2 +Ġn un +ĠLuc ia +Ġaccompan ies +ĠSe eking +ĠTr ash +an ism +R ogue +Ġnorth western +ĠSupplement al +ĠNY U +ĠF RI +ĠSat isf +x es +5 17 +Ġreass ured +Ġspor adic +Ġ7 01 +Ġmed ial +Ġcannabin oid +Ġbarbar ic +Ġep is +ĠExplos ive +ĠD ough +Ġuns olved +Support ed +Ġacknowled gment +sp awn +Ġkit chens +Ġ- = +talk ing +ic ist +ĠPeg asus +ĠPS U +Ġphot on +ĠAuthent ication +R G +@# & +76 2 +ĠCl air +Ġdi aper +Ġbr ist +ĠProsecut ors +ĠJ em +6 28 +ĠEvery where +ĠJean ne +equ ality +ãĥ© ãĥ³ +object s +ĠPel icans +Ġ39 2 +Ġbl u +b ys +ĠA go +Ġinstruction al +Ġdiscrim inating +ĠTR AN +ĠCorn el +ag os +Ġty re +Ġas piration +ĠBrid gewater +": - +! ". +ĠEn s +ĠCoc o +P ie +Ġdet ach +ĠC ouch +Ġphys ique +ĠOccup ations +osc opic +en ough +B uzz +App earance +Y P +Ġrac er +Ġcompl icity +r pm +T oy +Ġinterrupt s +ĠCat alyst +Ġut ilitarian +imp act +Ġsp aghetti +Ġp orous +Ġeste emed +Ġinc iner +ĠI OC +7 48 +Ġesp resso +ĠSm ile +abil ia +6 35 +Ġmathematic ian +Ġ4 24 +ĠK L +ĠH IP +Ġover heard +ĠT ud +ĠT ec +Ġqu izz +Ġfl attering +Ġcon n +âĢ İ +Ġatt aches +ĠR OS +ĠAC S +Ġt cp +ĠSh ame +sk ip +res pected +ĠTrin idad +gr ain +Ġfooth old +ĠUnch arted +ĠJul io +z l +av ored +ĠAn xiety +er rors +ĠCent auri +its ch +D addy +Ġclutch ing +ĠIm plement +ĠGut ierrez +Ġ7 60 +Ġtele portation +end ra +Ġrevers ible +st ros +Ad venture +08 3 +Ġliber ating +Ġas phalt +ĠSp end +AR DS +im sy +PR ES +ĠEmer ging +Ġwild fires +Ġtechn ologically +Ġem its +ĠART ICLE +Ġirregular ities +Ġcher ish +çī Ī +Ġst ink +ĠR ost +Econom ic +Ġcough ing +ĠMcC ann +pro perties +ilant ro +Ġreneg oti +Trans lation +Ġin quest +ĠGra pe +oot ers +gu i +ĠSwords man +ace ae +h itting +Ġr c +Ġexert ed +ĠS AP +it ent +Ġperil ous +Ġobsc urity +Ġassass inate +Ġab original +Ġresc uing +ĠSh attered +lock ing +all ion +Ch anging +ĠHar rington +ĠB ord +ĠAfgh ans +Jam ie +aret z +ĠAugust us +Ġ38 6 +8 30 +Ġj og +ok ingly +Tr igger +ĠH OR +Stat istics +Ġviewers hip +Ġadd itives +h ur +Ġmaxim izing +ĠR ove +ĠLou ie +ĠBuck et +ĠCHR IST +ou sel +Ġstre aks +ir ted +Ġt ert +Ġcolonial ism +Ġbur ying +y k +Cond ition +ĠDPR K +By Id +75 1 +âĹ ¼ +Ġwor risome +Ġvoc ational +sl ice +Ġsa ils +ĠCorrection al +95 4 +Ġt ul +K id +l uster +Ġfam ilial +ĠSp it +ĠEp iscopal +Specific ally +ĠVol cano +run s +q s +Ġve tted +Ġcram med +t rop +here r +Thank fully +Ġper cussion +Ġor anges +Ġround up +Ġ4 99 +x ious +Char acters +ĠZion ism +ĠR ao +ÃĽ ÃĽ +W F +Ġunintention al +ONE Y +Gr ab +Com mercial +Ġglut amate +ĠMcK enna +ru ciating +ning ton +ih u +Ch an +ĠSw ap +Ġleaf lets +Ġfunction ally +er ous +F arm +Ġcal oric +ĠLiter ally +con cert +Ġshe nan +Ġrep aid +ey es +Ġbas hing +ĠG orge +Ġcollabor ations +Ġun account +itch ie +Ġteam work +pp elin +Ġpip ing +Ġmin ced +Ġd iam +ri eg +Ġmasc ara +Ġsuck er +ĠMo ons +App s +ĠPe ck +Ġper v +ĠFl oat +o ley +ĠN ish +im ize +Ġarom atic +u in +end ish +! / +ĠB icycle +ĠAS IC +ile ged +ĠQuad ro +ios yn +Ġlock out +ĠW ink +SP EC +Attempt s +Ġseed ed +red o +ias is +Ġsn ag +ãĥķ ãĤ© +ãĤ ¶ +Ġground ing +Ġrelie ver +Ġfrivol ous +ĠG ifts +ĠF aces +Es pecially +Ġmicrobi ome +im ag +ĠSch l +ĠP les +ĠBle ach +ĠIr win +ĠE aton +ĠDisc iple +Ġmultipl ication +Ġcoer ced +Ġ4 19 +st h +E vil +B omb +Ġex orc +Ġstag gered +L ESS +Ġinert ia +ĠED IT +Ġgo b +Tr aditional +Ġclass y +Lear y +ĠP AGE +yr s +Ġtrans porter +Ġmat ured +Ġhij ab +Ġbi ome +Where as +Ġex termination +ĠT ues +ĠT akeru +ĠAud rey +er ial +ĠAd en +aff les +Ġnarciss istic +ĠB aird +UT F +I re +ĠCon nie +Ch amp +Ġwhis pering +ĠH att +D K +Ġdis infect +Ġdeduct ed +Ġpart ake +Ġdown grade +ĠEs ports +ĠContin uing +Ġdemocr atically +icro bial +itt a +Ġlim estone +Ġexempt ed +ĠFren zy +H erm +7 28 +Ġfled gling +Met a +765 61 +69 3 +% : +w ake +5 26 +ĠDis cipline +Ġvirgin ity +ĠLeg ions +ĠFrank ie +int ent +Ġrest rooms +ĠRou ter +da q +Ġobjection able +âĨ ij +w ark +ĠRah ul +g ain +activ ation +abs olute +ĠAccess ed +Ġ24 00 +ogg les +Ġsecond ly +ĠDEF ENSE +Ġpost age +wra pper +sh arp +7 29 +Ġcommun icates +Ġadd on +ĠMil itia +H ong +Ġsl umped +ĠJP EG +ĠI car +ad ish +68 1 +Ġmaj esty +ĠWolf gang +ĠEl astic +u per +Ġv iz +Ġunconscious ly +ĠST D +ĠS ass +Ġflower ing +ĠHel ic +ĠDra per +ĠAm ateur +Ġman ure +Ġdis ingen +ĠLe i +br ing +9 49 +Ġinhib ited +Ġhead quartered +Ġen igmatic +�� � +Ġred ress +R H +Ġratt led +Ġd iction +l io +ĠT BA +ĠSN AP +C alling +Ġfasc ists +ĠD ove +iew icz +0 36 +Ġco asts +ĠR ect +Ġ) ] +L ot +6 29 +ĠS EM +ĠPeters en +ĠExpl ain +ĠBo ards +ĠBe zos +ĠJ ournals +Ġ20 24 +p arser +Ġmist rust +Ġgr ate +ĠL ocked +bo a +S aint +g aming +Ġvow el +in ately +bl ow +All ah +Ġun matched +Ġb ordering +ĠExp end +n r +Or acle +rou ch +Ġcont iguous +ac us +Ġdist raught +58 1 +Ġanat omical +O X +ap ixel +8 33 +ĠPL US +Ġres usc +Ġab iding +57 3 +Ġvac ancies +Em ily +Ġhyp othal +ĠWer ner +ĠWe e +ĠDJ s +5 13 +Ġwitch craft +Ġac upuncture +ent ary +benef it +Product s +ĠP SP +ĠMP G +ĠJ inn +ĠJ arrett +Ġ4 45 +ĠIm aging +ĠP yth +Fin ish +Ġte x +Ġjuven iles +Ġhero ism +Ġdoubt less +ĠA ki +ĠT end +ĠPatri arch +Ġbit ters +ĠTele communications +it atively +ag na +Ġr g +ĠS OLD +Ġcomp ulsion +ĠN asa +ĠKath ryn +Ġmillion aires +Ġintrins ically +Ġbolst ered +time out +fl o +Ġtut or +p our +Stat ement +Ġ{ * +ĠRud olph +ĠKimber ly +rog ens +adi q +] + +Ġindign ation +Ġfract uring +ĠRe leases +ĠGr ain +pro tein +L ago +Ġvac ations +Ġboot ed +ĠTH REE +ĠH G +oresc ence +Ġt f +Ġso ar +iosyn cr +Ġgl ances +ĠSp oon +ĠJ ury +ĠCow boy +Ġcreat ively +Hig her +Ġsolic itor +Ġhaw k +ac io +89 6 +Ġsuperf lu +Ġbombs hell +ct ure +Ġbroker age +Ġraid ing +Ġf rench +Ġang led +Trans action +ĠGen ocide +u pe +ĠHait ian +57 2 +! : +Ġunwitting ly +iter ator +sc roll +Ġtall ied +Ġbi omedical +ĠC ARD +Ġe uphem +Ġbrain storm +a quin +K o +Mic helle +ĠR unes +ĠBall istic +ud ers +Ġmod esty +ĠiP ads +ĠEzek iel +Y E +Ġstars hip +Ġpower fully +Ġper l +ĠSh ade +ĠQu art +ĠE EG +Ġfisher man +OS ED +ĠTyp ical +df x +Ġmes hes +Ġet ched +worth iness +Ġtopp led +Ġ3 96 +or ius +We iss +Ġmy sql +ĠVal halla +Ù Ĵ +le asing +Ġrec omp +rap nel +S el +04 3 +Ġder ailed +ĠGu ides +IR T +Ġde human +ĠBritt any +" )) +Ġex claim +Ġb alk +Ġ8 40 +CLA IM +int el +L AB +Ġpe gged +Ġast roph +sm oking +Ġrig ging +Ġfix ation +Ġcat apult +ins ide +ĠC ascade +ĠBolshe vik +G aza +Dep th +Ġloud spe +Ġalmond s +me yer +l eness +j en +f resh +Ġunbeat en +ĠSqu id +ĠPres umably +Tim er +B W +Ġro sters +Ġell ipt +ĠHar riet +dat abase +ĠMut ual +ĠComm odore +uk ed +kn ife +ĠCOMM UN +h ya +Ġmel ts +arch ives +Ġrat ification +Ġmultip lying +Ġinter oper +Ġasc ert +w ings +ver ting +ĠScorp ion +ay e +ĠPorts mouth +ĠM TA +n it +iaz ep +Ġqu arantine +Ġslides how +Ġcent imeters +Ġsyn opsis +Ġsp ate +th irst +Ġnom inating +ĠMel vin +Pre view +Ġthro b +Ġgener ational +ĠRad ius +rest ling +put able +aw ar +N ECT +Ġunlaw fully +ĠRevel ations +Wik ipedia +sur v +Ġeye ing +ij n +ĠF W +Ġbr unt +Ġinter stellar +Ġcl itor +ĠCroat ian +ĠCh ic +ev a +ĠDis app +ĠA kin +iner ies +d ust +Interest ed +Ġgen esis +ĠE ucl +ö n +p icking +Ġmut ated +Ġdisappro ve +ĠHD L +Ġ6 25 +Ì ¶ +c ancer +Ġsqu ats +Ġle vers +Disc uss += ] +D ex +ĠVIDE OS +A UD +Ġtrans act +ĠKin ect +ĠK uala +ĠC yp +7 47 +Ġsh attering +Ġarsen ic +ĠInt ake +ĠAngel o +ĠQu it +ĠK he +Ġ18 93 +M aker +0 29 +ĠPain ting +Dis able +9 16 +Ġanal ges +Ġtact ile +Ġprop hes +Ġd iced +ĠTravel s +ĠHe ader +ĠClub s +Ass istant +Ġinc rim +Ġd ips +Ġcruc ifix +ĠShan ahan +ĠInter pret +Ġ40 90 +al ogy +abb a +Ġsimul ac +hus band +S IM +Ġrecy cle +uc er +ed ged +Ġre naissance +ĠBomb ay +Cath olic +ĠL INE +ĠCl othing +re ports +Ġpl aus +Ġd ag +ĠM ace +Z I +Ġintr uder +ĠVeter inary +g ru +Ġsne aky +ĠS ie +ĠC innamon +P OSE +Ġcou rier +ĠC NS +Ġemanc ipation +s it +Ġplay through +ĠFac ilities +v irt +ĠG auntlet +Thom pson +Ġunbeliev ably +Param eters +Ġst itching +ign e +ĠTH ESE +Priv acy +Ġshenan igans +Ġvit ri +ĠVal id +59 1 +Ń · +ĠProt otype +ink a +SC P +ĠT id +è Ī +old ed +Ġindividual ity +Ġbark ing +Ġm ars +ĠW D +Ġ8 20 +Ġt ir +Ġsl apping +Ġdisgr untled +ĠAng ola +ri us +ĠTorn ado +ĠTh urs +Ġcapt cha +Ġang st +ĠP og +ĠAssass ins +ĠAd idas +Ġjoy ful +Ġwh ining +Emer gency +Ġphosph orus +Ġatt rition +oph on +ĠTimber wolves +ĠJ ah +ĠBr inging +ĠW ad +ĠEn sure +oh l +ĠX ie +omm el +c mp +Ġz ipper +Ġrel at +ĠCor ridor +m ilo +T ING +Av g +Ġcro pped +] } +Ġr aged +ĠLump ur +ĠGuer rero +our ke +N ut +Ġoff sets +og lu +dr m +Ġmort als +lat able +Ġdismiss ive +ä¸ ī +Ġthro ats +Ġchips et +ĠSpot light +Catal og +art ist +G b +Ġch illy +Ġst oked +Ġ3 74 +W ard +L atin +Ġf iasco +Ġble ach +Ġb rav +Enh anced +Ġin oc +ĠFior ina +_ > +Ġle ukemia +Ġel uc +Ġannoun cer +ĠLith uan +ĠArm ageddon +å ĩ +Len in +ĠR uk +Ġpe pp +ĠRom antic +ĠP IT +ĠInter stellar +ĠAt kinson +R aid +J s +Go al +C ourse +Ġvan ishing +es ley +ĠR ounds +Els a +59 3 +Ġredund ancy +ĠST AND +Ġprop hetic +Ġhabit able +ry u +Ġfaint ly +M ODE +Ġfl anked +IR C +Aw esome +Ġsp urious +ĠZ ah +ĠMS G +Ġsh ading +Ġmotiv ational +ĠSant ana +ĠS PR +Ġexc ruciating +om ial +ĠM iko +ĠLe opard +A byss +Ġ[ | +d irty +Ġbath s +Ġdem oral +and re +P B +Ġun ification +Ġsac rament +Ġ[ & +Ġpric eless +Ġgel atin +Ġeman ating +ĠAll aah +98 6 +Ġout burst +Ġer as +ĠX VI +ĠSP I +O tt +ĠLaz arus +PL IED +F lying +blog s +W isconsin +R aven +Ġreb ate +Ġcreep s +ĠSp an +ĠPain ter +ĠKir a +ĠAm os +ĠCor vette +Cons umer +ĠRec over +ck i +Ġpes ky +ĠIn vention +Compan ies +Ġchalleng ers +ad emic +ĠUkrain ians +ĠNeuro log +ĠFors aken +Ġent rants +Ġemb attled +Ġdef unct +ĠGlac ier +Ġpo isons +ĠH orses +m akes +ĠD irt +Ġ4 23 +hh h +ĠTrans formation +QUI RE +................ .. +Ġtrave ller +ĠSe xy +ĠK ern +ip olar +Ġransom ware +oooooooo oooooooo +E c +rub y +Prof essional +ĠOut break +arg ument +G rey +ĠFif a +ĠCH O +ĠFOR M +ĠAm trak +- [ +Ġcr adle +Ġantioxid ants +ãģ®å ® +7 36 +ĠNAS L +ĠContribut ions +Ind iana +ĠST EP +C SS +Ġsal ient +Ġall ocations +yr ights +Ġm ashed +ĠCut ter +Sex ual +Ġp ounded +Ġfan base +Ġc asc +ĠTrans parency +Ġanaly tic +ĠSummon er +× ŀ +ĠAD C +det ail +Ġvan quished +Ġcr abs +ar ie +Dest roy +ĠS ack +Ġtrans istor +Al abama +ĠK oen +ĠFisher ies +c one +Ġannex ed +ĠM GM +es a +Ġf aked +ĠCong ratulations +Ġhind ered +Ġcorrection al +ĠI TV +lee ve +Ġin appropriately +lic ks +Ġtresp ass +Ġp aws +Ġnegoti ator +ĠChrist ensen +lim its +ĠDian ne +Ġeleg ance +ĠContract s +an ke +Ob j +Ġvigil ance +Ġcast les +ĠN AD +ĠHol o +Ġemph atically +ĠTit us +ĠServ ing +ĠRich ie +ĠP igs +5 68 +Ġanim osity +ĠAtt ributes +ĠU riel +M Q +my ra +ĠApplic ant +Ġpsychiat rists +ĠV ij +ĠAb by +ag ree +P ush +Ġk Wh +hib a +Ġinc ite +ĠWe asley +ĠTax i +minist ic +hy per +ĠF arn +Ġ6 01 +ĠNation wide +F ake +95 2 +Ġma ize +Ġinteract ed +Ġtransition ed +Ġparas itic +Ġharm onic +Ġdec aying +Ġbas eless +ns ics +Ġtrans pired +Ġabund antly +ĠFore nsic +Ġtread mill +ĠJ av +ab and +Ġssh d +Ġfront man +ĠJak arta +oll er +dro ps +ĠSERV ICES +rompt u +oph ical +h ospital +bled on +6 45 +Ġmid range +ĠEV ENT +cul ated +raw led +Ġper ched +Ġover board +ĠPe el +ĠP wr +ĠCar th +ĠCOM PLE +co e +sh all +Ġdeter rence +M ETHOD +ĠAbs ent +M EN +Ġs ill +ĠLE VEL +Y ork +Ġsin ners +ĠOP EC +ĠN ur +ĠDesign s +se lection +Ġunw orthy +CH A +Ġstreng thens +88 3 +ed ly +Ġslic ing +Ġmal nutrition +Ġfilm making +ĠPol k +ur ated +Ġ4 21 +bre akers +!' " +Ġwet lands +ĠDisc rimination +Ġallow able +Ġste ered +ĠSic ily +S AM +Ġmust ache +Ġm ids +Ġcl ipped +Ġcirc ulate +Ġbr ittle +ĠBuild ings +ra ised +ĠRound up +Ġwealth ier +Ġoverw rite +Ġover powered +ĠGerr ard +s ites +PD ATED +Ġacute ly +ĠGam ble +Ġp im +ĠK us +Typ ically +De ploy +ĠMoroc can +p otion +com be +Ġvigil ante +Ġ36 3 +St ew +ĠB agg +Ġres ided +ĠSp o +Ġrem nant +Ġempt iness +br ainer +Ġout patient +pri ority +Ġle ptin +ĠPay ton +ĠGle aming +ĠS hed +ĠPol o +ĠMormon ism +rest ricted +arl ane +w x +Ġcreat ine +ĠAn on +ĠST UD +ĠJ UL +ĠT ee +5 28 +08 9 +Ġhat ched +Dis patch +ĠCompos ite +Ġ45 1 +p uff +ĠX COM +ĠOr n +ĠTH ANK +END ED +ĠAshe ville +Ġà ľ +Ġman go +ĠS lightly +world ly +ĠW ander +ĠExp and +ĠCh r +M ist +Ġorthodox y +ĠUN ESCO +reg ate +Else where +k ie +ir led +Ġtopp le +Ġadopt ive +ĠLeg s +d ress +ĠS agan +b are +ĠGl ou +Cr unch +Ġhelp ers +Ġchron ically +ĠH uma +1 0000 +Ġaccommod ating +äº Ķ +Ġwrink les +Ġdod ged +four th +Ġpre con +Ġcompress or +ĠK are +Ġev ict +ĠWar wick +im ar +Ġmodern ization +Ġband wagon +Ġref uted +Ġnet ted +ĠNa ples +ĠGen ie +per ors +Ġfield ed +Ġde re +ĠPar ables +le es +Ġtr out +asp ers +Ġn ihil +Ġhapp iest +Ġflo ppy +ĠLo ft +ĠHe ard +Ġun ison +Ġl ug +ĠRed mond +class ic +Supp orters +SH IP +G MT +Ġfue lled +ç IJ +Ġd d +ĠEmin em +Ġ18 97 +NY SE +Ġsecret aries +ĠF IA +ĠCanaver al +F avorite +Ġp omp +Ġdetain ee +ers hip +aim on +i our +ĠA pex +Ġplant ations +am ia +ac ion +R ust +Ġtow ed +ĠTru ly +5 77 +Ġshel tered +r ider +W o +Ġl air +ĠInt elligent +impro ve +m atically +Ġet iquette +ad ra +all o +ĠJun o +any thing +ĠStru ggle +ĠPred ict +ĠGr imes +ĠAMER ICA +ct x +ĠSit uation +W OOD +Ġsol uble +me ier +Ġintoler able +ang ering +Ġun interrupted +Ġtool tip +Ġinterrog ated +Ġgun ned +ĠSne ak +æŃ ¦ +Ġt ether +Ġcr umble +L ens +Ġclust ered +ĠSy l +ĠHas an +Ġdystop ian +w ana +Ġjoy stick +ĠTh ib +amm u +Tom orrow +5 46 +Ġoverc ame +Ġminim ized +cept or +Run ner +ENG TH +ĠBrend a +ĠAchieve ments +Ġtor ches +Ġrapp ort +ĠInvestig ator +ĠHand ling +rel ation +g rey +8 15 +Ġk cal +ĠComm ands +d q +Ġcur ls +Ġbe arer +Ġcyn icism +it ri +ĠUse ful +B ee +D CS +Ġab ras +P ract +BIL ITIES +7 12 +Ġdebug ger +Ġdebt or +ĠL ia +ĠK ers +Ġexacerb ate +ĠSt acy +ĠB land +ĠSc enes +Ġbranch ing +âĸĪâĸĪâĸĪâĸĪ âĸĪâĸĪâĸĪâĸĪ +ape ake +Ġs alsa +Ġmish and +ĠKon ami +ĠN ib +Ġanecd ote +Ġagree able +Ï ī +ĠNath aniel +ĠHe isman +ĠB eware +Ġ18 86 +spect ive +69 1 +5 22 +Ġinhib its +Ġhas hing +Ġ18 89 +å° Ĩ +v ich +P ure +Ġsolid ly +Ġaspir in +im aru +Ġstreet car +ĠU CS +ĠJ udd +Ġflash backs +p ins +Ġ14 40 +ĠUN HCR +ĠSym ptoms +T IT +5 38 +F ra +% ); +Ġo oz +Ġcur few +Ġcal med +Ġparticip ates +Te X +Ġnons ensical +Ġfull back +ĠDe L +mon key +h ari +Ġmetabol ites +Ġloot ed +ĠAL WAYS +ĠB CC +L t +oc het +B one +Ġveto ed +Ġg cc +ĠCL ICK +Ġ18 88 +s af +Ġstiff ness +Ġlow ly +ĠGe h +vers on +ors et +Ġun foreseen +Ġan esthesia +ĠOpt ical +Ġrecon structed +ĠT up +sh ows +NEW S +ĠNewsp aper +ĠA SA +ter a +N umbers +Ġinexpl icable +× ij +Ġhard ness +unt arily +ĠA cer +grad ient +ARD IS +Ġwood land +Ġmetaph ors +ĠWem bley +ĠPa vel +phil is +Ġre writing +Ġpercept ual +Ġ10 70 +worm s +ĠDown s +Ġunsur prisingly +Ġtag ging +fl ame +Ġlit res +Ġboun ces +ĠB abe +sh ut +Ġoverd oses +ĠShe ila +ĠCh au +ĠBl ess +Capt ure +ĠSign ificant +ĠSc ion +Ġ38 9 +ĠMc H +ĠTitan ium +ĠMe al +amed a +ag ents +agg ressive +B illy +76 3 +ĠS aying +DER R +it one +Coll ins +B ound +Ġbol ted +ĠDM CA +95 3 +Ġun iqueness +Ġep igen +un ci +ant am +Ġreck oning +ch airs +OG R +ĠSen egal +Ġ18 62 +re levant +Ġ ¯ +Ġpharm acies +ĠG eral +v ier +Y an +OR PG +Ġrab id +b ending +ĠUN ITED +Ġ4 65 +As sembly +Ġwe ep +Ġbe hest +ĠMother s +ĠJ ace +h id +Ġwh irlwind +ĠUN IVERS +Ġut opian +Ġkidn ap +Ph ilipp +K in +89 3 +Ġlivest ream +ĠM ISS +Ġsub versive +ĠTechn iques +ĠJUST ICE +ĠB ASE +Ġ38 7 +Ġassail ants +ĠHard core +Ġsprink led +ĠP se +é ļ +print ed +ĠH au +OR GE +ĠT OUR +Ġl aced +Ġit ch +G iving +Ġport ed +78 1 +//////////////// //////////////// +bre eding +Ġlog ger +ĠH OL +inn ie +First ly +Ġembry onic +Ġdeleg ated +p ai +O IL +Ġcentr ally +ĠR x +ĠSc outing +D utch +Ġhe reditary +ĠCru iser +s at +5 29 +ĠMar riott +other mal +Ġprohib itions +E arn +ĠSt ab +ĠColleg es +ĠBel ief +st retched +ĠL H +ĠEntity Item +C IA +Ġun rem +Ġlaure ate +Ġdenomin ations +sum mary +h ler +S pect +ĠK laus +ĠBe ans +Ġins ur +ĠPA X +Ġfield er +ĠV et +ĠSp arrow +z ie +ĠS Q +ĠMond ays +ĠOff line +ĠLer ner +ĠExt ensions +Ire land +Ġpatron age +Ġcontrast ed +ĠMan ia +h irt +Mos cow +Ġcondem ns +ĠAn ge +Ġcomp osing +ĠPe pe +ĠP addock +Ġheter ogeneity +Ġide ologically +Ġf ishes +Ġcur sing +ĠR utherford +ĠFlo ating +ĠAm elia +Te a +Syn opsis +Ġstun ts +Ġbe ad +Ġstock ing +ĠM ILL +ob ook +mass ive +\ < +Ġh ump +ĠPref erences +Engine Debug +ge ist +ĠNiet o +ome ver +ish y +eval uate +col onial +Altern ative +ĠGo Pro +ĠV ortex +ĠNET WORK +ans ky +Sec ure +ĠTh rust +Sn ake +Ġparcel s +Ġsam urai +Ġactress es +N ap +M F +ifer ation +Be er +5 23 +ĠI ly +oint ment +P ing +Ġstri ped +ĠMell on +oss ession +Ġneut ron +end ium +Ġa ph +ĠFlav oring +Ġ38 3 +Ġrespons iveness +ĠJ indal +ĠHitch cock +Den ver +ĠDRAG ON +sm anship +ĠDu pl +Ġs ly +Ġweb cam +ĠTw ain +ĠDar ling +ili ate +cons umer +D IT +Ġnames ake +Ġun orthodox +Ġfun er +ĠPL oS +ĠCONTR OL +ozy g +ogl obin +F ACE +ER G +ĠD ia +ĠF iesta +ce le +0 34 +Ġencl ave +âĸ¬ âĸ¬ +on ement +al ist +M and +Ġhome grown +ĠF ancy +Ġconcept ions +ĠCont ains +ure en +Ġreiter ate +Ġme ager +Ġinstall ments +Sp awn +6 27 +Ġphot oc +ĠCab rera +ĠRos enthal +ĠLans ing +is ner +Ġinvest s +ĠUFO s +EX P +Hard ware +Ġtr agically +Ġconced es +ie ft +ch am +bor gh +ĠSch r +ĠMel anie +ĠH oy +Ġvisit ation +Ġid iosyncr +Ġfract ions +Ġfore skin +ob os +Ġpo aching +ĠVI EW +Ġstimul ates +ĠG ork +can on +M IC +ĠNem esis +ĠInd ra +ĠDM V +Ġ5 29 +Ġinspect ing +Ġgrand ma +ĠW hedon +ĠSh ant +ĠP urg +ik an +ĠT eg +ĠCL R +z ac +Vict oria +ĠVer ify +ion ics +Ġpart ying +ĠM ou +col our +Ġtestim onies +l ations +Ġpress uring +hi ro +ac ers +Ġf id +ang ler +ĠCS I +Ġhere after +Ġdiss idents +report ing +iph any +che v +Ġsol itude +Ġl obe +Ġind is +Ġcred ential +re cent +ad ult +ĠNir vana +ĠFranch ise +L ayer +H yp +ĠBerks hire +Ġwill s +t if +Ġtot em +ĠJud ah +rep air +Inst ant +5 48 +Ġemb assies +Ġbott leneck +Ġb ount +Ġtyp ew +ĠAl vin +j ing +im ilar +R ush +Ġbr im +ĠHEL P +A im +] ' +Ġpass ively +Ġbound ed +ĠR ated +Ġcriminal ity +Ġbiom ark +Ġdisp atcher +ĠTow ards +Ġ+ ++ +right eous +f rog +ĠP anc +C arter +0 32 +æ© Ł +Ġult raviolet +ĠLic ensed +ĠT ata +ĠBl essing +ĠG AM +Ġchem ically +ĠSe af +ĠRE LE +ĠMerc enary +capital ist +Ġform ulations +Ġann ihilation +ĠVer b +ĠAr gon +Ġun loaded +Ġmorp hed +Ġconqu ering +back er +I ELD +Ġtheft s +Ġfront runner +ĠRoy ale +ĠFund amental +el ight +C hip +necess ary +ay n +ĠSl ip +Ġ4 48 +cern ed +P ause +Ġshock ingly +ĠAB V +Ġcomp osure +7 33 +ĠMotors port +ah ime +Mur ray +M ach +Ġgr ids +Ġdeb ian +Ġfurther more +Ġdexter ity +ĠCollect ions +os lov +il age +b j +ĠMont eneg +Ġstrut Connector +Ġmassac res +Ġbrief s +fet ched +uv ian +ol ition +Fail ure +emon ic +Ġfl ared +Ġclaim ant +Ġc ures +Ġgive aways +ĠSubst ance +al ions +Ġcr inge +ĠK ul +Ġarist ocracy +ĠUl ster +ol ated +h ousing +ĠM IS +Ġgl ared +ĠWil helm +ne eds +lam bda +build ers +ĠV IS +Ġradi ator +ĠGhost busters +Ġ4 36 +act ual +Ġher ds +ç a +watch ing +Ġcounter ing +Ch arge +Ġchar red +Ġwar heads +Ġiod ine +ĠM acy +04 1 +Ġdepart ures +ĠS ins +Ġdy ed +ĠConcept s +g ado +7 13 +Ġquot ations +Ġg ist +ĠChrist y +Ġant igen +ĠHem p +ĠD rawn +ĠB arg +ez vous +Ġp aternity +Ġar du +ĠAnch orage +ĠR ik +Ġover loaded +ĠUs ername +ĠTam my +ĠN au +ĠCell ular +Ġw aning +Ġrod ent +ĠWor cester +il ts +ĠT ad +Ġdwell ings +Ġbull ish +4 31 +Ġretali ate +Ġmig raine +ĠChev ron +CH ECK +Ġdon key +c rim +SP A +ĠAn alog +Ġmarqu ee +ĠHa as +B ir +ĠGD DR +ĠDownload s +Ġwill power +ĠFor th +ĠRecord ed +Ġimp ossibility +ĠLog ged +ĠFr anks +ĠR att +in itions +Ġclean ers +Ġsore ly +Ġflick ering +ĠEx amination +c atching +allow een +Ms g +Ġdun no +F a +Ġdys ph +c razy +.' '. +Ġmain line +Ġc s +Ġp tr +ĠW ally +ig un +95 1 +ĠBig foot +f ights +Ġretrie ving +J r +Ġdupl ication +ĠExpl an +Ġrel ational +Ġqu aint +Ġbisc uits +Ġad o +Ġsh udder +Ġantid ote +blood ed +ks h +Ġsa uces +Ġrein vest +Ġdispens ary +ĠD iver +Ġ9 000 +stud ent +Ġin separ +esc ap +Ġtodd lers +ĠGP IO +ĠAss ignment +head ers +Ġlack luster +Ġab ack +95 6 +Ġtool bar +7 45 +Ġo ust +Ġcontempl ation +ĠPRES IDENT +Ġ4 58 +==== == +Ġguarantee ing +ĠHe ist +ĠCann es +Ļ ½ +Ġcollabor ator +ĠAm p +Ġg ou +ĠSH ALL +st ories +78 3 +Ġmobil ized +Ġbro od +ĠL U +ĠðŁ ij +Ġref in +ĠAnthrop ology +v ind +ill i +Ġwarrant ies +ĠB abel +Ġsw ath +Ġc aches +Ġantagon ists +art ifacts +Ġhot ly +ĠSt arts +ĠG ö +z ag +!! !!! +Ġsc ourge +Ġcons piring +ru its +re verse +ĠShe en +ĠJes uit +ĠGiov anni +ad ies +Ġbutt ocks +ear cher +ac an +Ġvolley ball +Ġshroud ed +Ġscore board +b ats +ĠI PM +Ġass es +Ġde regulation +ĠTe legram +ĠReb oot +Ġ7 000 +ĠCan ary +Ġk ernels +ĠFranç ois +ĠD uff +ĠP on +ĠLe ica +ĠGar min +Ġor phans +ĠClaud ia +Ġcal endars +ĠLe ilan +ent o +R ocket +Ġbr unch +ĠHaw king +ain ers +Ġsens ibilities +Ġk W +ĠK and +Ġre claimed +Ġinteresting ly +× © +rom y +J M +ĠEnhance ment +b ush +Sk ip +Ġrapp ers +Ġg azing +p edia +ath lon +Rev olution +Ġsn ipers +Ġre verted +Ġconglomer ate +T erry +79 4 +Ġhars her +Ġdes olate +ĠHit man +Comm ission +Ġ( / +â̦ ." +Com par +Ġampl ification +om inated +Ġreg ress +ĠColl ider +Ġinform ants +Ġg azed diff --git a/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/special_tokens_map.json b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/special_tokens_map.json new file mode 100644 index 000000000..773bd68cf --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/special_tokens_map.json @@ -0,0 +1,23 @@ +{ + "bos_token": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "unk_token": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + } +} diff --git a/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/tokenizer_config.json b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/tokenizer_config.json new file mode 100644 index 000000000..48314a4d0 --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/tokenizer_config.json @@ -0,0 +1,33 @@ +{ + "add_bos_token": false, + "add_prefix_space": false, + "bos_token": { + "__type": "AddedToken", + "content": "<|endoftext|>", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "clean_up_tokenization_spaces": true, + "eos_token": { + "__type": "AddedToken", + "content": "<|endoftext|>", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "errors": "replace", + "model_max_length": 1024, + "pad_token": null, + "tokenizer_class": "GPT2Tokenizer", + "unk_token": { + "__type": "AddedToken", + "content": "<|endoftext|>", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + } +} diff --git a/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/vocab.json b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/vocab.json new file mode 100644 index 000000000..a15dd0028 --- /dev/null +++ b/api/core/model_runtime/model_providers/__base/tokenizers/gpt2/vocab.json @@ -0,0 +1,50259 @@ +{ + "!": 0, + "!!": 3228, + "!!!": 10185, + "!!!!": 13896, + "!!!!!": 50184, + "!!!!!!!!": 34635, + "!!\"": 37160, + "!\"": 2474, + "!\",": 40754, + "!\".": 48220, + "!'": 13679, + "!'\"": 49296, + "!)": 8133, + "!),": 26290, + "!).": 19588, + "!,": 28265, + "!--": 28112, + "!.": 43179, + "!/": 48443, + "!:": 48725, + "!?": 22857, + "!?\"": 42720, + "!]": 36463, + "\"": 1, + "\"!": 40484, + "\"\"": 15931, + "\"\"\"": 37811, + "\"'": 30543, + "\"(": 18109, + "\")": 4943, + "\"))": 48774, + "\"),": 12340, + "\").": 11074, + "\");": 15341, + "\",": 1600, + "\",\"": 2430, + "\"-": 26793, + "\".": 1911, + "\"...": 26214, + "\".[": 42924, + "\"/>": 26700, + "\":": 1298, + "\":\"": 2404, + "\":\"\",\"": 34713, + "\":\"\"},{\"": 47182, + "\":\"/": 15473, + "\":-": 48219, + "\":[": 20598, + "\":[\"": 26358, + "\":[{\"": 32509, + "\":{\"": 8351, + "\";": 8172, + "\">": 5320, + "\"><": 22039, + "\">": 23785, + "\"}": 20662, + "\"},": 25719, + "\"},\"": 13018, + "\"},{\"": 11919, + "\"}],\"": 42785, + "\"â̦": 24426, + "\"âĢĶ": 15327, + "#": 2, + "##": 2235, + "###": 21017, + "####": 4242, + "########": 7804, + "################": 14468, + "################################": 29113, + "#$": 29953, + "#$#$": 34206, + "$": 3, + "$$": 13702, + "$$$$": 36737, + "$,": 47113, + "$.": 35307, + "${": 38892, + "%": 4, + "%\"": 39658, + "%%": 16626, + "%%%%": 36917, + "%)": 4407, + "%),": 15920, + "%).": 18823, + "%);": 49563, + "%,": 7441, + "%-": 33963, + "%.": 7225, + "%:": 48529, + "%;": 26525, + "%]": 39850, + "&": 5, + "&&": 25226, + "'": 6, + "'\"": 29653, + "''": 7061, + "''''": 39115, + "''.": 35384, + "'';": 44648, + "')": 11537, + "'),": 33809, + "').": 27691, + "');": 24036, + "',": 3256, + "',\"": 40264, + "','": 41707, + "'-": 29001, + "'.": 4458, + "'.\"": 30827, + "'/": 26488, + "':": 10354, + "';": 17020, + "'>": 44167, + "'?": 30960, + "']": 20520, + "'d": 1549, + "'ll": 1183, + "'m": 1101, + "'re": 821, + "'s": 338, + "'t": 470, + "'ve": 1053, + "(": 7, + "(\"": 7203, + "($": 16763, + "(&": 39434, + "('": 10786, + "((": 19510, + "()": 3419, + "())": 28955, + "());": 35430, + "(),": 22784, + "().": 22446, + "():": 33529, + "();": 9783, + "(){": 39893, + "(*": 46491, + "(-": 32590, + "([": 26933, + "(\\": 38016, + "(_": 28264, + "({": 15090, + ")": 8, + ")!": 31520, + ")\"": 16725, + ")\",": 42501, + ")'": 33047, + ")(": 5769, + "))": 4008, + ")))": 22305, + "))))": 35514, + ")),": 36911, + ")).": 29720, + "));": 18125, + ")*": 27493, + ")+": 47762, + "),": 828, + "),\"": 27267, + ")-": 13219, + ")--": 42944, + ").": 737, + ").\"": 21387, + ")...": 26513, + ").[": 42669, + ")/": 20679, + "):": 2599, + ");": 1776, + ")": 46904, + "-.": 34507, + "->": 3784, + "-[": 49146, + "-|": 22831, + ".": 13, + ".\"": 526, + ".\"\"": 32203, + ".\")": 19570, + ".\",": 33283, + ".\",\"": 41424, + ".\"[": 18161, + ".#": 32535, + ".$": 48082, + ".'": 2637, + ".'\"": 11496, + ".''": 13531, + ".''.": 50113, + ".(": 12195, + ".)": 2014, + ".),": 12179, + ".).": 15729, + ".):": 47308, + ".*": 15885, + ".,": 1539, + ".,\"": 44388, + ".-": 7874, + ".--": 9816, + "..": 492, + "...": 986, + "...\"": 9313, + "...)": 23029, + "....": 1106, + ".....": 12359, + "......": 16317, + ".......": 25780, + "........": 2109, + ".........": 34617, + ".............": 44274, + "................": 4181, + "..................": 49129, + "........................": 27754, + "................................": 8864, + "................................................................": 23193, + "...?": 44825, + "...]": 22345, + "../": 40720, + "./": 19571, + ".:": 11207, + ".;": 15089, + ".<": 29847, + ".>": 32756, + ".?": 40791, + ".[": 3693, + ".]": 8183, + "._": 13557, + ".}": 44587, + ".âĢĵ": 37585, + ".âĢĶ": 13402, + ".ãĢį": 43735, + ".�": 40670, + "/": 14, + "/\"": 30487, + "/#": 31113, + "/$": 32624, + "/(": 29006, + "/)": 34729, + "/*": 15211, + "/**": 35343, + "/+": 28404, + "/,": 47454, + "/-": 16327, + "/.": 11757, + "//": 1003, + "///": 20379, + "////": 9705, + "////////": 16150, + "////////////////": 27246, + "////////////////////////////////": 49704, + "/>": 15913, + "/?": 20924, + "/_": 47835, + "/âĢĭ": 27643, + "0": 15, + "00": 405, + "000": 830, + "0000": 2388, + "00000": 20483, + "000000": 10535, + "0000000": 24598, + "00000000": 8269, + "0000000000000000": 25645, + "00007": 44808, + "0001": 18005, + "0002": 34215, + "001": 8298, + "0010": 37187, + "002": 21601, + "00200000": 36490, + "003": 11245, + "004": 22914, + "005": 22544, + "006": 28041, + "007": 25816, + "008": 25257, + "009": 28694, + "01": 486, + "010": 20943, + "0100": 39103, + "011": 28555, + "012": 30206, + "013": 30273, + "014": 28645, + "015": 25150, + "016": 27037, + "017": 29326, + "018": 29159, + "019": 30484, + "02": 2999, + "020": 33618, + "0200": 44613, + "021": 46821, + "022": 44087, + "023": 45310, + "024": 40839, + "025": 36629, + "026": 45987, + "027": 44698, + "028": 46957, + "029": 48891, + "03": 3070, + "030": 39101, + "031": 43637, + "032": 49959, + "033": 44427, + "034": 49841, + "035": 44215, + "036": 48597, + "04": 3023, + "040": 36676, + "041": 50049, + "043": 48768, + "044": 43977, + "045": 40350, + "046": 45438, + "047": 48000, + "048": 47202, + "05": 2713, + "050": 28669, + "052": 37841, + "055": 47838, + "057": 43526, + "059": 46712, + "06": 3312, + "060": 41322, + "07": 2998, + "070": 43509, + "075": 46396, + "08": 2919, + "080": 33057, + "083": 48290, + "088": 46556, + "089": 49352, + "09": 2931, + "090": 42534, + "1": 16, + "10": 940, + "100": 3064, + "1000": 12825, + "10000": 49388, + "1001": 47705, + "1007": 44318, + "101": 8784, + "1016": 27956, + "102": 15377, + "1024": 35500, + "1027": 40403, + "103": 15197, + "104": 13464, + "105": 13348, + "106": 15801, + "107": 15982, + "108": 15711, + "1080": 24045, + "109": 14454, + "11": 1157, + "110": 11442, + "1100": 42060, + "111": 16243, + "1111": 26259, + "112": 14686, + "113": 16616, + "114": 16562, + "115": 15363, + "116": 18298, + "117": 17657, + "118": 16817, + "119": 16315, + "12": 1065, + "120": 10232, + "1200": 27550, + "121": 19244, + "122": 18376, + "123": 10163, + "124": 17464, + "125": 11623, + "126": 19420, + "127": 16799, + "128": 12762, + "129": 18741, + "13": 1485, + "130": 12952, + "131": 22042, + "132": 19924, + "133": 16945, + "134": 19880, + "135": 17059, + "136": 20809, + "137": 19708, + "138": 20107, + "139": 20219, + "14": 1415, + "140": 15187, + "141": 23756, + "142": 23726, + "143": 21139, + "144": 18444, + "145": 18781, + "146": 20964, + "147": 20198, + "148": 18294, + "149": 19442, + "15": 1314, + "150": 8628, + "1500": 33698, + "151": 24309, + "152": 17827, + "153": 21395, + "154": 21526, + "155": 18742, + "156": 21599, + "157": 18458, + "158": 21273, + "159": 19707, + "16": 1433, + "160": 14198, + "1600": 36150, + "161": 25948, + "162": 25061, + "163": 24136, + "164": 23237, + "165": 20986, + "166": 23055, + "167": 21940, + "168": 14656, + "169": 22172, + "17": 1558, + "170": 17279, + "171": 27192, + "172": 23628, + "173": 25399, + "174": 22985, + "175": 17430, + "176": 24096, + "177": 22413, + "178": 23188, + "179": 21738, + "18": 1507, + "180": 15259, + "1800": 39188, + "181": 27057, + "182": 24294, + "183": 24839, + "184": 22883, + "185": 21652, + "186": 25096, + "187": 23451, + "188": 20356, + "189": 23362, + "19": 1129, + "190": 19782, + "1900": 48104, + "191": 26492, + "192": 17477, + "1920": 40454, + "193": 24943, + "194": 22913, + "1945": 41931, + "195": 22186, + "1950": 42751, + "1959": 45403, + "196": 25272, + "1960": 38503, + "1963": 45192, + "1964": 46477, + "1965": 45271, + "1966": 44227, + "1967": 42830, + "1968": 42246, + "1969": 38391, + "197": 24991, + "1970": 30986, + "1971": 41208, + "1972": 41023, + "1973": 40220, + "1974": 40828, + "1975": 38449, + "1976": 38108, + "1977": 37781, + "1978": 37950, + "1979": 33581, + "198": 22337, + "1980": 23664, + "1981": 35411, + "1982": 30763, + "1983": 29279, + "1984": 28296, + "1985": 29110, + "1986": 28054, + "1987": 27301, + "1988": 26709, + "1989": 25475, + "199": 19104, + "1990": 19891, + "1991": 24529, + "1992": 23847, + "1993": 24465, + "1994": 22666, + "1995": 21908, + "1996": 22288, + "1997": 21498, + "1998": 21113, + "1999": 18946, + "2": 17, + "20": 1238, + "200": 2167, + "2000": 11024, + "200000": 33470, + "2001": 14585, + "2002": 16942, + "2003": 16088, + "2004": 15724, + "2005": 14315, + "2006": 13330, + "2007": 12726, + "2008": 11528, + "2009": 10531, + "201": 1264, + "2010": 10333, + "2011": 9804, + "2012": 6999, + "2013": 6390, + "2014": 4967, + "2015": 4626, + "2016": 5304, + "2017": 5539, + "2018": 7908, + "2019": 23344, + "202": 19004, + "2020": 42334, + "203": 22416, + "204": 18638, + "20439": 47936, + "205": 21261, + "206": 22136, + "207": 22745, + "208": 21315, + "209": 22567, + "21": 2481, + "210": 21536, + "211": 21895, + "212": 21777, + "213": 26427, + "214": 22291, + "215": 23349, + "216": 20666, + "217": 24591, + "218": 28727, + "219": 28896, + "22": 1828, + "220": 17572, + "2200": 34294, + "221": 26115, + "222": 23148, + "223": 22047, + "224": 24137, + "225": 18182, + "226": 24909, + "227": 24403, + "228": 23815, + "229": 23539, + "23": 1954, + "230": 19214, + "231": 25667, + "232": 24339, + "233": 25429, + "234": 24409, + "235": 22370, + "236": 24940, + "237": 24693, + "238": 23721, + "239": 23516, + "24": 1731, + "240": 16102, + "241": 28872, + "242": 27877, + "243": 26660, + "244": 25707, + "245": 22995, + "246": 26912, + "247": 23753, + "248": 23045, + "249": 21626, + "25": 1495, + "250": 9031, + "2500": 44688, + "251": 28072, + "252": 22800, + "253": 28592, + "254": 24970, + "255": 13381, + "256": 11645, + "257": 28676, + "258": 25600, + "259": 25191, + "26": 2075, + "260": 21719, + "261": 30057, + "262": 29119, + "263": 29558, + "264": 18897, + "265": 22980, + "266": 25540, + "267": 25674, + "268": 25022, + "269": 26276, + "27": 1983, + "270": 20233, + "271": 28977, + "272": 29807, + "273": 27367, + "274": 28857, + "275": 23195, + "276": 27988, + "277": 27019, + "278": 25870, + "279": 26050, + "28": 2078, + "280": 21033, + "281": 30368, + "282": 32568, + "283": 30290, + "284": 30336, + "285": 26279, + "286": 27033, + "287": 27800, + "288": 25270, + "289": 27693, + "29": 1959, + "290": 24369, + "291": 33551, + "292": 32759, + "293": 31675, + "294": 27696, + "295": 25710, + "296": 27137, + "297": 26561, + "298": 27728, + "299": 22579, + "3": 18, + "30": 1270, + "300": 6200, + "3000": 23924, + "301": 18938, + "302": 22709, + "303": 22572, + "304": 21288, + "305": 22515, + "306": 20548, + "307": 22996, + "308": 21495, + "309": 26895, + "31": 3132, + "310": 26717, + "311": 36244, + "312": 27970, + "313": 25838, + "314": 33638, + "315": 27936, + "316": 33400, + "317": 34125, + "318": 36042, + "319": 35175, + "32": 2624, + "320": 19504, + "321": 36453, + "322": 37283, + "323": 32637, + "324": 33916, + "325": 26582, + "326": 39195, + "327": 34159, + "328": 34256, + "329": 37967, + "33": 2091, + "330": 26073, + "331": 31697, + "332": 32148, + "333": 20370, + "3333": 24840, + "334": 31380, + "335": 27326, + "336": 29211, + "337": 31496, + "338": 28460, + "339": 29626, + "34": 2682, + "340": 23601, + "341": 33660, + "342": 31575, + "343": 32118, + "344": 33535, + "345": 27712, + "346": 30557, + "347": 30995, + "348": 28978, + "349": 27371, + "35": 2327, + "350": 14877, + "351": 35273, + "352": 33394, + "353": 33319, + "354": 32182, + "355": 28567, + "356": 32066, + "357": 27277, + "358": 31128, + "359": 30743, + "36": 2623, + "360": 15277, + "361": 35195, + "362": 35667, + "363": 35447, + "364": 26780, + "365": 24760, + "366": 32459, + "367": 27824, + "368": 27412, + "369": 30803, + "37": 2718, + "370": 20167, + "371": 38056, + "372": 36720, + "373": 34770, + "374": 31020, + "375": 22318, + "376": 32128, + "377": 26514, + "378": 30695, + "379": 29088, + "38": 2548, + "380": 23734, + "381": 36626, + "382": 36243, + "383": 34741, + "384": 22842, + "385": 27203, + "386": 21734, + "387": 32220, + "388": 30460, + "389": 29769, + "39": 2670, + "390": 25964, + "391": 37710, + "392": 32321, + "393": 26007, + "394": 34626, + "395": 31010, + "396": 34107, + "397": 33372, + "398": 31952, + "399": 28771, + "4": 19, + "40": 1821, + "400": 7029, + "4000": 27559, + "401": 21844, + "402": 32531, + "403": 31552, + "404": 26429, + "405": 26598, + "406": 29703, + "407": 30120, + "408": 26200, + "409": 29416, + "41": 3901, + "410": 33289, + "411": 42224, + "412": 39226, + "413": 44103, + "414": 37309, + "415": 35038, + "416": 35218, + "417": 38547, + "418": 39667, + "419": 45068, + "42": 3682, + "420": 27211, + "421": 46636, + "422": 44361, + "423": 43356, + "424": 40090, + "425": 32114, + "426": 42780, + "427": 42363, + "428": 40173, + "429": 11785, + "43": 3559, + "430": 31794, + "431": 50080, + "432": 45331, + "433": 42117, + "434": 47101, + "435": 40064, + "436": 43690, + "437": 43284, + "438": 43704, + "439": 47106, + "44": 2598, + "440": 25644, + "441": 39710, + "442": 39506, + "443": 34938, + "444": 30272, + "445": 43489, + "446": 27260, + "447": 34825, + "448": 31115, + "449": 31911, + "45": 2231, + "450": 17885, + "451": 36330, + "452": 37730, + "453": 36625, + "454": 34229, + "455": 30505, + "456": 29228, + "457": 33032, + "458": 29334, + "459": 33459, + "46": 3510, + "460": 34716, + "461": 40652, + "462": 39997, + "463": 38380, + "464": 44578, + "465": 42018, + "466": 42199, + "467": 24669, + "468": 38472, + "469": 42947, + "47": 2857, + "470": 27790, + "471": 38339, + "472": 37856, + "473": 37804, + "474": 38652, + "475": 32576, + "476": 35435, + "477": 32883, + "478": 29059, + "479": 31714, + "48": 2780, + "480": 22148, + "481": 40271, + "482": 40149, + "483": 38783, + "484": 34137, + "485": 32642, + "486": 34251, + "487": 35133, + "488": 33646, + "489": 35890, + "49": 2920, + "490": 31503, + "491": 41289, + "492": 40256, + "493": 43134, + "494": 39449, + "495": 33781, + "496": 37747, + "497": 38073, + "498": 36260, + "499": 28324, + "5": 20, + "50": 1120, + "500": 4059, + "5000": 27641, + "501": 33548, + "502": 35126, + "503": 31938, + "504": 33580, + "505": 31654, + "506": 35638, + "507": 35378, + "508": 33042, + "509": 29022, + "51": 4349, + "510": 33690, + "511": 41647, + "512": 25836, + "513": 48645, + "514": 47396, + "515": 45969, + "516": 47493, + "517": 48170, + "518": 44085, + "519": 47785, + "52": 4309, + "520": 31211, + "522": 49542, + "523": 49803, + "524": 48057, + "525": 39088, + "526": 48531, + "528": 49351, + "529": 49721, + "53": 4310, + "530": 38612, + "533": 44994, + "535": 44465, + "536": 44468, + "537": 46096, + "538": 49561, + "54": 4051, + "540": 35005, + "544": 47576, + "545": 45326, + "546": 49489, + "548": 49934, + "549": 44966, + "55": 2816, + "550": 22730, + "551": 43697, + "552": 40427, + "553": 48096, + "554": 44218, + "555": 31046, + "556": 37864, + "557": 41948, + "558": 40486, + "559": 38605, + "56": 3980, + "560": 34135, + "561": 47915, + "562": 43918, + "563": 46572, + "565": 47372, + "568": 49211, + "57": 3553, + "570": 39254, + "571": 42875, + "572": 48724, + "573": 48638, + "574": 46900, + "575": 36189, + "576": 37452, + "577": 49447, + "578": 38907, + "579": 41734, + "58": 3365, + "580": 39322, + "581": 48630, + "582": 46044, + "583": 46239, + "584": 46352, + "585": 38905, + "586": 29796, + "587": 44617, + "588": 39118, + "589": 44169, + "59": 3270, + "590": 36993, + "591": 48952, + "592": 45839, + "593": 49051, + "594": 46438, + "595": 35124, + "596": 45734, + "597": 43239, + "598": 41292, + "599": 43452, + "6": 21, + "60": 1899, + "600": 8054, + "6000": 43434, + "601": 41706, + "602": 31418, + "603": 35642, + "604": 31916, + "605": 32417, + "606": 33206, + "607": 31980, + "608": 28688, + "609": 31751, + "61": 5333, + "610": 39132, + "612": 43610, + "613": 47512, + "614": 46841, + "615": 47007, + "616": 44214, + "617": 47941, + "618": 47448, + "62": 5237, + "620": 38850, + "623": 46872, + "625": 26704, + "626": 45191, + "627": 49856, + "628": 48200, + "629": 48602, + "63": 5066, + "630": 30005, + "635": 48250, + "64": 2414, + "640": 31102, + "641": 42759, + "642": 41290, + "643": 41813, + "644": 29173, + "645": 49259, + "646": 27720, + "647": 33981, + "648": 34287, + "649": 33300, + "65": 2996, + "650": 17544, + "651": 40639, + "652": 43193, + "653": 46435, + "654": 39111, + "655": 35916, + "656": 37466, + "657": 37680, + "658": 38431, + "659": 36445, + "66": 2791, + "660": 39885, + "661": 47159, + "662": 39380, + "663": 45791, + "665": 36879, + "666": 27310, + "6666": 19060, + "66666666": 41977, + "667": 28933, + "668": 35809, + "669": 36657, + "67": 3134, + "670": 43798, + "671": 46250, + "672": 43864, + "673": 45758, + "674": 45385, + "675": 42444, + "676": 42548, + "677": 40179, + "678": 30924, + "679": 37601, + "68": 3104, + "680": 37397, + "681": 48564, + "682": 43950, + "683": 47521, + "684": 41580, + "685": 35978, + "686": 33808, + "687": 39925, + "688": 34427, + "689": 40523, + "69": 3388, + "690": 35844, + "691": 49541, + "692": 46589, + "693": 48528, + "694": 45214, + "695": 37381, + "696": 38205, + "697": 40035, + "698": 39357, + "699": 47325, + "7": 22, + "70": 2154, + "700": 9879, + "701": 41583, + "702": 36680, + "703": 36809, + "704": 32869, + "705": 34801, + "706": 35402, + "707": 24038, + "70710": 42877, + "708": 32583, + "709": 31495, + "71": 4869, + "710": 43147, + "712": 49517, + "713": 50055, + "714": 45722, + "718": 45720, + "72": 4761, + "720": 23906, + "725": 45151, + "727": 47760, + "728": 48524, + "729": 48555, + "73": 4790, + "730": 43916, + "733": 49995, + "736": 49150, + "74": 4524, + "740": 45598, + "745": 50150, + "747": 48882, + "748": 48246, + "75": 2425, + "750": 15426, + "751": 48365, + "752": 43665, + "753": 44550, + "754": 41874, + "755": 38172, + "756": 38219, + "757": 39251, + "758": 38569, + "759": 38314, + "76": 4304, + "760": 40761, + "7601": 42752, + "762": 48194, + "763": 49641, + "765": 29143, + "76561": 48527, + "767": 32059, + "768": 30610, + "77": 3324, + "770": 41820, + "771": 46761, + "772": 43571, + "773": 46871, + "774": 47582, + "775": 34483, + "776": 39509, + "777": 29331, + "778": 39761, + "779": 40393, + "78": 3695, + "780": 40873, + "781": 49703, + "782": 46519, + "783": 50165, + "784": 37688, + "785": 41172, + "786": 46302, + "787": 41019, + "789": 40401, + "79": 3720, + "790": 37750, + "792": 48156, + "793": 44750, + "794": 50242, + "795": 41544, + "796": 41060, + "797": 44673, + "798": 43240, + "799": 45455, + "8": 23, + "80": 1795, + "800": 7410, + "8000": 33942, + "801": 41531, + "802": 30863, + "803": 43564, + "804": 36088, + "805": 28256, + "806": 37988, + "807": 36928, + "808": 28362, + "809": 34583, + "81": 6659, + "810": 40215, + "815": 49503, + "82": 6469, + "820": 41739, + "825": 47338, + "83": 5999, + "830": 48341, + "833": 48634, + "84": 5705, + "840": 40675, + "85": 5332, + "850": 25764, + "855": 45432, + "86": 4521, + "860": 45039, + "864": 39570, + "866": 42240, + "87": 5774, + "870": 46951, + "875": 31360, + "877": 42802, + "88": 3459, + "880": 41655, + "882": 42980, + "883": 49287, + "884": 40353, + "885": 44230, + "886": 44980, + "887": 46660, + "888": 28011, + "889": 39121, + "89": 4531, + "893": 49682, + "896": 48712, + "899": 44093, + "9": 24, + "90": 3829, + "900": 12865, + "901": 46815, + "905": 44928, + "909": 44675, + "91": 6420, + "910": 43234, + "911": 35549, + "915": 40248, + "916": 48894, + "92": 5892, + "920": 37128, + "925": 46351, + "93": 6052, + "930": 45418, + "94": 5824, + "940": 46899, + "949": 48581, + "95": 3865, + "950": 31027, + "951": 50119, + "952": 49234, + "953": 49649, + "954": 48372, + "956": 50148, + "96": 4846, + "960": 39277, + "968": 38956, + "969": 38819, + "97": 5607, + "970": 43587, + "975": 42716, + "978": 32196, + "98": 4089, + "980": 40022, + "985": 42250, + "986": 49087, + "987": 44183, + "989": 42520, + "99": 2079, + "990": 34155, + "992": 41561, + "993": 44821, + "994": 42691, + "995": 33438, + "996": 38565, + "997": 39647, + "998": 34808, + "999": 17032, + "9999": 24214, + ":": 25, + ":\"": 11097, + ":#": 43922, + ":'": 32105, + ":(": 37498, + ":,": 45299, + ":-": 21912, + ":/": 14079, + "://": 1378, + "::": 3712, + "::::": 24022, + "::::::::": 43661, + ":[": 33250, + ":\\": 7479, + ":]": 47715, + ":{": 29164, + ";": 26, + ";\"": 26033, + ";;": 7665, + ";;;;": 14223, + ";;;;;;;;": 25887, + ";;;;;;;;;;;;": 46939, + ";}": 46956, + "<": 27, + "": 50256, + "=": 28, + "=\"": 2625, + "=\"\"": 33151, + "=\"#": 25698, + "=\"/": 35922, + "=#": 46249, + "=$": 43641, + "='": 11639, + "=(": 16193, + "=-": 10779, + "=-=-": 16822, + "=-=-=-=-": 27584, + "=-=-=-=-=-=-=-=-": 46402, + "=/": 33223, + "==": 855, + "===": 18604, + "====": 1421, + "======": 50155, + "========": 2559, + "============": 25609, + "================": 4770, + "================================": 10052, + "================================================================": 23926, + "=>": 14804, + "=[": 41888, + "=\\\"": 17553, + "=]": 48874, + "={": 34758, + "=~": 31820, + "=~=~": 33813, + ">": 29, + ">\"": 24618, + ">(": 33994, + ">)": 43734, + ">,": 22330, + ">.": 28401, + ">:": 31175, + "><": 6927, + ">>": 4211, + ">>>": 33409, + ">>>>": 16471, + ">>>>>>>>": 33717, + ">>\\": 34516, + ">[": 36937, + ">]": 37981, + "?": 30, + "?!": 12248, + "?!\"": 30823, + "?\"": 1701, + "?\",": 35379, + "?\".": 43634, + "?'": 8348, + "?'\"": 26989, + "?)": 10091, + "?),": 33924, + "?).": 29865, + "?,": 21747, + "?:": 27514, + "??": 3548, + "???": 28358, + "????": 9805, + "?????": 19622, + "?????-": 25658, + "?????-?????-": 31666, + "????????": 35709, + "?]": 26398, + "?ãĢį": 42943, + "@": 31, + "@#": 41573, + "@#&": 48193, + "@@": 12404, + "@@@@": 22675, + "@@@@@@@@": 37991, + "A": 32, + "AA": 3838, + "AAA": 29697, + "AAAA": 17922, + "AAAAAAAA": 43488, + "AAF": 38540, + "AB": 6242, + "ABC": 24694, + "ABLE": 17534, + "AC": 2246, + "ACA": 26576, + "ACC": 26861, + "ACE": 11598, + "ACH": 16219, + "ACK": 8120, + "ACP": 33056, + "ACT": 10659, + "ACTED": 38542, + "ACTION": 44710, + "ACY": 43300, + "AD": 2885, + "ADA": 26853, + "ADD": 29266, + "ADE": 19266, + "ADRA": 40517, + "ADS": 47149, + "ADVERTISEMENT": 19053, + "AE": 14242, + "AF": 8579, + "AFP": 17449, + "AFTA": 32106, + "AG": 4760, + "AGE": 11879, + "AGES": 25552, + "AH": 18429, + "AI": 20185, + "AIDS": 39338, + "AIN": 29833, + "AIR": 42149, + "AK": 10206, + "AKING": 43602, + "AL": 1847, + "ALD": 44071, + "ALE": 21358, + "ALK": 28082, + "ALL": 7036, + "ALLY": 19807, + "ALS": 23333, + "ALSE": 23719, + "ALT": 31429, + "ALTH": 40818, + "AM": 2390, + "AMA": 25087, + "AMD": 28075, + "AME": 10067, + "AMES": 29559, + "AMI": 43870, + "AMP": 23518, + "AMS": 40834, + "AMY": 29428, + "AN": 1565, + "ANA": 31574, + "ANC": 20940, + "ANCE": 19240, + "AND": 6981, + "ANE": 30525, + "ANG": 15567, + "ANGE": 27746, + "ANI": 43664, + "ANK": 15154, + "ANN": 22846, + "ANS": 15037, + "ANT": 8643, + "ANY": 31827, + "AP": 2969, + "APD": 35349, + "APE": 45721, + "APH": 31300, + "API": 17614, + "APP": 24805, + "APS": 44580, + "APTER": 29485, + "AR": 1503, + "ARA": 24401, + "ARB": 37304, + "ARC": 25793, + "ARCH": 31315, + "ARD": 9795, + "ARDIS": 49608, + "ARDS": 48294, + "ARE": 12203, + "ARGET": 46095, + "ARI": 33604, + "ARK": 14175, + "ARM": 33456, + "ARP": 36035, + "ARR": 26465, + "ARS": 27415, + "ART": 7227, + "ARY": 13153, + "AS": 1921, + "ASC": 42643, + "ASE": 11159, + "ASED": 42827, + "ASH": 11211, + "ASHINGTON": 19436, + "ASON": 36033, + "ASS": 10705, + "AST": 11262, + "ASY": 26483, + "AT": 1404, + "ATA": 13563, + "ATCH": 11417, + "ATE": 6158, + "ATED": 11617, + "ATER": 23261, + "ATES": 29462, + "ATH": 12599, + "ATHER": 45226, + "ATING": 33881, + "ATION": 6234, + "ATIONAL": 29912, + "ATIONS": 18421, + "ATIVE": 37045, + "ATOR": 25633, + "ATS": 33586, + "ATT": 17139, + "ATTLE": 35455, + "ATURE": 40086, + "ATURES": 47471, + "AU": 26830, + "AUD": 48877, + "AUT": 39371, + "AV": 10116, + "AW": 12298, + "AX": 25922, + "AY": 4792, + "AZ": 22778, + "Aaron": 34451, + "Ab": 4826, + "Ability": 22453, + "About": 8585, + "Above": 32397, + "Abs": 24849, + "Absolutely": 40501, + "Abstract": 23839, + "Abyss": 49073, + "Ac": 12832, + "Acc": 17320, + "Accept": 38855, + "Access": 15457, + "Accessory": 41629, + "According": 4821, + "Account": 30116, + "Acknowled": 39482, + "Across": 40553, + "Act": 6398, + "Action": 12502, + "ActionCode": 31573, + "Activ": 25526, + "Active": 13739, + "Activity": 16516, + "Actor": 40277, + "Actually": 26417, + "Ad": 2782, + "Adam": 23159, + "Adams": 47462, + "Adapt": 48003, + "Adapter": 47307, + "Add": 4550, + "Added": 13003, + "Adding": 32901, + "Additional": 17699, + "Additionally": 23216, + "Address": 20231, + "Adds": 46245, + "Adjust": 39668, + "Admin": 46787, + "Administ": 41862, + "Adult": 42995, + "Adv": 22856, + "Advanced": 28809, + "Adventure": 48289, + "Advertisement": 4723, + "Advertisements": 14592, + "Af": 17584, + "Afee": 44314, + "Aff": 35191, + "African": 43032, + "After": 3260, + "Ag": 10262, + "Again": 15316, + "Against": 39276, + "Age": 23396, + "Agent": 36772, + "Agg": 46384, + "Ah": 10910, + "Aid": 44245, + "Aim": 49945, + "Air": 16170, + "Ak": 33901, + "Al": 2348, + "Alabama": 49177, + "Alan": 36235, + "Albert": 42590, + "Ale": 37474, + "Alert": 36420, + "Alex": 15309, + "Alexander": 38708, + "Ali": 37893, + "Alias": 40489, + "Alice": 44484, + "Alien": 44501, + "All": 3237, + "Allah": 48620, + "Allen": 39989, + "Allow": 35265, + "Allows": 34934, + "Almost": 23379, + "Along": 24035, + "Alpha": 38077, + "Already": 37447, + "Alright": 31442, + "Also": 7583, + "Alt": 29161, + "Altern": 23081, + "Alternative": 49788, + "Alternatively": 44163, + "Although": 7003, + "Always": 30374, + "Am": 5840, + "Amazing": 42770, + "Amazon": 24888, + "Amb": 35649, + "Americ": 5477, + "America": 18165, + "American": 7437, + "Americans": 17636, + "Amid": 43541, + "Among": 14311, + "Amount": 31264, + "Amy": 40797, + "An": 2025, + "Analy": 37702, + "Analysis": 32750, + "Ancient": 44974, + "And": 1870, + "Anderson": 42991, + "Andre": 31258, + "Andrew": 20508, + "Android": 25934, + "Andy": 35314, + "Ang": 13450, + "Angel": 33246, + "Angelo": 45585, + "Anim": 35320, + "Animal": 40002, + "Animation": 39520, + "Ann": 18858, + "Anna": 31160, + "Anne": 43227, + "Anonymous": 20660, + "Another": 6610, + "Answer": 33706, + "Ant": 13217, + "Anth": 30327, + "Anthony": 32697, + "Anti": 28795, + "Any": 7149, + "Anyone": 21129, + "Anything": 40028, + "Anyway": 23795, + "Ap": 25189, + "Apart": 39182, + "App": 4677, + "AppData": 22322, + "Apparently": 30402, + "Appearance": 48231, + "Appearances": 47569, + "Apple": 16108, + "Applic": 33583, + "Application": 23416, + "Applications": 41995, + "Apply": 44836, + "Apps": 48433, + "Apr": 13680, + "April": 16784, + "Ar": 3163, + "Arab": 31602, + "Arc": 24021, + "Arcade": 43763, + "Arch": 19895, + "Are": 8491, + "Area": 30547, + "Aren": 43199, + "Arg": 28100, + "Args": 42035, + "Ari": 26529, + "Arizona": 40732, + "Ark": 42007, + "Arm": 26560, + "Armor": 31512, + "Army": 45272, + "Around": 24472, + "Array": 19182, + "Arsenal": 46230, + "Art": 8001, + "Arthur": 29874, + "Article": 14906, + "Artist": 43020, + "As": 1722, + "Ash": 26754, + "Asia": 38555, + "Asian": 43224, + "Aside": 32602, + "Ask": 25214, + "Asked": 18932, + "Ass": 8021, + "Assad": 23622, + "Assembly": 49670, + "Asset": 45869, + "Assistant": 48902, + "Associated": 29014, + "Assuming": 48142, + "Ast": 33751, + "Async": 42367, + "At": 2953, + "Atl": 25255, + "Atlanta": 43482, + "Atlantic": 41120, + "Att": 8086, + "Attach": 33296, + "Attack": 27732, + "Attempt": 37177, + "Attempts": 48452, + "Attorney": 46319, + "Attribute": 33682, + "Attributes": 29021, + "Aud": 16353, + "Audio": 21206, + "Aug": 12512, + "August": 17908, + "Aust": 15160, + "Austin": 40245, + "Austral": 19763, + "Australia": 27429, + "Australian": 38036, + "Aut": 16541, + "Auth": 30515, + "Authent": 47649, + "Author": 13838, + "Authorities": 28705, + "Auto": 27722, + "Autom": 38062, + "Av": 7355, + "Availability": 29841, + "Available": 10493, + "Average": 26287, + "Avg": 48997, + "Avoid": 38618, + "Aw": 23155, + "Awesome": 49061, + "Ax": 31554, + "Ay": 42012, + "Az": 26903, + "B": 33, + "BA": 4339, + "BACK": 31098, + "BALL": 45463, + "BAT": 47379, + "BB": 15199, + "BBC": 33833, + "BC": 2749, + "BD": 14529, + "BE": 12473, + "BER": 13246, + "BF": 29499, + "BG": 40469, + "BI": 3483, + "BIL": 19676, + "BILITIES": 49516, + "BILITY": 25382, + "BILL": 39888, + "BIP": 47772, + "BIT": 26094, + "BL": 9148, + "BLE": 19146, + "BLIC": 32936, + "BM": 12261, + "BN": 15766, + "BO": 8202, + "BOOK": 39453, + "BOX": 39758, + "BP": 20866, + "BR": 11473, + "BRE": 40438, + "BS": 4462, + "BSD": 21800, + "BT": 19313, + "BTC": 35964, + "BU": 19499, + "BUG": 12953, + "BUR": 38926, + "BUS": 45346, + "BUT": 47526, + "BW": 48802, + "BY": 17513, + "Ba": 34458, + "Baby": 36534, + "Back": 7282, + "Background": 21756, + "Bad": 22069, + "Bah": 47514, + "Bal": 24597, + "Balance": 45866, + "Ball": 23410, + "Balt": 41312, + "Baltimore": 46139, + "Ban": 30457, + "Band": 31407, + "Bang": 43984, + "Bank": 28650, + "Bar": 10374, + "Barn": 47359, + "Bas": 15522, + "Base": 14881, + "Based": 15001, + "Basic": 26416, + "Basically": 31524, + "Bat": 24541, + "Batman": 37039, + "Battery": 47006, + "Battle": 24064, + "Bay": 15262, + "Be": 3856, + "Bear": 36352, + "Beast": 41490, + "Beat": 34979, + "Beaut": 38413, + "Bec": 39649, + "Because": 8128, + "Beck": 43454, + "Bed": 45896, + "Bee": 49512, + "Beer": 49802, + "Before": 8421, + "Beg": 24586, + "Begin": 44140, + "Beginning": 45198, + "Beh": 25267, + "Behind": 34163, + "Being": 18357, + "Bel": 12193, + "Bell": 36488, + "Below": 21106, + "Ben": 11696, + "Bench": 44199, + "Benef": 42166, + "Benz": 42484, + "Ber": 24814, + "Bern": 23927, + "Bernie": 33433, + "Berry": 25215, + "Besides": 23937, + "Best": 13014, + "Bet": 13056, + "Beta": 43303, + "Better": 28971, + "Between": 25262, + "Bey": 21993, + "Beyond": 24102, + "Bi": 23286, + "Big": 12804, + "Bill": 17798, + "Billy": 49640, + "Bind": 36180, + "Bio": 42787, + "Bir": 50091, + "Bird": 42562, + "Birth": 38480, + "Bit": 13128, + "Bitcoin": 22614, + "Bl": 3629, + "Black": 9915, + "Blade": 47520, + "Blake": 37849, + "Ble": 43413, + "Block": 12235, + "Blocks": 45356, + "Blog": 42383, + "Blood": 21659, + "Bloom": 38941, + "Bloomberg": 47696, + "Blu": 38676, + "Blue": 14573, + "Bo": 16635, + "Board": 29828, + "Bob": 18861, + "Body": 25842, + "Bomb": 48478, + "Bon": 20682, + "Bone": 49580, + "Bonus": 29435, + "Boo": 46120, + "Book": 10482, + "Books": 30650, + "Boost": 45686, + "Boot": 36476, + "Border": 34189, + "Born": 28524, + "Boss": 37310, + "Boston": 31710, + "Bot": 20630, + "Both": 10265, + "Bott": 28653, + "Bottom": 34104, + "Bound": 49646, + "Bow": 39961, + "Box": 14253, + "Boy": 26554, + "Br": 9414, + "Bra": 42333, + "Brad": 30805, + "Brain": 44687, + "Brand": 38416, + "Brandon": 45467, + "Brave": 39787, + "Brazil": 39190, + "Bre": 12679, + "Break": 31737, + "Breaking": 29449, + "Brend": 48015, + "Brew": 44029, + "Brexit": 40730, + "Brian": 24761, + "Bride": 47148, + "Bridge": 37385, + "Brien": 20118, + "Bright": 41267, + "Bring": 31416, + "Brit": 17959, + "Britain": 37114, + "British": 25631, + "Bro": 15783, + "Broad": 30507, + "Bron": 18760, + "Brook": 45534, + "Brother": 39461, + "Brow": 32635, + "Brown": 20644, + "Browser": 46532, + "Bruce": 38509, + "Bs": 37000, + "Bu": 38374, + "Buff": 36474, + "Buffer": 28632, + "Bug": 25624, + "Build": 15580, + "Builder": 32875, + "Building": 25954, + "Built": 39582, + "Bul": 33481, + "Bull": 39549, + "Bur": 22991, + "Burn": 29053, + "Bus": 16286, + "Bush": 36113, + "Business": 24749, + "But": 1537, + "Button": 21864, + "Buy": 14518, + "Buyable": 39693, + "BuyableInstoreAndOnline": 40242, + "Buzz": 48230, + "By": 3886, + "ById": 48364, + "Byte": 40778, + "Bytes": 45992, + "C": 34, + "CA": 8141, + "CAN": 44565, + "CAP": 33177, + "CAR": 20034, + "CAST": 44647, + "CB": 23199, + "CBC": 29208, + "CBS": 22923, + "CC": 4093, + "CCC": 46361, + "CD": 8610, + "CDC": 47667, + "CE": 5222, + "CENT": 43960, + "CEO": 46691, + "CEPT": 42006, + "CF": 22495, + "CG": 39816, + "CH": 3398, + "CHA": 49285, + "CHAPTER": 41481, + "CHAR": 38019, + "CHAT": 31542, + "CHECK": 50084, + "CHO": 44899, + "CHQ": 47831, + "CHR": 37846, + "CI": 25690, + "CIA": 49732, + "CL": 5097, + "CLA": 16827, + "CLAIM": 48778, + "CLASS": 31631, + "CLASSIFIED": 45449, + "CLE": 29931, + "CLOSE": 32737, + "CLUD": 39149, + "CLUS": 28332, + "CM": 24187, + "CN": 44175, + "CNN": 18474, + "CO": 8220, + "COL": 25154, + "COLOR": 46786, + "COM": 9858, + "COMPLE": 41335, + "CON": 10943, + "CONCLUS": 47542, + "CONT": 37815, + "COR": 44879, + "CP": 8697, + "CPU": 36037, + "CR": 9419, + "CRE": 43387, + "CRIP": 36584, + "CRIPTION": 40165, + "CS": 7902, + "CSS": 49155, + "CT": 4177, + "CTV": 30428, + "CU": 43633, + "CV": 33538, + "CVE": 31436, + "CW": 43538, + "Ca": 24334, + "Cache": 30562, + "Cal": 9771, + "Calif": 19619, + "California": 25284, + "Call": 14134, + "Callback": 47258, + "Calling": 48593, + "Cam": 21701, + "Camera": 35632, + "Camp": 21111, + "Campaign": 46102, + "Can": 6090, + "Canada": 17940, + "Canadian": 28203, + "Cand": 41572, + "Cap": 15610, + "Capital": 39315, + "Capt": 19209, + "Captain": 27898, + "Capture": 49630, + "Car": 9914, + "Card": 16962, + "Care": 17784, + "Carl": 26886, + "Cart": 43476, + "Carter": 49958, + "Cas": 35155, + "Case": 20448, + "Cash": 35361, + "Cass": 43529, + "Cast": 19248, + "Cat": 21979, + "Catal": 39075, + "Catalog": 49015, + "Category": 27313, + "Cath": 39581, + "Catholic": 48919, + "Cause": 42323, + "Cele": 42741, + "Cell": 28780, + "Cent": 19085, + "Center": 23656, + "Central": 30645, + "Cert": 37608, + "Certain": 26469, + "Certainly": 36001, + "Ch": 1925, + "Chain": 35491, + "Chair": 43189, + "Chall": 41812, + "Champ": 48507, + "Chan": 48407, + "Chance": 43606, + "Change": 19400, + "Changed": 31813, + "Changes": 29238, + "Changing": 48333, + "Channel": 29239, + "Chapter": 14126, + "Char": 12441, + "Character": 27275, + "Characters": 48393, + "Charg": 28316, + "Charge": 50044, + "Charges": 36970, + "Charl": 24453, + "Charles": 28711, + "Charlie": 37136, + "Chart": 45488, + "Chat": 30820, + "Che": 7376, + "Check": 9787, + "Chel": 38292, + "Chelsea": 41053, + "Chem": 41829, + "Chest": 45170, + "Chicago": 25705, + "Chicken": 45565, + "Chief": 23675, + "Child": 16424, + "Children": 26829, + "China": 14581, + "Chinese": 23604, + "Chip": 49985, + "Cho": 22164, + "Choice": 46770, + "Choose": 31851, + "Chris": 15645, + "Christ": 10684, + "Christian": 20298, + "Christmas": 44614, + "Christopher": 38025, + "Chuck": 44324, + "Church": 46686, + "Circ": 31560, + "City": 14941, + "Civil": 32610, + "Cl": 2601, + "Cla": 47404, + "Claim": 44819, + "Clar": 48035, + "Clark": 43250, + "Class": 9487, + "Classic": 39914, + "Cle": 34349, + "Clean": 32657, + "Clear": 19856, + "Clearly": 30638, + "Click": 8164, + "Client": 11792, + "Climate": 37649, + "Clinton": 16549, + "Clock": 44758, + "Close": 26125, + "Closure": 45398, + "Cloud": 18839, + "Club": 42350, + "Cmd": 40109, + "Co": 7222, + "Coach": 40677, + "Cod": 43806, + "Code": 10669, + "Coin": 24387, + "Col": 5216, + "Cola": 28635, + "Cold": 34312, + "Cole": 46509, + "Coll": 22667, + "Collect": 31337, + "Collection": 36307, + "College": 38951, + "Collins": 49645, + "Color": 10258, + "Colorado": 41330, + "Columb": 36063, + "Column": 39470, + "Com": 5377, + "Comb": 20575, + "Combat": 38667, + "Come": 16773, + "Coming": 30804, + "Comm": 6935, + "Command": 21575, + "Comment": 21357, + "Comments": 23903, + "Commerce": 47662, + "Commercial": 48401, + "Commission": 50246, + "Common": 17227, + "Commun": 30813, + "Community": 20012, + "Comp": 7293, + "Compan": 41309, + "Companies": 49111, + "Company": 39154, + "Compar": 50249, + "Compare": 41488, + "Compared": 44669, + "Compat": 40073, + "Compl": 38143, + "Complete": 20988, + "Completed": 43768, + "Component": 21950, + "Computer": 34556, + "Con": 3103, + "Conclusion": 21481, + "Cond": 25559, + "Condition": 48362, + "Conf": 18546, + "Config": 16934, + "Configuration": 38149, + "Cong": 18649, + "Congratulations": 45048, + "Congress": 25916, + "Conn": 37321, + "Connect": 13313, + "Connection": 32048, + "Connector": 34525, + "Connell": 15559, + "Connor": 27136, + "Cons": 9444, + "Conservative": 42039, + "Consider": 19626, + "Considering": 40475, + "Console": 47581, + "Const": 34184, + "Construct": 42316, + "Constructed": 25207, + "Construction": 36687, + "Consumer": 49106, + "Cont": 4264, + "Contact": 17829, + "Container": 29869, + "Content": 19746, + "Contents": 15842, + "Context": 21947, + "Contin": 17875, + "Continue": 29453, + "Contract": 45845, + "Contribut": 37146, + "Control": 15988, + "Controller": 22130, + "Cook": 28937, + "Cool": 34530, + "Cooldown": 45953, + "Cop": 13379, + "Copy": 29881, + "Copyright": 15269, + "Cor": 10606, + "Core": 14055, + "Corn": 41389, + "Corp": 45680, + "Correct": 42779, + "Correction": 43267, + "Cos": 36734, + "Cost": 13729, + "Could": 23722, + "Coun": 31053, + "Council": 40940, + "Count": 12332, + "Counter": 31694, + "Country": 33921, + "Cour": 25877, + "Course": 49046, + "Court": 36699, + "Courtesy": 31825, + "Cover": 27245, + "Cow": 40147, + "Cr": 13916, + "Cra": 33800, + "Craft": 14467, + "Craig": 40441, + "Crash": 47598, + "Cre": 12443, + "Creat": 16719, + "Create": 16447, + "Created": 41972, + "Creating": 32071, + "Credit": 23690, + "Credits": 42855, + "Crew": 46724, + "Crime": 45580, + "Crit": 18559, + "Critical": 41000, + "Critics": 36623, + "Cro": 35403, + "Cross": 21544, + "Cru": 27535, + "Crunch": 49384, + "Cruz": 41811, + "Cry": 26677, + "Crypt": 23919, + "Crystal": 43752, + "Cs": 32274, + "Ct": 33707, + "Ctrl": 40069, + "Cu": 46141, + "Cub": 43632, + "Cube": 29071, + "Cur": 26628, + "Current": 11297, + "Currently": 21327, + "Custom": 15022, + "Customer": 44939, + "Cut": 26254, + "Cy": 20418, + "D": 35, + "DA": 5631, + "DAQ": 46640, + "DATA": 26947, + "DAY": 26442, + "DB": 11012, + "DC": 9697, + "DCS": 49513, + "DD": 16458, + "DE": 7206, + "DEBUG": 30531, + "DEC": 41374, + "DEF": 32988, + "DEM": 39429, + "DEN": 41819, + "DEP": 46162, + "DER": 14418, + "DERR": 49643, + "DES": 30910, + "DEV": 39345, + "DF": 8068, + "DH": 41473, + "DI": 17931, + "DIR": 34720, + "DIS": 26288, + "DIT": 49828, + "DIV": 33569, + "DJ": 35028, + "DK": 48510, + "DL": 19260, + "DM": 23127, + "DN": 35504, + "DNA": 28886, + "DO": 18227, + "DOC": 38715, + "DOM": 39170, + "DON": 41173, + "DOS": 35178, + "DOWN": 41925, + "DP": 6322, + "DR": 7707, + "DS": 5258, + "DT": 24544, + "DVD": 39218, + "DW": 42955, + "DX": 36227, + "Da": 26531, + "Dad": 46270, + "Daddy": 48280, + "Daily": 28545, + "Dallas": 40540, + "Dam": 14550, + "Damage": 22022, + "Damn": 43343, + "Dan": 21174, + "Daniel": 19962, + "Danny": 45478, + "Dar": 32708, + "Dark": 17367, + "Dash": 43041, + "Dat": 27354, + "Data": 6601, + "Database": 38105, + "Date": 10430, + "Dave": 27984, + "David": 11006, + "Davis": 36462, + "Day": 12393, + "Days": 38770, + "Db": 43832, + "De": 5005, + "Dead": 20489, + "Deal": 45776, + "Dean": 36372, + "Dear": 20266, + "Death": 20148, + "Deb": 16587, + "Debug": 27509, + "Dec": 10707, + "December": 20588, + "Decl": 37835, + "Decre": 43198, + "Deep": 29744, + "Def": 7469, + "Default": 19463, + "Defense": 27300, + "Definition": 36621, + "Del": 13856, + "Delete": 38727, + "Delivery": 33129, + "DeliveryDate": 39749, + "Delta": 42430, + "Dem": 11522, + "Demand": 42782, + "Democratic": 33939, + "Democrats": 29969, + "Demon": 35477, + "Den": 21306, + "Denver": 49818, + "Dep": 12156, + "Department": 36261, + "Depending": 41156, + "Deploy": 49322, + "Depth": 48791, + "Depths": 42382, + "Der": 28532, + "Des": 5960, + "Desc": 24564, + "Description": 11828, + "Design": 23067, + "Desk": 42523, + "Desktop": 36881, + "Despite": 8332, + "Dest": 24159, + "Destroy": 49174, + "Det": 11242, + "Detailed": 32080, + "Details": 24259, + "Detect": 47504, + "Detroit": 40404, + "Dev": 13603, + "Develop": 19246, + "Developer": 45351, + "Development": 41206, + "Device": 24728, + "Dex": 48875, + "Di": 18683, + "Dial": 24400, + "Dialog": 44204, + "Dialogue": 41099, + "Diamond": 47710, + "Dick": 38743, + "Did": 11633, + "Die": 32423, + "Diff": 28813, + "Different": 40341, + "Dig": 19511, + "Digital": 27640, + "Dim": 29271, + "Dir": 35277, + "Direct": 13470, + "Director": 28702, + "Directory": 43055, + "Dis": 7279, + "Disable": 48893, + "Disc": 15642, + "Disclaimer": 19618, + "Discover": 44596, + "Discuss": 48873, + "Discussion": 34255, + "Disk": 40961, + "Disney": 37338, + "Dispatch": 49354, + "Display": 23114, + "Dist": 20344, + "Distance": 45767, + "District": 44857, + "Div": 24095, + "Do": 5211, + "DoS": 46498, + "Doc": 23579, + "Doctor": 37564, + "Doctors": 47087, + "Document": 24941, + "Documents": 38354, + "Does": 13921, + "Dog": 32942, + "Dom": 24510, + "Domain": 43961, + "Domin": 43417, + "Don": 3987, + "Donald": 7371, + "DonaldTrump": 27674, + "Done": 45677, + "Donnell": 24853, + "Dou": 40287, + "Double": 25628, + "Doug": 42297, + "Down": 8048, + "Download": 10002, + "Downloadha": 41551, + "Dr": 6187, + "Draft": 37741, + "Drag": 46022, + "Dragon": 17808, + "DragonMagazine": 42424, + "Draw": 25302, + "Dream": 30571, + "Dri": 20564, + "Drive": 24825, + "Driver": 32103, + "Dro": 35442, + "Drop": 26932, + "Drug": 37943, + "Ds": 30832, + "Du": 35660, + "Dual": 36248, + "Dub": 37590, + "Due": 22229, + "Dun": 30128, + "Dur": 36927, + "Duration": 26054, + "During": 7191, + "Dust": 43767, + "Dutch": 49717, + "Dynamic": 44090, + "E": 36, + "EA": 16412, + "EAR": 17133, + "EB": 30195, + "EC": 2943, + "ECA": 36600, + "ECD": 27295, + "ECH": 25994, + "ECK": 25171, + "ECT": 9782, + "ECTION": 24565, + "ED": 1961, + "EDIT": 24706, + "EE": 6500, + "EED": 41841, + "EEE": 31909, + "EEEE": 35039, + "EEK": 33823, + "EEP": 35238, + "EF": 25425, + "EFF": 37267, + "EG": 7156, + "EGA": 33146, + "EGIN": 43312, + "EH": 42413, + "EL": 3698, + "ELD": 24639, + "ELF": 37738, + "ELL": 23304, + "ELS": 37142, + "ELY": 30943, + "EM": 3620, + "EMA": 27630, + "EMBER": 28952, + "EMENT": 12529, + "EMOTE": 36862, + "EMP": 39494, + "EMS": 39201, + "EN": 1677, + "ENA": 45510, + "ENC": 24181, + "ENCE": 18310, + "ENCY": 45155, + "END": 10619, + "ENDED": 49361, + "ENE": 39267, + "ENG": 26808, + "ENGTH": 49494, + "ENN": 34571, + "ENS": 16938, + "ENSE": 24290, + "ENT": 3525, + "ENTION": 45589, + "ENTS": 15365, + "EO": 4720, + "EP": 8905, + "EPA": 40906, + "ER": 1137, + "ERA": 46461, + "ERAL": 27130, + "ERC": 47691, + "ERE": 9338, + "ERG": 49837, + "ERN": 28778, + "ERO": 34812, + "ERROR": 24908, + "ERS": 4877, + "ERSON": 29086, + "ERT": 17395, + "ERY": 19664, + "ES": 1546, + "ESA": 43279, + "ESCO": 43311, + "ESE": 33635, + "ESH": 44011, + "ESPN": 31730, + "ESS": 7597, + "ESSION": 47621, + "EST": 6465, + "EStream": 39906, + "EStreamFrame": 43177, + "ET": 2767, + "ETA": 20892, + "ETF": 22274, + "ETH": 20702, + "ETHOD": 36252, + "ETS": 32716, + "EU": 19684, + "EV": 20114, + "EVA": 27881, + "EW": 6217, + "EX": 6369, + "EXP": 49864, + "EXT": 13918, + "EY": 22348, + "Each": 10871, + "Ear": 8419, + "Earlier": 13689, + "Early": 20457, + "Earn": 49725, + "Earth": 22840, + "East": 25234, + "Eastern": 46109, + "Easy": 28406, + "Eat": 47659, + "Ec": 49136, + "Econom": 28489, + "Economic": 48307, + "Ed": 7407, + "Edge": 37021, + "Edit": 18378, + "Edited": 45882, + "Editor": 17171, + "Educ": 33380, + "Education": 41183, + "Edward": 43982, + "Effect": 18610, + "Effective": 44831, + "Effects": 47738, + "Egypt": 39299, + "Eh": 43894, + "Eight": 29571, + "Either": 32478, + "El": 9527, + "Ele": 28827, + "Elect": 19453, + "Electric": 44132, + "Element": 20180, + "Elf": 46995, + "Elizabeth": 43568, + "Ell": 30639, + "Els": 45507, + "Elsa": 49050, + "Else": 40674, + "Elsewhere": 49374, + "Em": 10161, + "Email": 15333, + "Emb": 31567, + "Emer": 32779, + "Emergency": 48979, + "Emily": 48640, + "Employ": 29733, + "Empty": 40613, + "En": 4834, + "Enable": 36695, + "Enabled": 20491, + "Enc": 27195, + "End": 12915, + "Energy": 28925, + "Eng": 7936, + "Engine": 13798, + "EngineDebug": 49781, + "Engineers": 28620, + "England": 39163, + "English": 15823, + "Enh": 35476, + "Enhanced": 49026, + "Enjoy": 27467, + "Enlarge": 30952, + "Enough": 47323, + "Ent": 14539, + "Enter": 17469, + "Entity": 32398, + "Entry": 30150, + "Environment": 31441, + "Environmental": 47213, + "Ep": 13807, + "Episode": 23758, + "Equ": 23588, + "Er": 9139, + "Eric": 25004, + "Error": 12331, + "Es": 23041, + "Esc": 47051, + "Especially": 48464, + "Ess": 29508, + "Est": 22362, + "Eth": 40226, + "Euro": 14398, + "Europe": 16112, + "European": 22030, + "Ev": 15200, + "Eva": 44239, + "Even": 6104, + "Event": 9237, + "Events": 37103, + "Eventually": 28724, + "Ever": 23921, + "Every": 6109, + "Everybody": 28172, + "Everyone": 16190, + "Everything": 19693, + "Evidence": 46785, + "Evil": 48477, + "Ex": 3109, + "Exactly": 47173, + "Example": 16281, + "Examples": 27730, + "Exc": 40127, + "Excellent": 45675, + "Except": 30313, + "Exception": 16922, + "Exec": 23002, + "Executive": 43885, + "Exit": 30337, + "Exp": 16870, + "Exper": 20468, + "Experience": 44901, + "Experts": 38897, + "Expl": 18438, + "Explore": 35433, + "Export": 43834, + "Express": 38839, + "Ext": 11627, + "External": 41506, + "Extra": 27726, + "Extreme": 36716, + "Ey": 36287, + "Eye": 24876, + "F": 37, + "FA": 7708, + "FACE": 49836, + "FAQ": 42680, + "FAULT": 38865, + "FB": 26001, + "FBI": 39379, + "FC": 4851, + "FD": 26009, + "FE": 15112, + "FER": 24302, + "FF": 5777, + "FFER": 45746, + "FFFF": 29312, + "FG": 30386, + "FH": 44602, + "FI": 11674, + "FIELD": 44603, + "FIG": 16254, + "FIL": 46700, + "FILE": 25664, + "FIN": 20032, + "FINE": 29940, + "FINEST": 40236, + "FIR": 39776, + "FIX": 47084, + "FK": 26236, + "FL": 3697, + "FLAG": 38948, + "FM": 23264, + "FML": 34708, + "FN": 43221, + "FO": 6080, + "FOR": 13775, + "FORE": 30818, + "FORM": 21389, + "FORMATION": 35036, + "FOX": 47853, + "FP": 5837, + "FR": 10913, + "FREE": 39274, + "FS": 10652, + "FT": 9792, + "FTWARE": 37485, + "FU": 38989, + "FUL": 46476, + "FUN": 42296, + "FW": 24160, + "FX": 17213, + "FY": 43833, + "Fa": 50110, + "Fab": 43957, + "Fac": 47522, + "Face": 32388, + "Facebook": 12025, + "Fact": 29054, + "Factor": 41384, + "Factory": 22810, + "FactoryReloaded": 37631, + "Fail": 39044, + "Failure": 50015, + "Fair": 30099, + "Faith": 45536, + "Fake": 49233, + "Fal": 41129, + "Fall": 24750, + "False": 25101, + "Family": 24094, + "Fan": 22480, + "Fans": 36570, + "Far": 21428, + "Farm": 48412, + "Fast": 22968, + "Fat": 33804, + "Father": 34823, + "Favorite": 49434, + "Fax": 46512, + "Fe": 14304, + "Fear": 37798, + "Feature": 38816, + "Featured": 37948, + "Features": 23595, + "Feb": 15146, + "February": 21816, + "Fed": 42268, + "Federal": 24099, + "Feed": 18332, + "Feel": 35114, + "Fel": 42493, + "Female": 27273, + "Fer": 43362, + "Fest": 45139, + "Few": 32351, + "Fi": 10547, + "Field": 15878, + "Fif": 44403, + "Fig": 14989, + "Fight": 27365, + "Fighting": 46375, + "Figure": 11337, + "Fil": 11928, + "File": 8979, + "Filename": 35063, + "Files": 25876, + "Fill": 33762, + "Film": 39750, + "Filter": 22417, + "Fin": 18467, + "Final": 19006, + "Finally": 11158, + "Financial": 43621, + "Find": 16742, + "Finding": 36276, + "Fine": 34389, + "Finish": 48658, + "Fire": 13543, + "First": 5962, + "Firstly": 49709, + "Fish": 39428, + "Fit": 31805, + "Five": 20029, + "Fix": 22743, + "Fixed": 13715, + "Fl": 7414, + "Fla": 47487, + "Flag": 34227, + "Flags": 40053, + "Flash": 30670, + "Fle": 47669, + "Flickr": 47250, + "Flight": 43069, + "Flo": 33574, + "Float": 43879, + "Flor": 26953, + "Florida": 31135, + "Flow": 37535, + "Fly": 33771, + "Flying": 49095, + "Focus": 34888, + "Folder": 41092, + "Follow": 7155, + "Following": 14291, + "Font": 23252, + "FontSize": 38160, + "Food": 24602, + "Foot": 17574, + "Football": 37316, + "Footnote": 33795, + "For": 1890, + "Force": 10292, + "Ford": 37308, + "Fore": 16351, + "Foreign": 33616, + "Forest": 34605, + "Forge": 19857, + "ForgeModLoader": 24934, + "Form": 8479, + "Format": 26227, + "Former": 14282, + "Fort": 21926, + "Fortunately": 31276, + "Forward": 39746, + "Found": 21077, + "Four": 15137, + "Fourth": 45530, + "Fox": 19399, + "Fr": 6732, + "Fra": 49562, + "Frag": 42974, + "Fram": 21055, + "Frame": 19778, + "Frames": 35439, + "Frameworks": 42026, + "Fran": 38848, + "Franc": 42885, + "France": 28572, + "Frank": 17439, + "Fre": 20366, + "Fred": 30847, + "Free": 11146, + "Freedom": 38885, + "French": 24111, + "Fresh": 35857, + "Fri": 30214, + "Friday": 20610, + "Friend": 23331, + "Friends": 36705, + "From": 4863, + "Front": 25886, + "Fs": 42388, + "Fu": 41133, + "Fuck": 34094, + "Fuel": 42663, + "Full": 13295, + "Fun": 24629, + "Function": 22203, + "Fund": 24553, + "Further": 13518, + "Furthermore": 24951, + "Future": 29783, + "G": 38, + "GA": 9273, + "GAME": 47109, + "GAN": 45028, + "GB": 4579, + "GBT": 9146, + "GC": 15916, + "GD": 45113, + "GE": 8264, + "GEN": 35353, + "GER": 30373, + "GES": 48075, + "GET": 18851, + "GF": 21713, + "GG": 11190, + "GGGG": 25611, + "GGGGGGGG": 40415, + "GH": 17511, + "GHz": 23741, + "GI": 18878, + "GL": 8763, + "GM": 15548, + "GMT": 49424, + "GN": 16630, + "GO": 11230, + "GOP": 44962, + "GP": 16960, + "GPU": 33346, + "GR": 10761, + "GRE": 28934, + "GREEN": 43016, + "GROUND": 46025, + "GROUP": 46846, + "GS": 14313, + "GT": 19555, + "GU": 38022, + "GUI": 40156, + "GV": 37094, + "GW": 33191, + "GY": 31212, + "Ga": 35389, + "Gab": 46079, + "Gal": 26552, + "Gall": 37122, + "Gallery": 29352, + "Gam": 34777, + "Game": 8777, + "Gameplay": 43241, + "Gamer": 33648, + "Games": 24474, + "Gaming": 45509, + "Gar": 27676, + "Gary": 33820, + "Gas": 39699, + "Gate": 22628, + "Gay": 41787, + "Gaza": 48790, + "Gb": 49017, + "Ge": 10082, + "Gear": 38141, + "Gen": 13746, + "Gender": 41394, + "Gene": 39358, + "Gener": 8645, + "General": 12218, + "Generally": 37058, + "Generic": 46189, + "Georg": 33428, + "George": 20191, + "Georgia": 41072, + "Ger": 38069, + "German": 16010, + "Germany": 27079, + "Get": 3855, + "Getting": 20570, + "Getty": 6633, + "Gh": 41126, + "Ghost": 32001, + "Gi": 33704, + "Gil": 40747, + "Girl": 24151, + "Girls": 41044, + "Give": 23318, + "Given": 15056, + "Giving": 49701, + "Gl": 9861, + "Glass": 47698, + "Global": 22289, + "Go": 5247, + "Goal": 49045, + "God": 13482, + "Going": 27404, + "Gold": 13306, + "GoldMagikarp": 42202, + "Golden": 32378, + "Good": 10248, + "Google": 11708, + "Gordon": 47073, + "Got": 30074, + "Gov": 23774, + "Govern": 29168, + "Government": 28848, + "Gr": 8642, + "Gra": 46971, + "Grab": 48400, + "Grad": 42731, + "Grade": 42233, + "Graham": 45821, + "Grand": 23581, + "Grant": 45431, + "Graph": 37065, + "Graphics": 18172, + "Gray": 46130, + "Gre": 43887, + "Great": 13681, + "Greek": 44059, + "Green": 13719, + "Greg": 25025, + "Grey": 49141, + "Grid": 41339, + "Gro": 42921, + "Ground": 35539, + "Group": 13247, + "Growing": 43964, + "Gs": 33884, + "Gu": 8205, + "Guard": 24502, + "Guest": 42481, + "Guide": 47889, + "Gun": 22993, + "Guy": 31080, + "Gy": 44802, + "H": 39, + "HA": 7801, + "HAEL": 47452, + "HAHA": 21271, + "HAHAHAHA": 39021, + "HAM": 33363, + "HB": 32886, + "HC": 16045, + "HCR": 43230, + "HD": 10227, + "HE": 13909, + "HEAD": 37682, + "HER": 16879, + "HF": 29567, + "HH": 16768, + "HHHH": 41100, + "HI": 25374, + "HK": 38730, + "HL": 6581, + "HM": 36905, + "HO": 32298, + "HOME": 39069, + "HOU": 46685, + "HOW": 37181, + "HP": 14082, + "HQ": 41275, + "HR": 17184, + "HS": 7998, + "HT": 6535, + "HTML": 28656, + "HTTP": 40717, + "HUD": 28410, + "HY": 42598, + "Ha": 23303, + "Hack": 32833, + "Had": 25383, + "Hal": 40202, + "Half": 31305, + "Hall": 34194, + "Ham": 21281, + "Hamilton": 45405, + "Han": 29919, + "Hand": 12885, + "Handle": 37508, + "Handler": 25060, + "Happy": 25082, + "Har": 13587, + "Hard": 17309, + "Hardware": 49865, + "Harris": 41589, + "Harry": 18308, + "Hart": 44719, + "Has": 19242, + "Hash": 26257, + "Hat": 40483, + "Haunted": 46979, + "Have": 11980, + "Having": 14698, + "Haw": 33055, + "Hay": 31306, + "He": 1544, + "Head": 13847, + "Header": 39681, + "Health": 18081, + "Heart": 28541, + "Heat": 39596, + "Heavy": 33210, + "Height": 23106, + "Hel": 12621, + "Hell": 28254, + "Hello": 15496, + "Help": 22087, + "Helper": 47429, + "Hen": 26055, + "Henry": 32476, + "Her": 9360, + "Here": 4342, + "Herm": 48523, + "Hero": 30411, + "Hey": 10814, + "Hi": 17250, + "Hidden": 41691, + "Hide": 38518, + "Hig": 36124, + "High": 11922, + "Higher": 48708, + "Hill": 36369, + "Hillary": 20397, + "His": 6653, + "Hispanic": 43830, + "Hist": 13749, + "History": 18122, + "Hit": 17889, + "Hmm": 44217, + "Ho": 28900, + "Hol": 28115, + "Hold": 26807, + "Holy": 33336, + "Hom": 28718, + "Home": 16060, + "Hon": 29478, + "Honest": 37411, + "Honestly": 40817, + "Hong": 48559, + "Hop": 23483, + "Hope": 34456, + "Hopefully": 32365, + "Hor": 27991, + "Host": 17932, + "Hot": 21352, + "Hour": 43223, + "Hours": 39792, + "House": 18102, + "Houston": 33387, + "How": 2437, + "Howard": 32434, + "However": 4864, + "Http": 43481, + "Hu": 38202, + "Hub": 16066, + "Hug": 48098, + "Huh": 46010, + "Hum": 32661, + "Human": 20490, + "Hun": 25117, + "Hundreds": 38150, + "Hung": 39505, + "Hunt": 47663, + "Hunter": 38803, + "Hur": 42633, + "Hy": 21217, + "Hyd": 40436, + "Hyp": 49926, + "Hyper": 38197, + "Hz": 7399, + "I": 40, + "IA": 3539, + "IAL": 12576, + "IAN": 16868, + "IAS": 43429, + "IB": 9865, + "IBLE": 34563, + "IC": 2149, + "ICA": 25241, + "ICAL": 20151, + "ICAN": 42710, + "ICE": 8476, + "ICES": 34444, + "ICH": 20739, + "ICK": 11860, + "ICLE": 31419, + "ICO": 22707, + "ICS": 19505, + "ICT": 18379, + "ID": 2389, + "IDA": 41957, + "IDE": 14114, + "IDENT": 25256, + "IDER": 41237, + "IDES": 42538, + "IDS": 14255, + "IDs": 47954, + "IE": 10008, + "IED": 19767, + "IELD": 49979, + "IENCE": 42589, + "IENT": 28495, + "IER": 38311, + "IES": 11015, + "IF": 5064, + "IFA": 19071, + "IFE": 29150, + "IFF": 29267, + "IFIC": 30643, + "IFIED": 28343, + "IFT": 32297, + "IG": 3528, + "IGH": 18060, + "IGHT": 9947, + "IGHTS": 34874, + "IGN": 16284, + "II": 3978, + "III": 10855, + "IJ": 23852, + "IK": 18694, + "IL": 4146, + "ILA": 47164, + "ILD": 26761, + "ILE": 41119, + "ILL": 8267, + "ILLE": 33844, + "ILS": 45484, + "ILY": 33340, + "IM": 3955, + "IME": 12789, + "IN": 1268, + "INA": 28893, + "INAL": 17961, + "INC": 30158, + "IND": 12115, + "INE": 8881, + "INESS": 44180, + "INFO": 10778, + "ING": 2751, + "INGS": 20754, + "INGTON": 17480, + "INK": 17248, + "INO": 46016, + "INS": 20913, + "INST": 38604, + "INT": 12394, + "INTER": 41358, + "INTON": 46812, + "IO": 9399, + "ION": 2849, + "IONS": 11053, + "IOR": 41254, + "IP": 4061, + "IPP": 31444, + "IPS": 47643, + "IQ": 33866, + "IR": 4663, + "IRC": 49060, + "IRD": 46833, + "IRE": 41736, + "IRED": 37819, + "IRO": 43708, + "IRT": 48771, + "IS": 1797, + "ISA": 22312, + "ISC": 37719, + "ISE": 24352, + "ISH": 18422, + "ISION": 42446, + "ISIS": 29322, + "ISM": 31125, + "ISO": 40734, + "ISON": 39960, + "ISS": 16744, + "ISSION": 40373, + "IST": 8808, + "ISTER": 41517, + "ISTORY": 42480, + "IT": 2043, + "ITAL": 40579, + "ITCH": 31949, + "ITE": 12709, + "ITED": 22061, + "ITH": 10554, + "ITIES": 30383, + "ITION": 17941, + "ITNESS": 46144, + "ITS": 29722, + "ITT": 22470, + "ITY": 9050, + "IU": 44958, + "IUM": 41796, + "IV": 3824, + "IVE": 9306, + "IVER": 38757, + "IVERS": 30194, + "IVES": 42472, + "IX": 10426, + "IZ": 14887, + "IZE": 35400, + "Ian": 37776, + "Ice": 23709, + "Icon": 19578, + "Id": 7390, + "Ide": 41452, + "Ident": 33234, + "If": 1532, + "Ign": 32916, + "Il": 33666, + "Ill": 21478, + "Im": 3546, + "Image": 5159, + "Images": 29398, + "Imagine": 25153, + "Imm": 24675, + "Imp": 26950, + "Impl": 29710, + "Import": 20939, + "Important": 33796, + "Impro": 23028, + "Improve": 47531, + "Improved": 35453, + "In": 818, + "Inc": 25517, + "Includes": 42986, + "Incre": 15562, + "Increase": 46890, + "Increased": 40281, + "Increases": 28544, + "Ind": 5497, + "Indeed": 17854, + "Independent": 40566, + "Index": 15732, + "India": 21569, + "Indian": 30821, + "Indiana": 49153, + "Individual": 35392, + "Indust": 35848, + "Inf": 18943, + "Info": 12360, + "Information": 21918, + "Ing": 27682, + "Ingredients": 41222, + "Init": 31768, + "Initial": 24243, + "Initialized": 28500, + "Initially": 40443, + "Input": 20560, + "Ins": 20376, + "Insert": 44402, + "Inside": 24441, + "Insp": 41502, + "Inst": 6310, + "Install": 15798, + "Installation": 30838, + "Instance": 33384, + "Instant": 49933, + "Instead": 13193, + "InstoreAndOnline": 40241, + "Instruct": 43993, + "Int": 5317, + "Integ": 34500, + "Integer": 46541, + "Intel": 24123, + "Inter": 9492, + "Interest": 19302, + "Interested": 48860, + "Interestingly": 33092, + "Interface": 39317, + "Intern": 15865, + "Internal": 37693, + "International": 24274, + "Internet": 28566, + "Interstitial": 29447, + "Interview": 39945, + "Introdu": 15005, + "Introduced": 37143, + "Introduction": 21906, + "Inv": 19904, + "Invalid": 44651, + "Invest": 19070, + "Investigators": 33528, + "Iowa": 45186, + "Ir": 23820, + "Iran": 23798, + "Iraq": 31206, + "Ire": 48505, + "Ireland": 49752, + "Irish": 43293, + "Iron": 22797, + "Ironically": 44850, + "Is": 3792, + "Isa": 39443, + "Islam": 16991, + "Islamic": 26723, + "Isn": 41451, + "Israel": 14040, + "Israeli": 29818, + "Iss": 27738, + "Issue": 45147, + "It": 1026, + "Italian": 45696, + "Italy": 45001, + "Item": 7449, + "ItemImage": 25502, + "ItemThumbnailImage": 39177, + "ItemTracker": 47198, + "Items": 23022, + "Iter": 29993, + "Iterator": 37787, + "Its": 20459, + "Iv": 45766, + "J": 41, + "JA": 37048, + "JB": 47858, + "JC": 34382, + "JD": 37882, + "JECT": 23680, + "JJ": 32178, + "JM": 50229, + "JO": 45006, + "JOHN": 47118, + "JP": 12889, + "JR": 44817, + "JS": 20120, + "JSON": 40386, + "JUST": 25008, + "JV": 41697, + "Ja": 33186, + "Jac": 28821, + "Jack": 14295, + "Jackson": 31270, + "Jacob": 46751, + "Jake": 43930, + "Jam": 30380, + "James": 14731, + "Jamie": 48337, + "Jan": 12128, + "Jane": 41083, + "January": 21339, + "Japan": 16504, + "Japanese": 25324, + "Jar": 47511, + "Jason": 26497, + "Java": 29584, + "Jay": 30568, + "Je": 40932, + "Jean": 38248, + "Jeff": 19139, + "Jen": 44875, + "Jenn": 35994, + "Jennifer": 43187, + "Jer": 36134, + "Jere": 31579, + "Jeremy": 35623, + "Jerry": 43462, + "Jes": 22290, + "Jess": 34648, + "Jessica": 45572, + "Jesus": 28219, + "Jet": 42273, + "Jew": 23119, + "Jewish": 28240, + "Jews": 47415, + "Jim": 18050, + "Jimmy": 40335, + "Jo": 9908, + "Job": 33308, + "Joe": 19585, + "John": 7554, + "Johnny": 44960, + "Johnson": 25378, + "Join": 18234, + "Joined": 24363, + "Jon": 18219, + "Jonathan": 30365, + "Jones": 25784, + "Jordan": 34522, + "Jose": 23409, + "Joseph": 29458, + "Josh": 23808, + "Joshua": 47740, + "Journal": 25296, + "Joy": 41338, + "Jr": 50123, + "Js": 49044, + "Ju": 33018, + "Jud": 26141, + "Judge": 29511, + "Jul": 16980, + "July": 16157, + "Jump": 36046, + "Jun": 22396, + "June": 15749, + "Just": 5703, + "Justice": 28447, + "Justin": 33229, + "K": 42, + "KA": 25123, + "KB": 22764, + "KC": 36222, + "KE": 7336, + "KEN": 43959, + "KER": 42839, + "KEY": 20373, + "KI": 37845, + "KING": 37286, + "KK": 16601, + "KN": 29132, + "KNOWN": 44706, + "KO": 22328, + "KR": 30758, + "KS": 27015, + "KT": 42176, + "KY": 31159, + "Ka": 37281, + "Kal": 41428, + "Kansas": 43451, + "Kar": 37753, + "Karl": 46063, + "Kat": 25881, + "Kate": 45087, + "Kay": 37247, + "Ke": 8896, + "Keefe": 48122, + "Keep": 15597, + "Keeping": 44815, + "Keith": 46868, + "Kelly": 34831, + "Ken": 27827, + "Kenn": 39324, + "Kent": 42265, + "Kevin": 23865, + "Key": 9218, + "Keys": 40729, + "Kh": 33155, + "Kick": 45390, + "Kid": 48374, + "Kids": 40229, + "Kill": 27100, + "Kim": 26374, + "Kin": 49681, + "Kind": 35854, + "King": 15708, + "Kings": 42912, + "Kit": 20827, + "Kn": 25095, + "Knight": 44242, + "Know": 23812, + "Knowing": 45648, + "Known": 29870, + "Ko": 48735, + "Krist": 40756, + "Ku": 41733, + "Ky": 30630, + "Kyle": 42516, + "L": 43, + "LA": 13534, + "LAB": 48780, + "LAN": 25697, + "LAND": 28182, + "LB": 30501, + "LC": 5639, + "LCS": 29814, + "LD": 11163, + "LE": 2538, + "LEASE": 22781, + "LECT": 16779, + "LED": 30465, + "LER": 39878, + "LES": 28378, + "LESS": 48481, + "LET": 28882, + "LEY": 25173, + "LG": 41257, + "LGBT": 37701, + "LI": 31271, + "LIB": 40347, + "LIN": 34509, + "LINE": 24027, + "LIST": 45849, + "LL": 3069, + "LLOW": 44765, + "LM": 31288, + "LO": 21982, + "LOAD": 35613, + "LOC": 29701, + "LOCK": 36840, + "LOD": 38543, + "LOG": 25294, + "LOS": 45376, + "LP": 19930, + "LR": 35972, + "LS": 6561, + "LT": 27734, + "LU": 41596, + "LV": 30976, + "LY": 11319, + "La": 14772, + "Lab": 17822, + "Label": 33986, + "Labor": 42230, + "Labour": 32475, + "Lady": 38887, + "Lago": 48694, + "Lair": 40041, + "Lake": 43035, + "Land": 22342, + "Language": 32065, + "Large": 21968, + "Larry": 42918, + "Las": 46898, + "Last": 5956, + "Lastly": 37511, + "Lat": 24220, + "Late": 26302, + "Later": 18602, + "Latest": 39478, + "Latin": 49022, + "Laughs": 34610, + "Laun": 46182, + "Launch": 38296, + "Laura": 43687, + "Law": 16966, + "Lay": 23763, + "Layer": 49925, + "Layout": 32517, + "Le": 3123, + "Lead": 20451, + "Leader": 45009, + "League": 24623, + "Leaks": 17874, + "Lean": 35806, + "Lear": 14961, + "Learn": 20238, + "Learning": 41730, + "Leary": 48487, + "Leave": 35087, + "Led": 42416, + "Lee": 24338, + "Left": 18819, + "Leg": 11484, + "Legal": 38263, + "Legend": 21351, + "Legendary": 24524, + "Len": 30659, + "Length": 24539, + "Lenin": 49036, + "Lens": 49479, + "Leod": 44559, + "Leon": 36185, + "Les": 35882, + "Less": 22058, + "Let": 5756, + "Letter": 45708, + "Lev": 32163, + "Level": 4971, + "Lew": 33450, + "Lewis": 40330, + "Lex": 45117, + "Li": 32304, + "Lib": 25835, + "Liber": 31199, + "Liberal": 46650, + "Library": 23377, + "Lic": 26656, + "License": 34156, + "Lie": 47918, + "Life": 14662, + "Light": 15047, + "Like": 7594, + "Likewise": 45872, + "Lim": 19352, + "Limit": 39184, + "Limited": 37214, + "Lin": 14993, + "Lind": 43410, + "Line": 13949, + "Link": 11280, + "LinkedIn": 40574, + "Links": 31815, + "Linux": 19314, + "Liquid": 41966, + "Lisa": 44203, + "List": 8053, + "Listen": 23061, + "Listener": 33252, + "Liter": 43460, + "Little": 22253, + "Live": 18947, + "Liverpool": 44232, + "Living": 36376, + "Lo": 27654, + "Load": 8912, + "Loader": 17401, + "Loading": 19031, + "Loc": 33711, + "Local": 14565, + "Located": 43525, + "Location": 14749, + "Lock": 25392, + "Log": 11187, + "Login": 47790, + "London": 23421, + "Long": 14617, + "Look": 8567, + "Looking": 15784, + "Looks": 41102, + "Loop": 39516, + "Lord": 22438, + "Los": 28903, + "Lost": 31042, + "Lot": 48601, + "Lots": 43643, + "Lou": 24016, + "Louis": 32117, + "Love": 18565, + "Low": 20535, + "Lower": 31426, + "Lt": 49578, + "Lu": 25596, + "Lua": 36127, + "Luc": 22946, + "Luck": 35498, + "Luckily": 42332, + "Luke": 30730, + "Lv": 29507, + "Ly": 31633, + "Lyn": 37207, + "M": 44, + "MA": 5673, + "MAC": 44721, + "MAG": 45820, + "MAL": 42126, + "MAN": 10725, + "MAP": 33767, + "MAR": 40569, + "MAS": 31180, + "MAT": 41636, + "MAX": 22921, + "MB": 10744, + "MC": 9655, + "MD": 12740, + "ME": 11682, + "MED": 30733, + "MEN": 49275, + "MENT": 10979, + "MENTS": 28957, + "MER": 29296, + "MET": 47123, + "METHOD": 49273, + "MF": 49800, + "MG": 20474, + "MH": 36208, + "MHz": 25983, + "MI": 8895, + "MIC": 49884, + "MIN": 23678, + "MIT": 36393, + "MJ": 43421, + "MK": 33907, + "ML": 5805, + "MM": 12038, + "MN": 39764, + "MO": 11770, + "MOD": 33365, + "MODE": 49058, + "MON": 27857, + "MORE": 23346, + "MP": 7378, + "MQ": 49215, + "MR": 13599, + "MRI": 40952, + "MS": 5653, + "MSN": 30295, + "MT": 13752, + "MU": 42422, + "MW": 14326, + "MX": 43243, + "MY": 26708, + "Ma": 21467, + "Mac": 14155, + "Mach": 49999, + "Machine": 37573, + "Mad": 18454, + "Made": 24616, + "Madison": 46845, + "Mag": 13436, + "Magazine": 36028, + "Magic": 22975, + "Magikarp": 41538, + "Magn": 48017, + "Mah": 40936, + "Mail": 25804, + "Main": 13383, + "Major": 24206, + "Make": 12050, + "Maker": 48890, + "Making": 23874, + "Mal": 15029, + "Male": 25486, + "Malley": 33776, + "Man": 5124, + "Management": 48032, + "Manager": 13511, + "Manchester": 40744, + "Mand": 49846, + "Mania": 45844, + "Manufact": 44445, + "Many": 7085, + "Map": 13912, + "Maps": 47010, + "Mar": 7676, + "Marc": 22697, + "March": 16192, + "Marco": 37179, + "Marcus": 35110, + "Marg": 24428, + "Marginal": 36003, + "Maria": 46827, + "Marie": 44507, + "Mario": 42315, + "Mark": 9704, + "Market": 27470, + "Mars": 43725, + "Marsh": 41984, + "Mart": 13143, + "Martin": 24778, + "Marvel": 38864, + "Marx": 45258, + "Mary": 24119, + "Mas": 38224, + "Mask": 45195, + "Mass": 20273, + "Master": 18254, + "Mat": 19044, + "Match": 23850, + "Material": 17518, + "Materials": 41657, + "Math": 37372, + "Matrix": 46912, + "Matt": 13448, + "Matthew": 25372, + "Max": 11518, + "Maximum": 40541, + "May": 6747, + "Maybe": 13300, + "Mayor": 37396, + "Mbps": 47842, + "Mc": 9742, + "McC": 30464, + "Me": 5308, + "Meanwhile": 10294, + "Measure": 47384, + "Meat": 35620, + "Mech": 28452, + "Med": 9921, + "Media": 13152, + "Medic": 39112, + "Medical": 37158, + "Medium": 31205, + "Meet": 29318, + "Meg": 42672, + "Mega": 43471, + "Mel": 21102, + "Mem": 13579, + "Member": 27608, + "Members": 25341, + "Memory": 30871, + "Men": 10418, + "Menu": 23381, + "Mer": 13102, + "Merc": 42981, + "Merit": 21583, + "Mesh": 37031, + "Mess": 36479, + "Message": 12837, + "Met": 9171, + "Meta": 48526, + "Metal": 36790, + "Method": 17410, + "Methods": 46202, + "Metro": 45141, + "Mex": 24670, + "Mexico": 33006, + "Mi": 41541, + "Miami": 41191, + "Mic": 25437, + "Mich": 11180, + "Michael": 13256, + "Michelle": 48736, + "Michigan": 40610, + "Micro": 13031, + "Microsoft": 15905, + "Mid": 22622, + "Middle": 34621, + "Mike": 16073, + "Mil": 24857, + "Military": 37837, + "Mill": 22603, + "Miller": 33253, + "Min": 9452, + "Mind": 28478, + "Mine": 24461, + "Minecraft": 39194, + "Mini": 39234, + "Minimum": 44046, + "Minnesota": 45670, + "Minor": 39825, + "Mir": 27453, + "Mis": 31281, + "Miss": 17140, + "Missing": 43730, + "Mission": 37057, + "Mist": 49370, + "Mit": 43339, + "Mix": 35608, + "Mo": 16632, + "Mob": 44702, + "Mobil": 47100, + "Mobile": 17066, + "Mod": 5841, + "ModLoader": 24847, + "Mode": 19076, + "Model": 17633, + "Modern": 31439, + "Mods": 24239, + "Module": 26796, + "Moh": 38443, + "Mom": 29252, + "Mon": 9069, + "Monday": 23810, + "Money": 26788, + "Monitor": 35479, + "Monster": 40872, + "Mont": 26031, + "Month": 31948, + "Moon": 31640, + "Moore": 40049, + "Mor": 20044, + "More": 5167, + "Moreover": 24606, + "Morgan": 47184, + "Morning": 42997, + "Mos": 32668, + "Moscow": 49757, + "Most": 6943, + "Mot": 47733, + "Mother": 31398, + "Motion": 45740, + "Motor": 34919, + "Mount": 35452, + "Mouse": 39643, + "Move": 21774, + "Movie": 25097, + "Moving": 33622, + "Mp": 28861, + "MpServer": 31765, + "Mr": 5246, + "Mrs": 27034, + "Ms": 10128, + "Msg": 50108, + "Mu": 33239, + "Much": 20045, + "Mult": 15205, + "Multi": 29800, + "Multiple": 31217, + "Mur": 23830, + "Murray": 49998, + "Mus": 10694, + "Music": 22648, + "Muslim": 17067, + "Muslims": 36452, + "Must": 34320, + "Mut": 41603, + "My": 3666, + "Myth": 41444, + "N": 45, + "NA": 4535, + "NAME": 20608, + "NAS": 18293, + "NASA": 29998, + "NAT": 34259, + "NB": 32819, + "NBA": 32470, + "NBC": 13175, + "NC": 7792, + "ND": 8575, + "NE": 12161, + "NECT": 48842, + "NER": 21479, + "NES": 37379, + "NESS": 31097, + "NET": 12884, + "NEW": 13965, + "NEWS": 49597, + "NEY": 36231, + "NF": 21870, + "NFL": 32078, + "NG": 10503, + "NH": 33863, + "NI": 22125, + "NING": 15871, + "NJ": 41074, + "NK": 46888, + "NL": 32572, + "NM": 32755, + "NN": 6144, + "NO": 15285, + "NOR": 35510, + "NOT": 11929, + "NOTE": 16580, + "NOW": 45669, + "NP": 22182, + "NPR": 38588, + "NR": 24723, + "NRS": 41256, + "NS": 8035, + "NSA": 47549, + "NT": 11251, + "NULL": 33991, + "NUM": 41359, + "NV": 27159, + "NVIDIA": 38021, + "NW": 27605, + "NY": 12805, + "NYSE": 49430, + "NZ": 37371, + "Na": 26705, + "Name": 5376, + "Names": 36690, + "Nap": 49799, + "Nar": 40059, + "Narr": 45750, + "Nat": 47849, + "Nation": 46108, + "National": 16186, + "Native": 31272, + "Natural": 35364, + "Naturally": 44213, + "Nature": 46934, + "Nav": 30575, + "Naz": 37235, + "Nazi": 31343, + "Nazis": 44527, + "Ne": 8199, + "Neal": 40581, + "Near": 40640, + "Nearly": 27927, + "Need": 23037, + "Neg": 32863, + "Neigh": 46445, + "Neil": 29354, + "Neill": 26538, + "Neither": 27270, + "Net": 7934, + "NetMessage": 25193, + "Netflix": 42826, + "Network": 26245, + "Nev": 43555, + "Never": 12295, + "Nevertheless": 29011, + "New": 3791, + "News": 9980, + "Newsletter": 33031, + "Next": 10019, + "Ni": 34153, + "Nic": 30403, + "Nice": 35284, + "Nich": 46489, + "Nick": 23609, + "Night": 24732, + "Nik": 40979, + "Nin": 36091, + "Nine": 37603, + "Nintendo": 32348, + "Nit": 33772, + "Nitrome": 42066, + "No": 2949, + "Nob": 21191, + "Nobody": 24795, + "Node": 19667, + "Non": 15419, + "None": 14202, + "Nonetheless": 43258, + "Nor": 21991, + "Norm": 35393, + "Normal": 26447, + "Normally": 43625, + "North": 14157, + "Northern": 40495, + "Not": 3673, + "Notable": 45533, + "Note": 6425, + "Notes": 16130, + "Nothing": 18465, + "Notice": 26396, + "Nov": 20795, + "November": 21159, + "Now": 3844, + "Ns": 47503, + "Null": 35067, + "Num": 33111, + "Number": 15057, + "Numbers": 49601, + "Nusra": 39294, + "Nut": 49004, + "O": 46, + "OA": 23621, + "OAD": 41048, + "OB": 9864, + "OC": 4503, + "OCK": 11290, + "OD": 3727, + "ODE": 16820, + "ODUCT": 28644, + "ODY": 33076, + "OE": 27799, + "OF": 19238, + "OFF": 27977, + "OG": 7730, + "OGR": 49656, + "OH": 12096, + "OHN": 27600, + "OIL": 49713, + "OK": 11380, + "OL": 3535, + "OLD": 15173, + "OLOG": 33462, + "OLOGY": 43781, + "OM": 2662, + "OME": 13649, + "ON": 1340, + "OND": 18672, + "ONDON": 47383, + "ONE": 11651, + "ONES": 39677, + "ONEY": 48399, + "ONG": 18494, + "ONS": 19213, + "ONSORED": 36406, + "ONT": 35830, + "ONY": 40508, + "OO": 6684, + "OOD": 22808, + "OOK": 15308, + "OOL": 31559, + "OOOO": 23803, + "OOOOOOOO": 47732, + "OP": 3185, + "OPA": 43345, + "OPE": 32135, + "OPER": 31054, + "OPLE": 34354, + "OPS": 30737, + "OR": 1581, + "ORD": 12532, + "ORE": 6965, + "ORED": 32023, + "ORGE": 49697, + "ORK": 14670, + "ORN": 30649, + "ORPG": 49665, + "ORS": 20673, + "ORT": 9863, + "ORTS": 33002, + "ORY": 15513, + "OS": 2640, + "OSE": 14058, + "OSED": 48751, + "OSH": 45704, + "OSP": 47053, + "OSS": 18420, + "OST": 10892, + "OT": 2394, + "OTA": 29009, + "OTAL": 27510, + "OTE": 23051, + "OTH": 26946, + "OTHER": 31858, + "OTO": 26631, + "OTOS": 33291, + "OTS": 33472, + "OTT": 29089, + "OTUS": 39205, + "OU": 2606, + "OUGH": 32632, + "OULD": 24010, + "OUN": 19385, + "OUND": 15919, + "OUNT": 28270, + "OUP": 27755, + "OUR": 11698, + "OURCE": 31033, + "OUS": 20958, + "OUT": 12425, + "OV": 8874, + "OVA": 41576, + "OVER": 41983, + "OW": 3913, + "OWER": 36048, + "OWN": 14165, + "OWS": 22845, + "OX": 48632, + "OY": 21414, + "Oak": 42426, + "Ob": 5944, + "Obama": 15948, + "Obj": 49201, + "Object": 10267, + "Obs": 31310, + "Obviously": 20670, + "Occ": 29223, + "Occup": 47658, + "Ocean": 46607, + "Oct": 12349, + "October": 18517, + "Of": 5189, + "Off": 9362, + "Offic": 12710, + "Office": 27743, + "Officers": 34059, + "Official": 28529, + "Officials": 25883, + "Offline": 28657, + "Offset": 34519, + "Often": 37288, + "Oh": 5812, + "Ohio": 31274, + "Oil": 44142, + "Ok": 18690, + "Okay": 16454, + "Ol": 30098, + "Old": 19620, + "On": 2202, + "Once": 7454, + "One": 3198, + "Online": 14439, + "Only": 10049, + "Ont": 45984, + "Op": 18257, + "Open": 11505, + "Opening": 43093, + "Oper": 18843, + "Operation": 32180, + "Opp": 27524, + "Ops": 41472, + "Opt": 27871, + "Option": 19722, + "Optional": 30719, + "Options": 29046, + "Or": 5574, + "Oracle": 48625, + "Orange": 40141, + "Ord": 35422, + "Order": 18743, + "Orderable": 39655, + "Ore": 41543, + "Oregon": 41243, + "Org": 46808, + "Organ": 26121, + "Orig": 11610, + "Origin": 39688, + "Original": 20556, + "Originally": 22731, + "Os": 16748, + "Other": 6395, + "Others": 25599, + "Otherwise": 48059, + "Ott": 49092, + "Our": 5122, + "Out": 7975, + "Output": 26410, + "Outside": 30815, + "Over": 5886, + "Overall": 16350, + "Override": 37961, + "Overview": 29064, + "Own": 23858, + "Owner": 42419, + "Ox": 38208, + "P": 47, + "PA": 4537, + "PAC": 44938, + "PAR": 27082, + "PART": 30709, + "PASS": 47924, + "PATH": 34219, + "PB": 49079, + "PC": 5662, + "PD": 5760, + "PDATE": 14341, + "PDATED": 49316, + "PDF": 20456, + "PE": 11401, + "PER": 18973, + "PET": 47731, + "PF": 42668, + "PG": 6968, + "PH": 11909, + "PHOTOS": 42709, + "PI": 11901, + "PIN": 44032, + "PK": 40492, + "PL": 6489, + "PLA": 45710, + "PLAY": 31519, + "PLE": 16437, + "PLIC": 31484, + "PLIED": 49094, + "PM": 5868, + "PN": 13137, + "PO": 16402, + "POL": 45472, + "POR": 44680, + "PORT": 15490, + "POS": 37997, + "POSE": 48933, + "POST": 32782, + "PP": 10246, + "PR": 4805, + "PRE": 46437, + "PRES": 48296, + "PRESS": 32761, + "PRO": 31190, + "PROV": 41283, + "PS": 3705, + "PT": 11571, + "PU": 5105, + "PUT": 30076, + "Pa": 28875, + "Pac": 18844, + "Pacific": 22933, + "Pack": 11869, + "Package": 27813, + "Pad": 26114, + "Page": 9876, + "Pages": 47798, + "Pain": 38490, + "Pak": 29675, + "Pakistan": 38485, + "Pal": 11531, + "Palest": 32570, + "Palestinian": 35969, + "Pan": 15730, + "Pand": 47206, + "Panel": 26639, + "Paper": 42950, + "Par": 10044, + "Param": 22973, + "Parameter": 36301, + "Parameters": 48944, + "Parent": 24546, + "Parents": 42969, + "Paris": 40313, + "Park": 25478, + "Parser": 46677, + "Part": 7841, + "Particip": 34363, + "Parts": 42670, + "Party": 33553, + "Pass": 14478, + "Password": 35215, + "Past": 34533, + "Pat": 12130, + "Patch": 33952, + "Path": 15235, + "Patrick": 32718, + "Pattern": 47546, + "Paul": 12041, + "Pause": 49991, + "Pay": 19197, + "Pe": 6435, + "Peace": 43445, + "Pear": 46262, + "Ped": 43468, + "Pen": 25553, + "Penn": 39899, + "People": 8061, + "Per": 5990, + "Percent": 31905, + "Perfect": 36635, + "Performance": 32273, + "Perhaps": 13710, + "Pers": 30946, + "Person": 15439, + "Personal": 30228, + "Personally": 42322, + "Pet": 25803, + "Peter": 19727, + "Pg": 31743, + "Ph": 2725, + "Phase": 35645, + "Phil": 18673, + "Philadelphia": 42349, + "Philipp": 49680, + "Phill": 41970, + "Phoenix": 36422, + "Phone": 6132, + "Phones": 32212, + "Phot": 27248, + "Photo": 6191, + "Photos": 21197, + "Phys": 43215, + "Physical": 31611, + "Pi": 38729, + "Pic": 39507, + "Pick": 31686, + "Pict": 21300, + "Picture": 28070, + "Pie": 48223, + "Pierre": 36910, + "Pin": 28348, + "Ping": 49806, + "Pink": 41912, + "Pinterest": 35767, + "Pir": 46772, + "Pitt": 47627, + "Pixel": 40809, + "Pl": 3646, + "Place": 27271, + "Plan": 20854, + "Planet": 41801, + "Platform": 37148, + "Play": 11002, + "Player": 14140, + "Players": 24860, + "Playing": 36530, + "Please": 5492, + "Plex": 46383, + "Plot": 43328, + "Plug": 23257, + "Plugin": 37233, + "Plus": 17860, + "Po": 18833, + "Pocket": 45454, + "Pod": 41565, + "Point": 12727, + "Points": 40710, + "Pokemon": 48034, + "Poké": 41386, + "Pokémon": 46602, + "Pol": 8017, + "Police": 9039, + "Policy": 36727, + "Polit": 39866, + "Political": 35443, + "Politics": 43921, + "Poll": 39176, + "Poly": 34220, + "Pont": 48039, + "Pool": 27201, + "Poor": 43920, + "Pop": 16979, + "Pope": 46172, + "Population": 45251, + "Port": 13924, + "Portland": 45330, + "Pos": 21604, + "Position": 26545, + "Post": 6307, + "Posted": 14231, + "Posts": 21496, + "Pot": 25396, + "Power": 13434, + "Pr": 6836, + "Pract": 49515, + "Pre": 6719, + "Pred": 39156, + "Pref": 36698, + "Prem": 24914, + "Premium": 36787, + "Prep": 37534, + "Pres": 25460, + "Present": 34695, + "President": 10364, + "Press": 13800, + "Pretty": 35700, + "Prev": 36854, + "Preview": 48835, + "Previous": 21448, + "Previously": 36837, + "Pri": 34487, + "Price": 18124, + "Prim": 23828, + "Primary": 35170, + "Prime": 26405, + "Prin": 47231, + "Princ": 42904, + "Prince": 35784, + "Print": 18557, + "Prior": 22442, + "Priv": 20184, + "Privacy": 48948, + "Private": 29067, + "Pro": 2964, + "Probably": 34784, + "Problem": 40781, + "Process": 18709, + "Produ": 11547, + "Product": 15667, + "Production": 35027, + "Products": 48650, + "Prof": 15404, + "Professional": 49138, + "Professor": 25031, + "Profile": 37046, + "Program": 15167, + "Progress": 32577, + "Project": 16775, + "Prom": 24129, + "Proof": 44683, + "Prop": 24331, + "Property": 21746, + "Pros": 35726, + "Prosecut": 34301, + "Prosecutors": 39401, + "Prot": 19703, + "Protect": 41426, + "Prov": 15946, + "Provider": 29495, + "Proxy": 44148, + "Ps": 12016, + "Psy": 25918, + "PsyNetMessage": 28666, + "Psych": 31923, + "Ptr": 46745, + "Pub": 14876, + "Public": 15202, + "Published": 24492, + "Publisher": 46471, + "Pull": 42940, + "Pur": 30026, + "Purchase": 47651, + "Pure": 49548, + "Push": 49222, + "Put": 11588, + "Putin": 17060, + "Putting": 46399, + "Py": 20519, + "Python": 37906, + "Q": 48, + "QB": 40291, + "QL": 9711, + "QU": 10917, + "QUEST": 35780, + "QUI": 43702, + "QUIRE": 49128, + "Qaeda": 19058, + "Qaida": 41225, + "Qu": 4507, + "Qual": 46181, + "Quality": 35013, + "Quant": 24915, + "Quantity": 31208, + "Que": 15681, + "Queen": 32466, + "Query": 20746, + "Quest": 12166, + "Question": 24361, + "Questions": 35741, + "Queue": 34991, + "Quick": 21063, + "Quite": 44959, + "Quote": 25178, + "Quotes": 23138, + "R": 49, + "RA": 3861, + "RAFT": 44700, + "RAG": 33202, + "RAL": 35296, + "RAM": 24115, + "RANT": 32506, + "RAW": 20530, + "RAY": 30631, + "RB": 27912, + "RC": 7397, + "RD": 35257, + "RE": 2200, + "READ": 15675, + "REAM": 32235, + "REC": 38827, + "RECT": 23988, + "RED": 22083, + "REDACTED": 45999, + "REE": 11587, + "REF": 31688, + "REG": 31553, + "REL": 16448, + "RELATED": 20112, + "REM": 40726, + "REP": 35316, + "RES": 19535, + "RESULTS": 46274, + "RET": 26087, + "RF": 32754, + "RFC": 41150, + "RG": 48192, + "RGB": 36982, + "RH": 48587, + "RI": 7112, + "RIC": 41132, + "RIP": 32618, + "RIPT": 46023, + "RL": 7836, + "RM": 29138, + "RN": 42336, + "RNA": 27204, + "RO": 13252, + "ROM": 33676, + "RON": 45806, + "ROR": 16411, + "RP": 20031, + "RPG": 46954, + "RR": 21095, + "RS": 6998, + "RT": 14181, + "RW": 46747, + "RY": 18276, + "Ra": 21762, + "Race": 35157, + "Rachel": 44045, + "Rad": 15546, + "Radio": 26093, + "Rah": 47135, + "Raid": 49043, + "Rail": 44631, + "Rain": 31443, + "Ram": 33754, + "Rand": 38918, + "Random": 29531, + "Range": 17257, + "Rank": 27520, + "Ranked": 36713, + "Rap": 35230, + "Rare": 26737, + "Rat": 29665, + "Rate": 32184, + "Rated": 15322, + "Rather": 27202, + "Rating": 29321, + "Raven": 49098, + "Raw": 27369, + "Ray": 19591, + "Re": 3041, + "Read": 5569, + "Reader": 33634, + "Reading": 36120, + "Ready": 35474, + "Real": 15633, + "Really": 26392, + "Reason": 45008, + "Reb": 28951, + "Rec": 6690, + "Recent": 26446, + "Recently": 24661, + "Recipe": 37523, + "Recomm": 24898, + "Recommend": 41248, + "Recommended": 36171, + "Record": 23739, + "Rect": 45474, + "Red": 7738, + "Redd": 32259, + "Reddit": 22367, + "Redditor": 34832, + "Ref": 8134, + "Refer": 46238, + "Reference": 26687, + "References": 19927, + "Reg": 8081, + "Regarding": 39424, + "Regardless": 27894, + "Region": 47371, + "Register": 38804, + "Registered": 47473, + "Registration": 47133, + "Regular": 40164, + "Reilly": 25819, + "Rel": 6892, + "Related": 9819, + "Relations": 47117, + "Release": 26362, + "Released": 45037, + "Reloaded": 36726, + "Rem": 8413, + "Remember": 16676, + "Remote": 36510, + "Remove": 27914, + "Removed": 45975, + "Ren": 26764, + "Render": 45819, + "Rep": 6207, + "Repe": 47541, + "Repeat": 40322, + "Repl": 39232, + "Reply": 36875, + "Report": 19100, + "Reporting": 42159, + "Reports": 37844, + "Represent": 40171, + "Republic": 15431, + "Republican": 25777, + "Republicans": 28455, + "Requ": 16844, + "Request": 18453, + "Required": 37374, + "Requirements": 42249, + "Requires": 39618, + "Res": 4965, + "Research": 25104, + "Researchers": 25606, + "Residents": 42347, + "Resource": 26198, + "Resources": 33236, + "Resp": 19309, + "Response": 31077, + "Rest": 19452, + "Result": 23004, + "Results": 25468, + "Ret": 9781, + "Return": 13615, + "Returns": 35561, + "Reuters": 12637, + "Rev": 18009, + "Review": 14832, + "Reviewed": 40266, + "Reviewer": 35407, + "Revolution": 50237, + "Rew": 30003, + "Reward": 48123, + "Rex": 47389, + "Rh": 38576, + "Rich": 14868, + "Richard": 22245, + "Rick": 33048, + "Right": 11028, + "Ring": 39687, + "River": 42204, + "Ro": 15450, + "Road": 29197, + "Roaming": 27352, + "Rob": 14350, + "Rober": 15924, + "Robert": 19156, + "Roberts": 45487, + "Robin": 40656, + "Rock": 19665, + "Rocket": 50218, + "Rod": 27917, + "Rog": 30417, + "Roger": 43719, + "Rogue": 48163, + "Role": 47445, + "Roll": 26869, + "Rom": 22834, + "Roman": 32454, + "Romney": 42184, + "Ron": 23672, + "Room": 41178, + "Root": 30016, + "Ros": 35740, + "Rose": 31087, + "Ross": 38328, + "Rot": 24864, + "Round": 22685, + "Route": 43401, + "Row": 25166, + "Roy": 32027, + "Royal": 41861, + "Rs": 31273, + "Ru": 40464, + "Rub": 21312, + "Ruby": 32101, + "Rule": 31929, + "Rules": 37766, + "Rum": 47127, + "Run": 10987, + "Runner": 49493, + "Running": 28768, + "Runtime": 41006, + "Rus": 35313, + "Rush": 49942, + "Russ": 10020, + "Russell": 46325, + "Russia": 16347, + "Russian": 16220, + "Rust": 49444, + "Ry": 46987, + "Ryan": 21868, + "S": 50, + "SA": 4090, + "SAM": 49302, + "SAN": 36753, + "SAY": 27358, + "SB": 16811, + "SC": 6173, + "SCP": 48956, + "SD": 10305, + "SE": 5188, + "SEA": 46887, + "SEC": 23683, + "SEE": 36078, + "SELECT": 46506, + "SER": 35009, + "SET": 28480, + "SF": 20802, + "SG": 38475, + "SH": 9693, + "SHA": 37596, + "SHARE": 42597, + "SHIP": 49423, + "SI": 11584, + "SIGN": 46224, + "SIM": 48913, + "SIZE": 33489, + "SK": 18831, + "SL": 8634, + "SM": 12310, + "SN": 15571, + "SO": 15821, + "SON": 11782, + "SOURCE": 47690, + "SP": 4303, + "SPA": 50087, + "SPEC": 48451, + "SPONSORED": 37190, + "SQL": 17861, + "SR": 12562, + "SS": 5432, + "SSL": 31127, + "ST": 2257, + "STAR": 46678, + "STAT": 35744, + "STATE": 44724, + "STD": 32147, + "STDOUT": 36886, + "STE": 30516, + "STEM": 25361, + "STEP": 42135, + "STER": 41809, + "STON": 41924, + "STR": 18601, + "STRUCT": 46126, + "SU": 12564, + "SUP": 40331, + "SW": 17887, + "SY": 23060, + "Sa": 33890, + "Sab": 39646, + "Sac": 38318, + "Sad": 26699, + "Sadly": 36725, + "Safe": 31511, + "Safety": 45372, + "Sah": 32194, + "Saharan": 40461, + "Said": 47638, + "Saint": 48615, + "Sal": 19221, + "Sales": 44490, + "Salt": 43061, + "Sam": 16305, + "Same": 30556, + "Sample": 36674, + "Samsung": 32334, + "San": 15017, + "Sand": 18471, + "Sanders": 26747, + "Santa": 42694, + "Sarah": 29284, + "Sat": 20245, + "Saturday": 19844, + "Saudi": 36939, + "Sav": 47362, + "Save": 16928, + "Sax": 41152, + "Say": 25515, + "Sc": 3351, + "Scale": 29990, + "Scan": 33351, + "Scar": 44433, + "Scene": 36542, + "Sch": 14874, + "Sche": 27054, + "School": 26130, + "Science": 26959, + "Scient": 23010, + "Scientists": 29193, + "Scope": 43642, + "Score": 26595, + "Scot": 37559, + "Scotland": 47230, + "Scott": 19040, + "Screen": 23901, + "Screenshot": 34204, + "Script": 7391, + "Scroll": 29261, + "Se": 4653, + "Sea": 37567, + "Sean": 26408, + "Search": 18243, + "Season": 18960, + "Seattle": 34007, + "Sec": 6558, + "Second": 12211, + "Secondly": 44276, + "Secret": 23725, + "Secretary": 38541, + "Section": 16375, + "Secure": 49793, + "Security": 24074, + "See": 6214, + "Seeing": 36314, + "Seg": 41030, + "Sel": 48767, + "Select": 17563, + "Self": 24704, + "Sem": 13900, + "Semitic": 28753, + "Semitism": 25406, + "Sen": 10445, + "Senate": 32998, + "Senator": 29774, + "Send": 25206, + "Senior": 31224, + "Sense": 41166, + "Sensor": 47864, + "Sent": 31837, + "Sep": 19117, + "Sept": 14635, + "September": 17543, + "Sequ": 44015, + "Ser": 7089, + "Serial": 32634, + "Series": 27996, + "Seriously": 42338, + "Serv": 11838, + "Server": 10697, + "Service": 16177, + "Services": 31007, + "Session": 36044, + "Set": 7248, + "Setting": 34149, + "Settings": 26232, + "Setup": 40786, + "Seven": 31334, + "Several": 14945, + "Sex": 23398, + "Sexual": 49161, + "Sh": 2484, + "Shadow": 27447, + "Sham": 43478, + "Shape": 33383, + "Shar": 40201, + "Share": 11649, + "Shares": 43566, + "Sharp": 44336, + "She": 3347, + "Shell": 23248, + "Sher": 28782, + "Shield": 33651, + "Shift": 33377, + "Shin": 44592, + "Ship": 25586, + "Shipping": 45169, + "Shock": 31646, + "Shop": 29917, + "Short": 16438, + "Shortly": 30513, + "Shot": 28512, + "Should": 19926, + "Show": 15307, + "Shut": 39079, + "Si": 42801, + "Side": 24819, + "Sign": 11712, + "Sil": 15086, + "Silver": 26766, + "Sim": 8890, + "Similar": 18925, + "Similarly": 28039, + "Simon": 35475, + "Simple": 26437, + "Simply": 35596, + "Sin": 46200, + "Since": 6385, + "Sing": 29974, + "Single": 28008, + "Sir": 22788, + "Sit": 46655, + "Site": 29123, + "Six": 21447, + "Size": 10699, + "Sk": 15739, + "Skill": 35040, + "Skin": 42455, + "Skip": 50232, + "Sky": 22308, + "Sl": 11122, + "Sleep": 40555, + "Slot": 38963, + "Slow": 36423, + "Sm": 7556, + "Small": 18712, + "Smart": 25610, + "Smith": 17919, + "Sn": 16501, + "Snake": 49795, + "Snap": 43826, + "Snow": 28974, + "So": 2396, + "Soc": 37949, + "Social": 20636, + "Socket": 39105, + "Soft": 18380, + "Software": 25423, + "Sol": 36949, + "Solar": 38825, + "Sold": 33873, + "Solid": 46933, + "Solution": 46344, + "Some": 4366, + "Someone": 28211, + "Something": 22210, + "Sometimes": 15468, + "Son": 31056, + "Song": 44241, + "Sony": 32895, + "Soon": 28093, + "Sorry": 14385, + "Sort": 42758, + "Soul": 36315, + "Sound": 21369, + "Sounds": 40825, + "Source": 7416, + "SourceFile": 37226, + "Sources": 21188, + "South": 14942, + "Southern": 44993, + "Sov": 38574, + "Soviet": 40408, + "Sp": 4561, + "Space": 14106, + "SpaceEngineers": 31032, + "Spain": 45355, + "Spanish": 43584, + "Spawn": 49855, + "Spe": 5248, + "Speaking": 13887, + "Spec": 22882, + "Special": 13409, + "Specific": 32419, + "Specifically": 48379, + "Spect": 49738, + "Speed": 22785, + "Spell": 31221, + "Sphere": 38882, + "Spider": 41294, + "Spirit": 41910, + "Spl": 26568, + "Split": 41205, + "Spoiler": 31895, + "Spons": 43522, + "Sport": 42576, + "Sports": 18153, + "Spot": 32565, + "Spr": 38454, + "Spread": 44458, + "Spring": 30387, + "Squ": 22266, + "Square": 48011, + "St": 1273, + "Stack": 25896, + "Staff": 31449, + "Stage": 29391, + "Stan": 32140, + "Stand": 15480, + "Standard": 23615, + "Standing": 44196, + "Star": 8248, + "Stars": 29366, + "Start": 10434, + "Starting": 22851, + "Stat": 17126, + "State": 9012, + "Statement": 48682, + "States": 42237, + "Static": 45442, + "Station": 12367, + "Statistics": 48346, + "Stats": 29668, + "Status": 19580, + "Stay": 25681, + "Ste": 7447, + "Steam": 19109, + "Steel": 39807, + "Step": 8600, + "Stephen": 24920, + "Steve": 19206, + "Steven": 28292, + "Stew": 49328, + "Still": 9590, + "Stock": 26207, + "Stone": 34346, + "Stop": 19485, + "Storage": 31425, + "Store": 22658, + "Storm": 32173, + "Story": 11605, + "Str": 13290, + "Stra": 41347, + "Strange": 38114, + "Stre": 30611, + "Stream": 12124, + "Streamer": 28696, + "StreamerBot": 37574, + "Street": 34356, + "Strength": 45027, + "Stretch": 39181, + "Strike": 31584, + "String": 10100, + "Strong": 33004, + "Struct": 44909, + "Stud": 13007, + "Student": 38778, + "Students": 28239, + "Studies": 45833, + "Studio": 41501, + "Study": 39841, + "Sty": 18716, + "Style": 21466, + "Su": 5606, + "Sub": 7004, + "Subject": 19776, + "Submit": 45135, + "Subscribe": 27125, + "Success": 33244, + "Such": 16678, + "Suddenly": 38582, + "Suggest": 43857, + "Sullivan": 47572, + "Sum": 13065, + "Summary": 22093, + "Summer": 33560, + "Sun": 16012, + "Sund": 20602, + "Sunday": 21934, + "Sup": 40784, + "Super": 12442, + "Supp": 15979, + "Supplement": 42615, + "Support": 15514, + "Supported": 48181, + "Supporters": 49422, + "Sur": 14214, + "Sure": 19457, + "Surv": 34652, + "Sus": 30746, + "Susan": 45842, + "Sw": 10462, + "Swe": 40783, + "Sweet": 36087, + "Switch": 38978, + "Sword": 43117, + "Sy": 13940, + "Sym": 43094, + "Syn": 29934, + "Sync": 28985, + "Synopsis": 49771, + "Syria": 40029, + "Syrian": 42747, + "Sys": 44387, + "System": 11964, + "T": 51, + "TA": 5603, + "TABLE": 38148, + "TAG": 42197, + "TAIN": 30339, + "TB": 22737, + "TC": 4825, + "TD": 21016, + "TE": 9328, + "TED": 36493, + "TER": 5781, + "TERN": 31800, + "TEXT": 32541, + "TEXTURE": 47648, + "TF": 10234, + "TG": 35990, + "TH": 4221, + "THE": 10970, + "THER": 21250, + "THING": 39356, + "THIS": 43559, + "TI": 25621, + "TIME": 34694, + "TING": 48996, + "TION": 24131, + "TIT": 49560, + "TL": 14990, + "TM": 15972, + "TN": 46559, + "TO": 10468, + "TON": 11357, + "TOP": 35222, + "TOR": 32961, + "TP": 7250, + "TPP": 31435, + "TPPStreamerBot": 37579, + "TPS": 28820, + "TR": 5446, + "TRUMP": 42473, + "TRY": 40405, + "TS": 4694, + "TT": 15751, + "TV": 6849, + "TW": 34551, + "TX": 29551, + "TY": 9936, + "TYPE": 25216, + "Ta": 38586, + "Tab": 33349, + "Table": 10962, + "Tact": 45803, + "Tag": 24835, + "Tags": 36142, + "Tai": 47976, + "Take": 12322, + "Taking": 26556, + "Tal": 31466, + "Talk": 25685, + "Talking": 45904, + "Tam": 42061, + "Tan": 45557, + "Tang": 43909, + "Tank": 32978, + "Tap": 45081, + "Tar": 47079, + "Target": 21745, + "Task": 25714, + "Tax": 27017, + "Taylor": 29907, + "Te": 6767, + "TeX": 49568, + "Tea": 49770, + "Team": 15592, + "Tech": 17760, + "Techn": 25574, + "Technical": 45638, + "Technology": 44893, + "Ted": 38972, + "Teen": 45639, + "Tel": 33317, + "Tele": 31709, + "Tell": 24446, + "Tem": 12966, + "Temp": 30782, + "Temperature": 42492, + "Template": 30800, + "Ten": 24893, + "Tenn": 43139, + "Ter": 15156, + "Term": 40596, + "Termin": 44798, + "Terror": 40194, + "Terry": 50241, + "Tes": 36504, + "Tesla": 41351, + "Test": 14402, + "Testing": 44154, + "Tex": 17005, + "Texas": 21607, + "Text": 8206, + "TextColor": 42470, + "Texture": 32742, + "Textures": 39860, + "Th": 817, + "Thank": 10449, + "Thankfully": 48387, + "Thanks": 9690, + "That": 2504, + "The": 464, + "Their": 14574, + "Theme": 47863, + "Then": 6423, + "Ther": 35048, + "There": 1858, + "Therefore": 26583, + "These": 4711, + "They": 2990, + "Things": 22248, + "Think": 22073, + "Third": 22747, + "Thirty": 38856, + "This": 1212, + "Thom": 37582, + "Thomas": 22405, + "Thompson": 48942, + "Thor": 46765, + "Those": 9627, + "Though": 10915, + "Thousands": 37482, + "Thread": 16818, + "Three": 12510, + "Through": 15046, + "Throughout": 26797, + "Throw": 39431, + "Thu": 39902, + "Thumbnail": 35523, + "ThumbnailImage": 39142, + "Thunder": 45713, + "Thursday": 25381, + "Thus": 19093, + "Ti": 40533, + "Tickets": 43254, + "Tier": 35252, + "Tile": 35103, + "Tim": 14967, + "Time": 7575, + "Timeout": 48031, + "Timer": 48801, + "Times": 28595, + "Tip": 28434, + "Tips": 43368, + "Title": 19160, + "To": 2514, + "Today": 8888, + "Todd": 42817, + "Together": 41631, + "Tok": 19042, + "Token": 30642, + "Tokens": 22906, + "Tom": 13787, + "Tomorrow": 49488, + "Ton": 35416, + "Tonight": 43783, + "Tony": 29387, + "Too": 23307, + "Tool": 25391, + "Tools": 33637, + "Top": 9126, + "Topic": 33221, + "Topics": 25902, + "Tor": 15884, + "Toronto": 31359, + "Torrent": 39286, + "Total": 14957, + "Touch": 35211, + "Tour": 39152, + "Town": 38097, + "Toy": 48236, + "Tr": 2898, + "Tra": 15721, + "Track": 24802, + "Tracker": 35694, + "Trade": 35965, + "Traditional": 48485, + "Train": 44077, + "Training": 44357, + "Trans": 8291, + "Transaction": 48720, + "Transfer": 43260, + "Transform": 41762, + "Translation": 48313, + "Travel": 33074, + "Tre": 31055, + "Tree": 27660, + "Trend": 45461, + "Tri": 14824, + "Trigger": 48344, + "Trivia": 23854, + "Tro": 44095, + "True": 17821, + "Trump": 6170, + "Trust": 33814, + "Truth": 38782, + "Try": 23433, + "Ts": 33758, + "Tu": 47247, + "Tube": 6876, + "Tue": 41392, + "Tuesday": 26133, + "Tumblr": 39415, + "Tur": 17483, + "Turkey": 31632, + "Turkish": 42872, + "Turn": 17278, + "Tw": 5080, + "Twe": 32665, + "Tweet": 47845, + "Twenty": 34096, + "Twitter": 14254, + "Two": 7571, + "Tx": 46047, + "Ty": 25492, + "Tyler": 46807, + "Typ": 31467, + "Type": 6030, + "Types": 31431, + "Typically": 49321, + "U": 52, + "UA": 34970, + "UAL": 25620, + "UB": 10526, + "UC": 9598, + "UCK": 16696, + "UCT": 18415, + "UD": 8322, + "UE": 8924, + "UES": 35409, + "UF": 36820, + "UFC": 44534, + "UFF": 47588, + "UG": 7340, + "UGC": 31179, + "UGE": 41251, + "UGH": 44004, + "UI": 10080, + "UID": 27586, + "UK": 15039, + "UL": 6239, + "ULAR": 37232, + "ULE": 24212, + "ULL": 9994, + "ULT": 16724, + "ULTS": 35342, + "UM": 5883, + "UME": 38340, + "UMP": 20476, + "UN": 4944, + "UNCH": 47461, + "UNE": 41884, + "UP": 8577, + "UPDATE": 16977, + "UR": 4261, + "URA": 45570, + "URE": 11335, + "URES": 29514, + "URI": 47269, + "URL": 21886, + "URN": 27064, + "URR": 31302, + "URRENT": 39237, + "US": 2937, + "USA": 14053, + "USB": 27155, + "USD": 29072, + "USE": 19108, + "USER": 29904, + "USH": 27143, + "USS": 32835, + "UST": 7759, + "UT": 3843, + "UTC": 17429, + "UTE": 37780, + "UTERS": 14974, + "UTF": 48504, + "UTH": 24318, + "UTION": 35354, + "UU": 30100, + "UV": 31667, + "UX": 31235, + "Ub": 36609, + "Uber": 39018, + "Uh": 34653, + "Uk": 28425, + "Ukraine": 44814, + "Ul": 47920, + "Ult": 16301, + "Ultimate": 47892, + "Ultimately": 27212, + "Ultra": 36122, + "Um": 37280, + "Un": 3118, + "Uncommon": 43023, + "Und": 31319, + "Under": 9203, + "Understanding": 43467, + "Unfortunately": 13898, + "Union": 38176, + "Unique": 40257, + "Unit": 26453, + "United": 17013, + "Unity": 35955, + "Universal": 38747, + "University": 21009, + "Unix": 47000, + "Unknown": 20035, + "Unless": 28042, + "Unlike": 18521, + "Unt": 35792, + "Until": 18273, + "Untitled": 46332, + "Up": 4933, + "Update": 10260, + "Updated": 17354, + "Upgrade": 44948, + "Upload": 41592, + "Upon": 23792, + "Ur": 16692, + "Urban": 46667, + "Url": 28165, + "Us": 5842, + "Usage": 28350, + "Use": 11041, + "Used": 38052, + "User": 12982, + "Users": 14490, + "Using": 12814, + "Usually": 37887, + "Ut": 18274, + "Utah": 44350, + "V": 53, + "VA": 11731, + "VAL": 23428, + "VALUE": 39488, + "VB": 44526, + "VC": 15922, + "VD": 8898, + "VE": 6089, + "VEL": 18697, + "VEN": 28290, + "VER": 5959, + "VERS": 28884, + "VERSION": 43717, + "VERT": 15858, + "VERTIS": 18000, + "VERTISEMENT": 18679, + "VG": 43490, + "VI": 12861, + "VICE": 27389, + "VID": 11008, + "VIDEO": 42937, + "VIDIA": 13171, + "VIEW": 28206, + "VII": 45529, + "VILLE": 38526, + "VIS": 29817, + "VK": 47191, + "VL": 47468, + "VM": 15996, + "VO": 29516, + "VOL": 44558, + "VP": 8859, + "VPN": 33883, + "VR": 13024, + "VS": 20304, + "VT": 36392, + "VW": 30133, + "Va": 33906, + "Val": 7762, + "Valid": 47139, + "Value": 11395, + "Values": 40161, + "Van": 25298, + "Var": 19852, + "Vari": 23907, + "Variable": 43015, + "Various": 40009, + "Vaults": 33937, + "Ve": 26979, + "Vector": 38469, + "Veh": 37870, + "Vel": 46261, + "Ven": 37522, + "Ver": 13414, + "Vers": 34947, + "Version": 14815, + "Versions": 45150, + "Vert": 42369, + "Very": 16371, + "Veter": 45182, + "Vi": 38432, + "Via": 30754, + "Vice": 47910, + "Vict": 21944, + "Victoria": 49898, + "Video": 10798, + "View": 7680, + "Vill": 42074, + "Viol": 33894, + "Virgin": 34674, + "Virginia": 41017, + "Virtual": 37725, + "Vis": 15854, + "Vision": 44206, + "Visit": 31141, + "Visual": 36259, + "Vo": 42144, + "Voice": 35708, + "Vol": 16598, + "Volume": 31715, + "Vote": 37394, + "Vs": 23266, + "W": 54, + "WA": 15543, + "WAR": 16279, + "WARD": 39743, + "WARE": 33746, + "WARN": 37771, + "WARNING": 31502, + "WASHINGTON": 21793, + "WATCH": 35192, + "WAY": 27285, + "WAYS": 42451, + "WB": 45607, + "WC": 27353, + "WD": 22332, + "WE": 8845, + "WER": 45532, + "WF": 48397, + "WH": 12418, + "WHAT": 32971, + "WHERE": 47357, + "WHO": 41856, + "WI": 36326, + "WIN": 37620, + "WIND": 28929, + "WINDOWS": 33207, + "WM": 22117, + "WN": 29767, + "WOOD": 49466, + "WOR": 45359, + "WORK": 33249, + "WP": 25527, + "WR": 18564, + "WS": 19416, + "WT": 39386, + "WW": 17947, + "Wa": 33484, + "Wait": 21321, + "Wal": 21902, + "Walk": 35963, + "Walker": 39950, + "Wall": 22401, + "Wallet": 47152, + "Wan": 45681, + "Want": 19633, + "War": 13195, + "Ward": 49021, + "Ware": 38824, + "Warning": 20361, + "Warren": 43464, + "Wars": 41508, + "Was": 16973, + "Washington": 17402, + "Watch": 10723, + "Water": 19184, + "Wave": 39709, + "Way": 25309, + "We": 1135, + "Weak": 44898, + "Weapon": 27632, + "Weapons": 41818, + "Weather": 41865, + "Web": 13908, + "Website": 33420, + "Wed": 19864, + "Wednesday": 27150, + "Week": 20916, + "Weight": 25844, + "Weiss": 48760, + "Welcome": 14618, + "Well": 5779, + "Were": 35653, + "West": 15045, + "Western": 24227, + "Wh": 1199, + "What": 2061, + "Whatever": 21875, + "Whe": 10842, + "Wheel": 45307, + "When": 2215, + "Whenever": 28877, + "Where": 8496, + "Whereas": 48494, + "Whether": 15354, + "Which": 13828, + "While": 3633, + "Whit": 43617, + "White": 12256, + "Who": 8241, + "Whoever": 47896, + "Why": 5195, + "Wi": 31294, + "Wide": 42559, + "Widget": 38300, + "Width": 30916, + "Wik": 33010, + "Wiki": 32603, + "Wikipedia": 48845, + "Wil": 22327, + "Wild": 25946, + "Will": 8743, + "William": 17121, + "Williams": 27869, + "Wilson": 37349, + "Win": 16643, + "Wind": 8731, + "Window": 27703, + "Windows": 11209, + "Wing": 35612, + "Winged": 47418, + "Winner": 48056, + "Winter": 35376, + "Wire": 29451, + "Wisconsin": 49097, + "With": 3152, + "WithNo": 35992, + "Within": 22005, + "Without": 16249, + "Witness": 38670, + "Wo": 49450, + "Wolf": 32069, + "Woman": 48081, + "Women": 18495, + "Wonder": 42337, + "Wood": 22911, + "Word": 26449, + "Words": 37117, + "Work": 12468, + "Working": 28516, + "Works": 23044, + "World": 10603, + "Would": 17353, + "Wow": 22017, + "Wr": 39213, + "Wra": 36918, + "Writ": 20257, + "Write": 16594, + "Writer": 34379, + "Writing": 33874, + "Written": 25354, + "Ws": 46456, + "X": 55, + "XL": 32457, + "XM": 37643, + "XP": 27481, + "XT": 25010, + "XX": 8051, + "XXX": 43145, + "XXXX": 24376, + "XY": 34278, + "Xbox": 43377, + "Xi": 42528, + "Y": 56, + "YA": 44947, + "YC": 44816, + "YD": 35755, + "YE": 48743, + "YES": 43335, + "YING": 45761, + "YL": 45448, + "YN": 40760, + "YOU": 36981, + "YP": 48232, + "YR": 38162, + "YS": 16309, + "YY": 26314, + "Yan": 49664, + "Yang": 38663, + "Ye": 35543, + "Yeah": 10995, + "Year": 17688, + "Years": 40630, + "Yellow": 39499, + "Yep": 47834, + "Yes": 5297, + "Yesterday": 28065, + "Yet": 11486, + "Yo": 38101, + "York": 49278, + "You": 1639, + "YouTube": 33869, + "Young": 20917, + "Your": 7120, + "Yu": 40728, + "Z": 57, + "ZA": 34892, + "ZE": 21211, + "ZI": 48926, + "ZX": 40692, + "ZZ": 30148, + "Ze": 36056, + "Zen": 47573, + "Zero": 28667, + "Zip": 41729, + "Zone": 26961, + "[": 58, + "[\"": 14692, + "['": 17816, + "[/": 13412, + "[[": 30109, + "[]": 21737, + "[_": 29795, + "\\": 59, + "\\\"": 7879, + "\\\",": 34607, + "\\\":": 30478, + "\\\">": 38214, + "\\'": 43054, + "\\)": 22725, + "\\-": 41441, + "\\.": 17405, + "\\/": 11139, + "\\/\\/": 45422, + "\\<": 49778, + "\\\\": 6852, + "\\\\\\\\": 13426, + "\\\\\\\\\\\\\\\\": 21807, + "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\": 34604, + "]": 60, + "]\"": 30866, + "]'": 49946, + "](": 16151, + "])": 12962, + "]),": 46570, + "]).": 35944, + "]);": 36563, + "]+": 48688, + "],": 4357, + "],\"": 17241, + "],[": 38430, + "]-": 45297, + "].": 4083, + "].\"": 29225, + "]:": 5974, + "];": 11208, + "]=": 22241, + "][": 7131, + "][/": 44926, + "]]": 11907, + "]}": 48999, + "^": 61, + "^^": 18237, + "^^^^": 39397, + "^{": 36796, + "_": 62, + "_(": 41052, + "_-": 22955, + "_-_": 31386, + "_.": 44807, + "_>": 49029, + "__": 834, + "___": 17569, + "____": 1427, + "_____": 29343, + "______": 25947, + "_______": 37405, + "________": 2602, + "________________": 4841, + "________________________": 32941, + "________________________________": 10221, + "________________________________________________________________": 27193, + "_{": 23330, + "`": 63, + "`,": 47671, + "`.": 44646, + "``": 15506, + "````": 33153, + "a": 64, + "aa": 7252, + "aaa": 46071, + "aaaa": 24794, + "aah": 37500, + "aan": 28340, + "ab": 397, + "aba": 15498, + "abad": 17325, + "abal": 44349, + "abama": 8809, + "aban": 45094, + "aband": 49248, + "abase": 5754, + "abases": 18826, + "abb": 6485, + "abba": 48910, + "abbage": 32061, + "abbit": 14229, + "abbling": 47883, + "abby": 42457, + "abc": 39305, + "abe": 11231, + "abee": 32580, + "abel": 9608, + "abella": 43653, + "aber": 27359, + "abet": 8380, + "abetes": 11064, + "abeth": 9407, + "abetic": 33312, + "abi": 17914, + "abiding": 43056, + "abies": 43256, + "abil": 14991, + "abilia": 48249, + "abilities": 5738, + "ability": 1799, + "abin": 6014, + "abis": 8102, + "abit": 29968, + "abl": 23117, + "able": 540, + "abled": 4510, + "ables": 2977, + "abling": 11716, + "ablish": 17148, + "ablished": 22555, + "ablishment": 25380, + "ablo": 18817, + "ably": 1346, + "abo": 34748, + "abol": 28426, + "abolic": 29304, + "abor": 4820, + "abortion": 32396, + "about": 10755, + "abouts": 27880, + "above": 29370, + "abre": 46241, + "abs": 8937, + "absolute": 48546, + "absolutely": 42994, + "absor": 46303, + "abul": 16665, + "abulary": 22528, + "abus": 46844, + "abuse": 47158, + "abwe": 27050, + "aby": 3930, + "abyte": 37828, + "abytes": 38346, + "ac": 330, + "aca": 22260, + "acan": 50195, + "acas": 40263, + "acc": 4134, + "acca": 43552, + "accept": 13635, + "acceptable": 16037, + "access": 15526, + "accessible": 33780, + "acci": 44456, + "acco": 8679, + "accompan": 41974, + "accompanied": 42588, + "according": 38169, + "account": 23317, + "ace": 558, + "acea": 44977, + "aceae": 48319, + "acebook": 2887, + "aced": 2286, + "acement": 5592, + "acements": 28613, + "acent": 12643, + "aceous": 37797, + "acer": 11736, + "acerb": 22428, + "acers": 49908, + "aces": 2114, + "acet": 23253, + "aceutical": 14642, + "acey": 25415, + "ach": 620, + "acha": 34518, + "achable": 34446, + "ache": 4891, + "ached": 2317, + "achel": 9636, + "achelor": 19335, + "acher": 3493, + "achers": 17892, + "aches": 3694, + "achev": 42961, + "achi": 14299, + "achine": 20480, + "aching": 8103, + "achment": 15520, + "acho": 43703, + "acht": 19725, + "achu": 32323, + "achus": 9523, + "achusetts": 9770, + "achy": 35586, + "aci": 32009, + "acia": 47431, + "acial": 18150, + "acid": 46309, + "acies": 13433, + "acing": 4092, + "acio": 48711, + "acion": 49443, + "acious": 14209, + "aciously": 45289, + "acist": 20279, + "acists": 33194, + "acity": 4355, + "ack": 441, + "acked": 6021, + "acker": 10735, + "ackers": 28874, + "acket": 8317, + "ackets": 25180, + "acking": 5430, + "ackle": 20523, + "acks": 4595, + "acky": 36053, + "acl": 37779, + "acle": 6008, + "acles": 9928, + "acly": 39691, + "aclysm": 40605, + "aco": 10602, + "acon": 7807, + "acons": 37256, + "acqu": 43561, + "acre": 12345, + "acs": 16436, + "act": 529, + "acted": 23800, + "acter": 7321, + "acteria": 10634, + "acterial": 44965, + "acters": 19858, + "actic": 12009, + "acting": 27362, + "action": 2673, + "actionDate": 31538, + "actions": 4658, + "activ": 15791, + "activate": 39022, + "activated": 33106, + "activation": 48545, + "active": 5275, + "actively": 33329, + "activity": 21797, + "actly": 24342, + "actor": 11218, + "actory": 9548, + "acts": 8656, + "actual": 50039, + "actually": 37739, + "actus": 34144, + "acular": 12754, + "acus": 48628, + "acy": 1590, + "ad": 324, + "ada": 4763, + "adal": 31682, + "adan": 29157, + "adapt": 42552, + "adas": 38768, + "adata": 14706, + "aday": 43593, + "adays": 20544, + "add": 2860, + "addafi": 32113, + "added": 29373, + "adden": 38014, + "adder": 26676, + "adders": 45940, + "addin": 46782, + "adding": 26872, + "addle": 37382, + "addock": 35509, + "addon": 48078, + "addons": 39996, + "addr": 29851, + "address": 21975, + "addy": 13218, + "ade": 671, + "aded": 5286, + "adel": 6959, + "adelphia": 8273, + "adem": 36920, + "ademic": 49113, + "aden": 40780, + "adena": 38047, + "adeon": 12424, + "adequ": 16515, + "ader": 5067, + "aders": 9972, + "ades": 2367, + "adesh": 13410, + "adh": 24411, + "adi": 9189, + "adia": 29523, + "adian": 18425, + "adiator": 33716, + "adic": 23876, + "adier": 38868, + "adies": 50192, + "adin": 17072, + "ading": 4980, + "adiq": 48687, + "adish": 48563, + "aditional": 27013, + "adium": 6271, + "adj": 41255, + "adjust": 23032, + "adjusted": 29117, + "adle": 35166, + "admin": 28482, + "administ": 39081, + "ado": 4533, + "adobe": 36752, + "adoes": 46368, + "ador": 7079, + "ados": 22484, + "adow": 4584, + "adows": 9797, + "adr": 41909, + "adra": 49456, + "ads": 5643, + "adult": 49922, + "adv": 32225, + "advant": 13461, + "advert": 17904, + "advertisement": 45876, + "advertising": 34442, + "ady": 4597, + "ae": 3609, + "aea": 44705, + "aed": 8432, + "aeda": 11641, + "ael": 3010, + "aeper": 28235, + "aepernick": 28333, + "aer": 25534, + "aeus": 46052, + "aez": 47246, + "af": 1878, + "afa": 28485, + "afe": 8635, + "afer": 34659, + "afety": 27925, + "aff": 2001, + "affe": 21223, + "affected": 43958, + "affer": 31183, + "affiliated": 46818, + "affle": 30697, + "affles": 48501, + "afi": 19910, + "afia": 22214, + "afort": 24515, + "aft": 14940, + "after": 8499, + "ag": 363, + "aga": 8126, + "again": 17776, + "against": 32826, + "agall": 44906, + "agame": 46746, + "agan": 7329, + "aganda": 43589, + "agar": 32452, + "agara": 38415, + "agascar": 44309, + "agate": 37861, + "age": 496, + "aged": 1886, + "ageddon": 33054, + "agement": 5082, + "agements": 38113, + "agen": 11286, + "agency": 40955, + "agent": 25781, + "agents": 49638, + "ager": 3536, + "agers": 10321, + "ages": 1095, + "agg": 9460, + "agged": 14655, + "agger": 7928, + "agging": 16406, + "aggressive": 49639, + "agh": 10471, + "aghan": 45109, + "aghd": 16650, + "agher": 30450, + "aghetti": 35812, + "agi": 18013, + "agic": 9083, + "agically": 39066, + "agin": 23183, + "agine": 12756, + "aging": 3039, + "agle": 19345, + "agles": 37803, + "agn": 4660, + "agna": 48669, + "agnar": 30475, + "agne": 21080, + "agnetic": 25145, + "ago": 3839, + "agog": 37300, + "agogue": 32238, + "agon": 1840, + "agonal": 27923, + "agonist": 15239, + "agonists": 36764, + "agons": 34765, + "agos": 48215, + "agra": 45429, + "agram": 6713, + "agraph": 6111, + "agree": 49221, + "ags": 3775, + "agu": 11433, + "ague": 2064, + "agues": 6120, + "agus": 31111, + "agy": 46671, + "ah": 993, + "aha": 12236, + "ahah": 36225, + "ahan": 19210, + "ahar": 37325, + "ahead": 38204, + "ahi": 32810, + "ahime": 49997, + "ahl": 15668, + "ahn": 15386, + "aho": 17108, + "ahon": 30491, + "ahoo": 12992, + "ahs": 39095, + "ahu": 12196, + "ai": 1872, + "aic": 18452, + "aid": 1698, + "aida": 30546, + "aiden": 17538, + "aido": 44354, + "aign": 1784, + "aii": 42648, + "ail": 603, + "aila": 39460, + "ailability": 8994, + "ailable": 1508, + "ailand": 16188, + "ailed": 6255, + "ailing": 11608, + "ails": 1768, + "aily": 3079, + "aim": 1385, + "aiman": 47840, + "aimon": 49438, + "ain": 391, + "aina": 42183, + "aine": 5718, + "ained": 1328, + "ainer": 10613, + "ainers": 50221, + "aining": 1397, + "ainment": 37091, + "ains": 1299, + "aint": 2913, + "aintain": 32725, + "ainted": 14215, + "aints": 6003, + "air": 958, + "aird": 41620, + "aire": 7626, + "aired": 9820, + "aires": 17693, + "airo": 18131, + "airs": 3468, + "airy": 13021, + "ais": 15152, + "ait": 4548, + "aith": 3921, + "aito": 38995, + "aj": 1228, + "aja": 27792, + "aji": 26436, + "ajo": 34944, + "ajor": 1518, + "ak": 461, + "aka": 8130, + "akable": 29033, + "ake": 539, + "aked": 4335, + "akedown": 25817, + "aken": 1685, + "akening": 18800, + "akens": 31627, + "aker": 3110, + "akers": 3979, + "akeru": 43246, + "akery": 33684, + "akes": 1124, + "akespe": 20621, + "akespeare": 20946, + "akh": 11322, + "aki": 8182, + "akia": 21897, + "akin": 27048, + "aking": 868, + "akings": 45665, + "akis": 27321, + "ako": 25496, + "akov": 44715, + "akra": 38004, + "aks": 4730, + "aku": 8719, + "akura": 47754, + "akuya": 29863, + "aky": 15492, + "al": 282, + "ala": 6081, + "alach": 33786, + "alam": 44949, + "alan": 25786, + "albeit": 45781, + "album": 40916, + "alcohol": 42142, + "ald": 1940, + "alde": 35885, + "aldehyde": 44895, + "aldi": 37566, + "aldo": 41476, + "ale": 1000, + "aleb": 32100, + "aled": 3021, + "aleigh": 30729, + "aler": 36213, + "alert": 44598, + "ales": 2040, + "aley": 16730, + "alez": 22149, + "alf": 1604, + "alg": 14016, + "algia": 47111, + "ali": 7344, + "alia": 9752, + "alian": 7199, + "alias": 26011, + "aliation": 22885, + "alid": 10751, + "alien": 42690, + "align": 31494, + "aligned": 41634, + "alin": 14414, + "aline": 20663, + "aling": 4272, + "alion": 19275, + "alions": 50022, + "alis": 27315, + "alist": 49845, + "alities": 27969, + "ality": 1483, + "alk": 971, + "alker": 20949, + "alking": 18998, + "alks": 23833, + "alky": 18354, + "alkyrie": 21316, + "all": 439, + "alla": 30315, + "allah": 31840, + "allas": 7826, + "alle": 6765, + "alled": 4262, + "allel": 29363, + "allery": 17022, + "alli": 36546, + "allic": 18196, + "alling": 9221, + "allion": 48332, + "allo": 49457, + "alloc": 32332, + "allow": 12154, + "allowed": 40845, + "alloween": 50107, + "allows": 47205, + "alls": 5691, + "ally": 453, + "alm": 38182, + "almost": 28177, + "alo": 7335, + "alog": 11794, + "alogue": 30326, + "alogy": 48909, + "alon": 40755, + "alone": 17749, + "along": 24176, + "alore": 40612, + "alos": 41823, + "alph": 17307, + "alpha": 26591, + "als": 874, + "alsa": 32058, + "alse": 2820, + "alsh": 22114, + "also": 14508, + "alt": 2501, + "alted": 29590, + "alter": 47653, + "altern": 33645, + "alth": 1094, + "although": 16670, + "alties": 10355, + "alty": 6017, + "alus": 46781, + "always": 33770, + "aly": 3400, + "alys": 26266, + "alysed": 47557, + "alyses": 43710, + "alysis": 8767, + "alyst": 21470, + "am": 321, + "ama": 1689, + "amac": 11494, + "amacare": 11724, + "aman": 10546, + "amar": 39236, + "amara": 47848, + "amaru": 46893, + "amas": 17485, + "amate": 36754, + "amation": 14755, + "amaz": 45983, + "amazon": 33103, + "amb": 4131, + "amba": 31842, + "amber": 7789, + "ambers": 16368, + "ambling": 15366, + "ambo": 22651, + "amboo": 27708, + "amd": 28745, + "ame": 480, + "amed": 2434, + "ameda": 49637, + "amel": 17983, + "ameless": 39942, + "amen": 41763, + "ament": 3263, + "amental": 6860, + "aments": 12604, + "amer": 2382, + "amera": 18144, + "ameron": 41639, + "ames": 1047, + "ami": 6277, + "amia": 49442, + "amic": 18127, + "amide": 37905, + "amiliar": 19968, + "amily": 5993, + "amin": 5669, + "amina": 18891, + "amination": 24979, + "amine": 9862, + "aminer": 32086, + "amines": 41047, + "aming": 3723, + "amins": 24937, + "amiya": 38241, + "aml": 43695, + "amm": 6475, + "ammad": 26035, + "ammed": 10573, + "ammers": 36846, + "ammu": 49487, + "ammy": 46736, + "amn": 34684, + "amo": 18811, + "amon": 16487, + "among": 35131, + "amorph": 37670, + "amoto": 25384, + "amount": 17287, + "amous": 10877, + "amp": 696, + "ampa": 13299, + "amped": 13322, + "amph": 28474, + "amphetamine": 31262, + "amping": 37843, + "ampion": 6734, + "ampions": 4350, + "ampire": 13577, + "ampires": 27933, + "ample": 1403, + "amples": 12629, + "ampoo": 40239, + "amps": 9430, + "ampton": 23427, + "ampunk": 46183, + "ams": 4105, + "amsung": 30136, + "amura": 37324, + "amus": 25509, + "amy": 14814, + "an": 272, + "ana": 2271, + "analy": 38200, + "analysis": 20930, + "anamo": 33524, + "anan": 27870, + "anas": 15991, + "anasia": 45551, + "anc": 1192, + "anca": 42124, + "ance": 590, + "anced": 2903, + "ancel": 21130, + "ancer": 8250, + "ancers": 20811, + "ances": 1817, + "anch": 3702, + "anche": 6362, + "anches": 12140, + "anchester": 8911, + "anchez": 20364, + "ancial": 2783, + "ancies": 16183, + "ancing": 5077, + "anco": 47699, + "ancock": 37077, + "ancouver": 10264, + "ancy": 3883, + "and": 392, + "anda": 5282, + "andal": 7642, + "andals": 23819, + "andan": 42509, + "ande": 40004, + "anded": 12249, + "andel": 33134, + "andem": 30025, + "ander": 4066, + "andering": 42454, + "anders": 45070, + "andestine": 35887, + "andi": 26800, + "anding": 27225, + "andise": 18888, + "ando": 25440, + "andom": 3749, + "andon": 5063, + "andowski": 44391, + "andr": 46273, + "andra": 15918, + "andre": 49078, + "andro": 28092, + "android": 19411, + "ands": 1746, + "andum": 25933, + "andy": 10757, + "ane": 1531, + "aned": 22739, + "aneers": 33547, + "aneous": 11655, + "aneously": 27683, + "anes": 7305, + "aney": 22297, + "ang": 648, + "anga": 16484, + "angan": 37089, + "ange": 858, + "anged": 5102, + "angel": 8368, + "angelo": 46525, + "anger": 2564, + "angered": 19041, + "angering": 49470, + "angers": 6606, + "anges": 6231, + "angible": 39639, + "anging": 4924, + "angle": 9248, + "angled": 22393, + "angler": 49910, + "angles": 27787, + "angling": 27499, + "ango": 14208, + "angs": 27725, + "angu": 2303, + "anguage": 9000, + "anguages": 33213, + "anguard": 23521, + "angular": 21413, + "ani": 3216, + "ania": 5411, + "anian": 38336, + "anic": 26277, + "anical": 36684, + "anie": 34166, + "aniel": 6321, + "anim": 11227, + "animal": 41607, + "animate": 45685, + "animous": 45873, + "aning": 7574, + "anish": 7115, + "anism": 48162, + "anity": 19689, + "anium": 15776, + "ank": 962, + "anka": 15927, + "anke": 49200, + "anked": 14076, + "ankind": 28066, + "anking": 15230, + "anks": 2283, + "anky": 39556, + "anmar": 21708, + "ann": 1236, + "anna": 7697, + "annabin": 43655, + "annah": 25761, + "anne": 21952, + "anned": 3577, + "annel": 4276, + "annels": 8961, + "anners": 15672, + "anni": 31296, + "annie": 42883, + "annis": 45017, + "annon": 8825, + "annot": 34574, + "announced": 43499, + "anny": 7737, + "ano": 5733, + "anoia": 30661, + "anol": 22012, + "anon": 36902, + "anooga": 42165, + "anos": 40015, + "another": 29214, + "anova": 40993, + "anqu": 26184, + "ans": 504, + "ansas": 6618, + "anse": 40054, + "ansen": 33807, + "anship": 47086, + "ansion": 5487, + "ansk": 34738, + "anski": 44978, + "ansky": 49792, + "ansom": 22011, + "anson": 23103, + "ansson": 44038, + "answer": 41484, + "answered": 31966, + "ant": 415, + "anta": 4910, + "antage": 36403, + "antam": 49653, + "antasy": 34921, + "ante": 12427, + "anted": 4126, + "antes": 39781, + "anth": 29313, + "antha": 32589, + "anthrop": 22178, + "anti": 17096, + "antic": 5109, + "antically": 31589, + "anticipated": 45178, + "antics": 29320, + "antine": 29003, + "anting": 20482, + "antis": 20836, + "antle": 16941, + "antly": 3875, + "anto": 14723, + "antom": 11456, + "anton": 23026, + "antry": 21238, + "ants": 1187, + "anty": 46098, + "antz": 46269, + "anu": 42357, + "anus": 41141, + "anut": 20651, + "anuts": 37555, + "anwhile": 6710, + "any": 1092, + "anya": 34183, + "anyahu": 15966, + "anye": 23495, + "anyl": 34816, + "anyon": 21330, + "anything": 49459, + "anz": 35410, + "anza": 35819, + "ao": 5488, + "aos": 7495, + "ap": 499, + "apa": 32678, + "apache": 43073, + "apan": 2674, + "ape": 1758, + "apeake": 49528, + "aped": 5813, + "apego": 40561, + "aper": 2136, + "apers": 5656, + "apes": 7916, + "apesh": 25490, + "apeshifter": 29554, + "apest": 35746, + "aph": 6570, + "aphael": 34889, + "api": 15042, + "aping": 9269, + "apist": 41690, + "apixel": 48633, + "aple": 24052, + "aples": 28624, + "apo": 41817, + "apolis": 11174, + "apolog": 46407, + "apon": 9184, + "apons": 13486, + "apor": 12687, + "apore": 11656, + "app": 1324, + "appa": 20975, + "apped": 6320, + "append": 33295, + "apper": 11463, + "appers": 46629, + "appiness": 42661, + "apping": 5912, + "appings": 39242, + "apple": 18040, + "application": 31438, + "apply": 39014, + "appointed": 32924, + "appro": 21064, + "appropri": 11488, + "appropriate": 13335, + "appropriately": 45175, + "approved": 29137, + "approximately": 47498, + "apps": 18211, + "appy": 7774, + "aps": 1686, + "apse": 7512, + "apsed": 28361, + "apses": 45903, + "apt": 2373, + "apter": 3429, + "apters": 12126, + "aptic": 32963, + "aptop": 45007, + "apult": 41387, + "apy": 12826, + "aq": 30188, + "aqu": 36129, + "aque": 18251, + "aques": 46806, + "aquin": 48734, + "ar": 283, + "ara": 3301, + "arag": 29967, + "arah": 23066, + "arak": 30447, + "aram": 41158, + "aran": 19173, + "arant": 4741, + "arantine": 37996, + "araoh": 33766, + "arat": 34174, + "arate": 30748, + "aration": 10186, + "arations": 24355, + "arb": 38039, + "arbon": 42084, + "arc": 5605, + "arcer": 17649, + "arch": 998, + "arching": 38270, + "archive": 17474, + "archives": 48814, + "archment": 36767, + "archs": 34592, + "archy": 9282, + "arcity": 32689, + "ard": 446, + "arde": 45093, + "arded": 10676, + "arden": 5872, + "ardi": 22490, + "arding": 13493, + "ardless": 14694, + "ardo": 13109, + "ardon": 19917, + "ards": 1371, + "ardy": 39124, + "are": 533, + "area": 20337, + "ared": 1144, + "aredevil": 38281, + "arel": 20318, + "arella": 45494, + "aren": 5757, + "arent": 1580, + "arenthood": 17117, + "arently": 13773, + "arer": 11258, + "arers": 34231, + "ares": 3565, + "arest": 12423, + "aret": 8984, + "areth": 26659, + "arette": 14758, + "arettes": 13890, + "aretz": 48338, + "arez": 19655, + "arf": 37595, + "arg": 853, + "arge": 1376, + "arger": 32270, + "arget": 7641, + "argo": 9448, + "argon": 37920, + "args": 22046, + "argument": 49140, + "ari": 2743, + "aria": 10312, + "arial": 36098, + "arian": 3699, + "arians": 13517, + "ariat": 21621, + "arie": 49173, + "aries": 3166, + "arij": 39010, + "arijuana": 42834, + "arily": 3093, + "arin": 17714, + "arine": 34569, + "aring": 1723, + "ario": 4982, + "arios": 13010, + "arious": 27129, + "aris": 20066, + "arist": 34566, + "arity": 6806, + "arium": 17756, + "arius": 19897, + "ark": 668, + "arkable": 45543, + "arkin": 39027, + "arks": 5558, + "arl": 7063, + "arlane": 49344, + "arling": 30045, + "arm": 1670, + "arma": 10961, + "armac": 32813, + "armed": 12026, + "arming": 18052, + "armor": 40456, + "arms": 8357, + "arn": 1501, + "arna": 28610, + "arnaev": 42311, + "arning": 4228, + "aro": 12022, + "aron": 8045, + "aroo": 38049, + "around": 14145, + "arov": 42737, + "arp": 5117, + "arr": 3258, + "arranted": 47940, + "arrass": 9187, + "array": 18747, + "arre": 9624, + "arrell": 47769, + "arrett": 34878, + "arrison": 22472, + "arro": 34852, + "arrow": 6018, + "arry": 6532, + "ars": 945, + "arse": 17208, + "arser": 28198, + "arsh": 5406, + "arsity": 45826, + "arson": 12613, + "art": 433, + "arta": 34202, + "arte": 32074, + "arted": 19112, + "arten": 23996, + "arter": 2571, + "arters": 6137, + "arth": 11999, + "arthed": 36370, + "arthy": 18270, + "article": 20205, + "articles": 26845, + "artifacts": 50179, + "artisan": 19714, + "artist": 49016, + "artment": 1823, + "artments": 32514, + "artney": 41709, + "arton": 41328, + "arts": 5889, + "arty": 25494, + "artz": 13636, + "aru": 11493, + "arus": 20272, + "ary": 560, + "arya": 43898, + "aryl": 36822, + "aryn": 38621, + "as": 292, + "asa": 15462, + "asaki": 33846, + "asant": 8775, + "asar": 42391, + "asc": 3372, + "asca": 42688, + "ascade": 28966, + "ascal": 27747, + "ascar": 37740, + "ascist": 31968, + "ascript": 15961, + "ascular": 14767, + "ascus": 20275, + "ase": 589, + "ased": 839, + "asel": 48038, + "aser": 6005, + "asers": 19865, + "ases": 1386, + "ash": 1077, + "asha": 14715, + "ashed": 5263, + "asher": 31218, + "ashes": 7465, + "ashi": 12144, + "ashing": 2140, + "ashington": 2542, + "ashion": 5880, + "ashtra": 38535, + "asi": 17053, + "asia": 23218, + "asin": 47337, + "asing": 2313, + "asio": 29831, + "asion": 4247, + "asionally": 31775, + "asions": 39327, + "asis": 17765, + "asive": 17443, + "ask": 2093, + "aska": 8480, + "asket": 11715, + "asketball": 14575, + "asking": 30463, + "asks": 6791, + "asley": 30705, + "asm": 8597, + "asma": 11797, + "asms": 34432, + "ason": 888, + "asonable": 17994, + "asonic": 30189, + "asonry": 38950, + "asons": 2812, + "asp": 5126, + "aspberry": 17653, + "asper": 32981, + "aspers": 49412, + "aspx": 31740, + "ass": 562, + "assad": 30178, + "assador": 10623, + "assadors": 33429, + "assault": 46635, + "asse": 21612, + "assed": 21390, + "assemb": 34455, + "assembled": 46826, + "assembly": 41873, + "asser": 24929, + "assert": 30493, + "asses": 13978, + "assets": 19668, + "assetsadobe": 41383, + "assi": 46527, + "assian": 46091, + "assic": 31635, + "assies": 46257, + "assin": 44961, + "assing": 19696, + "assion": 11857, + "assis": 20297, + "assisted": 42191, + "assium": 26663, + "assment": 45312, + "asso": 28372, + "associated": 32852, + "assuming": 32935, + "assy": 11720, + "ast": 459, + "asta": 40197, + "aste": 4594, + "asted": 8992, + "aster": 1603, + "astered": 14054, + "astern": 6470, + "asters": 7060, + "astery": 29310, + "astic": 3477, + "astical": 32044, + "astically": 16607, + "astics": 24232, + "asting": 9222, + "aston": 45966, + "astrous": 20168, + "asts": 5773, + "asty": 7833, + "asu": 27345, + "asure": 5015, + "asured": 34006, + "asures": 13846, + "asuring": 45925, + "asury": 11579, + "asus": 40895, + "asy": 4107, + "at": 265, + "ata": 1045, + "atable": 21156, + "ataka": 48088, + "atal": 10254, + "atalie": 30951, + "atan": 39036, + "atana": 43777, + "atar": 9459, + "atari": 35554, + "atars": 40193, + "atch": 963, + "atche": 24809, + "atched": 14265, + "atcher": 34734, + "atches": 20981, + "atchewan": 29736, + "atching": 19775, + "ate": 378, + "atech": 40340, + "ated": 515, + "ateful": 11850, + "ateg": 2397, + "ategic": 47917, + "ategor": 47467, + "ategories": 26129, + "ategory": 11606, + "ategy": 4338, + "atel": 25791, + "atell": 7528, + "atellite": 26493, + "ately": 1286, + "atem": 23900, + "aten": 36686, + "ater": 729, + "ateral": 10534, + "aterasu": 45335, + "atered": 34190, + "aterial": 2273, + "atern": 9205, + "aternal": 14744, + "aternity": 17094, + "aters": 8605, + "ates": 689, + "ateur": 15093, + "ateurs": 45211, + "atever": 3587, + "atform": 3390, + "ath": 776, + "atha": 30921, + "atham": 37520, + "athan": 6696, + "athe": 26221, + "athed": 35932, + "ather": 1032, + "athered": 8638, + "atherine": 15289, + "athering": 25545, + "athetic": 18874, + "athi": 44202, + "athing": 26927, + "athlon": 50236, + "athom": 32910, + "athon": 12938, + "aths": 33148, + "athy": 10036, + "ati": 7246, + "atial": 34961, + "atibility": 25901, + "atible": 16873, + "atic": 1512, + "atical": 39056, + "atically": 4142, + "atican": 18245, + "atics": 23372, + "atile": 12610, + "atility": 18486, + "atin": 10680, + "ating": 803, + "atinum": 16881, + "atio": 39485, + "ation": 341, + "ational": 864, + "ationally": 15208, + "ations": 602, + "atis": 37749, + "atisf": 17403, + "atism": 26185, + "ative": 876, + "atively": 9404, + "atives": 2929, + "ativity": 22055, + "atl": 25864, + "atlantic": 43342, + "atmeal": 45280, + "ato": 5549, + "atoes": 15048, + "atography": 45501, + "atom": 37696, + "atomic": 47116, + "aton": 13951, + "atonin": 44248, + "atoon": 23122, + "ator": 1352, + "atorial": 21592, + "atories": 19854, + "atorium": 30732, + "ators": 2024, + "atory": 2870, + "atos": 35492, + "atown": 41079, + "atra": 26066, + "atre": 10562, + "atri": 26646, + "atro": 47756, + "atron": 23484, + "ats": 1381, + "atson": 13506, + "atsu": 19231, + "atsuki": 40063, + "att": 1078, + "atta": 25014, + "attach": 47348, + "attack": 20358, + "attacks": 38458, + "atted": 16898, + "atten": 41769, + "atter": 1436, + "attered": 10228, + "attering": 16475, + "atters": 34387, + "attery": 16296, + "atti": 34891, + "attle": 1999, + "attled": 43535, + "atto": 45807, + "atton": 38680, + "attr": 35226, + "attribute": 42348, + "atts": 30353, + "atu": 33419, + "atum": 21307, + "atur": 2541, + "atural": 2660, + "aturally": 7436, + "aturated": 30192, + "aturation": 36921, + "aturday": 3658, + "aturdays": 39724, + "ature": 1300, + "atures": 6691, + "atus": 7240, + "atz": 27906, + "au": 559, + "auc": 14272, + "aucas": 25205, + "aucus": 16710, + "aucuses": 38271, + "aud": 3885, + "auder": 29233, + "audi": 31330, + "audio": 24051, + "auer": 16261, + "aug": 7493, + "auga": 44718, + "augh": 1567, + "aughed": 13726, + "aughlin": 42730, + "aughs": 19256, + "aught": 3413, + "aughter": 3637, + "aughtered": 32734, + "aughters": 13441, + "aughty": 28496, + "aukee": 15263, + "aul": 2518, + "auld": 30406, + "auldron": 45637, + "ault": 1721, + "aults": 13185, + "aum": 26043, + "aun": 1942, + "auna": 32837, + "aunch": 11429, + "aund": 14677, + "aunder": 21118, + "aundering": 23496, + "aunders": 32818, + "aunt": 12968, + "aunted": 20227, + "aunting": 20706, + "auntlet": 32633, + "auntlets": 39695, + "aunts": 43981, + "aur": 2899, + "aura": 33830, + "auri": 35190, + "aurus": 22302, + "aus": 8717, + "ause": 682, + "ausible": 17178, + "aut": 2306, + "auth": 18439, + "authent": 41299, + "author": 9800, + "authored": 39351, + "authorized": 19721, + "authors": 41617, + "autical": 37073, + "aution": 32917, + "autions": 28766, + "auto": 23736, + "automatic": 37800, + "auts": 17712, + "aux": 14644, + "av": 615, + "ava": 4170, + "avage": 33757, + "availability": 47274, + "available": 15182, + "aval": 9226, + "avan": 12421, + "avanaugh": 19872, + "avascript": 16098, + "ave": 1015, + "aved": 9586, + "avement": 44034, + "aven": 4005, + "aver": 8770, + "average": 23913, + "avering": 42610, + "avers": 30400, + "avery": 12447, + "aves": 3080, + "avez": 28851, + "avi": 15820, + "avia": 40543, + "avid": 8490, + "avier": 19492, + "avin": 20637, + "aving": 2703, + "avior": 15759, + "aviour": 37716, + "avis": 23401, + "avoid": 27080, + "avor": 5570, + "avorable": 32006, + "avored": 48275, + "avorite": 19227, + "avour": 29023, + "avy": 2830, + "aw": 707, + "awa": 6909, + "awaited": 41742, + "awan": 43004, + "awar": 48841, + "aware": 9685, + "awareness": 47812, + "awaru": 39008, + "awatts": 46684, + "away": 8272, + "aways": 23949, + "awed": 36825, + "awei": 38247, + "awi": 23368, + "awk": 19301, + "awks": 11890, + "awn": 3832, + "aws": 8356, + "ax": 897, + "axe": 38231, + "axies": 25472, + "axis": 22704, + "axter": 40864, + "axy": 6969, + "ay": 323, + "aya": 11729, + "ayan": 22931, + "aye": 48822, + "ayed": 16548, + "ayer": 2794, + "ayers": 6962, + "ayette": 27067, + "aying": 8369, + "aylor": 7167, + "ayn": 49987, + "ayne": 43906, + "ays": 592, + "ayson": 34907, + "az": 1031, + "aza": 7056, + "azaar": 34485, + "azaki": 32276, + "azar": 29413, + "azard": 26267, + "aze": 6201, + "azed": 13865, + "azeera": 28535, + "azel": 41319, + "azer": 19178, + "azes": 36096, + "azi": 7761, + "azine": 4994, + "azines": 15742, + "azing": 4070, + "azo": 44299, + "azon": 5168, + "azor": 17725, + "azy": 12582, + "azz": 8101, + "b": 65, + "ba": 7012, + "bable": 33460, + "bably": 11921, + "baby": 40252, + "bach": 19496, + "back": 1891, + "backed": 17078, + "backer": 49978, + "background": 25249, + "backs": 10146, + "bad": 14774, + "bag": 21454, + "bage": 13866, + "bags": 34005, + "bah": 47041, + "bal": 6893, + "balance": 20427, + "balanced": 27753, + "ball": 1894, + "balls": 21591, + "ban": 3820, + "band": 3903, + "bands": 21397, + "bane": 20235, + "bang": 36668, + "bank": 17796, + "banks": 43558, + "bar": 5657, + "bara": 39389, + "bard": 23024, + "bare": 49382, + "bars": 34046, + "bart": 16575, + "bas": 12093, + "base": 8692, + "based": 3106, + "bash": 41757, + "basic": 35487, + "basketball": 21265, + "bass": 42933, + "bat": 8664, + "batch": 43501, + "bath": 37648, + "bats": 50199, + "battle": 38471, + "baugh": 23768, + "baum": 24738, + "bay": 24406, + "bb": 11848, + "bc": 15630, + "bd": 17457, + "bda": 43444, + "be": 1350, + "beam": 40045, + "bean": 14289, + "beans": 44749, + "bear": 33227, + "beard": 39433, + "bearing": 28655, + "beat": 12945, + "beaut": 40544, + "bec": 9423, + "because": 13893, + "becca": 20627, + "beck": 27343, + "becue": 31927, + "bed": 3077, + "bedroom": 36269, + "bee": 20963, + "been": 47436, + "beer": 42428, + "bees": 41712, + "before": 19052, + "begin": 27471, + "beh": 20709, + "behavior": 46571, + "behind": 42200, + "being": 11873, + "beit": 15357, + "bek": 47083, + "bel": 6667, + "bell": 7923, + "below": 35993, + "belt": 37976, + "ben": 11722, + "bench": 26968, + "bender": 45666, + "bending": 49667, + "benef": 36934, + "benefit": 48649, + "bent": 46119, + "ber": 527, + "bered": 9451, + "berg": 3900, + "berger": 21041, + "berman": 34591, + "bern": 33900, + "bernatorial": 43660, + "berra": 31358, + "berries": 20853, + "berry": 8396, + "bers": 1213, + "bert": 4835, + "berto": 32371, + "berus": 39192, + "bery": 13001, + "bes": 12636, + "best": 13466, + "bestos": 40651, + "bet": 11181, + "beta": 31361, + "bett": 48138, + "better": 27903, + "between": 23395, + "bey": 23454, + "bf": 19881, + "bg": 35904, + "bh": 34369, + "bi": 8482, + "bia": 23339, + "bial": 25200, + "bian": 12210, + "bians": 30071, + "biased": 38002, + "bid": 14065, + "bidden": 37978, + "bie": 12590, + "bies": 29846, + "big": 14261, + "bike": 32256, + "bil": 33473, + "bill": 35546, + "billion": 24540, + "bilt": 34508, + "bin": 8800, + "binary": 39491, + "bind": 21653, + "binding": 30786, + "bing": 4623, + "biology": 43592, + "bird": 16944, + "birds": 32002, + "birth": 24280, + "bis": 41907, + "bish": 31795, + "bishop": 27832, + "bit": 2545, + "bitcoin": 35395, + "bite": 37018, + "bitious": 14228, + "bits": 9895, + "biz": 42189, + "bj": 50007, + "bl": 2436, + "black": 13424, + "blade": 22500, + "blance": 42757, + "blank": 27190, + "blast": 39806, + "ble": 903, + "bleacher": 47975, + "bled": 9342, + "bledon": 49258, + "blem": 11253, + "blems": 22143, + "bler": 43400, + "blers": 43022, + "bles": 7689, + "bley": 43263, + "blind": 27461, + "bling": 11108, + "block": 9967, + "blocking": 41938, + "blocks": 27372, + "blog": 14036, + "blogs": 49096, + "blogspot": 35217, + "blood": 18041, + "blooded": 50132, + "blow": 48619, + "blown": 31290, + "blue": 17585, + "bly": 36874, + "bm": 20475, + "bn": 9374, + "bnb": 31971, + "bo": 2127, + "boa": 48614, + "board": 3526, + "boarding": 27794, + "boards": 12821, + "boat": 24482, + "boats": 46058, + "bodied": 45190, + "body": 2618, + "bol": 28984, + "bold": 36575, + "bole": 45693, + "bolt": 25593, + "bomb": 27657, + "bon": 4189, + "bone": 15992, + "bones": 35095, + "bons": 23461, + "book": 2070, + "books": 12106, + "bool": 30388, + "boost": 39521, + "boot": 18769, + "bor": 2865, + "border": 20192, + "borg": 23297, + "borgh": 49870, + "born": 6286, + "borne": 13555, + "boro": 21513, + "borough": 17913, + "bors": 32289, + "bos": 39565, + "boss": 42820, + "bot": 13645, + "both": 16885, + "bots": 42478, + "bott": 10985, + "bottom": 22487, + "bound": 7784, + "bour": 6084, + "bourg": 24256, + "bourne": 12544, + "bow": 8176, + "bowl": 36859, + "bows": 25435, + "box": 3524, + "boxes": 29305, + "boxing": 45471, + "boy": 7081, + "boys": 13202, + "bp": 46583, + "bps": 18799, + "br": 1671, + "bra": 16057, + "brace": 46565, + "brain": 27825, + "brainer": 49334, + "bral": 24427, + "brance": 28031, + "brand": 17938, + "branded": 35559, + "braska": 17088, + "brate": 40804, + "brates": 44835, + "bre": 4679, + "bread": 29573, + "break": 9032, + "breaker": 25766, + "breakers": 49295, + "breaking": 13395, + "breaks": 30058, + "bred": 36074, + "breeding": 49705, + "brew": 11269, + "brid": 10236, + "bridge": 9458, + "brids": 40637, + "bright": 29199, + "bring": 48580, + "bringer": 48046, + "bringing": 35749, + "bris": 15311, + "bro": 7957, + "broad": 36654, + "broken": 25826, + "brook": 19094, + "brother": 37343, + "brow": 25367, + "brown": 33282, + "browser": 40259, + "brush": 32680, + "bryce": 32524, + "bs": 1443, + "bsite": 12485, + "bsp": 24145, + "bt": 18347, + "btn": 46118, + "bu": 11110, + "bub": 46176, + "buck": 27041, + "bucks": 18999, + "budget": 37315, + "buf": 29325, + "buff": 36873, + "buffer": 22252, + "bug": 25456, + "bugs": 32965, + "build": 11249, + "builder": 38272, + "builders": 50034, + "building": 16894, + "built": 18780, + "bul": 15065, + "bull": 16308, + "bum": 4435, + "buquerque": 36461, + "bur": 6236, + "burg": 7423, + "burgh": 9228, + "burn": 10899, + "burning": 44313, + "burse": 21780, + "burst": 31961, + "bury": 10711, + "bus": 10885, + "bush": 50231, + "business": 22680, + "buster": 24899, + "busters": 30181, + "but": 4360, + "butt": 43059, + "button": 16539, + "buy": 17846, + "by": 1525, + "bye": 16390, + "byn": 14929, + "bys": 48209, + "byss": 15040, + "byte": 26327, + "byter": 36204, + "bytes": 33661, + "c": 66, + "ca": 6888, + "cache": 23870, + "cade": 46395, + "cair": 37155, + "cake": 30560, + "cakes": 37263, + "cal": 9948, + "cale": 38765, + "caliber": 43288, + "call": 13345, + "callback": 47423, + "called": 7174, + "calling": 44714, + "cam": 20991, + "camera": 25695, + "camp": 16544, + "campaign": 35012, + "campus": 43842, + "can": 5171, + "cancer": 48870, + "cand": 46188, + "cano": 35490, + "canon": 49883, + "cap": 11128, + "capacity": 42404, + "cape": 36435, + "capital": 27544, + "capitalist": 49970, + "caps": 27979, + "capt": 27144, + "car": 7718, + "carb": 35684, + "carbon": 29255, + "card": 9517, + "cards": 27761, + "care": 6651, + "carry": 34993, + "cars": 37993, + "cart": 26674, + "cas": 34004, + "case": 7442, + "cases": 33964, + "cash": 30350, + "cast": 2701, + "caster": 17970, + "casters": 26248, + "casting": 19913, + "castle": 18676, + "casts": 40924, + "cat": 9246, + "catch": 40198, + "catching": 50106, + "category": 22872, + "catentry": 39165, + "cation": 30907, + "cats": 24619, + "cause": 25587, + "cb": 21101, + "cc": 535, + "cca": 13227, + "ccess": 1591, + "cci": 35764, + "ccoli": 34544, + "ccording": 2941, + "cd": 10210, + "cdn": 32341, + "ce": 344, + "cean": 5829, + "ceans": 19961, + "ced": 771, + "cedented": 12292, + "cedes": 19285, + "ceed": 2707, + "ceivable": 48054, + "ceive": 15164, + "ceived": 6471, + "ceiver": 39729, + "cel": 5276, + "cele": 49840, + "celer": 7015, + "cell": 3846, + "cellaneous": 25673, + "cellence": 19801, + "cellent": 5666, + "cells": 46342, + "celona": 14308, + "cember": 3273, + "cemic": 40478, + "cence": 43696, + "cend": 15695, + "cens": 42595, + "cent": 1087, + "center": 16159, + "centered": 38050, + "central": 31463, + "centric": 28577, + "century": 14792, + "cephal": 43996, + "cept": 984, + "ception": 4516, + "ceptions": 11755, + "ceptive": 25867, + "ceptor": 49492, + "cer": 2189, + "cern": 30903, + "cerned": 49990, + "cerning": 41981, + "cerpt": 17040, + "cers": 7999, + "cert": 22583, + "certain": 39239, + "cery": 12757, + "ces": 728, + "cess": 919, + "cession": 43914, + "cessive": 45428, + "cest": 9165, + "cester": 33187, + "cf": 12993, + "cffff": 31727, + "cffffcc": 31957, + "cfg": 37581, + "cgi": 37157, + "ch": 354, + "cha": 11693, + "chain": 7983, + "chains": 38861, + "chair": 16337, + "chairs": 49655, + "chal": 38009, + "chall": 36747, + "cham": 49869, + "chan": 3147, + "chance": 39486, + "change": 3803, + "changed": 40985, + "changes": 36653, + "changing": 22954, + "channel": 17620, + "channelAvailability": 39757, + "chant": 8907, + "chanted": 28923, + "chapter": 43582, + "char": 10641, + "character": 22769, + "chard": 30215, + "charg": 11121, + "charge": 10136, + "charged": 17200, + "charges": 34948, + "charging": 31498, + "chart": 40926, + "chat": 17006, + "che": 2395, + "cheat": 46799, + "check": 9122, + "checked": 26752, + "checking": 41004, + "checks": 42116, + "ched": 1740, + "chedel": 24015, + "chel": 29232, + "chell": 12398, + "chem": 15245, + "chemical": 31379, + "chemist": 28899, + "chemy": 26599, + "chen": 6607, + "chenko": 45059, + "chens": 29937, + "cheon": 40556, + "cher": 2044, + "chers": 3533, + "chery": 31132, + "ches": 2052, + "chest": 46713, + "chester": 35983, + "chet": 20043, + "chev": 49916, + "chi": 11072, + "chid": 28402, + "chie": 3043, + "chief": 17351, + "chieve": 24957, + "child": 9410, + "children": 17197, + "chin": 24658, + "ching": 10813, + "chini": 45045, + "chio": 40900, + "chip": 35902, + "chlor": 36813, + "chn": 1349, + "chnology": 19587, + "cho": 6679, + "choes": 23001, + "choice": 25541, + "chool": 1251, + "christ": 43533, + "chrom": 28663, + "chrome": 46659, + "chron": 11413, + "cht": 21474, + "chu": 46417, + "chuk": 46019, + "church": 36964, + "chwitz": 36297, + "chy": 29658, + "ci": 979, + "cia": 33743, + "cial": 2413, + "cially": 2131, + "ciating": 46136, + "ciation": 17269, + "cible": 37369, + "cience": 4234, + "cient": 3456, + "cientious": 43037, + "cients": 35611, + "cies": 3171, + "cific": 7790, + "cig": 22683, + "cigarette": 46040, + "cigarettes": 32529, + "cil": 2856, + "cill": 20346, + "cin": 17879, + "cing": 2259, + "cious": 4680, + "cipl": 6671, + "cipled": 41296, + "ciples": 6418, + "ciplinary": 29386, + "cipline": 34647, + "circ": 21170, + "circle": 45597, + "cise": 37561, + "cised": 37168, + "cision": 16005, + "cit": 47992, + "citizens": 46801, + "city": 19205, + "cium": 16910, + "cius": 28599, + "civil": 37636, + "ck": 694, + "cker": 15280, + "cki": 49108, + "cking": 44377, + "cknow": 5319, + "cknowled": 33165, + "cko": 37549, + "cks": 4657, + "cl": 565, + "clad": 29853, + "claim": 6604, + "claimed": 12795, + "claimer": 17111, + "clair": 27659, + "clamation": 20931, + "class": 4871, + "classes": 37724, + "classic": 49421, + "classified": 31691, + "clave": 44281, + "claw": 43143, + "cle": 2375, + "clean": 27773, + "clear": 20063, + "cled": 20095, + "cler": 22902, + "clerosis": 31399, + "cles": 5427, + "cli": 44506, + "click": 12976, + "client": 16366, + "cliffe": 33783, + "climate": 42570, + "cling": 8493, + "clinical": 47367, + "clinton": 37821, + "clip": 15036, + "clips": 31945, + "clipse": 17043, + "clock": 15750, + "clone": 21018, + "cloneembedreportprint": 30899, + "close": 19836, + "closed": 20225, + "closure": 17966, + "cloth": 44905, + "cloud": 17721, + "club": 18664, + "clud": 758, + "clude": 9152, + "cluded": 10341, + "cludes": 13955, + "cluding": 6360, + "clus": 2527, + "clusion": 4717, + "clusions": 11539, + "clusive": 5731, + "clusively": 44307, + "cm": 11215, + "cmd": 28758, + "cmp": 48991, + "cms": 46406, + "cn": 31522, + "co": 1073, + "coal": 25140, + "coat": 31434, + "cock": 21517, + "cod": 19815, + "code": 8189, + "coded": 40976, + "codes": 40148, + "coe": 49270, + "cohol": 4857, + "coin": 3630, + "coins": 14624, + "col": 4033, + "cold": 36673, + "coll": 26000, + "collar": 37676, + "collect": 33327, + "collection": 43681, + "college": 44107, + "colm": 18414, + "colo": 45745, + "colonial": 49787, + "color": 8043, + "colored": 25717, + "colour": 49903, + "column": 28665, + "com": 785, + "comb": 24011, + "combat": 39969, + "combe": 49325, + "come": 2958, + "comed": 15128, + "comes": 8988, + "comfort": 21598, + "coming": 4976, + "comings": 30715, + "comm": 9503, + "command": 21812, + "comment": 23893, + "comments": 15944, + "commerce": 27061, + "commercial": 36313, + "commit": 41509, + "committee": 26799, + "common": 11321, + "commun": 10709, + "communication": 32560, + "communications": 20860, + "community": 28158, + "comp": 5589, + "compan": 34390, + "company": 39722, + "compatible": 38532, + "competitive": 46131, + "compl": 23855, + "complete": 20751, + "completely": 46699, + "complex": 41887, + "compliance": 47587, + "component": 42895, + "computer": 33215, + "con": 1102, + "concept": 43169, + "concert": 48415, + "cond": 17561, + "condition": 31448, + "conduct": 36495, + "cone": 49180, + "conf": 10414, + "conference": 41124, + "confidence": 39745, + "config": 11250, + "confirmed": 36349, + "cong": 36801, + "coni": 45774, + "conn": 37043, + "connect": 8443, + "connected": 15236, + "connection": 38659, + "conom": 1519, + "cons": 5936, + "conscious": 16796, + "conserv": 38925, + "conservancy": 41215, + "conservative": 43218, + "consider": 44353, + "console": 41947, + "const": 9979, + "constitutional": 18789, + "construct": 41571, + "consumer": 49827, + "consuming": 35873, + "cont": 3642, + "contact": 32057, + "contained": 45964, + "container": 34924, + "containing": 38301, + "content": 11299, + "context": 22866, + "contin": 18487, + "continental": 35415, + "continue": 43043, + "contract": 28484, + "control": 13716, + "controlled": 14401, + "controller": 36500, + "conv": 42946, + "cook": 27916, + "cooked": 46591, + "cookie": 44453, + "cool": 24494, + "coon": 20912, + "coord": 37652, + "cop": 22163, + "copy": 30073, + "cor": 10215, + "core": 7295, + "corn": 20772, + "correct": 30283, + "corruption": 46260, + "cos": 6966, + "cost": 15805, + "cosystem": 12541, + "cot": 25557, + "cott": 14612, + "could": 24089, + "count": 9127, + "counter": 24588, + "country": 19315, + "cour": 43220, + "course": 17319, + "court": 22230, + "cover": 9631, + "covered": 32111, + "cow": 8232, + "cox": 40359, + "cp": 13155, + "cpp": 20322, + "cpu": 36166, + "cr": 6098, + "craft": 3323, + "crafted": 39160, + "crazy": 50112, + "cre": 7513, + "cream": 36277, + "creat": 20123, + "create": 17953, + "created": 25598, + "creation": 38793, + "creator": 45382, + "credit": 43082, + "creen": 32060, + "crete": 38669, + "crew": 42276, + "cribed": 32968, + "crim": 50086, + "crime": 28126, + "criminal": 45955, + "cript": 6519, + "cription": 6820, + "criptions": 24370, + "crit": 22213, + "critical": 34666, + "cro": 19915, + "croft": 36714, + "crop": 31476, + "cross": 19692, + "crow": 47114, + "cru": 32838, + "cry": 20470, + "crypt": 29609, + "cs": 6359, + "css": 25471, + "csv": 40664, + "ct": 310, + "ctic": 11048, + "ctica": 28914, + "ction": 596, + "ctions": 2733, + "ctive": 14070, + "ctl": 34168, + "ctor": 2715, + "ctors": 5217, + "ctory": 25977, + "ctr": 24087, + "ctrl": 44755, + "ctuary": 15258, + "cture": 48715, + "ctx": 49464, + "cu": 27399, + "cube": 40296, + "cue": 15509, + "cul": 3129, + "cular": 10440, + "culated": 49262, + "culation": 14902, + "cule": 23172, + "cules": 13930, + "culosis": 38767, + "cult": 40820, + "cultural": 30844, + "culture": 25584, + "culus": 17576, + "cum": 36340, + "cup": 25244, + "cur": 22019, + "currency": 34415, + "current": 14421, + "currently": 41745, + "cus": 9042, + "cussion": 36262, + "custom": 23144, + "cut": 8968, + "cuts": 23779, + "cutting": 29753, + "cv": 33967, + "cy": 948, + "cycl": 15539, + "cycle": 13696, + "cycles": 32503, + "cyclop": 22873, + "cyclopedia": 25497, + "cyl": 38801, + "cz": 26691, + "cé": 32682, + "d": 67, + "dB": 36077, + "dL": 45582, + "da": 6814, + "dad": 47984, + "daily": 29468, + "dain": 27162, + "dal": 31748, + "dale": 14597, + "dam": 11043, + "damage": 28735, + "dan": 25604, + "danger": 38537, + "daq": 48539, + "dar": 27455, + "dark": 21953, + "dash": 42460, + "dat": 19608, + "data": 7890, + "database": 48806, + "date": 4475, + "dated": 8715, + "dates": 19581, + "dating": 38734, + "daughter": 29642, + "day": 820, + "dayName": 45392, + "days": 12545, + "db": 9945, + "dc": 17896, + "dd": 1860, + "dden": 4742, + "dding": 33403, + "dds": 33714, + "de": 2934, + "dead": 25124, + "deal": 31769, + "deals": 14302, + "death": 22595, + "deb": 11275, + "debian": 24689, + "debug": 24442, + "dec": 12501, + "deck": 35875, + "decl": 32446, + "ded": 9395, + "deen": 39060, + "deep": 22089, + "def": 4299, + "default": 12286, + "defense": 19774, + "define": 13086, + "defined": 23211, + "definition": 46758, + "deg": 13500, + "degree": 16863, + "del": 12381, + "delay": 40850, + "delete": 33678, + "dem": 9536, + "demand": 28550, + "democracy": 42017, + "democratic": 41232, + "demon": 26567, + "den": 6559, + "density": 43337, + "dep": 10378, + "depend": 45841, + "dependent": 21186, + "depending": 44023, + "depth": 18053, + "der": 1082, + "derived": 34631, + "des": 8906, + "desc": 20147, + "described": 34869, + "description": 11213, + "design": 26124, + "designed": 30473, + "desktop": 41375, + "despite": 41081, + "dest": 16520, + "destroy": 41659, + "destruct": 35678, + "det": 15255, + "detail": 49170, + "details": 36604, + "determination": 40869, + "dev": 7959, + "develop": 16244, + "developed": 33082, + "development": 31267, + "device": 25202, + "devices": 42034, + "df": 7568, + "dfx": 48753, + "dh": 34985, + "di": 10989, + "diagn": 47356, + "dial": 38969, + "dict": 11600, + "did": 20839, + "didn": 45168, + "die": 11979, + "dies": 25990, + "diff": 26069, + "different": 39799, + "dig": 12894, + "digit": 27003, + "digital": 34725, + "digy": 41923, + "dim": 27740, + "dimension": 46156, + "dimensional": 19577, + "din": 25194, + "dinand": 41993, + "ding": 12083, + "dir": 15908, + "direct": 12942, + "directed": 34762, + "direction": 37295, + "director": 35248, + "directory": 34945, + "dirty": 49075, + "dis": 6381, + "disable": 40223, + "disabled": 47730, + "disc": 15410, + "disciplinary": 40625, + "discrimination": 42723, + "disk": 39531, + "display": 13812, + "displayText": 31536, + "dist": 17080, + "distance": 30246, + "dit": 5266, + "div": 7146, + "division": 21426, + "dj": 28241, + "dk": 34388, + "dl": 25404, + "dll": 12736, + "dm": 36020, + "dn": 32656, + "do": 4598, + "doc": 15390, + "docker": 45986, + "docs": 31628, + "doctor": 35580, + "doctoral": 44064, + "document": 22897, + "documented": 47045, + "does": 22437, + "doesn": 45084, + "dog": 9703, + "dogs": 22242, + "doi": 34023, + "doing": 19631, + "dollar": 22569, + "dom": 3438, + "domain": 27830, + "dominated": 34475, + "doms": 23686, + "don": 9099, + "donald": 40915, + "done": 28060, + "door": 9424, + "doors": 19559, + "dor": 40180, + "dos": 37427, + "dose": 34436, + "dot": 26518, + "double": 23352, + "down": 2902, + "download": 15002, + "downs": 30371, + "dozen": 44932, + "dp": 26059, + "dq": 49506, + "dr": 7109, + "dra": 32491, + "draft": 35679, + "dragon": 14844, + "draw": 19334, + "drawn": 41549, + "dream": 25966, + "dress": 49380, + "dri": 7553, + "drive": 19472, + "driven": 15808, + "driver": 26230, + "drivers": 36702, + "driving": 24255, + "drm": 49007, + "dro": 22285, + "drop": 14781, + "dropping": 37554, + "drops": 49253, + "drug": 30349, + "dry": 39140, + "ds": 9310, + "dt": 28664, + "du": 646, + "duc": 6077, + "ducers": 41213, + "duct": 2359, + "duction": 11124, + "due": 23301, + "duino": 24493, + "dule": 5950, + "dullah": 23969, + "dump": 39455, + "duration": 32257, + "during": 42122, + "dust": 48859, + "duty": 26278, + "dx": 34350, + "dy": 9892, + "dyl": 30360, + "dylib": 31739, + "e": 68, + "ea": 18213, + "each": 27379, + "ead": 1329, + "eah": 4617, + "eal": 2287, + "ealing": 26919, + "ealous": 15746, + "eals": 10621, + "ean": 11025, + "eanor": 17663, + "ear": 451, + "earable": 40816, + "earance": 23435, + "earances": 35630, + "earch": 3679, + "earcher": 50194, + "earchers": 16604, + "eared": 3380, + "earing": 6648, + "early": 11458, + "earned": 39123, + "ears": 4127, + "earth": 16442, + "eas": 30412, + "east": 23316, + "easy": 38171, + "eat": 4098, + "eating": 30041, + "eatured": 20980, + "eatures": 11585, + "eaturing": 31347, + "eb": 1765, + "ebin": 23497, + "ebook": 16497, + "ebra": 37052, + "ebted": 35895, + "ebus": 33209, + "ec": 721, + "eca": 31047, + "ecake": 46557, + "ecast": 43299, + "ecause": 3156, + "ecd": 21142, + "ech": 3055, + "eches": 16672, + "echo": 30328, + "ecided": 35503, + "eco": 47704, + "econom": 13926, + "economic": 17079, + "ect": 478, + "ectar": 44504, + "ected": 11197, + "ection": 3213, + "ective": 13967, + "ectomy": 42505, + "ector": 9250, + "ecycle": 47510, + "ed": 276, + "edIn": 20801, + "eda": 18082, + "edar": 44226, + "eday": 23712, + "edd": 6048, + "edded": 47238, + "eddy": 21874, + "ede": 18654, + "eded": 15395, + "eden": 31829, + "eder": 5702, + "ederal": 2110, + "ederation": 9748, + "edes": 37507, + "edge": 14907, + "edged": 48916, + "edi": 13740, + "edia": 5507, + "edience": 20826, + "edient": 35279, + "edin": 27152, + "eding": 8228, + "edit": 19312, + "edited": 42131, + "edition": 28736, + "editor": 35352, + "edly": 49288, + "edo": 24757, + "edom": 3836, + "eds": 5379, + "edu": 15532, + "educ": 18123, + "educated": 27317, + "education": 40796, + "edy": 4716, + "ee": 1453, + "eed": 2308, + "eeds": 39642, + "eeee": 41591, + "eeks": 32201, + "eele": 26213, + "eely": 45269, + "eem": 13761, + "een": 6429, + "eenth": 28117, + "eeper": 41278, + "eer": 28153, + "eering": 48066, + "eers": 47619, + "ees": 2841, + "eez": 33105, + "ef": 891, + "efe": 22521, + "efeated": 36807, + "efer": 41027, + "eff": 14822, + "effect": 10760, + "effective": 16803, + "effects": 34435, + "effic": 24531, + "efficiency": 45888, + "efficient": 16814, + "efficients": 41945, + "efined": 18156, + "eful": 13839, + "efully": 7549, + "eg": 1533, + "ega": 26470, + "egal": 39839, + "eger": 11893, + "egg": 33856, + "egu": 15703, + "eh": 17231, + "ei": 20295, + "eight": 26022, + "either": 31336, + "ek": 988, + "eka": 38001, + "eker": 28233, + "eki": 39548, + "eking": 18754, + "eks": 2573, + "el": 417, + "ela": 10304, + "elaide": 25078, + "eland": 8822, + "elcome": 9571, + "ele": 11129, + "elect": 9509, + "elected": 28604, + "election": 14300, + "electric": 31067, + "eled": 18449, + "element": 30854, + "eless": 5321, + "elf": 7046, + "elfare": 27122, + "elfth": 44659, + "eli": 43733, + "elia": 25418, + "elight": 49984, + "eligible": 31595, + "elin": 27176, + "eline": 4470, + "elines": 20655, + "eling": 10809, + "elist": 46331, + "ell": 695, + "ella": 12627, + "ellar": 14203, + "ellation": 28828, + "elle": 13485, + "ellect": 6879, + "ellectual": 29706, + "elled": 11978, + "ellen": 40635, + "eller": 12368, + "ellery": 41800, + "elli": 23225, + "ellig": 2976, + "elligence": 3480, + "elligent": 32940, + "elling": 9417, + "ello": 11109, + "ellow": 5037, + "ells": 19187, + "elly": 6148, + "elman": 32370, + "eln": 45542, + "elo": 22126, + "elong": 21537, + "elope": 47329, + "els": 1424, + "else": 17772, + "elsen": 25328, + "elsh": 21564, + "elsius": 32495, + "elson": 10151, + "elt": 2120, + "elta": 12514, + "elve": 9954, + "elvet": 32667, + "em": 368, + "ema": 19687, + "emade": 21398, + "email": 12888, + "emaker": 32174, + "emale": 10144, + "eman": 8463, + "emark": 47626, + "emate": 47686, + "emb": 24419, + "embed": 20521, + "embedreportprint": 30898, + "ember": 1491, + "eme": 34755, + "emed": 9006, + "emen": 8952, + "ement": 972, + "ements": 3196, + "emer": 24677, + "emet": 19261, + "emetery": 19785, + "emi": 43967, + "emia": 22859, + "emic": 5314, + "emies": 5090, + "emin": 14857, + "eming": 46564, + "emis": 30561, + "emn": 37705, + "emo": 41903, + "emon": 7966, + "emonic": 50016, + "emonium": 33044, + "emort": 24466, + "emouth": 46880, + "emp": 45787, + "emphasis": 36663, + "empl": 18856, + "employ": 7033, + "employed": 36266, + "employment": 28812, + "emporary": 33080, + "empt": 1791, + "emption": 11221, + "empty": 28920, + "ems": 5232, + "emy": 3065, + "en": 268, + "ena": 8107, + "enable": 21633, + "enabled": 25616, + "ename": 12453, + "enance": 36368, + "enaries": 30216, + "enario": 39055, + "enary": 21629, + "enberg": 23140, + "enburg": 37036, + "enc": 12685, + "ence": 594, + "enced": 5864, + "encer": 12137, + "encers": 42288, + "ences": 3007, + "ench": 24421, + "encia": 29634, + "encies": 3976, + "encing": 9532, + "encrypted": 43628, + "ency": 1387, + "end": 437, + "enda": 7438, + "endale": 41147, + "endant": 23048, + "endants": 30841, + "endar": 9239, + "endars": 44942, + "endas": 35624, + "ende": 38396, + "ended": 1631, + "ender": 2194, + "endered": 30398, + "enders": 7338, + "endez": 41913, + "endi": 43109, + "endiary": 43034, + "endif": 32088, + "ending": 1571, + "endish": 48442, + "endium": 49811, + "endix": 19573, + "endment": 5904, + "endo": 31110, + "endon": 43153, + "endor": 18738, + "endra": 48286, + "ends": 2412, + "endum": 43755, + "ene": 1734, + "ened": 2945, + "eneg": 46495, + "enegger": 44028, + "enei": 46009, + "enemy": 46970, + "ener": 877, + "energy": 22554, + "eners": 36014, + "enery": 24156, + "enes": 18719, + "eness": 9449, + "enez": 11437, + "enezuel": 12596, + "enf": 33701, + "enforcement": 44976, + "enfranch": 39827, + "eng": 1516, + "enge": 3540, + "engeance": 21364, + "enged": 47422, + "enger": 6540, + "engers": 9302, + "enges": 34120, + "engine": 18392, + "engineering": 40321, + "english": 39126, + "ength": 3286, + "engu": 13561, + "enh": 16550, + "enhagen": 30347, + "eni": 43850, + "enic": 35866, + "ening": 3101, + "enium": 47477, + "enko": 32720, + "enment": 23242, + "enn": 1697, + "enna": 13713, + "enne": 29727, + "ennes": 42573, + "ennett": 48151, + "ennial": 27779, + "ennis": 10679, + "enny": 11870, + "eno": 23397, + "enos": 28380, + "enough": 48229, + "ens": 641, + "ensable": 33447, + "ensation": 25742, + "ense": 1072, + "ensed": 15385, + "ensen": 18756, + "enser": 45268, + "enses": 4541, + "ensible": 27339, + "ensibly": 28508, + "ensical": 46165, + "ensing": 26426, + "ension": 3004, + "ensional": 37176, + "ensions": 5736, + "ensis": 37834, + "ensitive": 18464, + "ensitivity": 40545, + "ensity": 6377, + "ensive": 2021, + "enson": 19069, + "ensor": 22854, + "enstein": 37975, + "ensual": 31406, + "ensus": 7314, + "ent": 298, + "enta": 29188, + "ental": 2470, + "entanyl": 41455, + "entary": 48648, + "ente": 21872, + "ented": 4714, + "enter": 9255, + "enth": 7944, + "enthal": 34728, + "ential": 1843, + "entially": 3746, + "entials": 14817, + "entimes": 43598, + "entin": 31371, + "enting": 36589, + "ention": 1463, + "entious": 43787, + "entity": 26858, + "entle": 8651, + "ently": 1473, + "ento": 50217, + "enton": 26673, + "entric": 22317, + "entry": 13000, + "ents": 658, + "enture": 36697, + "enty": 3787, + "enum": 44709, + "env": 24330, + "environment": 38986, + "eny": 28558, + "enz": 19471, + "enza": 23674, + "enzie": 26389, + "eon": 23277, + "eor": 13492, + "eous": 15303, + "ep": 538, + "epad": 47852, + "epend": 2690, + "ependence": 15091, + "ependent": 8682, + "eper": 5723, + "eph": 27446, + "eping": 7213, + "episode": 38668, + "eport": 45813, + "eps": 25386, + "ept": 19598, + "eq": 27363, + "equ": 4853, + "equal": 40496, + "equality": 48203, + "equipped": 40617, + "er": 263, + "era": 8607, + "eral": 1691, + "erala": 33314, + "erald": 12573, + "erate": 21620, + "erb": 23552, + "erc": 2798, + "ercise": 23697, + "erd": 45744, + "ere": 567, + "ered": 1068, + "eredith": 36897, + "eree": 45316, + "erek": 18238, + "erella": 36648, + "eren": 14226, + "erence": 1945, + "erences": 4972, + "erenn": 31915, + "erent": 9100, + "erential": 33369, + "ereo": 32934, + "erer": 11882, + "erers": 19288, + "erest": 1260, + "eret": 31229, + "erey": 48023, + "erg": 6422, + "ergic": 19793, + "ergus": 13607, + "erguson": 14168, + "ergy": 26079, + "eri": 33442, + "eria": 5142, + "erial": 48499, + "eric": 35626, + "erick": 41556, + "erie": 18287, + "eries": 10640, + "ering": 1586, + "erion": 28019, + "erity": 32821, + "erk": 9587, + "erker": 35779, + "erm": 7780, + "erman": 2224, + "ermanent": 30312, + "ermott": 46187, + "ern": 1142, + "ernal": 35220, + "ername": 13292, + "ernand": 13023, + "ernandez": 18092, + "ernaut": 37879, + "ernel": 7948, + "ernels": 44930, + "erness": 17447, + "erning": 8917, + "erno": 24100, + "ero": 3529, + "eros": 27498, + "erous": 48411, + "err": 8056, + "erred": 17436, + "errilla": 31859, + "error": 18224, + "errors": 48277, + "erry": 6996, + "ers": 364, + "ersed": 20204, + "ersen": 46516, + "ership": 49437, + "ersion": 6900, + "ersive": 24469, + "erson": 882, + "ert": 861, + "ertain": 1425, + "ertation": 42245, + "ertility": 27651, + "erto": 13806, + "ertodd": 36481, + "erton": 29111, + "erv": 712, + "erva": 32775, + "ervation": 13208, + "ervative": 22003, + "ervatives": 35291, + "erve": 3760, + "erved": 8520, + "erver": 18497, + "erves": 11184, + "erville": 33487, + "erving": 14344, + "ery": 1924, + "eryl": 44886, + "es": 274, + "esa": 49183, + "esame": 34038, + "esan": 42890, + "esar": 18964, + "esc": 3798, + "escal": 47647, + "escap": 50141, + "escape": 41915, + "escent": 45470, + "escription": 7260, + "ese": 2771, + "esh": 5069, + "esi": 46551, + "esian": 35610, + "esides": 11788, + "esis": 9339, + "esity": 11924, + "esley": 49048, + "esm": 45798, + "esome": 5927, + "eson": 42038, + "esp": 9774, + "especially": 16480, + "espie": 42120, + "esque": 28939, + "ess": 408, + "essa": 21411, + "essage": 7589, + "esse": 35270, + "essed": 6676, + "essee": 10702, + "essel": 7878, + "essen": 44483, + "essential": 31195, + "essert": 20335, + "esses": 44667, + "essim": 30265, + "essing": 27289, + "ession": 2521, + "essional": 12743, + "essions": 6202, + "essler": 33730, + "essment": 21687, + "esson": 39670, + "essor": 5987, + "essors": 23295, + "est": 395, + "esta": 18059, + "establish": 40037, + "established": 27718, + "establishment": 44390, + "estamp": 27823, + "estate": 44146, + "estation": 27364, + "este": 29872, + "estead": 37897, + "ested": 7287, + "esteem": 31869, + "ester": 7834, + "estern": 3330, + "esters": 8586, + "esthes": 29678, + "esthesia": 34811, + "esthetic": 37531, + "estial": 21711, + "estic": 4699, + "estinal": 34284, + "estine": 27374, + "esting": 37761, + "estival": 6743, + "eston": 19115, + "estone": 13631, + "estones": 30637, + "estro": 47692, + "ests": 3558, + "esty": 9673, + "estyle": 10992, + "estyles": 42530, + "esville": 19641, + "esy": 9259, + "et": 316, + "eta": 17167, + "etary": 8527, + "etc": 14784, + "etch": 7569, + "etchup": 47132, + "ete": 14471, + "eteen": 34026, + "eteenth": 26425, + "eter": 2357, + "eteria": 39622, + "etermin": 13221, + "etermination": 29610, + "etermined": 23444, + "eters": 7307, + "eth": 2788, + "ethe": 10567, + "etheless": 12845, + "ether": 6750, + "etheus": 36916, + "ethical": 32949, + "ethnic": 38546, + "ethy": 33077, + "ethyl": 21610, + "ethyst": 44166, + "etic": 5139, + "etically": 16877, + "etics": 14596, + "eties": 31638, + "etime": 8079, + "etimes": 46874, + "eting": 13629, + "etition": 15620, + "etitive": 17295, + "eto": 27206, + "eton": 18483, + "etooth": 16271, + "etr": 21879, + "etric": 19482, + "etrical": 34546, + "etry": 11973, + "ets": 1039, + "etsk": 29515, + "etsu": 30470, + "etsy": 34877, + "ett": 3087, + "etta": 15253, + "ette": 5857, + "ettel": 47417, + "etter": 40088, + "ettes": 23014, + "etti": 24851, + "etting": 35463, + "ettings": 12374, + "ettle": 23570, + "ettlement": 27331, + "etts": 9357, + "etus": 29158, + "ety": 2963, + "etz": 23773, + "eu": 12496, + "eur": 23365, + "euro": 44252, + "eus": 27650, + "ev": 1990, + "eva": 48855, + "eval": 18206, + "evaluate": 49786, + "eve": 44655, + "even": 10197, + "event": 15596, + "events": 31534, + "ever": 964, + "everal": 8438, + "every": 16833, + "everyone": 47057, + "everything": 37814, + "evidence": 46817, + "evil": 23542, + "evin": 6830, + "ew": 413, + "eware": 29725, + "ewater": 21422, + "eway": 16172, + "eways": 43613, + "ewitness": 28588, + "ework": 6433, + "eworks": 19653, + "eworld": 38136, + "eworthy": 25969, + "ews": 15515, + "ewski": 46151, + "ex": 1069, + "examination": 47779, + "example": 20688, + "exc": 41194, + "except": 16341, + "excluding": 42218, + "exclusive": 41195, + "exe": 13499, + "exec": 18558, + "execute": 41049, + "exempt": 42679, + "exist": 38476, + "existence": 41084, + "existent": 32786, + "existing": 25687, + "exit": 37023, + "exp": 11201, + "expected": 40319, + "expensive": 22031, + "exper": 23100, + "expl": 20676, + "export": 39344, + "expr": 31937, + "express": 42712, + "expression": 38011, + "ext": 2302, + "external": 22615, + "externalActionCode": 31576, + "extra": 26086, + "extreme": 29896, + "extremely": 41073, + "ey": 2959, + "eye": 25379, + "eyed": 18834, + "eyes": 48418, + "ez": 8471, + "ezvous": 50063, + "f": 69, + "fa": 13331, + "fab": 36434, + "fac": 38942, + "face": 2550, + "facebook": 19024, + "faced": 24903, + "faces": 32186, + "facing": 29532, + "fact": 22584, + "factor": 31412, + "facts": 37473, + "fail": 32165, + "failed": 47904, + "fair": 22043, + "faith": 41751, + "fake": 30706, + "fal": 42932, + "fall": 7207, + "falls": 23348, + "false": 9562, + "fam": 44769, + "family": 17989, + "famous": 45143, + "fan": 24408, + "far": 16370, + "fare": 9496, + "farious": 41504, + "farm": 43323, + "fascist": 46928, + "fashion": 25265, + "fashioned": 28776, + "fast": 7217, + "fat": 17359, + "father": 11358, + "favorite": 35200, + "fax": 23560, + "fb": 21855, + "fc": 16072, + "fd": 16344, + "fe": 5036, + "feat": 27594, + "feature": 30053, + "features": 40890, + "fect": 2309, + "fecture": 36637, + "fed": 19082, + "fee": 39071, + "feed": 12363, + "feeding": 22824, + "feel": 36410, + "feet": 39690, + "feld": 16265, + "fell": 23299, + "felt": 31985, + "female": 24724, + "femin": 33594, + "fen": 41037, + "fer": 2232, + "ference": 4288, + "ferred": 18186, + "fest": 23411, + "fet": 34045, + "fetched": 50012, + "few": 32146, + "ff": 487, + "ffe": 16658, + "ffect": 4812, + "ffee": 5853, + "ffen": 46985, + "ffer": 36761, + "fff": 20972, + "ffff": 12927, + "ffic": 2108, + "fficiency": 35590, + "fficient": 5632, + "ffield": 31374, + "ffiti": 25198, + "fg": 40616, + "fi": 12463, + "fiction": 24046, + "field": 3245, + "fields": 25747, + "fif": 32041, + "fifth": 43556, + "fig": 5647, + "fight": 15481, + "fighter": 24733, + "fighters": 17114, + "fighting": 26594, + "fights": 50121, + "figure": 26875, + "figured": 46296, + "fil": 10379, + "file": 7753, + "filename": 34345, + "files": 16624, + "fill": 20797, + "filled": 20286, + "film": 26240, + "filter": 24455, + "fin": 15643, + "final": 20311, + "finals": 32089, + "financial": 46921, + "find": 19796, + "finder": 22805, + "finding": 41070, + "fine": 38125, + "fing": 28825, + "finger": 35461, + "finished": 43952, + "fire": 6495, + "fired": 26803, + "fires": 27312, + "first": 11085, + "fish": 11084, + "fit": 11147, + "fits": 21013, + "fitted": 38631, + "fitting": 32232, + "five": 13261, + "fix": 13049, + "fixed": 34021, + "fixes": 42624, + "fl": 2704, + "flag": 32109, + "flags": 33152, + "flake": 47597, + "flame": 49621, + "flash": 34167, + "flat": 38568, + "flation": 33521, + "fle": 27919, + "fledged": 45223, + "fleet": 33559, + "flex": 32880, + "flies": 27959, + "flight": 22560, + "flix": 10046, + "flo": 48679, + "float": 22468, + "floor": 28300, + "flow": 11125, + "flower": 25547, + "flows": 44041, + "flu": 35522, + "flush": 25925, + "fly": 12254, + "flying": 45928, + "fm": 38353, + "fman": 35826, + "fml": 38122, + "fn": 22184, + "fo": 6513, + "focus": 37635, + "focused": 18143, + "fol": 9062, + "fold": 11379, + "folder": 43551, + "folio": 13652, + "folios": 45242, + "folk": 19956, + "follow": 27780, + "font": 10331, + "foo": 21943, + "food": 19425, + "foot": 5898, + "football": 15914, + "footed": 43127, + "for": 1640, + "force": 3174, + "forced": 12072, + "forcement": 13442, + "forcer": 45515, + "forces": 27087, + "forcing": 18766, + "ford": 3841, + "fore": 754, + "foreign": 38823, + "foreseen": 44952, + "forest": 29623, + "forestation": 41570, + "forge": 30293, + "fork": 32523, + "form": 687, + "formance": 10367, + "format": 18982, + "formation": 1161, + "formed": 12214, + "former": 16354, + "formerly": 36234, + "forming": 15464, + "forms": 23914, + "fort": 3319, + "fortable": 12065, + "forth": 25718, + "forts": 47378, + "fortunately": 6668, + "fortune": 37359, + "forum": 27302, + "forums": 37141, + "forward": 11813, + "found": 9275, + "foundation": 42526, + "founded": 27060, + "founder": 15454, + "foundland": 42030, + "four": 14337, + "fourth": 49393, + "fox": 12792, + "fp": 46428, + "fps": 29647, + "fr": 8310, + "frac": 31944, + "fram": 19298, + "frame": 14535, + "frames": 37805, + "framework": 30604, + "fre": 19503, + "fred": 39193, + "free": 5787, + "freedom": 41295, + "frequency": 35324, + "fresh": 48797, + "frey": 37425, + "fried": 25520, + "friend": 6726, + "friendly": 13120, + "friends": 36154, + "frog": 49956, + "from": 6738, + "front": 8534, + "fruit": 34711, + "fs": 9501, + "ft": 701, + "ften": 14785, + "fter": 637, + "fters": 47131, + "ftime": 31387, + "fts": 35594, + "fty": 19628, + "fu": 20942, + "fuck": 31699, + "fuel": 25802, + "ful": 913, + "full": 12853, + "fully": 2759, + "fulness": 15538, + "fun": 12543, + "func": 20786, + "function": 8818, + "functional": 45124, + "fund": 10990, + "funded": 18246, + "funding": 25032, + "fur": 38916, + "furt": 29205, + "fusc": 37695, + "future": 37443, + "fw": 44482, + "fx": 21373, + "fy": 24928, + "g": 70, + "ga": 4908, + "gaard": 36232, + "gado": 50054, + "gae": 25002, + "gage": 10502, + "gain": 48544, + "gal": 13528, + "galitarian": 39907, + "gall": 39580, + "gallery": 24460, + "gam": 28483, + "game": 6057, + "gamer": 36515, + "games": 19966, + "gaming": 48616, + "gan": 1030, + "gang": 28284, + "gans": 39352, + "gap": 43554, + "gar": 4563, + "gard": 19977, + "gars": 25821, + "gart": 41651, + "gary": 14849, + "gas": 22649, + "gat": 41268, + "gate": 10494, + "gay": 22744, + "gb": 22296, + "gc": 36484, + "gd": 21287, + "gdala": 40420, + "ge": 469, + "geant": 30205, + "gear": 31763, + "gebra": 29230, + "ged": 2004, + "gee": 29622, + "geist": 49782, + "gel": 25280, + "gem": 24090, + "gement": 16025, + "gements": 43547, + "gemony": 38953, + "gen": 5235, + "gence": 12745, + "gencies": 33333, + "gency": 4949, + "gender": 8388, + "gener": 8612, + "general": 24622, + "generated": 27568, + "generation": 20158, + "generic": 41357, + "genic": 38516, + "genre": 35850, + "gent": 6783, + "gently": 34727, + "geon": 6281, + "geoning": 31614, + "geons": 16297, + "ger": 1362, + "gerald": 26941, + "gered": 10446, + "geries": 30230, + "gers": 5355, + "gery": 7076, + "ges": 3212, + "gest": 3495, + "get": 1136, + "getic": 24321, + "gets": 11407, + "gettable": 42182, + "getting": 37210, + "gew": 39909, + "gewater": 40843, + "gex": 25636, + "gey": 39608, + "gg": 1130, + "gged": 11178, + "gger": 26679, + "ggie": 23571, + "ggies": 33049, + "gging": 18792, + "ggle": 16444, + "ggles": 32723, + "ggy": 19970, + "gh": 456, + "gha": 46090, + "ghai": 20380, + "ghan": 6064, + "ghazi": 21775, + "ghost": 38933, + "gi": 12397, + "gian": 18299, + "gie": 22699, + "giene": 28363, + "gif": 27908, + "gil": 37718, + "gin": 1655, + "ging": 2667, + "gins": 29878, + "ginx": 42822, + "gio": 27769, + "girl": 15219, + "girlfriend": 45189, + "girls": 36960, + "git": 18300, + "github": 12567, + "give": 26535, + "given": 35569, + "giving": 13992, + "gl": 4743, + "glas": 14391, + "glass": 20721, + "glers": 33641, + "gling": 40799, + "global": 20541, + "glomer": 37757, + "gly": 10853, + "gm": 39870, + "gmail": 14816, + "gment": 5154, + "gments": 11726, + "gn": 4593, + "gnu": 41791, + "go": 2188, + "goal": 35231, + "gob": 44270, + "god": 25344, + "goers": 31006, + "going": 5146, + "gold": 24267, + "gom": 19120, + "gomery": 20142, + "gon": 14520, + "gone": 21260, + "goo": 42469, + "good": 11274, + "google": 13297, + "gor": 7053, + "gorith": 7727, + "gorithm": 42289, + "got": 23442, + "gotten": 21646, + "gov": 9567, + "govern": 47866, + "government": 14480, + "governmental": 31353, + "govtrack": 41230, + "gow": 21175, + "gp": 31197, + "gpu": 46999, + "gr": 2164, + "gra": 46784, + "grab": 32393, + "grad": 9744, + "gradation": 26317, + "grade": 9526, + "graded": 21791, + "grades": 31177, + "gradient": 49607, + "grading": 29247, + "graduate": 17680, + "grain": 48270, + "gram": 4546, + "gran": 46324, + "grand": 23936, + "graph": 34960, + "grass": 29815, + "grave": 41711, + "gravity": 46453, + "gray": 44605, + "gre": 16694, + "greSQL": 47701, + "great": 18223, + "green": 14809, + "greg": 9903, + "gregation": 17097, + "gren": 32762, + "gres": 34239, + "gress": 5914, + "gression": 32383, + "gressive": 19741, + "grey": 49502, + "grid": 25928, + "grim": 33563, + "gro": 27333, + "gross": 47181, + "ground": 2833, + "grounds": 40520, + "group": 8094, + "groupon": 14531, + "groups": 24432, + "grow": 45921, + "growing": 25167, + "grown": 22377, + "growth": 27922, + "gru": 48929, + "gs": 14542, + "gt": 13655, + "gu": 5162, + "guard": 14864, + "guards": 33427, + "gue": 18701, + "gui": 48317, + "guide": 41311, + "guided": 23657, + "gun": 7145, + "guns": 44265, + "gur": 45073, + "guy": 22932, + "guyen": 39922, + "gy": 1360, + "gyn": 40183, + "gypt": 6022, + "gz": 34586, + "h": 71, + "ha": 3099, + "haar": 42948, + "hab": 5976, + "habi": 37362, + "hack": 31153, + "had": 18108, + "hai": 44488, + "hair": 27108, + "haired": 29972, + "hak": 43573, + "hal": 14201, + "half": 13959, + "hall": 18323, + "halla": 41911, + "ham": 2763, + "hammad": 14875, + "hammer": 17980, + "han": 7637, + "hand": 4993, + "handed": 13638, + "handedly": 43919, + "hander": 44510, + "handle": 28144, + "handled": 38788, + "handler": 30281, + "hands": 43365, + "hang": 33255, + "hani": 29839, + "hao": 23778, + "hap": 45897, + "happy": 34191, + "haps": 2772, + "har": 9869, + "hard": 10424, + "hardt": 28375, + "hare": 43466, + "hari": 49573, + "harm": 29155, + "hart": 18647, + "has": 10134, + "hash": 17831, + "hat": 5183, + "hate": 37035, + "hatt": 11653, + "hattan": 12904, + "haul": 15194, + "haus": 30404, + "haust": 42456, + "have": 14150, + "haven": 39487, + "having": 40965, + "haw": 26615, + "hawk": 40624, + "hawks": 27221, + "hazard": 37598, + "hd": 31298, + "he": 258, + "hea": 21632, + "head": 2256, + "headed": 15353, + "header": 25677, + "headers": 50145, + "heading": 33878, + "heads": 16600, + "health": 13948, + "healthy": 22796, + "heard": 23636, + "heart": 11499, + "hearted": 20122, + "heartedly": 44407, + "heast": 9522, + "heastern": 18160, + "heat": 25080, + "heavy": 23701, + "hed": 704, + "heddar": 44937, + "hedon": 46086, + "hedral": 21962, + "hee": 21067, + "heed": 23616, + "heet": 25473, + "hei": 27392, + "heid": 28420, + "height": 17015, + "heim": 9096, + "heimer": 16288, + "heit": 29361, + "hel": 2978, + "held": 10217, + "helial": 35566, + "hell": 12758, + "helle": 34454, + "hello": 31373, + "helm": 33485, + "help": 16794, + "helps": 35194, + "hem": 4411, + "hemat": 10024, + "hematic": 23380, + "hematically": 46558, + "hement": 35347, + "hemer": 39557, + "hemoth": 34394, + "hemy": 36598, + "hen": 831, + "hend": 15631, + "hene": 29473, + "heng": 31753, + "henko": 30161, + "hens": 5135, + "hent": 6925, + "heny": 47413, + "heon": 37060, + "her": 372, + "here": 1456, + "hered": 6083, + "herence": 23545, + "herent": 8334, + "herer": 48386, + "heres": 19079, + "heric": 15011, + "herical": 37910, + "hern": 2881, + "hero": 11718, + "herry": 13372, + "hers": 7084, + "herty": 29029, + "hes": 956, + "hesda": 30049, + "heses": 39815, + "hesion": 32582, + "hesis": 8497, + "hesive": 25938, + "hess": 33979, + "hest": 3634, + "hester": 19593, + "het": 3202, + "hetamine": 25385, + "heter": 43332, + "hetic": 6587, + "hetical": 21485, + "hetically": 31786, + "hetics": 24965, + "hett": 17442, + "hetti": 33392, + "hetto": 35619, + "hew": 6391, + "hews": 40645, + "hex": 33095, + "hey": 20342, + "hh": 12337, + "hhh": 49126, + "hhhh": 36607, + "hi": 5303, + "hib": 3145, + "hiba": 49224, + "hibit": 26964, + "hibited": 44139, + "hibition": 24108, + "hid": 49675, + "hidden": 30342, + "hide": 24717, + "hift": 29323, + "hig": 25196, + "high": 8929, + "higher": 46503, + "highest": 35323, + "highly": 47444, + "hill": 12639, + "hillary": 47826, + "him": 38400, + "hin": 20079, + "hing": 722, + "hip": 1056, + "hips": 5748, + "hire": 10695, + "hiro": 49907, + "hirt": 49756, + "his": 14363, + "hist": 10034, + "historic": 31304, + "history": 23569, + "hit": 17945, + "hitting": 48320, + "hl": 18519, + "hler": 49737, + "hm": 23940, + "hma": 21720, + "hn": 21116, + "hner": 22277, + "ho": 8873, + "hod": 2065, + "hoe": 38979, + "hof": 39891, + "hoff": 36092, + "hog": 31897, + "hol": 3937, + "hold": 2946, + "holder": 13829, + "holders": 10476, + "holding": 19216, + "hole": 13207, + "holes": 28439, + "holiday": 37689, + "holm": 22981, + "holy": 44287, + "hom": 26452, + "home": 11195, + "hon": 24130, + "hood": 2894, + "hook": 25480, + "hooting": 35486, + "hop": 8548, + "hops": 21936, + "hor": 17899, + "horn": 25311, + "horse": 30527, + "hospital": 49257, + "host": 4774, + "hot": 8940, + "hots": 17398, + "hou": 15710, + "houn": 47714, + "hound": 39047, + "hour": 9769, + "hours": 24425, + "house": 4803, + "houses": 20089, + "housing": 50028, + "hov": 28026, + "hovah": 33023, + "hover": 43753, + "how": 4919, + "hower": 33539, + "hp": 24831, + "hr": 11840, + "hra": 45056, + "hran": 16848, + "href": 33257, + "hs": 11994, + "ht": 4352, + "htaking": 34148, + "htar": 38672, + "htm": 19211, + "html": 6494, + "htt": 2804, + "http": 4023, + "https": 5450, + "hu": 13415, + "hua": 33061, + "hub": 40140, + "huge": 40878, + "hum": 17047, + "human": 10734, + "humane": 44766, + "humans": 40205, + "hun": 20088, + "hung": 43274, + "hunt": 35060, + "hunter": 37488, + "hur": 48349, + "hurst": 33500, + "hus": 7537, + "husband": 48912, + "hw": 36599, + "hy": 12114, + "hya": 48812, + "hyd": 15511, + "hyde": 39175, + "hyp": 36362, + "hyper": 49229, + "hz": 32179, + "i": 72, + "iHUD": 38370, + "iOS": 35742, + "iPhone": 37032, + "ia": 544, + "iability": 12455, + "iable": 3379, + "iably": 18745, + "iac": 9607, + "iae": 33100, + "iage": 42360, + "iago": 29601, + "iah": 9520, + "iak": 32994, + "ial": 498, + "ially": 1927, + "ials": 8231, + "iam": 1789, + "iameter": 13173, + "iami": 7871, + "iamond": 8446, + "ian": 666, + "iana": 7484, + "iance": 3610, + "iances": 16097, + "iane": 46470, + "iang": 15483, + "iani": 25111, + "iann": 28627, + "iannopoulos": 36408, + "iano": 10115, + "ians": 1547, + "iant": 3014, + "iants": 17883, + "iao": 13481, + "iar": 12571, + "iard": 42425, + "iaries": 18361, + "iary": 8042, + "ias": 4448, + "iasco": 40025, + "iasis": 48455, + "iasm": 16401, + "iat": 5375, + "iate": 9386, + "iated": 12931, + "iates": 32820, + "iating": 26336, + "iation": 3920, + "iations": 40356, + "iator": 38585, + "iatric": 11439, + "iatrics": 36549, + "iatures": 42711, + "iatus": 34704, + "iaz": 17890, + "iazep": 48826, + "ib": 571, + "iba": 23718, + "ibaba": 37541, + "ibal": 21342, + "iban": 14278, + "iband": 35967, + "ibble": 43992, + "ibe": 32438, + "ibel": 43837, + "iber": 1856, + "iberal": 16813, + "ibi": 27567, + "ibia": 41145, + "ibilities": 7992, + "ibility": 2247, + "ibl": 10506, + "ible": 856, + "ibles": 18764, + "ibli": 29142, + "iblical": 16897, + "ibling": 27448, + "iblings": 19389, + "ibliography": 45689, + "ibly": 3193, + "ibo": 26762, + "ibr": 2889, + "ibrarian": 35808, + "ibraries": 11127, + "ibrary": 4115, + "ibu": 33828, + "ibur": 38616, + "ibus": 26333, + "ic": 291, + "ica": 3970, + "icable": 18424, + "icably": 41685, + "icago": 4549, + "ical": 605, + "ically": 1146, + "icals": 20155, + "ican": 7490, + "icans": 22398, + "icas": 44645, + "icate": 5344, + "icated": 3474, + "icates": 16856, + "icating": 12364, + "ication": 3299, + "ications": 3736, + "icative": 43058, + "icator": 26407, + "icators": 44549, + "icc": 44240, + "ice": 501, + "iced": 3711, + "icent": 36712, + "iceps": 41663, + "icer": 16647, + "ices": 1063, + "icester": 26382, + "ich": 488, + "ichael": 40302, + "iche": 14234, + "ichen": 41437, + "ichever": 22617, + "ichi": 16590, + "ichick": 38448, + "ichita": 41940, + "icho": 38720, + "icht": 30830, + "ici": 44070, + "icia": 33577, + "icial": 6652, + "ician": 6749, + "icians": 5106, + "iciary": 13556, + "icidal": 21488, + "icide": 5285, + "icides": 16751, + "iciency": 19777, + "icient": 11373, + "icing": 6345, + "icio": 46441, + "icion": 47430, + "icious": 6243, + "icip": 4311, + "icipated": 40988, + "icism": 11965, + "icist": 48187, + "icit": 3628, + "icity": 8467, + "ick": 624, + "icka": 29873, + "icked": 9484, + "icken": 5973, + "icker": 15799, + "ickers": 21630, + "icket": 9715, + "ickets": 15970, + "ickey": 40389, + "icking": 7958, + "ickle": 39423, + "ickr": 18994, + "icks": 3378, + "ickson": 46381, + "icky": 17479, + "icle": 1548, + "icles": 2983, + "ico": 3713, + "icol": 27045, + "icon": 4749, + "icone": 27981, + "icons": 34280, + "icro": 2500, + "icrobial": 48518, + "ics": 873, + "ict": 713, + "icted": 5722, + "icter": 36278, + "iction": 2867, + "ictional": 47273, + "ictionary": 14188, + "ictions": 9278, + "ictive": 45279, + "icts": 14137, + "icular": 13174, + "icularly": 22585, + "icult": 2249, + "icultural": 26823, + "iculture": 47428, + "iculty": 22402, + "icum": 39901, + "icus": 24552, + "icut": 13554, + "icy": 4611, + "icycle": 35298, + "icz": 28051, + "id": 312, + "ida": 3755, + "idable": 23321, + "idad": 32482, + "idae": 31718, + "idal": 11624, + "idan": 27610, + "idas": 24496, + "idate": 20540, + "idated": 41475, + "idates": 37051, + "idation": 24765, + "idav": 20331, + "iday": 2567, + "idays": 13842, + "idd": 1638, + "idden": 4651, + "idding": 13494, + "iddle": 2509, + "iddled": 34897, + "iddler": 26458, + "iddles": 29319, + "iddling": 41367, + "iddy": 34208, + "ide": 485, + "ided": 1384, + "idel": 5943, + "idelines": 7984, + "idelity": 23091, + "idem": 28913, + "iden": 14029, + "idence": 1704, + "idences": 44845, + "idency": 9147, + "ident": 738, + "idental": 35182, + "identally": 23961, + "idential": 35599, + "identified": 19107, + "idently": 46046, + "idents": 3231, + "ideo": 1651, + "ideon": 42381, + "ideos": 4921, + "idepress": 25895, + "ider": 1304, + "idered": 3089, + "iders": 4157, + "ides": 1460, + "ideshow": 42286, + "idespread": 9790, + "idge": 3130, + "idges": 15969, + "idget": 17484, + "idi": 19830, + "idia": 38513, + "idian": 19825, + "idine": 39422, + "iding": 2530, + "idious": 33243, + "idis": 29207, + "idity": 17995, + "idium": 43523, + "ido": 17305, + "idon": 47287, + "ids": 2340, + "idth": 5649, + "idy": 19325, + "ie": 494, + "iece": 8535, + "ied": 798, + "ief": 2086, + "ieft": 49868, + "ieg": 15702, + "iege": 14566, + "iegel": 28210, + "iel": 8207, + "ield": 1164, + "ielding": 30449, + "iem": 26597, + "ien": 2013, + "ience": 1240, + "ienced": 26343, + "iences": 10035, + "iencies": 22139, + "iency": 6160, + "ienne": 37938, + "iens": 10465, + "ient": 1153, + "ients": 2334, + "ier": 959, + "iera": 41976, + "ierce": 9798, + "iere": 13235, + "ieri": 29864, + "ierra": 16367, + "ierre": 31058, + "ierrez": 44448, + "iers": 3183, + "iership": 36689, + "iery": 23012, + "ies": 444, + "iesel": 29893, + "iest": 6386, + "iesta": 36283, + "iet": 1155, + "ietal": 21587, + "ieth": 19235, + "ieties": 9545, + "iets": 27955, + "iety": 1905, + "ieu": 22304, + "iev": 11203, + "ieval": 14671, + "ieve": 12311, + "ieved": 39591, + "iever": 47818, + "ievers": 30296, + "ieves": 17974, + "ieving": 30749, + "iew": 769, + "iewicz": 48596, + "if": 361, + "ifa": 19215, + "ifact": 29660, + "ifacts": 37199, + "ifax": 26590, + "ife": 901, + "ifer": 7087, + "iferation": 49801, + "ifest": 8409, + "ifestyle": 42004, + "iff": 733, + "iffe": 22391, + "ifference": 33012, + "ifferent": 17125, + "iffin": 42022, + "iffs": 10203, + "ifi": 22238, + "ifiable": 16823, + "ific": 811, + "ificant": 17294, + "ificantly": 42491, + "ificate": 22460, + "ification": 2649, + "ifications": 6637, + "ifice": 9680, + "ificent": 21559, + "ificial": 9542, + "ified": 1431, + "ifier": 7483, + "ifiers": 13350, + "ifies": 6945, + "ifix": 42169, + "ifle": 8316, + "ifled": 47157, + "ifles": 16063, + "ifling": 38966, + "iflower": 42642, + "iform": 6933, + "iframe": 39621, + "ift": 2135, + "ifted": 21715, + "ifter": 18171, + "ifting": 13309, + "ifts": 19265, + "ifty": 24905, + "iful": 4135, + "ifully": 17049, + "ify": 1958, + "ifying": 4035, + "ig": 328, + "iga": 13827, + "igan": 5516, + "igans": 34090, + "igate": 10055, + "igated": 26963, + "igating": 29129, + "igation": 7065, + "igator": 23823, + "igators": 25975, + "ige": 10045, + "igel": 47709, + "igen": 9324, + "igenous": 12357, + "igent": 47096, + "iger": 8254, + "igers": 34984, + "igg": 6950, + "igger": 15249, + "iggins": 23567, + "iggle": 24082, + "iggs": 20340, + "iggurat": 44557, + "igh": 394, + "igham": 34000, + "ighed": 12570, + "ight": 432, + "ighter": 4799, + "ighters": 6261, + "ighth": 10887, + "ighthouse": 32303, + "ighting": 47610, + "ighton": 42993, + "ights": 2337, + "ighty": 14400, + "igi": 25754, + "igible": 26032, + "igil": 27187, + "igion": 17035, + "igious": 10956, + "igl": 38686, + "igm": 17225, + "igma": 13495, + "igmat": 32441, + "igmatic": 38860, + "ign": 570, + "ignant": 25114, + "igne": 48946, + "igned": 3916, + "igning": 38944, + "ignment": 16747, + "ignore": 46430, + "ignt": 16891, + "ignty": 17224, + "igo": 14031, + "igon": 37107, + "igor": 36274, + "igr": 3692, + "igrant": 9893, + "igrants": 5663, + "igraph": 45920, + "igrate": 42175, + "igrated": 38769, + "igration": 4254, + "igree": 41233, + "igroup": 47875, + "igs": 9235, + "igsaw": 45636, + "igslist": 40704, + "igue": 15212, + "igun": 50118, + "iguous": 29709, + "igure": 7047, + "ih": 4449, + "ihad": 11166, + "ihadi": 42449, + "ihar": 38405, + "ihara": 45902, + "ihil": 20898, + "ihilation": 33299, + "ihu": 48406, + "ii": 4178, + "iii": 15479, + "ij": 2926, + "ija": 34655, + "ijah": 32778, + "iji": 20770, + "ijing": 11030, + "ijk": 45961, + "ijn": 48848, + "ijuana": 5343, + "ik": 1134, + "ika": 9232, + "ikan": 49894, + "ikarp": 36850, + "ikawa": 40398, + "ike": 522, + "iked": 17951, + "iken": 29943, + "iker": 18320, + "ikers": 24913, + "ikes": 7938, + "ikh": 13848, + "ikhail": 39065, + "iki": 5580, + "iking": 14132, + "ikini": 35542, + "ikk": 36073, + "iko": 12125, + "iku": 28643, + "ikuman": 42889, + "iky": 47536, + "il": 346, + "ila": 10102, + "ilage": 50006, + "ilan": 38239, + "iland": 40855, + "ilant": 37794, + "ilantro": 48311, + "ilar": 1794, + "ilated": 40080, + "ilater": 38601, + "ilateral": 14796, + "ilaterally": 39707, + "ilation": 10520, + "ild": 688, + "ilda": 27281, + "ilde": 44725, + "ilded": 46158, + "ildo": 39583, + "ile": 576, + "ileaks": 27983, + "iled": 3902, + "ilee": 40626, + "ileen": 42236, + "ilege": 41866, + "ileged": 48446, + "iler": 5329, + "ilers": 34393, + "iles": 2915, + "iless": 30608, + "ilet": 41550, + "iley": 9618, + "ili": 2403, + "ilia": 17517, + "ilial": 43475, + "ilian": 35824, + "iliar": 4797, + "iliary": 28129, + "iliate": 49826, + "iliated": 31705, + "iliation": 15547, + "ilib": 22282, + "ilibrium": 24741, + "ilic": 41896, + "ilies": 3922, + "ilight": 15512, + "iling": 4386, + "ilings": 43271, + "ilingual": 34900, + "ilion": 29935, + "ilipp": 8908, + "ilit": 6392, + "ilitarian": 43900, + "ilitary": 18748, + "ilitating": 34871, + "ilitation": 18194, + "ilities": 2410, + "ility": 879, + "ilk": 43545, + "ill": 359, + "illa": 5049, + "illac": 40607, + "illance": 7682, + "illard": 32681, + "illary": 15856, + "illas": 25314, + "illation": 40903, + "ille": 8270, + "illed": 2967, + "illegal": 47749, + "iller": 4665, + "illery": 14920, + "illes": 21718, + "illet": 32512, + "illi": 50173, + "illian": 37896, + "illin": 32672, + "illing": 4509, + "illion": 1131, + "illions": 40083, + "illo": 16111, + "illon": 23027, + "ills": 2171, + "illus": 44342, + "illusion": 35760, + "illy": 6548, + "ilo": 18526, + "ilogy": 19202, + "ilon": 33576, + "ilot": 23439, + "ils": 4487, + "ilst": 11750, + "ilt": 2326, + "ilton": 9044, + "iltr": 19438, + "iltration": 36055, + "ilts": 50076, + "ilty": 6267, + "ilus": 35815, + "ilver": 46978, + "ily": 813, + "ilyn": 38020, + "im": 320, + "ima": 8083, + "imag": 48466, + "image": 9060, + "images": 17566, + "imal": 4402, + "iman": 24086, + "imar": 49399, + "imaru": 49551, + "imate": 1920, + "imated": 15655, + "imately": 3358, + "imates": 26748, + "imating": 39204, + "imation": 18991, + "imb": 14107, + "imbabwe": 27175, + "imble": 34477, + "ime": 524, + "imedia": 20626, + "imei": 45519, + "imen": 19027, + "imens": 12117, + "imensional": 16198, + "iment": 3681, + "imental": 9134, + "imentary": 39051, + "iments": 6800, + "imeo": 47776, + "imer": 22723, + "imes": 999, + "imester": 47484, + "imet": 38813, + "imeter": 16912, + "imeters": 31551, + "img": 9600, + "imgur": 19791, + "imi": 25236, + "imil": 26641, + "imilar": 49941, + "imilation": 42963, + "iminary": 38429, + "imir": 13057, + "imity": 18853, + "imize": 48439, + "imm": 8608, + "immer": 10957, + "immers": 36904, + "immigrant": 39835, + "immigration": 47620, + "imming": 27428, + "immune": 38345, + "imo": 25147, + "imon": 20473, + "imony": 33969, + "imore": 9401, + "imoto": 43354, + "imov": 44273, + "imp": 11011, + "impact": 48240, + "impl": 23928, + "import": 11748, + "important": 18049, + "imposed": 36457, + "impro": 32077, + "improve": 49453, + "ims": 12078, + "imsy": 48295, + "imum": 2847, + "imura": 43817, + "imus": 20704, + "in": 259, + "ina": 1437, + "inal": 1292, + "inally": 3289, + "inals": 6897, + "inance": 14149, + "inances": 34999, + "inant": 42483, + "inar": 22050, + "inarily": 21565, + "inary": 3219, + "inas": 24252, + "inate": 4559, + "inated": 3898, + "inately": 48618, + "inates": 17540, + "inating": 6010, + "ination": 1883, + "inational": 26201, + "inations": 7352, + "inator": 20900, + "inators": 47721, + "inatory": 23132, + "inav": 26802, + "inburgh": 22222, + "inc": 1939, + "incarn": 13211, + "ince": 924, + "incent": 42816, + "incerity": 40310, + "inces": 17386, + "inch": 8589, + "inches": 45457, + "incial": 13744, + "incible": 33494, + "incinn": 15020, + "incinnati": 15130, + "include": 17256, + "includes": 42813, + "including": 8201, + "incoln": 11690, + "income": 12519, + "incre": 24988, + "increasing": 42647, + "inct": 4612, + "inction": 9438, + "inctions": 31253, + "ind": 521, + "inda": 22261, + "indal": 44644, + "independence": 39894, + "independent": 34750, + "inder": 5540, + "inders": 29700, + "index": 9630, + "inding": 6020, + "individual": 43129, + "indle": 42343, + "indu": 10259, + "induced": 17223, + "inducing": 48016, + "indust": 23213, + "industrial": 31130, + "ine": 500, + "inea": 18343, + "ined": 1389, + "inel": 20538, + "inelli": 44076, + "inem": 7749, + "inement": 21828, + "inen": 42326, + "inence": 18386, + "inent": 7233, + "inently": 26528, + "iner": 7274, + "ineries": 48858, + "iners": 21257, + "inery": 15451, + "ines": 1127, + "inese": 3762, + "iness": 1272, + "inet": 42504, + "inez": 18885, + "inf": 10745, + "infect": 27816, + "infeld": 47187, + "inflamm": 29639, + "inflammatory": 32272, + "info": 10951, + "information": 17018, + "informed": 35698, + "ing": 278, + "inge": 11912, + "inged": 24431, + "ingen": 36795, + "inger": 3889, + "ingers": 40923, + "inges": 26792, + "ingham": 25875, + "inging": 14146, + "ingle": 17697, + "ingly": 4420, + "ingo": 32735, + "ings": 654, + "ington": 9557, + "ingu": 6680, + "inguishable": 41726, + "inguished": 46709, + "inho": 20327, + "ini": 5362, + "inia": 43168, + "inian": 24605, + "inic": 47277, + "inical": 32352, + "ining": 3191, + "inion": 23971, + "inis": 16661, + "inished": 30603, + "init": 15003, + "inite": 9504, + "initely": 12998, + "initial": 36733, + "initialized": 17532, + "inition": 17750, + "initions": 50101, + "inity": 6269, + "ink": 676, + "inka": 48955, + "inker": 24275, + "inki": 38799, + "inking": 8040, + "inkle": 19894, + "inks": 2973, + "inky": 29246, + "inline": 45145, + "inn": 3732, + "innacle": 37087, + "innamon": 21920, + "inner": 5083, + "inness": 32990, + "innie": 49708, + "inning": 23062, + "innon": 45067, + "ino": 2879, + "inoa": 40564, + "inois": 8981, + "inos": 11996, + "inosaur": 21317, + "inous": 29823, + "input": 15414, + "inqu": 18934, + "ins": 1040, + "inse": 38521, + "insert": 28463, + "inside": 48787, + "insk": 35803, + "inski": 21141, + "insky": 19870, + "inson": 7899, + "inspired": 24194, + "inst": 8625, + "install": 17350, + "installed": 37050, + "instance": 39098, + "instead": 38070, + "instein": 11962, + "insula": 16495, + "insured": 28409, + "int": 600, + "intage": 14630, + "integ": 18908, + "integer": 41433, + "intel": 48779, + "intelligence": 32683, + "intend": 7315, + "intendent": 21075, + "intendo": 8773, + "intensity": 47799, + "intensive": 38096, + "intent": 48536, + "intention": 40867, + "inter": 3849, + "interest": 9446, + "interested": 34339, + "interesting": 47914, + "interface": 39994, + "intern": 23124, + "internal": 32538, + "international": 45609, + "internet": 37675, + "interpret": 27381, + "interrupted": 46037, + "inters": 20193, + "interstitial": 29446, + "intestinal": 36387, + "inth": 9304, + "into": 20424, + "inton": 2371, + "intosh": 37638, + "introdu": 27427, + "ints": 29503, + "intuitive": 42105, + "inus": 35237, + "inv": 16340, + "inventory": 24807, + "inventoryQuantity": 39756, + "invest": 24859, + "invoke": 37669, + "involved": 44697, + "inx": 28413, + "iny": 3541, + "inyl": 19754, + "io": 952, + "ioch": 41097, + "iod": 2101, + "iol": 1669, + "iola": 30292, + "iolet": 19194, + "iological": 15071, + "iologist": 31599, + "iology": 12371, + "iom": 29005, + "ion": 295, + "iona": 32792, + "ionage": 24919, + "ional": 1538, + "ione": 7935, + "ioned": 14994, + "ionic": 26523, + "ionics": 49900, + "ions": 507, + "iop": 14922, + "ior": 1504, + "iors": 12706, + "ios": 4267, + "iosis": 42960, + "iosity": 15023, + "iosyn": 48448, + "iosyncr": 48702, + "iot": 5151, + "iotic": 16357, + "iotics": 18296, + "iots": 16228, + "iott": 20773, + "iour": 49439, + "ious": 699, + "iously": 6819, + "iov": 16664, + "iovascular": 19381, + "iox": 12190, + "ioxid": 26294, + "ioxide": 16671, + "ip": 541, + "ipal": 8521, + "ipation": 25857, + "ipe": 3757, + "iped": 46647, + "ipedia": 11151, + "ipeg": 21700, + "ipel": 40634, + "iper": 9346, + "ipers": 29288, + "ipes": 18636, + "iph": 13323, + "iphany": 49915, + "iphate": 34981, + "ipher": 10803, + "ipient": 48137, + "iping": 34690, + "ipl": 24705, + "iple": 2480, + "ipment": 4667, + "ipolar": 49133, + "ipop": 42800, + "ipp": 3974, + "ipped": 3949, + "ipper": 14710, + "ippers": 16415, + "ippery": 29530, + "ippi": 12715, + "ipping": 4501, + "ipple": 18793, + "ipples": 27844, + "ippy": 41214, + "ips": 2419, + "ipt": 10257, + "iq": 25011, + "iqu": 1557, + "ique": 2350, + "iqueness": 46764, + "iques": 6368, + "iquette": 40387, + "iquid": 6394, + "ir": 343, + "ira": 8704, + "irable": 13194, + "iral": 21093, + "iration": 15297, + "irc": 1980, + "ircraft": 27002, + "ird": 1447, + "irds": 11049, + "ire": 557, + "irect": 1060, + "irection": 4154, + "ired": 1202, + "irement": 24615, + "irements": 18883, + "iren": 24080, + "irens": 42917, + "ires": 2387, + "irez": 31762, + "irgin": 4672, + "iri": 14783, + "irie": 28191, + "iries": 18561, + "irin": 47388, + "iring": 3428, + "iris": 29616, + "irit": 3276, + "irk": 14232, + "irl": 1901, + "irled": 49376, + "irlf": 9841, + "irlfriend": 9872, + "irling": 24297, + "irlwind": 32785, + "irm": 2533, + "irmation": 36241, + "irmed": 15491, + "irming": 29808, + "irms": 8789, + "iro": 7058, + "iron": 1934, + "irrel": 22793, + "irs": 17062, + "irsch": 47108, + "irst": 667, + "irt": 2265, + "irted": 48357, + "irteen": 22530, + "irth": 3333, + "irting": 35355, + "irts": 9682, + "irtual": 22341, + "irty": 5893, + "iru": 35406, + "irus": 19397, + "iry": 9045, + "is": 271, + "isSpecial": 39714, + "isSpecialOrderable": 39755, + "isa": 9160, + "isable": 43942, + "isal": 28456, + "isan": 9057, + "isance": 31872, + "isans": 26100, + "isation": 5612, + "isations": 38189, + "isbury": 47967, + "isc": 2304, + "iscal": 7860, + "isch": 25308, + "ische": 46097, + "ischer": 24645, + "isco": 4861, + "iscons": 8795, + "isconsin": 8816, + "iscopal": 42522, + "iscover": 29392, + "iscovered": 41168, + "iscovery": 40821, + "isd": 9409, + "isdom": 9350, + "ise": 786, + "isec": 27866, + "ised": 1417, + "isel": 36811, + "isen": 13254, + "iser": 5847, + "isers": 21572, + "ises": 2696, + "iseum": 38277, + "isexual": 20863, + "isf": 4468, + "ish": 680, + "isha": 19388, + "ishable": 31785, + "ished": 1348, + "isher": 4828, + "ishers": 39116, + "ishes": 5614, + "ishi": 21644, + "ishing": 3929, + "ishly": 29735, + "ishment": 17862, + "ishop": 10124, + "ishops": 21863, + "ishy": 49785, + "isi": 23267, + "isible": 12843, + "isin": 45763, + "isine": 27480, + "ising": 1710, + "ision": 1166, + "isions": 3279, + "isite": 16107, + "isites": 31327, + "isition": 10027, + "isitions": 29593, + "isive": 13911, + "isively": 42042, + "isk": 1984, + "isks": 36730, + "isky": 34041, + "isl": 3044, + "isle": 20919, + "ism": 1042, + "isma": 38017, + "isman": 23845, + "ismo": 44126, + "isms": 6583, + "isner": 49861, + "iso": 26786, + "isode": 3282, + "isodes": 8052, + "isoft": 29719, + "isol": 30152, + "ison": 1653, + "isons": 9886, + "isp": 8802, + "ispers": 27148, + "isphere": 22833, + "iss": 747, + "issa": 13808, + "issan": 24112, + "issance": 16419, + "isse": 20782, + "ission": 1480, + "issions": 7717, + "isson": 30927, + "issors": 32555, + "issue": 21949, + "issued": 39361, + "issues": 37165, + "issy": 36419, + "ist": 396, + "ista": 12523, + "istan": 4103, + "istance": 9311, + "istani": 16688, + "istant": 10167, + "istar": 47229, + "istas": 37503, + "iste": 40833, + "isted": 6347, + "istence": 13274, + "istent": 7609, + "ister": 1694, + "istered": 23187, + "isters": 6223, + "istic": 2569, + "istical": 19929, + "istically": 16772, + "istics": 3969, + "istine": 32248, + "isting": 9665, + "istle": 12535, + "iston": 36363, + "istor": 32380, + "istors": 46334, + "istrate": 28534, + "istrates": 37909, + "istration": 33397, + "istries": 32995, + "istry": 4592, + "ists": 1023, + "isu": 46313, + "isure": 20609, + "isy": 13560, + "it": 270, + "ita": 5350, + "itability": 34147, + "itable": 4674, + "itably": 14829, + "itage": 10208, + "itaire": 26627, + "ital": 1287, + "itals": 8321, + "itamin": 40746, + "itan": 18642, + "itance": 42942, + "itans": 43716, + "itant": 23737, + "itar": 7940, + "itarian": 8353, + "itars": 27745, + "itary": 9331, + "itas": 21416, + "itate": 12027, + "itated": 13939, + "itates": 38654, + "itating": 21712, + "itation": 3780, + "itational": 22181, + "itations": 20597, + "itative": 12464, + "itatively": 48668, + "itbart": 17868, + "itch": 2007, + "itched": 10981, + "itcher": 23640, + "itches": 9249, + "itchie": 48423, + "itching": 19811, + "ite": 578, + "itech": 45396, + "itect": 5712, + "ited": 863, + "itely": 3973, + "item": 9186, + "itement": 12559, + "items": 23814, + "itent": 48324, + "iter": 2676, + "iterator": 48727, + "iterranean": 19012, + "ites": 2737, + "ith": 342, + "ithe": 31470, + "ither": 1555, + "ithering": 40861, + "ithing": 44556, + "ithmetic": 29848, + "iths": 47252, + "ithub": 10060, + "iti": 8846, + "itia": 36723, + "itial": 6847, + "itialized": 13562, + "itially": 22640, + "itic": 16233, + "ities": 871, + "itimate": 30233, + "itime": 22552, + "iting": 1780, + "ition": 653, + "itional": 1859, + "itionally": 8736, + "itions": 1756, + "itious": 25253, + "itis": 11815, + "itism": 18937, + "itive": 1800, + "itiveness": 31366, + "itives": 20288, + "itivity": 11365, + "itiz": 3029, + "itized": 36951, + "itizen": 36958, + "itizens": 34100, + "itle": 2578, + "itled": 7803, + "itles": 30540, + "itness": 3659, + "ito": 10094, + "itol": 11650, + "iton": 37752, + "itone": 49644, + "itor": 2072, + "itored": 20026, + "itors": 6742, + "itory": 37765, + "itous": 22109, + "itri": 49510, + "its": 896, + "itsch": 48279, + "itsu": 19831, + "itt": 715, + "itta": 48519, + "ittal": 39979, + "ittance": 47912, + "itte": 2654, + "itted": 2175, + "ittee": 2979, + "ittees": 13263, + "itten": 2621, + "ittens": 34978, + "itter": 1967, + "ittered": 36613, + "itters": 45512, + "itting": 2535, + "ittle": 1206, + "itto": 37606, + "itton": 47304, + "itty": 9760, + "itu": 34272, + "itual": 10587, + "itud": 26331, + "itude": 3984, + "itudes": 10455, + "itudinal": 29121, + "iture": 8089, + "itures": 20686, + "itus": 17506, + "itute": 3678, + "itutes": 16845, + "itution": 2738, + "itutional": 5677, + "ity": 414, + "itz": 4224, + "itzer": 10557, + "itzerland": 13947, + "ité": 43816, + "iu": 16115, + "ium": 1505, + "ius": 3754, + "iuses": 44666, + "iv": 452, + "iva": 12151, + "ivable": 21911, + "ivably": 47994, + "ival": 2473, + "ivalent": 29540, + "ivalry": 47310, + "ivals": 10336, + "ivan": 13809, + "ivari": 35460, + "ivariate": 42524, + "ivas": 38630, + "ivated": 30829, + "ivating": 39438, + "ivation": 26939, + "ive": 425, + "ived": 1572, + "ively": 2280, + "iven": 1469, + "iveness": 6517, + "iver": 1428, + "ivered": 6396, + "ivering": 35598, + "iverpool": 10864, + "ivers": 1191, + "iversal": 11480, + "iversary": 9023, + "iverse": 3997, + "iversity": 1608, + "ivery": 6315, + "ives": 1083, + "ivia": 20817, + "ivic": 16482, + "ivid": 1699, + "ividual": 1896, + "ividually": 16335, + "ivil": 2464, + "iving": 1412, + "ivism": 25085, + "ivist": 30944, + "ivities": 28720, + "ivity": 3458, + "ivo": 23593, + "ivot": 45785, + "iw": 14246, + "ix": 844, + "ixed": 2966, + "ixel": 7168, + "ixels": 14810, + "ixie": 39291, + "ixir": 32345, + "ixon": 12305, + "ixt": 6346, + "ixtape": 43938, + "ixties": 46550, + "ixture": 9602, + "ixtures": 25506, + "ixty": 19404, + "iy": 7745, + "iya": 21008, + "iyah": 46398, + "iz": 528, + "iza": 23638, + "izabeth": 9924, + "izable": 13821, + "izard": 8669, + "izards": 14124, + "izarre": 12474, + "ization": 1634, + "izational": 22684, + "izations": 4582, + "ize": 1096, + "ized": 1143, + "izen": 33977, + "izens": 44908, + "izer": 7509, + "izers": 11341, + "izes": 4340, + "izing": 2890, + "izo": 41282, + "izon": 8637, + "izons": 29457, + "izont": 12071, + "izontal": 38342, + "izoph": 18115, + "izophren": 18337, + "izu": 47775, + "izz": 6457, + "izza": 9990, + "izzard": 16191, + "izzle": 44461, + "izzy": 40593, + "j": 73, + "ja": 6592, + "jab": 27935, + "jac": 30482, + "jack": 19650, + "jad": 38442, + "jah": 31558, + "jam": 39159, + "jamin": 13337, + "jan": 13881, + "jandro": 47983, + "jar": 9491, + "jas": 28121, + "java": 12355, + "javascript": 37495, + "jay": 33708, + "jc": 48055, + "je": 18015, + "ject": 752, + "jected": 35408, + "jection": 29192, + "jee": 34589, + "jen": 48796, + "jer": 44009, + "jet": 31173, + "jew": 47483, + "ji": 7285, + "jiang": 39598, + "jin": 18594, + "jing": 49940, + "jit": 45051, + "jj": 41098, + "jl": 20362, + "jo": 7639, + "job": 21858, + "jobs": 43863, + "john": 30686, + "joice": 41026, + "join": 22179, + "joined": 46416, + "joining": 40044, + "jon": 46286, + "jong": 32428, + "journal": 24891, + "joy": 2633, + "jp": 34523, + "jpg": 9479, + "jri": 38790, + "jriwal": 39890, + "js": 8457, + "json": 17752, + "ju": 14396, + "jud": 10456, + "judicial": 46769, + "jug": 31761, + "jump": 43327, + "jun": 29741, + "jured": 38608, + "juries": 47496, + "jury": 21871, + "just": 3137, + "justice": 31012, + "juven": 39427, + "k": 74, + "kB": 38841, + "kHz": 44191, + "ka": 4914, + "kai": 32765, + "kamp": 40899, + "kan": 27541, + "kar": 21070, + "kas": 42749, + "kat": 41826, + "kay": 5568, + "kaya": 35372, + "kb": 32812, + "ke": 365, + "ked": 9091, + "kee": 11035, + "keep": 14894, + "keeper": 13884, + "keepers": 24952, + "keeping": 19934, + "kees": 16683, + "kef": 30728, + "kefeller": 31424, + "kel": 7750, + "keleton": 38800, + "keley": 13490, + "kell": 17164, + "ken": 3464, + "kens": 14972, + "kept": 45089, + "ker": 6122, + "kered": 28970, + "kernel": 33885, + "kers": 15949, + "kes": 5209, + "ket": 7126, + "key": 2539, + "keye": 34929, + "keyes": 43174, + "keys": 13083, + "kg": 10025, + "kh": 14636, + "ki": 4106, + "kick": 24585, + "kid": 38439, + "kids": 45235, + "kie": 49375, + "kies": 43724, + "kil": 34553, + "kill": 12728, + "killed": 42130, + "killer": 32156, + "killers": 43492, + "killing": 43764, + "kin": 5116, + "kind": 11031, + "king": 3364, + "kins": 5331, + "kinson": 26030, + "kish": 31501, + "kiss": 41304, + "kit": 15813, + "kj": 42421, + "kk": 28747, + "kl": 41582, + "km": 13276, + "kn": 15418, + "knife": 48810, + "knit": 47095, + "know": 16275, + "knowledge": 45066, + "known": 4002, + "ko": 7204, + "kok": 32004, + "kos": 46150, + "kov": 21862, + "kowski": 26216, + "kr": 38584, + "krit": 44531, + "ks": 591, + "ksh": 50133, + "kson": 46505, + "kt": 21841, + "ktop": 16201, + "ku": 23063, + "kun": 28374, + "kus": 45614, + "kw": 46265, + "kward": 12378, + "ky": 2584, + "l": 75, + "la": 5031, + "lab": 23912, + "label": 18242, + "lace": 27077, + "lad": 9435, + "laden": 35668, + "lag": 30909, + "lah": 9271, + "lahoma": 9802, + "laim": 20438, + "lain": 34277, + "lake": 27180, + "lam": 2543, + "lambda": 50033, + "lamm": 11199, + "lan": 9620, + "lance": 23215, + "land": 1044, + "lander": 16235, + "landers": 32358, + "landish": 45626, + "lando": 11993, + "lands": 4447, + "lane": 33533, + "lang": 17204, + "language": 16129, + "lap": 37796, + "lar": 21681, + "larg": 15521, + "large": 11664, + "largest": 28209, + "las": 21921, + "lash": 17055, + "lass": 31172, + "lasses": 28958, + "last": 12957, + "lasting": 24810, + "lat": 15460, + "latable": 49009, + "late": 17660, + "lated": 17249, + "later": 36760, + "latest": 42861, + "lation": 7592, + "lations": 49905, + "lator": 41880, + "laugh": 44944, + "laughs": 28124, + "laughter": 27815, + "laun": 38722, + "launch": 35681, + "laus": 38024, + "lav": 18809, + "law": 6270, + "laws": 29317, + "lay": 10724, + "layer": 29289, + "layout": 39786, + "lb": 23160, + "lbs": 32133, + "lc": 44601, + "ld": 335, + "lda": 18986, + "lde": 35209, + "lder": 6499, + "ldom": 23826, + "ldon": 25900, + "le": 293, + "lead": 28230, + "leader": 27940, + "leaders": 37553, + "leading": 12294, + "leaf": 33201, + "league": 19316, + "lean": 13087, + "leaning": 25909, + "leanor": 41807, + "leans": 11861, + "lear": 3238, + "learn": 35720, + "learning": 40684, + "lease": 1274, + "leased": 14684, + "leases": 29329, + "leasing": 48764, + "leave": 47408, + "leck": 40667, + "lect": 801, + "lected": 12609, + "lectic": 42009, + "lection": 1564, + "lections": 26448, + "led": 992, + "ledge": 2965, + "ledged": 37436, + "lee": 7197, + "leen": 20042, + "leep": 8892, + "lees": 49410, + "leeve": 49189, + "left": 9464, + "leg": 1455, + "legal": 18011, + "legate": 34637, + "legates": 37061, + "lege": 2765, + "legged": 40898, + "legram": 30536, + "legraph": 16606, + "leground": 28272, + "lehem": 44797, + "leigh": 42342, + "lein": 33663, + "lem": 10671, + "lement": 1732, + "lements": 3639, + "lems": 46367, + "len": 11925, + "lene": 29466, + "leneck": 43163, + "leness": 48795, + "length": 13664, + "leon": 38970, + "ler": 1754, + "lers": 8116, + "les": 829, + "lesh": 29730, + "lesi": 36027, + "lesiastical": 46360, + "less": 1203, + "lessly": 8613, + "lessness": 17587, + "lest": 32712, + "let": 1616, + "letal": 47293, + "letcher": 29257, + "lete": 5807, + "leted": 33342, + "letes": 40676, + "lethal": 46480, + "letico": 47286, + "leton": 10565, + "lets": 5289, + "lett": 15503, + "lette": 21348, + "letter": 9291, + "letters": 15653, + "lev": 2768, + "levant": 14938, + "levard": 22123, + "level": 5715, + "levels": 46170, + "levision": 5024, + "lex": 2588, + "ley": 1636, + "leys": 21325, + "lez": 36858, + "lf": 1652, + "li": 4528, + "lia": 24660, + "liam": 5058, + "liament": 5130, + "lib": 8019, + "liber": 33203, + "liberal": 35739, + "library": 32016, + "lic": 677, + "lication": 10142, + "license": 43085, + "licensed": 36612, + "lich": 33467, + "licks": 49191, + "lict": 13758, + "licted": 17823, + "liction": 41101, + "licts": 42267, + "lie": 14485, + "lied": 18511, + "lier": 2505, + "lies": 13508, + "liest": 11318, + "lif": 36195, + "life": 6042, + "lift": 26282, + "lifting": 30510, + "lig": 4604, + "liga": 38910, + "light": 2971, + "lighting": 43351, + "lightly": 30945, + "lights": 8091, + "lihood": 11935, + "lik": 46965, + "like": 2339, + "likely": 40798, + "lim": 2475, + "lime": 27299, + "limit": 32374, + "limited": 10698, + "limits": 49196, + "lin": 2815, + "line": 1370, + "linear": 29127, + "lined": 10837, + "liner": 24683, + "liners": 34380, + "lines": 6615, + "liness": 26061, + "ling": 1359, + "linger": 33550, + "lings": 17783, + "lington": 17299, + "lining": 21310, + "link": 8726, + "linked": 25614, + "links": 28751, + "lins": 21602, + "linux": 23289, + "lio": 48590, + "lip": 40712, + "lique": 41522, + "liquid": 39250, + "lis": 27999, + "lish": 1836, + "lished": 2115, + "lisher": 8191, + "lishes": 19724, + "lishing": 20020, + "list": 4868, + "listed": 17935, + "lists": 20713, + "lit": 18250, + "lite": 36890, + "liter": 17201, + "literally": 43819, + "little": 31629, + "liv": 16017, + "live": 12583, + "lived": 24489, + "living": 19950, + "livion": 26018, + "livious": 35260, + "ll": 297, + "lla": 8466, + "llah": 22734, + "llan": 47993, + "lled": 3353, + "ller": 6051, + "llers": 13802, + "lli": 15516, + "lling": 2680, + "llo": 18798, + "llor": 14127, + "llular": 32771, + "lly": 12810, + "ln": 18755, + "lo": 5439, + "load": 2220, + "loaded": 14578, + "loader": 29356, + "loading": 25138, + "loads": 46030, + "loc": 17946, + "local": 12001, + "localhost": 36750, + "location": 24886, + "lock": 5354, + "locked": 24162, + "locking": 48331, + "locks": 28860, + "loe": 24617, + "log": 6404, + "login": 38235, + "lol": 47288, + "lon": 14995, + "long": 6511, + "loo": 29680, + "look": 5460, + "looking": 11534, + "loop": 26268, + "lopp": 39590, + "lor": 4685, + "lord": 10572, + "lords": 19673, + "lore": 31131, + "los": 33280, + "loss": 22462, + "lost": 33224, + "lot": 26487, + "lov": 27086, + "love": 23205, + "loving": 33983, + "low": 9319, + "lower": 21037, + "lp": 34431, + "lr": 14050, + "ls": 7278, + "lt": 2528, + "lu": 2290, + "lua": 40211, + "luaj": 36473, + "lucent": 35600, + "luck": 46708, + "lude": 38792, + "luence": 23079, + "luent": 28216, + "lund": 37525, + "lus": 41790, + "lust": 38878, + "luster": 48375, + "lux": 22564, + "lv": 6780, + "lves": 31018, + "lvl": 47147, + "ly": 306, + "lyak": 43782, + "lycer": 38577, + "lying": 3157, + "lymp": 6760, + "lyn": 6213, + "lynn": 12935, + "lys": 27385, + "lyss": 35670, + "lé": 45031, + "m": 76, + "mA": 42646, + "mAh": 28142, + "mL": 32087, + "ma": 2611, + "mable": 44102, + "mac": 20285, + "machine": 30243, + "mad": 9937, + "made": 9727, + "mag": 19726, + "mage": 25561, + "magic": 32707, + "maid": 23151, + "mail": 4529, + "mails": 26165, + "main": 12417, + "major": 22478, + "majority": 35839, + "make": 15883, + "maker": 10297, + "makers": 6620, + "makes": 49123, + "making": 8601, + "mal": 7617, + "male": 22606, + "malink": 31000, + "mallow": 42725, + "man": 805, + "manac": 46870, + "managed": 39935, + "management": 27604, + "manager": 37153, + "mand": 22249, + "manent": 44172, + "mania": 45733, + "mann": 9038, + "mans": 16221, + "manship": 25428, + "manuel": 18713, + "manufact": 48119, + "many": 21834, + "map": 8899, + "maps": 31803, + "mar": 3876, + "mare": 11449, + "mares": 23745, + "marg": 30887, + "margin": 36153, + "marine": 42380, + "mark": 4102, + "marked": 23505, + "market": 10728, + "markets": 34162, + "marks": 14306, + "marriage": 45394, + "married": 30526, + "mart": 13822, + "mary": 6874, + "mas": 5356, + "mask": 27932, + "mass": 22208, + "massive": 49777, + "mast": 47616, + "master": 9866, + "masters": 40706, + "mat": 6759, + "match": 15699, + "matched": 31409, + "mate": 9830, + "material": 33665, + "mates": 7300, + "math": 11018, + "matic": 13849, + "matical": 44935, + "matically": 49454, + "matter": 47635, + "max": 9806, + "maximum": 47033, + "maxwell": 29047, + "may": 11261, + "maybe": 25991, + "mb": 2022, + "mber": 1916, + "mberg": 47369, + "mble": 11306, + "mbol": 23650, + "mbuds": 45664, + "mbudsman": 47012, + "mc": 23209, + "md": 9132, + "me": 1326, + "meal": 28208, + "mean": 32604, + "meaning": 24815, + "measures": 47336, + "meat": 41495, + "med": 1150, + "medi": 2379, + "media": 11431, + "mediate": 13857, + "mediated": 38363, + "mediately": 23802, + "medical": 41693, + "medium": 24132, + "meet": 47745, + "meg": 28917, + "mega": 13731, + "meier": 49468, + "mel": 17694, + "melon": 45690, + "mem": 11883, + "member": 19522, + "members": 30814, + "memory": 31673, + "men": 3653, + "mens": 45535, + "ment": 434, + "mental": 37098, + "mentation": 14374, + "mented": 12061, + "mentioned": 17181, + "ments": 902, + "menu": 26272, + "mer": 647, + "merce": 11647, + "mercial": 15790, + "mere": 34671, + "merga": 44739, + "meric": 946, + "mers": 11056, + "mes": 6880, + "mess": 37348, + "message": 20500, + "met": 4164, + "meta": 28961, + "metadata": 38993, + "metal": 28469, + "meter": 27231, + "method": 24396, + "methyl": 43654, + "metic": 15103, + "metics": 27757, + "metry": 41935, + "meyer": 48794, + "mg": 11296, + "mi": 11632, + "mia": 20730, + "miah": 35029, + "mic": 9383, + "micro": 24055, + "microsoft": 40485, + "mid": 13602, + "middle": 27171, + "midt": 21184, + "mie": 44871, + "might": 44092, + "mil": 25433, + "mile": 18085, + "military": 33631, + "mill": 17805, + "million": 14100, + "milo": 48995, + "min": 1084, + "mination": 17928, + "mind": 10155, + "minded": 14543, + "mine": 3810, + "minecraft": 17761, + "minent": 19669, + "ming": 2229, + "mingham": 17737, + "mington": 39773, + "mini": 45313, + "minimum": 39504, + "mining": 45374, + "minist": 2201, + "ministic": 49228, + "mins": 42951, + "minster": 18462, + "mint": 34289, + "minus": 40191, + "minute": 11374, + "mir": 10793, + "mire": 47004, + "mis": 25413, + "misc": 44374, + "miss": 3927, + "missible": 21597, + "missing": 45688, + "mission": 3411, + "missions": 8481, + "missive": 33532, + "mist": 37980, + "mit": 2781, + "mite": 32937, + "mith": 22947, + "mits": 24883, + "mitt": 20124, + "mitted": 3291, + "mittedly": 43011, + "mitter": 37974, + "mitting": 16138, + "mix": 19816, + "mk": 28015, + "ml": 4029, + "mm": 3020, + "mma": 21672, + "mmm": 27532, + "mmmm": 40133, + "mn": 10295, + "mo": 5908, + "mob": 39949, + "mobi": 43549, + "mobile": 24896, + "mod": 4666, + "mode": 14171, + "model": 19849, + "models": 27530, + "moderate": 47189, + "modern": 23922, + "modified": 41771, + "mods": 24122, + "module": 21412, + "modules": 18170, + "moil": 25538, + "mol": 43132, + "mology": 29126, + "mom": 32542, + "mon": 2144, + "monary": 36639, + "mond": 6327, + "monds": 42620, + "mone": 47122, + "money": 26316, + "mong": 31059, + "monitor": 41143, + "monkey": 49572, + "mons": 11567, + "monster": 39050, + "mont": 8691, + "month": 8424, + "months": 41537, + "monton": 19729, + "mony": 9926, + "moon": 22977, + "mop": 35244, + "mopolitan": 44331, + "mor": 4491, + "moral": 41996, + "more": 3549, + "morning": 43911, + "morph": 24503, + "morrow": 9201, + "mort": 30171, + "mortem": 46515, + "mos": 16785, + "mosp": 6384, + "most": 1712, + "mostly": 29471, + "mot": 27926, + "mother": 13552, + "motion": 38714, + "mount": 14948, + "mounted": 29728, + "mouse": 35888, + "mouth": 14775, + "move": 21084, + "movie": 41364, + "moving": 31462, + "mp": 3149, + "mpeg": 43913, + "mph": 23335, + "mpire": 35386, + "mr": 43395, + "ms": 907, + "msg": 19662, + "mson": 24996, + "mt": 16762, + "mu": 30300, + "much": 29482, + "mud": 41650, + "mult": 16680, + "multi": 41684, + "multipl": 47945, + "multiple": 48101, + "mun": 6199, + "mund": 20125, + "munition": 12640, + "mur": 28582, + "mus": 14664, + "music": 28965, + "must": 27238, + "mut": 21973, + "mx": 36802, + "my": 1820, + "myra": 49216, + "mys": 28744, + "n": 77, + "na": 2616, + "nah": 40909, + "nai": 38600, + "naire": 24042, + "naires": 43317, + "naissance": 47090, + "nam": 7402, + "name": 3672, + "named": 13190, + "names": 14933, + "namese": 22678, + "nan": 12647, + "nance": 41601, + "nant": 22057, + "nants": 26501, + "nar": 23955, + "nard": 40542, + "nas": 24716, + "nat": 32353, + "natal": 33150, + "nation": 25729, + "national": 14648, + "native": 30191, + "natural": 11802, + "nature": 21353, + "natureconservancy": 41380, + "nav": 28341, + "nb": 46803, + "nc": 10782, + "nce": 1198, + "nces": 3179, + "nd": 358, + "nda": 45658, + "nder": 681, + "ndra": 24631, + "ndum": 11021, + "ne": 710, + "nea": 39718, + "neapolis": 19359, + "near": 40093, + "neath": 13725, + "neau": 46533, + "nec": 32984, + "necess": 10789, + "necessary": 49986, + "neck": 27235, + "nect": 1606, + "ned": 2817, + "nee": 21381, + "need": 31227, + "needed": 27938, + "needs": 50032, + "neg": 12480, + "negative": 31591, + "negie": 32360, + "nel": 4954, + "nell": 10076, + "nels": 19423, + "nen": 38572, + "ner": 1008, + "nered": 15826, + "nerg": 25649, + "nergy": 5877, + "ners": 2741, + "nery": 35865, + "nes": 2516, + "nesday": 3462, + "nesia": 31401, + "nesium": 27619, + "nesota": 8360, + "ness": 1108, + "nesses": 47556, + "nesty": 18718, + "net": 3262, + "netflix": 36977, + "netic": 9833, + "nets": 45938, + "nette": 48115, + "network": 27349, + "neum": 25668, + "neutral": 29797, + "never": 12081, + "new": 3605, + "news": 10827, + "nex": 12413, + "nexpected": 42072, + "next": 19545, + "nexus": 44520, + "ney": 1681, + "neys": 20141, + "ng": 782, + "ngth": 11910, + "ni": 8461, + "nia": 18142, + "nian": 44516, + "nic": 6988, + "nice": 44460, + "nick": 17172, + "nie": 11952, + "night": 3847, + "nih": 37373, + "nik": 17187, + "nikov": 45451, + "nil": 45991, + "nin": 35073, + "nine": 30888, + "ning": 768, + "nings": 23400, + "nington": 48405, + "niper": 45554, + "nir": 32986, + "nis": 21361, + "nit": 48825, + "nl": 21283, + "nm": 21533, + "nn": 20471, + "no": 3919, + "nob": 34952, + "node": 17440, + "nom": 26601, + "non": 13159, + "none": 23108, + "noon": 6357, + "nor": 13099, + "norm": 27237, + "normal": 11265, + "north": 43588, + "nos": 39369, + "nosis": 31707, + "nostic": 43758, + "not": 1662, + "notation": 38983, + "notations": 30078, + "note": 11295, + "notes": 17815, + "nothing": 22366, + "notice": 42138, + "noticed": 31696, + "nov": 37302, + "nova": 38438, + "now": 2197, + "nown": 3408, + "nox": 35420, + "noxious": 40591, + "np": 37659, + "nr": 48624, + "ns": 5907, + "nsic": 19364, + "nsics": 49242, + "nt": 429, + "ntax": 41641, + "ntil": 10125, + "nton": 28936, + "nu": 28803, + "nuclear": 43131, + "null": 8423, + "num": 22510, + "number": 17618, + "numbered": 35565, + "nut": 14930, + "nutrition": 40482, + "nuts": 31381, + "nv": 48005, + "nw": 47516, + "ny": 3281, + "nyder": 21053, + "nz": 27305, + "o": 78, + "oS": 34049, + "oa": 12162, + "oad": 1170, + "oaded": 22273, + "oak": 15877, + "oan": 24611, + "oard": 11953, + "oat": 15073, + "ob": 672, + "oba": 19981, + "obal": 2572, + "obar": 30973, + "obb": 21963, + "obbies": 41372, + "obby": 11369, + "obe": 5910, + "ober": 2023, + "obi": 13411, + "obia": 30665, + "obic": 20803, + "obil": 25898, + "obile": 3579, + "obiles": 36329, + "obin": 38954, + "obj": 26801, + "object": 15252, + "objects": 48205, + "obl": 45292, + "obo": 20391, + "obook": 49776, + "obos": 49878, + "obs": 8158, + "oby": 26730, + "obyl": 46666, + "oc": 420, + "oca": 11216, + "ocado": 33441, + "ocal": 4374, + "ocally": 44190, + "ocaly": 12063, + "ocalypse": 15145, + "ocalyptic": 28339, + "ocamp": 26047, + "ocard": 44412, + "ocate": 13369, + "ocated": 10533, + "ocating": 27123, + "ocation": 5040, + "ocations": 20968, + "ocative": 23466, + "ocaust": 16377, + "occ": 13966, + "occup": 19596, + "occupied": 28756, + "ocene": 34973, + "ocent": 29421, + "ocese": 31292, + "och": 5374, + "oche": 30848, + "ochem": 18958, + "ochemical": 32864, + "ochemistry": 37074, + "ochet": 49579, + "ochond": 22400, + "oci": 1733, + "ocial": 9402, + "ociate": 47615, + "ociated": 19293, + "ociation": 41003, + "ocide": 16207, + "ocious": 32346, + "ocity": 11683, + "ock": 735, + "ocked": 3543, + "ocker": 12721, + "ocket": 5459, + "ockets": 11603, + "ockey": 8337, + "ocking": 8629, + "ocks": 3320, + "ocl": 38679, + "oco": 25634, + "ocobo": 37642, + "ococ": 34403, + "ocol": 4668, + "ocolate": 9140, + "ocom": 42829, + "ocon": 36221, + "ocr": 1696, + "ocracy": 17818, + "ocrat": 35128, + "ocrates": 34095, + "ocratic": 15405, + "ocrats": 21988, + "ocre": 27945, + "ocrin": 39913, + "ocrine": 38658, + "ocry": 48103, + "oct": 38441, + "ocular": 37320, + "ocument": 7990, + "ocumented": 17664, + "ocus": 10901, + "ocused": 13073, + "ocusing": 45743, + "ocy": 13733, + "ocyte": 43320, + "ocytes": 30309, + "od": 375, + "oda": 11329, + "odan": 45561, + "oday": 4348, + "odcast": 7107, + "odd": 5088, + "odder": 35346, + "oddy": 38553, + "ode": 1098, + "oded": 9043, + "oder": 12342, + "odes": 4147, + "odge": 9728, + "odi": 23130, + "odiac": 40096, + "odic": 29512, + "odied": 32255, + "odies": 5042, + "oding": 7656, + "odium": 12664, + "odka": 28601, + "odo": 24313, + "odon": 46457, + "odor": 30530, + "odore": 25102, + "odox": 11430, + "ods": 12978, + "odus": 21878, + "ody": 1118, + "odynam": 24319, + "odynamic": 34743, + "odynamics": 44124, + "oe": 2577, + "oen": 6571, + "oenix": 8538, + "oes": 3028, + "oeuv": 37600, + "of": 1659, + "ofer": 30288, + "off": 2364, + "offensive": 45055, + "offer": 47895, + "offic": 14406, + "office": 31810, + "official": 16841, + "offs": 8210, + "offset": 28968, + "ofi": 39542, + "oft": 11205, + "often": 28950, + "og": 519, + "oga": 10949, + "ogan": 9632, + "ogen": 6644, + "ogene": 20878, + "ogeneity": 37477, + "ogeneous": 32269, + "ogenesis": 25908, + "ogenic": 15147, + "ogenous": 27897, + "ogens": 26612, + "ogether": 8236, + "ogg": 10332, + "ogged": 42545, + "ogging": 30853, + "oggle": 20258, + "oggles": 48549, + "ogh": 46664, + "ogi": 44381, + "ogical": 30766, + "ogie": 37987, + "ogl": 28678, + "ogle": 2467, + "oglobin": 49835, + "oglu": 49006, + "ogly": 34619, + "ogn": 2360, + "ognitive": 46610, + "ogo": 24076, + "ogram": 21857, + "ograms": 26836, + "ograp": 7113, + "ograph": 2384, + "ographed": 39620, + "ographer": 18539, + "ographers": 34063, + "ographic": 6826, + "ographical": 17046, + "ographically": 33145, + "ographics": 24188, + "ographies": 41480, + "ographs": 33492, + "ography": 4867, + "ogs": 18463, + "ogue": 5119, + "ogun": 39918, + "ogy": 9868, + "ogyn": 20593, + "oh": 1219, + "oha": 28083, + "ohan": 22436, + "ohl": 48988, + "ohm": 34028, + "ohn": 1562, + "oho": 40950, + "ohyd": 15782, + "ohydrate": 46358, + "oi": 23013, + "oice": 2942, + "oid": 1868, + "oidal": 47502, + "oided": 13780, + "oids": 10994, + "oil": 9437, + "oiler": 20837, + "oin": 36743, + "oine": 42722, + "oing": 40519, + "oint": 1563, + "ointed": 20909, + "ointment": 49805, + "oir": 10840, + "oire": 32177, + "ois": 10924, + "oise": 25678, + "oit": 30711, + "oj": 13210, + "oji": 31370, + "ojure": 32511, + "ok": 482, + "oka": 17411, + "okane": 41776, + "oke": 2088, + "oked": 6545, + "okemon": 12717, + "oken": 4233, + "oker": 11020, + "okers": 18698, + "okes": 3369, + "oki": 18228, + "okia": 22903, + "okin": 36749, + "oking": 5730, + "okingly": 48343, + "oko": 16044, + "oks": 28194, + "oku": 11601, + "oky": 31375, + "oké": 35861, + "ol": 349, + "ola": 5708, + "olan": 16617, + "oland": 23573, + "olar": 6192, + "olars": 7828, + "olas": 12456, + "olate": 27976, + "olated": 50027, + "olation": 21417, + "old": 727, + "olded": 48959, + "oldemort": 24710, + "older": 19892, + "olding": 33266, + "oldown": 15041, + "olds": 10119, + "ole": 2305, + "olean": 21052, + "oled": 45342, + "olen": 8622, + "oleon": 25637, + "oler": 13625, + "olerance": 37668, + "oles": 4316, + "olesc": 16850, + "olescent": 23406, + "olester": 15764, + "olesterol": 16743, + "oley": 48437, + "olf": 4024, + "oli": 11106, + "olia": 22703, + "oliath": 43009, + "oliberal": 28525, + "olic": 4160, + "olicited": 47607, + "olics": 19615, + "olicy": 21424, + "olid": 10180, + "olin": 24910, + "olina": 47196, + "oline": 14453, + "oling": 40949, + "olini": 43232, + "olis": 8506, + "olit": 6212, + "olitan": 12977, + "olith": 21446, + "olithic": 30764, + "olitical": 13781, + "olitics": 21704, + "olition": 50014, + "olk": 13597, + "olkien": 31052, + "oll": 692, + "olla": 33011, + "ollah": 17999, + "ollar": 13228, + "ollen": 29952, + "oller": 49252, + "ollo": 15578, + "ollow": 950, + "ollower": 47030, + "olls": 33421, + "olly": 5098, + "ollywood": 31777, + "oln": 10875, + "olo": 14057, + "olog": 928, + "ologic": 20781, + "ological": 2770, + "ologically": 13437, + "ologies": 5823, + "ologist": 7451, + "ologists": 9251, + "ologne": 30520, + "ologue": 39795, + "ology": 1435, + "olon": 43645, + "olor": 45621, + "olph": 10196, + "olphin": 27161, + "olphins": 16547, + "ols": 10220, + "olson": 32836, + "olt": 5978, + "olulu": 39814, + "olute": 3552, + "olutely": 16780, + "olution": 2122, + "olutions": 14191, + "olve": 6442, + "olved": 5634, + "olver": 14375, + "olves": 9010, + "olving": 10890, + "oly": 3366, + "olyn": 34742, + "om": 296, + "oma": 6086, + "omach": 10806, + "omal": 18048, + "omaly": 24335, + "oman": 5185, + "omas": 16911, + "omatic": 13730, + "omb": 2381, + "ombat": 41628, + "ombie": 9081, + "ombies": 12676, + "ombo": 47265, + "ombs": 33273, + "ome": 462, + "omed": 12657, + "omedical": 35914, + "omen": 3674, + "omer": 12057, + "omers": 21499, + "omes": 2586, + "omet": 908, + "ometer": 15635, + "ometers": 40077, + "omething": 8370, + "ometime": 47056, + "ometimes": 6533, + "ometown": 19191, + "ometric": 16996, + "ometry": 15748, + "omever": 49784, + "omew": 28030, + "omez": 30010, + "omi": 12753, + "omial": 49070, + "omic": 10179, + "omical": 22545, + "omics": 31994, + "omin": 6351, + "ominated": 50251, + "omination": 27744, + "oming": 3383, + "ominium": 46134, + "omm": 2002, + "ommel": 48990, + "ommod": 8641, + "omnia": 37340, + "omo": 17902, + "omon": 16698, + "omore": 22113, + "omorph": 25831, + "omorphic": 46374, + "omp": 3361, + "ompl": 6316, + "oms": 3150, + "omsday": 33415, + "omsky": 37093, + "omy": 9145, + "on": 261, + "ona": 4450, + "onal": 20996, + "once": 27078, + "ond": 623, + "onda": 13533, + "onday": 3204, + "onde": 14378, + "onder": 8623, + "onding": 42703, + "ondo": 22311, + "ondon": 3391, + "onds": 24764, + "onduct": 12920, + "onductor": 40990, + "one": 505, + "oned": 12004, + "onel": 26261, + "oneliness": 34634, + "onement": 49844, + "onen": 34481, + "onent": 3471, + "onential": 35470, + "onents": 3906, + "oner": 14491, + "ones": 1952, + "onest": 19129, + "onet": 36823, + "onew": 44181, + "oney": 1419, + "ong": 506, + "onga": 44294, + "onge": 14220, + "ongevity": 25454, + "ongh": 19757, + "ongo": 25162, + "ongs": 28079, + "ongyang": 20659, + "oni": 14651, + "onia": 11339, + "onial": 30752, + "onian": 27625, + "onic": 9229, + "onica": 32752, + "onics": 38530, + "onies": 17300, + "oning": 12484, + "onis": 43524, + "onite": 46285, + "online": 25119, + "only": 8807, + "onna": 6415, + "onnaissance": 31539, + "onne": 47476, + "ono": 29941, + "onom": 6326, + "onomic": 40036, + "onomous": 38175, + "onomy": 30565, + "ons": 684, + "onse": 2591, + "onsense": 46563, + "onsequ": 40819, + "onso": 26666, + "onson": 36742, + "ont": 756, + "onte": 38599, + "ontent": 38564, + "onto": 5957, + "onut": 16478, + "ony": 1647, + "onym": 5177, + "onymous": 6704, + "onyms": 43612, + "onz": 13569, + "oo": 2238, + "ood": 702, + "oodle": 27106, + "oodoo": 36038, + "oof": 37711, + "ook": 566, + "ooked": 46288, + "ookie": 18055, + "ooks": 31085, + "ooky": 29655, + "ool": 970, + "oola": 10513, + "ools": 10141, + "oom": 4207, + "ooming": 30602, + "oon": 2049, + "oons": 13022, + "ooo": 34160, + "oooo": 13321, + "oooooooo": 26759, + "oooooooooooooooo": 49135, + "oop": 11224, + "oops": 44860, + "oor": 2675, + "oos": 16426, + "oot": 1025, + "ooter": 25141, + "ooters": 48316, + "ooth": 5226, + "oother": 31724, + "ooting": 12494, + "oots": 13880, + "op": 404, + "opa": 26186, + "opal": 33067, + "opard": 15478, + "opath": 18569, + "opathic": 44650, + "opathy": 27189, + "opausal": 47637, + "ope": 3008, + "oped": 19458, + "open": 9654, + "opened": 26350, + "opening": 29443, + "opens": 44813, + "oper": 3575, + "operated": 42767, + "operation": 27184, + "operative": 27173, + "operator": 46616, + "opers": 20618, + "opes": 13920, + "opez": 20808, + "oph": 2522, + "ophe": 43852, + "ophen": 47806, + "opher": 8803, + "ophers": 20856, + "ophical": 49256, + "ophile": 37161, + "ophob": 13253, + "ophobia": 19851, + "ophobic": 23468, + "ophon": 48982, + "ophone": 38656, + "ophy": 16982, + "ophys": 39665, + "ophysical": 41789, + "opia": 24464, + "opian": 37548, + "opic": 16603, + "oping": 15816, + "opl": 20106, + "oplan": 46853, + "ople": 643, + "oples": 12614, + "opol": 39704, + "opolis": 47575, + "opoly": 35894, + "opot": 43372, + "opoulos": 20338, + "opp": 10365, + "oppable": 35628, + "opped": 38333, + "oppers": 37186, + "opping": 33307, + "oppy": 26696, + "ops": 2840, + "opsis": 24608, + "opsy": 44522, + "opt": 8738, + "opted": 45256, + "opter": 32563, + "optim": 40085, + "option": 18076, + "optional": 25968, + "options": 25811, + "opus": 25790, + "opy": 11081, + "oqu": 22696, + "or": 273, + "ora": 5799, + "orable": 10475, + "orage": 4945, + "orah": 40844, + "oral": 6864, + "orama": 36161, + "oran": 31884, + "orange": 43745, + "oras": 41043, + "orate": 16262, + "oration": 6944, + "orative": 36478, + "orb": 27688, + "orbit": 42594, + "orc": 24449, + "orce": 8387, + "ord": 585, + "ordable": 16819, + "ordan": 7350, + "orde": 17531, + "order": 2875, + "ordered": 24071, + "ordering": 34555, + "orders": 6361, + "ordes": 35770, + "ordial": 31223, + "ordinary": 35947, + "ordinate": 45480, + "ording": 1284, + "ordon": 9999, + "ords": 3669, + "ore": 382, + "oreAnd": 40219, + "oreAndOnline": 40240, + "orea": 46215, + "oreal": 39396, + "orean": 29456, + "ored": 1850, + "orem": 29625, + "oren": 29578, + "orer": 11934, + "orers": 28089, + "ores": 2850, + "oresc": 45166, + "orescence": 48699, + "orescent": 35414, + "orest": 26522, + "oret": 9997, + "orf": 24263, + "org": 2398, + "organ": 9971, + "organic": 36617, + "organisms": 45165, + "organized": 30280, + "orge": 3643, + "orget": 28122, + "orgetown": 29085, + "ori": 10145, + "oria": 7661, + "orial": 5132, + "orian": 22618, + "orians": 45825, + "oric": 8146, + "orical": 12409, + "orically": 26847, + "orie": 19257, + "oried": 42058, + "orient": 13989, + "oriented": 17107, + "ories": 1749, + "orig": 11612, + "origin": 47103, + "original": 14986, + "oring": 3255, + "orio": 40974, + "orious": 9982, + "oris": 37279, + "ority": 29134, + "orius": 48759, + "ork": 967, + "orks": 3647, + "orkshire": 29918, + "orld": 1764, + "orm": 579, + "ormal": 6636, + "orman": 26183, + "ormon": 10615, + "ormonal": 33792, + "ormons": 29966, + "orn": 1211, + "orne": 8553, + "orned": 26994, + "orney": 4195, + "orneys": 13060, + "ornia": 3317, + "ornings": 28863, + "orno": 46447, + "orns": 19942, + "oro": 16522, + "oros": 40877, + "orough": 7985, + "orous": 9610, + "orously": 24882, + "orp": 16300, + "orph": 13425, + "orpor": 31150, + "orporated": 40132, + "orr": 38890, + "orrect": 47315, + "orrow": 6254, + "orry": 5152, + "ors": 669, + "orsche": 26164, + "orse": 7615, + "orses": 11836, + "orset": 49590, + "orship": 11094, + "orsi": 35255, + "orst": 29422, + "ort": 419, + "ortal": 16906, + "ortality": 28337, + "orted": 9741, + "orter": 4337, + "orters": 3816, + "ortex": 26158, + "orth": 1506, + "orthern": 4824, + "orthodox": 42539, + "orthy": 18906, + "orting": 24707, + "ortion": 5817, + "ortium": 25182, + "ortment": 33920, + "ortmund": 34876, + "orts": 2096, + "ortun": 1922, + "ortunate": 13651, + "ortunately": 4690, + "oru": 27786, + "orum": 19220, + "orus": 15125, + "ory": 652, + "os": 418, + "osa": 8546, + "osal": 40725, + "osate": 33931, + "osaurs": 22344, + "osaurus": 47650, + "osc": 17500, + "oscope": 40326, + "oscopic": 48228, + "ose": 577, + "osed": 1335, + "osen": 5233, + "oser": 13416, + "oses": 4629, + "osexual": 8542, + "osh": 3768, + "oshenko": 43934, + "osher": 38321, + "oshi": 13704, + "oshop": 25444, + "osi": 21707, + "osing": 2752, + "osion": 18442, + "osis": 5958, + "osit": 7434, + "osite": 5971, + "osition": 3507, + "ositories": 35061, + "ository": 13264, + "osity": 16579, + "oslav": 26388, + "oslov": 50005, + "oso": 28213, + "osp": 2117, + "ospace": 24912, + "ospel": 13994, + "ospels": 41908, + "osph": 14222, + "osphere": 22829, + "ospital": 3531, + "ospons": 35952, + "osponsors": 39500, + "oss": 793, + "ossal": 33582, + "ossession": 49809, + "ossibility": 43691, + "ossible": 4733, + "ossibly": 20846, + "ossier": 30087, + "ossip": 26710, + "ossom": 25548, + "ossus": 36533, + "ost": 455, + "osta": 39818, + "oster": 6197, + "osterone": 16372, + "ostic": 15132, + "ostics": 34558, + "oston": 5744, + "osuke": 45914, + "osure": 4567, + "osures": 16091, + "ot": 313, + "ota": 4265, + "otal": 4997, + "otally": 38908, + "otation": 14221, + "otaur": 35269, + "ote": 1258, + "otech": 32469, + "otechnology": 31201, + "oted": 5191, + "otent": 33715, + "oter": 19543, + "oteric": 38571, + "oters": 26008, + "otes": 6421, + "oth": 849, + "othal": 42376, + "othe": 20388, + "other": 847, + "otherapy": 18952, + "othermal": 49723, + "othes": 31690, + "othing": 24834, + "oths": 27118, + "othy": 14863, + "oti": 5092, + "otiation": 21236, + "otic": 6210, + "otics": 23891, + "otide": 45608, + "otin": 41403, + "otine": 16174, + "oting": 10720, + "otion": 9650, + "otional": 25453, + "otions": 36083, + "otive": 19138, + "otle": 23556, + "oto": 2069, + "otom": 43125, + "otomy": 38385, + "oton": 18970, + "otonin": 29613, + "otor": 20965, + "otos": 14163, + "otrop": 34248, + "otropic": 46084, + "ots": 1747, + "ott": 1252, + "otta": 12375, + "ottage": 29480, + "otte": 11404, + "otted": 8426, + "otten": 4728, + "ottenham": 21889, + "ottest": 24879, + "ottesville": 23806, + "otti": 26380, + "otto": 17631, + "otton": 11324, + "otyp": 17183, + "otype": 8690, + "otypes": 13567, + "ou": 280, + "oub": 12944, + "ouble": 15270, + "oubt": 47675, + "oubted": 15973, + "oubtedly": 16423, + "ouch": 7673, + "ouched": 30075, + "oud": 2778, + "ouf": 37116, + "oufl": 28012, + "oug": 20805, + "ough": 619, + "ought": 2917, + "ouk": 38960, + "oul": 2852, + "ould": 426, + "oulder": 17601, + "oulos": 19537, + "ouls": 42033, + "oult": 25955, + "oultry": 30056, + "oun": 977, + "ounce": 8652, + "ounced": 8918, + "ounces": 45982, + "ouncing": 18155, + "ound": 633, + "ounded": 6302, + "ounding": 9969, + "ounds": 3733, + "ounge": 20891, + "ount": 608, + "ountain": 18635, + "ounter": 6828, + "ounters": 15044, + "ounty": 17705, + "oup": 10486, + "ouple": 43846, + "our": 454, + "ourage": 32885, + "ource": 1668, + "ourced": 30555, + "ources": 2203, + "ourcing": 29985, + "oured": 8167, + "ourge": 14501, + "ourgeois": 18924, + "ouri": 10300, + "ouring": 21823, + "ourke": 49003, + "ourmet": 39094, + "ourn": 1798, + "ournal": 2549, + "ournals": 18408, + "ournament": 5138, + "ournaments": 16950, + "ourney": 5604, + "ourning": 31626, + "ours": 4662, + "ourse": 9047, + "ourses": 39975, + "ourt": 15666, + "ous": 516, + "ousand": 29910, + "ousands": 19983, + "ouse": 1076, + "oused": 29997, + "ousel": 48355, + "ouses": 11370, + "ousing": 12752, + "ously": 3481, + "ousse": 28396, + "oust": 23968, + "oustic": 21618, + "ouston": 6526, + "ousy": 41808, + "out": 448, + "oute": 13192, + "outed": 18534, + "outer": 39605, + "outh": 1536, + "outheast": 14474, + "outheastern": 27873, + "outher": 44262, + "outhern": 4927, + "outine": 28399, + "outing": 13660, + "output": 22915, + "outs": 5269, + "outside": 43435, + "outube": 9762, + "ouver": 10166, + "oux": 22193, + "ov": 709, + "ova": 10071, + "ovable": 21985, + "oval": 8325, + "ovan": 22590, + "ovation": 17882, + "ove": 659, + "oved": 2668, + "ovember": 3239, + "oven": 16206, + "over": 2502, + "overe": 33518, + "overed": 2557, + "overs": 13801, + "overty": 24085, + "overy": 6560, + "oves": 5241, + "ovi": 47297, + "ovic": 17215, + "ovich": 18198, + "ovie": 10739, + "ovies": 20526, + "oving": 5165, + "ovo": 18768, + "ovsky": 29716, + "ovy": 27796, + "ovych": 40822, + "ow": 322, + "owa": 8455, + "owan": 45197, + "oward": 46138, + "oway": 41788, + "owder": 34656, + "owe": 47097, + "owed": 6972, + "owell": 32829, + "ower": 789, + "owered": 10387, + "owers": 3618, + "owicz": 47982, + "owing": 7855, + "owitz": 20951, + "owl": 4883, + "owler": 30014, + "owment": 36569, + "own": 593, + "owned": 11990, + "owner": 18403, + "owners": 15605, + "ownt": 6887, + "owntown": 22748, + "ows": 1666, + "owship": 23473, + "owski": 12079, + "owsky": 47223, + "ox": 1140, + "oxic": 18047, + "oxicity": 44086, + "oxide": 28885, + "oxin": 39366, + "oxy": 23536, + "oy": 726, + "oya": 23790, + "oyal": 4815, + "oyd": 12192, + "oyer": 35301, + "oyle": 19802, + "oys": 19417, + "oz": 8590, + "ozo": 45149, + "ozy": 31060, + "ozyg": 49834, + "oÄŁ": 45492, + "oÄŁan": 48030, + "p": 79, + "pa": 8957, + "pac": 33587, + "pace": 10223, + "paced": 32416, + "paces": 43076, + "pack": 8002, + "package": 26495, + "packages": 43789, + "packed": 34860, + "packing": 41291, + "packs": 32377, + "pad": 15636, + "padding": 39231, + "page": 7700, + "pages": 31126, + "pai": 49712, + "paid": 20333, + "pain": 35436, + "painted": 47351, + "paio": 43491, + "pair": 24874, + "pak": 41091, + "pal": 18596, + "pan": 6839, + "panel": 35330, + "panic": 35843, + "pants": 38895, + "paper": 20189, + "papers": 40491, + "par": 1845, + "parable": 37064, + "paragraph": 20360, + "paralle": 37083, + "paralleled": 37859, + "param": 17143, + "params": 37266, + "pard": 26037, + "pared": 29190, + "paren": 11730, + "parency": 11944, + "parent": 8000, + "parents": 23743, + "park": 20928, + "parse": 29572, + "parser": 48610, + "part": 3911, + "partial": 47172, + "particip": 48013, + "particularly": 31722, + "partisan": 28226, + "parts": 42632, + "party": 10608, + "pas": 44429, + "pass": 6603, + "password": 28712, + "past": 30119, + "paste": 34274, + "pat": 8071, + "patch": 17147, + "path": 6978, + "pathic": 38829, + "pathy": 16786, + "patient": 26029, + "patrick": 29615, + "pattern": 33279, + "pause": 32125, + "pay": 15577, + "payer": 34987, + "payers": 45773, + "paying": 32629, + "payment": 37301, + "pb": 40842, + "pc": 14751, + "pd": 30094, + "pdf": 12315, + "pe": 431, + "peace": 22988, + "peak": 36729, + "peat": 18267, + "pec": 43106, + "pecially": 2333, + "pect": 806, + "pected": 7254, + "pecting": 35570, + "pection": 14978, + "pects": 38046, + "ped": 9124, + "pedia": 50235, + "pee": 39463, + "peed": 39492, + "peer": 33350, + "pees": 42623, + "peg": 22071, + "pei": 33265, + "pel": 30242, + "pell": 23506, + "pelled": 15803, + "pelling": 35025, + "pen": 3617, + "pend": 37038, + "pent": 16923, + "penter": 26419, + "people": 15332, + "per": 525, + "perate": 30052, + "perature": 21069, + "percent": 25067, + "pered": 13653, + "perfect": 25833, + "performance": 26585, + "performing": 37440, + "perhaps": 28998, + "peria": 38032, + "perial": 7629, + "pering": 21255, + "period": 41007, + "perm": 16321, + "peror": 8723, + "perors": 49406, + "pers": 19276, + "perse": 38696, + "person": 6259, + "personal": 22682, + "pert": 11766, + "perties": 18200, + "perture": 27286, + "perty": 9287, + "pes": 12272, + "pet": 6449, + "pex": 24900, + "pez": 46057, + "pg": 6024, + "ph": 746, + "pha": 7566, + "phabet": 19557, + "phal": 27451, + "phalt": 41942, + "phan": 19080, + "phans": 44464, + "phant": 33959, + "phas": 5902, + "phase": 40715, + "phasis": 28432, + "phe": 36335, + "phen": 31024, + "pher": 17042, + "pherd": 23111, + "pheus": 46421, + "phi": 34846, + "phia": 8193, + "phies": 19380, + "phil": 28864, + "philis": 49613, + "phis": 18691, + "phone": 4862, + "phones": 9708, + "phony": 23021, + "phot": 38611, + "photo": 23074, + "photos": 24729, + "php": 10121, + "phrase": 34675, + "phrine": 47723, + "phthal": 48118, + "phy": 6883, + "phys": 34411, + "physical": 42854, + "pi": 14415, + "pic": 16564, + "pick": 27729, + "picked": 41891, + "picking": 48864, + "pict": 18847, + "picture": 34053, + "pictured": 28852, + "pid": 35317, + "pie": 21749, + "piece": 12239, + "pieces": 34154, + "pill": 27215, + "pillar": 41643, + "pin": 11635, + "pine": 23908, + "ping": 13886, + "pins": 49556, + "pipe": 34360, + "pir": 4063, + "piracy": 8703, + "piration": 10514, + "pire": 5111, + "pired": 6474, + "pires": 17833, + "piring": 12987, + "pit": 15544, + "pite": 2595, + "pixel": 32515, + "pkg": 35339, + "pl": 489, + "place": 5372, + "placed": 21820, + "places": 23625, + "plain": 25638, + "plan": 11578, + "plane": 14382, + "planes": 22587, + "planet": 47427, + "planned": 36800, + "plant": 15060, + "plate": 6816, + "plates": 17041, + "platform": 24254, + "play": 1759, + "played": 21542, + "player": 7829, + "players": 32399, + "playing": 17916, + "plays": 26024, + "ple": 1154, + "pleasant": 21109, + "please": 29688, + "pled": 10137, + "plement": 26908, + "plementation": 32851, + "pler": 20053, + "ples": 2374, + "pless": 14570, + "plet": 37069, + "plete": 6677, + "pleted": 16838, + "pleting": 47130, + "pletion": 24547, + "plets": 46916, + "plex": 11141, + "plin": 46982, + "pling": 11347, + "plings": 47093, + "pload": 7304, + "plom": 7302, + "ploma": 35728, + "plot": 29487, + "ploy": 1420, + "plug": 16875, + "plugin": 33803, + "plugins": 37390, + "plus": 9541, + "ply": 2145, + "pm": 4426, + "pmwiki": 45321, + "pn": 21999, + "png": 11134, + "po": 7501, + "pocket": 31991, + "pod": 33320, + "podcast": 46032, + "point": 4122, + "pointer": 29536, + "pointers": 47809, + "points": 13033, + "poke": 35924, + "pol": 16104, + "pole": 36869, + "police": 38191, + "policy": 30586, + "polit": 34470, + "political": 23149, + "politics": 34127, + "poll": 30393, + "poly": 35428, + "pool": 7742, + "poon": 26743, + "poons": 27575, + "poor": 36672, + "pop": 12924, + "popular": 47568, + "population": 39748, + "por": 1819, + "pora": 38851, + "poral": 35738, + "porary": 5551, + "porate": 38133, + "port": 634, + "portation": 10189, + "ported": 9213, + "porter": 26634, + "porting": 26527, + "portion": 16864, + "ports": 3742, + "pos": 1930, + "posal": 40007, + "pose": 3455, + "posed": 29813, + "poses": 4832, + "posing": 32927, + "position": 9150, + "positive": 24561, + "posium": 35864, + "possibly": 39363, + "post": 7353, + "posted": 40578, + "posts": 24875, + "posure": 26205, + "pot": 13059, + "potion": 49324, + "pots": 40793, + "pound": 19568, + "pour": 48681, + "powder": 45855, + "power": 6477, + "powered": 12293, + "powerful": 44548, + "powers": 30132, + "pox": 42557, + "pp": 381, + "ppa": 44989, + "ppard": 43988, + "ppe": 27768, + "pped": 1496, + "ppel": 46357, + "ppelin": 48425, + "pper": 2848, + "pperc": 39921, + "ppers": 11799, + "pping": 2105, + "ppings": 37840, + "ppo": 16634, + "pport": 4926, + "pps": 41799, + "ppy": 14097, + "pr": 1050, + "pract": 29152, + "practice": 39541, + "pre": 3866, + "pread": 9681, + "pred": 28764, + "prefix": 40290, + "prem": 31605, + "prep": 46012, + "pres": 18302, + "present": 25579, + "president": 22540, + "press": 8439, + "pressed": 45477, + "pressure": 36151, + "pret": 5310, + "pretty": 37784, + "prev": 47050, + "pri": 3448, + "price": 20888, + "priced": 30883, + "prim": 19795, + "primary": 39754, + "prime": 35505, + "pring": 12667, + "print": 4798, + "printed": 49695, + "printf": 37435, + "println": 35235, + "prints": 17190, + "priority": 49336, + "prise": 7919, + "prises": 18166, + "prising": 14619, + "prisingly": 20859, + "prison": 35156, + "priv": 13776, + "private": 19734, + "pro": 1676, + "probably": 26949, + "problem": 45573, + "proc": 36942, + "process": 14681, + "processing": 36948, + "processor": 41341, + "proclaimed": 39865, + "produ": 18230, + "produced": 32783, + "producing": 36866, + "product": 11167, + "production": 25493, + "productive": 27781, + "products": 29498, + "prof": 5577, + "professional": 33163, + "profile": 13317, + "profit": 9183, + "profits": 31504, + "program": 23065, + "progress": 33723, + "project": 16302, + "projects": 42068, + "prom": 16963, + "pron": 31186, + "prone": 46330, + "proof": 13288, + "prop": 22930, + "properties": 48310, + "property": 26745, + "prot": 11235, + "protect": 35499, + "protected": 24326, + "protection": 42846, + "protein": 48693, + "prototype": 38124, + "prov": 15234, + "proven": 42874, + "provided": 41279, + "proxy": 36436, + "prus": 26440, + "ps": 862, + "psc": 27566, + "pse": 7752, + "psey": 39070, + "pson": 8430, + "psons": 31410, + "psy": 13764, + "psych": 23947, + "pt": 457, + "pta": 32283, + "pter": 42104, + "ptic": 17459, + "ptin": 43217, + "ption": 1159, + "ptions": 8544, + "ptive": 21665, + "ptives": 43903, + "ptoms": 35533, + "pton": 10972, + "ptr": 20692, + "ptroller": 44913, + "pty": 5835, + "pu": 19944, + "pub": 12984, + "public": 11377, + "published": 30271, + "puff": 49357, + "pull": 31216, + "pun": 35512, + "punk": 30354, + "pur": 14225, + "pure": 37424, + "purpose": 29983, + "push": 14689, + "put": 1996, + "putable": 48840, + "puted": 17128, + "puter": 10549, + "puters": 41510, + "puting": 48074, + "px": 8416, + "py": 9078, + "python": 29412, + "q": 80, + "qa": 20402, + "qi": 40603, + "ql": 13976, + "qq": 38227, + "qqa": 28794, + "qs": 48382, + "qt": 39568, + "qu": 421, + "qua": 39566, + "quad": 47003, + "qual": 13255, + "qualified": 22557, + "quality": 13237, + "quant": 40972, + "quart": 36008, + "quarter": 24385, + "quartered": 42508, + "quarters": 8230, + "que": 4188, + "quel": 31735, + "quer": 10819, + "querade": 33357, + "querque": 36119, + "query": 22766, + "ques": 13281, + "quest": 6138, + "question": 25652, + "quet": 21108, + "queue": 36560, + "quez": 22281, + "quick": 24209, + "quickShip": 39752, + "quickShipAvailable": 39753, + "quiet": 39624, + "quila": 43652, + "quin": 21915, + "quire": 29782, + "quished": 39737, + "quist": 30062, + "quit": 47391, + "quite": 37121, + "quote": 22708, + "qus": 45260, + "qv": 44179, + "r": 81, + "ra": 430, + "rab": 25619, + "rac": 11510, + "race": 16740, + "racial": 33001, + "racist": 41131, + "rack": 39638, + "ract": 974, + "racted": 20216, + "ractical": 36112, + "raction": 7861, + "ractions": 37810, + "ractive": 35587, + "ractor": 40450, + "racuse": 28268, + "rad": 6335, + "rade": 27585, + "radical": 42325, + "radio": 37004, + "radius": 42172, + "rador": 40368, + "rael": 2510, + "raf": 32188, + "raft": 1617, + "rafted": 30235, + "rag": 22562, + "rage": 8394, + "raged": 18312, + "ragon": 25753, + "rah": 11392, + "raham": 13220, + "rahim": 26922, + "raid": 7086, + "rail": 30224, + "rain": 3201, + "raine": 23440, + "rained": 13363, + "raining": 24674, + "raint": 16947, + "raints": 15517, + "raise": 40225, + "raised": 49309, + "raising": 32741, + "rait": 12907, + "raits": 27554, + "rak": 17716, + "rake": 33788, + "ral": 1373, + "rals": 30691, + "raltar": 45662, + "ram": 859, + "rama": 20058, + "rame": 28073, + "rament": 15141, + "ramer": 29172, + "ramid": 20255, + "ramids": 43591, + "rams": 9474, + "ran": 2596, + "rance": 8132, + "ranch": 25642, + "rand": 25192, + "random": 25120, + "rane": 14579, + "ranean": 16474, + "rang": 36985, + "range": 9521, + "ranged": 34457, + "ranging": 32319, + "rank": 43027, + "ranked": 28282, + "ranking": 28405, + "rano": 35823, + "rans": 26084, + "rant": 5250, + "rants": 15087, + "rap": 2416, + "rape": 13484, + "raped": 31951, + "raper": 38545, + "raph": 1470, + "raphic": 22262, + "raphics": 11549, + "rapnel": 48766, + "raq": 3766, + "rar": 20040, + "rared": 25122, + "rarily": 39000, + "rary": 11619, + "ras": 8847, + "rase": 22789, + "rast": 5685, + "rastructure": 6410, + "rat": 10366, + "ratch": 36722, + "rate": 4873, + "rated": 4111, + "rates": 9700, + "rather": 34330, + "rating": 8821, + "ration": 1358, + "rational": 20310, + "rations": 9143, + "rative": 13260, + "ratom": 44616, + "rator": 12392, + "rators": 18942, + "rats": 46714, + "ratulations": 30167, + "raud": 22863, + "raught": 44451, + "rav": 4108, + "rave": 5758, + "raved": 28366, + "ravel": 25843, + "ravings": 42335, + "raviolet": 44223, + "ravis": 16956, + "ravity": 16995, + "raw": 1831, + "rawdownload": 30905, + "rawdownloadcloneembedreportprint": 30906, + "rawl": 13132, + "rawled": 49263, + "rawler": 39464, + "rawling": 18771, + "rawn": 5791, + "rax": 32040, + "ray": 2433, + "rays": 20477, + "raz": 3247, + "razen": 36409, + "razil": 7098, + "razy": 5918, + "rb": 26145, + "rc": 6015, + "rd": 4372, + "re": 260, + "rea": 21468, + "reach": 16250, + "reaching": 30771, + "react": 45018, + "read": 961, + "readable": 46155, + "reader": 46862, + "reading": 25782, + "reads": 40779, + "ready": 1493, + "real": 5305, + "realDonaldTrump": 28024, + "reality": 46290, + "really": 27485, + "ream": 1476, + "reason": 41181, + "reasonable": 42275, + "reat": 630, + "reated": 15978, + "reath": 19367, + "reating": 34567, + "reatment": 21731, + "reau": 43611, + "reb": 34806, + "rec": 8344, + "recated": 31023, + "received": 47844, + "recent": 49921, + "reci": 29102, + "reciation": 33950, + "reck": 11402, + "recogn": 26243, + "recomm": 47335, + "record": 22105, + "recorded": 47398, + "rect": 2554, + "rection": 8243, + "recy": 20568, + "red": 445, + "redd": 26504, + "reddit": 10748, + "reddits": 36581, + "redible": 26260, + "redibly": 45779, + "redict": 17407, + "redients": 23320, + "redit": 7470, + "reditary": 47333, + "reditation": 42845, + "redited": 19465, + "redits": 20696, + "redo": 48454, + "ree": 631, + "reed": 15977, + "reek": 10316, + "reement": 10237, + "reements": 28919, + "reen": 1361, + "reens": 5681, + "reenshot": 26892, + "reenshots": 39551, + "rees": 6037, + "reet": 2871, + "reetings": 46648, + "ref": 5420, + "reference": 35790, + "reflect": 35051, + "reg": 2301, + "regate": 49373, + "regation": 43068, + "region": 36996, + "register": 30238, + "registered": 33736, + "regn": 28321, + "regnancy": 39982, + "regon": 8285, + "regor": 32288, + "regular": 16338, + "regulated": 27739, + "regulation": 27727, + "rehend": 23979, + "rehens": 7345, + "rehensible": 34718, + "rehensive": 36321, + "rek": 37818, + "rel": 2411, + "related": 5363, + "relation": 49501, + "relations": 39468, + "relative": 43762, + "release": 20979, + "released": 30147, + "relevant": 49659, + "religious": 27626, + "rell": 11252, + "rella": 20481, + "rely": 38015, + "rem": 2787, + "reme": 2182, + "remember": 38947, + "remlin": 17244, + "remote": 47960, + "remove": 28956, + "ren": 918, + "rence": 6784, + "rences": 34303, + "rench": 3532, + "renched": 23437, + "renches": 33650, + "rencies": 14038, + "rency": 5227, + "rend": 10920, + "render": 13287, + "rendered": 26238, + "rene": 25924, + "renheit": 34032, + "rent": 1156, + "rentice": 20098, + "rentices": 34368, + "reon": 21833, + "rep": 7856, + "repair": 49932, + "repe": 45956, + "repeat": 44754, + "repl": 35666, + "replace": 33491, + "reply": 47768, + "report": 13116, + "reported": 26263, + "reporting": 49914, + "reportprint": 30897, + "reports": 48922, + "repre": 10353, + "reprene": 10406, + "represent": 15603, + "represented": 33469, + "req": 42180, + "requ": 8897, + "requency": 28707, + "requent": 46018, + "requently": 37971, + "request": 25927, + "require": 46115, + "required": 35827, + "requires": 47911, + "requisite": 27614, + "requisites": 34075, + "rer": 11751, + "rera": 24420, + "rero": 34785, + "rers": 27736, + "res": 411, + "resa": 14625, + "rescent": 26505, + "research": 34033, + "resent": 2028, + "resents": 6629, + "reset": 42503, + "resh": 3447, + "reshold": 10126, + "resident": 8154, + "resist": 35119, + "resistant": 26128, + "resolution": 29268, + "resource": 31092, + "resources": 37540, + "resp": 4363, + "respect": 15008, + "respected": 48268, + "respective": 36990, + "respond": 5546, + "respons": 16733, + "response": 26209, + "responsible": 24358, + "responsive": 39772, + "ress": 601, + "ressed": 2790, + "resses": 16746, + "ressing": 11697, + "ression": 2234, + "ressive": 3314, + "resso": 33852, + "ressor": 44292, + "rest": 2118, + "restling": 48839, + "restrial": 23522, + "restricted": 49343, + "result": 20274, + "results": 43420, + "resy": 33000, + "ret": 1186, + "retch": 22592, + "retched": 27528, + "rete": 8374, + "reth": 40978, + "retion": 12307, + "rets": 8004, + "rett": 11489, + "rette": 42908, + "retty": 16100, + "return": 7783, + "rev": 18218, + "reve": 36955, + "reverse": 50188, + "review": 19023, + "reviewed": 32974, + "revolution": 32243, + "rew": 1809, + "rex": 21510, + "rey": 4364, + "reys": 46703, + "rez": 21107, + "rf": 41871, + "rg": 41345, + "rh": 17179, + "rha": 30268, + "ri": 380, + "ria": 7496, + "riad": 21244, + "riage": 4087, + "riages": 16451, + "rial": 4454, + "rian": 4484, + "rians": 19151, + "rib": 822, + "ribe": 4892, + "ribed": 8725, + "riber": 24735, + "ribes": 22090, + "ribing": 23098, + "rible": 5547, + "ribly": 16358, + "ribune": 44130, + "ribut": 2455, + "ribute": 4163, + "ributed": 6169, + "ributes": 7657, + "ribution": 3890, + "ric": 1173, + "rica": 30997, + "rical": 8143, + "rican": 37189, + "ricane": 11551, + "ricanes": 24881, + "rice": 20970, + "rices": 45977, + "rich": 7527, + "riched": 30486, + "ricia": 26654, + "rick": 5557, + "ricks": 23706, + "rics": 10466, + "rict": 2012, + "ricted": 20941, + "ricting": 42870, + "riction": 46214, + "ricular": 41001, + "rid": 6058, + "ridden": 40372, + "ride": 13154, + "rider": 49449, + "ridge": 12818, + "ridges": 32124, + "ridor": 44425, + "rie": 5034, + "ried": 2228, + "rief": 3796, + "rieg": 48429, + "riel": 11719, + "rien": 15355, + "riend": 1289, + "rient": 8289, + "rients": 18491, + "rier": 5277, + "riers": 8910, + "ries": 1678, + "riet": 42098, + "rieve": 30227, + "rieved": 28130, + "rieving": 37418, + "rification": 38763, + "rifice": 31932, + "rified": 41301, + "rift": 35357, + "rig": 4359, + "rigan": 35631, + "riger": 18096, + "right": 3506, + "righteous": 49955, + "rights": 28046, + "rik": 12602, + "rika": 28716, + "rike": 8760, + "rikes": 18445, + "riks": 39370, + "ril": 22379, + "rill": 20190, + "rils": 41408, + "rily": 28904, + "rim": 3036, + "riminal": 22157, + "rimination": 22550, + "rimp": 23750, + "rin": 12769, + "rina": 22267, + "rine": 7640, + "ring": 1806, + "ringe": 38229, + "rings": 33173, + "rington": 24833, + "rint": 22272, + "rio": 27250, + "rior": 7701, + "riors": 8657, + "riot": 36671, + "riots": 44447, + "riott": 43517, + "rious": 32527, + "rip": 5528, + "ripp": 14602, + "ript": 1968, + "ription": 2918, + "rique": 33865, + "rir": 29283, + "ris": 2442, + "rise": 17163, + "rises": 26064, + "rish": 37518, + "rising": 22610, + "risis": 42841, + "risk": 19121, + "risome": 47400, + "rison": 7426, + "rist": 1585, + "rists": 37326, + "rit": 799, + "ritch": 46510, + "rite": 6525, + "riter": 43407, + "rites": 23156, + "ritic": 46015, + "ritical": 36487, + "rities": 19491, + "rition": 10168, + "ritional": 21297, + "ritis": 27398, + "rito": 39834, + "ritten": 9108, + "rity": 10138, + "ritz": 29574, + "rium": 19172, + "rius": 48969, + "riv": 15104, + "rival": 43171, + "rive": 11590, + "rived": 36207, + "river": 38291, + "rix": 8609, + "riz": 47847, + "rl": 45895, + "rm": 26224, + "rn": 35906, + "ro": 305, + "roach": 28562, + "road": 6344, + "roads": 21372, + "rob": 22609, + "robat": 40655, + "robe": 25481, + "roc": 12204, + "rocal": 43270, + "rock": 10823, + "rocket": 30431, + "rod": 14892, + "rodu": 2076, + "roe": 20646, + "rog": 3828, + "rogen": 8648, + "rogens": 48686, + "rogram": 39529, + "roid": 3882, + "roit": 7775, + "rol": 3225, + "role": 18090, + "rolet": 33087, + "roleum": 21945, + "roll": 2487, + "rolled": 8375, + "roller": 10646, + "rollers": 36667, + "rolley": 42639, + "rolling": 18886, + "rollment": 48108, + "rolog": 40329, + "rology": 31142, + "rom": 398, + "roma": 42902, + "roman": 47119, + "romancer": 38211, + "rome": 5998, + "romeda": 32291, + "romising": 47112, + "rompt": 45700, + "romptu": 49255, + "romy": 50228, + "ron": 1313, + "rone": 33171, + "rones": 9821, + "rongh": 36670, + "ronic": 4565, + "ronics": 20844, + "rons": 12212, + "ront": 4298, + "rontal": 39321, + "roo": 42407, + "room": 3823, + "rooms": 9649, + "root": 15763, + "roots": 19150, + "rop": 1773, + "roph": 10051, + "rophe": 22599, + "rophic": 18191, + "ropolis": 25986, + "ropolitan": 14823, + "ropri": 9219, + "ropy": 28338, + "ror": 1472, + "rored": 34640, + "rors": 5965, + "ros": 4951, + "rosc": 45943, + "rose": 13698, + "rosis": 37172, + "ross": 1214, + "rosse": 39314, + "rosso": 21074, + "rossover": 23954, + "rost": 23341, + "rot": 10599, + "rote": 2519, + "rotein": 35574, + "roth": 33640, + "rots": 24744, + "rou": 472, + "rouch": 48626, + "roud": 5493, + "rough": 740, + "rought": 2909, + "round": 744, + "rounded": 39262, + "rounder": 45788, + "roup": 3233, + "roups": 14459, + "rous": 7596, + "rouse": 46494, + "route": 38629, + "rov": 18657, + "rovers": 31257, + "roversial": 46927, + "row": 808, + "rowd": 3986, + "rower": 46992, + "rowing": 11577, + "rown": 2053, + "rows": 8516, + "rowth": 13046, + "rox": 13907, + "roximately": 24378, + "roxy": 42059, + "roy": 3287, + "roying": 38295, + "rozen": 42005, + "rpm": 48235, + "rr": 21062, + "rs": 3808, + "rss": 42216, + "rt": 17034, + "ru": 622, + "ruary": 3728, + "rub": 25089, + "ruby": 49137, + "ruce": 26524, + "ruciating": 48404, + "ruck": 30915, + "ruct": 1356, + "ruction": 2762, + "ructose": 32275, + "ructure": 5620, + "rue": 24508, + "rued": 21556, + "ruff": 30622, + "rug": 2143, + "rugged": 21901, + "ruit": 4872, + "ruits": 50187, + "rule": 25135, + "rules": 38785, + "ruly": 34715, + "rum": 6582, + "rums": 45241, + "run": 5143, + "runner": 16737, + "runners": 36740, + "running": 20270, + "runs": 48381, + "runtime": 43282, + "rup": 12618, + "rupal": 34585, + "rupt": 3622, + "rupted": 31590, + "ruption": 6417, + "rupulous": 46272, + "rus": 14932, + "rush": 37357, + "rust": 11469, + "rw": 31653, + "rx": 40914, + "ry": 563, + "ryan": 29038, + "ryce": 28169, + "rying": 14992, + "rylic": 34554, + "ryn": 29441, + "rypt": 6012, + "rypted": 15109, + "ryption": 13168, + "rys": 19753, + "ryu": 49056, + "ré": 29350, + "s": 82, + "sa": 11400, + "sac": 30584, + "saf": 49585, + "safe": 21230, + "safety": 44708, + "said": 30079, + "sal": 21680, + "sale": 21378, + "sam": 37687, + "sama": 33843, + "same": 31642, + "sample": 39873, + "san": 12807, + "sand": 38142, + "sat": 49720, + "sav": 39308, + "save": 21928, + "saving": 29336, + "saw": 43439, + "say": 16706, + "sb": 36299, + "sbm": 32310, + "sburg": 30359, + "sburgh": 11931, + "sc": 1416, + "scale": 9888, + "scan": 35836, + "scape": 6794, + "scar": 13034, + "scene": 29734, + "scenes": 28123, + "sch": 20601, + "sche": 15952, + "schild": 35058, + "school": 14347, + "sci": 36216, + "science": 16801, + "scient": 25346, + "scientific": 41355, + "scill": 22360, + "scl": 38528, + "scope": 29982, + "score": 26675, + "scoring": 46536, + "screen": 9612, + "scrib": 40075, + "scribe": 12522, + "scribed": 47495, + "script": 12048, + "scription": 33584, + "scripts": 46521, + "scroll": 48728, + "sd": 21282, + "se": 325, + "sea": 8583, + "search": 12947, + "season": 6230, + "seat": 24073, + "sec": 2363, + "second": 12227, + "secondary": 38238, + "seconds": 43012, + "secret": 21078, + "sect": 8831, + "section": 5458, + "sectional": 44330, + "sections": 23946, + "sector": 34914, + "secure": 22390, + "security": 12961, + "secut": 4552, + "secution": 9534, + "sed": 36622, + "see": 3826, + "seed": 28826, + "seeing": 42041, + "seek": 36163, + "seekers": 47971, + "seeking": 38515, + "seen": 15898, + "sei": 36455, + "sein": 20719, + "sel": 741, + "selage": 45217, + "select": 19738, + "selected": 34213, + "selection": 49283, + "seless": 10950, + "self": 944, + "sell": 7255, + "seller": 32932, + "selling": 16473, + "sels": 14002, + "selves": 2020, + "sem": 43616, + "semb": 4428, + "semble": 15140, + "sembly": 5997, + "sen": 6248, + "senal": 10298, + "send": 21280, + "sense": 33819, + "sensitive": 30176, + "sent": 34086, + "separ": 25512, + "seq": 41068, + "sequ": 3107, + "sequence": 43167, + "sequent": 44399, + "sequently": 20415, + "ser": 2655, + "serial": 46911, + "series": 25076, + "serious": 34009, + "sers": 17720, + "serv": 3168, + "served": 45852, + "server": 15388, + "service": 15271, + "services": 30416, + "serving": 31293, + "ses": 8448, + "session": 29891, + "set": 2617, + "sets": 28709, + "sett": 17744, + "setting": 33990, + "settings": 33692, + "setup": 40406, + "seven": 26548, + "sever": 28116, + "severe": 43070, + "sex": 8044, + "sexual": 18338, + "sey": 4397, + "seys": 27717, + "sf": 28202, + "sg": 45213, + "sh": 1477, + "sha": 26270, + "shadow": 19106, + "shake": 32431, + "shall": 49271, + "shape": 43358, + "shaped": 16760, + "shapeshifter": 33929, + "share": 20077, + "shared": 28710, + "sharing": 21987, + "sharp": 48554, + "shaw": 32832, + "she": 7091, + "shed": 35762, + "sheet": 21760, + "sheets": 42011, + "shell": 29149, + "shi": 44019, + "shield": 26662, + "shift": 30846, + "shine": 19489, + "ship": 6720, + "ships": 26313, + "shire": 10932, + "shirt": 15600, + "shirts": 23231, + "shit": 16211, + "shock": 39563, + "shoot": 30408, + "shop": 24643, + "shore": 14640, + "short": 19509, + "shot": 9442, + "shots": 20910, + "should": 21754, + "show": 12860, + "shown": 42579, + "shows": 49596, + "shr": 36007, + "shut": 49625, + "si": 13396, + "sic": 21383, + "sid": 30255, + "side": 1589, + "sided": 22339, + "sie": 44524, + "sight": 18627, + "sighted": 44068, + "sign": 12683, + "signed": 32696, + "significant": 36591, + "sil": 18217, + "silver": 40503, + "sim": 14323, + "similar": 38610, + "simple": 36439, + "sin": 31369, + "since": 20777, + "sing": 12215, + "single": 29762, + "sis": 13429, + "sit": 48937, + "site": 15654, + "sites": 49315, + "six": 19412, + "size": 7857, + "sized": 13982, + "sk": 8135, + "ski": 20545, + "skill": 42401, + "skilled": 44885, + "skin": 20407, + "skinned": 41412, + "skip": 48267, + "skirts": 28383, + "sky": 15688, + "sl": 6649, + "slaught": 30929, + "slave": 36341, + "sle": 26738, + "sleep": 42832, + "slice": 48369, + "slot": 43384, + "slow": 38246, + "sm": 5796, + "small": 17470, + "smanship": 49820, + "smart": 27004, + "smith": 21453, + "smoking": 48783, + "sn": 16184, + "snap": 45380, + "so": 568, + "soDeliveryDate": 39811, + "soType": 39803, + "soc": 35634, + "social": 14557, + "socket": 44971, + "soever": 15485, + "sofar": 38649, + "soft": 4215, + "software": 43776, + "sol": 34453, + "sold": 24120, + "sole": 6753, + "solete": 23869, + "solid": 39390, + "some": 11246, + "someone": 46248, + "something": 18927, + "sometimes": 29810, + "son": 1559, + "song": 34050, + "sonian": 35202, + "soon": 36194, + "sorry": 41599, + "sort": 30619, + "sound": 23661, + "sounding": 39686, + "source": 10459, + "south": 35782, + "sov": 47272, + "sp": 2777, + "space": 13200, + "span": 12626, + "spawn": 48183, + "spe": 4125, + "speak": 47350, + "speaking": 25159, + "spec": 16684, + "special": 20887, + "species": 35448, + "specific": 11423, + "specified": 23599, + "spect": 4443, + "spection": 31308, + "spective": 49540, + "speech": 45862, + "speed": 12287, + "spell": 46143, + "spin": 39706, + "spir": 45564, + "spirit": 38685, + "spl": 22018, + "split": 35312, + "spoken": 19842, + "spons": 20587, + "sponsored": 25427, + "sports": 32945, + "spot": 20485, + "spr": 34975, + "spread": 43639, + "spring": 16469, + "sq": 31166, + "sql": 25410, + "squ": 16485, + "square": 23415, + "sr": 27891, + "src": 10677, + "ss": 824, + "ssh": 45824, + "ssl": 45163, + "sson": 16528, + "st": 301, + "sta": 38031, + "stab": 39029, + "stable": 31284, + "stack": 25558, + "stad": 24107, + "stadt": 38863, + "staff": 28120, + "stage": 14247, + "stained": 44279, + "stairs": 17617, + "stakes": 32540, + "staking": 40031, + "stal": 7757, + "stall": 32989, + "stals": 41076, + "stan": 14192, + "stanbul": 24179, + "stand": 1481, + "standard": 20307, + "standing": 5646, + "stant": 18797, + "stantial": 41321, + "star": 7364, + "stars": 30783, + "start": 9688, + "started": 46981, + "starter": 12339, + "starting": 38690, + "stasy": 31695, + "stat": 14269, + "state": 5219, + "stated": 21989, + "statement": 26090, + "states": 27219, + "static": 12708, + "station": 17529, + "stats": 34242, + "status": 13376, + "stay": 31712, + "std": 19282, + "ste": 4169, + "stead": 28044, + "steam": 21465, + "steamapps": 31881, + "sted": 30679, + "steel": 44822, + "steen": 42580, + "stein": 5714, + "stellar": 28732, + "stem": 927, + "sten": 26400, + "step": 9662, + "steps": 20214, + "ster": 1706, + "sterdam": 22506, + "sters": 5937, + "stery": 41991, + "sth": 48476, + "stic": 11268, + "stice": 43788, + "stick": 13915, + "sticks": 34810, + "still": 24219, + "stim": 42003, + "stitial": 18167, + "stock": 13578, + "stocks": 29522, + "ston": 3743, + "stone": 6440, + "stones": 28750, + "stood": 6501, + "stop": 11338, + "storage": 35350, + "store": 8095, + "stores": 43409, + "stories": 50164, + "storm": 12135, + "storms": 38563, + "story": 13571, + "stown": 27928, + "str": 2536, + "stra": 12044, + "stract": 8709, + "straight": 42729, + "strap": 26418, + "strate": 23104, + "stration": 12401, + "stre": 22853, + "stream": 5532, + "street": 25662, + "strength": 41402, + "stress": 41494, + "stretched": 49729, + "stri": 33565, + "strike": 33069, + "string": 8841, + "strings": 37336, + "strip": 36311, + "stro": 20661, + "stroke": 30757, + "strom": 20282, + "strong": 11576, + "stros": 48288, + "strous": 22501, + "stru": 19554, + "struct": 7249, + "structed": 16242, + "struction": 15019, + "strument": 43872, + "sts": 6448, + "stud": 19149, + "student": 50139, + "study": 44517, + "stuff": 41094, + "sty": 34365, + "style": 7635, + "styles": 47720, + "su": 2385, + "sub": 7266, + "subject": 32796, + "submit": 46002, + "success": 13138, + "successful": 17212, + "successfully": 37351, + "such": 10508, + "sudo": 24032, + "suff": 37333, + "sufficient": 46790, + "suggest": 47811, + "suit": 6063, + "suits": 16554, + "sum": 16345, + "summary": 49736, + "sun": 19155, + "sung": 9854, + "sup": 37330, + "super": 16668, + "supp": 18608, + "support": 11284, + "supported": 15999, + "sur": 11793, + "sure": 19532, + "surface": 42029, + "surprisingly": 41199, + "surv": 48846, + "susp": 40409, + "sv": 21370, + "sw": 2032, + "swe": 46280, + "sweet": 34751, + "swer": 17845, + "swers": 37848, + "swick": 30961, + "swing": 46737, + "switch": 31943, + "sword": 30553, + "sworth": 30567, + "sy": 1837, + "sych": 2924, + "sylv": 9163, + "sylvania": 9270, + "sym": 37047, + "syn": 28869, + "sync": 27261, + "sys": 17597, + "system": 10057, + "t": 83, + "ta": 8326, + "tab": 8658, + "table": 11487, + "taboola": 10658, + "tackle": 36346, + "tag": 12985, + "tags": 31499, + "tail": 13199, + "tailed": 34966, + "tails": 26404, + "tain": 3153, + "tained": 4644, + "taining": 7339, + "tainment": 10738, + "tains": 12143, + "take": 20657, + "taker": 30157, + "taking": 26103, + "tal": 39240, + "tale": 29429, + "talk": 16620, + "talking": 48186, + "tall": 35429, + "tan": 38006, + "tank": 28451, + "tap": 44335, + "tar": 18870, + "target": 16793, + "tarian": 14012, + "tarians": 28266, + "task": 35943, + "tax": 19290, + "tc": 23047, + "tch": 38664, + "td": 8671, + "te": 660, + "team": 15097, + "tec": 36281, + "tech": 13670, + "techn": 23873, + "technical": 47944, + "technology": 45503, + "ted": 1513, + "teen": 7821, + "teenth": 20283, + "tein": 22006, + "tek": 35424, + "tel": 37524, + "tele": 46813, + "tell": 33331, + "telling": 18072, + "tem": 11498, + "temp": 29510, + "template": 28243, + "ten": 1452, + "tenance": 8219, + "teness": 43205, + "ter": 353, + "tera": 49600, + "terday": 6432, + "tered": 4400, + "tering": 20212, + "terior": 14172, + "term": 4354, + "termin": 23705, + "termination": 41382, + "terms": 38707, + "tern": 759, + "ternal": 4358, + "ternally": 30262, + "terness": 34697, + "ternity": 19682, + "terror": 14007, + "terrorism": 19541, + "terrorist": 42002, + "ters": 1010, + "terson": 23192, + "tery": 11471, + "tes": 4879, + "tesque": 37422, + "test": 9288, + "tested": 39612, + "testers": 27205, + "testing": 33407, + "tests": 41989, + "tesy": 27090, + "tex": 16886, + "text": 5239, + "texture": 41293, + "tf": 27110, + "tg": 25297, + "th": 400, + "tha": 12898, + "thal": 11669, + "than": 14813, + "thank": 40716, + "thanks": 27547, + "that": 5562, + "the": 1169, + "their": 24571, + "thel": 37274, + "theless": 9603, + "them": 18855, + "theme": 43810, + "themed": 26966, + "then": 8524, + "thening": 20563, + "thens": 43895, + "ther": 490, + "there": 8117, + "thereal": 37827, + "thereum": 17733, + "these": 27218, + "they": 9930, + "thia": 31079, + "thin": 40871, + "thing": 1197, + "things": 27971, + "think": 14925, + "thinkable": 37510, + "thinking": 28973, + "third": 17089, + "thirds": 17936, + "thirst": 48832, + "this": 5661, + "thodox": 12836, + "thood": 12951, + "thora": 34261, + "those": 25591, + "though": 2016, + "thought": 28895, + "thouse": 23931, + "thread": 16663, + "threat": 19971, + "threatening": 26159, + "three": 15542, + "thren": 25941, + "thritis": 34043, + "thro": 26110, + "throp": 11360, + "through": 9579, + "throw": 16939, + "ths": 9998, + "thumbnails": 18670, + "thur": 11098, + "thus": 26239, + "thy": 20057, + "ti": 20259, + "tic": 13370, + "tical": 22869, + "tick": 42298, + "ticket": 43350, + "tics": 14094, + "tie": 36224, + "tier": 24948, + "ties": 4278, + "tif": 49929, + "tight": 33464, + "til": 47163, + "tile": 40927, + "tim": 16514, + "time": 2435, + "timeout": 48678, + "timer": 45016, + "times": 22355, + "tin": 43701, + "ting": 889, + "tiny": 44152, + "tion": 5378, + "tions": 45240, + "tip": 22504, + "tips": 41315, + "tis": 48010, + "title": 7839, + "tk": 30488, + "tl": 28781, + "tle": 7100, + "tm": 17209, + "tml": 20369, + "tmp": 22065, + "tn": 34106, + "tnc": 26642, + "to": 1462, + "toc": 40301, + "today": 40838, + "toe": 44579, + "together": 45525, + "toggle": 44256, + "token": 30001, + "told": 44040, + "tom": 39532, + "ton": 1122, + "tone": 41527, + "tones": 36257, + "tons": 27288, + "too": 18820, + "tool": 25981, + "tools": 31391, + "top": 4852, + "topia": 46575, + "topic": 26652, + "tops": 35011, + "tor": 13165, + "torn": 45910, + "total": 23350, + "touch": 29332, + "tower": 36170, + "town": 12735, + "tp": 34788, + "tr": 2213, + "tra": 9535, + "trace": 40546, + "track": 11659, + "tracking": 36280, + "tracks": 46074, + "trade": 25351, + "traditional": 36380, + "train": 27432, + "trained": 35311, + "training": 34409, + "trak": 44195, + "trans": 7645, + "transfer": 39437, + "transform": 35636, + "translation": 41519, + "trap": 46670, + "traumatic": 41521, + "travel": 35927, + "tre": 33945, + "treated": 37182, + "treatment": 42487, + "tree": 21048, + "tri": 28461, + "trial": 45994, + "trigger": 46284, + "trip": 39813, + "trl": 14859, + "tro": 23528, + "trop": 48385, + "true": 7942, + "trump": 40954, + "trust": 38087, + "truth": 35310, + "try": 28311, + "ts": 912, + "tsky": 30394, + "tsy": 34293, + "tt": 926, + "tta": 25854, + "tted": 28734, + "tten": 32407, + "ttes": 13036, + "tti": 35671, + "ttle": 23296, + "tto": 33955, + "ttp": 29281, + "tty": 42852, + "tu": 28047, + "tub": 37995, + "tube": 29302, + "tumblr": 45364, + "tun": 28286, + "tur": 36590, + "turn": 15344, + "turned": 33886, + "tv": 14981, + "tw": 4246, + "twitch": 31844, + "twitter": 6956, + "two": 11545, + "tx": 17602, + "txt": 14116, + "ty": 774, + "tyard": 30308, + "tymology": 43408, + "typ": 28004, + "type": 4906, + "types": 19199, + "typically": 48126, + "tz": 22877, + "u": 84, + "ua": 6413, + "uable": 7153, + "uably": 14632, + "uador": 24201, + "ual": 723, + "uala": 41944, + "uality": 25775, + "ually": 935, + "uan": 7258, + "uana": 5020, + "uania": 29743, + "uart": 19986, + "uary": 2838, + "uate": 4985, + "uated": 6605, + "uates": 12632, + "uating": 11927, + "uation": 2288, + "uations": 6055, + "uay": 30106, + "ub": 549, + "uba": 22013, + "ubb": 33670, + "ubby": 38393, + "ube": 3266, + "uben": 44636, + "uber": 18478, + "uberty": 34237, + "ubes": 29080, + "ubi": 29603, + "ubis": 46676, + "uble": 26664, + "ublic": 841, + "ublished": 33286, + "ubric": 29812, + "ubs": 23161, + "ubuntu": 32230, + "uc": 1229, + "uca": 43120, + "ucc": 18863, + "ucci": 27501, + "uce": 7234, + "uced": 19513, + "ucer": 48915, + "uces": 26873, + "uch": 794, + "ucha": 48022, + "uchi": 22200, + "uchin": 43416, + "uchs": 37533, + "uci": 42008, + "ucing": 25648, + "uck": 1347, + "ucked": 17758, + "ucker": 12603, + "ucket": 38811, + "ucking": 19296, + "uckland": 28789, + "uckle": 29687, + "uckles": 34083, + "ucks": 6238, + "ucky": 5309, + "ucl": 36616, + "ucle": 14913, + "uclear": 4016, + "uct": 4782, + "uction": 8110, + "uctions": 20847, + "uctive": 45857, + "uctor": 33029, + "ud": 463, + "uda": 15339, + "udd": 4185, + "udden": 16557, + "uddenly": 18865, + "udder": 41686, + "uddin": 44008, + "udding": 33926, + "uddle": 24500, + "uddled": 32745, + "uddy": 21584, + "ude": 2507, + "udeau": 16229, + "udeb": 46092, + "uded": 19289, + "uden": 44452, + "udence": 42581, + "uder": 26651, + "uders": 48739, + "udes": 8401, + "udge": 12587, + "udget": 29427, + "udging": 38840, + "udi": 47928, + "udic": 28673, + "udicrous": 33784, + "uding": 26570, + "udo": 12003, + "udos": 42418, + "uds": 24786, + "ue": 518, + "uebl": 45749, + "ued": 1739, + "uel": 2731, + "ueless": 38835, + "ueller": 16466, + "uer": 15573, + "uers": 42178, + "ues": 947, + "uesday": 3322, + "uese": 20506, + "uez": 14870, + "uf": 3046, + "ufact": 3603, + "uff": 1648, + "uffed": 18339, + "uffer": 13712, + "ufficient": 15267, + "uffle": 18137, + "uffs": 18058, + "uffy": 15352, + "ug": 1018, + "uga": 30302, + "ugal": 43778, + "ugar": 35652, + "uge": 2217, + "ugen": 42740, + "ugg": 6837, + "uggage": 29672, + "uggest": 29212, + "uggets": 26550, + "uggish": 36295, + "uggle": 33498, + "ugh": 6724, + "ught": 8951, + "ugi": 45659, + "ugs": 10339, + "ugu": 45284, + "uh": 7456, + "ui": 9019, + "uid": 27112, + "uild": 3547, + "uilding": 6963, + "uilt": 21955, + "uin": 48441, + "uine": 8327, + "uing": 4250, + "uint": 28611, + "uish": 32091, + "uit": 5013, + "uitive": 33740, + "uitous": 42412, + "uits": 15379, + "uity": 14834, + "uj": 23577, + "ujah": 46024, + "uk": 2724, + "uka": 14852, + "uke": 4649, + "uked": 48809, + "ukemia": 43505, + "ukes": 31469, + "uki": 11308, + "uko": 29794, + "ukong": 46654, + "uku": 33263, + "ul": 377, + "ula": 4712, + "ular": 934, + "ularity": 33737, + "ulas": 25283, + "ulate": 5039, + "ulated": 4817, + "ulates": 15968, + "ulating": 8306, + "ulation": 1741, + "ulations": 5768, + "ulative": 13628, + "ulator": 8927, + "ulators": 24325, + "ulatory": 21386, + "uld": 32926, + "ule": 2261, + "uled": 6309, + "ulence": 32401, + "ulent": 15288, + "uler": 18173, + "ules": 5028, + "ulet": 25132, + "ulf": 4754, + "ulhu": 36828, + "uli": 32176, + "ulia": 43640, + "ulic": 28575, + "uliffe": 45228, + "ulin": 11599, + "uling": 16619, + "ulk": 12171, + "ulkan": 31263, + "ull": 724, + "ulla": 47972, + "ullah": 38665, + "ullivan": 16040, + "ully": 2132, + "ulner": 5697, + "ulnerability": 40920, + "ulnerable": 38828, + "ulo": 43348, + "ulous": 6985, + "ulously": 18117, + "ulp": 29528, + "ulpt": 13327, + "uls": 5753, + "ulse": 9615, + "ulsion": 15204, + "ulsive": 22220, + "ult": 586, + "ultan": 30454, + "ultane": 9560, + "ultimate": 44818, + "ulton": 37944, + "ults": 8376, + "ultural": 8596, + "ulture": 6456, + "ulty": 10672, + "ultz": 22150, + "ulu": 15712, + "ulum": 14452, + "ulus": 23515, + "uly": 2062, + "ulz": 37314, + "um": 388, + "uma": 7487, + "umably": 31303, + "uman": 3778, + "umann": 40062, + "umar": 44844, + "umat": 27798, + "umatic": 16735, + "umb": 2178, + "umbai": 21645, + "umber": 4494, + "umbered": 26584, + "umbers": 17024, + "umbing": 28149, + "umble": 10344, + "umbled": 11137, + "umbledore": 25549, + "umbles": 25329, + "umbling": 14739, + "umblr": 15566, + "umbn": 10269, + "umbnail": 20566, + "umbnails": 13668, + "umbo": 29309, + "umbs": 18146, + "ume": 2454, + "umed": 18940, + "umen": 20080, + "ument": 1713, + "umenthal": 42300, + "uments": 2886, + "umer": 6975, + "umerable": 30831, + "umeric": 39223, + "umerous": 31385, + "umers": 31260, + "umes": 8139, + "umi": 12994, + "umin": 7230, + "uminati": 37200, + "uming": 12595, + "uminium": 35241, + "uminum": 13074, + "umm": 13929, + "ummer": 31647, + "ummies": 39578, + "ummy": 13513, + "umn": 4182, + "umni": 25402, + "umo": 43712, + "ump": 931, + "umped": 27073, + "umper": 15829, + "umph": 12875, + "umping": 25218, + "umps": 8142, + "umption": 24098, + "umpy": 32152, + "ums": 5700, + "umsy": 37133, + "un": 403, + "una": 9613, + "unal": 18835, + "unc": 19524, + "unch": 3316, + "unci": 49652, + "unciation": 24978, + "uncle": 29942, + "unct": 16260, + "unction": 4575, + "unctions": 46797, + "uncture": 39187, + "und": 917, + "unda": 46535, + "undai": 44591, + "under": 4625, + "unders": 41116, + "undle": 31249, + "undo": 41204, + "undown": 41609, + "undred": 3229, + "undreds": 20960, + "undrum": 46859, + "undy": 45459, + "une": 1726, + "uned": 40881, + "uner": 38886, + "unes": 4015, + "ung": 2150, + "ungle": 13687, + "uni": 35657, + "unia": 39934, + "unic": 46903, + "unicip": 9462, + "unin": 38453, + "uning": 46493, + "union": 24592, + "unique": 34642, + "unit": 20850, + "united": 41187, + "units": 41667, + "unity": 9531, + "universal": 40082, + "unk": 2954, + "unker": 21705, + "unknown": 34680, + "unks": 14125, + "unky": 28898, + "unless": 25252, + "unn": 20935, + "unning": 16596, + "unny": 16948, + "uno": 36909, + "uns": 13271, + "unsigned": 43375, + "unt": 2797, + "unta": 44424, + "untarily": 49605, + "untary": 26468, + "unte": 6311, + "until": 28446, + "untled": 46343, + "unts": 34115, + "untu": 11157, + "uo": 20895, + "uous": 5623, + "uously": 24987, + "up": 929, + "update": 19119, + "updated": 43162, + "upe": 48722, + "uper": 48568, + "uph": 25689, + "uphem": 45640, + "upid": 7658, + "upiter": 21251, + "uple": 29291, + "upload": 25850, + "uploads": 39920, + "upon": 27287, + "upp": 7211, + "upper": 45828, + "uppet": 44933, + "ups": 4739, + "upt": 37623, + "upuncture": 42223, + "ur": 333, + "ura": 5330, + "urable": 11970, + "uracy": 23843, + "urai": 16998, + "ural": 1523, + "urally": 20221, + "uran": 42211, + "urance": 3874, + "urances": 31741, + "uras": 17786, + "urat": 39928, + "urate": 15537, + "urated": 49293, + "uration": 3924, + "urations": 20074, + "urb": 5945, + "urban": 32679, + "urbed": 37694, + "urch": 2575, + "urchase": 18737, + "urches": 12730, + "urd": 2799, + "urden": 42568, + "urdue": 30345, + "urdy": 22876, + "ure": 495, + "ureau": 6262, + "ured": 1522, + "ureen": 49851, + "uren": 23532, + "urer": 15051, + "urers": 17496, + "ures": 942, + "urg": 3686, + "urga": 45098, + "urger": 32650, + "urgical": 31839, + "urgy": 38140, + "uri": 9900, + "uria": 34484, + "uries": 4740, + "uring": 870, + "urion": 40956, + "urious": 16421, + "uristic": 27915, + "urities": 10886, + "urity": 1684, + "urized": 44796, + "url": 6371, + "urn": 700, + "urnal": 35735, + "urned": 44866, + "uro": 1434, + "uron": 44372, + "urous": 29277, + "urrection": 21384, + "urred": 12808, + "urrence": 33928, + "urrencies": 28018, + "urrency": 13382, + "urrent": 6657, + "urring": 14924, + "urry": 16682, + "urs": 1834, + "ursday": 3479, + "urse": 12321, + "ursed": 17539, + "urses": 46998, + "ursion": 24197, + "ursions": 42394, + "ursive": 30753, + "ursor": 21471, + "urst": 24962, + "urt": 3325, + "urther": 1914, + "urtle": 17964, + "urtles": 25195, + "uru": 14717, + "urus": 31891, + "ury": 1601, + "us": 385, + "usa": 22064, + "usable": 31979, + "usage": 26060, + "usal": 6775, + "usalem": 10555, + "usat": 37937, + "usb": 43319, + "usc": 16241, + "uscript": 15817, + "use": 1904, + "used": 1484, + "user": 7220, + "userc": 43298, + "usercontent": 43667, + "username": 29460, + "users": 18417, + "uses": 2664, + "useum": 6744, + "ush": 1530, + "usha": 46213, + "ushed": 7474, + "usher": 34055, + "ushes": 17237, + "ushi": 17731, + "ushima": 30474, + "ushing": 8023, + "using": 3500, + "usion": 4241, + "usional": 41780, + "usions": 15880, + "usive": 11350, + "usk": 17990, + "usky": 42431, + "usp": 17723, + "usr": 14629, + "usra": 28352, + "uss": 1046, + "ussed": 29569, + "ussen": 35951, + "ussia": 31269, + "ussian": 31562, + "ussie": 43480, + "ussion": 11956, + "ussions": 21585, + "ussy": 14650, + "ust": 436, + "ustain": 19542, + "ustainable": 24196, + "usted": 8459, + "uster": 5819, + "usterity": 20761, + "usters": 13654, + "usting": 32620, + "ustom": 1824, + "ustomed": 22646, + "ustration": 44027, + "usual": 37850, + "usually": 23073, + "ut": 315, + "uta": 29822, + "utable": 18187, + "utan": 37878, + "utation": 7094, + "utations": 32855, + "utch": 7140, + "ute": 1133, + "uted": 7241, + "uten": 7809, + "utenant": 15340, + "utenberg": 19028, + "uter": 11894, + "uters": 5843, + "uterte": 23314, + "utes": 1769, + "utf": 40477, + "uth": 1071, + "uther": 12866, + "utherford": 46923, + "utherland": 45384, + "uthor": 1457, + "uti": 47966, + "utic": 18089, + "utical": 14224, + "utics": 48063, + "uties": 8249, + "util": 22602, + "utils": 26791, + "uting": 15129, + "ution": 1009, + "utions": 3508, + "utive": 8827, + "utm": 26841, + "uto": 9390, + "uton": 32894, + "utonium": 43078, + "utor": 38409, + "utorial": 44917, + "utory": 17957, + "utra": 35076, + "utral": 6815, + "uts": 5500, + "utsch": 40768, + "utsche": 30433, + "utsu": 36567, + "utt": 15318, + "utter": 10381, + "uttered": 46322, + "uttering": 33598, + "utters": 46973, + "utterstock": 28819, + "utton": 21115, + "uture": 1832, + "uty": 3935, + "utz": 27839, + "uu": 12303, + "uum": 13814, + "uv": 14795, + "uve": 45177, + "uvian": 50013, + "ux": 2821, + "uxe": 18095, + "uy": 4669, + "uyomi": 40012, + "uz": 10277, + "uzz": 4715, + "uzzle": 9625, + "v": 85, + "vP": 47322, + "va": 6862, + "vable": 23765, + "vacc": 37839, + "vae": 33353, + "vag": 29821, + "val": 2100, + "vale": 41161, + "valid": 12102, + "vals": 12786, + "value": 8367, + "valued": 39728, + "values": 27160, + "van": 10438, + "vana": 33175, + "vance": 19259, + "vant": 4520, + "vantage": 38815, + "var": 7785, + "vard": 10187, + "vari": 25641, + "variable": 45286, + "vas": 11017, + "vasive": 23747, + "vati": 36868, + "vation": 10473, + "vc": 28435, + "vd": 20306, + "ve": 303, + "vec": 35138, + "vector": 31364, + "ved": 1079, + "veh": 33892, + "vel": 626, + "veland": 9731, + "velength": 26623, + "vell": 29333, + "velop": 1091, + "velt": 18065, + "ven": 574, + "venant": 15330, + "venants": 43773, + "venge": 18674, + "venient": 48109, + "vent": 1151, + "venth": 20987, + "vention": 4018, + "ventional": 20405, + "ventions": 16593, + "ventory": 17158, + "venture": 5388, + "ventures": 10065, + "ventus": 35648, + "venue": 4080, + "ver": 332, + "verage": 1857, + "verages": 23118, + "verb": 19011, + "verbal": 46953, + "verbs": 46211, + "vere": 4119, + "vered": 21917, + "verend": 37713, + "verett": 33395, + "verified": 47684, + "vern": 933, + "vernight": 47443, + "verning": 13974, + "vernment": 11355, + "vers": 690, + "verse": 4399, + "versely": 21243, + "versible": 37393, + "version": 9641, + "versions": 47178, + "versive": 40099, + "verson": 49589, + "vert": 1851, + "verted": 13658, + "verting": 48820, + "vertis": 3346, + "vertisement": 4060, + "vertisements": 11371, + "vertising": 31809, + "verts": 24040, + "verty": 8077, + "very": 548, + "ves": 1158, + "vest": 4223, + "vet": 16809, + "vette": 33573, + "vey": 3304, + "veyard": 21563, + "vez": 33425, + "vg": 45119, + "vi": 8903, + "via": 8869, + "viation": 47625, + "vic": 25531, + "vice": 28281, + "vich": 49547, + "vict": 32433, + "vid": 16921, + "video": 15588, + "videos": 32861, + "vidia": 21744, + "vier": 49663, + "view": 1177, + "views": 33571, + "vik": 28930, + "viks": 45901, + "vil": 2991, + "vill": 41082, + "ville": 4244, + "vim": 31124, + "vin": 7114, + "vind": 50172, + "vine": 26818, + "ving": 1075, + "viol": 17069, + "violence": 37502, + "violent": 24498, + "vious": 1442, + "viously": 8647, + "vir": 37040, + "viron": 2268, + "vironment": 2468, + "vironments": 12103, + "virt": 48940, + "virtual": 32844, + "vis": 4703, + "vised": 16149, + "visible": 23504, + "vision": 10178, + "visor": 13131, + "visors": 27681, + "visory": 41783, + "visual": 41464, + "vity": 21319, + "vl": 19279, + "vm": 14761, + "vo": 13038, + "voc": 18893, + "voice": 38888, + "void": 19382, + "vol": 10396, + "volent": 29078, + "volt": 37764, + "volume": 29048, + "von": 26982, + "vor": 20867, + "vote": 27257, + "votes": 29307, + "vous": 31222, + "voy": 40024, + "vp": 36133, + "vr": 37020, + "vre": 43933, + "vs": 14259, + "vt": 36540, + "vu": 40939, + "vv": 25093, + "vy": 7670, + "w": 86, + "wa": 10247, + "wage": 21482, + "wagen": 29160, + "wagon": 41127, + "wait": 17077, + "wake": 48530, + "wal": 16783, + "wald": 21667, + "walk": 11152, + "walker": 20783, + "walking": 44065, + "wall": 11930, + "wallet": 44623, + "wan": 8149, + "wana": 49484, + "wang": 47562, + "want": 42949, + "war": 5767, + "ward": 904, + "wards": 2017, + "ware": 1574, + "wark": 48542, + "warm": 31975, + "warming": 48133, + "warn": 40539, + "warning": 43917, + "wart": 24657, + "warts": 26586, + "was": 9776, + "wash": 34670, + "washed": 45462, + "washer": 45146, + "washing": 38524, + "wat": 47261, + "watch": 8340, + "watching": 50042, + "water": 7050, + "waters": 41555, + "waukee": 15428, + "wav": 45137, + "wave": 19204, + "waves": 32569, + "way": 1014, + "wayne": 43932, + "ways": 1322, + "wb": 39346, + "wcs": 12712, + "wcsstore": 12781, + "wd": 16993, + "we": 732, + "weak": 38695, + "wealth": 14298, + "weapon": 28741, + "weapons": 33999, + "wear": 13927, + "weather": 23563, + "web": 12384, + "webkit": 43648, + "wed": 19103, + "weed": 39054, + "week": 10464, + "weekly": 45291, + "ween": 975, + "weeney": 41681, + "weet": 7277, + "wegian": 20684, + "wei": 42990, + "weight": 6551, + "weights": 43775, + "well": 4053, + "wen": 21006, + "went": 19963, + "wer": 15448, + "were": 22474, + "wered": 8279, + "west": 7038, + "western": 14197, + "wh": 1929, + "what": 10919, + "whatever": 39664, + "whe": 12491, + "wheel": 22001, + "whel": 30613, + "whelming": 36433, + "when": 12518, + "where": 3003, + "whether": 25356, + "which": 4758, + "while": 4514, + "white": 11186, + "who": 8727, + "whose": 38159, + "why": 22850, + "wi": 37686, + "wic": 22664, + "wich": 11451, + "wick": 16239, + "wid": 28029, + "wide": 4421, + "widget": 42655, + "width": 10394, + "wife": 22095, + "wig": 28033, + "wik": 20763, + "wiki": 15466, + "wikipedia": 31266, + "wild": 21992, + "will": 10594, + "win": 5404, + "wind": 7972, + "window": 17497, + "windows": 28457, + "wine": 39002, + "wing": 5469, + "wings": 48819, + "winner": 39791, + "winning": 14463, + "winter": 40078, + "wire": 21809, + "wired": 44236, + "wise": 3083, + "wit": 39289, + "witch": 42248, + "with": 4480, + "within": 33479, + "without": 19419, + "withstanding": 20701, + "witz": 28155, + "wives": 35234, + "wk": 43021, + "wl": 40989, + "wm": 26377, + "wn": 675, + "wo": 21638, + "wolf": 18829, + "wolves": 29664, + "woman": 8580, + "women": 25878, + "won": 26502, + "wood": 3822, + "woods": 39493, + "word": 4775, + "wordpress": 40346, + "words": 10879, + "work": 1818, + "worked": 32931, + "worker": 28816, + "workers": 22896, + "working": 16090, + "works": 5225, + "workshop": 38067, + "world": 6894, + "worldly": 49366, + "worm": 25323, + "worms": 49617, + "worn": 34565, + "worst": 41430, + "worth": 9268, + "worthiness": 48756, + "worthy": 18275, + "would": 19188, + "wow": 42773, + "wp": 24142, + "wr": 18351, + "wra": 29988, + "wrap": 37150, + "wrapper": 48553, + "wreck": 39238, + "wright": 29995, + "writ": 8933, + "write": 13564, + "writer": 16002, + "writers": 34422, + "writing": 16502, + "written": 15266, + "wrong": 36460, + "wrote": 42910, + "ws": 18504, + "wt": 46569, + "wu": 43812, + "ww": 1383, + "www": 2503, + "wx": 49345, + "wy": 21768, + "wyn": 27612, + "x": 87, + "xa": 27865, + "xb": 30894, + "xc": 25306, + "xd": 24954, + "xe": 27705, + "xes": 48169, + "xf": 26152, + "xff": 47596, + "xi": 29992, + "xia": 36072, + "xiety": 35753, + "xious": 48392, + "xit": 10198, + "xml": 19875, + "xon": 23813, + "xp": 42372, + "xs": 34223, + "xt": 742, + "xtap": 42915, + "xton": 22874, + "xual": 5541, + "xus": 40832, + "xx": 5324, + "xxx": 31811, + "xxxx": 12343, + "xxxxxxxx": 24223, + "xy": 5431, + "y": 88, + "ya": 3972, + "yah": 46848, + "yahoo": 40774, + "yan": 4121, + "yang": 17859, + "yard": 9413, + "yards": 33750, + "ycle": 39297, + "yd": 5173, + "yden": 43955, + "ydia": 30708, + "ye": 5948, + "yeah": 43669, + "year": 1941, + "years": 19002, + "yellow": 36022, + "yer": 9860, + "yers": 21200, + "yes": 8505, + "yet": 25907, + "yg": 35641, + "yi": 48111, + "ying": 1112, + "yip": 39666, + "yk": 48361, + "yl": 2645, + "ylan": 18554, + "yle": 2349, + "ylene": 37880, + "yles": 24327, + "yll": 25727, + "ylon": 15158, + "ylum": 11183, + "ym": 4948, + "ymes": 22009, + "ymm": 26621, + "ymph": 20896, + "yn": 2047, + "yna": 46434, + "ynam": 4989, + "ynamic": 28995, + "ynasty": 19488, + "ync": 13361, + "ynchron": 24871, + "ynchronous": 31301, + "yne": 39547, + "ynes": 25337, + "ynski": 40008, + "ynt": 33567, + "ynthesis": 44411, + "yo": 8226, + "yon": 19181, + "yond": 3243, + "you": 5832, + "young": 35465, + "your": 14108, + "yout": 32015, + "youtu": 32594, + "youtube": 11604, + "yp": 4464, + "ype": 2981, + "ypes": 9497, + "yr": 2417, + "yre": 35759, + "yrics": 14279, + "yright": 4766, + "yrights": 49158, + "yrim": 17302, + "yrinth": 21324, + "yrs": 48489, + "yrus": 21180, + "ys": 893, + "ysc": 28349, + "ysical": 15380, + "ysics": 23154, + "ysis": 3097, + "yson": 19699, + "yss": 33968, + "yssey": 23784, + "ystem": 6781, + "yt": 20760, + "yth": 5272, + "ythm": 34853, + "ython": 7535, + "yton": 31616, + "yu": 24767, + "yx": 28391, + "yy": 22556, + "yz": 45579, + "z": 89, + "za": 4496, + "zac": 49897, + "zag": 50183, + "zai": 35142, + "zan": 15201, + "zanne": 38395, + "zar": 41046, + "zb": 14969, + "zbek": 40413, + "zbollah": 21677, + "ze": 2736, + "zeb": 38130, + "zech": 15356, + "zed": 8863, + "zee": 42871, + "zees": 43727, + "zek": 43130, + "zel": 17396, + "zen": 4801, + "zens": 8247, + "zer": 9107, + "zero": 22570, + "zers": 47031, + "zes": 12271, + "zh": 23548, + "zhen": 46732, + "zhou": 38536, + "zi": 17027, + "zie": 49746, + "zig": 38262, + "zik": 47303, + "zilla": 16496, + "zin": 42140, + "zing": 9510, + "zinski": 46394, + "zip": 13344, + "zl": 48274, + "zman": 32054, + "zn": 47347, + "zo": 10872, + "zon": 26361, + "zona": 7551, + "zone": 11340, + "zos": 37925, + "zsche": 37467, + "zu": 27624, + "zx": 42592, + "zy": 7357, + "zyk": 46355, + "zyme": 24266, + "zynski": 47143, + "zz": 3019, + "zza": 34443, + "zzi": 46218, + "zzle": 26413, + "zzo": 47802, + "zzy": 31570, + "{": 90, + "{\"": 4895, + "{\\": 31478, + "{{": 27007, + "|": 91, + "||": 15886, + "||||": 42210, + "}": 92, + "}\"": 36786, + "})": 30072, + "});": 22133, + "},": 5512, + "},\"": 9063, + "},{\"": 8762, + "}.": 27422, + "}:": 38362, + "};": 19629, + "}\\": 32239, + "}{": 18477, + "}}": 11709, + "}}}": 42535, + "~": 93, + "~~": 4907, + "~~~~": 8728, + "~~~~~~~~": 15116, + "~~~~~~~~~~~~~~~~": 27156, + "¡": 94, + "¢": 95, + "£": 96, + "£ı": 6408, + "¤": 97, + "¥": 98, + "¥µ": 35069, + "¥ŀ": 13945, + "¦": 99, + "§": 100, + "¨": 101, + "©": 102, + "©¶æ": 47490, + "©¶æ¥µ": 47703, + "ª": 103, + "«": 104, + "«ĺ": 45865, + "¬": 105, + "¬¼": 45539, + "®": 106, + "¯": 107, + "°": 108, + "±": 109, + "²": 110, + "²¾": 39333, + "³": 111, + "´": 112, + "µ": 113, + "¶": 114, + "¶æ": 35050, + "¶ħ": 41678, + "·": 115, + "¸": 116, + "¹": 117, + "º": 118, + "»": 119, + "»Ĵ": 36596, + "¼": 120, + "½": 121, + "¾": 122, + "¿": 123, + "¿½": 4204, + "À": 124, + "Á": 125, + "Â": 126, + "¢": 44359, + "£": 14988, + "§": 16273, + "¨": 37102, + "©": 16224, + "«": 24328, + "®": 7461, + "®,": 45088, + "¯": 5196, + "¯¯": 5367, + "¯¯¯¯": 8980, + "¯¯¯¯¯¯¯¯": 15243, + "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯": 27006, + "°": 7200, + "±": 22519, + "²": 31185, + "´": 18265, + "¶": 26604, + "·": 9129, + "··": 35147, + "º": 36165, + "»": 17730, + "½": 23141, + "Âł": 1849, + "³³": 4603, + "³³³": 33477, + "³³³³": 8828, + "³³³³³³³³": 17811, + "³³³³³³³³³³³³³³³³": 39172, + "ÂŃ": 3907, + "Ã": 127, + "á": 6557, + "án": 21162, + "ás": 40138, + "â": 22940, + "ã": 26102, + "ão": 28749, + "ä": 11033, + "Ã¥": 29090, + "æ": 21241, + "ç": 16175, + "ça": 50041, + "è": 14064, + "ère": 35979, + "é": 2634, + "ée": 22161, + "én": 35942, + "ér": 42445, + "és": 20954, + "ét": 25125, + "ê": 25792, + "ë": 26689, + "î": 34803, + "ï": 26884, + "ïve": 38776, + "ð": 27214, + "ñ": 12654, + "ña": 30644, + "ño": 31329, + "ó": 10205, + "ón": 18840, + "ô": 27083, + "ö": 9101, + "ön": 48863, + "ör": 30570, + "ø": 24172, + "ú": 21356, + "û": 42324, + "ü": 9116, + "ür": 25151, + "ÃĤ": 5523, + "Ãĥ": 5746, + "ÃĥÃĤ": 5808, + "ÃĥÃĤÃĥÃĤ": 5815, + "ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ": 9364, + "ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ": 14827, + "ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ": 23090, + "ÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤÃĥÃĤ": 35496, + "Ãī": 38351, + "Ãį": 38638, + "ÃįÃį": 43569, + "ÃĹ": 12906, + "ÃĽ": 34543, + "ÃĽÃĽ": 48396, + "ÃŁ": 39683, + "Ãł": 24247, + "ÃŃ": 8836, + "ÃŃa": 29690, + "ÃŃn": 39588, + "ÃŃs": 41200, + "Ä": 128, + "Ä«": 18962, + "ı": 30102, + "Äģ": 10235, + "Äĩ": 38325, + "Äį": 46195, + "Äĵ": 27092, + "ÄŁ": 33133, + "Å": 129, + "Å¡": 32790, + "Å«": 20317, + "ÅĤ": 41615, + "Åį": 13090, + "ÅŁ": 46481, + "Æ": 130, + "Ç": 131, + "È": 132, + "É": 133, + "Ê": 134, + "Ë": 135, + "ËĪ": 45990, + "Ëľ": 41185, + "Ì": 136, + "̶": 48869, + "Í": 137, + "Î": 138, + "α": 17394, + "β": 26638, + "γ": 42063, + "ε": 30950, + "ι": 29945, + "κ": 43000, + "λ": 39377, + "μ": 34703, + "ν": 26180, + "ο": 26517, + "Ï": 139, + "ÏĢ": 46582, + "Ïģ": 33643, + "ÏĤ": 35558, + "Ïĥ": 38392, + "ÏĦ": 32830, + "Ïī": 49535, + "Ð": 140, + "а": 16142, + "в": 38857, + "д": 43666, + "е": 16843, + "и": 18849, + "к": 31583, + "л": 30143, + "м": 43108, + "н": 22177, + "о": 15166, + "оÐ": 25443, + "Ñ": 141, + "ÑĢ": 21169, + "Ñģ": 21727, + "ÑĤ": 20375, + "Ñĥ": 35072, + "Ñĭ": 45035, + "ÑĮ": 45367, + "Ñı": 40623, + "Ò": 142, + "Ó": 143, + "Ô": 144, + "Õ": 145, + "Ö": 146, + "Ö¼": 47903, + "×": 147, + "ר": 37778, + "ש": 50227, + "ת": 42064, + "×IJ": 42973, + "×ij": 49603, + "×Ķ": 38269, + "×ķ": 27072, + "×Ļ": 25529, + "×Ļ×": 33951, + "׾": 40010, + "×ŀ": 49168, + "Ø": 148, + "ا": 12919, + "اØ": 34247, + "اÙĦ": 23525, + "ب": 39848, + "Ø©": 45632, + "ت": 41486, + "د": 38843, + "ر": 26897, + "س": 45692, + "ع": 44690, + "Ù": 149, + "ÙĦ": 13862, + "Ùħ": 25405, + "ÙĨ": 23338, + "Ùĩ": 29519, + "ÙĪ": 30335, + "ÙĬ": 22654, + "Ùİ": 24333, + "ÙIJ": 44208, + "ÙĴ": 48763, + "Ú": 150, + "Û": 151, + "Ü": 152, + "Ý": 153, + "Þ": 154, + "ß": 155, + "à": 156, + "à¤": 11976, + "ा": 48077, + "à¥": 24231, + "à¦": 48071, + "à¨": 19469, + "à©": 43297, + "à¸": 19567, + "à¹": 31479, + "à¼": 41340, + "á": 157, + "áµ": 39611, + "á¸": 41585, + "á¹": 26292, + "á½": 45495, + "â": 158, + "âĢ": 447, + "âĢ¢": 3581, + "âĢ¢âĢ¢": 22838, + "âĢ¢âĢ¢âĢ¢âĢ¢": 39967, + "â̦": 1399, + "â̦\"": 9962, + "â̦)": 38418, + "â̦.": 11580, + "â̦.\"": 50248, + "â̦..": 30864, + "â̦]": 21476, + "â̦â̦": 7398, + "â̦â̦â̦â̦": 15864, + "â̦â̦â̦â̦â̦â̦â̦â̦": 29146, + "â̲": 17478, + "â̳": 12237, + "âĢĭ": 9525, + "âĢĭâĢĭ": 39009, + "âĢİ": 48261, + "âĢIJ": 9333, + "âĢij": 20977, + "âĢĵ": 1906, + "âĢĵâĢĵ": 25608, + "âĢĶ": 960, + "âĢĶ\"": 19056, + "âĢĶ-": 44839, + "âĢĶâĢĶ": 4500, + "âĢĶâĢĶâĢĶâĢĶ": 8184, + "âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ": 14950, + "âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ": 30542, + "âĢķ": 31857, + "âĢł": 33912, + "âģ": 46256, + "âĤ¬": 26391, + "âĦ¢": 8151, + "âĦ¢:": 41333, + "âĨ": 29705, + "âĨij": 48541, + "âĨĴ": 39310, + "âĪ": 24861, + "âĪĴ": 14095, + "âī": 35705, + "âĵĺ": 45563, + "âĶ": 6552, + "âĶĢ": 7280, + "âĶĢâĶĢ": 8418, + "âĶĢâĶĢâĶĢâĶĢ": 16068, + "âĶĢâĶĢâĶĢâĶĢâĶĢâĶĢâĶĢâĶĢ": 28542, + "âĶģ": 47486, + "âķ": 22880, + "âķIJ": 28670, + "âķIJâķIJ": 31732, + "âĸ": 5008, + "âĸ¬": 47530, + "âĸ¬âĸ¬": 49843, + "âĸº": 45717, + "âĸĢ": 44033, + "âĸĦ": 45786, + "âĸĪ": 8115, + "âĸĪâĸĪ": 9968, + "âĸĪâĸĪâĸĪâĸĪ": 20503, + "âĸĪâĸĪâĸĪâĸĪâĸĪâĸĪâĸĪâĸĪ": 49527, + "âĸij": 22110, + "âĸijâĸij": 27534, + "âĸĴ": 40516, + "âĸĵ": 38626, + "âĸł": 29316, + "âĹ": 15926, + "âĹ¼": 48366, + "âĹı": 28133, + "âĺ": 24583, + "âĺħ": 15583, + "âĺħâĺħ": 28353, + "âĺĨ": 35283, + "âĻ": 17992, + "âĻ¥": 39908, + "âϦ": 41298, + "âľ": 26486, + "âĿ": 32391, + "ã": 159, + "ãĢ": 5099, + "ãĢģ": 23513, + "ãĢĤ": 16764, + "ãĢĮ": 13697, + "ãĢį": 13700, + "ãĢİ": 40493, + "ãĢı": 40549, + "ãĢIJ": 31854, + "ãĢij": 31817, + "ãģ": 2515, + "ãģ£": 33180, + "ãģ¦": 28134, + "ãģ§": 30640, + "ãģ¨": 30201, + "ãģª": 26945, + "ãģ«": 28618, + "ãģ®": 5641, + "ãģ®å": 15474, + "ãģ®å®": 49149, + "ã쮿": 27032, + "ãģ®ç": 17683, + "ãģ®é": 33426, + "ãģ®éŃĶ": 34633, + "ãģ¯": 31676, + "ãģ¾": 30159, + "ãģĤ": 40948, + "ãģĦ": 18566, + "ãģĨ": 29557, + "ãģĭ": 27370, + "ãģĮ": 35585, + "ãģį": 33778, + "ãģı": 31917, + "ãģĵ": 46036, + "ãģķ": 43357, + "ãģĹ": 22180, + "ãģĻ": 33623, + "ãģŁ": 25224, + "ãģł": 46777, + "ãĤ": 1792, + "ãĤ¡": 25362, + "ãĤ¢": 11839, + "ãĤ¢ãĥ«": 47794, + "ãĤ£": 16646, + "ãĤ¤": 11482, + "ãĤ¤ãĥĪ": 42396, + "ãĤ¦": 16165, + "ãĤ¦ãĤ¹": 34103, + "ãĤ§": 24806, + "ãĤ¨": 23544, + "ãĤ¨ãĥ«": 46948, + "ãĤ©": 37662, + "ãĤª": 20513, + "ãĤ«": 21763, + "ãĤ¬": 23728, + "ãĤ®": 43899, + "ãĤ¯": 14099, + "ãĤ°": 26095, + "ãĤ±": 41658, + "ãĤ³": 24679, + "ãĤ´": 17933, + "ãĤ´ãĥ³": 22997, + "ãĤµ": 26503, + "ãĤ¶": 48458, + "ãĤ·": 15661, + "ãĤ·ãĥ£": 39467, + "ãĤ¸": 21091, + "ãĤ¹": 8943, + "ãĤ¹ãĥĪ": 43302, + "ãĤº": 37426, + "ãĤ»": 47271, + "ãĤ¼": 30432, + "ãĤ¼ãĤ¦ãĤ¹": 43361, + "ãĤ½": 47559, + "ãĤ¿": 23376, + "ãĤĤ": 43266, + "ãĤī": 36853, + "ãĤĬ": 28255, + "ãĤĭ": 25748, + "ãĤĮ": 39258, + "ãĤĴ": 31758, + "ãĤĵ": 22174, + "ãĤŃ": 25084, + "ãĥ": 1209, + "ãĥ¡": 26998, + "ãĥ¢": 40361, + "ãĥ£": 23131, + "ãĥ¤": 37858, + "ãĥ¥": 24440, + "ãĥ©": 9263, + "ãĥ©ãĥ³": 48204, + "ãĥª": 12675, + "ãĥ«": 9202, + "ãĥ¬": 24186, + "ãĥ¯": 25589, + "ãĥ¯ãĥ³": 42983, + "ãĥ³": 6527, + "ãĥ³ãĤ¸": 45823, + "ãĥ´": 29752, + "ãĥ´ãĤ¡": 44444, + "ãĥ»": 4707, + "ãĥ¼": 6312, + "ãĥ¼ãĤ¯": 42869, + "ãĥ¼ãĥ": 12045, + "ãĥ¼ãĥ«": 43353, + "ãĥ¼ãĥ³": 31708, + "ãĥ¼ãĥĨ": 44326, + "ãĥ¼ãĥĨãĤ£": 44686, + "ãĥĢ": 27852, + "ãĥģ": 31090, + "ãĥĥ": 14777, + "ãĥĥãĤ¯": 35702, + "ãĥĥãĥĪ": 35799, + "ãĥĥãĥī": 45435, + "ãĥĦ": 41115, + "ãĥĨ": 24336, + "ãĥĨãĤ£": 44431, + "ãĥĩ": 21959, + "ãĥĩãĤ£": 40629, + "ãĥĪ": 13298, + "ãĥī": 13765, + "ãĥīãĥ©": 19073, + "ãĥīãĥ©ãĤ´ãĥ³": 24731, + "ãĥĬ": 26229, + "ãĥĭ": 30165, + "ãĥį": 44916, + "ãĥİ": 25053, + "ãĥı": 37412, + "ãĥIJ": 29659, + "ãĥij": 32546, + "ãĥĵ": 36922, + "ãĥķ": 17681, + "ãĥķãĤ¡": 41939, + "ãĥķãĤ©": 48457, + "ãĥĸ": 24001, + "ãĥĹ": 30965, + "ãĥĺ": 23363, + "ãĥĺãĥ©": 34473, + "ãĥĻ": 35604, + "ãĥŀ": 20115, + "ãĥŁ": 27542, + "ãĥł": 25795, + "ãĥŃ": 16253, + "ãħĭ": 35098, + "ãħĭãħĭ": 40345, + "ä": 160, + "ä¸": 10310, + "ä¸Ģ": 31660, + "ä¸ī": 49011, + "ä¸Ĭ": 41468, + "ä¸į": 38834, + "ä¸Ń": 40792, + "ä¹": 20046, + "ä¹ĭ": 45298, + "äº": 12859, + "人": 21689, + "äºĶ": 49390, + "ä»": 20015, + "代": 47987, + "ä¼": 27670, + "ä½": 19526, + "使": 45635, + "ä½ľ": 43291, + "ä¿": 46479, + "å": 161, + "å£": 18004, + "士": 18803, + "å¤": 13783, + "大": 32014, + "天": 25465, + "å¥": 25001, + "女": 42637, + "å¦": 36685, + "å§": 34650, + "å§«": 40235, + "å®": 22522, + "å¯": 43380, + "å°": 22887, + "å°Ĩ": 49546, + "å·": 32432, + "å¸": 30585, + "å¹": 33176, + "åº": 41753, + "å¼": 28156, + "å½": 37605, + "å¾": 36181, + "å¿": 33232, + "åĤ": 43636, + "åħ": 17739, + "åħī": 46268, + "åĨ": 37863, + "åĩ": 49035, + "åĪ": 26344, + "åī": 30298, + "åĬ": 27950, + "åĭ": 47947, + "åĮ": 44293, + "åį": 39355, + "åİ": 43889, + "åı": 20998, + "åIJ": 28938, + "åij": 37772, + "åĽ": 32368, + "åľ": 28839, + "åŃ": 27764, + "åŃIJ": 36310, + "æ": 162, + "æ©": 43897, + "æ©Ł": 49960, + "æ°": 36365, + "æ³": 37345, + "æµ": 38184, + "æĢ": 45250, + "æĥ": 46349, + "æĦ": 35707, + "æĪ": 22755, + "æĪ¦": 36704, + "æī": 33699, + "æķ": 46763, + "æĸ": 23877, + "æĸ¹": 43095, + "æĹ": 33768, + "æĺ": 23626, + "æĺ¯": 42468, + "æľ": 17312, + "æĿ": 30266, + "æł": 43718, + "æŃ": 29826, + "æŃ¦": 49476, + "ç": 163, + "ç¥ŀ": 15351, + "ç«": 44165, + "ç·": 45784, + "çĦ": 47078, + "çī": 31965, + "çīĪ": 48304, + "çĭ": 45379, + "çİĭ": 25581, + "çIJ": 49426, + "çĶ": 18796, + "çͰ": 35572, + "çĶŁ": 37955, + "çķ": 45911, + "çļ": 19021, + "çļĦ": 21410, + "çĽ": 33566, + "çľ": 40367, + "è": 164, + "è¡": 26193, + "è£": 32518, + "è£ħ": 35318, + "è¦": 17358, + "è¦ļéĨĴ": 23614, + "èª": 45739, + "è¯": 46237, + "è»": 43102, + "è¿": 32573, + "èĢ": 32003, + "èĢħ": 38519, + "èĥ": 47797, + "èĪ": 48958, + "é": 165, + "é£": 45617, + "é»Ĵ": 44112, + "é¾": 11737, + "é¾į": 11885, + "é¾įå": 19049, + "é¾įå¥": 39820, + "é¾įå¥ij士": 39821, + "é¾įåĸļ士": 33454, + "éĢ": 34460, + "éģ": 34402, + "éĥ": 32849, + "éĩ": 34932, + "éĸ": 38461, + "éĹ": 29785, + "éĹĺ": 42234, + "éļ": 49694, + "éĽ": 37239, + "éŃĶ": 20804, + "ê": 166, + "ë": 167, + "ëĭ": 46695, + "ì": 168, + "ìĿ": 35975, + "í": 169, + "íķ": 47991, + "î": 170, + "îĢ": 29773, + "ï": 171, + "ï¸": 35266, + "ï¸ı": 37929, + "�": 4210, + "��": 6353, + "���": 48585, + "����": 12100, + "ð": 172, + "ðĿ": 47728, + "ðŁ": 8582, + "ðŁij": 41840, + "ðŁĺ": 47249, + "ñ": 173, + "ò": 174, + "ó": 175, + "ô": 176, + "õ": 177, + "ö": 178, + "÷": 179, + "ø": 180, + "ù": 181, + "ú": 182, + "û": 183, + "ü": 184, + "ý": 185, + "þ": 186, + "ÿ": 187, + "Ā": 188, + "ā": 189, + "Ă": 190, + "ă": 191, + "Ą": 192, + "ą": 193, + "Ć": 194, + "ć": 195, + "Ĉ": 196, + "ĉ": 197, + "Ċ": 198, + "ĊÂł": 44320, + "ĊĊ": 628, + "ċ": 199, + "Č": 200, + "č": 201, + "Ď": 202, + "ď": 203, + "Đ": 204, + "đ": 205, + "Ē": 206, + "ē": 207, + "Ĕ": 208, + "ĕ": 209, + "Ė": 210, + "ė": 211, + "Ę": 212, + "ę": 213, + "Ě": 214, + "ě": 215, + "Ĝ": 216, + "ĝ": 217, + "Ğ": 218, + "ğ": 219, + "Ġ": 220, + "Ġ!": 5145, + "Ġ!!": 37867, + "Ġ!=": 14512, + "Ġ\"": 366, + "Ġ\"\"": 13538, + "Ġ\"\"\"": 37227, + "Ġ\"#": 25113, + "Ġ\"$": 17971, + "Ġ\"$:/": 32047, + "Ġ\"%": 36521, + "Ġ\"'": 24018, + "Ġ\"(": 30629, + "Ġ\"+": 43825, + "Ġ\",": 33172, + "Ġ\"-": 27444, + "Ġ\".": 27071, + "Ġ\"...": 27896, + "Ġ\"/": 12813, + "Ġ\"<": 33490, + "Ġ\"@": 44212, + "Ġ\"[": 12878, + "Ġ\"\\": 37082, + "Ġ\"_": 45434, + "Ġ\"{": 45144, + "Ġ\"â̦": 29368, + "Ġ#": 1303, + "Ġ##": 22492, + "Ġ###": 44386, + "Ġ#####": 46424, + "Ġ$": 720, + "Ġ$$": 32382, + "Ġ$(": 29568, + "Ġ$\\": 39280, + "Ġ$_": 40111, + "Ġ${": 25597, + "Ġ%": 4064, + "Ġ%%": 43313, + "Ġ&": 1222, + "Ġ&&": 11405, + "Ġ'": 705, + "Ġ''": 10148, + "Ġ'(": 29513, + "Ġ',": 46083, + "Ġ'.": 45302, + "Ġ'/": 31051, + "Ġ'[": 44438, + "Ġ(": 357, + "Ġ(!": 22759, + "Ġ(\"": 5855, + "Ġ(#": 17426, + "Ġ($": 7198, + "Ġ($)": 45491, + "Ġ(%": 37633, + "Ġ(%)": 11509, + "Ġ(&": 35494, + "Ġ('": 19203, + "Ġ((": 14808, + "Ġ()": 7499, + "Ġ())": 32865, + "Ġ());": 38377, + "Ġ(),": 29994, + "Ġ().": 27972, + "Ġ();": 13979, + "Ġ(*": 20789, + "Ġ(+": 11502, + "Ġ(-": 13841, + "Ġ(.": 20262, + "Ġ(/": 50247, + "Ġ(<": 38155, + "Ġ(=": 46121, + "Ġ(>": 45160, + "Ġ(?,": 32843, + "Ġ(@": 4275, + "Ġ([": 29565, + "Ġ(_": 44104, + "Ġ({": 37913, + "Ġ(~": 31034, + "Ġ(£": 23068, + "Ġ(âĪĴ": 35508, + "Ġ)": 1267, + "Ġ))": 15306, + "Ġ)))": 47282, + "Ġ));": 29226, + "Ġ),": 10612, + "Ġ).": 6739, + "Ġ):": 15179, + "Ġ);": 5619, + "Ġ)]": 48600, + "Ġ*": 1635, + "Ġ*)": 31936, + "Ġ**": 12429, + "Ġ***": 17202, + "Ġ****": 25998, + "Ġ********************************": 41906, + "Ġ*.": 46866, + "Ġ*/": 9466, + "Ġ+": 1343, + "Ġ+#": 43053, + "Ġ++": 19969, + "Ġ+++": 49954, + "Ġ+---": 40703, + "Ġ+/-": 29694, + "Ġ+=": 15853, + "Ġ,": 837, + "Ġ,\"": 42911, + "Ġ-": 532, + "Ġ--": 1377, + "Ġ---": 11420, + "Ġ----": 13498, + "Ġ-----": 37404, + "Ġ------": 40103, + "Ġ-------": 35656, + "Ġ--------": 24200, + "Ġ---------": 45337, + "Ġ----------------": 34400, + "Ġ--------------------": 41436, + "Ġ--------------------------------": 20368, + "Ġ----------------------------------------------------------------": 16529, + "Ġ-->": 14610, + "Ġ-=": 48185, + "Ġ->": 4613, + "Ġ.": 764, + "Ġ.\"": 22135, + "Ġ.)": 46328, + "Ġ..": 11485, + "Ġ...": 2644, + "Ġ...\"": 35713, + "Ġ....": 19424, + "Ġ......": 47082, + "Ġ........": 20004, + "Ġ..........": 39864, + "Ġ..............": 44912, + "Ġ................": 44713, + "Ġ./": 24457, + "Ġ._": 47540, + "Ġ/": 1220, + "Ġ/*": 11900, + "Ġ/**": 42638, + "Ġ//": 3373, + "Ġ///": 34013, + "Ġ//[": 31161, + "Ġ/>": 11037, + "Ġ0": 657, + "Ġ00": 3571, + "Ġ000": 12877, + "Ġ0000": 17643, + "Ġ000000": 41853, + "Ġ00000000": 27551, + "Ġ0004": 38326, + "Ġ01": 5534, + "Ġ02": 7816, + "Ġ03": 7643, + "Ġ04": 8702, + "Ġ05": 8870, + "Ġ06": 9130, + "Ġ07": 8753, + "Ġ08": 8487, + "Ġ09": 7769, + "Ġ1": 352, + "Ġ10": 838, + "Ġ100": 1802, + "Ġ1000": 8576, + "Ġ10000": 33028, + "Ġ101": 8949, + "Ġ102": 15143, + "Ġ1024": 28119, + "Ġ103": 15349, + "Ġ104": 14436, + "Ġ105": 13343, + "Ġ1050": 47235, + "Ġ106": 15696, + "Ġ107": 16226, + "Ġ1070": 49616, + "Ġ108": 15495, + "Ġ1080": 17729, + "Ġ109": 16003, + "Ġ11": 1367, + "Ġ110": 9796, + "Ġ1100": 36566, + "Ġ111": 13374, + "Ġ112": 13539, + "Ġ113": 17318, + "Ġ114": 17342, + "Ġ115": 12279, + "Ġ116": 18693, + "Ġ117": 19048, + "Ġ118": 19035, + "Ġ119": 15136, + "Ġ12": 1105, + "Ġ120": 7982, + "Ġ1200": 24938, + "Ġ121": 20416, + "Ġ122": 19409, + "Ġ123": 17031, + "Ġ124": 19755, + "Ġ125": 13151, + "Ġ126": 19710, + "Ġ127": 18112, + "Ġ128": 13108, + "Ġ1280": 37674, + "Ġ129": 20248, + "Ġ13": 1511, + "Ġ130": 11323, + "Ġ1300": 36058, + "Ġ131": 23134, + "Ġ132": 21761, + "Ġ133": 22169, + "Ġ134": 22352, + "Ġ135": 17501, + "Ġ136": 21056, + "Ġ137": 21643, + "Ġ138": 21503, + "Ġ139": 23666, + "Ġ14": 1478, + "Ġ140": 12713, + "Ġ1400": 36641, + "Ġ141": 25500, + "Ġ142": 25181, + "Ġ143": 24356, + "Ġ144": 20224, + "Ġ1440": 49557, + "Ġ145": 20299, + "Ġ146": 22986, + "Ġ147": 22909, + "Ġ148": 22613, + "Ġ149": 24041, + "Ġ15": 1315, + "Ġ150": 6640, + "Ġ1500": 20007, + "Ġ151": 25326, + "Ġ152": 24848, + "Ġ153": 24652, + "Ġ154": 24235, + "Ġ155": 20708, + "Ġ156": 23871, + "Ġ157": 23313, + "Ġ158": 24063, + "Ġ159": 26422, + "Ġ16": 1467, + "Ġ160": 13454, + "Ġ1600": 26143, + "Ġ161": 27829, + "Ġ162": 25090, + "Ġ163": 26826, + "Ġ164": 25307, + "Ġ165": 21409, + "Ġ166": 26753, + "Ġ167": 26118, + "Ġ168": 23378, + "Ġ169": 27191, + "Ġ17": 1596, + "Ġ170": 16677, + "Ġ1700": 35665, + "Ġ171": 28369, + "Ġ172": 23120, + "Ġ173": 28174, + "Ġ174": 27621, + "Ġ175": 19038, + "Ġ176": 26937, + "Ġ177": 26607, + "Ġ178": 27368, + "Ġ179": 27228, + "Ġ18": 1248, + "Ġ180": 11546, + "Ġ1800": 21431, + "Ġ181": 30110, + "Ġ182": 28581, + "Ġ183": 28551, + "Ġ1830": 45440, + "Ġ184": 28598, + "Ġ1840": 47784, + "Ġ185": 22855, + "Ġ1850": 35745, + "Ġ186": 28481, + "Ġ1860": 37637, + "Ġ1861": 45278, + "Ġ1862": 49658, + "Ġ1863": 47072, + "Ġ1865": 47801, + "Ġ187": 27649, + "Ġ1870": 37667, + "Ġ188": 27778, + "Ġ1880": 34865, + "Ġ1886": 49539, + "Ġ1888": 49584, + "Ġ1889": 49545, + "Ġ189": 27230, + "Ġ1890": 31982, + "Ġ1893": 48889, + "Ġ1895": 46425, + "Ġ1896": 46723, + "Ġ1897": 49429, + "Ġ1898": 46244, + "Ġ1899": 47465, + "Ġ19": 678, + "Ġ190": 19884, + "Ġ1900": 21489, + "Ġ1901": 39923, + "Ġ1902": 45611, + "Ġ1903": 41625, + "Ġ1904": 43785, + "Ġ1905": 37166, + "Ġ1906": 40538, + "Ġ1907": 41435, + "Ġ1908": 40417, + "Ġ1909": 41507, + "Ġ191": 31009, + "Ġ1910": 31953, + "Ġ1911": 32216, + "Ġ1912": 34463, + "Ġ1913": 35145, + "Ġ1914": 26833, + "Ġ1915": 32062, + "Ġ1916": 32811, + "Ġ1917": 24168, + "Ġ1918": 25859, + "Ġ1919": 30992, + "Ġ192": 17817, + "Ġ1920": 14062, + "Ġ1921": 35369, + "Ġ1922": 36094, + "Ġ1923": 37272, + "Ġ1924": 37547, + "Ġ1925": 36864, + "Ġ1926": 38525, + "Ġ1927": 36565, + "Ġ1928": 35768, + "Ġ1929": 31883, + "Ġ193": 29691, + "Ġ1930": 15533, + "Ġ1931": 34625, + "Ġ1932": 32471, + "Ġ1933": 26539, + "Ġ1934": 29300, + "Ġ1935": 30704, + "Ġ1936": 27653, + "Ġ1937": 28684, + "Ġ1938": 28017, + "Ġ1939": 24414, + "Ġ194": 30483, + "Ġ1940": 16236, + "Ġ1941": 23234, + "Ġ1942": 22458, + "Ġ1943": 21577, + "Ġ1944": 16994, + "Ġ1945": 15761, + "Ġ1946": 22717, + "Ġ1947": 21709, + "Ġ1948": 21794, + "Ġ1949": 24977, + "Ġ195": 24793, + "Ġ1950": 11445, + "Ġ1951": 27937, + "Ġ1952": 26352, + "Ġ1953": 24217, + "Ġ1954": 24718, + "Ġ1955": 25325, + "Ġ1956": 25190, + "Ġ1957": 25177, + "Ġ1958": 24648, + "Ġ1959": 23859, + "Ġ196": 28817, + "Ġ1960": 9507, + "Ġ1961": 20510, + "Ġ1962": 20033, + "Ġ1963": 19342, + "Ġ1964": 17575, + "Ġ1965": 17672, + "Ġ1966": 19322, + "Ġ1967": 15904, + "Ġ1968": 15963, + "Ġ1969": 16450, + "Ġ197": 29903, + "Ġ1970": 8069, + "Ġ1971": 16382, + "Ġ1972": 16101, + "Ġ1973": 15674, + "Ġ1974": 16489, + "Ġ1975": 15231, + "Ġ1976": 15408, + "Ġ1977": 15589, + "Ġ1978": 15524, + "Ġ1979": 13521, + "Ġ198": 2757, + "Ġ1980": 7169, + "Ġ1981": 14745, + "Ġ1982": 14489, + "Ġ1983": 13540, + "Ġ1984": 12844, + "Ġ1985": 12863, + "Ġ1986": 12113, + "Ġ1987": 12923, + "Ġ1988": 12122, + "Ġ1989": 11104, + "Ġ199": 1594, + "Ġ1990": 6303, + "Ġ1991": 10249, + "Ġ1992": 9768, + "Ġ1993": 9656, + "Ġ1994": 9162, + "Ġ1995": 8735, + "Ġ1996": 8235, + "Ġ1997": 8309, + "Ġ1998": 7795, + "Ġ1999": 7358, + "Ġ2": 362, + "Ġ20": 1160, + "Ġ200": 939, + "Ġ2000": 4751, + "Ġ2001": 5878, + "Ġ2002": 6244, + "Ġ2003": 5816, + "Ġ2004": 5472, + "Ġ2005": 5075, + "Ġ2006": 4793, + "Ġ2007": 4343, + "Ġ2008": 3648, + "Ġ2009": 3717, + "Ġ201": 580, + "Ġ2010": 3050, + "Ġ2011": 2813, + "Ġ2012": 2321, + "Ġ2013": 2211, + "Ġ2014": 1946, + "Ġ2015": 1853, + "Ġ2016": 1584, + "Ġ2017": 2177, + "Ġ2018": 2864, + "Ġ2019": 13130, + "Ġ202": 22131, + "Ġ2020": 12131, + "Ġ2021": 33448, + "Ġ2022": 33160, + "Ġ2024": 48609, + "Ġ2025": 32190, + "Ġ203": 27408, + "Ġ2030": 25054, + "Ġ204": 26956, + "Ġ2048": 36117, + "Ġ205": 22538, + "Ġ2050": 32215, + "Ġ206": 27253, + "Ġ207": 27791, + "Ġ208": 27121, + "Ġ209": 28815, + "Ġ21": 2310, + "Ġ210": 20064, + "Ġ2100": 38123, + "Ġ211": 28714, + "Ġ212": 23679, + "Ġ213": 28658, + "Ġ214": 28277, + "Ġ215": 22951, + "Ġ216": 26881, + "Ġ217": 24894, + "Ġ218": 29217, + "Ġ219": 30453, + "Ġ22": 2534, + "Ġ220": 15629, + "Ġ221": 31566, + "Ġ222": 27795, + "Ġ223": 30299, + "Ġ224": 26063, + "Ġ225": 18500, + "Ġ226": 31510, + "Ġ227": 30989, + "Ġ228": 29041, + "Ġ229": 31064, + "Ġ23": 2242, + "Ġ230": 18395, + "Ġ231": 34598, + "Ġ232": 31773, + "Ġ233": 30435, + "Ġ234": 34323, + "Ġ235": 28878, + "Ġ236": 34044, + "Ġ237": 34385, + "Ġ238": 32544, + "Ġ239": 32817, + "Ġ24": 1987, + "Ġ240": 14956, + "Ġ2400": 48548, + "Ġ241": 35150, + "Ġ242": 34353, + "Ġ243": 35989, + "Ġ244": 35264, + "Ġ245": 29637, + "Ġ246": 34951, + "Ġ247": 30179, + "Ġ248": 32996, + "Ġ249": 34620, + "Ġ25": 1679, + "Ġ250": 8646, + "Ġ2500": 33507, + "Ġ251": 34489, + "Ġ252": 25264, + "Ġ253": 32056, + "Ġ254": 35360, + "Ġ255": 14280, + "Ġ256": 17759, + "Ġ257": 36100, + "Ġ258": 37528, + "Ġ259": 37831, + "Ġ26": 2608, + "Ġ260": 21148, + "Ġ2600": 47197, + "Ġ261": 39166, + "Ġ262": 35404, + "Ġ263": 39135, + "Ġ264": 32158, + "Ġ265": 32090, + "Ġ266": 37737, + "Ġ267": 37364, + "Ġ268": 36678, + "Ġ269": 38249, + "Ġ27": 2681, + "Ġ270": 20479, + "Ġ271": 33797, + "Ġ272": 38107, + "Ġ273": 38549, + "Ġ274": 39768, + "Ġ275": 25829, + "Ġ276": 38147, + "Ġ277": 38703, + "Ġ278": 39174, + "Ġ279": 39466, + "Ġ28": 2579, + "Ġ280": 21355, + "Ġ281": 39882, + "Ġ282": 41810, + "Ġ283": 42032, + "Ġ284": 40654, + "Ġ285": 33015, + "Ġ286": 39697, + "Ġ287": 38721, + "Ġ288": 35419, + "Ġ289": 38902, + "Ġ29": 2808, + "Ġ290": 26481, + "Ġ291": 43336, + "Ġ292": 41569, + "Ġ293": 37224, + "Ġ294": 41235, + "Ġ295": 34772, + "Ġ296": 41922, + "Ġ297": 41103, + "Ġ298": 37576, + "Ġ299": 31011, + "Ġ3": 513, + "Ġ30": 1542, + "Ġ300": 5867, + "Ġ3000": 20343, + "Ġ301": 25643, + "Ġ302": 32591, + "Ġ303": 30727, + "Ġ304": 31672, + "Ġ305": 32747, + "Ġ306": 37255, + "Ġ307": 38369, + "Ġ308": 35617, + "Ġ309": 40286, + "Ġ31": 3261, + "Ġ310": 28947, + "Ġ311": 35592, + "Ġ312": 34465, + "Ġ313": 35897, + "Ġ314": 34085, + "Ġ315": 32647, + "Ġ316": 34131, + "Ġ317": 37563, + "Ġ318": 39320, + "Ġ319": 40385, + "Ġ32": 3933, + "Ġ320": 20959, + "Ġ321": 39595, + "Ġ322": 38831, + "Ġ323": 38446, + "Ġ324": 38595, + "Ġ325": 29524, + "Ġ326": 40660, + "Ġ327": 36203, + "Ġ328": 39093, + "Ġ329": 42141, + "Ġ33": 4747, + "Ġ330": 25508, + "Ġ331": 43722, + "Ġ332": 41423, + "Ġ333": 23460, + "Ġ334": 42819, + "Ġ335": 37144, + "Ġ336": 38867, + "Ġ337": 42294, + "Ġ338": 40736, + "Ġ339": 42489, + "Ġ34": 4974, + "Ġ340": 28560, + "Ġ341": 43155, + "Ġ342": 44341, + "Ġ343": 37290, + "Ġ344": 43686, + "Ġ345": 39937, + "Ġ346": 44729, + "Ġ347": 43292, + "Ġ348": 44084, + "Ġ349": 44367, + "Ġ35": 3439, + "Ġ350": 13803, + "Ġ351": 44417, + "Ġ352": 44063, + "Ġ353": 47567, + "Ġ354": 46752, + "Ġ355": 36561, + "Ġ356": 44552, + "Ġ357": 45210, + "Ġ358": 41761, + "Ġ359": 41934, + "Ġ36": 4570, + "Ġ360": 11470, + "Ġ361": 47744, + "Ġ363": 49327, + "Ġ364": 44969, + "Ġ365": 21268, + "Ġ366": 44856, + "Ġ367": 40884, + "Ġ368": 43019, + "Ġ369": 45620, + "Ġ37": 5214, + "Ġ370": 28687, + "Ġ371": 47343, + "Ġ372": 46633, + "Ġ373": 47946, + "Ġ374": 49020, + "Ġ375": 29414, + "Ġ376": 44622, + "Ġ377": 42163, + "Ġ378": 45473, + "Ġ379": 45937, + "Ġ38": 4353, + "Ġ380": 29101, + "Ġ383": 49814, + "Ġ384": 40400, + "Ġ385": 44826, + "Ġ386": 48340, + "Ġ387": 49689, + "Ġ388": 43550, + "Ġ389": 49633, + "Ġ39": 5014, + "Ġ390": 33882, + "Ġ392": 48207, + "Ġ395": 42321, + "Ġ396": 48758, + "Ġ398": 39260, + "Ġ399": 43927, + "Ġ4": 604, + "Ġ40": 2319, + "Ġ400": 7337, + "Ġ4000": 30123, + "Ġ401": 22219, + "Ġ402": 42622, + "Ġ403": 38210, + "Ġ404": 32320, + "Ġ405": 36966, + "Ġ406": 45439, + "Ġ407": 41879, + "Ġ408": 41247, + "Ġ409": 48132, + "Ġ4090": 48908, + "Ġ4096": 42479, + "Ġ41": 6073, + "Ġ410": 32921, + "Ġ411": 43184, + "Ġ412": 42215, + "Ġ413": 46618, + "Ġ414": 45900, + "Ġ415": 40643, + "Ġ416": 38158, + "Ġ417": 47580, + "Ġ418": 45959, + "Ġ419": 48475, + "Ġ42": 5433, + "Ġ420": 28262, + "Ġ421": 49294, + "Ġ422": 46588, + "Ġ423": 49125, + "Ġ424": 48252, + "Ġ425": 36959, + "Ġ426": 48065, + "Ġ427": 45345, + "Ġ428": 45063, + "Ġ429": 42313, + "Ġ43": 5946, + "Ġ430": 35090, + "Ġ432": 46393, + "Ġ433": 47407, + "Ġ435": 42671, + "Ġ436": 50038, + "Ġ44": 5846, + "Ġ440": 33879, + "Ġ443": 40384, + "Ġ444": 45095, + "Ġ445": 48655, + "Ġ448": 49989, + "Ġ45": 4153, + "Ġ450": 18523, + "Ġ451": 49356, + "Ġ455": 46839, + "Ġ457": 47996, + "Ġ458": 50154, + "Ġ46": 6337, + "Ġ460": 34091, + "Ġ465": 49669, + "Ġ47": 6298, + "Ġ470": 38634, + "Ġ475": 45881, + "Ġ48": 4764, + "Ġ480": 23487, + "Ġ49": 5125, + "Ġ490": 45601, + "Ġ499": 48391, + "Ġ5": 642, + "Ġ50": 2026, + "Ġ500": 5323, + "Ġ5000": 23336, + "Ġ501": 24555, + "Ġ502": 47233, + "Ġ503": 44541, + "Ġ504": 41612, + "Ġ505": 43367, + "Ġ51": 6885, + "Ġ510": 35148, + "Ġ512": 22243, + "Ġ52": 6740, + "Ġ520": 36141, + "Ġ525": 45719, + "Ġ529": 49888, + "Ġ53": 7192, + "Ġ530": 40585, + "Ġ54": 7175, + "Ġ540": 38190, + "Ġ55": 5996, + "Ġ550": 25240, + "Ġ555": 44717, + "Ġ56": 7265, + "Ġ560": 38089, + "Ġ57": 7632, + "Ġ570": 44626, + "Ġ58": 7618, + "Ġ580": 41234, + "Ġ59": 7863, + "Ġ6": 718, + "Ġ60": 3126, + "Ġ600": 10053, + "Ġ6000": 39064, + "Ġ601": 49231, + "Ġ608": 39084, + "Ġ61": 8454, + "Ġ610": 44300, + "Ġ62": 8190, + "Ġ620": 45469, + "Ġ625": 48868, + "Ġ63": 8093, + "Ġ630": 44505, + "Ġ64": 5598, + "Ġ640": 33759, + "Ġ65": 6135, + "Ġ650": 22626, + "Ġ655": 45021, + "Ġ66": 7930, + "Ġ660": 41717, + "Ġ666": 43364, + "Ġ67": 8275, + "Ġ670": 48136, + "Ġ68": 8257, + "Ġ680": 40554, + "Ġ69": 8644, + "Ġ698": 39861, + "Ġ7": 767, + "Ġ70": 4317, + "Ġ700": 13037, + "Ġ7000": 50205, + "Ġ701": 48173, + "Ġ702": 43379, + "Ġ71": 9166, + "Ġ72": 7724, + "Ġ720": 26250, + "Ġ73": 8854, + "Ġ737": 37517, + "Ġ74": 8915, + "Ġ747": 45600, + "Ġ75": 5441, + "Ġ750": 19683, + "Ġ76": 8684, + "Ġ760": 48284, + "Ġ768": 46720, + "Ġ77": 8541, + "Ġ770": 44586, + "Ġ777": 35534, + "Ġ78": 8699, + "Ġ780": 41287, + "Ġ79": 9225, + "Ġ8": 807, + "Ġ80": 4019, + "Ġ800": 10460, + "Ġ8000": 38055, + "Ġ802": 33121, + "Ġ808": 41241, + "Ġ81": 9773, + "Ġ82": 9415, + "Ġ820": 48964, + "Ġ83": 9698, + "Ġ84": 9508, + "Ġ840": 48777, + "Ġ85": 7600, + "Ġ850": 30607, + "Ġ86": 9849, + "Ġ87": 10083, + "Ġ88": 9193, + "Ġ89": 9919, + "Ġ9": 860, + "Ġ90": 4101, + "Ġ900": 15897, + "Ġ9000": 50138, + "Ġ91": 10495, + "Ġ911": 16679, + "Ġ92": 10190, + "Ġ920": 47679, + "Ġ93": 10261, + "Ġ94": 10048, + "Ġ95": 6957, + "Ġ950": 38384, + "Ġ96": 9907, + "Ġ960": 41263, + "Ġ97": 10111, + "Ġ970": 40463, + "Ġ978": 41417, + "Ġ98": 9661, + "Ġ980": 32614, + "Ġ99": 7388, + "Ġ999": 36006, + "Ġ:": 1058, + "Ġ:(": 36147, + "Ġ:)": 14373, + "Ġ:-)": 47226, + "Ġ::": 7904, + "Ġ:=": 19039, + "Ġ;": 2162, + "Ġ;)": 35540, + "Ġ;;": 36792, + "Ġ<": 1279, + "ĠxGt6Til_t{bH0?EGCl7Rq%nB@FvOoyR_8 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 None: + """ + Validate provider credentials + You can choose any validate_credentials method of model type or implement validate method by yourself, + such as: get model list api + + if validate failed, raise exception + + :param credentials: provider credentials, credentials form defined in `provider_credential_schema`. + """ +``` + +- `credentials` (object) Credential information + + The parameters of credential information are defined by the `provider_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + +If verification fails, throw the `errors.validate.CredentialsValidateFailedError` error. + +## Model + +Models are divided into 5 different types, each inheriting from different base classes and requiring the implementation of different methods. + +All models need to uniformly implement the following 2 methods: + +- Model Credential Verification + + Similar to provider credential verification, this step involves verification for an individual model. + + + ```python + def validate_credentials(self, model: str, credentials: dict) -> None: + """ + Validate model credentials + + :param model: model name + :param credentials: model credentials + :return: + """ + ``` + + Parameters: + + - `model` (string) Model name + + - `credentials` (object) Credential information + + The parameters of credential information are defined by either the `provider_credential_schema` or `model_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + + If verification fails, throw the `errors.validate.CredentialsValidateFailedError` error. + +- Invocation Error Mapping Table + + When there is an exception in model invocation, it needs to be mapped to the `InvokeError` type specified by Runtime. This facilitates Dify's ability to handle different errors with appropriate follow-up actions. + + Runtime Errors: + + - `InvokeConnectionError` Invocation connection error + - `InvokeServerUnavailableError` Invocation service provider unavailable + - `InvokeRateLimitError` Invocation reached rate limit + - `InvokeAuthorizationError` Invocation authorization failure + - `InvokeBadRequestError` Invocation parameter error + + ```python + @property + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + """ + Map model invoke error to unified error + The key is the error type thrown to the caller + The value is the error type thrown by the model, + which needs to be converted into a unified error type for the caller. + + :return: Invoke error mapping + """ + ``` + +​ You can refer to OpenAI's `_invoke_error_mapping` for an example. + +### LLM + +Inherit the `__base.large_language_model.LargeLanguageModel` base class and implement the following interfaces: + +- LLM Invocation + + Implement the core method for LLM invocation, which can support both streaming and synchronous returns. + + + ```python + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :return: full response or stream response chunk generator result + """ + ``` + + - Parameters: + + - `model` (string) Model name + + - `credentials` (object) Credential information + + The parameters of credential information are defined by either the `provider_credential_schema` or `model_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + + - `prompt_messages` (array[[PromptMessage](#PromptMessage)]) List of prompts + + If the model is of the `Completion` type, the list only needs to include one [UserPromptMessage](#UserPromptMessage) element; + + If the model is of the `Chat` type, it requires a list of elements such as [SystemPromptMessage](#SystemPromptMessage), [UserPromptMessage](#UserPromptMessage), [AssistantPromptMessage](#AssistantPromptMessage), [ToolPromptMessage](#ToolPromptMessage) depending on the message. + + - `model_parameters` (object) Model parameters + + The model parameters are defined by the `parameter_rules` in the model's YAML configuration. + + - `tools` (array[[PromptMessageTool](#PromptMessageTool)]) [optional] List of tools, equivalent to the `function` in `function calling`. + + That is, the tool list for tool calling. + + - `stop` (array[string]) [optional] Stop sequences + + The model output will stop before the string defined by the stop sequence. + + - `stream` (bool) Whether to output in a streaming manner, default is True + + Streaming output returns Generator[[LLMResultChunk](#LLMResultChunk)], non-streaming output returns [LLMResult](#LLMResult). + + - `user` (string) [optional] Unique identifier of the user + + This can help the provider monitor and detect abusive behavior. + + - Returns + + Streaming output returns Generator[[LLMResultChunk](#LLMResultChunk)], non-streaming output returns [LLMResult](#LLMResult). + +- Pre-calculating Input Tokens + + If the model does not provide a pre-calculated tokens interface, you can directly return 0. + + ```python + def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage], + tools: Optional[list[PromptMessageTool]] = None) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param tools: tools for tool calling + :return: + """ + ``` + + For parameter explanations, refer to the above section on `LLM Invocation`. + +- Fetch Custom Model Schema [Optional] + + ```python + def get_customizable_model_schema(self, model: str, credentials: dict) -> Optional[AIModelEntity]: + """ + Get customizable model schema + + :param model: model name + :param credentials: model credentials + :return: model schema + """ + ``` + + When the provider supports adding custom LLMs, this method can be implemented to allow custom models to fetch model schema. The default return null. + + +### TextEmbedding + +Inherit the `__base.text_embedding_model.TextEmbeddingModel` base class and implement the following interfaces: + +- Embedding Invocation + + ```python + def _invoke(self, model: str, credentials: dict, + texts: list[str], user: Optional[str] = None) \ + -> TextEmbeddingResult: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :param user: unique user id + :return: embeddings result + """ + ``` + + - Parameters: + + - `model` (string) Model name + + - `credentials` (object) Credential information + + The parameters of credential information are defined by either the `provider_credential_schema` or `model_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + + - `texts` (array[string]) List of texts, capable of batch processing + + - `user` (string) [optional] Unique identifier of the user + + This can help the provider monitor and detect abusive behavior. + + - Returns: + + [TextEmbeddingResult](#TextEmbeddingResult) entity. + +- Pre-calculating Tokens + + ```python + def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param texts: texts to embed + :return: + """ + ``` + + For parameter explanations, refer to the above section on `Embedding Invocation`. + +### Rerank + +Inherit the `__base.rerank_model.RerankModel` base class and implement the following interfaces: + +- Rerank Invocation + + ```python + def _invoke(self, model: str, credentials: dict, + query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None, + user: Optional[str] = None) \ + -> RerankResult: + """ + Invoke rerank model + + :param model: model name + :param credentials: model credentials + :param query: search query + :param docs: docs for reranking + :param score_threshold: score threshold + :param top_n: top n + :param user: unique user id + :return: rerank result + """ + ``` + + - Parameters: + + - `model` (string) Model name + + - `credentials` (object) Credential information + + The parameters of credential information are defined by either the `provider_credential_schema` or `model_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + + - `query` (string) Query request content + + - `docs` (array[string]) List of segments to be reranked + + - `score_threshold` (float) [optional] Score threshold + + - `top_n` (int) [optional] Select the top n segments + + - `user` (string) [optional] Unique identifier of the user + + This can help the provider monitor and detect abusive behavior. + + - Returns: + + [RerankResult](#RerankResult) entity. + +### Speech2text + +Inherit the `__base.speech2text_model.Speech2TextModel` base class and implement the following interfaces: + +- Invoke Invocation + + ```python + def _invoke(self, model: str, credentials: dict, + file: IO[bytes], user: Optional[str] = None) \ + -> str: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param file: audio file + :param user: unique user id + :return: text for given audio file + """ + ``` + + - Parameters: + + - `model` (string) Model name + + - `credentials` (object) Credential information + + The parameters of credential information are defined by either the `provider_credential_schema` or `model_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + + - `file` (File) File stream + + - `user` (string) [optional] Unique identifier of the user + + This can help the provider monitor and detect abusive behavior. + + - Returns: + + The string after speech-to-text conversion. + +### Moderation + +Inherit the `__base.moderation_model.ModerationModel` base class and implement the following interfaces: + +- Invoke Invocation + + ```python + def _invoke(self, model: str, credentials: dict, + text: str, user: Optional[str] = None) \ + -> bool: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param text: text to moderate + :param user: unique user id + :return: false if text is safe, true otherwise + """ + ``` + + - Parameters: + + - `model` (string) Model name + + - `credentials` (object) Credential information + + The parameters of credential information are defined by either the `provider_credential_schema` or `model_credential_schema` in the provider's YAML configuration file. Inputs such as `api_key` are included. + + - `text` (string) Text content + + - `user` (string) [optional] Unique identifier of the user + + This can help the provider monitor and detect abusive behavior. + + - Returns: + + False indicates that the input text is safe, True indicates otherwise. + + + +## Entities + +### PromptMessageRole + +Message role + +```python +class PromptMessageRole(Enum): + """ + Enum class for prompt message. + """ + SYSTEM = "system" + USER = "user" + ASSISTANT = "assistant" + TOOL = "tool" +``` + +### PromptMessageContentType + +Message content types, divided into text and image. + +```python +class PromptMessageContentType(Enum): + """ + Enum class for prompt message content type. + """ + TEXT = 'text' + IMAGE = 'image' +``` + +### PromptMessageContent + +Message content base class, used only for parameter declaration and cannot be initialized. + +```python +class PromptMessageContent(BaseModel): + """ + Model class for prompt message content. + """ + type: PromptMessageContentType + data: str +``` + +Currently, two types are supported: text and image. It's possible to simultaneously input text and multiple images. + +You need to initialize `TextPromptMessageContent` and `ImagePromptMessageContent` separately for input. + +### TextPromptMessageContent + +```python +class TextPromptMessageContent(PromptMessageContent): + """ + Model class for text prompt message content. + """ + type: PromptMessageContentType = PromptMessageContentType.TEXT +``` + +If inputting a combination of text and images, the text needs to be constructed into this entity as part of the `content` list. + +### ImagePromptMessageContent + +```python +class ImagePromptMessageContent(PromptMessageContent): + """ + Model class for image prompt message content. + """ + class DETAIL(Enum): + LOW = 'low' + HIGH = 'high' + + type: PromptMessageContentType = PromptMessageContentType.IMAGE + detail: DETAIL = DETAIL.LOW # Resolution +``` + +If inputting a combination of text and images, the images need to be constructed into this entity as part of the `content` list. + +`data` can be either a `url` or a `base64` encoded string of the image. + +### PromptMessage + +The base class for all Role message bodies, used only for parameter declaration and cannot be initialized. + +```python +class PromptMessage(ABC, BaseModel): + """ + Model class for prompt message. + """ + role: PromptMessageRole + content: Optional[str | list[PromptMessageContent]] = None # Supports two types: string and content list. The content list is designed to meet the needs of multimodal inputs. For more details, see the PromptMessageContent explanation. + name: Optional[str] = None +``` + +### UserPromptMessage + +UserMessage message body, representing a user's message. + +```python +class UserPromptMessage(PromptMessage): + """ + Model class for user prompt message. + """ + role: PromptMessageRole = PromptMessageRole.USER +``` + +### AssistantPromptMessage + +Represents a message returned by the model, typically used for `few-shots` or inputting chat history. + +```python +class AssistantPromptMessage(PromptMessage): + """ + Model class for assistant prompt message. + """ + class ToolCall(BaseModel): + """ + Model class for assistant prompt message tool call. + """ + class ToolCallFunction(BaseModel): + """ + Model class for assistant prompt message tool call function. + """ + name: str # tool name + arguments: str # tool arguments + + id: str # Tool ID, effective only in OpenAI tool calls. It's the unique ID for tool invocation and the same tool can be called multiple times. + type: str # default: function + function: ToolCallFunction # tool call information + + role: PromptMessageRole = PromptMessageRole.ASSISTANT + tool_calls: list[ToolCall] = [] # The result of tool invocation in response from the model (returned only when tools are input and the model deems it necessary to invoke a tool). +``` + +Where `tool_calls` are the list of `tool calls` returned by the model after invoking the model with the `tools` input. + +### SystemPromptMessage + +Represents system messages, usually used for setting system commands given to the model. + +```python +class SystemPromptMessage(PromptMessage): + """ + Model class for system prompt message. + """ + role: PromptMessageRole = PromptMessageRole.SYSTEM +``` + +### ToolPromptMessage + +Represents tool messages, used for conveying the results of a tool execution to the model for the next step of processing. + +```python +class ToolPromptMessage(PromptMessage): + """ + Model class for tool prompt message. + """ + role: PromptMessageRole = PromptMessageRole.TOOL + tool_call_id: str # Tool invocation ID. If OpenAI tool call is not supported, the name of the tool can also be inputted. +``` + +The base class's `content` takes in the results of tool execution. + +### PromptMessageTool + +```python +class PromptMessageTool(BaseModel): + """ + Model class for prompt message tool. + """ + name: str + description: str + parameters: dict +``` + +--- + +### LLMResult + +```python +class LLMResult(BaseModel): + """ + Model class for llm result. + """ + model: str # Actual used modele + prompt_messages: list[PromptMessage] # prompt messages + message: AssistantPromptMessage # response message + usage: LLMUsage # usage info + system_fingerprint: Optional[str] = None # request fingerprint, refer to OpenAI definition +``` + +### LLMResultChunkDelta + +In streaming returns, each iteration contains the `delta` entity. + +```python +class LLMResultChunkDelta(BaseModel): + """ + Model class for llm result chunk delta. + """ + index: int + message: AssistantPromptMessage # response message + usage: Optional[LLMUsage] = None # usage info + finish_reason: Optional[str] = None # finish reason, only the last one returns +``` + +### LLMResultChunk + +Each iteration entity in streaming returns. + +```python +class LLMResultChunk(BaseModel): + """ + Model class for llm result chunk. + """ + model: str # Actual used modele + prompt_messages: list[PromptMessage] # prompt messages + system_fingerprint: Optional[str] = None # request fingerprint, refer to OpenAI definition + delta: LLMResultChunkDelta +``` + +### LLMUsage + +```python +class LLMUsage(ModelUsage): + """ + Model class for LLM usage. + """ + prompt_tokens: int # Tokens used for prompt + prompt_unit_price: Decimal # Unit price for prompt + prompt_price_unit: Decimal # Price unit for prompt, i.e., the unit price based on how many tokens + prompt_price: Decimal # Cost for prompt + completion_tokens: int # Tokens used for response + completion_unit_price: Decimal # Unit price for response + completion_price_unit: Decimal # Price unit for response, i.e., the unit price based on how many tokens + completion_price: Decimal # Cost for response + total_tokens: int # Total number of tokens used + total_price: Decimal # Total cost + currency: str # Currency unit + latency: float # Request latency (s) +``` + +--- + +### TextEmbeddingResult + +```python +class TextEmbeddingResult(BaseModel): + """ + Model class for text embedding result. + """ + model: str # Actual model used + embeddings: list[list[float]] # List of embedding vectors, corresponding to the input texts list + usage: EmbeddingUsage # Usage information +``` + +### EmbeddingUsage + +```python +class EmbeddingUsage(ModelUsage): + """ + Model class for embedding usage. + """ + tokens: int # Number of tokens used + total_tokens: int # Total number of tokens used + unit_price: Decimal # Unit price + price_unit: Decimal # Price unit, i.e., the unit price based on how many tokens + total_price: Decimal # Total cost + currency: str # Currency unit + latency: float # Request latency (s) +``` + +--- + +### RerankResult + +```python +class RerankResult(BaseModel): + """ + Model class for rerank result. + """ + model: str # Actual model used + docs: list[RerankDocument] # Reranked document list +``` + +### RerankDocument + +```python +class RerankDocument(BaseModel): + """ + Model class for rerank document. + """ + index: int # original index + text: str + score: float +``` diff --git a/api/core/model_runtime/docs/en_US/provider_scale_out.md b/api/core/model_runtime/docs/en_US/provider_scale_out.md new file mode 100644 index 000000000..1d012c5a2 --- /dev/null +++ b/api/core/model_runtime/docs/en_US/provider_scale_out.md @@ -0,0 +1,264 @@ +## Adding a New Provider + +Providers support three types of model configuration methods: + +- `predefined-model` Predefined model + + This indicates that users only need to configure the unified provider credentials to use the predefined models under the provider. + +- `customizable-model` Customizable model + + Users need to add credential configurations for each model. + +- `fetch-from-remote` Fetch from remote + + This is consistent with the `predefined-model` configuration method. Only unified provider credentials need to be configured, and models are obtained from the provider through credential information. + +These three configuration methods **can coexist**, meaning a provider can support `predefined-model` + `customizable-model` or `predefined-model` + `fetch-from-remote`, etc. In other words, configuring the unified provider credentials allows the use of predefined and remotely fetched models, and if new models are added, they can be used in addition to the custom models. + +## Getting Started + +Adding a new provider starts with determining the English identifier of the provider, such as `anthropic`, and using this identifier to create a `module` in `model_providers`. + +Under this `module`, we first need to prepare the provider's YAML configuration. + +### Preparing Provider YAML + +Here, using `Anthropic` as an example, we preset the provider's basic information, supported model types, configuration methods, and credential rules. + +```YAML +provider: anthropic # Provider identifier +label: # Provider display name, can be set in en_US English and zh_Hans Chinese, zh_Hans will default to en_US if not set. + en_US: Anthropic +icon_small: # Small provider icon, stored in the _assets directory under the corresponding provider implementation directory, same language strategy as label + en_US: icon_s_en.png +icon_large: # Large provider icon, stored in the _assets directory under the corresponding provider implementation directory, same language strategy as label + en_US: icon_l_en.png +supported_model_types: # Supported model types, Anthropic only supports LLM +- llm +configurate_methods: # Supported configuration methods, Anthropic only supports predefined models +- predefined-model +provider_credential_schema: # Provider credential rules, as Anthropic only supports predefined models, unified provider credential rules need to be defined + credential_form_schemas: # List of credential form items + - variable: anthropic_api_key # Credential parameter variable name + label: # Display name + en_US: API Key + type: secret-input # Form type, here secret-input represents an encrypted information input box, showing masked information when editing. + required: true # Whether required + placeholder: # Placeholder information + zh_Hans: Enter your API Key here + en_US: Enter your API Key + - variable: anthropic_api_url + label: + en_US: API URL + type: text-input # Form type, here text-input represents a text input box + required: false + placeholder: + zh_Hans: Enter your API URL here + en_US: Enter your API URL +``` + +You can also refer to the YAML configuration information under other provider directories in `model_providers`. The complete YAML rules are available at: [Schema](schema.md#Provider). + +### Implementing Provider Code + +Providers need to inherit the `__base.model_provider.ModelProvider` base class and implement the `validate_provider_credentials` method for unified provider credential verification. For reference, see [AnthropicProvider](https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/anthropic.py). +> If the provider is the type of `customizable-model`, there is no need to implement the `validate_provider_credentials` method. + +```python +def validate_provider_credentials(self, credentials: dict) -> None: + """ + Validate provider credentials + You can choose any validate_credentials method of model type or implement validate method by yourself, + such as: get model list api + + if validate failed, raise exception + + :param credentials: provider credentials, credentials form defined in `provider_credential_schema`. + """ +``` + +Of course, you can also preliminarily reserve the implementation of `validate_provider_credentials` and directly reuse it after the model credential verification method is implemented. + +--- + +### Adding Models + +After the provider integration is complete, the next step is to integrate models under the provider. + +First, we need to determine the type of the model to be integrated and create a `module` for the corresponding model type in the provider's directory. + +The currently supported model types are as follows: + +- `llm` Text generation model +- `text_embedding` Text Embedding model +- `rerank` Rerank model +- `speech2text` Speech to text +- `moderation` Moderation + +Continuing with `Anthropic` as an example, since `Anthropic` only supports LLM, we create a `module` named `llm` in `model_providers.anthropic`. + +For predefined models, we first need to create a YAML file named after the model, such as `claude-2.1.yaml`, under the `llm` `module`. + +#### Preparing Model YAML + +```yaml +model: claude-2.1 # Model identifier +# Model display name, can be set in en_US English and zh_Hans Chinese, zh_Hans will default to en_US if not set. +# Alternatively, if the label is not set, use the model identifier content. +label: + en_US: claude-2.1 +model_type: llm # Model type, claude-2.1 is an LLM +features: # Supported features, agent-thought for Agent reasoning, vision for image understanding +- agent-thought +model_properties: # Model properties + mode: chat # LLM mode, complete for text completion model, chat for dialogue model + context_size: 200000 # Maximum supported context size +parameter_rules: # Model invocation parameter rules, only required for LLM +- name: temperature # Invocation parameter variable name + # Default preset with 5 variable content configuration templates: temperature/top_p/max_tokens/presence_penalty/frequency_penalty + # Directly set the template variable name in use_template, which will use the default configuration in entities.defaults.PARAMETER_RULE_TEMPLATE + # If additional configuration parameters are set, they will override the default configuration + use_template: temperature +- name: top_p + use_template: top_p +- name: top_k + label: # Invocation parameter display name + zh_Hans: Sampling quantity + en_US: Top k + type: int # Parameter type, supports float/int/string/boolean + help: # Help information, describing the role of the parameter + zh_Hans: Only sample from the top K options for each subsequent token. + en_US: Only sample from the top K options for each subsequent token. + required: false # Whether required, can be left unset +- name: max_tokens_to_sample + use_template: max_tokens + default: 4096 # Default parameter value + min: 1 # Minimum parameter value, only applicable for float/int + max: 4096 # Maximum parameter value, only applicable for float/int +pricing: # Pricing information + input: '8.00' # Input price, i.e., Prompt price + output: '24.00' # Output price, i.e., returned content price + unit: '0.000001' # Pricing unit, i.e., the above prices are per 100K + currency: USD # Currency +``` + +It is recommended to prepare all model configurations before starting the implementation of the model code. + +Similarly, you can also refer to the YAML configuration information for corresponding model types of other providers in the `model_providers` directory. The complete YAML rules can be found at: [Schema](schema.md#AIModel). + +#### Implementing Model Invocation Code + +Next, you need to create a python file named `llm.py` under the `llm` `module` to write the implementation code. + +In `llm.py`, create an Anthropic LLM class, which we name `AnthropicLargeLanguageModel` (arbitrarily), inheriting the `__base.large_language_model.LargeLanguageModel` base class, and implement the following methods: + +- LLM Invocation + + Implement the core method for LLM invocation, which can support both streaming and synchronous returns. + + ```python + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :return: full response or stream response chunk generator result + """ + ``` + +- Pre-calculating Input Tokens + + If the model does not provide a pre-calculated tokens interface, you can directly return 0. + + ```python + def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage], + tools: Optional[list[PromptMessageTool]] = None) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param tools: tools for tool calling + :return: + """ + ``` + +- Model Credential Verification + + Similar to provider credential verification, this step involves verification for an individual model. + + ```python + def validate_credentials(self, model: str, credentials: dict) -> None: + """ + Validate model credentials + + :param model: model name + :param credentials: model credentials + :return: + """ + ``` + +- Invocation Error Mapping Table + + When there is an exception in model invocation, it needs to be mapped to the `InvokeError` type specified by Runtime. This facilitates Dify's ability to handle different errors with appropriate follow-up actions. + + Runtime Errors: + + - `InvokeConnectionError` Invocation connection error + - `InvokeServerUnavailableError` Invocation service provider unavailable + - `InvokeRateLimitError` Invocation reached rate limit + - `InvokeAuthorizationError` Invocation authorization failure + - `InvokeBadRequestError` Invocation parameter error + + ```python + @property + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + """ + Map model invoke error to unified error + The key is the error type thrown to the caller + The value is the error type thrown by the model, + which needs to be converted into a unified error type for the caller. + + :return: Invoke error mapping + """ + ``` + +For details on the interface methods, see: [Interfaces](interfaces.md). For specific implementations, refer to: [llm.py](https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/llm/llm.py). + +### Testing + +To ensure the availability of integrated providers/models, each method written needs corresponding integration test code in the `tests` directory. + +Continuing with `Anthropic` as an example: + +Before writing test code, you need to first add the necessary credential environment variables for the test provider in `.env.example`, such as: `ANTHROPIC_API_KEY`. + +Before execution, copy `.env.example` to `.env` and then execute. + +#### Writing Test Code + +Create a `module` with the same name as the provider in the `tests` directory: `anthropic`, and continue to create `test_provider.py` and test py files for the corresponding model types within this module, as shown below: + +```shell +. +├── __init__.py +├── anthropic +│   ├── __init__.py +│   ├── test_llm.py # LLM Testing +│   └── test_provider.py # Provider Testing +``` + +Write test code for all the various cases implemented above and submit the code after passing the tests. diff --git a/api/core/model_runtime/docs/en_US/schema.md b/api/core/model_runtime/docs/en_US/schema.md new file mode 100644 index 000000000..1dfc93c35 --- /dev/null +++ b/api/core/model_runtime/docs/en_US/schema.md @@ -0,0 +1,194 @@ +# Configuration Rules + +- Provider rules are based on the [Provider](#Provider) entity. +- Model rules are based on the [AIModelEntity](#AIModelEntity) entity. + +> All entities mentioned below are based on `Pydantic BaseModel` and can be found in the `entities` module. + +### Provider + +- `provider` (string) Provider identifier, e.g., `openai` +- `label` (object) Provider display name, i18n, with `en_US` English and `zh_Hans` Chinese language settings + - `zh_Hans` (string) [optional] Chinese label name, if `zh_Hans` is not set, `en_US` will be used by default. + - `en_US` (string) English label name +- `description` (object) Provider description, i18n + - `zh_Hans` (string) [optional] Chinese description + - `en_US` (string) English description +- `icon_small` (string) [optional] Small provider ICON, stored in the `_assets` directory under the corresponding provider implementation directory, with the same language strategy as `label` + - `zh_Hans` (string) Chinese ICON + - `en_US` (string) English ICON +- `icon_large` (string) [optional] Large provider ICON, stored in the `_assets` directory under the corresponding provider implementation directory, with the same language strategy as `label` + - `zh_Hans` (string) Chinese ICON + - `en_US` (string) English ICON +- `background` (string) [optional] Background color value, e.g., #FFFFFF, if empty, the default frontend color value will be displayed. +- `help` (object) [optional] help information + - `title` (object) help title, i18n + - `zh_Hans` (string) [optional] Chinese title + - `en_US` (string) English title + - `url` (object) help link, i18n + - `zh_Hans` (string) [optional] Chinese link + - `en_US` (string) English link +- `supported_model_types` (array[[ModelType](#ModelType)]) Supported model types +- `configurate_methods` (array[[ConfigurateMethod](#ConfigurateMethod)]) Configuration methods +- `provider_credential_schema` ([ProviderCredentialSchema](#ProviderCredentialSchema)) Provider credential specification +- `model_credential_schema` ([ModelCredentialSchema](#ModelCredentialSchema)) Model credential specification + +### AIModelEntity + +- `model` (string) Model identifier, e.g., `gpt-3.5-turbo` +- `label` (object) [optional] Model display name, i18n, with `en_US` English and `zh_Hans` Chinese language settings + - `zh_Hans` (string) [optional] Chinese label name + - `en_US` (string) English label name +- `model_type` ([ModelType](#ModelType)) Model type +- `features` (array[[ModelFeature](#ModelFeature)]) [optional] Supported feature list +- `model_properties` (object) Model properties + - `mode` ([LLMMode](#LLMMode)) Mode (available for model type `llm`) + - `context_size` (int) Context size (available for model types `llm`, `text-embedding`) + - `max_chunks` (int) Maximum number of chunks (available for model types `text-embedding`, `moderation`) + - `file_upload_limit` (int) Maximum file upload limit, in MB (available for model type `speech2text`) + - `supported_file_extensions` (string) Supported file extension formats, e.g., mp3, mp4 (available for model type `speech2text`) + - `max_characters_per_chunk` (int) Maximum characters per chunk (available for model type `moderation`) +- `parameter_rules` (array[[ParameterRule](#ParameterRule)]) [optional] Model invocation parameter rules +- `pricing` ([PriceConfig](#PriceConfig)) [optional] Pricing information +- `deprecated` (bool) Whether deprecated. If deprecated, the model will no longer be displayed in the list, but those already configured can continue to be used. Default False. + +### ModelType + +- `llm` Text generation model +- `text-embedding` Text Embedding model +- `rerank` Rerank model +- `speech2text` Speech to text +- `moderation` Moderation + +### ConfigurateMethod + +- `predefined-model` Predefined model + + Indicates that users can use the predefined models under the provider by configuring the unified provider credentials. +- `customizable-model` Customizable model + + Users need to add credential configuration for each model. + +- `fetch-from-remote` Fetch from remote + + Consistent with the `predefined-model` configuration method, only unified provider credentials need to be configured, and models are obtained from the provider through credential information. + +### ModelFeature + +- `agent-thought` Agent reasoning, generally over 70B with thought chain capability. +- `vision` Vision, i.e., image understanding. + +### FetchFrom + +- `predefined-model` Predefined model +- `fetch-from-remote` Remote model + +### LLMMode + +- `complete` Text completion +- `chat` Dialogue + +### ParameterRule + +- `name` (string) Actual model invocation parameter name +- `use_template` (string) [optional] Using template + + By default, 5 variable content configuration templates are preset: + + - `temperature` + - `top_p` + - `frequency_penalty` + - `presence_penalty` + - `max_tokens` + + In use_template, you can directly set the template variable name, which will use the default configuration in entities.defaults.PARAMETER_RULE_TEMPLATE + No need to set any parameters other than `name` and `use_template`. If additional configuration parameters are set, they will override the default configuration. + Refer to `openai/llm/gpt-3.5-turbo.yaml`. + +- `label` (object) [optional] Label, i18n + + - `zh_Hans`(string) [optional] Chinese label name + - `en_US` (string) English label name + +- `type`(string) [optional] Parameter type + + - `int` Integer + - `float` Float + - `string` String + - `boolean` Boolean + +- `help` (string) [optional] Help information + + - `zh_Hans` (string) [optional] Chinese help information + - `en_US` (string) English help information + +- `required` (bool) Required, default False. + +- `default`(int/float/string/bool) [optional] Default value + +- `min`(int/float) [optional] Minimum value, applicable only to numeric types + +- `max`(int/float) [optional] Maximum value, applicable only to numeric types + +- `precision`(int) [optional] Precision, number of decimal places to keep, applicable only to numeric types + +- `options` (array[string]) [optional] Dropdown option values, applicable only when `type` is `string`, if not set or null, option values are not restricted + +### PriceConfig + +- `input` (float) Input price, i.e., Prompt price +- `output` (float) Output price, i.e., returned content price +- `unit` (float) Pricing unit, e.g., per 100K price is `0.000001` +- `currency` (string) Currency unit + +### ProviderCredentialSchema + +- `credential_form_schemas` (array[[CredentialFormSchema](#CredentialFormSchema)]) Credential form standard + +### ModelCredentialSchema + +- `model` (object) Model identifier, variable name defaults to `model` + - `label` (object) Model form item display name + - `en_US` (string) English + - `zh_Hans`(string) [optional] Chinese + - `placeholder` (object) Model prompt content + - `en_US`(string) English + - `zh_Hans`(string) [optional] Chinese +- `credential_form_schemas` (array[[CredentialFormSchema](#CredentialFormSchema)]) Credential form standard + +### CredentialFormSchema + +- `variable` (string) Form item variable name +- `label` (object) Form item label name + - `en_US`(string) English + - `zh_Hans` (string) [optional] Chinese +- `type` ([FormType](#FormType)) Form item type +- `required` (bool) Whether required +- `default`(string) Default value +- `options` (array[[FormOption](#FormOption)]) Specific property of form items of type `select` or `radio`, defining dropdown content +- `placeholder`(object) Specific property of form items of type `text-input`, placeholder content + - `en_US`(string) English + - `zh_Hans` (string) [optional] Chinese +- `max_length` (int) Specific property of form items of type `text-input`, defining maximum input length, 0 for no limit. +- `show_on` (array[[FormShowOnObject](#FormShowOnObject)]) Displayed when other form item values meet certain conditions, displayed always if empty. + +### FormType + +- `text-input` Text input component +- `secret-input` Password input component +- `select` Single-choice dropdown +- `radio` Radio component +- `switch` Switch component, only supports `true` and `false` values + +### FormOption + +- `label` (object) Label + - `en_US`(string) English + - `zh_Hans`(string) [optional] Chinese +- `value` (string) Dropdown option value +- `show_on` (array[[FormShowOnObject](#FormShowOnObject)]) Displayed when other form item values meet certain conditions, displayed always if empty. + +### FormShowOnObject + +- `variable` (string) Variable name of other form items +- `value` (string) Variable value of other form items diff --git a/api/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md b/api/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md new file mode 100644 index 000000000..daab6cedb --- /dev/null +++ b/api/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md @@ -0,0 +1,296 @@ +## 自定义预定义模型接入 + +### 介绍 + +供应商集成完成后,接下来为供应商下模型的接入,为了帮助理解整个接入过程,我们以`Xinference`为例,逐步完成一个完整的供应商接入。 + +需要注意的是,对于自定义模型,每一个模型的接入都需要填写一个完整的供应商凭据。 + +而不同于预定义模型,自定义供应商接入时永远会拥有如下两个参数,不需要在供应商yaml中定义。 + +![Alt text](images/index/image-3.png) + + +在前文中,我们已经知道了供应商无需实现`validate_provider_credential`,Runtime会自行根据用户在此选择的模型类型和模型名称调用对应的模型层的`validate_credentials`来进行验证。 + +### 编写供应商yaml + +我们首先要确定,接入的这个供应商支持哪些类型的模型。 + +当前支持模型类型如下: + +- `llm` 文本生成模型 +- `text_embedding` 文本 Embedding 模型 +- `rerank` Rerank 模型 +- `speech2text` 语音转文字 +- `moderation` 审查 + +`Xinference`支持`LLM`和`Text Embedding`和Rerank,那么我们开始编写`xinference.yaml`。 + +```yaml +provider: xinference #确定供应商标识 +label: # 供应商展示名称,可设置 en_US 英文、zh_Hans 中文两种语言,zh_Hans 不设置将默认使用 en_US。 + en_US: Xorbots Inference +icon_small: # 小图标,可以参考其他供应商的图标,存储在对应供应商实现目录下的 _assets 目录,中英文策略同 label + en_US: icon_s_en.svg +icon_large: # 大图标 + en_US: icon_l_en.svg +help: # 帮助 + title: + en_US: How to deploy Xinference + zh_Hans: 如何部署 Xinference + url: + en_US: https://github.com/xorbitsai/inference +supported_model_types: # 支持的模型类型,Xinference同时支持LLM/Text Embedding/Rerank +- llm +- text-embedding +- rerank +configurate_methods: # 因为Xinference为本地部署的供应商,并且没有预定义模型,需要用什么模型需要根据Xinference的文档自己部署,所以这里只支持自定义模型 +- customizable-model +provider_credential_schema: + credential_form_schemas: +``` + +随后,我们需要思考在Xinference中定义一个模型需要哪些凭据 + +- 它支持三种不同的模型,因此,我们需要有`model_type`来指定这个模型的类型,它有三种类型,所以我们这么编写 +```yaml +provider_credential_schema: + credential_form_schemas: + - variable: model_type + type: select + label: + en_US: Model type + zh_Hans: 模型类型 + required: true + options: + - value: text-generation + label: + en_US: Language Model + zh_Hans: 语言模型 + - value: embeddings + label: + en_US: Text Embedding + - value: reranking + label: + en_US: Rerank +``` +- 每一个模型都有自己的名称`model_name`,因此需要在这里定义 +```yaml + - variable: model_name + type: text-input + label: + en_US: Model name + zh_Hans: 模型名称 + required: true + placeholder: + zh_Hans: 填写模型名称 + en_US: Input model name +``` +- 填写Xinference本地部署的地址 +```yaml + - variable: server_url + label: + zh_Hans: 服务器URL + en_US: Server url + type: text-input + required: true + placeholder: + zh_Hans: 在此输入Xinference的服务器地址,如 https://example.com/xxx + en_US: Enter the url of your Xinference, for example https://example.com/xxx +``` +- 每个模型都有唯一的model_uid,因此需要在这里定义 +```yaml + - variable: model_uid + label: + zh_Hans: 模型UID + en_US: Model uid + type: text-input + required: true + placeholder: + zh_Hans: 在此输入您的Model UID + en_US: Enter the model uid +``` +现在,我们就完成了供应商的基础定义。 + +### 编写模型代码 + +然后我们以`llm`类型为例,编写`xinference.llm.llm.py` + +在 `llm.py` 中创建一个 Xinference LLM 类,我们取名为 `XinferenceAILargeLanguageModel`(随意),继承 `__base.large_language_model.LargeLanguageModel` 基类,实现以下几个方法: + +- LLM 调用 + + 实现 LLM 调用的核心方法,可同时支持流式和同步返回。 + + ```python + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + """ + Invoke large language model + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param model_parameters: model parameters + :param tools: tools for tool calling + :param stop: stop words + :param stream: is stream response + :param user: unique user id + :return: full response or stream response chunk generator result + """ + ``` + + 在实现时,需要注意使用两个函数来返回数据,分别用于处理同步返回和流式返回,因为Python会将函数中包含 `yield` 关键字的函数识别为生成器函数,返回的数据类型固定为 `Generator`,因此同步和流式返回需要分别实现,就像下面这样(注意下面例子使用了简化参数,实际实现时需要按照上面的参数列表进行实现): + + ```python + def _invoke(self, stream: bool, **kwargs) \ + -> Union[LLMResult, Generator]: + if stream: + return self._handle_stream_response(**kwargs) + return self._handle_sync_response(**kwargs) + + def _handle_stream_response(self, **kwargs) -> Generator: + for chunk in response: + yield chunk + def _handle_sync_response(self, **kwargs) -> LLMResult: + return LLMResult(**response) + ``` + +- 预计算输入 tokens + + 若模型未提供预计算 tokens 接口,可直接返回 0。 + + ```python + def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage], + tools: Optional[list[PromptMessageTool]] = None) -> int: + """ + Get number of tokens for given prompt messages + + :param model: model name + :param credentials: model credentials + :param prompt_messages: prompt messages + :param tools: tools for tool calling + :return: + """ + ``` + + 有时候,也许你不需要直接返回0,所以你可以使用`self._get_num_tokens_by_gpt2(text: str)`来获取预计算的tokens,这个方法位于`AIModel`基类中,它会使用GPT2的Tokenizer进行计算,但是只能作为替代方法,并不完全准确。 + +- 模型凭据校验 + + 与供应商凭据校验类似,这里针对单个模型进行校验。 + + ```python + def validate_credentials(self, model: str, credentials: dict) -> None: + """ + Validate model credentials + + :param model: model name + :param credentials: model credentials + :return: + """ + ``` + +- 模型参数Schema + + 与自定义类型不同,由于没有在yaml文件中定义一个模型支持哪些参数,因此,我们需要动态时间模型参数的Schema。 + + 如Xinference支持`max_tokens` `temperature` `top_p` 这三个模型参数。 + + 但是有的供应商根据不同的模型支持不同的参数,如供应商`OpenLLM`支持`top_k`,但是并不是这个供应商提供的所有模型都支持`top_k`,我们这里举例A模型支持`top_k`,B模型不支持`top_k`,那么我们需要在这里动态生成模型参数的Schema,如下所示: + + ```python + def get_customizable_model_schema(self, model: str, credentials: dict) -> AIModelEntity | None: + """ + used to define customizable model schema + """ + rules = [ + ParameterRule( + name='temperature', type=ParameterType.FLOAT, + use_template='temperature', + label=I18nObject( + zh_Hans='温度', en_US='Temperature' + ) + ), + ParameterRule( + name='top_p', type=ParameterType.FLOAT, + use_template='top_p', + label=I18nObject( + zh_Hans='Top P', en_US='Top P' + ) + ), + ParameterRule( + name='max_tokens', type=ParameterType.INT, + use_template='max_tokens', + min=1, + default=512, + label=I18nObject( + zh_Hans='最大生成长度', en_US='Max Tokens' + ) + ) + ] + + # if model is A, add top_k to rules + if model == 'A': + rules.append( + ParameterRule( + name='top_k', type=ParameterType.INT, + use_template='top_k', + min=1, + default=50, + label=I18nObject( + zh_Hans='Top K', en_US='Top K' + ) + ) + ) + + """ + some NOT IMPORTANT code here + """ + + entity = AIModelEntity( + model=model, + label=I18nObject( + en_US=model + ), + fetch_from=FetchFrom.CUSTOMIZABLE_MODEL, + model_type=model_type, + model_properties={ + 'mode': ModelType.LLM, + }, + parameter_rules=rules + ) + + return entity + ``` + +- 调用异常错误映射表 + + 当模型调用异常时需要映射到 Runtime 指定的 `InvokeError` 类型,方便 Dify 针对不同错误做不同后续处理。 + + Runtime Errors: + + - `InvokeConnectionError` 调用连接错误 + - `InvokeServerUnavailableError ` 调用服务方不可用 + - `InvokeRateLimitError ` 调用达到限额 + - `InvokeAuthorizationError` 调用鉴权失败 + - `InvokeBadRequestError ` 调用传参有误 + + ```python + @property + def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]: + """ + Map model invoke error to unified error + The key is the error type thrown to the caller + The value is the error type thrown by the model, + which needs to be converted into a unified error type for the caller. + + :return: Invoke error mapping + """ + ``` + +接口方法说明见:[Interfaces](./interfaces.md),具体实现可参考:[llm.py](https://github.com/langgenius/dify-runtime/blob/main/lib/model_providers/anthropic/llm/llm.py)。 \ No newline at end of file diff --git a/api/core/model_runtime/docs/zh_Hans/images/index/image-1.png b/api/core/model_runtime/docs/zh_Hans/images/index/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b158d44b29dcc2a8fa6d6d349ef8d7fb9f7d4cdd GIT binary patch literal 235102 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

Aq)Y_K^HhJl+@Ao9q$Rv9hEbl-_APR!PN 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 Ds_#HL literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/docs/en_US/images/index/image-20231210144814617.png b/api/core/model_runtime/docs/en_US/images/index/image-20231210144814617.png new file mode 100644 index 0000000000000000000000000000000000000000..b28aba83c9beb963ea23735e598a1a905566113d GIT binary patch literal 111420 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