WebView.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. // ------------------------------------------------------------------------------
  2. // <auto-generated>
  3. // 此代码由工具生成。
  4. // 运行时版本: 17.0.0.0
  5. //
  6. // 对此文件的更改可能导致不正确的行为,如果
  7. // 重新生成代码,这些更改将会丢失。
  8. // </auto-generated>
  9. // ------------------------------------------------------------------------------
  10. namespace VberAdmin.Templates.V3
  11. {
  12. using System.Linq;
  13. using System.Text;
  14. using System.Collections.Generic;
  15. using System;
  16. /// <summary>
  17. /// Class to produce the template output
  18. /// </summary>
  19. #line 1 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  20. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
  21. public partial class WebView : WebViewBase
  22. {
  23. #line hidden
  24. /// <summary>
  25. /// Create the template output
  26. /// </summary>
  27. public virtual string TransformText()
  28. {
  29. this.Write("@using ");
  30. #line 6 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  31. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
  32. #line default
  33. #line hidden
  34. this.Write("\r\n@using ");
  35. #line 7 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  36. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
  37. #line default
  38. #line hidden
  39. this.Write(".Configuration\r\n@using ");
  40. #line 8 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  41. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
  42. #line default
  43. #line hidden
  44. this.Write(".Authorization\r\n@using ");
  45. #line 9 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  46. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
  47. #line default
  48. #line hidden
  49. this.Write(".Web.Views.Shared.Modals\r\n@using ");
  50. #line 10 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  51. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
  52. #line default
  53. #line hidden
  54. this.Write(".Web.Views.Shared.SearchForm\r\n@using ");
  55. #line 11 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  56. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
  57. #line default
  58. #line hidden
  59. this.Write(".Web.Views.Shared.Table\r\n\r\n");
  60. #line 13 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  61. string isMuiltSearch= Model.IsMultipleSearch?"false":"true";
  62. #line default
  63. #line hidden
  64. this.Write("@{\r\n ViewBag.Title = \"");
  65. #line 17 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  66. this.Write(this.ToStringHelper.ToStringWithCulture(Model.HtmlPageTitle));
  67. #line default
  68. #line hidden
  69. this.Write("\";\r\n string activeMenu = PermissionNames.Pages");
  70. #line 18 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  71. this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
  72. #line default
  73. #line hidden
  74. #line 18 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  75. this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
  76. #line default
  77. #line hidden
  78. this.Write("Mg; //The menu item will be active for this page.\r\n ViewBag.ActiveMenu = activ" +
  79. "eMenu;\r\n\tvar searchForm = new SearchFormViewModel(new List<SearchItem>()\r\n {\r" +
  80. "\n");
  81. #line 22 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  82. foreach (var item in Model.Columns)
  83. {
  84. if(!item.IsGenreated) continue;
  85. if(item.IsSearch)
  86. {
  87. var typeStr= item.AttrType=="int"?"FieldType.I": item.AttrType=="int"?"FieldType.In": item.AttrType=="DateTime"?"FieldType.D": item.AttrType=="DateTime?"?"FieldType.Dn":"";
  88. typeStr= string.IsNullOrEmpty(typeStr)?"":","+typeStr;
  89. #line default
  90. #line hidden
  91. this.Write(" new SearchItem(\"");
  92. #line 30 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  93. this.Write(this.ToStringHelper.ToStringWithCulture(item.CamelColumnName));
  94. #line default
  95. #line hidden
  96. this.Write("\",\"");
  97. #line 30 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  98. this.Write(this.ToStringHelper.ToStringWithCulture(item.Comment));
  99. #line default
  100. #line hidden
  101. this.Write("\"");
  102. #line 30 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  103. this.Write(this.ToStringHelper.ToStringWithCulture(typeStr));
  104. #line default
  105. #line hidden
  106. this.Write("), \r\n");
  107. #line 31 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  108. }
  109. }
  110. #line default
  111. #line hidden
  112. this.Write(" },\"search-form\",");
  113. #line 34 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  114. this.Write(this.ToStringHelper.ToStringWithCulture(isMuiltSearch));
  115. #line default
  116. #line hidden
  117. this.Write(");\r\n\r\n var table = new TableViewModel(IwbConsts.ApiAppUrl + \"");
  118. #line 36 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  119. this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
  120. #line default
  121. #line hidden
  122. this.Write("/GetAll\", activeMenu, searchForm)\r\n\t.SetFields(new List<FieldItem>()\r\n {\r\n");
  123. #line 39 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  124. foreach (var item in Model.Columns)
  125. {
  126. if(!item.IsGenreated) continue;
  127. if(item.IsTable)
  128. {
  129. #line default
  130. #line hidden
  131. this.Write(" new FieldItem(\"");
  132. #line 44 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  133. this.Write(this.ToStringHelper.ToStringWithCulture(item.CamelColumnName));
  134. #line default
  135. #line hidden
  136. this.Write("\", \"");
  137. #line 44 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  138. this.Write(this.ToStringHelper.ToStringWithCulture(item.Comment));
  139. #line default
  140. #line hidden
  141. this.Write("\"),\r\n");
  142. #line 45 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  143. }
  144. }
  145. #line default
  146. #line hidden
  147. this.Write(" });\r\n var inputs = new List<Input>()\r\n {\r\n new InputHide(\"id\"),\r" +
  148. "\n");
  149. #line 52 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  150. foreach (var item in Model.Columns)
  151. {
  152. if(!item.IsGenreated) continue;
  153. if(!item.IsModal) continue;
  154. var inputType=item.AttrType=="int"?"InputNumber": item.AttrType=="int?"?"InputNumber": item.AttrType=="DateTime"?"InputDateTime": item.AttrType=="DateTime?"?"InputDateTime":"Input";
  155. if(item.IsRequired) {
  156. #line default
  157. #line hidden
  158. this.Write(" new ");
  159. #line 58 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  160. this.Write(this.ToStringHelper.ToStringWithCulture(inputType));
  161. #line default
  162. #line hidden
  163. this.Write("(\"");
  164. #line 58 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  165. this.Write(this.ToStringHelper.ToStringWithCulture(item.CamelColumnName));
  166. #line default
  167. #line hidden
  168. this.Write("\", \"");
  169. #line 58 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  170. this.Write(this.ToStringHelper.ToStringWithCulture(item.Comment));
  171. #line default
  172. #line hidden
  173. this.Write("\"), \r\n");
  174. #line 59 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  175. }else{
  176. #line default
  177. #line hidden
  178. this.Write(" new ");
  179. #line 61 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  180. this.Write(this.ToStringHelper.ToStringWithCulture(inputType));
  181. #line default
  182. #line hidden
  183. this.Write("(\"");
  184. #line 61 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  185. this.Write(this.ToStringHelper.ToStringWithCulture(item.CamelColumnName));
  186. #line default
  187. #line hidden
  188. this.Write("\", \"");
  189. #line 61 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  190. this.Write(this.ToStringHelper.ToStringWithCulture(item.Comment));
  191. #line default
  192. #line hidden
  193. this.Write("\").SetNotRequired(), \r\n");
  194. #line 62 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  195. }
  196. #line default
  197. #line hidden
  198. #line 65 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  199. }
  200. #line default
  201. #line hidden
  202. this.Write(" };\r\n var modalBody = new ModalBodyViewModel().AddInputs(inputs);\r\n var " +
  203. "modal = new ModalViewModel().SetHeader(\"");
  204. #line 69 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\WebView.tt"
  205. this.Write(this.ToStringHelper.ToStringWithCulture(Model.HtmlModalTitle));
  206. #line default
  207. #line hidden
  208. this.Write(@""").SetBody(modalBody);
  209. }
  210. @section styles{
  211. }
  212. @await Html.PartialAsync(""Table/_Table"", table)
  213. @section modal{
  214. <!--Modal Start-->
  215. @await Html.PartialAsync(""Modals/_Modal"", modal)
  216. <!--Modal End-->
  217. }
  218. @section scripts
  219. {
  220. <script type=""text/javascript"">
  221. var $table;
  222. $(function () {
  223. $table = LoadTable();
  224. var funs = window.iwbfuns || { none: function () { console.log(""No type""); } };
  225. funs[""btnCreate""] = function() { BtnCreate({ data: { id: """" } }); }
  226. funs[""btnUpdate""] = function () { BtnUpdate({ disabled: """" }); };
  227. });
  228. </script>
  229. <!--格式化-->
  230. <script id=""formatter-script"" type=""text/javascript"">
  231. function TypeFormatter(v) {
  232. var name = $('#hid-type option[value=""' + v + '""]').text();
  233. switch (v) {
  234. case 0:
  235. return '<span class=""label label-danger"">' + name +'</span>';
  236. default:
  237. return '<span class=""label label-info"">' + name +'</span>';
  238. }
  239. }
  240. </script>
  241. }
  242. <section style=""display: none"">
  243. <select id=""hid-type"">
  244. <option value=""""></option>
  245. </select>
  246. @*@Html.DropDownList(""hid-type"", type)*@
  247. </section>");
  248. return this.GenerationEnvironment.ToString();
  249. }
  250. }
  251. #line default
  252. #line hidden
  253. #region Base class
  254. /// <summary>
  255. /// Base class for this transformation
  256. /// </summary>
  257. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
  258. public class WebViewBase
  259. {
  260. #region Fields
  261. private global::System.Text.StringBuilder generationEnvironmentField;
  262. private global::System.CodeDom.Compiler.CompilerErrorCollection errorsField;
  263. private global::System.Collections.Generic.List<int> indentLengthsField;
  264. private string currentIndentField = "";
  265. private bool endsWithNewline;
  266. private global::System.Collections.Generic.IDictionary<string, object> sessionField;
  267. #endregion
  268. #region Properties
  269. /// <summary>
  270. /// The string builder that generation-time code is using to assemble generated output
  271. /// </summary>
  272. protected System.Text.StringBuilder GenerationEnvironment
  273. {
  274. get
  275. {
  276. if ((this.generationEnvironmentField == null))
  277. {
  278. this.generationEnvironmentField = new global::System.Text.StringBuilder();
  279. }
  280. return this.generationEnvironmentField;
  281. }
  282. set
  283. {
  284. this.generationEnvironmentField = value;
  285. }
  286. }
  287. /// <summary>
  288. /// The error collection for the generation process
  289. /// </summary>
  290. public System.CodeDom.Compiler.CompilerErrorCollection Errors
  291. {
  292. get
  293. {
  294. if ((this.errorsField == null))
  295. {
  296. this.errorsField = new global::System.CodeDom.Compiler.CompilerErrorCollection();
  297. }
  298. return this.errorsField;
  299. }
  300. }
  301. /// <summary>
  302. /// A list of the lengths of each indent that was added with PushIndent
  303. /// </summary>
  304. private System.Collections.Generic.List<int> indentLengths
  305. {
  306. get
  307. {
  308. if ((this.indentLengthsField == null))
  309. {
  310. this.indentLengthsField = new global::System.Collections.Generic.List<int>();
  311. }
  312. return this.indentLengthsField;
  313. }
  314. }
  315. /// <summary>
  316. /// Gets the current indent we use when adding lines to the output
  317. /// </summary>
  318. public string CurrentIndent
  319. {
  320. get
  321. {
  322. return this.currentIndentField;
  323. }
  324. }
  325. /// <summary>
  326. /// Current transformation session
  327. /// </summary>
  328. public virtual global::System.Collections.Generic.IDictionary<string, object> Session
  329. {
  330. get
  331. {
  332. return this.sessionField;
  333. }
  334. set
  335. {
  336. this.sessionField = value;
  337. }
  338. }
  339. #endregion
  340. #region Transform-time helpers
  341. /// <summary>
  342. /// Write text directly into the generated output
  343. /// </summary>
  344. public void Write(string textToAppend)
  345. {
  346. if (string.IsNullOrEmpty(textToAppend))
  347. {
  348. return;
  349. }
  350. // If we're starting off, or if the previous text ended with a newline,
  351. // we have to append the current indent first.
  352. if (((this.GenerationEnvironment.Length == 0)
  353. || this.endsWithNewline))
  354. {
  355. this.GenerationEnvironment.Append(this.currentIndentField);
  356. this.endsWithNewline = false;
  357. }
  358. // Check if the current text ends with a newline
  359. if (textToAppend.EndsWith(global::System.Environment.NewLine, global::System.StringComparison.CurrentCulture))
  360. {
  361. this.endsWithNewline = true;
  362. }
  363. // This is an optimization. If the current indent is "", then we don't have to do any
  364. // of the more complex stuff further down.
  365. if ((this.currentIndentField.Length == 0))
  366. {
  367. this.GenerationEnvironment.Append(textToAppend);
  368. return;
  369. }
  370. // Everywhere there is a newline in the text, add an indent after it
  371. textToAppend = textToAppend.Replace(global::System.Environment.NewLine, (global::System.Environment.NewLine + this.currentIndentField));
  372. // If the text ends with a newline, then we should strip off the indent added at the very end
  373. // because the appropriate indent will be added when the next time Write() is called
  374. if (this.endsWithNewline)
  375. {
  376. this.GenerationEnvironment.Append(textToAppend, 0, (textToAppend.Length - this.currentIndentField.Length));
  377. }
  378. else
  379. {
  380. this.GenerationEnvironment.Append(textToAppend);
  381. }
  382. }
  383. /// <summary>
  384. /// Write text directly into the generated output
  385. /// </summary>
  386. public void WriteLine(string textToAppend)
  387. {
  388. this.Write(textToAppend);
  389. this.GenerationEnvironment.AppendLine();
  390. this.endsWithNewline = true;
  391. }
  392. /// <summary>
  393. /// Write formatted text directly into the generated output
  394. /// </summary>
  395. public void Write(string format, params object[] args)
  396. {
  397. this.Write(string.Format(global::System.Globalization.CultureInfo.CurrentCulture, format, args));
  398. }
  399. /// <summary>
  400. /// Write formatted text directly into the generated output
  401. /// </summary>
  402. public void WriteLine(string format, params object[] args)
  403. {
  404. this.WriteLine(string.Format(global::System.Globalization.CultureInfo.CurrentCulture, format, args));
  405. }
  406. /// <summary>
  407. /// Raise an error
  408. /// </summary>
  409. public void Error(string message)
  410. {
  411. System.CodeDom.Compiler.CompilerError error = new global::System.CodeDom.Compiler.CompilerError();
  412. error.ErrorText = message;
  413. this.Errors.Add(error);
  414. }
  415. /// <summary>
  416. /// Raise a warning
  417. /// </summary>
  418. public void Warning(string message)
  419. {
  420. System.CodeDom.Compiler.CompilerError error = new global::System.CodeDom.Compiler.CompilerError();
  421. error.ErrorText = message;
  422. error.IsWarning = true;
  423. this.Errors.Add(error);
  424. }
  425. /// <summary>
  426. /// Increase the indent
  427. /// </summary>
  428. public void PushIndent(string indent)
  429. {
  430. if ((indent == null))
  431. {
  432. throw new global::System.ArgumentNullException("indent");
  433. }
  434. this.currentIndentField = (this.currentIndentField + indent);
  435. this.indentLengths.Add(indent.Length);
  436. }
  437. /// <summary>
  438. /// Remove the last indent that was added with PushIndent
  439. /// </summary>
  440. public string PopIndent()
  441. {
  442. string returnValue = "";
  443. if ((this.indentLengths.Count > 0))
  444. {
  445. int indentLength = this.indentLengths[(this.indentLengths.Count - 1)];
  446. this.indentLengths.RemoveAt((this.indentLengths.Count - 1));
  447. if ((indentLength > 0))
  448. {
  449. returnValue = this.currentIndentField.Substring((this.currentIndentField.Length - indentLength));
  450. this.currentIndentField = this.currentIndentField.Remove((this.currentIndentField.Length - indentLength));
  451. }
  452. }
  453. return returnValue;
  454. }
  455. /// <summary>
  456. /// Remove any indentation
  457. /// </summary>
  458. public void ClearIndent()
  459. {
  460. this.indentLengths.Clear();
  461. this.currentIndentField = "";
  462. }
  463. #endregion
  464. #region ToString Helpers
  465. /// <summary>
  466. /// Utility class to produce culture-oriented representation of an object as a string.
  467. /// </summary>
  468. public class ToStringInstanceHelper
  469. {
  470. private System.IFormatProvider formatProviderField = global::System.Globalization.CultureInfo.InvariantCulture;
  471. /// <summary>
  472. /// Gets or sets format provider to be used by ToStringWithCulture method.
  473. /// </summary>
  474. public System.IFormatProvider FormatProvider
  475. {
  476. get
  477. {
  478. return this.formatProviderField ;
  479. }
  480. set
  481. {
  482. if ((value != null))
  483. {
  484. this.formatProviderField = value;
  485. }
  486. }
  487. }
  488. /// <summary>
  489. /// This is called from the compile/run appdomain to convert objects within an expression block to a string
  490. /// </summary>
  491. public string ToStringWithCulture(object objectToConvert)
  492. {
  493. if ((objectToConvert == null))
  494. {
  495. throw new global::System.ArgumentNullException("objectToConvert");
  496. }
  497. System.Type t = objectToConvert.GetType();
  498. System.Reflection.MethodInfo method = t.GetMethod("ToString", new System.Type[] {
  499. typeof(System.IFormatProvider)});
  500. if ((method == null))
  501. {
  502. return objectToConvert.ToString();
  503. }
  504. else
  505. {
  506. return ((string)(method.Invoke(objectToConvert, new object[] {
  507. this.formatProviderField })));
  508. }
  509. }
  510. }
  511. private ToStringInstanceHelper toStringHelperField = new ToStringInstanceHelper();
  512. /// <summary>
  513. /// Helper to produce culture-oriented representation of an object as a string
  514. /// </summary>
  515. public ToStringInstanceHelper ToStringHelper
  516. {
  517. get
  518. {
  519. return this.toStringHelperField;
  520. }
  521. }
  522. #endregion
  523. }
  524. #endregion
  525. }