From 4787bfdb436015cc783be734e525d252f8d22eb5 Mon Sep 17 00:00:00 2001 From: huysentruitw Date: Sat, 24 Aug 2024 17:53:00 +0200 Subject: [PATCH] Release/3.1 (#48) * Add 1D barcode height and EAN font family for SVG renderer (#47) * add height & font family * add error handle * fix height * Update default font --------- Co-authored-by: Andrey * Add new GS1 Tags, fix bugs (#42) 7040 missing symbol ^; 7240 missing symbol ^; 235 change tag from 243, set Fnc1Required to true; Update tags RegularExpression; New tags: 3100 NET WEIGHT (kg) 3950-3959 PRICE/UoM 4300 SHIP TO COMP 4301 SHIP TO NAME 4302 SHIP TO ADD1 4303 SHIP TO ADD2 4304 SHIP TO SUB 4305 SHIP TO LOC 4306 SHIP TO REG 4307 SHIP TO COUNTRY 4308 SHIP TO PHONE 4309 SHIP TO GEO 4310 RTN TO COMP 4311 RTN TO NAME 4312 RTN TO ADD1 4313 RTN TO ADD2 4314 RTN TO SUB 4315 RTN TO LOC 4316 RTN TO REG 4317 RTN TO COUNTRY 4318 RTN TO POST 4319 RTN TO PHONE 4320 SRV DESCRIPTION 4321 DANGEROUS GOODS 4322 AUTH TO LEAVE 4323 SIG REQUIRED 4324 NBEF DEL DT 4325 NAFT DEL DT 4326 REL DATE 7011 TEST BY DATE 715 NHRN NDC Data obtained from the site: https://www.gs1.org/standards/barcodes/application-identifiers/ --------- Co-authored-by: MrOzean Co-authored-by: Andrey Co-authored-by: LaMerXaKer <134901581+LaMerXaKer@users.noreply.github.com> --- src/Barcoder.Renderer.Svg/SvgRenderer.cs | 39 ++-- .../SvgRendererOptions.cs | 6 +- src/Barcoder/Utils/Gs1Encoder.cs | 188 +++++++++++------- 3 files changed, 146 insertions(+), 87 deletions(-) diff --git a/src/Barcoder.Renderer.Svg/SvgRenderer.cs b/src/Barcoder.Renderer.Svg/SvgRenderer.cs index 419b1fe..e2a25aa 100644 --- a/src/Barcoder.Renderer.Svg/SvgRenderer.cs +++ b/src/Barcoder.Renderer.Svg/SvgRenderer.cs @@ -12,7 +12,7 @@ public sealed class SvgRenderer : IRenderer private static readonly int[] Ean13LongerBars = new[] { 0, 2, 46, 48, 92, 94 }; private readonly SvgRendererOptions _options; - + public SvgRenderer(SvgRendererOptions options = null) { _options = options ?? new SvgRendererOptions(); @@ -21,6 +21,21 @@ public SvgRenderer(SvgRendererOptions options = null) private bool IncludeEanContent(IBarcode barcode) => _options.IncludeEanContentAsText && (barcode.Metadata.CodeKind == BarcodeType.EAN13 || barcode.Metadata.CodeKind == BarcodeType.EAN8); + private int Get1DBarcodeHeight(IBarcode barcode) + { + var height = _options.BarHeightFor1DBarcode; + if (height <= 0) + throw new ArgumentOutOfRangeException(nameof(_options.BarHeightFor1DBarcode), "Value must be larger than zero"); + + + if (IncludeEanContent(barcode)) + { + height += 5; // add extra height for text, 2px margin + 3px text height + } + + return height; + } + public void Render(IBarcode barcode, Stream outputStream) { barcode = barcode ?? throw new ArgumentNullException(nameof(barcode)); @@ -36,9 +51,9 @@ public void Render(IBarcode barcode, Stream outputStream) private void Render1D(IBarcode barcode, Stream outputStream) { var document = SvgDocument.Create(); - int height = IncludeEanContent(barcode) ? 55 : 50; + int height = Get1DBarcodeHeight(barcode); int margin = _options.CustomMargin ?? barcode.Margin; - + document.ViewBox = new SvgViewBox { Left = 0, @@ -68,14 +83,14 @@ private void Render1D(IBarcode barcode, Stream outputStream) { if (!Ean13LongerBars.Contains(x)) { - lineHeight = 48; + lineHeight -= 7; // strip line height at extra height 5px + margin 2px } } else { if (!Ean8LongerBars.Contains(x)) { - lineHeight = 48; + lineHeight -= 7; // strip line height at extra height 5px + margin 2px } } } @@ -103,14 +118,14 @@ private void Render1D(IBarcode barcode, Stream outputStream) { if (barcode.Metadata.CodeKind == BarcodeType.EAN13) { - AddText(document, 4, 54.5D, barcode.Content.Substring(0, 1)); - AddText(document, 21, 54.5D, barcode.Content.Substring(1, 6)); - AddText(document, 67, 54.5D, barcode.Content.Substring(7)); + AddText(document, 4, height - 0.5D, barcode.Content.Substring(0, 1)); + AddText(document, 21, height - 0.5D, barcode.Content.Substring(1, 6)); + AddText(document, 67, height - 0.5D, barcode.Content.Substring(7)); } else { - AddText(document, 18, 54.5D, barcode.Content.Substring(0, 4)); - AddText(document, 50, 54.5D, barcode.Content.Substring(4)); + AddText(document, 18, height - 0.5D, barcode.Content.Substring(0, 4)); + AddText(document, 50, height - 0.5D, barcode.Content.Substring(4)); } } @@ -120,7 +135,7 @@ private void Render1D(IBarcode barcode, Stream outputStream) private void AddText(SvgDocument doc, double x, double y, string t) { SvgText text = doc.AddText(); - text.FontFamily = "arial"; + text.FontFamily = _options.EanFontFamily ?? throw new ArgumentNullException(nameof(_options.EanFontFamily)); text.Text = t; text.X = x; text.Y = y; @@ -132,7 +147,7 @@ private void AddText(SvgDocument doc, double x, double y, string t) private void Render2D(IBarcode barcode, Stream outputStream) { int margin = _options.CustomMargin ?? barcode.Margin; - + var document = SvgDocument.Create(); document.ViewBox = new SvgViewBox { diff --git a/src/Barcoder.Renderer.Svg/SvgRendererOptions.cs b/src/Barcoder.Renderer.Svg/SvgRendererOptions.cs index 99b914a..008cc19 100644 --- a/src/Barcoder.Renderer.Svg/SvgRendererOptions.cs +++ b/src/Barcoder.Renderer.Svg/SvgRendererOptions.cs @@ -3,7 +3,11 @@ public sealed class SvgRendererOptions { public bool IncludeEanContentAsText { get; set; } = false; - + public int? CustomMargin { get; set; } = null; + + public int BarHeightFor1DBarcode { get; set; } = 50; + + public string EanFontFamily { get; set; } = "arial"; } } diff --git a/src/Barcoder/Utils/Gs1Encoder.cs b/src/Barcoder/Utils/Gs1Encoder.cs index d8de216..63813d1 100644 --- a/src/Barcoder/Utils/Gs1Encoder.cs +++ b/src/Barcoder/Utils/Gs1Encoder.cs @@ -62,7 +62,7 @@ private static string RemoveSpaces(string content) new ApplicationIdentifier { Ai = "00", Fnc1Required = false, DataTitle = "SSCC", RegularExpression = @"^00(\d{18})$" }, new ApplicationIdentifier { Ai = "01", Fnc1Required = false, DataTitle = "GTIN", RegularExpression = @"^01(\d{14})$" }, new ApplicationIdentifier { Ai = "02", Fnc1Required = false, DataTitle = "CONTENT", RegularExpression = @"^02(\d{14})$" }, - new ApplicationIdentifier { Ai = "10", Fnc1Required = true, DataTitle = "BATCH/LOT", RegularExpression = @"^10([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "10", Fnc1Required = true, DataTitle = "BATCH/LOT", RegularExpression = @"^10([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, new ApplicationIdentifier { Ai = "11", Fnc1Required = false, DataTitle = "PROD DATE", RegularExpression = @"^11(\d{6})$" }, new ApplicationIdentifier { Ai = "12", Fnc1Required = false, DataTitle = "DUE DATE", RegularExpression = @"^12(\d{6})$" }, new ApplicationIdentifier { Ai = "13", Fnc1Required = false, DataTitle = "PACK DATE", RegularExpression = @"^13(\d{6})$" }, @@ -70,19 +70,20 @@ private static string RemoveSpaces(string content) new ApplicationIdentifier { Ai = "16", Fnc1Required = false, DataTitle = "SELL BY", RegularExpression = @"^16(\d{6})$" }, new ApplicationIdentifier { Ai = "17", Fnc1Required = false, DataTitle = "USE BY OR EXPIRY", RegularExpression = @"^17(\d{6})$" }, new ApplicationIdentifier { Ai = "20", Fnc1Required = false, DataTitle = "VARIANT", RegularExpression = @"^20(\d{2})$" }, - new ApplicationIdentifier { Ai = "21", Fnc1Required = true, DataTitle = "SERIAL", RegularExpression = @"^21([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "22", Fnc1Required = true, DataTitle = "CPV", RegularExpression = @"^22([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "235", Fnc1Required = false, DataTitle = "TPX", RegularExpression = @"243([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,28})$" }, - new ApplicationIdentifier { Ai = "240", Fnc1Required = true, DataTitle = "ADDITIONAL ID", RegularExpression = @"^240([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "21", Fnc1Required = true, DataTitle = "SERIAL", RegularExpression = @"^21([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "22", Fnc1Required = true, DataTitle = "CPV", RegularExpression = @"^22([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "235", Fnc1Required = true, DataTitle = "TPX", RegularExpression = @"^235([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,28})$" }, + new ApplicationIdentifier { Ai = "240", Fnc1Required = true, DataTitle = "ADDITIONAL ID", RegularExpression = @"^240([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, new ApplicationIdentifier { Ai = "241", Fnc1Required = true, DataTitle = "CUST. PART NO.", RegularExpression = @"^241([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, new ApplicationIdentifier { Ai = "242", Fnc1Required = true, DataTitle = "MTO VARIANT", RegularExpression = @"^242(\d{0,6})$" }, new ApplicationIdentifier { Ai = "243", Fnc1Required = true, DataTitle = "PCN", RegularExpression = @"^243([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "250", Fnc1Required = true, DataTitle = "SECONDARY SERIAL", RegularExpression = @"^250([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, - new ApplicationIdentifier { Ai = "251", Fnc1Required = true, DataTitle = "REF. TO SOURCE", RegularExpression = @"^251([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, - new ApplicationIdentifier { Ai = "253", Fnc1Required = true, DataTitle = "GDTI", RegularExpression = @"^253(\d{13})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,17})$" }, - new ApplicationIdentifier { Ai = "254", Fnc1Required = true, DataTitle = "GLN EXTENSION COMPONENT", RegularExpression = @"^254([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "250", Fnc1Required = true, DataTitle = "SECONDARY SERIAL", RegularExpression = @"^250([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "251", Fnc1Required = true, DataTitle = "REF. TO SOURCE", RegularExpression = @"^251([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "253", Fnc1Required = true, DataTitle = "GDTI", RegularExpression = @"^253(\d{13})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,17})$" }, + new ApplicationIdentifier { Ai = "254", Fnc1Required = true, DataTitle = "GLN EXTENSION COMPONENT", RegularExpression = @"^254([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, new ApplicationIdentifier { Ai = "255", Fnc1Required = true, DataTitle = "GCN", RegularExpression = @"^255(\d{13})(\d{0,12})$" }, new ApplicationIdentifier { Ai = "30", Fnc1Required = true, DataTitle = "VAR. COUNT", RegularExpression = @"^30(\d{0,8})$" }, + new ApplicationIdentifier { Ai = "3100", Fnc1Required = false, DataTitle = "NET WEIGHT (kg)", RegularExpression = @"^3100(\d{6})$" }, new ApplicationIdentifier { Ai = "3101", Fnc1Required = false, DataTitle = "NET WEIGHT (kg)", RegularExpression = @"^3101(\d{6})$" }, new ApplicationIdentifier { Ai = "3102", Fnc1Required = false, DataTitle = "NET WEIGHT (kg)", RegularExpression = @"^3102(\d{6})$" }, new ApplicationIdentifier { Ai = "3103", Fnc1Required = false, DataTitle = "NET WEIGHT (kg)", RegularExpression = @"^3103(\d{6})$" }, @@ -444,11 +445,21 @@ private static string RemoveSpaces(string content) new ApplicationIdentifier { Ai = "3940", Fnc1Required = true, DataTitle = "PRCNT OFF", RegularExpression = @"^3940(\d{4})$" }, new ApplicationIdentifier { Ai = "3941", Fnc1Required = true, DataTitle = "PRCNT OFF", RegularExpression = @"^3941(\d{4})$" }, new ApplicationIdentifier { Ai = "3942", Fnc1Required = true, DataTitle = "PRCNT OFF", RegularExpression = @"^3942(\d{4})$" }, - new ApplicationIdentifier { Ai = "3943", Fnc1Required = true, DataTitle = "PRCNT OFF", RegularExpression = @"^3943(\d{4})$" }, - new ApplicationIdentifier { Ai = "400", Fnc1Required = true, DataTitle = "ORDER NUMBER", RegularExpression = @"^400([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, - new ApplicationIdentifier { Ai = "401", Fnc1Required = true, DataTitle = "GINC", RegularExpression = @"^401([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "3943", Fnc1Required = true, DataTitle = "PRCNT OFF", RegularExpression = @"^3943(\d{4})$" }, + new ApplicationIdentifier { Ai = "3950", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3950(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3951", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3951(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3952", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3952(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3953", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3953(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3954", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3954(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3955", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3955(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3956", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3956(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3957", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3957(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3958", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3958(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "3959", Fnc1Required = true, DataTitle = "PRICE/UoM", RegularExpression = @"^3959(\d{0,6})$" }, + new ApplicationIdentifier { Ai = "400", Fnc1Required = true, DataTitle = "ORDER NUMBER", RegularExpression = @"^400([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "401", Fnc1Required = true, DataTitle = "GINC", RegularExpression = @"^401([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, new ApplicationIdentifier { Ai = "402", Fnc1Required = true, DataTitle = "GSIN", RegularExpression = @"^402(\d{17})$" }, - new ApplicationIdentifier { Ai = "403", Fnc1Required = true, DataTitle = "ROUTE", RegularExpression = @"^403([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "403", Fnc1Required = true, DataTitle = "ROUTE", RegularExpression = @"^403([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, new ApplicationIdentifier { Ai = "410", Fnc1Required = false, DataTitle = "SHIP TO LOC", RegularExpression = @"^410(\d{13})$" }, new ApplicationIdentifier { Ai = "411", Fnc1Required = false, DataTitle = "BILL TO", RegularExpression = @"^411(\d{13})$" }, new ApplicationIdentifier { Ai = "412", Fnc1Required = false, DataTitle = "PURCHASE FROM", RegularExpression = @"^412(\d{13})$" }, @@ -457,87 +468,116 @@ private static string RemoveSpaces(string content) new ApplicationIdentifier { Ai = "415", Fnc1Required = false, DataTitle = "PAY TO", RegularExpression = @"^415(\d{13})$" }, new ApplicationIdentifier { Ai = "416", Fnc1Required = false, DataTitle = "PROD/SERV LOC", RegularExpression = @"^416(\d{13})$" }, new ApplicationIdentifier { Ai = "417", Fnc1Required = false, DataTitle = "PARTY", RegularExpression = @"417(\d{13})$" }, - new ApplicationIdentifier { Ai = "420", Fnc1Required = true, DataTitle = "SHIP TO POST", RegularExpression = @"^420([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "421", Fnc1Required = true, DataTitle = "SHIP TO POST", RegularExpression = @"^421(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,9})$" }, + new ApplicationIdentifier { Ai = "420", Fnc1Required = true, DataTitle = "SHIP TO POST", RegularExpression = @"^420([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "421", Fnc1Required = true, DataTitle = "SHIP TO POST", RegularExpression = @"^421(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,9})$" }, new ApplicationIdentifier { Ai = "422", Fnc1Required = true, DataTitle = "ORIGIN", RegularExpression = @"^422(\d{3})$" }, new ApplicationIdentifier { Ai = "423", Fnc1Required = true, DataTitle = "COUNTRY - INITIAL PROCESS.", RegularExpression = @"^423(\d{3})(\d{0,12})$" }, new ApplicationIdentifier { Ai = "424", Fnc1Required = true, DataTitle = "COUNTRY - PROCESS.", RegularExpression = @"^424(\d{3})$" }, new ApplicationIdentifier { Ai = "425", Fnc1Required = true, DataTitle = "COUNTRY - DISASSEMBLY", RegularExpression = @"^425(\d{3})(\d{0,12})$" }, new ApplicationIdentifier { Ai = "426", Fnc1Required = true, DataTitle = "COUNTRY - FULL PROCESS", RegularExpression = @"^426(\d{3})$" }, - new ApplicationIdentifier { Ai = "427", Fnc1Required = true, DataTitle = "ORIGIN SUBDIVISION", RegularExpression = @"^427([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,3})$" }, + new ApplicationIdentifier { Ai = "427", Fnc1Required = true, DataTitle = "ORIGIN SUBDIVISION", RegularExpression = @"^427([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,3})$" }, + new ApplicationIdentifier { Ai = "4300", Fnc1Required = true, DataTitle = "SHIP TO COMP", RegularExpression = @"^4300([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,35})$" }, + new ApplicationIdentifier { Ai = "4301", Fnc1Required = true, DataTitle = "SHIP TO NAME", RegularExpression = @"^4301([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,35})$" }, + new ApplicationIdentifier { Ai = "4302", Fnc1Required = true, DataTitle = "SHIP TO ADD1", RegularExpression = @"^4302([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4303", Fnc1Required = true, DataTitle = "SHIP TO ADD2", RegularExpression = @"^4303([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4304", Fnc1Required = true, DataTitle = "SHIP TO SUB", RegularExpression = @"^4304([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4305", Fnc1Required = true, DataTitle = "SHIP TO LOC", RegularExpression = @"^4305([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4306", Fnc1Required = true, DataTitle = "SHIP TO REG", RegularExpression = @"^4306([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4307", Fnc1Required = true, DataTitle = "SHIP TO COUNTRY", RegularExpression = @"^4307([A-Z]{2})$" }, + new ApplicationIdentifier { Ai = "4308", Fnc1Required = true, DataTitle = "SHIP TO PHONE", RegularExpression = @"^4308([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "4309", Fnc1Required = true, DataTitle = "SHIP TO GEO", RegularExpression = @"^4309(\d{20})$" }, + new ApplicationIdentifier { Ai = "4310", Fnc1Required = true, DataTitle = "RTN TO COMP", RegularExpression = @"^4310([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,35})$" }, + new ApplicationIdentifier { Ai = "4311", Fnc1Required = true, DataTitle = "RTN TO NAME", RegularExpression = @"^4311([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,35})$" }, + new ApplicationIdentifier { Ai = "4312", Fnc1Required = true, DataTitle = "RTN TO ADD1", RegularExpression = @"^4312([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4313", Fnc1Required = true, DataTitle = "RTN TO ADD2", RegularExpression = @"^4313([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4314", Fnc1Required = true, DataTitle = "RTN TO SUB", RegularExpression = @"^4314([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4315", Fnc1Required = true, DataTitle = "RTN TO LOC", RegularExpression = @"^4315([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4316", Fnc1Required = true, DataTitle = "RTN TO REG", RegularExpression = @"^4316([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "4317", Fnc1Required = true, DataTitle = "RTN TO COUNTRY", RegularExpression = @"^4317([A-Z]{2})$" }, + new ApplicationIdentifier { Ai = "4318", Fnc1Required = true, DataTitle = "RTN TO POST", RegularExpression = @"^4318([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "4319", Fnc1Required = true, DataTitle = "RTN TO PHONE", RegularExpression = @"^4319([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "4320", Fnc1Required = true, DataTitle = "SRV DESCRIPTION", RegularExpression = @"^4320([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,35})$" }, + new ApplicationIdentifier { Ai = "4321", Fnc1Required = true, DataTitle = "DANGEROUS GOODS", RegularExpression = @"^4321([01])$" }, + new ApplicationIdentifier { Ai = "4322", Fnc1Required = true, DataTitle = "AUTH TO LEAVE", RegularExpression = @"^4322([01])$" }, + new ApplicationIdentifier { Ai = "4323", Fnc1Required = true, DataTitle = "SIG REQUIRED", RegularExpression = @"^4323([01])$" }, + new ApplicationIdentifier { Ai = "4324", Fnc1Required = true, DataTitle = "NBEF DEL DT", RegularExpression = @"^4324(\d{10})$" }, + new ApplicationIdentifier { Ai = "4325", Fnc1Required = true, DataTitle = "NAFT DEL DT", RegularExpression = @"^4325(\d{10})$" }, + new ApplicationIdentifier { Ai = "4326", Fnc1Required = true, DataTitle = "REL DATE", RegularExpression = @"^4326(\d{6})$" }, new ApplicationIdentifier { Ai = "7001", Fnc1Required = true, DataTitle = "NSN", RegularExpression = @"^7001(\d{13})$" }, - new ApplicationIdentifier { Ai = "7002", Fnc1Required = true, DataTitle = "MEAT CUT", RegularExpression = @"^7002([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "7002", Fnc1Required = true, DataTitle = "MEAT CUT", RegularExpression = @"^7002([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, new ApplicationIdentifier { Ai = "7003", Fnc1Required = true, DataTitle = "EXPIRY TIME", RegularExpression = @"^7003(\d{10})$" }, new ApplicationIdentifier { Ai = "7004", Fnc1Required = true, DataTitle = "ACTIVE POTENCY", RegularExpression = @"^7004(\d{0,4})$" }, - new ApplicationIdentifier { Ai = "7005", Fnc1Required = true, DataTitle = "CATCH AREA", RegularExpression = @"^7005([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,12})$" }, + new ApplicationIdentifier { Ai = "7005", Fnc1Required = true, DataTitle = "CATCH AREA", RegularExpression = @"^7005([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,12})$" }, new ApplicationIdentifier { Ai = "7006", Fnc1Required = true, DataTitle = "FIRST FREEZE DATE", RegularExpression = @"^7006(\d{6})$" }, new ApplicationIdentifier { Ai = "7007", Fnc1Required = true, DataTitle = "HARVEST DATE", RegularExpression = @"^7007(\d{6,12})$" }, - new ApplicationIdentifier { Ai = "7008", Fnc1Required = true, DataTitle = "AQUATIC SPECIES", RegularExpression = @"^7008([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,3})$" }, - new ApplicationIdentifier { Ai = "7009", Fnc1Required = true, DataTitle = "FISHING GEAR TYPE", RegularExpression = @"^7009([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,10})$" }, - new ApplicationIdentifier { Ai = "7010", Fnc1Required = true, DataTitle = "PROD METHOD", RegularExpression = @"^7010([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,2})$" }, - new ApplicationIdentifier { Ai = "7020", Fnc1Required = true, DataTitle = "REFURB LOT", RegularExpression = @"^7020([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "7021", Fnc1Required = true, DataTitle = "FUNC STAT", RegularExpression = @"^7021([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "7022", Fnc1Required = true, DataTitle = "REV STAT", RegularExpression = @"^7022([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "7023", Fnc1Required = true, DataTitle = "GIAI - ASSEMBLY", RegularExpression = @"^7023([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, - new ApplicationIdentifier { Ai = "7030", Fnc1Required = true, DataTitle = "PROCESSOR # 0", RegularExpression = @"^7030(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7031", Fnc1Required = true, DataTitle = "PROCESSOR # 1", RegularExpression = @"^7031(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7032", Fnc1Required = true, DataTitle = "PROCESSOR # 2", RegularExpression = @"^7032(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7033", Fnc1Required = true, DataTitle = "PROCESSOR # 3", RegularExpression = @"^7033(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7034", Fnc1Required = true, DataTitle = "PROCESSOR # 4", RegularExpression = @"^7034(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7035", Fnc1Required = true, DataTitle = "PROCESSOR # 5", RegularExpression = @"^7035(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7036", Fnc1Required = true, DataTitle = "PROCESSOR # 6", RegularExpression = @"^7036(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7037", Fnc1Required = true, DataTitle = "PROCESSOR # 7", RegularExpression = @"^7037(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7038", Fnc1Required = true, DataTitle = "PROCESSOR # 8", RegularExpression = @"^7038(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7039", Fnc1Required = true, DataTitle = "PROCESSOR # 9", RegularExpression = @"^7039(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, - new ApplicationIdentifier { Ai = "7040", Fnc1Required = false, DataTitle = "UIC+EXT", RegularExpression = @"7040(\d[\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{3})$" }, - new ApplicationIdentifier { Ai = "710", Fnc1Required = true, DataTitle = "NHRN PZN", RegularExpression = @"^710([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "711", Fnc1Required = true, DataTitle = "NHRN CIP", RegularExpression = @"^711([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "712", Fnc1Required = true, DataTitle = "NHRN CN", RegularExpression = @"^712([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "713", Fnc1Required = true, DataTitle = "NHRN DRN", RegularExpression = @"^713([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "714", Fnc1Required = true, DataTitle = "NHRN AIM", RegularExpression = @"^714([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "7230", Fnc1Required = true, DataTitle = "CERT #1", RegularExpression = @"^7230([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7231", Fnc1Required = true, DataTitle = "CERT #2", RegularExpression = @"^7231([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7232", Fnc1Required = true, DataTitle = "CERT #3", RegularExpression = @"^7232([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7233", Fnc1Required = true, DataTitle = "CERT #4", RegularExpression = @"^7233([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7234", Fnc1Required = true, DataTitle = "CERT #5", RegularExpression = @"^7234([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7235", Fnc1Required = true, DataTitle = "CERT #6", RegularExpression = @"^7235([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7236", Fnc1Required = true, DataTitle = "CERT #7", RegularExpression = @"^7236([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7237", Fnc1Required = true, DataTitle = "CERT #8", RegularExpression = @"^7237([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7238", Fnc1Required = true, DataTitle = "CERT #9", RegularExpression = @"^7238([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7239", Fnc1Required = true, DataTitle = "CERT #10", RegularExpression = @"^7239([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, - new ApplicationIdentifier { Ai = "7240", Fnc1Required = false, DataTitle = "PROTOCOL", RegularExpression = @"7240 ([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "7008", Fnc1Required = true, DataTitle = "AQUATIC SPECIES", RegularExpression = @"^7008([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,3})$" }, + new ApplicationIdentifier { Ai = "7009", Fnc1Required = true, DataTitle = "FISHING GEAR TYPE", RegularExpression = @"^7009([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,10})$" }, + new ApplicationIdentifier { Ai = "7010", Fnc1Required = true, DataTitle = "PROD METHOD", RegularExpression = @"^7010([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,2})$" }, + new ApplicationIdentifier { Ai = "7011", Fnc1Required = true, DataTitle = "TEST BY DATE", RegularExpression = @"^7011(\d{6})(\d{0,4})$" }, + new ApplicationIdentifier { Ai = "7020", Fnc1Required = true, DataTitle = "REFURB LOT", RegularExpression = @"^7020([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "7021", Fnc1Required = true, DataTitle = "FUNC STAT", RegularExpression = @"^7021([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "7022", Fnc1Required = true, DataTitle = "REV STAT", RegularExpression = @"^7022([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "7023", Fnc1Required = true, DataTitle = "GIAI - ASSEMBLY", RegularExpression = @"^7023([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "7030", Fnc1Required = true, DataTitle = "PROCESSOR # 0", RegularExpression = @"^7030(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7031", Fnc1Required = true, DataTitle = "PROCESSOR # 1", RegularExpression = @"^7031(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7032", Fnc1Required = true, DataTitle = "PROCESSOR # 2", RegularExpression = @"^7032(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7033", Fnc1Required = true, DataTitle = "PROCESSOR # 3", RegularExpression = @"^7033(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7034", Fnc1Required = true, DataTitle = "PROCESSOR # 4", RegularExpression = @"^7034(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7035", Fnc1Required = true, DataTitle = "PROCESSOR # 5", RegularExpression = @"^7035(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7036", Fnc1Required = true, DataTitle = "PROCESSOR # 6", RegularExpression = @"^7036(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7037", Fnc1Required = true, DataTitle = "PROCESSOR # 7", RegularExpression = @"^7037(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7038", Fnc1Required = true, DataTitle = "PROCESSOR # 8", RegularExpression = @"^7038(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7039", Fnc1Required = true, DataTitle = "PROCESSOR # 9", RegularExpression = @"^7039(\d{3})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,27})$" }, + new ApplicationIdentifier { Ai = "7040", Fnc1Required = false, DataTitle = "UIC+EXT", RegularExpression = @"^7040(\d[\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{3})$" }, + new ApplicationIdentifier { Ai = "710", Fnc1Required = true, DataTitle = "NHRN PZN", RegularExpression = @"^710([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "711", Fnc1Required = true, DataTitle = "NHRN CIP", RegularExpression = @"^711([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "712", Fnc1Required = true, DataTitle = "NHRN CN", RegularExpression = @"^712([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "713", Fnc1Required = true, DataTitle = "NHRN DRN", RegularExpression = @"^713([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "714", Fnc1Required = true, DataTitle = "NHRN AIM", RegularExpression = @"^714([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "715", Fnc1Required = true, DataTitle = "NHRN NDC", RegularExpression = @"^715([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "7230", Fnc1Required = true, DataTitle = "CERT #1", RegularExpression = @"^7230([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7231", Fnc1Required = true, DataTitle = "CERT #2", RegularExpression = @"^7231([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7232", Fnc1Required = true, DataTitle = "CERT #3", RegularExpression = @"^7232([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7233", Fnc1Required = true, DataTitle = "CERT #4", RegularExpression = @"^7233([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7234", Fnc1Required = true, DataTitle = "CERT #5", RegularExpression = @"^7234([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7235", Fnc1Required = true, DataTitle = "CERT #6", RegularExpression = @"^7235([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7236", Fnc1Required = true, DataTitle = "CERT #7", RegularExpression = @"^7236([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7237", Fnc1Required = true, DataTitle = "CERT #8", RegularExpression = @"^7237([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7238", Fnc1Required = true, DataTitle = "CERT #9", RegularExpression = @"^7238([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7239", Fnc1Required = true, DataTitle = "CERT #10", RegularExpression = @"^7239([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{2,30})$" }, + new ApplicationIdentifier { Ai = "7240", Fnc1Required = false, DataTitle = "PROTOCOL", RegularExpression = @"^7240([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, new ApplicationIdentifier { Ai = "8001", Fnc1Required = true, DataTitle = "DIMENSIONS", RegularExpression = @"^8001(\d{14})$" }, - new ApplicationIdentifier { Ai = "8002", Fnc1Required = true, DataTitle = "CMT No", RegularExpression = @"^8002([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "8003", Fnc1Required = true, DataTitle = "GRAI", RegularExpression = @"^8003(\d{14})([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,16})$" }, - new ApplicationIdentifier { Ai = "8004", Fnc1Required = true, DataTitle = "GIAI", RegularExpression = @"^8004([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "8002", Fnc1Required = true, DataTitle = "CMT No", RegularExpression = @"^8002([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "8003", Fnc1Required = true, DataTitle = "GRAI", RegularExpression = @"^8003(\d{14})([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,16})$" }, + new ApplicationIdentifier { Ai = "8004", Fnc1Required = true, DataTitle = "GIAI", RegularExpression = @"^8004([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, new ApplicationIdentifier { Ai = "8005", Fnc1Required = true, DataTitle = "PRICE PER UNIT", RegularExpression = @"^8005(\d{6})$" }, new ApplicationIdentifier { Ai = "8006", Fnc1Required = true, DataTitle = "ITIP", RegularExpression = @"^8006(\d{14})(\d{2})(\d{2})$" }, - new ApplicationIdentifier { Ai = "8007", Fnc1Required = true, DataTitle = "IBAN", RegularExpression = @"^8007([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,34})$" }, + new ApplicationIdentifier { Ai = "8007", Fnc1Required = true, DataTitle = "IBAN", RegularExpression = @"^8007([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,34})$" }, new ApplicationIdentifier { Ai = "8008", Fnc1Required = true, DataTitle = "PROD TIME", RegularExpression = @"^8008(\d{8})(\d{0,4})$" }, - new ApplicationIdentifier { Ai = "8009", Fnc1Required = true, DataTitle = "OPTSEN", RegularExpression = @"^8009([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,50})$" }, - new ApplicationIdentifier { Ai = "8010", Fnc1Required = true, DataTitle = "CPID", RegularExpression = @"^8010([\x23\x2D\x2F\x30-\x39\x41-\x5A]{0,30})$" }, + new ApplicationIdentifier { Ai = "8009", Fnc1Required = true, DataTitle = "OPTSEN", RegularExpression = @"^8009([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,50})$" }, + new ApplicationIdentifier { Ai = "8010", Fnc1Required = true, DataTitle = "CPID", RegularExpression = @"^8010([\x23\x2D\x2F\x30-\x39\x41-\x5A]{5,30})$" }, new ApplicationIdentifier { Ai = "8011", Fnc1Required = true, DataTitle = "CPID SERIAL", RegularExpression = @"^8011(\d{0,12})$" }, - new ApplicationIdentifier { Ai = "8012", Fnc1Required = true, DataTitle = "VERSION", RegularExpression = @"^8012([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, - new ApplicationIdentifier { Ai = "8013", Fnc1Required = true, DataTitle = "GMN (for medical devices, the default, global data title is BUDI-DI)", RegularExpression = @"^8013([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "8012", Fnc1Required = true, DataTitle = "VERSION", RegularExpression = @"^8012([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,20})$" }, + new ApplicationIdentifier { Ai = "8013", Fnc1Required = true, DataTitle = "GMN (for medical devices, the default, global data title is BUDI-DI)", RegularExpression = @"^8013([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,25})$" }, new ApplicationIdentifier { Ai = "8017", Fnc1Required = true, DataTitle = "GSRN - PROVIDER", RegularExpression = @"^8017(\d{18})$" }, new ApplicationIdentifier { Ai = "8018", Fnc1Required = true, DataTitle = "GSRN - RECIPIENT", RegularExpression = @"^8018(\d{18})$" }, new ApplicationIdentifier { Ai = "8019", Fnc1Required = true, DataTitle = "SRIN", RegularExpression = @"^8019(\d{0,10})$" }, - new ApplicationIdentifier { Ai = "8020", Fnc1Required = true, DataTitle = "REF No", RegularExpression = @"^8020([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,25})$" }, + new ApplicationIdentifier { Ai = "8020", Fnc1Required = true, DataTitle = "REF No", RegularExpression = @"^8020([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,25})$" }, new ApplicationIdentifier { Ai = "8026", Fnc1Required = true, DataTitle = "ITIP CONTENT", RegularExpression = @"^8026(\d{14})(\d{2})(\d{2})$" }, - new ApplicationIdentifier { Ai = "8110", Fnc1Required = true, DataTitle = "", RegularExpression = @"^8110([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "8110", Fnc1Required = true, DataTitle = "", RegularExpression = @"^8110([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, new ApplicationIdentifier { Ai = "8111", Fnc1Required = true, DataTitle = "POINTS", RegularExpression = @"^8111(\d{4})$" }, - new ApplicationIdentifier { Ai = "8112", Fnc1Required = true, DataTitle = "", RegularExpression = @"^8112([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, - new ApplicationIdentifier { Ai = "8200", Fnc1Required = true, DataTitle = "PRODUCT URL", RegularExpression = @"^8200([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, - new ApplicationIdentifier { Ai = "90", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^90([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, - new ApplicationIdentifier { Ai = "91", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^91([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "92", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^92([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "93", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^93([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "94", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^94([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "95", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^95([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "96", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^96([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "97", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^97([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "98", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^98([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, - new ApplicationIdentifier { Ai = "99", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^99([\x21-\x22\x25-\x2F\x30-\x39\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "8112", Fnc1Required = true, DataTitle = "", RegularExpression = @"^8112([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "8200", Fnc1Required = true, DataTitle = "PRODUCT URL", RegularExpression = @"^8200([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,70})$" }, + new ApplicationIdentifier { Ai = "90", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^90([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,30})$" }, + new ApplicationIdentifier { Ai = "91", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^91([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "92", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^92([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "93", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^93([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "94", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^94([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "95", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^95([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "96", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^96([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "97", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^97([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "98", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^98([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, + new ApplicationIdentifier { Ai = "99", Fnc1Required = true, DataTitle = "INTERNAL", RegularExpression = @"^99([\x21-\x22\x25-\x2F\x30-\x39\x3A-\x3F\x41-\x5A\x5F\x61-\x7A]{0,90})$" }, }; private sealed class ApplicationIdentifier