# Server-Side Conditional Query and Expression Query
# Conditional Query
For the backend database table structure, use the SQL WHERE clause for data query. Only the part after where needs to be written.
Table structure:
| Field Name | Type | Description |
|---|---|---|
| id | integer | id |
| objectid | text | Entity id (block objectid naming rule: block id_referenced block definition id1_referenced block definition id2 (may have multiple)_entity id; group objectid naming rule: group id$entity id_entity element index; table naming rule: table id@entity id_entity element index; other entity naming rule: id_entity element index) |
| layerindex | integer | Layer index |
| name | text | Entity type value, e.g. "1" for AcDbLine. See "Supported CAD Entity Types" below for specific values |
| color | int | Color (calculated from RGB, e.g. black is 0x000000, with alpha 0xFF000000, becomes unsigned 0xff000000<<0 result -16777216) |
| data | blob | Geometry data |
| s1 | text | Linetype |
| s2 | text | Extended dictionary data |
| s3 | text | Coordinate data, varies by entity |
| s4 | text | Character attribute data, varies by entity |
| s5 | text | Character attribute data, varies by entity |
| n1 | float | Color index |
| n2 | float | Linetype scale |
| n3 | float | Line width |
| n4 | float | Transparency |
| n5 | float | Numeric attribute data, varies by entity |
| n6 | float | Numeric attribute data, varies by entity |
| n7 | float | Numeric attribute data, varies by entity |
| n8 | float | Numeric attribute data, varies by entity |
| n9 | float | Numeric attribute data, varies by entity |
| n10 | float | Numeric attribute data, varies by entity |
| geom | GEOMETRY | Entity bounding rectangle |
(For detailed field meanings by entity type, see the documentation below)
# Built-in Variables for Render Mode Expressions
| Variable | Description | Type | Example |
|---|---|---|---|
| gInColor | Current entity input color | (numeric) | 4278255615 |
| gInColorRed | Current entity input color (red component) | (numeric) | 255 |
| gInColorGreen | Current entity input color (green component) | (numeric) | 255 |
| gInColorBlue | Current entity input color (blue component) | (numeric) | 0 |
| gInZoom | Current zoom level | (numeric) | 1 |
| println | Debug output function | ||
| gOutColor | Output color (color to modify) | (numeric) | 4278255615 |
# Built-in Variables for Query Mode Style Expressions
| Variable | Description | Type | Example |
|---|---|---|---|
| gInLayerIndex | Current entity layer index | (numeric) | 0 |
| gInObjectId | Current entity object ID | (string) | '283' e.g. gInObjectId=='283' |
| gInEntityObjId | Current entity parent object ID | (string) | '1C' e.g. gInEntityObjId=='1C' takes characters before _ in gInObjectId, e.g. for block when gInObjectId=='283_1', then gInEntityObjId= '283' |
| gInFeatureType | Current entity type | (string) | 'AcDbPolyline' e.g. gInFeatureType=='AcDbPolyline' |
| gInLayerName | Current entity layer name | (string) | e.g. 'Layer1': gInLayerName=='Layer1' |
| gInColor | Current entity color | (numeric) | 4278255615 |
| gInColorRed | Current entity color (red component) | (numeric) | 255 |
| gInColorGreen | Current entity color (green component) | (numeric) | 255 |
| gInColorBlue | Current entity color (blue component) | (numeric) | 0 |
| gInColorAlpha | Current entity color (alpha component) | (numeric) | 0 |
| println | Debug output function | ||
| gInExtendMinX | Current entity extent (bottom-right X) | (numeric) | 700.10 |
| gInExtendMinY | Current entity extent (bottom-right Y) | (numeric) | 10.01 |
| gInExtendMaxX | Current entity extent (top-left X) | (numeric) | 800.20 |
| gInExtendMaxY | Current entity extent (top-left Y) | (numeric) | 20.02 |
| gInAttrs1 | Current entity attribute one value | (string) s1 linetype | |
| gInAttrs2 | Current entity attribute two value | (string) s2 extended dictionary data | |
| gInAttrs3 | Current entity attribute three value | (string) s3 varies by entity | |
| gInAttrs4 | Current entity attribute four value | (string) s4 character attribute data, varies by entity | |
| gInAttrs5 | Current entity attribute five value | (string) s5 character attribute data, varies by entity | |
| gInAttrn6 | Current entity attribute six value | (numeric) n1 color index | |
| gInAttrn7 | Current entity attribute seven value | (numeric) n2 linetype scale | |
| gInAttrn8 | Current entity attribute eight value | (numeric) n3 line width | |
| gInAttrn9 | Current entity attribute nine value | (numeric) n4 transparency | |
| gInAttrn10 | Current entity attribute ten value | (numeric) n5 numeric attribute data, varies by entity | |
| gInAttrn11 | Current entity attribute 11 value | (numeric) n6 varies by entity | |
| gInAttrn12 | Current entity attribute 12 value | (numeric) n7 varies by entity | |
| gInAttrn13 | Current entity attribute 13 value | (numeric) n8 varies by entity | |
| gInAttrn14 | Current entity attribute 14 value | (numeric) n9 varies by entity | |
| gInAttrn15 | Current entity attribute 15 value | (numeric) n10 varies by entity | |
| gInCoordX | Current entity X coordinate array | (numeric array) | [10,20...] gInCoordX[0]=10 |
| gInCoordY | Current entity Y coordinate array | (numeric array) | [10,20...] gInCoordY[0]=10 |
| gInCoordZ | Current entity Z coordinate array | (numeric array) | [10,20...] gInCoordZ[0]=10 |
| gInCoordCount | Current entity coordinate count | (numeric) | 2 |
| gOutColorRed | Return color (red component) (modify current entity color) | (numeric) | 255, e.g. gOutColorRed := 255; means all levels red component 255; can also be array, e.g. gOutColorRed[0] := 122;gOutColorRed[5] := 200; means levels 1-4 red 122, level 5+ red 200 |
| gOutColorGreen | Return color (green component) (modify current entity color) | (numeric) | 255, same usage as above |
| gOutColorBlue | Return color (blue component) (modify current entity color) | (numeric) | 255, same usage as above |
| gOutColorAlpha | Return color (alpha component) (modify current entity color) | (numeric) | 255, same usage as above |
| gOutLineWidth | Return line width value (modify current entity line width) | (numeric) | 3, same usage as above |
| gOutVisible | Return visibility (modify current entity visibility) | (numeric) | 1 or 0, same usage as above |
| gOutReturn | 0 exclude from selection set; 1 include in selection set |
# Query Data Expression
Same as above
# Supported CAD Entity Types
| Class Name | Description | Type Value |
|---|---|---|
| AcDbLine | Line | 1 |
| AcDbPolyline | Polyline | 2 |
| AcDb2dPolyline | 2D polyline | 3 |
| AcDb3dPolyline | 3D polyline | 4 |
| AcDbSpline | Spline | 5 |
| AcDbArc | Arc | 6 |
| AcDbCircle | Circle | 7 |
| AcDbEllipse | Ellipse | 8 |
| AcDbCurve | Curve | 9 |
| AcDbBlockReference | Block reference | 10 |
| AcDbHatch | Hatch | 11 |
| AcDbMText | Multiline text | 12 |
| AcDbText | Single-line text | 13 |
| AcDbShape | Shape entity | 14 |
| AcDbRasterImage | Raster image | 15 |
| AcDbWipeout | Wipeout entity | 16 |
| AcDb2LineAngularDimension | Angular dimension [two lines] | 17 |
| AcDb3PointAngularDimension | Angular dimension [three points] | 18 |
| AcDbAlignedDimension | Aligned dimension | 19 |
| AcDbArcDimension | Arc dimension | 20 |
| AcDbDiametricDimension | Diameter dimension | 21 |
| AcDbOrdinateDimension | Ordinate dimension | 22 |
| AcDbRadialDimension | Radius dimension | 23 |
| AcDbRadialDimensionLarge | Radius polyline dimension | 24 |
| AcDbRotatedDimension | Rotated dimension | 25 |
| AcDbAttributeDefinition | Attribute definition | 26 |
| AcDbAttribute | Block attribute | 27 |
| AcDbTable | Table | 28 |
| AcDbMLeader | Leader dimension | 29 |
| AcDbRegion | Region | 30 |
| AcDbPolyFaceMesh | Polyface mesh entity | 31 |
| AcDbPolygonMesh | Polygon mesh | 32 |
| AcDbSurface | Surface | 33 |
| AcDb3dSolid | 3D solid | 34 |
| AcDbFace | 3D face | 35 |
| AcDbSolid | Solid entity | 36 |
# Query Return Fields
| Field Name | Description |
|---|---|
| objectid | Entity unique id, unchanged after map update |
| layerindex | Layer index |
| name | Entity type |
| geojson | Coordinates in WKT Mercator format |
| envelop | Bounding rectangle (WKT Mercator format) |
| bounds | Bounding rectangle (CAD coordinates) ([minx,miny,maxx, maxy]) |
| isEnvelop | Whether query uses actual extent or bounding box (for point selection with many points, returns by extent) |
| color | Entity color |
| linetype | Linetype |
| linetypeScale | Linetype scale |
| lineWidth | Line width |
| alpha | Transparency |
| xdata | Extended data |
| points | Coordinate sequence |
| indices | Point index sequence |
| thickness | Thickness |
| area | Area |
| isclosed | Whether closed |
| polyType | Polyline type |
| center | Circle center point |
| radius | Circle radius |
| startAngle | Arc start angle |
| endAngle | Arc end angle |
| rotate | Rotation angle |
| positon | Position |
| normal | Normal vector |
| elevation | Elevation |
| length | Length |
| location | Location |
| contents | Text content (multiline text includes style content) |
| height | Text height |
| width | Text width |
| textHeight | Text height |
| text | Text content |
| actualHeight | Multiline text actual height |
| actualWidth | Multiline text actual width |
| bulge | Bulge |
| origin | Origin |
| u | u in uv |
| v | v in uv |
| size | Size |
| isFit | Whether fitted |
| fitTol | Fit tolerance |
| degree | Degree |
| horzMode | Horizontal alignment mode |
| majorAxis | Axis |
| data3d | 3D entity material property data |
# Field Meanings by Entity Type
s1 linetype (string); s2 extended dictionary data (string);
n1 color index; n2 linetype scale; n3 line width; n4 transparency;
| Class Name | Class Description | Type Value | s3(string) | s4(string) | s5(string) | n5 | n6 | n7 | n8 | n9 | n10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AcDbLine | Line | 1 | points | thickness | length | ||||||
| AcDbPolyline | Polyline | 2 | points | bulge | data3d | area | isclosed | linetypeScale | thickness | elevation | |
| AcDb2dPolyline | 2D polyline | 3 | points | area | isclosed | polyType | thickness | elevation | |||
| AcDb3dPolyline | 3D polyline | 4 | points | area | isclosed | polyType | |||||
| AcDbSpline | Spline | 5 | points | area | isclosed | isFit | fitTol | degree | |||
| AcDbArc | Arc | 6 | center | area | isclosed | radius | startAngle | endAngle | thickness | ||
| AcDbCircle | Circle | 7 | center | area | isclosed | radius | thickness | ||||
| AcDbEllipse | Ellipse | 8 | center | majorAxis | area | isclosed | radius | startAngle | endAngle | ||
| AcDbCurve | Curve | 9 | area | isclosed | |||||||
| AcDbBlockReference | Block reference | 10 | positon | attributeDef | blockname | rotate | scaleX | scaleY | scaleZ | ||
| AcDbHatch | Hatch | 11 | points | patternName | elevation | patternAngle | patternScale | ||||
| AcDbMText | Multiline text | 12 | location | contents | text | height | width | rotate | textHeight | actualHeight | actualWidth |
| AcDbText | Single-line text | 13 | location | text | height | rotate | horzMode | ||||
| AcDbShape | Shape entity | 14 | positon | normal | rotate | size | |||||
| AcDbRasterImage | Raster image | 15 | origin | ||||||||
| AcDbWipeout | Wipeout entity | 16 | |||||||||
| AcDb2LineAngularDimension | Angular dim [two lines] | 17 | |||||||||
| AcDb3PointAngularDimension | Angular dim [three points] | 18 | |||||||||
| AcDbAlignedDimension | Aligned dimension | 19 | |||||||||
| AcDbArcDimension | Arc dimension | 20 | |||||||||
| AcDbDiametricDimension | Diameter dimension | 21 | |||||||||
| AcDbOrdinateDimension | Ordinate dimension | 22 | |||||||||
| AcDbRadialDimension | Radius dimension | 23 | |||||||||
| AcDbRadialDimensionLarge | Radius polyline dim | 24 | |||||||||
| AcDbRotatedDimension | Rotated dimension | 25 | |||||||||
| AcDbAttributeDefinition | Attribute definition | 26 | location | text | contents | height | rotate | horzMode | |||
| AcDbAttribute | Block attribute | 27 | location | text | contents | height | rotate | horzMode | |||
| AcDbTable | Table | 28 | positon | attributeDef | contents | rotate | scaleX | scaleY | scaleZ | ||
| AcDbMLeader | Leader dimension | 29 | location | contents | text | height | width | rotate | textHeight | actualHeight | actualWidth |
| AcDbRegion | Region | 30 | points | indices | data3d | area | perimeter | ||||
| AcDbPolyFaceMesh | Polyface mesh | 31 | points | indices | data3d | ||||||
| AcDbPolygonMesh | Polygon mesh | 32 | points | indices | data3d | ||||||
| AcDbSurface | Surface | 33 | points | indices | data3d | ||||||
| AcDb3dSolid | 3D solid | 34 | points | indices | data3d | ||||||
| AcDbFace | 3D face | 35 | points | indices | data3d | ||||||
| AcDbSolid | Solid entity | 36 | points | thickness | length | isclosed |
# Built-in Style Functions
// gRed(inColor) get red component
function_t(
"gRed",
"var color := inColor % 256 ; "
"color ",
"inColor");
// gGreen(inColor) get green component
function_t(
"gGreen",
"var color := inColor% (256 * 256) / 256; "
"color ",
"inColor");
// gBlue(inColor) get blue component
function_t(
"gBlue",
"var color := inColor % (256 * 256 * 256) / 256 / 256 ; "
"color ",
"inColor");
// gFilterGrey(r, g, b) greyscale filter (average of r,g,b)
function_t(
"gFilterGrey",
"var grey := round(( clrRed + clrGreen + clrBlue) / 3);"
"var color := grey + grey * 256 + grey * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterGreyMin(r, g, b) greyscale filter (min of r,g,b)
function_t(
"gFilterGreyMin",
"var grey := round(min(clrRed,clrGreen,clrBlue);"
"var color := grey + grey * 256 + grey * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterGreyMax(r, g, b) greyscale filter (max of r,g,b)
function_t(
"gFilterGreyMax",
"var grey := round(max(clrRed,clrGreen,clrBlue);"
"var color := grey + grey * 256 + grey * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterWeight(r, g, b) greyscale filter (weighted average)
function_t(
"gFilterWeight",
"var grey := round(0.3 * clrRed + 0.59 * clrGreen + 0.11 * clrBlue);"
"var color := grey + grey * 256 + grey * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterBlackWhite(r, g, b) black & white filter
function_t(
"gFilterBlackWhite",
"var grey := round(( clrRed + clrGreen + clrBlue) / 3); "
"var color := if(grey >= 100, 16777215, 0); "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterOpposite(r, g, b) invert filter
function_t(
"gFilterOpposite",
"var red := round(255 - clrRed);"
"var green := round(255 - clrGreen);"
"var blue := round(255 - clrBlue);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterMaxAvg(r, g, b) desaturate: average of max(r,g,b) values
function_t(
"gFilterMaxAvg",
"var grey := round((max(clrRed,clrGreen,clrBlue) + min(clrRed,clrGreen,clrBlue))/2);"
"var color := grey + grey * 256 + grey * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterRed(r, g, b) red-only filter
function_t(
"gFilterRed",
"var red := clrRed;"
"var green := 0;"
"var blue := 0;"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterGreen(r, g, b) green-only filter
function_t(
"gFilterGreen",
"var red := 0;"
"var green := clrGreen;"
"var blue := 0;"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterBlue(r, g, b) blue-only filter
function_t(
"gFilterBlue",
"var red := 0;"
"var green := 0;"
"var blue := clrBlue;"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterRemoveRed(r, g, b) remove red
function_t(
"gFilterRemoveRed",
"var red := 0;"
"var green := clrGreen;"
"var blue := clrBlue;"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterRemoveGreen(r, g, b) remove green
function_t(
"gFilterRemoveGreen",
"var red := clrRed;"
"var green := 0;"
"var blue := clrBlue;"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterRemoveBlue(r, g, b) remove blue
function_t(
"gFilterRemoveBlue",
"var red := clrRed;"
"var green := clrGreen;"
"var blue := 0;"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterOld(r, g, b) vintage filter
function_t(
"gFilterOld",
"var red := round(0.393 * clrRed + 0.769 * clrGreen + 0.189 * clrBlue);"
"var green := round(0.349 * clrRed + 0.686 * clrGreen + 0.168 * clrBlue);"
"var blue := round(0.272 * clrRed + 0.534 * clrGreen + 0.131 * clrBlue);"
"red := min(red, 255);"
"green := min(green, 255);"
"blue := min(blue, 255);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterFusion(r, g, b) fusion filter
function_t(
"gFilterFusion",
"var red := round(clrRed * 128 / (clrGreen + clrBlue + 1);"
"var green := round(clrGreen * 128 / (clrRed + clrBlue + 1);"
"var blue := round(clrBlue * 128 / (clrGreen + clrRed + 1);"
"red := min(red, 255);"
"green := min(green, 255);"
"blue := min(blue, 255);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterFrozen(r, g, b) frozen filter
function_t(
"gFilterFrozen",
"var red := round((clrRed - clrGreen -clrBlue) * 3 /2);"
"var green := round((clrGreen - clrRed -clrBlue) * 3 /2);"
"var blue := round( (clrBlue - clrGreen - clrRed) * 3 /2);"
"red := min(red, 255);"
"green := min(green, 255);"
"blue := min(blue, 255);"
"red := max(red, 0);"
"green := max(green, 0);"
"blue := max(blue, 0);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterComic(r, g, b) comic filter
function_t(
"gFilterComic",
"var red := round(abs(clrGreen - clrBlue + clrGreen + clrRed) * clrRed / 256);"
"var green := round(abs(clrBlue -clrGreen + clrBlue + clrRed) * clrRed / 256);"
"var blue := round(abs(clrBlue -clrGreen + clrBlue + clrRed) * clrGreen / 256);"
"red := min(red, 255);"
"green := min(green, 255);"
"blue := min(blue, 255);"
"red := max(red, 0);"
"green := max(green, 0);"
"blue := max(blue, 0);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterBrown(r, g, b) sepia filter
function_t(
"gFilterBrown",
"var red := round(clrRed * 0.393 + clrGreen * 0.769 + clrBlue * 0.189);"
"var green := round(clrRed * 0.349 + clrGreen * 0.686 + clrBlue * 0.168);"
"var blue := round(clrRed * 0.272 + clrGreen * 0.534 + clrBlue * 0.131);"
"red := min(red, 255);"
"green := min(green, 255);"
"blue := min(blue, 255);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterBlueTheme(r, g, b) blue theme filter
function_t(
"gFilterBlueTheme",
"var red := round(clrRed * 0.7);"
"var green := round(clrGreen * 0.7);"
"var blue := clrBlue;"
"blue := max(100, blue);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterRedTheme(r, g, b) red theme filter
function_t(
"gFilterRedTheme",
"var red := clrRed;"
"var green := round(clrGreen * 0.7);"
"var blue := round(clrBlue * 0.7);"
"red := max(100, red);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterGreenTheme(r, g, b) green theme filter
function_t(
"gFilterGreenTheme",
"var red := round(clrRed * 0.7);"
"var green := clrGreen;"
"var blue := round(clrBlue * 0.7);"
"green := max(100, green);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue");
// gFilterCustomTheme(r, g, b, maxr, maxg, maxb) custom theme filter
function_t(
"gFilterCustomTheme",
"var red := if(maxr > 1, max(maxr, clrRed), round(clrRed * maxr);"
"var green := if(maxg > 1, max(maxg, clrGreen), round(clrGreen * maxg);"
"var blue := if(maxb > 1, max(maxb, clrBlue), round(clrBlue * maxb);"
"var color := blue + green * 256 + red * 256 * 256; "
"color ",
"clrRed", "clrGreen", "clrBlue", "maxr", "maxg", "maxb");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252