adiwg-mdjson_schemas 2.0.0.pre.alpha.1 → 2.0.0.pre.alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/address.json +1 -0
- data/examples/allocation.json +8 -12
- data/examples/computedBbox.json +363 -376
- data/examples/legalConstraint.json +14 -21
- data/examples/locale.json +11 -14
- data/examples/phone.json +5 -9
- data/examples/securityConstraint.json +6 -13
- data/examples/series.json +5 -9
- data/examples/timeInterval.json +4 -8
- data/lib/adiwg/mdjson_schemas/version.rb +1 -1
- data/schema/additionalDocumentation.json +1 -0
- data/schema/associatedResource.json +44 -44
- data/schema/attribute.json +2 -3
- data/schema/attributeGroup.json +1 -1
- data/schema/bbox.json +1 -0
- data/schema/citation.json +4 -5
- data/schema/common.json +1 -2
- data/schema/constraint.json +7 -12
- data/schema/contact.json +13 -14
- data/schema/coverageDescription.json +1 -3
- data/schema/dataDictionary.json +1 -3
- data/schema/distribution.json +2 -5
- data/schema/distributor.json +1 -2
- data/schema/domain.json +2 -1
- data/schema/entity.json +8 -8
- data/schema/extent.json +1 -1
- data/schema/format.json +12 -13
- data/schema/funding.json +41 -35
- data/schema/geographicExtent.json +5 -10
- data/schema/geojson.json +63 -71
- data/schema/geometry.json +125 -132
- data/schema/georectifiedRepresentation.json +1 -9
- data/schema/georeferencableRepresentation.json +41 -45
- data/schema/graphic.json +1 -2
- data/schema/gridRepresentation.json +1 -1
- data/schema/identifier.json +1 -1
- data/schema/imageDescription.json +1 -1
- data/schema/keyword.json +15 -12
- data/schema/lineage.json +3 -9
- data/schema/locale.json +2 -2
- data/schema/maintInfo.json +14 -17
- data/schema/measure.json +5 -8
- data/schema/medium.json +1 -0
- data/schema/metadata.json +1 -5
- data/schema/metadataInfo.json +1 -4
- data/schema/onlineResource.json +2 -2
- data/schema/orderProcess.json +1 -1
- data/schema/releasability.json +4 -6
- data/schema/resourceInfo.json +1 -2
- data/schema/responsibility.json +1 -3
- data/schema/schema.json +2 -4
- data/schema/scope.json +1 -5
- data/schema/spatialReference.json +3 -5
- data/schema/spatialRepresentation.json +5 -6
- data/schema/spatialResolution.json +4 -4
- data/schema/taxonomy.json +4 -7
- data/schema/temporalExtent.json +1 -0
- data/schema/timeInstant.json +2 -4
- data/schema/timePeriod.json +6 -10
- data/schema/transferOption.json +7 -10
- data/schema/usage.json +2 -4
- data/schema/vectorRepresentation.json +42 -45
- data/schema/verticalExtent.json +2 -3
- data/test/tc_allocation.rb +8 -0
- data/test/tc_geographicExtent.rb +4 -0
- data/test/tc_legalConstraint.rb +8 -0
- data/test/tc_locale.rb +8 -0
- data/test/tc_phone.rb +8 -0
- data/test/tc_securityConstraint.rb +8 -0
- data/test/tc_series.rb +8 -0
- data/test/tc_timePeriod.rb +4 -0
- metadata +14 -6
- data/examples/gmlIdentifier.json +0 -8
- data/examples/keywordObject.json +0 -12
- data/examples/schema.json +0 -8
- data/examples/scopeDescription.json +0 -8
data/schema/domain.json
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
"id": "domain.json#",
|
4
4
|
"type": "object",
|
5
5
|
"description": "A list of permissable values used to constrain an attribute's value. A single domain may be assigned to multiple attributes in a table or database.",
|
6
|
+
"example":"../examples/domain.json",
|
6
7
|
"required": ["domainId", "codeName", "description", "domainItem"],
|
7
8
|
"additionalProperties": true,
|
8
9
|
"properties": {
|
@@ -34,7 +35,7 @@
|
|
34
35
|
"domainItem": {
|
35
36
|
"type": "object",
|
36
37
|
"description": "An array of member objects that enumerate and define the valid values for a domain.",
|
37
|
-
"example":
|
38
|
+
"example":"../examples/domainItem.json",
|
38
39
|
"required": ["name", "value", "definition"],
|
39
40
|
"additionalProperties": true,
|
40
41
|
"properties": {
|
data/schema/entity.json
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
"translation": {
|
7
7
|
"ISO 19115-2": ["FC_FeatureCatalogue > featureType > FC_FeatureType"]
|
8
8
|
},
|
9
|
-
"example": "",
|
9
|
+
"example": "../examples/entity.json",
|
10
10
|
"required": ["codeName", "definition"],
|
11
11
|
"additionalProperties": true,
|
12
12
|
"properties": {
|
@@ -84,13 +84,15 @@
|
|
84
84
|
"translation": {
|
85
85
|
"ISO 19115-2": ["Note: the foreign key is written as a text description into FC_FeatureCatalogue > featureType > FC_FeatureType > constrainedBy > FC_Constraint"]
|
86
86
|
},
|
87
|
-
"items": {
|
87
|
+
"items": {
|
88
|
+
"$ref": "#/definitions/foreignKey"
|
89
|
+
}
|
88
90
|
}
|
89
91
|
},
|
90
92
|
"definitions": {
|
91
93
|
"index": {
|
92
94
|
"type": "object",
|
93
|
-
"example": "",
|
95
|
+
"example": "../examples/entityIndex.json",
|
94
96
|
"required": ["codeName", "allowDuplicates", "attributeCodeName"],
|
95
97
|
"additionalProperties": true,
|
96
98
|
"properties": {
|
@@ -121,9 +123,8 @@
|
|
121
123
|
}
|
122
124
|
},
|
123
125
|
"attribute": {
|
124
|
-
|
125
126
|
"type": "object",
|
126
|
-
"example": "",
|
127
|
+
"example": "../examples/entityAttribute.json",
|
127
128
|
"required": ["codeName", "dataType", "definition", "allowNull"],
|
128
129
|
"additionalProperties": true,
|
129
130
|
"properties": {
|
@@ -172,8 +173,7 @@
|
|
172
173
|
"allowMany": {
|
173
174
|
"type": "boolean",
|
174
175
|
"description": "Indicates whether null values are allowed for the attribute",
|
175
|
-
"translation": {
|
176
|
-
}
|
176
|
+
"translation": {}
|
177
177
|
},
|
178
178
|
"units": {
|
179
179
|
"type": "string",
|
@@ -198,7 +198,7 @@
|
|
198
198
|
},
|
199
199
|
"foreignKey": {
|
200
200
|
"type": "object",
|
201
|
-
"example": "",
|
201
|
+
"example": "../examples/entityForeignKey.json",
|
202
202
|
"required": ["localAttributeCodeName", "referencedEntityCodeName", "referencedAttributeCodeName"],
|
203
203
|
"additionalProperties": true,
|
204
204
|
"properties": {
|
data/schema/extent.json
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
4
4
|
"type": "object",
|
5
5
|
"description": "Information about the geographic, vertical, and temporal extent of a resource.",
|
6
|
-
"example": "",
|
6
|
+
"example": "../examples/extent.json",
|
7
7
|
"translation": {
|
8
8
|
"ISO 19115-2": ["EX_Extent"]
|
9
9
|
},
|
data/schema/format.json
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
"type": "object",
|
5
5
|
"title": "format",
|
6
6
|
"description": "Provides information about the format used.",
|
7
|
-
"example": "",
|
7
|
+
"example": "../examples/format.json",
|
8
8
|
"translation": {
|
9
9
|
"ISO 19115-2": ["MD_Format"],
|
10
10
|
"FGDC CSDGM": ["distinfo > stdorder > digform"]
|
@@ -15,23 +15,22 @@
|
|
15
15
|
"formatSpecification": {
|
16
16
|
"$ref": "./citation.json#",
|
17
17
|
"translation": {
|
18
|
-
"ISO 19115-2": ["MD_Format > name","MD_Format > version"],
|
19
|
-
"FGDC CSDGM": ["distinfo > stdorder > digform > digtinfo > formname","idinfo > citation > citeinfo > edition"]
|
18
|
+
"ISO 19115-2": ["MD_Format > name", "MD_Format > version"],
|
19
|
+
"FGDC CSDGM": ["distinfo > stdorder > digform > digtinfo > formname", "idinfo > citation > citeinfo > edition"]
|
20
20
|
},
|
21
|
-
"description": "Citation of the specification for the format."
|
22
|
-
"example": ""
|
21
|
+
"description": "Citation of the specification for the format."
|
23
22
|
},
|
24
23
|
"amendmentNumber": {
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
"type": "string",
|
25
|
+
"description": "Amendment number of the format version.",
|
26
|
+
"translation": {},
|
27
|
+
"minLength": 1
|
29
28
|
},
|
30
29
|
"compressionMethod": {
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
"type": "string",
|
31
|
+
"description": "Recommendations of algorithms or processes that can be applied to read or expand resources to which compression techniques have been applied.",
|
32
|
+
"translation": {},
|
33
|
+
"minLength": 1
|
35
34
|
}
|
36
35
|
}
|
37
36
|
}
|
data/schema/funding.json
CHANGED
@@ -21,41 +21,7 @@
|
|
21
21
|
"description": "Funds contributed to support the development of the resource.",
|
22
22
|
"example": "",
|
23
23
|
"items": {
|
24
|
-
"
|
25
|
-
"required": ["amount", "currency"],
|
26
|
-
"additionalProperties": true,
|
27
|
-
"properties": {
|
28
|
-
"amount": {
|
29
|
-
"type": "number",
|
30
|
-
"description": "The amount of the allocation in the indicated currency.",
|
31
|
-
"example": ""
|
32
|
-
},
|
33
|
-
"currency": {
|
34
|
-
"type": "string",
|
35
|
-
"description": "The ISO 4217 currency code.",
|
36
|
-
"example": ""
|
37
|
-
},
|
38
|
-
"sourceId": {
|
39
|
-
"type": "string",
|
40
|
-
"description": "The contactId of the entity providing the allocation.",
|
41
|
-
"example": ""
|
42
|
-
},
|
43
|
-
"recipientId": {
|
44
|
-
"type": "string",
|
45
|
-
"description": "The contactId of the entity receiving the allocation.",
|
46
|
-
"example": ""
|
47
|
-
},
|
48
|
-
"matching": {
|
49
|
-
"type": "boolean",
|
50
|
-
"description": "Tdicates whether the funds are to be considered matching funds.",
|
51
|
-
"example": ""
|
52
|
-
},
|
53
|
-
"comment": {
|
54
|
-
"type": "string",
|
55
|
-
"description": "Additional information relevant to the allocation.",
|
56
|
-
"example": ""
|
57
|
-
}
|
58
|
-
}
|
24
|
+
"$ref": "#/definitions/allocation"
|
59
25
|
}
|
60
26
|
},
|
61
27
|
"timePeriod": {
|
@@ -63,5 +29,45 @@
|
|
63
29
|
"description": "The period for which the allocation is relevant.",
|
64
30
|
"example": ""
|
65
31
|
}
|
32
|
+
},
|
33
|
+
"definitions": {
|
34
|
+
"allocation": {
|
35
|
+
"type": "object",
|
36
|
+
"example": "../examples/allocation.json",
|
37
|
+
"required": ["amount", "currency"],
|
38
|
+
"additionalProperties": true,
|
39
|
+
"properties": {
|
40
|
+
"amount": {
|
41
|
+
"type": "number",
|
42
|
+
"description": "The amount of the allocation in the indicated currency.",
|
43
|
+
"example": ""
|
44
|
+
},
|
45
|
+
"currency": {
|
46
|
+
"type": "string",
|
47
|
+
"description": "The ISO 4217 currency code.",
|
48
|
+
"example": ""
|
49
|
+
},
|
50
|
+
"sourceId": {
|
51
|
+
"type": "string",
|
52
|
+
"description": "The contactId of the entity providing the allocation.",
|
53
|
+
"example": ""
|
54
|
+
},
|
55
|
+
"recipientId": {
|
56
|
+
"type": "string",
|
57
|
+
"description": "The contactId of the entity receiving the allocation.",
|
58
|
+
"example": ""
|
59
|
+
},
|
60
|
+
"matching": {
|
61
|
+
"type": "boolean",
|
62
|
+
"description": "Tdicates whether the funds are to be considered matching funds.",
|
63
|
+
"example": ""
|
64
|
+
},
|
65
|
+
"comment": {
|
66
|
+
"type": "string",
|
67
|
+
"description": "Additional information relevant to the allocation.",
|
68
|
+
"example": ""
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
66
72
|
}
|
67
73
|
}
|
@@ -3,24 +3,22 @@
|
|
3
3
|
"id": "geographicExtent.json#",
|
4
4
|
"type": "object",
|
5
5
|
"description": "Describes the spatial area of the resource",
|
6
|
+
"example": "../examples/geographicExtent.json",
|
6
7
|
"required": ["geographicElement"],
|
7
8
|
"additionalProperties": false,
|
8
9
|
"properties": {
|
9
10
|
"containsData": {
|
10
11
|
"type": "boolean",
|
11
12
|
"description": "Idication of whether the geographic element encompasses an area covered by the data or an area where data are not present.",
|
12
|
-
"example": "",
|
13
13
|
"translation": {}
|
14
14
|
},
|
15
15
|
"identifier": {
|
16
16
|
"$ref": "./identifier.json#",
|
17
|
-
"description": "Identifier representing a geographic area."
|
18
|
-
"example": ""
|
17
|
+
"description": "Identifier representing a geographic area."
|
19
18
|
},
|
20
19
|
"boundingBox": {
|
21
20
|
"$ref": "#/definitions/boundingBox",
|
22
|
-
"description": "General geographic position of the resource."
|
23
|
-
"example": ""
|
21
|
+
"description": "General geographic position of the resource."
|
24
22
|
},
|
25
23
|
"geographicElement": {
|
26
24
|
"type": "array",
|
@@ -37,6 +35,7 @@
|
|
37
35
|
"boundingBox": {
|
38
36
|
"type": "object",
|
39
37
|
"description": "The four sides of geodetic box defining the area of the resource",
|
38
|
+
"example": "../examples/boundingBox.json",
|
40
39
|
"required": ["westLongitude",
|
41
40
|
"eastLongitude",
|
42
41
|
"southLatitude",
|
@@ -47,32 +46,28 @@
|
|
47
46
|
"westLongitude": {
|
48
47
|
"type": "number",
|
49
48
|
"description": "",
|
50
|
-
"example": "",
|
51
49
|
"translation": {}
|
52
50
|
},
|
53
51
|
"eastLongitude": {
|
54
52
|
"type": "number",
|
55
53
|
"description": "",
|
56
|
-
"example": "",
|
57
54
|
"translation": {}
|
58
55
|
},
|
59
56
|
"southLatitude": {
|
60
57
|
"type": "number",
|
61
58
|
"description": "",
|
62
|
-
"example": "",
|
63
59
|
"translation": {}
|
64
60
|
},
|
65
61
|
"northLatitude": {
|
66
62
|
"type": "number",
|
67
63
|
"description": "",
|
68
|
-
"example": "",
|
69
64
|
"translation": {}
|
70
65
|
}
|
71
66
|
}
|
72
67
|
},
|
73
68
|
"geographicElement": {
|
74
69
|
"type": "object",
|
75
|
-
"example": "",
|
70
|
+
"example": "../examples/geoJson.json",
|
76
71
|
"properties": {
|
77
72
|
"type": {
|
78
73
|
"enum": ["Feature", "FeatureCollection", "GeometryCollection", "Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon"],
|
data/schema/geojson.json
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
"id": "geojson.json#",
|
4
4
|
"title": "GeoJSON object",
|
5
5
|
"description": "GeoJSON is a format for encoding a variety of geographic data structures. A GeoJSON object may represent a geometry, a feature, or a collection of features. \n\nGeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection. Features in GeoJSON contain a geometry object and additional properties, and a feature collection represents a list of features. \n\n The coordinate reference system for all GeoJSON coordinates is a geographic coordinate reference system, using the World Geodetic System 1984 (WGS 84) [WGS84] datum, with longitude and latitude units of decimal degrees. This is equivalent to the coordinate reference system identified by the Open Geospatial Consortium (OGC) URN urn:ogc:def:crs:OGC::CRS84. \n\nSee http://geojson.org for the full specification.",
|
6
|
-
"example": "",
|
6
|
+
"example": "../examples/geoJson.json",
|
7
7
|
"type": "object",
|
8
8
|
"required": ["type"],
|
9
9
|
"properties": {
|
@@ -11,22 +11,20 @@
|
|
11
11
|
"$ref": "bbox.json#"
|
12
12
|
}
|
13
13
|
},
|
14
|
-
"oneOf": [
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
}
|
24
|
-
],
|
14
|
+
"oneOf": [{
|
15
|
+
"$ref": "geometry.json#"
|
16
|
+
}, {
|
17
|
+
"$ref": "#/definitions/geometryCollection"
|
18
|
+
}, {
|
19
|
+
"$ref": "#/definitions/feature"
|
20
|
+
}, {
|
21
|
+
"$ref": "#/definitions/featureCollection"
|
22
|
+
}],
|
25
23
|
"definitions": {
|
26
24
|
"geometryCollection": {
|
27
25
|
"title": "GeometryCollection",
|
28
26
|
"description": "A collection of geometry objects",
|
29
|
-
"example": "",
|
27
|
+
"example": "../examples/geometryCollection.json",
|
30
28
|
"translation": {
|
31
29
|
"ISO 19115-2": ["EX_Extent > geographicElement > EX_BoundingPolygon > polygon > MultiGeometry"]
|
32
30
|
},
|
@@ -52,7 +50,7 @@
|
|
52
50
|
"title": "Feature",
|
53
51
|
"type": "object",
|
54
52
|
"description": "A GeoJSON object with the type \"Feature\" is a feature object. A feature object has a geometry, properties, and an optional identifier.",
|
55
|
-
"example": "",
|
53
|
+
"example": "../examples/geometryFeature.json",
|
56
54
|
"required": ["geometry", "properties"],
|
57
55
|
"properties": {
|
58
56
|
"type": {
|
@@ -61,17 +59,15 @@
|
|
61
59
|
},
|
62
60
|
"geometry": {
|
63
61
|
"description": "The geometry object associated with the Feature.",
|
64
|
-
"oneOf": [
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
}
|
74
|
-
]
|
62
|
+
"oneOf": [{
|
63
|
+
"type": "null",
|
64
|
+
"title": "null geometry",
|
65
|
+
"description": "A feature object with no associated geometry. For example, a null value may be used when defining a bounding box only."
|
66
|
+
}, {
|
67
|
+
"$ref": "geometry.json#"
|
68
|
+
}, {
|
69
|
+
"$ref": "#/definitions/geometryCollection"
|
70
|
+
}]
|
75
71
|
},
|
76
72
|
"properties": {
|
77
73
|
"$ref": "#/definitions/featureProperties"
|
@@ -89,7 +85,7 @@
|
|
89
85
|
"title": "FeatureCollection",
|
90
86
|
"type": "object",
|
91
87
|
"description": "A GeoJSON object comprised of multiple Feature objects.",
|
92
|
-
"example": "",
|
88
|
+
"example": "../examples/featureCollection.json",
|
93
89
|
"required": ["features"],
|
94
90
|
"properties": {
|
95
91
|
"type": {
|
@@ -99,7 +95,6 @@
|
|
99
95
|
"features": {
|
100
96
|
"type": "array",
|
101
97
|
"description": "Set of Features constituting the FeatureCollection.",
|
102
|
-
"example": "",
|
103
98
|
"translation": {
|
104
99
|
"ISO 19115-2": ["geographicElement > EX_BoundingPolygon > polygon > MultiGeometry"]
|
105
100
|
},
|
@@ -112,55 +107,52 @@
|
|
112
107
|
"featureProperties": {
|
113
108
|
"title": "FeatureProperties",
|
114
109
|
"description": "JSON object containing information about a feature or collection.",
|
115
|
-
"example": "",
|
116
|
-
"oneOf": [
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
"
|
125
|
-
|
126
|
-
"description":
|
127
|
-
|
128
|
-
"
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
"
|
134
|
-
|
135
|
-
"
|
136
|
-
"translation": {
|
137
|
-
"ISO 19115-2": ["geographicElement > EX_BoundingPolygon > polygon > [Point, LineString, Polygon] > name"]
|
138
|
-
},
|
139
|
-
"items": {
|
140
|
-
"type": "string"
|
141
|
-
}
|
142
|
-
},
|
143
|
-
"featureScope": {
|
144
|
-
"type": "string",
|
145
|
-
"description": "A word or phrase identifying the type of object described by the feature."
|
110
|
+
"example": "../examples/featureProperties.json",
|
111
|
+
"oneOf": [{
|
112
|
+
"title": "null",
|
113
|
+
"type": "null",
|
114
|
+
"description": "A feature object with no identified properties."
|
115
|
+
}, {
|
116
|
+
"type": "object",
|
117
|
+
"title": "featureProperties",
|
118
|
+
"properties": {
|
119
|
+
"description": {
|
120
|
+
"type": "string",
|
121
|
+
"description": "A description of the feature.",
|
122
|
+
"translation": {
|
123
|
+
"ISO 19115-2": ["geographicElement > EX_BoundingPolygon > polygon > [Point, LineString, Polygon] > description"]
|
124
|
+
}
|
125
|
+
},
|
126
|
+
"featureName": {
|
127
|
+
"type": "array",
|
128
|
+
"description": "A title associated with a feature.",
|
129
|
+
"translation": {
|
130
|
+
"ISO 19115-2": ["geographicElement > EX_BoundingPolygon > polygon > [Point, LineString, Polygon] > name"]
|
146
131
|
},
|
147
|
-
"
|
148
|
-
"type": "string"
|
149
|
-
|
132
|
+
"items": {
|
133
|
+
"type": "string"
|
134
|
+
}
|
135
|
+
},
|
136
|
+
"featureScope": {
|
137
|
+
"type": "string",
|
138
|
+
"description": "A word or phrase identifying the type of object described by the feature."
|
139
|
+
},
|
140
|
+
"acquisitionMethod": {
|
141
|
+
"type": "string",
|
142
|
+
"description": "Method used to establish the position of the geographic feature. "
|
143
|
+
},
|
144
|
+
"identifier": {
|
145
|
+
"type": "array",
|
146
|
+
"description": "Identifier for the geographic element with optional cited authority.",
|
147
|
+
"translation": {
|
148
|
+
"ISO 19115-2": ["geographicElement > EX_GeographicDescription > geographicIdentifier > MD_Identifier"]
|
150
149
|
},
|
151
|
-
"
|
152
|
-
"
|
153
|
-
"description": "Identifier for the geographic element with optional cited authority.",
|
154
|
-
"translation": {
|
155
|
-
"ISO 19115-2": ["geographicElement > EX_GeographicDescription > geographicIdentifier > MD_Identifier"]
|
156
|
-
},
|
157
|
-
"items": {
|
158
|
-
"$ref": "./identifier.json#"
|
159
|
-
}
|
150
|
+
"items": {
|
151
|
+
"$ref": "./identifier.json#"
|
160
152
|
}
|
161
153
|
}
|
162
154
|
}
|
163
|
-
]
|
155
|
+
}]
|
164
156
|
}
|
165
157
|
}
|
166
158
|
}
|