ocrd 3.3.0__tar.gz → 3.3.2__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.
Files changed (157) hide show
  1. {ocrd-3.3.0/src/ocrd.egg-info → ocrd-3.3.2}/PKG-INFO +1 -1
  2. ocrd-3.3.2/VERSION +1 -0
  3. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/decorators/__init__.py +3 -3
  4. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/mets_server.py +1 -1
  5. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/base.py +1 -1
  6. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/builtin/dummy/ocrd-tool.json +1 -0
  7. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/helpers.py +2 -2
  8. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/resolver.py +4 -0
  9. {ocrd-3.3.0 → ocrd-3.3.2/src/ocrd.egg-info}/PKG-INFO +1 -1
  10. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_mets_server.py +1 -1
  11. ocrd-3.3.0/VERSION +0 -1
  12. {ocrd-3.3.0 → ocrd-3.3.2}/LICENSE +0 -0
  13. {ocrd-3.3.0 → ocrd-3.3.2}/MANIFEST.in +0 -0
  14. {ocrd-3.3.0 → ocrd-3.3.2}/README.md +0 -0
  15. {ocrd-3.3.0 → ocrd-3.3.2}/README_bashlib.md +0 -0
  16. {ocrd-3.3.0 → ocrd-3.3.2}/README_ocrd.md +0 -0
  17. {ocrd-3.3.0 → ocrd-3.3.2}/README_ocrd_modelfactory.md +0 -0
  18. {ocrd-3.3.0 → ocrd-3.3.2}/README_ocrd_models.md +0 -0
  19. {ocrd-3.3.0 → ocrd-3.3.2}/README_ocrd_network.md +0 -0
  20. {ocrd-3.3.0 → ocrd-3.3.2}/README_ocrd_utils.md +0 -0
  21. {ocrd-3.3.0 → ocrd-3.3.2}/README_ocrd_validators.md +0 -0
  22. {ocrd-3.3.0 → ocrd-3.3.2}/pyproject.toml +0 -0
  23. {ocrd-3.3.0 → ocrd-3.3.2}/requirements.txt +0 -0
  24. {ocrd-3.3.0 → ocrd-3.3.2}/setup.cfg +0 -0
  25. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/__init__.py +0 -0
  26. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/__init__.py +0 -0
  27. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/bashlib.py +0 -0
  28. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/log.py +0 -0
  29. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/network.py +0 -0
  30. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/ocrd_tool.py +0 -0
  31. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/process.py +0 -0
  32. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/resmgr.py +0 -0
  33. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/validate.py +0 -0
  34. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/workspace.py +0 -0
  35. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/cli/zip.py +0 -0
  36. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/constants.py +0 -0
  37. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/decorators/loglevel_option.py +0 -0
  38. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/decorators/mets_find_options.py +0 -0
  39. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/decorators/ocrd_cli_options.py +0 -0
  40. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/decorators/parameter_option.py +0 -0
  41. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/lib.bash +0 -0
  42. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/ocrd-all-tool.json +0 -0
  43. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/__init__.py +0 -0
  44. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/builtin/__init__.py +0 -0
  45. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/builtin/dummy/__init__.py +0 -0
  46. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/builtin/dummy_processor.py +0 -0
  47. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/builtin/filter_processor.py +0 -0
  48. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/processor/ocrd_page_result.py +0 -0
  49. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/resource_list.yml +0 -0
  50. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/resource_manager.py +0 -0
  51. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/task_sequence.py +0 -0
  52. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/workspace.py +0 -0
  53. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/workspace_backup.py +0 -0
  54. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd/workspace_bagger.py +0 -0
  55. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd.egg-info/SOURCES.txt +0 -0
  56. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd.egg-info/dependency_links.txt +0 -0
  57. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd.egg-info/entry_points.txt +0 -0
  58. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd.egg-info/requires.txt +0 -0
  59. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd.egg-info/top_level.txt +0 -0
  60. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_modelfactory/__init__.py +0 -0
  61. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/__init__.py +0 -0
  62. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/constants.py +0 -0
  63. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/mets-empty.xml +0 -0
  64. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_agent.py +0 -0
  65. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_exif.py +0 -0
  66. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_file.py +0 -0
  67. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_mets.py +0 -0
  68. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_page.py +0 -0
  69. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_page_generateds.py +0 -0
  70. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/ocrd_xml_base.py +0 -0
  71. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/report.py +0 -0
  72. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/utils.py +0 -0
  73. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_models/xpath_functions.py +0 -0
  74. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/__init__.py +0 -0
  75. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/cli/__init__.py +0 -0
  76. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/cli/client.py +0 -0
  77. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/cli/processing_server.py +0 -0
  78. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/cli/processing_worker.py +0 -0
  79. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/cli/processor_server.py +0 -0
  80. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/client.py +0 -0
  81. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/client_utils.py +0 -0
  82. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/constants.py +0 -0
  83. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/database.py +0 -0
  84. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/logging_utils.py +0 -0
  85. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/models/__init__.py +0 -0
  86. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/models/job.py +0 -0
  87. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/models/messages.py +0 -0
  88. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/models/ocrd_tool.py +0 -0
  89. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/models/workflow.py +0 -0
  90. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/models/workspace.py +0 -0
  91. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/param_validators.py +0 -0
  92. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/process_helpers.py +0 -0
  93. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/processing_server.py +0 -0
  94. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/processing_worker.py +0 -0
  95. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/processor_server.py +0 -0
  96. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/__init__.py +0 -0
  97. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/connector.py +0 -0
  98. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/constants.py +0 -0
  99. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/consumer.py +0 -0
  100. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/helpers.py +0 -0
  101. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/ocrd_messages.py +0 -0
  102. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/rabbitmq_utils/publisher.py +0 -0
  103. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/__init__.py +0 -0
  104. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/config_parser.py +0 -0
  105. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/connection_clients.py +0 -0
  106. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/deployer.py +0 -0
  107. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/hosts.py +0 -0
  108. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/network_agents.py +0 -0
  109. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/runtime_data/network_services.py +0 -0
  110. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/server_cache.py +0 -0
  111. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/server_utils.py +0 -0
  112. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/tcp_to_uds_mets_proxy.py +0 -0
  113. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_network/utils.py +0 -0
  114. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/__init__.py +0 -0
  115. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/config.py +0 -0
  116. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/constants.py +0 -0
  117. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/deprecate.py +0 -0
  118. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/image.py +0 -0
  119. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/introspect.py +0 -0
  120. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/logging.py +0 -0
  121. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/ocrd_logging.conf +0 -0
  122. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/os.py +0 -0
  123. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_utils/str.py +0 -0
  124. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/__init__.py +0 -0
  125. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/bagit-profile.yml +0 -0
  126. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/constants.py +0 -0
  127. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/json_validator.py +0 -0
  128. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/message_processing.schema.yml +0 -0
  129. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/message_result.schema.yml +0 -0
  130. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/mets.xsd +0 -0
  131. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/ocrd_network_message_validator.py +0 -0
  132. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/ocrd_tool.schema.yml +0 -0
  133. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/ocrd_tool_validator.py +0 -0
  134. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/ocrd_zip_validator.py +0 -0
  135. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/page.xsd +0 -0
  136. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/page_validator.py +0 -0
  137. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/parameter_validator.py +0 -0
  138. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/processing_server_config.schema.yml +0 -0
  139. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/processing_server_config_validator.py +0 -0
  140. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/resource_list_validator.py +0 -0
  141. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/workspace_validator.py +0 -0
  142. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/xlink.xsd +0 -0
  143. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/xsd_mets_validator.py +0 -0
  144. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/xsd_page_validator.py +0 -0
  145. {ocrd-3.3.0 → ocrd-3.3.2}/src/ocrd_validators/xsd_validator.py +0 -0
  146. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_decorators.py +0 -0
  147. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_logging.py +0 -0
  148. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_logging_conf.py +0 -0
  149. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_model_factory.py +0 -0
  150. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_resolver.py +0 -0
  151. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_resolver_oai.py +0 -0
  152. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_resource_manager.py +0 -0
  153. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_task_sequence.py +0 -0
  154. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_utils.py +0 -0
  155. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_version.py +0 -0
  156. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_workspace.py +0 -0
  157. {ocrd-3.3.0 → ocrd-3.3.2}/tests/test_workspace_remove.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ocrd
3
- Version: 3.3.0
3
+ Version: 3.3.2
4
4
  Summary: OCR-D framework
5
5
  Author-email: Konstantin Baierer <unixprog@gmail.com>
6
6
  License: Apache License 2.0
ocrd-3.3.2/VERSION ADDED
@@ -0,0 +1 @@
1
+ 3.3.2
@@ -107,10 +107,10 @@ def ocrd_cli_wrap_processor(
107
107
  if 'parameter_override' in kwargs:
108
108
  set_json_key_value_overrides(kwargs['parameter'], *kwargs.pop('parameter_override'))
109
109
  # Assert -I / -O
110
- if not kwargs['input_file_grp']:
110
+ if not kwargs.get('input_file_grp', None):
111
111
  raise ValueError('-I/--input-file-grp is required')
112
- if not kwargs['output_file_grp']:
113
- raise ValueError('-O/--output-file-grp is required')
112
+ if 'output_file_grp' not in kwargs:
113
+ raise ValueError('-O/--output-file-grp is required') # actually, it may be None
114
114
  resolver = Resolver()
115
115
  working_dir, mets, _, mets_server_url = \
116
116
  resolver.resolve_mets_arguments(working_dir, mets, None, mets_server_url)
@@ -131,7 +131,7 @@ class ClientSideOcrdMets:
131
131
  def __init__(self, url, workspace_path: Optional[str] = None):
132
132
  self.protocol = "tcp" if url.startswith("http://") else "uds"
133
133
  self.log = getLogger(f"ocrd.models.ocrd_mets.client.{url}")
134
- self.url = url if self.protocol == "tcp" else f'http+unix://{url.replace("/", "%2F")}'
134
+ self.url = url if self.protocol == "tcp" else f'http+unix://{url.replace("/", "%2F").replace(".", "%2E")}'
135
135
  self.ws_dir_path = workspace_path if workspace_path else None
136
136
 
137
137
  if self.protocol == "tcp" and "tcp_mets" in self.url:
@@ -1112,7 +1112,7 @@ class Processor():
1112
1112
  if not ifiles[i]:
1113
1113
  # could be from non-unique with on_error=skip or from true gap
1114
1114
  self._base_logger.error(f'Found no file for page {page} in file group {ifg}')
1115
- if config.OCRD_MISSING_INPUT == 'abort':
1115
+ if config.OCRD_MISSING_INPUT == 'ABORT':
1116
1116
  raise MissingInputFile(ifg, page, mimetype)
1117
1117
  if not any(ifiles):
1118
1118
  # must be from non-unique with on_error=skip
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "version": "1.0.0",
3
3
  "git_url": "https://github.com/OCR-D/core",
4
+ "dockerhub": "ocrd/core",
4
5
  "tools": {
5
6
  "ocrd-dummy": {
6
7
  "executable": "ocrd-dummy",
@@ -276,7 +276,7 @@ def get_processor(
276
276
  # set current processing parameters
277
277
  processor.workspace = workspace
278
278
  processor.page_id = page_id
279
- processor.input_file_grp = input_file_grp
280
- processor.output_file_grp = output_file_grp
279
+ processor.input_file_grp = input_file_grp or ''
280
+ processor.output_file_grp = output_file_grp or ''
281
281
  return processor
282
282
  raise ValueError("Processor class is not known")
@@ -308,4 +308,8 @@ class Resolver():
308
308
  if not is_file_in_directory(directory, mets_url):
309
309
  raise ValueError("--mets '%s' has a directory part inconsistent with --directory '%s'" % (mets_url, directory))
310
310
 
311
+ if mets_server_url and not mets_server_url.startswith('http://'):
312
+ # UDS socket
313
+ mets_server_url = str(Path(mets_server_url).resolve())
314
+
311
315
  return str(Path(directory).resolve()), str(mets_url), str(mets_basename), mets_server_url
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ocrd
3
- Version: 3.3.0
3
+ Version: 3.3.2
4
4
  Summary: OCR-D framework
5
5
  Author-email: Konstantin Baierer <unixprog@gmail.com>
6
6
  License: Apache License 2.0
@@ -181,7 +181,7 @@ def test_mets_server_str(start_mets_server):
181
181
  assert str(f) == '<ClientSideOcrdFile fileGrp=OCR-D-IMG, ID=FILE_0001_IMAGE, mimetype=image/tiff, url=---, local_filename=OCR-D-IMG/FILE_0001_IMAGE.tif]/>'
182
182
  a = workspace_server.mets.agents[0]
183
183
  assert str(a) == '<ClientSideOcrdAgent [type=OTHER, othertype=SOFTWARE, role=CREATOR, otherrole=---, name=DFG-Koordinierungsprojekt zur Weiterentwicklung von Verfahren der Optical Character Recognition (OCR-D)]/>'
184
- assert str(workspace_server.mets) == '<ClientSideOcrdMets[url=%s]>' % ('http+unix://%2Ftmp%2Focrd-mets-server.sock' if mets_server_url == TRANSPORTS[0] else TRANSPORTS[1])
184
+ assert str(workspace_server.mets) == '<ClientSideOcrdMets[url=%s]>' % ('http+unix://%2Ftmp%2Focrd-mets-server%2Esock' if mets_server_url == TRANSPORTS[0] else TRANSPORTS[1])
185
185
 
186
186
  def test_mets_test_unimplemented(start_mets_server):
187
187
  _, workspace_server = start_mets_server
ocrd-3.3.0/VERSION DELETED
@@ -1 +0,0 @@
1
- 3.3.0
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
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