tcd_x12 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1847) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +8 -0
  3. data/.gitignore +17 -0
  4. data/CHANGELOG.md +35 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +503 -0
  7. data/README.md +63 -0
  8. data/Rakefile +14 -0
  9. data/example/factory.rb +93 -0
  10. data/example/parse.rb +58 -0
  11. data/lib/x12/base.rb +187 -0
  12. data/lib/x12/composite.rb +10 -0
  13. data/lib/x12/empty.rb +14 -0
  14. data/lib/x12/field.rb +70 -0
  15. data/lib/x12/loop.rb +69 -0
  16. data/lib/x12/parser.rb +117 -0
  17. data/lib/x12/segment.rb +89 -0
  18. data/lib/x12/table.rb +21 -0
  19. data/lib/x12/version.rb +4 -0
  20. data/lib/x12/xmldefinitions.rb +147 -0
  21. data/lib/x12.rb +23 -0
  22. data/misc/270.xml +152 -0
  23. data/misc/270interchange.xml +164 -0
  24. data/misc/271.xml +125 -0
  25. data/misc/276.xml +93 -0
  26. data/misc/277.xml +95 -0
  27. data/misc/832.xml +127 -0
  28. data/misc/835.xml +84 -0
  29. data/misc/837p.xml +255 -0
  30. data/misc/850.xml +51 -0
  31. data/misc/850dsd.xml +59 -0
  32. data/misc/997.xml +55 -0
  33. data/misc/997single.xml +835 -0
  34. data/misc/999.xml +54 -0
  35. data/misc/AAA.xml +31 -0
  36. data/misc/ACD.xml +30 -0
  37. data/misc/ACK.xml +56 -0
  38. data/misc/ACS.xml +31 -0
  39. data/misc/ACT.xml +36 -0
  40. data/misc/AD1.xml +32 -0
  41. data/misc/ADI.xml +31 -0
  42. data/misc/ADJ.xml +44 -0
  43. data/misc/ADT.xml +37 -0
  44. data/misc/ADV.xml +34 -0
  45. data/misc/ADX.xml +31 -0
  46. data/misc/AEI.xml +30 -0
  47. data/misc/AES.xml +32 -0
  48. data/misc/AIN.xml +40 -0
  49. data/misc/AK1.xml +30 -0
  50. data/misc/AK2.xml +30 -0
  51. data/misc/AK3.xml +31 -0
  52. data/misc/AK4.xml +31 -0
  53. data/misc/AK5.xml +33 -0
  54. data/misc/AK9.xml +36 -0
  55. data/misc/AM1.xml +33 -0
  56. data/misc/AMT.xml +30 -0
  57. data/misc/ANI.xml +36 -0
  58. data/misc/AOC.xml +32 -0
  59. data/misc/AOI.xml +40 -0
  60. data/misc/AOL.xml +35 -0
  61. data/misc/AOR.xml +40 -0
  62. data/misc/AP1.xml +40 -0
  63. data/misc/APE.xml +32 -0
  64. data/misc/API.xml +35 -0
  65. data/misc/APR.xml +30 -0
  66. data/misc/ARC.xml +30 -0
  67. data/misc/ARS.xml +32 -0
  68. data/misc/ASI.xml +30 -0
  69. data/misc/ASL.xml +31 -0
  70. data/misc/ASM.xml +30 -0
  71. data/misc/ASO.xml +38 -0
  72. data/misc/AST.xml +38 -0
  73. data/misc/AT1.xml +28 -0
  74. data/misc/AT2.xml +39 -0
  75. data/misc/AT3.xml +34 -0
  76. data/misc/AT4.xml +28 -0
  77. data/misc/AT5.xml +33 -0
  78. data/misc/AT6.xml +30 -0
  79. data/misc/AT7.xml +34 -0
  80. data/misc/AT8.xml +34 -0
  81. data/misc/AT9.xml +35 -0
  82. data/misc/ATA.xml +30 -0
  83. data/misc/ATH.xml +32 -0
  84. data/misc/ATN.xml +33 -0
  85. data/misc/ATR.xml +37 -0
  86. data/misc/ATV.xml +37 -0
  87. data/misc/AVA.xml +29 -0
  88. data/misc/AWD.xml +31 -0
  89. data/misc/AXL.xml +35 -0
  90. data/misc/B1.xml +33 -0
  91. data/misc/B10.xml +36 -0
  92. data/misc/B11.xml +38 -0
  93. data/misc/B12.xml +30 -0
  94. data/misc/B13.xml +29 -0
  95. data/misc/B2.xml +39 -0
  96. data/misc/B2A.xml +29 -0
  97. data/misc/B3.xml +41 -0
  98. data/misc/B3A.xml +29 -0
  99. data/misc/B3B.xml +38 -0
  100. data/misc/B4.xml +40 -0
  101. data/misc/B9.xml +30 -0
  102. data/misc/B9A.xml +28 -0
  103. data/misc/BA1.xml +39 -0
  104. data/misc/BA2.xml +38 -0
  105. data/misc/BAA.xml +33 -0
  106. data/misc/BAK.xml +37 -0
  107. data/misc/BAL.xml +30 -0
  108. data/misc/BAT.xml +31 -0
  109. data/misc/BAU.xml +33 -0
  110. data/misc/BAX.xml +41 -0
  111. data/misc/BBC.xml +29 -0
  112. data/misc/BC.xml +34 -0
  113. data/misc/BCA.xml +42 -0
  114. data/misc/BCD.xml +42 -0
  115. data/misc/BCH.xml +43 -0
  116. data/misc/BCI.xml +35 -0
  117. data/misc/BCM.xml +39 -0
  118. data/misc/BCO.xml +39 -0
  119. data/misc/BCP.xml +40 -0
  120. data/misc/BCQ.xml +34 -0
  121. data/misc/BCS.xml +39 -0
  122. data/misc/BCT.xml +37 -0
  123. data/misc/BCU.xml +34 -0
  124. data/misc/BDD.xml +30 -0
  125. data/misc/BDS.xml +30 -0
  126. data/misc/BEG.xml +39 -0
  127. data/misc/BEN.xml +33 -0
  128. data/misc/BEP.xml +29 -0
  129. data/misc/BFR.xml +40 -0
  130. data/misc/BFS.xml +37 -0
  131. data/misc/BGF.xml +30 -0
  132. data/misc/BGN.xml +36 -0
  133. data/misc/BGP.xml +36 -0
  134. data/misc/BHT.xml +33 -0
  135. data/misc/BIA.xml +33 -0
  136. data/misc/BIG.xml +38 -0
  137. data/misc/BIN.xml +29 -0
  138. data/misc/BIX.xml +38 -0
  139. data/misc/BJF.xml +34 -0
  140. data/misc/BL.xml +44 -0
  141. data/misc/BLI.xml +45 -0
  142. data/misc/BLN.xml +33 -0
  143. data/misc/BLR.xml +30 -0
  144. data/misc/BLS.xml +33 -0
  145. data/misc/BMA.xml +35 -0
  146. data/misc/BMG.xml +30 -0
  147. data/misc/BMM.xml +37 -0
  148. data/misc/BMP.xml +31 -0
  149. data/misc/BMS.xml +36 -0
  150. data/misc/BNR.xml +33 -0
  151. data/misc/BNX.xml +31 -0
  152. data/misc/BOL.xml +38 -0
  153. data/misc/BOR.xml +37 -0
  154. data/misc/BOS.xml +33 -0
  155. data/misc/BOX.xml +42 -0
  156. data/misc/BPA.xml +32 -0
  157. data/misc/BPP.xml +41 -0
  158. data/misc/BPR.xml +48 -0
  159. data/misc/BPT.xml +37 -0
  160. data/misc/BQR.xml +35 -0
  161. data/misc/BQT.xml +38 -0
  162. data/misc/BR.xml +38 -0
  163. data/misc/BRA.xml +34 -0
  164. data/misc/BRC.xml +32 -0
  165. data/misc/BRR.xml +33 -0
  166. data/misc/BSC.xml +31 -0
  167. data/misc/BSD.xml +36 -0
  168. data/misc/BSF.xml +30 -0
  169. data/misc/BSI.xml +36 -0
  170. data/misc/BSN.xml +34 -0
  171. data/misc/BSR.xml +39 -0
  172. data/misc/BSS.xml +38 -0
  173. data/misc/BT1.xml +38 -0
  174. data/misc/BTA.xml +31 -0
  175. data/misc/BTC.xml +39 -0
  176. data/misc/BTI.xml +41 -0
  177. data/misc/BTP.xml +37 -0
  178. data/misc/BTR.xml +35 -0
  179. data/misc/BTS.xml +42 -0
  180. data/misc/BUY.xml +32 -0
  181. data/misc/BVA.xml +52 -0
  182. data/misc/BVB.xml +34 -0
  183. data/misc/BVP.xml +38 -0
  184. data/misc/BVS.xml +39 -0
  185. data/misc/BW.xml +30 -0
  186. data/misc/BX.xml +41 -0
  187. data/misc/C001.xml +43 -0
  188. data/misc/C002.xml +33 -0
  189. data/misc/C003.xml +35 -0
  190. data/misc/C004.xml +32 -0
  191. data/misc/C005.xml +33 -0
  192. data/misc/C006.xml +33 -0
  193. data/misc/C007.xml +38 -0
  194. data/misc/C022.xml +37 -0
  195. data/misc/C023.xml +31 -0
  196. data/misc/C024.xml +33 -0
  197. data/misc/C028.xml +48 -0
  198. data/misc/C030.xml +31 -0
  199. data/misc/C033.xml +30 -0
  200. data/misc/C034.xml +30 -0
  201. data/misc/C035.xml +31 -0
  202. data/misc/C036.xml +33 -0
  203. data/misc/C037.xml +30 -0
  204. data/misc/C040.xml +34 -0
  205. data/misc/C042.xml +30 -0
  206. data/misc/C043.xml +32 -0
  207. data/misc/C045.xml +33 -0
  208. data/misc/C046.xml +33 -0
  209. data/misc/C047.xml +33 -0
  210. data/misc/C048.xml +32 -0
  211. data/misc/C050.xml +40 -0
  212. data/misc/C052.xml +32 -0
  213. data/misc/C053.xml +33 -0
  214. data/misc/C055.xml +36 -0
  215. data/misc/C056.xml +31 -0
  216. data/misc/C057.xml +29 -0
  217. data/misc/C2.xml +34 -0
  218. data/misc/C3.xml +31 -0
  219. data/misc/C4.xml +29 -0
  220. data/misc/C8.xml +31 -0
  221. data/misc/C8C.xml +30 -0
  222. data/misc/C998.xml +29 -0
  223. data/misc/C999.xml +29 -0
  224. data/misc/CA1.xml +29 -0
  225. data/misc/CAD.xml +36 -0
  226. data/misc/CAI.xml +34 -0
  227. data/misc/CAL.xml +43 -0
  228. data/misc/CAS.xml +46 -0
  229. data/misc/CAT.xml +34 -0
  230. data/misc/CB1.xml +29 -0
  231. data/misc/CBS.xml +30 -0
  232. data/misc/CCI.xml +37 -0
  233. data/misc/CD.xml +38 -0
  234. data/misc/CD1.xml +58 -0
  235. data/misc/CD2.xml +35 -0
  236. data/misc/CD3.xml +41 -0
  237. data/misc/CDA.xml +49 -0
  238. data/misc/CDD.xml +41 -0
  239. data/misc/CDI.xml +38 -0
  240. data/misc/CDS.xml +38 -0
  241. data/misc/CED.xml +32 -0
  242. data/misc/CF1.xml +33 -0
  243. data/misc/CF2.xml +37 -0
  244. data/misc/CFI.xml +34 -0
  245. data/misc/CFT.xml +36 -0
  246. data/misc/CGS.xml +32 -0
  247. data/misc/CHB.xml +36 -0
  248. data/misc/CHR.xml +30 -0
  249. data/misc/CI.xml +41 -0
  250. data/misc/CIC.xml +32 -0
  251. data/misc/CID.xml +34 -0
  252. data/misc/CIV.xml +45 -0
  253. data/misc/CL1.xml +31 -0
  254. data/misc/CLD.xml +32 -0
  255. data/misc/CLI.xml +33 -0
  256. data/misc/CLM.xml +48 -0
  257. data/misc/CLP.xml +41 -0
  258. data/misc/CLR.xml +31 -0
  259. data/misc/CM.xml +44 -0
  260. data/misc/CMA.xml +38 -0
  261. data/misc/CMC.xml +29 -0
  262. data/misc/CN1.xml +33 -0
  263. data/misc/COB.xml +31 -0
  264. data/misc/COM.xml +30 -0
  265. data/misc/CON_.xml +30 -0
  266. data/misc/CPR.xml +32 -0
  267. data/misc/CQ.xml +37 -0
  268. data/misc/CR1.xml +37 -0
  269. data/misc/CR2.xml +39 -0
  270. data/misc/CR3.xml +32 -0
  271. data/misc/CR4.xml +56 -0
  272. data/misc/CR5.xml +45 -0
  273. data/misc/CR6.xml +48 -0
  274. data/misc/CR7.xml +30 -0
  275. data/misc/CR8.xml +36 -0
  276. data/misc/CRC.xml +34 -0
  277. data/misc/CRD.xml +31 -0
  278. data/misc/CRI.xml +37 -0
  279. data/misc/CRO.xml +33 -0
  280. data/misc/CRS.xml +47 -0
  281. data/misc/CRT.xml +37 -0
  282. data/misc/CRV.xml +34 -0
  283. data/misc/CS.xml +45 -0
  284. data/misc/CSB.xml +29 -0
  285. data/misc/CSC.xml +36 -0
  286. data/misc/CSD.xml +36 -0
  287. data/misc/CSE.xml +39 -0
  288. data/misc/CSF.xml +30 -0
  289. data/misc/CSH.xml +37 -0
  290. data/misc/CSI.xml +31 -0
  291. data/misc/CSM.xml +30 -0
  292. data/misc/CSS.xml +34 -0
  293. data/misc/CST.xml +31 -0
  294. data/misc/CSU.xml +37 -0
  295. data/misc/CT.xml +30 -0
  296. data/misc/CTB.xml +34 -0
  297. data/misc/CTC.xml +37 -0
  298. data/misc/CTP.xml +38 -0
  299. data/misc/CTT.xml +34 -0
  300. data/misc/CTX.xml +33 -0
  301. data/misc/CUR.xml +48 -0
  302. data/misc/CV.xml +41 -0
  303. data/misc/CYC.xml +33 -0
  304. data/misc/D9.xml +39 -0
  305. data/misc/DAD.xml +42 -0
  306. data/misc/DAI.xml +30 -0
  307. data/misc/DAM.xml +43 -0
  308. data/misc/DB.xml +33 -0
  309. data/misc/DD.xml +37 -0
  310. data/misc/DDI.xml +28 -0
  311. data/misc/DED.xml +36 -0
  312. data/misc/DEF.xml +33 -0
  313. data/misc/DEG.xml +32 -0
  314. data/misc/DEL.xml +32 -0
  315. data/misc/DEP.xml +35 -0
  316. data/misc/DEX.xml +33 -0
  317. data/misc/DFI.xml +31 -0
  318. data/misc/DH.xml +30 -0
  319. data/misc/DIS.xml +33 -0
  320. data/misc/DK.xml +37 -0
  321. data/misc/DL.xml +38 -0
  322. data/misc/DLV.xml +32 -0
  323. data/misc/DM.xml +48 -0
  324. data/misc/DMA.xml +36 -0
  325. data/misc/DMG.xml +38 -0
  326. data/misc/DMI.xml +39 -0
  327. data/misc/DN.xml +31 -0
  328. data/misc/DN1.xml +31 -0
  329. data/misc/DN2.xml +32 -0
  330. data/misc/DOS.xml +34 -0
  331. data/misc/DP.xml +44 -0
  332. data/misc/DPN.xml +31 -0
  333. data/misc/DR.xml +33 -0
  334. data/misc/DRT.xml +33 -0
  335. data/misc/DSB.xml +35 -0
  336. data/misc/DTM.xml +33 -0
  337. data/misc/DTP.xml +30 -0
  338. data/misc/DVI.xml +41 -0
  339. data/misc/E01.xml +31 -0
  340. data/misc/E03.xml +34 -0
  341. data/misc/E1.xml +30 -0
  342. data/misc/E10.xml +32 -0
  343. data/misc/E13.xml +37 -0
  344. data/misc/E20.xml +31 -0
  345. data/misc/E22.xml +39 -0
  346. data/misc/E24.xml +34 -0
  347. data/misc/E30.xml +36 -0
  348. data/misc/E34.xml +31 -0
  349. data/misc/E4.xml +31 -0
  350. data/misc/E40.xml +31 -0
  351. data/misc/E41.xml +31 -0
  352. data/misc/E5.xml +31 -0
  353. data/misc/E6.xml +36 -0
  354. data/misc/E8.xml +29 -0
  355. data/misc/EA.xml +30 -0
  356. data/misc/EB.xml +40 -0
  357. data/misc/EC.xml +33 -0
  358. data/misc/ED.xml +35 -0
  359. data/misc/EDF.xml +38 -0
  360. data/misc/EFI.xml +43 -0
  361. data/misc/EI.xml +33 -0
  362. data/misc/EIA.xml +33 -0
  363. data/misc/ELV.xml +33 -0
  364. data/misc/EM.xml +34 -0
  365. data/misc/EMP.xml +37 -0
  366. data/misc/EMS.xml +42 -0
  367. data/misc/EMT.xml +35 -0
  368. data/misc/ENE.xml +32 -0
  369. data/misc/ENM.xml +35 -0
  370. data/misc/ENR.xml +47 -0
  371. data/misc/ENT.xml +36 -0
  372. data/misc/EQ.xml +31 -0
  373. data/misc/ER.xml +38 -0
  374. data/misc/ERI.xml +36 -0
  375. data/misc/ERP.xml +32 -0
  376. data/misc/ES.xml +33 -0
  377. data/misc/ESI.xml +36 -0
  378. data/misc/ETD.xml +32 -0
  379. data/misc/EXI.xml +35 -0
  380. data/misc/F01.xml +36 -0
  381. data/misc/F02.xml +36 -0
  382. data/misc/F04.xml +37 -0
  383. data/misc/F05.xml +30 -0
  384. data/misc/F07.xml +49 -0
  385. data/misc/F09.xml +39 -0
  386. data/misc/F10.xml +31 -0
  387. data/misc/F11.xml +37 -0
  388. data/misc/F12.xml +35 -0
  389. data/misc/F13.xml +33 -0
  390. data/misc/F14.xml +29 -0
  391. data/misc/F6X.xml +35 -0
  392. data/misc/F9.xml +39 -0
  393. data/misc/FA1.xml +30 -0
  394. data/misc/FA2.xml +29 -0
  395. data/misc/FAA.xml +42 -0
  396. data/misc/FAC.xml +33 -0
  397. data/misc/FBB.xml +34 -0
  398. data/misc/FC.xml +32 -0
  399. data/misc/FCL.xml +32 -0
  400. data/misc/FDA.xml +36 -0
  401. data/misc/FGS.xml +30 -0
  402. data/misc/FH.xml +31 -0
  403. data/misc/FIR.xml +39 -0
  404. data/misc/FIS.xml +31 -0
  405. data/misc/FK.xml +41 -0
  406. data/misc/FNA.xml +33 -0
  407. data/misc/FOB.xml +36 -0
  408. data/misc/FOS.xml +34 -0
  409. data/misc/FPT.xml +29 -0
  410. data/misc/FRM.xml +32 -0
  411. data/misc/FSA.xml +36 -0
  412. data/misc/FST.xml +40 -0
  413. data/misc/FTH.xml +31 -0
  414. data/misc/G01.xml +35 -0
  415. data/misc/G05.xml +35 -0
  416. data/misc/G07.xml +33 -0
  417. data/misc/G08.xml +31 -0
  418. data/misc/G1.xml +30 -0
  419. data/misc/G11.xml +37 -0
  420. data/misc/G12.xml +34 -0
  421. data/misc/G13.xml +33 -0
  422. data/misc/G14.xml +29 -0
  423. data/misc/G15.xml +31 -0
  424. data/misc/G17.xml +41 -0
  425. data/misc/G18.xml +31 -0
  426. data/misc/G19.xml +36 -0
  427. data/misc/G2.xml +29 -0
  428. data/misc/G20.xml +36 -0
  429. data/misc/G21.xml +37 -0
  430. data/misc/G22.xml +32 -0
  431. data/misc/G23.xml +43 -0
  432. data/misc/G24.xml +28 -0
  433. data/misc/G25.xml +30 -0
  434. data/misc/G26.xml +33 -0
  435. data/misc/G27.xml +33 -0
  436. data/misc/G28.xml +33 -0
  437. data/misc/G29.xml +30 -0
  438. data/misc/G3.xml +33 -0
  439. data/misc/G30.xml +29 -0
  440. data/misc/G31.xml +38 -0
  441. data/misc/G32.xml +32 -0
  442. data/misc/G33.xml +28 -0
  443. data/misc/G35.xml +30 -0
  444. data/misc/G36.xml +31 -0
  445. data/misc/G37.xml +30 -0
  446. data/misc/G38.xml +30 -0
  447. data/misc/G39.xml +56 -0
  448. data/misc/G4.xml +33 -0
  449. data/misc/G40.xml +36 -0
  450. data/misc/G42.xml +30 -0
  451. data/misc/G43.xml +31 -0
  452. data/misc/G45.xml +44 -0
  453. data/misc/G46.xml +39 -0
  454. data/misc/G47.xml +29 -0
  455. data/misc/G48.xml +36 -0
  456. data/misc/G49.xml +30 -0
  457. data/misc/G5.xml +44 -0
  458. data/misc/G50.xml +34 -0
  459. data/misc/G51.xml +35 -0
  460. data/misc/G53.xml +28 -0
  461. data/misc/G54.xml +33 -0
  462. data/misc/G55.xml +60 -0
  463. data/misc/G61.xml +32 -0
  464. data/misc/G62.xml +32 -0
  465. data/misc/G63.xml +31 -0
  466. data/misc/G66.xml +34 -0
  467. data/misc/G68.xml +42 -0
  468. data/misc/G69.xml +28 -0
  469. data/misc/G70.xml +37 -0
  470. data/misc/G72.xml +38 -0
  471. data/misc/G73.xml +28 -0
  472. data/misc/G76.xml +37 -0
  473. data/misc/G82.xml +39 -0
  474. data/misc/G83.xml +40 -0
  475. data/misc/G84.xml +30 -0
  476. data/misc/G85.xml +28 -0
  477. data/misc/G86.xml +29 -0
  478. data/misc/G87.xml +33 -0
  479. data/misc/G88.xml +32 -0
  480. data/misc/G89.xml +37 -0
  481. data/misc/G91.xml +29 -0
  482. data/misc/G92.xml +30 -0
  483. data/misc/G93.xml +35 -0
  484. data/misc/G94.xml +29 -0
  485. data/misc/G95.xml +34 -0
  486. data/misc/GA.xml +45 -0
  487. data/misc/GDP.xml +34 -0
  488. data/misc/GE.xml +29 -0
  489. data/misc/GF.xml +36 -0
  490. data/misc/GH.xml +31 -0
  491. data/misc/GID.xml +30 -0
  492. data/misc/GR.xml +49 -0
  493. data/misc/GR2.xml +39 -0
  494. data/misc/GR4.xml +38 -0
  495. data/misc/GR5.xml +32 -0
  496. data/misc/GRI.xml +38 -0
  497. data/misc/GRP.xml +31 -0
  498. data/misc/GS.xml +35 -0
  499. data/misc/GY.xml +42 -0
  500. data/misc/H1.xml +36 -0
  501. data/misc/H2.xml +29 -0
  502. data/misc/H3.xml +32 -0
  503. data/misc/H5.xml +30 -0
  504. data/misc/H6.xml +34 -0
  505. data/misc/HAD.xml +33 -0
  506. data/misc/HC.xml +34 -0
  507. data/misc/HCP.xml +42 -0
  508. data/misc/HCR.xml +31 -0
  509. data/misc/HD.xml +38 -0
  510. data/misc/HI.xml +39 -0
  511. data/misc/HL.xml +31 -0
  512. data/misc/HLH.xml +34 -0
  513. data/misc/HPL.xml +33 -0
  514. data/misc/HS.xml +32 -0
  515. data/misc/HSD.xml +35 -0
  516. data/misc/IC.xml +36 -0
  517. data/misc/ICH.xml +39 -0
  518. data/misc/ICM.xml +33 -0
  519. data/misc/ID.xml +30 -0
  520. data/misc/ID1.xml +61 -0
  521. data/misc/ID2.xml +35 -0
  522. data/misc/ID3.xml +48 -0
  523. data/misc/ID4.xml +36 -0
  524. data/misc/IDB.xml +32 -0
  525. data/misc/IDC.xml +31 -0
  526. data/misc/IEA.xml +29 -0
  527. data/misc/IGI.xml +33 -0
  528. data/misc/III.xml +36 -0
  529. data/misc/IIS.xml +41 -0
  530. data/misc/IK3.xml +30 -0
  531. data/misc/IK4.xml +30 -0
  532. data/misc/IK5.xml +32 -0
  533. data/misc/IM.xml +30 -0
  534. data/misc/IMA.xml +31 -0
  535. data/misc/IMM.xml +33 -0
  536. data/misc/IMP.xml +29 -0
  537. data/misc/IN1.xml +34 -0
  538. data/misc/IN2.xml +30 -0
  539. data/misc/INC.xml +32 -0
  540. data/misc/IND.xml +39 -0
  541. data/misc/INI.xml +30 -0
  542. data/misc/INQ.xml +29 -0
  543. data/misc/INR.xml +30 -0
  544. data/misc/INS.xml +44 -0
  545. data/misc/INT.xml +33 -0
  546. data/misc/INV.xml +34 -0
  547. data/misc/INX.xml +29 -0
  548. data/misc/IRA.xml +30 -0
  549. data/misc/IRP.xml +34 -0
  550. data/misc/IS1.xml +34 -0
  551. data/misc/IS2.xml +44 -0
  552. data/misc/ISA.xml +43 -0
  553. data/misc/ISC.xml +37 -0
  554. data/misc/ISD.xml +31 -0
  555. data/misc/ISI.xml +33 -0
  556. data/misc/ISR.xml +30 -0
  557. data/misc/ISS.xml +35 -0
  558. data/misc/IT1.xml +52 -0
  559. data/misc/IT3.xml +32 -0
  560. data/misc/IT8.xml +54 -0
  561. data/misc/ITA.xml +44 -0
  562. data/misc/ITC.xml +39 -0
  563. data/misc/ITD.xml +42 -0
  564. data/misc/IV1.xml +32 -0
  565. data/misc/JCT.xml +36 -0
  566. data/misc/JID.xml +33 -0
  567. data/misc/JIL.xml +34 -0
  568. data/misc/JIT.xml +29 -0
  569. data/misc/JL.xml +31 -0
  570. data/misc/JS.xml +31 -0
  571. data/misc/K1.xml +29 -0
  572. data/misc/K2.xml +28 -0
  573. data/misc/K3.xml +30 -0
  574. data/misc/L0.xml +42 -0
  575. data/misc/L1.xml +49 -0
  576. data/misc/L10.xml +30 -0
  577. data/misc/L11.xml +32 -0
  578. data/misc/L12.xml +29 -0
  579. data/misc/L13.xml +43 -0
  580. data/misc/L1A.xml +29 -0
  581. data/misc/L3.xml +42 -0
  582. data/misc/L4.xml +33 -0
  583. data/misc/L5.xml +37 -0
  584. data/misc/L7.xml +43 -0
  585. data/misc/L8.xml +38 -0
  586. data/misc/L9.xml +29 -0
  587. data/misc/LAD.xml +41 -0
  588. data/misc/LC.xml +34 -0
  589. data/misc/LC1.xml +39 -0
  590. data/misc/LCD.xml +33 -0
  591. data/misc/LCT.xml +39 -0
  592. data/misc/LDT.xml +31 -0
  593. data/misc/LE.xml +28 -0
  594. data/misc/LEP.xml +31 -0
  595. data/misc/LEQ.xml +36 -0
  596. data/misc/LET.xml +31 -0
  597. data/misc/LFG.xml +33 -0
  598. data/misc/LFH.xml +34 -0
  599. data/misc/LFI.xml +35 -0
  600. data/misc/LH.xml +33 -0
  601. data/misc/LH1.xml +38 -0
  602. data/misc/LH2.xml +40 -0
  603. data/misc/LH3.xml +31 -0
  604. data/misc/LH4.xml +39 -0
  605. data/misc/LH6.xml +31 -0
  606. data/misc/LHE.xml +32 -0
  607. data/misc/LHR.xml +30 -0
  608. data/misc/LHT.xml +30 -0
  609. data/misc/LIC.xml +35 -0
  610. data/misc/LID.xml +36 -0
  611. data/misc/LIE.xml +31 -0
  612. data/misc/LIN.xml +58 -0
  613. data/misc/LM.xml +29 -0
  614. data/misc/LN.xml +38 -0
  615. data/misc/LN1.xml +50 -0
  616. data/misc/LN2.xml +39 -0
  617. data/misc/LOC.xml +51 -0
  618. data/misc/LOD.xml +33 -0
  619. data/misc/LP.xml +34 -0
  620. data/misc/LQ.xml +29 -0
  621. data/misc/LRQ.xml +48 -0
  622. data/misc/LS.xml +28 -0
  623. data/misc/LS1.xml +34 -0
  624. data/misc/LT.xml +31 -0
  625. data/misc/LTE.xml +31 -0
  626. data/misc/LTR.xml +39 -0
  627. data/misc/LUC.xml +31 -0
  628. data/misc/LUI.xml +32 -0
  629. data/misc/LV.xml +29 -0
  630. data/misc/LX.xml +28 -0
  631. data/misc/M0.xml +31 -0
  632. data/misc/M1.xml +39 -0
  633. data/misc/M10.xml +41 -0
  634. data/misc/M11.xml +46 -0
  635. data/misc/M12.xml +38 -0
  636. data/misc/M13.xml +39 -0
  637. data/misc/M14.xml +38 -0
  638. data/misc/M15.xml +43 -0
  639. data/misc/M2.xml +35 -0
  640. data/misc/M20.xml +36 -0
  641. data/misc/M21.xml +42 -0
  642. data/misc/M3.xml +31 -0
  643. data/misc/M7.xml +32 -0
  644. data/misc/M7A.xml +33 -0
  645. data/misc/MAN.xml +33 -0
  646. data/misc/MBL.xml +32 -0
  647. data/misc/MC.xml +32 -0
  648. data/misc/MCD.xml +31 -0
  649. data/misc/MCT.xml +35 -0
  650. data/misc/MEA.xml +39 -0
  651. data/misc/MI.xml +32 -0
  652. data/misc/MI1.xml +30 -0
  653. data/misc/MIA.xml +51 -0
  654. data/misc/MIC.xml +45 -0
  655. data/misc/MIN.xml +43 -0
  656. data/misc/MIR.xml +39 -0
  657. data/misc/MIS.xml +32 -0
  658. data/misc/MIT.xml +31 -0
  659. data/misc/MKS.xml +30 -0
  660. data/misc/MLA.xml +35 -0
  661. data/misc/MLS.xml +31 -0
  662. data/misc/MNC.xml +44 -0
  663. data/misc/MOA.xml +36 -0
  664. data/misc/MPI.xml +34 -0
  665. data/misc/MPP.xml +35 -0
  666. data/misc/MRC.xml +36 -0
  667. data/misc/MS.xml +33 -0
  668. data/misc/MS1.xml +35 -0
  669. data/misc/MS2.xml +31 -0
  670. data/misc/MS3.xml +32 -0
  671. data/misc/MS4.xml +31 -0
  672. data/misc/MS5.xml +32 -0
  673. data/misc/MS6.xml +31 -0
  674. data/misc/MSG.xml +30 -0
  675. data/misc/MSI.xml +29 -0
  676. data/misc/MSS.xml +34 -0
  677. data/misc/MTX.xml +33 -0
  678. data/misc/N1.xml +33 -0
  679. data/misc/N10.xml +40 -0
  680. data/misc/N11.xml +30 -0
  681. data/misc/N12.xml +29 -0
  682. data/misc/N2.xml +29 -0
  683. data/misc/N3.xml +29 -0
  684. data/misc/N4.xml +34 -0
  685. data/misc/N5.xml +36 -0
  686. data/misc/N7.xml +51 -0
  687. data/misc/N7A.xml +36 -0
  688. data/misc/N7B.xml +33 -0
  689. data/misc/N8.xml +38 -0
  690. data/misc/N8A.xml +37 -0
  691. data/misc/N9.xml +34 -0
  692. data/misc/NA.xml +39 -0
  693. data/misc/NCA.xml +32 -0
  694. data/misc/NCD.xml +34 -0
  695. data/misc/NM1.xml +38 -0
  696. data/misc/NTE.xml +29 -0
  697. data/misc/NX1.xml +32 -0
  698. data/misc/NX2.xml +30 -0
  699. data/misc/OBI.xml +33 -0
  700. data/misc/OD.xml +31 -0
  701. data/misc/OI.xml +33 -0
  702. data/misc/OID.xml +38 -0
  703. data/misc/OOI.xml +31 -0
  704. data/misc/OPS.xml +33 -0
  705. data/misc/OPX.xml +32 -0
  706. data/misc/OQS.xml +29 -0
  707. data/misc/ORI.xml +28 -0
  708. data/misc/OTI.xml +44 -0
  709. data/misc/P1.xml +34 -0
  710. data/misc/P2.xml +30 -0
  711. data/misc/P4.xml +32 -0
  712. data/misc/P5.xml +30 -0
  713. data/misc/PAD.xml +32 -0
  714. data/misc/PAI.xml +32 -0
  715. data/misc/PAL.xml +44 -0
  716. data/misc/PAM.xml +42 -0
  717. data/misc/PAS.xml +37 -0
  718. data/misc/PAT.xml +36 -0
  719. data/misc/PBI.xml +35 -0
  720. data/misc/PCL.xml +34 -0
  721. data/misc/PCR.xml +29 -0
  722. data/misc/PCS.xml +38 -0
  723. data/misc/PCT.xml +29 -0
  724. data/misc/PD.xml +37 -0
  725. data/misc/PDD.xml +32 -0
  726. data/misc/PDE.xml +31 -0
  727. data/misc/PDI.xml +31 -0
  728. data/misc/PDL.xml +39 -0
  729. data/misc/PDP.xml +30 -0
  730. data/misc/PDR.xml +31 -0
  731. data/misc/PDS.xml +30 -0
  732. data/misc/PEN.xml +36 -0
  733. data/misc/PER.xml +36 -0
  734. data/misc/PEX.xml +35 -0
  735. data/misc/PI.xml +42 -0
  736. data/misc/PID.xml +36 -0
  737. data/misc/PIN.xml +34 -0
  738. data/misc/PKD.xml +32 -0
  739. data/misc/PKG.xml +33 -0
  740. data/misc/PKL.xml +40 -0
  741. data/misc/PL.xml +33 -0
  742. data/misc/PLA.xml +32 -0
  743. data/misc/PLB.xml +41 -0
  744. data/misc/PLC.xml +29 -0
  745. data/misc/PLD.xml +31 -0
  746. data/misc/PLI.xml +36 -0
  747. data/misc/PM.xml +33 -0
  748. data/misc/PO1.xml +52 -0
  749. data/misc/PO3.xml +35 -0
  750. data/misc/PO4.xml +45 -0
  751. data/misc/POC.xml +54 -0
  752. data/misc/POD.xml +30 -0
  753. data/misc/PPA.xml +33 -0
  754. data/misc/PPD.xml +40 -0
  755. data/misc/PPL.xml +32 -0
  756. data/misc/PPY.xml +35 -0
  757. data/misc/PR.xml +36 -0
  758. data/misc/PR1.xml +40 -0
  759. data/misc/PR2.xml +36 -0
  760. data/misc/PRC.xml +39 -0
  761. data/misc/PRD.xml +38 -0
  762. data/misc/PRF.xml +34 -0
  763. data/misc/PRI.xml +41 -0
  764. data/misc/PRJ.xml +31 -0
  765. data/misc/PRM.xml +40 -0
  766. data/misc/PRR.xml +38 -0
  767. data/misc/PRS.xml +29 -0
  768. data/misc/PRT.xml +31 -0
  769. data/misc/PRV.xml +33 -0
  770. data/misc/PS.xml +41 -0
  771. data/misc/PS1.xml +30 -0
  772. data/misc/PSA.xml +32 -0
  773. data/misc/PSC.xml +52 -0
  774. data/misc/PSD.xml +36 -0
  775. data/misc/PT.xml +38 -0
  776. data/misc/PTD.xml +33 -0
  777. data/misc/PTF.xml +34 -0
  778. data/misc/PTS.xml +38 -0
  779. data/misc/PUN.xml +32 -0
  780. data/misc/PWK.xml +36 -0
  781. data/misc/PYD.xml +32 -0
  782. data/misc/PYM.xml +34 -0
  783. data/misc/PYT.xml +35 -0
  784. data/misc/Q2.xml +43 -0
  785. data/misc/Q3.xml +29 -0
  786. data/misc/Q5.xml +45 -0
  787. data/misc/Q7.xml +30 -0
  788. data/misc/Q8.xml +37 -0
  789. data/misc/QTY.xml +31 -0
  790. data/misc/R1.xml +40 -0
  791. data/misc/R11.xml +34 -0
  792. data/misc/R12.xml +37 -0
  793. data/misc/R13.xml +39 -0
  794. data/misc/R2.xml +40 -0
  795. data/misc/R2A.xml +37 -0
  796. data/misc/R2B.xml +30 -0
  797. data/misc/R2C.xml +31 -0
  798. data/misc/R2D.xml +29 -0
  799. data/misc/R3.xml +39 -0
  800. data/misc/R4.xml +35 -0
  801. data/misc/R9.xml +36 -0
  802. data/misc/RA.xml +37 -0
  803. data/misc/RAB.xml +37 -0
  804. data/misc/RAP.xml +34 -0
  805. data/misc/RB.xml +35 -0
  806. data/misc/RC.xml +36 -0
  807. data/misc/RCD.xml +48 -0
  808. data/misc/RCR.xml +29 -0
  809. data/misc/RD.xml +31 -0
  810. data/misc/RDD.xml +32 -0
  811. data/misc/RDI.xml +32 -0
  812. data/misc/RDM.xml +32 -0
  813. data/misc/RDR.xml +32 -0
  814. data/misc/RDT.xml +33 -0
  815. data/misc/REA.xml +41 -0
  816. data/misc/REC.xml +40 -0
  817. data/misc/RED.xml +33 -0
  818. data/misc/REF.xml +31 -0
  819. data/misc/REL.xml +29 -0
  820. data/misc/REN.xml +34 -0
  821. data/misc/REP.xml +47 -0
  822. data/misc/REQ.xml +29 -0
  823. data/misc/RES.xml +34 -0
  824. data/misc/RET.xml +32 -0
  825. data/misc/RH.xml +30 -0
  826. data/misc/RIC.xml +45 -0
  827. data/misc/RLD.xml +31 -0
  828. data/misc/RLT.xml +39 -0
  829. data/misc/RMR.xml +35 -0
  830. data/misc/RMT.xml +37 -0
  831. data/misc/RO.xml +36 -0
  832. data/misc/RP.xml +36 -0
  833. data/misc/RPA.xml +32 -0
  834. data/misc/RQS.xml +32 -0
  835. data/misc/RRA.xml +29 -0
  836. data/misc/RS.xml +33 -0
  837. data/misc/RSC.xml +31 -0
  838. data/misc/RSD.xml +30 -0
  839. data/misc/RST.xml +29 -0
  840. data/misc/RT.xml +39 -0
  841. data/misc/RT1.xml +35 -0
  842. data/misc/RTE.xml +32 -0
  843. data/misc/RTT.xml +29 -0
  844. data/misc/RU1.xml +36 -0
  845. data/misc/RU2.xml +35 -0
  846. data/misc/RU3.xml +56 -0
  847. data/misc/RYL.xml +31 -0
  848. data/misc/S1.xml +33 -0
  849. data/misc/S2.xml +30 -0
  850. data/misc/S4A.xml +38 -0
  851. data/misc/S5.xml +38 -0
  852. data/misc/S9.xml +35 -0
  853. data/misc/SA.xml +32 -0
  854. data/misc/SAC.xml +43 -0
  855. data/misc/SAD.xml +34 -0
  856. data/misc/SAL.xml +34 -0
  857. data/misc/SB.xml +28 -0
  858. data/misc/SBR.xml +36 -0
  859. data/misc/SBT.xml +30 -0
  860. data/misc/SC.xml +29 -0
  861. data/misc/SCA.xml +34 -0
  862. data/misc/SCD.xml +34 -0
  863. data/misc/SCH.xml +39 -0
  864. data/misc/SCL.xml +37 -0
  865. data/misc/SCM.xml +31 -0
  866. data/misc/SCN.xml +32 -0
  867. data/misc/SCP.xml +31 -0
  868. data/misc/SCR.xml +51 -0
  869. data/misc/SCS.xml +29 -0
  870. data/misc/SCT.xml +38 -0
  871. data/misc/SD1.xml +35 -0
  872. data/misc/SDP.xml +35 -0
  873. data/misc/SDQ.xml +50 -0
  874. data/misc/SE.xml +29 -0
  875. data/misc/SER.xml +38 -0
  876. data/misc/SES.xml +41 -0
  877. data/misc/SFC.xml +29 -0
  878. data/misc/SG.xml +33 -0
  879. data/misc/SHD.xml +41 -0
  880. data/misc/SHI.xml +32 -0
  881. data/misc/SHP.xml +34 -0
  882. data/misc/SHR.xml +29 -0
  883. data/misc/SI.xml +48 -0
  884. data/misc/SID.xml +33 -0
  885. data/misc/SII.xml +34 -0
  886. data/misc/SIN.xml +33 -0
  887. data/misc/SL1.xml +36 -0
  888. data/misc/SLA.xml +35 -0
  889. data/misc/SLI.xml +49 -0
  890. data/misc/SLN.xml +55 -0
  891. data/misc/SMA.xml +32 -0
  892. data/misc/SMB.xml +36 -0
  893. data/misc/SMD.xml +30 -0
  894. data/misc/SMO.xml +34 -0
  895. data/misc/SMR.xml +31 -0
  896. data/misc/SMS.xml +40 -0
  897. data/misc/SN1.xml +35 -0
  898. data/misc/SOI.xml +32 -0
  899. data/misc/SOM.xml +40 -0
  900. data/misc/SP.xml +32 -0
  901. data/misc/SPA.xml +38 -0
  902. data/misc/SPE.xml +31 -0
  903. data/misc/SPI.xml +42 -0
  904. data/misc/SPK.xml +32 -0
  905. data/misc/SPR.xml +36 -0
  906. data/misc/SPS.xml +33 -0
  907. data/misc/SPY.xml +30 -0
  908. data/misc/SR.xml +38 -0
  909. data/misc/SRA.xml +29 -0
  910. data/misc/SRD.xml +47 -0
  911. data/misc/SRE.xml +29 -0
  912. data/misc/SRM.xml +43 -0
  913. data/misc/SRT.xml +40 -0
  914. data/misc/SS.xml +36 -0
  915. data/misc/SSC.xml +35 -0
  916. data/misc/SSD.xml +31 -0
  917. data/misc/SSE.xml +32 -0
  918. data/misc/SSS.xml +36 -0
  919. data/misc/SST.xml +36 -0
  920. data/misc/ST.xml +30 -0
  921. data/misc/STA.xml +35 -0
  922. data/misc/STC.xml +39 -0
  923. data/misc/STP.xml +36 -0
  924. data/misc/STS.xml +32 -0
  925. data/misc/SUM.xml +45 -0
  926. data/misc/SUP.xml +31 -0
  927. data/misc/SV.xml +31 -0
  928. data/misc/SV1.xml +48 -0
  929. data/misc/SV2.xml +37 -0
  930. data/misc/SV3.xml +38 -0
  931. data/misc/SV4.xml +45 -0
  932. data/misc/SV5.xml +34 -0
  933. data/misc/SV6.xml +34 -0
  934. data/misc/SV7.xml +33 -0
  935. data/misc/SVA.xml +30 -0
  936. data/misc/SVC.xml +34 -0
  937. data/misc/SVD.xml +33 -0
  938. data/misc/SW.xml +36 -0
  939. data/misc/T1.xml +36 -0
  940. data/misc/T1002.xml +30 -0
  941. data/misc/T1004.xml +305 -0
  942. data/misc/T1005.xml +107 -0
  943. data/misc/T1006.xml +35 -0
  944. data/misc/T1007.xml +31 -0
  945. data/misc/T1008.xml +58 -0
  946. data/misc/T1009.xml +116 -0
  947. data/misc/T1012.xml +53 -0
  948. data/misc/T1013.xml +113 -0
  949. data/misc/T1015.xml +33 -0
  950. data/misc/T1016.xml +33 -0
  951. data/misc/T1017.xml +82 -0
  952. data/misc/T1019.xml +30 -0
  953. data/misc/T102.xml +32 -0
  954. data/misc/T1020.xml +30 -0
  955. data/misc/T1023.xml +31 -0
  956. data/misc/T1025.xml +30 -0
  957. data/misc/T1026.xml +34 -0
  958. data/misc/T1029.xml +68 -0
  959. data/misc/T103.2.xml +84 -0
  960. data/misc/T1030.xml +41 -0
  961. data/misc/T1031.xml +40 -0
  962. data/misc/T1032.xml +75 -0
  963. data/misc/T1033.xml +36 -0
  964. data/misc/T104.xml +31 -0
  965. data/misc/T1042.xml +32 -0
  966. data/misc/T1044.xml +41 -0
  967. data/misc/T1045.xml +32 -0
  968. data/misc/T1046.xml +34 -0
  969. data/misc/T1047.xml +40 -0
  970. data/misc/T1048.xml +36 -0
  971. data/misc/T1053.xml +29 -0
  972. data/misc/T1054.xml +30 -0
  973. data/misc/T1062.xml +47 -0
  974. data/misc/T1065.xml +43 -0
  975. data/misc/T1066.xml +45 -0
  976. data/misc/T1067.xml +39 -0
  977. data/misc/T1068.xml +34 -0
  978. data/misc/T1069.xml +181 -0
  979. data/misc/T107.xml +64 -0
  980. data/misc/T1070.xml +42 -0
  981. data/misc/T1071.xml +104 -0
  982. data/misc/T1072.xml +31 -0
  983. data/misc/T1073.xml +31 -0
  984. data/misc/T1074.xml +101 -0
  985. data/misc/T1075.xml +40 -0
  986. data/misc/T1076.xml +31 -0
  987. data/misc/T1077.xml +31 -0
  988. data/misc/T1078.xml +43 -0
  989. data/misc/T1079.xml +31 -0
  990. data/misc/T108.xml +59 -0
  991. data/misc/T1080.xml +31 -0
  992. data/misc/T1081.xml +72 -0
  993. data/misc/T1082.xml +48 -0
  994. data/misc/T1083.xml +76 -0
  995. data/misc/T1084.xml +29 -0
  996. data/misc/T1085.xml +58 -0
  997. data/misc/T1086.xml +34 -0
  998. data/misc/T1089.xml +98 -0
  999. data/misc/T1090.xml +30 -0
  1000. data/misc/T1091.xml +39 -0
  1001. data/misc/T1093.xml +45 -0
  1002. data/misc/T1097.xml +31 -0
  1003. data/misc/T1098.xml +30 -0
  1004. data/misc/T1099.xml +31 -0
  1005. data/misc/T11.xml +47 -0
  1006. data/misc/T110.xml +47 -0
  1007. data/misc/T1100.xml +36 -0
  1008. data/misc/T1101.xml +34 -0
  1009. data/misc/T1102.xml +30 -0
  1010. data/misc/T1103.xml +35 -0
  1011. data/misc/T1104.xml +49 -0
  1012. data/misc/T1105.xml +32 -0
  1013. data/misc/T1106.xml +101 -0
  1014. data/misc/T1107.xml +43 -0
  1015. data/misc/T1108.xml +39 -0
  1016. data/misc/T1109.xml +50 -0
  1017. data/misc/T1113.xml +43 -0
  1018. data/misc/T1122.xml +34 -0
  1019. data/misc/T1123.xml +46 -0
  1020. data/misc/T1127.xml +60 -0
  1021. data/misc/T1129.xml +184 -0
  1022. data/misc/T1130.xml +29 -0
  1023. data/misc/T1131.xml +120 -0
  1024. data/misc/T1132.xml +68 -0
  1025. data/misc/T1133.xml +112 -0
  1026. data/misc/T1134.xml +36 -0
  1027. data/misc/T1135.xml +40 -0
  1028. data/misc/T1136.xml +447 -0
  1029. data/misc/T1138.xml +33 -0
  1030. data/misc/T1139.xml +42 -0
  1031. data/misc/T1140.xml +32 -0
  1032. data/misc/T1141.xml +43 -0
  1033. data/misc/T1142.xml +65 -0
  1034. data/misc/T1143.xml +36 -0
  1035. data/misc/T1146.xml +33 -0
  1036. data/misc/T1147.xml +47 -0
  1037. data/misc/T115.xml +60 -0
  1038. data/misc/T1150.xml +30 -0
  1039. data/misc/T1152.xml +30 -0
  1040. data/misc/T1153.xml +41 -0
  1041. data/misc/T1154.xml +31 -0
  1042. data/misc/T1156.xml +38 -0
  1043. data/misc/T1157.xml +31 -0
  1044. data/misc/T1159.xml +56 -0
  1045. data/misc/T1160.xml +41 -0
  1046. data/misc/T1161.xml +57 -0
  1047. data/misc/T1162.xml +35 -0
  1048. data/misc/T1163.xml +35 -0
  1049. data/misc/T1164.xml +36 -0
  1050. data/misc/T1165.xml +30 -0
  1051. data/misc/T1166.xml +77 -0
  1052. data/misc/T1168.xml +43 -0
  1053. data/misc/T1172.xml +109 -0
  1054. data/misc/T1173.xml +46 -0
  1055. data/misc/T1176.xml +97 -0
  1056. data/misc/T1179.xml +29 -0
  1057. data/misc/T1181.xml +46 -0
  1058. data/misc/T1185.xml +48 -0
  1059. data/misc/T1186.xml +144 -0
  1060. data/misc/T1187.xml +60 -0
  1061. data/misc/T1188.xml +144 -0
  1062. data/misc/T1189.xml +33 -0
  1063. data/misc/T1193.xml +61 -0
  1064. data/misc/T1196.xml +189 -0
  1065. data/misc/T1197.xml +46 -0
  1066. data/misc/T1198.xml +30 -0
  1067. data/misc/T1199.xml +32 -0
  1068. data/misc/T120.xml +31 -0
  1069. data/misc/T1201.xml +37 -0
  1070. data/misc/T1202.xml +32 -0
  1071. data/misc/T1203.xml +143 -0
  1072. data/misc/T1205.xml +79 -0
  1073. data/misc/T1207.xml +45 -0
  1074. data/misc/T1209.xml +34 -0
  1075. data/misc/T121.xml +52 -0
  1076. data/misc/T1211.xml +35 -0
  1077. data/misc/T1212.xml +32 -0
  1078. data/misc/T1213.xml +40 -0
  1079. data/misc/T1215.xml +32 -0
  1080. data/misc/T1216.xml +33 -0
  1081. data/misc/T1218.xml +32 -0
  1082. data/misc/T1219.xml +38 -0
  1083. data/misc/T122.xml +204 -0
  1084. data/misc/T1220.xml +30 -0
  1085. data/misc/T1221.xml +53 -0
  1086. data/misc/T1222.xml +38 -0
  1087. data/misc/T1223.xml +35 -0
  1088. data/misc/T1224.xml +62 -0
  1089. data/misc/T1225.xml +39 -0
  1090. data/misc/T1226.xml +43 -0
  1091. data/misc/T1227.xml +34 -0
  1092. data/misc/T1229.xml +32 -0
  1093. data/misc/T1230.xml +87 -0
  1094. data/misc/T1231.xml +38 -0
  1095. data/misc/T1232.xml +50 -0
  1096. data/misc/T1233.xml +49 -0
  1097. data/misc/T1234.xml +31 -0
  1098. data/misc/T1236.xml +31 -0
  1099. data/misc/T1237.xml +32 -0
  1100. data/misc/T1238.xml +30 -0
  1101. data/misc/T1239.xml +36 -0
  1102. data/misc/T1240.xml +57 -0
  1103. data/misc/T1241.xml +36 -0
  1104. data/misc/T1246.xml +30 -0
  1105. data/misc/T125.xml +47 -0
  1106. data/misc/T1250.xml +68 -0
  1107. data/misc/T1254.xml +41 -0
  1108. data/misc/T1257.xml +52 -0
  1109. data/misc/T1262.xml +98 -0
  1110. data/misc/T1264.xml +59 -0
  1111. data/misc/T1265.xml +34 -0
  1112. data/misc/T1266.xml +43 -0
  1113. data/misc/T1267.xml +33 -0
  1114. data/misc/T1268.xml +30 -0
  1115. data/misc/T1270.xml +917 -0
  1116. data/misc/T1273.xml +30 -0
  1117. data/misc/T1275.xml +31 -0
  1118. data/misc/T1277.xml +31 -0
  1119. data/misc/T1278.xml +29 -0
  1120. data/misc/T128.xml +1712 -0
  1121. data/misc/T1280.xml +43 -0
  1122. data/misc/T1292.xml +41 -0
  1123. data/misc/T1293.xml +56 -0
  1124. data/misc/T1294.xml +41 -0
  1125. data/misc/T1295.xml +55 -0
  1126. data/misc/T1297.xml +33 -0
  1127. data/misc/T1300.xml +1116 -0
  1128. data/misc/T1303.xml +35 -0
  1129. data/misc/T1304.xml +37 -0
  1130. data/misc/T1307.xml +216 -0
  1131. data/misc/T1308.xml +38 -0
  1132. data/misc/T1309.xml +144 -0
  1133. data/misc/T1310.xml +30 -0
  1134. data/misc/T1311.xml +38 -0
  1135. data/misc/T1312.xml +30 -0
  1136. data/misc/T1316.xml +31 -0
  1137. data/misc/T1317.xml +33 -0
  1138. data/misc/T1319.xml +37 -0
  1139. data/misc/T132.xml +33 -0
  1140. data/misc/T1320.xml +31 -0
  1141. data/misc/T1321.xml +1327 -0
  1142. data/misc/T1322.xml +41 -0
  1143. data/misc/T1327.xml +31 -0
  1144. data/misc/T1329.xml +37 -0
  1145. data/misc/T133.xml +50 -0
  1146. data/misc/T1330.xml +100 -0
  1147. data/misc/T1332.xml +29 -0
  1148. data/misc/T1333.xml +33 -0
  1149. data/misc/T1335.xml +31 -0
  1150. data/misc/T1336.xml +74 -0
  1151. data/misc/T1337.xml +35 -0
  1152. data/misc/T1338.xml +44 -0
  1153. data/misc/T1340.xml +30 -0
  1154. data/misc/T1342.xml +34 -0
  1155. data/misc/T1343.xml +74 -0
  1156. data/misc/T1344.xml +30 -0
  1157. data/misc/T1345.xml +36 -0
  1158. data/misc/T1346.xml +30 -0
  1159. data/misc/T1347.xml +31 -0
  1160. data/misc/T1348.xml +33 -0
  1161. data/misc/T1349.xml +34 -0
  1162. data/misc/T1350.xml +30 -0
  1163. data/misc/T1351.xml +32 -0
  1164. data/misc/T1355.xml +35 -0
  1165. data/misc/T1356.xml +31 -0
  1166. data/misc/T1357.xml +35 -0
  1167. data/misc/T1358.xml +29 -0
  1168. data/misc/T1359.xml +31 -0
  1169. data/misc/T1360.xml +34 -0
  1170. data/misc/T1361.xml +43 -0
  1171. data/misc/T1362.xml +33 -0
  1172. data/misc/T1363.xml +33 -0
  1173. data/misc/T1364.xml +35 -0
  1174. data/misc/T1365.xml +210 -0
  1175. data/misc/T1366.xml +37 -0
  1176. data/misc/T1367.xml +55 -0
  1177. data/misc/T1368.xml +31 -0
  1178. data/misc/T1369.xml +34 -0
  1179. data/misc/T1370.xml +37 -0
  1180. data/misc/T1373.xml +41 -0
  1181. data/misc/T1376.xml +55 -0
  1182. data/misc/T1378.xml +36 -0
  1183. data/misc/T1379.xml +49 -0
  1184. data/misc/T1382.xml +32 -0
  1185. data/misc/T1383.xml +45 -0
  1186. data/misc/T1384.xml +42 -0
  1187. data/misc/T1387.xml +61 -0
  1188. data/misc/T139.xml +40 -0
  1189. data/misc/T1390.xml +66 -0
  1190. data/misc/T1393.xml +31 -0
  1191. data/misc/T1395.xml +35 -0
  1192. data/misc/T1396.xml +30 -0
  1193. data/misc/T1398.xml +68 -0
  1194. data/misc/T1401.xml +44 -0
  1195. data/misc/T1402.xml +56 -0
  1196. data/misc/T1403.xml +30 -0
  1197. data/misc/T1404.xml +29 -0
  1198. data/misc/T1407.xml +29 -0
  1199. data/misc/T1408.xml +30 -0
  1200. data/misc/T1413.xml +30 -0
  1201. data/misc/T1420.xml +41 -0
  1202. data/misc/T1422.xml +32 -0
  1203. data/misc/T1423.xml +89 -0
  1204. data/misc/T1425.xml +36 -0
  1205. data/misc/T1426.xml +43 -0
  1206. data/misc/T1428.xml +29 -0
  1207. data/misc/T1429.xml +76 -0
  1208. data/misc/T143.xml +341 -0
  1209. data/misc/T1431.xml +33 -0
  1210. data/misc/T1432.xml +51 -0
  1211. data/misc/T1434.xml +34 -0
  1212. data/misc/T1439.xml +37 -0
  1213. data/misc/T146.xml +58 -0
  1214. data/misc/T1465.xml +48 -0
  1215. data/misc/T1466.xml +49 -0
  1216. data/misc/T1468.xml +64 -0
  1217. data/misc/T1469.xml +33 -0
  1218. data/misc/T147.xml +62 -0
  1219. data/misc/T1473.xml +42 -0
  1220. data/misc/T1476.xml +38 -0
  1221. data/misc/T1484.xml +37 -0
  1222. data/misc/T1485.xml +29 -0
  1223. data/misc/T1487.xml +58 -0
  1224. data/misc/T1488.xml +44 -0
  1225. data/misc/T1489.xml +39 -0
  1226. data/misc/T1491.xml +30 -0
  1227. data/misc/T1492.xml +37 -0
  1228. data/misc/T1493.xml +35 -0
  1229. data/misc/T1496.xml +81 -0
  1230. data/misc/T1499.xml +29 -0
  1231. data/misc/T150.xml +1125 -0
  1232. data/misc/T1511.xml +34 -0
  1233. data/misc/T1514.xml +41 -0
  1234. data/misc/T152.xml +577 -0
  1235. data/misc/T1520.xml +52 -0
  1236. data/misc/T1521.xml +41 -0
  1237. data/misc/T1522.xml +52 -0
  1238. data/misc/T1523.xml +35 -0
  1239. data/misc/T1525.xml +34 -0
  1240. data/misc/T1526.xml +32 -0
  1241. data/misc/T1527.xml +33 -0
  1242. data/misc/T1540.xml +31 -0
  1243. data/misc/T1543.xml +29 -0
  1244. data/misc/T1546.xml +32 -0
  1245. data/misc/T1549.xml +34 -0
  1246. data/misc/T1550.xml +31 -0
  1247. data/misc/T1552.xml +41 -0
  1248. data/misc/T1553.xml +41 -0
  1249. data/misc/T1554.xml +47 -0
  1250. data/misc/T1555.xml +31 -0
  1251. data/misc/T1556.xml +30 -0
  1252. data/misc/T1557.xml +32 -0
  1253. data/misc/T1558.xml +31 -0
  1254. data/misc/T1559.xml +50 -0
  1255. data/misc/T1560.xml +38 -0
  1256. data/misc/T1561.xml +29 -0
  1257. data/misc/T157.xml +206 -0
  1258. data/misc/T1570.xml +35 -0
  1259. data/misc/T1572.xml +30 -0
  1260. data/misc/T1574.xml +34 -0
  1261. data/misc/T1575.xml +33 -0
  1262. data/misc/T1576.xml +30 -0
  1263. data/misc/T1577.xml +30 -0
  1264. data/misc/T1578.xml +36 -0
  1265. data/misc/T1579.xml +30 -0
  1266. data/misc/T1585.xml +33 -0
  1267. data/misc/T1588.xml +47 -0
  1268. data/misc/T1590.xml +151 -0
  1269. data/misc/T1591.xml +159 -0
  1270. data/misc/T1592.xml +60 -0
  1271. data/misc/T1594.xml +69 -0
  1272. data/misc/T1595.xml +42 -0
  1273. data/misc/T1596.xml +82 -0
  1274. data/misc/T1599.xml +151 -0
  1275. data/misc/T16.xml +33 -0
  1276. data/misc/T160.xml +31 -0
  1277. data/misc/T1600.xml +36 -0
  1278. data/misc/T1601.xml +39 -0
  1279. data/misc/T1602.xml +59 -0
  1280. data/misc/T1606.xml +39 -0
  1281. data/misc/T1607.xml +47 -0
  1282. data/misc/T1609.xml +51 -0
  1283. data/misc/T1610.xml +31 -0
  1284. data/misc/T1611.xml +38 -0
  1285. data/misc/T1612.xml +32 -0
  1286. data/misc/T1617.xml +31 -0
  1287. data/misc/T1619.xml +30 -0
  1288. data/misc/T1620.xml +49 -0
  1289. data/misc/T1621.xml +29 -0
  1290. data/misc/T1622.xml +35 -0
  1291. data/misc/T1626.xml +30 -0
  1292. data/misc/T1627.xml +29 -0
  1293. data/misc/T1629.xml +41 -0
  1294. data/misc/T163.xml +49 -0
  1295. data/misc/T1630.xml +61 -0
  1296. data/misc/T1631.xml +44 -0
  1297. data/misc/T1632.xml +96 -0
  1298. data/misc/T1633.xml +32 -0
  1299. data/misc/T1634.xml +128 -0
  1300. data/misc/T1635.xml +39 -0
  1301. data/misc/T1636.xml +54 -0
  1302. data/misc/T1637.xml +29 -0
  1303. data/misc/T1638.xml +57 -0
  1304. data/misc/T1642.xml +37 -0
  1305. data/misc/T1644.xml +34 -0
  1306. data/misc/T1650.xml +73 -0
  1307. data/misc/T1651.xml +111 -0
  1308. data/misc/T1652.xml +36 -0
  1309. data/misc/T1656.xml +31 -0
  1310. data/misc/T1657.xml +30 -0
  1311. data/misc/T1658.xml +34 -0
  1312. data/misc/T1675.xml +31 -0
  1313. data/misc/T1678.xml +34 -0
  1314. data/misc/T1679.xml +30 -0
  1315. data/misc/T1680.xml +30 -0
  1316. data/misc/T1681.xml +43 -0
  1317. data/misc/T1685.xml +30 -0
  1318. data/misc/T1691.xml +81 -0
  1319. data/misc/T1693.xml +28 -0
  1320. data/misc/T1698.xml +30 -0
  1321. data/misc/T1699.xml +30 -0
  1322. data/misc/T1701.xml +30 -0
  1323. data/misc/T1703.xml +32 -0
  1324. data/misc/T1706.xml +33 -0
  1325. data/misc/T1713.xml +39 -0
  1326. data/misc/T1714.xml +40 -0
  1327. data/misc/T1719.xml +31 -0
  1328. data/misc/T1720.xml +46 -0
  1329. data/misc/T1721.xml +67 -0
  1330. data/misc/T1722.xml +38 -0
  1331. data/misc/T1727.xml +30 -0
  1332. data/misc/T1729.xml +48 -0
  1333. data/misc/T1730.xml +37 -0
  1334. data/misc/T1731.xml +40 -0
  1335. data/misc/T176.xml +70 -0
  1336. data/misc/T181.xml +75 -0
  1337. data/misc/T184.xml +43 -0
  1338. data/misc/T187.xml +79 -0
  1339. data/misc/T188.xml +35 -0
  1340. data/misc/T190.xml +29 -0
  1341. data/misc/T192.xml +30 -0
  1342. data/misc/T195.xml +33 -0
  1343. data/misc/T197.xml +34 -0
  1344. data/misc/T199.xml +31 -0
  1345. data/misc/T2.xml +39 -0
  1346. data/misc/T201.xml +39 -0
  1347. data/misc/T202.xml +66 -0
  1348. data/misc/T208.xml +41 -0
  1349. data/misc/T210.xml +29 -0
  1350. data/misc/T211.xml +161 -0
  1351. data/misc/T214.xml +31 -0
  1352. data/misc/T216.xml +28 -0
  1353. data/misc/T221.xml +74 -0
  1354. data/misc/T226.xml +29 -0
  1355. data/misc/T23.xml +53 -0
  1356. data/misc/T231.xml +42 -0
  1357. data/misc/T235.xml +544 -0
  1358. data/misc/T236.xml +194 -0
  1359. data/misc/T240.xml +46 -0
  1360. data/misc/T241.xml +36 -0
  1361. data/misc/T242.xml +35 -0
  1362. data/misc/T246.xml +86 -0
  1363. data/misc/T248.xml +34 -0
  1364. data/misc/T249.xml +32 -0
  1365. data/misc/T253.xml +33 -0
  1366. data/misc/T256.xml +48 -0
  1367. data/misc/T257.xml +37 -0
  1368. data/misc/T259.xml +48 -0
  1369. data/misc/T261.xml +44 -0
  1370. data/misc/T262.xml +37 -0
  1371. data/misc/T263.xml +48 -0
  1372. data/misc/T271.xml +29 -0
  1373. data/misc/T272.xml +29 -0
  1374. data/misc/T283.xml +31 -0
  1375. data/misc/T284.xml +93 -0
  1376. data/misc/T286.xml +37 -0
  1377. data/misc/T287.xml +30 -0
  1378. data/misc/T288.xml +34 -0
  1379. data/misc/T290.xml +51 -0
  1380. data/misc/T291.xml +30 -0
  1381. data/misc/T292.xml +29 -0
  1382. data/misc/T293.xml +30 -0
  1383. data/misc/T295.xml +36 -0
  1384. data/misc/T3.xml +34 -0
  1385. data/misc/T304.xml +138 -0
  1386. data/misc/T305.xml +50 -0
  1387. data/misc/T306.xml +347 -0
  1388. data/misc/T308.xml +28 -0
  1389. data/misc/T309.xml +209 -0
  1390. data/misc/T311.xml +32 -0
  1391. data/misc/T312.xml +32 -0
  1392. data/misc/T313.xml +37 -0
  1393. data/misc/T321.xml +35 -0
  1394. data/misc/T322.xml +32 -0
  1395. data/misc/T33.xml +34 -0
  1396. data/misc/T331.xml +49 -0
  1397. data/misc/T333.xml +44 -0
  1398. data/misc/T334.xml +30 -0
  1399. data/misc/T335.xml +52 -0
  1400. data/misc/T336.xml +104 -0
  1401. data/misc/T340.xml +153 -0
  1402. data/misc/T344.xml +87 -0
  1403. data/misc/T345.xml +59 -0
  1404. data/misc/T346.xml +111 -0
  1405. data/misc/T349.xml +30 -0
  1406. data/misc/T353.xml +93 -0
  1407. data/misc/T355.xml +831 -0
  1408. data/misc/T363.xml +376 -0
  1409. data/misc/T365.xml +69 -0
  1410. data/misc/T366.xml +265 -0
  1411. data/misc/T368.xml +129 -0
  1412. data/misc/T371.xml +57 -0
  1413. data/misc/T372.xml +29 -0
  1414. data/misc/T374.xml +1283 -0
  1415. data/misc/T375.xml +106 -0
  1416. data/misc/T377.xml +31 -0
  1417. data/misc/T378.xml +39 -0
  1418. data/misc/T379.xml +36 -0
  1419. data/misc/T381.xml +44 -0
  1420. data/misc/T39.xml +35 -0
  1421. data/misc/T392.xml +30 -0
  1422. data/misc/T393.xml +44 -0
  1423. data/misc/T399.xml +32 -0
  1424. data/misc/T40.xml +164 -0
  1425. data/misc/T400.xml +39 -0
  1426. data/misc/T407.xml +31 -0
  1427. data/misc/T412.xml +42 -0
  1428. data/misc/T422.xml +103 -0
  1429. data/misc/T423.xml +34 -0
  1430. data/misc/T426.xml +508 -0
  1431. data/misc/T432.xml +166 -0
  1432. data/misc/T433.xml +31 -0
  1433. data/misc/T436.xml +33 -0
  1434. data/misc/T437.xml +28 -0
  1435. data/misc/T441.xml +61 -0
  1436. data/misc/T444.xml +33 -0
  1437. data/misc/T445.xml +37 -0
  1438. data/misc/T448.xml +43 -0
  1439. data/misc/T455.xml +29 -0
  1440. data/misc/T456.xml +31 -0
  1441. data/misc/T460.xml +40 -0
  1442. data/misc/T461.xml +30 -0
  1443. data/misc/T465.xml +28 -0
  1444. data/misc/T47.xml +29 -0
  1445. data/misc/T473.xml +40 -0
  1446. data/misc/T478.xml +29 -0
  1447. data/misc/T479.xml +288 -0
  1448. data/misc/T48.xml +31 -0
  1449. data/misc/T480.xml +72 -0
  1450. data/misc/T481.xml +30 -0
  1451. data/misc/T482.xml +36 -0
  1452. data/misc/T483.xml +32 -0
  1453. data/misc/T484.xml +32 -0
  1454. data/misc/T485.xml +38 -0
  1455. data/misc/T486.xml +35 -0
  1456. data/misc/T487.xml +33 -0
  1457. data/misc/T491.xml +31 -0
  1458. data/misc/T501.xml +44 -0
  1459. data/misc/T503.xml +30 -0
  1460. data/misc/T506.xml +32 -0
  1461. data/misc/T51.xml +29 -0
  1462. data/misc/T511.xml +36 -0
  1463. data/misc/T512.xml +31 -0
  1464. data/misc/T514.xml +40 -0
  1465. data/misc/T516.xml +31 -0
  1466. data/misc/T519.xml +33 -0
  1467. data/misc/T52.xml +55 -0
  1468. data/misc/T521.xml +84 -0
  1469. data/misc/T522.xml +1767 -0
  1470. data/misc/T529.xml +43 -0
  1471. data/misc/T533.xml +31 -0
  1472. data/misc/T534.xml +34 -0
  1473. data/misc/T535.xml +33 -0
  1474. data/misc/T536.xml +40 -0
  1475. data/misc/T537.xml +29 -0
  1476. data/misc/T538.xml +36 -0
  1477. data/misc/T54.xml +36 -0
  1478. data/misc/T544.xml +29 -0
  1479. data/misc/T545.xml +36 -0
  1480. data/misc/T546.xml +208 -0
  1481. data/misc/T547.xml +47 -0
  1482. data/misc/T548.xml +86 -0
  1483. data/misc/T558.xml +37 -0
  1484. data/misc/T559.xml +218 -0
  1485. data/misc/T56.xml +46 -0
  1486. data/misc/T560.xml +196 -0
  1487. data/misc/T562.xml +74 -0
  1488. data/misc/T563.xml +83 -0
  1489. data/misc/T566.xml +36 -0
  1490. data/misc/T568.xml +34 -0
  1491. data/misc/T569.xml +73 -0
  1492. data/misc/T570.xml +29 -0
  1493. data/misc/T571.xml +29 -0
  1494. data/misc/T572.xml +32 -0
  1495. data/misc/T575.xml +28 -0
  1496. data/misc/T578.xml +45 -0
  1497. data/misc/T579.xml +36 -0
  1498. data/misc/T580.xml +34 -0
  1499. data/misc/T584.xml +117 -0
  1500. data/misc/T585.xml +46 -0
  1501. data/misc/T587.xml +42 -0
  1502. data/misc/T590.xml +30 -0
  1503. data/misc/T591.xml +81 -0
  1504. data/misc/T592.xml +34 -0
  1505. data/misc/T594.xml +50 -0
  1506. data/misc/T595.xml +33 -0
  1507. data/misc/T6.xml +34 -0
  1508. data/misc/T604.xml +30 -0
  1509. data/misc/T605.xml +31 -0
  1510. data/misc/T608.xml +34 -0
  1511. data/misc/T611.xml +52 -0
  1512. data/misc/T612.xml +31 -0
  1513. data/misc/T615.xml +65 -0
  1514. data/misc/T617.xml +51 -0
  1515. data/misc/T618.xml +50 -0
  1516. data/misc/T620.xml +39 -0
  1517. data/misc/T621.xml +39 -0
  1518. data/misc/T623.xml +78 -0
  1519. data/misc/T625.xml +31 -0
  1520. data/misc/T626.xml +50 -0
  1521. data/misc/T627.xml +32 -0
  1522. data/misc/T629.xml +33 -0
  1523. data/misc/T632.xml +38 -0
  1524. data/misc/T635.xml +47 -0
  1525. data/misc/T639.xml +118 -0
  1526. data/misc/T640.xml +553 -0
  1527. data/misc/T641.xml +463 -0
  1528. data/misc/T644.xml +31 -0
  1529. data/misc/T645.xml +29 -0
  1530. data/misc/T647.xml +227 -0
  1531. data/misc/T648.xml +33 -0
  1532. data/misc/T650.xml +109 -0
  1533. data/misc/T653.xml +39 -0
  1534. data/misc/T654.xml +31 -0
  1535. data/misc/T656.xml +29 -0
  1536. data/misc/T659.xml +47 -0
  1537. data/misc/T66.xml +266 -0
  1538. data/misc/T662.xml +32 -0
  1539. data/misc/T665.xml +29 -0
  1540. data/misc/T666.xml +47 -0
  1541. data/misc/T668.xml +53 -0
  1542. data/misc/T669.xml +33 -0
  1543. data/misc/T670.xml +57 -0
  1544. data/misc/T672.xml +35 -0
  1545. data/misc/T673.xml +1123 -0
  1546. data/misc/T674.xml +32 -0
  1547. data/misc/T675.xml +38 -0
  1548. data/misc/T676.xml +31 -0
  1549. data/misc/T678.xml +72 -0
  1550. data/misc/T679.xml +36 -0
  1551. data/misc/T680.xml +48 -0
  1552. data/misc/T681.xml +38 -0
  1553. data/misc/T682.xml +58 -0
  1554. data/misc/T683.xml +32 -0
  1555. data/misc/T687.xml +89 -0
  1556. data/misc/T688.xml +38 -0
  1557. data/misc/T689.xml +44 -0
  1558. data/misc/T692.xml +61 -0
  1559. data/misc/T693.xml +34 -0
  1560. data/misc/T695.xml +39 -0
  1561. data/misc/T698.xml +30 -0
  1562. data/misc/T699.xml +29 -0
  1563. data/misc/T701.xml +118 -0
  1564. data/misc/T703.xml +45 -0
  1565. data/misc/T704.xml +41 -0
  1566. data/misc/T705.xml +30 -0
  1567. data/misc/T706.xml +151 -0
  1568. data/misc/T707.xml +115 -0
  1569. data/misc/T708.xml +125 -0
  1570. data/misc/T709.xml +29 -0
  1571. data/misc/T714.xml +30 -0
  1572. data/misc/T715.xml +34 -0
  1573. data/misc/T716.xml +47 -0
  1574. data/misc/T717.xml +33 -0
  1575. data/misc/T718.xml +50 -0
  1576. data/misc/T72.xml +30 -0
  1577. data/misc/T720.xml +35 -0
  1578. data/misc/T723.xml +44 -0
  1579. data/misc/T726.xml +46 -0
  1580. data/misc/T728.xml +38 -0
  1581. data/misc/T73.xml +30 -0
  1582. data/misc/T731.xml +34 -0
  1583. data/misc/T732.xml +37 -0
  1584. data/misc/T735.xml +277 -0
  1585. data/misc/T736.xml +29 -0
  1586. data/misc/T737.xml +191 -0
  1587. data/misc/T738.xml +1018 -0
  1588. data/misc/T743.xml +31 -0
  1589. data/misc/T744.xml +39 -0
  1590. data/misc/T745.xml +28 -0
  1591. data/misc/T747.xml +30 -0
  1592. data/misc/T748.xml +51 -0
  1593. data/misc/T749.xml +51 -0
  1594. data/misc/T750.xml +263 -0
  1595. data/misc/T752.xml +136 -0
  1596. data/misc/T753.xml +72 -0
  1597. data/misc/T755.xml +560 -0
  1598. data/misc/T756.xml +82 -0
  1599. data/misc/T759.xml +28 -0
  1600. data/misc/T760.xml +28 -0
  1601. data/misc/T762.xml +42 -0
  1602. data/misc/T771.xml +41 -0
  1603. data/misc/T772.xml +30 -0
  1604. data/misc/T78.xml +31 -0
  1605. data/misc/T783.xml +42 -0
  1606. data/misc/T786.xml +44 -0
  1607. data/misc/T789.xml +44 -0
  1608. data/misc/T792.xml +42 -0
  1609. data/misc/T795.xml +36 -0
  1610. data/misc/T797.xml +32 -0
  1611. data/misc/T8.xml +34 -0
  1612. data/misc/T808.xml +46 -0
  1613. data/misc/T811.xml +45 -0
  1614. data/misc/T812.xml +38 -0
  1615. data/misc/T813.xml +39 -0
  1616. data/misc/T814.xml +29 -0
  1617. data/misc/T815.xml +40 -0
  1618. data/misc/T816.xml +37 -0
  1619. data/misc/T820.xml +58 -0
  1620. data/misc/T821.xml +180 -0
  1621. data/misc/T829.xml +48 -0
  1622. data/misc/T83.xml +55 -0
  1623. data/misc/T831.xml +41 -0
  1624. data/misc/T835.xml +28 -0
  1625. data/misc/T836.xml +63 -0
  1626. data/misc/T837.xml +38 -0
  1627. data/misc/T844.xml +30 -0
  1628. data/misc/T845.xml +34 -0
  1629. data/misc/T846.xml +66 -0
  1630. data/misc/T847.xml +35 -0
  1631. data/misc/T848.xml +30 -0
  1632. data/misc/T849.xml +30 -0
  1633. data/misc/T850.xml +39 -0
  1634. data/misc/T852.xml +31 -0
  1635. data/misc/T853.xml +48 -0
  1636. data/misc/T854.xml +47 -0
  1637. data/misc/T855.xml +29 -0
  1638. data/misc/T856.xml +31 -0
  1639. data/misc/T859.xml +69 -0
  1640. data/misc/T868.xml +29 -0
  1641. data/misc/T875.xml +150 -0
  1642. data/misc/T88.xml +48 -0
  1643. data/misc/T883.xml +36 -0
  1644. data/misc/T886.xml +36 -0
  1645. data/misc/T887.xml +42 -0
  1646. data/misc/T888.xml +34 -0
  1647. data/misc/T889.xml +37 -0
  1648. data/misc/T890.xml +43 -0
  1649. data/misc/T891.xml +47 -0
  1650. data/misc/T892.xml +52 -0
  1651. data/misc/T893.xml +29 -0
  1652. data/misc/T894.xml +39 -0
  1653. data/misc/T897.xml +31 -0
  1654. data/misc/T9.xml +50 -0
  1655. data/misc/T90.xml +31 -0
  1656. data/misc/T901.xml +234 -0
  1657. data/misc/T902.xml +31 -0
  1658. data/misc/T903.xml +30 -0
  1659. data/misc/T904.xml +33 -0
  1660. data/misc/T906.xml +31 -0
  1661. data/misc/T91.xml +107 -0
  1662. data/misc/T912.xml +32 -0
  1663. data/misc/T913.xml +43 -0
  1664. data/misc/T92.xml +98 -0
  1665. data/misc/T921.xml +33 -0
  1666. data/misc/T922.xml +33 -0
  1667. data/misc/T923.xml +35 -0
  1668. data/misc/T924.xml +29 -0
  1669. data/misc/T927.xml +29 -0
  1670. data/misc/T934.xml +34 -0
  1671. data/misc/T935.xml +157 -0
  1672. data/misc/T936.xml +86 -0
  1673. data/misc/T937.xml +47 -0
  1674. data/misc/T938.xml +35 -0
  1675. data/misc/T939.xml +29 -0
  1676. data/misc/T940.xml +32 -0
  1677. data/misc/T943.xml +53 -0
  1678. data/misc/T944.xml +43 -0
  1679. data/misc/T945.xml +56 -0
  1680. data/misc/T950.xml +75 -0
  1681. data/misc/T951.xml +36 -0
  1682. data/misc/T952.xml +30 -0
  1683. data/misc/T955.xml +32 -0
  1684. data/misc/T959.xml +29 -0
  1685. data/misc/T960.xml +40 -0
  1686. data/misc/T962.xml +38 -0
  1687. data/misc/T963.xml +129 -0
  1688. data/misc/T964.xml +46 -0
  1689. data/misc/T969.xml +38 -0
  1690. data/misc/T974.xml +28 -0
  1691. data/misc/T976.xml +32 -0
  1692. data/misc/T98.xml +1511 -0
  1693. data/misc/T980.xml +35 -0
  1694. data/misc/T981.xml +46 -0
  1695. data/misc/T982.xml +32 -0
  1696. data/misc/T983.xml +29 -0
  1697. data/misc/T984.xml +30 -0
  1698. data/misc/T985.xml +28 -0
  1699. data/misc/T986.xml +28 -0
  1700. data/misc/T987.xml +36 -0
  1701. data/misc/T988.xml +48 -0
  1702. data/misc/T990.xml +34 -0
  1703. data/misc/T998.xml +30 -0
  1704. data/misc/T999.xml +39 -0
  1705. data/misc/TA.xml +34 -0
  1706. data/misc/TA1.xml +32 -0
  1707. data/misc/TAX.xml +40 -0
  1708. data/misc/TBI.xml +35 -0
  1709. data/misc/TC2.xml +29 -0
  1710. data/misc/TCD.xml +43 -0
  1711. data/misc/TD1.xml +37 -0
  1712. data/misc/TD3.xml +37 -0
  1713. data/misc/TD4.xml +32 -0
  1714. data/misc/TD5.xml +42 -0
  1715. data/misc/TDS.xml +31 -0
  1716. data/misc/TDT.xml +31 -0
  1717. data/misc/TED.xml +35 -0
  1718. data/misc/TEM.xml +32 -0
  1719. data/misc/TER.xml +33 -0
  1720. data/misc/TF.xml +31 -0
  1721. data/misc/TFR.xml +31 -0
  1722. data/misc/TFS.xml +35 -0
  1723. data/misc/THE.xml +32 -0
  1724. data/misc/TI.xml +34 -0
  1725. data/misc/TI01.xml +34 -0
  1726. data/misc/TI03.xml +29 -0
  1727. data/misc/TI05.xml +65 -0
  1728. data/misc/TI10.xml +28 -0
  1729. data/misc/TI11.xml +41 -0
  1730. data/misc/TI13.xml +29 -0
  1731. data/misc/TI14.xml +30 -0
  1732. data/misc/TI40.xml +36 -0
  1733. data/misc/TI43.xml +61 -0
  1734. data/misc/TI58.xml +32 -0
  1735. data/misc/TI60.xml +29 -0
  1736. data/misc/TI61.xml +30 -0
  1737. data/misc/TI62.xml +30 -0
  1738. data/misc/TI63.xml +33 -0
  1739. data/misc/TIA.xml +34 -0
  1740. data/misc/TID.xml +36 -0
  1741. data/misc/TII.xml +32 -0
  1742. data/misc/TIS.xml +31 -0
  1743. data/misc/TLN.xml +49 -0
  1744. data/misc/TMD.xml +36 -0
  1745. data/misc/TOA.xml +32 -0
  1746. data/misc/TOO.xml +30 -0
  1747. data/misc/TOV.xml +33 -0
  1748. data/misc/TPB.xml +31 -0
  1749. data/misc/TPD.xml +31 -0
  1750. data/misc/TRF.xml +32 -0
  1751. data/misc/TRL.xml +32 -0
  1752. data/misc/TRN.xml +31 -0
  1753. data/misc/TRS.xml +32 -0
  1754. data/misc/TS.xml +34 -0
  1755. data/misc/TS2.xml +46 -0
  1756. data/misc/TS3.xml +51 -0
  1757. data/misc/TSD.xml +29 -0
  1758. data/misc/TSI.xml +31 -0
  1759. data/misc/TSP.xml +31 -0
  1760. data/misc/TST.xml +44 -0
  1761. data/misc/TSU.xml +35 -0
  1762. data/misc/TT.xml +29 -0
  1763. data/misc/TUD.xml +30 -0
  1764. data/misc/TXI.xml +37 -0
  1765. data/misc/TXN.xml +37 -0
  1766. data/misc/TXP.xml +37 -0
  1767. data/misc/UC.xml +31 -0
  1768. data/misc/UCS.xml +35 -0
  1769. data/misc/UD.xml +44 -0
  1770. data/misc/UDA.xml +34 -0
  1771. data/misc/UIT.xml +30 -0
  1772. data/misc/UM.xml +37 -0
  1773. data/misc/UQS.xml +31 -0
  1774. data/misc/UR.xml +29 -0
  1775. data/misc/USD.xml +39 -0
  1776. data/misc/USI.xml +30 -0
  1777. data/misc/UWI.xml +31 -0
  1778. data/misc/V1.xml +36 -0
  1779. data/misc/V2.xml +44 -0
  1780. data/misc/V3.xml +31 -0
  1781. data/misc/V4.xml +28 -0
  1782. data/misc/V5.xml +30 -0
  1783. data/misc/V9.xml +47 -0
  1784. data/misc/VAD.xml +38 -0
  1785. data/misc/VAR.xml +34 -0
  1786. data/misc/VAT.xml +39 -0
  1787. data/misc/VC.xml +40 -0
  1788. data/misc/VC1.xml +42 -0
  1789. data/misc/VDI.xml +42 -0
  1790. data/misc/VEH.xml +43 -0
  1791. data/misc/VID.xml +40 -0
  1792. data/misc/VR.xml +36 -0
  1793. data/misc/VRC.xml +32 -0
  1794. data/misc/W01.xml +43 -0
  1795. data/misc/W03.xml +34 -0
  1796. data/misc/W04.xml +42 -0
  1797. data/misc/W05.xml +35 -0
  1798. data/misc/W06.xml +39 -0
  1799. data/misc/W07.xml +38 -0
  1800. data/misc/W08.xml +36 -0
  1801. data/misc/W09.xml +36 -0
  1802. data/misc/W1.xml +28 -0
  1803. data/misc/W10.xml +36 -0
  1804. data/misc/W12.xml +49 -0
  1805. data/misc/W13.xml +32 -0
  1806. data/misc/W14.xml +32 -0
  1807. data/misc/W15.xml +33 -0
  1808. data/misc/W17.xml +36 -0
  1809. data/misc/W18.xml +30 -0
  1810. data/misc/W19.xml +45 -0
  1811. data/misc/W2.xml +43 -0
  1812. data/misc/W20.xml +37 -0
  1813. data/misc/W27.xml +37 -0
  1814. data/misc/W28.xml +35 -0
  1815. data/misc/W3.xml +33 -0
  1816. data/misc/W4.xml +32 -0
  1817. data/misc/W5.xml +33 -0
  1818. data/misc/W6.xml +31 -0
  1819. data/misc/W66.xml +37 -0
  1820. data/misc/W76.xml +33 -0
  1821. data/misc/WLD.xml +37 -0
  1822. data/misc/WS.xml +30 -0
  1823. data/misc/X01.xml +37 -0
  1824. data/misc/X02.xml +32 -0
  1825. data/misc/X1.xml +44 -0
  1826. data/misc/X2.xml +33 -0
  1827. data/misc/X4.xml +46 -0
  1828. data/misc/X7.xml +29 -0
  1829. data/misc/XD.xml +32 -0
  1830. data/misc/XH.xml +34 -0
  1831. data/misc/XPO.xml +31 -0
  1832. data/misc/XQ.xml +32 -0
  1833. data/misc/Y1.xml +36 -0
  1834. data/misc/Y2.xml +37 -0
  1835. data/misc/Y3.xml +38 -0
  1836. data/misc/Y4.xml +37 -0
  1837. data/misc/Y5.xml +28 -0
  1838. data/misc/Y6.xml +30 -0
  1839. data/misc/Y7.xml +32 -0
  1840. data/misc/YNQ.xml +37 -0
  1841. data/misc/ZA.xml +35 -0
  1842. data/misc/ZC1.xml +36 -0
  1843. data/misc/ZD.xml +36 -0
  1844. data/misc/ZR.xml +43 -0
  1845. data/misc/ZT.xml +33 -0
  1846. data/x12.gemspec +28 -0
  1847. metadata +1949 -0
@@ -0,0 +1,93 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+
24
+
25
+ require 'x12'
26
+
27
+ # Read message definition and create an actual parser
28
+ # by compiling .d12 file
29
+ parser = X12::Parser.new('misc/997single.xml')
30
+
31
+ # Make a new 997 message
32
+ r = parser.factory('997')
33
+
34
+ #
35
+ # Set various fields as desired
36
+ #
37
+
38
+ # Set fields directly
39
+ r.ST.TransactionSetIdentifierCode = 997
40
+ r.ST.TransactionSetControlNumber = '2878'
41
+
42
+ # Set fields inside a segment (AK1 in this case)
43
+ r.AK1 { |ak1|
44
+ ak1.FunctionalIdentifierCode = 'HS'
45
+ ak1.GroupControlNumber = 293328532
46
+ }
47
+
48
+ # Set fields deeply inside a segment inside
49
+ # nested loops (L1000/L1010/AK4 in this case)
50
+ r.L1000.L1010.AK4.DataElementSyntaxErrorCode = 55
51
+ r.L1000.AK2.TransactionSetIdentifierCode = 270
52
+
53
+ # Set nested loops
54
+ r.L1000.L1010 {|l|
55
+ l.AK3 {|s|
56
+ s.SegmentIdCode = 'NM1'
57
+ s.LoopIdentifierCode = 'L1000D'
58
+ }
59
+ l.AK4 {|s|
60
+ s.CopyOfBadDataElement = 'Bad element'
61
+ }
62
+ }
63
+
64
+ # Add loop repeats
65
+ r.L1000.repeat {|l1000|
66
+ (0..1).each {|loop_repeat| # Two repeats of the loop L1010
67
+ l1000.L1010.repeat {|l1010|
68
+ l1010.AK3 {|s|
69
+ s.SegmentIdCode = 'DMG'
70
+ s.SegmentPositionInTransactionSet = 0
71
+ s.LoopIdentifierCode = 'L1010'
72
+ s.SegmentSyntaxErrorCode = 22
73
+ } if loop_repeat == 0 # AK3 only in the first repeat of L1010
74
+ (0..1).each {|ak4_repeat| # Two repeats of the segment AK4
75
+ l1010.AK4.repeat {|s|
76
+ s.PositionInSegment = loop_repeat
77
+ s.DataElementSyntaxErrorCode = ak4_repeat
78
+ } # s
79
+ } # ak4_repeat
80
+ } # l1010
81
+ } # loop_repeat
82
+
83
+ l1000.AK5{|a|
84
+ a.TransactionSetAcknowledgmentCode = 666
85
+ a.TransactionSetSyntaxErrorCode4 = 999
86
+ } # a
87
+ } # l1000
88
+
89
+ # Print the message as a string -> ST*997*2878~AK1*HS*293328532~
90
+ # AK2*270*~AK3*NM1**L1000D~AK4***55*Bad element~AK5*~AK3*DMG*0*
91
+ # L1010*22~AK4*0**0~AK4*0**1~AK4*1**0~AK4*1**1~AK5*666****999~
92
+ # AK9****~SE**~
93
+ puts r.render
data/example/parse.rb ADDED
@@ -0,0 +1,58 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+
24
+
25
+ require 'x12'
26
+
27
+ # Read message definition and create an actual parser
28
+ # by compiling .d12 file
29
+ parser = X12::Parser.new('misc/997single.xml')
30
+
31
+ # Define a test message to parse
32
+ m997='ST*997*2878~AK1*HS*293328532~AK2*270*307272179~'\
33
+ 'AK3*NM1*8*L1010_0*8~AK4*0:0*66*1~AK4*0:1*66*1~AK4*0:2*'\
34
+ '66*1~AK3*NM1*8*L1010_1*8~AK4*1:0*66*1~AK4*1:1*66*1~AK3*'\
35
+ 'NM1*8*L1010_2*8~AK4*2:0*66*1~AK5*R*5~AK9*R*1*1*0~SE*8*2878~'
36
+
37
+ # Parse the message
38
+ r = parser.parse('997', m997)
39
+ r.show
40
+
41
+ # Access components of the message as desired
42
+
43
+ # Whole ST segment: -> ST*997*2878~
44
+ puts r.ST
45
+
46
+ # One filed, Group Control Number of AK1 -> 293328532
47
+ puts r.AK1.GroupControlNumber
48
+
49
+ # Individual loop, namely, third L1010 subloop of
50
+ # L1000 loop: -> AK3*NM1*8*L1010_2*8~AK4*2:0*66*1~
51
+ puts r.L1000.L1010[2]
52
+
53
+ # First encounter of Data Element Reference Number of the
54
+ # first L1010 sub-loop of L1000 loop -> 66
55
+ puts r.L1000.L1010.AK4.DataElementReferenceNumber
56
+
57
+ # Number of L1010 sub-loops in L1000 loop -> 3
58
+ puts r.L1000.L1010.size
data/lib/x12/base.rb ADDED
@@ -0,0 +1,187 @@
1
+ module X12
2
+
3
+ # Base class for Segment, Composite, and Loop.
4
+ # Contains setable segment_separator, field_separator, and composite_separator fields.
5
+ class Base
6
+
7
+ attr_reader :name, :repeats
8
+ attr_accessor :segment_separator, :field_separator, :composite_separator, :next_repeat, :parsed_str, :nodes
9
+
10
+ # Creates a new base element with a given name, array of sub-elements, and array of repeats if any.
11
+ def initialize(name, arr, repeats = nil)
12
+ @nodes = arr
13
+ @name = name
14
+ @repeats = repeats
15
+ @next_repeat = nil # Next repeat of the same element, if any
16
+ @parsed_str = nil
17
+
18
+ @segment_separator = '~'
19
+ @field_separator = '*'
20
+ @composite_separator = ':'
21
+
22
+ # puts "Created #{name} #{object_id} #{self.class} "
23
+ end
24
+
25
+ # Formats a printable string containing the base element's content.
26
+ # @return [String]
27
+ def inspect
28
+ "#{self.class.to_s.sub(/^.*::/, '')} (#{name}) #{repeats} #{super.inspect[1..-2]} =<#{parsed_str}, #{next_repeat.inspect}> ".gsub(/\\*\"/, '"')
29
+ end
30
+
31
+ # Prints a tree-like representation of the element.
32
+ def show(ind = '')
33
+ count = 0
34
+ self.to_a.each{|i|
35
+ # puts "#{ind}#{i.name} #{i.object_id} #{i.super.object_id} [#{count}]: #{i.parsed_str} #{i.super.class}"
36
+ puts "#{ind}#{i.name} [#{count}]: #{i.to_s.sub(/^(.{30})(.*?)(.{30})$/, '\1...\3')}"
37
+ # Force parsing a segment
38
+ if i.is_a?(X12::Segment) && i.nodes[0]
39
+ i.find_field(i.nodes[0].name)
40
+ end
41
+ i.nodes.each{|j|
42
+ case
43
+ when j.is_a?(X12::Base) then j.show(ind + ' ')
44
+ when j.is_a?(X12::Field) then puts "#{ind} #{j.name} -> '#{j}'"
45
+ end
46
+ }
47
+ count += 1
48
+ }
49
+ end
50
+
51
+ # Try to parse the current element one more time if required. Returns the rest of the string
52
+ # or the same string if no more repeats are found or required.
53
+ def do_repeats(s)
54
+ if self.repeats.end > 1
55
+ possible_repeat = self.dup
56
+ p_s = possible_repeat.parse(s)
57
+ if p_s
58
+ s = p_s
59
+ self.next_repeat = possible_repeat
60
+ end
61
+ end
62
+ s
63
+ end
64
+
65
+ # Empty out the current element.
66
+ def set_empty!
67
+ @next_repeat = nil
68
+ @parsed_str = nil
69
+ self
70
+ end
71
+
72
+ # Make a deep copy of the element.
73
+ def dup
74
+ n = clone
75
+ n.set_empty!
76
+ n.nodes = n.nodes.dup
77
+ n.nodes.each_index{|i|
78
+ n.nodes[i] = n.nodes[i].dup
79
+ n.nodes[i].set_empty!
80
+ }
81
+ # puts "Duped #{self.class} #{self.name} #{self.object_id} #{super.object_id} -> #{n.name} #{n.super.object_id} #{n.object_id} "
82
+ n
83
+ end
84
+
85
+ # Recursively find a sub-element, which also has to be of type Base.
86
+ def find(e)
87
+ # puts "Finding [#{e}] in #{self.class} #{name}"
88
+ case self
89
+ when X12::Loop
90
+ # Breadth first
91
+ res = nodes.find { |i| e == i.name }
92
+ return res if res
93
+ # Depth now
94
+ nodes.each{ |i|
95
+ res = i.find(e) if i.is_a?(X12::Loop)
96
+ return res unless res.nil? or EMPTY == res # otherwise keep looping
97
+ }
98
+ when X12::Segment
99
+ return find_field(e).to_s
100
+ end
101
+ return EMPTY
102
+ end
103
+
104
+ # Present self and all repeats as an array with self being #0.
105
+ def to_a
106
+ res = [self]
107
+ nr = self.next_repeat
108
+ while nr
109
+ res << nr
110
+ nr = nr.next_repeat
111
+ end
112
+ res
113
+ end
114
+
115
+ # Returns a parsed string representation of the element.
116
+ # @return [String]
117
+ def to_s
118
+ @parsed_str || ''
119
+ end
120
+
121
+ # The main method implementing Ruby-like access methods for nested elements.
122
+ def method_missing(meth, *args, &block)
123
+ str = meth.id2name
124
+ str = str[1..str.length] if str =~ /^_\d+$/ # to avoid pure number names like 270, 997, etc.
125
+ # puts "Missing #{str}"
126
+ if str =~ /=$/
127
+ # Assignment
128
+ str.chop!
129
+ # puts str
130
+ case self
131
+ when X12::Segment
132
+ res = find_field(str)
133
+ throw Exception.new("No field '#{str}' in segment '#{self.name}'") if EMPTY == res
134
+ res.content = args[0].to_s
135
+ # puts res.inspect
136
+ else
137
+ throw Exception.new("Illegal assignment to #{meth} of #{self.class}")
138
+ end
139
+ else
140
+ # Retrieval
141
+ res = find(str)
142
+ yield res if block_given?
143
+ res
144
+ end
145
+ end
146
+
147
+ # The main method implementing Ruby-like access methods for repeating elements.
148
+ def [](*args)
149
+ # puts "squares #{args.inspect}"
150
+ return self.to_a[args[0]] || EMPTY
151
+ end
152
+
153
+ # Yields to accompanying block passing self as a parameter.
154
+ def with(&block)
155
+ if block_given?
156
+ yield self
157
+ else
158
+ throw Exception.new("Method 'with' requires a block.")
159
+ end
160
+ end
161
+
162
+ # Returns number of repeats.
163
+ # @return [Integer]
164
+ def size
165
+ return self.to_a.size
166
+ end
167
+
168
+ # Check if any of the fields has been set yet.
169
+ def has_content?
170
+ self.nodes.find{ |i| i.has_content? }
171
+ end
172
+
173
+ # Adds a repeat to a segment or loop. Returns a new segment/loop or self if empty.
174
+ def repeat
175
+ res = if self.has_content? # Do not repeat an empty segment
176
+ last_repeat = self.to_a[-1]
177
+ last_repeat.next_repeat = last_repeat.dup
178
+ else
179
+ self
180
+ end
181
+ yield res if block_given?
182
+ res
183
+ end
184
+
185
+ end
186
+
187
+ end
@@ -0,0 +1,10 @@
1
+ module X12
2
+ # Class implementing a composite field.
3
+ class Composite < Base
4
+ # Make a printable representation of the composite.
5
+ # @return [String]
6
+ def inspect
7
+ return "Composite #{super.inspect}"
8
+ end
9
+ end
10
+ end
data/lib/x12/empty.rb ADDED
@@ -0,0 +1,14 @@
1
+ module X12
2
+ # Class indicating the absense of any X12 element, be it loop, segment, or anything else like that.
3
+ class Empty < Base
4
+ # Create a new empty
5
+ def initialize
6
+ super(nil, [])
7
+ end
8
+ # Returns an empty string
9
+ # @return [String]
10
+ def to_s
11
+ return ''
12
+ end
13
+ end
14
+ end
data/lib/x12/field.rb ADDED
@@ -0,0 +1,70 @@
1
+ module X12
2
+
3
+ # Class to represent a segment field. Please note, it's not a descendant of Base.
4
+ class Field
5
+ attr_reader :name, :type, :required, :min_length, :max_length, :validation
6
+ attr_writer :content
7
+
8
+ # Create a new field with given parameters
9
+ def initialize(name, type, required, min_length, max_length, validation)
10
+ @name = name
11
+ @type = type
12
+ @required = required
13
+ @min_length = min_length.to_i
14
+ @max_length = max_length.to_i
15
+ @validation = validation
16
+ @content = nil
17
+ end
18
+
19
+ # Returns printable string with field's content
20
+ # @return [String]
21
+ def inspect
22
+ "Field #{name}|#{type}|#{required}|#{min_length}-#{max_length}|#{validation} <#{@content}>"
23
+ end
24
+
25
+ # Synonym for 'render'
26
+ def to_s
27
+ render
28
+ end
29
+
30
+ def render
31
+ unless @content
32
+ @content = $1 if self.type =~ /"(.*)"/ # If it's a constant
33
+ end
34
+ rendered = @content || ''
35
+ rendered = rendered.ljust(@min_length) if @required
36
+ rendered
37
+ end
38
+
39
+ # Check if it's been set yet and it's not a constant
40
+ def has_content?
41
+ !@content.nil? && ('"'+@content+'"' != self.type)
42
+ end
43
+
44
+ # Erase the content
45
+ def set_empty!
46
+ @content = nil
47
+ end
48
+
49
+ # Returns simplified string regexp for this field, takes field separator and segment separator as arguments
50
+ def simple_regexp(field_sep, segment_sep)
51
+ case self.type
52
+ when /"(.*)"/ then $1
53
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
54
+ end # case
55
+ end
56
+
57
+ # Returns proper validating string regexp for this field, takes field separator and segment separator as arguments
58
+ def proper_regexp(field_sep, segment_sep)
59
+ case self.type
60
+ when 'I' then "\\d{#{@min_length},#{@max_length}}"
61
+ when 'S' then "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
62
+ when /C.*/ then "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
63
+ when /"(.*)"/ then $1
64
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
65
+ end
66
+ end
67
+
68
+ end
69
+
70
+ end
data/lib/x12/loop.rb ADDED
@@ -0,0 +1,69 @@
1
+ module X12
2
+
3
+ # Implements nested loops of segments.
4
+ class Loop < Base
5
+
6
+ # def regexp
7
+ # @regexp ||=
8
+ # Regexp.new(inject(''){|s, i|
9
+ # puts i.class
10
+ # s += case i
11
+ # when X12::Segment: "(#{i.regexp.source}){#{i.repeats.begin},#{i.repeats.end}}"
12
+ # when X12::Loop: "(.*?)"
13
+ # else
14
+ # ''
15
+ # end
16
+ # })
17
+ # end
18
+
19
+ # Parse a string and fill out internal structures with the pieces of it.
20
+ # Returns an unparsed portion of the string or the original string if nothing was parsed out.
21
+ def parse(str)
22
+ # puts "Parsing loop #{name}: "+str
23
+ s = str
24
+ nodes.each{|i|
25
+ m = i.parse(s)
26
+ s = m if m
27
+ }
28
+ if str == s
29
+ return nil
30
+ else
31
+ self.parsed_str = str[0..-s.length-1]
32
+ s = do_repeats(s)
33
+ end
34
+ # puts 'Parsed loop '+self.inspect
35
+ return s
36
+ end
37
+
38
+ # Render all components of this loop as string suitable for EDI.
39
+ def render
40
+ if self.has_content?
41
+ self.to_a.inject(''){|loop_str, i|
42
+ loop_str += i.nodes.inject(''){|nodes_str, j|
43
+ nodes_str += j.render
44
+ }
45
+ }
46
+ else
47
+ ''
48
+ end
49
+ end
50
+
51
+
52
+ # Formats a printable string containing the loops element's content
53
+ # added to provide compatability with ruby > 2.0.0.
54
+ # @return [String]
55
+ def inspect
56
+ "#{self.class.to_s.sub(/^.*::/, '')} (#{name}) #{repeats} =<#{parsed_str}, #{next_repeat.inspect}> ".gsub(/\\*\"/, '"')
57
+ end
58
+
59
+ # Provides looping through repeats of a message.
60
+ def each
61
+ res = self.to_a
62
+ 0.upto(res.length - 1) do |x|
63
+ yield res[x]
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+ end
data/lib/x12/parser.rb ADDED
@@ -0,0 +1,117 @@
1
+ module X12
2
+
3
+ # Main class for creating X12 parsers and factories.
4
+ class Parser
5
+
6
+ # These constitute prohibited file names under Microsoft
7
+ MS_DEVICES = [
8
+ 'CON',
9
+ 'PRN',
10
+ 'AUX',
11
+ 'CLOCK$',
12
+ 'NUL',
13
+ 'COM1',
14
+ 'LPT1',
15
+ 'LPT2',
16
+ 'LPT3',
17
+ 'COM2',
18
+ 'COM3',
19
+ 'COM4',
20
+ ].freeze
21
+
22
+ # Creates a parser out of a definition.
23
+ def initialize(file_name)
24
+ save_definition = @x12_definition
25
+
26
+ # Deal with Microsoft devices
27
+ # get the current working directory
28
+ base_name = File.basename(file_name, '.xml')
29
+ if MS_DEVICES.find { |i| i == base_name }
30
+ file_name = File.join(File.dirname, "#{base_name}_.xml")
31
+ end
32
+ file_location = File.join(File.dirname(__FILE__), '../../misc', file_name)
33
+
34
+ # Read and parse the definition
35
+ str = File.open(file_location, 'r').read
36
+ # @dir_name = File.dirname(File.expand_path(file_name)) # to look up other files if needed
37
+ @x12_definition = X12::XMLDefinitions.new(str)
38
+
39
+ # Populate fields in all segments found in all the loops
40
+ @x12_definition[X12::Loop].each_pair{ |k, v|
41
+ # puts "Populating definitions for loop #{k}"
42
+ process_loop(v)
43
+ } if @x12_definition[X12::Loop]
44
+
45
+ # Merge the newly parsed definition into a saved one, if any.
46
+ if save_definition
47
+ @x12_definition.keys.each { |t|
48
+ save_definition[t] ||= {}
49
+ @x12_definition[t].keys.each { |u|
50
+ save_definition[t][u] = @x12_definition[t][u]
51
+ }
52
+ @x12_definition = save_definition
53
+ }
54
+ end
55
+
56
+ # puts PP.pp(self, '')
57
+ end
58
+
59
+ # Parse a loop of a given name out of a string.
60
+ # Throws an exception if the loop name is not defined.
61
+ def parse(loop_name, str)
62
+ loop = @x12_definition[X12::Loop][loop_name]
63
+ # puts "Loops to parse #{@x12_definition[X12::Loop].keys}"
64
+ throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
65
+ loop = loop.dup
66
+ loop.parse(str)
67
+ return loop
68
+ end
69
+
70
+ # Make an empty loop to be filled out with information.
71
+ def factory(loop_name)
72
+ loop = @x12_definition[X12::Loop][loop_name]
73
+ throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
74
+ loop = loop.dup
75
+ return loop
76
+ end
77
+
78
+ private
79
+
80
+ # Recursively scan the loop and instantiate fields' definitions for all its segments.
81
+ def process_loop(loop)
82
+ loop.nodes.each do |i|
83
+ case i
84
+ when X12::Loop then process_loop(i)
85
+ when X12::Segment then process_segment(i) unless i.nodes.size > 0
86
+ else return
87
+ end
88
+ end
89
+ end
90
+
91
+ # Instantiate segment's fields as previously defined
92
+ def process_segment(segment)
93
+ # puts "Trying to process segment #{segment.inspect}"
94
+ unless @x12_definition[X12::Segment] && @x12_definition[X12::Segment][segment.name]
95
+ # Try to find it in a separate file if missing from the @x12_definition structure
96
+ initialize(segment.name+'.xml')
97
+ segment_definition = @x12_definition[X12::Segment][segment.name]
98
+ throw Exception.new("Cannot find a definition for segment #{segment.name}") unless segment_definition
99
+ else
100
+ segment_definition = @x12_definition[X12::Segment][segment.name]
101
+ end
102
+ segment_definition.nodes.each_index { |i|
103
+ segment.nodes[i] = segment_definition.nodes[i]
104
+ # Make sure we have the validation table if any for this field. Try to read one in if missing.
105
+ table = segment.nodes[i].validation
106
+ if table
107
+ unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
108
+ initialize(table + '.xml')
109
+ throw Exception.new("Cannot find a definition for table #{table}") unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
110
+ end
111
+ end
112
+ }
113
+ end
114
+
115
+ end
116
+
117
+ end