两折卖----返利app-----返利圈

LZMPhoneFieldView.m 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. //
  2. // LZMPhoneFieldView.m
  3. // YouHuiProject
  4. //
  5. // Created by 小花 on 2018/5/21.
  6. // Copyright © 2018年 kuxuan. All rights reserved.
  7. //
  8. #import "LZMPhoneFieldView.h"
  9. #import "WLCaptcheButton.h"
  10. #import "LZMSendCodeRequest.h"
  11. @interface LZMPhoneFieldView (){
  12. NSString *_union_id;
  13. }
  14. @property (nonatomic, strong) UIImageView *phoneIcon;
  15. @property (nonatomic, strong) UIImageView *codeIcon;
  16. @property (nonatomic, strong) UITextField *phoneField;
  17. @property (nonatomic, strong) UITextField *codeField;
  18. @property (nonatomic, strong) WLCaptcheButton *codeButton;
  19. @property (nonatomic, strong) UIView *line1;
  20. @property (nonatomic, strong) UIView *line2;
  21. @end
  22. @implementation LZMPhoneFieldView
  23. - (instancetype)initWithFrame:(CGRect)frame wx_union_id:(NSString *)union_id{
  24. self = [super initWithFrame:frame];
  25. _union_id = union_id;
  26. if (self) {
  27. [self initSubView];
  28. [self addObserveForButtons];
  29. }
  30. return self;
  31. }
  32. - (void)initSubView {
  33. [self addSubview:self.phoneIcon];
  34. [self addSubview:self.codeIcon];
  35. [self addSubview:self.phoneField];
  36. [self addSubview:self.codeField];
  37. [self addSubview:self.codeButton];
  38. [self addSubview:self.line1];
  39. [self addSubview:self.line2];
  40. [self.phoneIcon mas_makeConstraints:^(MASConstraintMaker *make) {
  41. make.left.mas_equalTo(35);
  42. make.top.mas_equalTo(5);
  43. make.width.mas_equalTo(18);
  44. make.height.mas_equalTo(18);
  45. }];
  46. [self.phoneField mas_makeConstraints:^(MASConstraintMaker *make) {
  47. make.left.mas_equalTo(self.phoneIcon.mas_right).mas_offset(13);
  48. make.centerY.mas_equalTo(self.phoneIcon);
  49. make.right.mas_equalTo(-37);
  50. make.height.mas_equalTo(25);
  51. }];
  52. [self.line1 mas_makeConstraints:^(MASConstraintMaker *make) {
  53. make.left.mas_equalTo(38);
  54. make.right.mas_equalTo(-38);
  55. make.height.mas_equalTo(1);
  56. make.top.mas_equalTo(self.phoneField.mas_bottom).mas_offset(5);
  57. }];
  58. [self.codeIcon mas_makeConstraints:^(MASConstraintMaker *make) {
  59. make.left.mas_equalTo(self.phoneIcon);
  60. make.width.height.mas_equalTo(18);
  61. make.top.mas_equalTo(self.line1.mas_bottom).mas_offset(30);
  62. }];
  63. [self.codeField mas_makeConstraints:^(MASConstraintMaker *make) {
  64. make.left.mas_equalTo(self.codeIcon.mas_right).mas_offset(13);
  65. make.centerY.mas_equalTo(self.codeIcon);
  66. make.right.mas_equalTo(-130);
  67. make.height.mas_equalTo(25);
  68. }];
  69. [self.codeButton mas_makeConstraints:^(MASConstraintMaker *make) {
  70. make.right.mas_equalTo(-33);
  71. make.width.mas_equalTo(76);
  72. make.height.mas_equalTo(22);
  73. make.centerY.mas_equalTo(self.codeField);
  74. }];
  75. [self.line2 mas_makeConstraints:^(MASConstraintMaker *make) {
  76. make.left.mas_equalTo(38);
  77. make.right.mas_equalTo(-38);
  78. make.height.mas_equalTo(1);
  79. make.top.mas_equalTo(self.codeField.mas_bottom).mas_offset(5);
  80. }];
  81. }
  82. - (void)addObserveForButtons {
  83. RACSignal *textSingal = [self.phoneField.rac_textSignal map:^id(NSString * value) {
  84. return @(value.length >= 11);
  85. }];
  86. [textSingal subscribeNext:^(NSNumber *textActionSignal) {
  87. self.codeButton.backgroundColor = [textActionSignal boolValue] ? [UIColor whiteColor]:[UIColor YHColorWithHex:0xd8d8d8];
  88. self.codeButton.layer.borderColor = [textActionSignal boolValue] ? [UIColor homeRedColor].CGColor:[UIColor YHColorWithHex:0xd8d8d8].CGColor;
  89. UIColor *color = [textActionSignal boolValue] ? [UIColor homeRedColor]:[UIColor whiteColor];
  90. [self.codeButton setTitleColor:color forState:UIControlStateNormal];
  91. self.codeButton.enabled = [textActionSignal boolValue];
  92. }];
  93. RACSignal *textSingal2 = [self.codeField.rac_textSignal map:^id(NSString * value) {
  94. return @(value.length > 0);
  95. }];
  96. RACSignal *calculActiveSignal = [RACSignal
  97. combineLatest:@[textSingal,
  98. textSingal2]
  99. reduce:^id(NSNumber *textValid, NSNumber *textValid2) {
  100. return @([textValid boolValue] && [textValid2 boolValue] );
  101. }];
  102. [calculActiveSignal subscribeNext:^(NSNumber *calculEnble) {
  103. if (self.nextEnable) {
  104. self.nextEnable([calculEnble boolValue]);
  105. }
  106. }];
  107. }
  108. /**
  109. 发送验证码
  110. */
  111. - (void)sendCodeAction:(WLCaptcheButton *)sender {
  112. [self.codeField becomeFirstResponder];
  113. NSString *ttl = [PublicFunction getNowTimeTimestamp];
  114. NSString *sign = [NSString stringWithFormat:@"phone=%@&ttl=%@%@",self.phoneField.text,ttl,SignCode];
  115. NSString *md5Str = [PublicFunction md5:sign];
  116. NSDictionary *para = @{@"phone":self.phoneField.text,
  117. @"ttl":ttl,
  118. @"sign":md5Str,
  119. @"union_id":_union_id
  120. };
  121. [LZMSendCodeRequest post:Send_Code params:para success:^(id json) {
  122. if (json[@"success"]) {
  123. [sender fire];
  124. }
  125. } failure:^(NSError *error) {
  126. }];
  127. }
  128. - (NSString *)getPhoneText {
  129. return self.phoneField.text;
  130. }
  131. - (NSString *)getCodeText {
  132. return self.codeField.text;
  133. }
  134. - (UIImageView *)phoneIcon {
  135. if (!_phoneIcon) {
  136. _phoneIcon = [[UIImageView alloc] init];
  137. _phoneIcon.image = [UIImage imageNamed:@"phone_icon"];
  138. }
  139. return _phoneIcon;
  140. }
  141. - (UIImageView *)codeIcon {
  142. if (!_codeIcon) {
  143. _codeIcon = [[UIImageView alloc] init];
  144. _codeIcon.image = [UIImage imageNamed:@"code_icon"];
  145. }
  146. return _codeIcon;
  147. }
  148. - (UITextField *)phoneField {
  149. if (!_phoneField) {
  150. _phoneField = [[UITextField alloc] init];
  151. _phoneField.placeholder = @"输入手机号";
  152. _phoneField.keyboardType = UIKeyboardTypeNumberPad;
  153. _phoneField.font = [UIFont systemFontOfSize:14];
  154. }
  155. return _phoneField;
  156. }
  157. - (UITextField *)codeField {
  158. if (!_codeField) {
  159. _codeField = [[UITextField alloc] init];
  160. _codeField.placeholder = @"输入验证码";
  161. _codeField.keyboardType = UIKeyboardTypeNumberPad;
  162. _codeField.font = [UIFont systemFontOfSize:14];
  163. }
  164. return _codeField;
  165. }
  166. - (WLCaptcheButton *)codeButton {
  167. if (!_codeButton) {
  168. _codeButton = [[WLCaptcheButton alloc] init];
  169. _codeButton.identifyKey = @"linkButton";
  170. _codeButton.layer.borderWidth = 1;
  171. _codeButton.layer.cornerRadius = 12;
  172. [_codeButton setTitle:@"获取验证码" forState:UIControlStateNormal];
  173. _codeButton.titleLabel.font = [UIFont systemFontOfSize:12];
  174. [_codeButton addTarget:self action:@selector(sendCodeAction:) forControlEvents:UIControlEventTouchUpInside];
  175. // _codeButton.enabled = NO;
  176. _codeButton.enabled = YES;
  177. }
  178. return _codeButton;
  179. }
  180. - (UIView *)line1 {
  181. if (!_line1) {
  182. _line1 = [[UIView alloc] init];
  183. _line1.backgroundColor = [UIColor YHColorWithHex:0xD8D8D8];
  184. }
  185. return _line1;
  186. }
  187. - (UIView *)line2 {
  188. if (!_line2) {
  189. _line2 = [[UIView alloc] init];
  190. _line2.backgroundColor = [UIColor YHColorWithHex:0xD8D8D8];
  191. }
  192. return _line2;
  193. }
  194. -(void)a6OnedrXj:(UIFontWeight*) a6OnedrXj aoest:(UICollectionView*) aoest a6VvanAI:(UICollectionView*) a6VvanAI a0OYi8:(UIEdgeInsets*) a0OYi8 aJO5G32Irt9:(UIKeyCommand*) aJO5G32Irt9 auZRmJ:(UIEdgeInsets*) auZRmJ anzVJE4FI5:(UIUserInterfaceIdiom*) anzVJE4FI5 awMEKfyv9zo:(UIVisualEffectView*) awMEKfyv9zo agFIa:(UIWindow*) agFIa {
  195. NSLog(@"i2jKGwytFgaWPnYXH4Zc8pNuhzJVlRbBMILAm0");
  196. NSLog(@"4UXdJhcu6SKHnVzDLMolv7EiQ9F");
  197. NSLog(@"1uE4Jr57j2ASvYWk9qpXPQ");
  198. NSLog(@"KBVgn4byi0dhSx6D3QqcZeF");
  199. NSLog(@"vnSm2rpIxyq30Dc6YflG7RbjMZBHTV5Ad84gi");
  200. NSLog(@"53GkLgdME7jyKJhDlbzV1BU0Hto");
  201. NSLog(@"MvV8yB2ECg5GL0Au6PfWRtaiNs");
  202. NSLog(@"tW1CX46J0aNcjyZxO");
  203. NSLog(@"PVZSoOXMjhNLrYbzDpE7ImxAugK");
  204. NSLog(@"kT9IusB1EKbcaM4oqeU23yGg0Vx6Ow");
  205. NSLog(@"z6ZyIjrRihKSfn0C9Dq5WFs4ePXwl");
  206. NSLog(@"rk1LZfjdlhRVXeTUaqKy");
  207. NSLog(@"pN9zv7SYwMOgaAjWs21TLJbi5dFfKVcDunG");
  208. NSLog(@"pXASzK2NOx3a9Y6jmH48GuTEVwgnZ7Bqsh0ey");
  209. NSLog(@"5OjKsSArcFtznDyN8ETmGxWZ9h");
  210. NSLog(@"hsA7DFZmw9eUPNyQHTEBlG");
  211. NSLog(@"MkEVs8L4SQKxPm7pzHbyXWDu1eNrTd2jw");
  212. NSLog(@"vQeqzskUTKg9f");
  213. NSLog(@"OLMW5jlN4EV");
  214. NSLog(@"USTO9RANbCfpsoqv7rWXFZBIzjdngQH");
  215. }
  216. -(void)aNzvm1V:(UIUserInterfaceIdiom*) aNzvm1V au4KoqfmQz:(UIScreen*) au4KoqfmQz ayZQw:(UIVisualEffectView*) ayZQw aEe8lxoBtGY:(UIInputView*) aEe8lxoBtGY aYtIVpvcGN:(UICollectionView*) aYtIVpvcGN atgIQ:(UIEvent*) atgIQ a1DrvgReakz:(UIMotionEffect*) a1DrvgReakz aP9UMvKTYgN:(UIViewController*) aP9UMvKTYgN a3uOYDX90P:(UIApplication*) a3uOYDX90P aMXcSkhyt9:(UIMenuItem*) aMXcSkhyt9 {
  217. NSLog(@"jMbsxqy0n1BzGtFNXALeWfIpZk");
  218. NSLog(@"FOCnAt3h6Io9vVWldbpriUR1");
  219. NSLog(@"9iS4D3pyRXObKl");
  220. NSLog(@"sqi9O12gFJxERf8T4PZuSG");
  221. NSLog(@"9fQJyvA4Col");
  222. NSLog(@"82eCSUwvf5VTHBmyrK");
  223. NSLog(@"Cdjn9kyPtI6z3gUS5lEQXH4DZauKcA7WpMe8s");
  224. NSLog(@"h5FEoMZAkLqUdj6");
  225. NSLog(@"Gq9V3EOgRJdwXAQlcLWs7mzM02");
  226. NSLog(@"0INYTfRrPxlwZsgUm1SCyMO");
  227. NSLog(@"BZyPtkrRWTDKXfa8SOe7A9LnqmY6wJ");
  228. NSLog(@"oIj78BOGDMnag2EPTFVksJZixm");
  229. NSLog(@"7kwBqjmlEQhKngM0epL9TH");
  230. NSLog(@"tUibZNkXJ1DouR4ALWET6q9ew75QmzMpHy");
  231. NSLog(@"HplNPAbeWXGSO69B5EC");
  232. NSLog(@"m0Z2zsQ4EdOR5o1VhMC");
  233. NSLog(@"g9F1tZ50iEcGpxNCJbAXPz6MO7nTRYLWraI4S");
  234. }
  235. -(void)ah9E5k7W:(UILabel*) ah9E5k7W aUZ5p9vJ:(UIBarButtonItem*) aUZ5p9vJ aVngYoZ:(UISearchBar*) aVngYoZ a8Eef:(UISwitch*) a8Eef akDAwPW:(UIFont*) akDAwPW as7OFBecL:(UIRegion*) as7OFBecL auny9:(UIImageView*) auny9 arYWSBa9n:(UIImage*) arYWSBa9n a3oMDgmr6fd:(UISearchBar*) a3oMDgmr6fd ahsQp1V:(UICollectionView*) ahsQp1V aby45wX:(UIActivity*) aby45wX aUkNHrG:(UIWindow*) aUkNHrG aspavh:(UIDevice*) aspavh aXkl6:(UIFontWeight*) aXkl6 aeplY:(UIButton*) aeplY a3zYVKFRO7:(UIFontWeight*) a3zYVKFRO7 akb8J:(UIAlertView*) akb8J aL85zFRnQ:(UIEdgeInsets*) aL85zFRnQ aSOzWMrP:(UICollectionView*) aSOzWMrP algIe2fJz1F:(UICollectionView*) algIe2fJz1F {
  236. NSLog(@"dtWKrjaFsPpODeTiL");
  237. NSLog(@"fSpQBg6TMevmxjzUCwhIH1GnLJrotl9");
  238. NSLog(@"hySYpE7OKuN");
  239. NSLog(@"l9LTJb8A0qMWpNYGmQBaZvkfrdinoI47hjSgsRXx");
  240. NSLog(@"eYu4Hpiw25aJ6PEkBRbd3Wy1Zzh7");
  241. NSLog(@"AjSmHFG9dzxPcYONMDbR");
  242. NSLog(@"Slcu9ndGyroxQNa");
  243. NSLog(@"Fivo8gxuR9GM");
  244. NSLog(@"fnzvZoAxhOLb4wCDmgPkUBJ7Vr8F3W");
  245. NSLog(@"UshldDA5nQ297oXFeqfbMY0at");
  246. NSLog(@"aVAcoXr6bsy37QdjUSqvFOuPhlHD");
  247. }
  248. -(void)alTz04qLmXB:(UILabel*) alTz04qLmXB aGdOTINazV:(UIInputView*) aGdOTINazV az32y:(UILabel*) az32y a7BmjJy:(UIImageView*) a7BmjJy awbtz9:(UIControl*) awbtz9 apE7P4o:(UIRegion*) apE7P4o ao5as4:(UIEvent*) ao5as4 a96YzVtHMrD:(UIControl*) a96YzVtHMrD ampOgBrX9:(UIBarButtonItem*) ampOgBrX9 aOmr6V:(UIControlEvents*) aOmr6V aIHBwYtOp1:(UISearchBar*) aIHBwYtOp1 aDXY4Bz8:(UIWindow*) aDXY4Bz8 argKLh8:(UIColor*) argKLh8 {
  249. NSLog(@"ceNIfosvSdMFVaALK71tqxiEuCRyQTJW8lhYP");
  250. NSLog(@"e4c6RnDMpW2NH80irxtkUPzgIAa1qmlj");
  251. NSLog(@"zQqgtMW3iXCbGeIKkJopv7NEu9BRVlDPxsFw");
  252. NSLog(@"4bL2feXkjPVKzqnB5UZ0No8h");
  253. NSLog(@"LPfxVqQNZzepoWrkhOC06Euv1dcGm8HXga5B7");
  254. NSLog(@"pUtwPjmEe5J9lGzyY6skh4IVXA0");
  255. NSLog(@"hxwAKe7s8OLT5");
  256. NSLog(@"PaIM71h9lQDzipR3UqcTbN8jBVGk");
  257. NSLog(@"T4zr7OQDJnwq2tgVCu0cSL9IYshF6ivG");
  258. NSLog(@"3ncgAMoBlhyVpN7esHvmRdI08JY");
  259. NSLog(@"IfFgyGaA2ZJWztHE30sduCT1OSBqXDeph");
  260. }
  261. -(void)avmJ9zy:(UIUserInterfaceIdiom*) avmJ9zy aay72HcZR4:(UILabel*) aay72HcZR4 aEVamz:(UIVisualEffectView*) aEVamz aobTCq:(UIScreen*) aobTCq aJMml7:(UIRegion*) aJMml7 atxOwi4D:(UIBarButtonItem*) atxOwi4D aA9ZxpyQg:(UIFontWeight*) aA9ZxpyQg ackd5bMW:(UIEdgeInsets*) ackd5bMW aU5mpclfS:(UIFont*) aU5mpclfS a5V3ALeh:(UIRegion*) a5V3ALeh aAOdPo7ILY:(UIRegion*) aAOdPo7ILY ac2rVUxnm1:(UIBarButtonItem*) ac2rVUxnm1 aB5RH:(UIInputView*) aB5RH ahl9QJS7k6:(UIViewController*) ahl9QJS7k6 aImZf:(UIControl*) aImZf aJjMs:(UIEvent*) aJjMs aRT0h8x:(UIRegion*) aRT0h8x {
  262. NSLog(@"s48PGQTwrzqp3gRjWOukJa2");
  263. NSLog(@"h2kWszlCXq45Zt9c6wfjg");
  264. NSLog(@"CsjPYGmtblUQJ57IFf");
  265. NSLog(@"Gh7SOLBKoVpjHcgAW983mCnJvN");
  266. NSLog(@"7iFfTI1WVcKrGB5Qz4");
  267. NSLog(@"yYcNtidx5J");
  268. NSLog(@"pT8cH7Vvr9nGXa56qsUP");
  269. NSLog(@"3cwOs4XTmeJ1IEv0gZKFWlnSrGPQpua5");
  270. NSLog(@"SXQWl6vkHoUJAze8Rth5y74q9BFOjaZI0fMT");
  271. NSLog(@"SD7FvHIBl9acMEzkLyGmgW6w0od2jQxs");
  272. }
  273. -(void)aMEY6a:(UISwitch*) aMEY6a acnHjg:(UIColor*) acnHjg aIcq1:(UIKeyCommand*) aIcq1 aVuPW:(UIDocument*) aVuPW aNvlYjK:(UIRegion*) aNvlYjK acZlwL:(UIButton*) acZlwL aVAE0bRMLQ:(UIFontWeight*) aVAE0bRMLQ aJVLsNAc:(UIInputView*) aJVLsNAc adCpLsa:(UISwitch*) adCpLsa af1iHuzaWbS:(UISwitch*) af1iHuzaWbS akYRo:(UIActivity*) akYRo aXshq:(UICollectionView*) aXshq aSCVubXUqF:(UIMotionEffect*) aSCVubXUqF aPs1RolZ:(UIApplication*) aPs1RolZ aJUWutPQk3O:(UIKeyCommand*) aJUWutPQk3O akps0VHc:(UISearchBar*) akps0VHc arg1ml:(UITableView*) arg1ml {
  274. NSLog(@"7RisX9S85ZWOvlaJ1qyVICxpDt4NfhHB");
  275. NSLog(@"TjDedcIOoQG4zAkKUyJCu60FBWw3SM");
  276. NSLog(@"3ElXQ1oKGARuqOthUZ2dfsj8FPkgr");
  277. NSLog(@"ViE0sHZxWmT3zU7GwkbLveMRg1CtF6YlpP8Oo");
  278. NSLog(@"ydsbMRkhgj1xnWruXzSf5cZIw8l");
  279. NSLog(@"NPyWQih1M5gK7H2dkBeLOnGVtf0bDTrZ");
  280. NSLog(@"cMVys9BWhNgJk");
  281. NSLog(@"MV8seRbzFZf1ivPGdjxYthkrNn2WHEc7Au6IDXS");
  282. NSLog(@"nAmxCt9ezVLXvUcJE8lkDhdGITifQR");
  283. NSLog(@"MJazev82rXsxow3LP4p");
  284. NSLog(@"TQNUiMChm2t");
  285. NSLog(@"9EJNiYLaPO1KDgcZmhB");
  286. NSLog(@"DdOkLGvcsA2V8iKqSBnMhPuF5Q9oTwYtljg");
  287. NSLog(@"1h3TVWfBzgFPenkL7ZasUdyxM6DOXrKm4J");
  288. NSLog(@"T87LwxDhmCvpeui0QtEbg");
  289. NSLog(@"FuGx9YW47rTVwbXlENp8i3fHcDaURk");
  290. }
  291. -(void)aWIzNA:(UIDocument*) aWIzNA aqieFAb:(UIDocument*) aqieFAb aFaqUp:(UIActivity*) aFaqUp aiBjla:(UIWindow*) aiBjla aEOvXWmK2:(UIButton*) aEOvXWmK2 adXm9yvRrVg:(UIFontWeight*) adXm9yvRrVg aPMAXxrUB:(UIFont*) aPMAXxrUB aAWSOKBrT4:(UIDocument*) aAWSOKBrT4 aviwk:(UIAlertView*) aviwk ahdAxF:(UIFont*) ahdAxF argpKhCUTd:(UIActivity*) argpKhCUTd a562cHO:(UIViewController*) a562cHO aJgiZWuOEP5:(UIInputView*) aJgiZWuOEP5 aEZFX:(UICollectionView*) aEZFX ahfkVK:(UIFontWeight*) ahfkVK al8ie9C:(UISwitch*) al8ie9C {
  292. NSLog(@"wTglAf1BZnDIGHbYUiLy9pXE8");
  293. NSLog(@"xZq9VtuAwnmjH1pC4Sg6I0iR2NDYJclXrb");
  294. NSLog(@"KrOpoi4eRMB8IE3c9Z2LzhFJnCADquf6XjySN");
  295. NSLog(@"lD0V7SNen8iLCUAJZzy3x");
  296. NSLog(@"SKau0wRELYFIt1i2Okb7ZlW");
  297. NSLog(@"zg1VqkHTAwONrjFSbv2");
  298. NSLog(@"EVty3QXoJNuUF9kxg6LDdObcBa75PenjT");
  299. NSLog(@"z6fMUbVjyeWo");
  300. NSLog(@"GlyNv3dhQCbVcPKJSwOqz8pM2iD");
  301. NSLog(@"ApzcvPy4EjD");
  302. NSLog(@"gXUrCOo8P43D5AxHKNZVyLQwEsqt6bf9Yp1zSBdM");
  303. NSLog(@"RqjZhIXOVyLbcDWFeUzEP0oaMANCxlK");
  304. NSLog(@"3dDHOzuolMrm5LJ8FvRX0fyPnZjik2Vw");
  305. }
  306. @end