// This C++ source file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019

// Copyright (c) 2000-2019 Ericsson Telecom AB

// Do not edit this file unless you know what you are doing.

/* Including header files */

#include "CanError.hh"

namespace CanError {

/* Prototypes of static functions */

static void pre_init_module();

/* Literal string constants */

static const unsigned char os_9_octets[] = { 0 },
os_0_octets[] = { 0, 0, 0, 1 },
os_1_octets[] = { 0, 0, 0, 2 },
os_2_octets[] = { 0, 0, 0, 4 },
os_3_octets[] = { 0, 0, 0, 8 },
os_4_octets[] = { 0, 0, 0, 16 },
os_5_octets[] = { 0, 0, 0, 32 },
os_6_octets[] = { 0, 0, 0, 64 },
os_7_octets[] = { 0, 0, 0, 128 },
os_8_octets[] = { 0, 0, 1, 0 },
os_10_octets[] = { 1 },
os_11_octets[] = { 2 },
os_18_octets[] = { 3 },
os_12_octets[] = { 4 },
os_20_octets[] = { 5 },
os_19_octets[] = { 6 },
os_21_octets[] = { 7 },
os_13_octets[] = { 8 },
os_26_octets[] = { 9 },
os_28_octets[] = { 10 },
os_27_octets[] = { 11 },
os_24_octets[] = { 12 },
os_25_octets[] = { 13 },
os_23_octets[] = { 14 },
os_22_octets[] = { 15 },
os_14_octets[] = { 16 },
os_33_octets[] = { 18 },
os_29_octets[] = { 24 },
os_30_octets[] = { 25 },
os_32_octets[] = { 26 },
os_31_octets[] = { 27 },
os_15_octets[] = { 32 },
os_16_octets[] = { 64 },
os_34_octets[] = { 80 },
os_35_octets[] = { 96 },
os_36_octets[] = { 112 },
os_17_octets[] = { 128 };
static const OCTETSTRING os_9(1, os_9_octets),
os_0(4, os_0_octets),
os_1(4, os_1_octets),
os_2(4, os_2_octets),
os_3(4, os_3_octets),
os_4(4, os_4_octets),
os_5(4, os_5_octets),
os_6(4, os_6_octets),
os_7(4, os_7_octets),
os_8(4, os_8_octets),
os_10(1, os_10_octets),
os_11(1, os_11_octets),
os_18(1, os_18_octets),
os_12(1, os_12_octets),
os_20(1, os_20_octets),
os_19(1, os_19_octets),
os_21(1, os_21_octets),
os_13(1, os_13_octets),
os_26(1, os_26_octets),
os_28(1, os_28_octets),
os_27(1, os_27_octets),
os_24(1, os_24_octets),
os_25(1, os_25_octets),
os_23(1, os_23_octets),
os_22(1, os_22_octets),
os_14(1, os_14_octets),
os_33(1, os_33_octets),
os_29(1, os_29_octets),
os_30(1, os_30_octets),
os_32(1, os_32_octets),
os_31(1, os_31_octets),
os_15(1, os_15_octets),
os_16(1, os_16_octets),
os_34(1, os_34_octets),
os_35(1, os_35_octets),
os_36(1, os_36_octets),
os_17(1, os_17_octets);
static const unsigned char module_checksum[] = { 0xa1, 0x48, 0x1f, 0x80, 0xd2, 0x74, 0xfa, 0xcc, 0xdb, 0xb8, 0x7b, 0x2f, 0x67, 0xc4, 0x12, 0xe5 };

/* Global variable definitions */

static INTEGER const_CAN__ERR__DLC;
const INTEGER& CAN__ERR__DLC = const_CAN__ERR__DLC;
static OCTETSTRING const_CAN__ERR__TX__TIMEOUT;
const OCTETSTRING& CAN__ERR__TX__TIMEOUT = const_CAN__ERR__TX__TIMEOUT;
static OCTETSTRING const_CAN__ERR__LOSTARB;
const OCTETSTRING& CAN__ERR__LOSTARB = const_CAN__ERR__LOSTARB;
static OCTETSTRING const_CAN__ERR__CRTL;
const OCTETSTRING& CAN__ERR__CRTL = const_CAN__ERR__CRTL;
static OCTETSTRING const_CAN__ERR__PROT;
const OCTETSTRING& CAN__ERR__PROT = const_CAN__ERR__PROT;
static OCTETSTRING const_CAN__ERR__TRX;
const OCTETSTRING& CAN__ERR__TRX = const_CAN__ERR__TRX;
static OCTETSTRING const_CAN__ERR__ACK;
const OCTETSTRING& CAN__ERR__ACK = const_CAN__ERR__ACK;
static OCTETSTRING const_CAN__ERR__BUSOFF;
const OCTETSTRING& CAN__ERR__BUSOFF = const_CAN__ERR__BUSOFF;
static OCTETSTRING const_CAN__ERR__BUSERROR;
const OCTETSTRING& CAN__ERR__BUSERROR = const_CAN__ERR__BUSERROR;
static OCTETSTRING const_CAN__ERR__RESTARTED;
const OCTETSTRING& CAN__ERR__RESTARTED = const_CAN__ERR__RESTARTED;
static OCTETSTRING const_CAN__ERR__LOSTARB__UNSPEC;
const OCTETSTRING& CAN__ERR__LOSTARB__UNSPEC = const_CAN__ERR__LOSTARB__UNSPEC;
static OCTETSTRING const_CAN__ERR__CRTL__UNSPEC;
const OCTETSTRING& CAN__ERR__CRTL__UNSPEC = const_CAN__ERR__CRTL__UNSPEC;
static OCTETSTRING const_CAN__ERR__CRTL__RX__OVERFLOW;
const OCTETSTRING& CAN__ERR__CRTL__RX__OVERFLOW = const_CAN__ERR__CRTL__RX__OVERFLOW;
static OCTETSTRING const_CAN__ERR__CRTL__TX__OVERFLOW;
const OCTETSTRING& CAN__ERR__CRTL__TX__OVERFLOW = const_CAN__ERR__CRTL__TX__OVERFLOW;
static OCTETSTRING const_CAN__ERR__CRTL__RX__WARNING;
const OCTETSTRING& CAN__ERR__CRTL__RX__WARNING = const_CAN__ERR__CRTL__RX__WARNING;
static OCTETSTRING const_CAN__ERR__CRTL__TX__WARNING;
const OCTETSTRING& CAN__ERR__CRTL__TX__WARNING = const_CAN__ERR__CRTL__TX__WARNING;
static OCTETSTRING const_CAN__ERR__CRTL__RX__PASSIVE;
const OCTETSTRING& CAN__ERR__CRTL__RX__PASSIVE = const_CAN__ERR__CRTL__RX__PASSIVE;
static OCTETSTRING const_CAN__ERR__CRTL__TX__PASSIVE;
const OCTETSTRING& CAN__ERR__CRTL__TX__PASSIVE = const_CAN__ERR__CRTL__TX__PASSIVE;
static OCTETSTRING const_CAN__ERR__CRTL__ACTIVE;
const OCTETSTRING& CAN__ERR__CRTL__ACTIVE = const_CAN__ERR__CRTL__ACTIVE;
static OCTETSTRING const_CAN__ERR__PROT__UNSPEC;
const OCTETSTRING& CAN__ERR__PROT__UNSPEC = const_CAN__ERR__PROT__UNSPEC;
static OCTETSTRING const_CAN__ERR__PROT__BIT;
const OCTETSTRING& CAN__ERR__PROT__BIT = const_CAN__ERR__PROT__BIT;
static OCTETSTRING const_CAN__ERR__PROT__FORM;
const OCTETSTRING& CAN__ERR__PROT__FORM = const_CAN__ERR__PROT__FORM;
static OCTETSTRING const_CAN__ERR__PROT__STUFF;
const OCTETSTRING& CAN__ERR__PROT__STUFF = const_CAN__ERR__PROT__STUFF;
static OCTETSTRING const_CAN__ERR__PROT__BIT0;
const OCTETSTRING& CAN__ERR__PROT__BIT0 = const_CAN__ERR__PROT__BIT0;
static OCTETSTRING const_CAN__ERR__PROT__BIT1;
const OCTETSTRING& CAN__ERR__PROT__BIT1 = const_CAN__ERR__PROT__BIT1;
static OCTETSTRING const_CAN__ERR__PROT__OVERLOAD;
const OCTETSTRING& CAN__ERR__PROT__OVERLOAD = const_CAN__ERR__PROT__OVERLOAD;
static OCTETSTRING const_CAN__ERR__PROT__ACTIVE;
const OCTETSTRING& CAN__ERR__PROT__ACTIVE = const_CAN__ERR__PROT__ACTIVE;
static OCTETSTRING const_CAN__ERR__PROT__TX;
const OCTETSTRING& CAN__ERR__PROT__TX = const_CAN__ERR__PROT__TX;
static OCTETSTRING const_CAN__ERR__PROT__LOC__UNSPEC;
const OCTETSTRING& CAN__ERR__PROT__LOC__UNSPEC = const_CAN__ERR__PROT__LOC__UNSPEC;
static OCTETSTRING const_CAN__ERR__PROT__LOC__SOF;
const OCTETSTRING& CAN__ERR__PROT__LOC__SOF = const_CAN__ERR__PROT__LOC__SOF;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ID28__21;
const OCTETSTRING& CAN__ERR__PROT__LOC__ID28__21 = const_CAN__ERR__PROT__LOC__ID28__21;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ID20__18;
const OCTETSTRING& CAN__ERR__PROT__LOC__ID20__18 = const_CAN__ERR__PROT__LOC__ID20__18;
static OCTETSTRING const_CAN__ERR__PROT__LOC__SRTR;
const OCTETSTRING& CAN__ERR__PROT__LOC__SRTR = const_CAN__ERR__PROT__LOC__SRTR;
static OCTETSTRING const_CAN__ERR__PROT__LOC__IDE;
const OCTETSTRING& CAN__ERR__PROT__LOC__IDE = const_CAN__ERR__PROT__LOC__IDE;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ID17__13;
const OCTETSTRING& CAN__ERR__PROT__LOC__ID17__13 = const_CAN__ERR__PROT__LOC__ID17__13;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ID12__05;
const OCTETSTRING& CAN__ERR__PROT__LOC__ID12__05 = const_CAN__ERR__PROT__LOC__ID12__05;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ID04__00;
const OCTETSTRING& CAN__ERR__PROT__LOC__ID04__00 = const_CAN__ERR__PROT__LOC__ID04__00;
static OCTETSTRING const_CAN__ERR__PROT__LOC__RTR;
const OCTETSTRING& CAN__ERR__PROT__LOC__RTR = const_CAN__ERR__PROT__LOC__RTR;
static OCTETSTRING const_CAN__ERR__PROT__LOC__RES1;
const OCTETSTRING& CAN__ERR__PROT__LOC__RES1 = const_CAN__ERR__PROT__LOC__RES1;
static OCTETSTRING const_CAN__ERR__PROT__LOC__RES0;
const OCTETSTRING& CAN__ERR__PROT__LOC__RES0 = const_CAN__ERR__PROT__LOC__RES0;
static OCTETSTRING const_CAN__ERR__PROT__LOC__DLC;
const OCTETSTRING& CAN__ERR__PROT__LOC__DLC = const_CAN__ERR__PROT__LOC__DLC;
static OCTETSTRING const_CAN__ERR__PROT__LOC__DATA;
const OCTETSTRING& CAN__ERR__PROT__LOC__DATA = const_CAN__ERR__PROT__LOC__DATA;
static OCTETSTRING const_CAN__ERR__PROT__LOC__CRC__SEQ;
const OCTETSTRING& CAN__ERR__PROT__LOC__CRC__SEQ = const_CAN__ERR__PROT__LOC__CRC__SEQ;
static OCTETSTRING const_CAN__ERR__PROT__LOC__CRC__DEL;
const OCTETSTRING& CAN__ERR__PROT__LOC__CRC__DEL = const_CAN__ERR__PROT__LOC__CRC__DEL;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ACK;
const OCTETSTRING& CAN__ERR__PROT__LOC__ACK = const_CAN__ERR__PROT__LOC__ACK;
static OCTETSTRING const_CAN__ERR__PROT__LOC__ACK__DEL;
const OCTETSTRING& CAN__ERR__PROT__LOC__ACK__DEL = const_CAN__ERR__PROT__LOC__ACK__DEL;
static OCTETSTRING const_CAN__ERR__PROT__LOC__EOF;
const OCTETSTRING& CAN__ERR__PROT__LOC__EOF = const_CAN__ERR__PROT__LOC__EOF;
static OCTETSTRING const_CAN__ERR__PROT__LOC__INTERM;
const OCTETSTRING& CAN__ERR__PROT__LOC__INTERM = const_CAN__ERR__PROT__LOC__INTERM;
static OCTETSTRING const_CAN__ERR__TRX__UNSPEC;
const OCTETSTRING& CAN__ERR__TRX__UNSPEC = const_CAN__ERR__TRX__UNSPEC;
static OCTETSTRING const_CAN__ERR__TRX__CANH__NO__WIRE;
const OCTETSTRING& CAN__ERR__TRX__CANH__NO__WIRE = const_CAN__ERR__TRX__CANH__NO__WIRE;
static OCTETSTRING const_CAN__ERR__TRX__CANH__SHORT__TO__BAT;
const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__BAT = const_CAN__ERR__TRX__CANH__SHORT__TO__BAT;
static OCTETSTRING const_CAN__ERR__TRX__CANH__SHORT__TO__VCC;
const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__VCC = const_CAN__ERR__TRX__CANH__SHORT__TO__VCC;
static OCTETSTRING const_CAN__ERR__TRX__CANH__SHORT__TO__GND;
const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__GND = const_CAN__ERR__TRX__CANH__SHORT__TO__GND;
static OCTETSTRING const_CAN__ERR__TRX__CANL__NO__WIRE;
const OCTETSTRING& CAN__ERR__TRX__CANL__NO__WIRE = const_CAN__ERR__TRX__CANL__NO__WIRE;
static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__BAT;
const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__BAT = const_CAN__ERR__TRX__CANL__SHORT__TO__BAT;
static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__VCC;
const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__VCC = const_CAN__ERR__TRX__CANL__SHORT__TO__VCC;
static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__GND;
const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__GND = const_CAN__ERR__TRX__CANL__SHORT__TO__GND;
static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__CANH;
const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__CANH = const_CAN__ERR__TRX__CANL__SHORT__TO__CANH;
TTCN_Module module_object("CanError", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
  current_runtime_version.requires_minor_version_6,
  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);

/* Bodies of static functions */

static void pre_init_module()
{
TTCN_Location current_location("../src/CanError.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CanError");
current_location.update_lineno(16);
#line 16 "../src/CanError.ttcn"
const_CAN__ERR__DLC = 8;
current_location.update_lineno(19);
#line 19 "../src/CanError.ttcn"
const_CAN__ERR__TX__TIMEOUT = os_0;
current_location.update_lineno(20);
#line 20 "../src/CanError.ttcn"
const_CAN__ERR__LOSTARB = os_1;
current_location.update_lineno(21);
#line 21 "../src/CanError.ttcn"
const_CAN__ERR__CRTL = os_2;
current_location.update_lineno(22);
#line 22 "../src/CanError.ttcn"
const_CAN__ERR__PROT = os_3;
current_location.update_lineno(23);
#line 23 "../src/CanError.ttcn"
const_CAN__ERR__TRX = os_4;
current_location.update_lineno(24);
#line 24 "../src/CanError.ttcn"
const_CAN__ERR__ACK = os_5;
current_location.update_lineno(25);
#line 25 "../src/CanError.ttcn"
const_CAN__ERR__BUSOFF = os_6;
current_location.update_lineno(26);
#line 26 "../src/CanError.ttcn"
const_CAN__ERR__BUSERROR = os_7;
current_location.update_lineno(27);
#line 27 "../src/CanError.ttcn"
const_CAN__ERR__RESTARTED = os_8;
current_location.update_lineno(30);
#line 30 "../src/CanError.ttcn"
const_CAN__ERR__LOSTARB__UNSPEC = os_9;
current_location.update_lineno(34);
#line 34 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__UNSPEC = os_9;
current_location.update_lineno(35);
#line 35 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__RX__OVERFLOW = os_10;
current_location.update_lineno(36);
#line 36 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__TX__OVERFLOW = os_11;
current_location.update_lineno(37);
#line 37 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__RX__WARNING = os_12;
current_location.update_lineno(38);
#line 38 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__TX__WARNING = os_13;
current_location.update_lineno(39);
#line 39 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__RX__PASSIVE = os_14;
current_location.update_lineno(40);
#line 40 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__TX__PASSIVE = os_15;
current_location.update_lineno(43);
#line 43 "../src/CanError.ttcn"
const_CAN__ERR__CRTL__ACTIVE = os_16;
current_location.update_lineno(46);
#line 46 "../src/CanError.ttcn"
const_CAN__ERR__PROT__UNSPEC = os_9;
current_location.update_lineno(47);
#line 47 "../src/CanError.ttcn"
const_CAN__ERR__PROT__BIT = os_10;
current_location.update_lineno(48);
#line 48 "../src/CanError.ttcn"
const_CAN__ERR__PROT__FORM = os_11;
current_location.update_lineno(49);
#line 49 "../src/CanError.ttcn"
const_CAN__ERR__PROT__STUFF = os_12;
current_location.update_lineno(50);
#line 50 "../src/CanError.ttcn"
const_CAN__ERR__PROT__BIT0 = os_13;
current_location.update_lineno(51);
#line 51 "../src/CanError.ttcn"
const_CAN__ERR__PROT__BIT1 = os_14;
current_location.update_lineno(52);
#line 52 "../src/CanError.ttcn"
const_CAN__ERR__PROT__OVERLOAD = os_15;
current_location.update_lineno(53);
#line 53 "../src/CanError.ttcn"
const_CAN__ERR__PROT__ACTIVE = os_16;
current_location.update_lineno(54);
#line 54 "../src/CanError.ttcn"
const_CAN__ERR__PROT__TX = os_17;
current_location.update_lineno(57);
#line 57 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__UNSPEC = os_9;
current_location.update_lineno(58);
#line 58 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__SOF = os_18;
current_location.update_lineno(59);
#line 59 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ID28__21 = os_11;
current_location.update_lineno(60);
#line 60 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ID20__18 = os_19;
current_location.update_lineno(61);
#line 61 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__SRTR = os_12;
current_location.update_lineno(62);
#line 62 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__IDE = os_20;
current_location.update_lineno(63);
#line 63 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ID17__13 = os_21;
current_location.update_lineno(64);
#line 64 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ID12__05 = os_22;
current_location.update_lineno(65);
#line 65 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ID04__00 = os_23;
current_location.update_lineno(66);
#line 66 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__RTR = os_24;
current_location.update_lineno(67);
#line 67 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__RES1 = os_25;
current_location.update_lineno(68);
#line 68 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__RES0 = os_26;
current_location.update_lineno(69);
#line 69 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__DLC = os_27;
current_location.update_lineno(70);
#line 70 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__DATA = os_28;
current_location.update_lineno(71);
#line 71 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__CRC__SEQ = os_13;
current_location.update_lineno(72);
#line 72 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__CRC__DEL = os_29;
current_location.update_lineno(73);
#line 73 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ACK = os_30;
current_location.update_lineno(74);
#line 74 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__ACK__DEL = os_31;
current_location.update_lineno(75);
#line 75 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__EOF = os_32;
current_location.update_lineno(76);
#line 76 "../src/CanError.ttcn"
const_CAN__ERR__PROT__LOC__INTERM = os_33;
current_location.update_lineno(80);
#line 80 "../src/CanError.ttcn"
const_CAN__ERR__TRX__UNSPEC = os_9;
current_location.update_lineno(81);
#line 81 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANH__NO__WIRE = os_12;
current_location.update_lineno(82);
#line 82 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANH__SHORT__TO__BAT = os_20;
current_location.update_lineno(83);
#line 83 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANH__SHORT__TO__VCC = os_19;
current_location.update_lineno(84);
#line 84 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANH__SHORT__TO__GND = os_21;
current_location.update_lineno(85);
#line 85 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANL__NO__WIRE = os_16;
current_location.update_lineno(86);
#line 86 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANL__SHORT__TO__BAT = os_34;
current_location.update_lineno(87);
#line 87 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANL__SHORT__TO__VCC = os_35;
current_location.update_lineno(88);
#line 88 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANL__SHORT__TO__GND = os_36;
current_location.update_lineno(89);
#line 89 "../src/CanError.ttcn"
const_CAN__ERR__TRX__CANL__SHORT__TO__CANH = os_17;
}


} /* end of namespace */
