本帖最后由 1五湖四海1 于 2016-8-25 22:44 编辑
6 z( V3 s: F* W+ t$ U* Q1 ]7 n) e1 c* S7 j
这个defaults.h文件作为一个中央默认设置配置不同的机器类型,从DIY米尔斯数控CNC转换的现成的机器。这里的设置所列出的文件是由用户提供的,. M* i3 U, F$ A* p
所以您的你的需求可能不同。所以应该你了解你的机器和调整设置根据你的个性的需求,制造机器。' `# j7 y! f6 {7 b7 M2 F/ a
defaults_h文件是选择是否将一些参数设置为默认值
, F4 l5 s. }) X8 `* |, S5 A* S% y定义各种参数
6 c% U4 i0 i6 R1.defaults/defaults_generic.h //Grbl通过通用默认设置就可以在不同的机器上工作。
- s9 B( F8 O# ?; |5 J5 C: N) [2.defaults/defaults_sherline.h //描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机
3 \1 P: R' l0 Y7 p* G! Q3.defaults/defaults_shapeoko.h // 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的
7 v, ?5 i. Z# R4.defaults/defaults_shapeoko3 //描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的
Z2 W0 j- E" l8 ~/ ?0 n- [5.defaults/defaults_x_carve_500mm //描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。) ]5 f+ U, C' e7 v2 b5 R9 [
6.defaults/defaults_zen_toolworks_7x7 //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。由30 v 6电源和TI DRV8811步进电机驱动程序
9 T. M- a, W! h3 _& Y+ ?0 s7.defaults/defaults_oxcnc // Grbl设置OpenBuilds牛数控机床
( n; t- Q% K, e8.defaults/defaults_simulator
/ i) |6 E( g5 u! B6 L5 U! H! W( X/ A0 e( l) V# h
/*8 j& _' y, o! ]% g( C, S
defaults.h - defaults settings configuration file
* C3 L; b4 m# t3 h: t$ N1 l7 n Part of Grbl
2 a3 p+ g6 ~1 Z* s$ c
9 a7 e8 ?8 P, ?! |1 N& P Copyright (c) 2012-2015 Sungeun K. Jeon, Y! ~( r$ c4 N* {# _( l" {
4 b% V- }- W* u( W$ F4 u0 q Grbl is free software: you can redistribute it and/or modify
' t. b7 v: h$ L" G it under the terms of the GNU General Public License as published by
& |6 f0 c0 W( X* K5 u# W the Free Software Foundation, either version 3 of the License, or, g- z7 n2 }; w
(at your option) any later version.1 r1 v. r: M; b+ `$ @ A
. }) |" ?+ l( B. G( j1 C: R Grbl is distributed in the hope that it will be useful,& ^5 T' G$ e$ Z& \, V- r, T
but WITHOUT ANY WARRANTY; without even the implied warranty of) q1 c+ J8 P( o7 B
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# H; L; b( Q; d& z# T K, H- S' v GNU General Public License for more details.- z) G- g2 B$ O9 B) {0 n
' y3 F* F, W" ?5 f8 e0 q3 }) w
You should have received a copy of the GNU General Public License
+ q2 ^& z2 Z& X+ k6 k along with Grbl. If not, see <http://www.gnu.org/licenses/>." Q0 Z1 v& a/ u1 B5 y
*/
; w, K6 A& ~4 J ^2 \- O. F( L
6 H+ p/ n0 a7 q' k0 z& A, R. |/* The defaults.h file serves as a central default settings selector for different machine
7 ]; m: T. D2 e$ k* [, S* @9 t types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings % F9 T& j, U9 Q0 N- W/ l" }
files listed here are supplied by users, so your results may vary. However, this should. @2 N3 W' ]' }3 g8 d" q
give you a good starting point as you get to know your machine and tweak the settings for
% B; W5 d# C3 N% p your nefarious needs.$ m# u7 a9 T" E2 a# m$ B
Ensure one and only one of these DEFAULTS_XXX values is defined in config.h
0 W) n& s% ^4 e1 N |8 i5 k W$ X
. S' z7 ^, e( Y% f! w" r3 _ The defaults.h文件作为一个中央默认设置选择不同的机器 E3 P. d: @$ D
类型,从DIY米尔斯数控CNC转换的现成的机器。的设置' G3 H2 B% S& M/ P0 E# G4 V
这里列出的文件是由用户提供的,所以您的结果可能不同。然而,这应该; x/ \6 e8 a! c2 g7 d5 d' V
给你一个很好的起点,你了解你的机器和调整设置' G9 T2 i5 |8 L7 y8 Q
你的个性的需求。 @+ m+ u( g- T- {. J' [' K
确保一个且只有一个这些DEFAULTS_XXX config.h中定义的值( O3 @) T9 M* C" U9 K
*// m8 l7 t9 Y7 T% R1 j2 Q0 ]
$ Y% z9 n) t p( K#ifndef defaults_h, W/ D- }+ ]% d" T! x# m) ?5 h
! i4 b' K5 u% G9 U// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file.
# k" g+ C" c7 e. q// Don't #define defaults_h here, let the selected file do it. Prevents including more than one.
* U! n/ b' }' X7 [//只有定义DEFAULT_XXX在哪里可以找到相应的DEFAULT_XXX。h文件。
4 z4 }+ m- z) ~//别在这里# define defaults_h,让选中的文件。防止包括不止一个。
0 g R6 v& K/ M* U) W1 c0 n, k- i! |5 p
#ifdef DEFAULTS_GENERIC4 @& m/ k# B6 i4 B3 j3 k
// Grbl generic default settings. Should work across different machines.
( {9 M$ C" J* l0 b. y // Grbl通过通用默认设置就可以在不同的机器上工作。# b4 j6 M; d9 ~
#include "defaults/defaults_generic.h"6 m7 E. g: Z; x9 m. U9 _
#endif; `7 N! N' b& N" \1 d
4 Z' ~2 O' \& f" K3 H1 Q/ o#ifdef DEFAULTS_SHERLINE_54002 k1 W0 G6 k" M/ a7 s9 J9 W1 I; s
// Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors,
- S! B6 }4 ?9 a2 T% Q1 q // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding." A) F( C% J ]8 f9 i
//描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机,
' X2 V8 e5 x( U, N" W //由三个Pololu A4988步进驱动30 v,6在每1.5绕组供电。5 e5 |* h1 u6 N6 O- W7 t
9 N& G2 [/ K5 t5 R8 {6 W- Q
#include "defaults/defaults_sherline.h"
9 e% z5 q, S9 e z#endif
4 x9 I3 s9 g- l5 o3 h7 a
- r: K: ]9 {+ L0 r! M#ifdef DEFAULTS_SHAPEOKO
+ M, f% v/ p: ?: P0 R' L // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos9 A+ M& m; x8 }2 \( w
// grblShield with a 24V, 4.2A power supply.# N) L0 Z. c" w, n7 i L# k! S) X
// 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的 A5 P- n7 `5 D9 g+ S' d$ z1 Z
// grblShield 24 v,4.2电源。
+ H& T* h2 o4 e0 _
1 }! D$ E" ?5 e9 G #include "defaults/defaults_shapeoko.h"( o& \ N3 @* |, Q* L
#endif- { F2 ?6 T3 z
- u( u: Y/ n( x% G
#ifdef DEFAULTS_SHAPEOKO_2
3 K+ n# n5 ^ ~, e( p // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos
3 D% r, \, R) H5 I5 D+ D // grblShield at 28V.
! Y8 D9 l5 u- `) L // 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的; s+ d: t* J R0 _% G) G9 w
// grblShield 28 v。( E% R \6 i% D, m, f
1 d1 S, z( z+ P' B #include "defaults/defaults_shapeoko2.h"
! @' ?& |" R M/ q" h/ @3 j- `6 d#endif r/ g7 K) T* X3 B3 i3 V
9 o( [9 d( N7 o5 {5 D2 m- t
#ifdef DEFAULTS_SHAPEOKO_3
. @- o( r. S( s4 | @" C5 U7 t // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion
2 Q( g# X7 n; |' `8 `/ M2 u4 P // 描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的
: W4 C; ?% j3 P' H/ m
1 p1 Q) x- m( t) i3 b3 S #include "defaults/defaults_shapeoko3.h"
O! Z. K3 o: E4 P#endif
$ R. l& I. q) X+ K. F% m; B
( N, l( k% N: Q& y#ifdef DEFAULTS_X_CARVE_500MM3 k& \; b* K" x2 V8 b
// Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos n2 i$ w! ?% q. t5 m5 D3 y
// grblShield at 24V.: B! B1 ?2 W$ f; c
// 描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。
! V! o9 `1 |9 m1 |+ X! x8 U1 U #include "defaults/defaults_x_carve_500mm.h"
5 \4 ^1 c/ P7 y" C. p- H#endif7 o! p6 M6 q. E. h
' p4 e6 Q2 N% v#ifdef DEFAULTS_X_CARVE_1000MM
% m5 G$ Y. C( j$ L9 S // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos, a8 {% k3 N! X
// grblShield at 24V.& h: u: r$ m) C, P, d+ {
#include "defaults/defaults_x_carve_1000mm.h"( X( I2 h+ k3 T+ d1 `+ l) A8 d! R$ p
#endif
& ~) z* F7 t8 j- p! L o
1 i0 T4 s5 J. z3 m$ t' k$ P, K% ^% I#ifdef DEFAULTS_ZEN_TOOLWORKS_7x72 X8 y. g& J1 K! d' n5 Q
// Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors.) I& w3 h" R& F
// Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here.
5 o$ N. i F# A" y // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers.
% o: R8 r+ c! l- ]( Y+ x, j5 f) U //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。7 h. T& j3 u/ X* p
//导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。 t+ L [$ L( n+ d
//由30 v 6电源和TI DRV8811步进电机驱动程序。) `$ E/ ^2 Z, z/ r5 ?. o
+ @8 e" A: u9 {2 k5 P% m: p
#include "defaults/defaults_zen_toolworks_7x7.h"8 i4 y: X6 a. G
#endif
" u6 w' C5 x2 g) y
+ F \2 B( U% V& o8 X: B( {8 Y ~#ifdef DEFAULTS_OXCNC
: i- V4 `2 o% l/ \% [) v6 ~ // Grbl settings for OpenBuilds OX CNC Machine
9 Y& E- ?2 N7 a' l // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/, H7 }# `) C, ~, N. c* k" s' m
. t- L! A5 A/ M' ~) N9 m
// http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/
7 Q5 W" [! m* {; A# H #include "defaults/defaults_oxcnc.h" // Grbl设置OpenBuilds牛数控机床
, s$ Y1 M T6 b( v% r7 y5 u9 v#endif; G/ N( |2 Q, m9 C( p6 c. E
, [1 z2 N) i- l2 ]: L
#ifdef DEFAULTS_SIMULATOR
+ T8 q6 ?& k7 u! g* t // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim); Y w( g+ z/ F
#include "defaults/defaults_simulator.h" //设置只对Grbl模拟器(www.github.com/grbl/grbl-sim)
5 A8 [7 B- M$ r, \1 e" e#endif* Y+ Y3 ?' W& h0 i; k
! e$ H0 K+ _2 R, u3 [8 x
#endif
& _3 Y3 z$ i% G5 j8 s) F$ |8 w# d9 I& e& t
__________________________________________________________________________________________________________________
$ g3 y9 N5 z/ U" D; G/*
) `0 o7 e/ M) r. ~defaults_generic.h -默认设置配置文件Grbl的一部分
3 S3 O0 o2 u: a$ u ]版权(c)2012 - 2015 Sungeun k全7 o+ C. P, u9 c# L0 j& D# \% f
Grbl是免费软件:可以重新分配和/或修改
6 l8 Y, L4 B/ o2 Q9 G! oGNU通用公共许可证的条款下发布的1 {! E- T1 d- u1 ?
自由软件基金会,版本3的许可,或1 Q4 g5 N6 v5 R1 N
(任您选)其后的版本。1 E# x1 l" e! q+ Q! ]* y7 ]( ?
% Z1 H" t, z, ^2 }2 O# b
Grbl分布,希望这将是有用的,3 V% Y4 V0 K) ?8 ?, j
但是没有任何保证;没有即使的默示保证
. K7 c j- y' P3 H% R; l适销性或健身为特定目的。看到
% T. S3 L9 U) N- Y+ w2 O. vGNU通用公共许可证的更多细节。+ U7 Z. d" T1 u1 p7 S6 T
. n- p$ J4 D" j( e) p你应该收到了GNU通用公共许可证的副本
$ h3 T) N5 z/ k) l连同Grbl。如果没有,看< http://www.gnu.org/licenses/ >。
5 s ?& l* f8 y Q7 w0 T# I* /
" I3 g6 \" ]0 S4 w( r9 a( B1 {% K
/ *默认值。h文件作为一个中央默认设置文件不同的机器
) f6 Z2 i1 m2 z类型,从DIY米尔斯数控CNC转换的现成的机器。的设置
5 v. @; c' t# v. `8 H: T5 O- B这是由用户提供,所以您的结果可能不同。然而,这应该给你
: N+ r+ F, b; m一个好的起点,你了解你的机器和调整的设置) G4 P9 B/ T, }/ g5 ?; \
邪恶的需求。*/
, n! O, O3 @2 ?( T: l3 L% ]8 S3 j* Y4 _' }$ `7 D
! d& w6 Y1 s O7 z
#ifndef defaults_h
1 g) g$ f: l8 @. E) |/ u0 z7 c#define defaults_h2 ~# g* g. K: A1 P
, x0 N1 b+ K& X7 W- i7 t
// Grbl generic default settings. Should work across different machines.
$ y5 |) `/ s$ J, V8 f2 _ #define DEFAULT_X_STEPS_PER_MM 250.0 //X轴每mm脉冲当量 " O9 W) J3 K# O% }2 k( E9 s: v
#define DEFAULT_Y_STEPS_PER_MM 250.0% x- y E' ?. h+ i! b' j. y* y
#define DEFAULT_Z_STEPS_PER_MM 250.04 d$ q! x( V) ^+ }; b( v/ Y7 H1 c
#define DEFAULT_X_MAX_RATE 500.0 // mm/min 最大速度
& G0 s8 d* O) U7 n; f2 P% O #define DEFAULT_Y_MAX_RATE 500.0 // mm/min" U8 G. q" y+ [5 R& J: s3 V
#define DEFAULT_Z_MAX_RATE 500.0 // mm/min
+ ]/ B. h! _1 g3 Z+ [ y/*这是毫米/秒/秒的加速度。5 V. S9 p( B) u- b
你不需要理解这是什么意思,我只想说,一个较低的值给smooooother加速度而价值更高的收益率更严格的措施,达到所需的进料速度更快。
f4 b% o$ A4 E' }! A: J( A; q从技术角度讲,这是您的机器的点对点的加速度,独立于轴。设置加速度值高达你最限制轴可以让你在不丢失任何步骤。& t, |- @1 Z8 y0 l2 v
通常你想给自己一些缓冲,因为如果你失去了步骤,Grbl不知道这发生了(开环控制步进),并将继续。*/) A' i: E" I H
#define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 加速度
" N: W3 v8 }/ B' l' k+ B #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
& B5 ]" D6 h9 W7 N; S #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
K- j. G2 K, o* u: ~1 K- `$ o8 ]3 z+ g #define DEFAULT_X_MAX_TRAVEL 200.0 // mm 最大步行$ Y+ v( ?+ E' t
#define DEFAULT_Y_MAX_TRAVEL 200.0 // mm
3 W" v- v3 C! P- T #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm : `6 x# T+ H% V, W1 _2 M
#define DEFAULT_STEP_PULSE_MICROSECONDS 10 //步进驱动脉冲长度
& p8 t& z+ B3 H: g7 { #define DEFAULT_STEPPING_INVERT_MASK 0 //步进是否反转
8 l2 n1 o. T8 {% j #define DEFAULT_DIRECTION_INVERT_MASK 0 //方向是否反转! x7 g9 J. d& Y; M
/*
( d- m% z1 r/ `- v 每次你完成步进运动和停止,Grbl将禁用默认步进。
8 K9 h' V3 q- C! L锁步进空闲时间时间长度Grbl将步进锁之前禁用。3 e k H) ?: B0 r* d! o/ G* A
根据系统中,您可以将这个参数设置为零,禁用它。对他人,你可能需要25 - 50毫秒来确保你的斧子来完成禁用前停止。(我的机器往往漂移稍微如果我没有启用。)
?5 H2 E0 V% L. Z; P# ~或者,你可以让你的轴在任何时候启用通过将这个值设置为最大255毫秒。再次重复,你总是可以保持所有轴通过设置启用7美元= 255。*/# h, q: P8 u, \8 B
#define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)步进闲着时间
. v+ U7 G: r8 n! S9 ^" j0 R. X #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) //是否打印状态报告4 C9 {8 Z9 p* L" E# o1 p
/*一些高低cnc-stepper控制器需要输入反方向和步骤。
p/ _$ f2 l) X. H/ Q/ D0 E9 Q! c信号线路通常是高或低信号方向或高,低了几微秒一步事件信号。为了达到这个目标,Grbl可以反转输出比特来满足特定的需求。
- {! i4 }1 m+ W反掩码值是一个字节,xor的步骤和方向步进港数据之前发送。这样你可以使用这两个转化步骤脉冲或转化的一个或多个方向的轴。$ C$ r! z n. i# S; A4 l
这个字节对应的比特分配给介入config.h别针。请注意,不用于反演位0和1。默认比特分配是这样的:*/
1 g- K) Y: T7 Z, e C4 U( c
3 ^, a: u2 G) i; [- F/* 转弯路口偏差使用加速度经理决定它如何快速穿过一条路径。$ l/ L" G* V/ M9 B* z! n- n
数学有点复杂,但总的来说,更高的价值给一般快,可能的波动运动。低价值使得加速度经理更加谨慎,将导致小心和慢转弯。$ @8 Y, ?! J- [0 s: s' R" d9 e( ]
如果你遇到问题,你的机器试图把一个角落太快,降低此值使它慢下来。$ v+ n6 |# N0 L9 K' V: ]! v6 H
如果你想让你的机器通过连接移动得更快,增加这个值速度。
9 w2 s2 E8 l# T. h) r; Z% x, ] 为技术人员,点击这个链接阅读关于Grbl转弯算法,速度和结角占一个很简单,高效和可靠的方法。*/: A P$ b" Y" A: M7 r5 e
0 O! W+ N5 P& e' ]+ H. t: d. l #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm //偏差
2 ~4 z1 d6 T- ^- q! l* n #define DEFAULT_ARC_TOLERANCE 0.002 // mm //圆弧公差* \7 X7 |( d2 @8 U% y. j+ [
#define DEFAULT_REPORT_INCHES 0 // false //打印英寸6 }7 O* s$ O5 k' V
/*默认情况下,步进使销是启用禁用高和低。如果您的设置需要相反的,只是反步进使销通过输入15美元= 1。禁用与15美元= 0。(可能需要一个动力循环加载的变化。)*/7 N* Y. ~) ^( G4 x0 ?! y6 X
#define DEFAULT_INVERT_ST_ENABLE 0 // false) ~1 e0 Q! ]& G' f# F
#define DEFAULT_INVERT_LIMIT_PINS 0 // false //反转限位引脚. H. S- t5 u0 a) {0 ?! Z$ h
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // false //软件限位
; |" r# |- C- @& P) e #define DEFAULT_HARD_LIMIT_ENABLE 0 // false //硬件限位0 I$ b, O2 I; n, n4 Z
#define DEFAULT_HOMING_ENABLE 0 // false //回原点使能+ ^1 w- s8 e5 w/ Z( p( e
#define DEFAULT_HOMING_DIR_MASK 0 // move positive dir+ |) h# i1 I4 u6 d( a
#define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min& K( a' u4 ]* i! ]. b# l
#define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min
+ S6 k* ^9 G: |* q1 k$ ? #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)防抖动延时
. A, \" m9 `- ` #define DEFAULT_HOMING_PULLOFF 1.0 // mm
/ x$ ?" @# r+ L% a
( }( H0 j( l+ o6 u5 [- `#endif3 s& S" V: _ l2 E' |
$ ~! G) i, x: V- l g/ ~+ P) f/ v. F7 t( V4 ?
) {6 A/ c; v! o! {* R4 W. f4 ~! T5 m2 ?! w( G5 W$ {
+ o$ ^2 \6 p4 A. `% C5 G; s) u
# R; t2 P3 h( F7 A$ }
# ~& E& R6 J9 v
" d/ N# O5 K) x3 j- e7 R( }1 X
5 m# u, v0 Q4 E$ g
+ b5 g& F( z' z7 J) R F5 L7 [2 }
/ ~+ W5 B! F* ]1 V6 c( h3 i
# Y5 T2 l" o2 _* X, ]
0 q, M2 Q9 h/ F5 f9 j, L2 R, j9 Y c9 ^0 \
! q. G+ c) c% @) C" N( G/ G$ [! c6 M$ L
, s$ t" m, }5 a
3 v8 B& R Z' W
- ?. Y( F0 Z* V8 Y4 D/ ]2 Z7 G. f8 h" e) W! P" \
( W9 n y% s% A5 a
# v0 a, C# d2 q0 n# X! ], M" m2 B5 {$ B) H- d% ^/ h# `2 b
0 a. O: T2 }! J Q
' h- b. C5 n. V# S |