langroid 0.1.128__tar.gz → 0.1.130__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langroid-0.1.128 → langroid-0.1.130}/PKG-INFO +8 -8
- {langroid-0.1.128 → langroid-0.1.130}/README.md +7 -7
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/task.py +1 -1
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/base.py +4 -4
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/openai_gpt.py +11 -8
- {langroid-0.1.128 → langroid-0.1.130}/pyproject.toml +1 -1
- {langroid-0.1.128 → langroid-0.1.130}/LICENSE +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/base.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/batch.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/chat_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/chat_document.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/helpers.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/junk +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/openai_assistant.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/doc_chat_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/recipient_validator_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/relevance_extractor_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/retriever_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/utils/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/utils/system_message.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/utils/tools.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/table_chat_agent.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tool_message.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tools/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tools/extract_tool.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tools/generator_tool.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tools/google_search_tool.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tools/recipient_tool.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent/tools/segment_extract_tool.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/agent_config.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/cachedb/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/cachedb/base.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/cachedb/momento_cachedb.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/cachedb/redis_cachedb.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/embedding_models/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/embedding_models/base.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/embedding_models/clustering.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/embedding_models/models.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/azure_openai.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/config.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/openai_assistants.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/prompt_formatter/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/prompt_formatter/base.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/utils.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/mytypes.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/agent_chats.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/code-parsing.md +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/code_parser.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/config.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/document_parser.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/json.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/para_sentence_split.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/parser.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/repo_loader.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/search.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/spider.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/table_loader.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/url_loader.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/url_loader_cookies.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/urls.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/utils.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/parsing/web_search.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/prompts/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/prompts/dialog.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/prompts/prompts_config.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/prompts/templates.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/prompts/transforms.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/algorithms/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/algorithms/graph.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/configuration.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/constants.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/docker.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/globals.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/llms/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/llms/strings.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/logging.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/output/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/output/printing.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/pydantic_utils.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/system.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/web/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/web/login.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/utils/web/selenium_login.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/__init__.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/base.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/chromadb.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/lancedb.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/meilisearch.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/momento.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/qdrant_cloud.py +0 -0
- {langroid-0.1.128 → langroid-0.1.130}/langroid/vector_store/qdrantdb.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: langroid
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.130
|
4
4
|
Summary: Harness LLMs with Multi-Agent Programming
|
5
5
|
License: MIT
|
6
6
|
Author: Prasad Chalasani
|
@@ -123,7 +123,7 @@ Description-Content-Type: text/markdown
|
|
123
123
|
</h3>
|
124
124
|
|
125
125
|
`Langroid` is an intuitive, lightweight, extensible and principled
|
126
|
-
Python framework to easily build LLM-powered applications.
|
126
|
+
Python framework to easily build LLM-powered applications, from ex-CMU and UW-Madison researchers.
|
127
127
|
You set up Agents, equip them with optional components (LLM,
|
128
128
|
vector-store and tools/functions), assign them tasks, and have them
|
129
129
|
collaboratively solve a problem by exchanging messages.
|
@@ -137,6 +137,12 @@ into simplifying the developer experience; it does not use `Langchain`.
|
|
137
137
|
We welcome contributions -- See the [contributions](./CONTRIBUTING.md) document
|
138
138
|
for ideas on what to contribute.
|
139
139
|
|
140
|
+
|
141
|
+
Building LLM Applications? Prasad Chalasani is available for consulting
|
142
|
+
(advisory/development): pchalasani at gmail dot com.
|
143
|
+
|
144
|
+
Sponsorship is also accepted via [GitHub Sponsors](https://github.com/sponsors/langroid)
|
145
|
+
|
140
146
|
**Questions, Feedback, Ideas? Join us on [Discord](https://discord.gg/ZU36McDgDs)!**
|
141
147
|
|
142
148
|
# Quick glimpse of coding with Langroid
|
@@ -902,14 +908,8 @@ If you like this project, please give it a star ⭐ and 📢 spread the word in
|
|
902
908
|
[](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fgithub.com%2Flangroid%2Flangroid&t=Harness%20LLMs%20with%20Multi-Agent%20Programming)
|
903
909
|
[](https://www.reddit.com/submit?url=https%3A%2F%2Fgithub.com%2Flangroid%2Flangroid&title=Harness%20LLMs%20with%20Multi-Agent%20Programming)
|
904
910
|
|
905
|
-
|
906
|
-
|
907
|
-
|
908
911
|
Your support will help build Langroid's momentum and community.
|
909
912
|
|
910
|
-
|
911
|
-
|
912
|
-
|
913
913
|
# Langroid Co-Founders
|
914
914
|
|
915
915
|
- [Prasad Chalasani](https://www.linkedin.com/in/pchalasani/) (IIT BTech/CS, CMU PhD/ML; Independent ML Consultant)
|
@@ -34,7 +34,7 @@
|
|
34
34
|
</h3>
|
35
35
|
|
36
36
|
`Langroid` is an intuitive, lightweight, extensible and principled
|
37
|
-
Python framework to easily build LLM-powered applications.
|
37
|
+
Python framework to easily build LLM-powered applications, from ex-CMU and UW-Madison researchers.
|
38
38
|
You set up Agents, equip them with optional components (LLM,
|
39
39
|
vector-store and tools/functions), assign them tasks, and have them
|
40
40
|
collaboratively solve a problem by exchanging messages.
|
@@ -48,6 +48,12 @@ into simplifying the developer experience; it does not use `Langchain`.
|
|
48
48
|
We welcome contributions -- See the [contributions](./CONTRIBUTING.md) document
|
49
49
|
for ideas on what to contribute.
|
50
50
|
|
51
|
+
|
52
|
+
Building LLM Applications? Prasad Chalasani is available for consulting
|
53
|
+
(advisory/development): pchalasani at gmail dot com.
|
54
|
+
|
55
|
+
Sponsorship is also accepted via [GitHub Sponsors](https://github.com/sponsors/langroid)
|
56
|
+
|
51
57
|
**Questions, Feedback, Ideas? Join us on [Discord](https://discord.gg/ZU36McDgDs)!**
|
52
58
|
|
53
59
|
# Quick glimpse of coding with Langroid
|
@@ -813,14 +819,8 @@ If you like this project, please give it a star ⭐ and 📢 spread the word in
|
|
813
819
|
[](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fgithub.com%2Flangroid%2Flangroid&t=Harness%20LLMs%20with%20Multi-Agent%20Programming)
|
814
820
|
[](https://www.reddit.com/submit?url=https%3A%2F%2Fgithub.com%2Flangroid%2Flangroid&title=Harness%20LLMs%20with%20Multi-Agent%20Programming)
|
815
821
|
|
816
|
-
|
817
|
-
|
818
|
-
|
819
822
|
Your support will help build Langroid's momentum and community.
|
820
823
|
|
821
|
-
|
822
|
-
|
823
|
-
|
824
824
|
# Langroid Co-Founders
|
825
825
|
|
826
826
|
- [Prasad Chalasani](https://www.linkedin.com/in/pchalasani/) (IIT BTech/CS, CMU PhD/ML; Independent ML Consultant)
|
@@ -61,7 +61,7 @@ class Task:
|
|
61
61
|
single_round: bool = False,
|
62
62
|
system_message: str = "",
|
63
63
|
user_message: str | None = "",
|
64
|
-
restart: bool =
|
64
|
+
restart: bool = True,
|
65
65
|
default_human_response: Optional[str] = None,
|
66
66
|
interactive: bool = True,
|
67
67
|
only_user_quits_root: bool = True,
|
@@ -362,18 +362,18 @@ class LanguageModel(ABC):
|
|
362
362
|
pass
|
363
363
|
|
364
364
|
@abstractmethod
|
365
|
-
def generate(self, prompt: str, max_tokens: int) -> LLMResponse:
|
365
|
+
def generate(self, prompt: str, max_tokens: int = 200) -> LLMResponse:
|
366
366
|
pass
|
367
367
|
|
368
368
|
@abstractmethod
|
369
|
-
async def agenerate(self, prompt: str, max_tokens: int) -> LLMResponse:
|
369
|
+
async def agenerate(self, prompt: str, max_tokens: int = 200) -> LLMResponse:
|
370
370
|
pass
|
371
371
|
|
372
372
|
@abstractmethod
|
373
373
|
def chat(
|
374
374
|
self,
|
375
375
|
messages: Union[str, List[LLMMessage]],
|
376
|
-
max_tokens: int,
|
376
|
+
max_tokens: int = 200,
|
377
377
|
functions: Optional[List[LLMFunctionSpec]] = None,
|
378
378
|
function_call: str | Dict[str, str] = "auto",
|
379
379
|
) -> LLMResponse:
|
@@ -383,7 +383,7 @@ class LanguageModel(ABC):
|
|
383
383
|
async def achat(
|
384
384
|
self,
|
385
385
|
messages: Union[str, List[LLMMessage]],
|
386
|
-
max_tokens: int,
|
386
|
+
max_tokens: int = 200,
|
387
387
|
functions: Optional[List[LLMFunctionSpec]] = None,
|
388
388
|
function_call: str | Dict[str, str] = "auto",
|
389
389
|
) -> LLMResponse:
|
@@ -49,9 +49,7 @@ class OpenAICompletionModel(str, Enum):
|
|
49
49
|
"""Enum for OpenAI Completion models"""
|
50
50
|
|
51
51
|
TEXT_DA_VINCI_003 = "text-davinci-003" # deprecated
|
52
|
-
|
53
|
-
GPT4 = "gpt-4" # only works on chat-completion endpoint
|
54
|
-
GPT4_TURBO = "gpt-4-1106-preview" # only works on chat-completion endpoint
|
52
|
+
GPT3_5_TURBO_INSTRUCT = "gpt-3.5-turbo-instruct"
|
55
53
|
|
56
54
|
|
57
55
|
_context_length: Dict[str, int] = {
|
@@ -92,9 +90,10 @@ class OpenAIGPTConfig(LLMConfig):
|
|
92
90
|
use_chat_for_completion = True # do not change this, for OpenAI models!
|
93
91
|
timeout: int = 20
|
94
92
|
temperature: float = 0.2
|
93
|
+
seed: int | None = 42
|
95
94
|
# these can be any model name that is served at an OpenAI-compatible API end point
|
96
95
|
chat_model: str = OpenAIChatModel.GPT4
|
97
|
-
completion_model: str = OpenAICompletionModel.
|
96
|
+
completion_model: str = OpenAICompletionModel.GPT3_5_TURBO_INSTRUCT
|
98
97
|
|
99
98
|
# all of the vars above can be set via env vars,
|
100
99
|
# by upper-casing the name and prefixing with OPENAI_, e.g.
|
@@ -123,6 +122,7 @@ class OpenAIGPTConfig(LLMConfig):
|
|
123
122
|
"""
|
124
123
|
)
|
125
124
|
litellm.telemetry = False
|
125
|
+
self.seed = None # some local mdls don't support seed
|
126
126
|
keys_dict = litellm.validate_environment(self.chat_model)
|
127
127
|
missing_keys = keys_dict.get("missing_keys", [])
|
128
128
|
if len(missing_keys) > 0:
|
@@ -201,6 +201,7 @@ class OpenAIGPT(LanguageModel):
|
|
201
201
|
# so we can just use `openai.*` methods directly,
|
202
202
|
# and don't need a adaptor library like litellm
|
203
203
|
self.config.litellm = False
|
204
|
+
self.config.seed = None # some models raise an error when seed is set
|
204
205
|
# Extract the api_base from the model name after the "local/" prefix
|
205
206
|
self.api_base = "http://" + self.config.chat_model.split("/", 1)[1]
|
206
207
|
else:
|
@@ -551,7 +552,7 @@ class OpenAIGPT(LanguageModel):
|
|
551
552
|
prompt_tokens=prompt_tokens, completion_tokens=completion_tokens, cost=cost
|
552
553
|
)
|
553
554
|
|
554
|
-
def generate(self, prompt: str, max_tokens: int) -> LLMResponse:
|
555
|
+
def generate(self, prompt: str, max_tokens: int = 200) -> LLMResponse:
|
555
556
|
try:
|
556
557
|
return self._generate(prompt, max_tokens)
|
557
558
|
except Exception as e:
|
@@ -598,7 +599,7 @@ class OpenAIGPT(LanguageModel):
|
|
598
599
|
msg = response["choices"][0]["text"].strip()
|
599
600
|
return LLMResponse(message=msg, cached=cached)
|
600
601
|
|
601
|
-
async def agenerate(self, prompt: str, max_tokens: int) -> LLMResponse:
|
602
|
+
async def agenerate(self, prompt: str, max_tokens: int = 200) -> LLMResponse:
|
602
603
|
try:
|
603
604
|
return await self._agenerate(prompt, max_tokens)
|
604
605
|
except Exception as e:
|
@@ -688,7 +689,7 @@ class OpenAIGPT(LanguageModel):
|
|
688
689
|
def chat(
|
689
690
|
self,
|
690
691
|
messages: Union[str, List[LLMMessage]],
|
691
|
-
max_tokens: int,
|
692
|
+
max_tokens: int = 200,
|
692
693
|
functions: Optional[List[LLMFunctionSpec]] = None,
|
693
694
|
function_call: str | Dict[str, str] = "auto",
|
694
695
|
) -> LLMResponse:
|
@@ -730,7 +731,7 @@ class OpenAIGPT(LanguageModel):
|
|
730
731
|
async def achat(
|
731
732
|
self,
|
732
733
|
messages: Union[str, List[LLMMessage]],
|
733
|
-
max_tokens: int,
|
734
|
+
max_tokens: int = 200,
|
734
735
|
functions: Optional[List[LLMFunctionSpec]] = None,
|
735
736
|
function_call: str | Dict[str, str] = "auto",
|
736
737
|
) -> LLMResponse:
|
@@ -851,6 +852,8 @@ class OpenAIGPT(LanguageModel):
|
|
851
852
|
temperature=self.config.temperature,
|
852
853
|
stream=self.get_stream(),
|
853
854
|
)
|
855
|
+
if self.config.seed is not None:
|
856
|
+
args.update(dict(seed=self.config.seed))
|
854
857
|
# only include functions-related args if functions are provided
|
855
858
|
# since the OpenAI API will throw an error if `functions` is None or []
|
856
859
|
if functions is not None:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langroid-0.1.128 → langroid-0.1.130}/langroid/agent/special/sql/utils/description_extractors.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{langroid-0.1.128 → langroid-0.1.130}/langroid/language_models/prompt_formatter/llama2_formatter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|