looker-sdk 24.2.1__tar.gz → 24.8.0__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.
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/PKG-INFO +1 -1
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/error.py +1 -1
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/sdk/api40/models.py +126 -61
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/sdk/constants.py +1 -1
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/version.py +1 -1
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk.egg-info/PKG-INFO +1 -1
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/LICENSE.txt +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/MANIFEST.in +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/README.rst +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/py.typed +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/api_methods.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/api_settings.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/auth_session.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/auth_token.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/constants.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/hooks.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/model.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/requests_transport.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/serialize.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/rtl/transport.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/sdk/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/sdk/api40/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk/sdk/api40/methods.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk.egg-info/SOURCES.txt +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk.egg-info/dependency_links.txt +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk.egg-info/requires.txt +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/looker_sdk.egg-info/top_level.txt +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/setup.cfg +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/setup.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/conftest.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/integration/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/integration/test_methods.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/integration/test_netrc.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/__init__.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_api_methods.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_api_settings.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_auth_session.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_auth_token.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_requests_transport.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_serialize.py +0 -0
- {looker_sdk-24.2.1 → looker_sdk-24.8.0}/tests/rtl/test_transport.py +0 -0
|
@@ -99,7 +99,7 @@ class ErrorDocHelper:
|
|
|
99
99
|
ERROR_CODES_URL: str = "https://static-a.cdn.looker.app/errorcodes/"
|
|
100
100
|
lookup_dict: Dict[str, Dict[str, str]] = {}
|
|
101
101
|
RE_PATTERN: str = (
|
|
102
|
-
|
|
102
|
+
r'(https://docs\.looker\.com/r/err/|https://cloud\.google\.com/looker/docs/r/err/)(.*)/(\d{3})(.*)'
|
|
103
103
|
)
|
|
104
104
|
pattern = re.compile(RE_PATTERN, flags=re.IGNORECASE)
|
|
105
105
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
#
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# 341 API models: 258 Spec, 0 Request, 61 Write, 22 Enum
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
# NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
|
|
@@ -3618,6 +3618,7 @@ class DBConnection(model.Model):
|
|
|
3618
3618
|
always_retry_failed_builds: When true, error PDTs will be retried every regenerator cycle
|
|
3619
3619
|
cost_estimate_enabled: When true, query cost estimate will be displayed in explore.
|
|
3620
3620
|
pdt_api_control_enabled: PDT builds on this connection can be kicked off and cancelled via API.
|
|
3621
|
+
connection_pooling: Enable database connection pooling.
|
|
3621
3622
|
"""
|
|
3622
3623
|
|
|
3623
3624
|
can: Optional[MutableMapping[str, bool]] = None
|
|
@@ -3667,6 +3668,7 @@ class DBConnection(model.Model):
|
|
|
3667
3668
|
always_retry_failed_builds: Optional[bool] = None
|
|
3668
3669
|
cost_estimate_enabled: Optional[bool] = None
|
|
3669
3670
|
pdt_api_control_enabled: Optional[bool] = None
|
|
3671
|
+
connection_pooling: Optional[bool] = None
|
|
3670
3672
|
|
|
3671
3673
|
def __init__(
|
|
3672
3674
|
self,
|
|
@@ -3717,7 +3719,8 @@ class DBConnection(model.Model):
|
|
|
3717
3719
|
oauth_application_id: Optional[str] = None,
|
|
3718
3720
|
always_retry_failed_builds: Optional[bool] = None,
|
|
3719
3721
|
cost_estimate_enabled: Optional[bool] = None,
|
|
3720
|
-
pdt_api_control_enabled: Optional[bool] = None
|
|
3722
|
+
pdt_api_control_enabled: Optional[bool] = None,
|
|
3723
|
+
connection_pooling: Optional[bool] = None
|
|
3721
3724
|
):
|
|
3722
3725
|
self.can = can
|
|
3723
3726
|
self.name = name
|
|
@@ -3766,6 +3769,7 @@ class DBConnection(model.Model):
|
|
|
3766
3769
|
self.always_retry_failed_builds = always_retry_failed_builds
|
|
3767
3770
|
self.cost_estimate_enabled = cost_estimate_enabled
|
|
3768
3771
|
self.pdt_api_control_enabled = pdt_api_control_enabled
|
|
3772
|
+
self.connection_pooling = connection_pooling
|
|
3769
3773
|
|
|
3770
3774
|
|
|
3771
3775
|
@attr.s(auto_attribs=True, init=False)
|
|
@@ -4125,6 +4129,7 @@ class DialectInfoOptions(model.Model):
|
|
|
4125
4129
|
tns: Has Oracle TNS support
|
|
4126
4130
|
username: Username can be specified
|
|
4127
4131
|
username_required: Username is required
|
|
4132
|
+
supports_connection_pooling: Has support for connection pooling
|
|
4128
4133
|
"""
|
|
4129
4134
|
|
|
4130
4135
|
additional_params: Optional[bool] = None
|
|
@@ -4148,6 +4153,7 @@ class DialectInfoOptions(model.Model):
|
|
|
4148
4153
|
tns: Optional[bool] = None
|
|
4149
4154
|
username: Optional[bool] = None
|
|
4150
4155
|
username_required: Optional[bool] = None
|
|
4156
|
+
supports_connection_pooling: Optional[bool] = None
|
|
4151
4157
|
|
|
4152
4158
|
def __init__(
|
|
4153
4159
|
self,
|
|
@@ -4172,7 +4178,8 @@ class DialectInfoOptions(model.Model):
|
|
|
4172
4178
|
tmp_table: Optional[bool] = None,
|
|
4173
4179
|
tns: Optional[bool] = None,
|
|
4174
4180
|
username: Optional[bool] = None,
|
|
4175
|
-
username_required: Optional[bool] = None
|
|
4181
|
+
username_required: Optional[bool] = None,
|
|
4182
|
+
supports_connection_pooling: Optional[bool] = None
|
|
4176
4183
|
):
|
|
4177
4184
|
self.additional_params = additional_params
|
|
4178
4185
|
self.after_connect_statements = after_connect_statements
|
|
@@ -4195,6 +4202,7 @@ class DialectInfoOptions(model.Model):
|
|
|
4195
4202
|
self.tns = tns
|
|
4196
4203
|
self.username = username
|
|
4197
4204
|
self.username_required = username_required
|
|
4205
|
+
self.supports_connection_pooling = supports_connection_pooling
|
|
4198
4206
|
|
|
4199
4207
|
|
|
4200
4208
|
@attr.s(auto_attribs=True, init=False)
|
|
@@ -5778,65 +5786,17 @@ InvestigativeContentType.__new__ = model.safe_enum__new__ # type: ignore
|
|
|
5778
5786
|
class JsonBi(model.Model):
|
|
5779
5787
|
"""
|
|
5780
5788
|
Attributes:
|
|
5781
|
-
|
|
5782
|
-
|
|
5783
|
-
pivots: Pivots
|
|
5784
|
-
has_subtotals: If the query has subtotals
|
|
5785
|
-
has_totals: If the query has totals
|
|
5786
|
-
columns_truncated: If the query results hit the maximum column limit and additional columns were truncated
|
|
5787
|
-
filter_expression: Filter expression applied to the query results
|
|
5788
|
-
filters: Filters applied to the query results
|
|
5789
|
-
sql: Raw sql query. Null if user does not have permission to view sql
|
|
5790
|
-
data: Json query results
|
|
5789
|
+
metadata:
|
|
5790
|
+
rows: Json query results
|
|
5791
5791
|
"""
|
|
5792
5792
|
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
has_subtotals: bool
|
|
5797
|
-
has_totals: bool
|
|
5798
|
-
columns_truncated: str
|
|
5799
|
-
filter_expression: str
|
|
5800
|
-
filters: MutableMapping[str, Any]
|
|
5801
|
-
sql: str
|
|
5802
|
-
data: Sequence[str]
|
|
5803
|
-
__annotations__ = {
|
|
5804
|
-
"big_query_metadata": ForwardRef("JsonBiBigQueryMetadata"),
|
|
5805
|
-
"fields": ForwardRef("JsonBiFields"),
|
|
5806
|
-
"pivots": Sequence["JsonBiPivots"],
|
|
5807
|
-
"has_subtotals": bool,
|
|
5808
|
-
"has_totals": bool,
|
|
5809
|
-
"columns_truncated": str,
|
|
5810
|
-
"filter_expression": str,
|
|
5811
|
-
"filters": MutableMapping[str, Any],
|
|
5812
|
-
"sql": str,
|
|
5813
|
-
"data": Sequence[str],
|
|
5814
|
-
}
|
|
5793
|
+
metadata: "JsonBiMetadata"
|
|
5794
|
+
rows: Sequence[str]
|
|
5795
|
+
__annotations__ = {"metadata": ForwardRef("JsonBiMetadata"), "rows": Sequence[str]}
|
|
5815
5796
|
|
|
5816
|
-
def __init__(
|
|
5817
|
-
self
|
|
5818
|
-
|
|
5819
|
-
big_query_metadata: "JsonBiBigQueryMetadata",
|
|
5820
|
-
fields: "JsonBiFields",
|
|
5821
|
-
pivots: Sequence["JsonBiPivots"],
|
|
5822
|
-
has_subtotals: bool,
|
|
5823
|
-
has_totals: bool,
|
|
5824
|
-
columns_truncated: str,
|
|
5825
|
-
filter_expression: str,
|
|
5826
|
-
filters: MutableMapping[str, Any],
|
|
5827
|
-
sql: str,
|
|
5828
|
-
data: Sequence[str]
|
|
5829
|
-
):
|
|
5830
|
-
self.big_query_metadata = big_query_metadata
|
|
5831
|
-
self.fields = fields
|
|
5832
|
-
self.pivots = pivots
|
|
5833
|
-
self.has_subtotals = has_subtotals
|
|
5834
|
-
self.has_totals = has_totals
|
|
5835
|
-
self.columns_truncated = columns_truncated
|
|
5836
|
-
self.filter_expression = filter_expression
|
|
5837
|
-
self.filters = filters
|
|
5838
|
-
self.sql = sql
|
|
5839
|
-
self.data = data
|
|
5797
|
+
def __init__(self, *, metadata: "JsonBiMetadata", rows: Sequence[str]):
|
|
5798
|
+
self.metadata = metadata
|
|
5799
|
+
self.rows = rows
|
|
5840
5800
|
|
|
5841
5801
|
|
|
5842
5802
|
@attr.s(auto_attribs=True, init=False)
|
|
@@ -5923,22 +5883,86 @@ class JsonBiFields(model.Model):
|
|
|
5923
5883
|
dimensions: Dimensions represent a column in a table, or a computed value based on some sort of column manipulation or combination
|
|
5924
5884
|
measures: Measures are similar to aggregate functions in SQL (for example, COUNT, SUM, AVG) and represent information about multiple rows
|
|
5925
5885
|
pivots: Pivots
|
|
5886
|
+
table_calculations: Table Calculations (beta: May not be included)
|
|
5926
5887
|
"""
|
|
5927
5888
|
|
|
5928
5889
|
dimensions: Sequence["JsonBiField"]
|
|
5929
5890
|
measures: Sequence["JsonBiField"]
|
|
5930
5891
|
pivots: Sequence["JsonBiField"]
|
|
5892
|
+
table_calculations: Optional[Sequence["JsonBiTableCalc"]] = None
|
|
5931
5893
|
|
|
5932
5894
|
def __init__(
|
|
5933
5895
|
self,
|
|
5934
5896
|
*,
|
|
5935
5897
|
dimensions: Sequence["JsonBiField"],
|
|
5936
5898
|
measures: Sequence["JsonBiField"],
|
|
5937
|
-
pivots: Sequence["JsonBiField"]
|
|
5899
|
+
pivots: Sequence["JsonBiField"],
|
|
5900
|
+
table_calculations: Optional[Sequence["JsonBiTableCalc"]] = None
|
|
5938
5901
|
):
|
|
5939
5902
|
self.dimensions = dimensions
|
|
5940
5903
|
self.measures = measures
|
|
5941
5904
|
self.pivots = pivots
|
|
5905
|
+
self.table_calculations = table_calculations
|
|
5906
|
+
|
|
5907
|
+
|
|
5908
|
+
@attr.s(auto_attribs=True, init=False)
|
|
5909
|
+
class JsonBiMetadata(model.Model):
|
|
5910
|
+
"""
|
|
5911
|
+
Attributes:
|
|
5912
|
+
big_query_metadata:
|
|
5913
|
+
fields:
|
|
5914
|
+
pivots: Pivots
|
|
5915
|
+
has_subtotals: If the query has subtotals
|
|
5916
|
+
has_totals: If the query has totals
|
|
5917
|
+
columns_truncated: If the query results hit the maximum column limit and additional columns were truncated
|
|
5918
|
+
filter_expression: Filter expression applied to the query results
|
|
5919
|
+
filters: Filters applied to the query results
|
|
5920
|
+
sql: Raw sql query. Null if user does not have permission to view sql
|
|
5921
|
+
"""
|
|
5922
|
+
|
|
5923
|
+
big_query_metadata: "JsonBiBigQueryMetadata"
|
|
5924
|
+
fields: "JsonBiFields"
|
|
5925
|
+
pivots: Sequence["JsonBiPivots"]
|
|
5926
|
+
has_subtotals: bool
|
|
5927
|
+
has_totals: bool
|
|
5928
|
+
columns_truncated: str
|
|
5929
|
+
filter_expression: str
|
|
5930
|
+
filters: MutableMapping[str, Any]
|
|
5931
|
+
sql: str
|
|
5932
|
+
__annotations__ = {
|
|
5933
|
+
"big_query_metadata": ForwardRef("JsonBiBigQueryMetadata"),
|
|
5934
|
+
"fields": ForwardRef("JsonBiFields"),
|
|
5935
|
+
"pivots": Sequence["JsonBiPivots"],
|
|
5936
|
+
"has_subtotals": bool,
|
|
5937
|
+
"has_totals": bool,
|
|
5938
|
+
"columns_truncated": str,
|
|
5939
|
+
"filter_expression": str,
|
|
5940
|
+
"filters": MutableMapping[str, Any],
|
|
5941
|
+
"sql": str,
|
|
5942
|
+
}
|
|
5943
|
+
|
|
5944
|
+
def __init__(
|
|
5945
|
+
self,
|
|
5946
|
+
*,
|
|
5947
|
+
big_query_metadata: "JsonBiBigQueryMetadata",
|
|
5948
|
+
fields: "JsonBiFields",
|
|
5949
|
+
pivots: Sequence["JsonBiPivots"],
|
|
5950
|
+
has_subtotals: bool,
|
|
5951
|
+
has_totals: bool,
|
|
5952
|
+
columns_truncated: str,
|
|
5953
|
+
filter_expression: str,
|
|
5954
|
+
filters: MutableMapping[str, Any],
|
|
5955
|
+
sql: str
|
|
5956
|
+
):
|
|
5957
|
+
self.big_query_metadata = big_query_metadata
|
|
5958
|
+
self.fields = fields
|
|
5959
|
+
self.pivots = pivots
|
|
5960
|
+
self.has_subtotals = has_subtotals
|
|
5961
|
+
self.has_totals = has_totals
|
|
5962
|
+
self.columns_truncated = columns_truncated
|
|
5963
|
+
self.filter_expression = filter_expression
|
|
5964
|
+
self.filters = filters
|
|
5965
|
+
self.sql = sql
|
|
5942
5966
|
|
|
5943
5967
|
|
|
5944
5968
|
@attr.s(auto_attribs=True, init=False)
|
|
@@ -5970,6 +5994,43 @@ class JsonBiPivots(model.Model):
|
|
|
5970
5994
|
self.is_total = is_total
|
|
5971
5995
|
|
|
5972
5996
|
|
|
5997
|
+
@attr.s(auto_attribs=True, init=False)
|
|
5998
|
+
class JsonBiTableCalc(model.Model):
|
|
5999
|
+
"""
|
|
6000
|
+
Attributes:
|
|
6001
|
+
name: Table Calc Name
|
|
6002
|
+
label: Table Calc Label
|
|
6003
|
+
align: Alignment
|
|
6004
|
+
expression: Evaluated table calculation expression
|
|
6005
|
+
value_format: Value format
|
|
6006
|
+
measure: If table calculation is a measure
|
|
6007
|
+
"""
|
|
6008
|
+
|
|
6009
|
+
name: str
|
|
6010
|
+
label: str
|
|
6011
|
+
align: str
|
|
6012
|
+
expression: str
|
|
6013
|
+
value_format: str
|
|
6014
|
+
measure: bool
|
|
6015
|
+
|
|
6016
|
+
def __init__(
|
|
6017
|
+
self,
|
|
6018
|
+
*,
|
|
6019
|
+
name: str,
|
|
6020
|
+
label: str,
|
|
6021
|
+
align: str,
|
|
6022
|
+
expression: str,
|
|
6023
|
+
value_format: str,
|
|
6024
|
+
measure: bool
|
|
6025
|
+
):
|
|
6026
|
+
self.name = name
|
|
6027
|
+
self.label = label
|
|
6028
|
+
self.align = align
|
|
6029
|
+
self.expression = expression
|
|
6030
|
+
self.value_format = value_format
|
|
6031
|
+
self.measure = measure
|
|
6032
|
+
|
|
6033
|
+
|
|
5973
6034
|
@attr.s(auto_attribs=True, init=False)
|
|
5974
6035
|
class LDAPConfig(model.Model):
|
|
5975
6036
|
"""
|
|
@@ -13398,6 +13459,7 @@ class WriteDBConnection(model.Model):
|
|
|
13398
13459
|
always_retry_failed_builds: When true, error PDTs will be retried every regenerator cycle
|
|
13399
13460
|
cost_estimate_enabled: When true, query cost estimate will be displayed in explore.
|
|
13400
13461
|
pdt_api_control_enabled: PDT builds on this connection can be kicked off and cancelled via API.
|
|
13462
|
+
connection_pooling: Enable database connection pooling.
|
|
13401
13463
|
"""
|
|
13402
13464
|
|
|
13403
13465
|
name: Optional[str] = None
|
|
@@ -13435,6 +13497,7 @@ class WriteDBConnection(model.Model):
|
|
|
13435
13497
|
always_retry_failed_builds: Optional[bool] = None
|
|
13436
13498
|
cost_estimate_enabled: Optional[bool] = None
|
|
13437
13499
|
pdt_api_control_enabled: Optional[bool] = None
|
|
13500
|
+
connection_pooling: Optional[bool] = None
|
|
13438
13501
|
|
|
13439
13502
|
def __init__(
|
|
13440
13503
|
self,
|
|
@@ -13473,7 +13536,8 @@ class WriteDBConnection(model.Model):
|
|
|
13473
13536
|
oauth_application_id: Optional[str] = None,
|
|
13474
13537
|
always_retry_failed_builds: Optional[bool] = None,
|
|
13475
13538
|
cost_estimate_enabled: Optional[bool] = None,
|
|
13476
|
-
pdt_api_control_enabled: Optional[bool] = None
|
|
13539
|
+
pdt_api_control_enabled: Optional[bool] = None,
|
|
13540
|
+
connection_pooling: Optional[bool] = None
|
|
13477
13541
|
):
|
|
13478
13542
|
self.name = name
|
|
13479
13543
|
self.host = host
|
|
@@ -13510,6 +13574,7 @@ class WriteDBConnection(model.Model):
|
|
|
13510
13574
|
self.always_retry_failed_builds = always_retry_failed_builds
|
|
13511
13575
|
self.cost_estimate_enabled = cost_estimate_enabled
|
|
13512
13576
|
self.pdt_api_control_enabled = pdt_api_control_enabled
|
|
13577
|
+
self.connection_pooling = connection_pooling
|
|
13513
13578
|
|
|
13514
13579
|
|
|
13515
13580
|
@attr.s(auto_attribs=True, init=False)
|
|
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
|