diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000000000000000000000000000000000..ec54747a07154dea4e222ab491cc7428ed74caec --- /dev/null +++ b/.clang-format @@ -0,0 +1,115 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlines: Right +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 160 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 2 +ContinuationIndentWidth: 2 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 2 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: All +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +RawStringFormats: + - Delimiter: pb + Language: TextProto + BasedOnStyle: google +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..6c70c358709a8f03ed3c8a8582cd724b811211de --- /dev/null +++ b/.gitmodules @@ -0,0 +1,8 @@ +[submodule "titan-test-system-framework"] + path = titan-test-system-framework + url = https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git + branch = devel +[submodule "ttcn/LibCommon"] + path = ttcn/LibCommon + url = https://forge.etsi.org/rep/LIBS/LibCommon.git + branch = master diff --git a/.jenkins.sh b/.jenkins.sh new file mode 100755 index 0000000000000000000000000000000000000000..efcd02101ace8d317474ea8965dbc70659f7758d --- /dev/null +++ b/.jenkins.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Copyright ETSI 2018-2021 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +set -vx +#set -e + +cd $(dirname $0) + +run_dir=`pwd` + +# Docker version 2 +cd ./virtualization/docker-dev +./build.sh #--force-stfubuntu +#./run.sh + +if [ "$1" == "--remove" ] +then + docker rmi --force cise_devel:latest +fi + +cd - diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..116a9ad52d8b272da89f5785c7aec317e7ba7bd8 --- /dev/null +++ b/Makefile @@ -0,0 +1,131 @@ +-include config.mk + +ifeq (,$(ATS)) + $(error ATS shall be defined) +endif + +ifeq (,$(TOPDIR)) + TOPDIR := . +endif + +ifeq (,$(TTCN3_DIR)) + $(error TTCN3_DIR shall be defined in config.mk) +endif +first: all + +define IncludeModule +undefine sources +undefine modules +undefine includes +include $(1)/module.mk +$$(foreach S, $$(sources), $$(eval all_sources += $(1)/$$(S))) +$$(foreach I, $$(includes), $$(eval all_includes += $(1)/$$(I))) +$$(foreach M, $$(modules), $$(eval $$(call IncludeModule, $$(if $$(filter /%, $$(M)), $$(M), $(1)/$$(M))))) +endef + +all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src +defines += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS) AS_USE_SSL +libs += $(TTCN3_DIR)/lib/libttcn3-rt2-parallel.a -lstdc++fs + +ifeq (Windows_NT,$(OS)) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +defines += WIN32 +libs += $(patsubst %, -L%/lib, $(OPENSSL_DIR)) +all_includes += $(addsuffix /include, $(OPENSSL_DIR)) +libs += $(WPCAP_DLL_PATH) +else +defines += LINUX +libs += -lpcap -lrt -lpthread +endif + +libs += -lssl -lcrypto -lxml2 -lxslt + +$(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS))) + +outdir := $(TOPDIR)/build/$(ATS) +bindir := $(TOPDIR)/bin + +sources := $(sort $(all_sources)) +includes := $(outdir) $(outdir)/.. $(all_includes) /usr/include/libxml2 $(NPCAP_INCLUDE) + +ifeq (Windows_NT,$(OS)) + EXE=.exe +endif + +ttcn_sources := $(filter %.ttcn , $(sources)) +ttcn3_sources := $(filter %.ttcn3, $(sources)) + +tt_sources := $(ttcn_sources) $(ttcn3_sources) +cc_sources := $(filter %.cc, $(sources)) + +gen_ttcn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.cc, $(ttcn_sources)))) +gen_ttcn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.hh, $(ttcn_sources)))) +gen_ttcn3_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.cc, $(ttcn3_sources)))) +gen_ttcn3_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.hh, $(ttcn3_sources)))) + +gen_sources := $(gen_ttcn_sources) $(gen_ttcn3_sources) +gen_headers := $(gen_ttcn_headers) $(gen_ttcn3_headers) + +gen_objects := $(patsubst %.cc, %.o, $(gen_sources)) +cc_objects := $(patsubst %.cc, $(outdir)/%.o, $(cc_sources)) + +.PHONY: all FORCE echo + +all: $(bindir) $(outdir) $(bindir)/$(ATS)$(EXE) + +echo_sources: + @echo -e "$(addsuffix \n,$(all_sources))" + +echo: echo_sources + @echo -e "sources:\n $(addsuffix \n, $(sources))" + @echo -e "gen_sources:\n $(addsuffix \n, $(gen_sources))" + @echo -e "gen_objects:\n $(addsuffix \n, $(gen_objects))" + @echo -e "cc_objects:\n $(addsuffix \n, $(cc_objects))" + @echo -e "includes:\n $(addsuffix \n, $(includes))" + @echo -e "defines: $(addsuffix \n, $(defines))" + +clean: + rm -f $(outdir)/$(ATS)$(EXE) $(gen_objects) $(gen_sources) $(gen_headers) $(cc_objects) $(outdir)/.generate + +regen: force_regen $(outdir)/.generate +force_regen: + rm -f $(outdir)/.generate + +t3q: all + @echo -e "Code checking in progress..." + @java -Xmx3g -Xss512m -jar $(T3Q_PATH)/t3q.jar --config $(T3Q_PATH)/$(T3Q_CONFIG) $(tt_sources) > $(outdir)/t3q.out 2>&1 ; cd - + @echo -e "Code checking in done..." + @echo -e "Output file is located here: $(outdir)/t3q.out" + +t3d: all + @echo -e "TTCN-3 doc generation in progress..." + @java -Xmx3g -Xss512m -jar $(T3D_PATH)/t3d.jar --config $(T3D_PATH)/$(T3D_CONFIG) $(tt_sources) > $(outdir)/t3d.out 2>&1 ; cd - + @echo -e "TTCN-3 doc generation done..." + @echo -e "Output file is located here: $(outdir)/t3d.out" + +$(outdir) $(bindir): + mkdir -p $@ + +$(bindir)/$(ATS)$(EXE): $(gen_objects) $(cc_objects) + g++ -g -O0 -std=c++17 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(libs) + +$(gen_objects) :%.o :%.cc + g++ -g -O0 -std=c++17 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $< + +$(cc_objects) : $(outdir)/%.o : %.cc + mkdir -p $(dir $@) + g++ -g -O0 -std=c++17 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $< + +#$(gen_sources): +# $(TTCN3_DIR)/bin/compiler -n -e -L -R -U none -o $(outdir) $(tt_sources) + +$(gen_sources): $(outdir)/.generate + +$(outdir)/.generate: Makefile $(tt_sources) + $(TTCN3_DIR)/bin/compiler $(TTCN3_COMPILER_OPTIONS) -o $(outdir) $(tt_sources) + touch $@ + +$(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S))) +$(foreach S, $(ttcn3_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn3, %.cc, $(S))): $(S))) + diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9274711ad28023eeb8abb54d0fc41afc51ce8b12 --- /dev/null +++ b/README.md @@ -0,0 +1,380 @@ +# CISE Testing Framework in TTCN-3 + +## Introduction +This repositories contains the test specifications and test adapter code for CISE API Conformance Testing in TTCN-3. + +More information and dowload of the standard at [here](https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=66165). + +For more information on ETSI ISG Commom Data MODEL (CDM), visit [here](https://www.etsi.org/technologies/maritime). + +## Contact information + +Email at `cti_support` at `etsi` dot `org`. + +## License + +Unless specified otherwise, the content of this repository and the files contained are released under the BSD-3-Clause license. +See the attached LICENSE file or visit https://forge.etsi.org/legal-matters. + +## Standard links +- CISE standards, accessible [here](https://www.etsi.org/standards#page=1&search=CISE&title=1&etsiNumber=1&content=1&version=0&onApproval=1&published=1&historical=1&startDate=1988-01-15&endDate=2022-11-07&harmonized=0&keyword=&TB=&stdType=&frequency=&mandate=&collection=&sort=1). + +## RFC links +- RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format, accessible [here](https://tools.ietf.org/html/rfc7159.html) + +NOTE All drafts can be found in the 'IETF XML Registry', accessible [here](https://www.iana.org/assignments/xml-registry/xml-registry.xhtml) + +## Download required libraries + +This projects requires the LibCommon and Titan libraries to compile. The libraries location are git submodules of the current repository. + +Once you have cloned the present repository, in order to install the libraries you want to execute: + + git submodule init + git submodule update + +Alternatively, you may clone the project together with the required libraries with the following command: + + git clone --recurse-submodules + +# Installation + +The CISE Test System builds and tests regularly on the following platforms: + + - Linux (Ubuntu) + +Note: The [OpenSSL](https://www.openssl.org) version > 1.1.x is also required. + +## How to do it? + +They are two different methods: +- Using [Vagrant](https://www.vagrantup.com/) +- Using [Docker](https://www.docker.com/) + +How to choose one of these methods is depending of your host system. + +NOTE: In all case, if you want to setup an continuous integration process (e.g. Jenkins), Docker is the best choice. + + +### The host system is Windows +The both methods require a virtual machine. You can use either VirtualBox or WMware. +In this case, the easiest way is to use Vagrant. + + +### The host system is Linux + +Vagrant requires a virtual machine. You can use either VirtualBox or WMware. +Docker does not need a virtual machine, so it is the more efficant way. + +The following clauses describes four ways to build and deploy the CISE Test System: +- [Using TITAN compiler running on a Docker image](#using-titan-compiler-on-a-docker-image) +- [Using development Docker image](#using-development-docker-image) +- [Using Vagrant](#using-vagrant) +- [From scratch](#from-scratch) + + +## Using TITAN compiler running on a Docker image + +In this configuration, TITAN compiler is located on a Docker image and the sources and the outputs are located on the host. + +Pre-requisites on your host machine: +- Install Docker + +Procedure on the host machine: +- Open a Terminal +- Clone the ETSI CISE Test System +- [Install Test System certificates](#generate-certificates-for-tls-and-cise-security-support) + +```sh +$ git clone --recurse-submodules --branch stf637 https://forge.etsi.org/rep/cdm/cise-data-model ./cise-data-model +$ cd /home/etsi/dev/cise-data-model/titan-test-system-framework +$ git checkout devel +$ cd /home/etsi/dev/cise-data-model/titan-test-system-framework/ttcn/LibHttp +$ ln -sf module_cise.mk module.mk +``` + +- Patch the LibCommon + +```sh +$ cd /home/etsi/dev/cise-data-model +$ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ +$ cp ./ttcn/patch_lib_common_titan/ttcn/*.ttcn ./ttcn/LibCommon/ttcn +``` + +- From the ETSI CISE Test System root directory, build the Docker image executing the following commands: + +```sh +$ cd /home/etsi/dev/cise-data-model/virtualization/docker +$ docker build --no-cache --tag alpine-cise -f Dockerfile --force-rm . +$ docker images +``` + +To build the CISE Test Suite, execute the following command: + +```sh +$ ./docker-run.sh build +``` + +Possble other options are 'clean' to remove all the build outputs or 'rebuild' to force a build of the Test Suite after a 'clean'. + +To retrieve the list of the available test cases, execute the following command: + +```sh +$ ./docker-run.sh list +``` + +Before to execute the CISE Test Suite, prepare, edit and update the configuration file: + +```sh +$ ln -sf ../../etc/AtsCise/AtsCise_Cnit.cf_ ../../etc/AtsCise/AtsCise.cfg +$ vi ../../etc/AtsCise/AtsCise.cfg # To update it +``` + +The paramaters to be updated are: +- PICS_CISE_CERTIFICATES_DB_PATH +- PICS_CISE_TS_CERTIFICATE +- PICS_CISE_TS_SIGNING_PRIVATE_KEY +- PICS_CISE_TS_SIGNING_PRIVATE_PASSWD +- PICS_HEADER_HOST +- system.httpPort.params +- system.httpPort_notif.params + +To execute the CISE Test Suite, execute the following command: + +```sh +$ ./docker-run.sh run +``` + +Notes: +- The CISE Test System is listening on port 30181 +- Updating the file etc/AtsCise.cfg is about: +. Selecting the test(s) to be executed +. Updating value of PICs and PIXITs +. Updating HTTP port setting + + +## Using development Docker image + +In this configuration, the TITAN compiler, the sources and the outputs are located on the Docker image. + +Pre-requisites on your host machine: +- Install Docker + +Procedure for a Windows host machine: +- On your host machine, open a the Docker Quickstart Terminal +- On your host machine, clone the ETSI CISE Test System. NOTE that only Docker folder and .jenkins.sh script file are required +- From the ETSI CISE Test System root directory, execute the following commands: + +```sh +$ ./.jenkins.sh +... +``` + +NOTE The creation and the installations will take some time to achieve +- Start the container + +```sh +$ ./docker/run-container.sh +... +``` + +- Switch to the next clause (Usage) + + +## Using Vagrant + +Pre-requisites on your host machine: +- Install [Virtualbox](https://www.virtualbox.org/manual/ch01.html) +- Install [Vagrant](https://www.vagrantup.com/intro/getting-started/) +- Install Vagrant plugin vagrant-vbguest +- Credentials to access [ETSI forge](https://forge.etsi.org/gitlab/users/sign_in) + - Set the environment variable USERNAME to your ETSI EOL account user name + - Set the environment variable PASSWORD to your ETSI EOL account password + +Procedure: +- On your host machine, open a command line session (PuTTY, DOS window...) +- From the ETSI CISE Test System, clone the Vagrant folder +- In the file Vagrantfile, modify the tag config.vm.provision replacing & strings by your ETSI credentials +- In the Vagrant folder, execute the following commands: + +```sh +$ vagrant up --provider virtualbox --provision +... +``` + +NOTE The creation and the installations will take some time to achieve +- Stop vagrant virtual machine + +```sh +$ vagrant halt +... +``` + +- Update the file 'Vagrantfile' to match with your networks configuration +- Re-start the vagrant virtual machine and log to to the machine + +```sh +$ vagrant up +... +$ vagrant ssh +``` + +- Switch to the next clause (Usage) + +NOTE The user password is vagrant. + + +## From scratch + +Pre-requisites: +- Install Virtualbox + +Procedure: +- Install a new Linux Virtual machine (Mint, Debian...) +- Update your system with the latest version of kernel and security packages +- Install the following packages (According to the Linux chosen, the package naming can be different) + autoconf + bison + build-essential + cmake + curl + dos2unix + doxygen + emacs + expect + flex + g++:latest + gcc:latest + graphviz + gdb + git-core + gnutls-bin + libglib2.0-dev + libpcap-dev + libgcrypt-dev + libncurses5-dev + libssl-dev + libtool-bin + libtool + libwireshark-dev + libxml2-dev + lsof + ntp + pkg-config + qt5-default + qtmultimedia5-dev + libqt5svg5-dev + subversion + sudo + sshpass + tcpdump + texlive-font-utils + tshark + valgrind + vim + vsftpd + xutils-dev + tree + tzdata + unzip + wget + xsltproc +- In your home directory, create the following folders: + - $HOME/frameworks, + - $HOME/dev + - $HOME/lib +- In $HOME/frameworks, build the following package: + - Eclipse IDE for C/C++ Developers, according the procedure specified [here](https://www.eclipse.org/cdt/) + - TITAN, according the procedure specified [here](https://github.com/eclipse/titan.core) + - Import the TITAN plugin into your Eclipse IDE, according the procedure specified [here](https://github.com/eclipse/titan.core) +- Clone the ETSI CISE Test System into $HOME/dev folder + +```sh +$ git clone --recurse-submodules --branch --branch stf637 https://forge.etsi.org/rep/cdm/cise-data-model ./cise-data-model +$ cd /home/etsi/dev/cise-data-model/titan-test-system-framework +$ git checkout devel +$ cd /home/etsi/dev/cise-data-model/titan-test-system-framework/ttcn/LibHttp +$ ln -sf module_cise.mk module.mk +``` + +- Apply patches + +```sh +$ cd /home/etsi/dev/cise-data-model +$ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ +$ cp ./ttcn/patch_lib_common_titan/ttcn/*.ttcn ./ttcn/LibCommon/ttcn/ +``` + +- Update your default environment with the content of the script $HOME/dev/cise-data-model/scripts/devenv.bash.ubuntu + +- Switch to the next clause (Usage) + + +# Generate certificates for TLS and Cise security support + +This clause describes how generate certificates desrived from Let's encrypt certificate. These certificate will be used for TS mutual authentication and for Cise Security tests. +NOTE: +- Certficates shall be renewed every 3 months +- The port 80 shall be vailable for standalone validation + +Pre-requisites: +- You need to install python and [certbot](https://manpages.ubuntu.com/manpages/impish/en/man1/certbot.1.html). + +To generate certifcates, execute the following command: + +```sh +$ export REQUESTS_CA_BUNDLE=$(dirname `python -c "import certifi; print(certifi.where())"`) +$ mkdir -p $HOME/var/ssl +$ sudo certbot certonly --debug --cise-tls-cert --config-dir $HOME/var/ssl --work-dir $HOME/var/ssl --logs-dir $HOME/var/ssl --standalone --agree-tos --email -d -w $HOME/var/ssl/ +$ sudo certbot certonly --debug --cise-test-cert --config-dir $HOME/var/ssl --work-dir $HOME/var/ssl --logs-dir $HOME/var/ssl --standalone --agree-tos --email -d -w $HOME/var/ssl/ +``` + +NOTE: For testing certificate generation and renewal, use the certbot's --dry-run option. + + +# Usage + +This clause describes how to compile and execute an Abstract Test Suite. + + +Pre-requisites: +- Your machine is installed following one of the installation method describes in the previous clause +- Your are logged as 'etsi' or 'vagrant' user + +Procedure using Eclipse TITAN: +- Start eclipse using a new workspace, (e.g. with the name workspace_titan) +- Download and follow the steps to install Eclipse plugins for TITAN, accessible [here]{https://www.eclipse.org/downloads/download.php?file=/titan/Eclipse_installationguide.pdf} +- Open the workspace_titan +- Create a new TITAN project (e.g. cise-data-model) + + +Procedure in TITAN command line: +- Open several SSH session (PuTTY...) +- Change to the directory ~/dev/cise-data-model/src/AtsCise/objs +- Build the test suite AtsCise + +```sh +$ cd ~/dev/cise-data-model/ && export ATS=AtsCise +$ make +... +``` + +- Edit the file ../etc/AtsCise.cfg +- Update the following fields: + - PICS_HEADER_HOST, the HTTP host header value + - system.httpPort.params +- To run the test suite, execute the following command: + +```sh +$ cd ~/dev/cise-data-model/scripts/ +$ ./run-all.bash +... +``` + +- The log files are located in ../logs folder. You can edit them using any editor or using the Eclipse TITAN log plugins + + +# How to Report a Bug + +The ETSI CISE Test System is under constant development, so it is possible that you will +encounter a bug while using it. Please report bugs at cti_support at etsi dot org. diff --git a/ccsrc/Ports/LibHttp/HttpPort.cc b/ccsrc/Ports/LibHttp/HttpPort.cc new file mode 100644 index 0000000000000000000000000000000000000000..36afc46e59d9bf5cc67f3b323c163d9481ffcd2b --- /dev/null +++ b/ccsrc/Ports/LibHttp/HttpPort.cc @@ -0,0 +1,118 @@ +#include "HttpPort.hh" +#include "http_layer_factory.hh" +#include "http_layer.hh" +#include "http_codec_cise.hh" +#include "loggers.hh" + +#include "LibHttp_TypesAndValues.hh" + +namespace LibHttp__TestSystem { + + HttpPort::HttpPort(const char *par_port_name): HttpPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("HttpPort::outgoing_send") { + // Nothing to do + } // End of constructor + + HttpPort::~HttpPort() { + loggers::get_instance().log(">>> HttpPort::~HttpPort"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void HttpPort::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("HttpPort::set_parameter: '%s'=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void HttpPort::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void HttpPort::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void HttpPort::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void HttpPort::user_map(const char * system_port) + { + loggers::get_instance().log(">>> HttpPort::user_map: '%s'", system_port); + _cfg_params.log(); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("HttpPort::user_map: '%s'", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("HttpPort::user_map: Invalid stack configuration: '%s'", it->second.c_str()); + } + if (!static_cast(_layer)->set_codec(new http_codec_cise())) { + loggers::get_instance().error("HttpPort::user_map: Null codec"); + } + static_cast(_layer)->add_upper_port(this); + } else { + loggers::get_instance().error("HttpPort::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void HttpPort::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> HttpPort::user_unmap: '%s'", system_port); + + // Reset layers + if (_layer != nullptr) { + delete _layer; + _layer = nullptr; + } + } // End of user_unmap method + + void HttpPort::user_start() + { + loggers::get_instance().log(">>> HttpPort::user_start"); + + } // End of user_start method + + void HttpPort::user_stop() + { + loggers::get_instance().log(">>> HttpPort::user_stop"); + + } // End of user_stop method + + void HttpPort::outgoing_send(const LibHttp__TypesAndValues::HttpMessage& send_par) + { + loggers::get_instance().log_msg(">>> HttpPort::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void HttpPort::receiveMsg (const LibHttp__TypesAndValues::HttpMessage& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> HttpPort::receive_msg: ", p_ind); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + } + +} + diff --git a/ccsrc/Ports/LibHttp/HttpPort.hh b/ccsrc/Ports/LibHttp/HttpPort.hh new file mode 100644 index 0000000000000000000000000000000000000000..5acb52071cbdb6e7324c39a7c4eaba6ec8041dca --- /dev/null +++ b/ccsrc/Ports/LibHttp/HttpPort.hh @@ -0,0 +1,46 @@ +#pragma once + +#include "LibHttp_TestSystem.hh" + +#include "layer.hh" +#include "params.hh" + +namespace LibHttp__TypesAndValues { + class HttpMessage; +} + +namespace LibHttp__TestSystem { + + class HttpPort : public HttpPort_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + HttpPort(const char *par_port_name); + ~HttpPort(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const LibHttp__TypesAndValues::HttpMessage& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const LibHttp__TypesAndValues::HttpMessage& send_par); + }; // End of class HttpPort + +} + diff --git a/ccsrc/Ports/LibHttp/module.mk b/ccsrc/Ports/LibHttp/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..0fba8bd2e9442497d91fa111d95c889d4d57e139 --- /dev/null +++ b/ccsrc/Ports/LibHttp/module.mk @@ -0,0 +1,3 @@ +sources := HttpPort.cc +includes := . + diff --git a/ccsrc/Protocols/Http/http_codec_cise.cc b/ccsrc/Protocols/Http/http_codec_cise.cc new file mode 100644 index 0000000000000000000000000000000000000000..f9469ff17fcb891990c7fb89bee8e9e45ebc70c8 --- /dev/null +++ b/ccsrc/Protocols/Http/http_codec_cise.cc @@ -0,0 +1,85 @@ +#include "http_codec_cise.hh" + +#include "loggers.hh" + +bool http_codec_cise::encode_body_xml(const LibHttp__XmlMessageBodyTypes::XmlBody &p_xml_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type) { + loggers::get_instance().log(">>> http_codec_cise::encode_body_xml"); + + std::map > >::const_iterator it; + bool processed = false; + loggers::get_instance().log("http_codec_cise::encode_body_xml: Content-Type:'%s'", p_content_type.c_str()); + if (p_content_type.find("xml") != std::string::npos) { + it = _codecs.find("xml"); // TODO Use params + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec_cise::encode_body_xml: Call 'xml_codec'"); + _codecs["xml"]->encode((Record_Type&)p_xml_body, p_encoding_buffer); // TODO Use params + processed = true; + } + } // TODO Add new HTTP message codec here + if (!processed) { + loggers::get_instance().warning("http_codec_cise::encode_body_xml: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(0, nullptr); + } + + return true; +} + +bool http_codec_cise::decode_body_xml(const OCTETSTRING &p_data, LibHttp__XmlMessageBodyTypes::XmlBody &p_body, const std::string& p_content_type, params* p_params) { + loggers::get_instance().log_msg(">>> http_codec_cise::decode_body_xml: ", p_data); + + if (_codecs["xml"].get() != nullptr) { + p_body.raw().set_to_omit(); + loggers::get_instance().log("http_codec_cise::decode_body: Call 'xml_codec'"); + if (_codecs["xml"]->decode(p_data, (Record_Type&)p_body, p_params) == -1) { + loggers::get_instance().warning("http_codec_cise::decode_body: Failed to decode JSON message"); + p_body.raw() = oct2char(p_data); + } else { + loggers::get_instance().log_msg("http_codec_cise::decode_body: Decoded message:", p_body.msg()); + p_body.raw() = oct2char(p_data); + } + } + + return true; +} + +bool http_codec_cise::encode_body_json(const LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type) { + loggers::get_instance().log_msg(">>> http_codec_cise::encode_body_json: ", p_json_body); + + std::map > >::const_iterator it; + bool processed = false; + loggers::get_instance().log("http_codec_cise::encode_body_json: Content-Type:'%s'", p_content_type.c_str()); + if (p_content_type.find("json") != std::string::npos) { + it = _codecs.find("json"); // TODO Use params + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec_cise::encode_body_json: Call 'json_codec'"); + _codecs["json"]->encode((Record_Type&)p_json_body, p_encoding_buffer); // TODO Use params + processed = true; + } + } // TODO Add new HTTP message codec here + if (!processed) { + loggers::get_instance().warning("http_codec_cise::encode_body_json: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(0, nullptr); + } + + return true; +} + +bool http_codec_cise::decode_body_json(const OCTETSTRING &p_data, LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, const std::string& p_content_type, params* p_params) { + loggers::get_instance().log(">>> http_codec_cise::decode_body_json: content: %s", p_content_type.c_str()); + loggers::get_instance().log_msg(">>> http_codec_cise::decode_body_json: data: ", p_data); + + if (_codecs["json"].get() != nullptr) { + loggers::get_instance().log("http_codec_cise::decode_body_json: Call 'json_codec'"); + if (_codecs["json"]->decode(p_data, (Record_Type&)p_json_body, p_params) == -1) { + loggers::get_instance().warning("http_codec_cise::decode_body_json: Failed to decode JSON message"); + p_json_body.raw() = CHARSTRING(p_data.lengthof(), (char*)static_cast(p_data)); + } else { + loggers::get_instance().log_msg("http_codec_cise::decode_body_json: Decoded message: ", p_json_body); + } + } else { + loggers::get_instance().error("http_codec_cise::decode_body_json: Codec not found"); + return false; + } + + return true; +} diff --git a/ccsrc/Protocols/Http/http_codec_cise.hh b/ccsrc/Protocols/Http/http_codec_cise.hh new file mode 100644 index 0000000000000000000000000000000000000000..bf2eddaa40b1aa8ded7818d9eb279ac01a6aee8d --- /dev/null +++ b/ccsrc/Protocols/Http/http_codec_cise.hh @@ -0,0 +1,19 @@ +#pragma once + +#include "http_codec.hh" + +#include "LibHttp_MessageBodyTypes.hh" + +class http_codec_cise : public http_codec { + +public: + explicit http_codec_cise() : http_codec(){}; + virtual ~http_codec_cise(){}; + +protected: //! \protectedsection + bool encode_body_xml(const LibHttp__XmlMessageBodyTypes::XmlBody &p_xml_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type); + bool decode_body_xml(const OCTETSTRING &p_data, LibHttp__XmlMessageBodyTypes::XmlBody &p_body, const std::string& p_content_type, params* p_params); + + virtual bool encode_body_json(const LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type); + bool decode_body_json(const OCTETSTRING &p_data, LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, const std::string& p_content_type, params* p_params); +}; \ No newline at end of file diff --git a/ccsrc/Protocols/Http/module.mk b/ccsrc/Protocols/Http/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..2eebbf73593cb6c648c2bae1c179d0b79c2a8b6d --- /dev/null +++ b/ccsrc/Protocols/Http/module.mk @@ -0,0 +1,3 @@ +sources := http_codec_cise.cc +includes := . + diff --git a/ccsrc/Protocols/Json/json_codec.cc b/ccsrc/Protocols/Json/json_codec.cc new file mode 100644 index 0000000000000000000000000000000000000000..602689188ed07c9486f79319bf6eb14bc0f7c8df --- /dev/null +++ b/ccsrc/Protocols/Json/json_codec.cc @@ -0,0 +1,75 @@ +#include +#include +#include + +#include "json_codec_factory.hh" + +#include "loggers.hh" + +#include "LibHttp_JsonMessageBodyTypes.hh" + +int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTETSTRING& data) { + loggers::get_instance().log_msg(">>> json_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_ut__trigger)) { + const LibCise__TypesAndValues::UtDescription& ut_trigger = msg.ut__trigger(); + ut_trigger.encode(LibCise__TypesAndValues::UtDescription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + } else { + loggers::get_instance().error("json_codec::encode: Not supported"); + } + + loggers::get_instance().log("<<< json_codec::encode"); + return 0; +} + +int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody& msg, params* p_params) { + loggers::get_instance().log_msg(">>> json_codec::decode: p_data=", p_data); + + // Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("json_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("json_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + // Remove data structure name (if present) ... + std::string str; + if ((it->second[0] != '[') && (it->second[0] != '{')) { + int idx_begin = it->second.find(":"); + int idx_end = it->second.rfind("}") - 1; // Remove the last '}' + str = it->second.substr(idx_begin + 1, idx_end - idx_begin); + } else { + str = it->second; + } + // ..and create the decoding buffer + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + loggers::get_instance().log("json_codec::decode: decoding_buffer='%c' / '%s'", str[0], str.c_str()); + TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); + + if ((it->second.find("\"code\"") != std::string::npos) && (it->second.find("\"message\"")) != std::string::npos) { + LibJrcSimu__TypesAndValues::ProblemDetails problem_details; + problem_details.decode(LibJrcSimu__TypesAndValues::ProblemDetails_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); + msg.problem__details() = problem_details; + } else { + loggers::get_instance().warning("json_codec::decode: Unsupported variant"); + return -1; + } + + loggers::get_instance().log_msg("<<< json_codec::decode: ", (const Base_Type&)msg); + return 0; +} + + +json_codec_factory json_codec_factory::_f; diff --git a/ccsrc/Protocols/Json/json_codec.hh b/ccsrc/Protocols/Json/json_codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..c7d5fcc57f409952457ad8fe01790f100515f354 --- /dev/null +++ b/ccsrc/Protocols/Json/json_codec.hh @@ -0,0 +1,23 @@ +#pragma once + +#include "codec_gen.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibHttp__JsonMessageBodyTypes { + class JsonBody; +} + +class json_codec: public codec_gen +{ +public: + explicit json_codec() : codec_gen() { }; + virtual ~json_codec() { }; + + virtual int encode (const LibHttp__JsonMessageBodyTypes::JsonBody&, OCTETSTRING& data);// { return -1; }; + virtual int decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody&, params* p_params = NULL);// { return -1; }; + +}; // End of class json_codec diff --git a/ccsrc/Protocols/Json/json_codec_factory.hh b/ccsrc/Protocols/Json/json_codec_factory.hh new file mode 100644 index 0000000000000000000000000000000000000000..1962d3ddefa5681d3a7ac94713c82b1de2e86c14 --- /dev/null +++ b/ccsrc/Protocols/Json/json_codec_factory.hh @@ -0,0 +1,46 @@ +/*! + * \file json_codec_factory.hh + * \brief Header file for LOST/IP protocol codec_gen factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" + +#include "json_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class json_codec_factory + * \brief This class provides a factory class to create an json_codec class instance + */ +class json_codec_factory: public codec_factory { + static json_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the json_codec_factory class + * \remark The LOST/IP codec_gen identifier is LOST + */ + json_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("json_codec", this); + }; + /*! + * \fn codec_gen* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec_gen* create_codec() { + return (codec_gen*)new json_codec(); + }; +}; // End of class json_codec_factory diff --git a/ccsrc/Protocols/Json/module.mk b/ccsrc/Protocols/Json/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..d5376a47206e3eef78c4cfec11f9708d3bbac2f1 --- /dev/null +++ b/ccsrc/Protocols/Json/module.mk @@ -0,0 +1,3 @@ +sources := json_codec.cc +includes := . + diff --git a/ccsrc/Protocols/Xml/module.mk b/ccsrc/Protocols/Xml/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..20232d7d007a5743bb6ab677c744c55398beaef4 --- /dev/null +++ b/ccsrc/Protocols/Xml/module.mk @@ -0,0 +1,3 @@ +sources := xml_codec.cc +includes := . + diff --git a/ccsrc/Protocols/Xml/xml_codec.cc b/ccsrc/Protocols/Xml/xml_codec.cc new file mode 100644 index 0000000000000000000000000000000000000000..dc6ad54897830594bb3ff65a9beb575ab7bc8066 --- /dev/null +++ b/ccsrc/Protocols/Xml/xml_codec.cc @@ -0,0 +1,460 @@ +#include +#include +#include + +#include "xml_codec_factory.hh" + +#include "loggers.hh" +#include "xml_converters.hh" + +#include "LibHttp_XmlMessageBodyTypes.hh" + +int xml_codec::encode(const LibHttp__XmlMessageBodyTypes::XmlBody& body, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> xml_codec::encode: ", (const Base_Type&)body); + + if (body.raw().is_present() && body.raw().is_bound()) { + const CHARSTRING& v = static_cast(*body.raw().get_opt_value()); + data = char2oct(v); + } else { + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + const LibHttp__XmlMessageBodyTypes::XmlBodyMsg& msg = body.msg(); + if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_raw)) { // If raw message is provided, msg is not encoded + data = char2oct(msg.raw()); + loggers::get_instance().log_msg("xml_codec::encode: Process Raw: ", data); + return 0; + } else if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_pull__request)) { + const http__www__cise__eu__servicemodel__v1__message::PullRequest& pull_request = msg.pull__request(); + loggers::get_instance().log_msg("xml_codec::encode: Process PullRequest: ", (const Base_Type&)pull_request); + pull_request.encode(http__www__cise__eu__servicemodel__v1__message::PullRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_pull__response)) { + const http__www__cise__eu__servicemodel__v1__message::PullResponse& pull_response = msg.pull__response(); + loggers::get_instance().log_msg("xml_codec::encode: Process PullResponse: ", (const Base_Type&)pull_response); + pull_response.encode(http__www__cise__eu__servicemodel__v1__message::PullResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_acknowledgement)) { + const http__www__cise__eu__servicemodel__v1__message::Acknowledgement& acknowledgement= msg.acknowledgement(); + loggers::get_instance().log_msg("xml_codec::encode: Process Acknowledgement: ", (const Base_Type&)acknowledgement); + acknowledgement.encode(http__www__cise__eu__servicemodel__v1__message::Acknowledgement_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_push)) { + const http__www__cise__eu__servicemodel__v1__message::Push& push= msg.push(); + loggers::get_instance().log_msg("xml_codec::encode: Process Push: ", (const Base_Type&)push); + push.encode(http__www__cise__eu__servicemodel__v1__message::Push_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else { + loggers::get_instance().warning("xml_codec::encode: Unsupported variant"); + return -1; + } + + // Canonicalization of the XML document + loggers::get_instance().log("xml_codec::encode: Canonicalization of the XML document"); + const std::string to_canonical(static_cast((const char*)encoding_buffer.get_data()), encoding_buffer.get_len() + static_cast((const char*)encoding_buffer.get_data())); + std::string canonicalized; + if (xml_converters::get_instance().xml_canonicalization(to_canonical, canonicalized) == -1) { + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + } else { + data = OCTETSTRING(canonicalized.length(), (const unsigned char*)canonicalized.c_str()); + } + + { // TITAN issue: variant "namespace for 'agent/organization' seems buggy: + // ==> xmlns:xsi=http://www.cise.eu/datamodel/v1/entity/organization/ xsi:type="ns4:Organization" + loggers::get_instance().log("xml_codec::encode: Apply TITAN workaround"); + std::string s(static_cast(data), data.lengthof() + static_cast(data)); + patch_encode_agent_derivations(s); + //loggers::get_instance().log("xml_codec::encode: After patch_encode_agent_derivations: '%s'", s.c_str()); + patch_encode_location_derivations(s); + //loggers::get_instance().log("xml_codec::encode: After patch_encode_location_derivations: '%s'", s.c_str()); + patch_encode_event_derivations(s); + //loggers::get_instance().log("xml_codec::encode: After patch_encode_event_derivations: '%s'", s.c_str()); + patch_encode_document_derivations(s); + //loggers::get_instance().log("xml_codec::encode: After patch_encode_document_derivations: '%s'", s.c_str()); + patch_encode_service_capability_derivations(s); + //loggers::get_instance().log("xml_codec::encode: After patch_encode_service_capability_derivations: '%s'", s.c_str()); + + data = OCTETSTRING(s.length(), (const unsigned char*)s.c_str()); + } + + // Add header + CHARSTRING h("\n"); + data = char2oct(h) + data; + } + + loggers::get_instance().log_msg("xml_codec::encode: After encoding: ", data); + + loggers::get_instance().log("<<< xml_codec::encode"); + return 0; +} + +int xml_codec::patch_encode_agent_derivations(std::string& s) { + std::string search; + std::string replace; + size_t idx = 0; + if (s.find(" xsi:type=\"agent:Agent") != std::string::npos) { + search.assign(" xsi:type=\"agent:Agent\""); + replace.assign(" xsi:type=\"ns6:Agent\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"agent:Organization") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"agent:Organization\""); + replace.assign(" xsi:type=\"ns6:Organization\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"agent:FormalOrganization") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"agent:FormalOrganization\""); + replace.assign(" xsi:type=\"ns6:FormalOrganization\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"agent:OrganizationalCollaboration") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"agent:OrganizationalCollaboration\""); + replace.assign(" xsi:type=\"ns6:OrganizationalCollaboration\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"agent:OrganizationalUnit") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"agent:OrganizationalUnit\""); + replace.assign(" xsi:type=\"ns6:OrganizationalUnit\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"agent:Person") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"agent:Person\""); + replace.assign(" xsi:type=\"ns6:Person\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"agent:PortOrganization") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"agent:PortOrganization\""); + replace.assign(" xsi:type=\"ns6:PortOrganization\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/\""); + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + + //loggers::get_instance().log("xml_codec::patch_encode_agent_derivations: s: '%s'", s.c_str()); + return 0; +} + +int xml_codec::patch_encode_location_derivations(std::string& s) { + std::string search; + std::string replace; + size_t idx = 0; + if (s.find(" xsi:type=\"location:Location") != std::string::npos) { + search.assign(" xsi:type=\"location:Location\""); + replace.assign(" xsi:type=\"ns6:Location\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/location/\""); + //loggers::get_instance().log("xml_codec::patch_encode_location_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"location:NamedLocation") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"location:NamedLocation\""); + replace.assign(" xsi:type=\"ns6:NamedLocation\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/location/\""); + //loggers::get_instance().log("xml_codec::patch_encode_location_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"location:PortFacilityLocation") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"location:PortFacilityLocation\""); + replace.assign(" xsi:type=\"ns6:PortFacilityLocation\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/location/\""); + //loggers::get_instance().log("xml_codec::patch_encode_location_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"location:PortLocation") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"location:PortLocation\""); + replace.assign(" xsi:type=\"ns6:PortLocation\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/location/\""); + //loggers::get_instance().log("xml_codec::patch_encode_location_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + + //loggers::get_instance().log("xml_codec::patch_encode_location_derivations: s: '%s'", s.c_str()); + return 0; +} + +int xml_codec::patch_encode_event_derivations(std::string& s) { + std::string search; + std::string replace; + size_t idx = 0; + if (s.find(" xsi:type=\"event:Event") != std::string::npos) { + search.assign(" xsi:type=\"event:Event\""); + replace.assign(" xsi:type=\"ns6:Event\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/event/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + + if (s.find("") != std::string::npos) { + idx = 0; + search.assign(""); + replace.assign(""); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + + if (s.find(" xsi:type=\"action:Action") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"action:Action\""); + replace.assign(" xsi:type=\"ns6:Action\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/action/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"anomaly:Anomaly") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"anomaly:Anomaly\""); + replace.assign(" xsi:type=\"ns6:Anomaly\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/anomaly/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"incident:CrisisIncident") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"incident:CrisisIncident\""); + replace.assign(" xsi:type=\"ns6:CrisisIncident\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/incident/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"incident:Incident") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"incident:Incident\""); + replace.assign(" xsi:type=\"ns6:Incident\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/incident/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"incident:IrregularMigrationIncident") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"incident:IrregularMigrationIncident\""); + replace.assign(" xsi:type=\"ns6:IrregularMigrationIncident\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/incident/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"incident:LawInfringementIncident") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"incident:LawInfringementIncident\""); + replace.assign(" xsi:type=\"ns6:LawInfringementIncident\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/incident/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"incident:MaritimeSafetyIncident") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"incident:MaritimeSafetyIncident\""); + replace.assign(" xsi:type=\"ns6:MaritimeSafetyIncident\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/incident/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"movement:Movement") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"movement:Movement\""); + replace.assign(" xsi:type=\"ns6:Movement\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/movement/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + if (s.find(" xsi:type=\"incident:PollutionIncident") != std::string::npos) { + idx = 0; + search.assign(" xsi:type=\"incident:PollutionIncident\""); + replace.assign(" xsi:type=\"ns6:PollutionIncident\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/incident/\""); + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + } + + //loggers::get_instance().log("xml_codec::patch_encode_event_derivations: s: '%s'", s.c_str()); + return 0; +} + +int xml_codec::patch_encode_object_derivations(std::string& s) { + + return 0; +} + +int xml_codec::patch_encode_document_derivations(std::string& s) { + + return 0; +} + +int xml_codec::patch_encode_service_capability_derivations(std::string& s) { + std::string search; + std::string replace; + size_t idx = 0; + if (s.find("tq0000:SubscriptionCapability") != std::string::npos) { + search.assign("tq0000:SubscriptionCapability"); + replace.assign("ns3:SubscriptionCapability"); + idx = 0; + loggers::get_instance().log("xml_codec::patch_encode_service_capability_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s.replace(idx, search.length(), replace); + idx += replace.length(); + } // End of 'while' statement + search.assign(" %s", search.c_str(), replace.c_str()); + idx = s.find(search); + s.replace(idx, search.length(), replace); + // search.assign(" xsi:type=\"tq0000:SubscriptionCapability\""); + // replace.assign(""); + // idx = 0; + // loggers::get_instance().log("xml_codec::patch_encode_service_capability_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + // while ((idx = s.find(search, idx)) != std::string::npos) { + // s.replace(idx, search.length(), replace); + // idx += replace.length(); + // } // End of 'while' statement + // if (s.find(" %s", search.c_str(), replace.c_str()); + // idx = 0; + // while ((idx = s.find(search, idx)) != std::string::npos) { + // s.replace(idx, search.length(), replace); + // idx += replace.length(); + // } // End of 'while' statement + // } + } + + return 0; +} + +int xml_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& body, params* p_params) +{ + loggers::get_instance().log_msg(">>> xml_codec::decode: p_data=", p_data); + + // Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("xml_codec::decode: Failed to access p_params (null pointer)"); + return -1; // TODO Use p_data instead of return -1 + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("xml_codec::decode: Failed to access p_params item (decode_str)"); + return -1; // TODO Use p_data instead of return -1 + } + loggers::get_instance().log("xml_codec::decode: it->second='%s'", it->second.c_str()); + } + + // TITAN issue: variant "namespace for 'agent/organization' seems buggy: + // ==> xmlns:xsi=http://www.cise.eu/datamodel/v1/entity/organization/ xsi:type="ns4:Organization" + loggers::get_instance().log("xml_codec::decode: Apply TITAN workaround"); + std::string s(it->second); + patch_decode_service_capability_derivations(s); + //loggers::get_instance().log("xml_codec::decode: After patch_decode_service_capability_derivations: '%s'", s.c_str()); + + + loggers::get_instance().log_msg("xml_codec::decode: body: ", body); + LibHttp__XmlMessageBodyTypes::XmlBodyMsg& msg = body.msg(); + body.raw() = OPTIONAL(CHARSTRING(s.c_str())); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(OCTETSTRING(s.length(), (const unsigned char*)s.c_str())); + + if ((s.find("") != std::string::npos) { + search.assign(""); + //loggers::get_instance().log("xml_codec::patch_decode_service_capability_derivations: Apply TITAN workaround: %s --> %s", search.c_str(), replace.c_str()); + while ((idx = s.find(search, idx)) != std::string::npos) { + s = s.erase(idx, search.length()); + idx += 1; + } // End of 'while' statement + } + + return 0; +} + +xml_codec_factory xml_codec_factory::_f; diff --git a/ccsrc/Protocols/Xml/xml_codec.hh b/ccsrc/Protocols/Xml/xml_codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..c5bb0ebbc5b95901fce2f9ade446ed1669cb8b62 --- /dev/null +++ b/ccsrc/Protocols/Xml/xml_codec.hh @@ -0,0 +1,32 @@ +#pragma once + +#include "codec_gen.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibHttp__XmlMessageBodyTypes { + class XmlBody; +} + +class xml_codec: public codec_gen +{ + //TITAN issue: variant "namespace for 'agent/organization' seems buggy: instead of xsi:type=\"ns6:Agent\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/ + int patch_encode_agent_derivations(std::string& s); + int patch_encode_location_derivations(std::string& s); + int patch_encode_event_derivations(std::string& s); + int patch_encode_object_derivations(std::string& s); + int patch_encode_document_derivations(std::string& s); + int patch_encode_service_capability_derivations(std::string& s); + int patch_decode_service_capability_derivations(std::string& s); + //TITAN issue: variant "namespace for 'agent/organization' seems buggy: instead of xsi:type=\"ns6:Agent\" xmlns:ns6=\"http://www.cise.eu/datamodel/v1/entity/organization/ +public: + explicit xml_codec() : codec_gen() { }; + virtual ~xml_codec() { }; + + virtual int encode (const LibHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL); + +}; // End of class xml_codec diff --git a/ccsrc/Protocols/Xml/xml_codec_factory.hh b/ccsrc/Protocols/Xml/xml_codec_factory.hh new file mode 100644 index 0000000000000000000000000000000000000000..cfec4c94984584d1e9ddef5c390b2675f07c55e2 --- /dev/null +++ b/ccsrc/Protocols/Xml/xml_codec_factory.hh @@ -0,0 +1,46 @@ +/*! + * \file xml_codec_factory.hh + * \brief Header file for ITS XSD/IP protocol codec factory. + * \author ETSI STF569 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" + +#include "xml_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class xml_codec_factory + * \brief This class provides a factory class to create an xml_codec class instance + */ +class xml_codec_factory: public codec_factory { + static xml_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the xml_codec_factory class + * \remark The HELD/IP codec identifier is HELD + */ + xml_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("xml_codec", this); + }; + /*! + * \fn codec* create_codec(const std::string& type, const std::string& param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec_gen* create_codec() { + return (codec_gen*)new xml_codec(); + }; +}; // End of class xml_codec_factory diff --git a/ccsrc/externals/cise_externals.cc b/ccsrc/externals/cise_externals.cc new file mode 100644 index 0000000000000000000000000000000000000000..1640efc2b0a38fc25dd9f3f9f285422f74bee40d --- /dev/null +++ b/ccsrc/externals/cise_externals.cc @@ -0,0 +1,131 @@ +#include "LibCise_Functions.hh" + +#include "loggers.hh" + +//#include +//#include +#include +#include +#include +//#include +//#include +//#include +#include +#include + +#include "xml_codec.hh" + +namespace LibCise__Functions { + + BITSTRING fx__enc__PullRequest__1(const http__www__cise__eu__servicemodel__v1__message::PullRequest& p) { // FIXME Use enc/dec TITAN function external function f_enc_value(in Value x) return bitstring with { extension "prototype(convert) encode(abc)" } + loggers::get_instance().log(">>> fx__enc__PullRequest"); + + LibHttp__XmlMessageBodyTypes::XmlBody msg; + msg.msg().pull__request() = p; + msg.raw().set_to_omit(); + xml_codec c; + OCTETSTRING os; + int result = c.encode(msg, os); + loggers::get_instance().log_msg("fx__enc__PullRequest: os: ", os); + + // Remove XML header added by the XML codec. + OCTETSTRING h = char2oct("\n"); + os = OCTETSTRING(os.lengthof() - h.lengthof(), static_cast(os) + h.lengthof()); + loggers::get_instance().log_msg("fx__enc__PullRequest: os: ", os); + + return oct2bit(os); + } + + INTEGER fx__dec__PullRequest__1(BITSTRING &b, http__www__cise__eu__servicemodel__v1__message::PullRequest& p) { // FIXME Use enc/dec TITAN function external function f_enc_value(in Value x) return bitstring with { extension "prototype(convert) encode(abc)" } + loggers::get_instance().log(">>> fx__dec__PullRequest"); + + LibHttp__XmlMessageBodyTypes::XmlBody msg; + xml_codec c; + OCTETSTRING is = bit2oct(b); + params parms; + parms["decode_str"] = std::string(static_cast(is), is.lengthof() + static_cast(is)); + if (c.decode(is, msg, &parms) == -1) { + loggers::get_instance().warning("fx__dec__PullRequest: -1 result code was returned"); + return -1; + } + + p = msg.msg().pull__request(); + + return 0; + } + + BITSTRING fx__enc__PullResponse__1(const http__www__cise__eu__servicemodel__v1__message::PullResponse& p) { // FIXME Use enc/dec TITAN function external function f_enc_value(in Value x) return bitstring with { extension "prototype(convert) encode(abc)" } + loggers::get_instance().log(">>> fx__enc__PullResponse"); + + LibHttp__XmlMessageBodyTypes::XmlBody msg; + msg.msg().pull__response() = p; + msg.raw().set_to_omit(); + xml_codec c; + OCTETSTRING os; + int result = c.encode(msg, os); + loggers::get_instance().log_msg("fx__enc__PullResponse: os: ", os); + + // Remove XML header added by the XML codec. + OCTETSTRING h = char2oct("\n"); + os = OCTETSTRING(os.lengthof() - h.lengthof(), static_cast(os) + h.lengthof()); + loggers::get_instance().log_msg("fx__enc__PullResponse: os: ", os); + + return oct2bit(os); + } + + INTEGER fx__dec__PullResponse__1(BITSTRING &b, http__www__cise__eu__servicemodel__v1__message::PullResponse& p) { // FIXME Use enc/dec TITAN function external function f_enc_value(in Value x) return bitstring with { extension "prototype(convert) encode(abc)" } + loggers::get_instance().log(">>> fx__dec__PullResponse"); + + LibHttp__XmlMessageBodyTypes::XmlBody msg; + xml_codec c; + OCTETSTRING is = bit2oct(b); + params parms; + parms["decode_str"] = std::string(static_cast(is), is.lengthof() + static_cast(is)); + if (c.decode(is, msg, &parms) == -1) { + loggers::get_instance().warning("fx__dec__PullResponse: -1 result code was returned"); + return -1; + } + + p = msg.msg().pull__response(); + + return 0; + } + + BITSTRING fx__enc__Feedback__1(const http__www__cise__eu__servicemodel__v1__message::Feedback& p) { // FIXME Use enc/dec TITAN function external function f_enc_value(in Value x) return bitstring with { extension "prototype(convert) encode(abc)" } + loggers::get_instance().log(">>> fx__enc__Feedback"); + + LibHttp__XmlMessageBodyTypes::XmlBody msg; + msg.msg().feedback() = p; + msg.raw().set_to_omit(); + xml_codec c; + OCTETSTRING os; + int result = c.encode(msg, os); + loggers::get_instance().log_msg("fx__enc__Feedback: os: ", os); + + // Remove XML header added by the XML codec. + OCTETSTRING h = char2oct("\n"); + os = OCTETSTRING(os.lengthof() - h.lengthof(), static_cast(os) + h.lengthof()); + loggers::get_instance().log_msg("fx__enc__Feedback: os: ", os); + + return oct2bit(os); + } + + INTEGER fx__dec__Feedback__1(BITSTRING &b, http__www__cise__eu__servicemodel__v1__message::Feedback& p) { // FIXME Use enc/dec TITAN function external function f_enc_value(in Value x) return bitstring with { extension "prototype(convert) encode(abc)" } + loggers::get_instance().log(">>> fx__dec__Feedback"); + + LibHttp__XmlMessageBodyTypes::XmlBody msg; + xml_codec c; + OCTETSTRING is = bit2oct(b); + params parms; + parms["decode_str"] = std::string(static_cast(is), is.lengthof() + static_cast(is)); + if (c.decode(is, msg, &parms) == -1) { + loggers::get_instance().warning("fx__dec__Feedback: -1 result code was returned"); + return -1; + } + + p = msg.msg().feedback(); + + return 0; + } + +} // End of namespace LibCise__Functions \ No newline at end of file diff --git a/ccsrc/externals/module.mk b/ccsrc/externals/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..d46b897481e6e2e368b76e07a52aa835ec9da2ca --- /dev/null +++ b/ccsrc/externals/module.mk @@ -0,0 +1,2 @@ +sources := cise_externals.cc +includes := . diff --git a/cise.code-workspace b/cise.code-workspace new file mode 100644 index 0000000000000000000000000000000000000000..e2578a09cbe77a93787f5087aa3d57388d3a4cd2 --- /dev/null +++ b/cise.code-workspace @@ -0,0 +1,79 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../../tmp/xer_decoding_issue" + }, + { + "path": "../cise-ais-adaptor" + }, + { + "path": "../../../../opt/cise-sim" + } + ], + "settings": { + "files.associations": { + "array": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "chrono": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "map": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "fstream": "cpp", + "functional": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "memory": "cpp", + "new": "cpp", + "optional": "cpp", + "ostream": "cpp", + "ratio": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "type_traits": "cpp", + "tuple": "cpp", + "typeinfo": "cpp", + "utility": "cpp", + "codecvt": "cpp", + "set": "cpp", + "bitset": "cpp", + "condition_variable": "cpp", + "cstddef": "cpp", + "cstring": "cpp", + "memory_resource": "cpp", + "mutex": "cpp", + "regex": "cpp", + "shared_mutex": "cpp", + "thread": "cpp", + "numeric": "cpp" + }, + "java.compile.nullAnalysis.mode": "automatic", + "java.project.sourcePaths": [ + "" + ], + "java.configuration.updateBuildConfiguration": "interactive" + } +} \ No newline at end of file diff --git a/config.mk b/config.mk new file mode 100644 index 0000000000000000000000000000000000000000..5149cbeb2d0992aae3bc9209de77d732487635bf --- /dev/null +++ b/config.mk @@ -0,0 +1,8 @@ +TTCN3_COMPILER_OPTIONS := -b -d -e -f -g -l -L -M -O -R -U none -x +#TTCN3_DIR := /home/y.garcia/frameworks/ttcn3-9.0.0 +#WPCAP_DLL_PATH := /cygdrive/c/windows/system32/npcap/wpcap.dll +#NPCAP_INCLUDE := /cygdrive/c/PROGRA~1/Npcap/sdk/include +T3Q_PATH=./tools/t3q-v2.0.0b30 +T3Q_CONFIG=t3q.cfg +T3D_PATH=./tools/t3d-v2.0.0b30 +T3D_CONFIG=t3d.cfg diff --git a/docs/o2.cfg b/docs/o2.cfg new file mode 100644 index 0000000000000000000000000000000000000000..353df6433fd4de9c3ca5285e7543a0236b3c7986 --- /dev/null +++ b/docs/o2.cfg @@ -0,0 +1,1768 @@ +# Doxyfile 1.8.1.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = "ETSI TTF012" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "This project provides the Test System for ETSI CDM CISE API Conformance testing" + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = ./AtsCiseDocs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = "license=@par License:\n" + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields will be shown inline in the documentation +# of the scope in which they are defined (i.e. file, namespace, or group +# documentation), provided this scope is documented. If set to NO (the default), +# structs, classes, and unions are shown on a separate page (for HTML and Man +# pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be +# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given +# their name and scope. Since this can be an expensive process and often the +# same symbol appear multiple times in the code, doxygen keeps a cache of +# pre-resolved symbols. If the cache is too small doxygen will become slower. +# If the cache is too large, memory is wasted. The cache size is given by this +# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation. + +EXTRACT_PACKAGE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../ccsrc + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.h *.hh *.hpp \ + *.c *.cc *.cpp \ + *.inl \ + *.s \ + *.md *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = YES + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = TES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# style sheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvantages are that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = YES + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = __cplusplus + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = NO + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = YES + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# managable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 20 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = YES + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/etc/AtsCise/AtsCise_Cnit.cfg_ b/etc/AtsCise/AtsCise_Cnit.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..9b63cbaecb2e174f9dd94f170f945b89b61acd3e --- /dev/null +++ b/etc/AtsCise/AtsCise_Cnit.cfg_ @@ -0,0 +1,490 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +# IUT roles +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NA := true +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NN := false +LibCise_Pics.PICS_IUT_CDM_ADAPTOR := true + +# Communication messages +LibCise_Pics.PICS_CDM_PULL := true +LibCise_Pics.PICS_CDM_PUSH := true +LibCise_Pics.PICS_CDM_SUBSCRIBE := true +LibCise_Pics.PICS_CDM_ACKNOWLEDGEMENT := true +LibCise_Pics.PICS_CDM_FEEDBACK := true + +# Services +LibCise_Pics.PICS_CDM_VESSEL_SERVICE := true +LibCise_Pics.PICS_CDM_ACTION_SERVICE := true +LibCise_Pics.PICS_CDM_ANOMALY_SERVICE := true +LibCise_Pics.PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE := true +LibCise_Pics.PICS_CDM_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_METEO_SERVICE := true +LibCise_Pics.PICS_CDM_ORGANIZATION_SERVICE := true +LibCise_Pics.PICS_CDM_RISK_SERVICE := true +LibCise_Pics.PICS_CDM_CARGO_SERVICE := true + +# LibCise +LibCise_Pics.PICS_CISE_CERTIFICATES_DB_PATH := "/home/y.garcia/dev/cise-data-model/keystore" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE := "ciseadaptor5.crt" #"sim1_node01.node01.eucise.fr.pem" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY := "ciseadaptor5.key" #"sim1_node01.node01.eucise.fr.pkcs8" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE_PAST := "cise_expired.crt" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY_PAST := "cise_expired.key" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE_FUTURE := "cert_future.crt" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY_FUTURE := "cert_future.key" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_PASSWD := "" +LibCise_Pics.PICS_HEADER_HOST_UT := "172.25.1.58" # Adaptor + +# LibHttp +LibHttp_Pics.PICS_HEADER_HOST := "172.25.1.59" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/xml" +LibHttp_Pics.PICS_USE_TOKEN_HEADER := true +#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken" + +LibCise_Pics.PICS_CISE_ADAPTOR_URI := "/cise-adapter/api/v1/messages" + +# LibCise test parameters +# Asynchronous Ack +LibCise_Pixits.PX_CISE_REQUEST_ACK := false +# Services +LibCise_Pixits.PX_CISE_SENDER_SERVICE_ID := "de.sim2-node01.vessel.pull.consumer" +LibCise_Pixits.PX_CISE_RECIPIENT_SERVICE_ID := "de.sim1-node01.vessel.pull.provider" +# Discovery +LibCise_Pixits.PX_CISE_DISCOVERY_PROFILE_SERVICE_ID := "cx.simlsa3-nodecx.vessel.push.consumer" +LibCise_Pixits.PX_CISE_SEA_BASSIN := mediterranean +LibCise_Pixits.PX_DATA_FRESHNESS_TYPE := unknown +# Vessel infornmation +LibCise_Pixits.PX_VESSEL_IMO_NUMBER := 7710525 +LibCise_Pixits.PX_VESSEL_POS_LATITUDE := "43.561062" +LibCise_Pixits.PX_VESSEL_POS_LONGITUDE := "10.264149" +LibCise_Pixits.PX_VESSEL_TYPE := fishingVessel +LibCise_Pixits.PX_COUNTRY_TYPE := fR +LibCise_Pixits.PX_VESSEL_NET_TONNAGE := 30000.0 + +# Organization +LibCise_Pixits.PX_ORGANIZATION_LEGAL_NAME := "A1" +LibCise_Pixits.PX_ORGANIZATION_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59" +# Period +LibCise_Pixits.PX_PERIOD_START_DATE := "2023-09-01+01:00" +LibCise_Pixits.PX_PERIOD_END_DATE := "2023-09-01+01:00" + +# Incident +LibCise_Pixits.PX_IRREGULAR_MIGRATION_INCIDENT_TYPE := irregularBorderEntry +LibCise_Pixits.PX_LAW_INFRINGEMENT_INCIDENT_TYPE := lawInfringementByVessels + +# Upper Tester +LibCise_Pixits.PX_UT_VESSEL_TYPE := "Organization" +LibCise_Pixits.PX_UT_VESSEL_IDINTIFICATION_NUMBER := "inovaworks" +LibCise_Pixits.PX_UT_VESSEL_IDINTIFIER_UUID := "com.inovaworks" +LibCise_Pixits.PX_MESSAGE_PROCESSING_INTERVAL := 2.0 + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/AtsCise/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +# I1 interface +## Unsecured +system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8300)" +#### For multiple component +CISEAdapter1.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter1.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8310)" +CISEAdapter2.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter2.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8311)" +## TLS +#system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=443,use_ssl=1,trusted_ca_list=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" +#system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1,mutual_auth=1,mutual_tls=1,trusted_ca_list=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" +# I2 interface +CISEAdapter.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8300)" +CISENetwork.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8210)" +CISENetwork.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8310)" + +# UpperTester port (Adaptor) +system.utPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.58,port=14000)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsCise_TestControl.control + +## cise_node_ei_na +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Vessel service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_01 +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with timeout on response - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_02 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for a unknown vessel - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_03 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with filter - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_04 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving an inconsistent PullRequest +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an inconsistent Service Operation type +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_02 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an unknown serviceID +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_03 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in past (one month late) +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_04 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in future (one month) +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_05 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an invalid filter (Selector entry does not exist) +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_02 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Location +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Involved agent +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01 + +# Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an Anomaly service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_03 + +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with a vessel document certificate service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_04 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with a vessel document certificate with an invalid Integrity check +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_04 + +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an Incident service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_05 + +# Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an IrregularMigrationIncident service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_06 + +# Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an IrregularMigrationIncident service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_07 + +# Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an ongoing meteo condition service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_08 + +# Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an organization service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_09 + +# Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for ongoing risk service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_10 + +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest for a cargo service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving multiple PullRequest for Vessel service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with VesselServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with ActionServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with AnomalyServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CertificateDocumentServide discover - no Acknowledgment requiredy +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IncidentServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IrregularMigrationIncidentService discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with LawInfringementIncident discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with MeteoOceanographicConditionService discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with OrganizationService discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with RiskServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CargoServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a subscription ending in past +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BO_01 + +# Check that the IUT sends a request of subcribers list for ActionService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_02 + +# Check that the IUT sends a request of subcribers list for AnomalyService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_03 + +# Check that the IUT sends a request of subcribers list for CertificateDocumentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_04 + +# Check that the IUT sends a request of subcribers list for IncidentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_05 + +# Check that the IUT sends a request of subcribers list for IrregularMigrationIncidentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_06 + +# Check that the IUT sends a request of subcribers list for LawInfringementIncidentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_07 + +# Check that the IUT sends a request of subcribers list for MeteoOceanographicConditionService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_08 + +# Check that the IUT sends a request of subcribers list for OrganizationService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_09 + +# Check that the IUT sends a request of subcribers list for RiskService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_10 + +# Check that the IUT sends a request of subcribers list for CargoService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for VesselService +AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response with an empty list when no subscription was done for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response with an error code when receiving a request to delete an unknown subscription for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_11 + +## cise_node_i2 +# Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NN_PULL_REQ_BV_01 + +## cise_adaptor +# Check that the IUT sends a PullRequest for vessels with discovery based on sea basin - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_01 + +# Check that the IUT sends a PullRequest for ActionService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_02 + +# Check that the IUT sends a PullRequest for AnomalyService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_03 + +# Check that the IUT sends a PullRequest for CertificateDocumentService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_04 + +# Check that the IUT sends a PullRequest for IncidentService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_05 + +# Check that the IUT sends a PullRequest for IrregularMigrationIncident when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_06 + +# Check that the IUT sends a PullRequest for LawInfringementIncident when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_07 + +# Check that the IUT sends a PullRequest for MeteoOceanographicConditionService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_08 + +# Check that the IUT sends a PullRequest for OrganizationService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_09 + +# Check that the IUT sends a PullRequest for RiskService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_10 + +# Check that the IUT sends a PullRequest for CargoService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_11 + +# Check that the IUT sends a PullRequest for VesselService discovery when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_DISC_BV_01 + + + + + +## security +# Check that the IUT responds with an HTTP 200 OK Acknowledgment with Success when it receives a sign message +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BV_01 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted signature +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_01 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted certificate +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_02 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with corrupted digest +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_03 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported signature algorithm +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_04 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported digest signature algorithm +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_05 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an expired certificate +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_06 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with a certificate valid in the future +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_07 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment response with InvalidSignature when it receives a message not signed +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_08 + + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/AtsCise/AtsCise_GermanCiseNode.cfg_ b/etc/AtsCise/AtsCise_GermanCiseNode.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..3fe9d325d356dd0eb9706bcda088c3cdf0101174 --- /dev/null +++ b/etc/AtsCise/AtsCise_GermanCiseNode.cfg_ @@ -0,0 +1,500 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +#LibCommon_Time.PX_TAC := 60.0 + +# IUT roles +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NA := true +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NN := false +LibCise_Pics.PICS_IUT_CDM_ADAPTOR := false + +LibCise_Pics.PICS_IUT_CDM_CISE_SIMU_EI_NA := false + +# Communication messages +LibCise_Pics.PICS_CDM_PULL := true +LibCise_Pics.PICS_CDM_PUSH := true +LibCise_Pics.PICS_CDM_SUBSCRIBE := true +LibCise_Pics.PICS_CDM_ACKNOWLEDGEMENT := true +LibCise_Pics.PICS_CDM_FEEDBACK := true + +# Services +LibCise_Pics.PICS_CDM_VESSEL_SERVICE := true +LibCise_Pics.PICS_CDM_ACTION_SERVICE := true +LibCise_Pics.PICS_CDM_ANOMALY_SERVICE := true +LibCise_Pics.PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE := true +LibCise_Pics.PICS_CDM_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_METEO_SERVICE := true +LibCise_Pics.PICS_CDM_ORGANIZATION_SERVICE := true +LibCise_Pics.PICS_CDM_RISK_SERVICE := true +LibCise_Pics.PICS_CDM_CARGO_SERVICE := true + +# LibCise +LibCise_Pics.PICS_CISE_CERTIFICATES_DB_PATH := "/home/y.garcia/dev/cise-data-model/keystore" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE := "signing.de.cnit.test1.cer" #"sim1_node01.node01.eucise.fr.pem" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY := "signing.de.cnit.test1.privkey.pem" #"sim1_node01.node01.eucise.fr.pkcs8" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE_PAST := "cise_expired.crt" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY_PAST := "cise_expired.key" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE_FUTURE := "cert_future.crt" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY_FUTURE := "cert_future.key" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_PASSWD := "" +LibCise_Pics.PICS_HEADER_HOST_UT := "172.25.1.58" # Adaptor + +# LibHttp +LibHttp_Pics.PICS_HEADER_HOST := "10.50.1.121" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/xml" +LibHttp_Pics.PICS_USE_TOKEN_HEADER := true +#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken" + +LibCise_Pics.PICS_CISE_PULL_REQUEST_URI := "messages" #"api/messages" +LibCise_Pics.PICS_PULL_RESPONSE_URI := "messages" +LibCise_Pics.PICS_CISE_ADAPTOR_URI := "/cise-adapter/api/v1/messages" + +# LibCise test parameters +# Asynchronous Ack +LibCise_Pixits.PX_CISE_REQUEST_ACK := false +# Services +LibCise_Pixits.PX_CISE_SENDER_SERVICE_ID := "de.cnit.test1.vessel.pull.consumer" +LibCise_Pixits.PX_CISE_RECIPIENT_SERVICE_ID := "de.cnit.test2.vessel.pull.provider" +# Discovery +LibCise_Pixits.PX_CISE_DISCOVERY_PROFILE_SERVICE_ID := "de.cnit.test2.vessel.push.consumer" +LibCise_Pixits.PX_CISE_SEA_BASSIN := mediterranean +LibCise_Pixits.PX_DATA_FRESHNESS_TYPE := unknown +# Vessel infornmation +LibCise_Pixits.PX_VESSEL_IMO_NUMBER := 7710525 +LibCise_Pixits.PX_VESSEL_POS_LATITUDE := "43.561062" +LibCise_Pixits.PX_VESSEL_POS_LONGITUDE := "10.264149" +LibCise_Pixits.PX_VESSEL_TYPE := fishingVessel +LibCise_Pixits.PX_COUNTRY_TYPE := fR +LibCise_Pixits.PX_VESSEL_NET_TONNAGE := 30000.0 + +# Organization +LibCise_Pixits.PX_ORGANIZATION_LEGAL_NAME := "A1" +LibCise_Pixits.PX_ORGANIZATION_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59" +# Period +LibCise_Pixits.PX_PERIOD_START_DATE := "2024-02-01+01:00" +LibCise_Pixits.PX_PERIOD_END_DATE := "2024-09-01+01:00" + +# Incident +LibCise_Pixits.PX_IRREGULAR_MIGRATION_INCIDENT_TYPE := irregularBorderEntry +LibCise_Pixits.PX_LAW_INFRINGEMENT_INCIDENT_TYPE := lawInfringementByVessels + +# Upper Tester +LibCise_Pixits.PX_UT_VESSEL_TYPE := "Organization" +LibCise_Pixits.PX_UT_VESSEL_IDINTIFICATION_NUMBER := "inovaworks" +LibCise_Pixits.PX_UT_VESSEL_IDINTIFIER_UUID := "com.inovaworks" +LibCise_Pixits.PX_MESSAGE_PROCESSING_INTERVAL := 2.0 + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/AtsCise/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +# I1 interface +## Unsecured +system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=10.50.1.25)" +#system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=adapter.int.cnit.de.testcisenet.eu)" +system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8888)" +#### For multiple component +CISEAdapter1.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter1.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8310)" +CISEAdapter2.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter2.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8311)" +## TLS +#system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=443,use_ssl=1,trusted_ca_list=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" +#system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1,mutual_auth=1,mutual_tls=1,trusted_ca_list=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" +# I2 interface +CISEAdapter.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8300)" +CISENetwork.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8210)" +CISENetwork.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8310)" + +# UpperTester port (Adaptor) +system.utPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.58,port=14000)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsCise_TestControl.control + +## cise_node_ei_na +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Vessel service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_01 +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with timeout on response - no Acknowledgment required +AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_02 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for a unknown vessel - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_03 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with filter - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_04 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving an inconsistent PullRequest +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an inconsistent Service Operation type +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_02 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an unknown serviceID +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_03 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in past (one month late) +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_04 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in future (one month) +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_05 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an invalid filter (Selector entry does not exist) +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_02 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Location +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Involved agent +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01 + +# Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an Anomaly service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_03 + +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with a vessel document certificate service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_04 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with a vessel document certificate with an invalid Integrity check +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_04 + +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an Incident service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_05 + +# Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an IrregularMigrationIncident service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_06 + +# Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an IrregularMigrationIncident service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_07 + +# Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an ongoing meteo condition service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_08 + +# Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an organization service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_09 + +# Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for ongoing risk service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_10 + +# Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest for a cargo service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving multiple PullRequest for Vessel service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with VesselServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with ActionServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with AnomalyServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CertificateDocumentServide discover - no Acknowledgment requiredy +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IncidentServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IrregularMigrationIncidentService discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with LawInfringementIncident discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with MeteoOceanographicConditionService discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with OrganizationService discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with RiskServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CargoServide discovery - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_DISC_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a subscription ending in past +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BO_01 + +# Check that the IUT sends a request of subcribers list for ActionService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_02 + +# Check that the IUT sends a request of subcribers list for AnomalyService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_03 + +# Check that the IUT sends a request of subcribers list for CertificateDocumentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_04 + +# Check that the IUT sends a request of subcribers list for IncidentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_05 + +# Check that the IUT sends a request of subcribers list for IrregularMigrationIncidentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_06 + +# Check that the IUT sends a request of subcribers list for LawInfringementIncidentService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_07 + +# Check that the IUT sends a request of subcribers list for MeteoOceanographicConditionService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_08 + +# Check that the IUT sends a request of subcribers list for OrganizationService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_09 + +# Check that the IUT sends a request of subcribers list for RiskService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_10 + +# Check that the IUT sends a request of subcribers list for CargoService when triggered +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response with an empty list when no subscription was done for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_LOOK_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response with an error code when receiving a request to delete an unknown subscription for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SUB_DELETE_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PUSH_NOT_BV_11 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for ActionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_02 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for AnomalyService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_03 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CertificateDocumentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_04 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_05 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IrregularMigrationIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_06 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for LawInfringementIncidentService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_07 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for MeteoOceanographicConditionService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_08 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for OrganizationService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_09 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for RiskService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_10 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CargoService +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_FEEDBACK_BV_11 + +## cise_node_i2 +# Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NN_PULL_REQ_BV_01 + +## cise_adaptor +# Check that the IUT sends a PullRequest for vessels with discovery based on sea basin - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_01 + +# Check that the IUT sends a PullRequest for ActionService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_02 + +# Check that the IUT sends a PullRequest for AnomalyService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_03 + +# Check that the IUT sends a PullRequest for CertificateDocumentService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_04 + +# Check that the IUT sends a PullRequest for IncidentService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_05 + +# Check that the IUT sends a PullRequest for IrregularMigrationIncident when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_06 + +# Check that the IUT sends a PullRequest for LawInfringementIncident when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_07 + +# Check that the IUT sends a PullRequest for MeteoOceanographicConditionService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_08 + +# Check that the IUT sends a PullRequest for OrganizationService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_09 + +# Check that the IUT sends a PullRequest for RiskService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_10 + +# Check that the IUT sends a PullRequest for CargoService when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_11 + +# Check that the IUT sends a PullRequest for VesselService discovery when triggered +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_DISC_BV_01 + + + + + +## security +# Check that the IUT responds with an HTTP 200 OK Acknowledgment with Success when it receives a sign message +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BV_01 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted signature +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_01 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted certificate +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_02 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with corrupted digest +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_03 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported signature algorithm +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_04 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported digest signature algorithm +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_05 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an expired certificate +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_06 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with a certificate valid in the future +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_07 +# Check that the IUT responds with an HTPP 200 OK Acknowledgment response with InvalidSignature when it receives a message not signed +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BO_08 + + +# Simulate peer adapter of CISE node IUT +#AtsCise_TestCases.TC_CDM_CISE_SIMU_EI_NA_PULL_BV_01 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/AtsCise/AtsCise_SimulatedPeerAdapter.cfg_ b/etc/AtsCise/AtsCise_SimulatedPeerAdapter.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..83a918c80fac9ab697f9263a178cde4175abe0c4 --- /dev/null +++ b/etc/AtsCise/AtsCise_SimulatedPeerAdapter.cfg_ @@ -0,0 +1,151 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +# IUT roles +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NA := true +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NN := false +LibCise_Pics.PICS_IUT_CDM_ADAPTOR := false + +LibCise_Pics.PICS_IUT_CDM_CISE_SIMU_EI_NA := true + +# Communication messages +LibCise_Pics.PICS_CDM_PULL := true +LibCise_Pics.PICS_CDM_PUSH := true +LibCise_Pics.PICS_CDM_SUBSCRIBE := true +LibCise_Pics.PICS_CDM_ACKNOWLEDGEMENT := true +LibCise_Pics.PICS_CDM_FEEDBACK := true + +# Services +LibCise_Pics.PICS_CDM_VESSEL_SERVICE := true +LibCise_Pics.PICS_CDM_ACTION_SERVICE := true +LibCise_Pics.PICS_CDM_ANOMALY_SERVICE := true +LibCise_Pics.PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE := true +LibCise_Pics.PICS_CDM_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE := true +LibCise_Pics.PICS_CDM_METEO_SERVICE := true +LibCise_Pics.PICS_CDM_ORGANIZATION_SERVICE := true +LibCise_Pics.PICS_CDM_RISK_SERVICE := true +LibCise_Pics.PICS_CDM_CARGO_SERVICE := true + +# LibCise +LibCise_Pics.PICS_CISE_CERTIFICATES_DB_PATH := "/home/y.garcia/dev/cise-data-model/keystore" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE := "signing.de.cnit.test2.cer" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY := "signing.de.cnit.test2.privkey.pem" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE_PAST := "cise_expired.crt" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY_PAST := "cise_expired.key" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE_FUTURE := "cert_future.crt" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY_FUTURE := "cert_future.key" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_PASSWD := "" +LibCise_Pics.PICS_HEADER_HOST_UT := "172.25.1.58" # Adaptor + +# LibHttp +LibHttp_Pics.PICS_HEADER_HOST := "10.50.1.122" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/xml" +LibHttp_Pics.PICS_USE_TOKEN_HEADER := true +#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken" + +LibCise_Pics.PICS_CISE_PULL_REQUEST_URI := "messages" #"api/messages" +LibCise_Pics.PICS_PULL_RESPONSE_URI := "messages" +LibCise_Pics.PICS_CISE_ADAPTOR_URI := "/cise-adapter/api/v1/messages" + +# LibCise test parameters +# Asynchronous Ack +LibCise_Pixits.PX_CISE_REQUEST_ACK := false +# Services +LibCise_Pixits.PX_CISE_SENDER_SERVICE_ID := "de.cnit.test2.vessel.pull.consumer" +LibCise_Pixits.PX_CISE_RECIPIENT_SERVICE_ID := "de.cnit.test1.vessel.pull.provider" +# Discovery +LibCise_Pixits.PX_CISE_DISCOVERY_PROFILE_SERVICE_ID := "cx.simlsa3-nodecx.vessel.push.consumer" +LibCise_Pixits.PX_CISE_SEA_BASSIN := mediterranean +LibCise_Pixits.PX_DATA_FRESHNESS_TYPE := unknown +# Vessel infornmation +LibCise_Pixits.PX_VESSEL_IMO_NUMBER := 7710525 +LibCise_Pixits.PX_VESSEL_POS_LATITUDE := "43.561062" +LibCise_Pixits.PX_VESSEL_POS_LONGITUDE := "10.264149" +LibCise_Pixits.PX_VESSEL_TYPE := fishingVessel +LibCise_Pixits.PX_COUNTRY_TYPE := fR +LibCise_Pixits.PX_VESSEL_NET_TONNAGE := 30000.0 + +# Organization +LibCise_Pixits.PX_ORGANIZATION_LEGAL_NAME := "A1" +LibCise_Pixits.PX_ORGANIZATION_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59" +# Period +LibCise_Pixits.PX_PERIOD_START_DATE := "2024-02-01+01:00" +LibCise_Pixits.PX_PERIOD_END_DATE := "2024-09-01+01:00" + +# Incident +LibCise_Pixits.PX_IRREGULAR_MIGRATION_INCIDENT_TYPE := irregularBorderEntry +LibCise_Pixits.PX_LAW_INFRINGEMENT_INCIDENT_TYPE := lawInfringementByVessels + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/AtsCise/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +# I1 interface +## Unsecured +system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=10.50.1.25)" +system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8888)" +#### For multiple component +CISEAdapter1.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter1.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8310)" +CISEAdapter2.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=8200)" +CISEAdapter2.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8311)" +## TLS +#system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=172.25.1.54,port=443,use_ssl=1,trusted_ca_list=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" +#system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1,mutual_auth=1,mutual_tls=1,trusted_ca_list=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/y.garcia/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. + +# Simulate peer adapter of CISE node IUT for PullRequest/Response plus Feedback message +#AtsCise_TestCases.TC_CDM_CISE_SIMU_EI_NA_PULL_BV_01 +# Simulate peer adapter of CISE node IUT for PullRequest/Response plus Feedback message +AtsCise_TestCases.TC_CDM_CISE_SIMU_EI_NA_PULL_BV_02 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/AtsCise/AtsCise_mockoon.cfg_ b/etc/AtsCise/AtsCise_mockoon.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..06f242cbe9699a322318c9a443b573dd55d02269 --- /dev/null +++ b/etc/AtsCise/AtsCise_mockoon.cfg_ @@ -0,0 +1,135 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +# IUT roles +LibCise_Pics.PICS_IUT_CDM_NODE_EI_NA := true +LibCise_Pics.PICS_IUT_CDM_ADAPTOR := true + +# LibCise +LibCise_Pics.PICS_CISE_CERTIFICATES_DB_PATH := "/home/yann/dev/cise-data-model/keystore" +LibCise_Pics.PICS_CISE_TS_CERTIFICATE := "sim1_node01.node01.eucise.fr.pem" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY := "sim1_node01.node01.eucise.fr.pkcs8" +#LibCise_Pics.PICS_CISE_CERTIFICATES_DB_PATH := "/home/yann/var/ssl/live/yanngarcia.ddns.net" +#LibCise_Pics.PICS_CISE_TS_CERTIFICATE := "cert.pem" +#LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_KEY := "privkey.pem" +LibCise_Pics.PICS_CISE_TS_SIGNING_PRIVATE_PASSWD := "" +LibCise_Pics.PICS_HEADER_HOST_UT := "192.168.1.44" + +# LibHttp +LibHttp_Pics.PICS_HEADER_HOST := "192.168.1.44" +LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/xml" +LibHttp_Pics.PICS_USE_TOKEN_HEADER := true +#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken" + +LibCise_Pics.PICS_CISE_ADAPTOR_URI := "/cise-adapter/api/v1/messages" + +# LibCise test parameters +# Asynchronous Ack +LibCise_Pixits.PX_CISE_REQUEST_ACK := false +# Services +LibCise_Pixits.PX_CISE_SENDER_SERVICE_ID := "de.sim2-node01.vessel.pull.consumer" +LibCise_Pixits.PX_CISE_RECIPIENT_SERVICE_ID := "de.sim1-node01.vessel.pull.provider" +# Discovery +LibCise_Pixits.PX_CISE_SEA_BASSIN := northSea +# Vessel infornmation +LibCise_Pixits.PX_VESSEL_IMO_NUMBER := 7710525 +LibCise_Pixits.PX_VESSEL_POS_LATITUDE := "43.561062"; +LibCise_Pixits.PX_VESSEL_POS_LONGITUDE := "10.264149"; + +# Upper Tester +LibCise_Pixits.PX_UT_VESSEL_TYPE := "Organization" +LibCise_Pixits.PX_UT_VESSEL_IDINTIFICATION_NUMBER := "inovaworks" +LibCise_Pixits.PX_UT_VESSEL_IDINTIFIER_UUID := "com.inovaworks" +LibCise_Pixits.PX_MESSAGE_PROCESSING_INTERVAL := 2.0 + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/AtsCise/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +# Unsecured +system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=192.168.1.44,port=8200,tcp_fragmented=1)" +system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8200,tcp_fragmented=1)" +# For multiple component +CISEAdapter1.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=192.168.1.44,port=8200)" +CISEAdapter1.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8310)" +CISEAdapter2.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=192.168.1.44,port=8200)" +CISEAdapter2.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=8311)" +# TLS +#system.httpPort.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server=192.168.1.44,port=443,use_ssl=1,trusted_ca_list=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/yann/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" +#system.httpPort_notif.params := "HTTP(codecs=xml:xml_codec;json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1,mutual_auth=1,mutual_tls=1,trusted_ca_list=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/yann/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" + +# UpperTester port +system.utPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=192.168.1.44,port=14000)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsCise_TestControl.control + +## cise_node_i1 +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Vessel service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required +AtsCise_TestCases.TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_01 + +# Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving multiple PullRequest for Vessel service - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 + +## cise_node_i2 +# Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a VesselService +#AtsCise_TestCases.TC_CDM_NODE_EI_NN_PULL_REQ_BV_01 + +## cise_adaptor +# Check that the IUT sends a PullRequest for vessels with discovery based on sea basin - no Acknowledgment required +#AtsCise_TestCases.TC_CDM_ADAPTOR_PULL_REQUEST_BV_01 + +## security +# Check that the IUT responds with an HTTP 200 OK Acknowledgment with Success when it receives a sign message +#AtsCise_TestCases.TC_CDM_NODE_EI_NA_SEC_BV_01 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/install.sh b/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..428272dbf17f0db1124f9abc8b7d08f088ec0163 --- /dev/null +++ b/install.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +#set -e +set -vx + +BASE_PATH=`pwd` + +git submodule update --init --recursive --remote + +if [ ! -d ./titan-test-system-framework ] +then + git clone --recurse-submodules --branch devel https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git + cd ./titan-test-system-framework +else + cd ./titan-test-system-framework + git checkout devel +fi +cd ./ttcn/LibHttp +ln -f module_cise.mk module.mk + +cd $BASE_PATH +ln -f ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ + +exit 0 diff --git a/plantuml/README.md b/plantuml/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/plantuml/__main__.py b/plantuml/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..69134aa9d62290195f2864ea48d8fa7f11cc7e9d --- /dev/null +++ b/plantuml/__main__.py @@ -0,0 +1,186 @@ +# -*- Coding: utf-8 -*- + +from __future__ import division # Import floating-point division (1/4=0.25) instead of Euclidian division (1/4=0) + +import os +import glob +import sys +import logging + +from regex_list import * + +MSG_PATH = "" +IN_FILE_PATH = "" +OUT_FILE_PATH = "" +out_streams = object() +logger = object() +parser = object() +data_ctx = dict() + +def process_command_line_args(): + global IN_FILE_PATH + + print(f"Arguments count: {len(sys.argv)}") + for i, arg in enumerate(sys.argv): + print(f"Argument {i:>6}: {arg}") + IN_FILE_PATH = sys.argv[1] + # End of function process_command_line_args + +def process_line(line): + global MSG_PATH, out_streams, logger, parser, data_ctx + + match = parser.parse_line(line) + if match != None: + logger.info(f"Matching: {match}") + if 'testcase' in match: + logger.info('Got testcase') + out_streams.write('@startuml\n') + out_streams.write(f"title {match['testcase']}\n") + out_streams.write("/'Editor: https://plantuml-editor.kkeisuke.com/ '/\n") + out_streams.write("/'Syntax: http://plantuml.com/fr/sequence-diagram '/\n") + out_streams.write('!include etsi-style.iuml\n') + out_streams.write('!pragma teoz true\n') + out_streams.write('autonumber\n') + out_streams.write('participant system\n') + out_streams.write('box "TTCN-3 Environment" #LightBlue\n') + elif 'operation' in match: + logger.info('Got operation') + if match['operation'] == 'mapped': + out_streams.write(f"participant \"{match['comp']}:{match['protocol_port']}\"\n") + data_ctx['protocol_port'].append(f"{match['comp']}:{match['protocol_port']}") + else: + if match['protocol_port'] != 'syncPort': + out_streams.write(f"\"{match['comp']}:{match['protocol_port']}\" --> system: unmap\n") + elif 'request' in match: + logger.info('Got request') + if data_ctx['box_ended'] == False: + out_streams.write('endbox\n') + data_ctx['box_ended'] = True + for p in data_ctx['protocol_port']: + out_streams.write(f"\"{p}\" --> system: map\n") + out_streams.write(f"\"{match['comp']}:{match['port']}\" -[#green]> system: @{match['module']}.{match['message']}\n") + s = match['request'].replace(",", ",\\n").replace("\"", "").strip() + if len(s) > 128: + n = match['hours'] + "_" + match['minutes'] + "_" + match['seconds'] + "_" + match['milliseconds'] + ".txt" + n = os.path.join(MSG_PATH, n) + with open(n, "w") as msg: + msg.write(s) + s = f'[[file://{n} request := ...]]' #{Click to read the message} + out_streams.write(f"note right: {s}\n") + out_streams.write(f"note left: {match['hours']}:{match['minutes']}:{match['seconds']}.{match['milliseconds']}\n") + elif 'response' in match: + logger.info('Got response') + if data_ctx['box_ended'] == False: + out_streams.write('endbox\n') + data_ctx['box_ended'] = True + out_streams.write(f"system -[#green]> \"{match['comp']}:{match['port']}\": @{match['module']}.{match['message']}\n") + s = match['response'].replace(",", ",\\n").replace("\"", "").strip() + if len(s) > 128: + n = match['hours'] + "_" + match['minutes'] + "_" + match['seconds'] + "_" + match['milliseconds'] + ".txt" + n = os.path.join(MSG_PATH, n) + with open(n, "w") as msg: + msg.write(s) + s = f'[[file://{n} response := ...]]' #{Click to read the message} + out_streams.write(f"note right: {s}\n") + out_streams.write(f"note left: {match['hours']}:{match['minutes']}:{match['seconds']}.{match['milliseconds']}\n") + elif 'timer_name' in match: + logger.info('Got timer') + if match['timer_name'] == 'tc_sync': + pass + else: + for p in data_ctx['protocol_port']: + if p.startswith(match['comp']): + out_streams.write(f"\"{p}\" -> \"{p}\": {match['start_stop']}, duration: {match['duration']}\n") + break + out_streams.write(f"note left: {match['hours']}:{match['minutes']}:{match['seconds']}.{match['milliseconds']}\n") + elif 'verdict' in match: + logger.info('Got verdict') + if 'ptcid' in match and match['ptcid'] != None: + s = match['ptcid'].split('(') + s = s[1].split(')') + for p in data_ctx['protocol_port']: + if p.startswith(s[0]): + if match['verdict'] == 'fail': + out_streams.write(f"hnote over \"{p}\" #red: fail\n") + elif match['verdict'] == 'pass': + out_streams.write(f"hnote over \"{p}\" #green: pass\n") + elif match['verdict'] == 'inconc': + out_streams.write(f"hnote across #yellow: inconc\n") + else: + out_streams.write(f"hnote over \"{p}\" #gray: error\n") + out_streams.write(f"note left: {match['hours']}:{match['minutes']}:{match['seconds']}.{match['milliseconds']}\n") + break + elif 'final_verdict' in match: + logger.info('Got verdict') + if match['final_verdict'] == 'fail': + out_streams.write(f"hnote across #red: fail\n") + elif match['final_verdict'] == 'pass': + out_streams.write(f"hnote across #green: pass\n") + elif match['final_verdict'] == 'inconc': + out_streams.write(f"hnote across #yellow: inconc\n") + else: + out_streams.write(f"hnote across #gray: error\n") + out_streams.write(f"note left: {match['hours']}:{match['minutes']}:{match['seconds']}.{match['milliseconds']}\n") + else: + logger.info('Got unsupported item') + # End of 'if' statement + out_streams.flush() + # End of function process_line + +def main(): + global MSG_PATH, OUT_FILE_PATH, out_streams, logger, parser, data_ctx + + process_command_line_args() + + # Initialize the logger + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + l = logging.StreamHandler() + l.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) + logger.addHandler(l) + + # Prepare outputs + OUT_FILE_PATH = sys.argv[2] + CURRENT_PATH = os.getcwd() + MSG_PATH = os.path.join(CURRENT_PATH, "msgs") + logger.info(f'CURRENT_PATH:{CURRENT_PATH} - MSG_PATH{MSG_PATH}') + if os.path.exists(MSG_PATH): + files = glob.glob(os.path.join(MSG_PATH, '*')) + for f in files: + os.remove(f) + else: + os.mkdir(MSG_PATH) + + # Setup the regex + parser = regex_list(logger) + parser.reset_state() + + data_ctx = dict() + data_ctx['protocol_port'] = [] + data_ctx['box_ended'] = False + + print(f"IN_FILE_PATH= {IN_FILE_PATH}") + with open(IN_FILE_PATH, "r") as in_stream: + with open(OUT_FILE_PATH, "w") as out_streams: + line = in_stream.readline() + while line != '': + process_line(line) + line = in_stream.readline() + # End of 'for' statement + # Add the end tag + out_streams.write('@enduml\n') + out_streams.flush() + # End of 'with' statement + # End of 'with' statement + + # Check if file is not empty + if os.path.getsize(OUT_FILE_PATH) == 0: + logger.error(f'Empty result, please check that FileMask is properly set: ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE') + else: + os.system('java -DPLANTUML_LIMIT_SIZE=8192 -jar ./plantuml.jar -svg {}'.format(OUT_FILE_PATH)) +# End of main function + +if __name__ == "__main__": + main() + +# End of file diff --git a/plantuml/__pycache__/__main__.cpython-38.pyc b/plantuml/__pycache__/__main__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de40fb98efc4c82c6716c5aaa70ff4e71ed2479f Binary files /dev/null and b/plantuml/__pycache__/__main__.cpython-38.pyc differ diff --git a/plantuml/__pycache__/regex_list.cpython-38.pyc b/plantuml/__pycache__/regex_list.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ba283603e4faf0bf80ab95cbc1fdd0fcb9cfe94 Binary files /dev/null and b/plantuml/__pycache__/regex_list.cpython-38.pyc differ diff --git a/plantuml/etsi-style.iuml b/plantuml/etsi-style.iuml new file mode 100644 index 0000000000000000000000000000000000000000..e26d257713d678a0011da52cb4400a16a1264b16 --- /dev/null +++ b/plantuml/etsi-style.iuml @@ -0,0 +1,46 @@ +hide footbox +autonumber +skinparam { + dpi 300 + shadowing false + 'handwritten true + defaultFontSize 8 +} + +skinparam note { + FontSize 8 + FontStyle bold + FontColor White + borderColor Black + backgroundColor DimGray +} + +skinparam participant { + FontSize 8 + FontStyle bold + FontColor White + borderColor Navy + backgroundColor RoyalBlue +} + +skinparam actor { + FontSize 8 + FontStyle bold + FontColor Navy + borderColor Navy + backgroundColor RoyalBlue +} + +skinparam sequence { + ArrowFontColor Black + ArrowColor SlateGray + LifeLineBorderColor Navy + LifeLineBackgroundColor DimGray +} + +skinparam ParticipantPadding 5 +skinparam BoxPadding 5 + +!define sendrcvRTP(a,b,c) a <-[#LimeGreen]> b : c +!define sendRTP(a,b,c) a -[#LimeGreen]> b : c +!define setParticipant(a,b) participant a as b diff --git a/plantuml/plantuml.jar b/plantuml/plantuml.jar new file mode 100644 index 0000000000000000000000000000000000000000..506b8c4b818bcb6f8ac254e898da44470cbad888 Binary files /dev/null and b/plantuml/plantuml.jar differ diff --git a/plantuml/regex_list.py b/plantuml/regex_list.py new file mode 100644 index 0000000000000000000000000000000000000000..ecd5fbc6b91347cad5cc1eb0430da2756da2e6f2 --- /dev/null +++ b/plantuml/regex_list.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +from __future__ import division # Import floating-point division (1/4=0.25) instead of Euclidian division (1/4=0) + +import logging +import re +import os +class regex_list(object): + """ + For testing purposes: https://regex101.com/ + """ + def __init__(self, p_logger): + self.__logger = p_logger + self.__state = 'none' + self.__flags = re.DOTALL | re.VERBOSE + self.__regexps = dict() + self.__regexps['exec_test'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sTESTCASE\s.*\sTest\scase\s(?P\w+)\sstarted\.$', self.__flags) + self.__regexps['map_port'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sPORTEVENT\s.*\sPort\s(?P\w+)\swas\s(?P\w+)\sto\s(?P\w+):(?P\w+)\.$', self.__flags) + self.__regexps['unmap_port'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sPORTEVENT\s.*\sPort\s(?P\w+)\swas\s(?P\w+)\sfrom\s(?P\w+):(?P\w+)\.$', self.__flags) + self.__regexps['messages'] = self.__regexps['unmap_port'] + self.__regexps['message_out'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sPORTEVENT\s.*\sSent\son\s(?P\w+)\sto\ssystem(\(.*\)){0,1}\s@(?P\w+).(?P\w+)\s:\s\{(?P.+)\}$', self.__flags) + self.__regexps['message_in'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sPORTEVENT\s.*\sMessage\senqueued\son\s(?P\w+)\sfrom\ssystem\s@(?P\w+).(?P\w+)\s:\s\{(?P.+)\}\sid\s\w+$', self.__flags) + self.__regexps['timer'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sTIMEROP\s.*\s(?P\w+)\stimer\s(?P\w+):\s(?P\w+).*$', self.__flags) + self.__regexps['final_verdict'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sTESTCASE\s.*\sTest\scase\s(.+)\sfinished\.\sVerdict:\s(?P\w+)$', self.__flags) + self.__regexps['verdict'] = re.compile(r'^(?P\d+):(?P\d+):(?P\d+).(?P\d+)(\s((?Pmtc|\d+))){0,1}\sVERDICTOP\s.*\sLocal\sverdict\sof\s(MTC|PTC)(\s(?P.+)){0,1}:\s(?P\w+).*$', self.__flags) + # End of __init__ class + + def reset_state(self): + self.__state = 'exec_test' + self.__logger.info('Reset state: ' + self.__state) + # End of reset_state + + def parse_line(self, p_line): + self.__logger.debug('>>> regex_list::parse_line: ' + self.__get_state()) + self.__logger.debug('regex_list::parse_line: ' + p_line) + + if self.__get_state() == 'exec_test': + m = self.__regexps[self.__state].match(p_line) + if m: + self.__set_next_state() + return m.groupdict() + elif self.__get_state() == 'map_port': + m = self.__regexps[self.__state].match(p_line) + if m: + return m.groupdict() + else: # In map_port, check for TTCN-3 message sent ('message_out') and received ('message_in') + m = self.__regexps['message_out'].match(p_line) + if m: + self.__set_next_state() + return m.groupdict() + else: + m = self.__regexps['message_in'].match(p_line) + if m: + self.__set_next_state() + return m.groupdict() + else: + m = self.__regexps['timer'].match(p_line) + if m: + return m.groupdict() + elif self.__get_state() == 'messages': + m = self.__regexps[self.__state].match(p_line) + if m: + self.__set_next_state() + return m.groupdict() + else: # Check for TTCN-3 message sent ('message_out') and received ('message_in') + m = self.__regexps['message_out'].match(p_line) + if m: + return m.groupdict() + else: + m = self.__regexps['message_in'].match(p_line) + if m: + return m.groupdict() + else: + m = self.__regexps['timer'].match(p_line) + if m: + return m.groupdict() + elif self.__get_state() == 'unmap_port': + m = self.__regexps[self.__state].match(p_line) + if m: + return m.groupdict() + else: # In unmap_port, check for final_verdict + m = self.__regexps['verdict'].match(p_line) + if m: + self.__set_next_state() + return m.groupdict() + elif self.__get_state() == 'verdict' or self.__get_state() == 'final_verdict': + m = self.__regexps['verdict'].match(p_line) + if m: + return m.groupdict() + else: + m = self.__regexps['final_verdict'].match(p_line) + if m: + self.__set_next_state() + return m.groupdict() + return None + # End of method parse_line + + def __set_next_state(self): + if self.__state == 'exec_test': + self.__logger.info('regex_list::parse_line: Set state to map_port') + self.__state = 'map_port' + elif self.__state == 'map_port': + self.__logger.info('regex_list::parse_line: Set state to messages') + self.__state = 'messages' + elif self.__state == 'messages': + self.__logger.info('regex_list::parse_line: Set state to unmap_port') + self.__state = 'unmap_port' + elif self.__state == 'unmap_port': + self.__logger.info('regex_list::parse_line: Set state to verdict') + self.__state = 'verdict' + elif self.__state == 'verdict': + self.__logger.info('regex_list::parse_line: Set state to final_verdict') + self.__state = 'final_verdict' + elif self.__state == 'final_verdict': + self.__logger.info('regex_list::parse_line: Terminated') + self.reset_state() + # End of method __set_next_state + + def __get_state(self): + return self.__state + # End of method __get_state + +# End of class regex_list + +# End of file diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b0dfb723e139e4ed96bf3ad5648887d4672e12ad --- /dev/null +++ b/scripts/README.md @@ -0,0 +1 @@ +This folder will contains execution logs for ETSI MEC-DECODE ATS. diff --git a/scripts/build_titan.bash b/scripts/build_titan.bash new file mode 100755 index 0000000000000000000000000000000000000000..9d39632ab48255e2ed3ec1e21f67235a07bf108c --- /dev/null +++ b/scripts/build_titan.bash @@ -0,0 +1,106 @@ +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +set -e +#set -vx + +clear + +if [ -z "${TOP}" ] +then + echo "Failed, TOP variable not defined, exit" + exit 1 +fi + +CURDIR=`pwd` +TITAN_DIR=${TOP}/.. + +# Move to the right directory +if [ ! -d ${TITAN_DIR} ] +then + echo "Titan directory does not exist, create it" + # Create TITAN directories + mkdir -p ${TITAN_DIR} + if [ ! "$?" -eq "0" ] + then + echo "Failed, TOP variable not defined, exit" + exit 2 + fi + cd ${TITAN_DIR} + # Clone all TITAN repositories + if [ ! -f ${CURDIR}/titan_repos.txt ] + then + echo "${HOME_BIN}/titan_repos.txt file does not exist, exit" + rm -fr ${TOP} + rm -fr ${TOP}/.. + exit 3 + fi + TITAN_REPOS=`cat ${CURDIR}/titan_repos.txt` + for i in ${TITAN_REPOS}; + do + git clone $i + if [ ! "$?" -eq "0" ] + then + echo "Failed to clone $i, exit" + exit 4 + fi + done +else + cd ${TITAN_DIR} + # Update github folders + DIRS=`find . -type d -name ".git" -exec dirname {} \;` + for i in ${DIRS}; + do + echo "Processing $i..." + cd $i + git fetch + if [ ! "$?" -eq "0" ] + then + echo "Failed to fetch $i, continue" + else + git pull + if [ ! "$?" -eq "0" ] + then + echo "Failed to pull $i, continue" + fi + fi + cd - + done +fi + +# Build TITAN core +export JNI=no +export GUI=no +export DEBUG=no +export GEN_PDF=no +if [ -d ${TTCN3_DIR} ] +then + rm -fr ${TTCN3_DIR} +fi +mkdir ${TTCN3_DIR} +cd ./titan.core +/bin/cat < Makefile.personal +JNI:=no +GUI:=no +DEBUG:=no +GEN_PDF:=no +EOF + +# To prevent link error /usr/bin/ld: /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command lineema +sed --in-place 's/LINUX_LIBS := -lxml2/LINUX_LIBS := -lxml2 -lpthread/g' ./core/Makefile + +echo "Starting build..." +make clean +if [ "${OSTYPE}" == "cygwin" ] +then + make -j +else + make +fi +make install +echo "Build done" + +# Go back to initial directory +cd ${CURDIR} +exit 0 diff --git a/scripts/devenv.bash.debian b/scripts/devenv.bash.debian new file mode 100755 index 0000000000000000000000000000000000000000..3954023022c3ecaae5adb797b9f65d34014d2616 --- /dev/null +++ b/scripts/devenv.bash.debian @@ -0,0 +1,77 @@ +#!/bin/bash + +# Turn on debug mode +#set -vx +#set -e + +# Colors and Prompt +#export PS1="\w\$ " +#export PS1="\D{%Y-%m-%d %H:%M:%S} \w\n\$ " + +export EDITOR=emacs +set -o emacs + +# Home working directories +export HOME_FRAMEWORKS=${HOME}/frameworks +export HOME_LIB=${HOME}/lib +export HOME_BIN=${HOME}/bin +export HOME_ETC=${HOME}/etc +export HOME_TMP=${HOME}/tmp +export HOME_DOCS=${HOME}/docs + +# Home common include directory +export HOME_INC=${HOME}/include + +# Update PATH environment variable +export PATH=${HOME_BIN}:${PATH} + +# Update LD_LIBRARY_PATH environment variable +if [ -z "${LD_LIBRARY_PATH}" ] +then + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${HOME}/dev/etsi_its/lib +else + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${HOME}/dev/etsi_its/lib:${LD_LIBRARY_PATH} +fi + + +# Add JAVA support +#export JAVA_VERSION=1.8.0_92 +#export JAVA_JDK=jdk${JAVA_VERSION} +#if [ -d "${HOME_FRAMEWORKS}/${JAVA_JDK}" ] +#then +# export JAVA_HOME=${HOME_FRAMEWORKS}/${JAVA_JDK}/bin +#else +# unset JAVA_VERSION +# unset JAVA_JDK +#fi + +# Add TITAN support +export TOP=${HOME_FRAMEWORKS}/titan/titan.core +export TTCN3_DIR=${TOP}/Install +if [ -d ${TTCN3_DIR} ] +then + export TTCN3_BROWSER=mozilla + export PATH=${TTCN3_DIR}/bin:${PATH} + export LD_LIBRARY_PATH=${TTCN3_DIR}/lib:${LD_LIBRARY_PATH} + export MANPATH=${TTCN3_DIR}/man:${MANPATH} + export TTCN3_LICENSE_FILE=${TTCN3_DIR}/etc/license/license.dat + export PATH_DEV_TTCN=${HOME}/dev/ttcn3 + # ITS support + export PATH_DEV_ITS=${HOME}/dev/TS.ITS + # Emergency Communication support + export PATH_DEV_EMCOM=${HOME}/dev/NG112 + # Mobile-Edge Computing support + export PATH_DEV_MEC=${HOME}/dev/gs032p3-ttcn-test-suite + # CDM/CISE support + export PATH_DEV_MEC=${HOME}/dev/cise + # Validation folder + export VALIDATION_DIR=${HOME} +fi + +export BROWSER=netsurf + +export OPENSSL_DIR=/usr/local + +export LSAN_OPTIONS=verbosity=1:log_threads=1 + + diff --git a/scripts/devenv.bash.ubuntu b/scripts/devenv.bash.ubuntu new file mode 100755 index 0000000000000000000000000000000000000000..254cc37f0994b24a461c14791d3ec14c4336a3a2 --- /dev/null +++ b/scripts/devenv.bash.ubuntu @@ -0,0 +1,73 @@ +#!/bin/bash + +# Turn on debug mode +#set -vx + +set -e + +# Colors and Prompt +#export PS1="\w\$ " +#export PS1="\D{%Y-%m-%d %H:%M:%S} \w\n\$ " + +export TERM=xterm +export EDITOR=emacs +set -o emacs + +# Home working directories +export HOME_FRAMEWORKS=${HOME}/frameworks +export HOME_LIB=${HOME}/lib +export HOME_BIN=${HOME}/bin +export HOME_ETC=${HOME}/etc +export HOME_TMP=${HOME}/tmp +export HOME_DOCS=${HOME}/docs + +# Home common include directory +export HOME_INC=${HOME}/include + +# Update PATH environment variable +export PATH=${HOME_BIN}:${PATH} + +# Update LD_LIBRARY_PATH environment variable +if [ "${LD_LIBRARY_PATH}" == "" ] +then + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib +else + export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${LD_LIBRARY_PATH} +fi + + +# Add JAVA support +export JAVA_VERSION=1.8.0_92 +export JAVA_JDK=jdk${JAVA_VERSION} +if [ -d "${HOME_FRAMEWORKS}/${JAVA_JDK}" ] +then + export JAVA_HOME=${HOME_FRAMEWORKS}/${JAVA_JDK}/bin +else + unset JAVA_VERSION + unset JAVA_JDK +fi + +# Add TITAN support +export TOP=${HOME_FRAMEWORKS}/titan/titan.core +export TTCN3_DIR=${TOP}/Install +if [ -d ${TTCN3_DIR} ] +then + export TTCN3_BROWSER=mozilla + export PATH=${TTCN3_DIR}/bin:${PATH} + export LD_LIBRARY_PATH=${TTCN3_DIR}/lib:${LD_LIBRARY_PATH} + export MANPATH=${TTCN3_DIR}/man:${MANPATH} + export TTCN3_LICENSE_FILE=${TTCN3_DIR}/etc/license/license.dat + export PATH_DEV_TTCN=${HOME}/dev/ttcn3 + # ITS support + export PATH_DEV_ITS=${HOME}/dev/TS.ITS + # Emergency Communication support + export PATH_DEV_EMCOM=${HOME}/dev/NG112 + # Mobile-Edge Computing support + export PATH_DEV_MEC=${HOME}/dev/gs032p3-ttcn-test-suite + # CDM/CISE support + export PATH_DEV_MEC=${HOME}/dev/cise + # Validation folder + export VALIDATION_DIR=${HOME} +fi + +export BROWSER=netsurf diff --git a/scripts/generate_png.sh b/scripts/generate_png.sh new file mode 100755 index 0000000000000000000000000000000000000000..37b46baa5ad5a4e0bba0dc0e876c0bfb1d1bd736 --- /dev/null +++ b/scripts/generate_png.sh @@ -0,0 +1,17 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +cd ../plantuml/ +python3 . ../logs/${ATS}/merged.log ./${ATS}.txt +cd - + +exit 0 diff --git a/scripts/run_all.bash b/scripts/run_all.bash new file mode 100755 index 0000000000000000000000000000000000000000..f5fe4490ed33e548810b911615a0299df7d2a264 --- /dev/null +++ b/scripts/run_all.bash @@ -0,0 +1,60 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +if ! [[ $1 =~ "^[0-9]+$" ]] +then + COUNTER=$1 +else + COUNTER=1 +fi + +if [ $COUNTER == 0 ] +then + COUNTER=1 + cd .. && make && cd - +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "scripts" ] +then + cd ../scripts + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/scripts directory" + exit 1 + fi +fi + +rm ../logs/$ATS/*.log + +for i in $(seq 1 1 $COUNTER) +do + ./run_mtc.bash & + ./run_ptcs.bash + + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + while [ ${dup} -eq 3 ] + do + sleep 1 + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + done + sleep 1 + + if [ -f ../logs/$ATS/merged_formated.log ] + then + mv ../logs/$ATS/merged_formated.log ../logs/$ATS/merged.`date +'%Y%m%d%S'`.log + fi +done + +exit 0 + + diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash new file mode 100755 index 0000000000000000000000000000000000000000..d78a331a50e0673e21ee13fa9b7faca0f1f9189d --- /dev/null +++ b/scripts/run_mtc.bash @@ -0,0 +1,48 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "scripts" ] +then + cd ../scripts + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/scripts directory" + exit 1 + fi +fi + +TITAN_LOG_DIR=../logs/$ATS +if [ ! -d ${TITAN_LOG_DIR} ] +then + mkdir ${TITAN_LOG_DIR} +else + rm -f ${TITAN_LOG_DIR}/*.log +fi + +CFG_FILES=`find ../etc/$ATS -name '*.cfg'` + +echo "> cmtc: to create the MTC server" +echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" +echo "> emtc: Terminate MTC." +$TTCN3_DIR/bin/mctr ${CFG_FILES} + +sudo chown -R `whoami` ${TITAN_LOG_DIR} +LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +if [ "${TITAN_LOG_DIR}" != "" ] +then + $TTCN3_DIR/bin/ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} + $TTCN3_DIR/bin/ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" +fi + +cd ${CURPWD} diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash new file mode 100755 index 0000000000000000000000000000000000000000..d143e809de77c34f852232222d3d11f8f7c5182f --- /dev/null +++ b/scripts/run_ptcs.bash @@ -0,0 +1,36 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +if [ -z $ATS ] +then + echo "ATS shall be defined" + exit 1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "scripts" ] +then + cd ../scripts + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/scripts directory" + exit 1 + fi +fi + +if [ -f ./core ] +then + rm -f ./core +fi + +if [ "$ATS" == "AtsRSUsSimulator" ] +then + sudo LD_LIBRARY_PATH=$TTCN3_DIR/lib:$HOME/lib:/usr/local/lib ../bin/$ATS 127.0.0.1 12001 +else + sudo LD_LIBRARY_PATH=$TTCN3_DIR/lib:$HOME/lib:/usr/local/lib ../bin/$ATS 127.0.0.1 12000 +fi + +cd ${CURPWD} diff --git a/scripts/titan_repos.txt b/scripts/titan_repos.txt new file mode 100644 index 0000000000000000000000000000000000000000..8842f4e0283928a94ebbbd37aff6b25fe27c2279 --- /dev/null +++ b/scripts/titan_repos.txt @@ -0,0 +1,56 @@ +https://gitlab.eclipse.org/eclipse/titan/titan.core.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Abstract_Socket.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.HTTPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LANL2asp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PCAPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PIPEasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SCTPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SIPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SQLasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TCPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TELNETasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UDPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.COMMON.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCPv6.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DIAMETER_ProtocolModule_Generator.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DNS.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMPv6.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTSP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SNMP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.TCP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.UDP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.XMPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.misc.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPasp_RFC4511.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Socket-API.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SSHCLIENTasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.STDINOUTmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SUNRPCasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UNIX_DOMAIN_SOCKETasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.IPL4asp.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.FrameRelay.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.H248_v2.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IMAP_4rev1.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICAP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IKEv2.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IPsec.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IUA.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.JSON_v07_2006.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.L2TP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.M3UA.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MIME.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MSRP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.PPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ProtoBuff.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RADIUS_ProtocolModule_Generator.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SRTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.WebSocket.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.HTTP2.0.git +https://gitlab.eclipse.org/eclipse/titan/titan.Libraries.TCCUsefulFunctions.git diff --git a/scripts/update_user_name.sh b/scripts/update_user_name.sh new file mode 100755 index 0000000000000000000000000000000000000000..b5c5d7f3aa7a64d722acac43be8be11ebc2a15df --- /dev/null +++ b/scripts/update_user_name.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Debug mode +#set -e +#set -vx + +# Usage: sudo ./update_user_name.bash +# TODO Use git clone in temporary directory + +USER_NAME='s/etsi/vagrant/g' +for i in `find /home/vagrant/dev/$1 -name "*.cf*"` +do + sed --in-place ${USER_NAME} $i +done + +exit 0 diff --git a/test-purposes/AtsCise/AtsCise.tplan2 b/test-purposes/AtsCise/AtsCise.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..9c7be3d3268c9fba3409a75ed3a2fc1b2ee4a7d5 --- /dev/null +++ b/test-purposes/AtsCise/AtsCise.tplan2 @@ -0,0 +1,15558 @@ +/** + * Copyright (c) ETSI 2018-2023. + * Released under BSD 3-clause license. For more information visit https://forge.etsi.org/legal-matters + */ + +Package CISE { + + import all from CISE_Common; + + Group "cise_node_ei_na"{ + + Group "pull_request" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Vessel service - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_02" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with timeout on response - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_02 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK PullResponse response with a ResultCode 'InvalidRequestObject' when receiving a PullRequest for a unknown vessel" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel indicating value empty;, + PullType indicating value Request, + DiscoveryProfiles containing + country indicating value COUNTRY;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value InvalidRequestObject, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_03 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with filter - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered several vessel containing + VESSEL_1 containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_GREATHER_THAN;, + VESSEL_2 containing + IMONumber indicating value VESSEL_IMO_NUMBER_2, + Name indicating value VESSEL_NAME_2, + Location indicating value VESSEL_LOCATION_2, + ShipType indicating value VESSEL_SHIP_TYPE_2, + NetTonnage indicating value VESSEL_NET_TONNAGE_LESS_THAN;; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_1;;, + PayloadSelector containing + Selectors containing // Vessels with tonnage > VESSEL_NET_TONNAGE + Selector indicating value "//Vessel[1]/NetTonnage", + Operator indicating value GREATER_THAN;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_01_04 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving an inconsistent PullRequest" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Push;, // Push instead of pull + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Push;, // Push instead of pull + not Payload, + PullType indicating value Request, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value InvalidRequestObject, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an inconsistent Service Operation type" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Push;, // Inconsistent Service Operation type + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_1;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value InvalidRequestObject, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_02 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an unknown serviceID" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID_UNKNOWN, // Unknown service ID + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_1;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value serviceTypeNotSupported, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_03 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in past (one month late)" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME - 30 days, // Date/time far in past (one month late) + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_1;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value timestampError, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_04 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_05" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in future (one month)" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME - 30 days, // Date/time far in future (one month) + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_1;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value timestampError, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_05 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_06" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an invalid filter (Selector entry does not exist)" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered several vessel containing + VESSEL_1 containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_GREATHER_THAN;, + VESSEL_2 containing + IMONumber indicating value VESSEL_IMO_NUMBER_2, + Name indicating value VESSEL_NAME_2, + Location indicating value VESSEL_LOCATION_2, + ShipType indicating value VESSEL_SHIP_TYPE_2, + NetTonnage indicating value VESSEL_NET_TONNAGE_LESS_THAN;; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER_1, + Name indicating value VESSEL_NAME_1, + Location indicating value VESSEL_LOCATION_1, + ShipType indicating value VESSEL_SHIP_TYPE_1, + NetTonnage indicating value VESSEL_NET_TONNAGE_1;;, + PayloadSelector containing + Selectors containing // Vessels with tonnage > VESSEL_NET_TONNAGE + Selector indicating value "//Vessel[2]/NetTonnage", // Selector does not exist + Operator indicating value GREATER_THAN;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value badRequest, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_01_06 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_02_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_02_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_02_02" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with timeout on response" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value "Any", // FIXME + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_02_02 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_02_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Location" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value Pull;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value "Any", // FIXME + Priority indicating value High, + Location indicating value VESSEL_INCONSISTENT_LOCATION, // Inconsistent Location such as another sea bassin + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + AckCode indicating value InvalidRequestObject, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_02_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_02_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Involved agent" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value "Any", // FIXME + Priority indicating value High, + Location indicating value VESSE_LOCATION, + Agent containing + identifier indicating value AGENT_UNKNOWN_IDENTIFIER;;;, // Inconsistent Involved agent + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + AckCode indicating value InvalidRequestObject, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_02_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_03" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with timeout on response" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_04" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with timeout on response" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value certificateDocumentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value certificateDocumentService;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_04 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BO_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with a vessel document certificate with an invalid Integrity Check" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value certificateDocumentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value Pull;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT_CORRUPTED, // Invalid Integrity Check + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + AckCode indicating value BadRequest, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BO_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_05" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with timeout on response" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value incidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value incidentService;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_06" + + Test objective + "Check the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with an IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value irregularMigrationIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value irregularMigrationIncidentService;, + Payload containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_07" + + Test objective + "Check the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest with a LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value lawInfringementIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value lawInfringementIncidentService;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_08" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an ongoing meteo condition" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value meteoOceanographicConditionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value meteoOceanographicConditionService;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_09" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an organization" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value organizationService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value organizationService;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value Pull;, + Payload containing + Organization containing + AnyField indicating value any_value;;, // FIXME Which are the fields returned here + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_10" + + Test objective + "Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for ongoing risk" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value riskService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value riskService;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value Pull;, + Payload containing + Organization containing + AnyField indicating value any_value;;, // FIXME Which are the fields returned here + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_REQ_BV_11" + + Test objective + "Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest for a cargo" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value Pull;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + PullType indicating value Request, + DiscoveryProfiles containing + SeaBasin indicating value SEA_BASIN;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value Pull;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_REQ_BV_02_01 + + } // End of Group "cargo_service" + + } // End of Group "pull_request" + + Group "pull_request_multicast" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving multiple PullRequest for Vessel service - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.3 Multicast Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives several vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + } + then { + the IUT entity sends multiple HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID_nn, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID_nn, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + } + } + } // End of TP_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.3 Multicast Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a action containing + IMONumber indicating value ACTION_IMO_NUMBER, + Name indicating value ACTION_NAME, + Location indicating value ACTION_LOCATION, + ShipType indicating value ACTION_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives several vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_nn, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID_nn, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID_nn, + ServiceOperation indicating value Pull;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + } + then { + the IUT entity sends multiple HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID_nn, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID_nn, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + } + } + } // End of TP_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02 + + } // End of Group "action_service" + + } // End of Group "pull_request_multicast" + + Group "pull_request_discovery" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with Vessel service discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value vesselService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_01 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with ActionServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value actionService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with AnomalyServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value anomalyService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IncidentServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value certificateDocumentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_05" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IncidentServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value incidentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_06" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IrregularMigrationIncidentService discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value irregularMigrationIncidentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_07" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with LawInfringementIncidentService discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value lawInfringementIncidentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_08" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with MeteoOceanographicConditionService discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value meteoOceanographicConditionService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_09" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with OrganizationServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value organizationService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_10" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with RiskServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value riskService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PULL_DISC_BV_11" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CargoServide discovery - no Acknowledgment required" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value cargoService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PULL_DISC_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "pull-discovery" + + Group "push_subscribe" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for subscription - delegation to the node" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Subscribe;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BO_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a subscription ending in past" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_MINUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Subscribe;, + AckCode indicating value timestampError, // FIXME To be checked + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BO_01 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value actionService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value actionService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value actionService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value anomalyService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value anomalyService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value anomalyService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_05" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_05 + + } // End of Group "certificate_document_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_06" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_07" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_08" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for MeteoOceanographicConditionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_09" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_10" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_BV_11" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "pull_subscribe" + + Group "push_subscribe_lookup" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a VESSEL_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response with an empty list when no subscription was done for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not having a VESSEL_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value MESSAGE_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_02" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ACTION_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_03" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ANOMALY_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_04" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CERTIFICATE_DOCUMENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_05" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_06" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_07" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a LAW_INFRINGEMENT_INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_08" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for MeteoOceanographicConditionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a METEO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_09" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ORGANIZATION_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_10" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a RISK_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_LOOK_BV_11" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request of subscribers list for CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CARGO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + ServiceCapability containing + RefreshRate indicating value any_value, + SubscriptionEnd indicating value END_OF_SUBSCRIPTION;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_LOOK_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "push_subscribe_lookup" + + Group "push_unsubscribe" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a VESSEL_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response with an error code when receiving a request to delete an unknown subscription for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not having a VESSEL_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value MESSAGE_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value BadRequest, // TODO To be checked + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_02" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ACTION_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_03" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ANOMALY_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_04" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CERTIFICATE_DOCUMENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_05" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a INCIDENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_06" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_07" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a LAW_INFRINGEMENT_INCIDENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_08" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for MeteoOceanographicConditionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a METEO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_09" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ORGANIZATION_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_10" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a RISK_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_SUB_DELETE_BV_11" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a request to delete subscription for CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CARGO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_SUB_DELETE_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "pull_unsubscribe" + + Group "push_notify" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a VESSEL_SUBSCRIPTION + } + + Expected behaviour // FIXME Not sure how it works + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value VesselService, + ServiceRole indicating value Provider;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_01 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION; and + the IUT entity having a ACTION_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value ActionService, + ServiceRole indicating value Provider;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a ANOMALY_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value AnomalyService, + ServiceRole indicating value Provider;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a CERTIFICATE_DOCUMENT_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService, + ServiceRole indicating value Provider;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_05" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a INCIDENT_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService, + ServiceRole indicating value Provider;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_06" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService, + ServiceRole indicating value Provider;, + Payload containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_07" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService, + ServiceRole indicating value Provider;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_08" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for MeteoOceanographicConditionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a METEO_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService, + ServiceRole indicating value Provider;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_09" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a ORGANIZATION_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService, + ServiceRole indicating value Provider;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_10" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a RISK_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService, + ServiceRole indicating value Provider;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_PUSH_NOT_BV_11" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a CARGO_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService, + ServiceRole indicating value Provider;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the ADAPTER entity + } + } + + } // End of TP_CDM_NODE_EI_NA_PUSH_NOT_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "push_notify" + + Group "async_acknowledgement" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_ASYNC_ACK_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for a Vessel service - Acknowledgment requested" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends multiple HTTP_RESPONSE containing // Asynchronous ACK + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing // Synchronous ACK + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_ASYNC_ACK_BV_01 + + } // End of Group "vessel_service" + + } // End of Group "async_acknowledgement" + + Group "feedback" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_01 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a action containing + IMONumber indicating value ACTION_IMO_NUMBER, + Name indicating value ACTION_NAME, + Location indicating value ACTION_LOCATION, + ShipType indicating value ACTION_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a anomaly containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a certificateDocument containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value certificateDocumentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_05" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value incidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_06" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IrregularMigrationIncident" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a irregularMigrationIncident containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value irregularMigrationIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Incident containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_07" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value lawInfringementIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_08" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for MeteoOceanographicConditionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a meteoOceanographicConditionService containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value meteoOceanographicConditionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_09" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a organization containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value organizationService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_10" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a risk containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value riskService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NA_FEEDBACK_BV_11" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.18 Cargo Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a cargo containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value cargoService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NA_FEEDBACK_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "feedback" + + } // End of Group "cise_nod_ei_na" + + Group "cise_node_ei_nn" { + + Group "pull_request" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_01_01" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_01_01 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_01_02" + + Test objective + "Check that the IUT sends the synchronous Acknowledgment to the Adapter when receiving the synchronous Acknowledgment from the GatewayProvider" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity and + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_01_02 + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_01_03" + + Test objective + "Check that the IUT sends the PullResponse to the Adapter when receiving the PullResponse from the GatewayProvider" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + from the GATEWAY_PROVIDER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_01_03 + + } // End of Group "vessel_service" + + Group "action_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_02" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Action Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a action containing + IMONumber indicating value ACTION_IMO_NUMBER, + Name indicating value ACTION_NAME, + Location indicating value ACTION_LOCATION, + ShipType indicating value ACTION_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value Pull;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value actionService;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_02 + + } // End of Group "action_service" + + Group "anomaly_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_03" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for am AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Anomaly Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a anomaly containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value Pull;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_03 + + } // End of Group "anomaly_service" + + Group "certificate_document_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_04" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a anomaly containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value anomalyService;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_04 + + } // End of Group "certificate_document_service" + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_05" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a incident containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value incidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value incidentService;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value incidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value incidentService;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_05 + + } // End of Group "incident_service" + + Group "irregular_migration_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_06" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a irregularMigrationIncident containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value irregularMigrationIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value irregularMigrationIncidentService;, + Payload containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value irregularMigrationIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value irregularMigrationIncidentService;, + Payload containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_06 + + } // End of Group "irregular_migration_incident_service" + + Group "law_infringement_incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_07" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a lawInfringementIncident containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value lawInfringementIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value lawInfringementIncidentService;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value lawInfringementIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value lawInfringementIncidentService;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_07 + + } // End of Group "law_infringement_incident_service" + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_08" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an ongoing meteo condition" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a meteoOceanographicCondition containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value meteoOceanographicConditionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value Pull;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value meteoOceanographicConditionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value Pull;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_08 + + } // End of Group "meteo_oceanographic_condition_service" + + Group "organization_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_09" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a organization containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value organizationService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value Pull;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value organizationService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value organizationService;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_09 + + } // End of Group "organization_service" + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_10" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a risk containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value riskService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value Pull;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value riskService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value riskService;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_10 + + } // End of Group "risk_service" + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PULL_REQ_BV_11" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not havingRegistered a GATEWAY_PROVIDER and + the IUT entity not havingRegistered a cargo containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value cargoService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value cargoService;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID_1, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME_1, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value cargoService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value cargoService;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PULL_REQ_BV_11 + + } // End of Group "cargo_service" + + } // End of Group "pull_request" + + Group "pull_request_multicast" { + + Group "vessel_service" { + + import all from CISE_Common; + + } // End of Group "vessel_service" + + } // End of Group "pull_request_multicast" + + Group "pull_request_discovery" { + + Group "meteo_oceanographic_condition_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_MULTI_PULL_REQ_BV_01" + + Test objective + "Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a MeteoOceanographicConditionService discovery" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value meteoOceanographicConditionService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value meteoOceanographicConditionService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_MULTI_PULL_REQ_BV_01 + + } // End of Group "meteo_oceanographic_condition_service" + + } // End of Group "pull_request_discovery" + + Group "push_subscribe" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_SUB_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for subscription to the GatewayProvider when receiving a PullRequest for a VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_SUB_BV_01 + + } // End of Group "vessel_service" + + } // End of Group "push_subscribe" + + Group "push_subscribe_lookup" { + + Group "incident_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_SUB_LOOK_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for subscribers list to the GatewayProvider when receiving a PullRequest for subscribers list for a IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_SUB_LOOK_BV_01 + + } // End of Group "incident_service" + + } // End of Group "push_subscribe_lookup" + + Group "push_unsubscribe" { + + Group "risk_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_SUB_DELETE_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for subscription deletion to the GatewayProvider when receiving a PullRequest for subscription deletion for a RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a RISK_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + from the GATEWAY_PROVIDER entity + } + } + } // End of TP_CDM_NODE_EI_NN_SUB_DELETE_BV_01 + + } // End of Group "risk_service" + + } // End of Group "push_unsubscribe" + + Group "push_notify" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_PUSH_NOT_BV_01" + + Test objective + "Check that the IUT sends a Push to the Adapter when receiving a Push from the GatewayProvider for a VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity having a VESSEL_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value VesselService, + ServiceRole indicating value Provider;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the GATEWAY_PROVIDER entity + } + then { + the ADAPTER entity sends a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value VesselService, + ServiceRole indicating value Provider;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NN_PUSH_NOT_BV_01 + + } // End of Group "vessel_service" + + } // End of Group "push_notify" + + Group "async_acknowledgement" { + + Group "cargo_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_ASYNC_ACK_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for async Ack to the GatewayProvider when receiving a PullRequest for async Ack for a RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism" + + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the ADAPTER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + PullType indicating value Request, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + from the GATEWAY_PROVIDER entity and + the IUT entity sends multiple HTTP_RESPONSE containing // Asynchronous ACK + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sends a HTTP_RESPONSE containing // Synchronous ACK + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity and + the IUT entity sendsBeforeResponseTimerExpiry a HTTP_RESPONSE containing + status_code set to "200 OK", + body containing + vPullResponse containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + ResultCode indicating value success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_ASYNC_ACK_BV_01 + + } // End of Group "cargo_service" + + } // End of Group "async_acknowledgement" + + Group "feedback" { + + Group "vessel_service" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_EI_NN_FEEDBACK_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for feedback to the GatewayProvider when receiving a PullRequest for feedback for a VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_2 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity havingRegistered a vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE; and + the IUT entity havingReceived a PullRequest containing + MessageID indicating value REF_MESSAGE_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + from the GATEWAY_PROVIDER entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_EI_NN_FEEDBACK_BV_01 + + } // End of Group "vessel_service" + + } // End of Group "feedback" + + } // End of Group "cise_nod_ei_nn" + + Group "cise_adaptor" { + + Group "pull_request" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for VesselService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_02" + + Test objective + "Check that the IUT sends a PullRequest for ActionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_03" + + Test objective + "Check that the IUT sends a PullRequest for AnomalyService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_04" + + Test objective + "Check that the IUT sends a PullRequest for CertificateDocumentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_05" + + Test objective + "Check that the IUT sends a PullRequest for IncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_06" + + Test objective + "Check that the IUT sends a PullRequest for IrregularMigrationIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_07" + + Test objective + "Check that the IUT sends a PullRequest for LawInfringementIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_08" + + Test objective + "Check that the IUT sends a PullRequest for MeteoOceanographicConditionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_09" + + Test objective + "Check that the IUT sends a PullRequest for OrganizationService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_10" + + Test objective + "Check that the IUT sends a PullRequest for RiskService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_REQ_BV_11" + + Test objective + "Check that the IUT sends a PullRequest for CargoService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Request, + Cargo containing + CargoType indicating value CARGO_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + PullType indicating value Request, + Signature indicating value any_value;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_REQ_BV_11 + + } // End of Group "pull_request" + + Group "pull_request_multicast" { + + import all from CISE_Common; + + + } // End of Group "pull_request_multicast" + + Group "pull_request_discovery" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_01" + + Test objective + "Check that the IUT sends a PullRequest for VesselService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value vesselService, + IMONumber indicating value VESSEL_IMO_NUMBER;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value vesselService, + IMONumber indicating value VESSEL_IMO_NUMBER;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_02" + + Test objective + "Check that the IUT sends a PullRequest for ActionService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value actionService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value actionService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_03" + + Test objective + "Check that the IUT sends a PullRequest for AnomalyService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value anomalyService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value anomalyService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_04" + + Test objective + "Check that the IUT sends a PullRequest for CertificateDocumentService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value certificateDocumentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value certificateDocumentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_05" + + Test objective + "Check that the IUT sends a PullRequest for IncidentService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value incidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value incidentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_06" + + Test objective + "Check that the IUT sends a PullRequest for IrregularMigrationIncidentService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value irregularMigrationIncidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value irregularMigrationIncidentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_07" + + Test objective + "Check that the IUT sends a PullRequest for LawInfringementIncidentService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value lawInfringementIncidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value lawInfringementIncidentService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_08" + + Test objective + "Check that the IUT sends a PullRequest for MeteoOceanographicConditionService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value meteoOceanographicConditionService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value meteoOceanographicConditionService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_09" + + Test objective + "Check that the IUT sends a PullRequest for OrganizationService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value organizationService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value organizationService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_10" + + Test objective + "Check that the IUT sends a PullRequest for RiskService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause .1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value riskService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value riskService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PULL_DISC_BV_11" + + Test objective + "Check that the IUT sends a PullRequest for CargoService discovery when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 5.5 CISE Discovery mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 004 [1] Clause 8.1.7 Discover", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_ADAPTOR and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value cargoService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a HTTP_REQUEST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + PullType indicating value Discover, + DiscoveryProfiles containing + ServiceType indicating value cargoService;, + ResponseTimeOut indicating value RESPONSE_TIMEOUT, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PULL_DISC_BV_11 + + } // End of Group "pull_request_discovery" + + Group "push_subscribe" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_01" + + Test objective + "Check that the IUT sends a subscription for VesselService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value vesselService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value vesselService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_02" + + Test objective + "Check that the IUT sends a subscription for ActionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value actionService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value actionService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value actionService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_03" + + Test objective + "Check that the IUT sends a subscription for AnomalyService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value anomalyService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value anomalyService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value anomalyService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_04" + + Test objective + "Check that the IUT sends a subscription for CertificateDocumentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value certificateDocumentService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value certificateDocumentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_05" + + Test objective + "Check that the IUT sends a subscription for IncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value incidentService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value incidentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_06" + + Test objective + "Check that the IUT sends a subscription for IrregularMigrationIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value irregularMigrationIncidentService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value irregularMigrationIncidentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_07" + + Test objective + "Check that the IUT sends a subscription for LawInfringementIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value lawInfringementIncidentService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value lawInfringementIncidentService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_08" + + Test objective + "Check that the IUT sends a subscription for MeteoOceanographicConditionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value meteoOceanographicConditionService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value meteoOceanographicConditionService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_09" + + Test objective + "Check that the IUT sends a subscription for OrganizationService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value organizationService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value organizationService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_10" + + Test objective + "Check that the IUT sends a subscription for RiskService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value riskService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value riskService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_BV_11" + + Test objective + "Check that the IUT sends a subscription for CargoService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_SUBSCRIBE and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Subscribe, + SeaBasin indicating value SEA_BASIN, + Requests containing + ServiceType indicating value cargoService, + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService, + SeaBasin indicating value SEA_BASIN;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value cargoService;, + ResponseTimeOut indicating value 1000, + PullType indicating value Subscribe, + Requests containing + SubscriptionEnd indicating value CURENT_TIME_PLUS_ONE_HOUR;, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_BV_11 + + } // End of Group "push_subscribe" + + Group "push_subscribe_lookup" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_01" + + Test objective + "Check that the IUT sends a request of subscribers list for VesselService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a VESSEL_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value vesselService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_02" + + Test objective + "Check that the IUT sends a request of subscribers list for ActionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having an ACTION_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value actionService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_03" + + Test objective + "Check that the IUT sends a request of subscribers list for AnomalyService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having an ANOMALY_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value anomalyService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_04" + + Test objective + "Check that the IUT sends a request of subscribers list for CertificateDocumentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CERTIFICATE_DOCUMENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value certificateDocumentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_05" + + Test objective + "Check that the IUT sends a request of subscribers list for IncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having an INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value incidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_06" + + Test objective + "Check that the IUT sends a request of subscribers list for IrregularMigrationIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value irregularMigrationIncidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_07" + + Test objective + "Check that the IUT sends a request of subscribers list for LawInfringementIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a LAW_INFRINGEMENT_INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value lawInfringementIncidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_08" + + Test objective + "Check that the IUT sends a request of subscribers list for MeteoOceanographicConditionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a METEO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value meteoOceanographicConditionService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_09" + + Test objective + "Check that the IUT sends a request of subscribers list for OrganizationService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.15.2.1 Organization Class (subclass of Agent)", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ORGANIZATION_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value organizationService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_10" + + Test objective + "Check that the IUT sends a request of subscribers list for RiskService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a RISK_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value riskService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_LOOK_BV_11" + + Test objective + "Check that the IUT sends a request of subscribers list for CargoService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.8 Get Subscribers", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CARGO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value GetSubscribers, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value cargoService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity sends a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value Subscribe;, + PullType indicating value GetSubscribers, + ResponseTimeOut indicating value 1000, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_LOOK_BV_11 + + } // End of Group "push_subscribe_lookup" + + Group "push_unsubscribe" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_01" + + Test objective + "Check that the IUT sends a request to delete subscription for VesselService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a VESSEL_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value vesselService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value vesselService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_02" + + Test objective + "Check that the IUT sends a request to delete subscription for ActionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ACTION_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value actionService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value actionService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_03" + + Test objective + "Check that the IUT sends a request to delete subscription for AnomalyService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ANOMALY_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value anomalyService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value anomalyService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_04" + + Test objective + "Check that the IUT sends a request to delete subscription for CertificateDocumentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CERTIFICATE_DOCUMENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value certificateDocumentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value certificateDocumentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_05" + + Test objective + "Check that the IUT sends a request to delete subscription for IncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CERTIFICATE_DOCUMENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value incidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value incidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_06" + + Test objective + "Check that the IUT sends a request to delete subscription for IrregularMigrationIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value irregularMigrationIncidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value irregularMigrationIncidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_07" + + Test objective + "Check that the IUT sends a request to delete subscription for LawInfringementIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a LAW_INFRINGEMENT_INCIDENT_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value lawInfringementIncidentService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value lawInfringementIncidentService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_08" + + Test objective + "Check that the IUT sends a request to delete subscription for MeteoOceanographicConditionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a METEO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value meteoOceanographicConditionService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value meteoOceanographicConditionService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_09" + + Test objective + "Check that the IUT sends a request to delete subscription for OrganizationService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ORGANIZATION_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value organizationService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value organizationService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_10" + + Test objective + "Check that the IUT sends a request to delete subscription for RiskService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a RISK_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value riskService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value riskService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_SUB_DELETE_BV_11" + + Test objective + "Check that the IUT sends a request to delete subscription for CargoService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CARGO_SERVICE_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a PullRequest containing + PullType indicating value Unsubscribe, + Requests containing + ContextID indicating value CONTEXT_ID, + ServiceType indicating value cargoService;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + ContextID indicating value CONTEXT_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value subscribe;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceType indicating value cargoService, + ServiceOperation indicating value subscribe;, + PullType indicating value Unsubscribe, + Signature indicating value any_value;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_SUB_DELETE_BV_11 + + } // End of Group "push_unsubscribe" + + Group "push_notify" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_01_01" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment with an error code response when receiving a Push for notification for an unknown subscription for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a VESSEL_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value VesselService, + ServiceRole indicating value Provider;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_01_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_01_02" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment with an error code response when receiving a Push for notification for an unknown subscription for VesselService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity not having a VESSEL_SUBSCRIPTION + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value VesselService, + ServiceRole indicating value Provider;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + from the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value badRequest;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_01_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_02" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for ActionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ACTION_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value ActionService, + ServiceRole indicating value Provider;, + Payload containing + Action containing + ActionType indicating value "Rescue", + ActionStatus indicating value "InProgress", + Mission indicating value nonSpecified, + Priority indicating value High, + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_03" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for AnomalyService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ANOMALY_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value AnomalyService, + ServiceRole indicating value Provider;, + Payload containing + Anomaly containing + AnomalyType indicating value "VesselOutOfTrafficLanes", + NatureType indicating value "Observed", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_04" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for CertificateDocumentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CERTIFICATE_DOCUMENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value CertificateDocumentService, + ServiceRole indicating value Provider;, + Payload containing + Document containing + Content indicating value RAW_DOCUMENT, + Hash indicating value SHA_256_RAW_DOCUMENT, + ReferenceURI indicating value REFERENCE_URI, + Location indicating value VESSE_LOCATION;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_05" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for IncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a INCIDENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value IncidentService, + ServiceRole indicating value Provider;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_06" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for IrregularMigrationIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a IRREGULAR_MIGRATION_INCIDENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value IrregularMigrationIncidentService, + ServiceRole indicating value Provider;, + Payload containing + IrregularMigrationIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + IrregularMigrationIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_07" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for LawInfringementIncidentService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a LAW_INFRINGEMENT_INCIDENT_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value LawInfringementIncidentService, + ServiceRole indicating value Provider;, + Payload containing + LawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_08" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for MeteoOceanographicConditionService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a METEO_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value MeteoOceanographicConditionService, + ServiceRole indicating value Provider;, + Payload containing + MeteoOceanographicCondition containing + AirTemperature indicating value any_value, + WindCurrentDirection indicating value any_value, + WindCurrentSpeed indicating value any_value, + Location indicating value VESSEL_LOCATION;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_09" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for OrganizationService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a ORGANIZATION_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value OrganizationService, + ServiceRole indicating value Provider;, + Payload containing + Organization containing + Indentifier indicating value any_value, + OrganizationRole indicating value "portAuthority", + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_10" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for RiskService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a RISK_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value RiskService, + ServiceRole indicating value Provider;, + Payload containing + Risk containing + Indentifier indicating value any_value, + RiskLevel indicating value high, + RiskProbability indicating value probable, + RiskSeverity indicating value critical, + Location indicating value VESSEL_LOCATION + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_PUSH_NOT_BV_11" + + Test objective + "Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for CargoService" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.6 Publish/Subscribe", + "ETSI GS CDM 004 [1] Clause 8.1.2 Push", + "ETSI GS CDM 004 [1] Clause 8.1.6 Publish/Subscribe", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_PUSH and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState and + the IUT entity having a CARGO_SUBSCRIPTION containing + ContextID indicating value CONTEXT_ID; + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PUSH_REQUEST_URI, + body containing + vPush containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value subscribe, + ServiceType indicating value CargoService, + ServiceRole indicating value Provider;, + Payload containing + Cargo containing + CargoType indicating value CARGO_TYPE;;, + Reliability indicating value HighReliability, + Signature indicating value any_value;;; + to the NODE entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false;, + AckCode indicating value Success, + DiscoveredServices containing + ServiceID indicating value SERVICE_ID_CONSUMER;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_PUSH_NOT_BV_11 + + } // End of Group "push_notify" + + Group "feedback" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_01" + + Test objective + "Check that the IUT sends a Feedback for VesselService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.20 Vessel Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value vesselService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_01 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_02" + + Test objective + "Check that the IUT sends a Feedback for ActionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.3 Action Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.10 Location Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_ACTION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + Action containing + IMONumber indicating value ACTION_IMO_NUMBER, + Name indicating value ACTION_NAME, + Location indicating value ACTION_LOCATION, + ShipType indicating value ACTION_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value actionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Action containing + IMONumber indicating value ACTION_IMO_NUMBER, + Name indicating value ACTION_NAME, + Location indicating value ACTION_LOCATION, + ShipType indicating value ACTION_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_02 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_03" + + Test objective + "Check that the IUT sends a Feedback for AnomalyService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.5 Anomaly Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_ANOMALY_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + Anomaly containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value anomalyService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Anomaly containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_03 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_04" + + Test objective + "Check that the IUT sends a Feedback for CertificateDocumentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.7 Document Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_CERTIFICATE_DOCUMENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + certificateDocument containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value certificateDocumentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + certificateDocument containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_04 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_05" + + Test objective + "Check that the IUT sends a Feedback for IncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value incidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Incident containing + Identifier containing + GeneratedIn indicating value any_value, + UUID indicating value any_value;, + SickAnimalOnBoard indicating value "true", // Add test for the other features + UrgencyType indicating value "Immediate", + SeverityType indicating value "Moderate", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_05 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_06" + + Test objective + "Check that the IUT sends a Feedback for IrregularMigrationIncident when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + irregularMigrationIncident containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value irregularMigrationIncident;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + irregularMigrationIncident containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_06 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_07" + + Test objective + "Check that the IUT sends a Feedback for LawInfringementIncidentService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.9 Incident Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + lawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value lawInfringementIncidentService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + lawInfringementIncident containing + identifier indicating value any_value, + UrgencyType indicating value "Immediate", + LawInfringementIncidentType indicating value "nonSpecified", + Location indicating value VESSEL_LOCATION, + Agent containing + identifier indicating value AGENT_IDENTIFIER;;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_07 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_08" + + Test objective + "Check that the IUT sends a Feedback for MeteoOceanographicConditionService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_METEO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + meteoOceanographicConditionService containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value meteoOceanographicConditionService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + meteoOceanographicConditionService containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_08 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_09" + + Test objective + "Check that the IUT sends a Feedback for OrganizationService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.10.2.2 MeteoOceanographicCondition Class", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_ORGANIZATION_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + organization containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value organizationService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + organization containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_09 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_10" + + Test objective + "Check that the IUT sends a Feedback for RiskService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.18 Risk Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_RISK_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + risk containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value riskService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + risk containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_10 + + Test Purpose { + TP Id "TP_CDM_ADAPTOR_FEEDBACK_BV_11" + + Test objective + "Check that the IUT sends a Feedback for CargoService when triggered" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism", + "ETSI GS CDM 005 [2] Clause 7.1.6 Cargo Core Entity", + "ETSI GS CDM 005 [2] Clause 7.1.19 UniqueIdentifier Core Entity" + + Config Id Config_CISE_3 + + PICS Selection IUT_CDM_NODE and CDM_FEEDBACK and CDM_CARGO_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity isTriggeredToSend a Feedback containing + cargo containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;; + from the TEST_SYSTEM entity + } + then { + the IUT entity receives a vPOST containing + uri indicating value CDM_FEEDBACK_REQUEST_URI, + body containing + vFeedback containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value true, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Feedback, + ServiceType indicating value cargoService;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + cargo containing + IMONumber indicating value ANOMALY_IMO_NUMBER, + Name indicating value ANOMALY_NAME, + Location indicating value ANOMALY_LOCATION, + ShipType indicating value ANOMALY_SHIP_TYPE;;, + Signature indicating value any_value, + FeedbackType indicating value Info, + Reason indicating value ShipTypeChange, + RefMessageID indicating value REF_MESSAGE_ID;;; + to the NODE entity + } + } + } // End of TP_CDM_ADAPTOR_FEEDBACK_BV_10 + + } // End of Group "feedback" + + } // End of Group "cise_adaptor" + + Group "security" { + + import all from CISE_Common; + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BV_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with Success when it receives a sign message" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating valueany_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value any_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value SIGNING_CERT_SUBJECT, + X509Certificate indicating value SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value Success, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BV_01 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_01" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted signature" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value any_value;, + SignatureValue indicating value corrupted_signature_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value SIGNING_CERT_SUBJECT, + X509Certificate indicating value SIGNING_CERT;;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_01 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_02" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted certificate" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value any_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value SIGNING_CERT_SUBJECT, + X509Certificate indicating value SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull + ;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull + ;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value + ; + ; + ; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_02 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_03" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with corrupted digest" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value corrupted_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value SIGNING_CERT_SUBJECT, + X509Certificate indicating value SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_03 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_04" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported signature algorithm" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha384";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value any_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value SIGNING_CERT_SUBJECT, + X509Certificate indicating value SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_04 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_05" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported digest signature algorithm" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha384";, + DigestValue indicating value any_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value SIGNING_CERT_SUBJECT, + X509Certificate indicating value SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_05 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_06" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an expired certificate (CDM_TS_CERTIFICATE_PAST)" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value any_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value EXPIRED_SIGNING_CERT_SUBJECT, + X509Certificate indicating value EXPIRED_SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_06 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_07" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with a certificate valid in the future (CDM_TS_CERTIFICATE_FUTURE)" + + Reference + "ETSI GS CDM 004 8.1.10 Message Signature" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + Signature containing + SignedInfo containing + CanonicalizationMethod containing + Algorithm indicating value "http://www.w3.org/2001/10/xml-exc-c14n#";, + SignatureMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#rsa-sha1";, + Reference_ indicating value any_value, + Transforms containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#enveloped-signature";, + DigestMethod containing + Algorithm indicating value "http://www.w3.org/2000/09/xmldsig#sha1";, + DigestValue indicating value any_value;;, + SignatureValue indicating value any_value, + KeyInfo containing + X509Data containing + X509SubjectName indicating value FUTURE_SIGNING_CERT_SUBJECT, + X509Certificate indicating value FUTURE_SIGNING_CERT;;;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_07 + + Test Purpose { + TP Id "TP_CDM_NODE_SEC_BO_08" + + Test objective + "Check that the IUT responds with an HTTP 200 OK Acknowledgment response with InvalidSignature when it receives a message not signed" + + Reference + "ETSI GS CDM 004 [1] Clause 5.4.2 Pull", + "ETSI GS CDM 004 [1] Clause 8.1.3 Pull (Request/Response)", + "ETSI GS CDM 004 [1] Clause 8.1.4 Pull Request Querying Mechanism" + + Config Id Config_CISE_1 + + PICS Selection IUT_CDM_NODE and CDM_PULL and CDM_VESSEL_SERVICE + + Initial conditions with { + the IUT entity isInIdleState + } + + Expected behaviour + ensure that { + when { + the IUT entity receives a vPOST containing + uri indicating value CDM_PULL_REQUEST_URI, + body containing + vPullRequest containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + CreationDateTime indicating value CURRENT_TIME, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Payload containing + Vessel containing + IMONumber indicating value VESSEL_IMO_NUMBER, + Name indicating value VESSEL_NAME, + Location indicating value VESSEL_LOCATION, + ShipType indicating value VESSEL_SHIP_TYPE;;, + PullType indicating value Request, + DiscoveryProfiles containing + SeaBasin indicating value SEA_BASIN;, + not Signature;;; + from the ADAPTER entity + } + then { + the IUT entity sends a HTTP_RESPONSE containing + status_code set to "200 OK" + body containing + vAcknwoledgment containing + MessageID indicating value MESSAGE_ID, + CorrelationID indicating value CORRELATION_ID, + Priority indicating value PRIORITY, + RequiresAck indicating value false, + Sender containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + Recipient containing + ServiceID indicating value SERVICE_ID, + ServiceOperation indicating value Pull;, + AckCode indicating value InvalidSignature, + Signature indicating value any_value;;; + to the ADAPTER entity + } + } + } // End of TP_CDM_NODE_SEC_BO_08 + + } // End of Group "security" + + +} // End of package CISE \ No newline at end of file diff --git a/test-purposes/LICENSE b/test-purposes/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..63d731bafaa8b2025a5411e93d0e36e5d6d4bd66 --- /dev/null +++ b/test-purposes/LICENSE @@ -0,0 +1,24 @@ + +Copyright 2022 ETSI + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/test-purposes/References.txt b/test-purposes/References.txt new file mode 100644 index 0000000000000000000000000000000000000000..f1efb3f37687a61e9e61e470abd2523a150b0ae9 --- /dev/null +++ b/test-purposes/References.txt @@ -0,0 +1,2 @@ +[1] ETSI GS CDM 003 Common Information sharing environment service and Data Model (CDM); CDM Architecture +[2] ETSI GS CDM 004 Common Information sharing environment service and Data Model (CDM); Service Model \ No newline at end of file diff --git a/test-purposes/cise-common.tplan2 b/test-purposes/cise-common.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..09e640a34511d59b20247a3f80abb138cad8382f --- /dev/null +++ b/test-purposes/cise-common.tplan2 @@ -0,0 +1,258 @@ +Package CISE_Common { + + Domain { + pics: + - IUT_CDM_NODE // Set to true if the IUT is acting as a CISE node + - IUT_CDM_ADAPTOR // Set to true if the IUT is acting as a CISE adaptor + - CDM_PULL // Set to true if the IUT supports Pull communication + - CDM_PUSH // Set to true if the IUT supports Push communication + - CDM_SUBSCRIBE // Set to true if the IUT supports Pull/Subscribe communication + - CDM_FEEDBACK // Set to true if the IUT supports Feedback communication + - CISE_SHA1 // Set to true if signature with SHA-1 is supported + - CISE_SHA256 // Set to true if signature with SHA-256 is supported + - CISE_SHA384 // Set to true if signature with SHA-384 is supported + - CDM_VESSEL_SERVICE // Set to true if Vessel service is supported by the ServiceRegistry + - CDM_ACTION_SERVICE // Set to true if Action service is supported by the ServiceRegistry + - CDM_ANOMALY_SERVICE // Set to true if Anomaly service is supported by the ServiceRegistry + - CDM_CERTIFICATE_DOCUMENT_SERVICE + // Set to true if Document service is supported by the ServiceRegistry + - CDM_INCIDENT_SERVICE // Set to true if Document service is supported by the ServiceRegistry + - CDM_METEO_SERVICE // Set to true if MeteoCondition service is supported by the ServiceRegistry + - CDM_ORGANIZATION_SERVICE + - CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE + - CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE + - CDM_RISK_SERVICE // Set to true if Risk service is supported by the ServiceRegistry + - CDM_CARGO_SERVICE // Set to true if Cargo service is supported by the ServiceRegistry + // TODO Add PICS for other services + - CDM_FILTERING // Set to true if filtering in PullRequest is supported + - ROOT_API // CISE root API URL + ; + + entities: // ETSI GS CDM 004 V1.0.0 Clause 5.1 Overview + - NODE // CISE Node as IUT + - GATEWAY_PROVIDER // A GATEWAY_PROVIDER accessible from secured network + - ADAPTER // CISE LIS Adapter as IUT + - NETWORK // CISE NETWORK + - IUT // Implementation under test + - TEST_SYSTEM // Triggered events + ; + + events: + - started // component is up and running + - authorised // component is authenticated and authorized to use services + - consume_services // component is can use services + - receives // component receives an HTTP request + - sends // component sends an HTTP response + - sendsBeforeResponseTimerExpiry + - having + - havingReceived + - isInIdleState // component is in its idle state + - havingRegistered + - isTriggeredToSend + ; + } + + Data { + type STRING; + type Integer; + type string with s of type STRING; + type XML; + type DateTime; + type PullRequest; // ETSI GS CDM 004 V1.0.0 Clause 7.2.2 PullRequest (extends Message) + type PullResponse; // ETSI GS CDM 004 V1.0.0 Clause 7.2.3 PullResponse (extends Message) + type Push; // ETSI GS CDM 004 V1.0.0 Clause 7.2.4 Push (extends Message) + type Acknowledgment; // ETSI GS CDM 004 V1.0.0 Clause 7.2.5 Acknowledgement (extends Message) + type Feedback; // ETSI GS CDM 004 V1.0.0 Clause 7.2.6 Feedback (extends Message) + type UUID; // ETSI GS CDM 005 V1.5.3 Clause 7.1.19.2.1.2 Attributes + type XSD_STRING; // ETSI GS CDM 005 V1.5.3 Clause 7.1.19.2.1.2 Attributes + type XSD_DATETIME; // ETSI GS CDM 005 V1.5.3 Clause 7.1.19.2.1.2 Attributes + type CDM_PRIORITY; // ETSI GS CDM 005 V1.5.3 Clause 7.1.3.2.2 ActionPriorityType Enumeration + type CDM_SERVIDE_ID; // ETSI GS CDM 004 V1.0.0 Clause 6.3 Service + type CDM_LOCATION; // ETSI GS CDM 005 V1.5.3 Clause 7.1.20.2.1.3 Association Roles + type CDM_UNIQUE_IDENTIFIER; // ETSI GS CDM 005 V1.5.3 Clause 7.1.4 Agent Core Entity + type Subscription; + + // HTTP messages + type HttpHeaders with + // content_type is optional, since not present in GET and DELETE + content_type of type STRING, + authorization of type STRING, + accept of type STRING + ; + + type HTTP_REQUEST with + uri of type STRING + ; + + type HttpMsg with + uri of type STRING, + headers of type HttpHeaders, + status_code of type STRING, + // body is optional, since not present in GET and DELETE + body of type XML + ; + + STRING "application/xml;charset=utf-8"; + string CONTENT_XML containing s set to "application/xml;charset=utf-8"; + STRING VALID_TOKEN; + STRING NOT_VALID_TOKEN; + STRING "application/xml"; + STRING "application/octet-stream"; + + HttpHeaders vHeadersInvalidToken containing + authorization set to NOT_VALID_TOKEN + ; + + HttpHeaders vHeadersGet containing + accept set to "application/xml", + authorization set to VALID_TOKEN + ; + + HttpHeaders vHeadersAcceptKO containing + accept set to "application/octet-stream", + authorization set to VALID_TOKEN + ; + + HttpHeaders vHeaders containing + accept set to CONTENT_XML, + content_type set to CONTENT_XML, + authorization set to VALID_TOKEN + ; + + HttpHeaders vHeadersResponse containing + content_type set to CONTENT_XML + ; + + HttpMsg vGET containing + headers set to vHeadersGet + ; + + HttpMsg vPOST containing + headers set to vHeaders + ; + + HttpMsg vPUT containing + headers set to vHeaders + ; + + HttpMsg vDELETE containing + headers set to vHeadersGet + ; + + HttpMsg HTTP_RESPONSE containing + headers set to vHeadersResponse + ; + + // Messages + UUID MESSAGE_ID; + UUID CORRELATION_ID; + XSD_DATETIME CURRENT_TIME; + + // PIXITs + CDM_PRIORITY PRIORITY; + CDM_SERVIDE_ID SERVICE_ID; + CDM_SERVIDE_ID SERVICE_ID_CONSUMER; + CDM_SERVIDE_ID SERVICE_ID_UNKNOWN; + XSD_STRING SIGNING_CERT_SUBJECT; + XSD_STRING EXPIRED_SIGNING_CERT_SUBJECT; + XSD_STRING FUTURE_SIGNING_CERT_SUBJECT; + XSD_STRING SIGNING_CERT; + XSD_STRING EXPIRED_SIGNING_CERT; + XSD_STRING FUTURE_SIGNING_CERT; + XSD_STRING CORRUPTED_SIGNING_CERT; + XSD_STRING SEA_BASIN; + XSD_STRING COUNTRY; + // Vessel + XSD_STRING IMO_NUMBER; + XSD_STRING VESSEL_IMO_NUMBER; + XSD_STRING VESSEL_NAME; + CDM_LOCATION VESSEL_LOCATION; + CDM_LOCATION VESSEL_INCONSISTENT_LOCATION; + XSD_STRING VESSEL_SHIP_TYPE; + XSD_STRING VESSEL_SERVICE_TYPE; + XSD_STRING VESSEL_NET_TONNAGE; + XSD_STRING IMO_NUMBER_1; + XSD_STRING VESSEL_IMO_NUMBER_1; + XSD_STRING VESSEL_NAME_1; + CDM_LOCATION VESSEL_LOCATION_1; + XSD_STRING VESSEL_SHIP_TYPE_1; + XSD_STRING VESSEL_SERVICE_TYPE_1; + XSD_STRING IMO_NUMBER_2; + XSD_STRING VESSEL_IMO_NUMBER_2; + XSD_STRING VESSEL_NAME_2; + CDM_LOCATION VESSEL_LOCATION_2; + XSD_STRING VESSEL_SHIP_TYPE_2; + XSD_STRING VESSEL_SERVICE_TYPE_2; + XSD_STRING VESSEL_NET_TONNAGE; + XSD_STRING VESSEL_NET_TONNAGE_GREATHER_THAN; + XSD_STRING VESSEL_NET_TONNAGE_LESS_THAN; + // Cargo + XSD_STRING CARGO_TYPE; + + + // Criteria + XSD_STRING COUNTRY; + XSD_STRING UNKNOWN_COUNTRY; + + // URIs + STRING URI_PULL_REQUEST_GET; // "/api/ui/messages/discovery/values" + STRING URI_SUBSCRIBE_GET; // TODO + STRING URI_SUBSCRIBE_POST; // TODO + STRING URI_UNSUBSCRIBE_POST; // TODO + STRING URI_NOTIFY_POST; // TODO + STRING URI_FEEDBACK_POST; // TODO + + // Timers + Integer RESPONSE_TIMEOUT; // Response timeout + + // DateTimes + DateTime CURENT_TIME_PLUS_ONE_HOUR; // Current time plus one hour + DateTime CURENT_TIME_MINUS_ONE_HOUR; // Current time minus one hour + + // Agent + CDM_UNIQUE_IDENTIFIER AGENT_IDENTIFIER; + CDM_UNIQUE_IDENTIFIER AGENT_UNKNOWN_IDENTIFIER; + + Subscription VESSEL_SUBSCRIPTION; + Subscription ACTION_SUBSCRIPTION; + Subscription ANOMALY_SUBSCRIPTION; + Subscription CERTIFICATE_DOCUMENT_SUBSCRIPTION; + Subscription INCIDENT_SERVICE_SUBSCRIPTION; + Subscription IRREGULAR_MIGRATION_INCIDENT_SERVICE_SUBSCRIPTION; + Subscription LAW_INFRINGEMENT_INCIDENT_SERVICE_SUBSCRIPTION; + Subscription METEO_SERVICE_SUBSCRIPTION; + Subscription ORGANIZATION_SERVICE_SUBSCRIPTION; + Subscription RISK_SUBSCRIPTION; + Subscription CARGO_SUBSCRIPTION; + } + + Configuration { + + Interface Type httpPort accepts string; + + Component Type CiseNodeComponent with gate p of type httpPort; + Component Type CiseNetworkComponent with gate p of type httpPort; + Component Type CiseAdaptorComponent with gate p of type httpPort; + + Test Configuration Config_CISE_1 containing // CISE NODE as IUT, Interface I1 + Tester component ADAPTER of type CiseAdaptorComponent + SUT component IUT of type CiseNodeComponent + connection between ADAPTER.p and IUT.p + ; + + Test Configuration Config_CISE_2 containing // CISE NODE as IUT, Interface I2 + Tester component ADAPTER of type CiseAdaptorComponent + Tester component NETWORK of type CiseNetworkComponent + SUT component IUT of type CiseNodeComponent + connection between ADAPTER.p and IUT.p + connection between NETWORK.p and IUT.p + ; + + Test Configuration Config_CISE_3 containing // CISE LIS Adapter as IUT + Tester component NODE of type CiseNodeComponent + SUT component IUT of type CiseAdaptorComponent + connection between NODE.p and IUT.p + ; + + } +} // End of package CISE_Common diff --git a/test-purposes/model.tdl b/test-purposes/model.tdl new file mode 100644 index 0000000000000000000000000000000000000000..608f273d528f66e9c4d7d670d8a00c5ffb2107a2 --- /dev/null +++ b/test-purposes/model.tdl @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/test-purposes/plantuml/TD_CDM_INT_PULL_REQUEST_01.puml b/test-purposes/plantuml/TD_CDM_INT_PULL_REQUEST_01.puml new file mode 100644 index 0000000000000000000000000000000000000000..ff330d526a7dba360bc027fb4c89ec225c4a6b41 --- /dev/null +++ b/test-purposes/plantuml/TD_CDM_INT_PULL_REQUEST_01.puml @@ -0,0 +1,29 @@ +@startuml "TD_VxLTE_INT_ABT_01.png" +/'Editor: https://plantuml-editor.kkeisuke.com/ '/ +/'Syntax: http://plantuml.com/fr/sequence-diagram '/ +!include etsi-style.iuml +!pragma teoz true +' +participant "Adaptor A" +box "CISE A" #LightBlue + participant "Node A" +end box +box "CISE B" #LightGray + participant "Node B" +end box +participant "Adaptor B" +' +rnote right "Adaptor A" : I1 +& rnote right "Node A" : I2 +& rnote left "Node B" : I2 +& rnote left "Adaptor B" : I1 +' +"Adaptor A" --> "Node A": PullRequest +"Node A" --> "Node B": PullRequest +"Node B" --> "Adaptor B": PullRequest +' +"Adaptor B" --> "Node B": PullResponse +"Node B" --> "Node A": PullResponse +"Node A" --> "Adaptor A": PullResponse +' +@enduml diff --git a/test-purposes/plantuml/TP_CDM_ADAPTOR_PULL_REQUEST_01.puml b/test-purposes/plantuml/TP_CDM_ADAPTOR_PULL_REQUEST_01.puml new file mode 100644 index 0000000000000000000000000000000000000000..9d60c41cbd5d0054604d0bfdb1c3405771366c5d --- /dev/null +++ b/test-purposes/plantuml/TP_CDM_ADAPTOR_PULL_REQUEST_01.puml @@ -0,0 +1,18 @@ +@startuml "TP_CDM_NODE_PULL_REQUEST_01.png" +/'Editor: https://plantuml-editor.kkeisuke.com/ '/ +/'Syntax: http://plantuml.com/fr/sequence-diagram '/ +!include etsi-style.iuml +!pragma teoz true +' +participant "TS" +participant "IUT" +' +rnote left "TS" : TS is acting as CISE Node +&rnote right "TS" : I1 +&rnote right "IUT": Adaptor is acting as IUT +' +TS --> IUT: Trigger: PullRequest +IUT --> TS: PullRequest +TS --> IUT: PullResponse +' +@enduml diff --git a/test-purposes/plantuml/TP_CDM_NODE_PULL_REQUEST_01.puml b/test-purposes/plantuml/TP_CDM_NODE_PULL_REQUEST_01.puml new file mode 100644 index 0000000000000000000000000000000000000000..f5502c0c92895bb5e2bd7f7784abb4d0097b31bf --- /dev/null +++ b/test-purposes/plantuml/TP_CDM_NODE_PULL_REQUEST_01.puml @@ -0,0 +1,20 @@ +@startuml "TP_CDM_NODE_PULL_REQUEST_01.png" +/'Editor: https://plantuml-editor.kkeisuke.com/ '/ +/'Syntax: http://plantuml.com/fr/sequence-diagram '/ +!include etsi-style.iuml +!pragma teoz true +' +participant "TS" +participant "IUT" +' +rnote left "TS" : TS is acting as Adaptor +&rnote right "TS" : I1 +&rnote right "IUT": CISE Node is acting as IUT +' +' +TS --> IUT: PullRequest +IUT -> IUT: Exchange with peer CISE Node +note right: Out of conformance testing scope +IUT --> TS: 200 OK/PullResponse +' +@enduml diff --git a/test-purposes/plantuml/TP_CDM_NODE_PUSH_01.puml b/test-purposes/plantuml/TP_CDM_NODE_PUSH_01.puml new file mode 100644 index 0000000000000000000000000000000000000000..150704438ee115c43ec19843b0ee9fd3fe7afaac --- /dev/null +++ b/test-purposes/plantuml/TP_CDM_NODE_PUSH_01.puml @@ -0,0 +1,20 @@ +@startuml "TP_CDM_NODE_PULL_REQUEST_01.png" +/'Editor: https://plantuml-editor.kkeisuke.com/ '/ +/'Syntax: http://plantuml.com/fr/sequence-diagram '/ +!include etsi-style.iuml +!pragma teoz true +' +participant "TS" +participant "IUT" +' +rnote left "TS" : TS is acting as Adaptor +&rnote right "TS" : I1 +&rnote right "IUT": CISE Node is acting as IUT +' +' +TS --> IUT: Push +IUT -> IUT: Exchange with peer CISE Node +note right: Out of conformance testing scope +IUT --> TS: 200 OK +' +@enduml diff --git a/test-purposes/plantuml/draw_uml.sh b/test-purposes/plantuml/draw_uml.sh new file mode 100755 index 0000000000000000000000000000000000000000..7fa38eb6f235073573efb8066671cf83a5dc562f --- /dev/null +++ b/test-purposes/plantuml/draw_uml.sh @@ -0,0 +1,8 @@ + +#!/bin/bash + +set -vx +#set -e + +java -jar ../../plantuml/plantuml.jar TP_CDM_NODE_PULL_REQUEST_01.puml + diff --git a/test-purposes/plantuml/etsi-style.iuml b/test-purposes/plantuml/etsi-style.iuml new file mode 100644 index 0000000000000000000000000000000000000000..f9cd22c8a4f06ec0934ecf62367085250383da73 --- /dev/null +++ b/test-purposes/plantuml/etsi-style.iuml @@ -0,0 +1,46 @@ +hide footbox +autonumber +skinparam { + dpi 300 + shadowing false + 'handwritten true + defaultFontSize 8 +} + +skinparam note { + FontSize 8 + FontStyle bold + FontColor White + borderColor Black + backgroundColor DimGray +} + +skinparam participant { + FontSize 8 + FontStyle bold + FontColor White + borderColor Navy + backgroundColor RoyalBlue +} + +skinparam actor { + FontSize 8 + FontStyle bold + FontColor Navy + borderColor Navy + backgroundColor RoyalBlue +} + +skinparam sequence { + ArrowFontColor Black + ArrowColor SlateGray + LifeLineBorderColor Navy + LifeLineBackgroundColor DimGray +} + +skinparam ParticipantPadding 5 +skinparam BoxPadding 5 + +!define sendrcvRTP(a,b,c) a <-[#LimeGreen]> b : c +!define sendRTP(a,b,c) a -[#LimeGreen]> b : c +!define setParticipant(a,b) participant a as b diff --git a/test-purposes/representations.aird b/test-purposes/representations.aird new file mode 100644 index 0000000000000000000000000000000000000000..afdad173d2735b58e9aa69d20582a8d1bec58934 --- /dev/null +++ b/test-purposes/representations.aird @@ -0,0 +1,20 @@ + + + model.tdl + test_purposes/Sip_Common.tplan2 + test_purposes/ims/TP_SCSCF.tplan2 + test_purposes/msc/TP_MSC.tplan2 + test_purposes/sccas/TP_SCCAS.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_10_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_11_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_12_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_6A_4.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_6_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_7_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_8_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_9_3.tplan2 + test_purposes/sccas/TP_SCCAS_Chapter_9_3_FOKUS.tplan2 + + + + diff --git a/titan-test-system-framework b/titan-test-system-framework new file mode 160000 index 0000000000000000000000000000000000000000..c579f7c7175b34426e8392e1edd3885c4b9cd185 --- /dev/null +++ b/titan-test-system-framework @@ -0,0 +1 @@ +Subproject commit c579f7c7175b34426e8392e1edd3885c4b9cd185 diff --git a/ttcn/AtsCise/AtsCise_Templates.ttcn b/ttcn/AtsCise/AtsCise_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a1e4c7912d1649d7a1a26add1ba740ad8ed715d0 --- /dev/null +++ b/ttcn/AtsCise/AtsCise_Templates.ttcn @@ -0,0 +1,1925 @@ +module AtsCise_Templates { + + // XSD + import from XSD all; + + // LibCDM + import from http_www_cise_eu_servicemodel_v1_authority all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_cise_eu_datamodel_v1_entity_document all; + import from http_www_cise_eu_datamodel_v1_entity_action all; + import from http_www_cise_eu_datamodel_v1_entity_anomaly all; + import from http_www_cise_eu_datamodel_v1_entity_organization all; + import from http_www_cise_eu_datamodel_v1_entity_incident all; + import from http_www_cise_eu_datamodel_v1_entity_vessel all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_location all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_period all; + import from http_www_cise_eu_datamodel_v1_entity_person all; + import from http_www_cise_eu_datamodel_v1_entity_agent all; + import from http_www_cise_eu_datamodel_v1_entity_event all; + import from http_www_cise_eu_datamodel_v1_entity_risk all; + import from http_www_cise_eu_datamodel_v1_entity_movement all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + // LibCise + import from LibCise_Pixits all; + import from LibHttp_XmlTemplates all; + import from LibCise_Templates all; + + group vessel { + + template (value) Service m_sender_consumer_vessel( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := vesselService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_vessel + + template (value) Service m_recipient_provider_vessel( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := vesselService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_vessel + + template (omit) XmlEntityPayload m_entity_payload_vessel( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := m_vessel( + PX_VESSEL_IMO_NUMBER + ), + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_vessel + + template (omit) XmlEntityPayload m_entity_payload_vessel_unknown( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := m_vessel( + PX_VESSEL_UNKNOWN_IMO_NUMBER + ), + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload_vessel := { + } // End of tempate m_entity_payload_vessel_unknown + + template (omit) XmlEntityPayload m_entity_payload_vessel_payload_selector( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := m_vessel( + PX_VESSEL_IMO_NUMBER, -, -, -, -, -, -, -, -, -, // TODO Reorganize the template arguments order + -, // FIXME Initialization of a record of template with an unbound value with { PX_VESSEL_TYPE }, + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + PX_VESSEL_NET_TONNAGE + ), + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload_vessel := { + } // End of tempate m_entity_payload_vessel_payload_selector + + } // End of group vessel + + group action_ { + + template (value) Service m_sender_consumer_action( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := actionService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_action + + template (value) Service m_recipient_provider_action( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := actionService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_action + + template (omit) XmlEntityPayload m_entity_payload_action_full( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := m_action( + { + m_metatdata( + PX_METADATA_ABSTRACT, + PX_METADATA_COMMENTS, + -, + m_agent_derivations_agent( + m_agent( + PX_AGENT_CONTACT, + m_unique_identifier( + -, -, -, + PX_AGENT_UUID + ))), + PX_METADATA_DESCRIPTION, + PX_METADATA_DESIGNATION + ) + }, + { + /*{ + event := m_event_derivations_pollutionIncident( + m_pollution_incident( + -, -, -, -, -, -, -, -, -, + m_unique_identifier( + -, -, -, + PX_POLLUTION_INCIDENT_UUID + ), + observed, + -, + PX_POLLUTION_INCIDENT_CERTAINTY + )), + eventRole := other, + involvementPeriod := omit + }*/ + /*{ + event := m_event_derivations_action( + m_action( + -, -, -, -, -, -, -, + m_unique_identifier( + -, -, -, + PX_ACTION_UUID + ), + PX_ACTION_NATURE_TYPE, + -, + PX_ACTION_ACTION_STATUS, + PX_ACTION_ACTION_TYPE, + PX_ACTION_MISSION, + PX_ACTION_PRIORITY + )), + eventRole := other, + involvementPeriod := omit + }*/ + /*{ + event := m_event_derivations_anomaly( + m_anomaly( + -, -, -, -, -, -, -, + m_unique_identifier( + -, -, -, + PX_ANOMALY_UUID + ), + PX_ANOMALY_NATURE_TYPE, + -, + PX_ANOMALY_TYPE + )), + eventRole := other, + involvementPeriod := omit + }*/ + /*{ + event := m_event_derivations_incident( + m_incident( + -, -, -, + { + m_location_rel( + m_location_derivations_location( + m_location( + { m_geometry } + ))) + }, + -, -, + { + m_involved_agent_rel( + m_agent_derivations_agent( + m_agent( + PX_AGENT_CONTACT, + m_unique_identifier( + -, -, -, + PX_AGENT_UUID + ))), + nonSpecified //PX_AGENT_AGENT_ROLE + ) + }, + -, -, + m_unique_identifier( + -, -, -, + PX_INCIDENT_UUID + ), + PX_INCIDENT_NATURE_TYPE, + -, + PX_INCIDENT_CERTAINTY + )), + eventRole := other, + involvementPeriod := omit + }*/ + { + event := m_event_derivations_movement( + m_movement( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_agent( + m_agent( + PX_AGENT_CONTACT, + m_unique_identifier( + -, -, -, + PX_AGENT_UUID + ))), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + m_unique_identifier( + -, -, -, + PX_MOVEMENT_UUID + ), + PX_MOVEMENT_NATURE_TYPE, + -, + PX_MOVEMENT_TYPE + )), + eventRole := other, + involvementPeriod := omit + } + }, + -, + { + { + /*location := m_location_derivations_location( + m_location( + { m_geometry } + )),*/ + location := m_location_derivations_named_location( + m_named_location( + { m_geometry } + )), + /*location := m_location_derivations_port_facility_location( + m_port_facility_location( + { m_geometry } + )),*/ + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + /*agent := m_agent_derivations_agent( + m_agent( + PX_AGENT_CONTACT, + m_unique_identifier( + -, -, -, + PX_AGENT_UUID + ))),*/ + /*agent := m_agent_derivations_organization( + m_organization + ),*/ + agent := m_agent_derivations_formal_organization( + m_formal_organization + ), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + m_unique_identifier( + -, -, -, + PX_ACTION_UUID + ), + PX_ACTION_NATURE_TYPE, + -, + PX_ACTION_ACTION_STATUS, + PX_ACTION_ACTION_TYPE, + PX_ACTION_MISSION, + PX_ACTION_PRIORITY + ), + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_action_full + + template (omit) XmlEntityPayload m_entity_payload_action_basic( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := m_action( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_organization( + m_organization + ), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + -, -, -, + PX_ACTION_ACTION_STATUS, + PX_ACTION_ACTION_TYPE, + PX_ACTION_MISSION, + PX_ACTION_PRIORITY + ), + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_action_basic + + template (omit) XmlEntityPayload m_entity_payload_action_invalid_location( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := m_action( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { + m_geometry( + PX_VESSEL_INVALID_POS_LATITUDE, + PX_VESSEL_INVALID_POS_LONGITUDE + ) + } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_organization( + m_organization + ), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + -, -, -, + PX_ACTION_ACTION_STATUS, + PX_ACTION_ACTION_TYPE, + PX_ACTION_MISSION, + PX_ACTION_PRIORITY + ), + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_action_invalid_location + + template (omit) XmlEntityPayload m_entity_payload_action_invalid_organization( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := m_action( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_organization( + m_organization( + PX_INVALID_ORGANIZATION_LEGAL_NAME + ) + ), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + -, -, -, + PX_ACTION_ACTION_STATUS, + PX_ACTION_ACTION_TYPE, + PX_ACTION_MISSION, + PX_ACTION_PRIORITY + ), + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_action_invalid_organization + + } // End of group action_ + + group anomaly { + + template (value) Service m_sender_consumer_anomaly( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := anomalyService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_anomaly + + template (value) Service m_recipient_provider_anomaly( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := anomalyService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_anomaly + + template (omit) XmlEntityPayload m_entity_payload_anomaly( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := m_anomaly( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_organization( + m_organization + ), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + m_unique_identifier( + -, -, -, + PX_ANOMALY_UUID + ), + PX_ANOMALY_NATURE_TYPE, + -, + PX_ANOMALY_TYPE + ), + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_anomaly + + } // End of group anomaly + + group certificateDocumentService { + + template (value) Service m_sender_consumer_certificate_document( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := certificateDocumentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_certificate_document + + template (value) Service m_recipient_provider_certificate_document( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := certificateDocumentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_certificate_document + + template (omit) XmlEntityPayload m_entity_payload_certificate_document( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := m_certificate_document( + -, -, + m_unique_identifier( + -, -, -, + PX_CERTIFICATE_DOCUMENT_SUBJECT_UUID + ), + PX_CERTIFICATE_DOCUMENT_SUBJECT, + PX_CERTIFICATE_DOCUMENT_TITLE, + PX_CERTIFICATE_DOCUMENT_VERSION, + PX_CERTIFICATE_DOCUMENT_B64_CONTENT, + PX_CERTIFICATE_DOCUMENT_B64_CONTENT_HASH, + -, + PX_CERTIFICATE_DOCUMENT_TYPE + ), + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_certificate_document + + template (omit) XmlEntityPayload m_entity_payload_certificate_document_invalid_hash( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := m_certificate_document( + -, -, + m_unique_identifier( + -, -, -, + PX_CERTIFICATE_DOCUMENT_SUBJECT_UUID + ), + PX_CERTIFICATE_DOCUMENT_SUBJECT, + PX_CERTIFICATE_DOCUMENT_TITLE, + PX_CERTIFICATE_DOCUMENT_VERSION, + PX_CERTIFICATE_DOCUMENT_B64_CONTENT, + PX_CERTIFICATE_DOCUMENT_B64_INVALID_HASH, + -, + PX_CERTIFICATE_DOCUMENT_TYPE + ), + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_certificate_document_invalid_hash + + } // End of group certificateDocumentService + + group incident { + + template (value) Service m_sender_consumer_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := incidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_incident + + template (value) Service m_recipient_provider_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := incidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_incident + + template (omit) XmlEntityPayload m_entity_payload_incident( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := m_incident( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_organization( + m_organization + ), + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + -, -, + m_unique_identifier( + -, -, -, + PX_INCIDENT_UUID + ), + PX_INCIDENT_NATURE_TYPE, + -, + PX_INCIDENT_CERTAINTY + ), + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_incident + + template (value) Service m_sender_consumer_irregular_migration_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := irregularMigrationIncidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_irregular_migration_incident + + template (value) Service m_recipient_provider_irregular_migration_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := irregularMigrationIncidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_irregular_migration_incident + + template (omit) XmlEntityPayload m_entity_payload_irregular_migration_incident( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := m_irregular_migration_incident( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_agent( + m_agent( + PX_AGENT_CONTACT, + m_unique_identifier( + -, -, -, + PX_AGENT_UUID + ))), + /*agent := m_agent_derivations_organization( + m_organization + ),*/ + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + -, -, + m_unique_identifier( + -, -, -, + PX_INCIDENT_UUID + ), + PX_IRREGULAR_MIGRATION_INCIDENT_NATURE_TYPE, + -, -, -, -, -, -, -, -, -, + PX_IRREGULAR_MIGRATION_INCIDENT_TYPE + ), + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_irregular_migration_incident + + template (value) Service m_sender_consumer_law_infringement_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := lawInfringementIncidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_law_infringement_incident + + template (value) Service m_recipient_provider_law_infringement_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := lawInfringementIncidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_law_infringement_incident + + template (omit) XmlEntityPayload m_entity_payload_law_infringement_incident( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := m_law_infringement_incident( + -, -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )), + dateTime := omit, + eventArea := omit, + locationRole := omit, + sourceType := omit + } + }, + -, -, + { + { + agent := m_agent_derivations_agent( + m_agent( + PX_AGENT_CONTACT, + m_unique_identifier( + -, -, -, + PX_AGENT_UUID + ))), + /*agent := m_agent_derivations_organization( + m_organization + ),*/ + agentRole := PX_AGENT_AGENT_ROLE, + involvementPeriod := omit + } + }, + -, -, + m_unique_identifier( + -, -, -, + PX_INCIDENT_UUID + ), + PX_LAW_INFRINGEMENT_INCIDENT_NATURE_TYPE, + -, -, -, -, -, -, -, -, -, + PX_LAW_INFRINGEMENT_INCIDENT_TYPE + ), + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_law_infringement_incident + + } // End of group incident + + group meteo { + + template (value) Service m_sender_consumer_meteo( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := meteoOceanographicConditionService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_meteo + + template (value) Service m_recipient_provider_meteo( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := meteoOceanographicConditionService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_meteo + + template (omit) XmlEntityPayload m_entity_payload_meteo( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := m_meteo_oceanographic_condition( + { + m_location_derivations_location( + m_location( + { m_geometry } + )) + }, + PX_METEO_AIR_TEMP, + PX_METEO_CLOUD_CEILING, + PX_METEO_CLOUD_COVER, + PX_METEO_PRECIPITATION, + -, + PX_METEO_SALINITY, + PX_METEO_SEA_CONDITION, + PX_METEO_SEA_LEVEL_PRESSURE, + PX_METEO_SOURCE_TYPE + ), + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_meteo + + } // End of group meteo + + group organization { + + template (value) Service m_sender_consumer_organization( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := organizationService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_organization + + template (value) Service m_recipient_provider_organization( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := organizationService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_organization + + template (omit) XmlEntityPayload m_entity_payload_organization( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := m_organization( + -, -, -, + { PX_ORGANIZATION_COUNTRY }, + { + { + location := m_location_derivations_location(m_location({ m_geometry })), + agentRole := isLocatedIn, + involvementPeriod := omit + } + } + ), + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_organization + + } // End of group organization + + group risk { + + template (value) Service m_sender_consumer_risk( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := riskService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_risk + + template (value) Service m_recipient_provider_risk( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := riskService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_risk + + template (omit) XmlEntityPayload m_entity_payload_risk( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := m_risk( + m_unique_identifier( + -, -, -, + PX_RISK_UUID + ), + -, -, + { + { + location := m_location_derivations_location( + m_location( + { m_geometry } + )) + } + }, + -, -, -, -, + PX_RISK_LEVEL, + PX_RISK_PROBABILITY, + PX_RISK_SEVERITY, + PX_RISK_TYPE + ), + in template (omit) Cargo p_cargo := omit + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_risk + + } // End of group risk + + group cargo { + + template (value) Service m_sender_consumer_cargo( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_SENDER_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := cargoService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_sender_consumer_cargo + + template (value) Service m_recipient_provider_cargo( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := { string := PX_CISE_RECIPIENT_SERVICE_ID }, + in template (value) ServiceOperationType p_serviceOperation := pull, + in template (omit) DataFreshnessType p_dataFreshness := PX_VESSEL_DATA_FRESHNESS, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_PROVIDER, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := cargoService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of tempate m_recipient_provider_cargo + + template (omit) XmlEntityPayload m_entity_payload_cargo( + in template (value) InformationSecurityLevelType p_informationSecurityLevel := nonClassified, + in template (value) InformationSensitivityType p_informationSensitivity := green, + in template (value) PurposeType p_purpose := nonSpecified, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := false, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := false, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := m_cargo( + -, -, -, + { PX_CARGO_NAME }, + -, + { + { + location := m_location_derivations_location(m_location({m_geometry(PX_CARGO_POS_LATITUDE, PX_CARGO_POS_LONGITUDE)})), + cOG := omit, + heading := omit, + metadata_list := {}, + periodOfTime := omit, + sourceType := observation, + placementPurpose := omit, + plannedOperations_list := {}, + plannedWorks := omit, + sensorType := omit, + sOG := omit, + specialSecurityMeasures := omit, + speed := omit, + locationRole := omit + } + }, + -, -, -, -, + m_unique_identifier( + -, -, -, + PX_CARGO_UUID + ), + PX_CARGO_TYPE + ) + ) modifies m_entity_payload := { + } // End of tempate m_entity_payload_cargo + + } // End of group cargo + + group discory_profiles { + + group vessel { + + template (omit) ServiceProfile_1 m_discovery_profile_vessel( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := vesselService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_vessel + + template ServiceProfile_1 mw_discovery_profile_vessel( + template CommunityType p_community := omit, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := omit, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := vesselService, + template ServiceStatusType p_serviceStatus := omit, + template ServiceCapability_derivations p_serviceCapability := omit + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_vessel + + template (omit) Service m_discovered_profile_vessel( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (value) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (value) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := vesselService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_vessel + + template (present) Service mw_discovered_profile_vessel( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template (present) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template (present) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template (present) ServiceType p_serviceType := vesselService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_vessel + + } // End of group vessel + + group action_ { + + template (omit) ServiceProfile_1 m_discovery_profile_action( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := actionService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_action + + template ServiceProfile_1 mw_discovery_profile_action( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := actionService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_action + + template (omit) Service m_discovered_profile_action( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := actionService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_action + + template (present) Service mw_discovered_profile_action( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := actionService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_action + + } // End of group action_ + + group anomaly { + + template (omit) ServiceProfile_1 m_discovery_profile_anomaly( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := anomalyService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_anomaly + + template ServiceProfile_1 mw_discovery_profile_anomaly( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := anomalyService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_anomaly + + template (omit) Service m_discovered_profile_anomaly( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := anomalyService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_anomaly + + template (present) Service mw_discovered_profile_anomaly( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := anomalyService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_anomaly + + } // End of group anomaly + + group certificate_document { + + template (omit) ServiceProfile_1 m_discovery_profile_certificate_document( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := certificateDocumentService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_certificate_document + + template ServiceProfile_1 mw_discovery_profile_certificate_document( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := certificateDocumentService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_certificate_document + + template (omit) Service m_discovered_profile_certificate_document( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := certificateDocumentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_certificate_document + + template (present) Service mw_discovered_profile_certificate_document( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := certificateDocumentService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_certificate_document + + } // End of group certificate_document + + group incident { + + template (omit) ServiceProfile_1 m_discovery_profile_incident( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := incidentService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_incident + + template ServiceProfile_1 mw_discovery_profile_incident( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := incidentService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_incident + + template (omit) Service m_discovered_profile_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := incidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_incident + + template (present) Service mw_discovered_profile_incident( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := incidentService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_incident + + template (omit) ServiceProfile_1 m_discovery_profile_irregular_migration_incident( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := irregularMigrationIncidentService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_irregular_migration_incident + + template ServiceProfile_1 mw_discovery_profile_irregular_migration_incident( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := irregularMigrationIncidentService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_irregular_migration_incident + + template (omit) Service m_discovered_profile_irregular_migration_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := irregularMigrationIncidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_irregular_migration_incident + + template (present) Service mw_discovered_profile_irregular_migration_incident( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := irregularMigrationIncidentService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_irregular_migration_incident + + template (omit) ServiceProfile_1 m_discovery_profile_law_infringement_incident( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := lawInfringementIncidentService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_law_infringement_incident + + template ServiceProfile_1 mw_discovery_profile_law_infringement_incident( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := lawInfringementIncidentService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_law_infringement_incident + + template (omit) Service m_discovered_profile_law_infringement_incident( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := lawInfringementIncidentService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_law_infringement_incident + + template (present) Service mw_discovered_profile_law_infringement_incident( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := lawInfringementIncidentService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_law_infringement_incident + + } // End of group incident + + group meteo { + + template (omit) ServiceProfile_1 m_discovery_profile_meteo( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := meteoOceanographicConditionService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_meteo + + template ServiceProfile_1 mw_discovery_profile_meteo( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := meteoOceanographicConditionService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_meteo + + template (omit) Service m_discovered_profile_meteo( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := meteoOceanographicConditionService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_meteo + + template (present) Service mw_discovered_profile_meteo( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := meteoOceanographicConditionService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_meteo + + } // End of group meteo + + group organization { + + template (omit) ServiceProfile_1 m_discovery_profile_organization( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := organizationService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_organization + + template ServiceProfile_1 mw_discovery_profile_organization( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := organizationService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_organization + + template (omit) Service m_discovered_profile_organization( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := organizationService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_organization + + template (present) Service mw_discovered_profile_organization( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := organizationService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_organization + + } // End of group organization + + group risk { + + template (omit) ServiceProfile_1 m_discovery_profile_risk( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := riskService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_risk + + template ServiceProfile_1 mw_discovery_profile_risk( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := riskService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_risk + + template (omit) Service m_discovered_profile_risk( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := riskService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_risk + + template (present) Service mw_discovered_profile_risk( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := riskService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_risk + + } // End of group risk + + group cargo { + + template (omit) ServiceProfile_1 m_discovery_profile_cargo( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := PX_COUNTRY_TYPE, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (omit) ServiceOperationType p_serviceOperation := pull, + in template (omit) ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + in template (omit) ServiceType p_serviceType := cargoService, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service_profile := { + } // End of template m_discovery_profile_cargo + + template ServiceProfile_1 mw_discovery_profile_cargo( + template CommunityType p_community := *, + template CountryType p_country := PX_COUNTRY_TYPE, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template ServiceOperationType p_serviceOperation := pull, + template ServiceRoleType p_serviceRole := PX_CISE_CONSUMER, + template ServiceType p_serviceType := cargoService, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service_profile := { + } // End of template mw_discovery_profile_cargo + + template (omit) Service m_discovered_profile_cargo( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + in template (omit) SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := cargoService, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) modifies m_service := { + } // End of template m_discovered_profile_cargo + + template (present) Service mw_discovered_profile_cargo( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := m_string_derivations_string(PX_CISE_DISCOVERY_PROFILE_SERVICE_ID), + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := PX_DATA_FRESHNESS_TYPE, + template SeaBasinType p_seaBasin := PX_CISE_SEA_BASSIN, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := cargoService, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) modifies mw_service := { + } // End of template mw_discovered_profile_cargo + + } // End of group cargo + + } // End of group discory_profiles + +} // End of module AtsCise_Templates diff --git a/ttcn/AtsCise/AtsCise_TestCases.ttcn b/ttcn/AtsCise/AtsCise_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b40a8482cf57e63cbc872cb9bf1b314bbeda678e --- /dev/null +++ b/ttcn/AtsCise/AtsCise_TestCases.ttcn @@ -0,0 +1,18384 @@ +module AtsCise_TestCases { + + // Libcommon + import from LibCommon_Sync all; + import from LibCommon_Time all; + + // LibHttp + import from LibHttp_TypesAndValues all; + import from LibHttp_Functions all; + import from LibHttp_Templates all; + import from LibHttp_XmlTemplates all; + import from LibHttp_TestSystem all; + + // LibCise + import from LibCise_Pics all; + import from LibCise_Pixits all; + import from LibCise_Templates all; + import from LibCise_Functions all; + import from LibCise_TestSystem all; + + // LibCDM + import from http_www_cise_eu_servicemodel_v1_authority all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_cise_eu_datamodel_v1_entity_document all; + import from http_www_cise_eu_datamodel_v1_entity_action all; + import from http_www_cise_eu_datamodel_v1_entity_anomaly all; + import from http_www_cise_eu_datamodel_v1_entity_organization all; + import from http_www_cise_eu_datamodel_v1_entity_vessel all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_location all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_period all; + import from http_www_cise_eu_datamodel_v1_entity_agent all; + import from http_www_cise_eu_datamodel_v1_entity_event all; + import from http_www_cise_eu_datamodel_v1_entity_movement all; + + // LibHelper + import from LibHelpers_Functions all; + + // AtsCise + import from AtsCise_Templates all; + + group helpers { + + group functions { + + /** + * @desc Process a PullRequest/PullResponse Test Body exchange + */ + function f_process_pull_request_await_pull_response( + in PullType p_pull_type := request, + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + in template (present) XmlEntityPayload p_pull_response_entity_payload := ? + ) runs on CiseComponent { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Preamble + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + p_pull_type, + p_discovery_profiles, + -, -, + v_context_id, + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000, // ResponseTimeOut + -, + p_payload_selector + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + //f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": INFO: IUT successfully received synchronous Acknowledgment ***"); + v_recv_sync_ack := false; // Repeat and ... + v_recv_response := true; // ... wait for the PullResponse + tc_ac.start; + repeat; + } + [v_recv_response == true] + httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PULL_RESPONSE_URI, + -, + mw_http_message_body_xml( + mw_xml_body_pull_response( + mw_pull_response( + ?, + ?, // pattern "v_message_id*", + high, + -, -, + success, + -, -, -, + v_correlation_id, + -, -, + mw_core_entity_payload_derivations_payload( + p_pull_response_entity_payload + ))))))) -> value v_request { + tc_ac.stop; + + if (not(f_verify_sign_pull_response(v_request.request.body.xml_body, ""/*v_pull_response_canonicalized*/))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + log("*** " & testcasename() & ": PASS: IUT successfully received PullResponse ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + + // Send the response to finalyze the transaction + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_request.request.body.xml_body.msg.pull_response.creationDateTime, + v_request.request.body.xml_body.msg.pull_response.messageID, + v_request.request.body.xml_body.msg.pull_response.priority, + {}, + success + ))), + v_headers + ))); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_process_pull_request_await_pull_response + + /** + * @desc Await for a PullRequest and replay with ACK/PullResponse + */ + function f_await_pull_request_send_pull_response( + in PullType p_pull_type := request, + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {} + ) runs on CiseComponent { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_created_date_time, 0, lengthof(v_created_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Preamble + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request + )))) -> value v_request { + tc_ac.stop; + // Send the response to finalyze the transaction + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_request.request.body.xml_body.msg.pull_request.creationDateTime, + v_request.request.body.xml_body.msg.pull_request.messageID, + v_request.request.body.xml_body.msg.pull_request.priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_request( + m_http_request_post( + "/messages?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_request.request.body.xml_body.msg.pull_request.priority, + v_request.request.body.xml_body.msg.pull_request.sender_, + {}, + success, + -, + -, + v_request.request.body.xml_body.msg.pull_request.contextID, + v_request.request.body.xml_body.msg.pull_request.correlationID, + false + )))))); + + log("*** " & testcasename() & ": INFO: Sent PullResponse to the IUT ***"); + tc_ac.start; + repeat; + } + [] httpPort_notif.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + -, -, -, -, + success + )))))) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: Received PullResponse Ack ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] httpPort_notif.receive { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Unexpected message received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_await_pull_request_send_pull_response + + /** + * @desc Process a PullRequest/PullResponse Test Body exchange in case of invalid behavior + */ + function f_process_pull_request_await_pull_response_bo( + in PullType p_pull_type := request, + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + in boolean p_alter_date_time_past := false, + in boolean p_alter_date_time_future := false, + in AcknowledgementType p_expected_ack_type := badRequest + ) runs on CiseComponent { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Preamble + if (p_alter_date_time_past) { + v_date_time := f_get_current_date_time(-3600*24*31); // One month in the past + } else if (p_alter_date_time_future) { + v_date_time := f_get_current_date_time(+3600*24*31); // One month in the future + } + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + p_pull_type, + {}, + -, -, + v_context_id, + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + p_expected_ack_type, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: IUT successfully received Ack with error code ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] httpPort.receive( + mw_http_response( + mw_http_response_201_created( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: IUT failed to manage BO situation ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_process_pull_request_await_pull_response_bo + + /** + * @desc Process a PullRequest/SyncAck Test Body exchanges + */ + function f_process_pull_request_await_ack( + in PullType p_pull_type := request, + in template (omit) Service p_service, + in template (omit) Service p_recipient := omit, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + in template (omit) ServiceCapability_derivations p_requests := omit, + template (present) Acknowledgement_1.discoveredServices_list p_ack_discovered_services := {} + ) runs on CiseComponent return charstring { + // Local variables + var Headers v_headers; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Preamble + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + p_pull_type, + p_discovery_profiles, + -, -, + v_context_id, + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000, // ResponseTimeOut + p_requests, + p_payload_selector + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + //f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + log("p_ack_discovered_services: ", p_ack_discovered_services); + tc_ac.start; + alt { + // [] httpPort.receive( + // mw_http_response( + // mw_http_response_201_created( + // mw_http_message_body_xml( + // mw_xml_body_acknowledgement( + // mw_acknowledgement( + // ?, + // ?, //pattern "v_message_id*", + // -, -, + // success, + // p_ack_discovered_services, -, -, -, + // v_correlation_id + // )))))) { + // tc_ac.stop; + + // if (lengthof(p_ack_discovered_services) == 0) { + // log("*** " & testcasename() & ": PASS: IUT successfully received synchronous Acknowledgment w/o Discovered services ***"); + // f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + // } else { + // log("*** " & testcasename() & ": FAIL: IUT successfully received synchronous Acknowledgment w/o Discovered services ***"); + // f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + // } + // } + // [] httpPort.receive( + // mw_http_response( + // mw_http_response_201_created( + // mw_http_message_body_xml( + // mw_xml_body_acknowledgement( + // mw_acknowledgement( + // ?, + // ?, //pattern "v_message_id*", + // -, -, + // badRequest, + // p_ack_discovered_services, + // -, -, -, + // v_correlation_id + // )))))) { + // tc_ac.stop; + + // log("*** " & testcasename() & ": FAIL: IUT successfully received synchronous Acknowledgment with error status ***"); + // f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + // } + [] httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + p_ack_discovered_services, + -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully received synchronous Acknowledgment ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + return v_correlation_id; + } // End of function f_process_pull_request_await_ack + + /** + * @desc Process a PullRequest/SyncAck Test Body exchanges + */ + function f_process_pull_request_unsubscribe_await_ack( + in charstring p_correlation_id, + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, // FIXME To be removed + in template (omit) PayloadSelector p_payload_selector := omit, // FIXME To be removed + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, // FIXME To be removed + in template (omit) ServiceCapability_derivations p_requests := omit, // FIXME To be removed + template (present) Acknowledgement_1.discoveredServices_list p_ack_discovered_services := {} // FIXME To be removed + ) runs on CiseComponent { + // Local variables + var Headers v_headers; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Preamble + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + unsubscribe, + p_discovery_profiles, + -, -, + v_context_id, + p_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000, // ResponseTimeOut + p_requests, + p_payload_selector + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + //f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + log("p_ack_discovered_services: ", p_ack_discovered_services); + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + p_ack_discovered_services, + -, -, -, + p_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully received synchronous Acknowledgment ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_process_pull_request_unsubscribe_await_ack + + /** + * @desc Process a PullRequest/SyncAck Test Body exchange in case of invalid behavior + */ + function f_process_pull_request_await_ack_bo( + in PullType p_pull_type := request, + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + in template (omit) ServiceCapability_derivations p_requests := omit, + in boolean p_alter_date_time_past := false, + in boolean p_alter_date_time_future := false, + in AcknowledgementType p_expected_ack_type := badRequest + ) runs on CiseComponent { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Preamble + if (p_alter_date_time_past) { + v_date_time := f_get_current_date_time(-24*3600); // Subscription is one day ago + } else if (p_alter_date_time_future) { + v_date_time := f_get_current_date_time(+3600*24*31); // One month in the future + } + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + p_pull_type, + {}, + -, -, + v_context_id, + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000, // ResponseTimeOut + p_requests + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + p_expected_ack_type, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: IUT successfully received Ack with error code ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] httpPort.receive( + mw_http_response( + mw_http_response_201_created( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: IUT failed to manage BO situation ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_process_pull_request_await_ack_bo + + /** + * @desc Process a Feedback/SyncAck Test Body exchanges + */ + function f_process_feedback_await_ack( + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (value) FeedbackType p_feedbackType := info, + in template (value) http_www_cise_eu_servicemodel_v1_message.String_derivations p_refMessageID, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in AcknowledgementType p_expected_ack_type := success + ) runs on CiseComponent { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var Feedback_1 v_feedback; + var octetstring v_feedback_signed; + var charstring v_feedback_canonicalized; + var charstring v_feedback_signed_str; + var integer v_result; + + // Preamble + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + + v_feedback := valueof( + m_feedback( + v_date_time, + v_message_id, + high, + p_service, + {}, + p_feedbackType, + p_refMessageID, + -, + v_context_id, + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload + )); + v_result := f_sign_feedback(v_feedback, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_feedback_signed, v_feedback_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_feedback_signed_str := oct2char(v_feedback_signed); + log("v_feedback_signed_str: ", v_feedback_signed_str); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_FEEDBACK_URI, + v_headers, + m_http_message_body_xml( + m_xml_body_feedback( // As the message was signed, we need to send as raw XML to prevent codec call + v_feedback, + v_feedback_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_201_created( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully received synchronous Acknowledgment ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_process_feedback_await_ack + + /** + * @desc Process a Push/Ack exchange + */ + function f_process_push_await_ack_response( + in universal charstring p_correlation_id, + in universal charstring p_context_id, + in template (omit) Service p_service := omit, + in template (omit) Service p_recipient := omit, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in AcknowledgementType p_expected_ack_type := success + ) runs on CiseComponent { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var Push_1 v_push; + var octetstring v_push_signed; + var charstring v_push_canonicalized; + var charstring v_push_signed_str; + var integer v_result; + + // Preamble + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + + v_push := valueof( + m_push( + v_date_time, + v_message_id, + high, + p_service, + {}, + {}, -, + p_context_id, + p_correlation_id, + PX_CISE_REQUEST_ACK + )); + + v_result := f_sign_push(v_push, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_push_signed, v_push_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_push_signed_str := oct2char(v_push_signed); + log("v_push_signed_str: ", v_push_signed_str); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_PUSH_URI, + v_headers, + m_http_message_body_xml( + m_xml_body_push( // As the message was signed, we need to send as raw XML to prevent codec call + v_push, + v_push_signed_str // If raw is specified, the codec does not encode the message + ))))); + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_201_created( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, -, -, -, + p_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully received synchronous Acknowledgment ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + } // End of function f_process_push_await_ack_response + + } // End of group functions + + group altsteps { + + } // End of group altsteps + + } // End of group helpers + + group cise_node_ei_na { + + group pull_request { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Vessel service - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_01_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_01 + + /** + * @desc Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with timeout on response - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for a unknown vessel - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel_unknown // Unknown_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with filter - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel_payload_selector, + m_payload_selector( + { + m_selector_condition( + m_string_derivations_string( + PX_PAYLOAD_SELECTOR_CONDITION_1 + )) + } + )); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving an inconsistent PullRequest + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_vessel(-, push), + m_recipient_provider_vessel(-, push), + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an inconsistent Service Operation type + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_vessel(-, push), + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with an unknown serviceID + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_vessel({ string := PX_CISE_UNKNOWN_SENDER_SERVICE_ID }), + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in past (one month late) + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel, + -, -, + true + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with a date/time far in future (one month) + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel, + -, -, -, + true + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_05 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with filter - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel_payload_selector, + m_payload_selector( + { + m_selector_condition( + m_string_derivations_string( + PX_PAYLOAD_SELECTOR_CONDITION_2 + )) + } + )); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_06 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + f_process_pull_request_await_ack( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_full + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Action service - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_basic + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Location + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_invalid_location + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a PullRequest with inconsistent Involved agent + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_invalid_organization + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_02 + + /** + * @desc Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an Anomaly + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + m_entity_payload_anomaly + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_03 + + /** + * @desc Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with a vessel document certificate + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + m_entity_payload_certificate_document + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with a vessel document certificate with an invalid Integrity check + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response_bo( + -, + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + m_entity_payload_certificate_document_invalid_hash + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_04 + + /** + * @desc Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an Incident + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_incident, + m_recipient_provider_incident, + m_entity_payload_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_05 + + /** + * @desc Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an IrregularMigrationIncident + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + m_entity_payload_irregular_migration_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_06 + + /** + * @desc Check the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest with an LawInfringementIncident + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + m_entity_payload_law_infringement_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_07 + + /** + * @desc Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an ongoing meteo condition + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + m_entity_payload_meteo + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_08 + + /** + * @desc Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for an organization + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_organization, + m_recipient_provider_organization, + m_entity_payload_organization + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_09 + + /** + * @desc Check that the IUT sends a PullResponse before response timeout expiry when receiving a PullRequest for ongoing risk + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_risk, + m_recipient_provider_risk, + m_entity_payload_risk + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_10 + + /** + * @desc Check that the IUT sends a PullResponse before reponse timout expiry when receiving a PullRequest for a cargo + */ + testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_cargo, + m_recipient_provider_cargo, + m_entity_payload_cargo + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_11 + + } // End of group pull_request + + group pull_request_multicast { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving multiple PullRequest for Vessel service - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter_a; + var CiseComponent v_adapter_b; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_03_up(); + + // Preamble + + // Start components + v_adapter_a := f_getComponent(c_adapter_a); + v_adapter_b := f_getComponent(c_adapter_b); + v_adapter_a.start(f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01_adapter_a()); + v_adapter_b.start(f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01_adapter_b()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_03_down(); + + } // End of testcaste TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 + + group f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 { + + function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01_adapter_a() runs on CiseComponent { + // Local variables + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + } // End of function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01_adapter_a + + function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01_adapter_b() runs on CiseComponent { + // Local variables + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + } // End of function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01_adapter_b + + } // End of group f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with Action in progress + */ + testcase TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter_a; + var CiseComponent v_adapter_b; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_03_up(); + + // Preamble + + // Start components + v_adapter_a := f_getComponent(c_adapter_a); + v_adapter_b := f_getComponent(c_adapter_b); + v_adapter_a.start(f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02_adapter_a()); + v_adapter_b.start(f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02_adapter_b()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_03_down(); + + } // End of testcaste TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02 + + group f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02 { + + function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02_adapter_a() runs on CiseComponent { + // Local variables + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_basic + ); + + } // End of function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02_adapter_a + + function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02_adapter_b() runs on CiseComponent { + // Local variables + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_basic + ); + + } // End of function f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02_adapter_b + + } // End of group f_TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02 + + } // End of group pull_request_multicast + + group pull_request_discovery { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with VesselServide discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + -, -, + { m_discovery_profile_vessel }, + -, + { *, mw_discovered_profile_vessel, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with ActionServide discovery + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_action, + m_recipient_provider_action, + -, -, + { m_discovery_profile_action }, + -, + { *, mw_discovered_profile_action, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with AnomalyServide discovery + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + -, -, + { m_discovery_profile_anomaly }, + -, + { *, mw_discovered_profile_anomaly, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CertificateDocumentServide discovery + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + -, -, + { m_discovery_profile_certificate_document }, + -, + { *, mw_discovered_profile_certificate_document, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IncidentServide discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_incident, + m_recipient_provider_incident, + -, -, + { m_discovery_profile_incident }, + -, + { *, mw_discovered_profile_incident, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_05 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with IrregularMigrationIncidentService discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + -, -, + { m_discovery_profile_irregular_migration_incident }, + -, + { *, mw_discovered_profile_irregular_migration_incident, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_06 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with LawInfringementIncident discovery + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + -, -, + { m_discovery_profile_law_infringement_incident }, + -, + { *, mw_discovered_profile_law_infringement_incident, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_07 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with MeteoOceanographicConditionService discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + -, -, + { m_discovery_profile_meteo }, + -, + { *, mw_discovered_profile_meteo, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_08 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with OrganizationServide discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_organization, + m_recipient_provider_organization, + -, -, + { m_discovery_profile_organization }, + -, + { *, mw_discovered_profile_organization, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_09 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with RiskServide discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_risk, + m_recipient_provider_risk, + -, -, + { m_discovery_profile_risk }, + -, + { *, mw_discovered_profile_risk, * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_10 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest with CargoServide discovery - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + discover, + m_sender_consumer_cargo, + m_recipient_provider_cargo, + -, -, + { m_discovery_profile_cargo }, + -, + { *, mw_discovered_profile_cargo , * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PULL_DISC_BV_11 + + } // End of group pull_request_discovery + + group subscribe_create { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a subscription for VesselService + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + v_correlation_id := f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response and an error code when receiving a subscription ending in past + */ + testcase TC_CDM_NODE_EI_NA_SUB_BO_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(-24*3600); // Subscription is one day ago + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + + // Test Body + f_process_pull_request_await_ack_bo( + subscribe, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BO_01 + + /** + * @desc Check that the IUT sends a request of subcribers list for ActionService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + v_correlation_id := f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_02 + + /** + * @desc Check that the IUT sends a request of subcribers list for AnomalyService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_03 + + /** + * @desc Check that the IUT sends a request of subcribers list for CertificateDocumentService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_04 + + /** + * @desc Check that the IUT sends a request of subcribers list for IncidentService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_incident, + m_recipient_provider_incident, + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_05 + + /** + * @desc Check that the IUT sends a request of subcribers list for IrregularMigrationIncidentService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_06 + + /** + * @desc Check that the IUT sends a request of subcribers list for LawInfringementIncidentService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_07 + + /** + * @desc Check that the IUT sends a request of subcribers list for MeteoOceanographicConditionService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_08 + + /** + * @desc Check that the IUT sends a request of subcribers list for OrganisationService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_09 + + /** + * @desc Check that the IUT sends a request of subcribers list for RiskService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_10 + + /** + * @desc Check that the IUT sends a request of subcribers list for CargoService when triggered + */ + testcase TC_CDM_NODE_EI_NA_SUB_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_ack( + subscribe, + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )) + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_BV_11 + + } // End of group subscribe_create + + group subscribe_loockup { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for VesselService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Get subscription + getSubscribers, + m_sender_consumer_vessel({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_vessel , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response with an empty list when no subscription was done for VesselService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Get subscription + getSubscribers, + m_sender_consumer_vessel({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_vessel , * } + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for ActionService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_action({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_action , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for AnomalyService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_anomaly({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_anomaly , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for CertificateDocumentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_certificate_document({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_certificate_document , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for IncidentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_incident({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_incident , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_05 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for IrregularMirationIncidentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_irregular_migration_incident({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_irregular_migration_incident , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_06 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for LawInfringementIncidentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_law_infringement_incident({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_law_infringement_incident , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_07 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for MeteoOceanographicConditionService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_meteo({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_meteo , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_08 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for OrganizationService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_organization({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_organization , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_09 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for RiskService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_risk({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_risk , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_10 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request of subcribers list for CargoService + */ + testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + var charstring v_base; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + v_base := regexp(oct2char(unichar2oct(PX_CISE_SENDER_SERVICE_ID, "UTF-8")), "(?+)"& "consumer", 0) & "provider"; + f_process_pull_request_await_ack( // Create subscription + getSubscribers, + m_sender_consumer_cargo({ string := v_base }, subscribe), + -, -, -, -, -, + { *, mw_discovered_profile_cargo , * } + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_LOOK_BV_11 + + } // End of group subscribe_loockup + + group subscribe_delete { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for VesselService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response with an error code when receiving a request to delete an unknown subscription for VesselService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + + // Test Body + f_process_pull_request_await_ack_bo( + subscribe, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for ActionService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for AnomalyService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for CertificateDocumentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for IncidentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_05 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for IncidentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_06 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for LawInfringementIncidentService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_07 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for MeteoOceanographicConditionService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_08 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for OrganizationService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_09 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for RiskService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_10 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a request to delete subscription for CargoService + */ + testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe) + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SUB_DELETE_BV_11 + + } // End of group subscribe_delete + + group notify { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for VesselService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_FEEDBACK_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push( + -, -, -, + m_recipient_provider_vessel, + -, -, -, -, -, -, + m_sender_consumer_vessel + )))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for ActionService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_action(-, subscribe), + m_recipient_provider_action(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for AnomalyService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_anomaly(-, subscribe), + m_recipient_provider_anomaly(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CertificateDocumentService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_certificate_document(-, subscribe), + m_recipient_provider_certificate_document(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IncidentService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_incident(-, subscribe), + m_recipient_provider_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_05 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for IrregularMigrationIncidentService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_irregular_migration_incident(-, subscribe), + m_recipient_provider_irregular_migration_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_06 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for LawInfringementIncidentService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_law_infringement_incident(-, subscribe), + m_recipient_provider_law_infringement_incident(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_07 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for MeteoOceanographicConditionService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_meteo(-, subscribe), + m_recipient_provider_meteo(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_08 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for OrganizationService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_organization(-, subscribe), + m_recipient_provider_organization(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_09 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for RiskService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_risk(-, subscribe), + m_recipient_provider_risk(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_10 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Push for notification for CargoService + */ + testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe), + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PUSH_REQUEST_URI, + -, + mw_http_message_body_xml( + mw_xml_body_push( + mw_push + ))))) { + tc_ac.stop; + + // Send response + + log("*** " & testcasename() & ": PASS: IUT successfully received notifications ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_cargo(-, subscribe), + m_recipient_provider_cargo(-, subscribe) + ); + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_PUSH_NOT_BV_11 + + } // End of group notify + + group asynchronous_acknowledgement { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a PullRequest for Vessel service - no Acknowledgment required + */ + testcase TC_CDM_NODE_EI_NA_ASYNC_ACK_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + if (PX_CISE_REQUEST_ACK == false) { + log("*** " & testcasename() & ": PX_CISE_REQUEST_ACK required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_ASYNC_ACK_BV_01 + + } // End of group asynchronous_acknowledgement + + group feedback { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for VesselService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_vessel(-, feedback), + m_recipient_provider_vessel(-, feedback), + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_vessel + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_01 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for ActionService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_action(-, feedback), + m_recipient_provider_action(-, feedback), + m_entity_payload_action_full, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_action, + m_recipient_provider_action, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_action_full + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_02 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for AnomalyService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_anomaly(-, feedback), + m_recipient_provider_anomaly(-, feedback), + m_entity_payload_anomaly, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_anomaly + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_03 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CertificateDocumentService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_certificate_document(-, feedback), + m_recipient_provider_certificate_document(-, feedback), + m_entity_payload_certificate_document, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_certificate_document + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_04 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IncidentService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_incident(-, feedback), + m_recipient_provider_incident(-, feedback), + m_entity_payload_incident, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_incident, + m_recipient_provider_incident, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_incident + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_05 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for IrregularMigrationIncidentService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_irregular_migration_incident(-, feedback), + m_recipient_provider_irregular_migration_incident(-, feedback), + m_entity_payload_irregular_migration_incident, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_irregular_migration_incident + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_06 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for LawInfringementIncidentService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_law_infringement_incident(-, feedback), + m_recipient_provider_law_infringement_incident(-, feedback), + m_entity_payload_law_infringement_incident, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_law_infringement_incident + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_07 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for MeteoOceanographicConditionService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_meteo(-, feedback), + m_recipient_provider_meteo(-, feedback), + m_entity_payload_meteo, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_meteo, + m_recipient_provider_meteo, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_meteo + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_08 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for OrganizationService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_organization(-, feedback), + m_recipient_provider_organization(-, feedback), + m_entity_payload_organization, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_organization, + m_recipient_provider_organization, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_organization + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_09 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for RiskService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_risk(-, feedback), + m_recipient_provider_risk(-, feedback), + m_entity_payload_risk, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_risk, + m_recipient_provider_risk, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_risk + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_10 + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment response when receiving a Feedback for CargoService + */ + testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_reference_message_id; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_process_pull_request_response( + m_sender_consumer_cargo(-, feedback), + m_recipient_provider_cargo(-, feedback), + m_entity_payload_cargo, + -, -, + v_reference_message_id + ); + + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_cargo, + m_recipient_provider_cargo, + -, + m_string_derivations_string(v_reference_message_id), + m_entity_payload_cargo + ); + + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_FEEDBACK_BV_11 + + } // End of group feedback + + } // End of group cise_node_ei_na + + group cise_node_ei_nn { + + group pull_request { + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a VesselService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01 + + /** + * @desc Check that the IUT sends the synchronous Acknowledgment to the Adapter when receiving the synchronous Acknowledgment from the GatewayProvider + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02 + + /** + * @desc Check that the IUT sends the PullResponse to the Adapter when receiving the PullResponse from the GatewayProvider + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an ActionService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_02() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_02 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_basic + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_basic + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_02 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an AnomalyService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_03() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_03 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + m_entity_payload_anomaly + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + m_entity_payload_anomaly + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_03 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for a CertificateDocumentService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_04() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_04 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + m_entity_payload_certificate_document + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + m_entity_payload_certificate_document + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_04 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an IncidentService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_05() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_05 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_incident, + m_recipient_provider_incident, + m_entity_payload_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_incident, + m_recipient_provider_incident, + m_entity_payload_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_05 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an IrregularMigrationIncident + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_06() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_06 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + m_entity_payload_irregular_migration_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + m_entity_payload_irregular_migration_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_06 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an LawInfringementIncident + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_07() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_07 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + m_entity_payload_law_infringement_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + m_entity_payload_law_infringement_incident + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_07 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an MeteoOceanographicConditionService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_08() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_08 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + m_entity_payload_meteo + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + m_entity_payload_meteo + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_08 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an OrganizationService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_09() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_09 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_organization, + m_recipient_provider_organization, + m_entity_payload_organization + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_organization, + m_recipient_provider_organization, + m_entity_payload_organization + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_09 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an RiskService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_10() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_10 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_risk, + m_recipient_provider_risk, + m_entity_payload_risk + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_risk, + m_recipient_provider_risk, + m_entity_payload_risk + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_10 + + /** + * @desc Check that the IUT sends a PullRequest to the GatewayProvider when receiving a PullRequest for an CargoService + */ + testcase TC_CDM_NODE_EI_NN_PULL_REQ_BV_11() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PULL_REQ_BV_11 + + group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11 { + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + -, + m_sender_consumer_cargo, + m_recipient_provider_cargo, + m_entity_payload_cargo + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11_adapter + + function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + -, + m_sender_consumer_cargo, + m_recipient_provider_cargo, + m_entity_payload_cargo + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PULL_REQ_BV_11 + + } // End of group pull_request + + group pull_request_discovery { + + /** + * @desc Check that the IUT sends a PullRequest for discovery to the GatewayProvider when receiving a PullRequest for a MeteoOceanographicConditionService + */ + testcase TC_CDM_NODE_EI_NN_DISC_REQ_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_DISC_REQ_BV_01 + + group f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01 { + + function f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01_adapter() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + discover, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + m_entity_payload_meteo + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01_adapter + + function f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + discover, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + m_entity_payload_meteo + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_DISC_REQ_BV_01 + + } // End of group pull_request_discovery + + group subscribe_create { + + /** + * @desc Check that the IUT sends a PullRequest for subscription to the GatewayProvider when receiving a PullRequest for a VesselService + */ + testcase TC_CDM_NODE_EI_NN_SUB_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_SUB_BV_01_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_SUB_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_SUB_BV_01 + + group f_TC_CDM_NODE_EI_NN_SUB_BV_01 { + + function f_TC_CDM_NODE_EI_NN_SUB_BV_01_adapter() runs on CiseComponent { + // Local variables + var charstring v_correlation_id; + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + subscribe, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_SUB_BV_01_adapter + + function f_TC_CDM_NODE_EI_NN_SUB_BV_01_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + subscribe, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_SUB_BV_01_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_SUB_BV_01 + + } // End of group subscribe_create + + group subscribe_loockup { + + /** + * @desc Check that the IUT sends a PullRequest for subcribers list to the GatewayProvider when receiving a PullRequest for subcribers list for a IncidentService + */ + testcase TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01 + + group f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01 { + + function f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01_adapter() runs on CiseComponent { + // Local variables + var charstring v_correlation_id; + + // Test component configuration + f_cf_02_up(); + + f_process_pull_request_await_pull_response( + subscribe, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + f_process_pull_request_await_pull_response( + getSubscribers, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01_adapter + + function f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + getSubscribers, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01 + + } // End of group subscribe_loockup + + group subscribe_delete { + + /** + * @desc Check that the IUT sends a PullRequest for subcribers list to the GatewayProvider when receiving a PullRequest for subcribers list for a IncidentService + */ + testcase TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01 + + group f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01 { + + function f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01_adapter() runs on CiseComponent { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test component configuration + f_cf_02_up(); + + // Preamble + f_process_subscription( // Create subscription + m_sender_consumer_vessel, + m_recipient_provider_vessel, + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // Test Body + f_process_pull_request_unsubscribe_await_ack( + v_correlation_id, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01_adapter + + function f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + f_await_pull_request_send_pull_response( + unsubscribe, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_cf_02_down(); + + } // End of function f_CDM_NODE_EI_NN_SUB_DELETE_BV_01_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01 + + } // End of group subscribe_delete + + group notify { + + /** + * @desc Check that the IUT sends a Push to the Adapter when receiving a Push from the GatewayProvider for a VesselService + */ + testcase TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + v_adapter.start(f_TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01_adapter()); + v_gateway.start(f_TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01 + + group f_CDM_NODE_EI_NN_PUSH_NOT_BV_01 { + + function f_TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01_adapter() runs on CiseComponent { + // Local variables + var charstring v_subscription_end := f_get_current_date_time(3600); // Subscription is ended in one hour + var charstring v_correlation_id; + + // Test component configuration + f_cf_02_up(); + + f_process_subscription( // Create subscription + m_sender_consumer_vessel, + m_recipient_provider_vessel, + -, -, -, + m_service_capability_derivations_subscriptionCapability( + m_subscription_capability( + v_subscription_end, + PX_SUBSCRIPTION_REFRESH_RATE + )), + v_correlation_id + ); + + // TODO Await notify + + + // Postamble + // Remove subscription + log("*** " & testcasename() & ": INFO: Postambule: Process unsubscribe ***"); + f_process_unsubscribe( + v_correlation_id, + m_sender_consumer_vessel(-, subscribe), + m_recipient_provider_vessel(-, subscribe) + ); + f_cf_02_down(); + + } // End of function f_TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01_adapter + + function f_TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01_gateway() runs on CiseComponent { + // Local variables + + // Test component configuration + f_cf_02_up(); + + // TODO Send notify + + // Postamble + f_cf_02_down(); + + } // End of function f_CDM_NODE_EI_NN_PUSH_NOT_BV_01_gateway + + } // End of group f_TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01 + + } // End of group notify + + group asynchronous_acknowledgement { + + /** + * @desc Check that the IUT sends a PullRequest for async Ack to the GatewayProvider when receiving a PullRequest for async Ack for a CargoService + */ + testcase TC_CDM_NODE_EI_NN_ASYNC_ACK_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + //v_adapter.start(f_TC_CDM_NODE_EI_NN_ASYNC_ACK_BV_01_adapter()); + //v_gateway.start(f_TC_CDM_NODE_EI_NN_ASYNC_ACK_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_ASYNC_ACK_BV_01 + + } // End of group asynchronous_acknowledgement + + group feedback { + + /** + * @desc Check that the IUT sends a PullRequest for feedback to the GatewayProvider when receiving a PullRequest for feedback for a VesselService + */ + testcase TC_CDM_NODE_EI_NN_FEEDBACK_BV_01() runs on CiseMtc system CiseTestAdapter { + // Local variables + var CiseComponent v_adapter; + var CiseComponent v_gateway; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NN) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NN and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_04_up(); + + // Preamble + + // Start components + v_adapter := f_getComponent(c_adapter); + v_gateway := f_getComponent(c_gw_provider); + //v_adapter.start(f_TC_CDM_NODE_EI_NN_FEEDBACK_BV_01_adapter()); + //v_gateway.start(f_TC_CDM_NODE_EI_NN_FEEDBACK_BV_01_gateway()); + + // Synchronization + f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Two simulated adatpers + + // Cleanup + f_cf_04_down(); + + } // End of testcaste TC_CDM_NODE_EI_NN_FEEDBACK_BV_01 + + } // End of group feedback + + } // End of group cise_node_ei_nn + + group adapter { + + group pull_request { + + /** + * @desc Check that the IUT sends a PullRequest for vessels with discovery based on sea basin + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + /*var bitstring bt := encvalue( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))); + log("bt= ", oct2char(bit2oct(bt))); + bt := encvalue( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid) + ))); + log("bt= ", oct2char(bit2oct(bt))); + stop;*/ + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + vesselService + ) + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_01 + + /** + * @desc Check that the IUT sends a PullRequest for ActionService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_02 + + /** + * @desc Check that the IUT sends a PullRequest for AnomalyService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_03 + + /** + * @desc Check that the IUT sends a PullRequest for CertificateDocumentService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_04 + + /** + * @desc Check that the IUT sends a PullRequest for IncidentService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_05 + + /** + * @desc Check that the IUT sends a PullRequest for IrregularMigrationIncident when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_06 + + /** + * @desc Check that the IUT sends a PullRequest for LawInfringementIncident when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_law_infringement_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_07 + + /** + * @desc Check that the IUT sends a PullRequest for MeteoOceanographicConditionService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_08 + + /** + * @desc Check that the IUT sends a PullRequest for OrganizationService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_09 + + /** + * @desc Check that the IUT sends a PullRequest for RiskService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_10 + + /** + * @desc Check that the IUT sends a PullRequest for CargoService when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "PullRequest"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, + -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_REQUEST_BV_11 + + } // End of group pull_request + + group pull_request_multicast { + // N/A + } // End of group pull_request_multicast + + group pull_request_discovery { + + /** + * @desc Check that the IUT sends a PullRequest for VesselService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_CISE_PULL_REQUEST_URI, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + vesselService + ), + -, -, + discover, + { *, m_discovery_profile_vessel, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_01 + + /** + * @desc Check that the IUT sends a PullRequest for ActionService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + actionService + ), + -, -, + discover, + { *, mw_discovery_profile_action, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_02 + + /** + * @desc Check that the IUT sends a PullRequest for AnomalyService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + anomalyService + ), + -, -, + discover, + { *, mw_discovery_profile_anomaly, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_03 + + /** + * @desc Check that the IUT sends a PullRequest for CertificateDocumentService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + certificateDocumentService + ), + -, -, + discover, + { *, mw_discovery_profile_certificate_document, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_04 + + /** + * @desc Check that the IUT sends a PullRequest for IncidentService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + incidentService + ), + -, -, + discover, + { *, mw_discovery_profile_incident, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_05 + + /** + * @desc Check that the IUT sends a PullRequest for IrregularMigrationIncident discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + irregularMigrationIncidentService + ), + -, -, + discover, + { *, mw_discovery_profile_irregular_migration_incident, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_06 + + /** + * @desc Check that the IUT sends a PullRequest for LawInfringementIncident discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_law_infringement_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + lawInfringementIncidentService + ), + -, -, + discover, + { *, mw_discovery_profile_law_infringement_incident, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_07 + + /** + * @desc Check that the IUT sends a PullRequest for MeteoOceanographicConditionService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + meteoOceanographicConditionService + ), + -, -, + discover, + { *, mw_discovery_profile_meteo, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_08 + + /** + * @desc Check that the IUT sends a PullRequest for OrganizationService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + organizationService + ), + -, -, + discover, + { *, mw_discovery_profile_organization, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_09 + + /** + * @desc Check that the IUT sends a PullRequest for RiskService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + riskService + ), + -, -, + discover, + { *, mw_discovery_profile_risk, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_10 + + /** + * @desc Check that the IUT sends a PullRequest for CargoService discovery when triggered + */ + testcase TC_CDM_ADAPTOR_PULL_DISC_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Dicovery"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + cargoService + ), + -, -, + discover, + { *, mw_discovery_profile_cargo, * } + )))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_PULL_DISC_BV_11 + + } // End of group pull_request_discovery + + group subscribe_create { + + /** + * @desc Check that the IUT sends a subscription for VesselService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + vesselService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_01 + + /** + * @desc Check that the IUT sends a subscription for ActionService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + actionService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_02 + + /** + * @desc Check that the IUT sends a subscription for AnomalyService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + anomalyService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_03 + + /** + * @desc Check that the IUT sends a subscription for CertificateDocumentService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + certificateDocumentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_04 + + /** + * @desc Check that the IUT sends a subscription for IncidentService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + incidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_05 + + /** + * @desc Check that the IUT sends a subscription for IrregularMigrationIncident when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + irregularMigrationIncidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_06 + + /** + * @desc Check that the IUT sends a subscription for LawInfringementIncident when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_law_infringement_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + lawInfringementIncidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_07 + + /** + * @desc Check that the IUT sends a subscription for MeteoOceanographicConditionService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + meteoOceanographicConditionService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_08 + + /** + * @desc Check that the IUT sends a subscription for OrganizationService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + organizationService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_09 + + /** + * @desc Check that the IUT sends a subscription for RiskService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + riskService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_10 + + /** + * @desc Check that the IUT sends a subscription for CargoService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Suscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + cargoService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_BV_11 + + } // End of group subscribe_create + + group subscribe_loockup { + + /** + * @desc Check that the IUT sends a request of subcribers list for VesselService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + vesselService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_01 + + /** + * @desc Check that the IUT sends a request of subcribers list for ActionService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + actionService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_02 + + /** + * @desc Check that the IUT sends a request of subcribers list for AnomalyService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + anomalyService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_03 + + /** + * @desc Check that the IUT sends a request of subcribers list for CertificateDocumentService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + certificateDocumentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_04 + + /** + * @desc Check that the IUT sends a request of subcribers list for IncidentService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + incidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_05 + + /** + * @desc Check that the IUT sends a request of subcribers list for IrregularMigrationIncident when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + irregularMigrationIncidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_06 + + /** + * @desc Check that the IUT sends a request of subcribers list for LawInfringementIncident when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_law_infringement_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + lawInfringementIncidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_07 + + /** + * @desc Check that the IUT sends a request of subcribers list for MeteoOceanographicConditionService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + meteoOceanographicConditionService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_08 + + /** + * @desc Check that the IUT sends a request of subcribers list for OrganizationService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + organizationService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_09 + + /** + * @desc Check that the IUT sends a request of subcribers list for RiskService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + riskService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_10 + + /** + * @desc Check that the IUT sends a request of subcribers list for CargoService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "GetSubscribers"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + cargoService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_LOOK_BV_11 + + } // End of group subscribe_loockup + + group subscribe_deletion { + + /** + * @desc Check that the IUT sends a request to delete subscription for for VesselService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + vesselService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_01 + + /** + * @desc Check that the IUT sends a request to delete subscription for ActionService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + actionService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_02 + + /** + * @desc Check that the IUT sends a request to delete subscription for AnomalyService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + anomalyService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_03 + + /** + * @desc Check that the IUT sends a request to delete subscription for CertificateDocumentService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + certificateDocumentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_04 + + /** + * @desc Check that the IUT sends a request to delete subscription for IncidentService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + incidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_05 + + /** + * @desc Check that the IUT sends a request to delete subscription for IrregularMigrationIncident when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + irregularMigrationIncidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_06 + + /** + * @desc Check that the IUT sends a request to delete subscription for LawInfringementIncident when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_law_infringement_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + lawInfringementIncidentService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_07 + + /** + * @desc Check that the IUT sends a request to delete subscription for MeteoOceanographicConditionService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + meteoOceanographicConditionService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_08 + + /** + * @desc Check that the IUT sends a request to delete subscription for OrganizationService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + organizationService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_09 + + /** + * @desc Check that the IUT sends a request to delete subscription for RiskService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + riskService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_10 + + /** + * @desc Check that the IUT sends a request to delete subscription for CargoService when triggered + */ + testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_message_type := "Unsubscribe"; + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_ut_trigger( + valueof( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, v_message_type, + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid) + ))) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + // Postamble + f_cf_05_down(); + } + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + v_created_date_time, + v_message_id, + v_priority, + mw_service( + -, -, -, -, -, -, + cargoService + ), + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability( + mw_subscription_capability + ))))))) -> value v_request { + var Headers v_headers; + var PullRequest_1 v_pull_request := v_request.request.body.xml_body.msg.pull_request; + + tc_ac.stop; + + // TODO Verify signature + if (not(f_verify_sign_pull_request(v_request.request.body.xml_body, ""))) { + log("*** " & testcasename() & ": FAIL: Signature not verified ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + success + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + v_pull_request.sender_, + {}, + success, + -, -, + v_context_id, + v_pull_request.correlationID, + false + ))), + v_headers + ))); + log("*** " & testcasename() & ": PASS: IUT successfully sends PullRequest ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + } + [] httpPort_notif.receive { + var Headers v_headers; + + tc_ac.stop; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + + log("*** " & testcasename() & ": FAIL: IUT sends an unexpected message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_SUB_DELETE_BV_11 + + } // End of group subscribe_deletion + + group notify { + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for VesselService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_01_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_vessel, + m_recipient_provider_vessel, + m_entity_payload_vessel + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_01_01 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with an error code response when receiving a Push for notification for an unknown subscription for VesselService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_01_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + f_generate_uuid(), + f_generate_uuid(), + m_sender_consumer_vessel, + m_recipient_provider_vessel, + -, + badRequest + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_01_02 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for ActionService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_action, + m_recipient_provider_action, + m_entity_payload_action_basic + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_02 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for AnomalyService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + m_entity_payload_anomaly + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_03 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for CertificateDocumentService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + m_entity_payload_certificate_document + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_04 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for IncidentService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_incident, + m_recipient_provider_incident, + m_entity_payload_incident + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_05 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for IrregularMigrationIncident + */ + testcase TC_CDM_ADAPTOR_NOT_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + m_entity_payload_irregular_migration_incident + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_06 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for LawInfringementIncident + */ + testcase TC_CDM_ADAPTOR_NOT_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + m_entity_payload_law_infringement_incident + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_07 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for MeteoOceanographicConditionService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_meteo, + m_recipient_provider_meteo, + m_entity_payload_meteo + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_08 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for OrganizationService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_organization, + m_recipient_provider_organization, + m_entity_payload_organization + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_09 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for RiskService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_risk, + m_recipient_provider_risk, + m_entity_payload_risk + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_10 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response when receiving a Push for notification for CargoService + */ + testcase TC_CDM_ADAPTOR_NOT_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + var PullRequest_1 v_pull_request; + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_subscription( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Subscribe", + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Test Body + f_process_push_await_ack_response( + v_pull_request.correlationID, + v_pull_request.contextID, + m_sender_consumer_cargo, + m_recipient_provider_cargo, + m_entity_payload_cargo + ); + + // Postamble + f_trigger_subscription_deletion( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "Unsubscribe", + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + ))); + f_cf_05_down(); + } // End of testcase TC_CDM_ADAPTOR_NOT_BV_11 + + } // End of group notify + + group feedback { + + /** + * @desc Check that the IUT sends a Feedback for VesselService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_vessel(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_vessel, + m_recipient_provider_vessel, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_vessel + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_01 + + /** + * @desc Check that the IUT sends a Feedback for ActionService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ACTION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ACTION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_action(PX_UT_ACTION_TYPE, PX_UT_ACTION_IDINTIFICATION_NUMBER, PX_UT_ACTION_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_action, + m_recipient_provider_action, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_action_basic + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_02 + + /** + * @desc Check that the IUT sends a Feedback for AnomalyService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ANOMALY_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ANOMALY_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_anomaly(PX_UT_ANOMALY_TYPE, PX_UT_ANOMALY_IDINTIFICATION_NUMBER, PX_UT_ANOMALY_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_anomaly, + m_recipient_provider_anomaly, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_anomaly + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_03 + + /** + * @desc Check that the IUT sends a Feedback for CertificateDocumentService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_certificate_document, + m_recipient_provider_certificate_document, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_certificate_document + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_04 + + /** + * @desc Check that the IUT sends a Feedback for IncidentService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_certificate_document_type(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_incident, + m_recipient_provider_incident, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_incident + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_05 + + /** + * @desc Check that the IUT sends a Feedback for IrregularMigrationIncident when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_irregular_migration_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_irregular_migration_incident, + m_recipient_provider_irregular_migration_incident, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_irregular_migration_incident + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_06 + + /** + * @desc Check that the IUT sends a Feedback for LawInfringementIncident when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_law_infringement_incident(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_law_infringement_incident, + m_recipient_provider_law_infringement_incident, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_law_infringement_incident + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_07 + + /** + * @desc Check that the IUT sends a Feedback for MeteoOceanographicConditionService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_METEO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_METEO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_meteo_oceanographic_condition(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_meteo, + m_recipient_provider_meteo, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_meteo + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_08 + + /** + * @desc Check that the IUT sends a Feedback for OrganizationService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_09() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_ORGANIZATION_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_ORGANIZATION_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_organization(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_organization, + m_recipient_provider_organization, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_organization + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_09 + + /** + * @desc Check that the IUT sends a Feedback for RiskService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_10() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_RISK_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_RISK_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_risk(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_risk, + m_recipient_provider_risk, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_risk + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_10 + + /** + * @desc Check that the IUT sends a Feedback for CargoService when triggered + */ + testcase TC_CDM_ADAPTOR_FEEDBACK_BV_11() runs on CiseComponent system CiseTestAdapter { + // Local variables + var PullRequest_1 v_pull_request; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var PriorityType v_priority := high; + var charstring v_sender_id := f_generate_uuid(); + var charstring v_recipient_id := f_generate_uuid(); + var charstring v_uuid := f_generate_uuid(); + + // Test control + if (not(PICS_IUT_CDM_ADAPTOR) or not(PICS_CDM_PULL) or not(PICS_CDM_CARGO_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_ADAPTOR and PICS_CDM_PULL and PICS_CDM_CARGO_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_05_up(); + + // Test adapter configuration + + // Preamble + if (f_trigger_pull_request( + m_ut_trigger( + v_message_id, v_context_id, v_correlation_id, v_created_date_time, f_priorityType2char(v_priority), v_sender_id, v_recipient_id, "PullRequest", + m_ut_description_cargo(PX_UT_VESSEL_TYPE, PX_UT_VESSEL_IDINTIFICATION_NUMBER, PX_UT_VESSEL_IDINTIFIER_UUID, v_uuid + )), + v_pull_request + ) == false) { + log("*** " & testcasename() & ": INCONC: Upper Tester failure ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); // inconc + } else { + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + // Test Body + f_process_feedback_await_ack( + m_sender_consumer_cargo, + m_recipient_provider_cargo, + -, + m_string_derivations_string(v_pull_request.messageID), + m_entity_payload_cargo + ); + + // Postamble + f_cf_05_down(); + + } // End of testcase TC_CDM_ADAPTOR_FEEDBACK_BV_11 + + } // End of group feedback + + } // End of group adapter + + group security { + + /** + * @desc Check that the IUT responds with an HTTP 200 OK Acknowledgment with Success when it receives a sign message + */ + testcase TC_CDM_NODE_EI_NA_SEC_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var Headers v_headers; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] + httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully received sync Ack ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BV_01 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted signature + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, true, -, -, -, -, -, -, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + authenticationError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_01 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message with a corrupted certificate + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, -, true, -, -, -, -, -, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + authenticationError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_02 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with corrupted digest + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_03() runs on CiseComponent system CiseTestAdapter { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, -, -, true, -, -, -, -, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + authenticationError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_03 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported signature algorithm + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_04() runs on CiseComponent system CiseTestAdapter { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, -, -, -, true, -, -, -, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + authenticationError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_04 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an unsupported digest signature algorithm + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_05() runs on CiseComponent system CiseTestAdapter { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, -, -, -, true, -, -, -, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + authenticationError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_05 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with an expired certificate + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_06() runs on CiseComponent system CiseTestAdapter { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, -, -, -, -, -, true, -, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_201_created( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + badRequest, // Expecting securityError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_06 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment with InvalidSignature when it receives a message sign with a certificate valid in the future + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_07() runs on CiseComponent system CiseTestAdapter { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + v_result := f_sign_pull_request_bo(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, -, -, -, -, -, -, true, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_201_created( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + badRequest, // Expecting securityError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_07 + + /** + * @desc Check that the IUT responds with an HTPP 200 OK Acknowledgment response with InvalidSignature when it receives a message not signed + */ + testcase TC_CDM_NODE_EI_NA_SEC_BO_08() runs on CiseComponent system CiseTestAdapter { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request, v_response; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_NODE_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_NODE_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + m_service( // Sender + { string := PX_CISE_SENDER_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + consumer, + online, + vesselService + ), + {}, + request, + {}, + -, -, + f_generate_uuid(), // ContextID + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + m_service( // Recipient + { string := PX_CISE_RECIPIENT_SERVICE_ID }, + pull, + -, + PX_CISE_SEA_BASSIN, + provider, + online, + vesselService + ), + m_core_entity_payload_derivations_payload(m_entity_payload_vessel), + -, + 1000 // ResponseTimeOut + )); + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request + ))))); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + badRequest, // Expecting securityError, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("*** " & testcasename() & ": PASS: IUT successfully rejects corruptedt message ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_NODE_EI_NA_SEC_BO_08 + + } // End of group security + + group cise_simu { + + /** + * @desc Simulate peer adapter of CISE node IUT for PullRequest/Response + */ + testcase TC_CDM_CISE_SIMU_EI_NA_PULL_BV_01() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var Headers v_headers; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_created_date_time, 0, lengthof(v_created_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullResponse_1 v_pull_response; + var octetstring v_pull_response_signed; + var charstring v_pull_response_canonicalized; + var charstring v_pull_response_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_CISE_SIMU_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_CISE_SIMU_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_wait.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + -, -, -, -, -, -, + request + )))))) -> value v_request { + tc_wait.stop; + + // Skip Securty + + // Send the response to finalyze the transaction + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_request.request.body.xml_body.msg.pull_request.creationDateTime, + v_request.request.body.xml_body.msg.pull_request.messageID, + v_request.request.body.xml_body.msg.pull_request.priority, + {}, + success, + -, + "Message delivered" + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + var XmlEntityPayload v_payload; + if (ischosen(v_request.request.body.xml_body.msg.pull_request)) { + if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.vessel)) { + if (v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.vessel.iMONumber != PX_VESSEL_UNKNOWN_IMO_NUMBER) { + v_payload := valueof( + m_entity_payload_vessel( + -, -, -, -, -, -, -, + m_vessel( + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.vessel.iMONumber // TODO Add more info + ))); + } else { // Empty payload + v_payload := valueof(m_entity_payload(nonClassified, green, nonSpecified)); + } + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.action_)) { + v_payload := valueof( + m_entity_payload_action_full( + -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.action_ + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.anomaly)) { + v_payload := valueof( + m_entity_payload_anomaly( + -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.anomaly + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.certificateDocument)) { + v_payload := valueof( + m_entity_payload_certificate_document( + -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.certificateDocument + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.incident)) { + v_payload := valueof( + m_entity_payload_incident( + -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.incident + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.irregularMigrationIncident)) { + v_payload := valueof( + m_entity_payload_irregular_migration_incident( + -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.irregularMigrationIncident + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.lawInfringementIncident)) { + v_payload := valueof( + m_entity_payload_law_infringement_incident( + -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.lawInfringementIncident + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.meteoOceanographicCondition)) { + v_payload := valueof( + m_entity_payload_meteo( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.meteoOceanographicCondition + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.organization)) { + v_payload := valueof( + m_entity_payload_organization( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.organization + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.risk)) { + v_payload := valueof( + m_entity_payload_risk( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.risk + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.cargo)) { + v_payload := valueof( + m_entity_payload_cargo( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.cargo + )); + } else { + log("*** " & testcasename() & ": ERROR: Unsupported entity payload ***"); + repeat; + } + } + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + v_pull_response := valueof( + m_pull_response( + v_created_date_time, + v_message_id, + v_request.request.body.xml_body.msg.pull_request.priority, + v_request.request.body.xml_body.msg.pull_request.recipient, + {}, + success, + -, + -, + v_request.request.body.xml_body.msg.pull_request.contextID, + v_request.request.body.xml_body.msg.pull_request.correlationID, + false, + v_request.request.body.xml_body.msg.pull_request.sender_, + m_core_entity_payload_derivations_payload( + v_payload + ))); + + v_result := f_sign_pull_response(v_pull_response, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_response_signed, v_pull_response_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": ERROR: Signature processing failed ***"); + tc_wait.start; + repeat; + } + v_pull_response_signed_str := oct2char(v_pull_response_signed); + log("v_pull_response_signed_str: ", v_pull_response_signed_str); + + httpPort.send( + m_http_request( + m_http_request_post( + "/messages?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_response( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_response, + v_pull_response_signed_str // If raw is specified, the codec does not encode the message + ))))); + + log("*** " & testcasename() & ": INFO: Sent PullResponse to the IUT ***"); + tc_wait.start; + repeat; + } + // [] httpPort_notif.receive( + // mw_http_request( + // mw_http_request_post( + // ?, + // ?, + // mw_http_message_body_xml( + // mw_xml_body_pull_request( + // mw_pull_request( + // -, -, -, -, -, -, + // discovery, + // )))))) -> value v_request { + // tc_wait.stop; + + // // Skip Securty + + // // Send the response to finalyze the transaction + // f_init_default_headers_list(-, -, v_headers); + // httpPort_notif.send( + // m_http_response( + // m_http_response_ok( + // m_http_message_body_xml( + // m_xml_body_acknowledgement( + // m_acknowledgement( + // v_request.request.body.xml_body.msg.pull_request.creationDateTime, + // v_request.request.body.xml_body.msg.pull_request.messageID, + // v_request.request.body.xml_body.msg.pull_request.priority, + // {}, + // success, + // -, + // "Message delivered" + // ))), + // v_headers + // ))); + + // // Message processing + // f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + // var Service v_discovery; + // if (ischosen(v_request.request.body.xml_body.msg.pull_request)) { + // if (ispresent(v_request.request.body.xml_body.msg.pull_request.discoveryProfiles_list)) { + // v_discovery := valueof( + // { + // m_discovered_profile_vessel( + // v_request.request.body.xml_body.msg.pull_request.discoveryProfiles_list[0].serviceID, + // v_request.request.body.xml_body.msg.pull_request.discoveryProfiles_list[0].serviceOperation, + // v_request.request.body.xml_body.msg.pull_request.discoveryProfiles_list[0].dataFreshness, + // v_request.request.body.xml_body.msg.pull_request.discoveryProfiles_list[0].seaBasin + // ) + // } + // ); + // } + // // Send PullResponse + // f_init_default_headers_list(-, -, v_headers); + // v_pull_response := valueof( + // m_pull_response( + // v_created_date_time, + // v_message_id, + // v_request.request.body.xml_body.msg.pull_request.priority, + // v_request.request.body.xml_body.msg.pull_request.recipient, + // {}, + // success, + // -, + // -, + // v_request.request.body.xml_body.msg.pull_request.contextID, + // v_request.request.body.xml_body.msg.pull_request.correlationID, + // false, + // v_request.request.body.xml_body.msg.pull_request.sender_ + // )); + + // v_result := f_sign_pull_response(v_pull_response, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_response_signed, v_pull_response_canonicalized); + // if (v_result != 0) { + // log("*** " & testcasename() & ": ERROR: Signature processing failed ***"); + // tc_wait.start; + // repeat; + // } + // v_pull_response_signed_str := oct2char(v_pull_response_signed); + // log("v_pull_response_signed_str: ", v_pull_response_signed_str); + + // httpPort.send( + // m_http_request( + // m_http_request_post( + // "/messages?messageId=" & v_message_id, + // v_headers, + // m_http_message_body_xml( + // m_xml_body_pull_response( // As the message was signed, we need to send as raw XML to prevent codec call + // v_pull_response, + // v_pull_response_signed_str // If raw is specified, the codec does not encode the message + // ))))); + + // log("*** " & testcasename() & ": INFO: Sent PullResponse to the IUT ***"); + // tc_wait.start; + // repeat; + // } + [] httpPort_notif.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + -, -, -, -, + success + )))))) { + tc_wait.start; + log("*** " & testcasename() & ": INFO: Received PullResponse 200 OK Ack from IUT ***"); + repeat; + } + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + -, -, -, -, + success + )))))) { + tc_wait.start; + log("*** " & testcasename() & ": INFO: Received PullResponse 202 Accepted Ack from IUT ***"); + repeat; + } + [] httpPort.receive(?) -> value v_request { + tc_wait.stop; + log("*** " & testcasename() & ": DEBUG: Unexpected message received on httpPort ***"); + log("HttpMessage: ", v_request) + tc_wait.start; + repeat; + } + [] httpPort_notif.receive(?) -> value v_request { + tc_wait.stop; + log("*** " & testcasename() & ": DEBUG: Unexpected message received on httpPort_notif ***"); + log("HttpMessage: ", v_request) + tc_wait.start; + repeat; + } + [] tc_wait.timeout { + tc_wait.start; + repeat; + } + } // End of 'alt' statement + log("*** " & testcasename() & ": PASS: No more message received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_CISE_SIMU_EI_NA_PULL_BV_01 + + /** + * @desc Simulate peer adapter of CISE node IUT for PullRequest/Response plus Feedback message + */ + testcase TC_CDM_CISE_SIMU_EI_NA_PULL_BV_02() runs on CiseComponent system CiseTestAdapter { + // Local variables + var HttpMessage v_request; + var Headers v_headers; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_created_date_time, 0, lengthof(v_created_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_correlation_id := f_generate_uuid(); + var PullResponse_1 v_pull_response; + var octetstring v_pull_response_signed; + var charstring v_pull_response_canonicalized; + var charstring v_pull_response_signed_str; + var integer v_result; + + // Test control + if (not(PICS_IUT_CDM_CISE_SIMU_EI_NA) or not(PICS_CDM_PULL) or not(PICS_CDM_VESSEL_SERVICE)) { + log("*** " & testcasename() & ": PICS_IUT_CDM_CISE_SIMU_EI_NA and PICS_CDM_PULL and PICS_CDM_VESSEL_SERVICE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(); + + // Test adapter configuration + + // Preamble + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + + // Test Body + tc_wait.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + -, -, -, -, -, -, + request + )))))) -> value v_request { + tc_wait.stop; + + // Skip Securty + + // Send the response to finalyze the transaction + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_request.request.body.xml_body.msg.pull_request.creationDateTime, + v_request.request.body.xml_body.msg.pull_request.messageID, + v_request.request.body.xml_body.msg.pull_request.priority, + {}, + success, + -, + "Message delivered" + ))), + v_headers + ))); + + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + var XmlEntityPayload v_payload; + if (ischosen(v_request.request.body.xml_body.msg.pull_request)) { + if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.vessel)) { + if (v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.vessel.iMONumber != PX_VESSEL_UNKNOWN_IMO_NUMBER) { + v_payload := valueof( + m_entity_payload_vessel( + -, -, -, -, -, -, -, + m_vessel( + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.vessel.iMONumber // TODO Add more info + ))); + } else { // Empty payload + v_payload := valueof(m_entity_payload(nonClassified, green, nonSpecified)); + } + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.action_)) { + v_payload := valueof( + m_entity_payload_action_full( + -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.action_ + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.anomaly)) { + v_payload := valueof( + m_entity_payload_anomaly( + -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.anomaly + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.certificateDocument)) { + v_payload := valueof( + m_entity_payload_certificate_document( + -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.certificateDocument + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.incident)) { + v_payload := valueof( + m_entity_payload_incident( + -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.incident + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.irregularMigrationIncident)) { + v_payload := valueof( + m_entity_payload_irregular_migration_incident( + -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.irregularMigrationIncident + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.lawInfringementIncident)) { + v_payload := valueof( + m_entity_payload_law_infringement_incident( + -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.lawInfringementIncident + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.meteoOceanographicCondition)) { + v_payload := valueof( + m_entity_payload_meteo( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.meteoOceanographicCondition + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.organization)) { + v_payload := valueof( + m_entity_payload_organization( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.organization + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.risk)) { + v_payload := valueof( + m_entity_payload_risk( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.risk + )); + } else if (ispresent(v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.cargo)) { + v_payload := valueof( + m_entity_payload_cargo( + -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, + v_request.request.body.xml_body.msg.pull_request.payload.xmlEntityPayload.cargo + )); + } else { + log("*** " & testcasename() & ": ERROR: Unsupported entity payload ***"); + repeat; + } + } + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + v_pull_response := valueof( + m_pull_response( + v_created_date_time, + v_message_id, + v_request.request.body.xml_body.msg.pull_request.priority, + v_request.request.body.xml_body.msg.pull_request.recipient, + {}, + success, + -, + -, + v_request.request.body.xml_body.msg.pull_request.contextID, + v_request.request.body.xml_body.msg.pull_request.correlationID, + false, + v_request.request.body.xml_body.msg.pull_request.sender_, + m_core_entity_payload_derivations_payload( + v_payload + ))); + + v_result := f_sign_pull_response(v_pull_response, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_response_signed, v_pull_response_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": ERROR: Signature processing failed ***"); + tc_wait.start; + repeat; + } + v_pull_response_signed_str := oct2char(v_pull_response_signed); + log("v_pull_response_signed_str: ", v_pull_response_signed_str); + + httpPort.send( + m_http_request( + m_http_request_post( + "/messages?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_response( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_response, + v_pull_response_signed_str // If raw is specified, the codec does not encode the message + ))))); + + log("*** " & testcasename() & ": INFO: Sent PullResponse to the IUT ***"); + + // Prepare feedback + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + + v_created_date_time := f_get_current_date_time(); + v_message_id := f_generate_uuid(); + var octetstring v_feedback_signed; + var charstring v_feedback_canonicalized; + var charstring v_feedback_signed_str; + var Feedback_1 v_feedback := valueof( + m_feedback( + v_created_date_time, + v_message_id, + v_request.request.body.xml_body.msg.pull_request.priority, + v_request.request.body.xml_body.msg.pull_request.recipient, + {}, + info, + m_string_derivations_string(v_message_id), + -, + v_request.request.body.xml_body.msg.pull_request.contextID, + v_request.request.body.xml_body.msg.pull_request.correlationID, + false, + v_request.request.body.xml_body.msg.pull_request.sender_, + m_core_entity_payload_derivations_payload( + v_payload + ))); + v_result := f_sign_feedback(v_feedback, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_feedback_signed, v_feedback_canonicalized); + if (v_result != 0) { + log("*** " & testcasename() & ": INCONC: Signature processing failed ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); + } + v_feedback_signed_str := oct2char(v_feedback_signed); + log("v_feedback_signed_str: ", v_feedback_signed_str); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + "/messages?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_response( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_response, + v_pull_response_signed_str // If raw is specified, the codec does not encode the message + ))))); + + log("*** " & testcasename() & ": INFO: Sent Feedbask to the IUT ***"); + + tc_wait.start; + repeat; + } + [] httpPort_notif.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + -, -, -, -, + success + )))))) { + tc_wait.start; + log("*** " & testcasename() & ": INFO: Received PullResponse 200 OK Ack from IUT ***"); + repeat; + } + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + -, -, -, -, + success + )))))) { + tc_wait.start; + log("*** " & testcasename() & ": INFO: Received PullResponse 202 Accepted Ack from IUT ***"); + repeat; + } + [] httpPort.receive(?) -> value v_request { + tc_wait.stop; + log("*** " & testcasename() & ": DEBUG: Unexpected message received on httpPort ***"); + log("HttpMessage: ", v_request) + tc_wait.start; + repeat; + } + [] httpPort_notif.receive(?) -> value v_request { + tc_wait.stop; + log("*** " & testcasename() & ": DEBUG: Unexpected message received on httpPort_notif ***"); + log("HttpMessage: ", v_request) + tc_wait.start; + repeat; + } + [] tc_wait.timeout { + tc_wait.start; + repeat; + } + } // End of 'alt' statement + log("*** " & testcasename() & ": PASS: No more message received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + + // Postamble + f_cf_02_down(); + + } // End of testcase TC_CDM_CISE_SIMU_EI_NA_PULL_BV_02 + + } // End of group cise_simu + +} // End of module AtsCise_TestCases diff --git a/ttcn/AtsCise/AtsCise_TestControl.ttcn b/ttcn/AtsCise/AtsCise_TestControl.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..43fa749f16f457d20aa8abf23243d31bb97e9222 --- /dev/null +++ b/ttcn/AtsCise/AtsCise_TestControl.ttcn @@ -0,0 +1,479 @@ +module AtsCise_TestControl { + + // LibCise + import from LibCise_Pics all; + + // AtsCise + import from AtsCise_TestCases all; + + control { + if (PICS_IUT_CDM_NODE_EI_NA) { + + if (PICS_CDM_PULL) { + + if (PICS_CDM_VESSEL_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_01()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_02()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_03()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_01_04()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_01()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_02()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_03()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_04()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_05()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_01_06()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_01()); + + execute(TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_01()); + + execute(TC_CDM_NODE_EI_NA_ASYNC_ACK_BV_01()); + } + + if (PICS_CDM_ACTION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_01()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_02_02()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_01()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_02_02()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_02()); + + execute(TC_CDM_NODE_EI_NA_MULTI_PULL_REQ_BV_02()); + } + + if (PICS_CDM_ANOMALY_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_03()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_03()); + } + + if (PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_04()); + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BO_04()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_04()); + } + + if (PICS_CDM_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_05()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_05()); + } + + if (PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_06()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_06()); + } + + if (PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_07()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_07()); + } + + if (PICS_CDM_METEO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_08()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_08()); + } + + if (PICS_CDM_ORGANIZATION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_09()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_09()); + } + + if (PICS_CDM_RISK_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_10()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_10()); + } + + if (PICS_CDM_CARGO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PULL_REQUEST_BV_11()); + + execute(TC_CDM_NODE_EI_NA_PULL_DISC_BV_11()); + } + + execute(TC_CDM_NODE_EI_NA_SEC_BV_01()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_01()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_02()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_04()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_05()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_06()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_07()); + execute(TC_CDM_NODE_EI_NA_SEC_BO_08()); + + } // PICS_CDM_PULL + + if (PICS_CDM_SUBSCRIBE) { + + if (PICS_CDM_VESSEL_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_01()); + execute(TC_CDM_NODE_EI_NA_SUB_BO_01()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_01()); + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_01_02()); + + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_01()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_01_02()); + } + + if (PICS_CDM_ACTION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_02()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_02()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_02()); + } + + if (PICS_CDM_ANOMALY_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_03()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_03()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_03()); + } + + if (PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_04()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_04()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_04()); + } + + if (PICS_CDM_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_05()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_05()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_05()); + } + + if (PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_06()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_06()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_06()); + } + + if (PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_07()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_07()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_07()); + } + + if (PICS_CDM_METEO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_08()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_08()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_08()); + } + + if (PICS_CDM_ORGANIZATION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_09()); + + execute(TC_CDM_NODE_EI_NA_SUB_LOOK_BV_09()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_09()); + } + + if (PICS_CDM_RISK_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_10()); + + execute(TC_CDM_NODE_EI_NA_SUB_BV_10()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_10()); + } + + if (PICS_CDM_CARGO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_SUB_BV_11()); + + execute(TC_CDM_NODE_EI_NA_SUB_BV_11()); + execute(TC_CDM_NODE_EI_NA_SUB_DELETE_BV_11()); + } + + } // PICS_CDM_SUBSCRIBE + + if (PICS_CDM_PUSH) { + + if (PICS_CDM_VESSEL_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_01()); + } + + if (PICS_CDM_ACTION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_02()); + } + + if (PICS_CDM_ANOMALY_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_03()); + } + + if (PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_04()); + } + + if (PICS_CDM_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_05()); + } + + if (PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_06()); + } + + if (PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_07()); + } + + if (PICS_CDM_METEO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_08()); + } + + if (PICS_CDM_ORGANIZATION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_09()); + } + + if (PICS_CDM_RISK_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_10()); + } + + if (PICS_CDM_CARGO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_PUSH_NOT_BV_11()); + } + + } // PICS_CDM_PUSH + + if (PICS_CDM_ACKNOWLEDGEMENT) { + + } // PICS_CDM_ACKNOWLEDGEMENT + + if (PICS_CDM_FEEDBACK) { + + if (PICS_CDM_VESSEL_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_01()); + } + + if (PICS_CDM_ACTION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_02()); + } + + if (PICS_CDM_ANOMALY_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_03()); + } + + if (PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_04()); + } + + if (PICS_CDM_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_05()); + } + + if (PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_06()); + } + + if (PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_07()); + } + + if (PICS_CDM_METEO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_08()); + } + + if (PICS_CDM_ORGANIZATION_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_09()); + } + + if (PICS_CDM_RISK_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_10()); + } + + if (PICS_CDM_CARGO_SERVICE) { + execute(TC_CDM_NODE_EI_NA_FEEDBACK_BV_11()); + } + + } // PICS_CDM_FEEDBACK + + } // PICS_IUT_CDM_NODE_EI_NA + + if (PICS_IUT_CDM_NODE_EI_NN) { + if (PICS_CDM_PULL) { + + if (PICS_CDM_VESSEL_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_01()); + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_02()); + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_01_03()); + + execute(TC_CDM_NODE_EI_NN_SUB_BV_01()); + + execute(TC_CDM_NODE_EI_NN_PUSH_NOT_BV_01()); + + execute(TC_CDM_NODE_EI_NN_FEEDBACK_BV_01()); + } + + if (PICS_CDM_ACTION_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_02()); + } + + if (PICS_CDM_ANOMALY_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_03()); + } + + if (PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_04()); + } + + if (PICS_CDM_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_05()); + + execute(TC_CDM_NODE_EI_NN_SUB_LOOK_BV_01()); + } + + if (PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_06()); + } + + if (PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_07()); + } + + if (PICS_CDM_METEO_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_08()); + + execute(TC_CDM_NODE_EI_NN_DISC_REQ_BV_01()); + } + + if (PICS_CDM_ORGANIZATION_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_09()); + } + + if (PICS_CDM_RISK_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_10()); + + execute(TC_CDM_NODE_EI_NN_SUB_DELETE_BV_01()); + } + + if (PICS_CDM_CARGO_SERVICE) { + execute(TC_CDM_NODE_EI_NN_PULL_REQ_BV_11()); + + execute(TC_CDM_NODE_EI_NN_ASYNC_ACK_BV_01()); + } + } + } // PICS_IUT_CDM_NODE_EI_NN + + if (PICS_IUT_CDM_ADAPTOR) { + + if (PICS_CDM_VESSEL_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_01()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_01()); + execute(TC_CDM_ADAPTOR_SUB_BV_01()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_01()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_01()); + execute(TC_CDM_ADAPTOR_NOT_BV_01_01()); + execute(TC_CDM_ADAPTOR_NOT_BV_01_02()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_01()); + } + + if (PICS_CDM_ACTION_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_02()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_02()); + execute(TC_CDM_ADAPTOR_SUB_BV_02()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_02()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_02()); + execute(TC_CDM_ADAPTOR_NOT_BV_02()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_02()); + } + + if (PICS_CDM_ANOMALY_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_03()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_03()); + execute(TC_CDM_ADAPTOR_SUB_BV_03()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_03()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_03()); + execute(TC_CDM_ADAPTOR_NOT_BV_03()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_03()); + } + + if (PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_04()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_04()); + execute(TC_CDM_ADAPTOR_SUB_BV_04()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_04()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_04()); + execute(TC_CDM_ADAPTOR_NOT_BV_04()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_04()); + } + + if (PICS_CDM_INCIDENT_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_05()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_05()); + execute(TC_CDM_ADAPTOR_SUB_BV_05()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_05()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_05()); + execute(TC_CDM_ADAPTOR_NOT_BV_05()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_05()); + } + + if (PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_06()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_06()); + execute(TC_CDM_ADAPTOR_SUB_BV_06()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_06()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_06()); + execute(TC_CDM_ADAPTOR_NOT_BV_06()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_06()); + } + + if (PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_07()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_07()); + execute(TC_CDM_ADAPTOR_SUB_BV_07()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_07()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_07()); + execute(TC_CDM_ADAPTOR_NOT_BV_07()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_07()); + } + + if (PICS_CDM_METEO_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_08()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_08()); + execute(TC_CDM_ADAPTOR_SUB_BV_08()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_08()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_08()); + execute(TC_CDM_ADAPTOR_NOT_BV_08()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_08()); + } + + if (PICS_CDM_ORGANIZATION_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_09()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_09()); + execute(TC_CDM_ADAPTOR_SUB_BV_09()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_09()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_09()); + execute(TC_CDM_ADAPTOR_NOT_BV_09()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_09()); + } + + if (PICS_CDM_RISK_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_10()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_10()); + execute(TC_CDM_ADAPTOR_SUB_BV_10()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_10()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_10()); + execute(TC_CDM_ADAPTOR_NOT_BV_10()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_10()); + } + + if (PICS_CDM_CARGO_SERVICE) { + execute(TC_CDM_ADAPTOR_PULL_REQUEST_BV_11()); + execute(TC_CDM_ADAPTOR_PULL_DISC_BV_11()); + execute(TC_CDM_ADAPTOR_SUB_BV_11()); + execute(TC_CDM_ADAPTOR_SUB_LOOK_BV_11()); + execute(TC_CDM_ADAPTOR_SUB_DELETE_BV_11()); + execute(TC_CDM_ADAPTOR_NOT_BV_11()); + execute(TC_CDM_ADAPTOR_FEEDBACK_BV_11()); + } + + } // PICS_IUT_CDM_ADAPTOR + + } // End of 'control' statement + +} // End of module AtsCise_TestControl \ No newline at end of file diff --git a/ttcn/AtsCise/module.mk b/ttcn/AtsCise/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..fa98c7ff3e063a3121fb20722d46c639c9b8a4f1 --- /dev/null +++ b/ttcn/AtsCise/module.mk @@ -0,0 +1,31 @@ +suite := AtsCise + +sources := \ + AtsCise_Templates.ttcn \ + AtsCise_TestCases.ttcn \ + AtsCise_TestControl.ttcn + +modules := ../LibCommon \ + ../../titan-test-system-framework/ttcn/LibHelpers \ + ../../titan-test-system-framework/ttcn/LibHttp \ + ../../titan-test-system-framework/ttcn/LibSecurity \ + ../../titan-test-system-framework/ttcn/LibXsd \ + ../../titan-test-system-framework/ttcn/LibJson \ + ../patch_lib_http \ + ../LibCise \ + ../LibCise/LibJrcSimu \ + ../LibCise/LibCdm5 \ + ../../titan-test-system-framework/ccsrc/Framework \ + ../../titan-test-system-framework/ccsrc/loggers \ + ../../titan-test-system-framework/ccsrc/Protocols/Xml \ + ../../titan-test-system-framework/ccsrc/Protocols/Http \ + ../../titan-test-system-framework/ccsrc/Protocols/Tcp \ + ../../titan-test-system-framework/ccsrc/Helpers \ + ../../titan-test-system-framework/ccsrc/security \ + ../../ccsrc/externals \ + ../../ccsrc/Ports/LibHttp \ + ../../ccsrc/Protocols/Http \ + ../../ccsrc/Protocols/Xml \ + ../../ccsrc/Protocols/Json \ + ../modules/titan.TestPorts.Common_Components.Abstract_Socket \ + diff --git a/ttcn/LibCise/LibCdm4/NoTargetNamespace.ttcn b/ttcn/LibCise/LibCdm4/NoTargetNamespace.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d8bcc4fc4facc0d81a3da33bf2dd562cb6d4328c --- /dev/null +++ b/ttcn/LibCise/LibCdm4/NoTargetNamespace.ttcn @@ -0,0 +1,56 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: NoTargetNamespace.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 19:33:22 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - schema4.xsd +// /* xml version = "1.0" encoding = "UTF-8" standalone = "yes" */ +// /* targetnamespace = "NoTargetNamespace" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module NoTargetNamespace { + + +import from XSD all; + + +import from http_www_cise_eu_servicemodel_v1_message all; + + +type Message_derivations Message +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +} +with { + encode "XML"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_authority.ttcn b/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_authority.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..525670d66f8a1e48bd5b6423fa2a0f5951db22ac --- /dev/null +++ b/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_authority.ttcn @@ -0,0 +1,856 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_servicemodel_v1_authority.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 19:33:22 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - authority.xsd +// /* xml version = "1.0" encoding = "UTF-8" standalone = "yes" */ +// /* targetnamespace = "http://www.cise.eu/servicemodel/v1/authority/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_servicemodel_v1_authority { + + +import from XSD all; + + +type Gateway_1 Gateway +with { + variant "element"; +}; + + +type Participant_1 Participant +with { + variant "element"; +}; + + +type ParticipantProfile_1 ParticipantProfile +with { + variant "element"; +}; + + +type PointOfContact_1 PointOfContact +with { + variant "element"; +}; + + +/* Gateway providing the service. This entity provides the information required +for routing the messages between gateways. */ +type record Gateway_1 +{ + /* The unique identifier of the Gateway. */ + String_derivations id optional +} +with { + variant "name as 'Gateway'"; + variant (id) "name as capitalized"; +}; + + +/* The Participant system connect to the EUCISE network. */ +type record Participant_1 +{ + /* Unique identifier of the Participant */ + String_derivations id optional, + /* Name of the Participant */ + String_derivations name optional, + /* Full description of the Participant */ + String_derivations description optional, + /* Unclassified or EURestricted */ + ClassificationLevelType classificationLevel optional, + /* Endpoint Url */ + String_derivations endpointUrl optional, + /* Rest or Soap */ + EndpointType endpointType optional, + /* List of the services provided by the Participant */ + record of String_derivations providedServicesIds_list, + /* Gateway where the Legacy System is connected to */ + Gateway_1 gateway optional, + /* The Authority that owns the Legacy System */ + String_derivations owner optional, + /* Point of contact information */ + PointOfContact_1 pointOfContact optional, + /* The sea basin(s) covered by the participant. */ + record of SeaBasinType areasOfInterest_list, + /* One of the user communities participating to CISE. This field is related +to the community of the provider of the service. */ + record of CommunityType communities_list, + /* The functions covered by the participant providing the service. --Example +"Monitoring of security of ships" */ + record of FunctionType functions_list, + /* The Country of the provider of the service. The code ISO-3166-1 alpha-2 +is used: 2 character country code. --Example "FR" for France. */ + CountryType memberState optional +} +with { + variant "name as 'Participant'"; + variant (id) "name as capitalized"; + variant (name) "name as capitalized"; + variant (description) "name as capitalized"; + variant (classificationLevel) "name as capitalized"; + variant (endpointUrl) "name as capitalized"; + variant (endpointType) "name as capitalized"; + variant (providedServicesIds_list) "untagged"; + variant (providedServicesIds_list[-]) "name as 'ProvidedServicesIds'"; + variant (gateway) "name as capitalized"; + variant (owner) "name as capitalized"; + variant (pointOfContact) "name as capitalized"; + variant (areasOfInterest_list) "untagged"; + variant (areasOfInterest_list[-]) "name as 'AreasOfInterest'"; + variant (communities_list) "untagged"; + variant (communities_list[-]) "name as 'Communities'"; + variant (functions_list) "untagged"; + variant (functions_list[-]) "name as 'Functions'"; + variant (memberState) "name as capitalized"; +}; + + +/* Point of contact of a Participant. */ +type record PointOfContact_1 +{ + /* Name of the Point of Contact */ + String_derivations name optional, + /* Surname of the Point of Contact */ + String_derivations surname optional, + /* Address of the Point of Contact */ + String_derivations address_ optional, + /* Phone Number of the Point of Contact */ + String_derivations telephone optional, + /* Email of the Point of Contact */ + String_derivations email optional +} +with { + variant "name as 'PointOfContact'"; + variant (name) "name as capitalized"; + variant (surname) "name as capitalized"; + variant (address_) "name as 'Address'"; + variant (telephone) "name as capitalized"; + variant (email) "name as capitalized"; +}; + + +/* The profile of a Participant. */ +type record ParticipantProfile_1 +{ + /* Unique identifier of the Participant Profile */ + String_derivations id optional, + /* The country of the Participant */ + CountryType country optional, + /* Unclassified or EURestricted */ + ClassificationLevelType classificationLevel optional, + /* One of the User Communities */ + CommunityType community optional, + /* One of the Functionalities */ + FunctionType function_ optional, + /* One of the Areas of Interest */ + SeaBasinType seaBasin optional +} +with { + variant "name as 'ParticipantProfile'"; + variant (id) "name as capitalized"; + variant (country) "name as capitalized"; + variant (classificationLevel) "name as capitalized"; + variant (community) "name as capitalized"; + variant (function_) "name as 'Function'"; + variant (seaBasin) "name as capitalized"; +}; + + +/* Enumeration with the classification levels for the transferred data. */ +type enumerated ClassificationLevelType +{ + eURestricted, + unclassified +} +with { + variant "text 'eURestricted' as capitalized"; + variant "text 'unclassified' as capitalized"; +}; + + +/* Enumeration with the list of available CISE service interface protocols. */ +type enumerated EndpointType +{ + rEST, + sOAP +} +with { + variant "text 'rEST' as capitalized"; + variant "text 'sOAP' as capitalized"; +}; + + +/*

+Enumeration of the different European Sea Basins.||This enumeration comes +from http://ec.europa.eu/maritimeaffairs/atlas/seabasins/index_en.htm */ +type enumerated SeaBasinType +{ + arcticOcean, + atlantic, + balticSea, + blackSea, + mediterranean, + nonSpecified, + northSea, + outermostRegions +} +with { + variant "text 'arcticOcean' as capitalized"; + variant "text 'atlantic' as capitalized"; + variant "text 'balticSea' as capitalized"; + variant "text 'blackSea' as capitalized"; + variant "text 'mediterranean' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'northSea' as capitalized"; + variant "text 'outermostRegions' as capitalized"; +}; + + +type enumerated CommunityType +{ + borderControl, + customs, + defenceMonitoring, + fisheriesControl, + generalLawEnforcement, + marineEnvironment, + maritimeSafetySecurity, + nonSpecified, + other +} +with { + variant "text 'borderControl' as capitalized"; + variant "text 'customs' as capitalized"; + variant "text 'defenceMonitoring' as capitalized"; + variant "text 'fisheriesControl' as capitalized"; + variant "text 'generalLawEnforcement' as capitalized"; + variant "text 'marineEnvironment' as capitalized"; + variant "text 'maritimeSafetySecurity' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/*

+Enumeration of the different functions covered by a CISE participant. */ +type enumerated FunctionType +{ + borderMonitoring, + borderOperation, + cSDPTask, + counterTerrorism, + customsMonitoring, + customsOperation, + defenceMonitoring, + environmentMonitoring, + environmentResponse, + environmentWarning, + fisheriesMonitoring, + fisheriesOperation, + fisheriesWarning, + lawEnforcementMonitoring, + lawEnforcementOperation, + nonSpecified, + operation, + sAR, + safety, + security, + vTM +} +with { + variant "text 'borderMonitoring' as capitalized"; + variant "text 'borderOperation' as capitalized"; + variant "text 'cSDPTask' as capitalized"; + variant "text 'counterTerrorism' as capitalized"; + variant "text 'customsMonitoring' as capitalized"; + variant "text 'customsOperation' as capitalized"; + variant "text 'defenceMonitoring' as capitalized"; + variant "text 'environmentMonitoring' as capitalized"; + variant "text 'environmentResponse' as capitalized"; + variant "text 'environmentWarning' as capitalized"; + variant "text 'fisheriesMonitoring' as capitalized"; + variant "text 'fisheriesOperation' as capitalized"; + variant "text 'fisheriesWarning' as capitalized"; + variant "text 'lawEnforcementMonitoring' as capitalized"; + variant "text 'lawEnforcementOperation' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'operation' as capitalized"; + variant "text 'sAR' as capitalized"; + variant "text 'safety' as capitalized"; + variant "text 'security' as capitalized"; + variant "text 'vTM' as capitalized"; +}; + + +type enumerated CountryType +{ + aD, + aE, + aF, + aG, + aI, + aL, + aM, + aO, + aQ, + aR, + aS, + aT, + aU, + aW, + aX, + aZ, + bA, + bB, + bD, + bE, + bF, + bG, + bH, + bI, + bJ, + bL, + bM, + bN, + bO, + bQ, + bR, + bS, + bT, + bV, + bW, + bY, + bZ, + cA, + cC, + cD, + cF, + cG, + cH, + cI, + cK, + cL, + cM, + cN, + cO, + cR, + cU, + cV, + cW, + cX, + cY, + cZ, + dE, + dJ, + dK, + dM, + dO, + dZ, + eC, + eE, + eG, + eH, + eR, + eS, + eT, + eU, + fI, + fJ, + fK, + fM, + fO, + fR, + gA, + gB, + gD, + gE, + gF, + gG, + gH, + gI, + gL, + gM, + gN, + gP, + gQ, + gR, + gS, + gT, + gU, + gW, + gY, + hK, + hM, + hN, + hR, + hT, + hU, + iD, + iE, + iL, + iM, + iN, + iO, + iQ, + iR, + iS, + iT, + jE, + jM, + jO, + jP, + kE, + kG, + kH, + kI, + kM, + kN, + kP, + kR, + kW, + kY, + kZ, + lA, + lB, + lC, + lI, + lK, + lR, + lS, + lT, + lU, + lV, + lY, + mA, + mC, + mD, + mE, + mF, + mG, + mH, + mK, + mL, + mM, + mN, + mO, + mP, + mQ, + mR, + mS, + mT, + mU, + mV, + mW, + mX, + mY, + mZ, + nA, + nC, + nE, + nF, + nG, + nI, + nL, + nO, + nP, + nR, + nU, + nZ, + oM, + pA, + pE, + pF, + pG, + pH, + pK, + pL, + pM, + pN, + pR, + pS, + pT, + pW, + pY, + qA, + rC, + rE, + rO, + rS, + rU, + rW, + sA, + sB, + sC, + sD, + sE, + sG, + sH, + sI, + sJ, + sK, + sL, + sM, + sN, + sO, + sR, + sS, + sT, + sV, + sX, + sY, + sZ, + tC, + tD, + tF, + tG, + tH, + tJ, + tK, + tL, + tM, + tN, + tO, + tR, + tT, + tV, + tW, + tZ, + uA, + uG, + uM, + uS, + uY, + uZ, + vA, + vC, + vE, + vG, + vI, + vN, + vU, + wF, + wS, + yE, + yT, + zA, + zM, + zW +} +with { + variant "text 'aD' as capitalized"; + variant "text 'aE' as capitalized"; + variant "text 'aF' as capitalized"; + variant "text 'aG' as capitalized"; + variant "text 'aI' as capitalized"; + variant "text 'aL' as capitalized"; + variant "text 'aM' as capitalized"; + variant "text 'aO' as capitalized"; + variant "text 'aQ' as capitalized"; + variant "text 'aR' as capitalized"; + variant "text 'aS' as capitalized"; + variant "text 'aT' as capitalized"; + variant "text 'aU' as capitalized"; + variant "text 'aW' as capitalized"; + variant "text 'aX' as capitalized"; + variant "text 'aZ' as capitalized"; + variant "text 'bA' as capitalized"; + variant "text 'bB' as capitalized"; + variant "text 'bD' as capitalized"; + variant "text 'bE' as capitalized"; + variant "text 'bF' as capitalized"; + variant "text 'bG' as capitalized"; + variant "text 'bH' as capitalized"; + variant "text 'bI' as capitalized"; + variant "text 'bJ' as capitalized"; + variant "text 'bL' as capitalized"; + variant "text 'bM' as capitalized"; + variant "text 'bN' as capitalized"; + variant "text 'bO' as capitalized"; + variant "text 'bQ' as capitalized"; + variant "text 'bR' as capitalized"; + variant "text 'bS' as capitalized"; + variant "text 'bT' as capitalized"; + variant "text 'bV' as capitalized"; + variant "text 'bW' as capitalized"; + variant "text 'bY' as capitalized"; + variant "text 'bZ' as capitalized"; + variant "text 'cA' as capitalized"; + variant "text 'cC' as capitalized"; + variant "text 'cD' as capitalized"; + variant "text 'cF' as capitalized"; + variant "text 'cG' as capitalized"; + variant "text 'cH' as capitalized"; + variant "text 'cI' as capitalized"; + variant "text 'cK' as capitalized"; + variant "text 'cL' as capitalized"; + variant "text 'cM' as capitalized"; + variant "text 'cN' as capitalized"; + variant "text 'cO' as capitalized"; + variant "text 'cR' as capitalized"; + variant "text 'cU' as capitalized"; + variant "text 'cV' as capitalized"; + variant "text 'cW' as capitalized"; + variant "text 'cX' as capitalized"; + variant "text 'cY' as capitalized"; + variant "text 'cZ' as capitalized"; + variant "text 'dE' as capitalized"; + variant "text 'dJ' as capitalized"; + variant "text 'dK' as capitalized"; + variant "text 'dM' as capitalized"; + variant "text 'dO' as capitalized"; + variant "text 'dZ' as capitalized"; + variant "text 'eC' as capitalized"; + variant "text 'eE' as capitalized"; + variant "text 'eG' as capitalized"; + variant "text 'eH' as capitalized"; + variant "text 'eR' as capitalized"; + variant "text 'eS' as capitalized"; + variant "text 'eT' as capitalized"; + variant "text 'eU' as capitalized"; + variant "text 'fI' as capitalized"; + variant "text 'fJ' as capitalized"; + variant "text 'fK' as capitalized"; + variant "text 'fM' as capitalized"; + variant "text 'fO' as capitalized"; + variant "text 'fR' as capitalized"; + variant "text 'gA' as capitalized"; + variant "text 'gB' as capitalized"; + variant "text 'gD' as capitalized"; + variant "text 'gE' as capitalized"; + variant "text 'gF' as capitalized"; + variant "text 'gG' as capitalized"; + variant "text 'gH' as capitalized"; + variant "text 'gI' as capitalized"; + variant "text 'gL' as capitalized"; + variant "text 'gM' as capitalized"; + variant "text 'gN' as capitalized"; + variant "text 'gP' as capitalized"; + variant "text 'gQ' as capitalized"; + variant "text 'gR' as capitalized"; + variant "text 'gS' as capitalized"; + variant "text 'gT' as capitalized"; + variant "text 'gU' as capitalized"; + variant "text 'gW' as capitalized"; + variant "text 'gY' as capitalized"; + variant "text 'hK' as capitalized"; + variant "text 'hM' as capitalized"; + variant "text 'hN' as capitalized"; + variant "text 'hR' as capitalized"; + variant "text 'hT' as capitalized"; + variant "text 'hU' as capitalized"; + variant "text 'iD' as capitalized"; + variant "text 'iE' as capitalized"; + variant "text 'iL' as capitalized"; + variant "text 'iM' as capitalized"; + variant "text 'iN' as capitalized"; + variant "text 'iO' as capitalized"; + variant "text 'iQ' as capitalized"; + variant "text 'iR' as capitalized"; + variant "text 'iS' as capitalized"; + variant "text 'iT' as capitalized"; + variant "text 'jE' as capitalized"; + variant "text 'jM' as capitalized"; + variant "text 'jO' as capitalized"; + variant "text 'jP' as capitalized"; + variant "text 'kE' as capitalized"; + variant "text 'kG' as capitalized"; + variant "text 'kH' as capitalized"; + variant "text 'kI' as capitalized"; + variant "text 'kM' as capitalized"; + variant "text 'kN' as capitalized"; + variant "text 'kP' as capitalized"; + variant "text 'kR' as capitalized"; + variant "text 'kW' as capitalized"; + variant "text 'kY' as capitalized"; + variant "text 'kZ' as capitalized"; + variant "text 'lA' as capitalized"; + variant "text 'lB' as capitalized"; + variant "text 'lC' as capitalized"; + variant "text 'lI' as capitalized"; + variant "text 'lK' as capitalized"; + variant "text 'lR' as capitalized"; + variant "text 'lS' as capitalized"; + variant "text 'lT' as capitalized"; + variant "text 'lU' as capitalized"; + variant "text 'lV' as capitalized"; + variant "text 'lY' as capitalized"; + variant "text 'mA' as capitalized"; + variant "text 'mC' as capitalized"; + variant "text 'mD' as capitalized"; + variant "text 'mE' as capitalized"; + variant "text 'mF' as capitalized"; + variant "text 'mG' as capitalized"; + variant "text 'mH' as capitalized"; + variant "text 'mK' as capitalized"; + variant "text 'mL' as capitalized"; + variant "text 'mM' as capitalized"; + variant "text 'mN' as capitalized"; + variant "text 'mO' as capitalized"; + variant "text 'mP' as capitalized"; + variant "text 'mQ' as capitalized"; + variant "text 'mR' as capitalized"; + variant "text 'mS' as capitalized"; + variant "text 'mT' as capitalized"; + variant "text 'mU' as capitalized"; + variant "text 'mV' as capitalized"; + variant "text 'mW' as capitalized"; + variant "text 'mX' as capitalized"; + variant "text 'mY' as capitalized"; + variant "text 'mZ' as capitalized"; + variant "text 'nA' as capitalized"; + variant "text 'nC' as capitalized"; + variant "text 'nE' as capitalized"; + variant "text 'nF' as capitalized"; + variant "text 'nG' as capitalized"; + variant "text 'nI' as capitalized"; + variant "text 'nL' as capitalized"; + variant "text 'nO' as capitalized"; + variant "text 'nP' as capitalized"; + variant "text 'nR' as capitalized"; + variant "text 'nU' as capitalized"; + variant "text 'nZ' as capitalized"; + variant "text 'oM' as capitalized"; + variant "text 'pA' as capitalized"; + variant "text 'pE' as capitalized"; + variant "text 'pF' as capitalized"; + variant "text 'pG' as capitalized"; + variant "text 'pH' as capitalized"; + variant "text 'pK' as capitalized"; + variant "text 'pL' as capitalized"; + variant "text 'pM' as capitalized"; + variant "text 'pN' as capitalized"; + variant "text 'pR' as capitalized"; + variant "text 'pS' as capitalized"; + variant "text 'pT' as capitalized"; + variant "text 'pW' as capitalized"; + variant "text 'pY' as capitalized"; + variant "text 'qA' as capitalized"; + variant "text 'rC' as capitalized"; + variant "text 'rE' as capitalized"; + variant "text 'rO' as capitalized"; + variant "text 'rS' as capitalized"; + variant "text 'rU' as capitalized"; + variant "text 'rW' as capitalized"; + variant "text 'sA' as capitalized"; + variant "text 'sB' as capitalized"; + variant "text 'sC' as capitalized"; + variant "text 'sD' as capitalized"; + variant "text 'sE' as capitalized"; + variant "text 'sG' as capitalized"; + variant "text 'sH' as capitalized"; + variant "text 'sI' as capitalized"; + variant "text 'sJ' as capitalized"; + variant "text 'sK' as capitalized"; + variant "text 'sL' as capitalized"; + variant "text 'sM' as capitalized"; + variant "text 'sN' as capitalized"; + variant "text 'sO' as capitalized"; + variant "text 'sR' as capitalized"; + variant "text 'sS' as capitalized"; + variant "text 'sT' as capitalized"; + variant "text 'sV' as capitalized"; + variant "text 'sX' as capitalized"; + variant "text 'sY' as capitalized"; + variant "text 'sZ' as capitalized"; + variant "text 'tC' as capitalized"; + variant "text 'tD' as capitalized"; + variant "text 'tF' as capitalized"; + variant "text 'tG' as capitalized"; + variant "text 'tH' as capitalized"; + variant "text 'tJ' as capitalized"; + variant "text 'tK' as capitalized"; + variant "text 'tL' as capitalized"; + variant "text 'tM' as capitalized"; + variant "text 'tN' as capitalized"; + variant "text 'tO' as capitalized"; + variant "text 'tR' as capitalized"; + variant "text 'tT' as capitalized"; + variant "text 'tV' as capitalized"; + variant "text 'tW' as capitalized"; + variant "text 'tZ' as capitalized"; + variant "text 'uA' as capitalized"; + variant "text 'uG' as capitalized"; + variant "text 'uM' as capitalized"; + variant "text 'uS' as capitalized"; + variant "text 'uY' as capitalized"; + variant "text 'uZ' as capitalized"; + variant "text 'vA' as capitalized"; + variant "text 'vC' as capitalized"; + variant "text 'vE' as capitalized"; + variant "text 'vG' as capitalized"; + variant "text 'vI' as capitalized"; + variant "text 'vN' as capitalized"; + variant "text 'vU' as capitalized"; + variant "text 'wF' as capitalized"; + variant "text 'wS' as capitalized"; + variant "text 'yE' as capitalized"; + variant "text 'yT' as capitalized"; + variant "text 'zA' as capitalized"; + variant "text 'zM' as capitalized"; + variant "text 'zW' as capitalized"; +}; + + +type union String_derivations +{ + XSD.String string, + /* Enumeration with the classification levels for the transferred data. */ + ClassificationLevelType classificationLevelType, + CommunityType communityType, + CountryType countryType, + /* Enumeration with the list of available CISE service interface protocols. */ + EndpointType endpointType, + /*

+Enumeration of the different functions covered by a CISE participant. */ + FunctionType functionType, + /*

+Enumeration of the different European Sea Basins.||This enumeration comes +from http://ec.europa.eu/maritimeaffairs/atlas/seabasins/index_en.htm */ + SeaBasinType seaBasinType +} +with { + variant "useType"; + variant (classificationLevelType) "name as capitalized"; + variant (communityType) "name as capitalized"; + variant (countryType) "name as capitalized"; + variant (endpointType) "name as capitalized"; + variant (functionType) "name as capitalized"; + variant (seaBasinType) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/servicemodel/v1/authority/' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_message.ttcn b/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_message.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..de068af5d307fef4ba81c4a8ddfdd6321aa1febc --- /dev/null +++ b/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_message.ttcn @@ -0,0 +1,1101 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_servicemodel_v1_message.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 19:33:22 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - message.xsd +// /* xml version = "1.0" encoding = "UTF-8" standalone = "yes" */ +// /* targetnamespace = "http://www.cise.eu/servicemodel/v1/message/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_servicemodel_v1_message { + + +import from XSD all; + + +import from http_www_cise_eu_servicemodel_v1_service all; + + +import from http_www_cise_eu_servicemodel_v1_authority all; + + +import from http_www_cise_eu_datamodel_v1_entity_action all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; +import from http_www_cise_eu_datamodel_v1_entity_anomaly all; +import from http_www_cise_eu_datamodel_v1_entity_cargo all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_event all; +import from http_www_cise_eu_datamodel_v1_entity_incident all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_movement all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_operationalasset all; +import from http_www_cise_eu_datamodel_v1_entity_organization all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_vessel all; +import from http_www_cise_eu_datamodel_v1_entity all; +import from http_www_cise_eu_datamodel_v1_relationship all; + + + + +type Acknowledgement_1 Acknowledgement +with { + variant "element"; +}; + + +type EncryptedEntityPayload_1 EncryptedEntityPayload +with { + variant "element"; +}; + + +type Feedback_1 Feedback +with { + variant "element"; +}; + + +type PullRequest_1 PullRequest +with { + variant "element"; +}; + + +type PullResponse_1 PullResponse +with { + variant "element"; +}; + + +type Push_1 Push +with { + variant "element"; +}; + + +type ReliabilityProfile_1 ReliabilityProfile +with { + variant "element"; +}; + + +type XmlEntityPayload_1 XmlEntityPayload +with { + variant "element"; +}; + + +type record Acknowledgement_1 +{ + /* The Acknowledgement message is used in two distinct situations: As the web +service operation return and represents the acknowledgment the message has +been received in the EUCISE network; It is sent asynchronously by destination +Gateways, upon indication by the senders, with the status of the delivery to +the final message recipient. Among others, might be used to handle retry +mechanisms. */ + XSD.String detailString length(0 .. 5000) optional, + XSD.Boolean incomingMessage optional, + /* This identifier correlates the messages that share an operational need. +For instance, in order to update the information of an incident, several +CISE entity services need to be invoked (e.g., IncidentService, +EventLocationService, etc.) Thus, the messages exchanged with these CISE +entity services are related by this ID type. */ + XSD.String contextID optional, + /* This identifier correlates the request and response messages of/to a +service (for the Pull or the Publish/Subscribe communication patterns) */ + XSD.String correlationID optional, + /* The date and time when this messaging object was created */ + XSD.DateTime creationDateTime, + /* Identifier of the message. It is unique for the CISE participant who +created the message. */ + XSD.String messageID, + /* Priority of the message, to help the receiver of the message to deal with +prioritizing the messages received. */ + PriorityType priority, + /* Indication that Sender wants to receive an asynchronous Acknowledgement +upon delivery of this message in the final destination */ + XSD.Boolean requiresAck optional, + /* This field describes the sender of the message. */ + Service_1 sender_ optional, + /* This field describes the recipient of the message. */ + Service_1 recipient optional, + /* This field contains the payload (business content) and its associated +metadata. */ + CoreEntityPayload_derivations payload optional, + /* This field describes the reliability profile requested by the sender of +the message. */ + ReliabilityProfile_1 reliability optional, + /* Other recipients that also received this message */ + record of Service_1 ccRecipients_list, + /* This code represents the type of fault that occurred, or an indication of +success. */ + AcknowledgementType AckCode, + + + /* Additional text to clarify details about the fault. */ + XSD.String ackDetail length(5000) optional, + /* Used in operations like to Discovery or Get Subscribers to return the +results of the operation. */ + record of Service_1 discoveredServices_list, /** optionalmodified**/ + XSD.String elem optional +} +with { + variant "name as 'Acknowledgement'"; + variant (detailString) "name as capitalized"; + variant (detailString) "attribute"; + variant (incomingMessage) "name as capitalized"; + //variant (incomingMessage) "text 'true' as '1'"; + //variant (incomingMessage) "text 'false' as '0'"; + variant (contextID) "name as capitalized"; + variant (correlationID) "name as capitalized"; + variant (creationDateTime) "name as capitalized"; + variant (messageID) "name as capitalized"; + variant (priority) "name as capitalized"; + variant (requiresAck) "name as capitalized"; + //variant (requiresAck) "text 'true' as '1'"; + //variant (requiresAck) "text 'false' as '0'"; + variant (sender_) "name as 'Sender'"; + variant (recipient) "name as capitalized"; + variant (payload) "name as capitalized"; + variant (reliability) "name as capitalized"; + variant (ccRecipients_list) "untagged"; + variant (ccRecipients_list[-]) "name as 'CcRecipients'"; + variant (elem) "anyElement except 'AckCode'"/*unqualified, 'http://www.cise.eu/servicemodel/v1/message/'"*/; + variant (AckCode) "name as capitalized"; + variant (ackDetail) "name as capitalized"; + variant (discoveredServices_list) "untagged"; + variant (discoveredServices_list[-]) "name as 'DiscoveredServices'"; +}; + + +/* This abstract entity describes the message metadata, it is used to identify +the message type linked to a communication pattern and the correlation with +other message. */ +type record Message +{ + XSD.Boolean incomingMessage optional, + /* This identifier correlates the messages that share an operational need. +For instance, in order to update the information of an incident, several +CISE entity services need to be invoked (e.g., IncidentService, +EventLocationService, etc.) Thus, the messages exchanged with these CISE +entity services are related by this ID type. */ + String_derivations contextID optional, + /* This identifier correlates the request and response messages of/to a +service (for the Pull or the Publish/Subscribe communication patterns) */ + String_derivations correlationID optional, + /* The date and time when this messaging object was created */ + XSD.DateTime creationDateTime, + /* Identifier of the message. It is unique for the CISE participant who +created the message. */ + String_derivations messageID, + /* Priority of the message, to help the receiver of the message to deal with +prioritizing the messages received. */ + PriorityType priority, + /* Indication that Sender wants to receive an asynchronous Acknowledgement +upon delivery of this message in the final destination */ + XSD.Boolean requiresAck optional, + /* This field describes the sender of the message. */ + Service_1 sender_, + /* This field describes the recipient of the message. */ + Service_1 recipient optional, + /* This field contains the payload (business content) and its associated +metadata. */ + CoreEntityPayload_derivations payload optional, + /* This field describes the reliability profile requested by the sender of +the message. */ + ReliabilityProfile_1 reliability optional, + /* Other recipients that also received this message */ + record of Service_1 ccRecipients_list, + XSD.String elem optional +} +with { + variant "abstract"; + variant (incomingMessage) "name as capitalized"; + //variant (incomingMessage) "text 'true' as '1'"; + //variant (incomingMessage) "text 'false' as '0'"; + variant (contextID) "name as capitalized"; + variant (correlationID) "name as capitalized"; + variant (creationDateTime) "name as capitalized"; + variant (messageID) "name as capitalized"; + variant (priority) "name as capitalized"; + variant (requiresAck) "name as capitalized"; + //variant (requiresAck) "text 'true' as '1'"; + //variant (requiresAck) "text 'false' as '0'"; + variant (sender_) "name as 'Sender'"; + variant (recipient) "name as capitalized"; + variant (payload) "name as capitalized"; + variant (reliability) "name as capitalized"; + variant (ccRecipients_list) "untagged"; + variant (ccRecipients_list[-]) "name as 'CcRecipients'"; + variant (elem) "anyElement except unqualified, 'http://www.cise.eu/servicemodel/v1/message/'"; +}; + + +/* This entity contains the business payload of the message and the metadata +related to this payload. This is used by all messages types expect the +Acknowledgement type. */ +type record CoreEntityPayload +{ + /* Level of security associated with the payload. */ + InformationSecurityLevelType informationSecurityLevel, + /* Level of sensitivity related to the payload. */ + InformationSensitivityType informationSensitivity, + /* If the payload contains personal data. */ + XSD.Boolean isPersonalData optional, + /* The purpose of the message. It can be used to handle access rights on the +provider side. */ + PurposeType purpose, + /* Date and Time until when the payload can be kept. This information can be +used for the legal constraints associated with the management of personal +data. */ + XSD.DateTime retentionPeriod optional, + /* An indication the payload is encrypted. */ + XSD.Boolean ensureEncryption optional +} +with { + variant "abstract"; + variant (informationSecurityLevel) "name as capitalized"; + variant (informationSensitivity) "name as capitalized"; + variant (isPersonalData) "name as capitalized"; + //variant (isPersonalData) "text 'true' as '1'"; + //variant (isPersonalData) "text 'false' as '0'"; + variant (purpose) "name as capitalized"; + variant (retentionPeriod) "name as capitalized"; + variant (ensureEncryption) "name as capitalized"; + //variant (ensureEncryption) "text 'true' as '1'"; + //variant (ensureEncryption) "text 'false' as '0'"; +}; + + +type record XmlEntityPayload_1 +{ + /* Level of security associated with the payload. */ + InformationSecurityLevelType informationSecurityLevel, + /* Level of sensitivity related to the payload. */ + InformationSensitivityType informationSensitivity, + /* If the payload contains personal data. */ + XSD.Boolean isPersonalData optional, + /* The purpose of the message. It can be used to handle access rights on the +provider side. */ + PurposeType purpose, + /* Date and Time until when the payload can be kept. This information can be +used for the legal constraints associated with the management of personal +data. */ + XSD.DateTime retentionPeriod optional, + /* An indication the payload is encrypted. */ + XSD.Boolean ensureEncryption optional, + /* The 2 following fields are supposed to make the link with the data model. + They have not been generated automatically. */ + Vessel vessel optional, + Action action_ optional, + Anomaly anomaly optional, + CertificateDocument certificateDocument optional, + Incident incident optional, + IrregularMigrationIncident irregularMigrationIncident optional, + LawInfringementIncident lawInfringementIncident optional, + MeteoOceanographicCondition meteoOceanographicCondition optional, + Organization organization optional, + Risk risk optional, + Cargo cargo optional, + record of XSD.String elem_list +} +with { + variant "name as 'XmlEntityPayload'"; + variant (informationSecurityLevel) "name as capitalized"; + variant (informationSensitivity) "name as capitalized"; + variant (isPersonalData) "name as capitalized"; + //variant (isPersonalData) "text 'true' as '1'"; + //variant (isPersonalData) "text 'false' as '0'"; + variant (purpose) "name as capitalized"; + variant (retentionPeriod) "name as capitalized"; + variant (ensureEncryption) "name as capitalized"; + //variant (ensureEncryption) "text 'true' as '1'"; + //variant (ensureEncryption) "text 'false' as '0'"; + variant (vessel) "name as capitalized"; + variant (action_) "name as 'Action'"; + variant (anomaly) "name as capitalized"; + variant (certificateDocument) "name as capitalized"; + variant (incident) "name as capitalized"; + variant (irregularMigrationIncident) "name as capitalized"; + variant (lawInfringementIncident) "name as capitalized"; + variant (meteoOceanographicCondition) "name as capitalized"; + variant (organization) "name as capitalized"; + variant (risk) "name as capitalized"; + variant (cargo) "name as capitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except 'Signature'"; +}; + + +/* Sub entity used to transfer the encrypted information. The encryption method, +cypher keys, algorithms, etc., must be previously agreed and exchange between +the participants sending and receiving the message. */ +type record EncryptedEntityPayload_1 +{ + /* Level of security associated with the payload. */ + InformationSecurityLevelType informationSecurityLevel, + /* Level of sensitivity related to the payload. */ + InformationSensitivityType informationSensitivity, + /* If the payload contains personal data. */ + XSD.Boolean isPersonalData optional, + /* The purpose of the message. It can be used to handle access rights on the +provider side. */ + PurposeType purpose, + /* Date and Time until when the payload can be kept. This information can be +used for the legal constraints associated with the management of personal +data. */ + XSD.DateTime retentionPeriod optional, + /* An indication the payload is encrypted. */ + XSD.Boolean ensureEncryption optional, + /* Encrypted data encoded in BASE64 format. */ + String_derivations entities +} +with { + variant "name as 'EncryptedEntityPayload'"; + variant (informationSecurityLevel) "name as capitalized"; + variant (informationSensitivity) "name as capitalized"; + variant (isPersonalData) "name as capitalized"; + //variant (isPersonalData) "text 'true' as '1'"; + //variant (isPersonalData) "text 'false' as '0'"; + variant (purpose) "name as capitalized"; + variant (retentionPeriod) "name as capitalized"; + variant (ensureEncryption) "name as capitalized"; + //variant (ensureEncryption) "text 'true' as '1'"; + //variant (ensureEncryption) "text 'false' as '0'"; + variant (entities) "name as capitalized"; +}; + + +/* This entity contains information about the retry strategy in case of error +during the transmission of the message. */ +type record ReliabilityProfile_1 +{ + /* The type of retry strategy required by this message. For each type, a +retry mechanism has been agreed at EU level (e.g. number of retry, time +between each try...). This mechanism is implemented by the CISE Gateways. */ + RetryStrategyType retryStrategy +} +with { + variant "name as 'ReliabilityProfile'"; + variant (retryStrategy) "name as capitalized"; +}; + + +/* The message Push is used in the Push communication pattern to transmit +information to other CISE participants. */ +type record Push_1 +{ + XSD.Boolean incomingMessage optional, + /* This identifier correlates the messages that share an operational need. +For instance, in order to update the information of an incident, several +CISE entity services need to be invoked (e.g., IncidentService, +EventLocationService, etc.) Thus, the messages exchanged with these CISE +entity services are related by this ID type. */ + XSD.String contextID optional, + /* This identifier correlates the request and response messages of/to a +service (for the Pull or the Publish/Subscribe communication patterns) */ + XSD.String correlationID optional, + /* The date and time when this messaging object was created */ + XSD.DateTime creationDateTime, + /* Identifier of the message. It is unique for the CISE participant who +created the message. */ + XSD.String messageID, + /* Priority of the message, to help the receiver of the message to deal with +prioritizing the messages received. */ + PriorityType priority, + /* Indication that Sender wants to receive an asynchronous Acknowledgement +upon delivery of this message in the final destination */ + XSD.Boolean requiresAck optional, + /* This field describes the sender of the message. */ + Service_1 sender_, + /* This field describes the recipient of the message. */ + Service_1 recipient optional, + /* This field contains the payload (business content) and its associated +metadata. */ + CoreEntityPayload_derivations payload optional, + /* This field describes the reliability profile requested by the sender of +the message. */ + ReliabilityProfile_1 reliability optional, + /* Other recipients that also received this message */ + record of Service_1 ccRecipients_list, + XSD.String elem optional, + /* This field is used for the Legacy System to request the CISE Gateway to +look for services of a specific type and/or from a specific type of +provider (using the community, country, sea basin...) */ + record of ServiceProfile_1 discoveryProfiles_list +} +with { + variant "name as 'Push'"; + variant (incomingMessage) "name as capitalized"; + //variant (incomingMessage) "text 'true' as '1'"; + //variant (incomingMessage) "text 'false' as '0'"; + variant (contextID) "name as capitalized"; + variant (correlationID) "name as capitalized"; + variant (creationDateTime) "name as capitalized"; + variant (messageID) "name as capitalized"; + variant (priority) "name as capitalized"; + variant (requiresAck) "name as capitalized"; + //variant (requiresAck) "text 'true' as '1'"; + //variant (requiresAck) "text 'false' as '0'"; + variant (sender_) "name as 'Sender'"; + variant (recipient) "name as capitalized"; + variant (payload) "name as capitalized"; + variant (reliability) "name as capitalized"; + variant (ccRecipients_list) "untagged"; + variant (ccRecipients_list[-]) "name as 'CcRecipients'"; + variant (elem) "anyElement except 'Signature'"/*unqualified, 'http://www.cise.eu/servicemodel/v1/message/'"*/; + variant (discoveryProfiles_list) "untagged"; + variant (discoveryProfiles_list[-]) "name as 'DiscoveryProfiles'"; +}; + + +/* The message Pull Response is used in the Pull communication pattern to +respond to a request. This response is sent asynchronously. */ +type record PullResponse_1 +{ + XSD.Boolean incomingMessage optional, + /* This identifier correlates the messages that share an operational need. +For instance, in order to update the information of an incident, several +CISE entity services need to be invoked (e.g., IncidentService, +EventLocationService, etc.) Thus, the messages exchanged with these CISE +entity services are related by this ID type. */ + XSD.String contextID optional, + /* This identifier correlates the request and response messages of/to a +service (for the Pull or the Publish/Subscribe communication patterns) */ + XSD.String correlationID optional, + /* The date and time when this messaging object was created */ + XSD.DateTime creationDateTime, + /* Identifier of the message. It is unique for the CISE participant who +created the message. */ + XSD.String messageID, + /* Priority of the message, to help the receiver of the message to deal with +prioritizing the messages received. */ + PriorityType priority, + /* Indication that Sender wants to receive an asynchronous Acknowledgement +upon delivery of this message in the final destination */ + XSD.Boolean requiresAck optional, + /* This field describes the sender of the message. */ + Service_1 sender_, + /* This field describes the recipient of the message. */ + Service_1 recipient optional, + /* This field contains the payload (business content) and its associated +metadata. */ + CoreEntityPayload_derivations payload optional, + /* This field describes the reliability profile requested by the sender of +the message. */ + ReliabilityProfile_1 reliability optional, + /* Other recipients that also received this message */ + record of Service_1 ccRecipients_list, + XSD.String elem optional, + /* This field may give a textual description of an error that could have +happened during the process of the pull request message. This can be used +to communicate an error that happened after sending the acknowledgement +message. */ + String_derivations errorDetail optional, + /* This field provides an OK code if the response is sent along with the +pull response. It can also provide an error code if an error occurred +after sending the acknowledgement message. */ + ResponseCodeType resultCode, + /* Describes the characteristics used to respond to the request. For +instance, the type of query performed (exact or best effort). */ + ServiceCapability_derivations fulfils optional +} +with { + variant "name as 'PullResponse'"; + variant (incomingMessage) "name as capitalized"; + //variant (incomingMessage) "text 'true' as '1'"; + //variant (incomingMessage) "text 'false' as '0'"; + variant (contextID) "name as capitalized"; + variant (correlationID) "name as capitalized"; + variant (creationDateTime) "name as capitalized"; + variant (messageID) "name as capitalized"; + variant (priority) "name as capitalized"; + variant (requiresAck) "name as capitalized"; + //variant (requiresAck) "text 'true' as '1'"; + //variant (requiresAck) "text 'false' as '0'"; + variant (sender_) "name as 'Sender'"; + variant (recipient) "name as capitalized"; + variant (payload) "name as capitalized"; + variant (reliability) "name as capitalized"; + variant (ccRecipients_list) "untagged"; + variant (ccRecipients_list[-]) "name as 'CcRecipients'"; + variant (elem) "anyElement except unqualified, 'http://www.cise.eu/servicemodel/v1/message/'";//"anyElement from 'http://www.w3.org/2000/09/xmldsig#/'";// except unqualified, 'http://www.cise.eu/servicemodel/v1/message/'"; + variant (errorDetail) "name as capitalized"; + variant (resultCode) "name as capitalized"; + variant (fulfils) "name as capitalized"; +}; + + +/* The message Pull Request is used in the Pull communication pattern to request +information */ +type record PullRequest_1 +{ + XSD.Boolean incomingMessage optional, + /* This identifier correlates the messages that share an operational need. +For instance, in order to update the information of an incident, several +CISE entity services need to be invoked (e.g., IncidentService, +EventLocationService, etc.) Thus, the messages exchanged with these CISE +entity services are related by this ID type. */ + XSD.String contextID optional, + /* This identifier correlates the request and response messages of/to a +service (for the Pull or the Publish/Subscribe communication patterns) */ + XSD.String correlationID optional, + /* The date and time when this messaging object was created */ + XSD.DateTime creationDateTime, + /* Identifier of the message. It is unique for the CISE participant who +created the message. */ + XSD.String messageID, + /* Priority of the message, to help the receiver of the message to deal with +prioritizing the messages received. */ + PriorityType priority, + /* Indication that Sender wants to receive an asynchronous Acknowledgement +upon delivery of this message in the final destination */ + XSD.Boolean requiresAck optional, + /* This field describes the sender of the message. */ + Service_1 sender_, + /* This field describes the recipient of the message. */ + Service_1 recipient optional, + /* This field contains the payload (business content) and its associated +metadata. */ + CoreEntityPayload_derivations payload optional, + /* This field describes the reliability profile requested by the sender of +the message. */ + ReliabilityProfile_1 reliability optional, + /* Other recipients that also received this message */ + record of Service_1 ccRecipients_list, + XSD.String elem optional, + /* The Pull Type is to distinguish between the simple request and the +subscription mechanism. It can also be use to unsubscribe to a flow. */ + PullType pullType, + /* Time in seconds. The request should be answered within this time limit. +After this time, the response may not be considered by the requesting +system. */ + XSD.Int responseTimeOut optional, + /* Service Capability required by the system requesting the information. +This will indicate for instance the maximum entities expected in return. */ + ServiceCapability_derivations requests optional, + /* This field is used for the Legacy System to request the CISE Gateway to +look for services of a specific type and/or from a specific type of +provider (using the community, country, sea basin...) */ + record of ServiceProfile_1 discoveryProfiles_list, + /* Filters to be considered on the message payload entities when using a +Pull Request. */ + PayloadSelector payloadSelector optional +} +with { + variant "name as 'PullRequest'"; + variant (incomingMessage) "name as capitalized"; + //variant (incomingMessage) "text 'true' as '1'"; + //variant (incomingMessage) "text 'false' as '0'"; + variant (contextID) "name as capitalized"; + variant (correlationID) "name as capitalized"; + variant (creationDateTime) "name as capitalized"; + variant (messageID) "name as capitalized"; + variant (priority) "name as capitalized"; + variant (requiresAck) "name as capitalized"; + //variant (requiresAck) "text 'true' as '1'"; + //variant (requiresAck) "text 'false' as '0'"; + variant (sender_) "name as 'Sender'"; + variant (recipient) "name as capitalized"; + variant (payload) "name as capitalized"; + variant (reliability) "name as capitalized"; + variant (ccRecipients_list) "untagged"; + variant (ccRecipients_list[-]) "name as 'CcRecipients'"; + variant (elem) "anyElement except unqualified, 'http://www.cise.eu/servicemodel/v1/message/'"; + variant (pullType) "name as capitalized"; + variant (responseTimeOut) "name as capitalized"; + variant (requests) "name as capitalized"; + variant (discoveryProfiles_list) "untagged"; + variant (discoveryProfiles_list[-]) "name as 'DiscoveryProfiles'"; + variant (payloadSelector) "name as capitalized"; +}; + + +/* Filters to be considered on the message payload entities when using a Pull +Request. */ +type record PayloadSelector +{ + /* List of selector conditions. */ + record length(1 .. infinity) of SelectorCondition selectors_list +} +with { + variant (selectors_list) "untagged"; + variant (selectors_list[-]) "name as 'Selectors'"; +}; + + +/* Represents a condition to be used to allow addition extra filtering on data. */ +type record SelectorCondition +{ + /* XPATH expression that allows the selection XML elements in the payload. */ + String_derivations selector, + /* Operator to be applied to this selector. */ + ConditionOperatorType operator +} +with { + variant (selector) "name as capitalized"; + variant (operator) "name as capitalized"; +}; + + +/* This message type allows to provide feedback on a message already sent (for +example when a message was sent by error) or on a message received. */ +type record Feedback_1 +{ + XSD.Boolean incomingMessage optional, + /* This identifier correlates the messages that share an operational need. +For instance, in order to update the information of an incident, several +CISE entity services need to be invoked (e.g., IncidentService, +EventLocationService, etc.) Thus, the messages exchanged with these CISE +entity services are related by this ID type. */ + XSD.String contextID optional, + /* This identifier correlates the request and response messages of/to a +service (for the Pull or the Publish/Subscribe communication patterns) */ + XSD.String correlationID optional, + /* The date and time when this messaging object was created */ + XSD.DateTime creationDateTime, + /* Identifier of the message. It is unique for the CISE participant who +created the message. */ + XSD.String messageID, + /* Priority of the message, to help the receiver of the message to deal with +prioritizing the messages received. */ + PriorityType priority, + /* Indication that Sender wants to receive an asynchronous Acknowledgement +upon delivery of this message in the final destination */ + XSD.Boolean requiresAck optional, + /* This field describes the sender of the message. */ + Service_1 sender_, + /* This field describes the recipient of the message. */ + Service_1 recipient optional, + /* This field contains the payload (business content) and its associated +metadata. */ + CoreEntityPayload_derivations payload optional, + /* This field describes the reliability profile requested by the sender of +the message. */ + ReliabilityProfile_1 reliability optional, + /* Other recipients that also received this message */ + record of Service_1 ccRecipients_list, + XSD.String elem optional, + /* The type of feedback to provide */ + FeedbackType feedbackType, + /* The description of the reason for feedback. This field is a free text. */ + String_derivations reason optional, + /* The Message ID that this feedback message refers to. */ + String_derivations refMessageID +} +with { + variant "name as 'Feedback'"; + variant (incomingMessage) "name as capitalized"; + //variant (incomingMessage) "text 'true' as '1'"; + //variant (incomingMessage) "text 'false' as '0'"; + variant (contextID) "name as capitalized"; + variant (correlationID) "name as capitalized"; + variant (creationDateTime) "name as capitalized"; + variant (messageID) "name as capitalized"; + variant (priority) "name as capitalized"; + variant (requiresAck) "name as capitalized"; + //variant (requiresAck) "text 'true' as '1'"; + //variant (requiresAck) "text 'false' as '0'"; + variant (sender_) "name as 'Sender'"; + variant (recipient) "name as capitalized"; + variant (payload) "name as capitalized"; + variant (reliability) "name as capitalized"; + variant (ccRecipients_list) "untagged"; + variant (ccRecipients_list[-]) "name as 'CcRecipients'"; + variant (elem) "anyElement except unqualified, 'http://www.cise.eu/servicemodel/v1/message/'"; + variant (feedbackType) "name as capitalized"; + variant (reason) "name as capitalized"; + variant (refMessageID) "name as capitalized"; +}; + + +/* Enumeration with the several types of Acknowledgment codes that can be written. */ +type enumerated AcknowledgementType +{ + authenticationError, + badRequest, + endPointNotFound, + entityTypeNotAccepted, + internalGatewayFault, + invalidRequestObject, + networkError, + objectTypeNotAccepted, + securityError, + serverError, + serviceManagerError, + serviceTypeNotSupported, + success, + timestampError, + unauthorized +} +with { + variant "text 'authenticationError' as capitalized"; + variant "text 'badRequest' as capitalized"; + variant "text 'endPointNotFound' as capitalized"; + variant "text 'entityTypeNotAccepted' as capitalized"; + variant "text 'internalGatewayFault' as capitalized"; + variant "text 'invalidRequestObject' as capitalized"; + variant "text 'networkError' as capitalized"; + variant "text 'objectTypeNotAccepted' as capitalized"; + variant "text 'securityError' as capitalized"; + variant "text 'serverError' as capitalized"; + variant "text 'serviceManagerError' as capitalized"; + variant "text 'serviceTypeNotSupported' as capitalized"; + variant "text 'success' as capitalized"; + variant "text 'timestampError' as capitalized"; + variant "text 'unauthorized' as capitalized"; +}; + + +/*

Enumeration of the different priority of a message. */ +type enumerated PriorityType +{ + high, + low, + medium +} +with { + variant "text 'high' as capitalized"; + variant "text 'low' as capitalized"; + variant "text 'medium' as capitalized"; +}; + + +/*

+This enumeration presents the possible values for information security +classification. The enumeration is based in the security rules for protecting +EU classified information +(http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:141:0017:0065:EN:PDF +). */ +type enumerated InformationSecurityLevelType +{ + eUConfidential, + eURestricted, + eUSecret, + eUTopSecret, + nonClassified, + nonSpecified +} +with { + variant "text 'eUConfidential' as capitalized"; + variant "text 'eURestricted' as capitalized"; + variant "text 'eUSecret' as capitalized"; + variant "text 'eUTopSecret' as capitalized"; + variant "text 'nonClassified' as capitalized"; + variant "text 'nonSpecified' as capitalized"; +}; + + +/*

+This enumeration presents the possible values for information sensitivity +degree. The Traffic Light Protocol (TLP) of US-CERT is applied +(http://www.us-cert.gov/tlp +). */ +type enumerated InformationSensitivityType +{ + amber, + green, + nonSpecified, + red, + white +} +with { + variant "text 'amber' as capitalized"; + variant "text 'green' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'red' as capitalized"; + variant "text 'white' as capitalized"; +}; + + +/*

+Enumeration of the different purpose linked to a request. */ +type enumerated PurposeType +{ + borderMonitoring, + borderOperation, + cSDPTask, + counterTerrorism, + customsMonitoring, + customsOperation, + defenceMonitoring, + environmentMonitoring, + environmentResponse, + environmentWarning, + fisheriesMonitoring, + fisheriesOperation, + fisheriesWarning, + lawEnforcementMonitoring, + lawEnforcementOperation, + nonSpecified, + operation, + sAR, + safety, + security, + vTM +} +with { + variant "text 'borderMonitoring' as capitalized"; + variant "text 'borderOperation' as capitalized"; + variant "text 'cSDPTask' as capitalized"; + variant "text 'counterTerrorism' as capitalized"; + variant "text 'customsMonitoring' as capitalized"; + variant "text 'customsOperation' as capitalized"; + variant "text 'defenceMonitoring' as capitalized"; + variant "text 'environmentMonitoring' as capitalized"; + variant "text 'environmentResponse' as capitalized"; + variant "text 'environmentWarning' as capitalized"; + variant "text 'fisheriesMonitoring' as capitalized"; + variant "text 'fisheriesOperation' as capitalized"; + variant "text 'fisheriesWarning' as capitalized"; + variant "text 'lawEnforcementMonitoring' as capitalized"; + variant "text 'lawEnforcementOperation' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'operation' as capitalized"; + variant "text 'sAR' as capitalized"; + variant "text 'safety' as capitalized"; + variant "text 'security' as capitalized"; + variant "text 'vTM' as capitalized"; +}; + + +/*

Enumeration of the different type of retry strategy. */ +type enumerated RetryStrategyType +{ + highReliability, + lowReliability, + noRetry +} +with { + variant "text 'highReliability' as capitalized"; + variant "text 'lowReliability' as capitalized"; + variant "text 'noRetry' as capitalized"; +}; + + +/* Enumeration with the code values return with a PullResponse. */ +type enumerated ResponseCodeType +{ + authenticationError, + badRequest, + endPointNotFound, + entityTypeNotAccepted, + internalGatewayFault, + invalidRequestObject, + objectTypeNotAccepted, + securityError, + serverError, + serviceTypeNotSupported, + success, + timestampError, + unauthorized +} +with { + variant "text 'authenticationError' as capitalized"; + variant "text 'badRequest' as capitalized"; + variant "text 'endPointNotFound' as capitalized"; + variant "text 'entityTypeNotAccepted' as capitalized"; + variant "text 'internalGatewayFault' as capitalized"; + variant "text 'invalidRequestObject' as capitalized"; + variant "text 'objectTypeNotAccepted' as capitalized"; + variant "text 'securityError' as capitalized"; + variant "text 'serverError' as capitalized"; + variant "text 'serviceTypeNotSupported' as capitalized"; + variant "text 'success' as capitalized"; + variant "text 'timestampError' as capitalized"; + variant "text 'unauthorized' as capitalized"; +}; + + +/*

Enumeration to handle the different type of Pull Request message. */ +type enumerated PullType +{ + discover, + getSubscribers, + request, + subscribe, + unsubscribe +} +with { + variant "text 'discover' as capitalized"; + variant "text 'getSubscribers' as capitalized"; + variant "text 'request' as capitalized"; + variant "text 'subscribe' as capitalized"; + variant "text 'unsubscribe' as capitalized"; +}; + + +/* Enumeration with the types of operators that can be used in payload selectors. */ +type enumerated ConditionOperatorType +{ + eQUAL, + gREATER_THAN, + gREATER_THAN_OR_EQUAL_TO, + iS_NULL, + lESS_THAN, + lESS_THAN_OR_EQUAL_TO, + lIKE, + nOT_EQUAL, + nOT_LIKE +} +with { + variant "text 'eQUAL' as capitalized"; + variant "text 'gREATER_THAN' as capitalized"; + variant "text 'gREATER_THAN_OR_EQUAL_TO' as capitalized"; + variant "text 'iS_NULL' as capitalized"; + variant "text 'lESS_THAN' as capitalized"; + variant "text 'lESS_THAN_OR_EQUAL_TO' as capitalized"; + variant "text 'lIKE' as capitalized"; + variant "text 'nOT_EQUAL' as capitalized"; + variant "text 'nOT_LIKE' as capitalized"; +}; + + +/* Enumeration of the type of feedback for the feedback message. */ +type enumerated FeedbackType +{ + delete, + info +}; + + +/* This abstract entity describes the message metadata, it is used to identify +the message type linked to a communication pattern and the correlation with +other message. */ +type union Message_derivations +{ + Message message_, + Acknowledgement_1 acknowledgement, + /* This message type allows to provide feedback on a message already sent (for +example when a message was sent by error) or on a message received. */ + Feedback_1 feedback, + /* The message Pull Request is used in the Pull communication pattern to request +information */ + PullRequest_1 pullRequest, + /* The message Pull Response is used in the Pull communication pattern to +respond to a request. This response is sent asynchronously. */ + PullResponse_1 pullResponse, + /* The message Push is used in the Push communication pattern to transmit +information to other CISE participants. */ + Push_1 push +} +with { + variant "useType"; + variant (message_) "name as 'Message'"; + variant (message_) "abstract"; + variant (acknowledgement) "name as capitalized"; + variant (feedback) "name as capitalized"; + variant (pullRequest) "name as capitalized"; + variant (pullResponse) "name as capitalized"; + variant (push) "name as capitalized"; +}; + + +/* This entity contains the business payload of the message and the metadata +related to this payload. This is used by all messages types expect the +Acknowledgement type. */ +type union CoreEntityPayload_derivations +{ + CoreEntityPayload coreEntityPayload, + /* Sub entity used to transfer the encrypted information. The encryption method, +cypher keys, algorithms, etc., must be previously agreed and exchange between +the participants sending and receiving the message. */ + EncryptedEntityPayload_1 encryptedEntityPayload, + XmlEntityPayload_1 xmlEntityPayload +} +with { + variant "useType"; + variant (coreEntityPayload) "name as capitalized"; + variant (coreEntityPayload) "abstract"; + variant (encryptedEntityPayload) "name as capitalized"; + variant (xmlEntityPayload) "name as capitalized"; +}; + + +type union String_derivations +{ + XSD.String string, + /* Enumeration with the several types of Acknowledgment codes that can be written. */ + AcknowledgementType acknowledgementType, + /* Enumeration with the types of operators that can be used in payload selectors. */ + ConditionOperatorType conditionOperatorType, + /* Enumeration of the type of feedback for the feedback message. */ + FeedbackType feedbackType, + /*

+This enumeration presents the possible values for information security +classification. The enumeration is based in the security rules for protecting +EU classified information +(http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:141:0017:0065:EN:PDF +). */ + InformationSecurityLevelType informationSecurityLevelType, + /*

+This enumeration presents the possible values for information sensitivity +degree. The Traffic Light Protocol (TLP) of US-CERT is applied +(http://www.us-cert.gov/tlp +). */ + InformationSensitivityType informationSensitivityType, + /*

Enumeration of the different priority of a message. */ + PriorityType priorityType, + /*

Enumeration to handle the different type of Pull Request message. */ + PullType pullType, + /*

+Enumeration of the different purpose linked to a request. */ + PurposeType purposeType, + /* Enumeration with the code values return with a PullResponse. */ + ResponseCodeType responseCodeType, + /*

Enumeration of the different type of retry strategy. */ + RetryStrategyType retryStrategyType +} +with { + variant "useType"; + variant (acknowledgementType) "name as capitalized"; + variant (conditionOperatorType) "name as capitalized"; + variant (feedbackType) "name as capitalized"; + variant (informationSecurityLevelType) "name as capitalized"; + variant (informationSensitivityType) "name as capitalized"; + variant (priorityType) "name as capitalized"; + variant (pullType) "name as capitalized"; + variant (purposeType) "name as capitalized"; + variant (responseCodeType) "name as capitalized"; + variant (retryStrategyType) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/servicemodel/v1/message' prefix 'ns4'"; + variant "namespace as 'http://www.cise.eu/servicemodel/v1/message/' prefix 'ns4'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} \ No newline at end of file diff --git a/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_service.ttcn b/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_service.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..63e7d3033106959d42912e817ac3ec30a32fff6d --- /dev/null +++ b/ttcn/LibCise/LibCdm4/http_www_cise_eu_servicemodel_v1_service.ttcn @@ -0,0 +1,403 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_servicemodel_v1_service.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 19:33:22 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - service.xsd +// /* xml version = "1.0" encoding = "UTF-8" standalone = "yes" */ +// /* targetnamespace = "http://www.cise.eu/servicemodel/v1/service/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_servicemodel_v1_service { + + +import from XSD all; + + +import from http_www_cise_eu_servicemodel_v1_authority all; + + +type Service_1 Service +with { + variant "element"; +}; + + +type ServiceProfile_1 ServiceProfile +with { + variant "element"; +}; + + +type SubscriptionCapability_1 SubscriptionCapability +with { + variant "element"; +}; + + +/* This entity contains the description of a service. */ +type record Service_1 +{ + /* This field specify what type of data is provided by the service. This is +to distinguish real time data from historic data. */ + DataFreshnessType dataFreshness optional, + /* The sea basin covered by the service. */ + SeaBasinType seaBasin optional, + /* This is the unique ID of the service. */ + String_derivations serviceID, + /* The type of communication pattern supported by the service +(Pull/Push/Subscribe) */ + ServiceOperationType serviceOperation, + ServiceRoleType serviceRole optional, + /* The status of the service. Draft = the service is not yet available for +use but can be seen in the Service Registry Online = the service is +available for use Maintenance = the service is temporally not available +for use Deprecated = the service is available for use but will be soon +offline, either replaced by a new version of the service or discontinued +Offline = the service is not available anymore. For historic purpose, it +can still be seen in the Service Registry with an offline status. */ + ServiceStatusType serviceStatus optional, + /* The service type gives the type of entities exchanged (based on the CISE +data model). */ + ServiceType serviceType optional, + /* Participant to which the service belongs. */ + Participant_1 participant optional, + /* The capabilities provided by the service. */ + ServiceCapability_derivations serviceCapability optional +} +with { + variant "name as 'Service'"; + variant (dataFreshness) "name as capitalized"; + variant (seaBasin) "name as capitalized"; + variant (serviceID) "name as capitalized"; + variant (serviceOperation) "name as capitalized"; + variant (serviceRole) "name as capitalized"; + variant (serviceStatus) "name as capitalized"; + variant (serviceType) "name as capitalized"; + variant (participant) "name as capitalized"; + variant (serviceCapability) "name as capitalized"; +}; + + +/* The different capabilities of a service. This can depends of the operation +supported. */ +type record ServiceCapability +{ + /* Estimated average time to receive a response. */ + XSD.Int expectedResponseTime optional, + /* Maximum number of entities returned in a pull response. */ + XSD.Int maxEntitiesPerMsg optional, + /* Number of requests by hour allowed by the system providing. Undefined = +no limit. */ + XSD.Int maxNumberOfRequests optional, + /* Type used for the query by example. This mechanism supports either exact +answers or approximate answers. */ + QueryByExampleType queryByExampleType optional +} +with { + variant (expectedResponseTime) "name as capitalized"; + variant (maxEntitiesPerMsg) "name as capitalized"; + variant (maxNumberOfRequests) "name as capitalized"; + variant (queryByExampleType) "name as capitalized"; +}; + + +/* Capabilities specific for the subscribe pattern */ +type record SubscriptionCapability_1 +{ + /* Estimated average time to receive a response. */ + XSD.Int expectedResponseTime optional, + /* Maximum number of entities returned in a pull response. */ + XSD.Int maxEntitiesPerMsg optional, + /* Number of requests by hour allowed by the system providing. Undefined = +no limit. */ + XSD.Int maxNumberOfRequests optional, + /* Type used for the query by example. This mechanism supports either exact +answers or approximate answers. */ + QueryByExampleType queryByExampleType optional, + /* In the subscription pattern, the maximum frequency of update available. +This information can be given for information by the service provider. */ + XSD.Duration maxFrequency optional, + /* In the subscription pattern, the average time between two updates. This +information can be requested by the subscriber or given for information +by the service provider. */ + XSD.Duration refreshRate optional, + /* The date and time when the subscription should end. This information can +be requested by the subscriber. */ + XSD.DateTime subscriptionEnd optional +} +with { + variant "name as 'SubscriptionCapability'"; + variant (expectedResponseTime) "name as capitalized"; + variant (maxEntitiesPerMsg) "name as capitalized"; + variant (maxNumberOfRequests) "name as capitalized"; + variant (queryByExampleType) "name as capitalized"; + variant (maxFrequency) "name as capitalized"; + variant (refreshRate) "name as capitalized"; + variant (subscriptionEnd) "name as capitalized"; +}; + + +/* The characteristics associated to the service and to the provider of the +service. */ +type record ServiceProfile_1 +{ + /* One of the 7 user communities participating to CISE. This field is +related to the community of the provider of the service. */ + CommunityType community optional, + /* The Country of the provider of the service. The code ISO-3166-1 alpha-2 +is used: 2 character country code. */ + CountryType country optional, + /* This field specify what type of data is provided by the service. This is +to distinguish real time data from historic data. */ + DataFreshnessType dataFreshness optional, + /* The function covered by the provider of the service. */ + FunctionType function_ optional, + /* The sea basin covered by the service. */ + SeaBasinType seaBasin optional, + /* Service unique identifier. */ + String_derivations serviceID optional, + /* Service operation type. */ + ServiceOperationType serviceOperation optional, + /* Service role. */ + ServiceRoleType serviceRole optional, + /* Service type. */ + ServiceType serviceType optional, + /* Service status. */ + ServiceStatusType serviceStatus optional, + /* Service capabilities. */ + ServiceCapability_derivations serviceCapability optional +} +with { + variant "name as 'ServiceProfile'"; + variant (community) "name as capitalized"; + variant (country) "name as capitalized"; + variant (dataFreshness) "name as capitalized"; + variant (function_) "name as 'Function'"; + variant (seaBasin) "name as capitalized"; + variant (serviceID) "name as capitalized"; + variant (serviceOperation) "name as capitalized"; + variant (serviceRole) "name as capitalized"; + variant (serviceType) "name as capitalized"; + variant (serviceStatus) "name as capitalized"; + variant (serviceCapability) "name as capitalized"; +}; + + +/* Enumeration of the different type of data related to the time (real time or +historic information). */ +type enumerated DataFreshnessType +{ + historic, + nearlyRealTime, + realTime, + unknown +} +with { + variant "text 'historic' as capitalized"; + variant "text 'nearlyRealTime' as capitalized"; + variant "text 'realTime' as capitalized"; + variant "text 'unknown' as capitalized"; +}; + + +/* Enumeration of the different type of communication pattern available for each +service type. */ +type enumerated ServiceOperationType +{ + acknowledgement, + feedback, + pull, + push, + subscribe +} +with { + variant "text 'acknowledgement' as capitalized"; + variant "text 'feedback' as capitalized"; + variant "text 'pull' as capitalized"; + variant "text 'push' as capitalized"; + variant "text 'subscribe' as capitalized"; +}; + + +/* Role of the service in the message exchange process. */ +type enumerated ServiceRoleType +{ + consumer, + provider +} +with { + variant "text 'consumer' as capitalized"; + variant "text 'provider' as capitalized"; +}; + + +/* Enumeration of the different status of a service. */ +type enumerated ServiceStatusType +{ + deprecated, + draft, + maintenance, + offline, + online +} +with { + variant "text 'deprecated' as capitalized"; + variant "text 'draft' as capitalized"; + variant "text 'maintenance' as capitalized"; + variant "text 'offline' as capitalized"; + variant "text 'online' as capitalized"; +}; + + +/* Enumeration of the different type of service related to the entity Data Model of CISE. */ +type enumerated ServiceType +{ + actionService, + agentService, + aircraftService, + anomalyService, + cargoDocumentService, + cargoService, + certificateDocumentService, + crisisIncidentService, + documentService, + eventDocumentService, + incidentService, + irregularMigrationIncidentService, + landVehicleService, + lawInfringementIncidentService, + locationDocumentService, + locationService, + maritimeSafetyIncidentService, + meteoOceanographicConditionService, + movementService, + operationalAssetService, + organizationDocumentService, + organizationService, + personDocumentService, + personService, + riskDocumentService, + riskService, + vesselDocumentService, + vesselService +} +with { + variant "text 'actionService' as capitalized"; + variant "text 'agentService' as capitalized"; + variant "text 'aircraftService' as capitalized"; + variant "text 'anomalyService' as capitalized"; + variant "text 'cargoDocumentService' as capitalized"; + variant "text 'cargoService' as capitalized"; + variant "text 'certificateDocumentService' as capitalized"; + variant "text 'crisisIncidentService' as capitalized"; + variant "text 'documentService' as capitalized"; + variant "text 'eventDocumentService' as capitalized"; + variant "text 'incidentService' as capitalized"; + variant "text 'irregularMigrationIncidentService' as capitalized"; + variant "text 'landVehicleService' as capitalized"; + variant "text 'lawInfringementIncidentService' as capitalized"; + variant "text 'locationDocumentService' as capitalized"; + variant "text 'locationService' as capitalized"; + variant "text 'maritimeSafetyIncidentService' as capitalized"; + variant "text 'meteoOceanographicConditionService' as capitalized"; + variant "text 'movementService' as capitalized"; + variant "text 'operationalAssetService' as capitalized"; + variant "text 'organizationDocumentService' as capitalized"; + variant "text 'organizationService' as capitalized"; + variant "text 'personDocumentService' as capitalized"; + variant "text 'personService' as capitalized"; + variant "text 'riskDocumentService' as capitalized"; + variant "text 'riskService' as capitalized"; + variant "text 'vesselDocumentService' as capitalized"; + variant "text 'vesselService' as capitalized"; +}; + + +/* Enumeration of the different type of query. */ +type enumerated QueryByExampleType +{ + bestEffort, + exactSearch +} +with { + variant "text 'bestEffort' as capitalized"; + variant "text 'exactSearch' as capitalized"; +}; + + +/* The different capabilities of a service. This can depends of the operation +supported. */ +type union ServiceCapability_derivations +{ + ServiceCapability serviceCapability, + /* Capabilities specific for the subscribe pattern */ + SubscriptionCapability_1 subscriptionCapability +} +with { + variant "useType"; + variant (serviceCapability) "name as capitalized"; + variant (subscriptionCapability) "name as capitalized"; +}; + + +type union String_derivations +{ + XSD.String string, + /* Enumeration of the different type of data related to the time (real time or +historic information). */ + DataFreshnessType dataFreshnessType, + /* Enumeration of the different type of query. */ + QueryByExampleType queryByExampleType, + /* Enumeration of the different type of communication pattern available for each +service type. */ + ServiceOperationType serviceOperationType, + /* Role of the service in the message exchange process. */ + ServiceRoleType serviceRoleType, + /* Enumeration of the different status of a service. */ + ServiceStatusType serviceStatusType, + /* Enumeration of the different type of service related to the entity Data Model of CISE. */ + ServiceType serviceType +} +with { + variant "useType"; + variant (dataFreshnessType) "name as capitalized"; + variant (queryByExampleType) "name as capitalized"; + variant (serviceOperationType) "name as capitalized"; + variant (serviceRoleType) "name as capitalized"; + variant (serviceStatusType) "name as capitalized"; + variant (serviceType) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/servicemodel/v1/service/' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm4/module.mk b/ttcn/LibCise/LibCdm4/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..201225f9e5d90a9003d2d81d6a7f75ecbc99bfdc --- /dev/null +++ b/ttcn/LibCise/LibCdm4/module.mk @@ -0,0 +1,5 @@ +sources := \ + http_www_cise_eu_servicemodel_v1_authority.ttcn \ + http_www_cise_eu_servicemodel_v1_message.ttcn \ + http_www_cise_eu_servicemodel_v1_service.ttcn \ +# NoTargetNamespace.ttcn diff --git a/ttcn/LibCise/LibCdm5/NoTargetNamespace.ttcn b/ttcn/LibCise/LibCdm5/NoTargetNamespace.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b45345d0ccc5ec0d7830ff9b7bf2a773852c453a --- /dev/null +++ b/ttcn/LibCise/LibCdm5/NoTargetNamespace.ttcn @@ -0,0 +1,462 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: NoTargetNamespace.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:48 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - Action.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Agent.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Aircraft.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Anomaly.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - CargoDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Cargo.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Catch.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - CertificateDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - ContainmentUnit.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - CrisisIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Document.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Entity.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - EventDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - FormalOrganization.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Incident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - IrregularMigrationIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - LandVehicle.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - LawInfringementIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - LocationDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Location.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - MaritimeSafetyIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - MeteoOceanographicCondition.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Movement.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - NamedLocation.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - OperationalAsset.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - OrganizationalCollaboration.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - OrganizationalUnit.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - OrganizationDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Organization.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - PersonDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Person.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - PollutionIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - PortFacilityLocation.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - PortLocation.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - PortOrganization.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - RiskDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Risk.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Stream.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - UniqueIdentifier.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - VesselDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +// - Vessel.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module NoTargetNamespace { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_action all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_entity_anomaly all; + + +import from http_www_cise_eu_datamodel_v1_entity_document all; + + +import from http_www_cise_eu_datamodel_v1_entity_cargo all; + + +import from http_www_cise_eu_datamodel_v1_entity_incident all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_organization all; + + +import from http_www_cise_eu_datamodel_v1_entity_location all; + + +import from http_www_cise_eu_datamodel_v1_entity_movement all; + + +import from http_www_cise_eu_datamodel_v1_entity_operationalasset all; + + +import from http_www_cise_eu_datamodel_v1_entity_person all; + + +import from http_www_cise_eu_datamodel_v1_entity_risk all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +import from http_www_cise_eu_datamodel_v1_entity_vessel all; + + +type http_www_cise_eu_datamodel_v1_entity_action.Action Action +with { + variant "element"; +}; + + +type Agent_derivations Agent +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_object.Aircraft Aircraft +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_anomaly.Anomaly Anomaly +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.CargoDocument CargoDocument +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_cargo.Cargo Cargo +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_cargo.Catch Catch +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.CertificateDocument CertificateDocument +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_cargo.ContainmentUnit ContainmentUnit +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_incident.CrisisIncident CrisisIncident +with { + variant "element"; +}; + + +type Document_derivations Document +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity.Entity Entity +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.EventDocument EventDocument +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_organization.FormalOrganization FormalOrganization +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_incident.Incident Incident +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_incident.IrregularMigrationIncident IrregularMigrationIncident +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_object.LandVehicle LandVehicle +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_incident.LawInfringementIncident LawInfringementIncident +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.LocationDocument LocationDocument +with { + variant "element"; +}; + + +type Location_derivations Location +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_incident.MaritimeSafetyIncident MaritimeSafetyIncident +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_location.MeteoOceanographicCondition MeteoOceanographicCondition +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_movement.Movement Movement +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_location.NamedLocation NamedLocation +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_operationalasset.OperationalAsset OperationalAsset +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_organization.OrganizationalCollaboration OrganizationalCollaboration +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_organization.OrganizationalUnit OrganizationalUnit +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.OrganizationDocument OrganizationDocument +with { + variant "element"; +}; + + +type Organization_derivations Organization +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.PersonDocument PersonDocument +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_person.Person Person +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_incident.PollutionIncident PollutionIncident +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_location.PortFacilityLocation PortFacilityLocation +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_location.PortLocation PortLocation +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_organization.PortOrganization PortOrganization +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.RiskDocument RiskDocument +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_risk.Risk Risk +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.Stream Stream +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_uniqueidentifier.UniqueIdentifier UniqueIdentifier +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_document.VesselDocument VesselDocument +with { + variant "element"; +}; + + +type http_www_cise_eu_datamodel_v1_entity_vessel.Vessel Vessel +with { + variant "element"; +}; + + +} +with { + encode "XML"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "attributeFormQualified"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a45b0d871e4d8f0550e6a0a55e4b64339ddebabd --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity.ttcn @@ -0,0 +1,54 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:48 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - Entity.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_entity { + + +import from XSD all; + + +/* Abtract class representing an entity of the CISE data model. */ +type record Entity +{ + +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/' prefix 'entity'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_action.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_action.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..58b83313d976bfd4f1c12ee59adc04cd86157aa9 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_action.ttcn @@ -0,0 +1,333 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_action.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:48 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - ActionPriorityType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/action/" */ +// - ActionStatusType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/action/" */ +// - ActionType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/action/" */ +// - Action.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/action/" */ +// - MissionType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/action/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_action { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_organization all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + + +/* This enumeration presents the different priorities which can be assigned to an Action. */ +/* high. DESCRIPTION: Used to identify a high priority Action */ +/* medium. DESCRIPTION: Used to identify a medium priority Action */ +/* low. DESCRIPTION: Used to identify a low priority Action */ +/* other. DESCRIPTION: Action status not included above */ +/* non-specified. DESCRIPTION: Action status non-specified */ +type enumerated ActionPriorityType +{ + high, + low, + medium, + nonSpecified, + other +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/action/' prefix 'action'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'high' as capitalized"; + variant "text 'low' as capitalized"; + variant "text 'medium' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* In order to define the statuses associated to an action, we suggest reusing the work already done during the "Tactical Situation Object" project. Among many artifacts, a list of action statuses has been defined. This enumeration presents the possible statuses of an Action. */ +/* aborted. DESCRIPTION: Action aborted */ +/* cancelled. DESCRIPTION: Action canceled */ +/* completed. DESCRIPTION: Action completed */ +/* in progress. DESCRIPTION: Action InProgress (2 additional digits - such as IPR50 - may provide the percentage of completeness of the action) */ +/* not started. DESCRIPTION: Action is not started */ +/* paused. DESCRIPTION: Action is paused */ +/* other. DESCRIPTION: Action status not included above */ +/* non-specified. DESCRIPTION: Action status non-specified */ +type enumerated ActionStatusType +{ + aborted, + cancelled, + completed, + inProgress, + nonSpecified, + notStarted, + other, + paused +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/action/' prefix 'action'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'aborted' as capitalized"; + variant "text 'cancelled' as capitalized"; + variant "text 'completed' as capitalized"; + variant "text 'inProgress' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'notStarted' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'paused' as capitalized"; +}; + + +/* This enumeration presents the possible types of Actions. */ +/* inspection. DESCRIPTION: A inspection action as defined in the EUROSUR system */ +/* confirmation. DESCRIPTION: A confirmation action */ +/* rescue. DESCRIPTION: A rescue action as defined in the EUROSUR system */ +/* deterrence. DESCRIPTION: An action intended to dissuade an adversary from undertaking an action not yet started */ +/* assistance. DESCRIPTION: An assistance action. */ +/* acknowledgment. DESCRIPTION: An action resulting in an acknowledgement */ +/* exercise. DESCRIPTION: An action defined as an exercise */ +/* search. DESCRIPTION: A search action. */ +/* detection. DESCRIPTION: A detection action */ +/* tracking. DESCRIPTION: A tracking action */ +/* interception. DESCRIPTION: An interception action */ +/* other. DESCRIPTION: Action type not included above */ +/* non-specified. DESCRIPTION: Action type non-specified */ +type enumerated ActionType +{ + acknowledgment, + assistance, + confirmation, + detection, + deterrence, + exercise, + inspection, + interception, + nonSpecified, + other, + rescue, + search, + tracking +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/action/' prefix 'action'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'acknowledgment' as capitalized"; + variant "text 'assistance' as capitalized"; + variant "text 'confirmation' as capitalized"; + variant "text 'detection' as capitalized"; + variant "text 'deterrence' as capitalized"; + variant "text 'exercise' as capitalized"; + variant "text 'inspection' as capitalized"; + variant "text 'interception' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'rescue' as capitalized"; + variant "text 'search' as capitalized"; + variant "text 'tracking' as capitalized"; +}; + + +/* It is a subclass of Event. The Action entity may be linked to Incident, Anomaly and can also be expressed taking into account other entities as location, object, etc. */ +type record Action +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + ActionStatusType actionStatus optional, + ActionType actionType optional, + http_www_cise_eu_datamodel_v1_entity_action.MissionType mission optional, + ActionPriorityType priority optional +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/action/' prefix 'action'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (actionStatus) "name as capitalized"; + variant (actionType) "name as capitalized"; + variant (mission) "name as capitalized"; + variant (priority) "name as capitalized"; +}; + + +/* In order to define the type of mission associated to an action. We suggest reusing the work already done during the "tactical situation object" project. Among many artifacts, a list of mission type has been defined.||During the scope of the Cooperation project, we chose to limit the enumeration list to the first level defined by the tactical situation object project. Sub-levels are also defined and their adoption could be considered in future developments of the data model (see "Disaster and emergency management - Shared situation awareness - Part 2: Codes for the message structure."). */ +/* . DESCRIPTION: Command & Control */ +/* . DESCRIPTION: Activities related to chemical, bacteriological, radioactive and nuclear substances */ +/* . DESCRIPTION: Fire Fighting missions */ +/* . DESCRIPTION: Fire Services Technical Intervention */ +/* . DESCRIPTION: Generic activities */ +/* . DESCRIPTION: Intelligence */ +/* . DESCRIPTION: Multi-agency Cooperation */ +/* . DESCRIPTION: Military activities */ +/* . DESCRIPTION: Network and telecommunication activities */ +/* . DESCRIPTION: Use Operational Resources */ +/* . DESCRIPTION: Police activities */ +/* . DESCRIPTION: Reconstruction/rehabilitation activities */ +/* . DESCRIPTION: Rescue activities */ +/* . DESCRIPTION: Save and Rescue Endangered Life */ +/* . DESCRIPTION: Support Community Safety */ +/* . DESCRIPTION: Social and media/communication activities */ +/* other. DESCRIPTION: Mission type not included above */ +/* non-specified. DESCRIPTION: Mission type non-specified */ +type enumerated MissionType +{ + c2, + cBRN, + fF, + fSTT, + gEN, + iNT, + mAC, + mIL, + nET, + nonSpecified, + oPR, + other, + pOL, + rEC, + rSC, + sAV, + sCS, + sOC +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/action/' prefix 'action'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'c2' as capitalized"; + variant "text 'cBRN' as capitalized"; + variant "text 'fF' as capitalized"; + variant "text 'fSTT' as capitalized"; + variant "text 'gEN' as capitalized"; + variant "text 'iNT' as capitalized"; + variant "text 'mAC' as capitalized"; + variant "text 'mIL' as capitalized"; + variant "text 'nET' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'oPR' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'pOL' as capitalized"; + variant "text 'rEC' as capitalized"; + variant "text 'rSC' as capitalized"; + variant "text 'sAV' as capitalized"; + variant "text 'sCS' as capitalized"; + variant "text 'sOC' as capitalized"; +}; + + +} +/*with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/action/' prefix 'action'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +}*/ diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_agent.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_agent.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..0ea8fd705a5ab300822221dfc5239da8e62ae53b --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_agent.ttcn @@ -0,0 +1,1521 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_agent.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:48 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - AgentRoleInAgentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +// - AgentRoleInLocationType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +// - AgentRoleInObjectType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +// - AgentRoleInRiskType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +// - Agent.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +// - DutyType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +// - ISO3166CountryCodeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/agent/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_agent { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +import from http_www_cise_eu_datamodel_v1_entity_location all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_entity_risk all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; + + +import from http_www_cise_eu_datamodel_v1_entity_document all; + +import from http_www_cise_eu_datamodel_v1_entity_organization all; +import from http_www_cise_eu_datamodel_v1_entity_person all; + + +/* This enumeration presents the relationship between two Agents. */ +/* leads. DESCRIPTION: Agent who leads the other Agent(s) */ +/* works for. DESCRIPTION: Agent who works for the other Agent(s) */ +/* manages security CSO. DESCRIPTION: Person who manages the security of an organization */ +/* encompasses. DESCRIPTION: Agent who encompasses the other Agent(s) */ +/* owns. DESCRIPTION: Person who owns the organization. */ +/* other. DESCRIPTION: Any other role/relationship not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated AgentRoleInAgentType +{ + encompasses, + leads, + managesSecurityCSO, + nonSpecified, + other, + owns, + worksFor +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'encompasses' as capitalized"; + variant "text 'leads' as capitalized"; + variant "text 'managesSecurityCSO' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'owns' as capitalized"; + variant "text 'worksFor' as capitalized"; +}; + + +/* This enumeration presents the relationship between Agent and Location. */ +/* owns. DESCRIPTION: Owns the location */ +/* is located in. DESCRIPTION: Is the (permanent) location of the agent */ +/* country of birth. DESCRIPTION: Is the country where the agent was birth */ +/* place of birth. DESCRIPTION: Is the place where the agent was birth */ +/* country of death. DESCRIPTION: Is the country where the agent died */ +/* place of death. DESCRIPTION: Is the place where the agent died */ +/* embarkation port. DESCRIPTION: Port in which the agent embarked */ +/* disembarkation port. DESCRIPTION: Port in which the agent disembarked */ +/* country of residence. DESCRIPTION: The country in which the agent normally resides */ +/* other. DESCRIPTION: Any other relationship not mentioned above */ +/* non-specified. DESCRIPTION: Relationship not specified */ +type enumerated AgentRoleInLocationType +{ + countryOfBirth, + countryOfDeath, + countryOfResidence, + disembarkationPort, + embarkationPort, + isLocatedIn, + nonSpecified, + other, + owns, + placeOfBirth, + placeOfDeath +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'countryOfBirth' as capitalized"; + variant "text 'countryOfDeath' as capitalized"; + variant "text 'countryOfResidence' as capitalized"; + variant "text 'disembarkationPort' as capitalized"; + variant "text 'embarkationPort' as capitalized"; + variant "text 'isLocatedIn' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'owns' as capitalized"; + variant "text 'placeOfBirth' as capitalized"; + variant "text 'placeOfDeath' as capitalized"; +}; + + +/* This enumeration presents the relationship between Agent and Object. */ +/* owner. DESCRIPTION: Owns the object */ +/* ship agent. DESCRIPTION: Is the agent of the object */ +/* passenger. DESCRIPTION: Is a passenger of the object */ +/* crew member. DESCRIPTION: Is a member of the crew of the object */ +/* captain master. DESCRIPTION: Is the master of the object */ +/* ship operating company. DESCRIPTION: Is the master of the object */ +/* company security officer. DESCRIPTION: Is the security officer of the company */ +/* employee. DESCRIPTION: Is an employee of the object */ +/* vessel builder. DESCRIPTION: The Vessel Builder */ +/* vessel charterer. DESCRIPTION: The Vessel Charterer */ +/* vessel registered owner. DESCRIPTION: The Vessel Registered Owner */ +/* vessel company. DESCRIPTION: The Vessel Company */ +/* shipping agent. DESCRIPTION: Shipping agent of the goods */ +/* declarant. DESCRIPTION: Declarant of the goods */ +/* carrier agent. DESCRIPTION: Carrier agent of the goods */ +/* shipping line. DESCRIPTION: Shipping line for the goods */ +/* customs broker. DESCRIPTION: Customs broker of the goods */ +/* DPG contact point. DESCRIPTION: DGP (dangerous and polluting goods) contact point */ +/* other. DESCRIPTION: Any other role not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated AgentRoleInObjectType +{ + captainMaster, + carrierAgent, + companySecurityOfficer, + crewMember, + customsBroker, + dGPContactPoint, + declarant, + employee, + nonSpecified, + other, + owner, + passenger, + shipAgent, + shipOperatingCompany, + shippingAgent, + shippingLine, + vesselBuilder, + vesselCharterer, + vesselCompany, + vesselRegisteredOwner +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'captainMaster' as capitalized"; + variant "text 'carrierAgent' as capitalized"; + variant "text 'companySecurityOfficer' as capitalized"; + variant "text 'crewMember' as capitalized"; + variant "text 'customsBroker' as capitalized"; + variant "text 'dGPContactPoint' as capitalized"; + variant "text 'declarant' as capitalized"; + variant "text 'employee' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'owner' as capitalized"; + variant "text 'passenger' as capitalized"; + variant "text 'shipAgent' as capitalized"; + variant "text 'shipOperatingCompany' as capitalized"; + variant "text 'shippingAgent' as capitalized"; + variant "text 'shippingLine' as capitalized"; + variant "text 'vesselBuilder' as capitalized"; + variant "text 'vesselCharterer' as capitalized"; + variant "text 'vesselCompany' as capitalized"; + variant "text 'vesselRegisteredOwner' as capitalized"; +}; + + +/* This enumeration presents the role of Agent in relation to Risk. */ +/* cause. DESCRIPTION: Agent is the cause of the risk */ +/* involved. DESCRIPTION: Agent is somehow involved in the risk */ +/* reports. DESCRIPTION: Agent is reporting of the risk */ +/* other. DESCRIPTION: Any other relation not mentioned above */ +/* non-specified. DESCRIPTION: Relation not specified */ +type enumerated AgentRoleInRiskType +{ + cause, + involved, + nonSpecified, + other, + reports +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'cause' as capitalized"; + variant "text 'involved' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'reports' as capitalized"; +}; + + +/* xs:include schemaLocation="Agent.xsd"/ */ + + +/* The Agent is one of the core entities of the overall data model of the information sharing environment. By definition, an Agent is an operative entity that plays a role in any Event, owns, handles or operates Objects such as Cargo or Assets, creates and exploits Documents etc. It is an entity which holds information about individual persons or organizations which are involved as actors or targets in the various events and activities. Agent can have relationship with other agents, objects and locations. Agent can also be related to risks in different roles. Agent is an abstract entity which has two sub-entities Person and Organization. */ +type record Agent +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; +}; + + +/* The Agent is one of the core entities of the overall data model of the information sharing environment. By definition, an Agent is an operative entity that plays a role in any Event, owns, handles or operates Objects such as Cargo or Assets, creates and exploits Documents etc. It is an entity which holds information about individual persons or organizations which are involved as actors or targets in the various events and activities. Agent can have relationship with other agents, objects and locations. Agent can also be related to risks in different roles. Agent is an abstract entity which has two sub-entities Person and Organization. */ +type union Agent_derivations +{ + Agent agent, + /* A particular sub-class of organization FormalOrganization can be used to indicate organizations that are recognized in the world at large, in particular in legal jurisdictions, with associated rights and responsibilities. Examples include a corporation, charity, government or church. */ + FormalOrganization formalOrganization, + /* The class Organization is a sub-class of an abstract class Agent. Organization represents a structured and legally recognized association of humans and material resources for some common purpose or reason for existence which goes beyond the set of people belonging to it. An organization may itself be involved as actor or target in the various events and activities. Organization can have the same associations and relationships than the parent-class Agent. Thus it can have relationship with other agents, objects and locations or it can be related to risks in different roles. Organization has four sub-classes: OrganizationalUnit, PortOrganization, FormalOrganization and OrganizationalCollaboration. */ + Organization organization, + /* The sub-class OrganizationalCollaboration is defined to describe a collaboration between two or more Organizations such as a project. OrganizationalCollaboration meets the criteria for being an Organization in that it has an identity and defined purpose independent of its particular members but is neither a formally recognized legal entity nor a sub-unit within some larger organization. Might typically have a shorter lifetime than the Organizations within it, but not necessarily. */ + OrganizationalCollaboration organizationalCollaboration, + /* In some cases it is useful to refer to departments or organizational units such as the IT department which only have meaning within the context of the containing organization and would not be regarded as a legal entity in its own right. This situation is supported by a subclass of Organization called OrganizationalUnit. */ + OrganizationalUnit organizationalUnit, + /* The Person Class is a sub class of the more general 'Agent' class that encompasses organizations, legal entities, groups etc. - any entity that is able to carry out actions. The data type properties of the Person class do not have any cardinality restrictions and as such all are optional. However, guidance is provided for the usage of each property in the following sections. */ + Person person, + /* A particular sub-class of organization has been defined to be used when modelling IMO recognized ports. PortOrganization carries some additional attributes that carry information relevant only to ports. Subclass of Organization. */ + PortOrganization portOrganization +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "useType"; + variant (agent) "name as capitalized"; + variant (formalOrganization) "name as capitalized"; + variant (organization) "name as capitalized"; + variant (organizationalCollaboration) "name as capitalized"; + variant (organizationalUnit) "name as capitalized"; + variant (person) "name as capitalized"; + variant (portOrganization) "name as capitalized"; +}; + + +/* This enumeration presents the role of Agent in relation to Risk. */ +/* able seaman. DESCRIPTION: Able Seaman */ +/* agent. DESCRIPTION: Agent */ +/* asst food bev mngr. DESCRIPTION: Assistant Food and Beverage Manager */ +/* bar manager. DESCRIPTION: Bar Manager */ +/* bar service. DESCRIPTION: Bar Service */ +/* bosun. DESCRIPTION: Bosun */ +/* cadet. DESCRIPTION: Cadet */ +/* captain. DESCRIPTION: Captain */ +/* cargo technician. DESCRIPTION: Cargo Technician */ +/* casino staff. DESCRIPTION: Casino Staff */ +/* chief cook. DESCRIPTION: Chief Cook */ +/* chief electrician. DESCRIPTION: Chief Electrician */ +/* chief housekeeper. DESCRIPTION: Chief Housekeeper */ +/* chief engineer. DESCRIPTION: Chief Engineer */ +/* chief master. DESCRIPTION: Chief Master */ +/* chief mate. DESCRIPTION: Chief Mate */ +/* chief officer. DESCRIPTION: Chief Officer */ +/* chief purser. DESCRIPTION: Chief Purser */ +/* chief steward. DESCRIPTION: Chief Steward */ +/* class surveyor. DESCRIPTION: Class Surveyor */ +/* CSO. DESCRIPTION: Company Security Officer */ +/* cook. DESCRIPTION: Cook */ +/* crane operator. DESCRIPTION: Crane Operator */ +/* crew member. DESCRIPTION: Crew Member */ +/* cruise director. DESCRIPTION: Cruise Director */ +/* cruise staff. DESCRIPTION: Cruise Staff */ +/* deck apprentice. DESCRIPTION: Deck Apprentice */ +/* deck fitter. DESCRIPTION: Deck Filter */ +/* deck officer. DESCRIPTION: Deck Officer */ +/* deckhand. DESCRIPTION: Deckhand, Deck Crew */ +/* doctor. DESCRIPTION: Doctor */ +/* donkeyman. DESCRIPTION: Donkeyman */ +/* electrical engineer. DESCRIPTION: Electrical Engineer */ +/* electrical officer. DESCRIPTION: Electrical Officer */ +/* electrician. DESCRIPTION: Electrician */ +/* engineer cadet. DESCRIPTION: Engineer Cadet, Engine Apprentice */ +/* engineering crew. DESCRIPTION: Engineering Crew, Engine Crew */ +/* engine fitter. DESCRIPTION: Engine Fitter */ +/* entertainment. DESCRIPTION: Entertainment */ +/* facilities crew. DESCRIPTION: Facilities Crew */ +/* facilities manager. DESCRIPTION: Facilities Manager */ +/* first asst engineer. DESCRIPTION: First Assistant Engineer */ +/* first engineer. DESCRIPTION: First Engineer */ +/* first mate. DESCRIPTION: First Mate */ +/* first officer. DESCRIPTION: First Officer */ +/* fitter. DESCRIPTION: Fitter */ +/* fourth officer. DESCRIPTION: Fourth Officer */ +/* food bev mngr. DESCRIPTION: Food and Beverage Manager, Catering Officer */ +/* food service. DESCRIPTION: Food Service, Catering Crew */ +/* fourth asst engineer. DESCRIPTION: Fourth Assistant Engineer, Fourth Engineer */ +/* greaser. DESCRIPTION: Greaser */ +/* hospitality. DESCRIPTION: Hospitality */ +/* hotel director. DESCRIPTION: Hotel Director */ +/* hotel staff. DESCRIPTION: Hotel Staff */ +/* housekeeping staff. DESCRIPTION: Housekeeping Staff */ +/* information technology. DESCRIPTION: Information Technology */ +/* junior engineer. DESCRIPTION: Junior Engineer */ +/* laundry master. DESCRIPTION: Laundry Master */ +/* lifeboatman. DESCRIPTION: Lifeboatman */ +/* maitred. DESCRIPTION: Maitred */ +/* marine crew. DESCRIPTION: Marine Crew */ +/* marketing revenue mngr. DESCRIPTION: Marketing Revenue Manager */ +/* master. DESCRIPTION: Master */ +/* master first class plilot. DESCRIPTION: Master First Class Pilot */ +/* mate first class pilot. DESCRIPTION: Mate First Class Pilot */ +/* mechanic. DESCRIPTION: Mechanic */ +/* medical staff. DESCRIPTION: Medical Staff */ +/* messman. DESCRIPTION: Messman */ +/* motorman. DESCRIPTION: Motorman */ +/* oiler. DESCRIPTION: Oiler */ +/* operator. DESCRIPTION: Operator */ +/* ordinairy seaman. DESCRIPTION: Ordinairy Seaman */ +/* owner. DESCRIPTION: Owner */ +/* painter. DESCRIPTION: Painter */ +/* porter. DESCRIPTION: Porter */ +/* provision. DESCRIPTION: Provision */ +/* provision master. DESCRIPTION: Provision Master */ +/* pumpman. DESCRIPTION: Pumpman, Pump Man */ +/* QMED. DESCRIPTION: QMED */ +/* radio officer. DESCRIPTION: Radio Officer */ +/* reeferman. DESCRIPTION: Reeferman */ +/* repair man. DESCRIPTION: Repair Man */ +/* ridding crew. DESCRIPTION: Ridding Crew */ +/* safety and security. DESCRIPTION: Safety And Security */ +/* second asst engineer. DESCRIPTION: Second Assistant Engineer, Second Engineer */ +/* second mate. DESCRIPTION: Second Mate */ +/* second officer. DESCRIPTION: Second Officer */ +/* SSO. DESCRIPTION: Ship Security Officer */ +/* staff captain. DESCRIPTION: Staff Captain */ +/* steward. DESCRIPTION: Steward */ +/* superintendent. DESCRIPTION: Superintendent */ +/* tankerman. DESCRIPTION: Tankerman */ +/* third asst engineer. DESCRIPTION: Third Assistant Engineer, Third Engineer */ +/* third mate. DESCRIPTION: Third Mate */ +/* third officer. DESCRIPTION: Third Officer */ +/* third party. DESCRIPTION: Third Party */ +/* truck mechanic. DESCRIPTION: Truck Mechanic */ +/* tunnelman. DESCRIPTION: Tunnelman */ +/* utility person. DESCRIPTION: Utility Person */ +/* vetting inspector. DESCRIPTION: Vetting inspector */ +/* welder. DESCRIPTION: Welder */ +/* wiper. DESCRIPTION: Wiper */ +/* yard personell. DESCRIPTION: Yard Personnel */ +/* other. DESCRIPTION: Any other duty not mentioned above */ +/* non-specified. DESCRIPTION: Duty not specified */ +type enumerated DutyType +{ + ableSeaman, + agent, + asstFoodBevMngr, + barManager, + barService, + bosun, + cSO, + cadet, + captain, + cargoTechnician, + casinoStaff, + chiefCook, + chiefElectrician, + chiefEngineer, + chiefHousekeeper, + chiefMaster, + chiefMate, + chiefOfficer, + chiefPurser, + chiefSteward, + classSurveyor, + cook, + craneOperator, + crewMember, + cruiseDirector, + cruiseStaff, + deckApprentice, + deckFitter, + deckOfficer, + deckhand, + doctor, + donkeyman, + electricalEngineer, + electricalOfficer, + electrician, + engineFitter, + engineerCadet, + engineeringCrew, + entertainment, + facilitiesCrew, + facilitiesManager, + firstAsstEngineer, + firstEngineer, + firstMate, + firstOfficer, + fitter, + foodBevMngr, + foodService, + fourthAsstEngineer, + fourthOfficer, + greaser, + hospitality, + hotelDirector, + hotelStaff, + housekeepingStaff, + informationTechnology, + juniorEngineer, + laundryMaster, + lifeboatman, + maitred, + marineCrew, + marketingRevenueMngr, + master, + masterFirstClassPlilot, + mateFirstClassPilot, + mechanic, + medicalStaff, + messman, + motorman, + nonSpecified, + oiler, + operator, + ordinairySeaman, + other, + owner, + painter, + porter, + provision, + provisionMaster, + pumpman, + qMED, + radioOfficer, + reeferman, + repairMan, + riddingCrew, + sSO, + safetyAndSecurity, + secondAsstEngineer, + secondMate, + secondOfficer, + staffCaptain, + steward, + superintendent, + tankerman, + thirdAsstEngineer, + thirdMate, + thirdOfficer, + thirdParty, + truckMechanic, + tunnelman, + utilityPerson, + vettingInspector, + welder, + wiper, + yardPersonell +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'ableSeaman' as capitalized"; + variant "text 'agent' as capitalized"; + variant "text 'asstFoodBevMngr' as capitalized"; + variant "text 'barManager' as capitalized"; + variant "text 'barService' as capitalized"; + variant "text 'bosun' as capitalized"; + variant "text 'cSO' as capitalized"; + variant "text 'cadet' as capitalized"; + variant "text 'captain' as capitalized"; + variant "text 'cargoTechnician' as capitalized"; + variant "text 'casinoStaff' as capitalized"; + variant "text 'chiefCook' as capitalized"; + variant "text 'chiefElectrician' as capitalized"; + variant "text 'chiefEngineer' as capitalized"; + variant "text 'chiefHousekeeper' as capitalized"; + variant "text 'chiefMaster' as capitalized"; + variant "text 'chiefMate' as capitalized"; + variant "text 'chiefOfficer' as capitalized"; + variant "text 'chiefPurser' as capitalized"; + variant "text 'chiefSteward' as capitalized"; + variant "text 'classSurveyor' as capitalized"; + variant "text 'cook' as capitalized"; + variant "text 'craneOperator' as capitalized"; + variant "text 'crewMember' as capitalized"; + variant "text 'cruiseDirector' as capitalized"; + variant "text 'cruiseStaff' as capitalized"; + variant "text 'deckApprentice' as capitalized"; + variant "text 'deckFitter' as capitalized"; + variant "text 'deckOfficer' as capitalized"; + variant "text 'deckhand' as capitalized"; + variant "text 'doctor' as capitalized"; + variant "text 'donkeyman' as capitalized"; + variant "text 'electricalEngineer' as capitalized"; + variant "text 'electricalOfficer' as capitalized"; + variant "text 'electrician' as capitalized"; + variant "text 'engineFitter' as capitalized"; + variant "text 'engineerCadet' as capitalized"; + variant "text 'engineeringCrew' as capitalized"; + variant "text 'entertainment' as capitalized"; + variant "text 'facilitiesCrew' as capitalized"; + variant "text 'facilitiesManager' as capitalized"; + variant "text 'firstAsstEngineer' as capitalized"; + variant "text 'firstEngineer' as capitalized"; + variant "text 'firstMate' as capitalized"; + variant "text 'firstOfficer' as capitalized"; + variant "text 'fitter' as capitalized"; + variant "text 'foodBevMngr' as capitalized"; + variant "text 'foodService' as capitalized"; + variant "text 'fourthAsstEngineer' as capitalized"; + variant "text 'fourthOfficer' as capitalized"; + variant "text 'greaser' as capitalized"; + variant "text 'hospitality' as capitalized"; + variant "text 'hotelDirector' as capitalized"; + variant "text 'hotelStaff' as capitalized"; + variant "text 'housekeepingStaff' as capitalized"; + variant "text 'informationTechnology' as capitalized"; + variant "text 'juniorEngineer' as capitalized"; + variant "text 'laundryMaster' as capitalized"; + variant "text 'lifeboatman' as capitalized"; + variant "text 'maitred' as capitalized"; + variant "text 'marineCrew' as capitalized"; + variant "text 'marketingRevenueMngr' as capitalized"; + variant "text 'master' as capitalized"; + variant "text 'masterFirstClassPlilot' as capitalized"; + variant "text 'mateFirstClassPilot' as capitalized"; + variant "text 'mechanic' as capitalized"; + variant "text 'medicalStaff' as capitalized"; + variant "text 'messman' as capitalized"; + variant "text 'motorman' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'oiler' as capitalized"; + variant "text 'operator' as capitalized"; + variant "text 'ordinairySeaman' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'owner' as capitalized"; + variant "text 'painter' as capitalized"; + variant "text 'porter' as capitalized"; + variant "text 'provision' as capitalized"; + variant "text 'provisionMaster' as capitalized"; + variant "text 'pumpman' as capitalized"; + variant "text 'qMED' as capitalized"; + variant "text 'radioOfficer' as capitalized"; + variant "text 'reeferman' as capitalized"; + variant "text 'repairMan' as capitalized"; + variant "text 'riddingCrew' as capitalized"; + variant "text 'sSO' as capitalized"; + variant "text 'safetyAndSecurity' as capitalized"; + variant "text 'secondAsstEngineer' as capitalized"; + variant "text 'secondMate' as capitalized"; + variant "text 'secondOfficer' as capitalized"; + variant "text 'staffCaptain' as capitalized"; + variant "text 'steward' as capitalized"; + variant "text 'superintendent' as capitalized"; + variant "text 'tankerman' as capitalized"; + variant "text 'thirdAsstEngineer' as capitalized"; + variant "text 'thirdMate' as capitalized"; + variant "text 'thirdOfficer' as capitalized"; + variant "text 'thirdParty' as capitalized"; + variant "text 'truckMechanic' as capitalized"; + variant "text 'tunnelman' as capitalized"; + variant "text 'utilityPerson' as capitalized"; + variant "text 'vettingInspector' as capitalized"; + variant "text 'welder' as capitalized"; + variant "text 'wiper' as capitalized"; + variant "text 'yardPersonell' as capitalized"; +}; + + +/* contains the Codes Of Nationality according to ISO3166 Standard */ +/* . DESCRIPTION: Ascension Island */ +/* . DESCRIPTION: Andorra */ +/* . DESCRIPTION: United Arab Emirates */ +/* . DESCRIPTION: Afghanistan */ +/* . DESCRIPTION: Antigua and Barbuda */ +/* . DESCRIPTION: Anguilla */ +/* . DESCRIPTION: Albania */ +/* . DESCRIPTION: Armenia */ +/* . DESCRIPTION: Angola */ +/* . DESCRIPTION: Antarctica */ +/* . DESCRIPTION: Argentina */ +/* . DESCRIPTION: American Samoa */ +/* . DESCRIPTION: Austria */ +/* . DESCRIPTION: Australia */ +/* . DESCRIPTION: Aruba */ +/* . DESCRIPTION: */ +/* Åland Islands */ +/* . DESCRIPTION: Azerbaijan */ +/* . DESCRIPTION: Bosnia and Herzegovina */ +/* . DESCRIPTION: Barbados */ +/* . DESCRIPTION: Bangladesh */ +/* . DESCRIPTION: Belgium */ +/* . DESCRIPTION: Burkina Faso */ +/* . DESCRIPTION: Bulgaria */ +/* . DESCRIPTION: Bahrain */ +/* . DESCRIPTION: Burundi */ +/* . DESCRIPTION: Benin */ +/* . DESCRIPTION: Saint Barth */ +/* élemy */ +/* . DESCRIPTION: Bermuda */ +/* . DESCRIPTION: Brunei Darussalam */ +/* Bolivia. DESCRIPTION: Plurinational State of Bolivia */ +/* . DESCRIPTION: Bonaire, Sint Eustatius and Saba */ +/* . DESCRIPTION: Brazil */ +/* . DESCRIPTION: Bahamas */ +/* . DESCRIPTION: Bhutan */ +/* . DESCRIPTION: Bouvet Island */ +/* . DESCRIPTION: Botswana */ +/* . DESCRIPTION: Belarus */ +/* . DESCRIPTION: Belize */ +/* . DESCRIPTION: Canada */ +/* . DESCRIPTION: Cocos (Keeling) Islands */ +/* Congo. DESCRIPTION: The Democratic Republic of the Congo */ +/* . DESCRIPTION: Central African Republic */ +/* . DESCRIPTION: Congo */ +/* . DESCRIPTION: Switzerland */ +/* . DESCRIPTION: C */ +/* ôte d'Ivoire */ +/* . DESCRIPTION: Cook Islands */ +/* . DESCRIPTION: Chile */ +/* . DESCRIPTION: Cameroon */ +/* . DESCRIPTION: China */ +/* . DESCRIPTION: Colombia */ +/* . DESCRIPTION: Clipperton Island */ +/* . DESCRIPTION: Costa Rica */ +/* . DESCRIPTION: Cuba */ +/* . DESCRIPTION: Cape Verde */ +/* . DESCRIPTION: Cura */ +/* çao */ +/* . DESCRIPTION: Christmas Island */ +/* . DESCRIPTION: Cyprus */ +/* . DESCRIPTION: Czech Republic */ +/* . DESCRIPTION: Germany */ +/* . DESCRIPTION: Diego Garcia */ +/* . DESCRIPTION: Djibouti */ +/* . DESCRIPTION: Denmark */ +/* . DESCRIPTION: Dominica */ +/* . DESCRIPTION: Dominican Republic */ +/* . DESCRIPTION: Algeria */ +/* . DESCRIPTION: Ceuta, Melilla */ +/* . DESCRIPTION: Ecuador */ +/* . DESCRIPTION: Estonia */ +/* . DESCRIPTION: Egypt */ +/* . DESCRIPTION: Western Sahara */ +/* . DESCRIPTION: Eritrea */ +/* . DESCRIPTION: Spain */ +/* . DESCRIPTION: Ethiopia */ +/* . DESCRIPTION: European Union */ +/* . DESCRIPTION: Finland */ +/* . DESCRIPTION: Fiji */ +/* . DESCRIPTION: Falkland Islands (Malvinas) */ +/* Micronesia. DESCRIPTION: Federated States of Micronesia */ +/* . DESCRIPTION: Faroe Islands */ +/* . DESCRIPTION: France */ +/* . DESCRIPTION: France, Metropolitan */ +/* . DESCRIPTION: Gabon */ +/* . DESCRIPTION: United Kingdom */ +/* . DESCRIPTION: Grenada */ +/* . DESCRIPTION: Georgia */ +/* . DESCRIPTION: French Guiana */ +/* . DESCRIPTION: Guernsey */ +/* . DESCRIPTION: Ghana */ +/* . DESCRIPTION: Gibraltar */ +/* . DESCRIPTION: Greenland */ +/* . DESCRIPTION: Gambia */ +/* . DESCRIPTION: Guinea */ +/* . DESCRIPTION: Guadeloupe */ +/* . DESCRIPTION: Equatorial Guinea */ +/* . DESCRIPTION: Greece */ +/* . DESCRIPTION: South Georgia and the South Sandwich Islands */ +/* . DESCRIPTION: Guatemala */ +/* . DESCRIPTION: Guam */ +/* . DESCRIPTION: Guinea-Bissau */ +/* . DESCRIPTION: Guyana */ +/* . DESCRIPTION: Hong Kong */ +/* . DESCRIPTION: Heard Island and McDonald Islands */ +/* . DESCRIPTION: Honduras */ +/* . DESCRIPTION: Croatia */ +/* . DESCRIPTION: Haiti */ +/* . DESCRIPTION: Hungary */ +/* . DESCRIPTION: Canary Islands */ +/* . DESCRIPTION: Indonesia */ +/* . DESCRIPTION: Ireland */ +/* . DESCRIPTION: Israel */ +/* . DESCRIPTION: Isle of Man */ +/* . DESCRIPTION: India */ +/* . DESCRIPTION: British Indian Ocean Territory */ +/* . DESCRIPTION: Iraq */ +/* Iran. DESCRIPTION: Islamic Republic of Iran */ +/* . DESCRIPTION: Iceland */ +/* . DESCRIPTION: Italy */ +/* . DESCRIPTION: Jersey */ +/* . DESCRIPTION: Jamaica */ +/* . DESCRIPTION: Jordan */ +/* . DESCRIPTION: Japan */ +/* . DESCRIPTION: Kenya */ +/* . DESCRIPTION: Kyrgyzstan */ +/* . DESCRIPTION: Cambodia */ +/* . DESCRIPTION: Kiribati */ +/* . DESCRIPTION: Comoros */ +/* . DESCRIPTION: Saint Kitts and Nevis */ +/* NorthKorea. DESCRIPTION: Democratic People's Republic of Korea */ +/* SouthKorea. DESCRIPTION: Republic of Korea */ +/* . DESCRIPTION: Kuwait */ +/* . DESCRIPTION: Cayman Islands */ +/* . DESCRIPTION: Kazakhstan */ +/* Laos. DESCRIPTION: Lao People's Democratic Republic */ +/* . DESCRIPTION: Lebanon */ +/* . DESCRIPTION: Saint Lucia */ +/* . DESCRIPTION: Liechtenstein */ +/* . DESCRIPTION: Sri Lanka */ +/* . DESCRIPTION: Liberia */ +/* . DESCRIPTION: Lesotho */ +/* . DESCRIPTION: Lithuania */ +/* . DESCRIPTION: Luxembourg */ +/* . DESCRIPTION: Latvia */ +/* . DESCRIPTION: Libya */ +/* . DESCRIPTION: Morocco */ +/* . DESCRIPTION: Monaco */ +/* Moldova. DESCRIPTION: Republic of Moldova */ +/* . DESCRIPTION: Montenegro */ +/* . DESCRIPTION: Saint Martin (French part) */ +/* . DESCRIPTION: Madagascar */ +/* . DESCRIPTION: Marshall Islands */ +/* . DESCRIPTION: The former Yugoslav Republic of Macedonia */ +/* . DESCRIPTION: Mali */ +/* . DESCRIPTION: Myanmar */ +/* . DESCRIPTION: Mongolia */ +/* . DESCRIPTION: Macao */ +/* . DESCRIPTION: Northern Mariana Islands */ +/* . DESCRIPTION: Martinique */ +/* . DESCRIPTION: Mauritania */ +/* . DESCRIPTION: Montserrat */ +/* . DESCRIPTION: Malta */ +/* . DESCRIPTION: Mauritius */ +/* . DESCRIPTION: Maldives */ +/* . DESCRIPTION: Malawi */ +/* . DESCRIPTION: Mexico */ +/* . DESCRIPTION: Malaysia */ +/* . DESCRIPTION: Mozambique */ +/* . DESCRIPTION: Namibia */ +/* . DESCRIPTION: New Caledonia */ +/* . DESCRIPTION: Niger */ +/* . DESCRIPTION: Norfolk Island */ +/* . DESCRIPTION: Nigeria */ +/* . DESCRIPTION: Nicaragua */ +/* . DESCRIPTION: Netherlands */ +/* . DESCRIPTION: Norway */ +/* . DESCRIPTION: Nepal */ +/* . DESCRIPTION: Nauru */ +/* . DESCRIPTION: Niue */ +/* . DESCRIPTION: New Zealand */ +/* . DESCRIPTION: Oman */ +/* . DESCRIPTION: Panama */ +/* . DESCRIPTION: Peru */ +/* . DESCRIPTION: French Polynesia */ +/* . DESCRIPTION: Papua New Guinea */ +/* . DESCRIPTION: Philippines */ +/* . DESCRIPTION: Pakistan */ +/* . DESCRIPTION: Poland */ +/* . DESCRIPTION: Saint Pierre and Miquelon */ +/* . DESCRIPTION: Pitcairn */ +/* . DESCRIPTION: Puerto Rico */ +/* Palestine. DESCRIPTION: State of Palestine */ +/* . DESCRIPTION: Portugal */ +/* . DESCRIPTION: Palau */ +/* . DESCRIPTION: Paraguay */ +/* . DESCRIPTION: Qatar */ +/* . DESCRIPTION: R */ +/* éunion */ +/* . DESCRIPTION: Romania */ +/* . DESCRIPTION: Serbia */ +/* Russia. DESCRIPTION: Russian Federation */ +/* . DESCRIPTION: Rwanda */ +/* . DESCRIPTION: Saudi Arabia */ +/* . DESCRIPTION: Solomon Islands */ +/* . DESCRIPTION: Seychelles */ +/* . DESCRIPTION: Sudan */ +/* . DESCRIPTION: Sweden */ +/* . DESCRIPTION: Singapore */ +/* . DESCRIPTION: Saint Helena, Ascension and Tristan da Cunha */ +/* . DESCRIPTION: Slovenia */ +/* . DESCRIPTION: Svalbard and Jan Mayen */ +/* . DESCRIPTION: Slovakia */ +/* . DESCRIPTION: Sierra Leone */ +/* . DESCRIPTION: San Marino */ +/* . DESCRIPTION: Senegal */ +/* . DESCRIPTION: Somalia */ +/* . DESCRIPTION: Suriname */ +/* . DESCRIPTION: South Sudan */ +/* . DESCRIPTION: Sao Tome and Principe */ +/* . DESCRIPTION: USSR */ +/* . DESCRIPTION: El Salvador */ +/* . DESCRIPTION: Sint Maarten (Dutch part) */ +/* Syria. DESCRIPTION: Syrian Arab Republic */ +/* . DESCRIPTION: Swaziland */ +/* . DESCRIPTION: Tristan da Cunha */ +/* . DESCRIPTION: Turks and Caicos Islands */ +/* . DESCRIPTION: Chad */ +/* . DESCRIPTION: French Southern Territories */ +/* . DESCRIPTION: Togo */ +/* . DESCRIPTION: Thailand */ +/* . DESCRIPTION: Tajikistan */ +/* . DESCRIPTION: Tokelau */ +/* . DESCRIPTION: Timor-Leste */ +/* . DESCRIPTION: Turkmenistan */ +/* . DESCRIPTION: Tunisia */ +/* . DESCRIPTION: Tonga */ +/* . DESCRIPTION: Turkey */ +/* . DESCRIPTION: Trinidad and Tobago */ +/* . DESCRIPTION: Tuvalu */ +/* Taiwan. DESCRIPTION: Taiwan, Province of China */ +/* Tanzania. DESCRIPTION: United Republic of Tanzania */ +/* . DESCRIPTION: Ukraine */ +/* . DESCRIPTION: Uganda */ +/* . DESCRIPTION: United Kingdom */ +/* . DESCRIPTION: United States Minor Outlying Islands */ +/* . DESCRIPTION: United States */ +/* . DESCRIPTION: Uruguay */ +/* . DESCRIPTION: Uzbekistan */ +/* . DESCRIPTION: Holy See (Vatican City State) */ +/* . DESCRIPTION: Saint Vincent and the Grenadines */ +/* . DESCRIPTION: Bolivarian Republic of Venezuela */ +/* . DESCRIPTION: Virgin Islands, British */ +/* . DESCRIPTION: Virgin Islands, U.S. */ +/* . DESCRIPTION: Viet Nam */ +/* . DESCRIPTION: Vanuatu */ +/* . DESCRIPTION: Wallis and Futuna */ +/* . DESCRIPTION: Samoa */ +/* . DESCRIPTION: Yemen */ +/* . DESCRIPTION: Mayotte */ +/* . DESCRIPTION: South Africa */ +/* . DESCRIPTION: Zambia */ +/* . DESCRIPTION: Zimbabwe */ +/* non-specified. DESCRIPTION: Non specified */ +type enumerated ISO3166CountryCodeType +{ + aC, + aD, + aE, + aF, + aG, + aI, + aL, + aM, + aO, + aQ, + aR, + aS, + aT, + aU, + aW, + aX, + aZ, + bA, + bB, + bD, + bE, + bF, + bG, + bH, + bI, + bJ, + bL, + bM, + bN, + bO, + bQ, + bR, + bS, + bT, + bV, + bW, + bY, + bZ, + cA, + cC, + cD, + cF, + cG, + cH, + cI, + cK, + cL, + cM, + cN, + cO, + cP, + cR, + cU, + cV, + cW, + cX, + cY, + cZ, + dE, + dG, + dJ, + dK, + dM, + dO, + dZ, + eA, + eC, + eE, + eG, + eH, + eR, + eS, + eT, + eU, + fI, + fJ, + fK, + fM, + fO, + fR, + fX, + gA, + gB, + gD, + gE, + gF, + gG, + gH, + gI, + gL, + gM, + gN, + gP, + gQ, + gR, + gS, + gT, + gU, + gW, + gY, + hK, + hM, + hN, + hR, + hT, + hU, + iC, + iD, + iE, + iL, + iM, + iN, + iO, + iQ, + iR, + iS, + iT, + jE, + jM, + jO, + jP, + kE, + kG, + kH, + kI, + kM, + kN, + kP, + kR, + kW, + kY, + kZ, + lA, + lB, + lC, + lI, + lK, + lR, + lS, + lT, + lU, + lV, + lY, + mA, + mC, + mD, + mE, + mF, + mG, + mH, + mK, + mL, + mM, + mN, + mO, + mP, + mQ, + mR, + mS, + mT, + mU, + mV, + mW, + mX, + mY, + mZ, + nA, + nC, + nE, + nF, + nG, + nI, + nL, + nO, + nP, + nR, + nU, + nZ, + nonSpecified, + oM, + pA, + pE, + pF, + pG, + pH, + pK, + pL, + pM, + pN, + pR, + pS, + pT, + pW, + pY, + qA, + rE, + rO, + rS, + rU, + rW, + sA, + sB, + sC, + sD, + sE, + sG, + sH, + sI, + sJ, + sK, + sL, + sM, + sN, + sO, + sR, + sS, + sT, + sU, + sV, + sX, + sY, + sZ, + tA, + tC, + tD, + tF, + tG, + tH, + tJ, + tK, + tL, + tM, + tN, + tO, + tR, + tT, + tV, + tW, + tZ, + uA, + uG, + uK, + uM, + uS, + uY, + uZ, + vA, + vC, + vE, + vG, + vI, + vN, + vU, + wF, + wS, + yE, + yT, + zA, + zM, + zW +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'aC' as capitalized"; + variant "text 'aD' as capitalized"; + variant "text 'aE' as capitalized"; + variant "text 'aF' as capitalized"; + variant "text 'aG' as capitalized"; + variant "text 'aI' as capitalized"; + variant "text 'aL' as capitalized"; + variant "text 'aM' as capitalized"; + variant "text 'aO' as capitalized"; + variant "text 'aQ' as capitalized"; + variant "text 'aR' as capitalized"; + variant "text 'aS' as capitalized"; + variant "text 'aT' as capitalized"; + variant "text 'aU' as capitalized"; + variant "text 'aW' as capitalized"; + variant "text 'aX' as capitalized"; + variant "text 'aZ' as capitalized"; + variant "text 'bA' as capitalized"; + variant "text 'bB' as capitalized"; + variant "text 'bD' as capitalized"; + variant "text 'bE' as capitalized"; + variant "text 'bF' as capitalized"; + variant "text 'bG' as capitalized"; + variant "text 'bH' as capitalized"; + variant "text 'bI' as capitalized"; + variant "text 'bJ' as capitalized"; + variant "text 'bL' as capitalized"; + variant "text 'bM' as capitalized"; + variant "text 'bN' as capitalized"; + variant "text 'bO' as capitalized"; + variant "text 'bQ' as capitalized"; + variant "text 'bR' as capitalized"; + variant "text 'bS' as capitalized"; + variant "text 'bT' as capitalized"; + variant "text 'bV' as capitalized"; + variant "text 'bW' as capitalized"; + variant "text 'bY' as capitalized"; + variant "text 'bZ' as capitalized"; + variant "text 'cA' as capitalized"; + variant "text 'cC' as capitalized"; + variant "text 'cD' as capitalized"; + variant "text 'cF' as capitalized"; + variant "text 'cG' as capitalized"; + variant "text 'cH' as capitalized"; + variant "text 'cI' as capitalized"; + variant "text 'cK' as capitalized"; + variant "text 'cL' as capitalized"; + variant "text 'cM' as capitalized"; + variant "text 'cN' as capitalized"; + variant "text 'cO' as capitalized"; + variant "text 'cP' as capitalized"; + variant "text 'cR' as capitalized"; + variant "text 'cU' as capitalized"; + variant "text 'cV' as capitalized"; + variant "text 'cW' as capitalized"; + variant "text 'cX' as capitalized"; + variant "text 'cY' as capitalized"; + variant "text 'cZ' as capitalized"; + variant "text 'dE' as capitalized"; + variant "text 'dG' as capitalized"; + variant "text 'dJ' as capitalized"; + variant "text 'dK' as capitalized"; + variant "text 'dM' as capitalized"; + variant "text 'dO' as capitalized"; + variant "text 'dZ' as capitalized"; + variant "text 'eA' as capitalized"; + variant "text 'eC' as capitalized"; + variant "text 'eE' as capitalized"; + variant "text 'eG' as capitalized"; + variant "text 'eH' as capitalized"; + variant "text 'eR' as capitalized"; + variant "text 'eS' as capitalized"; + variant "text 'eT' as capitalized"; + variant "text 'eU' as capitalized"; + variant "text 'fI' as capitalized"; + variant "text 'fJ' as capitalized"; + variant "text 'fK' as capitalized"; + variant "text 'fM' as capitalized"; + variant "text 'fO' as capitalized"; + variant "text 'fR' as capitalized"; + variant "text 'fX' as capitalized"; + variant "text 'gA' as capitalized"; + variant "text 'gB' as capitalized"; + variant "text 'gD' as capitalized"; + variant "text 'gE' as capitalized"; + variant "text 'gF' as capitalized"; + variant "text 'gG' as capitalized"; + variant "text 'gH' as capitalized"; + variant "text 'gI' as capitalized"; + variant "text 'gL' as capitalized"; + variant "text 'gM' as capitalized"; + variant "text 'gN' as capitalized"; + variant "text 'gP' as capitalized"; + variant "text 'gQ' as capitalized"; + variant "text 'gR' as capitalized"; + variant "text 'gS' as capitalized"; + variant "text 'gT' as capitalized"; + variant "text 'gU' as capitalized"; + variant "text 'gW' as capitalized"; + variant "text 'gY' as capitalized"; + variant "text 'hK' as capitalized"; + variant "text 'hM' as capitalized"; + variant "text 'hN' as capitalized"; + variant "text 'hR' as capitalized"; + variant "text 'hT' as capitalized"; + variant "text 'hU' as capitalized"; + variant "text 'iC' as capitalized"; + variant "text 'iD' as capitalized"; + variant "text 'iE' as capitalized"; + variant "text 'iL' as capitalized"; + variant "text 'iM' as capitalized"; + variant "text 'iN' as capitalized"; + variant "text 'iO' as capitalized"; + variant "text 'iQ' as capitalized"; + variant "text 'iR' as capitalized"; + variant "text 'iS' as capitalized"; + variant "text 'iT' as capitalized"; + variant "text 'jE' as capitalized"; + variant "text 'jM' as capitalized"; + variant "text 'jO' as capitalized"; + variant "text 'jP' as capitalized"; + variant "text 'kE' as capitalized"; + variant "text 'kG' as capitalized"; + variant "text 'kH' as capitalized"; + variant "text 'kI' as capitalized"; + variant "text 'kM' as capitalized"; + variant "text 'kN' as capitalized"; + variant "text 'kP' as capitalized"; + variant "text 'kR' as capitalized"; + variant "text 'kW' as capitalized"; + variant "text 'kY' as capitalized"; + variant "text 'kZ' as capitalized"; + variant "text 'lA' as capitalized"; + variant "text 'lB' as capitalized"; + variant "text 'lC' as capitalized"; + variant "text 'lI' as capitalized"; + variant "text 'lK' as capitalized"; + variant "text 'lR' as capitalized"; + variant "text 'lS' as capitalized"; + variant "text 'lT' as capitalized"; + variant "text 'lU' as capitalized"; + variant "text 'lV' as capitalized"; + variant "text 'lY' as capitalized"; + variant "text 'mA' as capitalized"; + variant "text 'mC' as capitalized"; + variant "text 'mD' as capitalized"; + variant "text 'mE' as capitalized"; + variant "text 'mF' as capitalized"; + variant "text 'mG' as capitalized"; + variant "text 'mH' as capitalized"; + variant "text 'mK' as capitalized"; + variant "text 'mL' as capitalized"; + variant "text 'mM' as capitalized"; + variant "text 'mN' as capitalized"; + variant "text 'mO' as capitalized"; + variant "text 'mP' as capitalized"; + variant "text 'mQ' as capitalized"; + variant "text 'mR' as capitalized"; + variant "text 'mS' as capitalized"; + variant "text 'mT' as capitalized"; + variant "text 'mU' as capitalized"; + variant "text 'mV' as capitalized"; + variant "text 'mW' as capitalized"; + variant "text 'mX' as capitalized"; + variant "text 'mY' as capitalized"; + variant "text 'mZ' as capitalized"; + variant "text 'nA' as capitalized"; + variant "text 'nC' as capitalized"; + variant "text 'nE' as capitalized"; + variant "text 'nF' as capitalized"; + variant "text 'nG' as capitalized"; + variant "text 'nI' as capitalized"; + variant "text 'nL' as capitalized"; + variant "text 'nO' as capitalized"; + variant "text 'nP' as capitalized"; + variant "text 'nR' as capitalized"; + variant "text 'nU' as capitalized"; + variant "text 'nZ' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'oM' as capitalized"; + variant "text 'pA' as capitalized"; + variant "text 'pE' as capitalized"; + variant "text 'pF' as capitalized"; + variant "text 'pG' as capitalized"; + variant "text 'pH' as capitalized"; + variant "text 'pK' as capitalized"; + variant "text 'pL' as capitalized"; + variant "text 'pM' as capitalized"; + variant "text 'pN' as capitalized"; + variant "text 'pR' as capitalized"; + variant "text 'pS' as capitalized"; + variant "text 'pT' as capitalized"; + variant "text 'pW' as capitalized"; + variant "text 'pY' as capitalized"; + variant "text 'qA' as capitalized"; + variant "text 'rE' as capitalized"; + variant "text 'rO' as capitalized"; + variant "text 'rS' as capitalized"; + variant "text 'rU' as capitalized"; + variant "text 'rW' as capitalized"; + variant "text 'sA' as capitalized"; + variant "text 'sB' as capitalized"; + variant "text 'sC' as capitalized"; + variant "text 'sD' as capitalized"; + variant "text 'sE' as capitalized"; + variant "text 'sG' as capitalized"; + variant "text 'sH' as capitalized"; + variant "text 'sI' as capitalized"; + variant "text 'sJ' as capitalized"; + variant "text 'sK' as capitalized"; + variant "text 'sL' as capitalized"; + variant "text 'sM' as capitalized"; + variant "text 'sN' as capitalized"; + variant "text 'sO' as capitalized"; + variant "text 'sR' as capitalized"; + variant "text 'sS' as capitalized"; + variant "text 'sT' as capitalized"; + variant "text 'sU' as capitalized"; + variant "text 'sV' as capitalized"; + variant "text 'sX' as capitalized"; + variant "text 'sY' as capitalized"; + variant "text 'sZ' as capitalized"; + variant "text 'tA' as capitalized"; + variant "text 'tC' as capitalized"; + variant "text 'tD' as capitalized"; + variant "text 'tF' as capitalized"; + variant "text 'tG' as capitalized"; + variant "text 'tH' as capitalized"; + variant "text 'tJ' as capitalized"; + variant "text 'tK' as capitalized"; + variant "text 'tL' as capitalized"; + variant "text 'tM' as capitalized"; + variant "text 'tN' as capitalized"; + variant "text 'tO' as capitalized"; + variant "text 'tR' as capitalized"; + variant "text 'tT' as capitalized"; + variant "text 'tV' as capitalized"; + variant "text 'tW' as capitalized"; + variant "text 'tZ' as capitalized"; + variant "text 'uA' as capitalized"; + variant "text 'uG' as capitalized"; + variant "text 'uK' as capitalized"; + variant "text 'uM' as capitalized"; + variant "text 'uS' as capitalized"; + variant "text 'uY' as capitalized"; + variant "text 'uZ' as capitalized"; + variant "text 'vA' as capitalized"; + variant "text 'vC' as capitalized"; + variant "text 'vE' as capitalized"; + variant "text 'vG' as capitalized"; + variant "text 'vI' as capitalized"; + variant "text 'vN' as capitalized"; + variant "text 'vU' as capitalized"; + variant "text 'wF' as capitalized"; + variant "text 'wS' as capitalized"; + variant "text 'yE' as capitalized"; + variant "text 'yT' as capitalized"; + variant "text 'zA' as capitalized"; + variant "text 'zM' as capitalized"; + variant "text 'zW' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/agent/' prefix 'agent'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_anomaly.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_anomaly.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9e4ed57e0d54e62b818b46253cceaf7a27801da3 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_anomaly.ttcn @@ -0,0 +1,186 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_anomaly.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:48 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - AnomalyType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/anomaly/" */ +// - Anomaly.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/anomaly/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_anomaly { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +/* This enumeration presents the different types of anomalies. */ +/* unexpected movement. DESCRIPTION: Unexpected movement */ +/* cargo leaking. DESCRIPTION: Cargo leaking */ +/* shifting of cargo. DESCRIPTION: Shifting of cargo */ +/* vessel out of traffic lanes. DESCRIPTION: Vessel out of traffic lanes */ +/* vessel with erratic movements. DESCRIPTION: Vessel with erratic movements */ +/* stain of oil sighted. DESCRIPTION: Stain of oil sighted */ +/* detecion of changes in AIS parameters. DESCRIPTION: Detection of changes in AIS parameters */ +/* performing AIS spoofing. DESCRIPTION: Performing AIS spoofing */ +/* without AIS transmission. DESCRIPTION: Without AIS transmission */ +/* do not answer on VHF ch16. DESCRIPTION: Do not answer on VHF Ch 16 */ +/* other. DESCRIPTION: Any other anomaly type not mentioned above */ +/* non-specified. DESCRIPTION: Anomaly type not specified */ +type enumerated AnomalyType +{ + cargoLeaking, + detecionOfChangesInAISParameters, + doNotAnswerOnVHFCh16, + nonSpecified, + other, + performingAISSpoofing, + shiftingOfCargo, + stainOfOilSighted, + unexpectedMovement, + vesselOutOfTrafficLanes, + vesselWithErraticMovements, + withoutAISTransmission +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/anomaly/' prefix 'anomaly'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'cargoLeaking' as capitalized"; + variant "text 'detecionOfChangesInAISParameters' as capitalized"; + variant "text 'doNotAnswerOnVHFCh16' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'performingAISSpoofing' as capitalized"; + variant "text 'shiftingOfCargo' as capitalized"; + variant "text 'stainOfOilSighted' as capitalized"; + variant "text 'unexpectedMovement' as capitalized"; + variant "text 'vesselOutOfTrafficLanes' as capitalized"; + variant "text 'vesselWithErraticMovements' as capitalized"; + variant "text 'withoutAISTransmission' as capitalized"; +}; + + +/* The class Anomaly is a sub-class of the class Event. An anomaly is used to characterize an unusual event which deserves to be noted or reported. Anomaly has the same associations and relationships than its parent-class Event. Thus it can have relationship with Document, Risk, Event, Object, Period, Location, and Agent. */ +type record Anomaly +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + AnomalyType anomalyType optional +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/anomaly/' prefix 'anomaly'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (anomalyType) "name as capitalized"; +}; + + +} +/*with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/anomaly/' prefix 'anomaly'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +}*/ diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_cargo.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_cargo.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..3ee3c85e1237a9afb010046b59905efc4b52f49d --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_cargo.ttcn @@ -0,0 +1,44622 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_cargo.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:48 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - CargoType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - CargoUnit.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - Cargo.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - Catch.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - CommunityStatusType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - ContainmentUnit.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - DangerousSubstancesType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - PackageType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - PackagingMaterialType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - PackingGroupCodeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - PollutionCodeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - SpeciesType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - UNDGType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - UnitsOfMeasureType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +// - WeightMeansType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/cargo/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_cargo { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_event all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +/* This enumeration presents the possible types of cargo. */ +/* no cargo unit liquid bulk goods. DESCRIPTION: includes i) liquids ii) liquified gases iii) molten or slurried solids, suitable for continuous mechanical handling for transport by pipeline or loose in a hold, tank or other compartment integral to a means of transport */ +/* no cargo unit solid bulk goods. DESCRIPTION: includes i) fine powders ii) granular particles iii) large, lumpy, dry solids, suitable for continuous mechanical handling, for transport by fixed installations (other than pipeline) or loose in a hold or other compartment integral to a means of transport */ +/* large freight containers. DESCRIPTION: Goods loaded in/on a freight container 20ft. (6m) or more in external length; includes lift van, swap/swop body, flat, moveable tank or similar articles of transport equipment */ +/* other freight containers. DESCRIPTION: Goods loaded in/on a freight container less than 20 ft.(6m) in external length; includes i) rigid Intermediate Bulk Containers (IBCs) ii) aircraft Unit Load Devices (ULDs); excludes i) air mode pallets ii) sea or land mode box-, tank-, post, rack-pallets not exceeding 1.25 m2 deck area */ +/* palletized. DESCRIPTION: Goods loaded on a deck; includes i) disposable one-way pallets ii) sea or land mode box-, tank-, post-, rack-pallets not exceeding 1.25 m2 deck area iii) slip-sheets iv) air mode pallets v) bricks, ingots, etc. suitably assembled for fork-lift truck handling */ +/* pre slung. DESCRIPTION: Goods (one or more items) supplied with a sling (or slings) or various materials (natural/artificial fibre, steel wire, etc.) and of various designs (loop, ring, cloverleaf, etc.); includes i) */ +/* “packaged†timber ii) Flexible Intermediate Bulk Containers (FIBCs) */ +/* mobile self-propelled units. DESCRIPTION: includes i) road motor vehicles (lorries, buses, cars) and accompanying trailers, semi-trailers, caravans engaged in goods/passenger transport ii) motorised road, agricultural, industrial, etc. vehicles moving in trade iii) live animals */ +/* “on the hoof†*/ +/* other mobile units. DESCRIPTION: non-self-propelled vehicles and equipment on wheels; includes i) unaccompanied trailers, semi-trailers railwagons, ship-borne barges engaged in goods transport ii) caravans and other road, agricultural, industrial, etc. vehicles iii) ship-borne port-to-port trailers */ +/* reserved. DESCRIPTION: */ +/* other cargo types. DESCRIPTION: all cargo not elsewhere enumerated (i.e. the residual types of cargo carried in transport: */ +/* “break-bulk†or “general†cargo, e.g. boxes, drums, bags, etc. and loose, unpacked items such as pipes, rods, etc.) */ +/* other. DESCRIPTION: */ +/* non-specified. DESCRIPTION: */ +type enumerated CargoType +{ + largeFreightContainers, + mobileSelfPropelledUnits, + noCargoUnitLiquidBulkGoods, + noCargoUnitSolidBulkGoods, + nonSpecified, + other, + otherCargoTypes, + otherFreightContainers, + otherMobileUnits, + palletized, + preSlung, + reserved +} +with { + variant "text 'largeFreightContainers' as capitalized"; + variant "text 'mobileSelfPropelledUnits' as capitalized"; + variant "text 'noCargoUnitLiquidBulkGoods' as capitalized"; + variant "text 'noCargoUnitSolidBulkGoods' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'otherCargoTypes' as capitalized"; + variant "text 'otherFreightContainers' as capitalized"; + variant "text 'otherMobileUnits' as capitalized"; + variant "text 'palletized' as capitalized"; + variant "text 'preSlung' as capitalized"; + variant "text 'reserved' as capitalized"; +}; + + +/* CargoUnit is an entity which holds information about units of goods when transported by ships. The subclasses of CargoUnit can represent either the whole cargo in a vehicle or a part of it. */ +type Object_derivations CargoUnit +with { + variant "abstract"; +}; + + +/* A Cargo refers to a set of goods transported by a ship between two ports. */ +type record Cargo +{ + record of ColourType colour_list, + record of XSD.String externalMarkings_list, + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + record of XSD.String name_list, + record of record { + Risk risk optional + } involvedRiskRel_list, + record of record { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } locationRel_list, + record of record { + Event_derivations event optional, + ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedAgentRel_list, + CargoType cargoType optional, + record of record { + CargoUnit cargoUnit optional + } containedCargoUnitRel_list +} +with { + variant (colour_list) "untagged"; + variant (colour_list[-]) "name as 'Colour'"; + variant (externalMarkings_list) "untagged"; + variant (externalMarkings_list[-]) "name as 'ExternalMarkings'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (name_list) "untagged"; + variant (name_list[-]) "name as 'Name'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].cOG) "name as capitalized"; + variant (locationRel_list[-].heading) "name as capitalized"; + variant (locationRel_list[-].metadata_list) "untagged"; + variant (locationRel_list[-].metadata_list[-]) "name as 'Metadata'"; + variant (locationRel_list[-].periodOfTime) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (locationRel_list[-].placementPurpose) "name as capitalized"; + variant (locationRel_list[-].plannedOperations_list) "untagged"; + variant (locationRel_list[-].plannedOperations_list[-]) "name as 'PlannedOperations'"; + variant (locationRel_list[-].plannedWorks) "name as capitalized"; + variant (locationRel_list[-].sensorType) "name as capitalized"; + variant (locationRel_list[-].sOG) "name as capitalized"; + variant (locationRel_list[-].specialSecurityMeasures) "name as capitalized"; + variant (locationRel_list[-].speed) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].objectRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].duty) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedAgentRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (cargoType) "name as capitalized"; + variant (containedCargoUnitRel_list) "untagged"; + variant (containedCargoUnitRel_list[-]) "name as 'ContainedCargoUnitRel'"; + variant (containedCargoUnitRel_list[-].cargoUnit) "name as capitalized"; +}; + + +/* A Catch refers to a set of distinct species catch in the see/ocean by a fishing vessel. Catch has the same associations and relationships than its parent-class Object. Thus it can have relationship with Document, Risk, Event, Location, and Agent. */ +type record Catch +{ + record of ColourType colour_list, + record of XSD.String externalMarkings_list, + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + record of XSD.String name_list, + record of record { + Risk risk optional + } involvedRiskRel_list, + record of record { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } locationRel_list, + record of record { + Event_derivations event optional, + ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedAgentRel_list, + XSD.Double catchWeight optional, + XSD.Int fishNumber optional, + XSD.Double netHeld optional, + XSD.Double quantityHeld optional, + XSD.Double sizeDeclaration optional, + XSD.String species optional, + XSD.Int totalNumber optional, + XSD.Double totalWeight optional, + WeightMeansType weightMeans optional +} +with { + variant (colour_list) "untagged"; + variant (colour_list[-]) "name as 'Colour'"; + variant (externalMarkings_list) "untagged"; + variant (externalMarkings_list[-]) "name as 'ExternalMarkings'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (name_list) "untagged"; + variant (name_list[-]) "name as 'Name'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].cOG) "name as capitalized"; + variant (locationRel_list[-].heading) "name as capitalized"; + variant (locationRel_list[-].metadata_list) "untagged"; + variant (locationRel_list[-].metadata_list[-]) "name as 'Metadata'"; + variant (locationRel_list[-].periodOfTime) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (locationRel_list[-].placementPurpose) "name as capitalized"; + variant (locationRel_list[-].plannedOperations_list) "untagged"; + variant (locationRel_list[-].plannedOperations_list[-]) "name as 'PlannedOperations'"; + variant (locationRel_list[-].plannedWorks) "name as capitalized"; + variant (locationRel_list[-].sensorType) "name as capitalized"; + variant (locationRel_list[-].sOG) "name as capitalized"; + variant (locationRel_list[-].specialSecurityMeasures) "name as capitalized"; + variant (locationRel_list[-].speed) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].objectRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].duty) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedAgentRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (catchWeight) "name as capitalized"; + variant (fishNumber) "name as capitalized"; + variant (netHeld) "name as capitalized"; + variant (quantityHeld) "name as capitalized"; + variant (sizeDeclaration) "name as capitalized"; + variant (species) "name as capitalized"; + variant (totalNumber) "name as capitalized"; + variant (totalWeight) "name as capitalized"; + variant (weightMeans) "name as capitalized"; +}; + + +/* This enumeration reflects the different customs status of cargo units on board a ship. */ +/* community goods. DESCRIPTION: (equivalent to 'T2L') for goods whose community status can be demonstrated */ +/* comunity goods from non-fiscal territories. DESCRIPTION: (equivalent to 'T2LF') for goods whose community status can be demonstrated, consigned to or originating in a part of the Community customs territory where the provisions of Directive 77/388/EEC do not apply */ +/* community goods being exported. DESCRIPTION: For goods under the export procedure */ +/* other goods. DESCRIPTION: For all other goods */ +/* non-specified. DESCRIPTION: */ +type enumerated CommunityStatusType +{ + communityGoods, + communityGoodsBeingExported, + comunityGoodsFromNonFiscalTerritories, + nonSpecified, + otherGoods +} +with { + variant "text 'communityGoods' as capitalized"; + variant "text 'communityGoodsBeingExported' as capitalized"; + variant "text 'comunityGoodsFromNonFiscalTerritories' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'otherGoods' as capitalized"; +}; + + +/* Containment unit is an entity which holds information about units of goods when transported by ships contained in containers or bulk. */ +type record ContainmentUnit +{ + record of ColourType colour_list, + record of XSD.String externalMarkings_list, + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + record of XSD.String name_list, + record of record { + Risk risk optional + } involvedRiskRel_list, + record of record { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } locationRel_list, + record of record { + Event_derivations event optional, + ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedAgentRel_list, + CommunityStatusType communityStatusOfGoods optional, + XSD.String containerMarksAndNumber optional, + DangerousSubstancesType dangerousSubstancesCode optional, + XSD.Double flashPoint optional, + XSD.Double grossQuantity optional, + XSD.String locationOnBoardContainer optional, + XSD.String locationOnBoardGoods optional, + XSD.Double netQuantity optional, + XSD.String otherMarksAndNumber optional, + PackageType packageType optional, + PackagingMaterialType packagingMaterial optional, + PackingGroupCodeType packingGroupCode optional, + PollutionCodeType pollutionCode optional, + XSD.String uNDG optional, + UnitsOfMeasureType unitsOfMeasure optional +} +with { + variant (colour_list) "untagged"; + variant (colour_list[-]) "name as 'Colour'"; + variant (externalMarkings_list) "untagged"; + variant (externalMarkings_list[-]) "name as 'ExternalMarkings'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (name_list) "untagged"; + variant (name_list[-]) "name as 'Name'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].cOG) "name as capitalized"; + variant (locationRel_list[-].heading) "name as capitalized"; + variant (locationRel_list[-].metadata_list) "untagged"; + variant (locationRel_list[-].metadata_list[-]) "name as 'Metadata'"; + variant (locationRel_list[-].periodOfTime) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (locationRel_list[-].placementPurpose) "name as capitalized"; + variant (locationRel_list[-].plannedOperations_list) "untagged"; + variant (locationRel_list[-].plannedOperations_list[-]) "name as 'PlannedOperations'"; + variant (locationRel_list[-].plannedWorks) "name as capitalized"; + variant (locationRel_list[-].sensorType) "name as capitalized"; + variant (locationRel_list[-].sOG) "name as capitalized"; + variant (locationRel_list[-].specialSecurityMeasures) "name as capitalized"; + variant (locationRel_list[-].speed) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].objectRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].duty) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedAgentRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (communityStatusOfGoods) "name as capitalized"; + variant (containerMarksAndNumber) "name as capitalized"; + variant (dangerousSubstancesCode) "name as capitalized"; + variant (flashPoint) "name as capitalized"; + variant (grossQuantity) "name as capitalized"; + variant (locationOnBoardContainer) "name as capitalized"; + variant (locationOnBoardGoods) "name as capitalized"; + variant (netQuantity) "name as capitalized"; + variant (otherMarksAndNumber) "name as capitalized"; + variant (packageType) "name as capitalized"; + variant (packagingMaterial) "name as capitalized"; + variant (packingGroupCode) "name as capitalized"; + variant (pollutionCode) "name as capitalized"; + variant (uNDG) "name as capitalized"; + variant (unitsOfMeasure) "name as capitalized"; +}; + + +/* This enumeration presents the general categories of Hazardous cargo, according to the International Maritime Dangerous Goods (IMDG) code. For additional information about IBC, IGC and INF (IBC - Intermediate Bulk Container, IGC - International Gas Carrier and INF - Irradiated Nuclear Fuel) contact the International Maritime Organization (IMO). */ +/* class 1 explosives. DESCRIPTION: Should be stored away from the crew */ +/* ’s quarters and the ship’s boats and immediately under the hold’s hatches */ +/* class 2.1 flammable gases. DESCRIPTION: Should be stored away from crew */ +/* ’s quarters and any source of heat. */ +/* class 2.2 toxic gases. DESCRIPTION: Should be stored away from any source of heat, the crew */ +/* ’s quarters and foodstuffs. */ +/* class 2.3 non-flammable compressed gases. DESCRIPTION: Store on or under the deck in a cool, well-ventilated place. Containers filled with this kind of gas will expand if heated and there is a high risk of an explosion. */ +/* class 3.1 petrol. DESCRIPTION: Combustion at less than 18 */ +/* ºC. Should always be stored above the deck. */ +/* class 3.2 fuel oil. DESCRIPTION: Combustion at between 18 */ +/* ºC and 23ºC. Should be stored above or below the deck. */ +/* class 3.3 fuel oil. DESCRIPTION: Combustion at between 23 */ +/* ºC and 61ºC. Should be stored below the deck. */ +/* class 4.1 flammable solid. DESCRIPTION: Should be stored on top or below the deck. Should be kept away from living quarters. */ +/* class 4.2 spontaneously combustible. DESCRIPTION: Should be stored in well ventilated areas and air should be able to circulate between the stored materials. */ +/* class 4.3 dangerous when wet. DESCRIPTION: Solids which are inflammable when wet or when in contact with water. Should be stored in well ventilated, dry areas and always away from any contact with water. */ +/* class 5.1 oxidizing agent. DESCRIPTION: The substances in this category can create an inflammable environment when brought into contact with oxygen. For this reason they should not be stored next to combustible materials. */ +/* class 5.2 organix peroxide. DESCRIPTION: The substances in this class can be inflammable or explosive. They should be stored above deck, covered and in a dry, cool areas. */ +/* class 6.1 toxic substances. DESCRIPTION: Toxic substances are those which can enter the human body through the mouth and cause death. For this reasons they should be stored away from foodstuffs, drinks, living quarters and materials which increase humidity, such as tobacco. */ +/* class 6.2 infectious biological substances. DESCRIPTION: These substances contain microbes which can cause illness. They should be stored away from foodstuffs, drinks and living quarters. In case of danger the nearest health authority should be notified. */ +/* class 7 radioactive materials. DESCRIPTION: Radioactive Materials - These materials should be transported in specially sealed containers. The seals must always be completely undamaged. They should preferably be stored above deck and away from living quarters, foodstuffs, unprocessed films, pharmaceuticals and chemical substances. They are divided into three groups according to their level of radioactivity. */ +/* class 8 corrosives. DESCRIPTION: The substances in this class are solids or liquids possessing, in their original state, the common property of being able, more or less severely to damage living tissue. The escape of such a substance from its packaging may also cause damage to other cargo or the ship. */ +/* class 9 miscellaneous dangerous substances. DESCRIPTION: Substances and articles not covered by other classes which experience has shown, or may show, to be of such a dangerous character that the provisions of SOLAS should apply. These include substances that are transported or offered for transport at temperatures equal to or exceeding 1000 C and in a liquid state, and solids that are transported at temperatures equal or exceeding 2400 C; */ +/* MHB materials hazardous only in bulk. DESCRIPTION: MHB (materials hazardous only in bulk) cargoes are materials which possess chemical hazards when transported in bulk that do not meet the criteria for inclusion in the IMDG classes. They are Combustible solids, Self-heating solids, Solids that evolve into flammable gas when wet, Solids that evolve toxic gas when wet, Toxic solids, Corrosive solids. See also IMSBC code. */ +/* other. DESCRIPTION: Any other dangerous substance type not mentioned above */ +/* non-specified. DESCRIPTION: Type not specified */ +type enumerated DangerousSubstancesType +{ + class1Explosives, + class21FlammableGases, + class22ToxicGases, + class23NonFlammableCompressedGases, + class31Petrol, + class32FuelOil, + class33FuelOil, + class41FlammableSolid, + class42SpontaneouslyCombustible, + class43DangerousWhenWet, + class51OxidizingAgent, + class52OrganixPeroxide, + class61ToxicSubstances, + class62InfectiousBiologicalSubstances, + class7RadioactiveMaterials, + class8Corrosives, + class9MiscellaneousDangerousSubstances, + mHBMaterialsHazardousOnlyInBulk, + nonSpecified, + other +} +with { + variant "text 'class1Explosives' as capitalized"; + variant "text 'class21FlammableGases' as capitalized"; + variant "text 'class22ToxicGases' as capitalized"; + variant "text 'class23NonFlammableCompressedGases' as capitalized"; + variant "text 'class31Petrol' as capitalized"; + variant "text 'class32FuelOil' as capitalized"; + variant "text 'class33FuelOil' as capitalized"; + variant "text 'class41FlammableSolid' as capitalized"; + variant "text 'class42SpontaneouslyCombustible' as capitalized"; + variant "text 'class43DangerousWhenWet' as capitalized"; + variant "text 'class51OxidizingAgent' as capitalized"; + variant "text 'class52OrganixPeroxide' as capitalized"; + variant "text 'class61ToxicSubstances' as capitalized"; + variant "text 'class62InfectiousBiologicalSubstances' as capitalized"; + variant "text 'class7RadioactiveMaterials' as capitalized"; + variant "text 'class8Corrosives' as capitalized"; + variant "text 'class9MiscellaneousDangerousSubstances' as capitalized"; + variant "text 'mHBMaterialsHazardousOnlyInBulk' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the possible types of package used in CargoUnit. */ +/* bulk. DESCRIPTION: bulk */ +/* loosed unpacked excluding bulk. DESCRIPTION: loosed unpacked excluding bulk */ +/* rigid box type prismatic. DESCRIPTION: rigid box type prismatic */ +/* rigid drum type cylindrical. DESCRIPTION: rigid drum type cylindrical */ +/* rigid bulb type spherical. DESCRIPTION: rigid bulb type spherical */ +/* rigid other. DESCRIPTION: rigid other */ +/* flexible bag type. DESCRIPTION: flexible bag type */ +/* for future use. DESCRIPTION: for future use */ +/* reserved. DESCRIPTION: reserved */ +/* other special packages. DESCRIPTION: other special packages */ +/* other. DESCRIPTION: Any other package type not mentioned above */ +/* non-specified. DESCRIPTION: Package type not specified */ +type enumerated PackageType +{ + bulk, + flexibleBagType, + forFutureUse, + loosedUnpackedExcludingBulk, + nonSpecified, + other, + otherSpecialPackages, + reserved, + rigidBoxTypePrismatic, + rigidBulbTypeSpherical, + rigidDrumTypeCylindrical, + rigidOther +} +with { + variant "text 'bulk' as capitalized"; + variant "text 'flexibleBagType' as capitalized"; + variant "text 'forFutureUse' as capitalized"; + variant "text 'loosedUnpackedExcludingBulk' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'otherSpecialPackages' as capitalized"; + variant "text 'reserved' as capitalized"; + variant "text 'rigidBoxTypePrismatic' as capitalized"; + variant "text 'rigidBulbTypeSpherical' as capitalized"; + variant "text 'rigidDrumTypeCylindrical' as capitalized"; + variant "text 'rigidOther' as capitalized"; +}; + + +/* This enumeration presents the possible types of packaging material used in CargoUnits. */ +/* none. DESCRIPTION: none */ +/* plastics. DESCRIPTION: plastics */ +/* paper and fibreboard. DESCRIPTION: paper and fibreboard */ +/* wood. DESCRIPTION: wood */ +/* for future use. DESCRIPTION: for future use */ +/* metal. DESCRIPTION: metal */ +/* glass porcelain ceramic stoneware. DESCRIPTION: glass porcelain ceramic stoneware */ +/* textile. DESCRIPTION: textile */ +/* reserved. DESCRIPTION: reserved */ +/* unknown or not otherwise enumerated. DESCRIPTION: unknown or not otherwise enumerated */ +/* other. DESCRIPTION: Any other package material not mentioned above. */ +/* non-specified. DESCRIPTION: Material type not specified. */ +type enumerated PackagingMaterialType +{ + forFutureUse, + glassPorcelainCeramicStoneware, + metal, + nonSpecified, + none_, + other, + paperAndFibreboard, + plastics, + reserved, + textile, + unknownOrNotOtherwiseEnumerated, + wood +} +with { + variant "text 'forFutureUse' as capitalized"; + variant "text 'glassPorcelainCeramicStoneware' as capitalized"; + variant "text 'metal' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'none_' as 'None'"; + variant "text 'other' as capitalized"; + variant "text 'paperAndFibreboard' as capitalized"; + variant "text 'plastics' as capitalized"; + variant "text 'reserved' as capitalized"; + variant "text 'textile' as capitalized"; + variant "text 'unknownOrNotOtherwiseEnumerated' as capitalized"; + variant "text 'wood' as capitalized"; +}; + + +/* This enumeration defines the danger code, according to the level of danger from the IMDG (International Maritime Dangerous Goods). */ +/* Group I: great danger. DESCRIPTION: Great danger */ +/* Group II: medium danger. DESCRIPTION: Medium danger */ +/* Group III: minor danger. DESCRIPTION: Minor danger */ +/* None. DESCRIPTION: No danger */ +/* other. DESCRIPTION: Any other code not mentioned above */ +/* non-specified. DESCRIPTION: Code not specified */ +type enumerated PackingGroupCodeType +{ + groupIGreatDanger, + groupIIIMinorDanger, + groupIIMediumDanger, + nonSpecified, + none_, + other +} +with { + variant "text 'groupIGreatDanger' as capitalized"; + variant "text 'groupIIIMinorDanger' as 'GroupIIIMinorDanger '"; + variant "text 'groupIIMediumDanger' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'none_' as 'None'"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration defines the pollution code, according to the MARPOL. */ +/* category X. DESCRIPTION: Noxious Liquid Substances which, if discharged into the sea from tank cleaning or deballasting operations, are deemed to present a major hazard to either marine resources or human health and, therefore, justify the prohibition of the discharge into the marine environment */ +/* category Y. DESCRIPTION: Noxious Liquid Substances which, if discharged into the sea from tank cleaning or deballasting operations, are deemed to present a hazard to either marine resources or human health or cause harm to amenities or other legitimate uses of the sea and therefore justify a limitation on the quality and quantity of the discharge into the marine environment */ +/* category Z. DESCRIPTION: Noxious Liquid Substances which, if discharged into the sea from tank cleaning or deballasting operations, are deemed to present a minor hazard to either marine resources or human health and therefore justify less stringent restrictions on the quality and quantity of the discharge into the marine environment */ +/* other substances. DESCRIPTION: substances which have been evaluated and found to fall outside Category X, Y or Z because they are considered to present no harm to marine resources, human health, amenities or other legitimate uses of the sea when discharged into the sea from tank cleaning of deballasting operations. The discharge of bilge or ballast water or other residues or mixtures containing these substances are not subject to any requirements of MARPOL Annex II */ +/* non-specified. DESCRIPTION: */ +type enumerated PollutionCodeType +{ + categoryX, + categoryY, + categoryZ, + nonSpecified, + otherSubstances +} +with { + variant "text 'categoryX' as capitalized"; + variant "text 'categoryY' as capitalized"; + variant "text 'categoryZ' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'otherSubstances' as capitalized"; +}; + + +/* This enumeration presents the possible types of species. */ +/* Acipenser naccarii. DESCRIPTION: Adriatic sturgeon */ +/* Acanthopagrus bifasciatus. DESCRIPTION: Twobar seabream */ +/* Amia calva. DESCRIPTION: Bowfin */ +/* Acipenser dabryanus. DESCRIPTION: Yangtze sturgeon */ +/* Antennarius analis. DESCRIPTION: Tailjet frogfish */ +/* Acipenser fulvescens. DESCRIPTION: Lake sturgeon */ +/* Anguilla bengalensis. DESCRIPTION: Indian mottled eel */ +/* Acipenser schrenckii. DESCRIPTION: Amur sturgeon */ +/* Acipenser sinensis. DESCRIPTION: Chinese sturgeon */ +/* Anguilla mossambica. DESCRIPTION: African longfin eel */ +/* Acipenser mikadoi. DESCRIPTION: Sakhalin sturgeon */ +/* Anguilla marmorata. DESCRIPTION: Giant mottled eel */ +/* Acipenser medirostris. DESCRIPTION: Green sturgeon */ +/* Acipenser nudiventris. DESCRIPTION: Fringebarbel sturgeon */ +/* Acipenser oxyrinchus. DESCRIPTION: Atlantic sturgeon */ +/* Acipenser persicus. DESCRIPTION: Persian sturgeon */ +/* Anguilla dieffenbachii. DESCRIPTION: New Zealand longfin eel */ +/* Anguilla reinhardtii. DESCRIPTION: Speckled longfin eel */ +/* Astacus astacus. DESCRIPTION: Noble crayfish */ +/* Anguilla bicolor. DESCRIPTION: */ +/* Acipenser multiscutatus. DESCRIPTION: Japanese sturgeon */ +/* Acaronia vultuosa. DESCRIPTION: */ +/* Anableps anableps. DESCRIPTION: Largescale foureyes */ +/* Aaptosyax grypus. DESCRIPTION: */ +/* Acipenser brevirostrum. DESCRIPTION: Shortnose sturgeon */ +/* Aploactis aspera. DESCRIPTION: */ +/* Albulichthys albuloides. DESCRIPTION: */ +/* Abbottina rivularis. DESCRIPTION: Chinese false gudgeon */ +/* Amblypharyngodon microlepis. DESCRIPTION: */ +/* Alburnus albidus. DESCRIPTION: */ +/* Aborichthys elongatus. DESCRIPTION: */ +/* Haliotis rufescens. DESCRIPTION: Red abalone */ +/* Haliotis gigantea. DESCRIPTION: Giant abalone */ +/* Astroblepus chotae. DESCRIPTION: */ +/* Alburnoides bipunctatus. DESCRIPTION: Schneider */ +/* Haliotis discus. DESCRIPTION: Japanese abalone */ +/* Blicca bjoerkna. DESCRIPTION: White bream */ +/* Amblypharyngodon melettinus. DESCRIPTION: Attentive carplet */ +/* Haliotis diversicolor. DESCRIPTION: Small abalone */ +/* Acanthobunocephalus nicoi. DESCRIPTION: */ +/* Amblypharyngodon mola. DESCRIPTION: Mola carplet */ +/* Haliotis midae. DESCRIPTION: Perlemoen abalone */ +/* Abramites eques. DESCRIPTION: */ +/* Haliotis rubra. DESCRIPTION: Blacklip abalone */ +/* Penaeus aztecus. DESCRIPTION: Northern brown shrimp */ +/* Amblyrhynchichthys truncatus. DESCRIPTION: */ +/* Abudefduf saxatilis. DESCRIPTION: Sergeant-major */ +/* Alabes parvulus. DESCRIPTION: Pygmy shore-eel */ +/* Ablabys binotatus. DESCRIPTION: Redskinfish */ +/* Haliotis spp. DESCRIPTION: Abalones nei */ +/* Amblyopsis rosae. DESCRIPTION: Ozark cavefish */ +/* Ammodytes tobianus. DESCRIPTION: Small sandeel */ +/* Acromycter nezumi. DESCRIPTION: */ +/* Scapharca broughtonii. DESCRIPTION: Inflated ark */ +/* Gymnocephalus cernuus. DESCRIPTION: Ruffe */ +/* Chlopsis dentatus. DESCRIPTION: Mottled false moray */ +/* Paruroconger drachi. DESCRIPTION: */ +/* Acestrorhynchus falcatus. DESCRIPTION: */ +/* Acanthogobius ommaturus. DESCRIPTION: */ +/* Salvelinus alpinus. DESCRIPTION: Arctic char */ +/* Acnodon normani. DESCRIPTION: */ +/* Japonoconger africanus. DESCRIPTION: */ +/* Kaupichthys hyoproroides. DESCRIPTION: False moray */ +/* Heteroconger longissimus. DESCRIPTION: */ +/* Macrocephenchelys brachialis. DESCRIPTION: */ +/* Aculeola nigra. DESCRIPTION: Hooktooth dogfish */ +/* Coloconger raniceps. DESCRIPTION: */ +/* Chilorhinus platyrhynchus. DESCRIPTION: Flatnose xenocongrid eel */ +/* Astrocottus leprops. DESCRIPTION: */ +/* Acropomatidae. DESCRIPTION: Glow-bellies, splitfins nei */ +/* Heteroconger hassi. DESCRIPTION: Spotted garden-eel */ +/* Paraconger caudilimbatus. DESCRIPTION: Margintail conger */ +/* Lumiconger arafura. DESCRIPTION: */ +/* Acanthocepola abbreviata. DESCRIPTION: Bandfish */ +/* Amblycirrhitus earnshawi. DESCRIPTION: */ +/* Acanthaxius caespitosa. DESCRIPTION: Deep-water mud lobster */ +/* Parabathymyrus macrophthalmus. DESCRIPTION: */ +/* Cambaridae. DESCRIPTION: American crayfishes nei */ +/* Aspidoras albater. DESCRIPTION: */ +/* Adontosternarchus balaenops. DESCRIPTION: */ +/* Acrochordonichthys chamaeleon. DESCRIPTION: */ +/* Derichthys serpentinus. DESCRIPTION: Narrownecked oceanic eel */ +/* Allotoca dugesii. DESCRIPTION: Opal allotoca */ +/* Aspredinichthys filamentosus. DESCRIPTION: Sevenbarbed banjo */ +/* Anadoras grypus. DESCRIPTION: */ +/* Amblyglyphidodon aureus. DESCRIPTION: Golden damselfish */ +/* Aplocheilus dayi. DESCRIPTION: Ceylon killifish */ +/* Pardachirus pavoninus. DESCRIPTION: Peacock sole */ +/* Artedidraco skottsbergi. DESCRIPTION: */ +/* Antipodocottus elegans. DESCRIPTION: */ +/* Autanadoras milesi. DESCRIPTION: */ +/* Nessorhamphus ingolfianus. DESCRIPTION: Duckbill oceanic eel */ +/* Artediellus dydymovi. DESCRIPTION: */ +/* Austrofundulus dolichopterus. DESCRIPTION: Saberfin killie */ +/* Antipathes dichotoma. DESCRIPTION: Black coral */ +/* Aspredo aspredo. DESCRIPTION: Banjo */ +/* Arnoldichthys spilopterus. DESCRIPTION: Niger tetra */ +/* Pardachirus marmoratus. DESCRIPTION: Finless sole */ +/* Allodontichthys hubbsi. DESCRIPTION: Whitepatched splitfin */ +/* Apuredoras rivasi. DESCRIPTION: */ +/* Artedius corallinus. DESCRIPTION: Coralline sculpin */ +/* Adinia xenica. DESCRIPTION: Diamond killifish */ +/* Aspredo cotylephorus. DESCRIPTION: Banded banjo */ +/* Artedidraco glareobarbatus. DESCRIPTION: */ +/* Alestes lateralis. DESCRIPTION: Stripped robber */ +/* Alestes baremoze. DESCRIPTION: */ +/* Astronesthes cyclophotus. DESCRIPTION: */ +/* Alestes dentex. DESCRIPTION: */ +/* Einara edentula. DESCRIPTION: Toothless smooth-head */ +/* Apteronotus albifrons. DESCRIPTION: Black ghost */ +/* Astronesthes gemmifer. DESCRIPTION: */ +/* Alestopetersius brichardi. DESCRIPTION: */ +/* Auchenipterus nigripinnis. DESCRIPTION: */ +/* Astronesthes indicus. DESCRIPTION: */ +/* Herwigia kreffti. DESCRIPTION: Krefft's smooth-head */ +/* Leptoderma lubricum. DESCRIPTION: */ +/* Aethotaxis mitopteryx. DESCRIPTION: Longfin icedevil */ +/* Ericara niger. DESCRIPTION: */ +/* Astronesthes leucopogon. DESCRIPTION: */ +/* Astronesthes neopogon. DESCRIPTION: */ +/* Aequidens rivulatus. DESCRIPTION: Green terror */ +/* Pandalus montagui. DESCRIPTION: Aesop shrimp */ +/* Aetapcus maculatus. DESCRIPTION: Warty prowfish */ +/* Auchenoceros punctatus. DESCRIPTION: Ahuru */ +/* Asemichthys taylori. DESCRIPTION: Spinynose sculpin */ +/* Atherinosoma wallacei. DESCRIPTION: */ +/* Aethiomastacembelus sexdecimspinus. DESCRIPTION: */ +/* Apteronotus leptorhynchus. DESCRIPTION: */ +/* Abyssocottus elochini. DESCRIPTION: */ +/* Forbesichthys agassizi. DESCRIPTION: Spring cavefish */ +/* Aphyoplatys duboisi. DESCRIPTION: */ +/* Atherinopsis californiensis. DESCRIPTION: Jack silverside */ +/* Aphanius dispar. DESCRIPTION: */ +/* Aplocheilichthys fuelleborni. DESCRIPTION: */ +/* Atherion africanus. DESCRIPTION: Pricklenose silverside */ +/* Asthenomacrurus fragilis. DESCRIPTION: Fragile grenadier */ +/* Aphyosemion ahli. DESCRIPTION: */ +/* Conocara fiolenti. DESCRIPTION: Fiolenti's smooth-head */ +/* Aphanius iberus. DESCRIPTION: Spanish toothcarp */ +/* Apsilus fuscus. DESCRIPTION: African forktail snapper */ +/* Antennatus flagellatus. DESCRIPTION: */ +/* Adamas formosus. DESCRIPTION: Starhead killi */ +/* Antennarius nummifer. DESCRIPTION: Spotfin frogfish */ +/* Aspidophoroides bartoni. DESCRIPTION: Aleutian alligatorfish */ +/* Amphiprion akallopisos. DESCRIPTION: Skunk clownfish */ +/* Paphies australis. DESCRIPTION: Pipi wedge clam */ +/* Alloophorus robustus. DESCRIPTION: Bulldog goodeid */ +/* Aphanius fasciatus. DESCRIPTION: */ +/* Agonus cataphractus. DESCRIPTION: Hooknose */ +/* Alfaro cultratus. DESCRIPTION: */ +/* Aulorhynchus flavidus. DESCRIPTION: Tube-snout */ +/* Assessor flavissimus. DESCRIPTION: Yellow devilfish */ +/* Amphibolis antarctica. DESCRIPTION: Sea nymph */ +/* Amphiprion akindynos. DESCRIPTION: Barrier reef anemonefish */ +/* Afronandus sheljuzhkoi. DESCRIPTION: Fourspine leaffish */ +/* Guentherus altivela. DESCRIPTION: Jellynose */ +/* Antipathes grandis. DESCRIPTION: Umimatsu, pine coral */ +/* Amblygaster clupeoides. DESCRIPTION: Bleeker smoothbelly sardinella */ +/* Gymnothorax maderensis. DESCRIPTION: Sharktooth moray */ +/* Agosia chrysogaster. DESCRIPTION: Longfin dace */ +/* Agmus lyriformis. DESCRIPTION: Gnarled catfish */ +/* Gymnothorax moringa. DESCRIPTION: Spotted moray */ +/* Gymnotus pantherinus. DESCRIPTION: */ +/* Gymnothorax polygonius. DESCRIPTION: Polygon moray */ +/* Argobuccinum olearium. DESCRIPTION: Oil-vessel triton */ +/* Gymnothorax unicolor. DESCRIPTION: Brown moray */ +/* Amblygaster leiogaster. DESCRIPTION: Smoothbelly sardinella */ +/* Alligator mississippiensis. DESCRIPTION: American alligator */ +/* Squatina squatina. DESCRIPTION: Angelshark */ +/* Gymnothorax pseudothyrsoideus. DESCRIPTION: Highfin moray */ +/* Agrostichthys parkeri. DESCRIPTION: Streamer fish */ +/* Aulostomus strigosus. DESCRIPTION: */ +/* Aplodinotus grunniens. DESCRIPTION: Freshwater drum */ +/* Amblygaster sirm. DESCRIPTION: Spotted sardinella */ +/* Gymnothorax meleagris. DESCRIPTION: Turkey moray */ +/* Gymnothorax rueppelliae. DESCRIPTION: Banded moray */ +/* Altolamprologus calvus. DESCRIPTION: */ +/* Anoplogaster cornuta. DESCRIPTION: Common fangtooth */ +/* Gymnothorax mordax. DESCRIPTION: California moray */ +/* Gymnothorax porphyreus. DESCRIPTION: */ +/* Argyrocottus zanderi. DESCRIPTION: */ +/* Acanthorhodeus asmussii. DESCRIPTION: Russian bitterling */ +/* Atopochilus chabanaudi. DESCRIPTION: */ +/* Anchovia macrolepidota. DESCRIPTION: Bigscale anchovy */ +/* Abythites lepidogenys. DESCRIPTION: */ +/* Archaulus biseriatus. DESCRIPTION: Scaled sculpin */ +/* Aphanotorulus frankei. DESCRIPTION: */ +/* Psephurus gladius. DESCRIPTION: Chinese swordfish */ +/* Atherina hepsetus. DESCRIPTION: Mediterranean sand smelt */ +/* Acanthocleithron chapini. DESCRIPTION: */ +/* Amaralia hypsiurus. DESCRIPTION: */ +/* Alertichthys blacki. DESCRIPTION: Alert pigfish */ +/* Acanthalburnus microlepis. DESCRIPTION: Blackbrow bleak */ +/* Huso dauricus. DESCRIPTION: Kaluga */ +/* Anthias anthias. DESCRIPTION: Swallowtail seaperch */ +/* Alcichthys alcicornis. DESCRIPTION: */ +/* Panturichthys isognathus. DESCRIPTION: */ +/* Cantheschenia grandisquamis. DESCRIPTION: Large-scaled leatherjacket */ +/* Astronesthes niger. DESCRIPTION: */ +/* Acanthobrama lissneri. DESCRIPTION: */ +/* Acanthobrama terraesanctae. DESCRIPTION: Kinneret bleak */ +/* Anchovia clupeoides. DESCRIPTION: Zabaleta anchovy */ +/* Ancharius brevibarbis. DESCRIPTION: */ +/* Aristaeomorpha woodmasoni. DESCRIPTION: Indian red shrimp */ +/* Allocyttus spp. DESCRIPTION: */ +/* Pythonichthys sanguineus. DESCRIPTION: */ +/* Apolemichthys guezei. DESCRIPTION: Reunion angelfish */ +/* Apistus carinatus. DESCRIPTION: Ocellated waspfish */ +/* Ambassidae. DESCRIPTION: Glassfishes */ +/* Ailia coila. DESCRIPTION: */ +/* Ijimaia dofleini. DESCRIPTION: */ +/* Alticorpus macrocleithrum. DESCRIPTION: */ +/* Acanthoclinus fuscus. DESCRIPTION: */ +/* Astacopsis gouldi. DESCRIPTION: Giant tasmanian crayfish */ +/* Ancistrus cirrhosus. DESCRIPTION: */ +/* Amphilophus citrinellus. DESCRIPTION: Midas cichlid */ +/* Alticus kirkii. DESCRIPTION: Kirk's blenny */ +/* Acarichthys heckelii. DESCRIPTION: Threadfin acara */ +/* Acanthochromis polyacanthus. DESCRIPTION: Spiny chromis */ +/* Austrophycis marginata. DESCRIPTION: Dwarf codling */ +/* Acentrogobius caninus. DESCRIPTION: Tropical sand goby */ +/* Acantholiparis opercularis. DESCRIPTION: Spiny snailfish */ +/* Albatrossia pectoralis. DESCRIPTION: Giant grenadier */ +/* Astacopsis franklinii. DESCRIPTION: */ +/* Anisarchus macrops. DESCRIPTION: */ +/* Atrosalarias fuscus. DESCRIPTION: */ +/* Apopterygion alta. DESCRIPTION: Tasselled triplefin */ +/* Apistops caloundra. DESCRIPTION: Short-armed waspfish */ +/* Alloblennius parvus. DESCRIPTION: Dwarf blenny */ +/* Acanthina monodon. DESCRIPTION: */ +/* Aidablennius sphynx. DESCRIPTION: */ +/* Ahliesaurus berryi. DESCRIPTION: */ +/* Haliotis kamtschatkana. DESCRIPTION: Pinto abalone */ +/* Aristeus alcocki. DESCRIPTION: Arabian red shrimp */ +/* Bajacalifornia burragei. DESCRIPTION: */ +/* Alaria esculenta. DESCRIPTION: Babberlocks */ +/* Agonomalus jordani. DESCRIPTION: */ +/* Artemia persimilis. DESCRIPTION: */ +/* Haliotis spadicea. DESCRIPTION: */ +/* Anthoptilum spp. DESCRIPTION: */ +/* Anthozoa. DESCRIPTION: */ +/* Artemiidae. DESCRIPTION: */ +/* Artemia sinica. DESCRIPTION: */ +/* Astrotia stokesii. DESCRIPTION: Stokes' sea snake */ +/* Cabillus lacertops. DESCRIPTION: */ +/* Artemia spp. DESCRIPTION: Brine shrimps nei */ +/* Aristeus semidentatus. DESCRIPTION: Smooth red shrimp */ +/* Alcithoe larochei. DESCRIPTION: Volute */ +/* Aulichthys japonicus. DESCRIPTION: */ +/* Aurelia aurita. DESCRIPTION: Common jellyfish */ +/* Astrea rugosa. DESCRIPTION: Rough turbo */ +/* Abalistes stellaris. DESCRIPTION: Starry triggerfish */ +/* Artemia tunisiana. DESCRIPTION: */ +/* Artemia urmiana. DESCRIPTION: */ +/* Aeneator recens. DESCRIPTION: */ +/* Agonostomus monticola. DESCRIPTION: Mountain mullet */ +/* Acutiserolis spp. DESCRIPTION: Spiny serolid isopod */ +/* Aega monophthalma. DESCRIPTION: Fish biter */ +/* Alcyonacea. DESCRIPTION: Soft corals */ +/* Anomalops katoptron. DESCRIPTION: Splitfin flashlightfish */ +/* Acanthopagrus butcheri. DESCRIPTION: */ +/* Astacus pachypus. DESCRIPTION: */ +/* Acentrogobius dayi. DESCRIPTION: Day's goby */ +/* Anisochromis kenyae. DESCRIPTION: */ +/* Akysis fuscus. DESCRIPTION: */ +/* Achoerodus gouldii. DESCRIPTION: Western blue groper */ +/* Acropoma hanedai. DESCRIPTION: */ +/* Archoplites interruptus. DESCRIPTION: Sacramento perch */ +/* Acanthocardia echinata. DESCRIPTION: European prickly cockle */ +/* Acanthocardia aculeata. DESCRIPTION: Spiny cockle */ +/* Acantholabrus palloni. DESCRIPTION: Scale-rayed wrasse */ +/* Acantholumpenus mackayi. DESCRIPTION: Pighead prickleback */ +/* Akarotaxis nudiceps. DESCRIPTION: */ +/* Bellocia koefoedi. DESCRIPTION: Koefoed's smooth-head */ +/* Acantharchus pomotis. DESCRIPTION: Mud sunfish */ +/* Arca navicularis. DESCRIPTION: Indo-Pacific ark */ +/* Ambloplites rupestris. DESCRIPTION: Rock bass */ +/* Acetes japonicus. DESCRIPTION: Akiami paste shrimp */ +/* Anomalochromis thomasi. DESCRIPTION: */ +/* Acanthopagrus australis. DESCRIPTION: Surf bream */ +/* Askoldia variegata. DESCRIPTION: */ +/* Aphrodita aculeata. DESCRIPTION: Sea mouse */ +/* Paphies spp. DESCRIPTION: */ +/* Adrianichthys kruyti. DESCRIPTION: Duckbilled buntingi */ +/* Aiakas zinorum. DESCRIPTION: */ +/* Alectis alexandrinus. DESCRIPTION: Alexandria pompano */ +/* Thunnus alalunga. DESCRIPTION: Albacore */ +/* Alepocephalus bairdii. DESCRIPTION: Baird's slickhead */ +/* Apletodon dentatus. DESCRIPTION: Small-headed clingfish */ +/* Alosa pseudoharengus. DESCRIPTION: Alewife */ +/* Beryx spp. DESCRIPTION: Alfonsinos nei */ +/* Allenichthys glauerti. DESCRIPTION: Glauert's anglerfish */ +/* Alepocephalus spp. DESCRIPTION: Slickheads nei */ +/* Alepisaurus spp. DESCRIPTION: Lancetfishes nei */ +/* Tragulichthys jaculiferus. DESCRIPTION: Longspine burrfish */ +/* Theragra chalcogramma. DESCRIPTION: Alaska pollock(=Walleye poll.) */ +/* Allocyttus verrucosus. DESCRIPTION: Warty dory */ +/* Aluterus monoceros. DESCRIPTION: Unicorn leatherjacket filefish */ +/* Aluterus scriptus. DESCRIPTION: Scribbled leatherjac. filefish */ +/* Alepisaurus brevirostris. DESCRIPTION: Short snouted lancetfish */ +/* Pleuronectes quadrituberculat.. DESCRIPTION: Alaska plaice */ +/* Atherinella argentea. DESCRIPTION: Moon silverside */ +/* Alburnus alburnus. DESCRIPTION: Bleak */ +/* Carcharhinus albimarginatus. DESCRIPTION: Silvertip shark */ +/* Aluterus spp. DESCRIPTION: Leatherjacket filefishes */ +/* Albulidae. DESCRIPTION: Bonefishes nei */ +/* Alopias vulpinus. DESCRIPTION: Thresher */ +/* Leptenchelys vermiformis. DESCRIPTION: Slender worm-eel */ +/* Alepisaurus ferox. DESCRIPTION: Long snouted lancetfish */ +/* Letharchus velifer. DESCRIPTION: */ +/* Diomedeidae. DESCRIPTION: Albatrosses nei */ +/* Anarchias allardicei. DESCRIPTION: Allardice's moray */ +/* Seriola dumerili. DESCRIPTION: Greater amberjack */ +/* Myroconger compressus. DESCRIPTION: Red eel */ +/* Echidna catenata. DESCRIPTION: Chain moray */ +/* Echidna nebulosa. DESCRIPTION: Snowflake moray */ +/* Cirrimaxilla formosa. DESCRIPTION: */ +/* Gymnothorax flavimarginatus. DESCRIPTION: Yellow-edged moray */ +/* Channomuraena vittata. DESCRIPTION: Broadbanded moray */ +/* Gymnothorax funebris. DESCRIPTION: Green moray */ +/* Seriola quinqueradiata. DESCRIPTION: Japanese amberjack */ +/* Enchelycore bayeri. DESCRIPTION: Bayer's moray */ +/* Carcharhinus amblyrhynchos. DESCRIPTION: Grey reef shark */ +/* Moringua edwardsi. DESCRIPTION: Spaghetti eel */ +/* Neoconger tuberculatus. DESCRIPTION: */ +/* Gymnomuraena zebra. DESCRIPTION: Zebra moray */ +/* Echidna peli. DESCRIPTION: Pebbletooth moray */ +/* Enchelynassa canina. DESCRIPTION: */ +/* Enchelycore pardalis. DESCRIPTION: Leopard moray eel */ +/* Artemia salina. DESCRIPTION: Brine shrimp */ +/* Gymnothorax vicinus. DESCRIPTION: Purplemouth moray */ +/* Esox reichertii. DESCRIPTION: Amur pike */ +/* Gymnothorax dovii. DESCRIPTION: Speckled moray */ +/* Gymnothorax ocellatus. DESCRIPTION: Ocellated moray */ +/* Seriola spp. DESCRIPTION: Amberjacks nei */ +/* Echidna polyzona. DESCRIPTION: Barred moray */ +/* Gymnothorax undulatus. DESCRIPTION: Undulated moray */ +/* Engraulis anchoita. DESCRIPTION: Argentine anchovy */ +/* Anchoa mitchilli. DESCRIPTION: Bay anchovy */ +/* Engraulis capensis. DESCRIPTION: Southern African anchovy */ +/* Tylosurus acus. DESCRIPTION: Agujon needlefish */ +/* Engraulis encrasicolus. DESCRIPTION: European anchovy */ +/* Lophiidae. DESCRIPTION: Anglerfishes nei */ +/* Lophius americanus. DESCRIPTION: American angler */ +/* Champsocephalus gunnari. DESCRIPTION: Mackerel icefish */ +/* Aristeus antillensis. DESCRIPTION: Purplehead gamba prawn */ +/* Lophius budegassa. DESCRIPTION: Blackbellied angler */ +/* Labichthys carinatus. DESCRIPTION: */ +/* Nemichthys scolopaceus. DESCRIPTION: Slender snipe eel */ +/* Diplodus annularis. DESCRIPTION: Annular seabream */ +/* Annamia normani. DESCRIPTION: */ +/* Anotopterus pharao. DESCRIPTION: Daggertooth */ +/* Atherinomorus balabacensis. DESCRIPTION: Balabac Island silverside */ +/* Lycengraulis grossidens. DESCRIPTION: Atlantic sabretooth anchovy */ +/* Pleuragramma antarcticum. DESCRIPTION: Antarctic silverfish */ +/* Antimora rostrata. DESCRIPTION: Blue antimora */ +/* Nemichthys curvirostris. DESCRIPTION: */ +/* Avocettina infans. DESCRIPTION: Avocet snipe eel */ +/* Pomacanthidae. DESCRIPTION: Angelfishes nei */ +/* Engraulidae. DESCRIPTION: Anchovies, etc. nei */ +/* Anabarilius polylepis. DESCRIPTION: */ +/* Aulotrachichthys novaezelandicus. DESCRIPTION: */ +/* Achirophichthys kampeni. DESCRIPTION: Freshwater snake-eel */ +/* Bascanichthys bascanoides. DESCRIPTION: Sooty sand-eel */ +/* Aplatophis chauliodus. DESCRIPTION: Fangtooth snake-eel */ +/* Dalophis obtusirostris. DESCRIPTION: */ +/* Ahlia egmontis. DESCRIPTION: Key worm eel */ +/* Herpetoichthys fossatus. DESCRIPTION: Mustachioed snake-eel */ +/* Gordiichthys irretitus. DESCRIPTION: Horsehair eel */ +/* Hemerorhinus opici. DESCRIPTION: */ +/* Cirrhimuraena inhacae. DESCRIPTION: Inhaca fringelip */ +/* Cirricaecula johnsoni. DESCRIPTION: */ +/* Apterichtus kendalli. DESCRIPTION: */ +/* Caralophia loxochila. DESCRIPTION: Slantlip eel */ +/* Echelus myrus. DESCRIPTION: Painted eel */ +/* Atherinops affinis. DESCRIPTION: Topsmelt silverside */ +/* Callechelys catostomus. DESCRIPTION: */ +/* Aprognathodon platyventris. DESCRIPTION: Stripe eel */ +/* Lamnostoma polyophthalma. DESCRIPTION: */ +/* Ethadophis byrnei. DESCRIPTION: Ordinary eel */ +/* Evips percinctus. DESCRIPTION: */ +/* Caecula pterygera. DESCRIPTION: Finny snake eel */ +/* Echiophis punctifer. DESCRIPTION: Stippled spoon-nose eel */ +/* Elapsopis versicolor. DESCRIPTION: */ +/* Aeoliscus punctulatus. DESCRIPTION: Speckled shrimpfish */ +/* Ichthyapus acuticeps. DESCRIPTION: Sharpnose sand-eel */ +/* Brachysomophis crocodilinus. DESCRIPTION: Crocodile snake eel */ +/* Leiuranus semicinctus. DESCRIPTION: Saddled snake-eel */ +/* Apristurus manis. DESCRIPTION: Ghost catshark */ +/* Acipenser baerii. DESCRIPTION: Siberian sturgeon */ +/* Apristurus saldanha. DESCRIPTION: Saldanha catshark */ +/* Apristurus indicus. DESCRIPTION: Smallbelly catshark */ +/* Acipenser stellatus. DESCRIPTION: Starry sturgeon */ +/* Apristurus maderensis. DESCRIPTION: Madeira catshark */ +/* Acipenser gueldenstaedtii. DESCRIPTION: Danube sturgeon(=Osetr) */ +/* Aphanopus intermedius. DESCRIPTION: Intermediate scabbardfish */ +/* Apristurus spp. DESCRIPTION: Deep-water catsharks */ +/* Apristurus sibogae. DESCRIPTION: Pale catshark */ +/* Apristurus parvipinnis. DESCRIPTION: Smallfin catshark */ +/* Plantae aquaticae. DESCRIPTION: Aquatic plants nei */ +/* Apristurus macrostomus. DESCRIPTION: */ +/* Acipenser transmontanus. DESCRIPTION: White sturgeon */ +/* Apogonidae. DESCRIPTION: Cardinalfishes, etc. nei */ +/* Apristurus profundorum. DESCRIPTION: Deep-water catshark */ +/* Apristurus laurussonii. DESCRIPTION: Iceland catshark */ +/* Acipenser ruthenus. DESCRIPTION: Sterlet sturgeon */ +/* Penaeus duorarum. DESCRIPTION: Northern pink shrimp */ +/* Acipenser sturio. DESCRIPTION: Sturgeon */ +/* Apristurus investigatoris. DESCRIPTION: Broadnose catshark */ +/* Apristurus nasutus. DESCRIPTION: Largenose catshark */ +/* Apristurus microps. DESCRIPTION: Smalleye catshark */ +/* Apristurus micropterygeus. DESCRIPTION: */ +/* Apristurus platyrhynchus. DESCRIPTION: Spatulasnout catshark */ +/* Acentronura australe. DESCRIPTION: Southern little pipehorse */ +/* Acanthurus bahianus. DESCRIPTION: Ocean surgeon */ +/* Asquamiceps caeruleus. DESCRIPTION: */ +/* Apeltes quadracus. DESCRIPTION: Fourspine stickleback */ +/* Aequorea aequorea. DESCRIPTION: */ +/* Mactra californica. DESCRIPTION: Californian mactra */ +/* Mactra largillierti. DESCRIPTION: Largilliert's mactra */ +/* Acanthurus chirurgus. DESCRIPTION: Doctorfish */ +/* Acanthurus lineatus. DESCRIPTION: Lined surgeonfish */ +/* Mactra nitida. DESCRIPTION: Polished mactra */ +/* Caquetaia kraussii. DESCRIPTION: */ +/* Adelosebastes latens. DESCRIPTION: */ +/* Amphipoda. DESCRIPTION: Amphipods */ +/* Acanthurus nigrofuscus. DESCRIPTION: Brown surgeonfish */ +/* Acanthurus coeruleus. DESCRIPTION: Blue tang surgeonfish */ +/* Aequidens portalegrensis. DESCRIPTION: */ +/* Acanthurus gahhm. DESCRIPTION: Black surgeonfish */ +/* Acanthurus bariene. DESCRIPTION: Black-spot surgeonfish */ +/* Mactra rostrata. DESCRIPTION: Rostrate mactra */ +/* Acanthurus triostegus. DESCRIPTION: Convict surgeonfish */ +/* Aequidens pulchrus. DESCRIPTION: Blue acara */ +/* Acanthurus olivaceus. DESCRIPTION: Orangespot surgeonfish */ +/* Mactra velata. DESCRIPTION: Concealed surf clam */ +/* Aetobatus spp. DESCRIPTION: */ +/* Asprocottus abyssalis. DESCRIPTION: */ +/* Antipatharia. DESCRIPTION: Black corals and thorny corals */ +/* Aristeus antennatus. DESCRIPTION: Blue and red shrimp */ +/* Ariosoma balearicum. DESCRIPTION: Bandtooth conger */ +/* Acrocheilus alutaceus. DESCRIPTION: Chiselmouth */ +/* Arcos decoris. DESCRIPTION: Elegant clingfish */ +/* Argentina elongata. DESCRIPTION: */ +/* Atheresthes stomias. DESCRIPTION: Arrow-tooth flounder */ +/* Argentina spp. DESCRIPTION: Argentines */ +/* Acrossocheilus hexagonolepis. DESCRIPTION: Copper mahseer */ +/* Aristeidae. DESCRIPTION: Aristeid shrimps nei */ +/* Ascelichthys rhodorus. DESCRIPTION: Rosylip sculpin */ +/* Arca spp. DESCRIPTION: Ark clams nei */ +/* Argonectes longiceps. DESCRIPTION: */ +/* Arenicola marina. DESCRIPTION: Lugworm */ +/* Ariosoma anago. DESCRIPTION: Silvery conger */ +/* Argentina kagoshimae. DESCRIPTION: */ +/* Arapaima gigas. DESCRIPTION: Arapaima */ +/* Aphareus rutilans. DESCRIPTION: Rusty jobfish */ +/* Aspidoparia morar. DESCRIPTION: */ +/* Aristaeomorpha foliacea. DESCRIPTION: Giant red shrimp */ +/* Artedidraco spp. DESCRIPTION: */ +/* Argentina silus. DESCRIPTION: Greater argentine */ +/* Aristeus varidens. DESCRIPTION: Striped red shrimp */ +/* Austrolethops wardi. DESCRIPTION: Small-eyed goby */ +/* Archolaemus blax. DESCRIPTION: */ +/* Argentina sphyraena. DESCRIPTION: Argentine */ +/* Apistogramma agassizii. DESCRIPTION: */ +/* Arripis trutta. DESCRIPTION: Australian salmon */ +/* Serrivomer beani. DESCRIPTION: Bean's sawtooth eel */ +/* Alosa alosa. DESCRIPTION: Allis shad */ +/* Apristurus stenseni. DESCRIPTION: Panama ghost catshark */ +/* Stemonidium hypomelas. DESCRIPTION: Black serrivomerid eel */ +/* Arius sagor. DESCRIPTION: Sagor catfish */ +/* Artemesia longinaris. DESCRIPTION: Argentine stiletto shrimp */ +/* Apristurus sinensis. DESCRIPTION: South China catshark */ +/* Aspidoparia jaya. DESCRIPTION: */ +/* Squatinidae. DESCRIPTION: Angelsharks, sand devils nei */ +/* Neophoca cinerea. DESCRIPTION: Australian sea lion */ +/* Scomberomorus munroi. DESCRIPTION: Australian spotted mackerel */ +/* Ascophyllum nodosum. DESCRIPTION: North Atlantic rockweed */ +/* Apristurus spongiceps. DESCRIPTION: Spongehead catshark */ +/* Caspialosa spp. DESCRIPTION: Caspian shads */ +/* Simenchelys parasiticus. DESCRIPTION: Snubnosed eel */ +/* Asparagopsis spp. DESCRIPTION: Harpoon seaweeds */ +/* Astronotus spp. DESCRIPTION: Velvety cichlids */ +/* Aspius aspius. DESCRIPTION: Asp */ +/* Asymbolus vincenti. DESCRIPTION: Gulf catshark */ +/* Apristurus verweyi. DESCRIPTION: Borneo catshark */ +/* Apsilus dentatus. DESCRIPTION: Black snapper */ +/* Asymbolus analis. DESCRIPTION: Australian spotted catshark */ +/* Assurger anzac. DESCRIPTION: Razorback scabbardfish */ +/* Acapoeta tanganicae. DESCRIPTION: */ +/* Atherina boyeri. DESCRIPTION: Big-scale sand smelt */ +/* Catostomus catostomus. DESCRIPTION: Longnose sucker */ +/* Anodontiglanis dahli. DESCRIPTION: */ +/* Catostomus tahoensis. DESCRIPTION: Tahoe sucker */ +/* Astrodoras asterifrons. DESCRIPTION: */ +/* Arctogadus glacialis. DESCRIPTION: Artic cod */ +/* Ateleopus indicus. DESCRIPTION: */ +/* Chasmistes cujus. DESCRIPTION: Cui-ui */ +/* Pleurogrammus azonus. DESCRIPTION: Okhotsk atka mackerel */ +/* Acheilognathus limbatus. DESCRIPTION: Oily bitterling */ +/* Atelomycterus macleayi. DESCRIPTION: Australian marbled catshark */ +/* Acheilognathus melanogaster. DESCRIPTION: */ +/* Catostomus commersoni. DESCRIPTION: White sucker */ +/* Atherina presbyter. DESCRIPTION: Sand smelt */ +/* Atherina breviceps. DESCRIPTION: Cape silverside */ +/* Acheilognathus rhombeus. DESCRIPTION: */ +/* Catostomus latipinnis. DESCRIPTION: Flannelmouth sucker */ +/* Acheilognathus tabira. DESCRIPTION: */ +/* Catostomus macrocheilus. DESCRIPTION: Largescale sucker */ +/* Arctogadus borisovi. DESCRIPTION: East Siberian cod */ +/* Atopocottus tribranchius. DESCRIPTION: */ +/* Actiniaria. DESCRIPTION: Sea anemones */ +/* Atelomycterus marmoratus. DESCRIPTION: Coral catshark */ +/* Allodontichthys tamazulae. DESCRIPTION: Tuxpan splitfin */ +/* Arius leptaspis. DESCRIPTION: Salmon catfish */ +/* Auchenoglanis biscutatus. DESCRIPTION: */ +/* Arius caelatus. DESCRIPTION: Engraved catfish */ +/* Arius dussumieri. DESCRIPTION: Blacktip sea catfish */ +/* Aspiolucius esocinus. DESCRIPTION: Pike asp */ +/* Arius felis. DESCRIPTION: Hardhead sea catfish */ +/* Arius gigas. DESCRIPTION: Giant sea catfish */ +/* Aulopyge huegelii. DESCRIPTION: Dalmatian barbelgudgeon */ +/* Arius arius. DESCRIPTION: Threadfin sea catfish */ +/* Arius jella. DESCRIPTION: Blackfin sea catfish */ +/* Aulohalaelurus kanakorum. DESCRIPTION: Kanakorum catshark */ +/* Aulohalaelurus labiosus. DESCRIPTION: Australian blackspot catshark */ +/* Aphyocharacidium melandetum. DESCRIPTION: */ +/* Arius nasutus. DESCRIPTION: Giant seacatfish */ +/* Auchenoglanis occidentalis. DESCRIPTION: Bubu */ +/* Austropotamobius pallipes. DESCRIPTION: White-clawed crayfish */ +/* Arius manillensis. DESCRIPTION: */ +/* Arius latiscutatus. DESCRIPTION: Rough-head sea catfish */ +/* Austroglanis sclateri. DESCRIPTION: */ +/* Arius bilineatus. DESCRIPTION: Bronze catfish */ +/* Abudefduf luridus. DESCRIPTION: Canary damsel */ +/* Arius venosus. DESCRIPTION: Veined catfish */ +/* Arius sona. DESCRIPTION: Sona sea catfish */ +/* Arius thalassinus. DESCRIPTION: Giant catfish */ +/* Arius platystomus. DESCRIPTION: Flatmouth sea catfish */ +/* Agmus scabriceps. DESCRIPTION: Bark catfish */ +/* Cetengraulis edentulus. DESCRIPTION: Atlantic anchoveta */ +/* Archosargus rhomboidalis. DESCRIPTION: Western Atlantic seabream */ +/* Astropecten irregularis. DESCRIPTION: */ +/* Aristeus virilis. DESCRIPTION: Stout red shrimp */ +/* Adventor elongatus. DESCRIPTION: */ +/* Afromastacembelus flavidus. DESCRIPTION: */ +/* Anseropoda placenta. DESCRIPTION: */ +/* Aluterus heudelotii. DESCRIPTION: Dotterel filefish */ +/* Acesta maui. DESCRIPTION: Giant file shell */ +/* Arachnopusia inchoata. DESCRIPTION: */ +/* Austrodecus simulans. DESCRIPTION: */ +/* Algansea lacustris. DESCRIPTION: P */ +/* átzcuaro chub */ +/* Ammodytes americanus. DESCRIPTION: American sand lance */ +/* Aptocyclus ventricosus. DESCRIPTION: Smooth lumpsucker */ +/* Anoplagonus inermis. DESCRIPTION: Smooth alligatorfish */ +/* Andriashevia aptera. DESCRIPTION: */ +/* Acanthurus sohal. DESCRIPTION: Sohal surgeonfish */ +/* Aprion virescens. DESCRIPTION: Green jobfish */ +/* Alepocephalus australis. DESCRIPTION: Small scaled brown slickhead */ +/* Anotopterus vorax. DESCRIPTION: Southern ocean daggertooth */ +/* Agonopsis vulsa. DESCRIPTION: Northern spearnose poacher */ +/* Astrotoma agassizii. DESCRIPTION: */ +/* Antennarius pardalis. DESCRIPTION: */ +/* Atherina spp. DESCRIPTION: Sand smelts nei */ +/* Aprion spp. DESCRIPTION: */ +/* Asteronyx loveni. DESCRIPTION: */ +/* Awaous aeneofuscus. DESCRIPTION: */ +/* Gymnothorax bacalladoi. DESCRIPTION: Canary moray */ +/* Astrothorax waitei. DESCRIPTION: Waite */ +/* ’s snake-star */ +/* Andrias davidianus. DESCRIPTION: Chinese giant salamander */ +/* Atractoscion aequidens. DESCRIPTION: Geelbek croaker */ +/* Acestrorhynchus microlepis. DESCRIPTION: Pike characin */ +/* Gymnothorax afer. DESCRIPTION: Dark moray */ +/* Acanthoplesiops hiatti. DESCRIPTION: */ +/* Aluterus schoepfii. DESCRIPTION: Orange filefish */ +/* Arius parkii. DESCRIPTION: Guinean sea catfish */ +/* Serrivomer spp. DESCRIPTION: Sawtooth eels nei */ +/* Antennarius striatus. DESCRIPTION: Striated frogfish */ +/* Enchelycore anatina. DESCRIPTION: Fangtooth moray */ +/* Artedidraco loennbergi. DESCRIPTION: */ +/* Artedidraco orianae. DESCRIPTION: */ +/* Aspistor parkeri. DESCRIPTION: Gillbacker sea catfish */ +/* Awaous lateristriga. DESCRIPTION: West African freshwater goby */ +/* Amphiarius rugispinis. DESCRIPTION: Softhead sea catfish */ +/* Artedidraco shackletoni. DESCRIPTION: */ +/* Chalcalburnus tarichi. DESCRIPTION: Tarek */ +/* Arius spp. DESCRIPTION: */ +/* Arius phrygiatus. DESCRIPTION: Kukwari sea catfish */ +/* Anodus elongatus. DESCRIPTION: */ +/* Axoclinus carminalis. DESCRIPTION: Carmine triplefin */ +/* Cancelloxus burrelli. DESCRIPTION: Slender platanna-klipfish */ +/* Xenodermichthys copei. DESCRIPTION: Bluntsnout smooth-head */ +/* Aplocheilus panchax. DESCRIPTION: Blue panchax */ +/* Ammocryptocharax elegans. DESCRIPTION: */ +/* Astyanax fasciatus. DESCRIPTION: Banded astyanax */ +/* Carcinoplax longimanus. DESCRIPTION: Long-armed crab */ +/* Sargocentron hastatum. DESCRIPTION: Red squirrelfish */ +/* Axelrodia riesei. DESCRIPTION: */ +/* Ascidia challengeri. DESCRIPTION: */ +/* Austropallene brachyura. DESCRIPTION: */ +/* Acanthosphex leurynnis. DESCRIPTION: */ +/* Asymbolus spp. DESCRIPTION: */ +/* Paralabrax nebulifer. DESCRIPTION: Barred sand bass */ +/* Axiopsis baronai. DESCRIPTION: Baron mud lobster */ +/* Arius proops. DESCRIPTION: Crucifix sea catfish */ +/* Acanthurus spp. DESCRIPTION: */ +/* Aristeus spp. DESCRIPTION: Aristeus shrimps nei */ +/* Asterropteryx ensiferus. DESCRIPTION: Miller's damsel */ +/* Stylasteridae. DESCRIPTION: Hydrocorals */ +/* Aplidiopsis discoveryi. DESCRIPTION: */ +/* Oreochromis andersonii x O. niloticus. DESCRIPTION: */ +/* Aphyocharax erythrurus. DESCRIPTION: Flametail tetra */ +/* Gymnothorax spp. DESCRIPTION: */ +/* Euastacus armatus. DESCRIPTION: Australian crayfish */ +/* Asterophysus batrachus. DESCRIPTION: */ +/* Chologaster cornuta. DESCRIPTION: Swampfish */ +/* Bathyprion danae. DESCRIPTION: Fangtooth smooth-head */ +/* Apterygocampus epinnulatus. DESCRIPTION: */ +/* Aphareus furca. DESCRIPTION: Small toothed jobfish */ +/* Anyperodon leucogrammicus. DESCRIPTION: Slender grouper */ +/* Aphyocypris chinensis. DESCRIPTION: Chinese bleak */ +/* Daysciaena albida. DESCRIPTION: Bengal corvina */ +/* Amblypomacentrus breviceps. DESCRIPTION: Black-banded demoiselle */ +/* Trachemys scripta. DESCRIPTION: Common slider */ +/* Auchenipterichthys longimanus. DESCRIPTION: */ +/* Bathytroctes microlepis. DESCRIPTION: Smallscale smooth-head */ +/* Bathylaco nielseni. DESCRIPTION: */ +/* Ammocrypta clara. DESCRIPTION: Western sand darter */ +/* Ameghinomya antiqua. DESCRIPTION: King's littleneck */ +/* Acyrtus artius. DESCRIPTION: Papillate clingfish */ +/* Astacidae, Cambaridae. DESCRIPTION: Euro-American crayfishes nei */ +/* Allomycterus pilatus. DESCRIPTION: Deep-water burrfish */ +/* Ammocrypta pellucida. DESCRIPTION: Eastern sand darter */ +/* Aphyonus brevidorsalis. DESCRIPTION: */ +/* Malaclemys terrapin. DESCRIPTION: Diamondback terrapins */ +/* Acanthicus hystrix. DESCRIPTION: */ +/* Acyrtops beryllinus. DESCRIPTION: Emerald clingfish */ +/* Austrolycus depressiceps. DESCRIPTION: */ +/* Anduzedoras arleoi. DESCRIPTION: */ +/* Chlopsis olokun. DESCRIPTION: */ +/* Acanthogorgia armata. DESCRIPTION: */ +/* Antarcturus oryx. DESCRIPTION: */ +/* Azurina eupalama. DESCRIPTION: Galapagos damsel */ +/* Conocara macropterum. DESCRIPTION: Longfin smooth-head */ +/* Argobuccinum argus. DESCRIPTION: */ +/* Anaecypris hispanica. DESCRIPTION: */ +/* Ijimaia loppei. DESCRIPTION: Loppe's tadpole fish */ +/* Arcturides cornutus. DESCRIPTION: */ +/* Bathytroctes michaelsarsi. DESCRIPTION: Michael Sars smooth-head */ +/* Acodontaster elongatus. DESCRIPTION: */ +/* Leptoderma macrops. DESCRIPTION: Grenadier smooth-head */ +/* Anthoathecatae. DESCRIPTION: Hydroids, hydromedusae */ +/* Aciculites pulchra. DESCRIPTION: Maroon pimpled ear sponge */ +/* Azygopus pinnifasciatus. DESCRIPTION: Banded-fin flounder */ +/* Callyspongia ramosa. DESCRIPTION: Airy finger sponge */ +/* Acestrorhynchidae. DESCRIPTION: */ +/* Aspistor quadriscutis. DESCRIPTION: Bressou sea catfish */ +/* Artedidraco mirus. DESCRIPTION: */ +/* Einara macrolepis. DESCRIPTION: Loosescale smooth-head */ +/* Atherina lopeziana. DESCRIPTION: */ +/* Aphareus spp. DESCRIPTION: */ +/* Antennarius indicus. DESCRIPTION: Indian frogfish */ +/* Bathylagus antarcticus. DESCRIPTION: */ +/* Sphyraena qenie. DESCRIPTION: Blackfin barracuda */ +/* Sphyraena jello. DESCRIPTION: Pickhandle barracuda */ +/* Austrobatrachus dussumieri. DESCRIPTION: Flat toadfish */ +/* Balaenopteridae. DESCRIPTION: Balaenoptid whales nei */ +/* Ablennes hians. DESCRIPTION: Flat needlefish */ +/* Sphyraena afra. DESCRIPTION: Guinean barracuda */ +/* Paralichthys olivaceus. DESCRIPTION: Bastard halibut */ +/* Batoidimorpha (Hypotremata). DESCRIPTION: Batoid fishes nei */ +/* Lateolabrax japonicus. DESCRIPTION: Japanese seabass */ +/* Barbuligobius boehlkei. DESCRIPTION: */ +/* Hemiramphus brasiliensis. DESCRIPTION: Ballyhoo halfbeak */ +/* Bathyraja maccaini. DESCRIPTION: McCain's skate */ +/* Sphyraena putnamae. DESCRIPTION: */ +/* Platax teira. DESCRIPTION: Longfin batfish */ +/* Paralabrax humeralis. DESCRIPTION: Peruvian rock seabass */ +/* Sphyraena flavicauda. DESCRIPTION: Yellowtail barracuda */ +/* Sphyraena spp. DESCRIPTION: Barracudas nei */ +/* Serranus spp. DESCRIPTION: Combers nei */ +/* Platax spp. DESCRIPTION: Batfishes */ +/* Sarda australis. DESCRIPTION: Australian bonito */ +/* Bractechlamys vexillum. DESCRIPTION: Distant scallop */ +/* Berardius arnuxii. DESCRIPTION: Arnoux's beaked whale */ +/* Paralichthys spp. DESCRIPTION: Bastard halibuts nei */ +/* Amphichthys cryptocentrus. DESCRIPTION: Bocon toadfish */ +/* Sphyraenidae. DESCRIPTION: Barracudas, etc. nei */ +/* Barbonymus altus. DESCRIPTION: Red tailed tinfoil */ +/* Barbus bynni. DESCRIPTION: */ +/* Barboides gracilis. DESCRIPTION: */ +/* Batrachomoeus occidentalis. DESCRIPTION: Western frogfish */ +/* Bathylagus euryops. DESCRIPTION: Goiter blacksmelt */ +/* Barbourisia rufa. DESCRIPTION: Velvet whalefish */ +/* Bathylagus gracilis. DESCRIPTION: */ +/* Alosa aestivalis. DESCRIPTION: Blueback shad */ +/* Barbus altidorsalis. DESCRIPTION: */ +/* Barbus capensis. DESCRIPTION: Clanwilliam yellowfish */ +/* Barbus callensis. DESCRIPTION: Algerian barb */ +/* Batrachoides liberiensis. DESCRIPTION: Hairy toadfish */ +/* Scomberomorus semifasciatus. DESCRIPTION: Broad-barred king mackerel */ +/* Barbus aeneus. DESCRIPTION: Smallmouth yellowfish */ +/* Bathylagus ochotensis. DESCRIPTION: Eared blacksmelt */ +/* Bathylagus pacificus. DESCRIPTION: Slender blacksmelt */ +/* Barbus canis. DESCRIPTION: */ +/* Barbodes balleroides. DESCRIPTION: */ +/* Scorpaena porcus. DESCRIPTION: Black scorpionfish */ +/* Barbodes platysoma. DESCRIPTION: */ +/* Barbus altianalis. DESCRIPTION: Ripon barbel */ +/* Barbopsis devecchii. DESCRIPTION: Somalian blind barb */ +/* Mesoplodon densirostris. DESCRIPTION: Blainville's beaked whale */ +/* Bifax lacinia. DESCRIPTION: Two-faced toadfish */ +/* Batrichthys albofasciatus. DESCRIPTION: White-ribbed toadfish */ +/* Barbus cyclolepis. DESCRIPTION: */ +/* Chandramara chandramara. DESCRIPTION: */ +/* Odontesthes bonariensis. DESCRIPTION: Argentinian silverside */ +/* Bryconaethiops boulengeri. DESCRIPTION: */ +/* Brycinus leuciscus. DESCRIPTION: */ +/* Bothrocarina microcephala. DESCRIPTION: */ +/* Chrysichthys grandis. DESCRIPTION: Kukumai */ +/* Chatrabus damaranus. DESCRIPTION: Pony toadfish */ +/* Chrysichthys cranchii. DESCRIPTION: Kokuni */ +/* Chrysichthys ornatus. DESCRIPTION: Ornate bagrid */ +/* Baileychromis centropomoides. DESCRIPTION: */ +/* Saxidomus giganteus. DESCRIPTION: Butter clam */ +/* Brycon moorei. DESCRIPTION: Dorada */ +/* Chrysichthys longipinnis. DESCRIPTION: Aluminum catfish */ +/* Brycinus longipinnis. DESCRIPTION: Longfin tetra */ +/* Buccinum humphreysianum. DESCRIPTION: Humphrey's buccinum */ +/* Bactronophorus thoracites. DESCRIPTION: Edible shipworm */ +/* Chrysichthys brachynema. DESCRIPTION: Kibonde */ +/* Chrysichthys mabusi. DESCRIPTION: */ +/* Chrysichthys maurus. DESCRIPTION: */ +/* Brycinus luteus. DESCRIPTION: */ +/* Bathymicrops brevianalis. DESCRIPTION: */ +/* Ziphius cavirostris. DESCRIPTION: Cuvier's beaked whale */ +/* Clypeaster rotundus. DESCRIPTION: Circular sea bisquit */ +/* Chrysichthys auratus. DESCRIPTION: */ +/* Bostrichthys zonatus. DESCRIPTION: Barred gudgeon */ +/* Brachydanio acuticephala. DESCRIPTION: */ +/* Badis badis. DESCRIPTION: Badis */ +/* Bidenichthys capensis. DESCRIPTION: Freetail brotula */ +/* Daector dowi. DESCRIPTION: Dow's toadfish */ +/* Bodianus eclancheri. DESCRIPTION: Harlequin wrasse */ +/* Benthodesmus macrophthalmus. DESCRIPTION: Bigeye frostfish */ +/* Boridia grossidens. DESCRIPTION: Borriqueta porgy */ +/* Bathydraco macrolepis. DESCRIPTION: */ +/* Bodianus diplotaenia. DESCRIPTION: Mexican hogfish */ +/* Bathydraco marri. DESCRIPTION: Deep-water dragon */ +/* Balistoides conspicillum. DESCRIPTION: Clown triggerfish */ +/* Benthodesmus elongatus. DESCRIPTION: Elongate frostfish */ +/* Pogonias cromis. DESCRIPTION: Black drum */ +/* Bathydraco antarcticus. DESCRIPTION: */ +/* Blennodon dorsale. DESCRIPTION: Giant triplefin */ +/* Brosmodorsalis persicinus. DESCRIPTION: Pink brotula */ +/* Bodianus axillaris. DESCRIPTION: Axilspot hogfish */ +/* Bodianus rufus. DESCRIPTION: Spanish hogfish */ +/* Betta splendens. DESCRIPTION: Siamese fighting fish */ +/* Bodianus perditio. DESCRIPTION: Golden-spot hogfish */ +/* Bathypterois dubius. DESCRIPTION: Spiderfish */ +/* Bohadschia vitiensis. DESCRIPTION: Brown sandfish */ +/* Mesoplodon bowdoini. DESCRIPTION: Andrews' beaked whale */ +/* Bohadschia similis. DESCRIPTION: Brownspotted sandfish */ +/* Bodianus spp. DESCRIPTION: */ +/* Balistoides viridescens. DESCRIPTION: Titan triggerfish */ +/* Bathyraja eatonii. DESCRIPTION: Eaton's skate */ +/* Bagre bagre. DESCRIPTION: Coco sea catfish */ +/* Bagre pinnimaculatus. DESCRIPTION: Red sea catfish */ +/* Bertella idiomorpha. DESCRIPTION: */ +/* Benthalbella elongata. DESCRIPTION: */ +/* Belonepterygion fasciolatum. DESCRIPTION: */ +/* Pterygotrigla polyommata. DESCRIPTION: Latchet(=Sharpbeak gurnard) */ +/* Benthodesmus spp. DESCRIPTION: Frostfishes */ +/* Bagre panamensis. DESCRIPTION: Chilhuil sea catfish */ +/* Boulengerochromis microlepis. DESCRIPTION: Giant cichlid */ +/* Blennioclinus brachycephalus. DESCRIPTION: Lace klipfish */ +/* Delphinapterus leucas. DESCRIPTION: White whale */ +/* Bagre marinus. DESCRIPTION: Gafftopsail sea catfish */ +/* Belonidae. DESCRIPTION: Needlefishes, etc. nei */ +/* Blepsias bilobus. DESCRIPTION: Crested sculpin */ +/* Sarda chiliensis. DESCRIPTION: Eastern Pacific bonito */ +/* Barnea candida. DESCRIPTION: White piddock */ +/* Brachypterois serrulata. DESCRIPTION: */ +/* Belone spp. DESCRIPTION: */ +/* Thunnus obesus. DESCRIPTION: Bigeye tuna */ +/* Belonophago hutsebouti. DESCRIPTION: */ +/* Bathypectinura heros. DESCRIPTION: Deepsea brittle star */ +/* Berardius bairdii. DESCRIPTION: Baird's beaked whale */ +/* Buccinum spp. DESCRIPTION: */ +/* Bellapiscis lesleyae. DESCRIPTION: Mottled twister */ +/* Bero zanclus. DESCRIPTION: */ +/* Brachynectes fasciatus. DESCRIPTION: Southern barred triplefin */ +/* Benthophiloides brauneri. DESCRIPTION: */ +/* Brephostoma carpenteri. DESCRIPTION: */ +/* Bathydraco scotiae. DESCRIPTION: */ +/* Brachyistius frenatus. DESCRIPTION: Kelp perch */ +/* Brachidontes purpuratus. DESCRIPTION: */ +/* Blennophis anguillaris. DESCRIPTION: Snaky klipfish */ +/* Brachidontes rodriguezii. DESCRIPTION: */ +/* Boleophthalmus birdsongi. DESCRIPTION: */ +/* Brachyrhaphis cascajalensis. DESCRIPTION: */ +/* Spaniblennius clandestinus. DESCRIPTION: */ +/* Bathymicrops regis. DESCRIPTION: */ +/* Bathycallionymus formosanus. DESCRIPTION: */ +/* Barbulifer antennatus. DESCRIPTION: Barbulifer */ +/* Bathypterois grallator. DESCRIPTION: Tripodfish */ +/* Boleophthalmus pectinirostris. DESCRIPTION: Great blue spotted mudskipper */ +/* Bathypterois quadrifilis. DESCRIPTION: */ +/* Benthophilus baeri. DESCRIPTION: */ +/* Barbonymus schwanenfeldii. DESCRIPTION: Tinfoil barb */ +/* Thunnus thynnus. DESCRIPTION: Atlantic bluefin tuna */ +/* Paragorgia arborea. DESCRIPTION: Bubble gum coral */ +/* Paragorgia johnsoni. DESCRIPTION: */ +/* Balaenoptera bonaerensis. DESCRIPTION: Antarctic minke whale */ +/* Bathysphyraenops simplex. DESCRIPTION: */ +/* Bacillariophyceae. DESCRIPTION: */ +/* Bathygadus favosus. DESCRIPTION: */ +/* Aorichthys aor. DESCRIPTION: */ +/* Belonoglanis brieni. DESCRIPTION: */ +/* Gephyroglanis congicus. DESCRIPTION: */ +/* Gnathobagrus depressus. DESCRIPTION: */ +/* Bagrus meridionalis. DESCRIPTION: */ +/* Brachyglanis frenata. DESCRIPTION: */ +/* Bagarius bagarius. DESCRIPTION: Goonch */ +/* Bagrichthys hypselopterus. DESCRIPTION: Blacklancer catfish */ +/* Bothragonus swanii. DESCRIPTION: Rockhead */ +/* Bagrus bajad. DESCRIPTION: Bayad */ +/* Bagrus docmak. DESCRIPTION: Semutundu */ +/* Bagroides melapterus. DESCRIPTION: */ +/* Bagrichthys macropterus. DESCRIPTION: False black lancer */ +/* Bathygadus melanobranchus. DESCRIPTION: Vaillant's grenadier */ +/* Bathygadus macrops. DESCRIPTION: Bullseye grenadier */ +/* Bergiaria platana. DESCRIPTION: */ +/* Bentheogennema borealis. DESCRIPTION: Northern blunt-tail shrimp */ +/* Pomadasys incisus. DESCRIPTION: Bastard grunt */ +/* Bathyagonus alascanus. DESCRIPTION: Gray starsnout */ +/* Bathygobius fuscus. DESCRIPTION: Dusky frillgoby */ +/* Albula glossodonta. DESCRIPTION: Roundjaw bonefish */ +/* Mesoplodon europaeus. DESCRIPTION: Gervais' beaked whale */ +/* Pomadasys spp. DESCRIPTION: */ +/* Bedotia geayi. DESCRIPTION: */ +/* Pomadasys rogerii. DESCRIPTION: Pigsnout grunt */ +/* Hemiramphus balao. DESCRIPTION: Balao halfbeak */ +/* Hemibagrus baramensis. DESCRIPTION: */ +/* Bahaba chaptis. DESCRIPTION: Chaptis bahaba */ +/* Halobatrachus didactylus. DESCRIPTION: Lusitanian toadfish */ +/* Rheoglanis dendrophorus. DESCRIPTION: */ +/* Bathysaurus ferox. DESCRIPTION: Deep-sea lizardfish */ +/* Benthosema glaciale. DESCRIPTION: Glacier lantern fish */ +/* Brachionichthys hirsutus. DESCRIPTION: */ +/* Brachyhypopomus beebei. DESCRIPTION: */ +/* Bahaba taipingensis. DESCRIPTION: Chinese bahaba */ +/* Brochis britskii. DESCRIPTION: */ +/* Basilichthys australis. DESCRIPTION: */ +/* Halophryne diemensis. DESCRIPTION: Banded frogfish */ +/* Batrachocephalus mino. DESCRIPTION: Beardless sea catfish */ +/* Horabagrus brachysoma. DESCRIPTION: */ +/* Basilichthys microlepidotus. DESCRIPTION: */ +/* Benthosema pterotum. DESCRIPTION: Skinnycheek lanternfish */ +/* Bhavania australis. DESCRIPTION: */ +/* Bhanotia fasciolata. DESCRIPTION: */ +/* Platanista minor. DESCRIPTION: Indus River dolphin */ +/* Benthopecten pikei. DESCRIPTION: Five-spined star */ +/* Mesoplodon hectori. DESCRIPTION: Hector's beaked whale */ +/* Bathybates ferox. DESCRIPTION: */ +/* Bathyraja spp. DESCRIPTION: Bathyraja rays nei */ +/* Brisingidae. DESCRIPTION: Armless stars */ +/* Cobitis aurata. DESCRIPTION: Golden spined loach */ +/* Trisopterus luscus. DESCRIPTION: Pouting(=Bib) */ +/* Hypophthalmichthys nobilis. DESCRIPTION: Bighead carp */ +/* Balistapus undulatus. DESCRIPTION: Orange-lined triggerfish */ +/* Biotoecus opercularis. DESCRIPTION: */ +/* Buenia affinis. DESCRIPTION: De Buen's goby */ +/* Priacanthus spp. DESCRIPTION: Bigeyes nei */ +/* Bairdiella ronchus. DESCRIPTION: Ground croaker */ +/* Bythites islandicus. DESCRIPTION: */ +/* Barbatia lurida. DESCRIPTION: Lurid ark */ +/* Macrobrachium occidentale. DESCRIPTION: Western river prawn */ +/* Istiophoridae. DESCRIPTION: Marlins,sailfishes,etc. nei */ +/* Cobitis maroccana. DESCRIPTION: */ +/* Bilabria ornata. DESCRIPTION: */ +/* Cobitis granoei. DESCRIPTION: */ +/* Sarda orientalis. DESCRIPTION: Striped bonito */ +/* Benthesicymus tanneri. DESCRIPTION: Tanner's deep-water shrimp */ +/* Priacanthus macracanthus. DESCRIPTION: Red bigeye */ +/* Selar crumenophthalmus. DESCRIPTION: Bigeye scad */ +/* Cobitis taenia. DESCRIPTION: */ +/* Bihunichthys monopteroides. DESCRIPTION: */ +/* Smilium zancleanum. DESCRIPTION: Acorn barnacle */ +/* Cobitis biwae. DESCRIPTION: */ +/* Balistes spp. DESCRIPTION: */ +/* Balistes polylepis. DESCRIPTION: Finescale triggerfish */ +/* Chaetobranchopsis australis. DESCRIPTION: */ +/* Banjos banjos. DESCRIPTION: */ +/* Bujurquina cordemadi. DESCRIPTION: */ +/* Macrobrachium raridens. DESCRIPTION: Volta river prawn */ +/* Macrobrachium rude. DESCRIPTION: Hairy river prawn */ +/* Abraliopsis pfefferi. DESCRIPTION: Pfeffer's enope squid */ +/* Macrobrachium sintangense. DESCRIPTION: Sunda river prawn */ +/* Macrobrachium vollenhovenii. DESCRIPTION: African river prawn */ +/* Lipotes vexillifer. DESCRIPTION: Baiji */ +/* Macrobrachium trompii. DESCRIPTION: Forest river prawn */ +/* Brachaluteres jacksonianus. DESCRIPTION: Pigmy leatherjacket */ +/* Macrobrachium tenellum. DESCRIPTION: Longarm river prawn */ +/* Macrobrachium scabriculum. DESCRIPTION: Goda river prawn */ +/* Brachyamblyopus anotus. DESCRIPTION: */ +/* Bathygobius soporator. DESCRIPTION: Frillfin goby */ +/* Macrobrachium pilimanus. DESCRIPTION: Muff prawn */ +/* Macrobrachium surinamicum. DESCRIPTION: Suriname river prawn */ +/* Bathyraja trachura. DESCRIPTION: Roughtail skate */ +/* Bathyraja spinosissima. DESCRIPTION: Spiny skate */ +/* Bathyraja trachouros. DESCRIPTION: */ +/* Labrichthys unilineatus. DESCRIPTION: Tubelip wrasse */ +/* Bathyraja violacea. DESCRIPTION: Okhotsk skate */ +/* Mesoplodon stejnegeri. DESCRIPTION: Stejneger's beaked whale */ +/* Barbatia spp. DESCRIPTION: */ +/* Macrobrachium villosimanus. DESCRIPTION: Dimua river prawn */ +/* Bathyraja tzinovskii. DESCRIPTION: */ +/* Macrobrachium jaroense. DESCRIPTION: Jaro river prawn */ +/* Macrobrachium macrobrachion. DESCRIPTION: Brackish river prawn */ +/* Mylopharyngodon piceus. DESCRIPTION: Black carp */ +/* Macrobrachium mammilodactylus. DESCRIPTION: Knobtooth prawn */ +/* Macrobrachium lepidactyloides. DESCRIPTION: Malayam scale prawn */ +/* Macrobrachium olfersii. DESCRIPTION: Buchura river prawn */ +/* Ammodytes gilli. DESCRIPTION: Gill's sand lance */ +/* Macrobrachium ohione. DESCRIPTION: Ohio river prawn */ +/* Macrobrachium intermedium. DESCRIPTION: Striped river prawn */ +/* Euthynnus lineatus. DESCRIPTION: Black skipjack */ +/* Macrobrachium jelskii. DESCRIPTION: Agar river prawn */ +/* Macrobrachium lamarrei. DESCRIPTION: Kuncho river prawn */ +/* Bullockia maldonadoi. DESCRIPTION: */ +/* Macrobrachium lanceifrons. DESCRIPTION: Philippine river prawn */ +/* Macrobrachium hancocki. DESCRIPTION: Hancock's river prawn */ +/* Bostockia porosa. DESCRIPTION: Nightfish */ +/* Macrobrachium patsa. DESCRIPTION: Patsa river prawn */ +/* Macrobrachium lar. DESCRIPTION: Monkey river prawn */ +/* Macrobrachium latimanus. DESCRIPTION: Mountain river prawn */ +/* Macrobrachium latidactylus. DESCRIPTION: Scissor river prawn */ +/* Chascanopsetta crumenalis. DESCRIPTION: */ +/* Macrobrachium javanicum. DESCRIPTION: Java river prawn */ +/* Brachionus plicatilis. DESCRIPTION: */ +/* Brachionus rotundiformis. DESCRIPTION: */ +/* Macrobrachium lepidactylus. DESCRIPTION: Madagascar scale prawn */ +/* Brachionus calyciflorus. DESCRIPTION: */ +/* Barilius barna. DESCRIPTION: */ +/* Stromateus fiatola. DESCRIPTION: Blue butterfish */ +/* Anadara granosa. DESCRIPTION: Blood cockle */ +/* Barilius bendelisis. DESCRIPTION: */ +/* Blenniidae. DESCRIPTION: Combtooth blennies */ +/* Thunnus atlanticus. DESCRIPTION: Blackfin tuna */ +/* Bathyclupea argentea. DESCRIPTION: */ +/* Leuroglossus schmidti. DESCRIPTION: Northern smoothtounge */ +/* Molva dypterygia. DESCRIPTION: Blue ling */ +/* Abralia veranyi. DESCRIPTION: Verany's enope squid */ +/* Abralia andamanica. DESCRIPTION: */ +/* Scophthalmus rhombus. DESCRIPTION: Brill */ +/* Makaira indica. DESCRIPTION: Black marlin */ +/* Bulbonaricus brauni. DESCRIPTION: Pugheaded pipefish */ +/* Barilius bola. DESCRIPTION: Trout barb */ +/* Eleginops maclovinus. DESCRIPTION: Patagonian blennie */ +/* Bollmannia boqueronensis. DESCRIPTION: White-eye goby */ +/* Carcharhinus melanopterus. DESCRIPTION: Blacktip reef shark */ +/* Anadara spp. DESCRIPTION: Anadara clams nei */ +/* Auxis rochei. DESCRIPTION: Bullet tuna */ +/* Pomatomus saltatrix. DESCRIPTION: Bluefish */ +/* Balistes vetula. DESCRIPTION: Queen triggerfish */ +/* Balaenoptera musculus. DESCRIPTION: Blue whale */ +/* Ballia callitricha. DESCRIPTION: Ballia */ +/* Bellator brachychir. DESCRIPTION: Shortfin searobin */ +/* Bregmaceros atlanticus. DESCRIPTION: Antenna codlet */ +/* Bryconamericus beta. DESCRIPTION: */ +/* Mystus cavasius. DESCRIPTION: Gangetic mystus */ +/* Hemibagrus wyckii. DESCRIPTION: */ +/* Bathypterois mediterraneus. DESCRIPTION: Mediterranean spiderfish */ +/* Bathymaster caeruleofasciatus. DESCRIPTION: Alaskan ronquil */ +/* Mystus gulio. DESCRIPTION: Long whiskers catfish */ +/* Amarginops hildae. DESCRIPTION: Hilda's grunter */ +/* Benthochromis tricoti. DESCRIPTION: */ +/* Bembras japonicus. DESCRIPTION: */ +/* Bolbometopon muricatum. DESCRIPTION: Green humphead parrotfish */ +/* Monolene antillarum. DESCRIPTION: Slim flounder */ +/* Mystus micracanthus. DESCRIPTION: Twospot catfish */ +/* Buccochromis atritaeniatus. DESCRIPTION: */ +/* Latridopsis ciliaris. DESCRIPTION: Blue moki */ +/* Biotodoma cupido. DESCRIPTION: Greenstreaked eartheater */ +/* Bembrops anatirostris. DESCRIPTION: Duckbill flathead */ +/* Bembradium roseum. DESCRIPTION: */ +/* Blennodesmus scapularis. DESCRIPTION: */ +/* Mystus tengara. DESCRIPTION: */ +/* Bathyraja murrayi. DESCRIPTION: Murray's skate */ +/* Mystus vittatus. DESCRIPTION: Striped dwarf catfish */ +/* Chromobotia macracanthus. DESCRIPTION: Clown loach */ +/* Bathyanthias mexicanus. DESCRIPTION: Yellowtail bass */ +/* Balaena mysticetus. DESCRIPTION: Bowhead whale */ +/* Mystus nigriceps. DESCRIPTION: */ +/* Bryconops affinis. DESCRIPTION: Orangefin tetra */ +/* Balantiocheilos melanopterus. DESCRIPTION: Tricolor sharkminnow */ +/* Brycon cephalus. DESCRIPTION: */ +/* Brycon devillei. DESCRIPTION: */ +/* Bangana behri. DESCRIPTION: */ +/* Pterothrissus belloci. DESCRIPTION: Longfin bonefish */ +/* Beguina semiorbiculata. DESCRIPTION: Halfround cardita */ +/* Branchioica bertonii. DESCRIPTION: */ +/* Belobranchus belobranchus. DESCRIPTION: Throat-spine gudgeon */ +/* Albunea lucasia. DESCRIPTION: Spiny mole crab */ +/* Brycon falcatus. DESCRIPTION: */ +/* Brycon melanopterus. DESCRIPTION: */ +/* Brycon nattereri. DESCRIPTION: */ +/* Brycon orbignyanus. DESCRIPTION: */ +/* Brycon pesu. DESCRIPTION: Mourning tetra */ +/* Bathynectes piperitus. DESCRIPTION: Peppermint swimcrab */ +/* Benthosema suborbitale. DESCRIPTION: Smallfin lanternfish */ +/* Benthalbella spp. DESCRIPTION: Pearleyes nei */ +/* Brycon lundii. DESCRIPTION: */ +/* Brycon guatemalensis. DESCRIPTION: Machaca */ +/* Indopacetus pacificus. DESCRIPTION: Longman's beaked whale */ +/* Bolinichthys distofax. DESCRIPTION: */ +/* Brycon erythropterum. DESCRIPTION: */ +/* Benthalbella macropinna. DESCRIPTION: */ +/* Ethmalosa fimbriata. DESCRIPTION: Bonga shad */ +/* Xiphopenaeus kroyeri. DESCRIPTION: Atlantic seabob */ +/* Capros aper. DESCRIPTION: Boarfish */ +/* Botia dario. DESCRIPTION: Bengal loach */ +/* Allocyttus niger. DESCRIPTION: Black oreo */ +/* Albula vulpes. DESCRIPTION: Bonefish */ +/* Boops boops. DESCRIPTION: Bogue */ +/* Botia hymenophysa. DESCRIPTION: Tiger loach */ +/* Boraras brigittae. DESCRIPTION: */ +/* Boopsoidea inornata. DESCRIPTION: Fransmadam */ +/* Boehlkea fredcochui. DESCRIPTION: Cochu's blue tetra */ +/* Bothrocara alalongum. DESCRIPTION: */ +/* Boesemania microlepis. DESCRIPTION: Boeseman croaker */ +/* Sarda sarda. DESCRIPTION: Atlantic bonito */ +/* Brycon atrocaudatus. DESCRIPTION: */ +/* Orcynopsis unicolor. DESCRIPTION: Plain bonito */ +/* Bolinus cornutus. DESCRIPTION: Horned murex */ +/* Caproidae. DESCRIPTION: Boarfishes nei */ +/* Xiphopenaeus, Trachypenaeus spp. DESCRIPTION: Pacific seabobs */ +/* Inia geoffrensis. DESCRIPTION: Boto */ +/* Opsanus beta. DESCRIPTION: Gulf toadfish */ +/* Boulengerella cuvieri. DESCRIPTION: */ +/* Hyperoodon ampullatus. DESCRIPTION: Northern bottlenose whale */ +/* Aphanopus spp. DESCRIPTION: */ +/* Bolinus brandaris. DESCRIPTION: Purple dye murex */ +/* Brachypetersius altus. DESCRIPTION: */ +/* Pterycombus brama. DESCRIPTION: Atlantic fanfish */ +/* Bunocephalus coracoideus. DESCRIPTION: Guitarrita */ +/* Platyglanis depierrei. DESCRIPTION: */ +/* Perulibatrachus elminensis. DESCRIPTION: Guinean toadfish */ +/* Brachyplatystoma filamentosum. DESCRIPTION: Kumakuma */ +/* Bathypterois longipes. DESCRIPTION: Abyssal spiderfish */ +/* Belonoperca chabanaudi. DESCRIPTION: Arrowhead soapfish */ +/* Spicara maena. DESCRIPTION: Blotched picarel */ +/* Brachyplatystoma juruense. DESCRIPTION: Zebra catfish */ +/* Parabothus coarctatus. DESCRIPTION: */ +/* Ursus maritimus. DESCRIPTION: Polar bear */ +/* Bunocephalus amaurus. DESCRIPTION: Camouflaged catfish */ +/* Bunocephalus knerii. DESCRIPTION: Ecuador banjo catfish */ +/* Bonapartia pedaliota. DESCRIPTION: */ +/* Porichthys porosissimus. DESCRIPTION: */ +/* Brama japonica. DESCRIPTION: Pacific pomfret */ +/* Bagropsis reinhardti. DESCRIPTION: */ +/* Grammonus diagrammus. DESCRIPTION: Purple brotula */ +/* Brachyplatystoma vaillanti. DESCRIPTION: Laulao catfish */ +/* Pseudobagrus aurantiacus. DESCRIPTION: */ +/* Brachyplatystoma flavicans. DESCRIPTION: Gilded catfish */ +/* Mesoplodon peruvianus. DESCRIPTION: Pigmy beaked whale */ +/* Lambis spp. DESCRIPTION: */ +/* Pterycombus petersii. DESCRIPTION: Prickly fanfish */ +/* Branta bernicla. DESCRIPTION: Brent goose */ +/* Lambis lambis. DESCRIPTION: Common spider conch */ +/* Barbatia barbata. DESCRIPTION: Hairy ark */ +/* Barbicambarus cornutus. DESCRIPTION: Bottlebrush crayfish */ +/* Barnea dilatata. DESCRIPTION: Dilate piddock */ +/* Terebra areolata. DESCRIPTION: Fly spotted auger */ +/* Barbatia foliata. DESCRIPTION: Decussate ark */ +/* Breitensteinia insignis. DESCRIPTION: */ +/* Lambis chiragra. DESCRIPTION: Chiragra spider conch */ +/* Lambis millepeda. DESCRIPTION: Milleped spider conch */ +/* Lambis scorpius. DESCRIPTION: Scorpio spider conch */ +/* Terebra maculata. DESCRIPTION: Marlinspike */ +/* Birgus latro. DESCRIPTION: Coconut crab */ +/* Barnea manilensis. DESCRIPTION: Manila piddock */ +/* Lambis truncata. DESCRIPTION: Giant spider conch */ +/* Buccinulum corneum. DESCRIPTION: Striated buccinum */ +/* Brachioteuthis picta. DESCRIPTION: Ornate arm squid */ +/* Terebra subulata. DESCRIPTION: Subulate auger */ +/* Brachioteuthis riisei. DESCRIPTION: Common arm squid */ +/* Barnea subtruncata. DESCRIPTION: Pacific mud piddock */ +/* Barnea truncata. DESCRIPTION: Truncate barnea */ +/* Barbatia fusca. DESCRIPTION: Almond ark */ +/* Branta canadensis. DESCRIPTION: Canada goose */ +/* Lambis crocata. DESCRIPTION: Orange spider conch */ +/* Stromateus spp. DESCRIPTION: Butterfishes nei */ +/* Bathydraconidae. DESCRIPTION: Dragonfishes nei */ +/* Branta leucopsis. DESCRIPTION: Barnacle goose */ +/* Brama spp. DESCRIPTION: */ +/* Spondyliosoma cantharus. DESCRIPTION: Black seabream */ +/* Brachioteuthis spp. DESCRIPTION: Arm squids nei */ +/* Brotula barbata. DESCRIPTION: Bearded brotula */ +/* Helicolenus dactylopterus. DESCRIPTION: Blackbelly rosefish */ +/* Conodon nobilis. DESCRIPTION: Barred grunt */ +/* Barilius shacra. DESCRIPTION: */ +/* Gonostomatidae. DESCRIPTION: Bristlemouths */ +/* Barilius tileo. DESCRIPTION: */ +/* Riekertia ellisi. DESCRIPTION: Broadbodied toadfish */ +/* Barilius barila. DESCRIPTION: */ +/* Borostomias mononema. DESCRIPTION: */ +/* Barbichthys nitidus. DESCRIPTION: */ +/* Carcharhinus brachyurus. DESCRIPTION: Copper shark */ +/* Phocoena spinipinnis. DESCRIPTION: Burmeister's porpoise */ +/* Barilius bakeri. DESCRIPTION: */ +/* Scomberomorus brasiliensis. DESCRIPTION: Serra Spanish mackerel */ +/* Borostomias antarcticus. DESCRIPTION: Snaggletooth */ +/* Brama australis. DESCRIPTION: Southern rays bream */ +/* Barilius vagra. DESCRIPTION: */ +/* Balaenoptera edeni. DESCRIPTION: Bryde's whale */ +/* Berycidae. DESCRIPTION: Alfonsinos, etc. nei */ +/* Brotulina erythrea. DESCRIPTION: */ +/* Bramidae. DESCRIPTION: Pomfrets, ocean breams nei */ +/* Morone spp. DESCRIPTION: Atlantic seabasses */ +/* Centropristis striata. DESCRIPTION: Black seabass */ +/* Pagrus caeruleostictus. DESCRIPTION: Bluespotted seabream */ +/* Spaniblennius riodourensis. DESCRIPTION: */ +/* Dicentrarchus spp. DESCRIPTION: Seabasses nei */ +/* Aphanopus carbo. DESCRIPTION: Black scabbardfish */ +/* Bathysauropsis gigas. DESCRIPTION: */ +/* Prionace glauca. DESCRIPTION: Blue shark */ +/* Barbus perince. DESCRIPTION: */ +/* Barbus plebejus. DESCRIPTION: */ +/* Cetorhinus maximus. DESCRIPTION: Basking shark */ +/* Luciobarbus sclateri. DESCRIPTION: Andalusian barbel */ +/* Barbus mattozi. DESCRIPTION: Papermouth */ +/* Barbus unitaeniatus. DESCRIPTION: Slender barb */ +/* Barbus tropidolepis. DESCRIPTION: */ +/* Seriolella spp. DESCRIPTION: Warehou nei */ +/* Palibythus magnificus. DESCRIPTION: Musical furry lobster */ +/* Sardinella brasiliensis. DESCRIPTION: Brazilian sardinella */ +/* Dicentrarchus labrax. DESCRIPTION: European seabass */ +/* Barbus trimaculatus. DESCRIPTION: Threespot barb */ +/* Sanopus astrifer. DESCRIPTION: */ +/* Psettina brevirictis. DESCRIPTION: */ +/* Tasmacetus shepherdi. DESCRIPTION: Sherpherd's beaked whale */ +/* Serranidae. DESCRIPTION: Groupers, seabasses nei */ +/* Parambassis altipinnis. DESCRIPTION: High-finned glass perchlet */ +/* Acanthistius brasilianus. DESCRIPTION: Argentine seabass */ +/* Balitora annamitica. DESCRIPTION: */ +/* Barbatula barbatula. DESCRIPTION: Stone loach */ +/* Thalassothia cirrhosa. DESCRIPTION: */ +/* Barbucca diabolica. DESCRIPTION: */ +/* Bathyaethiops breuseghemi. DESCRIPTION: */ +/* Halieutaea stellata. DESCRIPTION: Batfish */ +/* Peprilus spp. DESCRIPTION: Gulf butterfishes, etc. nei */ +/* Alopias superciliosus. DESCRIPTION: Bigeye thresher */ +/* Batrachocottus baicalensis. DESCRIPTION: Bighead sculpin */ +/* Bothus mancus. DESCRIPTION: */ +/* Barathronus maculatus. DESCRIPTION: */ +/* Thalassophryne maculosa. DESCRIPTION: Cano toadfish */ +/* Bathophilus nigerrimus. DESCRIPTION: */ +/* Acanthocobitis botia. DESCRIPTION: Mottled loach */ +/* Bellottia apoda. DESCRIPTION: */ +/* Benthoctopus januarii. DESCRIPTION: January octopus */ +/* Bathybagrus tetranema. DESCRIPTION: */ +/* Tylosurus crocodilus. DESCRIPTION: Hound needlefish */ +/* Batasio batasio. DESCRIPTION: */ +/* Bathophilus digitatus. DESCRIPTION: */ +/* Bathophilus vaillanti. DESCRIPTION: */ +/* Mesoplodon mirus. DESCRIPTION: True's beaked whale */ +/* Bathychaunax coloratus. DESCRIPTION: */ +/* Bathylagus spp. DESCRIPTION: Blacksmelts */ +/* Bathylutichthys taranetzi. DESCRIPTION: */ +/* Chloroscombrus chrysurus. DESCRIPTION: Atlantic bumper */ +/* Ictiobus cyprinellus. DESCRIPTION: Bigmouth buffalo */ +/* Harpadon nehereus. DESCRIPTION: Bombay-duck */ +/* Barbus meridionalis. DESCRIPTION: Mediterranean barbel */ +/* Barbus eurystomus. DESCRIPTION: */ +/* Ictiobus spp. DESCRIPTION: Buffalofishes nei */ +/* Luciobarbus graellsii. DESCRIPTION: */ +/* Barbus haasi. DESCRIPTION: */ +/* Barbus macrotaenia. DESCRIPTION: Broadband barb */ +/* Barbus johnstonii. DESCRIPTION: */ +/* Gasterochisma melampus. DESCRIPTION: Butterfly kingfish */ +/* Barbus lineomaculatus. DESCRIPTION: Line-spotted barb */ +/* Makaira nigricans. DESCRIPTION: Blue marlin */ +/* Barbus longiceps. DESCRIPTION: */ +/* Barbus holotaenia. DESCRIPTION: Spotscale barb */ +/* Psenopsis anomala. DESCRIPTION: Pacific rudderfish */ +/* Barbus marequensis. DESCRIPTION: Largescale yellowfish */ +/* Pomadasys jubelini. DESCRIPTION: Sompat grunt */ +/* Chaetodontidae. DESCRIPTION: Butterflyfishes */ +/* Peprilus triacanthus. DESCRIPTION: Atlantic butterfish */ +/* Barbus paludinosus. DESCRIPTION: Straightfin barb */ +/* Benthoctopus tegginmathae. DESCRIPTION: */ +/* Mesoplodon carlhubbsi. DESCRIPTION: Hubbs' beaked whale */ +/* Stromateidae. DESCRIPTION: Butterfishes, pomfrets nei */ +/* Barbus neumayeri. DESCRIPTION: */ +/* Chloroscombrus spp. DESCRIPTION: Bumpers nei */ +/* Breviraja atripinna. DESCRIPTION: */ +/* Bivibranchia bimaculata. DESCRIPTION: */ +/* Breviraja caerulea. DESCRIPTION: Blue ray */ +/* Brycon dentex. DESCRIPTION: */ +/* Bovichtus elongatus. DESCRIPTION: */ +/* Cottoperca gobio. DESCRIPTION: Channel bull blenny */ +/* Brachiopoda. DESCRIPTION: Brachiopods, lamp shells */ +/* Perulibatrachus rossignoli. DESCRIPTION: Rossignol */ +/* ’s toadfish */ +/* Monolene mertensi. DESCRIPTION: Martens */ +/* ’ moonflounder */ +/* Pogonophryne barsukovi. DESCRIPTION: */ +/* Batissa violacea. DESCRIPTION: Violet batissa */ +/* Ariopsis bonillai. DESCRIPTION: New Granada sea catfish */ +/* Breviraja colesi. DESCRIPTION: */ +/* Balistes punctatus. DESCRIPTION: Bluespotted triggerfish */ +/* Bregmaceros nectabanus. DESCRIPTION: Smallscale codlet */ +/* Bathylagoides argyrogaster. DESCRIPTION: Silver deepsea smelt */ +/* Breviraja spinosa. DESCRIPTION: */ +/* Breviraja cubensis. DESCRIPTION: */ +/* Sphyraena viridensis. DESCRIPTION: Yellowmouth barracuda */ +/* Bolocera spp. DESCRIPTION: */ +/* Bathylagidae. DESCRIPTION: Deep-sea smelts nei */ +/* Gavia adamsii. DESCRIPTION: White-billed diver */ +/* Hyperoglyphe antarctica. DESCRIPTION: Bluenose warehou */ +/* Stromateus stellatus. DESCRIPTION: Starry butterfish */ +/* Gavia arctica. DESCRIPTION: Black-throated diver */ +/* Lagenorhynchus albirostris. DESCRIPTION: White-beaked dolphin */ +/* Gavia immer. DESCRIPTION: Great northern diver */ +/* Gavia stellata. DESCRIPTION: Red-throated diver */ +/* Priacanthus hamrur. DESCRIPTION: Moontail bullseye */ +/* Bigener brownii. DESCRIPTION: Spiny-tailed leatherjacket */ +/* Bathybiaster loripes. DESCRIPTION: */ +/* Hemibagrus wyckioides. DESCRIPTION: */ +/* Gymnothorax kidako. DESCRIPTION: Kidako moray */ +/* Bothus maculiferus. DESCRIPTION: Mottled flounder */ +/* Benthodesmus tenuis. DESCRIPTION: Slender frostfish */ +/* Gymnothorax phasmatodes. DESCRIPTION: Ghost moray */ +/* Bathytyphlops sewelli. DESCRIPTION: */ +/* Carcinoscorpius rotundicauda. DESCRIPTION: Mangrove horseshoe crab */ +/* Paragorgiidae. DESCRIPTION: */ +/* Mesoplodon bidens. DESCRIPTION: Sowerby's beaked whale */ +/* Botia spp. DESCRIPTION: */ +/* Bathylasmatidae. DESCRIPTION: */ +/* Biwia zezera. DESCRIPTION: */ +/* Brisaster antarcticus. DESCRIPTION: */ +/* Belonesox belizanus. DESCRIPTION: Top minnow */ +/* Abatus cordatus. DESCRIPTION: */ +/* Beryx decadactylus. DESCRIPTION: Alfonsino */ +/* Ostraciidae. DESCRIPTION: Boxfishes nei */ +/* Brycon spp. DESCRIPTION: */ +/* Beliops xanthokrossos. DESCRIPTION: */ +/* Mystus spp. DESCRIPTION: */ +/* Brycon hilarii. DESCRIPTION: */ +/* Anthomastus spp. DESCRIPTION: */ +/* Bryx analicarens. DESCRIPTION: Pink pipefish */ +/* Bathyraja aleutica. DESCRIPTION: Aleutian skate */ +/* Bidyanus bidyanus. DESCRIPTION: Silver perch */ +/* Bathyraja caeluronigricans. DESCRIPTION: */ +/* Bathyraja diplotaenia. DESCRIPTION: */ +/* Bathyraja meridionalis. DESCRIPTION: Dark-belly skate */ +/* Bathyraja parmifera. DESCRIPTION: Alaska skate */ +/* Bathyraja griseocauda. DESCRIPTION: */ +/* Bathyraja hesperafricana. DESCRIPTION: */ +/* Bathyraja interrupta. DESCRIPTION: Sandpaper skate */ +/* Bathyraja rosispinis. DESCRIPTION: Flathead skate */ +/* Bathyraja simoterus. DESCRIPTION: */ +/* Bathyraja lindbergi. DESCRIPTION: Commander skate */ +/* Bathyraja matsubarai. DESCRIPTION: */ +/* Bathyraja minispinosa. DESCRIPTION: */ +/* Bathyraja notoroensis. DESCRIPTION: */ +/* Bathyraja pallida. DESCRIPTION: Pale ray */ +/* Bathyraja richardsoni. DESCRIPTION: Richardson's ray */ +/* Bathyraja irrasa. DESCRIPTION: Kerguelen sandpaper skate */ +/* Beryx splendens. DESCRIPTION: Splendid alfonsino */ +/* Bathyraja isotrachys. DESCRIPTION: */ +/* Bathyraja shuntovi. DESCRIPTION: Longnose deep-sea skate */ +/* Bathyraja andriashevi. DESCRIPTION: */ +/* Mesoplodon grayi. DESCRIPTION: Gray's beaked whale */ +/* Bathyraja smirnovi. DESCRIPTION: */ +/* Bathyraja abyssicola. DESCRIPTION: Deep-sea skate */ +/* Bathyraja smithii. DESCRIPTION: */ +/* Bathyraja brachyurops. DESCRIPTION: Broadnose skate */ +/* Brycinus nurse. DESCRIPTION: Nurse tetra */ +/* Bodianus speciosus. DESCRIPTION: Blackbar hogfish */ +/* Hemibagrus guttatus. DESCRIPTION: */ +/* Brycon amazonicus. DESCRIPTION: */ +/* Brycon insignis. DESCRIPTION: Tiete tetra */ +/* Bryozoichthys marjorius. DESCRIPTION: Pearly prickleback */ +/* Bathyraja macloviana. DESCRIPTION: Patagonian skate */ +/* Bryozoa. DESCRIPTION: Bryozoans */ +/* Bathyraja scaphiops. DESCRIPTION: Cuphead skate */ +/* Bodianus vulpinus. DESCRIPTION: Western Australia pigfish */ +/* Coluzea mariae. DESCRIPTION: */ +/* Sarda spp. DESCRIPTION: Bonitos nei */ +/* Anarhichas lupus. DESCRIPTION: Atlantic wolffish */ +/* Anarhichas denticulatus. DESCRIPTION: Northern wolffish */ +/* Chaca chaca. DESCRIPTION: Squarehead catfish */ +/* Cancridae. DESCRIPTION: Jonah crabs, rock crabs nei */ +/* Plotosus spp. DESCRIPTION: Eeltail catfishes */ +/* Ictalurus spp. DESCRIPTION: Catfishes nei */ +/* Kryptopterus spp. DESCRIPTION: Glass catfishes */ +/* Callorhinchidae. DESCRIPTION: Elephantfishes, etc. nei */ +/* Caiman crocodilus. DESCRIPTION: Spectacled caiman */ +/* Caulophryne jordani. DESCRIPTION: */ +/* Chaca bankanensis. DESCRIPTION: Angler catfish */ +/* Callinectes spp. DESCRIPTION: Callinectes swimcrabs nei */ +/* Catharacta maccormicki. DESCRIPTION: South polar skua */ +/* Bagrus spp. DESCRIPTION: Naked catfishes */ +/* Arius maculatus. DESCRIPTION: Spotted catfish */ +/* Mallotus villosus. DESCRIPTION: Capelin */ +/* Catharacta lonnbergi. DESCRIPTION: Brown skua */ +/* Chondrichthyes. DESCRIPTION: Cartilaginous fishes nei */ +/* Anarhichas minor. DESCRIPTION: Spotted wolffish */ +/* Anarhichas spp. DESCRIPTION: Wolffishes(=Catfishes) nei */ +/* Caulerpa spp. DESCRIPTION: Caulerpa seaweeds */ +/* Caecomastacembelus aviceps. DESCRIPTION: */ +/* Calloplesiops altivelis. DESCRIPTION: Comet */ +/* Ariidae. DESCRIPTION: Sea catfishes nei */ +/* Careproctus bathycoetus. DESCRIPTION: */ +/* Clinocottus acuticeps. DESCRIPTION: Sharpnose sculpin */ +/* Rachycentron canadum. DESCRIPTION: Cobia */ +/* Coleotropis blackburni. DESCRIPTION: Beach silverside */ +/* Cepola macrophthalma. DESCRIPTION: Red bandfish */ +/* Calamus bajonado. DESCRIPTION: Jolthead porgy */ +/* Blachea xenobranchialis. DESCRIPTION: */ +/* Cymbacephalus beauforti. DESCRIPTION: Crocodile fish */ +/* Cubiceps gracilis. DESCRIPTION: Driftfish */ +/* Bassanago hirsutus. DESCRIPTION: */ +/* Clibanarius panamensis. DESCRIPTION: Mangrove hermit crab */ +/* Choeroichthys brachysoma. DESCRIPTION: Short-bodied pipefish */ +/* Chirocentrodon bleekerianus. DESCRIPTION: Dogtooth herring */ +/* Sciaena umbra. DESCRIPTION: Brown meagre */ +/* Centrobranchus andreae. DESCRIPTION: */ +/* Ceratias holboelli. DESCRIPTION: Kroyer's deep-sea angler fish */ +/* Channallabes apus. DESCRIPTION: Eel catfish */ +/* Chromogobius quadrivittatus. DESCRIPTION: Chestnut goby */ +/* Serranus cabrilla. DESCRIPTION: Comber */ +/* Bathymyrus smithi. DESCRIPTION: Maputo conger */ +/* Clarias batrachus. DESCRIPTION: Philippine catfish */ +/* Ctenobrycon spilurus. DESCRIPTION: Silver tetra */ +/* Bathyuroconger vicinus. DESCRIPTION: */ +/* Bathycongrus wallacei. DESCRIPTION: Longnose conger */ +/* Cynolebias bellottii. DESCRIPTION: Argentine pearlfish */ +/* Crossorhombus azureus. DESCRIPTION: Blue flounder */ +/* Carcharhinus altimus. DESCRIPTION: Bignose shark */ +/* Carcharhinus brevipinna. DESCRIPTION: Spinner shark */ +/* Carcharhinus cautus. DESCRIPTION: Nervous shark */ +/* Carcharhinus dussumieri. DESCRIPTION: Whitecheek shark */ +/* Carcharhinus leucas. DESCRIPTION: Bull shark */ +/* Carcharhinus amboinensis. DESCRIPTION: Pigeye shark */ +/* Carcharhinus galapagensis. DESCRIPTION: Galapagos shark */ +/* Carcharhinus sealei. DESCRIPTION: Blackspot shark */ +/* Carcharhinus leiodon. DESCRIPTION: */ +/* Carcharhinus hemiodon. DESCRIPTION: Pondicherry shark */ +/* Carcharhinus limbatus. DESCRIPTION: Blacktip shark */ +/* Carcharhinus macloti. DESCRIPTION: Hardnose shark */ +/* Carcharhinus acronotus. DESCRIPTION: Blacknose shark */ +/* Carcharhinus isodon. DESCRIPTION: Finetooth shark */ +/* Carcharhinus plumbeus. DESCRIPTION: Sandbar shark */ +/* Carcharhinus sorrah. DESCRIPTION: Spot-tail shark */ +/* Carcharhinus porosus. DESCRIPTION: Smalltail shark */ +/* Carcharhinus signatus. DESCRIPTION: Night shark */ +/* Carcharias taurus. DESCRIPTION: Sand tiger shark */ +/* Carcharhinus tilstoni. DESCRIPTION: Australian blacktip shark */ +/* Carcharhinus perezi. DESCRIPTION: Caribbean reef shark */ +/* Carcharhinus wheeleri. DESCRIPTION: Blacktail reef shark */ +/* Carcharhinus borneensis. DESCRIPTION: Borneo shark */ +/* Carcharhinus amblyrhynchoides. DESCRIPTION: Graceful shark */ +/* Carcharhinus fitzroyensis. DESCRIPTION: Creek whaler */ +/* Dorosoma petenense. DESCRIPTION: Threadfin shad */ +/* Chlidichthys bibulus. DESCRIPTION: Nosey dottyback */ +/* Denticeps clupeoides. DESCRIPTION: */ +/* Nemadactylus douglasii. DESCRIPTION: Porae */ +/* Corallium sp. nov.. DESCRIPTION: Midway deep-sea coral */ +/* Characidium fasciatum. DESCRIPTION: Darter characin */ +/* Citharidium ansorgii. DESCRIPTION: */ +/* Cochliodon hondae. DESCRIPTION: */ +/* Calonectris diomedea. DESCRIPTION: Cory's shearwater */ +/* Clidoderma asperrimum. DESCRIPTION: */ +/* Laeviscutella dekimpei. DESCRIPTION: Roundbelly pellonuline */ +/* Epigonus spp. DESCRIPTION: Cardinal fishes nei */ +/* Dayella malabarica. DESCRIPTION: Day's round herring */ +/* Chauliodus sloani. DESCRIPTION: Sloane's viperfish */ +/* Carpiodes carpio. DESCRIPTION: River carpsucker */ +/* Crocodylus porosus. DESCRIPTION: Estuarine crocodile */ +/* Calocarides quinqueseriatus. DESCRIPTION: Keeled mud lobster */ +/* Coryphaenoides delsolari. DESCRIPTION: Trident grenadier */ +/* Crocodylus siamensis. DESCRIPTION: Siamese crocodile */ +/* Cherax destructor. DESCRIPTION: Yabby crayfish */ +/* Cheirodon pisciculus. DESCRIPTION: */ +/* Coradion altivelis. DESCRIPTION: Highfin coralfish */ +/* Chaudhuria caudata. DESCRIPTION: Burmese spineless eel */ +/* Sciaenidae. DESCRIPTION: Croakers, drums nei */ +/* Diploconger polystigmatus. DESCRIPTION: */ +/* Gadus spp. DESCRIPTION: Northern cods nei */ +/* Centrophorus acus. DESCRIPTION: Needle dogfish */ +/* Cottinella boulengeri. DESCRIPTION: Short-headed sculpin */ +/* Elops lacerta. DESCRIPTION: West African ladyfish */ +/* Chendol keelini. DESCRIPTION: */ +/* Centrophorus tessellatus. DESCRIPTION: Mosaic gulper shark */ +/* Ehirava fluviatilis. DESCRIPTION: Malabar sprat */ +/* Elops senegalensis. DESCRIPTION: Senegalese ladyfish */ +/* Coelorinchus marinii. DESCRIPTION: Marini's grenadier */ +/* Elops affinis. DESCRIPTION: Pacific ladyfish */ +/* Cociella crocodila. DESCRIPTION: Crocodile flathead */ +/* Centrophorus niaukang. DESCRIPTION: Taiwan gulper shark */ +/* Corallium elatius. DESCRIPTION: Momo, boke magai, misu coral */ +/* Centrophorus moluccensis. DESCRIPTION: Smallfin gulper shark */ +/* Centrolophidae. DESCRIPTION: Ruffs, barrelfishes nei */ +/* Centrolophus niger. DESCRIPTION: Rudderfish */ +/* Cephalopoda. DESCRIPTION: Cephalopods nei */ +/* Ceratias tentaculatus. DESCRIPTION: */ +/* Scomberomorus regalis. DESCRIPTION: Cero */ +/* Champsocephalus esox. DESCRIPTION: Pike icefish */ +/* Dicologlossa cuneata. DESCRIPTION: Wedge sole */ +/* Centrophorus harrissoni. DESCRIPTION: Dumb gulper shark */ +/* Elops machnata. DESCRIPTION: Tenpounder */ +/* Elops hawaiensis. DESCRIPTION: Hawaiian ladyfish */ +/* Genypterus spp. DESCRIPTION: Cusk-eels nei */ +/* Chalceus erythrurus. DESCRIPTION: */ +/* Centracanthidae. DESCRIPTION: Picarels, etc. nei */ +/* Crossostomus fasciatus. DESCRIPTION: */ +/* Centroscyllium fabricii. DESCRIPTION: Black dogfish */ +/* Craterocephalus capreoli. DESCRIPTION: Rendahl's hardyhead */ +/* Cochlefelis danielsi. DESCRIPTION: Daniel's catfish */ +/* Calamus penna. DESCRIPTION: Sheepshead porgy */ +/* Cephalopholis argus. DESCRIPTION: Peacock hind */ +/* Caristius groenlandicus. DESCRIPTION: */ +/* Cephalopholis hemistiktos. DESCRIPTION: Yellowfin hind */ +/* Cephalopholis miniata. DESCRIPTION: Coral hind */ +/* Cephalopholis fulva. DESCRIPTION: Coney */ +/* Comephorus baikalensis. DESCRIPTION: Big Baikal oilfish */ +/* Cephalopholis cruentata. DESCRIPTION: Graysby */ +/* Cephalopholis microprion. DESCRIPTION: Freckled hind */ +/* Calamus arctifrons. DESCRIPTION: Grass porgy */ +/* Calamus proridens. DESCRIPTION: Littlehead porgy */ +/* Centrophryne spinulosa. DESCRIPTION: Horned lantern fish */ +/* Cephalopholis nigri. DESCRIPTION: Niger hind */ +/* Cypho purpurascens. DESCRIPTION: Oblique-lined dottyback */ +/* Clarias fuscus. DESCRIPTION: Hong Kong catfish */ +/* Calamus taurinus. DESCRIPTION: Galapagos porgy */ +/* Careproctus furcellus. DESCRIPTION: */ +/* Corythoichthys flavofasciatus. DESCRIPTION: Network pipefish */ +/* Coryphaena equiselis. DESCRIPTION: Pompano dolphinfish */ +/* Cephalopholis sexmaculata. DESCRIPTION: Sixblotch hind */ +/* Cephalopholis cyanostigma. DESCRIPTION: Bluespotted hind */ +/* Cephalopholis aurantia. DESCRIPTION: Golden hind */ +/* Glyphis gangeticus. DESCRIPTION: Ganges shark */ +/* Creagrutus beni. DESCRIPTION: Goldstripe characin */ +/* Congrogadus amplimaculatus. DESCRIPTION: */ +/* Gonialosa modesta. DESCRIPTION: Burmese river gizzard shad */ +/* Chaceon maritae. DESCRIPTION: West African geryon */ +/* Crangon affinis. DESCRIPTION: Japanese sand shrimp */ +/* Glyphis glyphis. DESCRIPTION: Speartooth shark */ +/* Gudusia chapra. DESCRIPTION: Indian river shad */ +/* Gonialosa manmina. DESCRIPTION: Ganges River gizzard shad */ +/* Crocodilichthys gracilis. DESCRIPTION: Lizard triplefin */ +/* Coraglanis kishinouyei. DESCRIPTION: */ +/* Campichthys galei. DESCRIPTION: Gale's pipefish */ +/* Clarias gariepinus x C. macrocephalus. DESCRIPTION: Africa-bighead catfish, hybrid */ +/* Gnathophis nystromi. DESCRIPTION: */ +/* Carassius auratus. DESCRIPTION: Goldfish */ +/* Congiopodus peruvianus. DESCRIPTION: */ +/* Cottiusculus gonez. DESCRIPTION: */ +/* Gilchristella aestuarius. DESCRIPTION: Gilchrist's round herring */ +/* Congothrissa gossei. DESCRIPTION: Smoothbelly pellonuline */ +/* Copeina guttata. DESCRIPTION: Redspotted tetra */ +/* Gorgasia maculata. DESCRIPTION: Whitespotted garden eel */ +/* Congrosoma evermanni. DESCRIPTION: Evermann's conger */ +/* Coreobagrus ichikawai. DESCRIPTION: */ +/* Carangidae. DESCRIPTION: Carangids nei */ +/* Chelidonichthys gabonensis. DESCRIPTION: Gabon gurnard */ +/* Conger spp. DESCRIPTION: Conger eels nei */ +/* Characidae. DESCRIPTION: Characins nei */ +/* Callorhinchus milii. DESCRIPTION: Ghost shark */ +/* Choromytilus chorus. DESCRIPTION: Choro mussel */ +/* Cephalorhynchus eutropia. DESCRIPTION: Black dolphin */ +/* Oncorhynchus masou. DESCRIPTION: Masu(=Cherry) salmon */ +/* Cirrhigaleus barbifer. DESCRIPTION: Mandarin dogfish */ +/* Anodontostoma chacunda. DESCRIPTION: Chacunda gizzard shad */ +/* Cichlasoma urophthalmus. DESCRIPTION: Mexican mojarra */ +/* Oncorhynchus tshawytscha. DESCRIPTION: Chinook(=Spring=King) salmon */ +/* Callorhinchus callorynchus. DESCRIPTION: Plownose chimaera */ +/* Cichlasoma maculicauda. DESCRIPTION: Blackbelt cichlid */ +/* Cichlasoma managuense. DESCRIPTION: Jaguar guapote */ +/* Callorhinchus capensis. DESCRIPTION: Cape elephantfish */ +/* Loligo reynaudii. DESCRIPTION: Cape Hope squid */ +/* Sardinops sagax. DESCRIPTION: South American pilchard */ +/* Thais chocolata. DESCRIPTION: Chocolate rockshell */ +/* Salvelinus spp. DESCRIPTION: Chars nei */ +/* Heterocarpus reedi. DESCRIPTION: Chilean nylon shrimp */ +/* Oncorhynchus keta. DESCRIPTION: Chum(=Keta=Dog) salmon */ +/* Hydrolagus purpurescens. DESCRIPTION: Purple chimaera */ +/* Chionobathyscus dewitti. DESCRIPTION: */ +/* Cichlasoma spp. DESCRIPTION: Cichlasoma nei */ +/* Scomberomorus sinensis. DESCRIPTION: Chinese seerfish */ +/* Cirrhigaleus asper. DESCRIPTION: Roughskin spurdog */ +/* Coregonus autumnalis. DESCRIPTION: Arctic cisco */ +/* Coregonus widegreni. DESCRIPTION: Valaam whitefish */ +/* Coregonus chadary. DESCRIPTION: Khadary-whitefish */ +/* Caridina denticulata. DESCRIPTION: Sawtooth caridina */ +/* Coregonus fera. DESCRIPTION: */ +/* Pseudorhombus cinnamoneus. DESCRIPTION: Cinnamon flounder */ +/* Coregonus wartmanni. DESCRIPTION: */ +/* Coregonus hiemalis. DESCRIPTION: */ +/* Coregonus nilssoni. DESCRIPTION: */ +/* Coregonus peled. DESCRIPTION: Peled */ +/* Coregonus kiyi. DESCRIPTION: Kiyi */ +/* Citharus linguatula. DESCRIPTION: Spotted flounder */ +/* Haplochromis spp. DESCRIPTION: Mouthbrooding cichlids */ +/* Coregonus muksun. DESCRIPTION: Muksun */ +/* Isogomphodon oxyrhynchus. DESCRIPTION: Daggernose shark */ +/* Coregonus pollan. DESCRIPTION: Irish pollan */ +/* Coregonus nasus. DESCRIPTION: Broad whitefish */ +/* Coregonus macrophthalmus. DESCRIPTION: */ +/* Coregonus artedi. DESCRIPTION: Lake cisco */ +/* Citharidae. DESCRIPTION: Citharids nei */ +/* Coregonus tugun. DESCRIPTION: Tugun */ +/* Citharinus spp. DESCRIPTION: Citharinus nei */ +/* Coregonus sardinella. DESCRIPTION: Sardine cisco */ +/* Cichlidae. DESCRIPTION: Cichlids nei */ +/* Coregonus hoyi. DESCRIPTION: Bloater */ +/* Coregonus reighardi. DESCRIPTION: Shortnose cisco */ +/* Cruriraja atlantis. DESCRIPTION: Cuban legskate */ +/* Cyclopteropsis lindbergi. DESCRIPTION: */ +/* Caesio caerulaurea. DESCRIPTION: Blue and gold fusilier */ +/* Cruriraja durbanensis. DESCRIPTION: Smoothnose legskate */ +/* Cirrhilabrus balteatus. DESCRIPTION: Girdled wrasse */ +/* Parastacidae. DESCRIPTION: Oceanian crayfishes nei */ +/* Citharinus gibbosus. DESCRIPTION: */ +/* Chrionema chlorotaenia. DESCRIPTION: */ +/* Cetichthys indagator. DESCRIPTION: */ +/* Cleisthenes pinetorum. DESCRIPTION: S */ +/* ôhachi */ +/* Cetomimus picklei. DESCRIPTION: */ +/* Jenkinsia lamprotaenia. DESCRIPTION: Dwarf round herring */ +/* Trachurus murphyi. DESCRIPTION: Chilean jack mackerel */ +/* Cookeolus japonicus. DESCRIPTION: Longfinned bullseye */ +/* Careproctus jordani. DESCRIPTION: */ +/* Cruriraja parcomaculata. DESCRIPTION: Roughnose legskate */ +/* Scirpus acutus. DESCRIPTION: Tule bulrush */ +/* Cetostoma regani. DESCRIPTION: Pink flabby whalefish */ +/* Jenkinsia stolifera. DESCRIPTION: Florida round herring */ +/* Cruriraja triangularis. DESCRIPTION: Triangular legskate */ +/* Caesio cuning. DESCRIPTION: Redbelly yellowtail fusilier */ +/* Caesio varilineata. DESCRIPTION: Variable-lined fusilier */ +/* Scirpus spp. DESCRIPTION: Tule nei */ +/* Caesionidae. DESCRIPTION: Fusiliers nei */ +/* Cruriraja poeyi. DESCRIPTION: */ +/* Caesio lunaris. DESCRIPTION: Lunar fusilier */ +/* Micropogonias undulatus. DESCRIPTION: Atlantic croaker */ +/* Cetonurus crassiceps. DESCRIPTION: Globosehead rattail */ +/* Coelorinchus productus. DESCRIPTION: Unicorn grenadier */ +/* Coryphaenoides acrolepis. DESCRIPTION: Pacific grenadier */ +/* Coryphaenoides carminifer. DESCRIPTION: Carmine grenadier */ +/* Coryphaenoides marginatus. DESCRIPTION: Amami grenadier */ +/* Coryphaenoides armatus. DESCRIPTION: Abyssal grenadier */ +/* Strangomera bentincki. DESCRIPTION: Araucanian herring */ +/* Coryphaenoides cinereus. DESCRIPTION: Popeye grenadier */ +/* Coryphaenoides ariommus. DESCRIPTION: Humboldt grenadier */ +/* Pseudotolithus senegallus. DESCRIPTION: Law croaker */ +/* Micropogonias furnieri. DESCRIPTION: Whitemouth croaker */ +/* Coryphaenoides anguliceps. DESCRIPTION: Loosescale grenadier */ +/* Coelorinchus occa. DESCRIPTION: Swordsnout grenadier */ +/* Cetonurus globiceps. DESCRIPTION: */ +/* Calamus brachysomus. DESCRIPTION: Pacific porgy */ +/* Coelorinchus parallelus. DESCRIPTION: Spiny grenadier */ +/* Coelorinchus scaphopsis. DESCRIPTION: Shoulderspot grenadier */ +/* Caspialosa curensis. DESCRIPTION: Kura shad */ +/* Coelorinchus multispinulosus. DESCRIPTION: Spearnose grenadier */ +/* Coelorinchus oliverianus. DESCRIPTION: Hawknose grenadier */ +/* Pseudotolithus spp. DESCRIPTION: West African croakers nei */ +/* Coelorinchus ventrilux. DESCRIPTION: Firebelly grenadier */ +/* Umbrina canosai. DESCRIPTION: Argentine croaker */ +/* Caulolatilus chrysops. DESCRIPTION: Atlantic goldeneye tilefish */ +/* Clupeonella cultriventris. DESCRIPTION: Black and Caspian Sea sprat */ +/* Spisula solidissima. DESCRIPTION: Atlantic surf clam */ +/* Latimeria chalumnae. DESCRIPTION: Coelacanth */ +/* Loxodon macrorhinus. DESCRIPTION: Sliteye shark */ +/* Clupeonella engrauliformis. DESCRIPTION: Anchovy sprat */ +/* Corbicula spp. DESCRIPTION: Freshwater clams nei */ +/* Clupeonella grimmi. DESCRIPTION: Southern Caspian sprat */ +/* Mercenaria mercenaria. DESCRIPTION: Northern quahog(=Hard clam) */ +/* Ophiodon elongatus. DESCRIPTION: Lingcod */ +/* Ruditapes philippinarum. DESCRIPTION: Japanese carpet shell */ +/* Corica soborna. DESCRIPTION: Ganges River sprat */ +/* Leptocharias smithii. DESCRIPTION: Barbeled houndshark */ +/* Mesodesma donacium. DESCRIPTION: Macha clam */ +/* Clarias anguillaris. DESCRIPTION: Mudfish */ +/* Cichla ocellaris. DESCRIPTION: Peacock cichlid */ +/* Clupeidae. DESCRIPTION: Herrings, sardines nei */ +/* Arctica islandica. DESCRIPTION: Ocean quahog */ +/* Ensis directus. DESCRIPTION: Atl.jackknife(=Atl.razor clam) */ +/* Mya arenaria. DESCRIPTION: Sand gaper */ +/* Spisula polynyma. DESCRIPTION: Stimpson's surf clam */ +/* Clupeoidei. DESCRIPTION: Clupeoids nei */ +/* Veneridae. DESCRIPTION: Venus clams nei */ +/* Clarotes bidorsalis. DESCRIPTION: */ +/* Bivalvia. DESCRIPTION: Clams, etc. nei */ +/* Coryphaenoides longifilis. DESCRIPTION: Longfin grenadier */ +/* Clarias gariepinus. DESCRIPTION: North African catfish */ +/* Corbicula fluminea. DESCRIPTION: Asian clam */ +/* Crocodylus rhombifer. DESCRIPTION: Cuban crocodile */ +/* Clarias macrocephalus. DESCRIPTION: Bighead catfish */ +/* Cephalorhynchus commersonii. DESCRIPTION: Commerson's dolphin */ +/* Crocodylus moreletii. DESCRIPTION: Morelet's crocodile */ +/* Chlamys farreri. DESCRIPTION: Farrer's scallop */ +/* Cirrhinus mrigala. DESCRIPTION: Mrigal carp */ +/* Chimaera phantasma. DESCRIPTION: Silver chimaera */ +/* Corynopoma riisei. DESCRIPTION: Swordtail characin */ +/* Corbicula japonica. DESCRIPTION: Japanese corbicula */ +/* Chromis chromis. DESCRIPTION: Damselfish */ +/* Crossostoma lacustre. DESCRIPTION: */ +/* Corbicula manilensis. DESCRIPTION: Manila clam */ +/* Chlamys nobilis. DESCRIPTION: Noble scallop */ +/* Chimaera monstrosa. DESCRIPTION: Rabbit fish */ +/* Caracanthus maculatus. DESCRIPTION: Spotted coral croucher */ +/* Carcinus aestuarii. DESCRIPTION: Mediterranean shore crab */ +/* Chimaera jordani. DESCRIPTION: */ +/* Cynopotamus argenteus. DESCRIPTION: */ +/* Chimaera cubana. DESCRIPTION: */ +/* Calamus calamus. DESCRIPTION: Saucereye porgy */ +/* Chimaera owstoni. DESCRIPTION: */ +/* Centromochlus existimatus. DESCRIPTION: */ +/* Cyema atrum. DESCRIPTION: Bobtail eel */ +/* Caristius macropus. DESCRIPTION: Manefish */ +/* Channa argus. DESCRIPTION: Snakehead */ +/* Ctenolucius beani. DESCRIPTION: */ +/* Citharinus citharus. DESCRIPTION: */ +/* Citharinops distichodoides. DESCRIPTION: */ +/* Nematalosa erebi. DESCRIPTION: Australian river gizzard shad */ +/* Neoceratodus forsteri. DESCRIPTION: Australian lungfish */ +/* Crocodylus novaeguineae. DESCRIPTION: New Guinea crocodile */ +/* Caenotropus labyrinthicus. DESCRIPTION: */ +/* Cnidaria. DESCRIPTION: Cnidarians nei */ +/* Nematalosa japonica. DESCRIPTION: Japanese gizzard shad */ +/* Coryphaenoides guentheri. DESCRIPTION: G */ +/* ünther's grenadier */ +/* Crenuchus spilurus. DESCRIPTION: Sailfin tetra */ +/* Cnidoglanis macrocephalus. DESCRIPTION: Cobbler */ +/* Neoharriotta pinnata. DESCRIPTION: Sicklefin chimaera */ +/* Cranoglanis bouderius. DESCRIPTION: */ +/* Channa punctata. DESCRIPTION: Spotted snakehead */ +/* Cnesterodon carnegiei. DESCRIPTION: */ +/* Nannothrissa parva. DESCRIPTION: Lake Tumba dwarf sprat */ +/* Nematalosa nasus. DESCRIPTION: Bloch's gizzard shad */ +/* Canthidermis maculata. DESCRIPTION: Rough triggerfish */ +/* Chirocentrus nudus. DESCRIPTION: Whitefin wolf-herring */ +/* Cynodon gibbus. DESCRIPTION: */ +/* Nasolamia velox. DESCRIPTION: Whitenose shark */ +/* Neocyema erythrosoma. DESCRIPTION: */ +/* Crangon spp. DESCRIPTION: Crangon shrimps nei */ +/* Conger oceanicus. DESCRIPTION: American conger */ +/* Umbrina cirrosa. DESCRIPTION: Shi drum */ +/* Cerastoderma edule. DESCRIPTION: Common edible cockle */ +/* Gadus morhua. DESCRIPTION: Atlantic cod */ +/* Conger conger. DESCRIPTION: European conger */ +/* Chilodus fritillus. DESCRIPTION: */ +/* Corallium regale. DESCRIPTION: Garnet coral */ +/* Oncorhynchus kisutch. DESCRIPTION: Coho(=Silver) salmon */ +/* Conger cinereus. DESCRIPTION: Longfin African conger */ +/* Corallium japonicum. DESCRIPTION: Aka coral */ +/* Corallium konojoi. DESCRIPTION: Shiro, white coral */ +/* Corallium rubrum. DESCRIPTION: Sardinia coral */ +/* Scomberomorus commerson. DESCRIPTION: Narrow-barred Spanish mackerel */ +/* Strombus spp. DESCRIPTION: Stromboid conchs nei */ +/* Strombus gigas. DESCRIPTION: Queen conch */ +/* Conger triporiceps. DESCRIPTION: Manytooth conger */ +/* Corallium spp. DESCRIPTION: Precious corals nei */ +/* Conger orbignyanus. DESCRIPTION: Argentine conger */ +/* Dichistiidae. DESCRIPTION: Galjoens nei */ +/* Coris julis. DESCRIPTION: Rainbow wrasse */ +/* Conger japonicus. DESCRIPTION: */ +/* Eleginus navaga. DESCRIPTION: Navaga(=Wachna cod) */ +/* Congridae. DESCRIPTION: Conger eels, etc. nei */ +/* Congriscus megastomus. DESCRIPTION: */ +/* Cardiidae. DESCRIPTION: Cockles nei */ +/* Cephaloscyllium silasi. DESCRIPTION: Indian swellshark */ +/* Cephaloscyllium umbratile. DESCRIPTION: Blotchy swell shark */ +/* Cephalurus cephalus. DESCRIPTION: Lollipop catshark */ +/* Cetopsogiton occidentalis. DESCRIPTION: */ +/* Ctenacis fehlmanni. DESCRIPTION: Harlequin catshark */ +/* Cephaloscyllium fasciatum. DESCRIPTION: Reticulated swellshark */ +/* Gollum attenuatus. DESCRIPTION: Slender smooth-hound */ +/* Cephaloscyllium sufflans. DESCRIPTION: Balloon shark */ +/* Sardinops caeruleus. DESCRIPTION: California pilchard */ +/* Coryphaenoides macrolophus. DESCRIPTION: */ +/* Colpichthys hubbsi. DESCRIPTION: Delta silverside */ +/* Centrophorus lusitanicus. DESCRIPTION: Lowfin gulper shark */ +/* Caperea marginata. DESCRIPTION: Pygmy right whale */ +/* Cephaloscyllium nascione. DESCRIPTION: Whitefinned swellshark */ +/* Pampus chinensis. DESCRIPTION: Chinese silver pomfret */ +/* Pachymetopon spp. DESCRIPTION: Copper breams(=Hottentots) nei */ +/* Cetopsorhamdia boquillae. DESCRIPTION: */ +/* Palaemon serratus. DESCRIPTION: Common prawn */ +/* Cephaloscyllium isabellum. DESCRIPTION: Draughtsboard shark */ +/* Cephaloscyllium laticeps. DESCRIPTION: Australian swellshark */ +/* Centrophorus uyato. DESCRIPTION: Little gulper shark */ +/* Cephaloscyllium ventriosum. DESCRIPTION: Swellshark */ +/* Carapus acus. DESCRIPTION: */ +/* Coryphaenoides mexicanus. DESCRIPTION: Mexican grenadier */ +/* Proscyllium habereri. DESCRIPTION: Graceful catshark */ +/* Cosmocampus arctus. DESCRIPTION: Snubnose pipefish */ +/* Coelorinchus acanthiger. DESCRIPTION: Surgeon grenadier */ +/* Coelorinchus biclinozonalis. DESCRIPTION: Two-barred whiptail */ +/* Coelorinchus aconcagua. DESCRIPTION: Aconcagua grenadier */ +/* Coelorinchus denticulatus. DESCRIPTION: Filesnout grenadier */ +/* Coelorinchus braueri. DESCRIPTION: Shovelnose grenadier */ +/* Coelorinchus fasciatus. DESCRIPTION: Banded whiptail */ +/* Coelorinchus argus. DESCRIPTION: Eyespot grenadier */ +/* Coelorinchus canus. DESCRIPTION: Clearsnout grenadier */ +/* Coelorinchus caribbaeus. DESCRIPTION: Blackfin grenadier */ +/* Coelorinchus japonicus. DESCRIPTION: Japanese grenadier */ +/* Coelorinchus kamoharai. DESCRIPTION: Kamohara grenadier */ +/* Coelorinchus caelorhincus. DESCRIPTION: Hollowsnout grenadier */ +/* Coelorinchus formosanus. DESCRIPTION: Formosa grenadier */ +/* Coelorinchus anatirostris. DESCRIPTION: Duckbill grenadier */ +/* Coelorinchus chilensis. DESCRIPTION: Chilean grenadier */ +/* Coelorinchus longicephalus. DESCRIPTION: Longhead grenadier */ +/* Coelorinchus karrerae. DESCRIPTION: Karrer's whiptail */ +/* Coelorinchus argentatus. DESCRIPTION: Silver whiptail */ +/* Coelorinchus aspercephalus. DESCRIPTION: Rough-head whiptail */ +/* Coelorinchus innotabilis. DESCRIPTION: Notable whiptail */ +/* Coelorinchus australis. DESCRIPTION: Javelin */ +/* Coelorinchus labiatus. DESCRIPTION: Spearsnouted grenadier */ +/* Coelorinchus macrochir. DESCRIPTION: Longarm grenadier */ +/* Coelorinchus hexafasciatus. DESCRIPTION: Six-band grenadier */ +/* Coelorinchus kishinouyei. DESCRIPTION: Mugura grenadier */ +/* Chitonotus pugetensis. DESCRIPTION: Roughback sculpin */ +/* Brachyura. DESCRIPTION: Marine crabs nei */ +/* Callinectes sapidus. DESCRIPTION: Blue crab */ +/* Callinectes toxotes. DESCRIPTION: Giant swimcrab */ +/* Astacus leptodactylus. DESCRIPTION: Danube crayfish */ +/* Cancer pagurus. DESCRIPTION: Edible crab */ +/* Carangoides ferdau. DESCRIPTION: Blue trevally */ +/* Carcinus maenas. DESCRIPTION: Green crab */ +/* Crocodylus johnstoni. DESCRIPTION: Australian crocodile */ +/* Crocodylus niloticus. DESCRIPTION: Nile crocodile */ +/* Cancer borealis. DESCRIPTION: Jonah crab */ +/* Cancer irroratus. DESCRIPTION: Atlantic rock crab */ +/* Atrobucca nibe. DESCRIPTION: Blackmouth croaker */ +/* Crangonidae. DESCRIPTION: Crangonid shrimps nei */ +/* Crocodylidae. DESCRIPTION: Crocodiles and alligators nei */ +/* Cherax quadricarinatus. DESCRIPTION: Red claw crayfish */ +/* Chionoecetes opilio. DESCRIPTION: Queen crab */ +/* Chaceon quinquedens. DESCRIPTION: Red crab */ +/* Portunus spp. DESCRIPTION: Portunus swimcrabs nei */ +/* Cherax tenuimanus. DESCRIPTION: Marron crayfish */ +/* Crustacea. DESCRIPTION: Marine crustaceans nei */ +/* Pennahia argentata. DESCRIPTION: Silver croaker */ +/* Palinurus spp. DESCRIPTION: Palinurid spiny lobsters nei */ +/* Micropogonias spp. DESCRIPTION: Croakers nei */ +/* Larimichthys polyactis. DESCRIPTION: Yellow croaker */ +/* Callinectes danae. DESCRIPTION: Dana swimcrab */ +/* Apristurus acanutus. DESCRIPTION: */ +/* Saccostrea cuccullata. DESCRIPTION: Hooded oyster */ +/* Piaractus brachypomus. DESCRIPTION: Pirapatinga */ +/* Corallium secundum. DESCRIPTION: Angel skin coral */ +/* Apristurus longicephalus. DESCRIPTION: Longhead catshark */ +/* Apristurus gibbosus. DESCRIPTION: */ +/* Crangon crangon. DESCRIPTION: Common shrimp */ +/* Crassostrea iredalei. DESCRIPTION: Slipper cupped oyster */ +/* Apristurus japonicus. DESCRIPTION: Japanese catshark */ +/* Catharacta skua. DESCRIPTION: Great skua */ +/* Zalophus californianus. DESCRIPTION: California sea lion */ +/* Colossoma macropomum. DESCRIPTION: Cachama */ +/* Apristurus brunneus. DESCRIPTION: Brown catshark */ +/* Piaractus mesopotamicus. DESCRIPTION: Pacu */ +/* Penaeus brevirostris. DESCRIPTION: Crystal shrimp */ +/* Apristurus canutus. DESCRIPTION: Hoary catshark */ +/* Chrysichthys nigrodigitatus. DESCRIPTION: Bagrid catfish */ +/* Scleractinia. DESCRIPTION: Hard corals, madrepores nei */ +/* Chrysichthys spp. DESCRIPTION: Black catfishes nei */ +/* Apristurus atlanticus. DESCRIPTION: Atlantic ghost catshark */ +/* Apristurus riveri. DESCRIPTION: Broadgill catshark */ +/* Apristurus herklotsi. DESCRIPTION: Longfin catshark */ +/* Apristurus macrorhynchus. DESCRIPTION: Flathead catshark */ +/* Synodontis spp. DESCRIPTION: Upsidedown catfishes */ +/* Apristurus kampae. DESCRIPTION: Longnose catshark */ +/* Cheilodactylus bergi. DESCRIPTION: Castaneta */ +/* Diplodus vulgaris. DESCRIPTION: Common two-banded seabream */ +/* Sepia officinalis. DESCRIPTION: Common cuttlefish */ +/* Mustelus dorsalis. DESCRIPTION: Sharptooth smooth-hound */ +/* Mustelus griseus. DESCRIPTION: Spotless smooth-hound */ +/* Mustelus fasciatus. DESCRIPTION: Striped smooth-hound */ +/* Ruditapes decussatus. DESCRIPTION: Grooved carpet shell */ +/* Catharacta chilensis. DESCRIPTION: Chilean skua */ +/* Mustelus canis. DESCRIPTION: Dusky smooth-hound */ +/* Mustelus higmani. DESCRIPTION: Smalleye smooth-hound */ +/* Mustelus henlei. DESCRIPTION: Brown smooth-hound */ +/* Sepiidae, Sepiolidae. DESCRIPTION: Cuttlefish, bobtail squids nei */ +/* Catostomidae. DESCRIPTION: Suckers nei */ +/* Mustelus californicus. DESCRIPTION: Grey smooth-hound */ +/* Clarias spp. DESCRIPTION: Torpedo-shaped catfishes nei */ +/* Cetopsis chalmersi. DESCRIPTION: */ +/* Cryptopsaras couesii. DESCRIPTION: Triplewart seadevil */ +/* Sepiola rondeleti. DESCRIPTION: Dwarf bobtail squid */ +/* Venerupis pullastra. DESCRIPTION: Pullet carpet shell */ +/* Catla catla. DESCRIPTION: Catla */ +/* Mustelus antarcticus. DESCRIPTION: Gummy shark */ +/* Chaetostoma sovichthys. DESCRIPTION: */ +/* Cheroscorpaena tridactyla. DESCRIPTION: */ +/* Chilatherina axelrodi. DESCRIPTION: Axelrod's rainbowfish */ +/* Curimatopsis crypticus. DESCRIPTION: */ +/* Chelidonichthys lastoviza. DESCRIPTION: Streaked gurnard */ +/* Alosa alabamae. DESCRIPTION: Alabama shad */ +/* Genypterus maculatus. DESCRIPTION: Black cusk-eel */ +/* Genypterus chilensis. DESCRIPTION: Red cusk-eel */ +/* Chauliodus danae. DESCRIPTION: Dana viperfish */ +/* Alosa kessleri. DESCRIPTION: Caspian anadromous shad */ +/* Chlorophthalmus acutifrons. DESCRIPTION: */ +/* Caecobarbus geertsii. DESCRIPTION: Congo blind barb */ +/* Alosa sphaerocephala. DESCRIPTION: Agrakhan shad */ +/* Alosa caspia. DESCRIPTION: Caspian shad */ +/* Stichopus japonicus. DESCRIPTION: Japanese sea cucumber */ +/* Alosa brashnikovi. DESCRIPTION: Caspian marine shad */ +/* Uroconger lepturus. DESCRIPTION: Slender conger */ +/* Cynothrissa mento. DESCRIPTION: Nigerian fangtooth pellonuline */ +/* Tautogolabrus adspersus. DESCRIPTION: Cunner */ +/* Clupeoides borneensis. DESCRIPTION: Borneo River sprat */ +/* Cubiceps spp. DESCRIPTION: */ +/* Centriscops humerosus. DESCRIPTION: Banded yellowfish */ +/* Clupeichthys aesarnensis. DESCRIPTION: Thai river sprat */ +/* Genypterus blacodes. DESCRIPTION: Pink cusk-eel */ +/* Trichiuridae. DESCRIPTION: Hairtails, scabbardfishes nei */ +/* Curimata cyprinoides. DESCRIPTION: */ +/* Alosa saposhnikovi. DESCRIPTION: Saposhnikovi shad */ +/* Centriscus cristatus. DESCRIPTION: Smooth razorfish */ +/* Holothuroidea. DESCRIPTION: Sea cucumbers nei */ +/* Cynothrissa ansorgii. DESCRIPTION: Ansorge fangtooth pellonuline */ +/* Culaea inconstans. DESCRIPTION: Brook stickleback */ +/* Cottus amblystomopsis. DESCRIPTION: Sakhalin sculpin */ +/* Chionoecetes bairdi. DESCRIPTION: Tanner crab */ +/* Caudiverbera caudiverbera. DESCRIPTION: Chilean frog */ +/* Cidaridae. DESCRIPTION: Pencil urchins */ +/* Sciades couma. DESCRIPTION: Couma sea catfish */ +/* Tautogolabrus brandaonis. DESCRIPTION: */ +/* Careproctus georgianus. DESCRIPTION: */ +/* Careproctus catherinae. DESCRIPTION: */ +/* Cebidichthys violaceus. DESCRIPTION: Monkeyface prickleback */ +/* Caranx hippos. DESCRIPTION: Crevalle jack */ +/* Cephalopholis boenak. DESCRIPTION: Chocolate hind */ +/* Sclerocrangon spp. DESCRIPTION: Sculptured shrimps nei */ +/* Cocotropus masudai. DESCRIPTION: */ +/* Chiasmodon niger. DESCRIPTION: Black swallower */ +/* Clevelandia ios. DESCRIPTION: Arrow goby */ +/* Cottunculus microps. DESCRIPTION: Polar sculpin */ +/* Sciades passany. DESCRIPTION: Passany sea catfish */ +/* Careproctus polarsterni. DESCRIPTION: */ +/* Chauliodus schmidti. DESCRIPTION: */ +/* Sepia hierredda. DESCRIPTION: Giant African cuttlefish */ +/* Clupeichthys goniognathus. DESCRIPTION: Sumatran river sprat */ +/* Larus ridibundus. DESCRIPTION: Common black-headed gull */ +/* Chlorophthalmus agassizi. DESCRIPTION: Shortnose greeneye */ +/* Carcharhiniformes. DESCRIPTION: Ground sharks */ +/* Coryphaenoides spp. DESCRIPTION: Grenadiers, whiptails nei */ +/* Cyprinodon alvarezi. DESCRIPTION: Potosi pupfish */ +/* Clupeonella spp. DESCRIPTION: Black-Caspian Sea sprats nei */ +/* Centroberyx lineatus. DESCRIPTION: Swallow-tail */ +/* Crenidens crenidens. DESCRIPTION: Karanteen seabream */ +/* Crinoidea. DESCRIPTION: Feather stars and sea lilies */ +/* Cancer edwardsii. DESCRIPTION: Mola rock crab */ +/* Carassius gibelio. DESCRIPTION: Prussian carp */ +/* Cantherhines sandwichiensis. DESCRIPTION: Sandwich isle file */ +/* Cephalopholis igarashiensis. DESCRIPTION: Garish hind */ +/* Chionoecetes japonicus. DESCRIPTION: Red snow crab */ +/* Cottocomephorus grewingkii. DESCRIPTION: Baikal yellowfin */ +/* Careproctus pseudoprofundicola. DESCRIPTION: */ +/* Chimaera spp. DESCRIPTION: */ +/* Caristius spp. DESCRIPTION: Manefishes nei */ +/* Centrophorus spp. DESCRIPTION: Gulper sharks nei */ +/* Careproctus ampliceps. DESCRIPTION: */ +/* Cephalopholis spiloparaea. DESCRIPTION: Strawberry hind */ +/* Careproctus spp. DESCRIPTION: */ +/* Cetomimidae. DESCRIPTION: */ +/* Cephalopholis urodeta. DESCRIPTION: Darkfin hind */ +/* Careproctus vladibeckeri. DESCRIPTION: */ +/* Coelorinchus spp. DESCRIPTION: */ +/* Chrysaora hysoscella. DESCRIPTION: */ +/* Carcharhinus spp. DESCRIPTION: Carcharhinus sharks nei */ +/* Carlastyanax aurocaudatus. DESCRIPTION: */ +/* Xenomystax bidentatus. DESCRIPTION: */ +/* Charax condei. DESCRIPTION: */ +/* Cyphocharax abramoides. DESCRIPTION: */ +/* Chaunax abei. DESCRIPTION: */ +/* Centroberyx affinis. DESCRIPTION: Redfish */ +/* Neolebias gossei. DESCRIPTION: */ +/* Congopanchax brichardi. DESCRIPTION: */ +/* Calamopteryx goslinei. DESCRIPTION: Longarm brotula */ +/* Cherax albidus. DESCRIPTION: */ +/* Cynopanchax bukobanus. DESCRIPTION: */ +/* Cataetyx alleni. DESCRIPTION: */ +/* Careproctus melanurus. DESCRIPTION: Blacktail snailfish */ +/* Chalixodytes chameleontoculis. DESCRIPTION: Sand dart */ +/* Clupeocharax schoutedeni. DESCRIPTION: */ +/* Cynoponticus coniceps. DESCRIPTION: Red pike conger */ +/* Cirrhilabrus exquisitus. DESCRIPTION: Exquisite wrasse */ +/* Caranx ruber. DESCRIPTION: Bar jack */ +/* Caranx sexfasciatus. DESCRIPTION: Bigeye trevally */ +/* Caranx bucculentus. DESCRIPTION: Bluespotted trevally */ +/* Chirophryne xenolophus. DESCRIPTION: */ +/* Careproctus inflexidens. DESCRIPTION: */ +/* Cymbium spp. DESCRIPTION: Volutes nei */ +/* Centroberyx gerrardi. DESCRIPTION: Bight redfish */ +/* Hydrolagus affinis. DESCRIPTION: Smalleyed rabbitfish */ +/* Hydrolagus barbouri. DESCRIPTION: */ +/* Cycloteuthidae. DESCRIPTION: Disc-fin squids nei */ +/* Hydrolagus deani. DESCRIPTION: Philippine chimaera */ +/* Cyclichthys spilostylus. DESCRIPTION: Spotbase burrfish */ +/* Hydrolagus africanus. DESCRIPTION: African chimaera */ +/* Centroscyllium granulatum. DESCRIPTION: Granular dogfish */ +/* Hydrolagus mirabilis. DESCRIPTION: Large-eyed rabbitfish */ +/* Hydrolagus eidolon. DESCRIPTION: */ +/* Hydrolagus ogilbyi. DESCRIPTION: */ +/* Centroscyllium kamoharai. DESCRIPTION: Bareskin dogfish */ +/* Hydrolagus alberti. DESCRIPTION: */ +/* Cymatoceps nasutus. DESCRIPTION: Black musselcracker */ +/* Centroscyllium nigrum. DESCRIPTION: Combtooth dogfish */ +/* Centroscymnus coelolepis. DESCRIPTION: Portuguese dogfish */ +/* Centroscymnus crepidater. DESCRIPTION: Longnose velvet dogfish */ +/* Centroscyllium ritteri. DESCRIPTION: Whitefin dogfish */ +/* Hydrolagus lemures. DESCRIPTION: Blackfin ghostshark */ +/* Centroscyllium ornatum. DESCRIPTION: Ornate dogfish */ +/* Centroscymnus plunketi. DESCRIPTION: Plunket shark */ +/* Hydrolagus novaezealandiae. DESCRIPTION: Dark ghost shark */ +/* Centroscymnus owstoni. DESCRIPTION: Roughskin dogfish */ +/* Hydrolagus mitsukurii. DESCRIPTION: */ +/* Centroscymnus cryptacanthus. DESCRIPTION: Shortnose velvet dogfish */ +/* Hydrolagus pallidus. DESCRIPTION: */ +/* Coralliozetus angelica. DESCRIPTION: Angel blenny */ +/* Careproctus continentalis. DESCRIPTION: */ +/* Cymbula nigra. DESCRIPTION: */ +/* Calonectris edwardsii. DESCRIPTION: Cape Verde shearwater */ +/* Coryphaenoides ferrieri. DESCRIPTION: */ +/* Clarias nieuhofii. DESCRIPTION: */ +/* Chorus giganteus. DESCRIPTION: */ +/* Centroscymnus spp. DESCRIPTION: */ +/* Cervimunida johni. DESCRIPTION: Blue squat lobster */ +/* Cottus czerskii. DESCRIPTION: Cherskii's sculpin */ +/* Coryphaenoides lecointei. DESCRIPTION: */ +/* Paguridae. DESCRIPTION: Right-handed hermit crabs nei */ +/* Radicipes gracilis. DESCRIPTION: */ +/* Callianassa spp. DESCRIPTION: Ghost shrimps nei */ +/* Ceratozona squalida. DESCRIPTION: Eastern surf chiton */ +/* Chelidonichthys spinosus. DESCRIPTION: Spiny red gurnard */ +/* Canthidermis sufflamen. DESCRIPTION: Ocean triggerfish */ +/* Carcinus spp. DESCRIPTION: Carcinus crabs nei */ +/* Caridina spp. DESCRIPTION: Caridina shrimps nei */ +/* Crystallichthys cyclospilus. DESCRIPTION: Blotched snailfish */ +/* Dascyllus albisella. DESCRIPTION: Hawaiian dascyllus */ +/* Limanda limanda. DESCRIPTION: Common dab */ +/* Daption capense. DESCRIPTION: Cape petrel */ +/* Danio dangila. DESCRIPTION: */ +/* Danio aequipinnatus. DESCRIPTION: Giant danio */ +/* Danio frankei. DESCRIPTION: Leopard danio */ +/* Stolothrissa, Limnothrissa spp. DESCRIPTION: Dagaas */ +/* Dacodraco hunteri. DESCRIPTION: */ +/* Danio rerio. DESCRIPTION: Zebra danio */ +/* Dadyanos insignis. DESCRIPTION: */ +/* Dagetichthys lakdoensis. DESCRIPTION: */ +/* Calliostoma turnerarum. DESCRIPTION: */ +/* Diomedea amsterdamensis. DESCRIPTION: Amsterdam Island albatross */ +/* Dactyloscopus crossotus. DESCRIPTION: Bigeye stargazer */ +/* Dallia pectoralis. DESCRIPTION: Alaska blackfish */ +/* Phoebastria albatrus. DESCRIPTION: Short-tailed albatross */ +/* Chrysoblephus cristiceps. DESCRIPTION: Daggerhead seabream */ +/* Clupanodon thrissa. DESCRIPTION: Chinese gizzard shad */ +/* Danionella translucida. DESCRIPTION: */ +/* Dascyllus aruanus. DESCRIPTION: Whitetail dascyllus */ +/* Danio devario. DESCRIPTION: Sind danio */ +/* Crepipatella orbiculata. DESCRIPTION: Round slippersnail */ +/* Crepipatella spp. DESCRIPTION: */ +/* Dactylopus dactylopus. DESCRIPTION: Fingered dragonet */ +/* Hydrobates pelagicus. DESCRIPTION: European storm-petrel */ +/* Dibranchus atlanticus. DESCRIPTION: */ +/* Pseudolabrus biserialis. DESCRIPTION: */ +/* Caenopedina novaezealandiae. DESCRIPTION: Banded-spine urchin */ +/* Cuenotaster involutus. DESCRIPTION: */ +/* Bolinichthys photothorax. DESCRIPTION: Spurcheek lanternfish */ +/* Bolinichthys supralateralis. DESCRIPTION: Stubby lanternfish */ +/* Drombus globiceps. DESCRIPTION: */ +/* Centrobranchus nigroocellatus. DESCRIPTION: Roundnose lanternfish */ +/* Cepola pauciradiata. DESCRIPTION: */ +/* Doryichthys boaja. DESCRIPTION: */ +/* Oceanodroma leucorhoa. DESCRIPTION: Leach's storm-petrel */ +/* Bathophilus brevis. DESCRIPTION: */ +/* Grammatorcynus bilineatus. DESCRIPTION: Double-lined mackerel */ +/* Diomedea dabbenena. DESCRIPTION: Tristan albatross */ +/* Tursiops truncatus. DESCRIPTION: Bottlenose dolphin */ +/* Bathophilus pawneei. DESCRIPTION: Pawnee dragonfish */ +/* Ceramaster patagonicus. DESCRIPTION: Pentagon star */ +/* Borostomias elucens. DESCRIPTION: */ +/* Cantherhines dumerilii. DESCRIPTION: Whitespotted filefish */ +/* Cosmasterias dyscrita. DESCRIPTION: Cat's-foot star */ +/* Dolabella auricularia. DESCRIPTION: Shoulderblade sea cat */ +/* Dascyllus reticulatus. DESCRIPTION: Reticulate dascyllus */ +/* Doryrhamphus baldwini. DESCRIPTION: */ +/* Corythoichthys haematopterus. DESCRIPTION: Messmate pipefish */ +/* Tursiops aduncus. DESCRIPTION: Indo-Pacif. bottlenose dolphin */ +/* Deania calcea. DESCRIPTION: Birdbeak dogfish */ +/* Decapterus macrosoma. DESCRIPTION: Shortfin scad */ +/* Decapterus muroadsi. DESCRIPTION: Amberstripe scad */ +/* Dictyosoma burgeri. DESCRIPTION: */ +/* Pseudocoris aurantiofasciatus. DESCRIPTION: Rust-banded wrasse */ +/* Diancistrus longifilis. DESCRIPTION: */ +/* Pseudocheilinops ataenia. DESCRIPTION: Pelvic-spot wrasse */ +/* Dascyllus trimaculatus. DESCRIPTION: Threespot dascyllus */ +/* Decapterus kurroides. DESCRIPTION: Redtail scad */ +/* Stenella clymene. DESCRIPTION: Clymene dolphin */ +/* Dolichallabes microphthalmus. DESCRIPTION: */ +/* Decodon grandisquamis. DESCRIPTION: Largescale wrasse */ +/* Delphinus delphis. DESCRIPTION: Common dolphin */ +/* Natantia. DESCRIPTION: Natantian decapods nei */ +/* Doryrhamphus excisus. DESCRIPTION: Bluestripe pipefish */ +/* Thalassarche chlororhynchos. DESCRIPTION: Atlant. yellow-nosed albatross */ +/* Distocambarus carlsoni. DESCRIPTION: Mimic crayfish */ +/* Decapterus tabl. DESCRIPTION: Roughear scad */ +/* Thalassarche cauta. DESCRIPTION: Shy albatross */ +/* Pseudocheilinus evanidus. DESCRIPTION: Striated wrasse */ +/* Clupeoidei. DESCRIPTION: Diadromous clupeoids nei */ +/* Diapteron cyanostictum. DESCRIPTION: Gabon jewelfish */ +/* Delphinus capensis. DESCRIPTION: Long-beaked common dolphin */ +/* Abudefduf sordidus. DESCRIPTION: Blackspot sergeant */ +/* Dendrochirus barberi. DESCRIPTION: Hawaiian lionfish */ +/* Dondersia californica. DESCRIPTION: Leaf-spiculed solenogaster */ +/* Abudefduf vaigiensis. DESCRIPTION: Indo-Pacific sergeant */ +/* Cosmocampus retropinnis. DESCRIPTION: */ +/* Dendostrea folium. DESCRIPTION: Leaf oyster */ +/* Deltadoras guayoensis. DESCRIPTION: */ +/* Dendrochirus biocellatus. DESCRIPTION: Twospot turkeyfish */ +/* Didogobius kochi. DESCRIPTION: */ +/* Diodora listeri. DESCRIPTION: Lister's keyhole limpet */ +/* Crossaster multispinus. DESCRIPTION: Sun-star */ +/* Cosmocampus investigatoris. DESCRIPTION: */ +/* Dendostrea frons. DESCRIPTION: Frons oyster */ +/* Muraenesox bagio. DESCRIPTION: Common pike conger */ +/* Diadema setosum. DESCRIPTION: Porcupine sea urchin */ +/* Lagenorhynchus obscurus. DESCRIPTION: Dusky dolphin */ +/* Dendropoma maximum. DESCRIPTION: Great worm shell */ +/* Dendrochirus brachypterus. DESCRIPTION: Shortfin turkeyfish */ +/* Dendrochirus zebra. DESCRIPTION: Zebra turkeyfish */ +/* Dentex angolensis. DESCRIPTION: Angolan dentex */ +/* Denariusa bandata. DESCRIPTION: Pennyfish */ +/* Dentex dentex. DESCRIPTION: Common dentex */ +/* Dermatolepis dermatolepis. DESCRIPTION: Leather bass */ +/* Derepodichthys alepidotus. DESCRIPTION: Cuskpout */ +/* Dentalium agassizi. DESCRIPTION: Stained tuskshell */ +/* Decatopecten amiculum. DESCRIPTION: Cloak scallop */ +/* Desmophyllum dianthus. DESCRIPTION: */ +/* Dentex macrophthalmus. DESCRIPTION: Large-eye dentex */ +/* Dentex maroccanus. DESCRIPTION: Morocco dentex */ +/* Dentex canariensis. DESCRIPTION: Canary dentex */ +/* Dentex gibbosus. DESCRIPTION: Pink dentex */ +/* Deltentosteus quadrimaculatus. DESCRIPTION: Four-spotted goby */ +/* Thalassarche eremita. DESCRIPTION: Chatham Islands albatross */ +/* Glossanodon semifasciatus. DESCRIPTION: Deep-sea smelt */ +/* Andersonia leptura. DESCRIPTION: */ +/* Deltistes luxatus. DESCRIPTION: Lost River sucker */ +/* Dermatolepis striolata. DESCRIPTION: Smooth grouper */ +/* Dentex spp. DESCRIPTION: Dentex nei */ +/* Daphnia carinata. DESCRIPTION: */ +/* Daphnia brooksi. DESCRIPTION: */ +/* Daphnia cephalata. DESCRIPTION: */ +/* Cerdale floridana. DESCRIPTION: Pugjaw wormfish */ +/* Daphnia ephemeralis. DESCRIPTION: */ +/* Duva florida. DESCRIPTION: */ +/* Daphnia quadrangulus. DESCRIPTION: */ +/* Daphnia chilensis. DESCRIPTION: */ +/* Daphnia similoides. DESCRIPTION: */ +/* Daphnia jollyi. DESCRIPTION: */ +/* Daphnia hispanica. DESCRIPTION: */ +/* Daphnia lumholtzi. DESCRIPTION: */ +/* Daphnia mediterranea. DESCRIPTION: */ +/* Daphnia nivalis. DESCRIPTION: */ +/* Daphnia occidentalis. DESCRIPTION: */ +/* Daphnia pusilla. DESCRIPTION: */ +/* Daphnia queenslandensis. DESCRIPTION: */ +/* Daphnia gessneri. DESCRIPTION: */ +/* Daphnia similis. DESCRIPTION: */ +/* Daphnia cristata. DESCRIPTION: */ +/* Daphnia australis. DESCRIPTION: */ +/* Daphnia curvirostris. DESCRIPTION: */ +/* Diodora spp. DESCRIPTION: */ +/* Dinophyceae. DESCRIPTION: */ +/* Synodus dermatogenys. DESCRIPTION: Sand lizardfish */ +/* Diogenichthys atlanticus. DESCRIPTION: */ +/* Paradiplogrammus bairdi. DESCRIPTION: Lancer dragonet */ +/* Synodus macrops. DESCRIPTION: Triplecross lizardfish */ +/* Diplogrammus goramensis. DESCRIPTION: */ +/* Squalidae, Scyliorhinidae. DESCRIPTION: Dogfishes and hounds nei */ +/* Digenea simplex. DESCRIPTION: Red seabroom */ +/* Diagramma pictum. DESCRIPTION: Painted sweetlips */ +/* Lepophidium negropinna. DESCRIPTION: Specklefin cusk-eel */ +/* Squalus acanthias. DESCRIPTION: Picked dogfish */ +/* Diplogrammus pygmaeus. DESCRIPTION: Pygmy dragonet */ +/* Acanthurus blochii. DESCRIPTION: Ringtail surgeonfish */ +/* Acanthurus mata. DESCRIPTION: Elongate surgeonfish */ +/* Squalidae. DESCRIPTION: Dogfish sharks nei */ +/* Albula argentea. DESCRIPTION: */ +/* Squalus spp. DESCRIPTION: Dogfishes nei */ +/* Sousa teuszii. DESCRIPTION: Atlantic hump-backed dolphin */ +/* Himantura bleekeri. DESCRIPTION: Bleeker's whipray */ +/* Himantura chaophraya. DESCRIPTION: Freshwater whipray */ +/* Himantura draco. DESCRIPTION: Dragon stingray */ +/* Himantura krempfi. DESCRIPTION: */ +/* Himantura fai. DESCRIPTION: Pink whipray */ +/* Himantura gerrardi. DESCRIPTION: Sharpnose stingray */ +/* Himantura schmardae. DESCRIPTION: Chupare stingray */ +/* Sousa chinensis. DESCRIPTION: Indo-Pac. hump-backed dolphin */ +/* Himantura jenkinsii. DESCRIPTION: Jenkins whipray */ +/* Himantura alcockii. DESCRIPTION: */ +/* Himantura undulata. DESCRIPTION: Leopard whipray */ +/* Himantura imbricata. DESCRIPTION: Scaly whipray */ +/* Himantura marginata. DESCRIPTION: Blackedge whipray */ +/* Diodon holocanthus. DESCRIPTION: Longspined porcupinefish */ +/* Himantura pacifica. DESCRIPTION: Pacific chupare */ +/* Diplodus bellottii. DESCRIPTION: Senegal seabream */ +/* Himantura granulata. DESCRIPTION: Mangrove whipray */ +/* Himantura signifer. DESCRIPTION: White-rimmed stingray */ +/* Himantura toshi. DESCRIPTION: Black-spotted whipray */ +/* Himantura fluviatilis. DESCRIPTION: */ +/* Himantura uarnak. DESCRIPTION: Honeycomb stingray */ +/* Himantura walga. DESCRIPTION: Dwarf whipray */ +/* Himantura oxyrhynchus. DESCRIPTION: Marbled whipray */ +/* Diplodus prayensis. DESCRIPTION: Two-banded seabream */ +/* Dicologlossa hexophthalma. DESCRIPTION: Ocellated wedge sole */ +/* Osteichthyes. DESCRIPTION: Diadromous fishes nei */ +/* Thalassarche bulleri. DESCRIPTION: Buller's albatross */ +/* Thalassarche chrysostoma. DESCRIPTION: Grey-headed albatross */ +/* Dionda diaboli. DESCRIPTION: Devils River minnow */ +/* Dionda episcopa. DESCRIPTION: Roundnose minnow */ +/* Diapoma speculiferum. DESCRIPTION: */ +/* Diplodus argenteus. DESCRIPTION: South American silver porgy */ +/* Diplodus holbrooki. DESCRIPTION: Spottail seabream */ +/* Discherodontus ashmeadi. DESCRIPTION: */ +/* Diplodus fasciatus. DESCRIPTION: Banded seabream */ +/* Dischistodus chrysopoecilus. DESCRIPTION: White-spot damsel */ +/* Diptychus maculatus. DESCRIPTION: Scaly osman */ +/* Thalassarche melanophrys. DESCRIPTION: Black-browed albatross */ +/* Diopatra neapolitana. DESCRIPTION: */ +/* Diodontidae. DESCRIPTION: Globefish, porcupine fish */ +/* Diomedea epomophora. DESCRIPTION: Southern royal albatross */ +/* Diomedea sanfordi. DESCRIPTION: Northern royal albatross */ +/* Cardisoma hirtipes. DESCRIPTION: Blue land crab */ +/* Distoechodon tumirostris. DESCRIPTION: */ +/* Distichodus affinis. DESCRIPTION: Silver distichodus */ +/* Disparichthys fluviatilis. DESCRIPTION: */ +/* Diomedea gibsoni. DESCRIPTION: Gibson's albatross */ +/* Diomedea exulans. DESCRIPTION: Wandering albatross */ +/* Diodon hystrix. DESCRIPTION: Spot-fin porcupinefish */ +/* Phoebastria immutabilis. DESCRIPTION: Laysan albatross */ +/* Davidijordania abei. DESCRIPTION: */ +/* Modiolus barbatus. DESCRIPTION: Bearded horse mussel */ +/* Donacilla cornea. DESCRIPTION: Corneous wedge clam */ +/* Modiolus adriaticus. DESCRIPTION: Adriatic horse mussel */ +/* Modiolus eiseni. DESCRIPTION: Offshore horse mussel */ +/* Modiolus philippinarum. DESCRIPTION: Philippine horse mussel */ +/* Diacanthurus rubricatus. DESCRIPTION: */ +/* Modiolus rhomboideus. DESCRIPTION: Rhomboid mussel */ +/* Modiolus americanus. DESCRIPTION: Tulip mussel */ +/* Abudefduf taurus. DESCRIPTION: Night sergeant */ +/* Modiolus kurilensis. DESCRIPTION: Kurilean horse mussel */ +/* Cardisoma longipes. DESCRIPTION: Longlegged land crab */ +/* Modiolus metcalfei. DESCRIPTION: Yellowbanded horse mussel */ +/* Modiolus nitens. DESCRIPTION: Shiny mussel */ +/* Modiolus modiolus. DESCRIPTION: Northern horse mussel */ +/* Acentronura tentaculata. DESCRIPTION: Shortpouch pygmy pipehorse */ +/* Modiolus squamosus. DESCRIPTION: False tulip mussel */ +/* Cardisoma rotundum. DESCRIPTION: Rugose land crab */ +/* Acropoma japonicum. DESCRIPTION: Glowbelly */ +/* Modiolus rectus. DESCRIPTION: Straight horse mussel */ +/* Pseudojuloides atavai. DESCRIPTION: Polynesian wrasse */ +/* Modiolus capax. DESCRIPTION: Capax horse mussel */ +/* Dichelopandalus bonnieri. DESCRIPTION: Whip shrimp */ +/* Tridacna crocea. DESCRIPTION: Crocus giant clam */ +/* Decatopecten radula. DESCRIPTION: Flatribbed scallop */ +/* Danakilia franchettii. DESCRIPTION: */ +/* Aythya fuligula. DESCRIPTION: Tufted duck */ +/* Aythya marila. DESCRIPTION: Greater scaup */ +/* Dermochelys coriacea. DESCRIPTION: Leatherback turtle */ +/* Phoebastria nigripes. DESCRIPTION: Black-footed albatross */ +/* Diodon liturosus. DESCRIPTION: Black-blotched porcupinefish */ +/* Dinocardium robustum. DESCRIPTION: Giant atlantic cockle */ +/* Thalassarche salvini. DESCRIPTION: Salvin's albatross */ +/* Bembrops greyi. DESCRIPTION: Roundtail duckbill */ +/* Bembrops heterurus. DESCRIPTION: Squaretail duckbill */ +/* Uroconger syringinus. DESCRIPTION: Slender-tail conger */ +/* Panturichthys longus. DESCRIPTION: Slender shortfaced eel */ +/* Tridacna maxima. DESCRIPTION: Elongate giant clam */ +/* Panturichthys mauritanicus. DESCRIPTION: Mauritanian shortfaced eel */ +/* Dermechinus horridus. DESCRIPTION: Deepsea urchin */ +/* Diplectrum pacificum. DESCRIPTION: Inshore sand perch */ +/* Diploprion bifasciatum. DESCRIPTION: Barred soapfish */ +/* Modiolus auriculatus. DESCRIPTION: Eared horse mussel */ +/* Diplectrum radiale. DESCRIPTION: Pond perch */ +/* Pythonichthys macrurus. DESCRIPTION: Longtailed shortfaced eel */ +/* Dolichosudis fuliginosa. DESCRIPTION: */ +/* Pogonophryne dolichobranchiata. DESCRIPTION: */ +/* Pythonichthys microphthalmus. DESCRIPTION: Shorttailed shortfaced eel */ +/* Enchelycore nigricans. DESCRIPTION: Viper moray */ +/* Gymnothorax mareei. DESCRIPTION: Spotjaw moray */ +/* Dolloidraco longedorsalis. DESCRIPTION: */ +/* Diplectrum macropoma. DESCRIPTION: Mexican sand perch */ +/* Pandalus nipponensis. DESCRIPTION: Botan shrimp */ +/* Delphinidae. DESCRIPTION: Dolphins nei */ +/* Modiolus aratus. DESCRIPTION: Furrowed horse mussel */ +/* Pandalus amplus. DESCRIPTION: Deep-water bigeye shrimp */ +/* Diplospinus multistriatus. DESCRIPTION: Striped escolar */ +/* Dialommus fuscus. DESCRIPTION: Gal */ +/* ápagos four-eyed blenny */ +/* Dinolestes lewini. DESCRIPTION: */ +/* Diplectrum maximum. DESCRIPTION: Torpedo sand perch */ +/* Abudefduf sexfasciatus. DESCRIPTION: Scissortail sergeant */ +/* Acanthurus leucosternon. DESCRIPTION: Powderblue surgeonfish */ +/* Dimidiochromis compressiceps. DESCRIPTION: Malawi eyebiter */ +/* Dinematichthys dasyrhynchus. DESCRIPTION: */ +/* Dromia personata. DESCRIPTION: Sleepy crab */ +/* Apletodon pellegrini. DESCRIPTION: Chubby clingfish */ +/* Dipsacaster magnificus. DESCRIPTION: Magnificent sea-star */ +/* Alsidium helminthochorton. DESCRIPTION: Corsican moss */ +/* Docimodus johnstoni. DESCRIPTION: */ +/* Adamussium colbecki. DESCRIPTION: Antarctic scallop */ +/* Dormitator maculatus. DESCRIPTION: Fat sleeper */ +/* Demospongiae. DESCRIPTION: Siliceous sponges */ +/* Dinematichthys iluocoeteoides. DESCRIPTION: Yellow pigmy brotula */ +/* Coloconger cadenati. DESCRIPTION: */ +/* Ariosoma anale. DESCRIPTION: Short-tail conger */ +/* Ditrema viridis. DESCRIPTION: */ +/* Austrofusus chathamensis. DESCRIPTION: */ +/* Austrofusus spp. DESCRIPTION: */ +/* Allocyttus guineensis. DESCRIPTION: Guinea oreo */ +/* Deania spp. DESCRIPTION: Deania dogfishes nei */ +/* Nematalosa arabica. DESCRIPTION: Arabian gizzard shad */ +/* Dentex congoensis. DESCRIPTION: Congo dentex */ +/* Daphnia deserti. DESCRIPTION: */ +/* Donax deltoides. DESCRIPTION: Goolwa donax */ +/* Daphniidae. DESCRIPTION: Water fleas */ +/* Daphnia galeata. DESCRIPTION: */ +/* Nematalosa persara. DESCRIPTION: */ +/* Donax vittatus. DESCRIPTION: Banded donax */ +/* Dosinia japonica. DESCRIPTION: Japanese dosinia */ +/* Dosinia dunkeri. DESCRIPTION: Dunker's dosinia */ +/* Dianema longibarbis. DESCRIPTION: Porthole catfish */ +/* Daphnia magna. DESCRIPTION: */ +/* Nematalosa resticularia. DESCRIPTION: */ +/* Daphnia longispina. DESCRIPTION: */ +/* Dinoperca petersi. DESCRIPTION: Lampfish */ +/* Daphnia retrocurva. DESCRIPTION: */ +/* Donax rugosus. DESCRIPTION: Rugose donax */ +/* Donax striatus. DESCRIPTION: Striate donax */ +/* Daphnia dubia. DESCRIPTION: */ +/* Daphnia parvula. DESCRIPTION: */ +/* Daphnia catawba. DESCRIPTION: */ +/* Daphnia pulex. DESCRIPTION: */ +/* Donax venustus. DESCRIPTION: Lovely donax */ +/* Pseudocepola taeniosoma. DESCRIPTION: */ +/* Chirocentrus dorab. DESCRIPTION: Dorab wolf-herring */ +/* Polititapes durus. DESCRIPTION: */ +/* Konosirus punctatus. DESCRIPTION: Dotted gizzard shad */ +/* Trisidos semitorta. DESCRIPTION: Half-propellor ark */ +/* Semimytilus algosus. DESCRIPTION: */ +/* Donax gouldii. DESCRIPTION: Bean donax */ +/* Dormitator lebretonis. DESCRIPTION: */ +/* Dosinia lupinus. DESCRIPTION: Smooth dosinia */ +/* Coryphaena hippurus. DESCRIPTION: Common dolphinfish */ +/* Dormitator latifrons. DESCRIPTION: Pacific fat sleeper */ +/* Donax spp. DESCRIPTION: Donax clams */ +/* Trisidos tortuosa. DESCRIPTION: Propellor ark */ +/* Squalus megalops. DESCRIPTION: Shortnose spurdog */ +/* Dosinia orbignyi. DESCRIPTION: Dosinia clam */ +/* Chirocentrus spp. DESCRIPTION: Wolf-herrings nei */ +/* Gymnosarda unicolor. DESCRIPTION: Dogtooth tuna */ +/* Dicotylichthys punctulatus. DESCRIPTION: Three-barred porcupinefish */ +/* Donax variegatus. DESCRIPTION: Smooth donax */ +/* Coryphaenidae. DESCRIPTION: Dolphinfishes nei */ +/* Dinotopterus atribranchus. DESCRIPTION: */ +/* Diaphus bertelseni. DESCRIPTION: */ +/* Muraenesox cinereus. DESCRIPTION: Daggertooth pike conger */ +/* Dolopichthys danae. DESCRIPTION: */ +/* Diaphus effulgens. DESCRIPTION: */ +/* Diaphus rafinesquii. DESCRIPTION: */ +/* Pterodoras granulosus. DESCRIPTION: Granulated catfish */ +/* Pseudodoras holdeni. DESCRIPTION: */ +/* Diaphus mollis. DESCRIPTION: */ +/* Diaphus termophilus. DESCRIPTION: Taaning's lantern fish */ +/* Phoebastria irrorata. DESCRIPTION: Waved albatross */ +/* Diaphus lucidus. DESCRIPTION: */ +/* Diplophos maderensis. DESCRIPTION: */ +/* Stenella attenuata. DESCRIPTION: Pantropical spotted dolphin */ +/* Diaphus holti. DESCRIPTION: Small lantern fish */ +/* Diaphus metopoclampus. DESCRIPTION: Spothead lantern fish */ +/* Dipturus innominatus. DESCRIPTION: New Zealand smooth skate */ +/* Discordipinna griessingeri. DESCRIPTION: Spikefin goby */ +/* Parapenaeus longirostris. DESCRIPTION: Deep-water rose shrimp */ +/* Diplophos taenia. DESCRIPTION: */ +/* Diaphus dumerilii. DESCRIPTION: */ +/* Dipturus chilensis. DESCRIPTION: Yellownose skate */ +/* Perciformes. DESCRIPTION: Demersal percomorphs nei */ +/* Diaphus brachycephalus. DESCRIPTION: Short-headed lantern fish */ +/* Doraops zuloagai. DESCRIPTION: */ +/* Diaphus garmani. DESCRIPTION: Garman */ +/* ’s lanternfish */ +/* Diaphus perspicillatus. DESCRIPTION: Flatface lanternfish */ +/* Diaphus splendidus. DESCRIPTION: Horned lanternfish */ +/* Diaphus taaningi. DESCRIPTION: Slopewater lanternfish */ +/* Synodus jaculum. DESCRIPTION: */ +/* Diomedea antipodensis. DESCRIPTION: Antipodean albatross */ +/* Dorosoma spp. DESCRIPTION: */ +/* Draculo shango. DESCRIPTION: Shango dragonet */ +/* Draculo celetus. DESCRIPTION: Dainty dragonet */ +/* Rhinodoras dorbignyi. DESCRIPTION: */ +/* Doratonotus megalepis. DESCRIPTION: Dwarf wrasse */ +/* Ariomma melanum. DESCRIPTION: Brown driftfish */ +/* Anadara senegalensis. DESCRIPTION: Senegal ark */ +/* Dromia erythropus. DESCRIPTION: Redeye sponge crab */ +/* Ariomma indica. DESCRIPTION: Indian driftfish */ +/* Ariomma spp. DESCRIPTION: Ariommatids nei */ +/* Drepane longimana. DESCRIPTION: Concertina fish */ +/* Dicrossus maculatus. DESCRIPTION: */ +/* Draconetta xenica. DESCRIPTION: */ +/* Dromia dormia. DESCRIPTION: Common sponge crab */ +/* Dreissena polymorpha. DESCRIPTION: Zebra mussel */ +/* Grampus griseus. DESCRIPTION: Risso's dolphin */ +/* Pteroscion peli. DESCRIPTION: Boe drum */ +/* Hadriania craticuloides. DESCRIPTION: Crested murex */ +/* Sciaena spp. DESCRIPTION: Sciaenas nei */ +/* Doras brevis. DESCRIPTION: */ +/* Rhynchodoras woodsi. DESCRIPTION: */ +/* Diproctacanthus xanthurus. DESCRIPTION: Yellowtail tubelip */ +/* Ostrea lutaria. DESCRIPTION: New Zealand dredge oyster */ +/* Drepane spp. DESCRIPTION: Sicklefishes nei */ +/* Stenella frontalis. DESCRIPTION: Atlantic spotted dolphin */ +/* Dogania subplana. DESCRIPTION: Malayan softshell turtle */ +/* Distorsio decussata. DESCRIPTION: Decussate distorsio */ +/* Distichodus spp. DESCRIPTION: Grass-eaters nei */ +/* Pomacentridae. DESCRIPTION: Damselfishes */ +/* Scorpiodoras heckelii. DESCRIPTION: */ +/* Stenella longirostris. DESCRIPTION: Spinner dolphin */ +/* Spondylus imperialis. DESCRIPTION: Imperial thorny oyster */ +/* Desmodema polystictum. DESCRIPTION: Polka-dot ribbonfish */ +/* Distorsio anus. DESCRIPTION: Common distorsio */ +/* Dosinia ponderosa. DESCRIPTION: Ponderous dosinia */ +/* Stenella spp. DESCRIPTION: Spotted dolphins nei */ +/* Sula dactylatra. DESCRIPTION: Masked booby */ +/* Distorsio reticularis. DESCRIPTION: Reticulate distorsio */ +/* Diaseris distorta. DESCRIPTION: Distorted mushroom coral */ +/* Stenella coeruleoalba. DESCRIPTION: Striped dolphin */ +/* Sachsdoras apurensis. DESCRIPTION: */ +/* Spondylus versicolor. DESCRIPTION: Golden thorny oyster */ +/* Dosinia exoleta. DESCRIPTION: Mature dosinia */ +/* Dosinia spp. DESCRIPTION: Dosinias nei */ +/* Trachydoras atripes. DESCRIPTION: */ +/* Dipterygonotus balteatus. DESCRIPTION: Mottled fusilier */ +/* Dermatopsis macrodon. DESCRIPTION: Fleshfish */ +/* Dentatherina merceri. DESCRIPTION: Mercer's tusked silverside */ +/* Dentex barnardi. DESCRIPTION: Barnard dentex */ +/* Diplacanthopoma japonicum. DESCRIPTION: */ +/* Dermatopsoides kasougae. DESCRIPTION: Orange brotula */ +/* Dotalabrus alleni. DESCRIPTION: */ +/* Distichodus maculatus. DESCRIPTION: Spotted citharinid */ +/* Distichodus nefasch. DESCRIPTION: */ +/* Diopatra cuprea. DESCRIPTION: */ +/* Danoctopus schmidti. DESCRIPTION: Dana octopus */ +/* Dentex tumifrons. DESCRIPTION: Yellowback seabream */ +/* Delturus angulicauda. DESCRIPTION: */ +/* Diretmoides veriginae. DESCRIPTION: */ +/* Diretmoides pauciradiatus. DESCRIPTION: Longwing spinyfin */ +/* Distichodus sexfasciatus. DESCRIPTION: Sixbar distichodus */ +/* Doumea alula. DESCRIPTION: */ +/* Duboisialestes bifasciatus. DESCRIPTION: */ +/* Dipulus caecus. DESCRIPTION: */ +/* Pandalus danae. DESCRIPTION: Dock shrimp */ +/* Duopalatinus emarginatus. DESCRIPTION: */ +/* Cinetodus froggatti. DESCRIPTION: Smallmouthed salmon catfish */ +/* Dugong dugon. DESCRIPTION: Dugong */ +/* Dules auriga. DESCRIPTION: */ +/* Pandalus goniurus. DESCRIPTION: Humpy shrimp */ +/* Pandalus kessleri. DESCRIPTION: Hokkai shrimp */ +/* Spondylus butleri. DESCRIPTION: Butler's thorny oyster */ +/* Daruma sagamia. DESCRIPTION: */ +/* Cancer magister. DESCRIPTION: Dungeness crab */ +/* Psammodiscus ocellatus. DESCRIPTION: */ +/* Dupouyichthys sapito. DESCRIPTION: */ +/* Piedrabuenia ringueleti. DESCRIPTION: */ +/* Carcharhinus obscurus. DESCRIPTION: Dusky shark */ +/* Diapterus auratus. DESCRIPTION: Irish mojarra */ +/* Diretmus argenteus. DESCRIPTION: Silver spinyfin */ +/* Diapterus spp. DESCRIPTION: */ +/* Durvillaea antarctica. DESCRIPTION: Bull kelp */ +/* Bathygobius burtoni. DESCRIPTION: */ +/* Bathygobius casamancus. DESCRIPTION: */ +/* Cyclichthys orbicularis. DESCRIPTION: Birdbeak burrfish */ +/* Cyclichthys carpenteri. DESCRIPTION: Hooked tonguesole */ +/* Cyclichthys kopsii. DESCRIPTION: Shortheaded tonguesole */ +/* Cyclichthys lachneri. DESCRIPTION: Lachner's tonguesole */ +/* Cyclichthys sealarki. DESCRIPTION: */ +/* Adelomelon ancilla. DESCRIPTION: */ +/* Adelomelon spp. DESCRIPTION: */ +/* Pseudanthias townsendi. DESCRIPTION: Townsend's anthias */ +/* Acanthodraco dewitti. DESCRIPTION: */ +/* Pseudapocryptes elongatus. DESCRIPTION: */ +/* Lagenorhynchus acutus. DESCRIPTION: Atlantic white-sided dolphin */ +/* Wertheimeria maculata. DESCRIPTION: */ +/* Graneledone spp. DESCRIPTION: */ +/* Lagenorhynchus obliquidens. DESCRIPTION: Pacific white-sided dolphin */ +/* Elasmobranchii. DESCRIPTION: Deep-water sharks nei */ +/* Kogia sima. DESCRIPTION: Dwarf sperm whale */ +/* Errina spp. DESCRIPTION: Red hydrocorals nei */ +/* Donax asper. DESCRIPTION: Rough butterfly donax */ +/* Dundocharax bidentatus. DESCRIPTION: */ +/* Donax californicus. DESCRIPTION: Californian donax */ +/* Donax denticulatus. DESCRIPTION: Common Caribbean donax */ +/* Donax dentifer. DESCRIPTION: Toothed donax */ +/* Donax faba. DESCRIPTION: Pacific bean donax */ +/* Diplotaxodon greenwoodi. DESCRIPTION: */ +/* Donax hanleyanus. DESCRIPTION: La Plata donax */ +/* Donax gracilis. DESCRIPTION: Gracile donax */ +/* Donax incarnatus. DESCRIPTION: Fleshy donax */ +/* Donax carinatus. DESCRIPTION: Sculptured donax */ +/* Donax trunculus. DESCRIPTION: Truncate donax */ +/* Pseudodax moluccanus. DESCRIPTION: Chiseltooth wrasse */ +/* Donax cuneatus. DESCRIPTION: Cuneate donax */ +/* Donax scortum. DESCRIPTION: Leather donax */ +/* Paradoxodacna piratica. DESCRIPTION: */ +/* Donax semistriatus. DESCRIPTION: Half-striated donax */ +/* Dexistes rikuzenius. DESCRIPTION: Rikuzen flounder */ +/* Cardiopharynx schoutedeni. DESCRIPTION: */ +/* Donax punctatostriatus. DESCRIPTION: Punctate donax */ +/* Dexillus muelleri. DESCRIPTION: Tufted sole */ +/* Donax peruvianus. DESCRIPTION: Common peruvian donax */ +/* Donax pulchellus. DESCRIPTION: Beautiful donax */ +/* Dysichthys aleuropsis. DESCRIPTION: */ +/* Spondylus barbatus. DESCRIPTION: Bearded thorny oyster */ +/* Diplomystes chilensis. DESCRIPTION: Tollo */ +/* Spondylus gaederopus. DESCRIPTION: European thorny oyster */ +/* Dieidolycus leptodermatus. DESCRIPTION: */ +/* Danaphryne nigrifilis. DESCRIPTION: */ +/* Danacetichthys galathenus. DESCRIPTION: */ +/* Dactyloptena gilberti. DESCRIPTION: */ +/* Spondylus ictericus. DESCRIPTION: Digitate thorny oyster */ +/* Dysalotus alcocki. DESCRIPTION: */ +/* Dactylopterus volitans. DESCRIPTION: Flying gurnard */ +/* Spondylus americanus. DESCRIPTION: Atlantic thorny oyster */ +/* Diplomystes nahuelbutaensis. DESCRIPTION: */ +/* Distocyclus conirostris. DESCRIPTION: */ +/* Pastinachus sephen. DESCRIPTION: Cowtail stingray */ +/* Ditropichthys storeri. DESCRIPTION: */ +/* Dasycottus setiger. DESCRIPTION: Spinyhead sculpin */ +/* Doiichthys novaeguineae. DESCRIPTION: Spoon-snouted catfish */ +/* Dactyloptena orientalis. DESCRIPTION: Oriental flying gurnard */ +/* Dactylopteridae. DESCRIPTION: Flying gurnards nei */ +/* Synodus synodus. DESCRIPTION: Redbarred lizardfish */ +/* Decolopoda australis. DESCRIPTION: */ +/* Zathorax gonzalezi. DESCRIPTION: */ +/* Spondylus spp. DESCRIPTION: Thorny oysters nei */ +/* Eleotris senegalensis. DESCRIPTION: */ +/* Anchoa argentivittata. DESCRIPTION: Regan's anchovy */ +/* Enneapterygius abeli. DESCRIPTION: Yellow triplefin */ +/* Anchoa choerostoma. DESCRIPTION: Bermuda anchovy */ +/* Stolephorus andhraensis. DESCRIPTION: Andhra anchovy */ +/* Anchoa eigenmannia. DESCRIPTION: Eigenmann's anchovy */ +/* Anchoa filifera. DESCRIPTION: Longfinger anchovy */ +/* Myliobatidae. DESCRIPTION: Eagle rays nei */ +/* Anchoa spinifer. DESCRIPTION: Spicule anchovy */ +/* Anchoa ischana. DESCRIPTION: Slender anchovy */ +/* Anchoa januaria. DESCRIPTION: Rio anchovy */ +/* Anchoa trinitatis. DESCRIPTION: Trinidad anchovy */ +/* Anchoa lamprotaenia. DESCRIPTION: Big-eye anchovy */ +/* Anchoa marinii. DESCRIPTION: Marini's anchovy */ +/* Anchoa nasus. DESCRIPTION: Longnose anchovy */ +/* Anchoa compressa. DESCRIPTION: Deep body anchovy */ +/* Anchoa panamensis. DESCRIPTION: Panama anchovy */ +/* Anchoa tricolor. DESCRIPTION: Piquitinga anchovy */ +/* Anchoa curta. DESCRIPTION: Short anchovy */ +/* Amazonsprattus scintilla. DESCRIPTION: Rio Negro pygmy anchovy */ +/* Anchoa pectoralis. DESCRIPTION: Bigfin anchovy */ +/* Anchoa cubana. DESCRIPTION: Cuban anchovy */ +/* Enneanectes altivelis. DESCRIPTION: Lofty triplefin */ +/* Mercenaria spp. DESCRIPTION: */ +/* Anchoa lyolepis. DESCRIPTION: Shortfinger anchovy */ +/* Enneapterygius pusillus. DESCRIPTION: Highcrest triplefin */ +/* Ceratobregma acanthops. DESCRIPTION: Spotted spiny-eye triplefin */ +/* Emblemariopsis bahamensis. DESCRIPTION: Blackhead blenny */ +/* Cambarellus blacki. DESCRIPTION: Cypress crayfish */ +/* Ellobium aurisjudae. DESCRIPTION: Judas ear cassidula */ +/* Ecsenius pulcher. DESCRIPTION: */ +/* Stolephorus brachycephalus. DESCRIPTION: Broadhead anchovy */ +/* Ebomegobius goodi. DESCRIPTION: */ +/* Embassichthys bathybius. DESCRIPTION: Deep-sea sole */ +/* Epibulus insidiator. DESCRIPTION: Sling-jaw wrasse */ +/* Embiotoca jacksoni. DESCRIPTION: Black perch */ +/* Ebosia bleekeri. DESCRIPTION: */ +/* Enteromorpha lingulata. DESCRIPTION: */ +/* Ellobium aurismidae. DESCRIPTION: Midas ear cassidula */ +/* Enteromorpha intestinalis. DESCRIPTION: Hollow green nori */ +/* Enneapterygius ventermaculus. DESCRIPTION: Blotched triplefin */ +/* Enteromorpha prolifera. DESCRIPTION: Dark green nori */ +/* Eumegistus brevorti. DESCRIPTION: */ +/* Eumegistus illustris. DESCRIPTION: Brilliant pomfret */ +/* Emblemaria atlantica. DESCRIPTION: Banner blenny */ +/* Eubalichthys bucephalus. DESCRIPTION: Black reef leatherjacket */ +/* Ebinania vermiculata. DESCRIPTION: */ +/* Eucyclogobius newberryi. DESCRIPTION: Tidewater goby */ +/* Mesodesma spp. DESCRIPTION: */ +/* Enteromorpha linza. DESCRIPTION: Welded green nori */ +/* Coilia nasus. DESCRIPTION: Japanese grenadier anchovy */ +/* Coilia brachygnathus. DESCRIPTION: Yangtse grenadier anchovy */ +/* Echinophryne crassispina. DESCRIPTION: Prickly anglerfish */ +/* Coilia dussumieri. DESCRIPTION: Goldspotted grenadier anchovy */ +/* Cheilopogon heterurus. DESCRIPTION: */ +/* Cheilopogon furcatus. DESCRIPTION: Spotfin flyingfish */ +/* Cheilopogon nigricans. DESCRIPTION: Blacksail flyingfish */ +/* Echinodermata. DESCRIPTION: Echinoderms */ +/* Echiodon cryomargarites. DESCRIPTION: Messmate */ +/* Cheilopogon suttoni. DESCRIPTION: Sutton's flyingfish */ +/* Echinorhinus cookei. DESCRIPTION: Prickly shark */ +/* Cypselurus oligolepis. DESCRIPTION: */ +/* Coilia macrognathos. DESCRIPTION: Longjaw grenadier anchovy */ +/* Echeneidae. DESCRIPTION: Suckerfishes, remoras nei */ +/* Sectator ocyurus. DESCRIPTION: Bluestriped chub */ +/* Cypselurus poecilopterus. DESCRIPTION: Yellowing flyingfish */ +/* Ecsenius aequalis. DESCRIPTION: Fourline blenny */ +/* Echiostoma barbatum. DESCRIPTION: */ +/* Cheilopogon spilopterus. DESCRIPTION: Manyspotted flyingfish */ +/* Encrasicholina heteroloba. DESCRIPTION: Shorthead anchovy */ +/* Encheloclarias baculum. DESCRIPTION: */ +/* Ecsenius lividanalis. DESCRIPTION: */ +/* Eucinostomus dowii. DESCRIPTION: Dow's mojarra */ +/* Petrochromis polyodon. DESCRIPTION: */ +/* Encope grandis. DESCRIPTION: Giant keyhole sand dollar */ +/* Pseudogobius avicennia. DESCRIPTION: */ +/* Pseudanthias bimaculatus. DESCRIPTION: Two-spot basslet */ +/* Pseudogobiopsis campbellianus. DESCRIPTION: */ +/* Ectodus descampsii. DESCRIPTION: */ +/* Pseudaphya ferreri. DESCRIPTION: */ +/* Pseudanthias fasciata. DESCRIPTION: */ +/* Pseudogramma gregoryi. DESCRIPTION: Reef bass */ +/* Centrodraco acanthopoma. DESCRIPTION: */ +/* Pseudalutarius nasicornis. DESCRIPTION: Rhinoceros leatherjacket */ +/* Pseudopentaceros wheeleri. DESCRIPTION: Slender armorhead */ +/* Sepiadarium kochii. DESCRIPTION: Koch */ +/* ’s bottletail squid */ +/* Pseudomonacanthus elongatus. DESCRIPTION: Fourband leatherjacket */ +/* Pseudotrypauchen multiradiatus. DESCRIPTION: */ +/* Enedrias nebulosus. DESCRIPTION: Tidepool gunnel */ +/* Pseudapocryptes borneensis. DESCRIPTION: */ +/* Pseudanthias parvirostris. DESCRIPTION: */ +/* Pseudopentaceros pectoralis. DESCRIPTION: Longfin armorhead */ +/* Pseudopentaceros richardsoni. DESCRIPTION: Pelagic armourhead */ +/* Pseudanthias squamipinnis. DESCRIPTION: Sea goldie */ +/* Eledone moschata. DESCRIPTION: Musky octopus */ +/* Etisus dentatus. DESCRIPTION: Spiny spooner */ +/* Edelia vittata. DESCRIPTION: Western pygmy perch */ +/* Pseudopentaceros spp. DESCRIPTION: Pelagic armourheads nei */ +/* Eucinostomus spp. DESCRIPTION: */ +/* Eledone massyae. DESCRIPTION: Combed octopus */ +/* Sepiadarium austrinum. DESCRIPTION: Southern bottletail squid */ +/* Epinephelus fasciatus. DESCRIPTION: Blacktip grouper */ +/* Epinephelus labriformis. DESCRIPTION: Starry grouper */ +/* Epinephelus maculatus. DESCRIPTION: Highfin grouper */ +/* Epinephelus drummondhayi. DESCRIPTION: Speckled hind */ +/* Epinephelus heniochus. DESCRIPTION: Bridled grouper */ +/* Epinephelus fasciatomaculosus. DESCRIPTION: Rock grouper */ +/* Epinephelus goreensis. DESCRIPTION: Dungat grouper */ +/* Eeyorius hutchinsi. DESCRIPTION: Tasmanian codling */ +/* Epinephelus haifensis. DESCRIPTION: Haifa grouper */ +/* Epinephelus magniscuttis. DESCRIPTION: Speckled grouper */ +/* Epinephelus polyphekadion. DESCRIPTION: Camouflage grouper */ +/* Epinephelus flavolimbatus. DESCRIPTION: Yellowedge grouper */ +/* Epinephelus macrospilos. DESCRIPTION: Snubnose grouper */ +/* Epinephelus lanceolatus. DESCRIPTION: Giant grouper */ +/* Etelis oculatus. DESCRIPTION: Queen snapper */ +/* Epinephelus morrhua. DESCRIPTION: Comet grouper */ +/* Epinephelus quernus. DESCRIPTION: Hawaiian grouper */ +/* Epinephelus merra. DESCRIPTION: Honeycomb grouper */ +/* Epinephelus latifasciatus. DESCRIPTION: Striped grouper */ +/* Epinephelus itajara. DESCRIPTION: Jewfish */ +/* Epinephelus guttatus. DESCRIPTION: Red hind */ +/* Epinephelus flavocaeruleus. DESCRIPTION: Blue-and-yellow grouper */ +/* Etelis radiosus. DESCRIPTION: Pale snapper */ +/* Epinephelus hexagonatus. DESCRIPTION: Starspotted grouper */ +/* Epinephelus mystacinus. DESCRIPTION: Misty grouper */ +/* Eisenia arborea. DESCRIPTION: Arboreal ferret */ +/* Cephalopholis taeniops. DESCRIPTION: Bluespotted seabass */ +/* Epinephelus albomarginatus. DESCRIPTION: White-edged grouper */ +/* Epinephelus acanthistius. DESCRIPTION: Rooster hind */ +/* Epinephelus adscensionis. DESCRIPTION: Rock hind */ +/* Epinephelus bruneus. DESCRIPTION: Longtooth grouper */ +/* Stellifer fuerthii. DESCRIPTION: White stardrum */ +/* Ephippion guttifer. DESCRIPTION: Prickly puffer */ +/* Epinephelus chlorostigma. DESCRIPTION: Brownspotted grouper */ +/* Stellifer minor. DESCRIPTION: Minor stardrum */ +/* Epinephelus caninus. DESCRIPTION: Dogtooth grouper */ +/* Epinephelus bleekeri. DESCRIPTION: Duskytail grouper */ +/* Stellifer lanceolatus. DESCRIPTION: American stardrum */ +/* Stellifer microps. DESCRIPTION: Smalleye stardrum */ +/* Epinephelus andersoni. DESCRIPTION: Catface grouper */ +/* Stellifer oscitans. DESCRIPTION: Yawning stardrum */ +/* Enteromorpha compressa. DESCRIPTION: Flat green nori */ +/* Epinephelus quoyanus. DESCRIPTION: Longfin grouper */ +/* Stellifer rastrifer. DESCRIPTION: Rake stardrum */ +/* Stellifer stellifer. DESCRIPTION: */ +/* Cephalopholis sonnerati. DESCRIPTION: Tomato hind */ +/* Epinephelides armatus. DESCRIPTION: */ +/* Epinephelus niveatus. DESCRIPTION: Snowy grouper */ +/* Epinephelus awoara. DESCRIPTION: Yellow grouper */ +/* Epinephelus sexfasciatus. DESCRIPTION: Sixbar grouper */ +/* Epinephelus amblycephalus. DESCRIPTION: Banded grouper */ +/* Cheilopogon cyanopterus. DESCRIPTION: Margined flyingfish */ +/* Megapitaria aurantiaca. DESCRIPTION: Golden callista */ +/* Stenogobius beauforti. DESCRIPTION: Beaufort's goby */ +/* Epigonus constanciae. DESCRIPTION: */ +/* Epigonus denticulatus. DESCRIPTION: Pencil cardinal */ +/* Periglypta reticulata. DESCRIPTION: Reticulated venus */ +/* Somateria mollissima. DESCRIPTION: Common eider */ +/* Engyprosopon grandisquama. DESCRIPTION: Largescale flounder */ +/* Ernogrammus hexagrammus. DESCRIPTION: */ +/* Periglypta listeri. DESCRIPTION: Princess venus */ +/* Somateria spectabilis. DESCRIPTION: King eider */ +/* Periglypta clathrata. DESCRIPTION: Clathrate venus */ +/* Sclerocrangon salebrosa. DESCRIPTION: Bering shrimp */ +/* Eupleurogrammus muticus. DESCRIPTION: Smallhead hairtail */ +/* Solen guineensis. DESCRIPTION: Guinea razor shell */ +/* Ego zebra. DESCRIPTION: */ +/* Stolephorus carpentariae. DESCRIPTION: Gulf of Carpenteria anchovy */ +/* Megapitaria squalida. DESCRIPTION: Squalid callista */ +/* Epigonus robustus. DESCRIPTION: Robust cardinalfish */ +/* Engyophrys sanctilaurentii. DESCRIPTION: Speckled-tail flounder */ +/* Speleogobius trigloides. DESCRIPTION: Grotto goby */ +/* Periglypta puerpera. DESCRIPTION: Youthful venus */ +/* Epigonus crassicaudus. DESCRIPTION: */ +/* Euciroa galatheae. DESCRIPTION: */ +/* Eugerres axillaris. DESCRIPTION: Black axillary mojarra */ +/* Solea aegyptiaca. DESCRIPTION: Egyptian sole */ +/* Eugyra kerguelenensis. DESCRIPTION: */ +/* Etheostoma caeruleum. DESCRIPTION: Rainbow darter */ +/* Enophrys bison. DESCRIPTION: Buffalo sculpin */ +/* Enneacanthus chaetodon. DESCRIPTION: Blackbanded sunfish */ +/* Euphylax dovii. DESCRIPTION: Pelagic swimcrab */ +/* Etheostoma blennioides. DESCRIPTION: Greenside darter */ +/* Euchiloglanis feae. DESCRIPTION: */ +/* Aethaloperca rogaa. DESCRIPTION: Redmouth grouper */ +/* Eriphia smithii. DESCRIPTION: Orange-hand stone crab */ +/* Centracanthus cirrus. DESCRIPTION: Curled picarel */ +/* Pteria hirundo. DESCRIPTION: European wing oyster */ +/* Ethusa ciliatifrons. DESCRIPTION: Giant ciliate Ethusa */ +/* Euristhmus lepturus. DESCRIPTION: Long-tailed catfish */ +/* Erethistes maesotensis. DESCRIPTION: */ +/* Echeneis naucrates. DESCRIPTION: Live sharksucker */ +/* Erethistoides montana. DESCRIPTION: */ +/* Etheostoma pottsii. DESCRIPTION: Chihuahua darter */ +/* Enhydrina schistosa. DESCRIPTION: Beaked sea snake */ +/* Etheostoma flabellare. DESCRIPTION: Fantail darter */ +/* Eleutherochir opercularis. DESCRIPTION: */ +/* Eleutheronema tridactylum. DESCRIPTION: Threefinger threadfin */ +/* Seriphus politus. DESCRIPTION: Queen croaker */ +/* Pearsonothuria graeffei. DESCRIPTION: Blackspotted sea cucumber */ +/* Euphyllia glabrescens. DESCRIPTION: Brain trumpet coral */ +/* Eurhomalea exalbida. DESCRIPTION: Magellan clam */ +/* Euneognathia gigas. DESCRIPTION: */ +/* Euthynnus spp. DESCRIPTION: */ +/* Emerita analoga. DESCRIPTION: Coldwater mole crab */ +/* Ericentrus rubrus. DESCRIPTION: Orange clinid */ +/* Eleotrica cableae. DESCRIPTION: Cable's goby */ +/* Lepidopa deamae. DESCRIPTION: Toad mole crab */ +/* Etisus laevimanus. DESCRIPTION: Smooth spooner */ +/* Epinephelus septemfasciatus. DESCRIPTION: Convict grouper */ +/* Petrotilapia genalutea. DESCRIPTION: */ +/* Eigenmannia humboldtii. DESCRIPTION: */ +/* Cheilodactylus vittatus. DESCRIPTION: Hawaiian morwong */ +/* Sepia brevimana. DESCRIPTION: Shortclub cuttlefish */ +/* Eriphia verrucosa. DESCRIPTION: Warty crab */ +/* Ilisha elongata. DESCRIPTION: Elongate ilisha */ +/* Eigenmannina melanopogon. DESCRIPTION: */ +/* Cheilodactylus zonatus. DESCRIPTION: Spottedtail morwong */ +/* Eirmotus octozona. DESCRIPTION: */ +/* Sepia apama. DESCRIPTION: Giant Australian cuttlefish */ +/* Sepia kobiensis. DESCRIPTION: Kobi cuttlefish */ +/* Epinephelus trimaculatus. DESCRIPTION: Threespot grouper */ +/* Cheilodactylus spectabilis. DESCRIPTION: Red moki */ +/* Epinephelus stictus. DESCRIPTION: Black-dotted grouper */ +/* Epinephelus undulosus. DESCRIPTION: Wavy-lined grouper */ +/* Eigenmannia virescens. DESCRIPTION: Glass knifefish */ +/* Sepia subtenuipes. DESCRIPTION: */ +/* Tellina albicans. DESCRIPTION: Glossy tellin */ +/* Sepia lycidas. DESCRIPTION: Kisslip cuttlefish */ +/* Cheilodactylus zebra. DESCRIPTION: Redlip morwong */ +/* Sepia aculeata. DESCRIPTION: Needle cuttlefish */ +/* Sepia bertheloti. DESCRIPTION: African cuttlefish */ +/* Episesarma chengtongense. DESCRIPTION: Pinkfingered vinegar crab */ +/* Sepia madokai. DESCRIPTION: Madokai's cuttlefish */ +/* Sepia elegans. DESCRIPTION: Elegant cuttlefish */ +/* Sepia foliopeza. DESCRIPTION: */ +/* Sepia braggi. DESCRIPTION: Slender cuttlefish */ +/* Sepia prashadi. DESCRIPTION: Hooded cuttlefish */ +/* Episesarma singaporense. DESCRIPTION: Singapore vinegar crab */ +/* Jurengraulis juruensis. DESCRIPTION: Jurua anchovy */ +/* Sepia esculenta. DESCRIPTION: Golden cuttlefish */ +/* Sepia elobyana. DESCRIPTION: Guinean cuttlefish */ +/* Episesarma mederi. DESCRIPTION: Thai vinegar crab */ +/* Sepia andreana. DESCRIPTION: Andrea cuttlefish */ +/* Sepia erostrata. DESCRIPTION: */ +/* Episesarma palawanense. DESCRIPTION: Rathbun's vinegar crab */ +/* Sepia arabica. DESCRIPTION: Arabian cuttlefish */ +/* Elacatinus janssi. DESCRIPTION: Spotback goby */ +/* Sepia australis. DESCRIPTION: Southern cuttlefish */ +/* Sepia aureomaculata. DESCRIPTION: */ +/* Episesarma versicolor. DESCRIPTION: Violet vinegar crab */ +/* Sepia tenuipes. DESCRIPTION: */ +/* Sepia latimanus. DESCRIPTION: Broadclub cuttlefish */ +/* Sepia murrayi. DESCRIPTION: Frog cuttlefish */ +/* Cheilodactylus nigripes. DESCRIPTION: Magpie perch */ +/* Acetes australis. DESCRIPTION: Australian paste shrimp */ +/* Plesionika beebei. DESCRIPTION: Scarlet longbeak shrimp */ +/* Acetes americanus. DESCRIPTION: Aviu shrimp */ +/* Pecten diegensis. DESCRIPTION: San Diego scallop */ +/* Acetes serrulatus. DESCRIPTION: Southern mauxia shrimp */ +/* Ethadophis epinepheli. DESCRIPTION: */ +/* Tectarius grandinatus. DESCRIPTION: Hailstorm prickly-winkle */ +/* Mesonychoteuthis hamiltoni. DESCRIPTION: Antarctic cranch squid */ +/* Acetes intermedius. DESCRIPTION: Taiwan mauxia shrimp */ +/* Ellerkeldia jamesoni. DESCRIPTION: */ +/* Mercenaria campechiensis. DESCRIPTION: Southern hardshell clam */ +/* Epicodakia bella. DESCRIPTION: Divergent lucine */ +/* Ekemblemaria myersi. DESCRIPTION: Reefsand blenny */ +/* Acetes indicus. DESCRIPTION: Jawla paste shrimp */ +/* Plesionika carinirostris. DESCRIPTION: Giant longbeak shrimp */ +/* Eumarcia paupercula. DESCRIPTION: Koch's venus */ +/* Tectarius coronatus. DESCRIPTION: Coronate prickly-winkle */ +/* Acetes erythraeus. DESCRIPTION: Tsivakihini paste shrimp */ +/* Acetes sibogae. DESCRIPTION: Alamang shrimp */ +/* Plesionika trispinus. DESCRIPTION: Colombian longbeak shrimp */ +/* Penaeus canaliculatus. DESCRIPTION: Witch prawn */ +/* Pecten vogdesi. DESCRIPTION: Vogde's scallop */ +/* Plesionika williamsi. DESCRIPTION: Guinea striped shrimp */ +/* Plesionika mexicana. DESCRIPTION: Mexican longbeak shrimp */ +/* Pecten berryi. DESCRIPTION: Lunar Mexican scallop */ +/* Pecten ziczac. DESCRIPTION: Zigzag scallop */ +/* Anguilla rostrata. DESCRIPTION: American eel */ +/* Lycengraulis batesii. DESCRIPTION: Bates' sabretooth anchovy */ +/* Electrona carlsbergi. DESCRIPTION: Electron subantarctic */ +/* Epinephelus diacanthus. DESCRIPTION: Spinycheek grouper */ +/* Anguilla anguilla. DESCRIPTION: European eel */ +/* Epinephelus nigritus. DESCRIPTION: Warsaw grouper */ +/* Elattarchus archidium. DESCRIPTION: Bluestreak drum */ +/* Elates ransonnetii. DESCRIPTION: Dwarf flathead */ +/* Anguilla japonica. DESCRIPTION: Japanese eel */ +/* Pelmatochromis buettikoferi. DESCRIPTION: */ +/* Ellopostoma megalomycter. DESCRIPTION: */ +/* Elopichthys bambusa. DESCRIPTION: Yellowcheek */ +/* Electrona antarctica. DESCRIPTION: */ +/* Lycothrissa crocodilus. DESCRIPTION: Sabretoothed thryssa */ +/* Zoarces viviparus. DESCRIPTION: Eelpout */ +/* Chaceon eldorado. DESCRIPTION: El Dorado shrimp */ +/* Electrona risso. DESCRIPTION: Electric lantern fish */ +/* Conger myriaster. DESCRIPTION: Whitespotted conger */ +/* Electrona spp. DESCRIPTION: */ +/* Anguilla australis. DESCRIPTION: Short-finned eel */ +/* Laternula truncata. DESCRIPTION: Truncate lantern clam */ +/* Eulophias owashii. DESCRIPTION: */ +/* Anguilla spp. DESCRIPTION: River eels nei */ +/* Penaeus longistylus. DESCRIPTION: Red-spot king prawn */ +/* Lycodes spp. DESCRIPTION: Eelpouts */ +/* Kappaphycus alvarezii. DESCRIPTION: Elkhorn sea moss */ +/* Premnas biaculeatus. DESCRIPTION: Spinecheek anemonefish */ +/* Eucheuma cottonii. DESCRIPTION: Zanzibar weed */ +/* Eremophilus candidus. DESCRIPTION: */ +/* Plectropomus areolatus. DESCRIPTION: Squaretail coralgrouper */ +/* Eclectochromis festivus. DESCRIPTION: */ +/* Epinnula magistralis. DESCRIPTION: Domine */ +/* Enoplometopus holthuisi. DESCRIPTION: Bullseye reef lobster */ +/* Eucheuma denticulatum. DESCRIPTION: Spiny eucheuma */ +/* Entomocorus benjamini. DESCRIPTION: */ +/* Enoplometopus occidentalis. DESCRIPTION: Red reef lobster */ +/* Plectropomus laevis. DESCRIPTION: Blacksaddled coralgrouper */ +/* Emmelichthys nitidus. DESCRIPTION: Cape bonnetmouth */ +/* Plectropomus punctatus. DESCRIPTION: Marbled coralgrouper */ +/* Plectropomus leopardus. DESCRIPTION: Leopard coralgrouper */ +/* Lethrinidae. DESCRIPTION: Emperors(=Scavengers) nei */ +/* Semele decisa. DESCRIPTION: Bark semele */ +/* Eumesogrammus praecisus. DESCRIPTION: Fourline snakeblenny */ +/* Emmelichthyidae. DESCRIPTION: Bonnetmouths, rubyfishes nei */ +/* Plectropomus pessuliferus. DESCRIPTION: Roving coralgrouper */ +/* Pentaceros decacanthus. DESCRIPTION: Bigspined boarfish */ +/* Plectropomus oligacanthus. DESCRIPTION: Highfin coralgrouper */ +/* Eucheuma spp. DESCRIPTION: Eucheuma seaweeds nei */ +/* Euprymna berryi. DESCRIPTION: Humming-bird bobtail squid */ +/* Eumicrotremus taranetzi. DESCRIPTION: */ +/* Rastrineobola argentea. DESCRIPTION: Silver cyprinid */ +/* Encheliophis boraborensis. DESCRIPTION: Pinhead pearlfish */ +/* Enchelyopus cimbrius. DESCRIPTION: Fourbeard rockling */ +/* Encrasicholina devisi. DESCRIPTION: Devis' anchovy */ +/* Pentaceros capensis. DESCRIPTION: Cape armourhead */ +/* Menippe frontalis. DESCRIPTION: Stridulating stone crab */ +/* Chrysoblephus anglicus. DESCRIPTION: Englishman seabream */ +/* Centrarchops chapini. DESCRIPTION: Barred seabass */ +/* Epinephelus coioides. DESCRIPTION: Orange-spotted grouper */ +/* Evynnis japonica. DESCRIPTION: Crimson seabream */ +/* Enneacampus kaupi. DESCRIPTION: */ +/* Engraulicypris sardella. DESCRIPTION: */ +/* Enobarbichthys maculatus. DESCRIPTION: */ +/* Centropyge acanthops. DESCRIPTION: Orangeback angelfish */ +/* Centropyge joculator. DESCRIPTION: Yellowhead angelfish */ +/* Anchoa hepsetus. DESCRIPTION: Broad-striped anchovy */ +/* Entelurus aequoreus. DESCRIPTION: Snake pipefish */ +/* Engraulis spp. DESCRIPTION: Anchovies nei */ +/* Metapenaeus endeavouri. DESCRIPTION: Endeavour shrimp */ +/* Centropyge multifasciata. DESCRIPTION: Barred angelfish */ +/* Dendrophysa russelii. DESCRIPTION: Goatee croaker */ +/* Pentaceropsis recurvirostris. DESCRIPTION: Longsnout boarfish */ +/* Tellina tenuis. DESCRIPTION: Delicate tellin */ +/* Centrolabrus exoletus. DESCRIPTION: Rock cook */ +/* Ensis goreensis. DESCRIPTION: Goree razor clam */ +/* Centropyge multispinis. DESCRIPTION: Dusky angelfish */ +/* Enoplosus armatus. DESCRIPTION: Old wife */ +/* Enantiopus albini. DESCRIPTION: */ +/* Entomacrodus cadenati. DESCRIPTION: */ +/* Enoplometopus daumi. DESCRIPTION: Striped reef lobster */ +/* Pleuronichthys coenosus. DESCRIPTION: C-O sole */ +/* Eleotris fusca. DESCRIPTION: Dusky sleeper */ +/* Pleuronectes glacialis. DESCRIPTION: Arctic flounder */ +/* Belontia hasselti. DESCRIPTION: Malay combtail */ +/* Eledone cirrhosa. DESCRIPTION: Horned octopus */ +/* Eopsetta jordani. DESCRIPTION: Petrale sole */ +/* Pleuronectes schrenki. DESCRIPTION: Cresthead flounder */ +/* Pelotretis flavilatus. DESCRIPTION: Southern lemon sole */ +/* Pleuronectes putnami. DESCRIPTION: */ +/* Limanda punctatissima. DESCRIPTION: */ +/* Pleuronectes orbignyana. DESCRIPTION: */ +/* Eleotris picta. DESCRIPTION: Spotted sleeper */ +/* Melo amphora. DESCRIPTION: Diadem volute */ +/* Limanda proboscidea. DESCRIPTION: Longhead dab */ +/* Erotelis smaragdus. DESCRIPTION: Emerald sleeper */ +/* Peltorhamphus latus. DESCRIPTION: Speckled sole */ +/* Labeo umbratus. DESCRIPTION: Moggel */ +/* Eleotris vittata. DESCRIPTION: */ +/* Enteromorpha clathrata. DESCRIPTION: Bright green nori */ +/* Melo melo. DESCRIPTION: Indian volute */ +/* Economidichthys pygmaeus. DESCRIPTION: */ +/* Lessonia spp. DESCRIPTION: */ +/* Epinephelus akaara. DESCRIPTION: Hong Kong grouper */ +/* Epalzeorhynchos bicolor. DESCRIPTION: Redtail sharkminnor */ +/* Plagiogeneion macrolepis. DESCRIPTION: */ +/* Centropomus medius. DESCRIPTION: Blackfin snook */ +/* Electrophorus electricus. DESCRIPTION: Electric eel */ +/* Epinephelus cifuentesi. DESCRIPTION: Olive grouper */ +/* Centropomus nigrescens. DESCRIPTION: Black snook */ +/* Pterengraulis atherinoides. DESCRIPTION: Wingfin anchovy */ +/* Epigonus telescopus. DESCRIPTION: Black cardinal fish */ +/* Centropomus unionensis. DESCRIPTION: Union snook */ +/* Epinephelus costae. DESCRIPTION: Goldblotch grouper */ +/* Centropomus robalito. DESCRIPTION: Yellowfin snook */ +/* Papuengraulis micropinna. DESCRIPTION: Littlefin anchovy */ +/* Centropomus ensiferus. DESCRIPTION: Swordspine snook */ +/* Epapterus blohmi. DESCRIPTION: */ +/* Centropomus parallelus. DESCRIPTION: Fat snook */ +/* Ellipsaria lineolata. DESCRIPTION: Dromedary pearlymussel */ +/* Epinephelus areolatus. DESCRIPTION: Areolate grouper */ +/* Centropomus pectinatus. DESCRIPTION: Tarpon snook */ +/* Epinephelus tauvina. DESCRIPTION: Greasy grouper */ +/* Centropomus armatus. DESCRIPTION: Armed snook */ +/* Epinephelus rivulatus. DESCRIPTION: Halfmoon grouper */ +/* Eopsetta grigorjewi. DESCRIPTION: Shotted halibut */ +/* Pelamis platurus. DESCRIPTION: Pelagic sea snake */ +/* Epinephelus cyanopodus. DESCRIPTION: Speckled blue grouper */ +/* Epinephelus stoliczkae. DESCRIPTION: Epaulet grouper */ +/* Equetus acuminatus. DESCRIPTION: High-hat */ +/* Malleus albus. DESCRIPTION: White hammer oyster */ +/* Tellina scobinata. DESCRIPTION: Rasp tellin */ +/* Enoplometopus debelius. DESCRIPTION: Violet-spotted reef lobster */ +/* Ensis ensis. DESCRIPTION: Pod razor shell */ +/* Tectus fenestratus. DESCRIPTION: Fenestrate top */ +/* Eurete simplicissimum. DESCRIPTION: */ +/* Ensis macha. DESCRIPTION: Giant jackknife */ +/* Ensis siliqua. DESCRIPTION: Sword razor shell */ +/* Tellina remies. DESCRIPTION: Remies tellin */ +/* Ensis arcuatus. DESCRIPTION: Arched razor shell */ +/* Equetus lanceolatus. DESCRIPTION: Jack-knifefish */ +/* Malleus malleus. DESCRIPTION: Black hammer oyster */ +/* Tellina timorensis. DESCRIPTION: Timor tellin */ +/* Estellacar olivacea. DESCRIPTION: Olive ark */ +/* Tectarius pagodus. DESCRIPTION: Pagoda prickly-winkle */ +/* Epalzeorhynchos kalopterus. DESCRIPTION: Flying fox */ +/* Eastonia rugosa. DESCRIPTION: Rugose mactra */ +/* Eriphia sebana. DESCRIPTION: Smooth redeyed crab */ +/* Mesodesma mactroides. DESCRIPTION: Yellow wedge clam */ +/* Mesodesma subtriangulatum. DESCRIPTION: Tuatua wedge clam */ +/* Mesodesma ventricosum. DESCRIPTION: Toheroa wedge clam */ +/* Erugosquilla woodmasoni. DESCRIPTION: Smooth squillid mantis shrimp */ +/* Ensis spp. DESCRIPTION: Ensis razor clams nei */ +/* Tectus pyramis. DESCRIPTION: Pyramid top */ +/* Eurythenes gryllus. DESCRIPTION: */ +/* Eremichthys acros. DESCRIPTION: Desert dace */ +/* Serranus subligarius. DESCRIPTION: Belted sandfish */ +/* Etroplus maculatus. DESCRIPTION: Orange chromide */ +/* Erimystax dissimilis. DESCRIPTION: Streamline chub */ +/* Percichthys melanops. DESCRIPTION: */ +/* Eurhomalea rufa. DESCRIPTION: Peruvian yellow clam */ +/* Ereunias grallator. DESCRIPTION: */ +/* Perinereis rullieri. DESCRIPTION: */ +/* Perissodus eccentricus. DESCRIPTION: */ +/* Aspericorvina jubata. DESCRIPTION: Prickly croaker */ +/* Petrochirus californiensis. DESCRIPTION: Big-claw purple hermit crab */ +/* Perccottus glenii. DESCRIPTION: Chinese sleeper */ +/* Ectreposebastes imus. DESCRIPTION: */ +/* Trematomus bernacchii. DESCRIPTION: Emerald rockcod */ +/* Erosa erosa. DESCRIPTION: Pitted stonefish */ +/* Peprilus paru. DESCRIPTION: American harvestfish */ +/* Sesarma angolense. DESCRIPTION: Angola marsh crab */ +/* Emerita rathbunae. DESCRIPTION: Tropical mole crab */ +/* Eriocheir sinensis. DESCRIPTION: Chinese mitten crab */ +/* Percichthys trucha. DESCRIPTION: Creole perch */ +/* Erimyzon sucetta. DESCRIPTION: Lake chubsucker */ +/* Euleptorhamphus viridis. DESCRIPTION: Ribbon halfbeak */ +/* Perinereis cultrifera. DESCRIPTION: */ +/* Laternula spp. DESCRIPTION: */ +/* Erythrocles schlegelii. DESCRIPTION: Japanese rubyfish */ +/* Erythrocles scintillans. DESCRIPTION: */ +/* Stolephorus baganensis. DESCRIPTION: Bagan anchovy */ +/* Setipinna breviceps. DESCRIPTION: Shorthead hairfin anchovy */ +/* Stolephorus chinensis. DESCRIPTION: China anchovy */ +/* Esomus danricus. DESCRIPTION: Flying barb */ +/* Epinephelus daemelii. DESCRIPTION: Saddletail grouper */ +/* Lepas anatifera. DESCRIPTION: Goose barnacle */ +/* Eutaeniichthys gilli. DESCRIPTION: */ +/* Acetes chinensis. DESCRIPTION: Northern mauxia shrimp */ +/* Stolephorus indicus. DESCRIPTION: Indian anchovy */ +/* Stolephorus tri. DESCRIPTION: Spined anchovy */ +/* Elassoma boehlkei. DESCRIPTION: Carolina pygmy sunfish */ +/* Praealticus natalis. DESCRIPTION: Natal rockskipper */ +/* Setipinna melanochir. DESCRIPTION: Dusky-hairfin anchovy */ +/* Stolephorus insularis. DESCRIPTION: Hardenberg's anchovy */ +/* Perissias taeniopterus. DESCRIPTION: Striped-fin flounder */ +/* Setipinna phasa. DESCRIPTION: Gangetic hairfin anchovy */ +/* Enoplosus spp. DESCRIPTION: Old wife fishes */ +/* Stolephorus commersonii. DESCRIPTION: Commerson's anchovy */ +/* Penaeus silasi. DESCRIPTION: False white prawn */ +/* Escualosa thoracata. DESCRIPTION: White sardine */ +/* Setipinna tenuifilis. DESCRIPTION: Common hairfin anchovy */ +/* Acetes vulgaris. DESCRIPTION: Jembret shrimp */ +/* Stolephorus waitei. DESCRIPTION: Spotty-face anchovy */ +/* Etisus splendidus. DESCRIPTION: Splendid spooner */ +/* Setipinna taty. DESCRIPTION: Scaly hairfin anchovy */ +/* Erilepis zonifer. DESCRIPTION: Skilfish */ +/* Etelis carbunculus. DESCRIPTION: Deep-water red snapper */ +/* Etmopterus bigelowi. DESCRIPTION: Blurred smooth lantern shark */ +/* Etelis coruscans. DESCRIPTION: Deepwater longtail red snapper */ +/* Petenia splendida. DESCRIPTION: */ +/* Etmopterus compagnoi. DESCRIPTION: */ +/* Etmopterus lucifer. DESCRIPTION: Blackbelly lanternshark */ +/* Centrogenys vaigiensis. DESCRIPTION: False scorpionfish */ +/* Etmopterus brachyurus. DESCRIPTION: Shorttail lanternshark */ +/* Etmopterus gracilispinis. DESCRIPTION: Broadbanded lanternshark */ +/* Etmopterus unicolor. DESCRIPTION: Brown lanternshark */ +/* Etmopterus splendidus. DESCRIPTION: Splendid lanternshark */ +/* Etmopterus molleri. DESCRIPTION: Mollers lantern shark */ +/* Etmopterus granulosus. DESCRIPTION: Southern lanternshark(Lucifer) */ +/* Etmopterus hillianus. DESCRIPTION: Carribean lanternshark */ +/* Etmopterus decacuspidatus. DESCRIPTION: Combtoothed lanternshark */ +/* Etmopterus pusillus. DESCRIPTION: Smooth lanternshark */ +/* Etmopterus sentosus. DESCRIPTION: Thorny lanternshark */ +/* Etmopterus princeps. DESCRIPTION: Great lanternshark */ +/* Etroplus suratensis. DESCRIPTION: Pearlspot */ +/* Etmopterus polli. DESCRIPTION: African lanternshark */ +/* Etmopterus bullisi. DESCRIPTION: Lined lanternshark */ +/* Etmopterus villosus. DESCRIPTION: Hawaiian lanternshark */ +/* Etmopterus virens. DESCRIPTION: Green lanternshark */ +/* Etmopterus spinax. DESCRIPTION: Velvet belly */ +/* Eretmodus cyanostictus. DESCRIPTION: */ +/* Etmopterus schultzi. DESCRIPTION: Fringfin lanternshark */ +/* Eubalaena australis. DESCRIPTION: Southern right whale */ +/* Eusphyra blochii. DESCRIPTION: Winghead shark */ +/* Eudyptes chrysolophus. DESCRIPTION: Macaroni penguin */ +/* Eutropiellus debauwi. DESCRIPTION: */ +/* Eupallasella perenurus. DESCRIPTION: Lake minnow */ +/* Eustomias furcifer. DESCRIPTION: */ +/* Eubalaena glacialis. DESCRIPTION: Northern right whale */ +/* Eurycheilus pantherinus. DESCRIPTION: */ +/* Eurystole eriarcha. DESCRIPTION: Longfin silverside */ +/* Eumicrotremus derjugini. DESCRIPTION: Leatherfin lumpsucker */ +/* Eucryphycus californicus. DESCRIPTION: Persimmon eelpout */ +/* Thaleichthys pacificus. DESCRIPTION: Eulachon */ +/* Centrarchus macropterus. DESCRIPTION: Flier */ +/* Eustomias tetranema. DESCRIPTION: */ +/* Eustomias longibarba. DESCRIPTION: */ +/* Euprotomicrus bispinatus. DESCRIPTION: Pygmy shark */ +/* Eustomias obscurus. DESCRIPTION: */ +/* Eustomias braueri. DESCRIPTION: */ +/* Euchilichthys astatodon. DESCRIPTION: */ +/* Eugnathichthys eetveldii. DESCRIPTION: */ +/* Pareutropius buffei. DESCRIPTION: */ +/* Eutropiichthys vacha. DESCRIPTION: */ +/* Eurypleuron owasianum. DESCRIPTION: */ +/* Etisus utilis. DESCRIPTION: Sawedged spooner */ +/* Euclichthys polynemus. DESCRIPTION: Eucla cod */ +/* Euprotomicroides zantedeschia. DESCRIPTION: Taillight shark */ +/* Anchoviella alleni. DESCRIPTION: Allen's anchovy */ +/* Anchoviella brevirostris. DESCRIPTION: Snubnose anchovy */ +/* Evynnis cardinalis. DESCRIPTION: Threadfin porgy */ +/* Anchoviella elongata. DESCRIPTION: Elongate anchovy */ +/* Echiophis creutzbergi. DESCRIPTION: */ +/* Anchoviella guianensis. DESCRIPTION: Guyana anchovy */ +/* Pelvicachromis humilis. DESCRIPTION: */ +/* Evistias acutirostris. DESCRIPTION: Striped boarfish */ +/* Anchoviella jamesi. DESCRIPTION: James's anchovy */ +/* Anchoviella spp. DESCRIPTION: Anchoviellas nei */ +/* Anchoviella lepidentostole. DESCRIPTION: Broadband anchovy */ +/* Evermannichthys metzelaari. DESCRIPTION: Sponge goby */ +/* Anchoviella cayennensis. DESCRIPTION: Cayenne anchovy */ +/* Evermannella balbo. DESCRIPTION: Balbo sabretooth */ +/* Evoxymetopon poeyi. DESCRIPTION: Poey's scabbardfish */ +/* Eudyptes chrysocome. DESCRIPTION: Rockhopper penguin */ +/* Evorthodus lyricus. DESCRIPTION: Lyre goby */ +/* Evibacus princeps. DESCRIPTION: Shield fan lobster */ +/* Anchoviella nattereri. DESCRIPTION: Natterer's anchovy */ +/* Evarra bustamantei. DESCRIPTION: */ +/* Anchoviella vaillanti. DESCRIPTION: Vaillant's anchovy */ +/* Echelus pachyrhynchus. DESCRIPTION: */ +/* Eviota abax. DESCRIPTION: */ +/* Evynnis spp. DESCRIPTION: */ +/* Cheilopogon melanurus. DESCRIPTION: Atlantic flyingfish */ +/* Astacidae. DESCRIPTION: European crayfishes nei */ +/* Cheilopogon milleri. DESCRIPTION: Guinean flyingfish */ +/* Epinephelus caeruleopunctatus. DESCRIPTION: Whitespotted grouper */ +/* Cheilopogon pinnatibarbatus. DESCRIPTION: Bennett */ +/* ’s flyingfish */ +/* Epinephelus epistictus. DESCRIPTION: Dotted grouper */ +/* Epinephelus fuscoguttatus. DESCRIPTION: Brown-marbled grouper */ +/* Epinephelus posteli. DESCRIPTION: Striped-fin grouper */ +/* Epinephelus irroratus. DESCRIPTION: Marquesan grouper */ +/* Eupleurogrammus glossodon. DESCRIPTION: Longtooth hairtail */ +/* Epinephelus tukula. DESCRIPTION: Potato grouper */ +/* Epinephelus miliaris. DESCRIPTION: Netfin grouper */ +/* Anguilla nebulosa. DESCRIPTION: Mottled eel */ +/* Epinephelus octofasciatus. DESCRIPTION: Eightbar grouper */ +/* Epinephelus poecilonotus. DESCRIPTION: Dot-dash grouper */ +/* Lucina pensylvanica. DESCRIPTION: Pennsylvania lucine */ +/* Epinephelus retouti. DESCRIPTION: Red-tipped grouper */ +/* Epinephelus summana. DESCRIPTION: Summan grouper */ +/* Epinephelus tuamotuensis. DESCRIPTION: Reticulate grouper */ +/* Epinephelus multinotatus. DESCRIPTION: White-blotched grouper */ +/* Epinephelus faveatus. DESCRIPTION: Barred-chest grouper */ +/* Epinephelus longispinis. DESCRIPTION: Longspine grouper */ +/* Lucina spp. DESCRIPTION: */ +/* Epinephelus polylepis. DESCRIPTION: Smallscaled grouper */ +/* Epinephelus chabaudi. DESCRIPTION: Moustache grouper */ +/* Exochochromis anagenys. DESCRIPTION: Threespot torpedo */ +/* Exostoma berdmorei. DESCRIPTION: */ +/* Exopalaemon carinicauda. DESCRIPTION: Ridgetail prawn */ +/* Exechodontes daidaleus. DESCRIPTION: */ +/* Exyrias belissimus. DESCRIPTION: Mud reef-goby */ +/* Elachocharax geryi. DESCRIPTION: */ +/* Epixanthus dentatus. DESCRIPTION: Longfingered peeler crab */ +/* Esox americanus. DESCRIPTION: Redfin pickerel */ +/* Euaxoctopus pillsburyae. DESCRIPTION: Map octopus */ +/* Exoglossum maxillingua. DESCRIPTION: Cutlips minnow */ +/* Exopalaemon mani. DESCRIPTION: Mamtom prawn */ +/* Exopalaemon modestus. DESCRIPTION: Siberian prawn */ +/* Erisphex philippinus. DESCRIPTION: */ +/* Euleptorhamphus velox. DESCRIPTION: Flying halfbeak */ +/* Exallias brevis. DESCRIPTION: Leopard blenny */ +/* Exerpes asper. DESCRIPTION: Sargassum blenny */ +/* Exopalaemon orientalis. DESCRIPTION: Oriental prawn */ +/* Exopalaemon vietnamicus. DESCRIPTION: Vietnamese crest prawn */ +/* Exocoetus volitans. DESCRIPTION: Tropical two-wing flyingfish */ +/* Exodon paradoxus. DESCRIPTION: Bucktooth tetra */ +/* Exopalaemon styliferus. DESCRIPTION: Roshna prawn */ +/* Epiplatys azureus. DESCRIPTION: */ +/* Thryssa baelama. DESCRIPTION: Baelama anchovy */ +/* Eurypegasus draconis. DESCRIPTION: Short dragonfish */ +/* Thryssa dussumieri. DESCRIPTION: Dussumier's thryssa */ +/* Thryssa encrasicholoides. DESCRIPTION: False baelama anchovy */ +/* Seleniolycus laevifasciatus. DESCRIPTION: */ +/* Thryssa rastrosa. DESCRIPTION: Fly River thryssa */ +/* Thryssa hamiltonii. DESCRIPTION: Hamilton's thryssa */ +/* Ernstichthys anduzei. DESCRIPTION: */ +/* Thryssa brevicauda. DESCRIPTION: Short-tail thryssa */ +/* Thryssa kammalensis. DESCRIPTION: Kammal thryssa */ +/* Euryglossa orientalis. DESCRIPTION: Oriental sole */ +/* Thryssa malabarica. DESCRIPTION: Malabar thryssa */ +/* Eupetrichthys angustipes. DESCRIPTION: */ +/* Erythrocles monodi. DESCRIPTION: Atlantic rubyfish */ +/* Thryssa purava. DESCRIPTION: Oblique-jaw thryssa */ +/* Euprymna morsei. DESCRIPTION: Mimika bobtail squid */ +/* Erythrinus erythrinus. DESCRIPTION: */ +/* Thryssa scratchleyi. DESCRIPTION: New Guinea thryssa */ +/* Thryssa setirostris. DESCRIPTION: Longjaw thryssa */ +/* Eurymen gyrinus. DESCRIPTION: Smoothcheek sculpin */ +/* Thryssa vitrirostris. DESCRIPTION: Orangemouth anchovy */ +/* Thryssa whiteheadi. DESCRIPTION: Whitehead's thryssa */ +/* Euphylax robustus. DESCRIPTION: Robustus swimcrab */ +/* Thryssa mystax. DESCRIPTION: Moustached thryssa */ +/* Euprymna tasmanica. DESCRIPTION: Southern bobtail squid */ +/* Eustomias achirus. DESCRIPTION: Proud dragonfish */ +/* Enteroctopus zealandicus. DESCRIPTION: Yellow octopus */ +/* Emerita austroafricana. DESCRIPTION: */ +/* Eubalaena japonica. DESCRIPTION: North Pacific right whale */ +/* Sepioloidea lineolata. DESCRIPTION: Striped dumpling squid */ +/* Enteroctopus megalocyathus. DESCRIPTION: Patagonian giant octopus */ +/* Epinephelus spilotoceps. DESCRIPTION: Foursaddle grouper */ +/* Epinephelus melanostigma. DESCRIPTION: One-blotch grouper */ +/* Epinephelus radiatus. DESCRIPTION: Oblique-banded grouper */ +/* Scorpaena elongata. DESCRIPTION: Slender rockfish */ +/* Lycengraulis spp. DESCRIPTION: Sabretooth anchovys nei */ +/* Eurhomalea spp. DESCRIPTION: */ +/* Eustomias dendriticus. DESCRIPTION: */ +/* Puntius spp. DESCRIPTION: Asian barbs nei */ +/* Pasiphaea tarda. DESCRIPTION: Crimson pasiphaeid */ +/* Phalium bandatum. DESCRIPTION: Banded bonnet */ +/* Paphia semirugata. DESCRIPTION: Semigrooved venus */ +/* Eustomias enbarbatus. DESCRIPTION: Barbate dragonfish */ +/* Paphia gallus. DESCRIPTION: Rooster venus */ +/* Eustomias filifer. DESCRIPTION: */ +/* Eustomias lipochirus. DESCRIPTION: */ +/* Pasiphaea japonica. DESCRIPTION: Japanese glass shrimp */ +/* Eustomias melanonema. DESCRIPTION: */ +/* Carcharhinus falciformis. DESCRIPTION: Silky shark */ +/* Pasiphaea multidentata. DESCRIPTION: Pink glass shrimp */ +/* Eustomias melanostigma. DESCRIPTION: */ +/* Amphiprion clarkii. DESCRIPTION: Yellowtail clownfish */ +/* Phalium areola. DESCRIPTION: Checkerboard bonnet */ +/* Sprattus fuegensis. DESCRIPTION: Falkland sprat */ +/* Paphia textile. DESCRIPTION: Textile venus */ +/* Phalium glaucum. DESCRIPTION: Grey bonnet */ +/* Pasiphaea sivado. DESCRIPTION: White glass shrimp */ +/* Pseudorca crassidens. DESCRIPTION: False killer whale */ +/* Phalium spp. DESCRIPTION: */ +/* Gymnothorax nudivomer. DESCRIPTION: Starry moray */ +/* Gymnothorax favagineus. DESCRIPTION: Laced moray */ +/* Bodianus diana. DESCRIPTION: Diana's hogfish */ +/* Boleophthalmus dussumieri. DESCRIPTION: */ +/* Phenablennius heyligeri. DESCRIPTION: */ +/* Abramis brama. DESCRIPTION: Freshwater bream */ +/* Abramis spp. DESCRIPTION: Freshwater breams nei */ +/* Natator depressus. DESCRIPTION: Flatback turtle */ +/* Lota lota. DESCRIPTION: Burbot */ +/* Acanthephyra spp. DESCRIPTION: Subantarctic ruby prawn nei */ +/* Atrophacanthus japonicus. DESCRIPTION: */ +/* Fallicambarus byersi. DESCRIPTION: Lavender burrowing crayfish */ +/* Carassius carassius. DESCRIPTION: Crucian carp */ +/* Scapharca indica. DESCRIPTION: Rudder ark */ +/* Scapharca chemnitzii. DESCRIPTION: Chemnitz's ark */ +/* Ctenopharyngodon idellus. DESCRIPTION: Grass carp(=White amur) */ +/* Leptobarbus hoeveni. DESCRIPTION: Hoven's carp */ +/* Scapharca inaequivalvis. DESCRIPTION: Inequivalve ark */ +/* Phalloptychus januarius. DESCRIPTION: */ +/* Sphaerococcus coronopifolius. DESCRIPTION: False gorgon */ +/* Scapharca globosa. DESCRIPTION: Globose ark */ +/* Franciscodoras marmoratus. DESCRIPTION: */ +/* Osteochilus hasselti. DESCRIPTION: Nilem carp */ +/* Parasphaerichthys ocellatus. DESCRIPTION: Eyespot gourami */ +/* Cyprinus carpio. DESCRIPTION: Common carp */ +/* Asterropteryx semipunctata. DESCRIPTION: Starry goby */ +/* Scapharca brasiliana. DESCRIPTION: Incongruous ark */ +/* Photocorynus spiniceps. DESCRIPTION: */ +/* Phenacostethus posthon. DESCRIPTION: */ +/* Phalloceros caudimaculatus. DESCRIPTION: Dusky millions fish */ +/* Fucus virsoides. DESCRIPTION: Adriatic wrack */ +/* Atherinomorus lacunosus. DESCRIPTION: Hardyhead silverside */ +/* Crustacea. DESCRIPTION: Freshwater crustaceans nei */ +/* Cyprinidae. DESCRIPTION: Cyprinids nei */ +/* Aulastomatomorpha phospherops. DESCRIPTION: Luminous slickhead */ +/* Sphoeroides annulatus. DESCRIPTION: Bullseye puffer */ +/* Phallostethus dunckeri. DESCRIPTION: */ +/* Pherallodichthys meshimaensis. DESCRIPTION: */ +/* Sphoeroides testudineus. DESCRIPTION: Checkered puffer */ +/* Leukoma asperrima. DESCRIPTION: */ +/* Leukoma spp. DESCRIPTION: */ +/* Alpheus brevicristatus. DESCRIPTION: Teppo snapping shrimp */ +/* Alpheus digitalis. DESCRIPTION: Forceps snapping shrimp */ +/* Alpheus heterochaelis. DESCRIPTION: Bigclaw snapping shrimp */ +/* Alpheus gracilipes. DESCRIPTION: Daisy snapping shrimp */ +/* Alpheus hoplocheles. DESCRIPTION: Armed snapping shrimp */ +/* Alpheus bisincisus. DESCRIPTION: Flathead snapping shrimp */ +/* Alpheus japonicus. DESCRIPTION: Japanese snapping shrimp */ +/* Alpheus glaber. DESCRIPTION: Red snapping shrimp */ +/* Alpheus spongiarum. DESCRIPTION: Bristle snapping shrimp */ +/* Alpheus sublucanus. DESCRIPTION: Coral snapping shrimp */ +/* Alpheus stephensoni. DESCRIPTION: Queensland snapping shrimp */ +/* Alpheus euphrosyne. DESCRIPTION: Nymph snapping shrimp */ +/* Fusitriton oregonensis. DESCRIPTION: Oregon triton */ +/* Fusitriton spp. DESCRIPTION: */ +/* Enallopsammia rostrata. DESCRIPTION: */ +/* Eviota guttata. DESCRIPTION: */ +/* Eviota pardalota. DESCRIPTION: Leopard dwarfgoby */ +/* Eviota sebreei. DESCRIPTION: */ +/* Hirundichthys affinis. DESCRIPTION: Fourwing flyingfish */ +/* Monacanthidae. DESCRIPTION: Filefishes, leatherjackets nei */ +/* Hirundichthys oxycephalus. DESCRIPTION: Bony flyingfish */ +/* Siphonognathus argyrophanes. DESCRIPTION: */ +/* Eleotridae. DESCRIPTION: Gudgeons, sleepers nei */ +/* Rana graeca. DESCRIPTION: Greek frog */ +/* Fragum unedo. DESCRIPTION: Pacific strawberry cockle */ +/* Fragum hemicardium. DESCRIPTION: Pacific half cockle */ +/* Forcipiger flavissimus. DESCRIPTION: Longnose butterfly fish */ +/* Osphronemus goramy. DESCRIPTION: Giant gourami */ +/* Caffrogobius agulhensis. DESCRIPTION: Agulhas goby */ +/* Rana ridibunda. DESCRIPTION: European green frog */ +/* Rana esculenta. DESCRIPTION: European frog */ +/* Rana lessonae. DESCRIPTION: */ +/* Rana dalmatina. DESCRIPTION: Agile frog */ +/* Pholis gunnellus. DESCRIPTION: Rock gunnel */ +/* Helostoma temminckii. DESCRIPTION: Kissing gourami */ +/* Rana pipiens. DESCRIPTION: Northern leopard frog */ +/* Fregetta tropica. DESCRIPTION: Black-bellied storm petrel */ +/* Fragum fragum. DESCRIPTION: White strawberry cockle */ +/* Trichogaster pectoralis. DESCRIPTION: Snakeskin gourami */ +/* Rana temporaria. DESCRIPTION: Common frog */ +/* Flagellostomias boureei. DESCRIPTION: */ +/* Lopholatilus villarii. DESCRIPTION: */ +/* Gobiidae. DESCRIPTION: Freshwater gobies nei */ +/* Rana grylio. DESCRIPTION: Pig frog */ +/* Fregetta spp. DESCRIPTION: B/W bellied storm petrels nei */ +/* Channa asiatica. DESCRIPTION: Small snakehead */ +/* Centriscus scutatus. DESCRIPTION: Grooved razor-fish */ +/* Chrysogorgia spp. DESCRIPTION: */ +/* Cryodraco antarcticus. DESCRIPTION: Long-fingered icefish */ +/* Leuciscus idus. DESCRIPTION: Orfe(=Ide) */ +/* Leuciscus leuciscus. DESCRIPTION: Common dace */ +/* Fimbria fimbriata. DESCRIPTION: Common basket lucina */ +/* Ficus gracilis. DESCRIPTION: Graceful fig shell */ +/* Filimanus heptadactyla. DESCRIPTION: Sevenfinger threadfin */ +/* Stephanolepis hispidus. DESCRIPTION: Planehead filefish */ +/* Stephanolepis cirrhifer. DESCRIPTION: Threadsail filefish */ +/* Aphia minuta. DESCRIPTION: Transparent goby */ +/* Osteichthyes. DESCRIPTION: Finfishes nei */ +/* Fistularia commersonii. DESCRIPTION: Bluespotted cornetfish */ +/* Fistularia petimba. DESCRIPTION: Red cornetfish */ +/* Channa micropeltes. DESCRIPTION: Indonesian snakehead */ +/* Fistularia spp. DESCRIPTION: Flutemouth */ +/* Ficus subintermedia. DESCRIPTION: Underlined fig shell */ +/* Fimbria soverbii. DESCRIPTION: Elegant basket lucina */ +/* Balaenoptera physalus. DESCRIPTION: Fin whale */ +/* Flabellum spp. DESCRIPTION: Flabellum cup corals nei */ +/* Fungia danai. DESCRIPTION: Spiny mushroom coral */ +/* Fungia echinata. DESCRIPTION: Rough feather coral */ +/* Fungia fungites. DESCRIPTION: Common mushroom coral */ +/* Chauliodus pammelas. DESCRIPTION: */ +/* Fungia paumotensis. DESCRIPTION: Elongate mushroom coral */ +/* Caesio suevica. DESCRIPTION: Suez fusilier */ +/* Sardinella fijiense. DESCRIPTION: Fiji sardinella */ +/* Pholas spp. DESCRIPTION: */ +/* Sphaerechinus granularis. DESCRIPTION: Violet sea urchin */ +/* Fasciolaria lignaria. DESCRIPTION: Wooden fasciolaria */ +/* Notopterus spp. DESCRIPTION: Knifefishes */ +/* Scapharca pilula. DESCRIPTION: Pill ark */ +/* Furcellaria lumbricalis. DESCRIPTION: Red forkweed */ +/* Fasciolaria spp. DESCRIPTION: */ +/* Percophis brasiliensis. DESCRIPTION: Brazilian flathead */ +/* Florenciella lugubris. DESCRIPTION: */ +/* Pharella acutidens. DESCRIPTION: Sharp razor clam */ +/* Scophthalmus aquosus. DESCRIPTION: Windowpane flounder */ +/* Platichthys flesus. DESCRIPTION: European flounder */ +/* Cantherhines (=Navodon) spp. DESCRIPTION: Filefishes nei */ +/* Filicampus tigris. DESCRIPTION: Tiger pipefish */ +/* Platycephalidae. DESCRIPTION: Flatheads nei */ +/* Platycephalus indicus. DESCRIPTION: Bartail flathead */ +/* Pharella javanica. DESCRIPTION: Javanese razor clam */ +/* Pholas chiloensis. DESCRIPTION: Pacific coast angel wing */ +/* Flabelligobius latruncularius. DESCRIPTION: */ +/* Phyllonotus margaritensis. DESCRIPTION: Margarita murex */ +/* Pherallodus indicus. DESCRIPTION: */ +/* Phyllonotus pomum. DESCRIPTION: Apple murex */ +/* Penaeus chinensis. DESCRIPTION: Fleshy prawn */ +/* Flabellum alabastrum. DESCRIPTION: */ +/* Philypnodon grandiceps. DESCRIPTION: */ +/* Paralichthys dentatus. DESCRIPTION: Summer flounder */ +/* Monopterus albus. DESCRIPTION: Asian swamp eel */ +/* Protopterus spp. DESCRIPTION: African lungfishes */ +/* Flabellum angulare. DESCRIPTION: */ +/* Pseudopleuronectes americanus. DESCRIPTION: Winter flounder */ +/* Pleuronectiformes. DESCRIPTION: Flatfishes nei */ +/* Exocoetidae. DESCRIPTION: Flyingfishes nei */ +/* Flabellum macandrewi. DESCRIPTION: Splitting fan coral */ +/* Parosphromenus allani. DESCRIPTION: */ +/* Fusitriton magellanicus. DESCRIPTION: */ +/* Pseudosphromenus cupanus. DESCRIPTION: Spiketail paradisefish */ +/* Phalium granulatum. DESCRIPTION: Grooved helmet */ +/* Phymatolithon calcareum. DESCRIPTION: Chalk weed */ +/* Sphaeramia nematoptera. DESCRIPTION: Pajama cardinalfish */ +/* Phalium saburon. DESCRIPTION: Saburon helmet */ +/* Siphamia versicolor. DESCRIPTION: Sea urchin cardinalfish */ +/* Galeichthys spp. DESCRIPTION: */ +/* Siphonaria gigas. DESCRIPTION: Giant false limpet */ +/* Siphonaria javanica. DESCRIPTION: Javanese false limpet */ +/* Siphonaria laciniosa. DESCRIPTION: Fringed false limpet */ +/* Fulmarus glacialis. DESCRIPTION: Northern fulmar */ +/* Siphonaria sirius. DESCRIPTION: Sirius false limpet */ +/* Phyllonotus trunculus. DESCRIPTION: Banded murex */ +/* Phyllonotus duplex. DESCRIPTION: Duplex murex */ +/* Fodiator acutus. DESCRIPTION: Sharpchin flyingfish */ +/* Foa brachygramma. DESCRIPTION: Weed cardinalfish */ +/* Foetorepus calauropomus. DESCRIPTION: Common stinkfish */ +/* Pholas dactylus. DESCRIPTION: Common piddock */ +/* Rana latastei. DESCRIPTION: */ +/* Foerschichthys flavipinnis. DESCRIPTION: */ +/* Forsterygion bathytaton. DESCRIPTION: Chatham deep-water triplefin */ +/* Rana limnocharis. DESCRIPTION: Indian rice frog */ +/* Rana catesbeiana. DESCRIPTION: American bull frog */ +/* Trophon albolabratus. DESCRIPTION: Antarctic trophon */ +/* Pholidichthys anguis. DESCRIPTION: */ +/* Pholas orientalis. DESCRIPTION: Oriental angel wing */ +/* Rana cyanophlyctis. DESCRIPTION: Indian skipper frog */ +/* Phycis phycis. DESCRIPTION: Forkbeard */ +/* Rana crassa. DESCRIPTION: */ +/* Eleutheronema tetradactylum. DESCRIPTION: Fourfinger threadfin */ +/* Rana fuscigula. DESCRIPTION: */ +/* Rana vertebralis. DESCRIPTION: */ +/* Phycis spp. DESCRIPTION: Forkbeards nei */ +/* Rana blythii. DESCRIPTION: */ +/* Fratercula arctica. DESCRIPTION: Atlantic puffin */ +/* Anabas testudineus. DESCRIPTION: Climbing perch */ +/* Perca fluviatilis. DESCRIPTION: European perch */ +/* Esox lucius. DESCRIPTION: Northern pike */ +/* Aplodactylus punctatus. DESCRIPTION: */ +/* Sander lucioperca. DESCRIPTION: Pike-perch */ +/* Cyprinus pellegrini. DESCRIPTION: Barbless carp */ +/* Trophon spp. DESCRIPTION: */ +/* Perca flavescens. DESCRIPTION: American yellow perch */ +/* Hypoatherina temminckii. DESCRIPTION: Samoan silverside */ +/* Telmatobius culeus. DESCRIPTION: */ +/* Funiculina quadrangularis. DESCRIPTION: */ +/* Acanthephyra eximia. DESCRIPTION: */ +/* Pontoporia blainvillei. DESCRIPTION: Franciscana */ +/* Septifer bilocularis. DESCRIPTION: Box mussel */ +/* Fraudella carassiops. DESCRIPTION: */ +/* Lagenodelphis hosei. DESCRIPTION: Fraser's dolphin */ +/* Frontilabrus caeruleus. DESCRIPTION: */ +/* Osteichthyes. DESCRIPTION: Freshwater fishes nei */ +/* Rana spp. DESCRIPTION: Frogs */ +/* Rana hexadactyla. DESCRIPTION: Indian green frog */ +/* Auxis thazard. DESCRIPTION: Frigate tuna */ +/* Artemia franciscana. DESCRIPTION: */ +/* Rana cancrivora. DESCRIPTION: Crab-eating frog */ +/* Pharus legumen. DESCRIPTION: Bean solen */ +/* Rana magna. DESCRIPTION: */ +/* Phrynorhombus norvegicus. DESCRIPTION: Norwegian topknot */ +/* Rutilus rutilus. DESCRIPTION: Roach */ +/* Porphyra perforata. DESCRIPTION: Frilled nori */ +/* Rana heckscheri. DESCRIPTION: River frog */ +/* Sphaerichthys acrostoma. DESCRIPTION: */ +/* Sardinella fimbriata. DESCRIPTION: Fringescale sardinella */ +/* Rana tigrina. DESCRIPTION: Asiatic bull frog */ +/* Phanerodon furcatus. DESCRIPTION: White seaperch */ +/* Rutilus spp. DESCRIPTION: Roaches nei */ +/* Auxis thazard, A. rochei. DESCRIPTION: Frigate and bullet tunas */ +/* Rhombosolea spp. DESCRIPTION: Sand flounders nei */ +/* Fissurella barbadensis. DESCRIPTION: Barbados keyhole limpet */ +/* Pelecus cultratus. DESCRIPTION: Sichel */ +/* Fusinus dupetitthouarsi. DESCRIPTION: Du Petit's spindle */ +/* Fissurella virescens. DESCRIPTION: Green Panama keyhole limpet */ +/* Pacifastacus nigrescens. DESCRIPTION: Sooty crayfish */ +/* Ex Unionidae. DESCRIPTION: Freshwater mussel shells */ +/* Siluroidei. DESCRIPTION: Freshwater siluroids nei */ +/* Fissurella coarctata. DESCRIPTION: Compressed keyhole limpet */ +/* Fissurella nimbosa. DESCRIPTION: Rayed keyhole limpet */ +/* Channa spp. DESCRIPTION: Snakeheads(=Murrels) nei */ +/* Fusinus rostratus. DESCRIPTION: Beaked fusus */ +/* Fossorochromis rostratus. DESCRIPTION: */ +/* Channa striata. DESCRIPTION: Striped snakehead */ +/* Fasciolaria tulipa. DESCRIPTION: True tulip */ +/* Fissurella nubecula. DESCRIPTION: Cloudy keyhole limpet */ +/* Asaphis violascens. DESCRIPTION: Pacific asaphis */ +/* Fissurella spp. DESCRIPTION: */ +/* Fusinus syracusanus. DESCRIPTION: Syracusan fusus */ +/* Hoplostethus melanopus. DESCRIPTION: Smallscale slimehead */ +/* Periophthalmus argentilineatus. DESCRIPTION: Barred mudskipper */ +/* Pholidoteuthis boschmai. DESCRIPTION: Coffeebean scaled squid */ +/* Pholidoteuthis adami. DESCRIPTION: Scaled squid */ +/* Tinca tinca. DESCRIPTION: Tench */ +/* Periophthalmodon freycineti. DESCRIPTION: */ +/* Phyllonotus regius. DESCRIPTION: Regal murex */ +/* Periophthalmus barbarus. DESCRIPTION: Atlantic mudskipper */ +/* Platycephalus conatus. DESCRIPTION: Deep-water flathead */ +/* Pacifastacus fortis. DESCRIPTION: Shasta crayfish */ +/* Phyllonotus brassica. DESCRIPTION: Cabbage murex */ +/* Hippoglossoides elassodon. DESCRIPTION: Flathead sole */ +/* Scapharca spp. DESCRIPTION: */ +/* Phyllonotus erythrostoma. DESCRIPTION: Pink-mouthed murex */ +/* Fucaceae. DESCRIPTION: Wracks nei */ +/* Fistularia corneta. DESCRIPTION: Pacific cornetfish */ +/* Fusigobius duospilus. DESCRIPTION: Barenape goby */ +/* Fusigobius inframaculatus. DESCRIPTION: */ +/* Fulmarus glacialoides. DESCRIPTION: Southern fulmar */ +/* Furcina ishikawae. DESCRIPTION: */ +/* Fusinus colus. DESCRIPTION: Distaff spindle */ +/* Fusinus closter. DESCRIPTION: Philippi's spindle */ +/* Fucomimus mus. DESCRIPTION: Mousey klipfish */ +/* Fusinus nicobaricus. DESCRIPTION: Nicobar spindle */ +/* Phalium centiquadratum. DESCRIPTION: Pacific Scotch bonnet */ +/* Caesio spp. DESCRIPTION: Fusiliers Caesio nei */ +/* Fistularia tabacaria. DESCRIPTION: Cornetfish */ +/* Fucus serratus. DESCRIPTION: Toothed wrack */ +/* Fucus vesiculosus. DESCRIPTION: Bladder wrack */ +/* Fundulus bifax. DESCRIPTION: Stippled studfish */ +/* Fundulosoma thierryi. DESCRIPTION: */ +/* Favonigobius melanobranchus. DESCRIPTION: */ +/* Helcogramma steinitzi. DESCRIPTION: Red triplefin */ +/* Coregonus albula. DESCRIPTION: Vendace */ +/* Favia favus. DESCRIPTION: Head coral */ +/* Fulvia mutica. DESCRIPTION: Japanese cockle */ +/* Fulvia papyracea. DESCRIPTION: Paper cockle */ +/* Fulvia spp. DESCRIPTION: */ +/* Farlowella acus. DESCRIPTION: Whiptail catfish */ +/* Fowleria vaiulae. DESCRIPTION: Mottled cardinalfish */ +/* Fowleria variegata. DESCRIPTION: Variegated cardinalfish */ +/* Fowleria aurita. DESCRIPTION: Crosseyed cardinalfish */ +/* Asaphis spp. DESCRIPTION: */ +/* Bathyphylax bombifrons. DESCRIPTION: */ +/* Phaeoptyx conklini. DESCRIPTION: Freckled cardinalfish */ +/* Festucalex erythraeus. DESCRIPTION: */ +/* Flexopecten flexuosus. DESCRIPTION: Flexuous scallop */ +/* Flexopecten glaber. DESCRIPTION: Smooth scallop */ +/* Faxonella clypeata. DESCRIPTION: Ditch fencing crayfish */ +/* Feroxodon multistriatus. DESCRIPTION: Manystriped blowfish */ +/* Flexopecten proteus. DESCRIPTION: Proteus scallop */ +/* Festucalex wassi. DESCRIPTION: */ +/* Eunice spp. DESCRIPTION: Eunice sea-worms */ +/* Sphyraenops bairdianus. DESCRIPTION: */ +/* Floridichthys carpio. DESCRIPTION: Goldspotted killifish */ +/* Brachyamblyopus brachysoma. DESCRIPTION: */ +/* Porphyra spp. DESCRIPTION: Nori nei */ +/* Acanthephyra curtirostris. DESCRIPTION: Peaked shrimp */ +/* Stellifer spp. DESCRIPTION: */ +/* Carbasea ovoidea. DESCRIPTION: */ +/* Puntius lateristriga. DESCRIPTION: Spanner barb */ +/* Gafrarium spp. DESCRIPTION: Venus nei */ +/* Gonichthys cocco. DESCRIPTION: Cocco */ +/* ’s lanternfish */ +/* Galeus arae. DESCRIPTION: Roughtail catshark */ +/* Galeus boardmani. DESCRIPTION: Australian sawtail catshark */ +/* Gadomus arcuatus. DESCRIPTION: Doublethread grenadier */ +/* Gadiformes. DESCRIPTION: Gadiformes nei */ +/* Galeus eastmani. DESCRIPTION: Gecko catshark */ +/* Apistogramma trifasciata. DESCRIPTION: */ +/* Galeorhinus galeus. DESCRIPTION: Tope shark */ +/* Galeus schultzi. DESCRIPTION: Dwarf sawtail catshark */ +/* Galeus sauteri. DESCRIPTION: Blacktip sawtail catshark */ +/* Dichistius capensis. DESCRIPTION: Galjoen */ +/* Galene bispinosa. DESCRIPTION: Square-shelled crab */ +/* Galeoides decadactylus. DESCRIPTION: Lesser African threadfin */ +/* Galeus murinus. DESCRIPTION: Mouse catshark */ +/* Galeus nipponensis. DESCRIPTION: Broadfin sawtail catshark */ +/* Galeus longirostris. DESCRIPTION: */ +/* Galeus piperatus. DESCRIPTION: Peppered catshark */ +/* Galeus polli. DESCRIPTION: African sawtail catshark */ +/* Belone belone. DESCRIPTION: Garfish */ +/* Gastropoda. DESCRIPTION: Gastropods nei */ +/* Galeichthys feliceps. DESCRIPTION: White barbel */ +/* Galeus spp. DESCRIPTION: Crest-tail catsharks nei */ +/* Aplochiton zebra. DESCRIPTION: */ +/* Ataeniobius toweri. DESCRIPTION: Bluetail goodea */ +/* Argonauta spp. DESCRIPTION: Argonauts nei */ +/* Galeopsis bullatus. DESCRIPTION: */ +/* Portunus trituberculatus. DESCRIPTION: Gazami crab */ +/* Sphyraena barracuda. DESCRIPTION: Great barracuda */ +/* Brachygalaxias bullocki. DESCRIPTION: */ +/* Gobius cobitis. DESCRIPTION: Giant goby */ +/* Gobiomorus dormitor. DESCRIPTION: Bigmouth sleeper */ +/* Gibbonsia elegans. DESCRIPTION: Spotted kelpfish */ +/* Gobiusculus flavescens. DESCRIPTION: Two-spotted goby */ +/* Caragobioides geomys. DESCRIPTION: */ +/* Atya gabonensis. DESCRIPTION: Gabon shrimp */ +/* Glossogobius biocellatus. DESCRIPTION: Sleepy goby */ +/* Gibbula albida. DESCRIPTION: White gibbula */ +/* Gobulus crescentalis. DESCRIPTION: Crescent goby */ +/* Plectorhinchus macrolepis. DESCRIPTION: Biglip grunt */ +/* Oxyeleotris marmorata. DESCRIPTION: Marble goby */ +/* Gobius niger. DESCRIPTION: Black goby */ +/* Zosterisessor ophiocephalus. DESCRIPTION: Grass goby */ +/* Gobionellus atripinnis. DESCRIPTION: Blackfin goby */ +/* Gibbula adansoni. DESCRIPTION: Adanson's gibbula */ +/* Plectorhinchus mediterraneus. DESCRIPTION: Rubberlip grunt */ +/* Mycteroperca xenarcha. DESCRIPTION: Broomtail grouper */ +/* Gibberichthys latifrons. DESCRIPTION: */ +/* Gracilopterygion bapturum. DESCRIPTION: Japanese blacktail triplefin */ +/* Gobiomorphus breviceps. DESCRIPTION: Upland bully */ +/* Gibbula divaricata. DESCRIPTION: Divaricate gibbula */ +/* Gibbula ardens. DESCRIPTION: Red-brown gibbula */ +/* Gibbula fanulum. DESCRIPTION: Chapel gibbula */ +/* Gobius ater. DESCRIPTION: Bellotti's goby */ +/* Gracila albomarginata. DESCRIPTION: Masked grouper */ +/* Gonichthys barnesi. DESCRIPTION: */ +/* Glycymeris violacescens. DESCRIPTION: Violet bittersweet */ +/* Glycymeris undata. DESCRIPTION: Lined bittersweet */ +/* Chapalichthys encaustus. DESCRIPTION: Barred splitfin */ +/* Gymnochanda filamentosa. DESCRIPTION: */ +/* Bucephala clangula. DESCRIPTION: Common goldeneye */ +/* Gracilaria chilensis. DESCRIPTION: */ +/* Gillichthys mirabilis. DESCRIPTION: Longjaw mudsucker */ +/* Glycymeris pilosa. DESCRIPTION: Pilose bittersweet */ +/* Glycymeris bimaculata. DESCRIPTION: Two-spotted bittersweet */ +/* Conidens laticephalus. DESCRIPTION: */ +/* Carnegiella marthae. DESCRIPTION: Blackwing hatchetfish */ +/* Genyochromis mento. DESCRIPTION: */ +/* Gracilaria veleroae. DESCRIPTION: Veiled gracilaria */ +/* Chapalichthys pardalis. DESCRIPTION: Polka-dot splitfin */ +/* Ciliata spp. DESCRIPTION: */ +/* Gobius cruentatus. DESCRIPTION: Red-mouthed goby */ +/* Ciliata septentrionalis. DESCRIPTION: Northern rockling */ +/* Characodon lateralis. DESCRIPTION: Rainbow characodon */ +/* Characodon audax. DESCRIPTION: Bold characodon */ +/* Glycymeris reevei. DESCRIPTION: Reeve's bittersweet */ +/* Gracilaria textorii. DESCRIPTION: Broadleaf gracilaria */ +/* Chorisochismus dentex. DESCRIPTION: Rocksucker */ +/* Crenichthys baileyi. DESCRIPTION: White River springfish */ +/* Clangula hyemalis. DESCRIPTION: Long-tailed duck */ +/* Glanidium albescens. DESCRIPTION: */ +/* Diplecogaster bimaculata. DESCRIPTION: Two-spotted clingfish */ +/* Discotrema crinophila. DESCRIPTION: Crinoid clingfish */ +/* Gaidropsarus ensis. DESCRIPTION: Threadfin rockling */ +/* Guentheridia formosa. DESCRIPTION: Spotted puffer */ +/* Gadiculus argenteus. DESCRIPTION: Silvery pout */ +/* Gelidium chilense. DESCRIPTION: */ +/* Gadella imberbis. DESCRIPTION: Beardless codling */ +/* Gerreidae. DESCRIPTION: Mojarras, etc. nei */ +/* Gelidium lingulatum. DESCRIPTION: */ +/* Gadella maraldi. DESCRIPTION: Gadella */ +/* Gladioglanis machadoi. DESCRIPTION: */ +/* Diademichthys lineatus. DESCRIPTION: */ +/* Dellichthys morelandi. DESCRIPTION: Urchin clingfish */ +/* Diplocrepis puniceus. DESCRIPTION: Orange clingfish */ +/* Goeldiella eques. DESCRIPTION: */ +/* Gymnodraco acuticeps. DESCRIPTION: Ploughfish */ +/* Apistogrammoides pucallpaensis. DESCRIPTION: */ +/* Gaidropsarus argentatus. DESCRIPTION: Arctic rockling */ +/* Gadopsis bispinosus. DESCRIPTION: */ +/* Goniocorella dumosa. DESCRIPTION: Bushy hard coral */ +/* Gonatidae. DESCRIPTION: Gonate squids nei */ +/* Gelidium rex. DESCRIPTION: */ +/* Gelidium amansii. DESCRIPTION: Japanese isinglass */ +/* Gobionellus occidentalis. DESCRIPTION: */ +/* Gerlachea australis. DESCRIPTION: */ +/* Genicanthus bellus. DESCRIPTION: Ornate angelfish */ +/* Panopea abrupta. DESCRIPTION: Pacific geoduck */ +/* Gecarcoidea lalandii. DESCRIPTION: Purple land crab */ +/* Empetrichthys merriami. DESCRIPTION: Ash Meadows killifish */ +/* Gerres filamentosus. DESCRIPTION: Whipfin silver-biddy */ +/* Genidens genidens. DESCRIPTION: Guri sea catfish */ +/* Gerres setifer. DESCRIPTION: */ +/* Genicanthus spinus. DESCRIPTION: Pitcairn angelfish */ +/* Gerres oyena. DESCRIPTION: Common silver-biddy */ +/* Eckloniaichthys scylliorhiniceps. DESCRIPTION: Weedsucker */ +/* Gelidium spp. DESCRIPTION: Gelidium seaweeds */ +/* Rexea solandri. DESCRIPTION: Silver gemfish */ +/* Gerres cinereus. DESCRIPTION: Yellow fin mojarra */ +/* Gerres oblongus. DESCRIPTION: Slender silver-biddy */ +/* Gempylidae. DESCRIPTION: Snake mackerels, escolars nei */ +/* Gelidium corneum. DESCRIPTION: Giant gelidium */ +/* Chaceon spp. DESCRIPTION: Chaceon geryons nei */ +/* Gempylus serpens. DESCRIPTION: Snake mackerel */ +/* Gerres poieti. DESCRIPTION: Strongspine silver-biddy */ +/* Genyatremus luteus. DESCRIPTION: Torroto grunt */ +/* Gerres abbreviatus. DESCRIPTION: Deep-bodied mojarra */ +/* Gelidium madagascariense. DESCRIPTION: */ +/* Panopea spp. DESCRIPTION: */ +/* Geryonidae. DESCRIPTION: Deep-sea crabs, geryons nei */ +/* Gerres nigri. DESCRIPTION: Guinean striped mojarra */ +/* Geophagus brasiliensis. DESCRIPTION: Pearl cichlid */ +/* Phycis blennoides. DESCRIPTION: Greater forkbeard */ +/* Glyphocrangon vicaria. DESCRIPTION: Vicary armoured shrimp */ +/* Gafrarium dispar. DESCRIPTION: Discrepant venus */ +/* Cologrammus flavescens. DESCRIPTION: */ +/* Gerres methueni. DESCRIPTION: Striped silver biddy */ +/* Paraconger notialis. DESCRIPTION: Guinean conger */ +/* Plectorhinchus lessonii. DESCRIPTION: Lesson's thicklip */ +/* Glyphocrangon sicaria. DESCRIPTION: Panama armoured shrimp */ +/* Gafrarium tumidum. DESCRIPTION: Tumid venus */ +/* Gafrarium divaricatum. DESCRIPTION: Forked venus */ +/* Gephyrochromis lawsi. DESCRIPTION: */ +/* Pelagocephalus marki. DESCRIPTION: Rippled blaasop */ +/* Argonauta nodosa. DESCRIPTION: Knobby argonaut */ +/* Glyphoglossus molossus. DESCRIPTION: */ +/* Gafrarium pectinatum. DESCRIPTION: Comb venus */ +/* Gomphina aequilatera. DESCRIPTION: Equilateral venus */ +/* Gomphosus caeruleus. DESCRIPTION: Green birdmouth wrasse */ +/* Glyphocrangon spinulosa. DESCRIPTION: Spiny armoured shrimp */ +/* Glyphocrangon alata. DESCRIPTION: Armoured shrimp */ +/* Glyphus marsupialis. DESCRIPTION: Kangaroo shrimp */ +/* Gomphosus varius. DESCRIPTION: Bird wrasse */ +/* Geophagus proximus. DESCRIPTION: */ +/* Tegula spp. DESCRIPTION: */ +/* Gyrinomimus grahami. DESCRIPTION: Flabby whalefish */ +/* Cipangopaludina chinensis. DESCRIPTION: Chinese mystery snail */ +/* Gagata gagata. DESCRIPTION: */ +/* Galaxias brevipinnis. DESCRIPTION: Koaro */ +/* Galaxias cleaveri. DESCRIPTION: Tasmanian mudfish */ +/* Gaidropsarus mediterraneus. DESCRIPTION: Shore rockling */ +/* Gagata cenia. DESCRIPTION: */ +/* Galaxias fasciatus. DESCRIPTION: Banded kokopu */ +/* Gonorynchus gonorynchus. DESCRIPTION: Beaked salmon */ +/* Gigantura chuni. DESCRIPTION: Gigantura */ +/* Gargariscus prionocephalus. DESCRIPTION: */ +/* Giganthias immaculatus. DESCRIPTION: */ +/* Aseraggodes kaianus. DESCRIPTION: */ +/* Gasteropelecus levis. DESCRIPTION: Silver hatchetfish */ +/* Galaxias maculatus. DESCRIPTION: Inanga */ +/* Gigantactis elsmani. DESCRIPTION: */ +/* Gnathanacanthus goetzeei. DESCRIPTION: Red velvetfish */ +/* Galaxias postvectis. DESCRIPTION: Shortjaw kokopu */ +/* Argonauta argo. DESCRIPTION: Greater argonaut */ +/* Gaidropsarus macrophthalmus. DESCRIPTION: Bigeye rockling */ +/* Gelanoglanis stroudi. DESCRIPTION: */ +/* Girardinichthys multiradiatus. DESCRIPTION: Darkedged splitfin */ +/* Gaidropsarus vulgaris. DESCRIPTION: Three-bearded rockling */ +/* Galaxias vulgaris. DESCRIPTION: Common river galaxias */ +/* Gorgoniidae. DESCRIPTION: Gorgonians */ +/* Palatogobius paradoxus. DESCRIPTION: Mauve goby */ +/* Gaidropsarus biscayensis. DESCRIPTION: Mediterranean bigeye rockling */ +/* Galaxias zebratus. DESCRIPTION: Cape galaxias */ +/* Galeus atlanticus. DESCRIPTION: Atlantic sawtail catshark */ +/* Gobius bucchichi. DESCRIPTION: Bucchich's goby */ +/* Grahamina capito. DESCRIPTION: Spotted robust triplefin */ +/* Anser anser. DESCRIPTION: Greylag goose */ +/* Gymnelus hemifasciatus. DESCRIPTION: Halfbarred pout */ +/* Tomistoma schlegelii. DESCRIPTION: False gharial */ +/* Gigartinaceae. DESCRIPTION: Gigartina seaweeds nei */ +/* Anser brachyrhynchus. DESCRIPTION: Pink-footed goose */ +/* Anser fabalis. DESCRIPTION: Bean goose */ +/* Gorgonocephalus chilensis. DESCRIPTION: */ +/* Gunnellichthys viridescens. DESCRIPTION: Yellowstripe wormfish */ +/* Reinhardtius hippoglossoides. DESCRIPTION: Greenland halibut */ +/* Gymnachirus melas. DESCRIPTION: */ +/* Megathura crenulata. DESCRIPTION: Great keyhole limpet */ +/* Lethops connectens. DESCRIPTION: Halfblind goby */ +/* Patagonotothen guntheri. DESCRIPTION: Yellowfin notothen */ +/* Grahamichthys radiata. DESCRIPTION: Graham's gudgeon */ +/* Cestraeus goldiei. DESCRIPTION: Goldie river mullet */ +/* Tagelus spp. DESCRIPTION: */ +/* Gila atraria. DESCRIPTION: Utah chub */ +/* Gila bicolor. DESCRIPTION: Tui chub */ +/* Gila cypha. DESCRIPTION: Humpback chub */ +/* Gilloblennius abditus. DESCRIPTION: Obscure triplefin */ +/* Gila elegans. DESCRIPTION: Bonytail */ +/* Gari fervensis. DESCRIPTION: Faeroe sunset clam */ +/* Gibbula philberti. DESCRIPTION: Philbert's gibbula */ +/* Glossolepis incisus. DESCRIPTION: Red rainbowfish */ +/* Goniopsis pulchra. DESCRIPTION: Racer mangrove crab */ +/* Girardinus creolus. DESCRIPTION: Creole topminnow */ +/* Girella simplicidens. DESCRIPTION: Gulf opal eye */ +/* Gila nigrescens. DESCRIPTION: Chihuahua chub */ +/* Gillellus arenicola. DESCRIPTION: Sandy stargazer */ +/* Lates calcarifer. DESCRIPTION: Barramundi(=Giant seaperch) */ +/* Girella nigricans. DESCRIPTION: Opaleye */ +/* Gila robusta. DESCRIPTION: Roundtail chub */ +/* Dosidicus gigas. DESCRIPTION: Jumbo flying squid */ +/* Penaeus monodon. DESCRIPTION: Giant tiger prawn */ +/* Gilbertolus alatus. DESCRIPTION: */ +/* Ginsburgellus novemlineatus. DESCRIPTION: Nineline goby */ +/* Turbo sarmaticus. DESCRIPTION: Giant periwinkle */ +/* Gari spp. DESCRIPTION: Sunset clams nei */ +/* Girella tricuspidata. DESCRIPTION: Parore */ +/* Gibbula magus. DESCRIPTION: Magus gibbula */ +/* Chondracanthus acicularis. DESCRIPTION: Spurweed */ +/* Gelidium crinale. DESCRIPTION: Hairy gelidium */ +/* Gari depressa. DESCRIPTION: Depressed sunset clam */ +/* Chondracanthus teedei. DESCRIPTION: Hackle weed */ +/* Glycymeris longior. DESCRIPTION: */ +/* Lepadogaster purpurea. DESCRIPTION: Cornish sucker */ +/* Gibbula richardi. DESCRIPTION: Richard's gibbula */ +/* Gelidium johnstonii. DESCRIPTION: Red gelidium */ +/* Gigartina skottsbergii. DESCRIPTION: Skottsberg's gigartina */ +/* Argis lar. DESCRIPTION: Kuro shrimp */ +/* Gibbula umbilicaris. DESCRIPTION: Umbilicate medit. Gibbula */ +/* Gelidiella acerosa. DESCRIPTION: Chaffweed */ +/* Gelidium pusillum. DESCRIPTION: Dwarf gelidium */ +/* Gari squamosa. DESCRIPTION: Squamose sunset clam */ +/* Gibbula rarilineata. DESCRIPTION: Concave gibbula */ +/* Gari togata. DESCRIPTION: Courtesan sunset clam */ +/* Gari truncata. DESCRIPTION: Truncate sunset clam */ +/* Gibbula varia. DESCRIPTION: Variegate gibbula */ +/* Gracilaria verrucosa. DESCRIPTION: Warty gracilaria */ +/* Gracilaria spinigera. DESCRIPTION: Spiny gracilaria */ +/* Ageneiosus inermis. DESCRIPTION: */ +/* Gracilaria dura. DESCRIPTION: Leather gracilaria */ +/* Gracilaria arcuata. DESCRIPTION: Arcuate gracilaria */ +/* Geukensia demissa. DESCRIPTION: Atlantic ribbed mussel */ +/* Tegula pellisserpentis. DESCRIPTION: Snakeskin tegula */ +/* Gymnogongrus furcellatus. DESCRIPTION: */ +/* Glycymeris gigantea. DESCRIPTION: Giant bittersweet */ +/* Hydropuntia eucheumatoides. DESCRIPTION: Prostrate gracilaria */ +/* Gracilaria edulis. DESCRIPTION: Dichotomously branched gracila */ +/* Gracilaria salicornia. DESCRIPTION: Segmented gracilaria */ +/* Glycymeris glycymeris. DESCRIPTION: Common European bittersweet */ +/* Gecarcinus malpilensis. DESCRIPTION: Malpelo land crab */ +/* Kopua nuimata. DESCRIPTION: */ +/* Glycymeris ovata. DESCRIPTION: Black bittersweet */ +/* Gecarcinus planatus. DESCRIPTION: Red Pacific land crab */ +/* Gecarcinus quadratus. DESCRIPTION: Whitespotted land crab */ +/* Glycymeris scripta. DESCRIPTION: Scripta bittersweet */ +/* Plagiocardium pseudolatum. DESCRIPTION: Broad cockle */ +/* Glycymeris maculata. DESCRIPTION: Speckled bittersweet */ +/* Glauconome virens. DESCRIPTION: Greenish glauconomya */ +/* Galatea spp. DESCRIPTION: */ +/* Glossanodon polli. DESCRIPTION: */ +/* Chiloglanis batesii. DESCRIPTION: */ +/* Lecanogaster chrysea. DESCRIPTION: */ +/* Glycera dibranchiata. DESCRIPTION: Bloodworm */ +/* Glaniopsis denudata. DESCRIPTION: */ +/* Gladiogobius ensifer. DESCRIPTION: Gladiator goby */ +/* Lebetus guilleti. DESCRIPTION: Guillet's goby */ +/* Glaucosoma hebraicum. DESCRIPTION: Westralian jewfish */ +/* Glossanodon leioglossus. DESCRIPTION: Smalltoothed argentine */ +/* Glyptoparus jugularis. DESCRIPTION: Jugular blenny */ +/* Gunnellichthys curiosus. DESCRIPTION: Curious wormfish */ +/* Lovettia sealii. DESCRIPTION: Tasmanian whitebait */ +/* Pteroglanis manni. DESCRIPTION: */ +/* Lepadichthys bolini. DESCRIPTION: */ +/* Globicephala spp. DESCRIPTION: Pilot whales nei */ +/* Lepadogaster lepadogaster. DESCRIPTION: Shore clingfish */ +/* Gloripallium pallium. DESCRIPTION: Royal cloak scallop */ +/* Lepadogaster candollei. DESCRIPTION: Connemarra clingfish */ +/* Gracilaria spp. DESCRIPTION: Gracilaria seaweeds */ +/* Gnathanodon speciosus. DESCRIPTION: Golden trevally */ +/* Glaucosoma scapulare. DESCRIPTION: */ +/* Glycymeris vovan. DESCRIPTION: Vovan bittersweet */ +/* Tagelus adansonii. DESCRIPTION: Adanson's tagelus */ +/* Galatea paradoxa. DESCRIPTION: Common galatea clam */ +/* Paragunnellichthys seychellensis. DESCRIPTION: */ +/* Glyptocephalus zachirus. DESCRIPTION: Rex sole */ +/* Grammistops ocellatus. DESCRIPTION: Ocellate soapfish */ +/* Grammatonotus crosnieri. DESCRIPTION: Long-tailed groppo */ +/* Gymneleotris seminudus. DESCRIPTION: Splitbanded goby */ +/* Gymnocranius frenatus. DESCRIPTION: Yellowsnout large-eye bream */ +/* Grammatostomias flagellibarba. DESCRIPTION: */ +/* Grammicolepis brachiusculus. DESCRIPTION: Thorny tinselfish */ +/* Gymnocanthus herzensteini. DESCRIPTION: */ +/* Gymnoclinus cristulatus. DESCRIPTION: Trident prickleback */ +/* Sagamia geneionema. DESCRIPTION: */ +/* Grammoplites suppositus. DESCRIPTION: Spotfin flathead */ +/* Gramma loreto. DESCRIPTION: Royal gramma */ +/* Modicus minimus. DESCRIPTION: */ +/* Gymnogobius raninus. DESCRIPTION: */ +/* Grammonoides opisthodon. DESCRIPTION: Bighead brotula */ +/* Gymnammodytes capensis. DESCRIPTION: Cape sandlance */ +/* Gymnocranius euanus. DESCRIPTION: Japanese large-eye bream */ +/* Gymnocranius griseus. DESCRIPTION: Grey large-eye bream */ +/* Ameca splendens. DESCRIPTION: Butterfly splitfin */ +/* Grammonus ater. DESCRIPTION: */ +/* Solitas gruveli. DESCRIPTION: Guinea flathead */ +/* Gymnocrotaphus curvidens. DESCRIPTION: Janbruin */ +/* Gymnocranius grandoculis. DESCRIPTION: Blue-lined large-eye bream */ +/* Gymnocaesio gymnoptera. DESCRIPTION: Slender fusilier */ +/* Gymnogeophagus balzanii. DESCRIPTION: Argentine humphead */ +/* Gnathopogon caerulescens. DESCRIPTION: */ +/* Neochanna burrowsius. DESCRIPTION: Canterbury mudfish */ +/* Ginglymostoma cirratum. DESCRIPTION: Nurse shark */ +/* Neochanna diversus. DESCRIPTION: Black mudfish */ +/* Gnathopogon elongatus. DESCRIPTION: */ +/* Gymnapogon africanus. DESCRIPTION: Crystal cardinal */ +/* Ginglymostoma spp. DESCRIPTION: Nurse sharks nei */ +/* Ageneiosus therezine. DESCRIPTION: */ +/* Ageneiosus valenciennesi. DESCRIPTION: */ +/* Ageneiosus vittatus. DESCRIPTION: */ +/* Ageneiosus ucayalensis. DESCRIPTION: */ +/* Ageneiosus melanopogon. DESCRIPTION: */ +/* Ageneiosus madeirensis. DESCRIPTION: */ +/* Ageneiosus parnaguensis. DESCRIPTION: */ +/* Ageneiosus rondoni. DESCRIPTION: */ +/* Goslinia platynema. DESCRIPTION: Slobbering catfish */ +/* Ageneiosus marmoratus. DESCRIPTION: Bottlenose catfish */ +/* Ageneiosus brevifilis. DESCRIPTION: Manduba */ +/* Platanista gangetica. DESCRIPTION: Ganges River dolphin */ +/* Ageneiosus atronasus. DESCRIPTION: */ +/* Ageneiosus dentatus. DESCRIPTION: */ +/* Ageneiosus brevis. DESCRIPTION: */ +/* Ageneiosus uruguayensis. DESCRIPTION: */ +/* Gnathochromis permaxillaris. DESCRIPTION: */ +/* Ageneiosus polystictus. DESCRIPTION: */ +/* Paracrangon areolata. DESCRIPTION: Areolated horned shrimp */ +/* Pseudupeneus prayensis. DESCRIPTION: West African goatfish */ +/* Gobius spp. DESCRIPTION: Atlantic gobies nei */ +/* Opeatogenys cadenati. DESCRIPTION: */ +/* Gobitrichinotus radiocularis. DESCRIPTION: */ +/* Pogonolycus elegans. DESCRIPTION: */ +/* Lesueurigobius friesii. DESCRIPTION: Fries's goby */ +/* Gobio gobio. DESCRIPTION: */ +/* Gonioplectrus hispanus. DESCRIPTION: Spanish flag */ +/* Gobiopsis aporia. DESCRIPTION: */ +/* Gorogobius nigricinctus. DESCRIPTION: */ +/* Lotilia graciliosa. DESCRIPTION: Whitecap goby */ +/* Gobiodon acicularis. DESCRIPTION: */ +/* Trichogaster spp. DESCRIPTION: Gouramis nei */ +/* Gobius paganellus. DESCRIPTION: Rock goby */ +/* Lepas spp. DESCRIPTION: Goose barnacles nei */ +/* Gobio albipinnatus. DESCRIPTION: White-finned gudgeon */ +/* Glyphocrangon lowryi. DESCRIPTION: Goblin prawn */ +/* Gobiobotia brevibarba. DESCRIPTION: */ +/* Goodea atripinnis. DESCRIPTION: Blackfin goodea */ +/* Glossogobius giuris. DESCRIPTION: Tank goby */ +/* Goniocidaris umbraculum. DESCRIPTION: Umbrella urchin */ +/* Gobiocichla ethelwynnae. DESCRIPTION: */ +/* Upeneus spp. DESCRIPTION: Goatfishes */ +/* Gobiopterus brachypterus. DESCRIPTION: */ +/* Gammogobius steinitzi. DESCRIPTION: */ +/* Gobiidae. DESCRIPTION: Gobies nei */ +/* Mycteroperca spp. DESCRIPTION: Brazilian groupers nei */ +/* Cynoponticus ferox. DESCRIPTION: Guinean pike conger */ +/* Epinephelus marginatus. DESCRIPTION: Dusky grouper */ +/* Phycis chesteri. DESCRIPTION: Longfin hake */ +/* Gastropsetta frontalis. DESCRIPTION: Shrimp flounder */ +/* Propherallodus briggsi. DESCRIPTION: */ +/* Phractolaemus ansorgii. DESCRIPTION: Hingemouth */ +/* Palutrus meteori. DESCRIPTION: Meteor goby */ +/* Goniopsis pelii. DESCRIPTION: Purple mangrove crab */ +/* Grapsus tenuicrustatus. DESCRIPTION: Natal lightfoot crab */ +/* Lepidogobius lepidus. DESCRIPTION: Bay goby */ +/* Aspasma minima. DESCRIPTION: */ +/* Epinephelus striatus. DESCRIPTION: Nassau grouper */ +/* Padogobius bonelli. DESCRIPTION: */ +/* Leucopsarion petersi. DESCRIPTION: */ +/* Angiospermae. DESCRIPTION: Seagrasses nei */ +/* Epinephelus morio. DESCRIPTION: Red grouper */ +/* Epinephelus analogus. DESCRIPTION: Spotted grouper */ +/* Pungitius pungitius. DESCRIPTION: Ninespine stickleback */ +/* Paragalaxias dissimilis. DESCRIPTION: */ +/* Goniocidaris parasol. DESCRIPTION: Parasol urchin */ +/* Epinephelus aeneus. DESCRIPTION: White grouper */ +/* Epinephelus spp. DESCRIPTION: Groupers nei */ +/* Cestraeus plicatilis. DESCRIPTION: Lobed river mullet */ +/* Crangon alaskensis. DESCRIPTION: Alaska shrimp */ +/* Sargassum fusiforme. DESCRIPTION: Fusiform sargassum */ +/* Crangon communis. DESCRIPTION: Gray shrimp */ +/* Plectorhinchus sordidus. DESCRIPTION: Sordid rubberlip */ +/* Gari elongata. DESCRIPTION: Elongate sunset clam */ +/* Crangon franciscorum. DESCRIPTION: California shrimp */ +/* Latirolagena smaragdula. DESCRIPTION: Precious stone shell */ +/* Glossus humanus. DESCRIPTION: Oxheart cockle */ +/* Crangon nigromaculata. DESCRIPTION: Bay shrimp */ +/* Sargassum cristaefolium. DESCRIPTION: Double-bladed sargassum */ +/* Sargassum crassifolium. DESCRIPTION: Common Pacific sargassum */ +/* Sargassum polycystum. DESCRIPTION: Rough-stemmed sargassum */ +/* Gari minor. DESCRIPTION: Minor sunset clam */ +/* Crangon nigricauda. DESCRIPTION: Blacktailed shrimp */ +/* Macrocystis spp. DESCRIPTION: Kelp nei */ +/* Gardinoseris planulata. DESCRIPTION: Ice-cube tray coral */ +/* Gonostoma atlanticum. DESCRIPTION: Atlantic fangjaw */ +/* Asparagopsis armata. DESCRIPTION: Red harpoon */ +/* Crangon septemspinosa. DESCRIPTION: Sand shrimp */ +/* Plectorhinchus gaterinus. DESCRIPTION: Blackspotted rubberlip */ +/* Sargassum paniculatum. DESCRIPTION: Serrate sargassum */ +/* Plectorhinchus orientalis. DESCRIPTION: Oriental sweetlips */ +/* Plectorhinchus playfairi. DESCRIPTION: Whitebarred rubberlip */ +/* Asparagopsis taxiformis. DESCRIPTION: Red sea plume */ +/* Sargassum oligocystum. DESCRIPTION: Flat-stemmed sargassum */ +/* Sigmops bathyphilus. DESCRIPTION: Spark anglemouth */ +/* Parapristipoma octolineatum. DESCRIPTION: African striped grunt */ +/* Brachydeuterus auritus. DESCRIPTION: Bigeye grunt */ +/* Gadus ogac. DESCRIPTION: Greenland cod */ +/* Garra dembeensis. DESCRIPTION: */ +/* Chlorophthalmidae. DESCRIPTION: Greeneyes */ +/* Rimicola dimorpha. DESCRIPTION: Southern clingfish */ +/* Garra ghorensis. DESCRIPTION: */ +/* Grammatobothus polyophthalmus. DESCRIPTION: Threespot flounder */ +/* Garra tibanica. DESCRIPTION: */ +/* Grammatotria lemairii. DESCRIPTION: */ +/* Garra lamta. DESCRIPTION: */ +/* Pomadasys argenteus. DESCRIPTION: Silver grunt */ +/* Macruronus magellanicus. DESCRIPTION: Patagonian grenadier */ +/* Macruronus novaezelandiae. DESCRIPTION: Blue grenadier */ +/* Osteichthyes. DESCRIPTION: Groundfishes nei */ +/* Isacia conceptionis. DESCRIPTION: Cabinza grunt */ +/* Geryon longipes. DESCRIPTION: Mediterranean geryon */ +/* Garra rufa. DESCRIPTION: */ +/* Garra gotyla. DESCRIPTION: */ +/* Garra mullya. DESCRIPTION: */ +/* Macrourus spp. DESCRIPTION: Grenadiers nei */ +/* Eschrichtius robustus. DESCRIPTION: Gray whale */ +/* Haemulidae (=Pomadasyidae). DESCRIPTION: Grunts, sweetlips nei */ +/* Carangoides praeustus. DESCRIPTION: Brownback trevally */ +/* Gastromyzon borneensis. DESCRIPTION: */ +/* Asra turcomanus. DESCRIPTION: */ +/* Gonostoma denudatum. DESCRIPTION: */ +/* Grammistes sexlineatus. DESCRIPTION: Goldenstriped soapfish */ +/* Gambusia affinis. DESCRIPTION: Mosquitofish */ +/* Glossamia gjellerupi. DESCRIPTION: Gjellerup's mouth almighty */ +/* Ex Turbo spp. DESCRIPTION: Turban shells nei */ +/* Gobiosoma bosci. DESCRIPTION: Naked goby */ +/* Paraplagusia blochii. DESCRIPTION: */ +/* Somniosus microcephalus. DESCRIPTION: Greenland shark */ +/* Gonostoma elongatum. DESCRIPTION: Elongated bristlemouth fish */ +/* Buglossidium luteum. DESCRIPTION: Solenette */ +/* Gobioides ansorgii. DESCRIPTION: */ +/* Parioglossus aporos. DESCRIPTION: */ +/* Carangoides plagiotaenia. DESCRIPTION: Barcheek trevally */ +/* Grapsus grapsus. DESCRIPTION: Lightfoot crab */ +/* Gambusia echeagarayi. DESCRIPTION: */ +/* Spinachia spinachia. DESCRIPTION: Sea stickleback */ +/* Carangoides talamparoides. DESCRIPTION: Imposter trevally */ +/* Pagrus auratus. DESCRIPTION: Silver seabream */ +/* Gersemia rubiformis. DESCRIPTION: Sea strawberry */ +/* Gobioides sagitta. DESCRIPTION: */ +/* Gonostoma spp. DESCRIPTION: */ +/* Gonostoma bathyphilum. DESCRIPTION: */ +/* Gobioides africanus. DESCRIPTION: */ +/* Gasterosteus aculeatus. DESCRIPTION: Three-spined stickleback */ +/* Tomicodon bidens. DESCRIPTION: Bifid clingfish */ +/* Gnatholepis anjerensis. DESCRIPTION: */ +/* Gonatus kamtschaticus. DESCRIPTION: Shortarm gonate squid */ +/* Gonatopsis borealis. DESCRIPTION: Boreopacific gonate squid */ +/* Rhinobatidae. DESCRIPTION: Guitarfishes, etc. nei */ +/* Gastrana fragilis. DESCRIPTION: Fragile tellin */ +/* Galiteuthis armata. DESCRIPTION: Armed cranch squid */ +/* Gonatus fabricii. DESCRIPTION: Boreoatlantic gonate squid */ +/* Gonatus madokai. DESCRIPTION: Madokai gonate squid */ +/* Gonatopsis makko. DESCRIPTION: Mako gonate squid */ +/* Gunterichthys longipenis. DESCRIPTION: Gold brotula */ +/* Trachelochismus melobesia. DESCRIPTION: Striped clingfish */ +/* Sergestes lucens. DESCRIPTION: Sakura shrimp */ +/* Pagothenia borchgrevinki. DESCRIPTION: Bald notothen */ +/* Gonatus steenstrupi. DESCRIPTION: Atlantic gonate squid */ +/* Periglypta multicostata. DESCRIPTION: Many-ridged venus */ +/* Gobius strictus. DESCRIPTION: */ +/* Thoracocharax securis. DESCRIPTION: Giant hatchetfish */ +/* Patagonotothen tessellata. DESCRIPTION: */ +/* Lentipes armatus. DESCRIPTION: */ +/* Gerres longirostris. DESCRIPTION: Longtail silverbiddy */ +/* Alligator sinensis. DESCRIPTION: Chinese alligator */ +/* Patagonotothen spp. DESCRIPTION: Patagonotothen nei */ +/* Gonatus onyx. DESCRIPTION: */ +/* Gerres limbatus. DESCRIPTION: Saddleback silver-biddy */ +/* Rhinobatos albomaculatus. DESCRIPTION: Whitespotted guitarfish */ +/* Chelidonichthys capensis. DESCRIPTION: Cape gurnard */ +/* Rhinobatos percellens. DESCRIPTION: Chola guitarfish */ +/* Guianacara oelemariensis. DESCRIPTION: */ +/* Rhinobatos planiceps. DESCRIPTION: Pacific guitarfish */ +/* Eutrigla gurnardus. DESCRIPTION: Grey gurnard */ +/* Chagunius chagunio. DESCRIPTION: */ +/* Chelidonichthys spp. DESCRIPTION: Indo-Pacific gurnards */ +/* Grapsus albolineatus. DESCRIPTION: Mottled crab */ +/* Gulaphallus bikolanus. DESCRIPTION: */ +/* Chelidonichthys obscurus. DESCRIPTION: Longfin gurnard */ +/* Trigla lyra. DESCRIPTION: Piper gurnard */ +/* Gasterosteus crenobiontus. DESCRIPTION: */ +/* Centrophorus granulosus. DESCRIPTION: Gulper shark */ +/* Centrophorus squamosus. DESCRIPTION: Leafscale gulper shark */ +/* Aspitrigla cuculus. DESCRIPTION: Red gurnard */ +/* Parapenaeopsis atlantica. DESCRIPTION: Guinea shrimp */ +/* Scomberomorus guttatus. DESCRIPTION: Indo-Pacific king mackerel */ +/* Chelidonichthys lucerna. DESCRIPTION: Tub gurnard */ +/* Guavina guavina. DESCRIPTION: */ +/* Gasterosteus wheatlandi. DESCRIPTION: Blackspotted stickleback */ +/* Triglidae. DESCRIPTION: Gurnards, searobins nei */ +/* Trigla spp. DESCRIPTION: Gurnards nei */ +/* Rhinobatos spp. DESCRIPTION: Guitarfishes nei */ +/* Centrophorus atromarginatus. DESCRIPTION: Blackfin gulper shark */ +/* Gobiodon citrinus. DESCRIPTION: Poison goby */ +/* Gobiodon reticulatus. DESCRIPTION: Reticulate goby */ +/* Gobiodon rivulatus. DESCRIPTION: Rippled coralgoby */ +/* Geodia vestigifera. DESCRIPTION: Ostrich egg sponge */ +/* Gobiopsis canalis. DESCRIPTION: Checkered goby */ +/* Gavialis gangeticus. DESCRIPTION: Gharial */ +/* Gobiopsis macrostoma. DESCRIPTION: Longjaw goby */ +/* Centrophorus isodon. DESCRIPTION: Black gulper shark */ +/* Grammoplites scaber. DESCRIPTION: Rough flathead */ +/* Provocator mirabilis. DESCRIPTION: Golden volute */ +/* Genypterus tigerinus. DESCRIPTION: Rock ling */ +/* Acanthascus spp. DESCRIPTION: */ +/* Mergus merganser. DESCRIPTION: Goosander */ +/* Greenwoodochromis bellcrossi. DESCRIPTION: */ +/* Mergus serrator. DESCRIPTION: Red-breasted merganser */ +/* Gobius rubropunctatus. DESCRIPTION: */ +/* Gobius geniporus. DESCRIPTION: Slender goby */ +/* Gobius roulei. DESCRIPTION: Roule's goby */ +/* Gobius vittatus. DESCRIPTION: Striped goby */ +/* Gobius xanthocephalus. DESCRIPTION: Golden goby */ +/* Glyptothorax alaknandi. DESCRIPTION: */ +/* Channa maculata x C. argus. DESCRIPTION: */ +/* Gobiesox adustus. DESCRIPTION: Panamic clingfish */ +/* Cestraeus spp. DESCRIPTION: River mullets nei */ +/* Gobius fallax. DESCRIPTION: Sarato's goby */ +/* Haplocylix littoreus. DESCRIPTION: Giant clingfish */ +/* Gyrinocheilus aymonieri. DESCRIPTION: Siamese algae-eater */ +/* Gnathodentex aureolineatus. DESCRIPTION: Striped large-eye bream */ +/* Gnathocharax steindachneri. DESCRIPTION: */ +/* Glanapteryx anguilla. DESCRIPTION: */ +/* Gephyroberyx darwinii. DESCRIPTION: Darwin's slimehead */ +/* Geophagus spp. DESCRIPTION: */ +/* Gymnoscopelus bolini. DESCRIPTION: */ +/* Gymnotus carapo. DESCRIPTION: Banded knifefish */ +/* Gyrinomimus andriashevi. DESCRIPTION: */ +/* Gymnocharacinus bergii. DESCRIPTION: Naked characin */ +/* Gymnoscopelus fraseri. DESCRIPTION: */ +/* Gastrocyathus gracilis. DESCRIPTION: Slender clingfish */ +/* Gymnorhamphichthys hypostomus. DESCRIPTION: */ +/* Aspasmichthys ciconiae. DESCRIPTION: */ +/* Gymnoscopelus hintonoides. DESCRIPTION: */ +/* Gymnelopsis brashnikovi. DESCRIPTION: */ +/* Gymnocephalus baloni. DESCRIPTION: Danube ruffe */ +/* Glyptosternon maculatum. DESCRIPTION: */ +/* Gymnoscopelus nicholsi. DESCRIPTION: Nichol's lanternfish */ +/* Gymnoscopelus opisthopterus. DESCRIPTION: */ +/* Galeichthys peruvianus. DESCRIPTION: Peruvian sea catfish */ +/* Gastrocymba quadriradiata. DESCRIPTION: */ +/* Gymnoscopelus braueri. DESCRIPTION: */ +/* Gastroscyphus hectoris. DESCRIPTION: Hector's clingfish */ +/* Gymnocorymbus ternetzi. DESCRIPTION: Black tetra */ +/* Gymnocephalus acerinus. DESCRIPTION: Donets ruffe */ +/* Gymnallabes alvarezi. DESCRIPTION: */ +/* Gymnocypris biswasi. DESCRIPTION: */ +/* Gymnoscopelus spp. DESCRIPTION: */ +/* Gymnocephalus schraetser. DESCRIPTION: Schraetzer */ +/* Gazza minuta. DESCRIPTION: Toothpony */ +/* Hyporhamphus unicuspis. DESCRIPTION: Simpletooth halfbeak */ +/* Hyporhamphus sindensis. DESCRIPTION: Sind halfbeak */ +/* Hyporhamphus quoyi. DESCRIPTION: Quoy's garfish */ +/* Hyporhamphus limbatus. DESCRIPTION: Congaturi halfbeak */ +/* Hippichthys penicillus. DESCRIPTION: Beady pipefish */ +/* Heniochus monoceros. DESCRIPTION: Masked bannerfish */ +/* Hemiramphus archipelagicus. DESCRIPTION: Jumping halfbeak */ +/* Halichoeres stigmaticus. DESCRIPTION: U-spot wrasse */ +/* Gvozdarus svetovidovi. DESCRIPTION: Naked-head toothfish */ +/* Halichoeres nigrescens. DESCRIPTION: Bubblefin wrasse */ +/* Gazza spp. DESCRIPTION: Toothponies nei */ +/* Halichoeres marginatus. DESCRIPTION: Dusky wrasse */ +/* Halichoeres leptotaenia. DESCRIPTION: */ +/* Halaelurus alcocki. DESCRIPTION: Arabian catshark */ +/* Halaelurus boesemani. DESCRIPTION: Speckled catshark */ +/* Melanogrammus aeglefinus. DESCRIPTION: Haddock */ +/* Halaelurus buergeri. DESCRIPTION: Blackspotted catshark */ +/* Sternoptychidae. DESCRIPTION: Hatchetfishes nei */ +/* Halaelurus lutarius. DESCRIPTION: Mud catshark */ +/* Halaelurus hispidus. DESCRIPTION: Bristly catshark */ +/* Psettodes erumei. DESCRIPTION: Indian halibut */ +/* Hyporhamphus sajori. DESCRIPTION: Japanese halfbeak */ +/* Halaelurus natalensis. DESCRIPTION: Tiger catshark */ +/* Hippoglossus hippoglossus. DESCRIPTION: Atlantic halibut */ +/* Halaelurus canescens. DESCRIPTION: Dusky catshark */ +/* Halaelurus dawsoni. DESCRIPTION: New Zealand catshark */ +/* Hippoglossus stenolepis. DESCRIPTION: Pacific halibut */ +/* Halaelurus quagga. DESCRIPTION: Quagga catshark */ +/* Harriotta spp. DESCRIPTION: Longnose chimaeras */ +/* Megalaspis cordyla. DESCRIPTION: Torpedo scad */ +/* Polyprion spp. DESCRIPTION: Hapuka */ +/* Halaelurus immaculatus. DESCRIPTION: Spotless catshark */ +/* Cheilodactylus variegatus. DESCRIPTION: Peruvian morwong */ +/* Hemiramphus spp. DESCRIPTION: Halfbeaks nei */ +/* Halaelurus lineatus. DESCRIPTION: Lined catshark */ +/* Haliotis cracherodii. DESCRIPTION: Black abalone */ +/* Schismatogobius ampluvinculus. DESCRIPTION: */ +/* Alcidae. DESCRIPTION: */ +/* Channa barca. DESCRIPTION: Barca snakehead */ +/* Hemibrycon dentatus. DESCRIPTION: */ +/* Halobaena caerulea. DESCRIPTION: Blue petrel */ +/* Thais bufo. DESCRIPTION: Toad purpura */ +/* Harpagifer georgianus. DESCRIPTION: S. Georgia spiny plunderfish */ +/* Alle alle. DESCRIPTION: Dovekie */ +/* Hemiemblemaria simulus. DESCRIPTION: Wrasse blenny */ +/* Chaceon bicolor. DESCRIPTION: Pacific golden crab */ +/* Halicampus brocki. DESCRIPTION: Brock's pipefish */ +/* Chaetodontoplus ballinae. DESCRIPTION: Ballina angelfish */ +/* Harpa major. DESCRIPTION: Major harp */ +/* Chaceon notialis. DESCRIPTION: Southwest Atlantic red crab */ +/* Cepphus grylle. DESCRIPTION: Black guillemot */ +/* Hybognathus placitus. DESCRIPTION: Plains minnow */ +/* Henricia obesa. DESCRIPTION: */ +/* Hyporhamphus picarti. DESCRIPTION: African halfbeak */ +/* Hemibates stenosoma. DESCRIPTION: */ +/* Hobbseus attenuatus. DESCRIPTION: Pearl riverlet crayfish */ +/* Hypophthalmus spp. DESCRIPTION: */ +/* Chlamydogobius gloveri. DESCRIPTION: */ +/* Alca torda. DESCRIPTION: Razorbill */ +/* Hoplichthys spp. DESCRIPTION: */ +/* Hemisorubim platyrhynchos. DESCRIPTION: Porthole shovelnose catfish */ +/* Erimacrus isenbeckii. DESCRIPTION: Hair crab */ +/* Meretrix meretrix. DESCRIPTION: Asiatic hard clam */ +/* Cheirocerus abuelo. DESCRIPTION: */ +/* Harengula clupeola. DESCRIPTION: False herring */ +/* Cephalorhynchus hectori. DESCRIPTION: Hector's dolphin */ +/* Chriodorus atherinoides. DESCRIPTION: Hardhead halfbeak */ +/* Hydrocynus forskahlii. DESCRIPTION: Elongate tigerfish */ +/* Harengula jaguana. DESCRIPTION: Scaled herring */ +/* Harriotta haeckeli. DESCRIPTION: Smallspine spookfish */ +/* Choridactylus multibarbus. DESCRIPTION: Orangebanded stingfish */ +/* Meretrix lusoria. DESCRIPTION: Japanese hard clam */ +/* Haplochromis acidens. DESCRIPTION: */ +/* Pseudocardium sybillae. DESCRIPTION: Imperial surf clam */ +/* Chaenogaleus macrostoma. DESCRIPTION: Hooktooth shark */ +/* Chilochromis duponti. DESCRIPTION: */ +/* Hypoplectrus chlorurus. DESCRIPTION: Yellowtail hamlet */ +/* Hoplichthys acanthopleurus. DESCRIPTION: */ +/* Helcogramma aquilum. DESCRIPTION: */ +/* Harriotta raleighana. DESCRIPTION: Pacific longnose chimaera */ +/* Chiloconger similis. DESCRIPTION: */ +/* Harengula thrissina. DESCRIPTION: Pacific flatiron herring */ +/* Harengula humeralis. DESCRIPTION: Redear herring */ +/* Hydrocynus vittatus. DESCRIPTION: Tiger fish */ +/* Homarus capensis. DESCRIPTION: Cape lobster */ +/* Meretrix spp. DESCRIPTION: Hard clams nei */ +/* Hippichthys cyanospilus. DESCRIPTION: Blue-spotted pipefish */ +/* Holocentridae. DESCRIPTION: Squirrelfishes nei */ +/* Cheilodipterus alleni. DESCRIPTION: */ +/* Hildadoras bolivarensis. DESCRIPTION: */ +/* Halidesmus coccus. DESCRIPTION: */ +/* Chelidoperca hirundinacea. DESCRIPTION: */ +/* Chaetodermis penicilligera. DESCRIPTION: Prickly leatherjacket */ +/* Hypodoras forficulatus. DESCRIPTION: */ +/* Hemiodus gracilis. DESCRIPTION: */ +/* Pomadasys commersonnii. DESCRIPTION: Smallspotted grunter */ +/* Hadropareia middendorffii. DESCRIPTION: */ +/* Hollardia hollardi. DESCRIPTION: Reticulate spikefish */ +/* Macrobrachium idella. DESCRIPTION: Slender river prawn */ +/* Hadropogonichthys lindbergi. DESCRIPTION: */ +/* Hemidoras morrisi. DESCRIPTION: */ +/* Hemiodus argenteus. DESCRIPTION: */ +/* Chalaroderma capito. DESCRIPTION: Looseskin blenny */ +/* Heterodontiformes. DESCRIPTION: Bullhead sharks */ +/* Hirundichthys rondeletii. DESCRIPTION: Black wing flyingfish */ +/* Hadropenaeus lucasii. DESCRIPTION: Trident shrimp */ +/* Schedophilus huttoni. DESCRIPTION: New Zealand ruffe */ +/* Hypodytes rubripinnis. DESCRIPTION: */ +/* Schedophilus ovalis. DESCRIPTION: Imperial blackfish */ +/* Schedophilus pemarco. DESCRIPTION: Pemarco blackfish */ +/* Macrobrachium dux. DESCRIPTION: Congo river prawn */ +/* Dermogenys brachynotopterus. DESCRIPTION: */ +/* Hoplodoras ramirezi. DESCRIPTION: */ +/* Heterodontus ramalheira. DESCRIPTION: Whitespotted bullhead shark */ +/* Heterobranchus bidorsalis. DESCRIPTION: African catfish */ +/* Paragaleus leucolomatus. DESCRIPTION: Whitetip weasel shark */ +/* Hepsetus odoe. DESCRIPTION: Kafue pike */ +/* Hemipristis elongata. DESCRIPTION: Snaggletooth shark */ +/* Heterodontus francisci. DESCRIPTION: Horn shark */ +/* Heterodontus galeatus. DESCRIPTION: Crested bullhead shark */ +/* Hemigaleus microstoma. DESCRIPTION: Sicklefin weasel shark */ +/* Paragaleus pectoralis. DESCRIPTION: Atlantic weasel shark */ +/* Heterodontus japonicus. DESCRIPTION: Japanese bullhead shark */ +/* Heterodontus portusjacksoni. DESCRIPTION: Port Jackson shark */ +/* Heterobranchus longifilis. DESCRIPTION: Sampa */ +/* Heterodontus mexicanus. DESCRIPTION: Mexican hornshark */ +/* Paragaleus tengi. DESCRIPTION: Straight-tooth weasel shark */ +/* Chela laubuca. DESCRIPTION: Indian glass barb */ +/* Clupea pallasii. DESCRIPTION: Pacific herring */ +/* Heterodontus quoyi. DESCRIPTION: Galapagos bullhead shark */ +/* Clupea harengus. DESCRIPTION: Atlantic herring */ +/* Herklotsichthys quadrimaculat.. DESCRIPTION: Bluestripe herring */ +/* Chela cachius. DESCRIPTION: */ +/* Hemitripterus villosus. DESCRIPTION: */ +/* Haletta semifasciata. DESCRIPTION: */ +/* Hemitilapia oxyrhyncha. DESCRIPTION: Giant Haplochromis */ +/* Chelaethiops bibie. DESCRIPTION: */ +/* Heterodontus zebra. DESCRIPTION: Zebra bullhead shark */ +/* Holothuria atra. DESCRIPTION: Lollyfish */ +/* Chaceon fenneri. DESCRIPTION: Golden deepsea crab */ +/* Holothuria scabra. DESCRIPTION: Sand fish */ +/* Schedophilus maculatus. DESCRIPTION: Pelagic butterfish */ +/* Holothuria edulis. DESCRIPTION: Pinkfish */ +/* Holothuria fuscogilva. DESCRIPTION: White teatfish */ +/* Hephaestus fuliginosus. DESCRIPTION: Black bream */ +/* Ahnfeltia plicata. DESCRIPTION: Landlady's Wig */ +/* Holothuria impatiens. DESCRIPTION: Bottleneck sea cucumber */ +/* Ahnfeltia fastigiata. DESCRIPTION: */ +/* Hepatus kossmanni. DESCRIPTION: Havana box crab */ +/* Hepatus lineatus. DESCRIPTION: Spoted box crab */ +/* Halipteris finmarchica. DESCRIPTION: */ +/* Holothuria nobilis. DESCRIPTION: Black teatfish */ +/* Macrobrachium formosense. DESCRIPTION: Crane river prawn */ +/* Chonophorus macrorhynchus. DESCRIPTION: */ +/* Holothuria leucospilota. DESCRIPTION: White threads fish */ +/* Helicolenus percoides. DESCRIPTION: Red gurnard perch */ +/* Chriolepis fisheri. DESCRIPTION: */ +/* Holothuria tubulosa. DESCRIPTION: Cotton spinner */ +/* Heptacarpus futilirostris. DESCRIPTION: Toy shrimp */ +/* Phractura fasciata. DESCRIPTION: */ +/* Holacanthus africanus. DESCRIPTION: Guinean angelfish */ +/* Harpagiferidae. DESCRIPTION: Spiny plunderfishes nei */ +/* Hippasteria falklandica. DESCRIPTION: */ +/* Podiceps auritus. DESCRIPTION: Horned grebe */ +/* Helogenes castaneus. DESCRIPTION: */ +/* Hemigrammopetersius barnardi. DESCRIPTION: Barnard's robber */ +/* Hemigrammus caudovittatus. DESCRIPTION: Buenos Aires tetra */ +/* Hippoglossoides dubius. DESCRIPTION: Flathead flounder */ +/* Hemigobius bleekeri. DESCRIPTION: */ +/* Hemigymnus fasciatus. DESCRIPTION: Barred thicklip */ +/* Hyrcanogobius bergi. DESCRIPTION: */ +/* Hippospongia lachne. DESCRIPTION: Sheepswool sponge */ +/* Harpagifer bispinis. DESCRIPTION: Magellan plunderfish */ +/* Macrobrachium grandimanus. DESCRIPTION: Hawaii river prawn */ +/* Horaglanis krishnai. DESCRIPTION: Indian blind catfish */ +/* Pleuronichthys guttulatus. DESCRIPTION: Diamond turbot */ +/* Hapalogenys mucronatus. DESCRIPTION: */ +/* Hologymnosus annulatus. DESCRIPTION: Ring wrasse */ +/* Hippoglossina macrops. DESCRIPTION: Bigeye flounder */ +/* Hemiglyphidodon plagiometopon. DESCRIPTION: Lagoon damselfish */ +/* Hippospongia communis. DESCRIPTION: Honey comb */ +/* Hemigrammus rodwayi. DESCRIPTION: */ +/* Chaenogobius castaneus. DESCRIPTION: Biringo */ +/* Helcogrammoides antarcticus. DESCRIPTION: */ +/* Hemigrammus unilineatus. DESCRIPTION: Featherfin tetra */ +/* Hepatus gronovii. DESCRIPTION: Globose box crab */ +/* Harpagifer antarcticus. DESCRIPTION: Antarctic spiny plunderfish */ +/* Holapogon maximus. DESCRIPTION: Titan cardinalfish */ +/* Hyperoglyphe bythites. DESCRIPTION: Black driftfish */ +/* Thais armigera. DESCRIPTION: Belligerent rock shell */ +/* Hyporhamphus affinis. DESCRIPTION: Tropical halfbeak */ +/* Hexatrygon bickelli. DESCRIPTION: Sixgill stingray */ +/* Hemirhamphodon chrysopunctatus. DESCRIPTION: */ +/* Haemulon scudderii. DESCRIPTION: Grey grunt */ +/* Haemulon steindachneri. DESCRIPTION: Chere-chere grunt */ +/* Hemiramphus far. DESCRIPTION: Black-barred halfbeak */ +/* Hyporhamphus gilli. DESCRIPTION: Choelo halfbeak */ +/* Cheilochromis euchilus. DESCRIPTION: */ +/* Haemulon sciurus. DESCRIPTION: Bluestriped grunt */ +/* Achiropsetta tricholepis. DESCRIPTION: */ +/* Halimochirurgus alcocki. DESCRIPTION: */ +/* Hexatrygon longirostra. DESCRIPTION: */ +/* Hemiramphus marginatus. DESCRIPTION: Yellowtip halfbeak */ +/* Hypoplectrodes huntii. DESCRIPTION: Redbanded perch */ +/* Chilotilapia rhoadesii. DESCRIPTION: */ +/* Heteroteuthis dispar. DESCRIPTION: Odd bobtail squid */ +/* Macrobrachium heterochirus. DESCRIPTION: Cascade river prawn */ +/* Hyporhamphus roberti. DESCRIPTION: Slender halfbeak */ +/* Horaichthys setnai. DESCRIPTION: Malabar ricefish */ +/* Hemisilurus heterorhynchus. DESCRIPTION: */ +/* Hyporhamphus unifasciatus. DESCRIPTION: Common halfbeak */ +/* Hygophum hygomii. DESCRIPTION: Bermuda lantern fish */ +/* Holothuria coluber. DESCRIPTION: Snake fish */ +/* Haemulon sexfasciatum. DESCRIPTION: Greybar grunt */ +/* Hyporhamphus snyderi. DESCRIPTION: Skipper halfbeak */ +/* Podiceps cristatus. DESCRIPTION: Great crested grebe */ +/* Hintonia candens. DESCRIPTION: */ +/* Histiobranchus bathybius. DESCRIPTION: Deep-water arrowtooth eel */ +/* Hippocampus spp. DESCRIPTION: Seahorses nei */ +/* Haplochromis desfontainii. DESCRIPTION: */ +/* Himantolophus albinares. DESCRIPTION: */ +/* Cheilinus fasciatus. DESCRIPTION: Redbreasted wrasse */ +/* Chironemus georgianus. DESCRIPTION: Tasseled kelpfish */ +/* Histrio histrio. DESCRIPTION: Sargassumfish */ +/* Schilbe intermedius. DESCRIPTION: */ +/* Hime japonicus. DESCRIPTION: Japanese thread-sail fish */ +/* Achirus achirus. DESCRIPTION: Drab sole */ +/* Tenualosa ilisha. DESCRIPTION: Hilsa shad */ +/* Schilbe marmoratus. DESCRIPTION: Shoulderspot catfish */ +/* Chirolophis nugator. DESCRIPTION: Mosshead warbonnet */ +/* Histiophryne bougainvilli. DESCRIPTION: */ +/* Hippopus hippopus. DESCRIPTION: Bear paw clam */ +/* Hippa strigillata. DESCRIPTION: Striated mole crab */ +/* Haplochromis burtoni. DESCRIPTION: */ +/* Cheilotrema saturnum. DESCRIPTION: Black croaker */ +/* Histiopterus typus. DESCRIPTION: Sailfin armourhead */ +/* Schilbe uranoscopus. DESCRIPTION: */ +/* Histiodraco velifer. DESCRIPTION: */ +/* Thais alouina. DESCRIPTION: Alou rock shell */ +/* Hilsa kelee. DESCRIPTION: Kelee shad */ +/* Schilbe mystus. DESCRIPTION: African butter catfish */ +/* Isostichopus badionotus. DESCRIPTION: Four-sided sea cucumber */ +/* Halichoeres adustus. DESCRIPTION: Black wrasse */ +/* Hemichromis bimaculatus. DESCRIPTION: Jewelfish */ +/* Rhinecanthus aculeatus. DESCRIPTION: White-banded triggerfish */ +/* Haliporoides diomedeae. DESCRIPTION: Chilean knife shrimp */ +/* Macrobrachium aemulum. DESCRIPTION: Noumea river prawn */ +/* Hemichromis fasciatus. DESCRIPTION: Banded jewelfish */ +/* Macrobrachium geron. DESCRIPTION: Greybeard river prawn */ +/* Hipposcarus harid. DESCRIPTION: Candelamoa parrotfish */ +/* Macrobrachium birmanicum. DESCRIPTION: Birma river prawn */ +/* Macrobrachium idae. DESCRIPTION: Orana river prawn */ +/* Hippa pacifica. DESCRIPTION: Pacific mole crab */ +/* Macrobrachium caledonicum. DESCRIPTION: New Caledonia river prawn */ +/* Macrobrachium americanum. DESCRIPTION: Cauque river prawn */ +/* Macrobrachium esculentum. DESCRIPTION: Sweet river prawn */ +/* Heteromycteris japonica. DESCRIPTION: Bamboo sole */ +/* Hetereleotris apora. DESCRIPTION: Poreless goby */ +/* Hippopus porcellanus. DESCRIPTION: China clam */ +/* Macrobrachium choprai. DESCRIPTION: Ganges river prawn */ +/* Hippoglossina stomata. DESCRIPTION: Bigmouth flounder */ +/* Macrobrachium australe. DESCRIPTION: Koua river prawn */ +/* Hemitaeniochromis urotaenia. DESCRIPTION: */ +/* Haliotis corrugata. DESCRIPTION: Pink abalone */ +/* Pterodroma cahow. DESCRIPTION: Bermuda petrel */ +/* Halichoeres leucoxanthus. DESCRIPTION: Canarytop wrasse */ +/* Macrobrachium dayanum. DESCRIPTION: Kaira river prawn */ +/* Hipposcarus longiceps. DESCRIPTION: Pacific longnose parrotfish */ +/* Chilomycterus affinis. DESCRIPTION: Pacific burrfish */ +/* Merluccius polli. DESCRIPTION: Benguela hake */ +/* Merluccius capensis, M.paradoxus. DESCRIPTION: Cape hakes */ +/* Herklotsichthys dispilonotus. DESCRIPTION: Blacksaddle herring */ +/* Merluccius merluccius. DESCRIPTION: European hake */ +/* Heterocarpus ensifer. DESCRIPTION: Armed nylon shrimp */ +/* Herklotsichthys gotoi. DESCRIPTION: Goto's herring */ +/* Chaceon karubar. DESCRIPTION: Indonesian golden crab */ +/* Heterocarpus dorsalis. DESCRIPTION: Madagascar nylon shrimp */ +/* Heterocarpus gibbosus. DESCRIPTION: Humpback nylon shrimp */ +/* Merluccius capensis. DESCRIPTION: Shallow-water Cape hake */ +/* Herklotsichthys lossei. DESCRIPTION: Gulf herring */ +/* Merluccius senegalensis. DESCRIPTION: Senegalese hake */ +/* Merluccius australis. DESCRIPTION: Southern hake */ +/* Merluccius paradoxus. DESCRIPTION: Deep-water Cape hake */ +/* Merluccius hubbsi. DESCRIPTION: Argentine hake */ +/* Heliopora coerulea. DESCRIPTION: Blue coral */ +/* Urophycis chuss. DESCRIPTION: Red hake */ +/* Merluccius bilinearis. DESCRIPTION: Silver hake */ +/* Heterocarpus laevigatus. DESCRIPTION: Smooth nylon shrimp */ +/* Urophycis brasiliensis. DESCRIPTION: Brazilian codling */ +/* Heterocarpoides levicarina. DESCRIPTION: Dorodotes shrimp */ +/* Urophycis tenuis. DESCRIPTION: White hake */ +/* Merluccius spp. DESCRIPTION: Hakes nei */ +/* Heterocarpus hayashii. DESCRIPTION: Japanese nylon shrimp */ +/* Merlucciidae. DESCRIPTION: Merluccid hakes nei */ +/* Halieutichthys aculeatus. DESCRIPTION: Pancake batfish */ +/* Halieutaea brevicauda. DESCRIPTION: Spiny sea bat */ +/* Haemulon carbonarium. DESCRIPTION: Caesar grunt */ +/* Haemulon maculicauda. DESCRIPTION: Spottail grunt */ +/* Haliophis aethiopus. DESCRIPTION: */ +/* Haemulon flaviguttatus. DESCRIPTION: Yellowspotted grunt */ +/* Hoplopagrus guentherii. DESCRIPTION: Mexican barred snapper */ +/* Haemulon melanurum. DESCRIPTION: Cottonwick grunt */ +/* Haemulon plumierii. DESCRIPTION: White grunt */ +/* Chelmon muelleri. DESCRIPTION: Blackfin coralfish */ +/* Holacanthus clarionensis. DESCRIPTION: Clarion angelfish */ +/* Haemulon aurolineatum. DESCRIPTION: Tomtate grunt */ +/* Halieutopsis micropa. DESCRIPTION: */ +/* Haplomacrourus nudirostris. DESCRIPTION: Naked snout rattail */ +/* Haemulon bonariense. DESCRIPTION: Black grunt */ +/* Haemulon parra. DESCRIPTION: Sailor's grunt */ +/* Chlorotocus crassicornis. DESCRIPTION: Green shrimp */ +/* Halicmetus reticulatus. DESCRIPTION: */ +/* Haemulon macrostoma. DESCRIPTION: Spanish grunt */ +/* Haliotis tuberculata. DESCRIPTION: Tuberculate abalone */ +/* Haemulon album. DESCRIPTION: White margate */ +/* Haemulon flavolineatum. DESCRIPTION: French grunt */ +/* Chlorella pyrenoidosa. DESCRIPTION: */ +/* Thelenota anax. DESCRIPTION: Amber fish */ +/* Hoplolatilus chlupatyi. DESCRIPTION: Chameleon sand tilefish */ +/* Himanthalia elongata. DESCRIPTION: Sea thong */ +/* Hemicetopsis candiru. DESCRIPTION: */ +/* Hemiancistrus braueri. DESCRIPTION: */ +/* Trachurus capensis. DESCRIPTION: Cape horse mackerel */ +/* Hampala dispar. DESCRIPTION: */ +/* Hemibarbus labeo. DESCRIPTION: Barbel steed */ +/* Hemitremia flammea. DESCRIPTION: Flame chub */ +/* Trachurus declivis. DESCRIPTION: Greenback horse mackerel */ +/* Halimuraena hexagonata. DESCRIPTION: */ +/* Hemigrammocypris lini. DESCRIPTION: Garnet minnow */ +/* Myripristis murdjan. DESCRIPTION: Pinecone soldierfish */ +/* Hemigrammocapoeta kemali. DESCRIPTION: */ +/* Hampala macrolepidota. DESCRIPTION: Hampala barb */ +/* Trachurus mediterraneus. DESCRIPTION: Mediterranean horse mackerel */ +/* Homodiaetus anisitsi. DESCRIPTION: */ +/* Hemimyzon formosanum. DESCRIPTION: */ +/* Heteromycteris capensis. DESCRIPTION: Cape sole */ +/* Hymenopenaeus aequalis. DESCRIPTION: Veiled shrimp */ +/* Melapedalion breve. DESCRIPTION: */ +/* Halimuraenoides isostigma. DESCRIPTION: */ +/* Hemistichodus lootensi. DESCRIPTION: */ +/* Hemiculter leucisculus. DESCRIPTION: Sharpbelly */ +/* Haemomaster venezuelae. DESCRIPTION: */ +/* Halimeda tuna. DESCRIPTION: Sea cactus */ +/* Heteroschismoides callithrix. DESCRIPTION: Nineside toothshell */ +/* Caranx rhonchus. DESCRIPTION: False scad */ +/* Trachurus trecae. DESCRIPTION: Cunene horse mackerel */ +/* Neoniphon argenteus. DESCRIPTION: Clearfin squirrelfish */ +/* Odontanthias borbonius. DESCRIPTION: Checked swallowtail */ +/* Henicorhynchus caudimaculatus. DESCRIPTION: */ +/* Anisotremus davidsonii. DESCRIPTION: Xantic sargo */ +/* Hemanthias aureorubens. DESCRIPTION: Streamer bass */ +/* Arothron firmamentum. DESCRIPTION: Starry toado */ +/* Achlyopa nigra. DESCRIPTION: Black sole */ +/* Chalinochromis brichardi. DESCRIPTION: */ +/* Anisotremus interruptus. DESCRIPTION: Burrito grunt */ +/* Heminodus japonicus. DESCRIPTION: */ +/* Chelmonops truncatus. DESCRIPTION: Truncate coralfish */ +/* Pharyngochromis darlingi. DESCRIPTION: */ +/* Heniochus acuminatus. DESCRIPTION: Pennant coralfish */ +/* Chanda nama. DESCRIPTION: Elongate glass-perchlet */ +/* Anisotremus dovii. DESCRIPTION: Spotted head sargo */ +/* Hypoplectrus nigricans. DESCRIPTION: Black hamlet */ +/* Chaceon macphersoni. DESCRIPTION: Pink geryon */ +/* Anisotremus virginicus. DESCRIPTION: Porkfish */ +/* Anisotremus scapularis. DESCRIPTION: */ +/* Chelmon rostratus. DESCRIPTION: Copperband butterflyfish */ +/* Anisotremus surinamensis. DESCRIPTION: Black margate */ +/* Nomorhamphus ravnaki. DESCRIPTION: */ +/* Hannia greenwayi. DESCRIPTION: Greenway's grunter */ +/* Chaceon granulatus. DESCRIPTION: Japanese golden crab */ +/* Helcion pellucidus. DESCRIPTION: Velvet helcion */ +/* Henicorhynchus siamensis. DESCRIPTION: Siamese mud carp */ +/* Hoplias aimara. DESCRIPTION: */ +/* Pachymetopon blochii. DESCRIPTION: Hottentot seabream */ +/* Nibea mitsukurii. DESCRIPTION: Honnibe croaker */ +/* Hypsypops rubicundus. DESCRIPTION: Garibaldi damselfish */ +/* Phosichthys argenteus. DESCRIPTION: */ +/* Merluccius albidus. DESCRIPTION: Offshore silver hake */ +/* Chondrostoma genei. DESCRIPTION: */ +/* Ostichthys acanthorhinus. DESCRIPTION: */ +/* Homaloptera bilineata. DESCRIPTION: */ +/* Hoplarchus psittacus. DESCRIPTION: */ +/* Archocentrus centrarchus. DESCRIPTION: Flier cichlid */ +/* Chimaeriformes. DESCRIPTION: Chimaeras, etc. nei */ +/* Trachurus trachurus. DESCRIPTION: Atlantic horse mackerel */ +/* Chondrostoma nasus. DESCRIPTION: Common nase */ +/* Holocentrus ascensionis. DESCRIPTION: Squirrelfish */ +/* Holohalaelurus punctatus. DESCRIPTION: African spotted catshark */ +/* Chaceon australis. DESCRIPTION: Austral golden crab */ +/* Holohalaelurus regani. DESCRIPTION: Izak catshark */ +/* Chondrostoma soetta. DESCRIPTION: */ +/* Pachymetopon aeneum. DESCRIPTION: Blue hottentot */ +/* Coregonus oxyrinchus. DESCRIPTION: Houting */ +/* Achiropsetta slavae. DESCRIPTION: */ +/* Homalopoma sanguineum. DESCRIPTION: Blood-stained turbo */ +/* Chondrostoma toxostoma. DESCRIPTION: */ +/* Chondrostoma polylepis. DESCRIPTION: Iberian nase */ +/* Holothuria fuscopunctata. DESCRIPTION: Elephant trunkfish */ +/* Hemipimelodus bicolor. DESCRIPTION: */ +/* Hemipsilichthys cameroni. DESCRIPTION: */ +/* Acanthopsoides delphax. DESCRIPTION: */ +/* Haploblepharus edwardsii. DESCRIPTION: Puffadder shyshark */ +/* Haploblepharus fuscus. DESCRIPTION: Brown shyshark */ +/* Hypoptopoma guianense. DESCRIPTION: */ +/* Hippocampus hippocampus. DESCRIPTION: Short snouted seahorse */ +/* Hippocampus guttulatus. DESCRIPTION: Long-snouted seahorse */ +/* Hemilepidotus jordani. DESCRIPTION: Yellow Irish lord */ +/* Hoplolatilus starcki. DESCRIPTION: Stark's tilefish */ +/* Haplophryne mollis. DESCRIPTION: */ +/* Heptapterus mustelinus. DESCRIPTION: */ +/* Hypophthalmus edentatus. DESCRIPTION: Highwaterman catfish */ +/* Pristilepis oligolepis. DESCRIPTION: Spinyface soldier */ +/* Haploblepharus pictus. DESCRIPTION: Dark shyshark */ +/* Heterocarpus sibogae. DESCRIPTION: Mino nylon shrimp */ +/* Hoplostethus mediterraneus. DESCRIPTION: Mediterranean slimehead */ +/* Plectrypops lima. DESCRIPTION: Shy soldier */ +/* Helicophagus typus. DESCRIPTION: */ +/* Hoplerythrinus unitaeniatus. DESCRIPTION: Aimara */ +/* Hyperlophus vittatus. DESCRIPTION: Sandy sprat */ +/* Heterocarpus woodmasoni. DESCRIPTION: Indian nylon shrimp */ +/* Psettodidae. DESCRIPTION: Spiny turbots nei */ +/* Hippocampus fuscus. DESCRIPTION: Sea pony */ +/* Hoplomyzon atrizona. DESCRIPTION: */ +/* Hypothalassia armata. DESCRIPTION: Champagne crab */ +/* Histioteuthis bonnellii. DESCRIPTION: Umbrella squid */ +/* Histioteuthis corona. DESCRIPTION: */ +/* Hypsagonus quadricornis. DESCRIPTION: Fourhorn poacher */ +/* Hemisquilla ensigera. DESCRIPTION: Keeled witch mantis */ +/* Heterocarpus affinis. DESCRIPTION: Three-spined nylon shrimp */ +/* Histioteuthis elongata. DESCRIPTION: Elongate jewell squid */ +/* Harpiosquilla harpax. DESCRIPTION: Robber harpiosquillid mantis s */ +/* Hyaloteuthis pelagica. DESCRIPTION: Glassy flying squid */ +/* Thais melones. DESCRIPTION: Gourd rock shell */ +/* Thais calloensis. DESCRIPTION: Callao rock shell */ +/* Histioteuthis dofleini. DESCRIPTION: Flowervase jewell squid */ +/* Thais haemastoma. DESCRIPTION: Two-row rock shell */ +/* Thracia pubescens. DESCRIPTION: Pubescent thracia */ +/* Heterocarpus hostilis. DESCRIPTION: Panama nylon shrimp */ +/* Chaceon poupini. DESCRIPTION: Polynesian golden crab */ +/* Halomitra pileus. DESCRIPTION: Bowl coral */ +/* Harpiosquilla raphidea. DESCRIPTION: Giant harpiosquillid mantis sh */ +/* Histioteuthis reversa. DESCRIPTION: Reverse jewell squid */ +/* Antipathes spp. DESCRIPTION: */ +/* Macrobrachium equidens. DESCRIPTION: Rough river prawn */ +/* Heterocarpus parvispina. DESCRIPTION: Short-spined nylon shrimp */ +/* Chlorella vulgaris. DESCRIPTION: Unicell. Chlorella green alga */ +/* Homaloptera spp. DESCRIPTION: */ +/* Thracia papyracea. DESCRIPTION: Paper thracia */ +/* Hydrozoa. DESCRIPTION: Hydrozoans */ +/* Horadandia atukorali. DESCRIPTION: */ +/* Chromidotilapia batesii. DESCRIPTION: */ +/* Chromis intercrusma. DESCRIPTION: Peruvian chromis */ +/* Lagenorhynchus cruciger. DESCRIPTION: Hourglass dolphin */ +/* Hyperprosopon anale. DESCRIPTION: Spotfin surfperch */ +/* Chaetodipterus faber. DESCRIPTION: Atlantic spadefish */ +/* Rhynchorhamphus georgii. DESCRIPTION: Long billed halfbeak */ +/* Hara hara. DESCRIPTION: */ +/* Heterochromis multidens. DESCRIPTION: */ +/* Chromis punctipinnis. DESCRIPTION: Blacksmith */ +/* Chrysiptera biocellata. DESCRIPTION: Twinspot damselfish */ +/* Chaetodipterus lippei. DESCRIPTION: West African spadefish */ +/* Threpterius maculosus. DESCRIPTION: Silver spot */ +/* Phractura ansorgii. DESCRIPTION: */ +/* Hemerocoetes artus. DESCRIPTION: */ +/* Heros appendiculatus. DESCRIPTION: */ +/* Harpa articularis. DESCRIPTION: Articulate harp */ +/* Chrysochir aureus. DESCRIPTION: Reeve's croaker */ +/* Arrhamphus sclerolepis. DESCRIPTION: */ +/* Herotilapia multispinosa. DESCRIPTION: Rainbow cichlid */ +/* Heraldia nocturna. DESCRIPTION: */ +/* Chiramenu fluviatilis. DESCRIPTION: */ +/* Haliotis fulgens. DESCRIPTION: Southern green abalone */ +/* Harpa harpa. DESCRIPTION: True harp */ +/* Haplochromis nyererei. DESCRIPTION: */ +/* Hermosilla azurea. DESCRIPTION: Zebra- perch sea chub */ +/* Hassar affinis. DESCRIPTION: */ +/* Chasmodes bosquianus. DESCRIPTION: Striped blenny */ +/* Limulus polyphemus. DESCRIPTION: Horseshoe crab */ +/* Chasmichthys dolichognathus. DESCRIPTION: */ +/* Champsochromis caeruleus. DESCRIPTION: */ +/* Hypostomus affinis. DESCRIPTION: */ +/* Hypsophrys nicaraguensis. DESCRIPTION: Moga */ +/* Hyphessobrycon herbertaxelrodi. DESCRIPTION: Black neon tetra */ +/* Histiogamphelus cristatus. DESCRIPTION: Macleay's crested pipefish */ +/* Chrysiptera caeruleolineata. DESCRIPTION: Blueline demoiselle */ +/* Hysterocarpus traski. DESCRIPTION: Russian river tule perch */ +/* Hypostomus plecostomus. DESCRIPTION: Suckermouth catfish */ +/* Hasemania melanura. DESCRIPTION: Copper tetra */ +/* Hypselecara coryphaenoides. DESCRIPTION: */ +/* Chloroscombrus orqueta. DESCRIPTION: Pacific bumper */ +/* Holoshesthes pequira. DESCRIPTION: */ +/* Heptacarpus pandaloides. DESCRIPTION: Tsuno shrimp */ +/* Hoplosternum littorale. DESCRIPTION: Atipa */ +/* Chromis analis. DESCRIPTION: Yellow chromis */ +/* Hoplosebastes armatus. DESCRIPTION: */ +/* Sargocentron caudimaculatum. DESCRIPTION: Silverspot squirrelfish */ +/* Thais aculeata. DESCRIPTION: Aculeate rock shell */ +/* Haliotis sorenseni. DESCRIPTION: White abalone */ +/* Hyphessobrycon axelrodi. DESCRIPTION: Calypso tetra */ +/* Hesperoleucus symmetricus. DESCRIPTION: California roach */ +/* Thais deltoidea. DESCRIPTION: Deltoid rock shell */ +/* Heterandria attenuata. DESCRIPTION: */ +/* Heptacarpus brevirostris. DESCRIPTION: Shortspine shrimp */ +/* Harttiella crassicauda. DESCRIPTION: */ +/* Hoplotilapia retrodens. DESCRIPTION: */ +/* Chaetodon aureofasciatus. DESCRIPTION: Golden butterflyfish */ +/* Heteropneustes fossilis. DESCRIPTION: Stinging catfish */ +/* Harttia gracilis. DESCRIPTION: */ +/* Chaetodon hoefleri. DESCRIPTION: Four-banded butterflyfish */ +/* Chaetodon humeralis. DESCRIPTION: Threebanded butterflyfish */ +/* Hemitaurichthys polylepis. DESCRIPTION: Pyramid butterflyfish */ +/* Tondanichthys kottelati. DESCRIPTION: */ +/* Phtheirichthys lineatus. DESCRIPTION: Slender suckerfish */ +/* Hatcheria macraei. DESCRIPTION: */ +/* Heterotis niloticus. DESCRIPTION: African bonytongue */ +/* Heterophotus ophistoma. DESCRIPTION: */ +/* Chaetodon capistratus. DESCRIPTION: Foureye butterflyfish */ +/* Heterocarpus tricarinatus. DESCRIPTION: Scarred nylon shrimp */ +/* Parapristipoma trilineatum. DESCRIPTION: */ +/* Chaetodon striatus. DESCRIPTION: Banded butterflyfish */ +/* Heteropriacanthus cruentatus. DESCRIPTION: Glasseye */ +/* Chetia flaviventris. DESCRIPTION: Canary kurper */ +/* Haliotis assimilis. DESCRIPTION: Threaded abalone */ +/* Chaeturichthys hexanema. DESCRIPTION: */ +/* Hito taytayensis. DESCRIPTION: */ +/* Chaetodipterus zonatus. DESCRIPTION: Pacific spadefish */ +/* Hypsurus caryi. DESCRIPTION: Rainbow seaperch */ +/* Heteroplopomus barbatus. DESCRIPTION: */ +/* Hucho hucho. DESCRIPTION: Huchen */ +/* Hymenopenaeus doris. DESCRIPTION: Doris veiled shrimp */ +/* Heteroclinus roseus. DESCRIPTION: */ +/* Hirculops cornifer. DESCRIPTION: Highbrow rockskipper */ +/* Heptacarpus geniculatus. DESCRIPTION: Flexed shrimp */ +/* Huso huso. DESCRIPTION: Beluga */ +/* Hucho ishikawae. DESCRIPTION: */ +/* Heteristius cinctus. DESCRIPTION: */ +/* Macrobrachium acanthurus. DESCRIPTION: Cinnamon river prawn */ +/* Phucocoetes latitans. DESCRIPTION: */ +/* Pleurogrammus monopterygius. DESCRIPTION: Atka mackerel */ +/* Hypoplectrus unicolor. DESCRIPTION: Butter hamlet */ +/* Ephippus orbis. DESCRIPTION: Orbfish */ +/* Hucho perryi. DESCRIPTION: Japanese huchen */ +/* Hiatula chinensis. DESCRIPTION: Chinese sanguin */ +/* Chromis crusma. DESCRIPTION: Valparaiso chromis */ +/* Lutjanus argentiventris. DESCRIPTION: Yellow snapper */ +/* Hubbsina turneri. DESCRIPTION: */ +/* Cheilinus trilobatus. DESCRIPTION: Tripletail wrasse */ +/* Heterocarpus vicarius. DESCRIPTION: Northern nylon shrimp */ +/* Megaptera novaeangliae. DESCRIPTION: Humpback whale */ +/* Parachirus xenicus. DESCRIPTION: Dwarf sole */ +/* Hepatus pudibundus. DESCRIPTION: Flecked box crab */ +/* Thais tuberosa. DESCRIPTION: Tuberose rock shell */ +/* Hypostomus ventromaculatus. DESCRIPTION: Wara wara */ +/* Hypostomus watwata. DESCRIPTION: Armored catfish */ +/* Harpovoluta charcoti. DESCRIPTION: Charcot's volute */ +/* Cephalorhynchus heavisidii. DESCRIPTION: Heaviside's dolphin */ +/* Podiceps grisegena. DESCRIPTION: Red-necked grebe */ +/* Halieutopsis galatea. DESCRIPTION: */ +/* Hippocampus kuda. DESCRIPTION: Spotted seahorse */ +/* Hyporhamphus intermedius. DESCRIPTION: Asian pencil halfbeak */ +/* Hypomesus nipponensis. DESCRIPTION: Japanese smelt */ +/* Hippocampus trimaculatus. DESCRIPTION: Longnose seahorse */ +/* Hyalinoecia tubicola. DESCRIPTION: Quill worm */ +/* Cheilinus undulatus. DESCRIPTION: Humphead wrasse */ +/* Hippocampus histrix. DESCRIPTION: Thorny seahorse */ +/* Merluccius patagonicus. DESCRIPTION: Patagonian hake */ +/* Heterocarpus grimaldii. DESCRIPTION: */ +/* Hyporhamphus rosae. DESCRIPTION: California halfbeak */ +/* Sargocentron spiniferum. DESCRIPTION: Sabre squirrelfish */ +/* Schuettea scalaripinnis. DESCRIPTION: Eastern pomfred */ +/* Schedophilus medusophagus. DESCRIPTION: Cornish blackfish */ +/* Harvella vitrea. DESCRIPTION: Glassy mactra */ +/* Hoplias spp. DESCRIPTION: */ +/* Hippospongia spp. DESCRIPTION: */ +/* Chanodichthys erythropterus. DESCRIPTION: Predatory carp */ +/* Hippasteria phrygiana. DESCRIPTION: Trojan star */ +/* Haliaeetus albicilla. DESCRIPTION: White-tailed sea-eagle */ +/* Howella brodiei. DESCRIPTION: Pelagic basslet */ +/* Hoplias lacerdae. DESCRIPTION: */ +/* Sargocentron diadema. DESCRIPTION: Crown squirrelfish */ +/* Conorhynchos conirostris. DESCRIPTION: */ +/* Hippocampus comes. DESCRIPTION: Tiger tail seahorse */ +/* Sargocentron rubrum. DESCRIPTION: Redcoat */ +/* Ostichthys japonicus. DESCRIPTION: Japanese soldierfish */ +/* Ostichthys kaianus. DESCRIPTION: Kai soldierfish */ +/* Hoplias macrophthalmus. DESCRIPTION: Giant trahira */ +/* Hoplias microlepis. DESCRIPTION: */ +/* Blue-dashed rockskipper. DESCRIPTION: */ +/* Homalaspis plana. DESCRIPTION: Giant stone crab */ +/* Chanodichthys mongolicus. DESCRIPTION: Mongolian redfin */ +/* Chlamydoselachus africana. DESCRIPTION: African frilled shark */ +/* Pterodroma hasitata. DESCRIPTION: Black-capped petrel */ +/* Cheilinus lunulatus. DESCRIPTION: Broomtail wrasse */ +/* Hoplias malabaricus. DESCRIPTION: Trahira */ +/* Hydrolycus scomberoides. DESCRIPTION: Payara */ +/* Cheilodipterus arabicus. DESCRIPTION: Tiger cardinal */ +/* Haemulon spp. DESCRIPTION: */ +/* Cheilodipterus macrodon. DESCRIPTION: Large toothed cardinalfish */ +/* Cheilodipterus novemstriatus. DESCRIPTION: Twospot cardinalfish */ +/* Hemigrammocharax angolensis. DESCRIPTION: */ +/* Hemicaranx bicolor. DESCRIPTION: Bicolor jack */ +/* Chlamydoselachus anguineus. DESCRIPTION: Frilled shark */ +/* Hemidonax donaciformis. DESCRIPTION: Common hemidonax */ +/* Hypsopanchax catenatus. DESCRIPTION: */ +/* Heterodonax pacificus. DESCRIPTION: Western small false donax */ +/* Hispidoberyx ambagiosus. DESCRIPTION: */ +/* Hexaplex cichoreum. DESCRIPTION: Endive murex */ +/* Haplotaxodon microlepis. DESCRIPTION: */ +/* Hexaplex ambiguus. DESCRIPTION: Ambiguous murex */ +/* Hexaplex princeps. DESCRIPTION: Prince murex */ +/* Hemicaranx leucurus. DESCRIPTION: Yellowfin jack */ +/* Hemicaranx amblyrhynchus. DESCRIPTION: Bluntnose jack */ +/* Hexanchus nakamurai. DESCRIPTION: Bigeyed sixgill shark */ +/* Hexagrammos otakii. DESCRIPTION: */ +/* Hypophthalmichthys spp. DESCRIPTION: Silver, bighead carps nei */ +/* Hexagrammos decagrammus. DESCRIPTION: Kelp greenling */ +/* Hexaplex angularis. DESCRIPTION: Angular murex */ +/* Hylopanchax stictopleuron. DESCRIPTION: */ +/* Heptranchias perlo. DESCRIPTION: Sharpnose sevengill shark */ +/* Hexaplex nigritus. DESCRIPTION: Black murex */ +/* Hoplosternum spp. DESCRIPTION: */ +/* Hexanchiformes. DESCRIPTION: Frilled and cow sharks */ +/* Hexaplex radiax. DESCRIPTION: Radish murex */ +/* Hexactinellida. DESCRIPTION: Glass sponges */ +/* Hemicaranx zelotes. DESCRIPTION: Blackfin jack */ +/* Chanodichthys dabryi. DESCRIPTION: Humpback */ +/* Hygophum benoiti. DESCRIPTION: Benoit's lanternfish */ +/* Hypselobarbus curmuca. DESCRIPTION: */ +/* Hydrolagus spp. DESCRIPTION: Ratfishes nei */ +/* Hypergastromyzon eubranchus. DESCRIPTION: */ +/* Haliichthys taeniophorus. DESCRIPTION: Ribboned pipefish */ +/* Hypseleotris agilis. DESCRIPTION: */ +/* Hypselognathus horridus. DESCRIPTION: Prickly pipefish */ +/* Hyporhamphus ihi. DESCRIPTION: */ +/* Hypseleotris ejuncida. DESCRIPTION: Slender gudgeon */ +/* Hypopterus macropterus. DESCRIPTION: */ +/* Hypsibarbus lagleri. DESCRIPTION: */ +/* Calophysus macropterus. DESCRIPTION: Zamurito */ +/* Hypentelium nigricans. DESCRIPTION: Northern hog sucker */ +/* Hypoatherina barnesi. DESCRIPTION: Barnes' silverside */ +/* Hypleurochilus aequipinnis. DESCRIPTION: Oyster blenny */ +/* Hypopomus artedi. DESCRIPTION: */ +/* Hymenocephalus italicus. DESCRIPTION: Glasshead grenadier */ +/* Hydrolycus pectoralis. DESCRIPTION: */ +/* Hypopygus lepturus. DESCRIPTION: */ +/* Hypsoblennius brevipinnis. DESCRIPTION: Barnaclebill blenny */ +/* Hyperoglyphe perciformis. DESCRIPTION: Barrelfish */ +/* Hypogymnogobius xanthozona. DESCRIPTION: Bumblebee fish */ +/* Heteroscymnoides marleyi. DESCRIPTION: Longnose pygmy shark */ +/* Halocynthia roretzi. DESCRIPTION: Red oyas */ +/* Cheiraster hirsutus. DESCRIPTION: */ +/* Cheilodipterus persicus. DESCRIPTION: Persian cardinalfish */ +/* Hyriopsis cumingii. DESCRIPTION: Triangle sail mussel */ +/* Zenarchopterus dispar. DESCRIPTION: */ +/* Hozukius emblemarius. DESCRIPTION: */ +/* Hippocampus algiricus. DESCRIPTION: West African seahorse */ +/* Chromis limbata. DESCRIPTION: Azores chromis */ +/* Hymenopenaeus spp. DESCRIPTION: Hymenopenaeus shrimp nei */ +/* Hazeus otakii. DESCRIPTION: */ +/* Haematococcus pluvialis. DESCRIPTION: */ +/* Heteroteuthis serventyi. DESCRIPTION: */ +/* Heterocucumis godeffroyi. DESCRIPTION: */ +/* Hucho taimen. DESCRIPTION: Taimen */ +/* Hypleurochilus langi. DESCRIPTION: */ +/* Heteroteuthis weberi. DESCRIPTION: Stumpy bobtail squid */ +/* Hexaplex spp. DESCRIPTION: */ +/* Hypostomus spp. DESCRIPTION: */ +/* Hemiodus spp. DESCRIPTION: */ +/* Sepia omani. DESCRIPTION: Oman cuttlefish */ +/* Ameiurus brunneus. DESCRIPTION: Snail bullhead */ +/* Pitar pellucidus. DESCRIPTION: Pellucid pitar venus */ +/* Sepia pardex. DESCRIPTION: */ +/* Sepia recurvirostra. DESCRIPTION: Curvespine cuttlefish */ +/* Salarias fasciatus. DESCRIPTION: Jewelled blenny */ +/* Cilus gilberti. DESCRIPTION: Corvina drum */ +/* Sepia pharaonis. DESCRIPTION: Pharaoh cuttlefish */ +/* Sepia tokioensis. DESCRIPTION: */ +/* Metasepia tullbergi. DESCRIPTION: Paintpot cuttlefish */ +/* Pinna bicolor. DESCRIPTION: Bicolor pen shell */ +/* Sepia longipes. DESCRIPTION: Longarm cuttlefish */ +/* Sepia mestus. DESCRIPTION: Reaper cuttlefish */ +/* Sepia trygonina. DESCRIPTION: Trident cuttlefish */ +/* Sepia lorigera. DESCRIPTION: Spider cuttlefish */ +/* Ameiurus platycephalus. DESCRIPTION: Flat bullhead */ +/* Sepia opipara. DESCRIPTION: Magnificent cuttlefish */ +/* Sepia orbignyana. DESCRIPTION: Pink cuttlefish */ +/* Ameiurus serracanthus. DESCRIPTION: Spotted bullhead */ +/* Sepia peterseni. DESCRIPTION: */ +/* Salaria basiliscus. DESCRIPTION: */ +/* Sepia savignyi. DESCRIPTION: Broadback cuttlefish */ +/* Hygophum reinhardtii. DESCRIPTION: Reinhardt */ +/* ’s lanternfish */ +/* Sepia spp. DESCRIPTION: Cuttlefishes nei */ +/* Sciaena bathytatos. DESCRIPTION: Deep-water drum */ +/* Metasepia pfefferi. DESCRIPTION: Flamboyant cuttlefish */ +/* Ibacus alticrenatus. DESCRIPTION: Velvet fan lobster */ +/* Ibacus brevipes. DESCRIPTION: Serrate fan lobster */ +/* Ibacus ciliatus. DESCRIPTION: Japanese fan lobster */ +/* Hygophum taaningi. DESCRIPTION: T */ +/* åning’s lanternfish */ +/* Ibacus peronii. DESCRIPTION: Butterfly fan lobster */ +/* Tibia fusus. DESCRIPTION: Shinbone tibia */ +/* Lesueurigobius koumansi. DESCRIPTION: */ +/* Parribacus holthuisi. DESCRIPTION: Red-spotted mitten lobster */ +/* Icelus bicornis. DESCRIPTION: Twohorn sculpin */ +/* Parribacus japonicus. DESCRIPTION: Japanese mitten lobster */ +/* Lepidotrigla cadmani. DESCRIPTION: Scalebreast gurnard */ +/* Parribacus perlatus. DESCRIPTION: Easter Island mitten lobster */ +/* Chaetodon speculum. DESCRIPTION: Mirror butterflyfish */ +/* Ibacus novemdentatus. DESCRIPTION: Smooth fan lobster */ +/* Chromis cadenati. DESCRIPTION: Cadenat's chromis */ +/* Iberocypris palaciosi. DESCRIPTION: */ +/* Ibacus pubescens. DESCRIPTION: Hairy fan lobster */ +/* Ibacus brucei. DESCRIPTION: Glabrous fan lobster */ +/* Parribacus scarlatinus. DESCRIPTION: Marbled mitten lobster */ +/* Chaetodon trifascialis. DESCRIPTION: Chevron butterflyfish */ +/* Icelinus burchami. DESCRIPTION: Dusky sculpin */ +/* Chromis margaritifer. DESCRIPTION: Bicolor chromis */ +/* Hemigymnus melapterus. DESCRIPTION: Blackeye thicklip */ +/* Thais spp. DESCRIPTION: */ +/* Pictiblennius yatabei. DESCRIPTION: */ +/* Bathybates minor. DESCRIPTION: */ +/* Icichthys australis. DESCRIPTION: Southern driftfish */ +/* Ictalurus balsanus. DESCRIPTION: */ +/* Liocarcinus corrugatus. DESCRIPTION: Wrinkled swimcrab */ +/* Ictalurus dugesii. DESCRIPTION: */ +/* Mordacia lapicida. DESCRIPTION: Chilean lamprey */ +/* Mordacia praecox. DESCRIPTION: */ +/* Iracundus signifer. DESCRIPTION: Decoy scorpionfish */ +/* Ichthyoelephas humeralis. DESCRIPTION: */ +/* Heteromycteris proboscideus. DESCRIPTION: True sole */ +/* Eudontomyzon danfordi. DESCRIPTION: Carpathian lamprey */ +/* Cryodraco atkinsoni. DESCRIPTION: */ +/* Ictalurus lupus. DESCRIPTION: Headwater catfish */ +/* Ictalurus mexicanus. DESCRIPTION: */ +/* Icosteus aenigmaticus. DESCRIPTION: Ragfish */ +/* Ictalurus ochoterenai. DESCRIPTION: */ +/* Ictalurus pricei. DESCRIPTION: Yaqui catfish */ +/* Astronesthes caulophorus. DESCRIPTION: */ +/* Liocranchia reinhardti. DESCRIPTION: */ +/* Diceratias bispinosus. DESCRIPTION: */ +/* Simochromis babaulti. DESCRIPTION: */ +/* Ictalurus australis. DESCRIPTION: */ +/* Pictilabrus laticlavius. DESCRIPTION: */ +/* Astronesthes macropogon. DESCRIPTION: */ +/* Channichthyidae. DESCRIPTION: Crocodile icefishes nei */ +/* Astronesthes micropogon. DESCRIPTION: */ +/* Lethrinus crocineus. DESCRIPTION: Yellowtail emperor */ +/* Idiolophorhynchus andriashevi. DESCRIPTION: Pineapple rattail */ +/* Orcaella heinsohni. DESCRIPTION: Australian snubfin dolphin */ +/* Iridaea cordata. DESCRIPTION: Iridea */ +/* Astronesthes richardsoni. DESCRIPTION: Richardson's snaggletooth */ +/* Ichthyomyzon bdellium. DESCRIPTION: Ohio lamprey */ +/* Idiacanthus fasciola. DESCRIPTION: */ +/* Ichthyomyzon castaneus. DESCRIPTION: Chestnut lamprey */ +/* Ichthyomyzon fossor. DESCRIPTION: Northern brook lamprey */ +/* Ichthyomyzon gagei. DESCRIPTION: Southern brook lamprey */ +/* Ichthyomyzon greeleyi. DESCRIPTION: Mountain brook lamprey */ +/* Lampetra aepyptera. DESCRIPTION: Least brook lamprey */ +/* Lampetra ayresii. DESCRIPTION: Western American river lamprey */ +/* Pinctada maculata. DESCRIPTION: Spotted pearl oyster */ +/* Lampetra planeri. DESCRIPTION: European brook lamprey */ +/* Lampetra richardsoni. DESCRIPTION: Western brook lamprey */ +/* Iodotropheus sprengerae. DESCRIPTION: Lavender mbuna */ +/* Lethenteron kessleri. DESCRIPTION: Siberian lamprey */ +/* Pinctada radiata. DESCRIPTION: Rayed pearl oyster */ +/* Lethenteron ninae. DESCRIPTION: Western Transcaucasian lamprey */ +/* Lethenteron reissneri. DESCRIPTION: Far Eastern brook lamprey */ +/* Lethenteron zanandreai. DESCRIPTION: Lombardy brook lamprey */ +/* Lethrinus genivittatus. DESCRIPTION: Longspine emperor */ +/* Pinna spp. DESCRIPTION: */ +/* Liza alata. DESCRIPTION: Diamond mullet */ +/* Lophiodes mutilus. DESCRIPTION: Smooth angler */ +/* Emmelichthyops atlanticus. DESCRIPTION: Bonnetmouth */ +/* Sepia bandensis. DESCRIPTION: Stumpy cuttlefish */ +/* Amblygobius nocturnus. DESCRIPTION: Nocturn goby */ +/* Amphiprion sebae. DESCRIPTION: Sebae anemonefish */ +/* Lepidotrigla bispinosa. DESCRIPTION: Bullhorn gurnard */ +/* Lepidotrigla faurei. DESCRIPTION: Scalybreast gurnard */ +/* Chelon melinopterus. DESCRIPTION: Otomebora mullet */ +/* Paramugil parmatus. DESCRIPTION: Broad-mouthed mullet */ +/* Paragaleus randalli. DESCRIPTION: Slender weasel shark */ +/* Sepiella japonica. DESCRIPTION: Japanese spineless cuttlefish */ +/* Parioglossus raoi. DESCRIPTION: Rao's hover goby */ +/* Rhinecanthus assasi. DESCRIPTION: Picasso triggerfish */ +/* Saurida gracilis. DESCRIPTION: Gracile lizardfish */ +/* Saurida longimanus. DESCRIPTION: Longfin lizardfish */ +/* Sepiella ornata. DESCRIPTION: Ornate cuttlefish */ +/* Saurida nebulosa. DESCRIPTION: Clouded lizardfish */ +/* Cheilodactylus fasciatus. DESCRIPTION: Redfingers */ +/* Glyphocrangon dentata. DESCRIPTION: */ +/* Platax pinnatus. DESCRIPTION: Dusky batfish */ +/* Plagiotremus townsendi. DESCRIPTION: Townsend's fangblenny */ +/* Sepia vermiculata. DESCRIPTION: Patchwork cuttlefish */ +/* Plectorhinchus gibbosus. DESCRIPTION: Harry hotlips */ +/* Sepiella spp. DESCRIPTION: Sepiella cuttlefishes nei */ +/* Plectorhinchus lineatus. DESCRIPTION: Yellowbanded sweetlips */ +/* Plicofollis tenuispinis. DESCRIPTION: Thinspine sea catfish */ +/* Stiphodon allen. DESCRIPTION: */ +/* Iphigenia brasiliana. DESCRIPTION: Giant false donax */ +/* Sargocentron violaceum. DESCRIPTION: Violet squirrelfish */ +/* Iphigenia delesserti. DESCRIPTION: Delessert's false donax */ +/* Caesio teres. DESCRIPTION: Yellow and blueback fusilier */ +/* Iso flosmaris. DESCRIPTION: */ +/* Nemateleotris magnifica. DESCRIPTION: Fire goby */ +/* Iphigenia rostrata. DESCRIPTION: Rostrate false donax */ +/* Iphigenia altior. DESCRIPTION: Tall false donax */ +/* Iphigenia laevigata. DESCRIPTION: Smooth false donax */ +/* Iphigenia spp. DESCRIPTION: */ +/* Platymaia turbynei. DESCRIPTION: */ +/* Siganus argenteus. DESCRIPTION: Streamlined spinefoot */ +/* Signigobius biocellatus. DESCRIPTION: Twinspot goby */ +/* Siganus punctatus. DESCRIPTION: Goldspotted spinefoot */ +/* Siganus doliatus. DESCRIPTION: Barred spinefoot */ +/* Siganus puellus. DESCRIPTION: Masked spinefoot */ +/* Siganus fuscescens. DESCRIPTION: Mottled spinefoot */ +/* Siganus magnificus. DESCRIPTION: Magnificent rabbitfish */ +/* Isognomon ephippium. DESCRIPTION: Saddle tree oyster */ +/* Siganus lineatus. DESCRIPTION: Golden-lined spinefoot */ +/* Inegocia japonica. DESCRIPTION: Japanese flathead */ +/* Siganus labyrinthodes. DESCRIPTION: Labyrinth spinefoot */ +/* Psilogobius mainlandi. DESCRIPTION: */ +/* Siganus niger. DESCRIPTION: Black foxface */ +/* Stigmatogobius borneensis. DESCRIPTION: */ +/* Siganus puelloides. DESCRIPTION: Blackeye rabbitfish */ +/* Isognomon isognomum. DESCRIPTION: Wader tree oyster */ +/* Siganus corallinus. DESCRIPTION: Blue-spotted spinefoot */ +/* Iguanodectes spilurus. DESCRIPTION: */ +/* Siganus punctatissimus. DESCRIPTION: Peppered spinefoot */ +/* Siganus luridus. DESCRIPTION: Dusky spinefoot */ +/* Siganus javus. DESCRIPTION: Streaked spinefoot */ +/* Cichla spp. DESCRIPTION: */ +/* Caesio xanthonota. DESCRIPTION: Yellowback fusilier */ +/* Ichthyborus besse. DESCRIPTION: */ +/* Cichlasoma octofasciatum. DESCRIPTION: Jack Dempsey */ +/* Silhouettea dotui. DESCRIPTION: */ +/* Cichlasoma beani. DESCRIPTION: Green guapote */ +/* Cichlasoma facetum. DESCRIPTION: Chameleon cichlid */ +/* Diaphus knappi. DESCRIPTION: */ +/* Iniistius bimaculatus. DESCRIPTION: Two-spot razorfish */ +/* Cichlasoma bimaculatum. DESCRIPTION: Black acara */ +/* Iniistius pentadactylus. DESCRIPTION: Fivefinger wrasse */ +/* Iheringichthys labrosus. DESCRIPTION: */ +/* Cichlasoma nigrofasciatum. DESCRIPTION: Convict cichlid */ +/* Ichthyococcus ovatus. DESCRIPTION: */ +/* Callogobius bifasciatus. DESCRIPTION: Doublebar goby */ +/* Callogobius plumatus. DESCRIPTION: Feather goby */ +/* Ischadium recurvum. DESCRIPTION: Hooked mussel */ +/* Cichlasoma istlanum. DESCRIPTION: */ +/* Cichla temensis. DESCRIPTION: Speckled pavon */ +/* Cheimarrichthys fosteri. DESCRIPTION: Torrent fish */ +/* Chaetodon spp. DESCRIPTION: Butterflyfishes nei */ +/* Cichlasoma cyanoguttatum. DESCRIPTION: Rio Grande cichlid */ +/* Chromis flavaxilla. DESCRIPTION: Arabian chromis */ +/* Microichthys coccoi. DESCRIPTION: */ +/* Chromis weberi. DESCRIPTION: Weber's chromis */ +/* Chromis xanthopterygia. DESCRIPTION: Yellowfin chromis */ +/* Chaunax pictus. DESCRIPTION: Pink frogmouth */ +/* Hinia incrassata. DESCRIPTION: Thickened nassa */ +/* Hinia limata. DESCRIPTION: Filed nassa */ +/* Sepiolina nipponensis. DESCRIPTION: Japanese bobtail squid */ +/* Hinia reticulata. DESCRIPTION: Netted nassa */ +/* Sillago arabica. DESCRIPTION: Arabian sillago */ +/* Sillago attenuata. DESCRIPTION: Slender sillago */ +/* Sillago chondropus. DESCRIPTION: Clubfoot sillago */ +/* Inermia vittata. DESCRIPTION: Boga */ +/* Cephalopholis spp. DESCRIPTION: */ +/* Plectorhinchus chubbi. DESCRIPTION: Dusky rubberlip */ +/* Entosphenus folletti. DESCRIPTION: Northern California lamprey */ +/* Entosphenus hubbsi. DESCRIPTION: Kern brook lamprey */ +/* Entosphenus lethophagus. DESCRIPTION: Pit */ +/* –Klamath brook lamprey */ +/* Isbrueckerichthys alipionis. DESCRIPTION: */ +/* Ischnochiton boogii. DESCRIPTION: Atlantic rose chiton */ +/* Iksookimia choii. DESCRIPTION: Choi's spiny loach */ +/* Entosphenus macrostomus. DESCRIPTION: Vancouver lamprey */ +/* Entosphenus minimus. DESCRIPTION: Miller Lake lamprey */ +/* Entosphenus similis. DESCRIPTION: Klamath lamprey */ +/* Eudontomyzon graecus. DESCRIPTION: */ +/* Pinctada chemnitzii. DESCRIPTION: Tiled pearl oyster */ +/* Pinctada imbricata. DESCRIPTION: Atlantic pearl oyster */ +/* Eudontomyzon hellenicus. DESCRIPTION: Greek brook lamprey */ +/* Lioconcha castrensis. DESCRIPTION: Camp pitar venus */ +/* Eudontomyzon morii. DESCRIPTION: Korean lamprey */ +/* Pinctada mazatlanica. DESCRIPTION: Mazatlan pearl oyster */ +/* Pinctada anomioides. DESCRIPTION: Jingle pearl oyster */ +/* Lioconcha ornata. DESCRIPTION: Ornate pitar venus */ +/* Pinctada capensis. DESCRIPTION: Cape pearl-oyster */ +/* Lampetra lanceolata. DESCRIPTION: Turkish brook lamprey */ +/* Lampetra pacifica. DESCRIPTION: Pacific brook lamprey */ +/* Pinctada sugillata. DESCRIPTION: Fringed pearl oyster */ +/* Lethenteron alaskense. DESCRIPTION: Alaskan brook lamprey */ +/* Lethenteron appendix. DESCRIPTION: American brook lamprey */ +/* Tetrapleurodon geminis. DESCRIPTION: Jacona lamprey */ +/* Tetrapleurodon spadiceus. DESCRIPTION: Chapala lamprey */ +/* Muraenesocidae. DESCRIPTION: */ +/* Idiastion kyphos. DESCRIPTION: */ +/* Crossocheilus latius. DESCRIPTION: */ +/* Iluocoetes fimbriatus. DESCRIPTION: */ +/* Papillogobius melanobranchus. DESCRIPTION: Blackthroat goby */ +/* Isorineloricaria festae. DESCRIPTION: Zucchini catfish */ +/* Iniistius pavo. DESCRIPTION: Peacock wrasse */ +/* Ilisha africana. DESCRIPTION: West African ilisha */ +/* Psilotris alepis. DESCRIPTION: */ +/* Ilisha sirishai. DESCRIPTION: Lobejaw ilisha */ +/* Illex spp. DESCRIPTION: Shortfin squids nei */ +/* Sillago maculata. DESCRIPTION: Trumpeter sillago */ +/* Cheilio inermis. DESCRIPTION: Cigar wrasse */ +/* Ilisha compressa. DESCRIPTION: */ +/* Parailia pellucida. DESCRIPTION: Glass schilbid */ +/* Sillago flindersi. DESCRIPTION: Flinders' sillago */ +/* Sepiella inermis. DESCRIPTION: Spineless cuttlefish */ +/* Sillago sihama. DESCRIPTION: Silver sillago */ +/* Sillago spp. DESCRIPTION: */ +/* Achiroides leucorhynchos. DESCRIPTION: */ +/* Isognomon alatus. DESCRIPTION: Flat tree oyster */ +/* Ariomma bondi. DESCRIPTION: Silver-rag driftfish */ +/* Limnichthys donaldsoni. DESCRIPTION: */ +/* Achiroides melanorhynchus. DESCRIPTION: */ +/* Lima lima. DESCRIPTION: Spiny file shell */ +/* Imparfinis mirini. DESCRIPTION: */ +/* Caiman latirostris. DESCRIPTION: Broad-nosed caiman */ +/* Isognomon perna. DESCRIPTION: Rayed tree oyster */ +/* Isognomon recognitus. DESCRIPTION: Pacific tree oyster */ +/* Chondrus crispus. DESCRIPTION: Carragheen (Irish) moss */ +/* Limaria tuberculata. DESCRIPTION: Inflated file shell */ +/* Lima vulgaris. DESCRIPTION: Common file shell */ +/* Isognomon spp. DESCRIPTION: */ +/* Caiman yacare. DESCRIPTION: Paraguayan caiman */ +/* Inlecypris auropurpureus. DESCRIPTION: */ +/* Callianassa biffari. DESCRIPTION: Beach ghost shrimp */ +/* Palinustus unicornutus. DESCRIPTION: Unicorn blunthorn lobster */ +/* Linuparus sordidus. DESCRIPTION: Oriental spear lobster */ +/* Indoreonectes evezardi. DESCRIPTION: */ +/* Noturus flavus. DESCRIPTION: Stonecat */ +/* Noturus gyrinus. DESCRIPTION: Tadpole madtom */ +/* Noturus insignis. DESCRIPTION: Margined madtom */ +/* Linuparus trigonus. DESCRIPTION: Japanese spear lobster */ +/* Inpaichthys kerri. DESCRIPTION: Royal tetra */ +/* Noturus placidus. DESCRIPTION: Neosho madtom */ +/* Incara multisquamatus. DESCRIPTION: */ +/* Linuparus somniosus. DESCRIPTION: Spear lobster */ +/* Palinustus mossambicus. DESCRIPTION: Buffalo blunthorn lobster */ +/* Noturus phaeus. DESCRIPTION: Brown madtom */ +/* Hinnites giganteus. DESCRIPTION: Giant rock scallop */ +/* Palinustus truncatus. DESCRIPTION: American blunthorn lobster */ +/* Noturus stigmosus. DESCRIPTION: Northern madtom */ +/* Inimicus cuvieri. DESCRIPTION: */ +/* Invertebrata. DESCRIPTION: Aquatic invertebrates nei */ +/* Palinustus waguensis. DESCRIPTION: Japanese blunthorn lobster */ +/* Noturus exilis. DESCRIPTION: Slender madtom */ +/* Linuparus spp. DESCRIPTION: Spear lobsters nei */ +/* Apareiodon affinis. DESCRIPTION: */ +/* Sepiola birostrata. DESCRIPTION: Butterfly bobtail squid */ +/* Liocarcinus depurator. DESCRIPTION: Blue-leg swimcrab */ +/* Sepiola steenstrupiana. DESCRIPTION: Steenstrup's bobtail squid */ +/* Sepiola affinis. DESCRIPTION: Analogous bobtail squid */ +/* Sepiola intermedia. DESCRIPTION: Intermediate bobtail squid */ +/* Isognomon janus. DESCRIPTION: Janus tree oyster */ +/* Striostrea prismatica. DESCRIPTION: Stone oyster */ +/* Sepiola ligulata. DESCRIPTION: Tongue bobtail squid */ +/* Striostrea margaritacea. DESCRIPTION: Sand oyster */ +/* Pseudopleuronectes obscurus. DESCRIPTION: */ +/* Iotichthys phlegethontis. DESCRIPTION: Least chub */ +/* Sepiola trirostrata. DESCRIPTION: Knobby bobtail squid */ +/* Sepiola robusta. DESCRIPTION: Robust bobtail squid */ +/* Sardinella longiceps. DESCRIPTION: Indian oil sardine */ +/* Sepiola atlantica. DESCRIPTION: Atlantic bobtail squid */ +/* Sepiola aurantiaca. DESCRIPTION: Golden bobtail squid */ +/* Antennarius hispidus. DESCRIPTION: Shaggy angler */ +/* Sepiola spp. DESCRIPTION: Sepiola bobtail squids nei */ +/* Sepiola parva. DESCRIPTION: Spotty bobtail squid */ +/* Dictyopteris undulata. DESCRIPTION: Olive forked ribbons */ +/* Isoseculiflustra angusta. DESCRIPTION: */ +/* Prietella phreatophila. DESCRIPTION: Mexican blindcat */ +/* Caesioperca lepidoptera. DESCRIPTION: Butterfly perch */ +/* Aioliops novaeguineae. DESCRIPTION: */ +/* Pylodictis olivaris. DESCRIPTION: Flathead catfish */ +/* Paphia papilionacea. DESCRIPTION: */ +/* Lithopoma tecta. DESCRIPTION: Imbricated star-shell */ +/* Lithopoma tuber. DESCRIPTION: Green star-shell */ +/* Indostomus paradoxus. DESCRIPTION: Pipe fish */ +/* Ipnops agassizii. DESCRIPTION: Grideye fish */ +/* Siliqua alta. DESCRIPTION: Dall's razor clam */ +/* Arius madagascariensis. DESCRIPTION: Madagascar sea catfish */ +/* Ateleopus natalensis. DESCRIPTION: Jelly-head fish */ +/* Istiblennius edentulus. DESCRIPTION: Rippled rockskipper */ +/* Istiblennius lineatus. DESCRIPTION: Lined rockskipper */ +/* Chrysichthys platycephalus. DESCRIPTION: */ +/* Chrysichthys sianenna. DESCRIPTION: */ +/* Chrysichthys stappersii. DESCRIPTION: */ +/* Isididae. DESCRIPTION: */ +/* Istiblennius pox. DESCRIPTION: Scarface rockskipper */ +/* Istiblennius spilotus. DESCRIPTION: Spotted rockskipper */ +/* Siliqua radiata. DESCRIPTION: Sunset razor clam */ +/* Istigobius decoratus. DESCRIPTION: Decorated goby */ +/* Istigobius ornatus. DESCRIPTION: Ornate goby */ +/* Bodianus bilunulatus. DESCRIPTION: Tarry hogfish */ +/* Brama orcini. DESCRIPTION: Bigtooth pomfret */ +/* Siliqua winteriana. DESCRIPTION: Winter's razor clam */ +/* Siliqua spp. DESCRIPTION: */ +/* Cirrhitichthys aprinus. DESCRIPTION: Spotted hawkfish */ +/* Chirodactylus brachydactylus. DESCRIPTION: Two-tone fingerfin */ +/* Orcaella brevirostris. DESCRIPTION: Irrawaddy dolphin */ +/* Semirossia tenera. DESCRIPTION: Lesser shining bobtail squid */ +/* Cirrhitops fasciatus. DESCRIPTION: Redbarred hawkfish */ +/* Chirodactylus grandis. DESCRIPTION: Bank steenbras */ +/* Iranocichla hormuzensis. DESCRIPTION: */ +/* Spirontocaris lilljeborgii. DESCRIPTION: Friendly spine shrimp */ +/* Chirodactylus jessicalenorum. DESCRIPTION: Natal fingerfin */ +/* Mitra stictica. DESCRIPTION: Pontifical miter */ +/* Cirripectes alboapicalis. DESCRIPTION: */ +/* Mitra mitra. DESCRIPTION: Episcopal miter */ +/* Mitra nigra. DESCRIPTION: Brown miter */ +/* Cirrhitus pinnulatus. DESCRIPTION: Stocky hawkfish */ +/* Cirripectes filamentosus. DESCRIPTION: Filamentous blenny */ +/* Lates stappersii. DESCRIPTION: Sleek lates */ +/* Mitra eremitarum. DESCRIPTION: Adusta miter */ +/* Spirontocaris spinus. DESCRIPTION: Parrot shrimp */ +/* Iranocypris typhlops. DESCRIPTION: Iran cave barb */ +/* Cirrhitus rivulatus. DESCRIPTION: Giant hawkfish */ +/* Iriatherina werneri. DESCRIPTION: Threadfin rainbowfish */ +/* Cirrhitichthys oxycephalus. DESCRIPTION: Coral hawkfish */ +/* Mitra zonata. DESCRIPTION: Zoned miter */ +/* Isopisthus parvipinnis. DESCRIPTION: Bigtooth corvina */ +/* Isistius brasiliensis. DESCRIPTION: Cookie cutter shark */ +/* Chlamys islandica. DESCRIPTION: Iceland scallop */ +/* Thais nodosa. DESCRIPTION: Nodose rock shell */ +/* Satan eurystomus. DESCRIPTION: Widemouth blindcat */ +/* Callianassa californiensis. DESCRIPTION: Bay ghost shrimp */ +/* Callianassa gigas. DESCRIPTION: Giant ghost shrimp */ +/* Isopoda. DESCRIPTION: Isopods, pillbugs, sowbugs */ +/* Isopsetta isolepis. DESCRIPTION: Butter sole */ +/* Callianassa japonica. DESCRIPTION: Japanese ghost shrimp */ +/* Callianassa kraussi. DESCRIPTION: Pink ghost shrimp */ +/* Istiblennius bellus. DESCRIPTION: Imspringer */ +/* Istigobius campbelli. DESCRIPTION: */ +/* Callianassa australiensis. DESCRIPTION: Australian ghost shrimp */ +/* Thais coronata. DESCRIPTION: Crowned rock shell */ +/* Isistius plutodus. DESCRIPTION: Largetooth cookiecutter shark */ +/* Phalacrocorax atriceps. DESCRIPTION: Imperial shag */ +/* Isopisthus remifer. DESCRIPTION: Silver weakfish */ +/* Samaris cristatus. DESCRIPTION: Cockatoo righteye flounder */ +/* Callianassa turnerana. DESCRIPTION: Cameroon ghost shrimp */ +/* Callianassa petalura. DESCRIPTION: Flower ghost shrimp */ +/* Rissoella verruculosa. DESCRIPTION: Rock chickory */ +/* Phalacrocorax aristotelis. DESCRIPTION: European shag */ +/* Isocirrhitus sexfasciatus. DESCRIPTION: Sixband hawkfish */ +/* Phalacrocorax carbo. DESCRIPTION: Great cormorant */ +/* Salangidae. DESCRIPTION: Icefishes nei */ +/* Trogloglanis pattersoni. DESCRIPTION: Toothless blindcat */ +/* Sepietta obscura. DESCRIPTION: Mysterious bobtail squid */ +/* Ameiurus catus. DESCRIPTION: White catfish */ +/* Pitar dione. DESCRIPTION: Royal comb venus */ +/* Ameiurus nebulosus. DESCRIPTION: Brown bullhead */ +/* Ictalurus furcatus. DESCRIPTION: Blue catfish */ +/* Sepietta neglecta. DESCRIPTION: Elegant bobtail squid */ +/* Caesioscorpis theagenes. DESCRIPTION: */ +/* Pitar fulminatus. DESCRIPTION: Lightning venus */ +/* Pitar unicolor. DESCRIPTION: Self-coloured pitar */ +/* Proeutropiichthys taakree. DESCRIPTION: */ +/* Pitar callicomatus. DESCRIPTION: Ridged pitar venus */ +/* Ameiurus melas. DESCRIPTION: Black bullhead */ +/* Ameiurus natalis. DESCRIPTION: Yellow bullhead */ +/* Citharoides macrolepis. DESCRIPTION: Twospot largescale flounder */ +/* Ictalurus punctatus. DESCRIPTION: Channel catfish */ +/* Pitar rudis. DESCRIPTION: Rough pitar venus */ +/* Citharoides macrolepidotus. DESCRIPTION: Branched ray flounder */ +/* Pitar citrinus. DESCRIPTION: Yellow pitar venus */ +/* Pitar rostratus. DESCRIPTION: Rostrate pitar */ +/* Amiantis purpurata. DESCRIPTION: Purple amiantis */ +/* Phalacrocoracidae. DESCRIPTION: Cormorants nei */ +/* Sepietta oweniana. DESCRIPTION: Common bobtail squid */ +/* Citharoides axillaris. DESCRIPTION: */ +/* Ituglanis amazonicum. DESCRIPTION: */ +/* Coius campbelli. DESCRIPTION: */ +/* Lolliguncula brevis. DESCRIPTION: Western Atlantic brief squid */ +/* Amarsipus carlsbergi. DESCRIPTION: */ +/* Siganus vermiculatus. DESCRIPTION: Vermiculated spinefoot */ +/* Siganus virgatus. DESCRIPTION: Barhead spinefoot */ +/* Samariscus huysmani. DESCRIPTION: Huysman's righteye flounder */ +/* Siganus trispilos. DESCRIPTION: Threeblotched rabbitfish */ +/* Lolliguncula panamensis. DESCRIPTION: Panama brief squid */ +/* Siganus vulpinus. DESCRIPTION: Foxface */ +/* Lolliguncula mercatoris. DESCRIPTION: Guinean thumbstall squid */ +/* Siganus unimaculatus. DESCRIPTION: Blotched foxface */ +/* Latirus polygonus. DESCRIPTION: Many-angled spindle */ +/* Siganus uspi. DESCRIPTION: Bicolored foxface */ +/* Siganus randalli. DESCRIPTION: Variegated spinefoot */ +/* Siganus spinus. DESCRIPTION: Little spinefoot */ +/* Siganus stellatus. DESCRIPTION: Brown-spotted spinefoot */ +/* Siganus sutor. DESCRIPTION: Shoemaker spinefoot */ +/* Carassius cuvieri. DESCRIPTION: Japanese white crucian carp */ +/* Pitar spp. DESCRIPTION: */ +/* Irvineia orientalis. DESCRIPTION: */ +/* Lophiodes insidiator. DESCRIPTION: Natal angler */ +/* Chaetodon collare. DESCRIPTION: Redtail butterflyfish */ +/* Moringuidae. DESCRIPTION: Spaghetti eels nei */ +/* Chaetodon gardineri. DESCRIPTION: Gardner's butterflyfish */ +/* Roa jayakari. DESCRIPTION: Indian barred butterflyfish */ +/* Chaetodon melapterus. DESCRIPTION: Arabian butterflyfish */ +/* Chaetodon nigropunctatus. DESCRIPTION: Black-spotted butterflyfish */ +/* Chaetodon vagabundus. DESCRIPTION: Vagabond butterflyfish */ +/* Chaetodon auriga. DESCRIPTION: Threadfin butterflyfish */ +/* Chaetodon lunula. DESCRIPTION: Raccoon butterflyfish */ +/* Illex oxygonius. DESCRIPTION: Sharptail shortfin squid */ +/* Ictalurus punctatus x I. furcatus. DESCRIPTION: Channel-blue catfish, hybrid */ +/* Sicyopterus caeruleus. DESCRIPTION: */ +/* Parasicydium bandama. DESCRIPTION: */ +/* Ichthyocampus carce. DESCRIPTION: */ +/* Apionichthys dumerili. DESCRIPTION: Longtail sole */ +/* Citharichthys arenaceus. DESCRIPTION: Sand whiff */ +/* Ilyodon furcidens. DESCRIPTION: Goldbreast splitfin */ +/* Ilypnus gilberti. DESCRIPTION: Cheekspot goby */ +/* Citharichthys gilberti. DESCRIPTION: Bigmouth sanddab */ +/* Dictyopteris polypodioides. DESCRIPTION: Sweet-smelling seaweed */ +/* Dictyota dichotoma. DESCRIPTION: Forked ribbons */ +/* Sicyopterus lagocephalus. DESCRIPTION: Bichique */ +/* Citharichthys stigmaeus. DESCRIPTION: Speckled sanddab */ +/* Citharichthys sordidus. DESCRIPTION: Pacific sanddab */ +/* Citharichthys spilopterus. DESCRIPTION: Bay whiff */ +/* Citharichthys arctifrons. DESCRIPTION: Gulf Stream flounder */ +/* Sicyopterus stimpsoni. DESCRIPTION: Stimpson's goby */ +/* Citharichthys stampflii. DESCRIPTION: Smooth flounder */ +/* Idiolychnus urolampus. DESCRIPTION: */ +/* Sicydium brevifile. DESCRIPTION: */ +/* Sicyopus auxilimentus. DESCRIPTION: */ +/* Citharichthys gymnorhinus. DESCRIPTION: Anglefin whiff */ +/* Chromis viridis. DESCRIPTION: Blue green damselfish */ +/* Chromis dimidiata. DESCRIPTION: Chocolatedip chromis */ +/* Pinctada spp. DESCRIPTION: Pearl oysters nei */ +/* Trachurus picturatus. DESCRIPTION: Blue jack mackerel */ +/* Raja teevani. DESCRIPTION: Prickly brown ray */ +/* Raja nidarosiensis. DESCRIPTION: Norwegian skate */ +/* Raja tengu. DESCRIPTION: */ +/* Raja texana. DESCRIPTION: Roundel skate */ +/* Raja velezi. DESCRIPTION: Velez ray */ +/* Raja rhina. DESCRIPTION: Longnose skate */ +/* Raja miraletus. DESCRIPTION: Brown ray */ +/* Jacquinotia edwardsii. DESCRIPTION: Southern spider crab */ +/* Raja wallacei. DESCRIPTION: Yellowspotted skate */ +/* Raja pullopunctata. DESCRIPTION: Slime skate */ +/* Raja melitensis. DESCRIPTION: Maltese ray */ +/* Engraulis japonicus. DESCRIPTION: Japanese anchovy */ +/* Raja olseni. DESCRIPTION: Spreadfin skate */ +/* Sardinops melanostictus. DESCRIPTION: Japanese pilchard */ +/* Haliporoides sibogae. DESCRIPTION: Jack-knife shrimp */ +/* Raja radula. DESCRIPTION: Rough ray */ +/* Arctoscopus japonicus. DESCRIPTION: Japanese sandfish */ +/* Raja nasuta. DESCRIPTION: Rough skate */ +/* Raja pulchra. DESCRIPTION: */ +/* Raja purpuriventralis. DESCRIPTION: */ +/* Raja powelli. DESCRIPTION: */ +/* Trachurus spp. DESCRIPTION: Jack and horse mackerels nei */ +/* Raja polystigma. DESCRIPTION: Speckled ray */ +/* Raja whitleyi. DESCRIPTION: Wedgenose skate */ +/* Lampadena anomala. DESCRIPTION: Anomalous lanternfish */ +/* Lampadena luminosa. DESCRIPTION: Luminous lanternfish */ +/* Aldrovandia gracilis. DESCRIPTION: */ +/* Aldrovandia phalacra. DESCRIPTION: Hawaiian halosaurid fish */ +/* Melamphaes leprus. DESCRIPTION: */ +/* Zenion hololepis. DESCRIPTION: Dwarf dory */ +/* Jeboehlkia gladifer. DESCRIPTION: */ +/* Zenion longipinnis. DESCRIPTION: */ +/* Scolopsis aurata. DESCRIPTION: Yellowstripe monocle bream */ +/* Scolopsis frenata. DESCRIPTION: Bridled monocle bream */ +/* Cheilinus chlorourus. DESCRIPTION: Floral wrasse */ +/* Herklotsichthys punctatus. DESCRIPTION: Spotback herring */ +/* Hippa ovalis. DESCRIPTION: */ +/* Holothuria arenacava. DESCRIPTION: */ +/* Lethrinus conchyliatus. DESCRIPTION: Redaxil emperor */ +/* Microdesmidae. DESCRIPTION: Wormfishes nei */ +/* Lophiobagrus cyclurus. DESCRIPTION: African bullhead */ +/* Aethiomastacembelus cunningtoni. DESCRIPTION: */ +/* Stichopus chloronotus. DESCRIPTION: Greenfish */ +/* Isostichopus fuscus. DESCRIPTION: Giant sea cucumber */ +/* Maja goltziana. DESCRIPTION: Spiny spider crab */ +/* Calanus finmarchicus. DESCRIPTION: */ +/* Centrolabrus trutta. DESCRIPTION: Emerald wrasse */ +/* Maja crispata. DESCRIPTION: Lesser spider crab */ +/* Stichopus regalis. DESCRIPTION: Royal cucumber */ +/* Johnius borneensis. DESCRIPTION: Sharpnose hammer croaker */ +/* Johnius carutta. DESCRIPTION: Karut croaker */ +/* Dichistius multifasciatus. DESCRIPTION: Banded galjoen */ +/* Stichopus variegatus. DESCRIPTION: Curryfish */ +/* Maja spp. DESCRIPTION: Maja spider crabs nei */ +/* Colletteichthys dussumieri. DESCRIPTION: */ +/* Coris aygula. DESCRIPTION: Clown coris */ +/* Coris formosa. DESCRIPTION: Queen coris */ +/* Paromola japonica. DESCRIPTION: Japan. deep-water carrier crab */ +/* Jordanella floridae. DESCRIPTION: Flagfish */ +/* Maurolicus weitzmani. DESCRIPTION: Atlantic pearlside */ +/* Dasyatis matsubarai. DESCRIPTION: */ +/* Dasyatis tortonesei. DESCRIPTION: Tortonese's stingray */ +/* Dasyatis pastinaca. DESCRIPTION: Common stingray */ +/* Dasyatis rudis. DESCRIPTION: */ +/* Dasyatis sabina. DESCRIPTION: Atlantic stingray */ +/* Dasyatis thetidis. DESCRIPTION: Thorntail stingray */ +/* Notacanthidae. DESCRIPTION: Deep-sea spiny eels nei */ +/* Dasyatis say. DESCRIPTION: Bluntnose stingray */ +/* Antennablennius bifilum. DESCRIPTION: Horned rockskipper */ +/* Antennablennius hypenetes. DESCRIPTION: Arabian blenny */ +/* Antennablennius simonyi. DESCRIPTION: Simony's blenny */ +/* Antennablennius variopunctatus. DESCRIPTION: Orangedotted blenny */ +/* Rhopilema spp. DESCRIPTION: Jellyfishes nei */ +/* Zenion leptolepis. DESCRIPTION: Elongate dory */ +/* Himantolophus spp. DESCRIPTION: */ +/* Raja lanceorostrata. DESCRIPTION: Rattail skate */ +/* Raja robertsi. DESCRIPTION: Bigmouth skate */ +/* Raja schmidti. DESCRIPTION: */ +/* Raja doutrei. DESCRIPTION: Violet skate */ +/* Raja eglanteria. DESCRIPTION: Clearnose skate */ +/* Raja fuliginea. DESCRIPTION: */ +/* Raja garmani. DESCRIPTION: Freckled skate */ +/* Raja heemstrai. DESCRIPTION: */ +/* Raja gigas. DESCRIPTION: */ +/* Raja johannisdavisi. DESCRIPTION: */ +/* Raja kenojei. DESCRIPTION: */ +/* Cypselurus agoo. DESCRIPTION: Japanese flyingfish */ +/* Raja lemprieri. DESCRIPTION: Thornback skate */ +/* Raja innominata. DESCRIPTION: */ +/* Raja hollandi. DESCRIPTION: */ +/* Raja polyommata. DESCRIPTION: Argus skate */ +/* Raja equatorialis. DESCRIPTION: Ecuatorial ray */ +/* Raja inornata. DESCRIPTION: California ray */ +/* Raja lentiginosa. DESCRIPTION: */ +/* Malacoraja kreffti. DESCRIPTION: Krefft's ray */ +/* Raja gudgeri. DESCRIPTION: Greenback skate */ +/* Raja leopardus. DESCRIPTION: Leopard skate */ +/* Raja herwigi. DESCRIPTION: */ +/* Raja leucosticta. DESCRIPTION: */ +/* Raja maderensis. DESCRIPTION: Madeiran ray */ +/* Raja meerdervoortii. DESCRIPTION: */ +/* Pseudocnus laevigatus. DESCRIPTION: */ +/* Pterygotrigla picta. DESCRIPTION: Spotted gurnard */ +/* Halosauridae. DESCRIPTION: Halosaurs nei */ +/* Lampanyctus nobilis. DESCRIPTION: Noble lanternfish */ +/* Lampanyctus tenuiformis. DESCRIPTION: Slender lanternfish */ +/* Lepidophanes guentheri. DESCRIPTION: G */ +/* ünther’s lanternfish */ +/* Lobianchia gemellarii. DESCRIPTION: Gemellar */ +/* ’s lanternfish */ +/* Molidae. DESCRIPTION: Ocean sunfishes nei */ +/* Neopagetopsis ionah. DESCRIPTION: Jonah's icefish */ +/* Amphiprion allardi. DESCRIPTION: Twobar anemonefish */ +/* Anampses caeruleopunctatus. DESCRIPTION: Bluespotted wrasse */ +/* Percophidae. DESCRIPTION: Duckbills nei */ +/* Trachurus japonicus. DESCRIPTION: Japanese jack mackerel */ +/* Harpidae. DESCRIPTION: Harp shells nei */ +/* Halichoeres poeyi. DESCRIPTION: Blackear wrasse */ +/* Halichoeres iridis. DESCRIPTION: */ +/* Physiculus natalensis. DESCRIPTION: */ +/* Hemiramphidae. DESCRIPTION: */ +/* Polycheles typhlops. DESCRIPTION: */ +/* Halichoeres hortulanus. DESCRIPTION: Checkerboard wrasse */ +/* Ptilonia magellanica. DESCRIPTION: Magellanic ptilonia */ +/* Halichoeres scapularis. DESCRIPTION: Zigzag wrasse */ +/* Meganthias natalensis. DESCRIPTION: Gorgeous swallowtail */ +/* Muricidae. DESCRIPTION: Murex shells nei */ +/* Neosarmatium meinerti. DESCRIPTION: */ +/* Notomastus latericeus. DESCRIPTION: Bristleworms nei */ +/* Sabellastarte spectabilis. DESCRIPTION: Feather duster worm */ +/* Gobiesocidae. DESCRIPTION: Clingfishes nei */ +/* Jania adhaerens. DESCRIPTION: Pacific coral moss */ +/* Stichopus herrmanni. DESCRIPTION: */ +/* Jania rubens. DESCRIPTION: Fine coral moss */ +/* Johnius amblycephalus. DESCRIPTION: Bearded croaker */ +/* Johnius belangerii. DESCRIPTION: Belanger's croaker */ +/* Johnius coitor. DESCRIPTION: Coitor croaker */ +/* Zeus faber. DESCRIPTION: John dory */ +/* Johnsonina eriomma. DESCRIPTION: */ +/* Johnrandallia nigrirostris. DESCRIPTION: Blacknosed butterflyfish */ +/* Zenopsis conchifer. DESCRIPTION: Silvery John dory */ +/* Johnius trachycephalus. DESCRIPTION: Leaftail croaker */ +/* Johnius dussumieri. DESCRIPTION: Sin croaker */ +/* Johnius spp. DESCRIPTION: */ +/* Physiculus huloti. DESCRIPTION: Brown codling */ +/* Pinguipes chilensis. DESCRIPTION: Chilean sandperch */ +/* Japonolaeops dentatus. DESCRIPTION: */ +/* Centropomus mexicanus. DESCRIPTION: Largescale fat snook */ +/* Copepoda. DESCRIPTION: Copepods */ +/* Physiculus fulvus. DESCRIPTION: Metallic codling */ +/* Centropomus viridis. DESCRIPTION: White snook */ +/* Serpula spp. DESCRIPTION: Segmented worms nei */ +/* Ateleopodidae. DESCRIPTION: Jellynose fishes nei */ +/* Raja acutispina. DESCRIPTION: */ +/* Raja badia. DESCRIPTION: Broad skate */ +/* Raja macrocauda. DESCRIPTION: */ +/* Raja caudaspinosa. DESCRIPTION: Munchskin skate */ +/* Rajella barnardi. DESCRIPTION: Bigthorn skate */ +/* Raja africana. DESCRIPTION: African ray */ +/* Raja cervigoni. DESCRIPTION: Finspot ray */ +/* Raja bathyphila. DESCRIPTION: Deep-water ray */ +/* Raja binoculata. DESCRIPTION: Big skate */ +/* Raja compagnoi. DESCRIPTION: */ +/* Raja ackleyi. DESCRIPTION: Ocellate skate */ +/* Raja bullisi. DESCRIPTION: Bullis skate */ +/* Raja campbelli. DESCRIPTION: Blackspot skate */ +/* Raja annandalei. DESCRIPTION: */ +/* Raja boesemani. DESCRIPTION: */ +/* Raja pita. DESCRIPTION: */ +/* Raja dissimilis. DESCRIPTION: Ghost skate */ +/* Raja clarkii. DESCRIPTION: */ +/* Raja asterias. DESCRIPTION: Mediterranean starry ray */ +/* Raja castelnaui. DESCRIPTION: Spotback skate */ +/* Raja australis. DESCRIPTION: Sydney skate */ +/* Raja cerva. DESCRIPTION: White-spotted skate */ +/* Raja bigelowi. DESCRIPTION: Bigelow's ray */ +/* Raja dageti. DESCRIPTION: */ +/* Raja cyclophora. DESCRIPTION: Eyespot skate */ +/* Raja cortezensis. DESCRIPTION: Cortez' ray */ +/* Patinopecten yessoensis. DESCRIPTION: Yesso scallop */ +/* Latirus infundibulum. DESCRIPTION: Brown-lined latirus */ +/* Jasus novaehollandiae. DESCRIPTION: Southern rock lobster */ +/* Leptostomias longibarba. DESCRIPTION: */ +/* Jasus paulensis. DESCRIPTION: St.Paul rock lobster */ +/* Sardinella zunasi. DESCRIPTION: Japanese sardinella */ +/* Trichiurus auriga. DESCRIPTION: Pearly hairtail */ +/* Jasus spp. DESCRIPTION: Rock lobsters nei */ +/* Atractosteus tropicus. DESCRIPTION: Tropical gar */ +/* Bohadschia subrubra. DESCRIPTION: */ +/* Pitar tumens. DESCRIPTION: Swollen venus */ +/* Strombidae. DESCRIPTION: Conch shells nei */ +/* Urotrygon aspidura. DESCRIPTION: Spiny-tail round ray */ +/* Urotrygon chilensis. DESCRIPTION: Chilean round ray */ +/* Julidochromis dickfeldi. DESCRIPTION: */ +/* Leptojulis chrysotaenia. DESCRIPTION: */ +/* Justitia chani. DESCRIPTION: Small furrow lobster */ +/* Justitia japonica. DESCRIPTION: Japanese furrow lobster */ +/* Justitia longimanus. DESCRIPTION: West Indian furrow lobster */ +/* Urotrygon microphthalmum. DESCRIPTION: */ +/* Urotrygon nana. DESCRIPTION: Dwarf round ray */ +/* Urotrygon rogersi. DESCRIPTION: Rogers' round ray */ +/* Leptojulis cyanopleura. DESCRIPTION: Shoulder-spot wrasse */ +/* Urotrygon reticulata. DESCRIPTION: Reticulate round ray */ +/* Urotrygon simulatrix. DESCRIPTION: Fake round ray */ +/* Justitia mauritiana. DESCRIPTION: Gibbon furrow lobster */ +/* Urotrygon munda. DESCRIPTION: Munda round ray */ +/* Justitia vericeli. DESCRIPTION: Polynesian furrow lobster */ +/* Jujubinus exasperatus. DESCRIPTION: Exasperating jujubine */ +/* Terebridae. DESCRIPTION: Auger shells nei */ +/* Leptychaster kerguelenensis. DESCRIPTION: */ +/* Colocongridae. DESCRIPTION: */ +/* Alepes kleinii. DESCRIPTION: Razorbelly scad */ +/* Allenbatrachus grunniens. DESCRIPTION: Grunting toadfish */ +/* Amblyeleotris diagonalis. DESCRIPTION: Diagonal shrimp goby */ +/* Amblyeleotris downingi. DESCRIPTION: Downing's shrimpgoby */ +/* Amblyeleotris periophthalma. DESCRIPTION: Periophthalma prawn-goby */ +/* Amblyeleotris triguttata. DESCRIPTION: Triplespot shrimpgoby */ +/* Argentinidae. DESCRIPTION: Argentines nei */ +/* Jenynsia lineata. DESCRIPTION: Onesided livebearer */ +/* Scurria plana. DESCRIPTION: */ +/* Scurria spp. DESCRIPTION: */ +/* Jordania zonope. DESCRIPTION: Longfin sculpin */ +/* Elops spp. DESCRIPTION: Ladyfishes nei */ +/* Kathala axillaris. DESCRIPTION: Kathala croaker */ +/* Platichthys bicoloratus. DESCRIPTION: Stone flounder */ +/* Lithodes confundens. DESCRIPTION: */ +/* Cantharus dorbignyi. DESCRIPTION: D'Orbigny's buccinum */ +/* Canthigaster amboinensis. DESCRIPTION: Spider-eye puffer */ +/* Atheresthes evermanni. DESCRIPTION: Kamchatka flounder */ +/* Calappa gallus. DESCRIPTION: Rough box crab */ +/* Pomadasys kaakan. DESCRIPTION: Javelin grunter */ +/* Kali indica. DESCRIPTION: */ +/* Scomberomorus plurilineatus. DESCRIPTION: Kanadi kingfish */ +/* Kalimantania lawak. DESCRIPTION: */ +/* Kamoharaia megastoma. DESCRIPTION: Wide-mouthed flounder */ +/* Crassostrea ariakensis. DESCRIPTION: Ariake cupped oyster */ +/* Carinotetraodon lorteti. DESCRIPTION: */ +/* Calappa pelii. DESCRIPTION: Spiny box crab */ +/* Lithodes aequispina. DESCRIPTION: Golden king crab */ +/* Calappa rubroguttata. DESCRIPTION: Spotted box crab */ +/* Karalepis stewarti. DESCRIPTION: Scaly headed triplefin */ +/* Calappa angusta. DESCRIPTION: Nodose box crab */ +/* Euthynnus affinis. DESCRIPTION: Kawakawa */ +/* Macrocallista spp. DESCRIPTION: */ +/* Crassostrea gryphoides. DESCRIPTION: Gryphea cupped oyster */ +/* Canthigaster valentini. DESCRIPTION: Valentin's sharpnose puffer */ +/* Argyrops bleekeri. DESCRIPTION: Taiwan tai */ +/* Argyrops filamentosus. DESCRIPTION: Soldierbream */ +/* Argyrops spinifer. DESCRIPTION: King soldier bream */ +/* Cardiocardita spp. DESCRIPTION: */ +/* Lithodes ferox. DESCRIPTION: King crab */ +/* Cancer bellianus. DESCRIPTION: Toothed rock crab */ +/* Corculum cardissa. DESCRIPTION: True heart cockle */ +/* Paralithodes camtschaticus. DESCRIPTION: Red king crab */ +/* Chicoreus brunneus. DESCRIPTION: Adusta murex */ +/* Paralomis formosa. DESCRIPTION: Globose king crab */ +/* Codium contractum. DESCRIPTION: */ +/* Kronichthys heylandi. DESCRIPTION: */ +/* Paralithodes platypus. DESCRIPTION: Blue king crab */ +/* Clanculus jussieui. DESCRIPTION: Jussieu's chanculus */ +/* Chicoreus torrefactus. DESCRIPTION: Firebrand murex */ +/* Clinocardium nuttallii. DESCRIPTION: Basket cockle */ +/* Lithodes murrayi. DESCRIPTION: Subantarctic stone crab */ +/* Cromeria nilotica. DESCRIPTION: Naked shellear */ +/* Chicoreus ramosus. DESCRIPTION: Ramose murex */ +/* Genypterus capensis. DESCRIPTION: Kingklip */ +/* Callistochiton portobelensis. DESCRIPTION: Portobelo chiton */ +/* Lithodes santolla. DESCRIPTION: Southern king crab */ +/* Paralithodes spp. DESCRIPTION: King crabs */ +/* Lithodes maja. DESCRIPTION: Stone king crab */ +/* Paralomis aculeata. DESCRIPTION: Red stone crab */ +/* Paralomis spinosissima. DESCRIPTION: Antarctic stone crab */ +/* Clinocardium buelowi. DESCRIPTION: Bulow's cockle */ +/* Lithodidae. DESCRIPTION: King crabs, stone crabs nei */ +/* Paralithodes brevipes. DESCRIPTION: Brown king crab */ +/* Lithodes spp. DESCRIPTION: King crabs nei */ +/* Cardisoma armatum. DESCRIPTION: Lagoon land crab */ +/* Cardites bicolor. DESCRIPTION: Twotoned cardita */ +/* Cardisoma carnifex. DESCRIPTION: Chestnut crab */ +/* Paralomis anamerae. DESCRIPTION: */ +/* Cassidaria echinophora. DESCRIPTION: Spiny bonnet */ +/* Crepidula fornicata. DESCRIPTION: American slipper-limpet */ +/* Cardisoma guanhumi. DESCRIPTION: Giant land crab */ +/* Cassidaria tyrrhena. DESCRIPTION: Rugose bonnet */ +/* Chondrus pinnulatus. DESCRIPTION: */ +/* Cardiocardita ajar. DESCRIPTION: Ajar cardita */ +/* Cardisoma crassum. DESCRIPTION: Mouthless land crab */ +/* Cladodonta lyallii. DESCRIPTION: Cladodonta */ +/* Chondracanthus chamissoi. DESCRIPTION: */ +/* Chatoderma argenteum. DESCRIPTION: Glisten-worm solenogaster */ +/* Cardium costatum. DESCRIPTION: Costate cockle */ +/* Cardites antiquatus. DESCRIPTION: Antique cardita */ +/* Cardium ringens. DESCRIPTION: Gaping cockle */ +/* Atactodea striata. DESCRIPTION: Striate beach clam */ +/* Cardites tankervillei. DESCRIPTION: Tankerville's cardita */ +/* Crepidula aculeata. DESCRIPTION: Spiny slipper shell */ +/* Chondrus elatus. DESCRIPTION: */ +/* Crepidula excavata. DESCRIPTION: Excavated slipper shell */ +/* Crepidula onyx. DESCRIPTION: Onyx slipper shell */ +/* Chondrus ocellatus. DESCRIPTION: */ +/* Kentrocapros aculeatus. DESCRIPTION: */ +/* Cerithium coralium. DESCRIPTION: Coral cerith */ +/* Cerithidea decollata. DESCRIPTION: Cut-off swamp cerith */ +/* Cerithium echinatum. DESCRIPTION: Spinose cerith */ +/* Chaceon affinis. DESCRIPTION: Deep-sea red crab */ +/* Skeletonema costatum. DESCRIPTION: */ +/* Libinia emarginata. DESCRIPTION: Portly spider crab */ +/* Cerithium nodulosum. DESCRIPTION: Giant knobbed cerith */ +/* Chicoreus virgineus. DESCRIPTION: Virginal murex */ +/* Circomphalus spp. DESCRIPTION: */ +/* Chelonia agassizii. DESCRIPTION: Eastern Pacific green turtle */ +/* Circomphalus casinus. DESCRIPTION: Chamber venus */ +/* Coralliophila brevis. DESCRIPTION: Short coral-shell */ +/* Scapharca cornea. DESCRIPTION: Corneous ark */ +/* Callophyllis spp. DESCRIPTION: */ +/* Coralliophila alaucoides. DESCRIPTION: Lamellose coral-shell */ +/* Skiffia lermae. DESCRIPTION: */ +/* Coralliophila meyendorffi. DESCRIPTION: Meyendorff's coral shell */ +/* Circomphalus rosalina. DESCRIPTION: African venus */ +/* Calotrophon turritus. DESCRIPTION: Turreted drill */ +/* Knefastia tuberculifera. DESCRIPTION: Tuberculate kneefastia */ +/* Callophyllis variegata. DESCRIPTION: Manifold callophyllis */ +/* Cardium spp. DESCRIPTION: */ +/* Grasseichthys gabonensis. DESCRIPTION: */ +/* Menticirrhus americanus. DESCRIPTION: Southern kingcroaker */ +/* Kelloggella cardinalis. DESCRIPTION: Cardinal goby */ +/* Menticirrhus saxatilis. DESCRIPTION: Northern kingfish */ +/* Menticirrhus littoralis. DESCRIPTION: Gulf kingcroaker */ +/* Cucumaria kerguelensis. DESCRIPTION: */ +/* Acanthistius sebastoides. DESCRIPTION: Koester */ +/* Scomberomorus cavalla. DESCRIPTION: King mackerel */ +/* Scomberomorus spp. DESCRIPTION: Seerfishes nei */ +/* Chonerhinos amabilis. DESCRIPTION: */ +/* Cerithidea cingulata. DESCRIPTION: Girdled horn shell */ +/* Charybdis feriatus. DESCRIPTION: Crucifix crab */ +/* Acanthophora spicifera. DESCRIPTION: Erect sea moss */ +/* Charybdis natator. DESCRIPTION: Ridged swimming crab */ +/* Cerithidea obtusa. DESCRIPTION: Obtuse horn shell */ +/* Chelonodon patoca. DESCRIPTION: Milkspotted puffer */ +/* Cerithidea quadrata. DESCRIPTION: Quadrate horn shell */ +/* Cerithium rupestre. DESCRIPTION: Mediterranean cerithe */ +/* Chiton stokesii. DESCRIPTION: Stoke's chiton */ +/* Chiton articulatus. DESCRIPTION: Articulate chiton */ +/* Cerithium vulgatum. DESCRIPTION: Common cerithe */ +/* Chiton spp. DESCRIPTION: Chitons nei */ +/* Codium adhaerens. DESCRIPTION: */ +/* Codium platylobium. DESCRIPTION: */ +/* Genyonemus lineatus. DESCRIPTION: White croaker */ +/* Chione undatella. DESCRIPTION: Frilled Californian venus */ +/* Codium repens. DESCRIPTION: */ +/* Chionodraco rastrospinosus. DESCRIPTION: Ocellated icefish */ +/* Chione gnidia. DESCRIPTION: Ornate venus */ +/* Kimberleyeleotris hutchinsi. DESCRIPTION: Mitchell gudgeon */ +/* Codium fragile. DESCRIPTION: Fragile codium */ +/* Chione californiensis. DESCRIPTION: Common Californian venus */ +/* Codium edule. DESCRIPTION: Branched sea cushion */ +/* Psammechinus microtuberculatus. DESCRIPTION: Green sea urchin */ +/* Kyphosus analogus. DESCRIPTION: Blue-bronze sea chub */ +/* Marcia opima. DESCRIPTION: Fertile venus */ +/* Chione compta. DESCRIPTION: Small banded venus */ +/* Codium spongiosum. DESCRIPTION: */ +/* Codium arabicum. DESCRIPTION: Green sea cushion */ +/* Chione subrugosa. DESCRIPTION: Semi-rough venus */ +/* Psammechinus miliaris. DESCRIPTION: */ +/* Chione fluctifraga. DESCRIPTION: Smooth Pacific venus */ +/* Orcinus orca. DESCRIPTION: Killer whale */ +/* Menticirrhus spp. DESCRIPTION: Kingcroakers nei */ +/* Codium cylindricum. DESCRIPTION: */ +/* Actinia cari. DESCRIPTION: Girdle anemone */ +/* Codium tomentosum. DESCRIPTION: */ +/* Lottia spp. DESCRIPTION: */ +/* Kneria auriculata. DESCRIPTION: Airbreathing shellear */ +/* Circentia callipyga. DESCRIPTION: Venus clam */ +/* Acanthochitona andersoni. DESCRIPTION: Smooth glass-hair chiton */ +/* Kanekonia florida. DESCRIPTION: */ +/* Codakia interrupta. DESCRIPTION: Interrupted lucine */ +/* Cancer johngarthi. DESCRIPTION: Northern lemon rock crab */ +/* Calliactis parasitica. DESCRIPTION: Hermit anemone */ +/* Actinauge richardi. DESCRIPTION: */ +/* Cancer amphioetus. DESCRIPTION: Japanese rock crab */ +/* Cancer antennarius. DESCRIPTION: California red rock crab */ +/* Codakia orbicularis. DESCRIPTION: Atlantic tiger lucine */ +/* Codakia punctata. DESCRIPTION: Punctate lucine */ +/* Architectonica perspectiva. DESCRIPTION: Clear sundial */ +/* Circe scripta. DESCRIPTION: Script venus */ +/* Codakia tigerina. DESCRIPTION: Pacific tiger lucine */ +/* Crocodylus palustris. DESCRIPTION: Mugger crocodile */ +/* Actinostolidae. DESCRIPTION: */ +/* Hormathiidae. DESCRIPTION: */ +/* Architectonica maxima. DESCRIPTION: Giant sundial */ +/* Hypoptychus dybowskii. DESCRIPTION: Korean sandlance */ +/* Callinectes bocourti. DESCRIPTION: Blunttooth swimcrab */ +/* Callinectes maracaiboensis. DESCRIPTION: Maracaibo swimcrab */ +/* Chlamys rubida. DESCRIPTION: Hind's scallop */ +/* Callinectes exasperatus. DESCRIPTION: Rugose swimcrab */ +/* Callinectes marginatus. DESCRIPTION: Marbled swimcrab */ +/* Chlamys hastata. DESCRIPTION: Spiny scallop */ +/* Callinectes bellicosus. DESCRIPTION: Warrior swimcrab */ +/* Chlamys asperrima. DESCRIPTION: Doughboy scallop */ +/* Callista chione. DESCRIPTION: Smooth callista */ +/* Callinectes larvatus. DESCRIPTION: Masked swimcrab */ +/* Callinectes amnicola. DESCRIPTION: Bigfisted swimcrab */ +/* Chlamys senatoria. DESCRIPTION: Senatorial scallop */ +/* Callinectes ornatus. DESCRIPTION: Shelling crab */ +/* Callinectes pallidus. DESCRIPTION: Gladiator swimcrab */ +/* Calliostoma conulus. DESCRIPTION: Shining top-shell */ +/* Klausewitzia ritae. DESCRIPTION: */ +/* Callinectes similis. DESCRIPTION: Lesser blue crab */ +/* Callinectes rathbunae. DESCRIPTION: Sharptooth swimcrab */ +/* Callinectes arcuatus. DESCRIPTION: Cuata swimcrab */ +/* Paralomis longipes. DESCRIPTION: */ +/* Codakia spp. DESCRIPTION: */ +/* Chama buddiana. DESCRIPTION: Mexican jewel box */ +/* Macoma cancellata. DESCRIPTION: Cancellate panope */ +/* Ceramium codii. DESCRIPTION: */ +/* Ceramium fimbriatum. DESCRIPTION: */ +/* Chaetomorpha linum. DESCRIPTION: Floating chaetomorpha */ +/* Ceramium ciliatum. DESCRIPTION: Velvet ceramium */ +/* Ceramium paniculatum. DESCRIPTION: */ +/* Ceramium pacificum. DESCRIPTION: Pacific ceramium */ +/* Chama lazarus. DESCRIPTION: Lazarus jewel box */ +/* Chlamys multistriata. DESCRIPTION: Little bay scallop */ +/* Ceramium kondoi. DESCRIPTION: */ +/* Cymatium corrugatum. DESCRIPTION: Corrugated triton */ +/* Chama pacifica. DESCRIPTION: Reflexed jewel box */ +/* Ceramium rubrum. DESCRIPTION: Common ceramium */ +/* Cymatium parthenopus. DESCRIPTION: Neapolitan triton */ +/* Chama savignyi. DESCRIPTION: Savigny's jewel box */ +/* Placamen tiara. DESCRIPTION: Tiar venus */ +/* Cymatium cutaceum. DESCRIPTION: Cuticle-clad triton */ +/* Chlamys livida. DESCRIPTION: Scallop */ +/* Chaetomorpha aerea. DESCRIPTION: Hairy chaetomorpha */ +/* Ceramium tenerrimum. DESCRIPTION: */ +/* Channa marulius. DESCRIPTION: */ +/* Conus betulinus. DESCRIPTION: Beech cone */ +/* Knipowitschia caucasica. DESCRIPTION: */ +/* Conus suratensis. DESCRIPTION: Suratan cone */ +/* Chione paphia. DESCRIPTION: King venus */ +/* Conus generalis. DESCRIPTION: General cone */ +/* Knodus heteresthes. DESCRIPTION: */ +/* Haliporoides spp. DESCRIPTION: Knife shrimps nei */ +/* Cyclina sinensis. DESCRIPTION: Oriental cyclina */ +/* Chione kellettii. DESCRIPTION: Kellett's Panama venus */ +/* Conus litteratus. DESCRIPTION: Lettered cone */ +/* Channa maculata. DESCRIPTION: Blotched snakehead */ +/* Chione cancellata. DESCRIPTION: Cross-barred venus */ +/* Cellana rota. DESCRIPTION: Rayed limpet */ +/* Alectryonella plicatula. DESCRIPTION: Fingerprint oyster */ +/* Conus quercinus. DESCRIPTION: Oak cone */ +/* Cronius ruber. DESCRIPTION: Red swimcrab */ +/* Haliporoides triarthrus. DESCRIPTION: Knife shrimp */ +/* Cellana testudinaria. DESCRIPTION: Turtle limpet */ +/* Chione stutchburyi. DESCRIPTION: Stutchbury's venus */ +/* Conus flavidus. DESCRIPTION: Yellow Pacific cone */ +/* Centroceras clavulatum. DESCRIPTION: Red panache */ +/* Chione spp. DESCRIPTION: */ +/* Thamnaconus hypargyreus. DESCRIPTION: Lesser-spotted leatherjacket */ +/* Conus radiatus. DESCRIPTION: Rayed cone */ +/* Argyrosomus hololepidotus. DESCRIPTION: Southern meagre(=Mulloway) */ +/* Colubraria muricata. DESCRIPTION: Maculated dwarf triton */ +/* Konia dikume. DESCRIPTION: Dikume */ +/* Conus leopardus. DESCRIPTION: Leopard cone */ +/* Kochichthys flavofasciata. DESCRIPTION: */ +/* Krobia guianensis. DESCRIPTION: */ +/* Calliostoma laugieri. DESCRIPTION: Laugier's top-shell */ +/* Ciona intestinalis. DESCRIPTION: Ciona */ +/* Conus coronatus. DESCRIPTION: Crowned cone */ +/* Saccostrea glomerata. DESCRIPTION: New Zealand rock oyster */ +/* Saccostrea malabonensis. DESCRIPTION: Philippines hooded oyster */ +/* Calliostoma granulatum. DESCRIPTION: Granular top-shell */ +/* Conus marmoreus. DESCRIPTION: Marble cone */ +/* Colomesus psittacus. DESCRIPTION: Banded puffer */ +/* Conus tessulatus. DESCRIPTION: Tesselate cone */ +/* Contusus richei. DESCRIPTION: Prickly toadfish */ +/* Scomberomorus koreanus. DESCRIPTION: Korean seerfish */ +/* Calliostoma gualterianum. DESCRIPTION: Gualtieri's top-shell */ +/* Saccostrea palmula. DESCRIPTION: Palmate oyster */ +/* Conus lividus. DESCRIPTION: Livid cone */ +/* Glyphoperidium bursa. DESCRIPTION: */ +/* Saccostrea mordax. DESCRIPTION: Coral rock oyster */ +/* Stephanolepis diaspros. DESCRIPTION: Reticulated leatherjacket */ +/* Calliostoma zizyphinum. DESCRIPTION: Painted top-shell */ +/* Parakneria abbreviata. DESCRIPTION: */ +/* Crepidula gibbosa. DESCRIPTION: Slipper-limpet crepidule */ +/* Carpilius corallinus. DESCRIPTION: Batwing coral crab */ +/* Crepidula goreensis. DESCRIPTION: Goree slipper shell */ +/* Calappa flammea. DESCRIPTION: Flame box crab */ +/* Calappa granulata. DESCRIPTION: Shamefaced crab */ +/* Calappa hepatica. DESCRIPTION: Ridged box crab */ +/* Crepidula unguiformis. DESCRIPTION: Nail-shaped crepidule */ +/* Calyptraea chinensis. DESCRIPTION: Chinese cup-and-saucer */ +/* Calappa calappa. DESCRIPTION: Giant box crab */ +/* Calappa lophos. DESCRIPTION: Common box crab */ +/* Carpilius maculatus. DESCRIPTION: Clown crab */ +/* Calappa nitida. DESCRIPTION: Ornamented boxcrab */ +/* Calappa ocellata. DESCRIPTION: Ocellated box crab */ +/* Calappa philargius. DESCRIPTION: Spectacled box crab */ +/* Acanthopleura granulata. DESCRIPTION: West Indian fuzzy chiton */ +/* Capulus ungaricus. DESCRIPTION: Hungarian cap-shell */ +/* Calappa sulcata. DESCRIPTION: Yellow box crab */ +/* Chaetopleura apiculata. DESCRIPTION: Eastern beaded chiton */ +/* Calappa saussurei. DESCRIPTION: Small arched box crab */ +/* Calappa convexa. DESCRIPTION: Arched box crab */ +/* Feresa attenuata. DESCRIPTION: Pygmy killer whale */ +/* Carpilius convexus. DESCRIPTION: Marbled stone crab */ +/* Aptenodytes patagonicus. DESCRIPTION: King penguin */ +/* Caulerpa brachypus. DESCRIPTION: Sea mustard */ +/* Caulerpa cupressoides. DESCRIPTION: Toothed sloton */ +/* Caulerpa lentillifera. DESCRIPTION: Small seagrape */ +/* Acropora palifera. DESCRIPTION: Catch bowl coral */ +/* Acropora humilis. DESCRIPTION: Finger coral */ +/* Acanella spp. DESCRIPTION: Branched bamboo coral */ +/* Acropora formosa. DESCRIPTION: Staghorn coral */ +/* Actinia equina. DESCRIPTION: Beadlet anemone */ +/* Acropora florida. DESCRIPTION: Branch coral */ +/* Caulerpa prolifera. DESCRIPTION: Leafy caulerpa */ +/* Caulerpa racemosa. DESCRIPTION: Coarse seagrape */ +/* Caulerpa serrulata. DESCRIPTION: */ +/* Caulerpa sertularioides. DESCRIPTION: Green sea feather */ +/* Cantharus undosus. DESCRIPTION: Waved goblet */ +/* Caulerpa taxifolia. DESCRIPTION: Green sea palm */ +/* Acropora hyacinthus. DESCRIPTION: Brush coral */ +/* Krefftichthys anderssoni. DESCRIPTION: */ +/* Kraemeria bryani. DESCRIPTION: */ +/* Euphausia crystallorophias. DESCRIPTION: Ice krill */ +/* Chirostoma estor. DESCRIPTION: */ +/* Euphausia frigida. DESCRIPTION: Pygmy krill */ +/* Chirostoma grandocule. DESCRIPTION: */ +/* Cirrhipathes spp. DESCRIPTION: Wire coral */ +/* Euphausia superba. DESCRIPTION: Antarctic krill */ +/* Charonia rubicunda. DESCRIPTION: Knobbed triton */ +/* Kribia kribensis. DESCRIPTION: */ +/* Crassostrea columbiensis. DESCRIPTION: Columbia black oyster */ +/* Thysanoessa macrura. DESCRIPTION: Bigeye krill */ +/* Charonia tritonis. DESCRIPTION: Variegated triton */ +/* Karumba ornatissimus. DESCRIPTION: */ +/* Corallina elongata. DESCRIPTION: Rough coral moss */ +/* Parkraemeria ornata. DESCRIPTION: */ +/* Crucibulum scutellatum. DESCRIPTION: Brown cup-and-saucer */ +/* Euphausia triacantha. DESCRIPTION: Spiny krill */ +/* Krusensterniella maculata. DESCRIPTION: */ +/* Euphausia vallentini. DESCRIPTION: Northern krill */ +/* Chirostoma spp. DESCRIPTION: */ +/* Euphausia spp. DESCRIPTION: Antarctic krill nei */ +/* Keratoisis ornata. DESCRIPTION: */ +/* Fissidentalium aegeum. DESCRIPTION: */ +/* Chicoreus brevifrons. DESCRIPTION: West Indian murex */ +/* Cassis cornuta. DESCRIPTION: Horned helmet */ +/* Cassis madagascariensis. DESCRIPTION: Emperor helmet */ +/* Thamnaconus septentrionalis. DESCRIPTION: */ +/* Cassis flammea. DESCRIPTION: Flame helmet */ +/* Doris kerguelenensis. DESCRIPTION: */ +/* Macrocallista maculata. DESCRIPTION: Calico clam */ +/* Macrocallista nimbosa. DESCRIPTION: Sunray venus */ +/* Cassis tessellata. DESCRIPTION: Tessellate helmet */ +/* Cassis tuberosa. DESCRIPTION: King helmet */ +/* Chelidonichthys queketti. DESCRIPTION: Lesser gurnard */ +/* Paraplagusia bilineata. DESCRIPTION: Doublelined tonguesole */ +/* Parexocoetus mento. DESCRIPTION: African sailfin flyingfish */ +/* Cassis spp. DESCRIPTION: */ +/* Synapturichthys kleinii. DESCRIPTION: Klein's sole */ +/* Leptochiton kerguelensis. DESCRIPTION: */ +/* Phalacronotus apogon. DESCRIPTION: */ +/* Kryptopterus bicirrhis. DESCRIPTION: Glass catfish */ +/* Kryptopterus cryptopterus. DESCRIPTION: */ +/* Phalacronotus micronemus. DESCRIPTION: */ +/* Pecten sericeus. DESCRIPTION: Silken scallop */ +/* Carditamera floridana. DESCRIPTION: Broad ribbed cardita */ +/* Cerastoderma glaucum. DESCRIPTION: Olive green cockle */ +/* Katelysia hiantina. DESCRIPTION: Hiant venus */ +/* Cistopus indicus. DESCRIPTION: Old woman octopus */ +/* Pecten albicans. DESCRIPTION: Japanese baking scallop */ +/* Phalacronotus bleekeri. DESCRIPTION: */ +/* Xeneretmus latifrons. DESCRIPTION: Blacktip poacher */ +/* Kryptopterus macrocephalus. DESCRIPTION: Striped glass catfish */ +/* Pecten sinensis. DESCRIPTION: Chinese scallop */ +/* Pecten modestus. DESCRIPTION: Modest scallop */ +/* Chiroteuthis picteti. DESCRIPTION: */ +/* Cerithium alucastrum. DESCRIPTION: Spicate cerithe */ +/* Acesta rathbuni. DESCRIPTION: Rathbun's giant file shell */ +/* Acanthocardia spinosa. DESCRIPTION: Sand cockle */ +/* Acanthocardia tuberculata. DESCRIPTION: Tuberculate cockle */ +/* Acanthocardia paucicostata. DESCRIPTION: Poorly ribbed cockle */ +/* Chiroteuthis veranyi. DESCRIPTION: Long-armed squid */ +/* Ctenoides scabra. DESCRIPTION: Rough lima */ +/* Ketengus typus. DESCRIPTION: */ +/* Pecten spp. DESCRIPTION: Pecten scallops nei */ +/* Kiunga ballochi. DESCRIPTION: Glass blue-eye */ +/* Kuronezumia bubonis. DESCRIPTION: Bulbous rattail */ +/* Kumba calvifrons. DESCRIPTION: */ +/* Kumococius rodericensis. DESCRIPTION: Spiny flathead */ +/* Actinopyga echinites. DESCRIPTION: Deep-water redfish */ +/* Kuiterichthys furcipilis. DESCRIPTION: Rough anglerfish */ +/* Chelidonichthys kumu. DESCRIPTION: Bluefin gurnard */ +/* Bohadschia marmorata. DESCRIPTION: Chalky cucumber */ +/* Cittarium pica. DESCRIPTION: West Indian top shell */ +/* Conus regius. DESCRIPTION: Royal cone */ +/* Arcuatula arcuatula. DESCRIPTION: Arcuate mussel */ +/* Kurtus gulliveri. DESCRIPTION: Nurseryfish */ +/* Conus mus. DESCRIPTION: Mouse cone */ +/* Stichopus horrens. DESCRIPTION: Selenka's sea cucumber */ +/* Conraua goliath. DESCRIPTION: */ +/* Penaeus japonicus. DESCRIPTION: Kuruma prawn */ +/* Actinopyga miliaris. DESCRIPTION: Hairy blackfish */ +/* Misgurnus anguillicaudatus. DESCRIPTION: Pond loach */ +/* Kimblaeus bassensis. DESCRIPTION: Trawl pipefish */ +/* Solecurtus divaricatus. DESCRIPTION: Divaricate short razor */ +/* Kaupus costatus. DESCRIPTION: */ +/* Kuhlia sandvicensis. DESCRIPTION: Hawaiian flagtail */ +/* Bohadschia argus. DESCRIPTION: Leopard fish */ +/* Conus textile. DESCRIPTION: Textile cone */ +/* Actinopyga mauritiana. DESCRIPTION: Surf redfish */ +/* Labrisomus nuchipinnis. DESCRIPTION: Hairy blenny */ +/* Mimoblennius cirrosus. DESCRIPTION: Fringed blenny */ +/* Minous dempsterae. DESCRIPTION: Obliquebanded stingfish */ +/* Minous monodactylus. DESCRIPTION: Grey stingfish */ +/* Paralomis verrilli. DESCRIPTION: Red vermillion crab */ +/* Charonia spp. DESCRIPTION: */ +/* Kosswigichthys asquamatus. DESCRIPTION: Scaleless killifish */ +/* Austrofusus glans. DESCRIPTION: */ +/* Crepidula spp. DESCRIPTION: */ +/* Lyconus pinnatus. DESCRIPTION: */ +/* Lageneschara lyrulata. DESCRIPTION: */ +/* Crucibulum spp. DESCRIPTION: */ +/* Kryptophanaron alfredi. DESCRIPTION: Atlantic flashlightfish */ +/* Kyphosus bigibbus. DESCRIPTION: Brown chub */ +/* Kyphosus cinerascens. DESCRIPTION: Blue sea chub */ +/* Kyphosus elegans. DESCRIPTION: Cortez sea chub */ +/* Macrocystis angustifolia. DESCRIPTION: */ +/* Kalyptatherina helodes. DESCRIPTION: Marine sailfin silverside */ +/* Kyphosus incisor. DESCRIPTION: Yellow sea chub */ +/* Katelysia japonica. DESCRIPTION: Japan venus */ +/* Chiloscyllium burmensis. DESCRIPTION: Burmese bambooshark */ +/* Katelysia marmorata. DESCRIPTION: Marbled venus */ +/* Crypthecodinium cohnii. DESCRIPTION: */ +/* Kyphosus spp. DESCRIPTION: Kyphosus sea chubs nei */ +/* Kyphosus sectatrix. DESCRIPTION: Bermuda sea chub */ +/* Condylactis aurantiaca. DESCRIPTION: Golden anemone */ +/* Kyphosus vaigiensis. DESCRIPTION: Brassy chub */ +/* Kyphosidae. DESCRIPTION: Sea chubs nei */ +/* Clypeomorus batillariaeformis. DESCRIPTION: Necklace cerith */ +/* Neobythites stefanovi. DESCRIPTION: */ +/* Neobythites steatiticus. DESCRIPTION: */ +/* Nemipterus zysron. DESCRIPTION: Slender threadfin bream */ +/* Nemipterus bipunctatus. DESCRIPTION: Delagoa threadfin bream */ +/* Equulites elongatus. DESCRIPTION: Slender ponyfish */ +/* Nuchequula gerreoides. DESCRIPTION: Decorated ponyfish */ +/* Leiognathus lineolatus. DESCRIPTION: Ornate ponyfish */ +/* Leiognathus brevirostris. DESCRIPTION: Shortnose ponyfish */ +/* Lamnostoma orientalis. DESCRIPTION: Oriental worm-eel */ +/* Lagocephalus spadiceus. DESCRIPTION: Half-smooth golden pufferfish */ +/* Lagocephalus inermis. DESCRIPTION: Smooth blaasop */ +/* Laeops guentheri. DESCRIPTION: G */ +/* ünther's flounder */ +/* Mugil bananensis. DESCRIPTION: Banana mullet */ +/* Laemonema yarrelli. DESCRIPTION: Codling */ +/* Labidiaster annulatus. DESCRIPTION: */ +/* Lithosoma novaezelandiae. DESCRIPTION: Rock star */ +/* Liza grandisquamis. DESCRIPTION: Largescaled mullet */ +/* Laevicardium spp. DESCRIPTION: Egg cockles nei */ +/* Liza falcipinnis. DESCRIPTION: Sicklefin mullet */ +/* Lophiodes kempi. DESCRIPTION: Longspine African angler */ +/* Pleoticus muelleri. DESCRIPTION: Argentine red shrimp */ +/* Lasiancistrus brevispinis. DESCRIPTION: */ +/* Lampanyctus achirus. DESCRIPTION: Lantern fish */ +/* Elops saurus. DESCRIPTION: Ladyfish */ +/* Geotria australis. DESCRIPTION: Pouched lamprey */ +/* Eudontomyzon mariae. DESCRIPTION: Ukrainian brook lamprey */ +/* Lampris guttatus. DESCRIPTION: Opah */ +/* Laminaria hyperborea. DESCRIPTION: North European kelp */ +/* Lampris immaculatus. DESCRIPTION: Southern opah */ +/* Callanthias japonicus. DESCRIPTION: */ +/* Mordacia mordax. DESCRIPTION: Australian lamprey */ +/* Lagochila lacera. DESCRIPTION: Harelip sucker */ +/* Lampanyctodes hectoris. DESCRIPTION: Hector's lanternfish */ +/* Entosphenus tridentatus. DESCRIPTION: Pacific lamprey */ +/* Lampris spp. DESCRIPTION: Moonfish, opah, mambo */ +/* Chlamys squamata. DESCRIPTION: Scaly Pacific scallop */ +/* Lampetra fluviatilis. DESCRIPTION: River lamprey */ +/* Petromyzontidae. DESCRIPTION: Lampreys nei */ +/* Salvelinus namaycush. DESCRIPTION: Lake trout(=Char) */ +/* Petromyzon marinus. DESCRIPTION: Sea lamprey */ +/* Labracoglossa argentiventris. DESCRIPTION: */ +/* Caspiomyzon wagneri. DESCRIPTION: Caspian lamprey */ +/* Notoscopelus spp. DESCRIPTION: Patchwork lampfishes */ +/* Ichthyomyzon unicuspis. DESCRIPTION: Silver lamprey */ +/* Laminariaceae. DESCRIPTION: Kelps nei */ +/* Homarus americanus. DESCRIPTION: American lobster */ +/* Labeo bata. DESCRIPTION: */ +/* Jasus lalandii. DESCRIPTION: Cape rock lobster */ +/* Labeo dero. DESCRIPTION: */ +/* Homarus gammarus. DESCRIPTION: European lobster */ +/* Labeo fimbriatus. DESCRIPTION: Fringed-lipped peninsula carp */ +/* Labeo angra. DESCRIPTION: */ +/* Labeo dyocheilus. DESCRIPTION: */ +/* Labeo gonius. DESCRIPTION: Kuria labeo */ +/* Labeo kontius. DESCRIPTION: */ +/* Labeo forskalii. DESCRIPTION: */ +/* Labeo darlingi. DESCRIPTION: */ +/* Labeo dussumieri. DESCRIPTION: */ +/* Labeo fuelleborni. DESCRIPTION: */ +/* Labeo boga. DESCRIPTION: */ +/* Labeo capensis. DESCRIPTION: Orange River mudfish */ +/* Labeo horie. DESCRIPTION: */ +/* Gymnocranius spp. DESCRIPTION: Largeeye breams */ +/* Homarus spp. DESCRIPTION: Homarus lobsters nei */ +/* Jasus tristani. DESCRIPTION: Tristan da Cunha rock lobster */ +/* Labeo coubie. DESCRIPTION: */ +/* Labeo altivelis. DESCRIPTION: Rednose labeo */ +/* Lethrinus borbonicus. DESCRIPTION: Snubnose emperor */ +/* Lubricogobius exiguus. DESCRIPTION: */ +/* Labeo cylindricus. DESCRIPTION: Redeye labeo */ +/* Labeo ariza. DESCRIPTION: */ +/* Copella arnoldi. DESCRIPTION: Splash tetra */ +/* Labeo calbasu. DESCRIPTION: Orangefin labeo */ +/* Loricaria cataphracta. DESCRIPTION: */ +/* Lycodes adolfi. DESCRIPTION: */ +/* Leiocassis siamensis. DESCRIPTION: Asian bumblebee catfish */ +/* Labracinus cyclophthalmus. DESCRIPTION: Fire-tail devil */ +/* Lycodonus flagellicauda. DESCRIPTION: */ +/* Leiocottus hirundo. DESCRIPTION: Lavender sculpin */ +/* Longiculter siahi. DESCRIPTION: */ +/* Lycogrammoides schmidti. DESCRIPTION: */ +/* Luciosoma bleekeri. DESCRIPTION: */ +/* Loricariichthys labialis. DESCRIPTION: */ +/* Ciliata mustela. DESCRIPTION: Fivebeard rockling */ +/* Lycodichthys antarcticus. DESCRIPTION: */ +/* Lobocheilos bo. DESCRIPTION: */ +/* Lile piquitinga. DESCRIPTION: Atlantic piquitinga */ +/* Leiognathus oblongus. DESCRIPTION: Oblong ponyfish */ +/* Leptocottus armatus. DESCRIPTION: Pacific staghorn sculpin */ +/* Lile stolifera. DESCRIPTION: Pacific piquitinga */ +/* Lycodes reticulatus. DESCRIPTION: Arctic eelpout */ +/* Laciris pelagicus. DESCRIPTION: */ +/* Leiognathus bindus. DESCRIPTION: Orangefin ponyfish */ +/* Larus canus. DESCRIPTION: Mew gull */ +/* Lachnolaimus maximus. DESCRIPTION: Hogfish */ +/* Liparis callyodon. DESCRIPTION: Spotted snailfish */ +/* Leiognathus leuciscus. DESCRIPTION: Whipfin ponyfish */ +/* Lestidiops affinis. DESCRIPTION: */ +/* Lepidorhombus boscii. DESCRIPTION: Four-spot megrim */ +/* Lampadena chavesi. DESCRIPTION: */ +/* Lithodoras dorsalis. DESCRIPTION: */ +/* Lepidorhynchus denticulatus. DESCRIPTION: Thorntooth grenadier */ +/* Lepidoblepharon ophthalmolepis. DESCRIPTION: Scale-eyed flounder */ +/* Ladigesocypris ghigii. DESCRIPTION: */ +/* Laides hexanema. DESCRIPTION: */ +/* Lestrolepis intermedia. DESCRIPTION: */ +/* Aplodactylus etheridgii. DESCRIPTION: Notchheaded marblefish */ +/* Paralichthodes algoensis. DESCRIPTION: Peppered flounder */ +/* Lestidium atlanticum. DESCRIPTION: Atlantic barracudina */ +/* Lepidotrigla microptera. DESCRIPTION: */ +/* Lepidotrigla vanessa. DESCRIPTION: Butterfly gurnard */ +/* Larus dominicanus. DESCRIPTION: Kelp gull */ +/* Lepidoperca pulchella. DESCRIPTION: Orange perch */ +/* Lauridromia dehaani. DESCRIPTION: Japanese sponge crab */ +/* Lepidotrigla carolae. DESCRIPTION: Carol's gurnard */ +/* Lampadena speculigera. DESCRIPTION: */ +/* Ladislavia taczanowskii. DESCRIPTION: Tachanovsky's gudgeon */ +/* Lampadena urophaos. DESCRIPTION: */ +/* Lepidotrigla cavillone. DESCRIPTION: Large-scaled gurnard */ +/* Lutjanus adetii. DESCRIPTION: Yellow-banded snapper */ +/* Patelloida saccharina. DESCRIPTION: Pacific sugar limpet */ +/* Lepidotrigla brachyoptera. DESCRIPTION: Scaly gurnard */ +/* Patelloida striata. DESCRIPTION: Striate limpet */ +/* Cybiosarda elegans. DESCRIPTION: Leaping bonito */ +/* Lepidocybium flavobrunneum. DESCRIPTION: Escolar */ +/* Lepidocephalus annandalei. DESCRIPTION: */ +/* Lichia amia. DESCRIPTION: Leerfish */ +/* Bothidae. DESCRIPTION: Lefteye flounders nei */ +/* Lepidocephalichthys guntea. DESCRIPTION: Guntea loach */ +/* Lefua echigonia. DESCRIPTION: */ +/* Lepidocephalichthys thermalis. DESCRIPTION: */ +/* Lepomis gibbosus. DESCRIPTION: Pumpkinseed */ +/* Eumecichthys fiski. DESCRIPTION: Unicorn crestfish */ +/* Letholycus magellanicus. DESCRIPTION: */ +/* Microstomus kitt. DESCRIPTION: Lemon sole */ +/* Lethrinus microdon. DESCRIPTION: Smalltooth emperor */ +/* Lepidotrigla dieuzeidei. DESCRIPTION: Spiny gurnard */ +/* Lepas pectinata. DESCRIPTION: */ +/* Lepipterus francisci. DESCRIPTION: San Francisco croaker */ +/* Triakis semifasciata. DESCRIPTION: Leopard shark */ +/* Atractosteus tristoechus. DESCRIPTION: Cuban gar */ +/* Leptobotia curta. DESCRIPTION: */ +/* Lepidion spp. DESCRIPTION: Lepidion codlings nei */ +/* Leuciscus spp. DESCRIPTION: Chubs nei */ +/* Leptoscopus macropygus. DESCRIPTION: Estuary stargazer */ +/* Lepidorhombus spp. DESCRIPTION: Megrims nei */ +/* Lappanella fasciata. DESCRIPTION: */ +/* Lophichthys boschmai. DESCRIPTION: */ +/* Lophodiodon calori. DESCRIPTION: Four-bar porcupinefish */ +/* Lipophrys adriaticus. DESCRIPTION: */ +/* Labeotropheus fuelleborni. DESCRIPTION: Blue mbuna */ +/* Lithophaga lithophaga. DESCRIPTION: European date mussel */ +/* Lophonectes gallus. DESCRIPTION: Crested flounder */ +/* Lagocephalus guentheri. DESCRIPTION: Diamondback puffer */ +/* Lopha cristagalli. DESCRIPTION: Cock's comb oyster */ +/* Lophiotoma indica. DESCRIPTION: Indian turrid */ +/* Lampsis fasciola. DESCRIPTION: Wavy-rayed lampmussel */ +/* Lagocephalus laevigatus. DESCRIPTION: Smooth puffer */ +/* Laiphognathus multimaculatus. DESCRIPTION: Spotty blenny */ +/* Lithophaga attenuata. DESCRIPTION: Pacific date mussel */ +/* Lobophyllia corymbosa. DESCRIPTION: Brain root coral */ +/* Luciocephalus pulcher. DESCRIPTION: Pikehead */ +/* Lactophrys triqueter. DESCRIPTION: Smooth trunkfish */ +/* Lophogobius bleekeri. DESCRIPTION: */ +/* Lithophaga teres. DESCRIPTION: Cylinder date mussel */ +/* Lactophrys trigonus. DESCRIPTION: Buffalo trunkfish */ +/* Liopropoma africanum. DESCRIPTION: African basslet */ +/* Lepisosteus platyrhincus. DESCRIPTION: Florida gar */ +/* Lagocephalus wheeleri. DESCRIPTION: */ +/* Lagocephalus spp. DESCRIPTION: */ +/* Placiphorella pacifica. DESCRIPTION: Pacific veiled chiton */ +/* Lagocephalus sceleratus. DESCRIPTION: Silver-cheeked toadfish */ +/* Leiognathus daura. DESCRIPTION: Goldstripe ponyfish */ +/* Leptoglanis bouilloni. DESCRIPTION: */ +/* Clariger cosmurus. DESCRIPTION: */ +/* Leptagonus decagonus. DESCRIPTION: Atlantic poacher */ +/* Leiognathus equulus. DESCRIPTION: Common ponyfish */ +/* Lipogramma flavescens. DESCRIPTION: Yellow basslet */ +/* Plagiopsetta glossa. DESCRIPTION: Tongue flatfish */ +/* Lagocephalus lagocephalus. DESCRIPTION: Oceanic puffer */ +/* Liobagrus reinii. DESCRIPTION: */ +/* Plectroglyphidodon dickii. DESCRIPTION: Blackbar devil */ +/* Leiognathus blochii. DESCRIPTION: Twoblotch ponyfish */ +/* Lagusia micracanthus. DESCRIPTION: */ +/* Plagioscion surinamensis. DESCRIPTION: Pacora */ +/* Lagodon rhomboides. DESCRIPTION: Pinfish */ +/* Leiognathus splendens. DESCRIPTION: Splendid ponyfish */ +/* Plagioscion squamosissimus. DESCRIPTION: South American silver croaker */ +/* Ladigesia roloffi. DESCRIPTION: Sierra leone dwarf characin */ +/* Leiognathus fasciatus. DESCRIPTION: Striped ponyfish */ +/* Plagioscion auratus. DESCRIPTION: Black curbinata */ +/* Leiognathus dussumieri. DESCRIPTION: Dussumier's ponyfish */ +/* Lithogenes villosus. DESCRIPTION: */ +/* Haliotis ovina. DESCRIPTION: Oval abalone */ +/* Haliotis glabra. DESCRIPTION: Glistening abalone */ +/* Iridaea spp. DESCRIPTION: Iridea nei */ +/* Plagiotremus azaleus. DESCRIPTION: Sabertooth blenny */ +/* Lophodolos acanthognathus. DESCRIPTION: */ +/* Lethrinus rubrioperculatus. DESCRIPTION: Spotcheek emperor */ +/* Callichthys callichthys. DESCRIPTION: Cascarudo */ +/* Lithophyllum lichenoides. DESCRIPTION: Stone weed */ +/* Labidochromis caeruleus. DESCRIPTION: Blue streak hap */ +/* Lachneratus phasmaticus. DESCRIPTION: */ +/* Lepidophanes gaussi. DESCRIPTION: */ +/* Scartelaos histophorus. DESCRIPTION: Walking goby */ +/* Lethrinus miniatus. DESCRIPTION: Trumpet emperor */ +/* Lobochilotes labiatus. DESCRIPTION: */ +/* Palaemon hancocki. DESCRIPTION: Tropical river prawn */ +/* Lophiocharon lithinostomus. DESCRIPTION: Marble-mouthed frogfish */ +/* Lobophyllia hemprichii. DESCRIPTION: Largebrain root coral */ +/* Lethrinus nebulosus. DESCRIPTION: Spangled emperor */ +/* Lethrinus olivaceus. DESCRIPTION: Longface emperor */ +/* Callochromis macrops. DESCRIPTION: */ +/* Alluroteuthis antarcticus. DESCRIPTION: Antarctic neosquid */ +/* Lethrinus reticulatus. DESCRIPTION: Red snout emperor */ +/* Lophiomus setigerus. DESCRIPTION: Blackmouth angler */ +/* Trichiurus lepturus. DESCRIPTION: Largehead hairtail */ +/* Lophiodes caulinaris. DESCRIPTION: Spottedtail angler */ +/* Lethrinus variegatus. DESCRIPTION: Slender emperor */ +/* Larus novaehollandiae. DESCRIPTION: Silver gull */ +/* Larus spp. DESCRIPTION: Seagulls nei */ +/* Palaemon hiltoni. DESCRIPTION: Hilton shrimp */ +/* Larus argentatus. DESCRIPTION: Herring gull */ +/* Lipariscus nanus. DESCRIPTION: Pygmy snailfish */ +/* Saurida undosquamis. DESCRIPTION: Brushtooth lizardfish */ +/* Channichthys rhinoceratus. DESCRIPTION: Unicorn icefish */ +/* Labroides dimidiatus. DESCRIPTION: Bluestreak cleaner wrasse */ +/* Lepidiolamprologus attenuatus. DESCRIPTION: */ +/* Liparis fabricii. DESCRIPTION: */ +/* Saurida tumbil. DESCRIPTION: Greater lizardfish */ +/* Liparis coheni. DESCRIPTION: Gulf snailfish */ +/* Lioscorpius longiceps. DESCRIPTION: */ +/* Alectis ciliaris. DESCRIPTION: African pompano */ +/* Lepipterus schomburgkii. DESCRIPTION: Amazon croaker */ +/* Liparis liparis. DESCRIPTION: Striped seasnail */ +/* Liparis montagui. DESCRIPTION: Montagus seasnail */ +/* Molva molva. DESCRIPTION: Ling */ +/* Necora puber. DESCRIPTION: Velvet swimcrab */ +/* Tellina pulchella. DESCRIPTION: Beautiful tellin */ +/* Lipocheilus carnolabrum. DESCRIPTION: Tang's snapper */ +/* Liparis tunicatus. DESCRIPTION: Kelp snailfish */ +/* Lithothamnion spp. DESCRIPTION: Lithothamnion */ +/* Liparis gibbus. DESCRIPTION: Variegated snailfish */ +/* Limbochromis cavalliensis. DESCRIPTION: */ +/* Litobranchus fowleri. DESCRIPTION: Fowler's rockskipper */ +/* Synodontidae. DESCRIPTION: Lizardfishes nei */ +/* Haliotis asinina. DESCRIPTION: Donkey's ear abalone */ +/* Lutjanus agennes. DESCRIPTION: African red snapper */ +/* Lutjanus bohar. DESCRIPTION: Two-spot red snapper */ +/* Lutjanus colorado. DESCRIPTION: Colorado snapper */ +/* Lutjanus decussatus. DESCRIPTION: Checkered snapper */ +/* Lutjanus dentatus. DESCRIPTION: African brown snapper */ +/* Lutjanus fulviflamma. DESCRIPTION: Dory snapper */ +/* Lutjanus gibbus. DESCRIPTION: Humpback red snapper */ +/* Lutjanus johnii. DESCRIPTION: John's snapper */ +/* Lutjanus griseus. DESCRIPTION: Grey snapper */ +/* Lutjanus jocu. DESCRIPTION: Dog snapper */ +/* Lutjanus monostigma. DESCRIPTION: One-spot snapper */ +/* Lutjanus lutjanus. DESCRIPTION: Bigeye snapper */ +/* Lutjanus mahogoni. DESCRIPTION: Mahogany snapper */ +/* Lutjanus analis. DESCRIPTION: Mutton snapper */ +/* Lutjanus goreensis. DESCRIPTION: Gorean snapper */ +/* Lutjanus apodus. DESCRIPTION: Schoolmaster snapper */ +/* Lithothamnion corallioides. DESCRIPTION: */ +/* Lutjanus aratus. DESCRIPTION: Mullet snapper */ +/* Lutjanus guttatus. DESCRIPTION: Spotted rose snapper */ +/* Lutjanus erythropterus. DESCRIPTION: Crimson snapper */ +/* Lutjanus buccanella. DESCRIPTION: Blackfin snapper */ +/* Lutjanus fulvus. DESCRIPTION: Blacktail snapper */ +/* Lutjanus novemfasciatus. DESCRIPTION: Pacific dog snapper */ +/* Lessonia nigrescens. DESCRIPTION: Chilean kelp */ +/* Lutjanus cyanopterus. DESCRIPTION: Cubera snapper */ +/* Lessonia trabeculata. DESCRIPTION: */ +/* Leurochilus acon. DESCRIPTION: Smoothlip stargazer */ +/* Luciogobius albus. DESCRIPTION: */ +/* Plesionika acanthonotus. DESCRIPTION: Lesser striped shrimp */ +/* Lepadidae. DESCRIPTION: Lepadidae barnacles nei */ +/* Liachirus melanospilus. DESCRIPTION: */ +/* Laticauda semifasciata. DESCRIPTION: Erabu sea snake */ +/* Leptochela gracilis. DESCRIPTION: Lesser glass shrimp */ +/* Lipkius holthuisi. DESCRIPTION: Wellington shrimp */ +/* Palaemonetes schmitti. DESCRIPTION: Lagoon shrimp */ +/* Plesionika gigliolii. DESCRIPTION: Italian deep-sea shrimp */ +/* Palaemonetes kadiakensis. DESCRIPTION: Mississippi grass shrimp */ +/* Plesionika alcocki. DESCRIPTION: Gondwana striped shrimp */ +/* Callogobius amikami. DESCRIPTION: */ +/* Plesionika antigai. DESCRIPTION: Catalonian striped shrimp */ +/* Plesionika heterocarpus. DESCRIPTION: Arrow shrimp */ +/* Lepturacanthus pantului. DESCRIPTION: Coromandel hairtail */ +/* Limanda sakhalinensis. DESCRIPTION: Sakhalin sole */ +/* Otolithes ruber. DESCRIPTION: Tigertooth croaker */ +/* Plesionika ensis. DESCRIPTION: Striped gladiator shrimp */ +/* Plesionika martia. DESCRIPTION: Golden shrimp */ +/* Laeops clarus. DESCRIPTION: Clear fin-base flounder */ +/* Lepidochelys olivacea. DESCRIPTION: Olive ridley turtle */ +/* Plesionika edwardsii. DESCRIPTION: Striped soldier shrimp */ +/* Atractosteus spp. DESCRIPTION: */ +/* Lepidochelys kempii. DESCRIPTION: Kemp's ridley turtle */ +/* Lapemis curtus. DESCRIPTION: Short sea snake */ +/* Lepidogalaxias salamandroides. DESCRIPTION: Dwarf pencilfish */ +/* Lethrinus amboinensis. DESCRIPTION: Ambon emperor */ +/* Lamprologus callipterus. DESCRIPTION: */ +/* Lepidoblennius haplodactylus. DESCRIPTION: Eastern jumping blenny */ +/* Leptobrama muelleri. DESCRIPTION: Beachsalmon */ +/* Tellina linguafelis. DESCRIPTION: Cat's tongue tellin */ +/* Leptochilichthys agassizii. DESCRIPTION: */ +/* Alloclinus holderi. DESCRIPTION: Island kelpfish */ +/* Lobulogobius omanensis. DESCRIPTION: Oman goby */ +/* Calliurichthys japonicus. DESCRIPTION: */ +/* Callistoctopus arakawai. DESCRIPTION: */ +/* Lophotus lacepede. DESCRIPTION: Crested oarfish */ +/* Clariallabes attemsi. DESCRIPTION: */ +/* Leptolebias minimus. DESCRIPTION: Barredtail pearlfish */ +/* Lepisosteus osseus. DESCRIPTION: Longnose gar */ +/* Lepidosiren paradoxa. DESCRIPTION: South American lungfish */ +/* Palinurellus gundlachi. DESCRIPTION: Caribbean furry lobster */ +/* Scartella cristata. DESCRIPTION: Molly miller */ +/* Atractosteus spatula. DESCRIPTION: Alligator gar */ +/* Lebiasina astrigata. DESCRIPTION: */ +/* Lissonanchus lusheri. DESCRIPTION: Streaky clingfish */ +/* Lagocephalus lunaris. DESCRIPTION: Lunartail puffer */ +/* Palinurellus wieneckii. DESCRIPTION: Indo-Pacific furry lobster */ +/* Tellina palatam. DESCRIPTION: Palate tellin */ +/* Callianassa tyrrhena. DESCRIPTION: Sand ghost shrimp */ +/* Leiocassis longirostris. DESCRIPTION: Chinese longsnout catfish */ +/* Isurus paucus. DESCRIPTION: Longfin mako */ +/* Parataeniophorus brevis. DESCRIPTION: */ +/* Cetomimoides parri. DESCRIPTION: */ +/* Lamna ditropis. DESCRIPTION: Salmon shark */ +/* Mirapinna esau. DESCRIPTION: Hairyfish */ +/* Lepidion microcephalus. DESCRIPTION: Small-headed cod */ +/* Laemonema longipes. DESCRIPTION: Longfin codling */ +/* Allolumpenus hypochromus. DESCRIPTION: Y-prickleback */ +/* Limnocottus bergianus. DESCRIPTION: */ +/* Lumpenus fabricii. DESCRIPTION: Slender eelblenny */ +/* Liopropoma eukrines. DESCRIPTION: Wrasse bass */ +/* Laemonema laureysi. DESCRIPTION: Guinean codling */ +/* Lepomis macrochirus. DESCRIPTION: Bluegill */ +/* Laemolyta taeniata. DESCRIPTION: */ +/* Mitsukurina owstoni. DESCRIPTION: Goblin shark */ +/* Megachasma pelagios. DESCRIPTION: Megamouth shark */ +/* Palaemonetes antennarius. DESCRIPTION: Pond shrimp */ +/* Lumpenella longirostris. DESCRIPTION: Longsnout prickleback */ +/* Panulirus polyphagus. DESCRIPTION: Mud spiny lobster */ +/* Lamiopsis temmincki. DESCRIPTION: Broadfin shark */ +/* Liosomadoras oncinus. DESCRIPTION: Jaguar catfish */ +/* Lumpenopsis pavlenkoi. DESCRIPTION: */ +/* Palaemon ritteri. DESCRIPTION: Barred grass shrimp */ +/* Ataxolepis apus. DESCRIPTION: */ +/* Limia caymanensis. DESCRIPTION: Grand Cayman limia */ +/* Lamniformes. DESCRIPTION: Mackerel sharks */ +/* Lyconema barbatum. DESCRIPTION: Bearded eelpout */ +/* Leptonotus blainvilleanus. DESCRIPTION: Deep-bodied pipefish */ +/* Lichnochromis acuticeps. DESCRIPTION: Malawi gar */ +/* Silonia silondia. DESCRIPTION: Silond catfish */ +/* Limnochromis abeelei. DESCRIPTION: */ +/* Lobianchia dofleini. DESCRIPTION: Dofleini's lantern fish */ +/* Planctanthias longifilis. DESCRIPTION: */ +/* Lonchopisthus higmani. DESCRIPTION: */ +/* Lepidonectes bimaculata. DESCRIPTION: Twinspot triplefin */ +/* Laminaria japonica. DESCRIPTION: Japanese kelp */ +/* Paracallionymus costatus. DESCRIPTION: Ladder dragonet */ +/* Lonchurus lanceolatus. DESCRIPTION: Longtail croaker */ +/* Selene vomer. DESCRIPTION: Lookdown */ +/* Platygnathochromis melanonotus. DESCRIPTION: Haplochromis yellow black line */ +/* Selene orstedii. DESCRIPTION: Mexican moonfish */ +/* Selene peruviana. DESCRIPTION: Peruvian moonfish */ +/* Leandrites indicus. DESCRIPTION: Indian small prawn */ +/* Limnotilapia dardennii. DESCRIPTION: */ +/* Clinitrachus argentatus. DESCRIPTION: Cline */ +/* Cheiloprion labiatus. DESCRIPTION: Big-lip damsel */ +/* Lethrinops albus. DESCRIPTION: */ +/* Selene brevoortii. DESCRIPTION: Hairfin lookdown */ +/* Selene browni. DESCRIPTION: Caribbean moonfish */ +/* Solen grandis. DESCRIPTION: Grand razor shell */ +/* Pseudopleuronectes yokohamae. DESCRIPTION: Marbled flounder */ +/* Molva spp. DESCRIPTION: Lings nei */ +/* Panulirus cygnus. DESCRIPTION: Australian spiny lobster */ +/* Lobotes surinamensis. DESCRIPTION: Tripletail */ +/* Labeo victorianus. DESCRIPTION: Ningu */ +/* Labeo sindensis. DESCRIPTION: */ +/* Labeo rosae. DESCRIPTION: */ +/* Jasus frontalis. DESCRIPTION: Juan Fernandez rock lobster */ +/* Jasus verreauxi. DESCRIPTION: Green rock lobster */ +/* Labeo pangusia. DESCRIPTION: */ +/* Labeo microphthalmus. DESCRIPTION: */ +/* Panulirus longipes. DESCRIPTION: Longlegged spiny lobster */ +/* Panulirus homarus. DESCRIPTION: Scalloped spiny lobster */ +/* Labeo niloticus. DESCRIPTION: */ +/* Labeo mesops. DESCRIPTION: */ +/* Labeo nandina. DESCRIPTION: */ +/* Odontaspis ferox. DESCRIPTION: Smalltooth sand tiger */ +/* Lophotus capellei. DESCRIPTION: Unicornfish */ +/* Galatheidae. DESCRIPTION: Craylets, squat lobsters */ +/* Jasus edwardsii. DESCRIPTION: Red rock lobster */ +/* Scyllaridae. DESCRIPTION: Slipper lobsters nei */ +/* Thunnus tonggol. DESCRIPTION: Longtail tuna */ +/* Carcharias tricuspidatus. DESCRIPTION: Indian sand tiger */ +/* Leptoscarus vaigiensis. DESCRIPTION: Marbled parrotfish */ +/* Larus fuscus. DESCRIPTION: Lesser black-backed gull */ +/* Reptantia. DESCRIPTION: Lobsters nei */ +/* Panulirus regius. DESCRIPTION: Royal spiny lobster */ +/* Lobotes pacificus. DESCRIPTION: Pacific tripletail */ +/* Lepidarchus adonis. DESCRIPTION: Jellybean tetra */ +/* Leporinus obtusidens. DESCRIPTION: */ +/* Leporinus fasciatus. DESCRIPTION: Banded leporinus */ +/* Leporinus friderici. DESCRIPTION: Threespot leporinus */ +/* Lepidion ensiferus. DESCRIPTION: Patagonian codling */ +/* Pyrrhulina filamentosa. DESCRIPTION: */ +/* Leptocypris guineensis. DESCRIPTION: */ +/* Lepidion guentheri. DESCRIPTION: */ +/* Luciopimelodus pati. DESCRIPTION: Pati */ +/* Lepidion lepidion. DESCRIPTION: Mediterranean codling */ +/* Leucalburnus kosswigi. DESCRIPTION: */ +/* Lampanyctus alatus. DESCRIPTION: */ +/* Lepthoplosternum altamazonicum. DESCRIPTION: */ +/* Leptocypris niloticus. DESCRIPTION: */ +/* Leptocharacidium omospilus. DESCRIPTION: */ +/* Piabucina panamensis. DESCRIPTION: */ +/* Lophiobagrus aquilus. DESCRIPTION: */ +/* Leporinus granti. DESCRIPTION: */ +/* Lepidion eques. DESCRIPTION: North Atlantic codling */ +/* Lepidopygopsis typus. DESCRIPTION: */ +/* Leporellus vittatus. DESCRIPTION: */ +/* Lepidomeda vittata. DESCRIPTION: Little Colorado spinedace */ +/* Lepophidium brevibarbe. DESCRIPTION: Shortbeard cusk-eel */ +/* Liparidae. DESCRIPTION: Snailfishes nei */ +/* Lampanyctus ater. DESCRIPTION: */ +/* Patella spp. DESCRIPTION: Limpets nei */ +/* Liocarcinus arcuatus. DESCRIPTION: Arched swimming crab */ +/* Lucinoma borealis. DESCRIPTION: Northern lucina */ +/* Patella caerulea. DESCRIPTION: Rayed mediterranean limpet */ +/* Laminaria digitata. DESCRIPTION: Tangle */ +/* Patella ferruginea. DESCRIPTION: Ferreous limpet */ +/* Malletia gigantea. DESCRIPTION: Kerguelen malletia */ +/* Lysiosquilla hoevenii. DESCRIPTION: Lizard mantis */ +/* Limopsis marionensis. DESCRIPTION: Antarctic airy limopsis */ +/* Lottia gigantea. DESCRIPTION: Giant owl limpet */ +/* Lithopoma caelatum. DESCRIPTION: Carved star-shell */ +/* Pleuroncodes planipes. DESCRIPTION: Pelagic red crab */ +/* Lysiosquillina maculata. DESCRIPTION: Common banded mantis shrimp */ +/* Patella nigra. DESCRIPTION: Black limpet */ +/* Lethrinus ornatus. DESCRIPTION: Ornate emperor */ +/* Lysiosquilla panamica. DESCRIPTION: Striped mantis */ +/* Haliotis planata. DESCRIPTION: Planate abalone */ +/* Patella rustica. DESCRIPTION: Rustic limpet */ +/* Lysiosquilla scabricauda. DESCRIPTION: Smooth mantis shrimp */ +/* Lottia limatula. DESCRIPTION: File limpet */ +/* Loripes lucinalis. DESCRIPTION: Pale lucina */ +/* Liocarcinus vernalis. DESCRIPTION: Smooth swimcrab */ +/* Haliotis varia. DESCRIPTION: Variable abalone */ +/* Laminaria saccharina. DESCRIPTION: Sea belt */ +/* Patella ulyssiponensis. DESCRIPTION: Rough limpet */ +/* Liocarcinus spp. DESCRIPTION: Liocarcinus swimcrabs nei */ +/* Clarias alluaudi. DESCRIPTION: */ +/* Pristipomoides sieboldii. DESCRIPTION: Lavender jobfish */ +/* Paracaesio caerulea. DESCRIPTION: Japanese snapper */ +/* Laridae. DESCRIPTION: */ +/* Radiicephalus elongatus. DESCRIPTION: Tapertail */ +/* Larimus effulgens. DESCRIPTION: Shining drum */ +/* Paracaesio gonzalesi. DESCRIPTION: Vanuatu snapper */ +/* Labeo rohita. DESCRIPTION: Roho labeo */ +/* Pristipomoides multidens. DESCRIPTION: Goldbanded jobfish */ +/* Larimus breviceps. DESCRIPTION: Shorthead drum */ +/* Paracaesio kusakarii. DESCRIPTION: Saddle-back snapper */ +/* Latris lineata. DESCRIPTION: Striped trumpeter */ +/* Cleithracara maronii. DESCRIPTION: Keyhole cichlid */ +/* Clarias ngamensis. DESCRIPTION: Blunt-toothed African catfish */ +/* Selar boops. DESCRIPTION: Oxeye scad */ +/* Leiarius marmoratus. DESCRIPTION: */ +/* Larabicus quadrilineatus. DESCRIPTION: */ +/* Larimus argenteus. DESCRIPTION: Silver drum */ +/* Liobranchia stria. DESCRIPTION: Minute clingfish */ +/* Clarias theodorae. DESCRIPTION: Snake catfish */ +/* Pristipomoides typus. DESCRIPTION: Sharptooth jobfish */ +/* Larimus acclivis. DESCRIPTION: Steeplined drum */ +/* Clarias werneri. DESCRIPTION: */ +/* Paracaesio xanthura. DESCRIPTION: Yellowtail blue snapper */ +/* Pristipomoides argyrogrammicus. DESCRIPTION: Ornate jobfish */ +/* Littoraria scabra. DESCRIPTION: Rough periwinkle */ +/* Leptosynanceia asteroblepa. DESCRIPTION: */ +/* Leptostomias bilobatus. DESCRIPTION: */ +/* Stylephorus chordatus. DESCRIPTION: Tube-eye */ +/* Liposarcus pardalis. DESCRIPTION: */ +/* Cephalocassis melanochir. DESCRIPTION: */ +/* Alphestes afer. DESCRIPTION: Mutton hamlet */ +/* Labrisomus gobio. DESCRIPTION: Palehead blenny */ +/* Plesienchelys stehmanni. DESCRIPTION: */ +/* Larimus pacificus. DESCRIPTION: Pacific drum */ +/* Alepes djedaba. DESCRIPTION: Shrimp scad */ +/* Lates microlepis. DESCRIPTION: Forktail lates */ +/* Lates mariae. DESCRIPTION: Bigeye lates */ +/* Alepes melanoptera. DESCRIPTION: Blackfin scad */ +/* Lepidopsetta mochigarei. DESCRIPTION: Dusky sole */ +/* Latreutes laminirostris. DESCRIPTION: Platenose shrimp */ +/* Placidochromis electra. DESCRIPTION: Deep-water hap */ +/* Leuresthes sardina. DESCRIPTION: Gulf grunion */ +/* Alphestes multiguttatus. DESCRIPTION: Rivulated mutton hamlet */ +/* Labidesthes sicculus. DESCRIPTION: Brook silverside */ +/* Alepes vari. DESCRIPTION: Herring scad */ +/* Lissocampus bannwarthi. DESCRIPTION: */ +/* Lophiosilurus alexandri. DESCRIPTION: */ +/* Lethenteron camtschaticum. DESCRIPTION: Arctic lamprey */ +/* Euthynnus alletteratus. DESCRIPTION: Little tunny(=Atl.black skipj) */ +/* Leptodoras acipenserinus. DESCRIPTION: */ +/* Alectis indicus. DESCRIPTION: Indian threadfish */ +/* Lethrinus enigmaticus. DESCRIPTION: Blackeye emperor */ +/* Leptoichthys fistularius. DESCRIPTION: Brush-tailed pipefish */ +/* Lates angustifrons. DESCRIPTION: Tanganyika lates */ +/* Leiopotherapon aheneus. DESCRIPTION: Fortescue grunter */ +/* Lethrinus laticaudis. DESCRIPTION: Grass emperor */ +/* Lutjanus vivanus. DESCRIPTION: Silk snapper */ +/* Lethrinus harak. DESCRIPTION: Thumbprint emperor */ +/* Culter alburnus. DESCRIPTION: */ +/* Limnothrissa miodon. DESCRIPTION: Lake Tanganyika sardine */ +/* Lethrinus atlanticus. DESCRIPTION: Atlantic emperor */ +/* Lates macrophthalmus. DESCRIPTION: Albert lates */ +/* Lotella phycis. DESCRIPTION: Beardie */ +/* Lethrinus mahsena. DESCRIPTION: Sky emperor */ +/* Lamontichthys maracaibero. DESCRIPTION: */ +/* Lethrinus lentjan. DESCRIPTION: Pink ear emperor */ +/* Lethrinus atkinsoni. DESCRIPTION: Pacific yellowtail emperor */ +/* Alectrias alectrolophus. DESCRIPTION: Stone cockscomb */ +/* Laetacara flavilabris. DESCRIPTION: */ +/* Lethotremus awae. DESCRIPTION: */ +/* Lestradea perspicax. DESCRIPTION: */ +/* Lethrinus erythropterus. DESCRIPTION: Longfin emperor */ +/* Latreutes planirostris. DESCRIPTION: Flatnose shrimp */ +/* Liauchenoglanis maculatus. DESCRIPTION: */ +/* Lutjanus sebae. DESCRIPTION: Emperor red snapper */ +/* Leuciscus cephaloides. DESCRIPTION: */ +/* Leucaspius delineatus. DESCRIPTION: Belica */ +/* Labiobarbus leptocheilus. DESCRIPTION: */ +/* Lutjanus rufolineatus. DESCRIPTION: Yellow-lined snapper */ +/* Clupisoma garua. DESCRIPTION: */ +/* Leuciscus cephalus. DESCRIPTION: Chub */ +/* Lucania goodei. DESCRIPTION: Bluefin killifish */ +/* Lutjanus vitta. DESCRIPTION: Brownstripe red snapper */ +/* Selene dorsalis. DESCRIPTION: African moonfish */ +/* Lumbrineris latreilli. DESCRIPTION: */ +/* Cyclopterus lumpus. DESCRIPTION: Lumpfish(=Lumpsucker) */ +/* Luciosudis normani. DESCRIPTION: */ +/* Leptolucania ommata. DESCRIPTION: Pygmy killifish */ +/* Leuciscus polylepis. DESCRIPTION: */ +/* Latreutes acicularis. DESCRIPTION: Hoso shrimp */ +/* Leuciscus pyrenaicus. DESCRIPTION: */ +/* Leuciscus souffia. DESCRIPTION: Vairone */ +/* Amphilius platychir. DESCRIPTION: Mountain barbel */ +/* Siluranodon auritus. DESCRIPTION: */ +/* Lutjanus rivulatus. DESCRIPTION: Blubberlip snapper */ +/* Lauridromia indica. DESCRIPTION: Cannonball sponge crab */ +/* Lucifuga dentatus. DESCRIPTION: Toothed Cuban cusk-eel */ +/* Leuciscus borysthenicus. DESCRIPTION: Dnieper chub */ +/* Lucayablennius zingaro. DESCRIPTION: Arrow blenny */ +/* Larus atricilla. DESCRIPTION: Laughing gull */ +/* Laurencia obtusa. DESCRIPTION: Blunt laurenzia */ +/* Laevicardium crassum. DESCRIPTION: Norwegian egg cockle */ +/* Zoarcidae. DESCRIPTION: Eelpouts nei */ +/* Lavinia exilicauda. DESCRIPTION: Hitch */ +/* Laurencia pacifica. DESCRIPTION: Pacific laurenzia */ +/* Lutjanus goldiei. DESCRIPTION: Papuan black snapper */ +/* Larus audouinii. DESCRIPTION: Audouin's gull */ +/* Leviprora inops. DESCRIPTION: */ +/* Larus cachinnans. DESCRIPTION: Yellow-legged gull */ +/* Lutjanus kasmira. DESCRIPTION: Common bluestripe snapper */ +/* Laevicardium elatum. DESCRIPTION: Giant Pacific egg cockle */ +/* Luvarus imperialis. DESCRIPTION: Luvar */ +/* Lutjanus fulgens. DESCRIPTION: Golden African snapper */ +/* Laevicardium oblongum. DESCRIPTION: Oblong egg cockle */ +/* Lycodapus pachysoma. DESCRIPTION: Stout slipskin */ +/* Lepisosteus platostomus. DESCRIPTION: Shortnose gar */ +/* Laurencia sinicola. DESCRIPTION: Swollen laurenzia */ +/* Lepisosteus oculatus. DESCRIPTION: Spotted gar */ +/* Larus marinus. DESCRIPTION: Great black-backed gull */ +/* Laevicardium laevigatum. DESCRIPTION: Common egg cockle */ +/* Larus glaucoides. DESCRIPTION: Iceland gull */ +/* Alepes spp. DESCRIPTION: */ +/* Larus hyperboreus. DESCRIPTION: Glaucous gull */ +/* Larus sabini. DESCRIPTION: Sabine's gull */ +/* Pristipomoides auricilla. DESCRIPTION: Goldflag jobfish */ +/* Lycenchelys bellingshauseni. DESCRIPTION: */ +/* Luciobarbus bocagei. DESCRIPTION: */ +/* Lutjanus ehrenbergii. DESCRIPTION: Blackspot snapper */ +/* Pristipomoides flavipinnis. DESCRIPTION: Golden eye jobfish */ +/* Lagowskiella czekanowskii. DESCRIPTION: Czekanowski's minnow */ +/* Lipophrys velifer. DESCRIPTION: */ +/* Loweina interrupta. DESCRIPTION: */ +/* Lutjanus jordani. DESCRIPTION: Jordan's snapper */ +/* Luciobarbus comizo. DESCRIPTION: */ +/* Lutjanus lemniscatus. DESCRIPTION: Yellowstreaked snapper */ +/* Lutjanus coeruleolineatus. DESCRIPTION: Blueline snapper */ +/* Lethrinus obsoletus. DESCRIPTION: Orange-striped emperor */ +/* Lutjanus peru. DESCRIPTION: Pacific red snapper */ +/* Lutjanus quinquelineatus. DESCRIPTION: Five-lined snapper */ +/* Paracaesio stonei. DESCRIPTION: Cocoa snapper */ +/* Lophelia pertusa. DESCRIPTION: */ +/* Lutjanus timorensis. DESCRIPTION: Timor snapper */ +/* Leporinus macrocephalus. DESCRIPTION: */ +/* Leporinus elongatus. DESCRIPTION: */ +/* Pristipomoides spp. DESCRIPTION: Jobfishes nei */ +/* Lycenchelys antarctica. DESCRIPTION: */ +/* Pristipomoides zonatus. DESCRIPTION: Oblique-banded snapper */ +/* Latiaxis babelis. DESCRIPTION: Babel's latiaxis */ +/* Lithoxus bovallii. DESCRIPTION: */ +/* Luxilus chrysocephalus. DESCRIPTION: Striped shiner */ +/* Lethrinus erythracanthus. DESCRIPTION: Orange-spotted emperor */ +/* Lessonia fuscescens. DESCRIPTION: Southern brown kelp */ +/* Lycodes esmarkii. DESCRIPTION: Greater eelpout */ +/* Lethrinus xanthochilus. DESCRIPTION: Yellowlip emperor */ +/* Luxilus cornutus. DESCRIPTION: Common shiner */ +/* Leptoseris papyracea. DESCRIPTION: Leaf coral */ +/* Platax orbicularis. DESCRIPTION: Orbicular batfish */ +/* Lepisosteidae. DESCRIPTION: Gars nei */ +/* Myctophidae. DESCRIPTION: Lanternfishes nei */ +/* Lycodapus spp. DESCRIPTION: */ +/* Leporinus spp. DESCRIPTION: */ +/* Ophthalmolycus amberensis. DESCRIPTION: */ +/* Lyconus brachycolus. DESCRIPTION: */ +/* Larimichthys croceus. DESCRIPTION: Large yellow croaker */ +/* Lampanyctus crocodilus. DESCRIPTION: Jewel lanternfish */ +/* Collybus drachme. DESCRIPTION: */ +/* Lampanyctus festivus. DESCRIPTION: */ +/* Lyconodes argenteus. DESCRIPTION: */ +/* Amblydoras hancockii. DESCRIPTION: Blue-eye catfish */ +/* Lampanyctus intricarius. DESCRIPTION: */ +/* Lampanyctus pusillus. DESCRIPTION: */ +/* Lycodapus derjugini. DESCRIPTION: */ +/* Lampanyctus lineatus. DESCRIPTION: */ +/* Amblyceps mangois. DESCRIPTION: */ +/* Lamprichthys tanganicanus. DESCRIPTION: Tanganyika killifish */ +/* Lampanyctus macdonaldi. DESCRIPTION: */ +/* Lampanyctus photonotus. DESCRIPTION: */ +/* Lysiosquilla desaussurei. DESCRIPTION: Queen lizard mantis */ +/* Lythrurus roseipinnis. DESCRIPTION: Cherryfin shiner */ +/* Lythrurus snelsoni. DESCRIPTION: Ouachita shiner */ +/* Linophryne algibarbata. DESCRIPTION: */ +/* Lampanyctus cuprarius. DESCRIPTION: */ +/* Lycenchelys brevimaxillaris. DESCRIPTION: */ +/* Lyopsetta exilis. DESCRIPTION: Slender sole */ +/* Latreutes anoplonyx. DESCRIPTION: Medusa shrimp */ +/* Callionymus lyra. DESCRIPTION: Dragonet */ +/* Lycodapus antarcticus. DESCRIPTION: */ +/* Lepidozygus tapeinosoma. DESCRIPTION: Fusilier damselfish */ +/* Lycodichthys dearborni. DESCRIPTION: */ +/* Loricariichthys anus. DESCRIPTION: */ +/* Liza dumerili. DESCRIPTION: Grooved mullet */ +/* Luzonichthys earlei. DESCRIPTION: */ +/* Labiobarbus festivus. DESCRIPTION: Signal barb */ +/* Lycozoarces regani. DESCRIPTION: */ +/* Liza abu. DESCRIPTION: Abu mullet */ +/* Liza subviridis. DESCRIPTION: Greenback mullet */ +/* Lutjanus sanguineus. DESCRIPTION: Humphead snapper */ +/* Liza klunzingeri. DESCRIPTION: Klunzinger's mullet */ +/* Saurida brasiliensis. DESCRIPTION: Brazilian lizardfish */ +/* Liza macrolepis. DESCRIPTION: Largescale mullet */ +/* Leucozonia nassa. DESCRIPTION: Chestnut latirus */ +/* Lepidisis olapa. DESCRIPTION: Unbranched bamboo coral */ +/* Liza parsia. DESCRIPTION: Goldspot mullet */ +/* Labiobarbus fasciatus. DESCRIPTION: */ +/* Liza richardsonii. DESCRIPTION: South African mullet */ +/* Liza saliens. DESCRIPTION: Leaping mullet */ +/* Liza tade. DESCRIPTION: Tade gray mullet */ +/* Liza tricuspidens. DESCRIPTION: */ +/* Liza vaigiensis. DESCRIPTION: Squaretail mullet */ +/* Labiobarbus ocellatus. DESCRIPTION: */ +/* Lethrinus spp. DESCRIPTION: */ +/* Lycenchelys spp. DESCRIPTION: */ +/* Liza spp. DESCRIPTION: */ +/* Scomber australasicus. DESCRIPTION: Blue mackerel */ +/* Mycteroperca bonaci. DESCRIPTION: Black grouper */ +/* Scomber scombrus. DESCRIPTION: Atlantic mackerel */ +/* Aldrichetta forsteri. DESCRIPTION: Yellow-eye mullet */ +/* Aetobatus narinari. DESCRIPTION: Spotted eagle ray */ +/* Aetobatus flagellum. DESCRIPTION: Longheaded eagle ray */ +/* Mactra glabrata. DESCRIPTION: Smooth mactra */ +/* Macronectes halli. DESCRIPTION: Hall's giant petrel */ +/* Macronectes giganteus. DESCRIPTION: Antarctic giant petrel */ +/* Agonostomus telfairii. DESCRIPTION: Fairy mullet */ +/* Isurus spp. DESCRIPTION: Mako sharks */ +/* Lutjanus malabaricus. DESCRIPTION: Malabar blood snapper */ +/* Mammalia. DESCRIPTION: Aquatic mammals nei */ +/* Mobulidae. DESCRIPTION: Mantas, devil rays nei */ +/* Aetobatus ocellatus. DESCRIPTION: */ +/* Magnisudis prionosa. DESCRIPTION: Southern barracudina */ +/* Metapenaeus anchistus. DESCRIPTION: Spiny greasyback shrimp */ +/* Epinephelus malabaricus. DESCRIPTION: Malabar grouper */ +/* Scomber japonicus. DESCRIPTION: Chub mackerel */ +/* Mactridae. DESCRIPTION: Mactra surf clams nei */ +/* Maurolicus muelleri. DESCRIPTION: Silvery lightfish */ +/* Scomberomorus tritor. DESCRIPTION: West African Spanish mackerel */ +/* Scombridae. DESCRIPTION: Mackerels nei */ +/* Mahidolia mystacina. DESCRIPTION: Flagfin prawn goby */ +/* Scomber spp. DESCRIPTION: Scomber mackerels nei */ +/* Macrobrachium amazonicum. DESCRIPTION: Amazonian river prawn */ +/* Metapenaeus bennettae. DESCRIPTION: Greentail shrimp */ +/* Marleyella bicolorata. DESCRIPTION: Comb flounder */ +/* Mauligobius maderensis. DESCRIPTION: */ +/* Mugilogobius abei. DESCRIPTION: */ +/* Mesogobius batrachocephalus. DESCRIPTION: Knout goby */ +/* Ambassis gymnocephalus. DESCRIPTION: Bald glassy */ +/* Amblyrhynchotes honckenii. DESCRIPTION: Evileye blaasop */ +/* Amblychaeturichthys sciistius. DESCRIPTION: */ +/* Ambassis jacksoniensis. DESCRIPTION: */ +/* Macrobrachium carcinus. DESCRIPTION: Painted river prawn */ +/* Amblygobius albimaculatus. DESCRIPTION: Butterfly goby */ +/* Macrobrachium malcolmsonii. DESCRIPTION: Monsoon river prawn */ +/* Ambassis natalensis. DESCRIPTION: Slender glassy */ +/* Cambarus bartonii. DESCRIPTION: Appalachian brook grayfish */ +/* Chelon bispinosus. DESCRIPTION: */ +/* Strombus costatus. DESCRIPTION: Milk conch */ +/* Ambassis productus. DESCRIPTION: Longspine glassy */ +/* Minilabrus striatus. DESCRIPTION: Minute wrasse */ +/* Mimoblennius atrocinctus. DESCRIPTION: */ +/* Amblyeleotris aurora. DESCRIPTION: Pinkbar goby */ +/* Malacanthus brevirostris. DESCRIPTION: Quakerfish */ +/* Megabalanus tintinnabulum. DESCRIPTION: */ +/* Macronectes spp. DESCRIPTION: Giant petrels nei */ +/* Maroubra yasudai. DESCRIPTION: Orange pipefish */ +/* Austromegabalanus psittacus. DESCRIPTION: Giant barnacle */ +/* Macquaria ambigua. DESCRIPTION: Golden perch */ +/* Congresox talabon. DESCRIPTION: Yellow pike conger */ +/* Macrourus carinatus. DESCRIPTION: Ridge scaled rattail */ +/* Ceratoscopelus maderensis. DESCRIPTION: Madeira lantern fish */ +/* Coelorinchus kermadecus. DESCRIPTION: Kermadec rattail */ +/* Macroparalepis affinis. DESCRIPTION: */ +/* Congresox talabonoides. DESCRIPTION: Indian pike conger */ +/* Macrourus holotrachys. DESCRIPTION: Bigeye grenadier */ +/* Microphotolepis multipunctata. DESCRIPTION: */ +/* Cleidopus gloriamaris. DESCRIPTION: Pineapplefish */ +/* Coelorinchus kaiyomaru. DESCRIPTION: Campbell whiptail */ +/* Scapharca subcrenata. DESCRIPTION: Half-crenated ark */ +/* Coryphaenoides murrayi. DESCRIPTION: Abyssal rattail */ +/* Malacosteus niger. DESCRIPTION: Stoplight loosejaw */ +/* Macrochirichthys macrochirus. DESCRIPTION: Long pectoral-fin minnow */ +/* Maccullochella peelii. DESCRIPTION: Murray cod */ +/* Chaenomugil proboscideus. DESCRIPTION: Snouted mullet */ +/* Coryphaenoides serrulatus. DESCRIPTION: Serrulate whiptail */ +/* Coryphaenoides subserrulatus. DESCRIPTION: Longrayed whiptail */ +/* Coelorinchus matamua. DESCRIPTION: Mahia whiptail */ +/* Myctophum nitidulum. DESCRIPTION: */ +/* Macrhybopsis aestivalis. DESCRIPTION: Speckled chub */ +/* Cestraeus oxyrhynchus. DESCRIPTION: Sharp-nosed river mullet */ +/* Microthrissa royauxi. DESCRIPTION: Royal sprat */ +/* Microrasbora erythromicron. DESCRIPTION: */ +/* Macoma nasuta. DESCRIPTION: Bentnose macoma */ +/* Medialuna californiensis. DESCRIPTION: Halfmoon */ +/* Microspathodon bairdii. DESCRIPTION: Bumphead damselfish */ +/* Megadontognathus cuyuniense. DESCRIPTION: */ +/* Munida hispida. DESCRIPTION: Bristle squat lobster */ +/* Mandibularca resinus. DESCRIPTION: */ +/* Meda fulgida. DESCRIPTION: Spikedace */ +/* Chiasmodon bolangeri. DESCRIPTION: */ +/* Microdesmus aethiopicus. DESCRIPTION: */ +/* Pinirampus pirinampu. DESCRIPTION: Flatwhiskered catfish */ +/* Metapenaeopsis dalei. DESCRIPTION: Kishi velvet shrimp */ +/* Monodacna colorata. DESCRIPTION: Coloured lagoon cockle */ +/* Pimelodus platicirris. DESCRIPTION: */ +/* Pimelodus maculatus. DESCRIPTION: */ +/* Pimelodus ornatus. DESCRIPTION: */ +/* Acanthurus monroviae. DESCRIPTION: Monrovia doctorfish */ +/* Pimelodus pictus. DESCRIPTION: */ +/* Americardia media. DESCRIPTION: Atlantic strawberry cockle */ +/* Cygnodraco mawsoni. DESCRIPTION: Mawson's dragonfish */ +/* Pimelodus spegazzinii. DESCRIPTION: */ +/* Merodontotus tigrinus. DESCRIPTION: Tigerstriped catfish */ +/* Piramutana piramuta. DESCRIPTION: */ +/* Macrodontogobius wilburi. DESCRIPTION: Largetooth goby */ +/* Monodonta nebulosa. DESCRIPTION: Top shell */ +/* Mastacembelus dayi. DESCRIPTION: */ +/* Muraena spp. DESCRIPTION: */ +/* Melanocharacidium blennioides. DESCRIPTION: */ +/* Metanephrops challengeri. DESCRIPTION: New Zealand lobster */ +/* Menticirrhus undulatus. DESCRIPTION: California kingcroaker */ +/* Megalocottus platycephalus. DESCRIPTION: Belligerent sculpin */ +/* Eutaeniophorus festivus. DESCRIPTION: Festive ribbonfish */ +/* Lepidorhombus whiffiagonis. DESCRIPTION: Megrim */ +/* Mesocottus haitej. DESCRIPTION: */ +/* Mendosoma lineatum. DESCRIPTION: Telescope fish */ +/* Melanocetus johnsoni. DESCRIPTION: Humpback anglerfish */ +/* Metapenaeus alcocki. DESCRIPTION: Fire shrimp */ +/* Melanostigma spp. DESCRIPTION: */ +/* Menticirrhus panamensis. DESCRIPTION: Panama kingcroaker */ +/* Melichthys niger. DESCRIPTION: Black triggerfish */ +/* Menticirrhus ophicephalus. DESCRIPTION: Snakehead kingcroaker */ +/* Mesoplodon spp. DESCRIPTION: Beaked whales nei */ +/* Metapenaeopsis lamellata. DESCRIPTION: Humpback shrimp */ +/* Mesopristes argenteus. DESCRIPTION: Silver grunter */ +/* Ethmidium maculatum. DESCRIPTION: Pacific menhaden */ +/* Metapenaeus spp. DESCRIPTION: Metapenaeus shrimps nei */ +/* Menticirrhus nasus. DESCRIPTION: Highfin king croaker */ +/* Milyeringa veritas. DESCRIPTION: Cave gudgeon */ +/* Peponocephala electra. DESCRIPTION: Melon-headed whale */ +/* Metapenaeopsis toloensis. DESCRIPTION: Tolo velvet shrimp */ +/* Metynnis argenteus. DESCRIPTION: */ +/* Malea pomum. DESCRIPTION: Grinning tun */ +/* Amphistichus argenteus. DESCRIPTION: Barred surfperch */ +/* Macropharyngodon bipartitus. DESCRIPTION: Rare wrasse */ +/* Margaritifera falcata. DESCRIPTION: Western pearlshell */ +/* Metanephrops sinensis. DESCRIPTION: China lobster */ +/* Semicossyphus reticulatus. DESCRIPTION: */ +/* Eucinostomus melanopterus. DESCRIPTION: Flagfin mojarra */ +/* Macroramphosus gracilis. DESCRIPTION: Slender snipefish */ +/* Metanephrops thomsoni. DESCRIPTION: Red-banded lobster */ +/* Metanephrops binghami. DESCRIPTION: Caribbean lobster */ +/* Metanephrops japonicus. DESCRIPTION: Japanese lobster */ +/* Metanephrops sibogae. DESCRIPTION: Siboga lobster */ +/* Metanephrops australiensis. DESCRIPTION: Northwest lobster */ +/* Metanephrops formosanus. DESCRIPTION: Formosa lobster */ +/* Metanephrops neptunus. DESCRIPTION: Neptune lobster */ +/* Metanephrops boschmai. DESCRIPTION: Bight lobster */ +/* Macrorhamphosodes platycheilus. DESCRIPTION: Trumpetsnout spikefish */ +/* Metanephrops sagamiensis. DESCRIPTION: Okinawa sculptured lobster */ +/* Microgeophagus ramirezi. DESCRIPTION: Ram cichlid */ +/* Metanephrops rubellus. DESCRIPTION: Urugayian lobster */ +/* Metanephrops armatus. DESCRIPTION: Armoured lobster */ +/* Metanephrops arafurensis. DESCRIPTION: Arafura lobster */ +/* Metanephrops velutinus. DESCRIPTION: Velvet lobster */ +/* Microcephalophis gracilis. DESCRIPTION: Small-headed sea snake */ +/* Stomolophus meleagris. DESCRIPTION: Cannonball jellyfish */ +/* Margaritifera margaritifera. DESCRIPTION: Eastern pearlshell */ +/* Marphysa sanguinea. DESCRIPTION: */ +/* Liza aurata. DESCRIPTION: Golden grey mullet */ +/* Myersglanis blythii. DESCRIPTION: */ +/* Liza ramada. DESCRIPTION: Thinlip grey mullet */ +/* Magosternarchus duccis. DESCRIPTION: */ +/* Microglanis ater. DESCRIPTION: */ +/* Megalonibea fusca. DESCRIPTION: */ +/* Megalonema argentina. DESCRIPTION: */ +/* Malea ringens. DESCRIPTION: Pacific cask shell */ +/* Mugil incilis. DESCRIPTION: Parassi mullet */ +/* Mogurnda aiwasoensis. DESCRIPTION: */ +/* Moolgarda pedaraki. DESCRIPTION: Longfin mullet */ +/* Malacoglanis gelatinosus. DESCRIPTION: */ +/* Margariscus margarita. DESCRIPTION: Pearl dace */ +/* Nematogenys inermis. DESCRIPTION: */ +/* Myoglanis collettii. DESCRIPTION: */ +/* Megalechis personata. DESCRIPTION: */ +/* Metagrapsus messor. DESCRIPTION: Shore crab */ +/* Argyrosomus regius. DESCRIPTION: Meagre */ +/* Mugil spp. DESCRIPTION: */ +/* Gavialiceps taeniola. DESCRIPTION: */ +/* Mugil curema. DESCRIPTION: White mullet */ +/* Malacocottus gibber. DESCRIPTION: */ +/* Megalodoras irwini. DESCRIPTION: */ +/* Microgadus proximus. DESCRIPTION: Pacific tomcod */ +/* Miuroglanis platycephalus. DESCRIPTION: */ +/* Melongena patula. DESCRIPTION: Pacific melongena */ +/* Brevoortia tyrannus. DESCRIPTION: Atlantic menhaden */ +/* Meiacanthus abditus. DESCRIPTION: */ +/* Mylocheilus caurinus. DESCRIPTION: Peamouth */ +/* Pempheris adspersus. DESCRIPTION: */ +/* Crenimugil heterocheilus. DESCRIPTION: Half fringelip mullet */ +/* Millepora platyphylla. DESCRIPTION: Wello fire coral */ +/* Brevoortia patronus. DESCRIPTION: Gulf menhaden */ +/* Monochirus hispidus. DESCRIPTION: Whiskered sole */ +/* Pempheris poeyi. DESCRIPTION: Curved sweeper */ +/* Halargyreus johnsonii. DESCRIPTION: Slender codling */ +/* Myrichthys aki. DESCRIPTION: */ +/* Pempheris oualensis. DESCRIPTION: Silver sweeper */ +/* Mecaenichthys immaculatus. DESCRIPTION: Immaculate damsel */ +/* Coryphaenoides nasutus. DESCRIPTION: Largenose grenadier */ +/* Mylopharodon conocephalus. DESCRIPTION: Hardhead */ +/* Brevoortia pectinata. DESCRIPTION: Argentine menhaden */ +/* Macrophtalmus depressus. DESCRIPTION: Mud crab */ +/* Microdontochromis rotundiventralis. DESCRIPTION: */ +/* Brevoortia aurea. DESCRIPTION: Brazilian menhaden */ +/* Brevoortia smithi. DESCRIPTION: Yellowfin menhaden */ +/* Myrophis punctatus. DESCRIPTION: Speckled worm-eel */ +/* Pempheris vanicolensis. DESCRIPTION: Vanikoro sweeper */ +/* Melanosuchus niger. DESCRIPTION: Black caiman */ +/* Stomolophus nomurai. DESCRIPTION: */ +/* Mystriophis porphyreus. DESCRIPTION: */ +/* Menippe rumphii. DESCRIPTION: Maroon stone crab */ +/* Microchirus azevia. DESCRIPTION: */ +/* Microsternarchus bilineatus. DESCRIPTION: */ +/* Chionodraco myersi. DESCRIPTION: Myers' icefish */ +/* Micrognathus andersonii. DESCRIPTION: Shortnose pipefish */ +/* Microcharacidium eleotrioides. DESCRIPTION: */ +/* Mirolabrichthys flavoguttatus. DESCRIPTION: */ +/* Microphis argulus. DESCRIPTION: Flat-nosed pipefish */ +/* Miichthys miiuy. DESCRIPTION: Mi-iuy (brown) croaker */ +/* Mimagoniates inequalis. DESCRIPTION: Croaking tetra */ +/* Micrenophrys lilljeborgii. DESCRIPTION: Norway bullhead */ +/* Micropogonias ectenes. DESCRIPTION: Slender croaker */ +/* Chanos chanos. DESCRIPTION: Milkfish */ +/* Minytrema melanops. DESCRIPTION: Spotted sucker */ +/* Microlepidotus inornatus. DESCRIPTION: Wavyline grunt */ +/* Mitotichthys mollisoni. DESCRIPTION: Mollison's pipefish */ +/* Microstomus pacificus. DESCRIPTION: Dover sole */ +/* Menippe nodifrons. DESCRIPTION: Lumpy stone crab */ +/* Microcanthus strigatus. DESCRIPTION: Stripey */ +/* Microcottus sellaris. DESCRIPTION: Brightbelly sculpin */ +/* Micropogonias altipinnis. DESCRIPTION: Tallfin croaker */ +/* Micronemacheilus cruciatus. DESCRIPTION: */ +/* Miracorvina angolensis. DESCRIPTION: Angola croaker */ +/* Balaenoptera acutorostrata. DESCRIPTION: Minke whale */ +/* Minyichthys myersi. DESCRIPTION: Myers' pipefish */ +/* Microchromis zebroides. DESCRIPTION: */ +/* Myripristis jacobus. DESCRIPTION: Blackbar soldierfish */ +/* Metapenaeopsis barbata. DESCRIPTION: Whiskered velvet shrimp */ +/* Microstomus achne. DESCRIPTION: Slime flounder */ +/* Metapenaeopsis borradailei. DESCRIPTION: Reef shrimp */ +/* Metapenaeus intermedius. DESCRIPTION: Middle shrimp */ +/* Millerigobius macrocephalus. DESCRIPTION: */ +/* Metapenaeopsis goodei. DESCRIPTION: Caribbean velvet shrimp */ +/* Melanochromis johannii. DESCRIPTION: Bluegray mbuna */ +/* Metapenaeopsis crassissima. DESCRIPTION: Scout velvet shrimp */ +/* Metapenaeopsis hilarula. DESCRIPTION: Minstrel shrimp */ +/* Metapenaeus kutchensis. DESCRIPTION: Ginger shrimp */ +/* Calamiana aliceae. DESCRIPTION: */ +/* Moojenichthys myersi. DESCRIPTION: */ +/* Miyakea nepa. DESCRIPTION: Smalleyed squillid mantis shri */ +/* Ammotretis rostratus. DESCRIPTION: Longsnout flounder */ +/* Maiopsis panamensis. DESCRIPTION: Panamic spidercrab */ +/* Mitra cornicula. DESCRIPTION: Horny miter */ +/* Ammotretis lituratus. DESCRIPTION: Tudor's flounder */ +/* Metapenaeus insolitus. DESCRIPTION: Emerald shrimp */ +/* Melanochromis auratus. DESCRIPTION: Golden mbuna */ +/* Micrometrus aurora. DESCRIPTION: Reef perch */ +/* Metapenaeopsis acclivis. DESCRIPTION: Tora velvet shrimp */ +/* Hyas spp. DESCRIPTION: Toad, lyre crabs nei */ +/* Martesia striata. DESCRIPTION: Striate martesia */ +/* Metapenaeus lysianassa. DESCRIPTION: Bird shrimp */ +/* Mystacoleucus marginatus. DESCRIPTION: */ +/* Marukawichthys ambulator. DESCRIPTION: */ +/* Mochokus brevis. DESCRIPTION: */ +/* Mycteroperca cidi. DESCRIPTION: Venezuelan grouper */ +/* Macoma grandis. DESCRIPTION: Grand macoma */ +/* Mekongina erythrospila. DESCRIPTION: */ +/* Mycteroperca fusca. DESCRIPTION: Island grouper */ +/* Microchirus variegatus. DESCRIPTION: Thickback sole */ +/* Mycteroperca phenax. DESCRIPTION: Scamp */ +/* Moenkhausia intermedia. DESCRIPTION: */ +/* Mycteroperca jordani. DESCRIPTION: Gulf grouper */ +/* Macrobrachium lanchesteri. DESCRIPTION: Riceland prawn */ +/* Meuschenia australis. DESCRIPTION: */ +/* Mycteroperca microlepis. DESCRIPTION: Gag */ +/* Mycteroperca interstitialis. DESCRIPTION: Yellowmouth grouper */ +/* Metapenaeopsis kishinouyei. DESCRIPTION: Insular velvet shrimp */ +/* Mochokiella paynei. DESCRIPTION: */ +/* Mactra achatina. DESCRIPTION: Agate troughshell */ +/* Mycteroperca rosacea. DESCRIPTION: Leopard grouper */ +/* Mccoskerichthys sandae. DESCRIPTION: Tufted blenny */ +/* Mycteroperca tigris. DESCRIPTION: Tiger grouper */ +/* Mycteroperca rubra. DESCRIPTION: Mottled grouper */ +/* Mycteroperca venenosa. DESCRIPTION: Yellowfin grouper */ +/* Malakichthys wakiyae. DESCRIPTION: */ +/* Myaka myaka. DESCRIPTION: Myaka */ +/* Macoma secta. DESCRIPTION: White sand macoma */ +/* Acanthopagrus berda. DESCRIPTION: Goldsilk seabream */ +/* Micralestes acutidens. DESCRIPTION: Sharptooth tetra */ +/* Mylossoma duriventre. DESCRIPTION: */ +/* Mataeocephalus acipenserinus. DESCRIPTION: Sturgeon grenadier */ +/* Melanotaenia affinis. DESCRIPTION: North New Guinea rainbowfish */ +/* Melanonus gracilis. DESCRIPTION: Pelagic cod */ +/* Mylossoma acanthogaster. DESCRIPTION: */ +/* Macropleurodus bicolor. DESCRIPTION: */ +/* Melichthys indicus. DESCRIPTION: Indian triggerfish */ +/* Maccullochella ikei. DESCRIPTION: Eastern freshwater cod */ +/* Malacocephalus laevis. DESCRIPTION: Softhead grenadier */ +/* Acanthopagrus schlegeli. DESCRIPTION: Blackhead seabream */ +/* Macolor niger. DESCRIPTION: Black and white snapper */ +/* Malacocephalus occidentalis. DESCRIPTION: Western softhead grenadier */ +/* Metaloricaria paucidens. DESCRIPTION: */ +/* Maccullochella macquariensis. DESCRIPTION: Trout cod */ +/* Chelon labrosus. DESCRIPTION: Thicklip grey mullet */ +/* Tetrapturus audax. DESCRIPTION: Striped marlin */ +/* Mataeocephalus tenuicauda. DESCRIPTION: Slendertail grenadier */ +/* Mylossoma aureum. DESCRIPTION: */ +/* Microlepidium verecundum. DESCRIPTION: Bighead mora */ +/* Metapenaeopsis lata. DESCRIPTION: Broad velvet shrimp */ +/* Melanorhinus cyanellus. DESCRIPTION: Blackback silverside */ +/* Mistichthys luzonensis. DESCRIPTION: */ +/* Monopenchelys acuta. DESCRIPTION: */ +/* Mugil rammelsbergii. DESCRIPTION: */ +/* Muraena clepsydra. DESCRIPTION: Hourglass moray */ +/* Metapenaeopsis andamanensis. DESCRIPTION: Rice velvet shrimp */ +/* Muraena melanotis. DESCRIPTION: Honeycomb moray */ +/* Myomenippe fornasinii. DESCRIPTION: Smooth stone crab */ +/* Momonatira globosus. DESCRIPTION: Tadpole cod */ +/* Muraena helena. DESCRIPTION: Mediterranean moray */ +/* Microstoma microstoma. DESCRIPTION: Slender argentine */ +/* Monocentris japonica. DESCRIPTION: Pineconefish */ +/* Micromyzon akamai. DESCRIPTION: */ +/* Muraena lentiginosa. DESCRIPTION: Jewel moray */ +/* Mancopsetta maculata. DESCRIPTION: Antarctic armless flounder */ +/* Membras analis. DESCRIPTION: Backwaters silverside */ +/* Muraena robusta. DESCRIPTION: Stout moray */ +/* Muraena pavonina. DESCRIPTION: */ +/* Metapenaeus moyebi. DESCRIPTION: Moyebi shrimp */ +/* Muraena retifera. DESCRIPTION: Reticulate moray */ +/* Muraena australiae. DESCRIPTION: */ +/* Melamphaes acanthomus. DESCRIPTION: Slender bigscale */ +/* Muraena argus. DESCRIPTION: White-spotted moray */ +/* Palaemon maculatus. DESCRIPTION: Zaire prawn */ +/* Mugil trichodon. DESCRIPTION: */ +/* Metapenaeopsis mineri. DESCRIPTION: Mining shrimp */ +/* Myctophum selenops. DESCRIPTION: Wisner's lantern fish */ +/* Macrobrachium mirabile. DESCRIPTION: Shortleg river prawn */ +/* Nansenia ardesiaca. DESCRIPTION: */ +/* Melanostomias biseriatus. DESCRIPTION: */ +/* Monistiancistrus carachama. DESCRIPTION: */ +/* Monodonta labio. DESCRIPTION: Labio monodont */ +/* Melanostomias tentaculatus. DESCRIPTION: */ +/* Amniataba affinis. DESCRIPTION: Tiger grunter */ +/* Metapenaeus stebbingi. DESCRIPTION: Peregrine shrimp */ +/* Myersina lachneri. DESCRIPTION: */ +/* Cynomacrurus piriei. DESCRIPTION: Dogtooth grenadier */ +/* Macrospinosa cuja. DESCRIPTION: */ +/* Monacanthus chinensis. DESCRIPTION: Fan-bellied leatherjacket */ +/* Magnisudis atlantica. DESCRIPTION: Duckbill barracudina */ +/* Melanostomias melanopogon. DESCRIPTION: */ +/* Monocirrhus polyacanthus. DESCRIPTION: Amazon leaffish */ +/* Minous coccineus. DESCRIPTION: Onestick stingfish */ +/* Neonesthes capensis. DESCRIPTION: */ +/* Minous quincarinatus. DESCRIPTION: */ +/* Menidia beryllina. DESCRIPTION: Inland silverside */ +/* Mionorus bombonensis. DESCRIPTION: */ +/* Manta spp. DESCRIPTION: Manta rays */ +/* Maynea puncta. DESCRIPTION: */ +/* Melanostomias valdiviae. DESCRIPTION: Valdivia black dragon fish */ +/* Mangarinus waterousi. DESCRIPTION: */ +/* Macrobrachium nipponense. DESCRIPTION: Oriental river prawn */ +/* Melaniris pachylepis. DESCRIPTION: Thickscale silverside */ +/* Lophius spp. DESCRIPTION: Monkfishes nei */ +/* Selene setapinnis. DESCRIPTION: Atlantic moonfish */ +/* Scolopsis spp. DESCRIPTION: Monocle breams */ +/* Moapa coriacea. DESCRIPTION: Moapa dace */ +/* Modiolus spp. DESCRIPTION: Horse mussels nei */ +/* Moxostoma erythrurum. DESCRIPTION: Golden redhorse */ +/* Mollusca. DESCRIPTION: Freshwater molluscs nei */ +/* Moxostoma congestum. DESCRIPTION: Gray redhorse */ +/* Labeo chrysophekadion. DESCRIPTION: Black sharkminnow */ +/* Moroco steindachneri. DESCRIPTION: */ +/* Gerres spp. DESCRIPTION: Mojarras(=Silver-biddies) nei */ +/* Mollusca. DESCRIPTION: Marine molluscs nei */ +/* Moxostoma macrolepidotum. DESCRIPTION: Shorthead redhorse */ +/* Lophius piscatorius. DESCRIPTION: Angler(=Monk) */ +/* Mene maculata. DESCRIPTION: Moonfish */ +/* Mola spp. DESCRIPTION: Sunfish */ +/* Malvoliophis pinguis. DESCRIPTION: */ +/* Moridae. DESCRIPTION: Moras nei */ +/* Scomberomorus concolor. DESCRIPTION: Monterey Spanish mackerel */ +/* Oxyconger leptognathus. DESCRIPTION: Shorttail pike conger */ +/* Monodactylus argenteus. DESCRIPTION: Silver moony */ +/* Mesonauta festivus. DESCRIPTION: Flag cichlid */ +/* Nemadactylus spp. DESCRIPTION: Morwongs */ +/* Mola mola. DESCRIPTION: Ocean sunfish */ +/* Muraenolepis microps. DESCRIPTION: Smalleye moray cod */ +/* Palaemon concinnus. DESCRIPTION: Mangrove prawn */ +/* Pteromylaeus asperrimus. DESCRIPTION: Rough eagle ray */ +/* Metapenaeus brevicornis. DESCRIPTION: Yellow shrimp */ +/* Malapterurus electricus. DESCRIPTION: Electric catfish */ +/* Metapenaeus dobsoni. DESCRIPTION: Kadal shrimp */ +/* Metapenaeus ensis. DESCRIPTION: Greasyback shrimp */ +/* Macropetasma africana. DESCRIPTION: Swimming shrimp */ +/* Campostoma oligolepis. DESCRIPTION: Largescale stoneroller */ +/* Amphichaetodon howensis. DESCRIPTION: Lord Howe Island butterflyfish */ +/* Malapterurus microstoma. DESCRIPTION: Smallmouth electric catfish */ +/* Micropterus dolomieu. DESCRIPTION: Smallmouth bass */ +/* Liza persicus. DESCRIPTION: Persian mullet */ +/* Campostoma anomalum. DESCRIPTION: Central stoneroller */ +/* Metapenaeus macleayi. DESCRIPTION: Eastern school shrimp */ +/* Metapenaeus monoceros. DESCRIPTION: Speckled shrimp */ +/* Pteromylaeus bovinus. DESCRIPTION: Bull ray */ +/* Megupsilon aporus. DESCRIPTION: Catarina pupfish */ +/* Palaemonetes paludosus. DESCRIPTION: Eastern grass shrimp */ +/* Microlophichthys microlophus. DESCRIPTION: */ +/* Micropterus salmoides. DESCRIPTION: Largemouth black bass */ +/* Mustelus punctulatus. DESCRIPTION: Blackspotted smooth-hound */ +/* Pseudechidna brummeri. DESCRIPTION: White ribbon eel */ +/* Cromileptes altivelis. DESCRIPTION: Humpback grouper */ +/* Myomenippe hardwickii. DESCRIPTION: Mangrove stone crab */ +/* Manupecten pesfelis. DESCRIPTION: Cat's paw scallop */ +/* Champsodon snyderi. DESCRIPTION: */ +/* Mesopaeneus tropicalis. DESCRIPTION: Salmon shrimp */ +/* Macquaria australasica. DESCRIPTION: Australian bass */ +/* Metapenaeopsis beebei. DESCRIPTION: Beebe's velvet shrimp */ +/* Meropesta capillacea. DESCRIPTION: Maidenhair mactra */ +/* Mactra discors. DESCRIPTION: Discors trough shell */ +/* Metapenaeus eboracensis. DESCRIPTION: York shrimp */ +/* Macoma brevifrons. DESCRIPTION: Short macoma */ +/* Mactra iheringi. DESCRIPTION: Ihering's trough shell */ +/* Mactra chinensis. DESCRIPTION: Chinese trough shell */ +/* Semirossia equalis. DESCRIPTION: Greater shining bobtail squid */ +/* Meropesta pellucida. DESCRIPTION: Pellucid mactra */ +/* Mactra lilacea. DESCRIPTION: Lilac trough shell */ +/* Macropipus tuberculatus. DESCRIPTION: Knobby swimcrab */ +/* Mactra maculata. DESCRIPTION: Maculated troughshell */ +/* Mactra cuneata. DESCRIPTION: Wedge trough shell */ +/* Mactra murchisoni. DESCRIPTION: Large trough shell */ +/* Matuta planipes. DESCRIPTION: Flower moon crab */ +/* Mactra petitii. DESCRIPTION: Symmetrical trough shell */ +/* Mactra mera. DESCRIPTION: Plain troughshell */ +/* Mactra isabelleana. DESCRIPTION: Isabel surf clam */ +/* Metapenaeus tenuipes. DESCRIPTION: Stork shrimp */ +/* Matuta lunaris. DESCRIPTION: Moon crab */ +/* Matuta victor. DESCRIPTION: Common moon crab */ +/* Mactra violacea. DESCRIPTION: Violet troughshell */ +/* Mactra corallina. DESCRIPTION: Rayed trough shell */ +/* Mactra glauca. DESCRIPTION: Grey rough shell */ +/* Mactra luzonica. DESCRIPTION: Luzon troughshell */ +/* Rhinoptera adspersa. DESCRIPTION: Rough cownose ray */ +/* Rhinoptera bonasus. DESCRIPTION: Cownose ray */ +/* Macruronus capensis. DESCRIPTION: Cape grenadier */ +/* Muraenoclinus dorsalis. DESCRIPTION: Nosestripe klipfish */ +/* Macrognathus aculeatus. DESCRIPTION: */ +/* Dialommus macrocephalus. DESCRIPTION: Foureye rockskipper */ +/* Merluccius angustimanus. DESCRIPTION: Panama hake */ +/* Macropodus chinensis. DESCRIPTION: Roundtail paradisefish */ +/* Macrouroides inflaticeps. DESCRIPTION: */ +/* Rhinoptera javanica. DESCRIPTION: Flapnose ray */ +/* Microchirus ocellatus. DESCRIPTION: Foureyed sole */ +/* Muraenolepis spp. DESCRIPTION: Moray cods nei */ +/* Rhinoptera marginata. DESCRIPTION: Lusitanian cownose ray */ +/* Rhinoptera neglecta. DESCRIPTION: Australian cownose ray */ +/* Mirognathus normani. DESCRIPTION: Norman's smooth-head */ +/* Rhinomuraena quaesita. DESCRIPTION: Ribbon moray */ +/* Rhinoptera brasiliensis. DESCRIPTION: Ticon cownose ray */ +/* Rhinoptera steindachneri. DESCRIPTION: Pacific cownose ray */ +/* Coryphaenoides thelestomus. DESCRIPTION: */ +/* Malacoctenus versicolor. DESCRIPTION: */ +/* Masturus lanceolatus. DESCRIPTION: Sharptail mola */ +/* Metacrangon procax. DESCRIPTION: Nutshell shrimp */ +/* Rhinoptera jayakari. DESCRIPTION: Oman cownose ray */ +/* Coryphaenoides zaniophorus. DESCRIPTION: Thickbeard grenadier */ +/* Siderea picta. DESCRIPTION: Peppered moray */ +/* Mesobola brevianalis. DESCRIPTION: River sardine */ +/* Aulacomya ater. DESCRIPTION: Cholga mussel */ +/* Decapterus macarellus. DESCRIPTION: Mackerel scad */ +/* Ambassis commersoni. DESCRIPTION: */ +/* Arnoglossus laterna. DESCRIPTION: Mediterranean scaldfish */ +/* Mystacoleucus argenteus. DESCRIPTION: */ +/* Ex Mollusca. DESCRIPTION: Marine shells nei */ +/* Perna indica. DESCRIPTION: Indian brown mussel */ +/* Sicamugil hamiltonii. DESCRIPTION: */ +/* Lamnidae. DESCRIPTION: Mackerel sharks,porbeagles nei */ +/* Perna perna. DESCRIPTION: South American rock mussel */ +/* Mytilus galloprovincialis. DESCRIPTION: Mediterranean mussel */ +/* Mesobius antipodum. DESCRIPTION: Bathypelagic rattail */ +/* Mesoborus crocodilus. DESCRIPTION: */ +/* Tetrapturus belone. DESCRIPTION: Mediterranean spearfish */ +/* Metapenaeus conjunctus. DESCRIPTION: Wood shrimp */ +/* Mytilus platensis. DESCRIPTION: River Plata mussel */ +/* Strophidon sathete. DESCRIPTION: Slender giant moray */ +/* Siderea thyrsoidea. DESCRIPTION: Greyface moray */ +/* Myleus pacu. DESCRIPTION: */ +/* Perna viridis. DESCRIPTION: Green mussel */ +/* Metapenaeus suluensis. DESCRIPTION: Sulu shrimp */ +/* Mytilidae. DESCRIPTION: Sea mussels nei */ +/* Metapenaeus demani. DESCRIPTION: Demons prawn */ +/* Palaemonetes sinensis. DESCRIPTION: Chinese grass shrimp */ +/* Malthopsis annulifera. DESCRIPTION: */ +/* Microstomatichthyoborus bashforddeani. DESCRIPTION: */ +/* Melanostigma atlanticum. DESCRIPTION: Atlantic soft pout */ +/* Metapenaeus dalli. DESCRIPTION: Western school shrimp */ +/* Mustelus mento. DESCRIPTION: Speckled smooth-hound */ +/* Malacoctenus africanus. DESCRIPTION: */ +/* Metapenaeus elegans. DESCRIPTION: Fine shrimp */ +/* Thyrsoidea macrura. DESCRIPTION: Giant slender moray */ +/* Mycteroperca acutirostris. DESCRIPTION: Comb grouper */ +/* Metapenaeus affinis. DESCRIPTION: Jinga shrimp */ +/* Malpulutta kretseri. DESCRIPTION: Spotted gourami */ +/* Mustelus lenticulatus. DESCRIPTION: Spotted estuary smooth-hound */ +/* Mustelus mosis. DESCRIPTION: Arabian smooth-hound */ +/* Monostroma nitidum. DESCRIPTION: Green laver */ +/* Margrethia obtusirostra. DESCRIPTION: */ +/* Myctophum punctatum. DESCRIPTION: Spotted lanternfish */ +/* Metapenaeus papuensis. DESCRIPTION: Papua shrimp */ +/* Mustelus norrisi. DESCRIPTION: Narrowfin smooth-hound */ +/* Squilla mantis. DESCRIPTION: Spottail mantis squillid */ +/* Micropterus punctulatus. DESCRIPTION: Spotted bass */ +/* Platystomatichthys mucosus. DESCRIPTION: */ +/* Mactra veneriformis. DESCRIPTION: Globose clam */ +/* Metelectrona herwigi. DESCRIPTION: */ +/* Cyttula macropus. DESCRIPTION: */ +/* Mustelus manazo. DESCRIPTION: Starspotted smooth-hound */ +/* Joturus pichardi. DESCRIPTION: Bobo mullet */ +/* Mugil liza. DESCRIPTION: Lebranche mullet */ +/* Cirrhinus molitorella. DESCRIPTION: Mud carp */ +/* Scylla serrata. DESCRIPTION: Indo-Pacific swamp crab */ +/* Murex spp. DESCRIPTION: Murex */ +/* Mugil cephalus. DESCRIPTION: Flathead grey mullet */ +/* Uropterygius macrocephalus. DESCRIPTION: Needle-tooth moray */ +/* Muraenidae. DESCRIPTION: Morays nei */ +/* Mytilus californianus. DESCRIPTION: Californian mussel */ +/* Mytilus coruscus. DESCRIPTION: Korean mussel */ +/* Mugilidae. DESCRIPTION: Mullets nei */ +/* Mullidae. DESCRIPTION: Goatfishes, red mullets nei */ +/* Mulinia spp. DESCRIPTION: Taquilla clams */ +/* Mugil capurrii. DESCRIPTION: Leaping African mullet */ +/* Mustelus palumbes. DESCRIPTION: Whitespotted smooth-hound */ +/* Mullus surmuletus. DESCRIPTION: Surmullet */ +/* Mytilus edulis. DESCRIPTION: Blue mussel */ +/* Mullus barbatus. DESCRIPTION: Red mullet */ +/* Mustelus lunulatus. DESCRIPTION: Sicklefin smooth-hound */ +/* Mulloidichthys flavolineatus. DESCRIPTION: Yellowstripe goatfish */ +/* Mustelus whitneyi. DESCRIPTION: Humpback smooth-hound */ +/* Mullus spp. DESCRIPTION: Surmullets(=Red mullets) nei */ +/* Perna canaliculus. DESCRIPTION: New Zealand mussel */ +/* Lophius vaillanti. DESCRIPTION: Shortspine African angler */ +/* Morus bassanus. DESCRIPTION: Northern gannet */ +/* Muraenolepis marmoratus. DESCRIPTION: Marbled moray cod */ +/* Hyas araneus. DESCRIPTION: Atlantic lyre crab */ +/* Microprosthema semilaeve. DESCRIPTION: Crimson coral shrimp */ +/* Maravichromis formosus. DESCRIPTION: */ +/* Mellita longifissa. DESCRIPTION: Slitted sand dollar */ +/* Hyas coarctatus. DESCRIPTION: Arctic lyre crab */ +/* Madrepora oculata. DESCRIPTION: Madrepora coral */ +/* Lophius gastrophysus. DESCRIPTION: Blackfin goosefish */ +/* Malakosaria sinclairii. DESCRIPTION: */ +/* Microcosmus polymorphus. DESCRIPTION: Rock violet */ +/* Merulina ampliata. DESCRIPTION: Merulina coral */ +/* Lophius litulon. DESCRIPTION: Yellow goosefish */ +/* Lophius vomerinus. DESCRIPTION: Devil anglerfish */ +/* Microgobius brevispinis. DESCRIPTION: Balboa goby */ +/* Mastocarpus pacificus. DESCRIPTION: */ +/* Morus serrator. DESCRIPTION: Australasian gannet */ +/* Megalonaias nervosa. DESCRIPTION: Washboard */ +/* Mastocarpus stellatus. DESCRIPTION: */ +/* Microcosmus vulgaris. DESCRIPTION: Sand violet */ +/* Molgula kerguelenensis. DESCRIPTION: */ +/* Molgula malvinensis. DESCRIPTION: */ +/* Brevoortia spp. DESCRIPTION: Menhadens nei */ +/* Minnivola pyxidata. DESCRIPTION: Box scallop */ +/* Molgula pedunculata. DESCRIPTION: */ +/* Mya spp. DESCRIPTION: Gaper nei */ +/* Molgula sluiteri. DESCRIPTION: */ +/* Eptatretus cirrhatus. DESCRIPTION: Broadgilled hagfish */ +/* Morus capensis. DESCRIPTION: Cape gannet */ +/* Metanephrops spp. DESCRIPTION: Metanephrops lobsters nei */ +/* Melanostigma gelatinosum. DESCRIPTION: Limp eelpout */ +/* Microlipophrys bauchotae. DESCRIPTION: */ +/* Metapenaeopsis wellsi. DESCRIPTION: Velvet shrimp */ +/* Melamphaes microps. DESCRIPTION: */ +/* Muraenolepis orangiensis. DESCRIPTION: Patagonian moray cod */ +/* Malacanthus plumieri. DESCRIPTION: Sand tilefish */ +/* Mactra spp. DESCRIPTION: Trough shells nei */ +/* Melanocetus rossi. DESCRIPTION: */ +/* Muraenolepis microcephalus. DESCRIPTION: Smallhead moray cod */ +/* Misgurnus fossilis. DESCRIPTION: Weatherfish */ +/* Mullus argentinae. DESCRIPTION: Argentine goatfish */ +/* Myliobatis spp. DESCRIPTION: */ +/* Mastacembelus erythrotaenia. DESCRIPTION: Fire eel */ +/* Xenophthalmichthys danae. DESCRIPTION: */ +/* Myxodagnus belone. DESCRIPTION: */ +/* Myxodes cristatus. DESCRIPTION: */ +/* Myxus elongatus. DESCRIPTION: Sand grey mullet */ +/* Macrocystis integrifolia. DESCRIPTION: */ +/* Monotaxis grandoculis. DESCRIPTION: Humpnose big-eye bream */ +/* Meretrix petechialis. DESCRIPTION: Spotted hard clam */ +/* Mithrax spinosissimus. DESCRIPTION: Channel-clinging crab */ +/* Myoxocephalus jaok. DESCRIPTION: Plain sculpin */ +/* Meretrix casta. DESCRIPTION: Backwater hard clam */ +/* Meretrix lyrata. DESCRIPTION: Lyrate hard clam */ +/* Monothrix mizolepis. DESCRIPTION: */ +/* Melanocetidae. DESCRIPTION: Black seadevils nei */ +/* Myoxocephalus octodecemspinosus. DESCRIPTION: Longhorn sculpin */ +/* Agamyxis pectinifrons. DESCRIPTION: Whitebarred catfish */ +/* Maxillicosta raoulensis. DESCRIPTION: */ +/* Myxocyprinus asiaticus. DESCRIPTION: Chinese sucker */ +/* Mithrax armatus. DESCRIPTION: Harbour spidercrab */ +/* Myrichthys pardalis. DESCRIPTION: Leopard eel */ +/* Myoxocephalus scorpius. DESCRIPTION: Shorthorn sculpin */ +/* Pimelodus spp. DESCRIPTION: */ +/* Murex scolopax. DESCRIPTION: Scalloped murex */ +/* Macrocystis pyrifera. DESCRIPTION: Giant kelp */ +/* Myrophis plumbeus. DESCRIPTION: Leaden worm eel */ +/* Mytilus planulatus. DESCRIPTION: Australian mussel */ +/* Eptatretus burgeri. DESCRIPTION: Inshore hagfish */ +/* Mytilus chilensis. DESCRIPTION: Chilean mussel */ +/* Myliobatis tenuicaudatus. DESCRIPTION: Eagle ray */ +/* Nemamyxine elongata. DESCRIPTION: */ +/* Myliobatis californica. DESCRIPTION: Bat eagle ray */ +/* Myxine glutinosa. DESCRIPTION: Hagfish */ +/* Myliobatis chilensis. DESCRIPTION: */ +/* Microsynodontis batesii. DESCRIPTION: */ +/* Myliobatis tobijei. DESCRIPTION: Japanese eagle ray */ +/* Microphysogobio koreensis. DESCRIPTION: */ +/* Myliobatis aquila. DESCRIPTION: Common eagle ray */ +/* Myliobatis freminvillei. DESCRIPTION: Bullnose eagle ray */ +/* Hemibagrus nemurus. DESCRIPTION: Asian redtail catfish */ +/* Myliobatis goodei. DESCRIPTION: Southern eagle ray */ +/* Paramyxine atami. DESCRIPTION: Brown hagfish */ +/* Campylonotus rathbunae. DESCRIPTION: Sabre prawn */ +/* Myliobatis australis. DESCRIPTION: Australian bull ray */ +/* Mysticeti. DESCRIPTION: Baleen whales nei */ +/* Myliobatis longirostris. DESCRIPTION: Snouted eagle ray */ +/* Eptatretus stoutii. DESCRIPTION: Pacific hagfish */ +/* Mytilus spp. DESCRIPTION: Mytilus mussels nei */ +/* Marilyna darwinii. DESCRIPTION: */ +/* Myxinidae. DESCRIPTION: Hagfishes nei */ +/* Myliobatis hamlyni. DESCRIPTION: Purple eagle ray */ +/* Mugil soiuy. DESCRIPTION: So-iuy mullet */ +/* Mystriophis crosnieri. DESCRIPTION: Spoon-nose eel */ +/* Mystriophis rostellatus. DESCRIPTION: African spoon-nose eel */ +/* Lestidiops cadenati. DESCRIPTION: */ +/* Lestidiops sphyrenoides. DESCRIPTION: */ +/* Uropterygius wheeleri. DESCRIPTION: Jigsaw moray */ +/* Benthalbella infans. DESCRIPTION: Zugmayer's pearleye */ +/* Bathysaurus mollis. DESCRIPTION: Highfin lizardfish */ +/* Molpadia musculus. DESCRIPTION: */ +/* Zenion japonicum. DESCRIPTION: */ +/* Mazzaella laminarioides. DESCRIPTION: */ +/* Scinaia hormoides. DESCRIPTION: Moniliform sea moss */ +/* Mystacoleucus padangensis. DESCRIPTION: */ +/* Scorpaena maderensis. DESCRIPTION: Madeira rockfish */ +/* Microchirus theophila. DESCRIPTION: Bastard sole */ +/* Mormyrus spp. DESCRIPTION: Bottlenose fishes nei */ +/* Malea spp. DESCRIPTION: */ +/* Melanonus zugmayeri. DESCRIPTION: Arrowtail */ +/* Osteichthyes. DESCRIPTION: Marine fishes nei */ +/* Nandus nandus. DESCRIPTION: Gangetic leaffish */ +/* Naso brevirostris. DESCRIPTION: Spotted unicornfish */ +/* Anarrhichthys ocellatus. DESCRIPTION: Wolf-eel */ +/* Narcetes erimelas. DESCRIPTION: */ +/* Anampses geographicus. DESCRIPTION: Geographic wrasse */ +/* Pangio agma. DESCRIPTION: */ +/* Parapenaeopsis hungerfordi. DESCRIPTION: Dog shrimp */ +/* Naso lituratus. DESCRIPTION: Orangespine unicornfish */ +/* Pinna muricata. DESCRIPTION: Prickly pen shell */ +/* Parapenaeopsis acclivirostris. DESCRIPTION: Hawknose shrimp */ +/* Nannocampus elegans. DESCRIPTION: Elegant pipefish */ +/* Panna microdon. DESCRIPTION: Panna croaker */ +/* Nansenia spp. DESCRIPTION: */ +/* Nautichthys oculofasciatus. DESCRIPTION: Sailfin sculpin */ +/* Parapenaeopsis sculptilis. DESCRIPTION: Rainbow shrimp */ +/* Anomalocardia squamosa. DESCRIPTION: Squamose venus */ +/* Monodon monoceros. DESCRIPTION: Narwhal */ +/* Naso unicornis. DESCRIPTION: Bluespine unicornfish */ +/* Anacanthus barbatus. DESCRIPTION: Bearded leatherjacket */ +/* Naucrates ductor. DESCRIPTION: Pilotfish */ +/* Nannosalarias nativitatus. DESCRIPTION: Pygmy blenny */ +/* Parapenaeopsis hardwickii. DESCRIPTION: Spear shrimp */ +/* Parapenaeopsis maxillipedo. DESCRIPTION: Torpedo shrimp */ +/* Parapenaeopsis stylifera. DESCRIPTION: Kiddi shrimp */ +/* Nassarius gibbosulus. DESCRIPTION: Gibbous nassa */ +/* Nibea maculata. DESCRIPTION: Blotched croaker */ +/* Neogobius bathybius. DESCRIPTION: */ +/* Notolabrus celidotus. DESCRIPTION: Spotty */ +/* Anampses meleagrides. DESCRIPTION: Spotted wrasse */ +/* Nalbantichthys elongatus. DESCRIPTION: */ +/* Champsodon capensis. DESCRIPTION: Gaper */ +/* Chascanopsetta lugubris. DESCRIPTION: Pelican flounder */ +/* Acanthemblemaria spinosa. DESCRIPTION: Spinyhead blenny */ +/* Prionobutis koilomatodon. DESCRIPTION: Mud sleeper */ +/* Nebris microps. DESCRIPTION: Smalleye croaker */ +/* Mauligobius nigri. DESCRIPTION: */ +/* Nebris occidentalis. DESCRIPTION: Pacific smalleye croaker */ +/* Acanthemblemaria aspera. DESCRIPTION: Roughhead blenny */ +/* Caranx bartholomaei. DESCRIPTION: Yellow jack */ +/* Nibea semifasciata. DESCRIPTION: Sharpnose croaker */ +/* Neobuccinum eatoni. DESCRIPTION: Antarctic whelk */ +/* Neogobius melanostomus. DESCRIPTION: Round goby */ +/* Nassarius spp. DESCRIPTION: */ +/* Nothobranchius cyaneus. DESCRIPTION: */ +/* Percnon gibbesi. DESCRIPTION: Nimble spray crab */ +/* Plectranthias altipinnatus. DESCRIPTION: */ +/* Neoclinus blanchardi. DESCRIPTION: Sarcastic fringehead */ +/* Chitala chitala. DESCRIPTION: Clown knifefish */ +/* Nicholsina denticulata. DESCRIPTION: Loosetooth parrotfish */ +/* Notoclinops caerulepunctus. DESCRIPTION: Blue-dot triplefin */ +/* Nematocarcinus africanus. DESCRIPTION: African spider shrimp */ +/* Chitala lopis. DESCRIPTION: Giant featherback */ +/* Notocheirus hubbsi. DESCRIPTION: */ +/* Nacella concinna. DESCRIPTION: Antarctic limpet */ +/* Nacella edgari. DESCRIPTION: Depressed limpet */ +/* Lipkebe holthuisi. DESCRIPTION: */ +/* Paphia spp. DESCRIPTION: Short neck clams nei */ +/* Notocrangon antarcticus. DESCRIPTION: */ +/* Nannacara anomala. DESCRIPTION: Goldeneye cichlid */ +/* Nematalosa come. DESCRIPTION: Western Pacific gizzard shad */ +/* Nectoliparis pelagicus. DESCRIPTION: Tadpole snailfish */ +/* Acanthostracion quadricornis. DESCRIPTION: Scrawled cowfish */ +/* Neocirrhites armatus. DESCRIPTION: Flame hawkfish */ +/* Nanochromis consortus. DESCRIPTION: */ +/* Anchichoerops natalensis. DESCRIPTION: Natal wrasse */ +/* Ceratoscopelus warmingii. DESCRIPTION: Warming */ +/* ’s lanternfish */ +/* Chitala blanci. DESCRIPTION: Indochina featherback */ +/* Chicoreus spp. DESCRIPTION: */ +/* Acanthostracion polygonius. DESCRIPTION: Honeycomb cowfish */ +/* Nematocarcinus agassizii. DESCRIPTION: Spider shrimp */ +/* Neoditrema ransonneti. DESCRIPTION: */ +/* Neoglyphidodon bonang. DESCRIPTION: Ocellated damsel */ +/* Anadara corbuloides. DESCRIPTION: Basket ark */ +/* Pandalopsis dispar. DESCRIPTION: Sidestripe shrimp */ +/* Anadara ferruginea. DESCRIPTION: Rusty ark */ +/* Nototodarus gouldi. DESCRIPTION: Gould's flying squid */ +/* Nototodarus hawaiiensis. DESCRIPTION: Hawaiian flying squid */ +/* Sandelia bainsii. DESCRIPTION: Rocky kurper */ +/* Pandalopsis japonica. DESCRIPTION: Morotoge shrimp */ +/* Nibea soldado. DESCRIPTION: Soldier croaker */ +/* Anadara notabilis. DESCRIPTION: Eared ark */ +/* Anadara mazatlanica. DESCRIPTION: Mazatlan's ark */ +/* Anadara grandis. DESCRIPTION: Grand ark */ +/* Anadara nodifera. DESCRIPTION: Nodular ark */ +/* Pandalopsis spp. DESCRIPTION: Pandalopsis shrimps nei */ +/* Anadara antiquata. DESCRIPTION: Antique ark */ +/* Andamia reyi. DESCRIPTION: */ +/* Parapandalus spinipes. DESCRIPTION: Oriental narwal shrimp */ +/* Anadara multicostata. DESCRIPTION: Many ribbed ark */ +/* Scapharca biangulata. DESCRIPTION: Sowerby's ark */ +/* Anadara diluvii. DESCRIPTION: Diluvial ark */ +/* Neolithodes diomedeae. DESCRIPTION: */ +/* Natica spp. DESCRIPTION: */ +/* Nodilittorina pyramidalis. DESCRIPTION: Pyramidal prickly-winkle */ +/* Anadara ovalis. DESCRIPTION: Blood ark */ +/* Metanephrops andamanicus. DESCRIPTION: Andaman lobster */ +/* Parapercis colias. DESCRIPTION: New Zealand blue cod */ +/* Pseudophycis bachus. DESCRIPTION: Red codling */ +/* Tylosurus spp. DESCRIPTION: Needlefishes nei */ +/* Neonoemacheilus labeosus. DESCRIPTION: */ +/* Neoceratias spinifer. DESCRIPTION: */ +/* Neophrynichthys angustus. DESCRIPTION: Pale toadfish */ +/* Nephtys hombergii. DESCRIPTION: */ +/* Neolissochilus blanci. DESCRIPTION: */ +/* Neohomaloptera johorensis. DESCRIPTION: */ +/* Neorossia caroli. DESCRIPTION: Carol bobtail squid */ +/* Nematabramis alestes. DESCRIPTION: */ +/* Metanephrops mozambicus. DESCRIPTION: Mozambique lobster */ +/* Nesiarchus nasutus. DESCRIPTION: Black gemfish */ +/* Neobola moeruensis. DESCRIPTION: */ +/* Nephrops norvegicus. DESCRIPTION: Norway lobster */ +/* Nereis diversicolor. DESCRIPTION: Ragworm */ +/* Nephropsis stewarti. DESCRIPTION: Indian Ocean lobsterette */ +/* Nematobrycon lacortei. DESCRIPTION: Rainbow tetra */ +/* Neogastromyzon nieuwenhuisii. DESCRIPTION: */ +/* Nephropidae. DESCRIPTION: True lobsters,lobsterettes nei */ +/* Nemacheilus abyssinicus. DESCRIPTION: */ +/* Notosaria nigricans. DESCRIPTION: */ +/* Strongylura marina. DESCRIPTION: Atlantic needlefish */ +/* Norfolkia brachylepis. DESCRIPTION: Tropical scaly-headed triplefi */ +/* Neoophorus catarinae. DESCRIPTION: */ +/* Nansenia macrolepis. DESCRIPTION: */ +/* Nephropsis ensirostris. DESCRIPTION: Gladiator lobsterette */ +/* Paranephrops planifrons. DESCRIPTION: Koura crayfish */ +/* Facciolella gilberti. DESCRIPTION: Dogface witch-eel */ +/* Nephropsis malhaensis. DESCRIPTION: Saya de Malha lobsterette */ +/* Nephropsis rosea. DESCRIPTION: Two-toned lobsterette */ +/* Neoglyphea inopinata. DESCRIPTION: Fenix lobster */ +/* Nephropsis acanthura. DESCRIPTION: Spinetail lobsterette */ +/* Nephropsis sulcata. DESCRIPTION: Grooved lobsterette */ +/* Nephropsis suhmi. DESCRIPTION: Red and white lobsterette */ +/* Nephropsis neglecta. DESCRIPTION: Ruby lobsterette */ +/* Nephropsis occidentalis. DESCRIPTION: Pacific lobsterette */ +/* Nephropsis carpenteri. DESCRIPTION: Ridge-back lobsterette */ +/* Neopomacentrus sindensis. DESCRIPTION: Arabian demoiselle */ +/* Nephropides caribaeus. DESCRIPTION: Mitten lobsterette */ +/* Niphon spinosus. DESCRIPTION: Ara */ +/* Nephropsis atlantica. DESCRIPTION: Scarlet lobsterette */ +/* Nephropsis aculeata. DESCRIPTION: Florida lobsterette */ +/* Neopomacentrus cyanomos. DESCRIPTION: Regal demoiselle */ +/* Melongena spp. DESCRIPTION: */ +/* Nephropsis agassizii. DESCRIPTION: Prickly lobsterette */ +/* Negaprion acutidens. DESCRIPTION: Sicklefin lemon shark */ +/* Negaprion brevirostris. DESCRIPTION: Lemon shark */ +/* Carangoides caeruleopinnatus. DESCRIPTION: Coastal trevally */ +/* Carangoides dinema. DESCRIPTION: Shadow trevally */ +/* Carangoides hedlandensis. DESCRIPTION: Bumpnose trevally */ +/* Nagaichthys filipes. DESCRIPTION: */ +/* Notograptus guttatus. DESCRIPTION: */ +/* Carangoides chrysophrys. DESCRIPTION: Longnose trevally */ +/* Nangra itchkeea. DESCRIPTION: */ +/* Carangoides bajad. DESCRIPTION: Orangespotted trevally */ +/* Melongena melongena. DESCRIPTION: West Indian crown conch */ +/* Nemuroglanis lanceolatus. DESCRIPTION: */ +/* Carangoides humerosus. DESCRIPTION: Duskyshoulder trevally */ +/* Carangoides otrynter. DESCRIPTION: Threadfin jack */ +/* Carangoides oblongus. DESCRIPTION: Coachwhip trevally */ +/* Notoglanidium pallidum. DESCRIPTION: */ +/* Carangoides equula. DESCRIPTION: Whitefin trevally */ +/* Carangoides armatus. DESCRIPTION: Longfin trevally */ +/* Carangoides malabaricus. DESCRIPTION: Malabar trevally */ +/* Carangoides orthogrammus. DESCRIPTION: Island trevally */ +/* Carangoides fulvoguttatus. DESCRIPTION: Yellowspotted trevally */ +/* Acentrogobius viridipunctatus. DESCRIPTION: */ +/* Carangoides spp. DESCRIPTION: */ +/* Carangoides gymnostethus. DESCRIPTION: Bludger */ +/* Notarius grandicassis. DESCRIPTION: Thomas sea catfish */ +/* Merluccius productus. DESCRIPTION: North Pacific hake */ +/* Nannatherina balstoni. DESCRIPTION: Balston's pygmy perch */ +/* Neoheterandria cana. DESCRIPTION: */ +/* Hoplunnis diomediana. DESCRIPTION: Blacktail pike-conger */ +/* Annelida. DESCRIPTION: Annelid worms */ +/* Facciolella oxyrhyncha. DESCRIPTION: Facciola's sorcerer */ +/* Paranotothenia angustata. DESCRIPTION: Maori chief */ +/* Halosauropsis macrochir. DESCRIPTION: Abyssal halosaur */ +/* Acanthacaris tenuimana. DESCRIPTION: Prickly deep-sea lobster */ +/* Paranotothenia microlepidota. DESCRIPTION: Black cod */ +/* Pennahia anea. DESCRIPTION: Bigeye croaker */ +/* Ancistroteuthis lichtensteini. DESCRIPTION: Angel squid */ +/* Pennahia macrocephalus. DESCRIPTION: Big-head pennah croaker */ +/* Selenanthias analis. DESCRIPTION: Pearl-spotted fairy basslet */ +/* Nannochloris atomus. DESCRIPTION: */ +/* Halosaurus pectoralis. DESCRIPTION: Australian halosaur */ +/* Paranotothenia dewitti. DESCRIPTION: */ +/* Canthidermis macrolepis. DESCRIPTION: Largescale triggerfish */ +/* Neoniphon sammara. DESCRIPTION: Sammara squirrelfish */ +/* Acanthaphritis barbata. DESCRIPTION: */ +/* Halosaurus ovenii. DESCRIPTION: */ +/* Aldrovandia rostrata. DESCRIPTION: */ +/* Pennahia pawak. DESCRIPTION: Pawak croaker */ +/* Pennahia spp. DESCRIPTION: */ +/* Paranotothenia spp. DESCRIPTION: Paranotothenia nei */ +/* Hoplunnis punctata. DESCRIPTION: Slender duckbill eel */ +/* Penaeopsis balssi. DESCRIPTION: Scythe shrimp */ +/* Parapenaeopsis balli. DESCRIPTION: Bally shrimp */ +/* Apterichtus gracilis. DESCRIPTION: */ +/* Taningia danae. DESCRIPTION: Dana octopus squid */ +/* Penaeopsis eduardoi. DESCRIPTION: Four-spined needle shrimp */ +/* Apterichtus monodi. DESCRIPTION: */ +/* Parapenaeopsis gracillima. DESCRIPTION: Thin shrimp */ +/* Bascanichthys ceciliae. DESCRIPTION: */ +/* Senilia senilis. DESCRIPTION: Heavy African ark */ +/* Neoepinnula americana. DESCRIPTION: American sackfish */ +/* Parapenaeopsis nana. DESCRIPTION: Dwarf shrimp */ +/* Lates niloticus. DESCRIPTION: Nile perch */ +/* Notiocampus ruber. DESCRIPTION: Red pipefish */ +/* Penaeopsis serrata. DESCRIPTION: Megalops shrimp */ +/* Parapenaeopsis tenella. DESCRIPTION: Smoothshell shrimp */ +/* Parapenaeopsis uncta. DESCRIPTION: Uncta shrimp */ +/* Parapenaeopsis venusta. DESCRIPTION: Adonis shrimp */ +/* Nerita spp. DESCRIPTION: */ +/* Parascolopsis townsendi. DESCRIPTION: Scaly dwarf monocle bream */ +/* Nassarius arcularius. DESCRIPTION: Cake nassa */ +/* Natica broderipiana. DESCRIPTION: Broderip's moon snail */ +/* Natica chemnitzii. DESCRIPTION: Chemnitz's moon snail */ +/* Nassarius dorsatus. DESCRIPTION: Channeled nassa */ +/* Nerita peloronta. DESCRIPTION: Bleeding tooth */ +/* Parascolopsis eriomma. DESCRIPTION: Rosy dwarf monocle bream */ +/* Noetia gambiensis. DESCRIPTION: Gambia ark */ +/* Parascolopsis baranesi. DESCRIPTION: */ +/* Natica lineata. DESCRIPTION: Lined moon snail */ +/* Nassarius glans. DESCRIPTION: Glans nassa */ +/* Nassarius coronatus. DESCRIPTION: Coronate nassa */ +/* Notostomus japonicus. DESCRIPTION: Japanese spinyridge */ +/* Nassarius crematus. DESCRIPTION: Burned nassa */ +/* Natica stellata. DESCRIPTION: Starry moon snail */ +/* Natica tigrina. DESCRIPTION: Tiger moon snail */ +/* Natica gualteriana. DESCRIPTION: Gualteri's moon snail */ +/* Natica vitellus. DESCRIPTION: Calf moon snail */ +/* Lithophaga spp. DESCRIPTION: Date mussels nei */ +/* Natica adansoni. DESCRIPTION: Adanson's moon snail */ +/* Anomalocardia brasiliana. DESCRIPTION: West Indian pointed venus */ +/* Nassarius cuvieri. DESCRIPTION: Cuvier's nassa */ +/* Naticarius dillwyni. DESCRIPTION: Dillwyn's moon-shell */ +/* Annachlamys flabellata. DESCRIPTION: Leopard scallop */ +/* Nacella kerguelenensis. DESCRIPTION: Kerguelen limpet */ +/* Naticarius hebraeus. DESCRIPTION: Hebrew moon-shell */ +/* Natica marochiensis. DESCRIPTION: Morocco moon snail */ +/* Ancistrocheirus lesueuri. DESCRIPTION: Sharpear enope squid */ +/* Natica fulminea. DESCRIPTION: Flamed moon snail */ +/* Nassarius corniculus. DESCRIPTION: Horned nassa */ +/* Natica collaris. DESCRIPTION: Collar moon snail */ +/* Meganyctiphanes norvegica. DESCRIPTION: Norwegian krill */ +/* Naticarius stercus-muscarum. DESCRIPTION: Thousand-spotted moon-shell */ +/* Natica turtoni. DESCRIPTION: Turton's moon snail */ +/* Naticarius vittatus. DESCRIPTION: Ribboned moon-shell */ +/* Noetia spp. DESCRIPTION: */ +/* Neolebias ansorgii. DESCRIPTION: */ +/* Blenniella bilitonensis. DESCRIPTION: */ +/* Nematopalaemon schmitti. DESCRIPTION: Whitebelly prawn */ +/* Notopogon lilliei. DESCRIPTION: Crested bellowfish */ +/* Neolithodes asperrimus. DESCRIPTION: Rough king crab */ +/* Panulirus guttatus. DESCRIPTION: Spotted spiny lobster */ +/* Nematopalaemon hastatus. DESCRIPTION: West African estuarine prawn */ +/* Panulirus marginatus. DESCRIPTION: Banded spiny lobster */ +/* Panulirus stimpsoni. DESCRIPTION: Chinese spiny lobster */ +/* Tonicella rubra. DESCRIPTION: Northern red chiton */ +/* Natalichthys leptus. DESCRIPTION: Pencil snakelet */ +/* Neolaeops microphthalmus. DESCRIPTION: Crosseyed flounder */ +/* Nematopalaemon tenuipes. DESCRIPTION: Spider prawn */ +/* Nemalion helminthoides. DESCRIPTION: Sea spaghetti */ +/* Conniella apterygia. DESCRIPTION: Mutant wrasse */ +/* Panulirus pascuensis. DESCRIPTION: Easter Island spiny lobster */ +/* Notolycodes schmidti. DESCRIPTION: */ +/* Nealotus tripes. DESCRIPTION: Black snake mackerel */ +/* Neolumpenus unocellatus. DESCRIPTION: */ +/* Anomia spp. DESCRIPTION: */ +/* Nelusetta ayraudi. DESCRIPTION: Chinaman-leatherjacket */ +/* Brachysomophis atlanticus. DESCRIPTION: */ +/* Neomerinthe amplisquamiceps. DESCRIPTION: */ +/* Nemadoras bachi. DESCRIPTION: */ +/* Notemigonus crysoleucas. DESCRIPTION: Golden shiner */ +/* Nemacheilus denisoni. DESCRIPTION: */ +/* Nemateleotris decora. DESCRIPTION: Elegant firefish */ +/* Metapenaeopsis philippii. DESCRIPTION: Philip velvet shrimp */ +/* Nomeus gronovii. DESCRIPTION: Man-of-war fish */ +/* Nematops chui. DESCRIPTION: Narrow-body righteye flounder */ +/* Nematogobius ansorgii. DESCRIPTION: */ +/* Metapenaeopsis mogiensis. DESCRIPTION: Mogi velvet shrimp */ +/* Nematoscelis gracilis. DESCRIPTION: */ +/* Neomyxus leuciscus. DESCRIPTION: Acute-jawed mullet */ +/* Nematoscelis megalops. DESCRIPTION: */ +/* Metapenaeopsis palmensis. DESCRIPTION: Southern velvet shrimp */ +/* Nematogobius maindroni. DESCRIPTION: */ +/* Nematistius pectoralis. DESCRIPTION: Roosterfish */ +/* Metapenaeopsis rosea. DESCRIPTION: Pink velvet shrimp */ +/* Nemanthias carberryi. DESCRIPTION: Threadfin anthias */ +/* Nemaclinus atelestos. DESCRIPTION: Threadfin blenny */ +/* Neamia octospina. DESCRIPTION: Eightspine cardinalfish */ +/* Metapenaeopsis novaeguineae. DESCRIPTION: Northern velvet shrimp */ +/* Nimbochromis fuscotaeniatus. DESCRIPTION: Fuscotaeniatus */ +/* Nomeus spp. DESCRIPTION: */ +/* Nyctiphanes simplex. DESCRIPTION: */ +/* Metapenaeopsis stridulans. DESCRIPTION: Fiddler shrimp */ +/* Nematogobius brachynemus. DESCRIPTION: */ +/* Nannopetersius ansorgii. DESCRIPTION: */ +/* Nannostomus beckfordi. DESCRIPTION: Golden pencilfish */ +/* Nemipterus celebicus. DESCRIPTION: Celebes threadfin bream */ +/* Nemipterus tambuloides. DESCRIPTION: Fivelined threadfin bream */ +/* Labichthys yanoi. DESCRIPTION: */ +/* Nemipterus nematophorus. DESCRIPTION: Doublewhip threadfin bream */ +/* Nettenchelys gephyra. DESCRIPTION: */ +/* Nemipterus hexodon. DESCRIPTION: Ornate threadfin bream */ +/* Nemipterus balinensis. DESCRIPTION: Balinese threadfin bream */ +/* Nemipterus japonicus. DESCRIPTION: Japanese threadfin bream */ +/* Nemipterus peronii. DESCRIPTION: Notchedfin threadfin bream */ +/* Lipogenys gillii. DESCRIPTION: */ +/* Nemipterus marginatus. DESCRIPTION: Red filament threadfin bream */ +/* Notacanthus chemnitzii. DESCRIPTION: Spiny eel */ +/* Nemipterus mesoprion. DESCRIPTION: Mauvelip threadfin bream */ +/* Polyacanthonotus rissoanus. DESCRIPTION: */ +/* Nemipterus nemurus. DESCRIPTION: Redspine threadfin bream */ +/* Nemipterus gracilis. DESCRIPTION: Graceful threadfin bream */ +/* Nettastoma solitarium. DESCRIPTION: */ +/* Nemipterus bathybius. DESCRIPTION: Yellowbelly threadfin bream */ +/* Nannaethiops unitaeniatus. DESCRIPTION: Oneline tetra */ +/* Notolepis annulata. DESCRIPTION: Ringed barracudina */ +/* Pinna rudis. DESCRIPTION: Rough pen shell */ +/* Neosebastes entaxis. DESCRIPTION: Orange-banded scorpionfish */ +/* Nototheniops nybelini. DESCRIPTION: */ +/* Nemipterus randalli. DESCRIPTION: Randall's threadfin bream */ +/* Notothenia acuta. DESCRIPTION: Triangular rockcod */ +/* Nocomis biguttatus. DESCRIPTION: Hornyhead chub */ +/* Notothenia coriiceps. DESCRIPTION: Black rockcod */ +/* Nototheniops nudifrons. DESCRIPTION: Yellowfin notie */ +/* Notolepis spp. DESCRIPTION: */ +/* Notothenia angustifrons. DESCRIPTION: Narrowhead rockcod */ +/* Notothenia gibberifrons. DESCRIPTION: Humped rockcod */ +/* Nocomis leptocephalus. DESCRIPTION: Bluehead chub */ +/* Nocomis micropogon. DESCRIPTION: River chub */ +/* Clinoporus biporosus. DESCRIPTION: Ladder klipfish */ +/* Notothenia kempi. DESCRIPTION: Striped-eyed rockcod */ +/* Nototheniops larseni. DESCRIPTION: Painted notie */ +/* Paranotothenia magellanica. DESCRIPTION: Magellanic rockcod */ +/* Notothenia neglecta. DESCRIPTION: Yellowbelly rockcod */ +/* Notoscopelus bolini. DESCRIPTION: */ +/* Trisopterus esmarkii. DESCRIPTION: Norway pout */ +/* Anomia ephippium. DESCRIPTION: Common jingle shell */ +/* Notothenia rossii. DESCRIPTION: Marbled rockcod */ +/* Notothenia squamifrons. DESCRIPTION: Grey rockcod */ +/* Patagonotothen brevicauda. DESCRIPTION: Patagonian rockcod */ +/* Clinostomus elongatus. DESCRIPTION: Redside dace */ +/* Notolychnus valdiviae. DESCRIPTION: */ +/* Anemonia sulcata. DESCRIPTION: Snakelocks anemone */ +/* Nototheniidae. DESCRIPTION: Antarctic rockcods, noties nei */ +/* Nototheniops mizops. DESCRIPTION: Toad notie */ +/* Engraulis mordax. DESCRIPTION: Californian anchovy */ +/* Parapenaeopsis probata. DESCRIPTION: Parole shrimp */ +/* Pentapodus caninus. DESCRIPTION: Small-toothed whiptail */ +/* Pentapodus paradiseus. DESCRIPTION: Paradise whiptail */ +/* Notopogon endeavouri. DESCRIPTION: */ +/* Neoplecostomus franciscoensis. DESCRIPTION: */ +/* Neocentropogon aeglefinis. DESCRIPTION: */ +/* Scomberomorus niphonius. DESCRIPTION: Japanese Spanish mackerel */ +/* Parapenaeopsis coromandelica. DESCRIPTION: Coromandel shrimp */ +/* Panopeus africanus. DESCRIPTION: African mud crab */ +/* Neotropius khavalchor. DESCRIPTION: */ +/* Chaenopsis alepidota. DESCRIPTION: Orangethroat pikeblenny */ +/* Anoplocapros amygdaloides. DESCRIPTION: Western smooth boxfish */ +/* Parapenaeopsis cornuta. DESCRIPTION: Coral shrimp */ +/* Nannoperca oxleyana. DESCRIPTION: Oxleyan pygmy perch */ +/* Parapenaeopsis spp. DESCRIPTION: Parapenaeopsis shrimps nei */ +/* Neopycnodonte cochlear. DESCRIPTION: Spoon oyster */ +/* Notopogon fernandezianus. DESCRIPTION: Orange bellowfish */ +/* Parascolopsis aspinosa. DESCRIPTION: Smooth dwarf monocle bream */ +/* Neoaploactis tridorsalis. DESCRIPTION: Threefin velvetfish */ +/* Anoplarchus purpurescens. DESCRIPTION: High cockscomb */ +/* Anomia peruviana. DESCRIPTION: Peruvian jingle shell */ +/* Neopataecus waterhousii. DESCRIPTION: Whiskered prowfish */ +/* Notopogon xenosoma. DESCRIPTION: Longspine bellowfish */ +/* Pentapodus emeryii. DESCRIPTION: Double whiptail */ +/* Neopomacentrus azysron. DESCRIPTION: Yellowtail demoiselle */ +/* Monodonta articulata. DESCRIPTION: Articulate monodont */ +/* Nerita albicilla. DESCRIPTION: Oxpalate nerite */ +/* Nerita chameleon. DESCRIPTION: Chameleon nerite */ +/* Mnemiopsis mccradyi. DESCRIPTION: */ +/* Anodontia edentula. DESCRIPTION: Toothless lucine */ +/* Scolopsis lineata. DESCRIPTION: Striped monocle bream */ +/* Palea steindachneri. DESCRIPTION: Wattle-necked softshell turtle */ +/* Nerita picea. DESCRIPTION: Pitchy nerite */ +/* Neritina turrita. DESCRIPTION: Turreted nerite */ +/* Nerita costata. DESCRIPTION: Costate nerite */ +/* Nerita planospira. DESCRIPTION: Flatspired nerite */ +/* Monodonta mutabilis. DESCRIPTION: Mutable monodont */ +/* Channa lucius. DESCRIPTION: */ +/* Nerita polita. DESCRIPTION: Polished nerite */ +/* Nerita plicata. DESCRIPTION: Plicate nerite */ +/* Nerita squamulata. DESCRIPTION: Scaly nerite */ +/* Anadara reinharti. DESCRIPTION: Reinhart's ark */ +/* Nerita senegalensis. DESCRIPTION: Senegal nerite */ +/* Anadara tuberculosa. DESCRIPTION: Black ark */ +/* Monodonta turbinata. DESCRIPTION: Turbinate monodont */ +/* Callechelys guineensis. DESCRIPTION: Shorttail snake eel */ +/* Pentapodus spp. DESCRIPTION: */ +/* Mnemiopsis leidyi. DESCRIPTION: */ +/* Callechelys leucoptera. DESCRIPTION: */ +/* Parapenaeus australiensis. DESCRIPTION: Australian rose shrimp */ +/* Centrodoras brachiatus. DESCRIPTION: */ +/* Normanichthys crockeri. DESCRIPTION: Mote sculpin */ +/* Notolepis rissoi. DESCRIPTION: Spotted barracudina */ +/* Anaora tentaculata. DESCRIPTION: Tentacled dragonet */ +/* Parapenaeus fissurus. DESCRIPTION: Neptune rose shrimp */ +/* Parapenaeus longipes. DESCRIPTION: Flamingo shrimp */ +/* Palinurus charlestoni. DESCRIPTION: Cape Verde spiny lobster */ +/* Parapenaeus investigatoris. DESCRIPTION: Explorer rose shrimp */ +/* Parapenaeopsis arafurica. DESCRIPTION: Arafura shrimp */ +/* Parapenaeus lanceolatus. DESCRIPTION: Lancer rose shrimp */ +/* Nerophis lumbriciformis. DESCRIPTION: Worm pipefish */ +/* Nerophis maculatus. DESCRIPTION: */ +/* Neetroplus nematopus. DESCRIPTION: */ +/* Nerophis ophidion. DESCRIPTION: Straightnose pipefish */ +/* Parapenaeus politus. DESCRIPTION: Rose shrimp */ +/* Anadara similis. DESCRIPTION: Brown ark */ +/* Parapenaeus sextuberculatus. DESCRIPTION: Domino shrimp */ +/* Notropis signipinnis. DESCRIPTION: Flagfin shiner */ +/* Notropis stramineus. DESCRIPTION: Sand shiner */ +/* Neolamprologus boulengeri. DESCRIPTION: */ +/* Notropis volucellus. DESCRIPTION: Mimic shiner */ +/* Notropis texanus. DESCRIPTION: Weed shiner */ +/* Parapenaeus spp. DESCRIPTION: Parapenaeus shrimps nei */ +/* Neosilurus argenteus. DESCRIPTION: Silver tandan */ +/* Neosilurus brevidorsalis. DESCRIPTION: Shortfin tandan */ +/* Scolopsis bilineata. DESCRIPTION: Two-lined monocle bream */ +/* Notacanthus sexspinis. DESCRIPTION: Spiny-back eel */ +/* Scolopsis taenioptera. DESCRIPTION: Lattice monocle bream */ +/* Nassa francolina. DESCRIPTION: Francolina jopas */ +/* Scolopsis ghanam. DESCRIPTION: Arabian monocle bream */ +/* Neoscorpis lithophilus. DESCRIPTION: Stone-bream */ +/* Scolopsis bimaculata. DESCRIPTION: Thumbprint monocle bream */ +/* Neosynchiropus ijimai. DESCRIPTION: Japanese dragonet */ +/* Amanses scopas. DESCRIPTION: Broom filefish */ +/* Phocarctos hookeri. DESCRIPTION: New Zealand sea lion */ +/* Neoscopelus macrolepidotus. DESCRIPTION: Large-scaled lantern fish */ +/* Nes longus. DESCRIPTION: Orangespotted goby */ +/* Scolopsis monogramma. DESCRIPTION: Monogrammed monocle bream */ +/* Scolopsis vosmeri. DESCRIPTION: Whitecheek monocle bream */ +/* Nassarius mutabilis. DESCRIPTION: Changeable nassa */ +/* Neostethus amaricola. DESCRIPTION: */ +/* Saurenchelys stylurus. DESCRIPTION: */ +/* Neosilurus ater. DESCRIPTION: Narrowfront tandan */ +/* Notesthes robusta. DESCRIPTION: Bullrout */ +/* Scaevius milii. DESCRIPTION: Green-striped coral bream */ +/* Neoscombrops pacificus. DESCRIPTION: */ +/* Nassa serta. DESCRIPTION: Wreath jopas */ +/* Neoscombrops cynodon. DESCRIPTION: Silver splitfin */ +/* Nansenia antarctica. DESCRIPTION: */ +/* Notropis atherinoides. DESCRIPTION: Emerald shiner */ +/* Notropis bairdi. DESCRIPTION: Red River shiner */ +/* Notorynchus cepedianus. DESCRIPTION: Broadnose sevengill shark */ +/* Notropis dorsalis. DESCRIPTION: Bigmouth shiner */ +/* Notropis heterodon. DESCRIPTION: Blackchin shiner */ +/* Pantomus affinis. DESCRIPTION: Hinged shrimp */ +/* Notropis girardi. DESCRIPTION: Arkansas River shiner */ +/* Temera hardwickii. DESCRIPTION: */ +/* Notropis rupestris. DESCRIPTION: Bedrock shiner */ +/* Acanthopsetta nadeshnyi. DESCRIPTION: Scale-eye plaice */ +/* Acanthacaris caeca. DESCRIPTION: Atlantic deep-sea lobster */ +/* Notropis longirostris. DESCRIPTION: Longnose shiner */ +/* Acanthodoras spinosissimus. DESCRIPTION: Talking catfish */ +/* Notropis lutipinnis. DESCRIPTION: Yellowfin shiner */ +/* Notolepis coatsi. DESCRIPTION: Antarctic jonasfish */ +/* Notropis boops. DESCRIPTION: Bigeye shiner */ +/* Notropis rubellus. DESCRIPTION: Rosyface shiner */ +/* Notropis heterolepis. DESCRIPTION: Blacknose shiner */ +/* Notropis nubilus. DESCRIPTION: Ozark minnow */ +/* Typhlonarke tarakea. DESCRIPTION: Oval electric ray */ +/* Notropis hudsonius. DESCRIPTION: Spottail shiner */ +/* Notocetichthys trunovi. DESCRIPTION: */ +/* Pennatulacea. DESCRIPTION: Sea pens */ +/* Antalis entale. DESCRIPTION: Occidental tuskshell */ +/* Typhlonarke aysoni. DESCRIPTION: Blind electric ray */ +/* Natica euzona. DESCRIPTION: Beautifully-banded moon snail */ +/* Clinus acuminatus. DESCRIPTION: Sad klipfish */ +/* Netuma barba. DESCRIPTION: White sea catfish */ +/* Chalcalburnus chalcoides. DESCRIPTION: Danube bleak */ +/* Aspidontus dussumieri. DESCRIPTION: Lance blenny */ +/* Panulirus echinatus. DESCRIPTION: Brown spiny loster */ +/* Prionurus biafraensis. DESCRIPTION: Biafra doctorfish */ +/* Panulirus gracilis. DESCRIPTION: Green spiny lobster */ +/* Paracanthurus hepatus. DESCRIPTION: Palette surgeonfish */ +/* Triacanthus biaculeatus. DESCRIPTION: Short-nosed tripodfish */ +/* Panulirus japonicus. DESCRIPTION: Japanese spiny lobster */ +/* Nautilus pompilius. DESCRIPTION: Emperor nautilus */ +/* Panulirus laevicauda. DESCRIPTION: Smoothtail spiny lobster */ +/* Neoeucirrhichthys maydelli. DESCRIPTION: */ +/* Antennablennius adenensis. DESCRIPTION: Aden blenny */ +/* Blennius ocellaris. DESCRIPTION: Butterfly blenny */ +/* Panulirus penicillatus. DESCRIPTION: Pronghorn spiny lobster */ +/* Anomura. DESCRIPTION: Anomuran decapods nei */ +/* Panulirus ornatus. DESCRIPTION: Ornate spiny lobster */ +/* Nudiantennarius subteres. DESCRIPTION: Deep-water frogfish */ +/* Panulirus interruptus. DESCRIPTION: Mexican spiny loster */ +/* Panulirus inflatus. DESCRIPTION: Blue spiny lobster */ +/* Panulirus versicolor. DESCRIPTION: Painted spiny lobster */ +/* Blennius spp. DESCRIPTION: */ +/* Nautilus macromphalus. DESCRIPTION: Bellybutton nautilus */ +/* Nuttallia obscurata. DESCRIPTION: Varnish clam */ +/* Ctenocidaris nutrix. DESCRIPTION: */ +/* Neverita albumen. DESCRIPTION: Eggwhite moon snail */ +/* Blennius normani. DESCRIPTION: */ +/* Naevochromis chrysogaster. DESCRIPTION: */ +/* Dalophis boulengeri. DESCRIPTION: */ +/* Neverita peselephanti. DESCRIPTION: Elephant's-foot moon snail */ +/* Dalophis cephalopeltis. DESCRIPTION: */ +/* Dalophis multidentatus. DESCRIPTION: */ +/* Novumbra hubbsi. DESCRIPTION: Olympic mudminnow */ +/* Neverita josephinia. DESCRIPTION: Josephine's moon-shell */ +/* Novaculichthys macrolepidotus. DESCRIPTION: Seagrass wrasse */ +/* Venefica proboscidea. DESCRIPTION: Whipsnout sorcerer */ +/* Liponema spp. DESCRIPTION: */ +/* Niwaella delicata. DESCRIPTION: */ +/* Transennella pannosa. DESCRIPTION: Fine clam */ +/* Scolopsis taeniata. DESCRIPTION: Black-streaked monocle bream */ +/* Lepidotheca spp. DESCRIPTION: Spiny white hydrocorals nei */ +/* Nannocharax altus. DESCRIPTION: */ +/* Neoodax balteatus. DESCRIPTION: */ +/* Caranx caballus. DESCRIPTION: Green jack */ +/* Echinothrix diadema. DESCRIPTION: Crowned sea urchin */ +/* Nexilosus latifrons. DESCRIPTION: Coquito sergeant */ +/* Caranx heberi. DESCRIPTION: Blacktip trevally */ +/* Caranx ignobilis. DESCRIPTION: Giant trevally */ +/* Echinothrix calamaris. DESCRIPTION: Harpooner sea urchin */ +/* Caranx latus. DESCRIPTION: Horse-eye jack */ +/* Caranx melampygus. DESCRIPTION: Bluefin trevally */ +/* Caranx caninus. DESCRIPTION: Pacific crevalle jack */ +/* Notothenia spp. DESCRIPTION: Notothenia nei */ +/* Caranx papuensis. DESCRIPTION: Brassy trevally */ +/* Caranx senegallus. DESCRIPTION: Senegal jack */ +/* Caranx tille. DESCRIPTION: Tille trevally */ +/* Caranx lugubris. DESCRIPTION: Black jack */ +/* Neaxius vivesi. DESCRIPTION: Small pink lobster */ +/* Pododesmus spp. DESCRIPTION: */ +/* Tanyemblemaria alleni. DESCRIPTION: Slender blenny */ +/* Nyassachromis breviceps. DESCRIPTION: */ +/* Pleuronichthys cornutus. DESCRIPTION: Ridged-eye flounder */ +/* Pleuronichthys decurrens. DESCRIPTION: Curlfin sole */ +/* Sciadonus cryptophthalmus. DESCRIPTION: */ +/* Notothenia cyanobrancha. DESCRIPTION: Blue rockcod */ +/* Oxyurichthys ophthalmonema. DESCRIPTION: Eyebrow goby */ +/* Nymphon brachyrhynchum. DESCRIPTION: */ +/* Nybelinella erikssoni. DESCRIPTION: */ +/* Ancylopsetta cycloidea. DESCRIPTION: Cyclope flounder */ +/* Notothenia marionensis. DESCRIPTION: Lobe-lip notothen */ +/* Hanleya hanleyi. DESCRIPTION: Eastern hanleya */ +/* Neatypus obliquus. DESCRIPTION: Western footballer */ +/* Nyctiphanes capensis. DESCRIPTION: */ +/* Nemacystus decipiens. DESCRIPTION: Mozuku */ +/* Ancylopsetta dendritica. DESCRIPTION: Three-spot flounder */ +/* Scomberesox simulans. DESCRIPTION: Dwarf saury */ +/* Oxyurichthys tentacularis. DESCRIPTION: */ +/* Nyctiphanes australis. DESCRIPTION: */ +/* Pleuronichthys verticalis. DESCRIPTION: Hornyhead turbot */ +/* Oxyurichthys papuensis. DESCRIPTION: Frogface goby */ +/* Nematocarcinus spp. DESCRIPTION: Spider prawns nei */ +/* Nedystoma dayi. DESCRIPTION: Day's catfish */ +/* Nephtheidae. DESCRIPTION: */ +/* Nezumia aequalis. DESCRIPTION: Common Atlantic grenadier */ +/* Nezumia bairdi. DESCRIPTION: Marlin-spike grenadier */ +/* Nezumia condylura. DESCRIPTION: */ +/* Nezumia duodecim. DESCRIPTION: Twelve-rayed grenadier */ +/* Nezumia stelgidolepis. DESCRIPTION: California grenadier */ +/* Ostracion cyanurus. DESCRIPTION: Bluetail trunkfish */ +/* Oplopomus oplopomus. DESCRIPTION: Spinecheek goby */ +/* Neanthes kerguelensis. DESCRIPTION: */ +/* Nezumia liolepis. DESCRIPTION: Smooth grenadier */ +/* Opistognathus nigromarginatus. DESCRIPTION: Birdled jawfish */ +/* Nitzschia closterium. DESCRIPTION: */ +/* Nezumia latirostrata. DESCRIPTION: Broadsnout grenadier */ +/* Nezumia micronychodon. DESCRIPTION: Smalltooth grenadier */ +/* Neozoarces steindachneri. DESCRIPTION: */ +/* Nezumia convergens. DESCRIPTION: Peruvian grenadier */ +/* Nezumia proxima. DESCRIPTION: Short-tail grenadier */ +/* Opistognathus muscatensis. DESCRIPTION: Robust jawfish */ +/* Nezumia loricata. DESCRIPTION: Parrot grenadier */ +/* Nezumia sclerorhynchus. DESCRIPTION: Roughtip grenadier */ +/* Nezumia orbitalis. DESCRIPTION: Spectacled grenadier */ +/* Ophichthus apicalis. DESCRIPTION: Bluntnose snake-eel */ +/* Omobranchus punctatus. DESCRIPTION: Muzzled blenny */ +/* Omobranchus mekranensis. DESCRIPTION: Mekran blenny */ +/* Rhinoptera spp. DESCRIPTION: */ +/* Omobranchus fasciolatus. DESCRIPTION: Arab blenny */ +/* Narcetes stomias. DESCRIPTION: Blackhead salmon */ +/* Acanthonus armatus. DESCRIPTION: */ +/* Pomatoschistus bathi. DESCRIPTION: */ +/* Tonna canaliculata. DESCRIPTION: Channeled tun */ +/* Apagesoma delosommatus. DESCRIPTION: */ +/* Allosmerus elongatus. DESCRIPTION: Whitebait smelt */ +/* Colisa fasciatus. DESCRIPTION: Banded gourami */ +/* Abyssobrotula galatheae. DESCRIPTION: */ +/* Ostrea atherstonei. DESCRIPTION: Red flat oyster */ +/* Pomacanthus imperator. DESCRIPTION: Emperor angelfish */ +/* Solenocera algoensis. DESCRIPTION: Algoa shrimp */ +/* Saccostrea kegaki. DESCRIPTION: Kegaki oyster */ +/* Solea senegalensis. DESCRIPTION: Senegalese sole */ +/* Solea impar. DESCRIPTION: Adriatic sole */ +/* Pomacanthus annularis. DESCRIPTION: Bluering angelfish */ +/* Solea ovata. DESCRIPTION: Ovate sole */ +/* Palaemon pandaliformis. DESCRIPTION: Potitinga prawn */ +/* Ostreola equestris. DESCRIPTION: Crested oyster */ +/* Caprichthys gymnura. DESCRIPTION: Rigid boxfish */ +/* Solea nasuta. DESCRIPTION: Snouted sole */ +/* Homola barbata. DESCRIPTION: Homole crab */ +/* Aracana aurita. DESCRIPTION: Striped cowfish */ +/* Pomacanthus asfur. DESCRIPTION: Arabian angelfish */ +/* Osilinus atratus. DESCRIPTION: */ +/* Polydactylus sextarius. DESCRIPTION: Blackspot threadfin */ +/* Oman ypsilon. DESCRIPTION: Oman blenny */ +/* Pomacanthus maculosus. DESCRIPTION: Yellowbar angelfish */ +/* Obliquichthys maryannae. DESCRIPTION: Oblique-swimming triplefin */ +/* Brienomyrus brachyistius. DESCRIPTION: */ +/* Osteobrama cotio. DESCRIPTION: */ +/* Pomatoschistus microps. DESCRIPTION: Common goby */ +/* Bathylychnops exilis. DESCRIPTION: Javelin spookfish */ +/* Ostrea puelchana. DESCRIPTION: */ +/* Bassogigas gillii. DESCRIPTION: */ +/* Heteroscyllium colcloughi. DESCRIPTION: Bluegray carpetshark */ +/* Barathrites iris. DESCRIPTION: */ +/* Scomberoides tol. DESCRIPTION: Needlescaled queenfish */ +/* Brotula clarki. DESCRIPTION: */ +/* Osteobrama belangeri. DESCRIPTION: */ +/* Scomberoides commersonnianus. DESCRIPTION: Talang queenfish */ +/* Scrobicularia plana. DESCRIPTION: Peppery furrow */ +/* Bassozetus compressus. DESCRIPTION: */ +/* Bathyonus laticeps. DESCRIPTION: */ +/* Procambarus spp. DESCRIPTION: Procambarus crayfishes nei */ +/* Benthocometes robustus. DESCRIPTION: */ +/* Scombrops boops. DESCRIPTION: Gnomefish */ +/* Scomberoides tala. DESCRIPTION: Barred queenfish */ +/* Rosenblattia robusta. DESCRIPTION: */ +/* Brotulotaenia brevicauda. DESCRIPTION: */ +/* Brachaelurus waddi. DESCRIPTION: Blind shark */ +/* Ocenebra erinacea. DESCRIPTION: Hedge hog murex */ +/* Scomberoides lysan. DESCRIPTION: Doublespotted queenfish */ +/* Pomatoschistus minutus. DESCRIPTION: Sand goby */ +/* Otocinclus affinis. DESCRIPTION: Golden otocinclus */ +/* Apocryptes bato. DESCRIPTION: */ +/* Octopus vulgaris. DESCRIPTION: Common octopus */ +/* Chaenophryne draco. DESCRIPTION: Smooth dreamer */ +/* Ochetobius elongatus. DESCRIPTION: */ +/* Poecilopsetta colorata. DESCRIPTION: Coloured righteye flounder */ +/* Orinocodoras eigenmanni. DESCRIPTION: */ +/* Ostrea chilensis. DESCRIPTION: Chilean flat oyster */ +/* Oreochromis malagarasi. DESCRIPTION: */ +/* Pteroctopus tetracirrhus. DESCRIPTION: Fourhorn octopus */ +/* Occella kasawai. DESCRIPTION: */ +/* Cherublemma emmelas. DESCRIPTION: Black brotula */ +/* Eledone spp. DESCRIPTION: Horned and musky octopuses */ +/* Octopus macropus. DESCRIPTION: White-spotted octopus */ +/* Oceanites oceanicus. DESCRIPTION: Wilson's storm petrel */ +/* Ocosia apia. DESCRIPTION: */ +/* Octopus conispadiceus. DESCRIPTION: Chestnut octopus */ +/* Poroclinus rothrocki. DESCRIPTION: Whitebarred prickleback */ +/* Carcharhinus longimanus. DESCRIPTION: Oceanic whitetip shark */ +/* Octopodidae. DESCRIPTION: Octopuses, etc. nei */ +/* Apocryptodon madurensis. DESCRIPTION: */ +/* Apodocreedia vanderhorsti. DESCRIPTION: Longfin burrower */ +/* Octopus neglectus. DESCRIPTION: */ +/* Orectolobiformes. DESCRIPTION: Carpet sharks */ +/* Chilara taylori. DESCRIPTION: Spotted cusk-eel */ +/* Octopus spp. DESCRIPTION: Octopuses nei */ +/* Odontocharacidium aphanes. DESCRIPTION: */ +/* Dolichopteryx binocularis. DESCRIPTION: */ +/* Odonteleotris macrodon. DESCRIPTION: */ +/* Ocypode cordimanus. DESCRIPTION: Common ghost crab */ +/* Ostrea denticulata. DESCRIPTION: Denticulate rock oyster */ +/* Odontanthias flagris. DESCRIPTION: */ +/* Odontostilbe gracilis. DESCRIPTION: */ +/* Odontaspis noronhai. DESCRIPTION: Bigeye sand tiger shark */ +/* Dicrolene intronigra. DESCRIPTION: */ +/* Choerodon schoenleinii. DESCRIPTION: Blackspot tuskfish */ +/* Ocypode ceratophthalmus. DESCRIPTION: Horned ghost crab */ +/* Oedalechilus labeo. DESCRIPTION: Boxlip mullet */ +/* Odontostomops normalops. DESCRIPTION: */ +/* Odontoceti. DESCRIPTION: Toothed whales nei */ +/* Opsodoras boulengeri. DESCRIPTION: */ +/* Polydactylus opercularis. DESCRIPTION: Yellow bobo */ +/* Pododesmus cepio. DESCRIPTION: Abalone jingle shell */ +/* Odontesthes regia. DESCRIPTION: Chilean silverside */ +/* Polydactylus plebeius. DESCRIPTION: Striped threadfin */ +/* Dannevigia tusca. DESCRIPTION: Australian tusk */ +/* Odontomacrurus murrayi. DESCRIPTION: Roundhead grenadier */ +/* Podophthalmus vigil. DESCRIPTION: Periscope crab */ +/* Ostrea denselamellosa. DESCRIPTION: Japanese flat oyster */ +/* Odontoscion xanthops. DESCRIPTION: Yelloweye croaker */ +/* Odontodactylus scyllarus. DESCRIPTION: Reef odontoactylid mantis shri */ +/* Oedalechilus labiosus. DESCRIPTION: Hornlip mullet */ +/* Oreochromis aureus. DESCRIPTION: Blue tilapia */ +/* Doederleinia berycoides. DESCRIPTION: */ +/* Capoeta capoeta. DESCRIPTION: */ +/* Capoeta damascina. DESCRIPTION: */ +/* Oedemognathus exodon. DESCRIPTION: */ +/* Epetriodus freddyi. DESCRIPTION: */ +/* Oreochromis angolensis. DESCRIPTION: */ +/* Oreochromis hunteri. DESCRIPTION: */ +/* Oreochromis lidole. DESCRIPTION: */ +/* Oreochromis jipe. DESCRIPTION: */ +/* Capoetobrama kuschakewitschi. DESCRIPTION: Sharpray */ +/* Oreochromis alcalicus. DESCRIPTION: Magadi tilapia */ +/* Oreochromis amphimelas. DESCRIPTION: */ +/* Carassioides cantonensis. DESCRIPTION: */ +/* Oreochromis karongae. DESCRIPTION: */ +/* Oreochromis lepidurus. DESCRIPTION: */ +/* Euryalida. DESCRIPTION: Basket stars */ +/* Oreochromis karomo. DESCRIPTION: Karomo */ +/* Oreochromis esculentus. DESCRIPTION: */ +/* Oreochromis leucostictus. DESCRIPTION: */ +/* Oreochromis chungruruensis. DESCRIPTION: */ +/* Oreochromis variabilis. DESCRIPTION: */ +/* Oreochromis korogwe. DESCRIPTION: */ +/* Solen rostriformis. DESCRIPTION: Rostrate jackknife */ +/* Mormyridae. DESCRIPTION: Elephantsnout fishes nei */ +/* Choerodon azurio. DESCRIPTION: */ +/* Ophisternon aenigmaticum. DESCRIPTION: Obscure swamp eel */ +/* Ophthalmotilapia boops. DESCRIPTION: */ +/* Ommastrephes caroli. DESCRIPTION: Webbed flying squid */ +/* Choerodon robustus. DESCRIPTION: Robust tuskfish */ +/* Ommastrephes pteropus. DESCRIPTION: Orangeback flying squid */ +/* Ophiogobius ophicephalus. DESCRIPTION: */ +/* Otopharynx argyrosoma. DESCRIPTION: */ +/* Porphyra umbilicalis. DESCRIPTION: Pink laver */ +/* Pontophilus spinosus. DESCRIPTION: Spiny shrimp */ +/* Ommastrephes bartrami. DESCRIPTION: Neon flying squid */ +/* Porphyra dioica. DESCRIPTION: */ +/* Coryphopterus alloides. DESCRIPTION: Barfin goby */ +/* Ophiocara macrolepidota. DESCRIPTION: */ +/* Porphyra linearis. DESCRIPTION: Ribboned nori */ +/* Ostrea lurida. DESCRIPTION: Yaquina oyster */ +/* Ophieleotris aporos. DESCRIPTION: Snakehead gudgeon */ +/* Porphyra purpurea. DESCRIPTION: Purple laver */ +/* Omegophora armilla. DESCRIPTION: Ringed toadfish */ +/* Ophioblennius atlanticus. DESCRIPTION: */ +/* Porphyra leucosticta. DESCRIPTION: Spotted nori */ +/* Apodichthys flavidus. DESCRIPTION: Penpoint gunnel */ +/* Choerodon spp. DESCRIPTION: Tuskfishes nei */ +/* Porphyra laciniata. DESCRIPTION: */ +/* Octopus fangsiao. DESCRIPTION: */ +/* Lamprogrammus exutus. DESCRIPTION: Legless cuskeel */ +/* Apogonops anomalus. DESCRIPTION: Three-spined cardinalfish */ +/* Loligo beka. DESCRIPTION: Beka squid */ +/* Oregonichthys crameri. DESCRIPTION: Oregon chub */ +/* Oreoglanis delacouri. DESCRIPTION: */ +/* Pronotogrammus eos. DESCRIPTION: Bigeye bass */ +/* Apogon fasciatus. DESCRIPTION: Broadbanded cardinalfish */ +/* Onigocia grandisquama. DESCRIPTION: */ +/* Porogobius schlegelii. DESCRIPTION: */ +/* Coryogalops adamsoni. DESCRIPTION: Adamson's goby */ +/* Glyptophidium japonicum. DESCRIPTION: */ +/* Loligo bleekeri. DESCRIPTION: Spear squid */ +/* Corcyrogobius liechtensteini. DESCRIPTION: */ +/* Osteogeneiosus militaris. DESCRIPTION: Soldier catfish */ +/* Gymnarchus niloticus. DESCRIPTION: Aba */ +/* Ogcocephalus corniger. DESCRIPTION: Longnose batfish */ +/* Pogonoperca punctata. DESCRIPTION: */ +/* Ostrea angasi. DESCRIPTION: Australian mud oyster */ +/* Ogyrides orientalis. DESCRIPTION: Telescope shrimp */ +/* Apogon semilineatus. DESCRIPTION: Half-lined cardinal */ +/* Apogon imberbis. DESCRIPTION: Cardinal fish */ +/* Oligolepis acutipennis. DESCRIPTION: Sharptail goby */ +/* Pinnoctopus cordiformis. DESCRIPTION: */ +/* Odontesthes spp. DESCRIPTION: */ +/* Apogonichthys perdix. DESCRIPTION: Perdix cardinalfish */ +/* Ogilbia cayorum. DESCRIPTION: Key brotula */ +/* Crassostrea gasar. DESCRIPTION: Gasar cupped oyster */ +/* Hiodon tergisus. DESCRIPTION: Mooneye */ +/* Scleropages formosus. DESCRIPTION: Asian bonytongue */ +/* Oreichthys cosuatis. DESCRIPTION: */ +/* Ophioscion adustus. DESCRIPTION: */ +/* Holcomycteronus aequatoris. DESCRIPTION: */ +/* Ophthalmolycus bothriocephalus. DESCRIPTION: */ +/* Hoplobrotula gnathopus. DESCRIPTION: False kinglip */ +/* Arothron hispidus. DESCRIPTION: White-spotted puffer */ +/* Oreochromis pangani. DESCRIPTION: */ +/* Pomachromis fuscidorsalis. DESCRIPTION: Tahitian reef-damsel */ +/* Oreochromis saka. DESCRIPTION: */ +/* Ochmacanthus alternus. DESCRIPTION: */ +/* Orthodon microlepidotus. DESCRIPTION: Sacramento blackfish */ +/* Hypopleuron caninum. DESCRIPTION: */ +/* Oreochromis mortimeri. DESCRIPTION: Kariba tilapia */ +/* Ophioscion punctatissimus. DESCRIPTION: Spotted croaker */ +/* Aporrhais pespelecani. DESCRIPTION: Common pelican-foot */ +/* Homostolus acer. DESCRIPTION: */ +/* Bothus constellatus. DESCRIPTION: Pacific eyed flounder */ +/* Oreochromis placidus. DESCRIPTION: Black tilapia */ +/* Monomitopus metriostoma. DESCRIPTION: */ +/* Oreochromis rukwaensis. DESCRIPTION: */ +/* Aporrhais serresianus. DESCRIPTION: Serre's pelican-foot */ +/* Coranthus polyacanthus. DESCRIPTION: */ +/* Ophthalmolycus spp. DESCRIPTION: */ +/* Anostomoides laticeps. DESCRIPTION: */ +/* Oidiphorus brevis. DESCRIPTION: */ +/* Aesopia cornuta. DESCRIPTION: Unicorn sole */ +/* Opisthocentrus dybowskii. DESCRIPTION: */ +/* Scorpis aequipinnis. DESCRIPTION: Sea sweep */ +/* Soletellina diphos. DESCRIPTION: Diphos sanguin */ +/* Colistium guntheri. DESCRIPTION: */ +/* Oreochromis shiranus. DESCRIPTION: */ +/* Cloridopsis dubia. DESCRIPTION: Mud mantis */ +/* Moroteuthis ingens. DESCRIPTION: Greater hooked squid */ +/* Solieria chordalis. DESCRIPTION: False sea pine */ +/* Ruvettus pretiosus. DESCRIPTION: Oilfish */ +/* Pocillopora damicornis. DESCRIPTION: Cauliflower coral */ +/* Colistium nudipinnis. DESCRIPTION: */ +/* Poecilopsetta albomaculata. DESCRIPTION: */ +/* Oreochromis upembae. DESCRIPTION: */ +/* Oreochromis squamipinnis. DESCRIPTION: */ +/* Cloridopsis scorpio. DESCRIPTION: Spotted squillid mantis shrimp */ +/* Oreochromis salinicola. DESCRIPTION: */ +/* Oreochromis tanganicae. DESCRIPTION: */ +/* Opistognathus aurifrons. DESCRIPTION: Yellowhead jawfish */ +/* Scorpis violacea. DESCRIPTION: Blue maomao */ +/* Oreochromis schwebischi. DESCRIPTION: */ +/* Pocillopora verrucosa. DESCRIPTION: Rasp coral */ +/* Pocillopora eydouxi. DESCRIPTION: Elkhorn cora */ +/* Ophioderma longicauda. DESCRIPTION: */ +/* Austrorossia antillensis. DESCRIPTION: Antilles bobtail squid */ +/* Austrorossia bipapillata. DESCRIPTION: Big-eyed bobtail squid */ +/* Oxyjulis californica. DESCRIPTION: Se */ +/* ñorita */ +/* Loligo duvauceli. DESCRIPTION: Indian squid */ +/* Loligo edulis. DESCRIPTION: Swordtip squid */ +/* Ophiocten amitinum. DESCRIPTION: */ +/* Austrorossia australis. DESCRIPTION: Big bottom bobtail squid */ +/* Loligo chinensis. DESCRIPTION: Mitre squid */ +/* Loligo sibogae. DESCRIPTION: Siboga squid */ +/* Loligo japonica. DESCRIPTION: Japanese squid */ +/* Loligo kobiensis. DESCRIPTION: Kobi squid */ +/* Loligo ocula. DESCRIPTION: Bigeye inshore squid */ +/* Loligo surinamensis. DESCRIPTION: Surinam squid */ +/* Uroteuthis singhalensis. DESCRIPTION: Long barrel squid */ +/* Loligo plei. DESCRIPTION: Slender inshore squid */ +/* Rossia pacifica. DESCRIPTION: North Pacific bobtail squid */ +/* Pocillopora meandrina. DESCRIPTION: Brocoli coral */ +/* Loligo roperi. DESCRIPTION: Island inshore squid */ +/* Loligo sanpaulensis. DESCRIPTION: Sao Paulo squid */ +/* Rossia tortugaensis. DESCRIPTION: Tortuga bobtail squid */ +/* Rossia bullisi. DESCRIPTION: Bully bobtail squid */ +/* Ophiomisidium speciosum. DESCRIPTION: */ +/* Pisodonophis semicinctus. DESCRIPTION: */ +/* Oplegnathus spp. DESCRIPTION: */ +/* Loligo uyii. DESCRIPTION: Little squid */ +/* Ombellula spp. DESCRIPTION: */ +/* Ornithoteuthis antillarum. DESCRIPTION: Atlantic bird squid */ +/* Ompok bimaculatus. DESCRIPTION: Butter catfish */ +/* Macoma constricta. DESCRIPTION: Constricted macoma */ +/* Loliolopsis diomedeae. DESCRIPTION: Dart squid */ +/* Octopus tetricus. DESCRIPTION: Gloomy octopus */ +/* Solieria filiformis. DESCRIPTION: */ +/* Plocamium cartilagineum. DESCRIPTION: Plocamium */ +/* Octopus tehuelchus. DESCRIPTION: Tehuelche octopus */ +/* Orconectes immunis. DESCRIPTION: Calico crayfish */ +/* Octopus variabilis. DESCRIPTION: Whiparm octopus */ +/* Tonicia schrammi. DESCRIPTION: Gold-flecked chiton */ +/* Ornithoteuthis volatilis. DESCRIPTION: Shiny bird squid */ +/* Polinices mammilla. DESCRIPTION: Pear-shaped moon snail */ +/* Orconectes nais. DESCRIPTION: */ +/* Orconectes propinquus. DESCRIPTION: Northern clearwater crayfish */ +/* Ompok pabda. DESCRIPTION: */ +/* Pterocladiella capillacea. DESCRIPTION: Spanish agar */ +/* Orconectes rusticus. DESCRIPTION: Rusty crayfish */ +/* Octopoteuthis sicula. DESCRIPTION: Ruppell's octopus squid */ +/* Octopus tenuicirrus. DESCRIPTION: */ +/* Polinices melanostoma. DESCRIPTION: Blackmouth moon snail */ +/* Orconectes virilis. DESCRIPTION: Virile crayfish */ +/* Coreoperca kawamebari. DESCRIPTION: */ +/* Oneirodidae. DESCRIPTION: Dreamers nei */ +/* Polinices didyma. DESCRIPTION: Bladder moon snail */ +/* Octopus zonatus. DESCRIPTION: Atlantic banded octopus */ +/* Lepophidium aporrhox. DESCRIPTION: */ +/* Lamprogrammus brunswigi. DESCRIPTION: */ +/* Polymetme corythaeola. DESCRIPTION: */ +/* Collichthys lucidus. DESCRIPTION: */ +/* Polycentropsis abbreviata. DESCRIPTION: African leaffish */ +/* Oplegnathus fasciatus. DESCRIPTION: */ +/* Oligoplites refulgens. DESCRIPTION: Shortjaw leatherjacket */ +/* Oligosarcus hepsetus. DESCRIPTION: */ +/* Oligoplites saurus. DESCRIPTION: Leatherjacket */ +/* Solea humilis. DESCRIPTION: */ +/* Solea bleekeri. DESCRIPTION: Blackhand sole */ +/* Leuropharus lasiops. DESCRIPTION: Acned snake-eel */ +/* Pollichthys mauli. DESCRIPTION: */ +/* Collichthys niveatus. DESCRIPTION: */ +/* Lactoria cornuta. DESCRIPTION: Longhorn cowfish */ +/* Oligoplites palometa. DESCRIPTION: Maracaibo leatherjacket */ +/* Portlandia isonota. DESCRIPTION: Kerguelen nut shell */ +/* Luciobrotula bartschi. DESCRIPTION: */ +/* Oligoplites saliens. DESCRIPTION: Castin leatherjacket */ +/* Oligoplites altus. DESCRIPTION: Longjaw leatherjacket */ +/* Oloplotosus luteus. DESCRIPTION: Pale yellow tandan */ +/* Paromola cuvieri. DESCRIPTION: Paromola */ +/* Ophionotus hexactis. DESCRIPTION: */ +/* Polydactylus sexfilis. DESCRIPTION: Sixfinger threadfin */ +/* Oligocottus snyderi. DESCRIPTION: Fluffy sculpin */ +/* Polinices sebae. DESCRIPTION: Seba's moon snail */ +/* Marcusenius macrolepidotus. DESCRIPTION: Bulldog */ +/* Boulengeromyrus knoepffleri. DESCRIPTION: */ +/* Campylomormyrus elephas. DESCRIPTION: */ +/* Pollimyrus isidori. DESCRIPTION: */ +/* Petrocephalus catostoma. DESCRIPTION: Churchill */ +/* Muraenichthys gymnotus. DESCRIPTION: Indo-Pacific slender worm-eel */ +/* Genyomyrus donnyi. DESCRIPTION: */ +/* Gnathonemus petersii. DESCRIPTION: Elephantnose fish */ +/* Isichthys henryi. DESCRIPTION: */ +/* Paramormyrops jacksoni. DESCRIPTION: Ghost stonebasher */ +/* Pomacentrus bankanensis. DESCRIPTION: Speckled damselfish */ +/* Ocynectes maschalis. DESCRIPTION: */ +/* Ommastrephes spp. DESCRIPTION: Flying squids nei */ +/* Monomitopus agassizii. DESCRIPTION: */ +/* Mormyrus rume. DESCRIPTION: */ +/* Hippopotamyrus discorhynchus. DESCRIPTION: Zambesi parrotfish */ +/* Macropinna microstoma. DESCRIPTION: Barreleye */ +/* Marcusenius abadii. DESCRIPTION: */ +/* Stomatorhinus ater. DESCRIPTION: */ +/* Hyperopisus bebe. DESCRIPTION: */ +/* Ivindomyrus opdenboschi. DESCRIPTION: */ +/* Omosudis lowei. DESCRIPTION: Omosudid */ +/* Solemya togata. DESCRIPTION: Mediterranean awning clam */ +/* Heteromormyrus pauciradiatus. DESCRIPTION: */ +/* Ommastrephidae. DESCRIPTION: Ommastrephidae squids nei */ +/* Oncorhynchus aguabonita. DESCRIPTION: Golden trout */ +/* Odondebuenia balearica. DESCRIPTION: Coralline goby */ +/* Oncorhynchus clarki. DESCRIPTION: Cutthroat trout */ +/* Neenchelys daedalus. DESCRIPTION: */ +/* Neocyttus helgae. DESCRIPTION: */ +/* Spondylus calcifer. DESCRIPTION: Donkey thorny oyster */ +/* Oncorhynchus gilae. DESCRIPTION: Gila trout */ +/* Oncorhynchus apache. DESCRIPTION: Apache trout */ +/* Odonus niger. DESCRIPTION: Red-toothed triggerfish */ +/* Solenocera acuminata. DESCRIPTION: */ +/* Solen lamarckii. DESCRIPTION: Lamarck's razor shell */ +/* Onychostoma alticorpus. DESCRIPTION: Taiwan ku fish */ +/* Arothron mappa. DESCRIPTION: Map puffer */ +/* Notopterus notopterus. DESCRIPTION: Bronze featherback */ +/* Oreonectes anophthalmus. DESCRIPTION: */ +/* Papyrocranus afer. DESCRIPTION: Reticulate knifefish */ +/* Palaemon northropi. DESCRIPTION: Caribbean bait prawn */ +/* Oncorhynchus rhodurus. DESCRIPTION: */ +/* Neobythites analis. DESCRIPTION: Black-edged cusk-eel */ +/* Conta conta. DESCRIPTION: */ +/* Polynemus paradiseus. DESCRIPTION: Paradise threadfin */ +/* Neocyttus rhomboidalis. DESCRIPTION: Spiky oreo */ +/* Oncopterus darwinii. DESCRIPTION: Remo flounder */ +/* Xenomystus nigri. DESCRIPTION: African knifefish */ +/* Oncorhynchus chrysogaster. DESCRIPTION: Mexican golden trout */ +/* Pontocaris lacazei. DESCRIPTION: Hardshell shrimp */ +/* Ophidion barbatum. DESCRIPTION: Snake blenny */ +/* Osteoglossum bicirrhosum. DESCRIPTION: Arawana */ +/* Otophidium chickcharney. DESCRIPTION: */ +/* Oplopomops diacanthus. DESCRIPTION: Hole goby */ +/* Osopsaron natalensis. DESCRIPTION: */ +/* Ocypode africana. DESCRIPTION: African ghost crab */ +/* Ophichthus gomesii. DESCRIPTION: Shrimp eel */ +/* Ophichthus remiger. DESCRIPTION: Punctuated snake-eel */ +/* Opisthoproctus grimaldii. DESCRIPTION: Mirrorbelly */ +/* Palaemon ortmanni. DESCRIPTION: Gladiator prawn */ +/* Ocypode cursor. DESCRIPTION: Tufted ghost crab */ +/* Opisthoproctus soleatus. DESCRIPTION: Barrel-eye */ +/* Ophisurus macrorhynchus. DESCRIPTION: */ +/* Oneirodes acanthias. DESCRIPTION: Spiny dreamer */ +/* Omobranchus anolius. DESCRIPTION: */ +/* Crossosalarias macrospilus. DESCRIPTION: Tripplespot blenny */ +/* Spondylus squamosus. DESCRIPTION: Ducal thorny oyster */ +/* Ophichthus rufus. DESCRIPTION: Rufus snake-eel */ +/* Ophisurus serpens. DESCRIPTION: Serpent eel */ +/* Oreosoma atlanticum. DESCRIPTION: Ox-eyed oreo */ +/* Odontobutis obscura. DESCRIPTION: */ +/* Oneirodes notius. DESCRIPTION: */ +/* Saloptia powelli. DESCRIPTION: Golden grouper */ +/* Solenosteira gatesi. DESCRIPTION: Gates' goblet */ +/* Ophiurida. DESCRIPTION: Brittle and snake stars */ +/* Ophichthus ophis. DESCRIPTION: Spotted snake eel */ +/* Paraletharchus pacificus. DESCRIPTION: Sailfin eel */ +/* Pantodon buchholzi. DESCRIPTION: Freshwater butterflyfish */ +/* Cirrhoscyllium expolitum. DESCRIPTION: Barbelthroat carpetshark */ +/* Opsariichthys bidens. DESCRIPTION: */ +/* Parascyllium ferrugineum. DESCRIPTION: Rusty carpetshark */ +/* Cirrhoscyllium formosanum. DESCRIPTION: Taiwan saddled carpetshark */ +/* Opaeophacus acrogeneius. DESCRIPTION: */ +/* Ophidiidae. DESCRIPTION: Cusk-eels, brotulas nei */ +/* Pisodonophis cancrivorus. DESCRIPTION: Longfin snake-eel */ +/* Cirrhoscyllium japonicum. DESCRIPTION: Saddle carpetshark */ +/* Parophidion schmidti. DESCRIPTION: Dusky cusk-eel */ +/* Opsaridium microlepis. DESCRIPTION: Lake salmon */ +/* Opisthonema medirastre. DESCRIPTION: Middling thread herring */ +/* Opostomias micripnus. DESCRIPTION: */ +/* Phaenomonas cooperae. DESCRIPTION: Short-maned sand-eel */ +/* Sebastes alutus. DESCRIPTION: Pacific ocean perch */ +/* Opsopoeodus emiliae. DESCRIPTION: Pugnose minnow */ +/* Pisodonophis boro. DESCRIPTION: Rice-paddy eel */ +/* Pseudomyrophis atlanticus. DESCRIPTION: */ +/* Macrozoarces americanus. DESCRIPTION: Ocean pout */ +/* Opisthonema bulleri. DESCRIPTION: Slender thread herring */ +/* Parascyllium variolatum. DESCRIPTION: Necklace carpetshark */ +/* Penopus microphthalmus. DESCRIPTION: */ +/* Phyllophichthus xenodontus. DESCRIPTION: Flappy snake-eel */ +/* Parascyllium collare. DESCRIPTION: Collared carpetshark */ +/* Copadichromis azureus. DESCRIPTION: */ +/* Crella incrustans. DESCRIPTION: Orange frond sponge */ +/* Octopus lobensis. DESCRIPTION: Lobed octopus */ +/* Octopus cyaneus. DESCRIPTION: Big blue octopus */ +/* Octopus defilippi. DESCRIPTION: Lilliput longarm octopus */ +/* Oratosquillina perpensa. DESCRIPTION: Common squillid mantis shrimp */ +/* Octopus dofleini. DESCRIPTION: North Pacific giant octopus */ +/* Oratosquillina gravieri. DESCRIPTION: Vietnamese squillid mantis shr */ +/* Octopus hummelincki. DESCRIPTION: Bumblebee octopus */ +/* Octopus minor. DESCRIPTION: */ +/* Octopus joubini. DESCRIPTION: Pygmy octopus */ +/* Ophichthus regius. DESCRIPTION: Ornate Snake Eel */ +/* Octopus globosus. DESCRIPTION: Globe octopus */ +/* Erugosquilla massavensis. DESCRIPTION: Red sea mantis shrimp */ +/* Octopus selene. DESCRIPTION: Moon octopus */ +/* Oratosquilla oratoria. DESCRIPTION: Japanese squillid mantis shrim */ +/* Quassiremus polyclitellum. DESCRIPTION: */ +/* Oratosquillina quinquedentata. DESCRIPTION: Fivespined squillid mantis shr */ +/* Octopus membranaceus. DESCRIPTION: Webfoot octopus */ +/* Oratosquillina solicitans. DESCRIPTION: Variable squillid mantis shrim */ +/* Octopus salutii. DESCRIPTION: Spider octopus */ +/* Octopus dollfusi. DESCRIPTION: Marbled octopus */ +/* Octopus oliveri. DESCRIPTION: */ +/* Ophiura ambigua. DESCRIPTION: */ +/* Chiloscyllium spp. DESCRIPTION: Bamboosharks nei */ +/* Octopus maya. DESCRIPTION: Mexican four-eyed octopus */ +/* Ophidion lozanoi. DESCRIPTION: */ +/* Chiloscyllium arabicum. DESCRIPTION: Arabian carpetshark */ +/* Chiloscyllium punctatum. DESCRIPTION: Brownbanded bambooshark */ +/* Oncorhynchus spp. DESCRIPTION: Pacific salmons nei */ +/* Oreosomatidae. DESCRIPTION: Oreo dories nei */ +/* Eucrossorhinus dasypogon. DESCRIPTION: Tasselled wobbegong */ +/* Hemiscyllium freycineti. DESCRIPTION: Indonesia speckled carpetshark */ +/* Tubipora musica. DESCRIPTION: Organpipe coral */ +/* Chiloscyllium plagiosum. DESCRIPTION: Whitespotted bambooshark */ +/* Chiloscyllium indicum. DESCRIPTION: Slender bambooshark */ +/* Orectolobus japonicus. DESCRIPTION: Japanese wobbegong */ +/* Hemiscyllium hallstromi. DESCRIPTION: Papuan epaulette shark */ +/* Orconectes limosus. DESCRIPTION: Spinycheek crayfish */ +/* Oreochromis macrochir. DESCRIPTION: Longfin tilapia */ +/* Hemiscyllium ocellatum. DESCRIPTION: Epaulette shark */ +/* Orectolobus ornatus. DESCRIPTION: Ornate wobbegong */ +/* Chiloscyllium caerulopunctatum. DESCRIPTION: Bluespotted bambooshark */ +/* Hemiscyllium strahani. DESCRIPTION: Hooded carpetshark */ +/* Chiloscyllium griseum. DESCRIPTION: Grey bambooshark */ +/* Sutorectus tentaculatus. DESCRIPTION: Cobbler wobbegong */ +/* Orectolobus maculatus. DESCRIPTION: Spotted wobbegong */ +/* Oreochromis urolepis. DESCRIPTION: Wami tilapia */ +/* Orectolobus wardi. DESCRIPTION: Northern wobbegong */ +/* Hemiscyllium trispeculare. DESCRIPTION: Speckled carpetshark */ +/* Ginglymostoma brevicaudatum. DESCRIPTION: Short-tail nurse shark */ +/* Hoplostethus atlanticus. DESCRIPTION: Orange roughy */ +/* Nebrius ferrugineus. DESCRIPTION: Tawny nurse shark */ +/* Ariopsis assimilis. DESCRIPTION: Mayan sea catfish */ +/* Aporops bilinearis. DESCRIPTION: */ +/* Schultzidia johnstonensis. DESCRIPTION: Johnston snake-eel */ +/* Osteodiscus cascadiae. DESCRIPTION: Bigtail snailfish */ +/* Osteochilus melanopleurus. DESCRIPTION: */ +/* Stegostoma fasciatum. DESCRIPTION: Zebra shark */ +/* Spectrunculus grandis. DESCRIPTION: */ +/* Ex Pinctada spp. DESCRIPTION: Pearl oyster shells nei */ +/* Sirembo imberbis. DESCRIPTION: */ +/* Scleropages jardinii. DESCRIPTION: Australian bonytongue */ +/* Palaemon serrifer. DESCRIPTION: Carpenter prawn */ +/* Schismorhynchus labialis. DESCRIPTION: */ +/* Scytalichthys miurus. DESCRIPTION: Short-tailed viper-eel */ +/* Orthosternarchus tamandua. DESCRIPTION: */ +/* Odontostomias masticopogon. DESCRIPTION: */ +/* Portunus hastatus. DESCRIPTION: Lancer swimcrab */ +/* Corematodus shiranus. DESCRIPTION: */ +/* Osteochilus spilurus. DESCRIPTION: */ +/* Ostreidae. DESCRIPTION: Flat and cupped oysters nei */ +/* Spottobrotula amaculata. DESCRIPTION: */ +/* Osteolaemus tetraspis. DESCRIPTION: African dwarf crocodile */ +/* Portunus gibbesii. DESCRIPTION: Iridescent swimming crab */ +/* Spirinchus thaleichthys. DESCRIPTION: Longfin smelt */ +/* Tonna sulcosa. DESCRIPTION: Banded tun */ +/* Porcostoma dentata. DESCRIPTION: Dane seabream */ +/* Otolithoides biauritus. DESCRIPTION: Bronze croaker */ +/* Protemblemaria bicirris. DESCRIPTION: Warthead blenny */ +/* Otolithoides pama. DESCRIPTION: Pama croaker */ +/* Othos dentex. DESCRIPTION: */ +/* Arothron meleagris. DESCRIPTION: Guineafowl puffer */ +/* Protonibea diacanthus. DESCRIPTION: Blackspotted croaker */ +/* Ostracion cubicus. DESCRIPTION: Yellow boxfish */ +/* Arothron nigropunctatus. DESCRIPTION: Blackspotted puffer */ +/* Bothus lunatus. DESCRIPTION: */ +/* Lutra felina. DESCRIPTION: Marine otter */ +/* Bostrychus sinensis. DESCRIPTION: */ +/* Rondeletiola minor. DESCRIPTION: Lentil bobtail squid */ +/* Orthrias panthera. DESCRIPTION: */ +/* Octopus briareus. DESCRIPTION: Caribbean reef octopus */ +/* Orthopristis ruber. DESCRIPTION: Corocoro grunt */ +/* Enhydra lutris. DESCRIPTION: Sea otter */ +/* Orthonopias triacis. DESCRIPTION: Snubnose sculpin */ +/* Parapocryptes rictuosus. DESCRIPTION: */ +/* Arothron stellatus. DESCRIPTION: Stellate puffer */ +/* Protosciaena trewavasae. DESCRIPTION: New Grenada drum */ +/* Portieria hornemannii. DESCRIPTION: Clawed sea moss */ +/* Octopus burryi. DESCRIPTION: Brownstriped octopus */ +/* Oropallene dimorpha. DESCRIPTION: */ +/* Scopelarchus analis. DESCRIPTION: */ +/* Bothus podas. DESCRIPTION: Wide-eyed flounder */ +/* Oplopomus caninoides. DESCRIPTION: */ +/* Oxuderces dentatus. DESCRIPTION: */ +/* Portunus asper. DESCRIPTION: Rough swimcrab */ +/* Oxyurichthys formosanus. DESCRIPTION: */ +/* Orestias chungarensis. DESCRIPTION: */ +/* Oreoleuciscus handlirschi. DESCRIPTION: */ +/* Palaemon pacificus. DESCRIPTION: Indian bait prawn */ +/* Octopus aegina. DESCRIPTION: Sandbird octopus */ +/* Alloteuthis africana. DESCRIPTION: African squid */ +/* Alloteuthis subulata. DESCRIPTION: European common squid */ +/* Alloteuthis media. DESCRIPTION: Midsize squid */ +/* Bothus pantherinus. DESCRIPTION: Leopard flounder */ +/* Bothus ocellatus. DESCRIPTION: Eyed flounder */ +/* Ospatulus palaemophagus. DESCRIPTION: */ +/* Spondylus princeps. DESCRIPTION: Pacific thorny oyster */ +/* Cryptotomus roseus. DESCRIPTION: Bluelip parrotfish */ +/* Protogrammus sousai. DESCRIPTION: */ +/* Opua atherinoides. DESCRIPTION: */ +/* Cotylopus acutipinnis. DESCRIPTION: */ +/* Oligocarpa megalorchis. DESCRIPTION: */ +/* Alloteuthis spp. DESCRIPTION: Alloteuthis squids nei */ +/* Portunus xantusii. DESCRIPTION: Xantus swimcrab */ +/* Bostrychus africanus. DESCRIPTION: */ +/* Odontostomias micropogon. DESCRIPTION: */ +/* Antedon bifida. DESCRIPTION: */ +/* Arothron immaculatus. DESCRIPTION: Immaculate puffer */ +/* Oliva caerulea. DESCRIPTION: Purplemouth olive */ +/* Oculina virgosa. DESCRIPTION: */ +/* Optivus elongatus. DESCRIPTION: Slender roughy */ +/* Oliva porphyria. DESCRIPTION: Tent olive */ +/* Oliva tigrina. DESCRIPTION: Tiger olive */ +/* Pomacentrus moluccensis. DESCRIPTION: Lemon damsel */ +/* Oliva miniacea. DESCRIPTION: Redmouth olive */ +/* Oxycheilinus digramma. DESCRIPTION: Cheeklined wrasse */ +/* Ophidion holbrooki. DESCRIPTION: Band cusk-eel */ +/* Oliva reticularis. DESCRIPTION: Netted olice */ +/* Corvula macrops. DESCRIPTION: Vacuocua croaker */ +/* Oliva annulata. DESCRIPTION: Amethyst olive */ +/* Ovula ovum. DESCRIPTION: Common egg cowrie */ +/* Ovalipes punctatus. DESCRIPTION: Sand crab */ +/* Leptometra phalangium. DESCRIPTION: */ +/* Oliva reticulata. DESCRIPTION: Blood olive */ +/* Oliva sayana. DESCRIPTION: Lettered olive */ +/* Oliva tricolor. DESCRIPTION: Tricolor olive */ +/* Oliva vidua. DESCRIPTION: Black olive */ +/* Oliva oliva. DESCRIPTION: Common olive */ +/* Ophioplinthus carinata. DESCRIPTION: */ +/* Macoma spp. DESCRIPTION: */ +/* Muraenichthys schultzei. DESCRIPTION: Maimed snake eel */ +/* Odontobutis potamophila. DESCRIPTION: */ +/* Owstonia grammodon. DESCRIPTION: */ +/* Pallenopsis vanhoeffeni. DESCRIPTION: */ +/* Odontesthes smitti. DESCRIPTION: */ +/* Notoscopelus resplendens. DESCRIPTION: Patchwork lanternfish */ +/* Notoscopelus caudispinosus. DESCRIPTION: Spinetail lanternfish */ +/* Ophiuroidea. DESCRIPTION: Basket, brittle, snake stars */ +/* Myctophum obtusirostre. DESCRIPTION: Bluntsnout lanternfish */ +/* Myctophum asperum. DESCRIPTION: Prickly lanternfish */ +/* Myctophum affine. DESCRIPTION: Metallic lanternfish */ +/* Winteria telescopa. DESCRIPTION: */ +/* Ophichthidae. DESCRIPTION: Snake eels nei */ +/* Oxygaster anomalura. DESCRIPTION: */ +/* Oxynotus bruniensis. DESCRIPTION: Prickly dogfish */ +/* Oxynotus caribbaeus. DESCRIPTION: Caribbean roughshark */ +/* Ostracoberyx dorygenys. DESCRIPTION: */ +/* Oxycheilinus arenatus. DESCRIPTION: Speckled maori wrasse */ +/* Onuxodon fowleri. DESCRIPTION: */ +/* Oxyporhamphus micropterus. DESCRIPTION: Atlantic smallwing flyingfish */ +/* Palaemon xiphias. DESCRIPTION: Posidonia prawn */ +/* Oxylebius pictus. DESCRIPTION: Painted greenling */ +/* Oxydoras niger. DESCRIPTION: Ripsaw catfish */ +/* Oxydoras kneri. DESCRIPTION: */ +/* Odaxothrissa losera. DESCRIPTION: Losera fangtooth pellonuline */ +/* Xyelacyba myersi. DESCRIPTION: */ +/* Oxynotus paradoxus. DESCRIPTION: Sailfin roughshark */ +/* Oxylapia polli. DESCRIPTION: */ +/* Odax pullus. DESCRIPTION: Butterfish, greenbone */ +/* Oligoplites spp. DESCRIPTION: Leatherjackets nei */ +/* Xyrias revulsus. DESCRIPTION: */ +/* Omox biporos. DESCRIPTION: Omox blenny */ +/* Odontopyxis trispinosa. DESCRIPTION: Pygmy poacher */ +/* Oxycirrhites typus. DESCRIPTION: Longnose hawkfish */ +/* Oxyporhamphus convexus. DESCRIPTION: Halfbeak */ +/* Oreochromis aureus x O. niloticus. DESCRIPTION: Blue-Nile tilapia, hybrid */ +/* Oliva spp. DESCRIPTION: */ +/* Oxynotus centrina. DESCRIPTION: Angular roughshark */ +/* Oxynotus japonicus. DESCRIPTION: Japanese roughshark */ +/* Crassostrea virginica. DESCRIPTION: American cupped oyster */ +/* Olyra burmanica. DESCRIPTION: Longtail catfish */ +/* Crassostrea spp. DESCRIPTION: Cupped oysters nei */ +/* Leptomelanosoma indicum. DESCRIPTION: Indian threadfin */ +/* Polyamblyodon germanum. DESCRIPTION: German seabream */ +/* Ostrea edulis. DESCRIPTION: European flat oyster */ +/* Crassostrea gigas. DESCRIPTION: Pacific cupped oyster */ +/* Ostreola conchaphila. DESCRIPTION: Olympia oyster */ +/* Crassostrea madrasensis. DESCRIPTION: Indian backwater oyster */ +/* Oryzias javanicus. DESCRIPTION: Javanese ricefish */ +/* Yirrkala kaupii. DESCRIPTION: */ +/* Crassostrea belcheri. DESCRIPTION: Lugubrious cupped oyster */ +/* Crassostrea rhizophorae. DESCRIPTION: Mangrove cupped oyster */ +/* Saccostrea echinata. DESCRIPTION: Spiny rock oyster */ +/* Polydactylus approximans. DESCRIPTION: Blue bobo */ +/* Ocypode rotundata. DESCRIPTION: Rounded ghost crab */ +/* Crassostrea corteziensis. DESCRIPTION: Cortez oyster */ +/* Saccostrea commercialis. DESCRIPTION: Sydney cupped oyster */ +/* Rhynchohyalus natalensis. DESCRIPTION: */ +/* Crassostrea rivularis. DESCRIPTION: Suminoe oyster */ +/* Ostrea spp. DESCRIPTION: Flat oysters nei */ +/* Oxymetopon compressus. DESCRIPTION: */ +/* Posidonia angustifolia. DESCRIPTION: */ +/* Ophiacantha imago. DESCRIPTION: */ +/* Ophiacantha pentactis. DESCRIPTION: */ +/* Ophiacantha vivipara. DESCRIPTION: */ +/* Ozius guttatus. DESCRIPTION: Spottedbelly rock crab */ +/* Ophioderma brevispinum. DESCRIPTION: */ +/* Posidonia oceanica. DESCRIPTION: Neptune-grass */ +/* Ophichthus zophochir. DESCRIPTION: Yellow snake-eel */ +/* Ozius tuberculosus. DESCRIPTION: Beaded rock crab */ +/* Posidonia australis. DESCRIPTION: */ +/* Ozius verreauxii. DESCRIPTION: Punched stone crab */ +/* Saccostrea spp. DESCRIPTION: */ +/* Pellonula vorax. DESCRIPTION: Bigtoothed pellonula */ +/* Paramaretia peloria. DESCRIPTION: Microsoft mouse */ +/* Palaemon adspersus. DESCRIPTION: Baltic prawn */ +/* Pagothenia brachysoma. DESCRIPTION: Stocky rockcod */ +/* Pagellus erythrinus. DESCRIPTION: Common pandora */ +/* Paramisgurnus dabryanus. DESCRIPTION: */ +/* Parmaturus macmillani. DESCRIPTION: McMillan's cat shark */ +/* Paramphilius firestonei. DESCRIPTION: */ +/* Paralomis granulosa. DESCRIPTION: Softshell red crab */ +/* Parmaturus campechiensis. DESCRIPTION: Campeche catshark */ +/* Paralomis spp. DESCRIPTION: */ +/* Pararasbora moltrechti. DESCRIPTION: */ +/* Parhomaloptera microstoma. DESCRIPTION: */ +/* Palaemonidae. DESCRIPTION: Palaemonid shrimps nei */ +/* Polyodon spathula. DESCRIPTION: Mississippi paddlefish */ +/* Pandalus spp. DESCRIPTION: Pandalus shrimps nei */ +/* Parona signata. DESCRIPTION: Parona leatherjacket */ +/* Scomberomorus multiradiatus. DESCRIPTION: Papuan seerfish */ +/* Pseudancistrus barbatus. DESCRIPTION: */ +/* Pagellus bellottii. DESCRIPTION: Red pandora */ +/* Ammodytes personatus. DESCRIPTION: Pacific sandlance */ +/* Patagonotothen ramsayi. DESCRIPTION: Longtail Southern cod */ +/* Paphia undulata. DESCRIPTION: Undulate venus */ +/* Parmaturus melanobranchius. DESCRIPTION: Blackgill catshark */ +/* Parmaturus pilosus. DESCRIPTION: Salamander shark */ +/* Pagellus spp. DESCRIPTION: Pandoras nei */ +/* Parmaturus xaniurus. DESCRIPTION: Filetail catshark */ +/* Mancopsetta milfordi. DESCRIPTION: Finless flounder */ +/* Penaeus merguiensis. DESCRIPTION: Banana prawn */ +/* Prolabeo batesi. DESCRIPTION: */ +/* Barbantus curvifrons. DESCRIPTION: Palebelly searsid */ +/* Pantolabus radiatus. DESCRIPTION: Fringefin trevally */ +/* Paraplesiops bleekeri. DESCRIPTION: */ +/* Thunnus orientalis. DESCRIPTION: Pacific bluefin tuna */ +/* Pterolebias hoignei. DESCRIPTION: */ +/* Poblana alchichica. DESCRIPTION: */ +/* Pomadasys branickii. DESCRIPTION: Sand grunt */ +/* Pomadasys bayanus. DESCRIPTION: Purplemouth grunt */ +/* Plectrogenium barsukovi. DESCRIPTION: */ +/* Pangasius bocourti. DESCRIPTION: */ +/* Prolabeops melanhypoptera. DESCRIPTION: */ +/* Prognichthys brevipinnis. DESCRIPTION: Shortfin flyingfish */ +/* Parablennius cornutus. DESCRIPTION: */ +/* Parabrotula plagiophthalma. DESCRIPTION: */ +/* Pterobranchia. DESCRIPTION: Pterobranchs */ +/* Pseudophycis barbata. DESCRIPTION: Southern bastard codling */ +/* Pallasina barbata. DESCRIPTION: Tubenose poacher */ +/* Phreatobius cisternarum. DESCRIPTION: */ +/* Parabembras curtus. DESCRIPTION: */ +/* Pseudophycis breviuscula. DESCRIPTION: Northern bastard codling */ +/* Pangasius nasutus. DESCRIPTION: */ +/* Plectorhinchus spp. DESCRIPTION: Sweetlips, rubberlips nei */ +/* Paraliparis bathybius. DESCRIPTION: */ +/* Photoblepharon steinitzi. DESCRIPTION: Flashlight fish */ +/* Plecoglossus altivelis. DESCRIPTION: Ayu sweetfish */ +/* Pollicipes pollicipes. DESCRIPTION: Barnacle */ +/* Procambarus acutus. DESCRIPTION: White crawfish */ +/* Potamalosa richmondia. DESCRIPTION: Australian freshwater herring */ +/* Procypris merus. DESCRIPTION: */ +/* Pycnocraspedum fulvum. DESCRIPTION: */ +/* Pseudocetopsis gobioides. DESCRIPTION: */ +/* Parachaenichthys charcoti. DESCRIPTION: */ +/* Procellaria cinerea. DESCRIPTION: Grey petrel */ +/* Paraliparis copei. DESCRIPTION: */ +/* Paracottus knerii. DESCRIPTION: Stone sculpin */ +/* Pacifastacus leniusculus. DESCRIPTION: Signal crayfish */ +/* Poecilothrissa moeruensis. DESCRIPTION: Lake Mweru sprat */ +/* Procellaria conspicillata. DESCRIPTION: Spectacled petrel */ +/* Gadus macrocephalus. DESCRIPTION: Pacific cod */ +/* Pareuchiloglanis poilanei. DESCRIPTION: */ +/* Phycodurus eques. DESCRIPTION: Leafy seadragon */ +/* Chionoecetes spp. DESCRIPTION: Tanner crabs nei */ +/* Petacara dolichurus. DESCRIPTION: */ +/* Platyurosternarchus macrostomus. DESCRIPTION: */ +/* Prosopium coulterii. DESCRIPTION: Pygmy whitefish */ +/* Plecodus elaviae. DESCRIPTION: */ +/* Procellaria westlandica. DESCRIPTION: Westland petrel */ +/* Muraenesox spp. DESCRIPTION: Pike-congers nei */ +/* Prosopium cylindraceum. DESCRIPTION: Round whitefish */ +/* Pomacentrus agassizi. DESCRIPTION: Creole damsel */ +/* Phocoenoides dalli. DESCRIPTION: Dall's porpoise */ +/* Pseudocurimata boulengeri. DESCRIPTION: */ +/* Pseudepapterus cucuhyensis. DESCRIPTION: */ +/* Paradistichodus dimidiatus. DESCRIPTION: */ +/* Pseudogobio esocinus. DESCRIPTION: */ +/* Pseudacanthicus fordii. DESCRIPTION: */ +/* Paradiplospinus gracilis. DESCRIPTION: Slender escolar */ +/* Pseudoperilampus hondae. DESCRIPTION: */ +/* Paracheirodon innesi. DESCRIPTION: Neon tetra */ +/* Pseudolaubuca jouyi. DESCRIPTION: */ +/* Pseudonezumia cetonuropsis. DESCRIPTION: */ +/* Pseudaspius leptocephalus. DESCRIPTION: Redfin */ +/* Pterodroma macroptera. DESCRIPTION: Great-winged petrel */ +/* Pseudopungtungia nigra. DESCRIPTION: */ +/* Parodon pongoensis. DESCRIPTION: Pongo characin */ +/* Pseudorasbora parva. DESCRIPTION: Stone moroko */ +/* Pseudomugil connieae. DESCRIPTION: Popondetta blue-eye */ +/* Paralonchurus peruanus. DESCRIPTION: Peruvian banded croaker */ +/* Pseudobarbus asper. DESCRIPTION: Smallscale redfin */ +/* Pseudanos trimaculatus. DESCRIPTION: Threespot headstander */ +/* Pseudecheneis sulcatus. DESCRIPTION: */ +/* Pseudotatia parva. DESCRIPTION: */ +/* Parascorpaena aurita. DESCRIPTION: */ +/* Paracheirodon axelrodi. DESCRIPTION: Cardinal tetra */ +/* Pseudophoxinus stymphalicus. DESCRIPTION: */ +/* Pandalidae. DESCRIPTION: Pandalid shrimps nei */ +/* Eridacnis radcliffei. DESCRIPTION: Pygmy ribbontail catshark */ +/* Eridacnis barbouri. DESCRIPTION: Cuban ribbontail catshark */ +/* Erpetoichthys calabaricus. DESCRIPTION: Reedfish */ +/* Eridacnis sinuans. DESCRIPTION: African ribbontail catshark */ +/* Littorina littorea. DESCRIPTION: Common periwinkle */ +/* Psychrolutes macrocephalus. DESCRIPTION: */ +/* Petitella georgiae. DESCRIPTION: False rummynose tetra */ +/* Phractocephalus hemioliopterus. DESCRIPTION: Redtail catfish */ +/* Perinereis spp. DESCRIPTION: */ +/* Papilloculiceps longiceps. DESCRIPTION: Tentacled flathead */ +/* Poeciliopsis hnilickai. DESCRIPTION: */ +/* Osteichthyes. DESCRIPTION: Pelagic fishes nei */ +/* Pliosteostoma lutipinnis. DESCRIPTION: Yellowfin herring */ +/* Penaeus spp. DESCRIPTION: Penaeus shrimps nei */ +/* Pellona ditchela. DESCRIPTION: Indian pellona */ +/* Pellona flavipinnis. DESCRIPTION: Yellowfin river pellona */ +/* Littorina spp. DESCRIPTION: Periwinkles nei */ +/* Diplectrum formosum. DESCRIPTION: Sand perch */ +/* Pentanemus quinquarius. DESCRIPTION: Royal threadfin */ +/* Pentanchus profundicolus. DESCRIPTION: Onefin catshark */ +/* Prionodraco evansii. DESCRIPTION: */ +/* Morone americana. DESCRIPTION: White perch */ +/* Lates spp. DESCRIPTION: Freshwater perches nei */ +/* Scopelarchidae. DESCRIPTION: Pearleyes, etc. nei */ +/* Penaeidae. DESCRIPTION: Penaeid shrimps nei */ +/* Pellisolus facilis. DESCRIPTION: */ +/* Platycephalus bassensis. DESCRIPTION: Sand flathead */ +/* Puffinus carneipes. DESCRIPTION: Flesh-footed shearwater */ +/* Plataplochilus cabindae. DESCRIPTION: */ +/* Phyllophryne scortea. DESCRIPTION: Smooth anglerfish */ +/* Platycephalus arenarius. DESCRIPTION: Northern sand flathead */ +/* Puffinus griseus. DESCRIPTION: Sooty shearwater */ +/* Profundulus hildebrandi. DESCRIPTION: Chiapas killifish */ +/* Neophocaena phocaenoides. DESCRIPTION: Finless porpoise */ +/* Puffinus gavia. DESCRIPTION: Fluttering shearwater */ +/* Pseudophallus starksii. DESCRIPTION: */ +/* Poecilia reticulata. DESCRIPTION: Guppy */ +/* Pristipomoides filamentosus. DESCRIPTION: Crimson jobfish */ +/* Potamorrhaphis eigenmanni. DESCRIPTION: */ +/* Percopsis omiscomaycus. DESCRIPTION: Trout-perch */ +/* Pseudaphritis porosus. DESCRIPTION: */ +/* Puffinus huttoni. DESCRIPTION: Huttons shearwater */ +/* Porifera. DESCRIPTION: */ +/* Parasudis fraserbrunneri. DESCRIPTION: */ +/* Puffinus tenuirostris. DESCRIPTION: Short-tailed shearwater */ +/* Pamphorichthys araguaiensis. DESCRIPTION: */ +/* Plectorhinchus flavomaculatus. DESCRIPTION: Lemonfish */ +/* Pogonophryne dewitti. DESCRIPTION: */ +/* Phallichthys fairweatheri. DESCRIPTION: */ +/* Pteroidichthys godfreyi. DESCRIPTION: */ +/* Puffinus pacificus. DESCRIPTION: Wedge-tailed shearwater */ +/* Pterogymnus laniarius. DESCRIPTION: Panga seabream */ +/* Pseudolaguvia tuberculatus. DESCRIPTION: */ +/* Pogonichthys macrolepidotus. DESCRIPTION: Splittail */ +/* Pygidianops eigenmanni. DESCRIPTION: */ +/* Parachaenichthys georgianus. DESCRIPTION: */ +/* Pseudostegophilus nemurus. DESCRIPTION: */ +/* Parauchenoglanis guttatus. DESCRIPTION: Dotted catfish */ +/* Pungtungia herzi. DESCRIPTION: */ +/* Parauchenoglanis akiri. DESCRIPTION: */ +/* Pangasius larnaudii. DESCRIPTION: Spot pangasius */ +/* Pangasius micronemus. DESCRIPTION: Shortbarbel pangasius */ +/* Phenagoniates macrolepis. DESCRIPTION: */ +/* Pogonophryne marmorata. DESCRIPTION: Marbled plunderfish */ +/* Phenacogrammus aurantiacus. DESCRIPTION: */ +/* Parauchenoglanis macrostoma. DESCRIPTION: Flatnose catfish */ +/* Pangasius pangasius. DESCRIPTION: Pangas catfish */ +/* Pugnaso curtirostris. DESCRIPTION: Pug-nosed pipefish */ +/* Pogonophryne permitini. DESCRIPTION: Plunderfish */ +/* Pangasius hypophthalmus. DESCRIPTION: Striped catfish */ +/* Pagothenia spp. DESCRIPTION: Pagothenia nei */ +/* Paragoniates alburnus. DESCRIPTION: */ +/* Pegasus volitans. DESCRIPTION: Longtail seamouth */ +/* Pogonopoma wertheimeri. DESCRIPTION: */ +/* Pingalla lorentzi. DESCRIPTION: Lorentz's grunter */ +/* Pogonopomoides parahybae. DESCRIPTION: */ +/* Pangasius spp. DESCRIPTION: Pangas catfishes nei */ +/* Merluccius gayi. DESCRIPTION: South Pacific hake */ +/* Pachycara brachycephalum. DESCRIPTION: */ +/* Parachela cyanea. DESCRIPTION: */ +/* Pareiorhina rudolphi. DESCRIPTION: */ +/* Phoebetria palpebrata. DESCRIPTION: Light-mantled sooty albatross */ +/* Scaphirhynchus platorynchus. DESCRIPTION: Shovelnose sturgeon */ +/* Paraphago rostratus. DESCRIPTION: */ +/* Cephalakompsus pachycheilus. DESCRIPTION: */ +/* Platycephalus richardsoni. DESCRIPTION: Tiger flathead */ +/* Phago boulengeri. DESCRIPTION: */ +/* Phenacobius catostomus. DESCRIPTION: Riffle minnow */ +/* Alepocephalus longiceps. DESCRIPTION: */ +/* Pachychilon macedonicum. DESCRIPTION: */ +/* Holtbyrnia anomala. DESCRIPTION: Bighead searsid */ +/* Alepocephalus rostratus. DESCRIPTION: Risso's smooth-head */ +/* Photostylus pycnopterus. DESCRIPTION: Starry smooth-head */ +/* Paracrossochilus acerus. DESCRIPTION: */ +/* Phocoena phocoena. DESCRIPTION: Harbour porpoise */ +/* Scaphirhynchus albus. DESCRIPTION: Pallid sturgeon */ +/* Opisthopterus tardoore. DESCRIPTION: Tardoore */ +/* Phoebetria fusca. DESCRIPTION: Sooty albatross */ +/* Physoschistura brunneanus. DESCRIPTION: */ +/* Phenacoscorpius adenensis. DESCRIPTION: */ +/* Saccopharynx ampullaceus. DESCRIPTION: */ +/* Aphredoderus sayanus. DESCRIPTION: Pirate perch */ +/* Parastegophilus maculatus. DESCRIPTION: */ +/* Sardinops ocellatus. DESCRIPTION: Southern African pilchard */ +/* Paraliparis meridionalis. DESCRIPTION: */ +/* Spicara spp. DESCRIPTION: Picarels nei */ +/* Piabucus dentatus. DESCRIPTION: */ +/* Ilisha melastoma. DESCRIPTION: Indian ilisha */ +/* Ilisha filigera. DESCRIPTION: Coromandel ilisha */ +/* Orthopristis chrysoptera. DESCRIPTION: Pigfish */ +/* Parapterois heterurus. DESCRIPTION: Blackfoot firefish */ +/* Plotosus lineatus. DESCRIPTION: Striped eel catfish */ +/* Paricelinus hopliticus. DESCRIPTION: Thornback sculpin */ +/* Phytichthys chirus. DESCRIPTION: Ribbon prickleback */ +/* Sardina pilchardus. DESCRIPTION: European pilchard(=Sardine) */ +/* Ilisha megaloptera. DESCRIPTION: Bigeye ilisha */ +/* Oncorhynchus gorbuscha. DESCRIPTION: Pink(=Humpback) salmon */ +/* Pareiodon microps. DESCRIPTION: */ +/* Ilisha pristigastroides. DESCRIPTION: Javan ilisha */ +/* Palaemon longirostris. DESCRIPTION: Delta prawn */ +/* Paralepis coregonoides. DESCRIPTION: */ +/* Pontinus accraensis. DESCRIPTION: Ghanean rockfish */ +/* Pardiglanis tarabinii. DESCRIPTION: */ +/* Ilisha furthii. DESCRIPTION: Pacific ilisha */ +/* Paraliparis terraenovae. DESCRIPTION: */ +/* Globicephala melas. DESCRIPTION: Long-finned pilot whale */ +/* Petricola spp. DESCRIPTION: */ +/* Paratherina cyanea. DESCRIPTION: */ +/* Pisania striata. DESCRIPTION: Striate pisania */ +/* Pavoraja alleni. DESCRIPTION: Allens skate */ +/* Percina caprodes. DESCRIPTION: Logperch */ +/* Peristedion cataphractum. DESCRIPTION: African armoured searobin */ +/* Pristotis jerdoni. DESCRIPTION: Gulf damselfish */ +/* Penaeopsis rectacuta. DESCRIPTION: Needle shrimp */ +/* Pavoraja spinifera. DESCRIPTION: Prickly deep-sea skate */ +/* Ptilichthys goodei. DESCRIPTION: Quillfish */ +/* Projasus bahamondei. DESCRIPTION: Chilean jagged lobster */ +/* Projasus parkeri. DESCRIPTION: Cape jagged lobster */ +/* Pandalus jordani. DESCRIPTION: Ocean shrimp */ +/* Pentaprion longimanus. DESCRIPTION: Longfin mojarra */ +/* Trachurus symmetricus. DESCRIPTION: Pacific jack mackerel */ +/* Pavoraja nitida. DESCRIPTION: Peacock skate */ +/* Percis japonicus. DESCRIPTION: */ +/* Pinjalo pinjalo. DESCRIPTION: Pinjalo */ +/* Pinna rugosa. DESCRIPTION: Rugose pen shell */ +/* Pinguipes brasilianus. DESCRIPTION: Brazilian sandperch */ +/* Pavoraja asperula. DESCRIPTION: Smooth deep-sea skate */ +/* Parascorpis typus. DESCRIPTION: */ +/* Ptarmus jubatus. DESCRIPTION: Crested scorpionfish */ +/* Platygillellus altivelis. DESCRIPTION: Sailfin stargazer */ +/* Percilia gillissi. DESCRIPTION: */ +/* Pavoraja laxipella. DESCRIPTION: */ +/* Pristigenys meyeri. DESCRIPTION: */ +/* Pterodroma arminjoniana. DESCRIPTION: Trindade petrel */ +/* Parakysis anomalopteryx. DESCRIPTION: */ +/* Parika scaber. DESCRIPTION: Velvet leatherjacket */ +/* Parakuhlia macrophthalmus. DESCRIPTION: Dara */ +/* Parma kermadecensis. DESCRIPTION: Kermadec scalyfin */ +/* Pomadasys perotaei. DESCRIPTION: Parrot grunt */ +/* Plectorhinchus schotaf. DESCRIPTION: Minstrel sweetlips */ +/* Paraploactis kagoshimensis. DESCRIPTION: */ +/* Petricola pholadiformis. DESCRIPTION: False angel wing */ +/* Perca schrenkii. DESCRIPTION: Balkhash perch */ +/* Pillaia khajuriai. DESCRIPTION: */ +/* Pomadasys suillus. DESCRIPTION: */ +/* Pomadasys maculatus. DESCRIPTION: Saddle grunt */ +/* Pseudosynanceia melanostigma. DESCRIPTION: Blackfin stonefish */ +/* Pomadasys macracanthus. DESCRIPTION: Longspine grunt */ +/* Pomadasys opercularis. DESCRIPTION: Smallspotted grunt */ +/* Plectorhinchus pictus. DESCRIPTION: Trout sweetlips */ +/* Pontocaris pennata. DESCRIPTION: Feather shrimp */ +/* Pomadasys crocro. DESCRIPTION: Burro grunt */ +/* Pomadasys stridens. DESCRIPTION: Striped piggy */ +/* Pomadasys multimaculatum. DESCRIPTION: Cock grunter */ +/* Haemulopsis leuciscus. DESCRIPTION: Raucous grunt */ +/* Pomadasys olivaceus. DESCRIPTION: Olive grunt */ +/* Pandaka lidwilli. DESCRIPTION: */ +/* Praescutata viperina. DESCRIPTION: Viperine sea snake */ +/* Pronothobranchius kiyawensis. DESCRIPTION: */ +/* Pterocladiella caerulescens. DESCRIPTION: */ +/* Hippoglossoides platessoides. DESCRIPTION: Amer. plaice(=Long rough dab) */ +/* Paraplotosus albilabris. DESCRIPTION: Whitelipped eel catfish */ +/* Platygobio gracilis. DESCRIPTION: Flathead chub */ +/* Lagenorhynchus australis. DESCRIPTION: Peale's dolphin */ +/* Pleuronectes platessa. DESCRIPTION: European plaice */ +/* Artedidraconidae. DESCRIPTION: Barbeled plunderfishes nei */ +/* Paraliparis gracilis. DESCRIPTION: */ +/* Plectrochilus erythrurus. DESCRIPTION: */ +/* Plagiognathops microlepis. DESCRIPTION: Smallscale yellowfin */ +/* Paulicea jahu. DESCRIPTION: */ +/* Paulicea luetkeni. DESCRIPTION: Ja */ +/* ú */ +/* Prochilodus lineatus. DESCRIPTION: Streaked prochilod */ +/* Plectropomus maculatus. DESCRIPTION: Spotted coralgrouper */ +/* Coregonus lavaretus. DESCRIPTION: European whitefish */ +/* Pellonula leonensis. DESCRIPTION: Smalltoothed pellonula */ +/* Platanichthys platana. DESCRIPTION: River Plate sprat */ +/* Phallocottus obtusus. DESCRIPTION: Spineless sculpin */ +/* Prochilodus reticulatus. DESCRIPTION: Netted prochilod */ +/* Dasyatis violacea. DESCRIPTION: Pelagic stingray */ +/* Plagopterus argentissimus. DESCRIPTION: Woundfin */ +/* Phyllonemus typus. DESCRIPTION: Spatula-barbeled catfish */ +/* Pelsartia humeralis. DESCRIPTION: */ +/* Pseudoplesiops howensis. DESCRIPTION: */ +/* Platypharodon extremus. DESCRIPTION: */ +/* Polysteganus spp. DESCRIPTION: Polystegan seabreams nei */ +/* Pleuronectidae. DESCRIPTION: Righteye flounders nei */ +/* Pagetopsis macropterus. DESCRIPTION: */ +/* Pimelodus albicans. DESCRIPTION: */ +/* Poromitra crassiceps. DESCRIPTION: Crested bigscale */ +/* Pimelodus clarias. DESCRIPTION: Mandi */ +/* Apomatoceros alleni. DESCRIPTION: */ +/* Prionobrama filigera. DESCRIPTION: Glass bloodfin */ +/* Pimelodella gracilis. DESCRIPTION: Graceful pimelodella */ +/* Pimelodella hasemani. DESCRIPTION: */ +/* Pimelodus grosskopfii. DESCRIPTION: Capaz */ +/* Pimelodus jivaro. DESCRIPTION: */ +/* Porochilus meraukensis. DESCRIPTION: Merauke tandan */ +/* Pimelodella laticeps. DESCRIPTION: */ +/* Pimelodus fur. DESCRIPTION: */ +/* Phenacorhamdia anisura. DESCRIPTION: */ +/* Normichthys operosus. DESCRIPTION: Multipore searsid */ +/* Pimephales promelas. DESCRIPTION: Fathead minnow */ +/* Platynematichthys notatus. DESCRIPTION: Coroat */ +/* á */ +/* Mentodus crassus. DESCRIPTION: */ +/* Pimelodus altissimus. DESCRIPTION: */ +/* Pimelodus altipinnis. DESCRIPTION: */ +/* Maulisia acuticeps. DESCRIPTION: */ +/* Parapimelodus valenciennis. DESCRIPTION: */ +/* Palaemon paucidens. DESCRIPTION: Lake prawn */ +/* Haemulopsis axillaris. DESCRIPTION: Yellowstripe grunt */ +/* Pimelodella yuncensis. DESCRIPTION: */ +/* Palaemon macrodactylus. DESCRIPTION: Migrant prawn */ +/* Odontognathus mucronatus. DESCRIPTION: Guiana longfin herring */ +/* Penaeus brasiliensis. DESCRIPTION: Redspotted shrimp */ +/* Percarina demidoffi. DESCRIPTION: Percarina */ +/* Photonectes albipennis. DESCRIPTION: */ +/* Pinctada fucata. DESCRIPTION: Japanese pearl oyster */ +/* Pangasius gigas. DESCRIPTION: Mekong giant catfish */ +/* Plectorhinchus cinctus. DESCRIPTION: Crescent sweetlips */ +/* Penaeus indicus. DESCRIPTION: Indian white prawn */ +/* Penaeus marginatus. DESCRIPTION: Aloha prawn */ +/* Plotosus nkunga. DESCRIPTION: Stinging eel catfish */ +/* Potamorhina laticeps. DESCRIPTION: */ +/* Pinctada margaritifera. DESCRIPTION: Blacklip pearl oyster */ +/* Catoprion mento. DESCRIPTION: Wimple piranha */ +/* Perrunichthys perruno. DESCRIPTION: Leopard catfish */ +/* Penaeus plebejus. DESCRIPTION: Eastern king prawn */ +/* Palaemon elegans. DESCRIPTION: Rockpool prawn */ +/* Neoopisthopterus tropicus. DESCRIPTION: Tropical longfin herring */ +/* Penaeus stylirostris. DESCRIPTION: Blue shrimp */ +/* Penaeus schmitti. DESCRIPTION: Southern white shrimp */ +/* Penaeus subtilis. DESCRIPTION: Southern brown shrimp */ +/* Penaeus vannamei. DESCRIPTION: Whiteleg shrimp */ +/* Pangasius sanitwongsei. DESCRIPTION: Giant pangasius */ +/* Pinctada maxima. DESCRIPTION: Silverlip pearl oyster */ +/* Pungitius platygaster. DESCRIPTION: Southern ninespine stickleback */ +/* Pseudorinelepis agassizii. DESCRIPTION: */ +/* Brama brama. DESCRIPTION: Atlantic pomfret */ +/* Parastromateus niger. DESCRIPTION: Black pomfret */ +/* Boreogadus saida. DESCRIPTION: Polar cod */ +/* Trisopterus minutus. DESCRIPTION: Poor cod */ +/* Poroderma marleyi. DESCRIPTION: Barbeled catshark */ +/* Poeciloconger fasciatus. DESCRIPTION: */ +/* Pogonophryne spp. DESCRIPTION: */ +/* Poroderma pantherinum. DESCRIPTION: Leopard catshark */ +/* Pontinus kuhlii. DESCRIPTION: Offshore rockfish */ +/* Plotosus limbatus. DESCRIPTION: Darkfin eel catfish */ +/* Pollachius virens. DESCRIPTION: Saithe(=Pollock) */ +/* Pollachius pollachius. DESCRIPTION: Pollack */ +/* Trachinotus carolinus. DESCRIPTION: Florida pompano */ +/* Leiognathidae. DESCRIPTION: Ponyfishes(=Slipmouths) nei */ +/* Trachinotus blochii. DESCRIPTION: Snubnose pompano */ +/* Trachinotus ovatus. DESCRIPTION: Pompano */ +/* Porotergus compsus. DESCRIPTION: */ +/* Lamna nasus. DESCRIPTION: Porbeagle */ +/* Micromesistius australis. DESCRIPTION: Southern blue whiting */ +/* Poroderma africanum. DESCRIPTION: Striped catshark */ +/* Poptella brevispina. DESCRIPTION: */ +/* Poecilocharax weitzmani. DESCRIPTION: Black morpho tetra */ +/* Trachinotus spp. DESCRIPTION: Pompanos nei */ +/* Leiognathus spp. DESCRIPTION: Ponyfishes(=Slipmouths) */ +/* Poecilia amazonica. DESCRIPTION: */ +/* Protopterus aethiopicus. DESCRIPTION: Marbled lungfish */ +/* Pristiophorus cirratus. DESCRIPTION: Longnose sawshark */ +/* Polypterus endlicheri. DESCRIPTION: */ +/* Potamotrygon laticeps. DESCRIPTION: */ +/* Macrobrachium spp. DESCRIPTION: River prawns nei */ +/* Protopterus annectens. DESCRIPTION: West African lungfish */ +/* Pristiophorus schroederi. DESCRIPTION: Bahamas sawshark */ +/* Potamotrygon scobina. DESCRIPTION: */ +/* Pristiophorus japonicus. DESCRIPTION: Japanese sawshark */ +/* Persparsia kopua. DESCRIPTION: */ +/* Trachinotus goodei. DESCRIPTION: Great pompano */ +/* Potamotrygon magdalenae. DESCRIPTION: */ +/* Paraliparis antarcticus. DESCRIPTION: */ +/* Peprilus simillimus. DESCRIPTION: Pacific pompano */ +/* Potamotrygon yepezi. DESCRIPTION: */ +/* Plotosus papuensis. DESCRIPTION: Papuan eel-catfish */ +/* Potamotrygon motoro. DESCRIPTION: South American freshwater stin */ +/* Penaeus paulensis. DESCRIPTION: Sao Paulo shrimp */ +/* Potamotrygon constellata. DESCRIPTION: */ +/* Pristiophorus nudipinnis. DESCRIPTION: Shortnose sawshark */ +/* Polypterus senegalus. DESCRIPTION: */ +/* Pliotrema warreni. DESCRIPTION: Sixgill sawshark */ +/* Perciformes. DESCRIPTION: Pelagic percomorphs nei */ +/* Potamotrygon hystrix. DESCRIPTION: */ +/* Palaemonidae. DESCRIPTION: Freshwater prawns, shrimps nei */ +/* Prionotus alatus. DESCRIPTION: Spiny searobin */ +/* Pinna nobilis. DESCRIPTION: Noble pen shell */ +/* Prionotus carolinus. DESCRIPTION: Northern searobin */ +/* Pelates quadrilineatus. DESCRIPTION: Fourlined terapon */ +/* Parequula melbournensis. DESCRIPTION: Silverbelly */ +/* Pareques fuscovittatus. DESCRIPTION: Fusco drum */ +/* Pleuroncodes monodon. DESCRIPTION: Carrot squat lobster */ +/* Podothecus thompsoni. DESCRIPTION: */ +/* Pristipomoides aquilonaris. DESCRIPTION: Wenchman */ +/* Perna picta. DESCRIPTION: African mussel */ +/* Pectinia lactuca. DESCRIPTION: Lettuce coral */ +/* Peristedion longispatha. DESCRIPTION: */ +/* Parapristipomoides squamimaxillaris. DESCRIPTION: Scalemouth jobfish */ +/* Panaque nigrolineatus. DESCRIPTION: Royal panaque */ +/* Physiculus spp. DESCRIPTION: */ +/* Prionotus paralatus. DESCRIPTION: Mexican searobin */ +/* Spisula aequilatera. DESCRIPTION: Equal-sized surf clam */ +/* Priacanthus arenatus. DESCRIPTION: Atlantic bigeye */ +/* Parasquilla similis. DESCRIPTION: Three spined mantis */ +/* Prionotus punctatus. DESCRIPTION: Bluewing searobin */ +/* Prionotus nudigula. DESCRIPTION: Red searobin */ +/* Panopea aldovrandi. DESCRIPTION: Aldovrandi's panope */ +/* Puffinus spp. DESCRIPTION: Shearwaters nei */ +/* Patella flexuosa. DESCRIPTION: Star-shaped limpet */ +/* Priacanthus tayenus. DESCRIPTION: Purple-spotted bigeye */ +/* Pangasius djambal. DESCRIPTION: */ +/* Pandalus borealis. DESCRIPTION: Northern prawn */ +/* Penaeus esculentus. DESCRIPTION: Brown tiger prawn */ +/* Percoidei. DESCRIPTION: Percoids nei */ +/* Pareledone spp. DESCRIPTION: Antarctic octopuses */ +/* Protomyctophum tenisoni. DESCRIPTION: */ +/* Macrobrachium rosenbergii. DESCRIPTION: Giant river prawn */ +/* Calamus spp. DESCRIPTION: Porgies */ +/* Porphyra haitanensis. DESCRIPTION: */ +/* Priacanthidae. DESCRIPTION: Bigeyes,glasseyes,bulleyes nei */ +/* Probarbus jullieni. DESCRIPTION: Isok barb */ +/* Procellaria parkinsoni. DESCRIPTION: Parkinson's petrel */ +/* Prochilodus spp. DESCRIPTION: Prochilods nei */ +/* Protomyctophum bolini. DESCRIPTION: */ +/* Pristigaster cayana. DESCRIPTION: Amazon hatchet herring */ +/* Procellaria aequinoctialis. DESCRIPTION: White-chinned petrel */ +/* Promethichthys prometheus. DESCRIPTION: Roudi escolar */ +/* Priapella bonita. DESCRIPTION: */ +/* Sparisoma cretense. DESCRIPTION: Parrotfish */ +/* Protosalanx hyalocranius. DESCRIPTION: Clearhead icefish */ +/* Porphyra tenera. DESCRIPTION: Laver (Nori) */ +/* Raconda russeliana. DESCRIPTION: Raconda */ +/* Paralepis brevirostris. DESCRIPTION: */ +/* Pseudopoecilia austrocolumbiana. DESCRIPTION: */ +/* Procellariidae. DESCRIPTION: Petrels and shearwaters nei */ +/* Protomyctophum choriodon. DESCRIPTION: */ +/* Procatopus aberrans. DESCRIPTION: */ +/* Sagamichthys abei. DESCRIPTION: Shining tubeshoulder */ +/* Psettodes bennettii. DESCRIPTION: Spiny turbot */ +/* Psenes cyanophrys. DESCRIPTION: Freckled driftfish */ +/* Pseudomugilidae. DESCRIPTION: Blue eyes */ +/* Pseudotolithus elongatus. DESCRIPTION: Bobo croaker */ +/* Pseudoscaphirhynchus kaufmanni. DESCRIPTION: Amu Darya sturgeon */ +/* Psychroteuthis glacialis. DESCRIPTION: Glacial squid */ +/* Pandalus spp, Pandalopsis spp. DESCRIPTION: Pacific shrimps nei */ +/* Psilorhynchus sucatio. DESCRIPTION: */ +/* Physiculus japonica. DESCRIPTION: Japanese codling */ +/* Pseudocarcharias kamoharai. DESCRIPTION: Crocodile shark */ +/* Palinurus mauritanicus. DESCRIPTION: Pink spiny lobster */ +/* Hypomesus olidus. DESCRIPTION: Pond smelt */ +/* Pseudoscaphirhynchus hermanni. DESCRIPTION: Dwarf sturgeon */ +/* Searsia koefoedi. DESCRIPTION: Koefoed's searsid */ +/* Pseudophichthys splendens. DESCRIPTION: Purplemouthed conger */ +/* Paraliparis trilobodon. DESCRIPTION: */ +/* Psilodraco breviceps. DESCRIPTION: */ +/* Pseudotolithus senegalensis. DESCRIPTION: Cassava croaker */ +/* Penaeus setiferus. DESCRIPTION: Northern white shrimp */ +/* Pecten sulcicostatus. DESCRIPTION: Groovesided scallop */ +/* Pseudotrichonotus altivelis. DESCRIPTION: */ +/* Physiculus dalwigki. DESCRIPTION: Black codling */ +/* Parauchenipterus albicrux. DESCRIPTION: */ +/* Phasmatocottus ctenopterygius. DESCRIPTION: */ +/* Psectrogaster amazonica. DESCRIPTION: */ +/* Platybelone argalus. DESCRIPTION: Keeltail needlefish */ +/* Barbus barbus. DESCRIPTION: Barbel */ +/* Trematomus pennellii. DESCRIPTION: Sharp-spined notothenia */ +/* Poropuntius deauratus. DESCRIPTION: */ +/* Pteria penguin. DESCRIPTION: Penguin wing oyster */ +/* Pataecus fronto. DESCRIPTION: */ +/* Barbonymus gonionotus. DESCRIPTION: Silver barb */ +/* Alopias pelagicus. DESCRIPTION: Pelagic thresher */ +/* Ptychocheilus grandis. DESCRIPTION: Sacramento squawfish */ +/* Ptychidio jordani. DESCRIPTION: */ +/* Parotocinclus britskii. DESCRIPTION: */ +/* Coptostomabarbus bellcrossi. DESCRIPTION: */ +/* Pseudotriakis microdon. DESCRIPTION: False catshark */ +/* Petersius conserialis. DESCRIPTION: */ +/* Ptychobarbus conirostris. DESCRIPTION: */ +/* Tor putitora. DESCRIPTION: Putitor mahseer */ +/* Peristedion liorhynchus. DESCRIPTION: Armoured gurnard */ +/* Tragularius mesalirus. DESCRIPTION: */ +/* Protothaca staminea. DESCRIPTION: Pacific littleneck clam */ +/* Tor tor. DESCRIPTION: Tor barb */ +/* Potamothrissa acutirostris. DESCRIPTION: Sharpnosed sawtooth pellonul. */ +/* Paracanthopoma parva. DESCRIPTION: */ +/* Petalichthys capensis. DESCRIPTION: Cape needlefish */ +/* Pristella maxillaris. DESCRIPTION: X-ray tetra */ +/* Pseudotolithus typus. DESCRIPTION: Longneck croaker */ +/* Procellaria spp. DESCRIPTION: Petrels nei */ +/* Sphoeroides spp. DESCRIPTION: Atlantic puffers nei */ +/* Paralaubuca barroni. DESCRIPTION: */ +/* Puffinus creatopus. DESCRIPTION: Pink-footed shearwater */ +/* Puntius orphoides. DESCRIPTION: */ +/* Photostomias guernei. DESCRIPTION: */ +/* Sphoeroides maculatus. DESCRIPTION: Northern puffer */ +/* Puffinus gravis. DESCRIPTION: Great shearwater */ +/* Puntius amphibius. DESCRIPTION: */ +/* Puntius binotatus. DESCRIPTION: Spotted barb */ +/* Hypselobarbus jerdoni. DESCRIPTION: Jerdon's carp */ +/* Raiamas ansorgii. DESCRIPTION: */ +/* Parluciosoma labiosa. DESCRIPTION: */ +/* Puntius filamentosus. DESCRIPTION: Blackspot barb */ +/* Plotosus canius. DESCRIPTION: Gray eel-catfish */ +/* Puntius conchonius. DESCRIPTION: Rosy barb */ +/* Takifugu vermicularis. DESCRIPTION: Purple pufferfish */ +/* Puntioplites bulu. DESCRIPTION: */ +/* Puntius sophore. DESCRIPTION: Pool barb */ +/* Puntius sarana. DESCRIPTION: */ +/* Puntius tetrazona. DESCRIPTION: Sumatra barb */ +/* Puntius arulius. DESCRIPTION: Arulius barb */ +/* Porocottus tentaculatus. DESCRIPTION: */ +/* Puntius ticto. DESCRIPTION: Ticto barb */ +/* Tetraodontidae. DESCRIPTION: Puffers nei */ +/* Porogadus abyssalis. DESCRIPTION: */ +/* Pseudoblennius zonostigma. DESCRIPTION: */ +/* Pseudochromis aldabraensis. DESCRIPTION: Orange dottyback */ +/* Pterodroma brevirostris. DESCRIPTION: Kerguelen petrel */ +/* Pseudovergatus aluco. DESCRIPTION: Aluco vergatus */ +/* Plectobranchus evides. DESCRIPTION: Bluebarred prickleback */ +/* Pentherichthys venustus. DESCRIPTION: */ +/* Spheniscidae. DESCRIPTION: Penguins nei */ +/* Pavoclinus graminis. DESCRIPTION: Grass klipfish */ +/* Pterodroma inexpectata. DESCRIPTION: Mottled petrel */ +/* Penicipelta vittiger. DESCRIPTION: Toothbrush leatherjacket */ +/* Parapandalus narval. DESCRIPTION: Narwal shrimp */ +/* Palaemon gravieri. DESCRIPTION: Chinese ditch prawn */ +/* Pervagor alternans. DESCRIPTION: Yelloweye filefish */ +/* Paraliparis meganchus. DESCRIPTION: */ +/* Pavona gigantea. DESCRIPTION: Pillar coral */ +/* Paraliparis devriesi. DESCRIPTION: */ +/* Protomyctophum spp. DESCRIPTION: */ +/* Portunus validus. DESCRIPTION: Senegalese smooth swimcrab */ +/* Palaemonetes varians. DESCRIPTION: Atlantic ditch shrimp */ +/* Pavona clavus. DESCRIPTION: Shoulderblade coral */ +/* Pavona decussata. DESCRIPTION: Cactus coral */ +/* Pseudochromis olivaceus. DESCRIPTION: Olive dottyback */ +/* Palaemonetes vulgaris. DESCRIPTION: Marsh shrimp */ +/* Pavona varians. DESCRIPTION: Fungus coral */ +/* Paravandellia oxyptera. DESCRIPTION: */ +/* Phthanophaneron harveyi. DESCRIPTION: Gulf flashlightfish */ +/* Paraliparis spp. DESCRIPTION: */ +/* Pterodroma leucoptera. DESCRIPTION: Gould's Petrel */ +/* Peristedion weberi. DESCRIPTION: */ +/* Procottus gurwici. DESCRIPTION: */ +/* Pachyptila desolata. DESCRIPTION: Antarctic prion */ +/* Phrynichthys wedli. DESCRIPTION: */ +/* Petalonia fascia. DESCRIPTION: Brown leafweed */ +/* Psammoperca waigiensis. DESCRIPTION: Waigieu seaperch */ +/* Parachaenichthys spp. DESCRIPTION: */ +/* Prosopium williamsoni. DESCRIPTION: Mountain whitefish */ +/* Pycnogonida. DESCRIPTION: Sea spiders */ +/* Pinniwallago kanpurensis. DESCRIPTION: */ +/* Pterodroma lessonii. DESCRIPTION: White-headed petrel */ +/* Parawaous megacephalus. DESCRIPTION: */ +/* Pseudohowella intermedia. DESCRIPTION: */ +/* Pterodroma solandri. DESCRIPTION: Providence petrel */ +/* Pagodroma nivea. DESCRIPTION: Lesser snow petrel */ +/* Platichthys stellatus. DESCRIPTION: Starry flounder */ +/* Pachycara spp. DESCRIPTION: */ +/* Pristiophorus spp. DESCRIPTION: Sawsharks nei */ +/* Scaridae. DESCRIPTION: Parrotfishes nei */ +/* Pterodroma cervicalis. DESCRIPTION: White-necked petrel */ +/* Pachyptila turtur. DESCRIPTION: Fairy prion */ +/* Pagodroma spp. DESCRIPTION: Snow petrels nei */ +/* Pachyptila spp. DESCRIPTION: Prions nei */ +/* Pandalus platyceros. DESCRIPTION: Spot shrimp */ +/* Pagodroma confusa. DESCRIPTION: Greater snow petrel */ +/* Phoxinellus adspersus. DESCRIPTION: */ +/* Parexocoetus brachypterus. DESCRIPTION: Sailfin flyingfish */ +/* Phoxinus cumberlandensis. DESCRIPTION: Blackside dace */ +/* Paraliparis tetrapteryx. DESCRIPTION: */ +/* Phoxinus eos. DESCRIPTION: Northern redbelly dace */ +/* Paralabrax maculatofasciatus. DESCRIPTION: Spotted sand bass */ +/* Pomoxis nigromaculatus. DESCRIPTION: Black crappie */ +/* Petrotyx hopkinsi. DESCRIPTION: Velvetnose brotula */ +/* Parvilux ingens. DESCRIPTION: */ +/* Polymixia japonica. DESCRIPTION: */ +/* Paralabrax clathratus. DESCRIPTION: Kelp bass */ +/* Phoxocampus belcheri. DESCRIPTION: Rock pipefish */ +/* Paralabrax albomaculatus. DESCRIPTION: Camotillo */ +/* Phoxinus neogaeus. DESCRIPTION: Finescale dace */ +/* Pachypanchax omalonotus. DESCRIPTION: */ +/* Phoxinus phoxinus. DESCRIPTION: Eurasian minnow */ +/* Patella mexicana. DESCRIPTION: Giant Mexican limpet */ +/* Pomoxis annularis. DESCRIPTION: White crappie */ +/* Pantanodon podoxys. DESCRIPTION: */ +/* Phyllopteryx taeniolatus. DESCRIPTION: Common seadragon */ +/* Penetopteryx nanus. DESCRIPTION: */ +/* Polymixia nobilis. DESCRIPTION: Stout beardfish */ +/* Pseudopl. corruscans x P. reticulatum. DESCRIPTION: */ +/* Phoxinus erythrogaster. DESCRIPTION: Southern redbelly dace */ +/* Leiarius marmoratus x P. reticulatum. DESCRIPTION: */ +/* Platytroctes apus. DESCRIPTION: Legless searsid */ +/* Pectenocypris balaena. DESCRIPTION: */ +/* Platyclarias machadoi. DESCRIPTION: */ +/* Pygoscelis adeliae. DESCRIPTION: Adelie penguin */ +/* Pygocentrus nattereri. DESCRIPTION: Red piranha */ +/* Pterocryptis afghana. DESCRIPTION: */ +/* Pterygoplichthys anisitsi. DESCRIPTION: Snow pleco */ +/* Protomyzon aphelocheilus. DESCRIPTION: */ +/* Phreatichthys andruzzii. DESCRIPTION: Somalian cavefish */ +/* Pyramodon punctatus. DESCRIPTION: Dogtooth pearlfish */ +/* Procetichthys kreffti. DESCRIPTION: */ +/* Physopyxis lyra. DESCRIPTION: */ +/* Platytroctegen mirus. DESCRIPTION: Leaf searsid */ +/* Pygoscelis antarctica. DESCRIPTION: Chinstrap penguin */ +/* Platyallabes tihoni. DESCRIPTION: */ +/* Pygoscelis papua. DESCRIPTION: Gentoo penguin */ +/* Polyipnus aquavitus. DESCRIPTION: */ +/* Pseudocorynopoma doriae. DESCRIPTION: Dragonfin tetra */ +/* Platydoras costatus. DESCRIPTION: Raphael catfish */ +/* Parapsilorhynchus tentaculatus. DESCRIPTION: */ +/* Pygopristis denticulata. DESCRIPTION: Lobetoothed piranha */ +/* Protomyctophum andriashevi. DESCRIPTION: */ +/* Kogia breviceps. DESCRIPTION: Pygmy sperm whale */ +/* Pandalus hypsinotus. DESCRIPTION: Coonstripe shrimp */ +/* Pygocentrus piraya. DESCRIPTION: San Francisco piranha */ +/* Priapichthys annectens. DESCRIPTION: */ +/* Paralepididae. DESCRIPTION: Barracudinas nei */ +/* Alepocephalidae. DESCRIPTION: */ +/* Paraliparis andriashevi. DESCRIPTION: */ +/* Perryena leucometopon. DESCRIPTION: */ +/* Paraliparis fuscolingua. DESCRIPTION: */ +/* Puzanovia virgata. DESCRIPTION: */ +/* Parazanclistius hutchinsi. DESCRIPTION: Short boarfish */ +/* Parachela oxygastroides. DESCRIPTION: */ +/* Pogonophryne phyllopogon. DESCRIPTION: */ +/* Pagetopsis spp. DESCRIPTION: */ +/* Paramuricea spp. DESCRIPTION: */ +/* Pontinus macrocephalus. DESCRIPTION: Large-headed scorpionfish */ +/* Paraliparis macrocephalus. DESCRIPTION: */ +/* Pterois volitans. DESCRIPTION: Red lionfish */ +/* Parazen pacificus. DESCRIPTION: Parazen */ +/* Paraliparis rossi. DESCRIPTION: */ +/* Pterois radiata. DESCRIPTION: Radial firefish */ +/* Pagetopsis maculatus. DESCRIPTION: */ +/* Pterois antennata. DESCRIPTION: Broadbarred firefish */ +/* Pterois russelii. DESCRIPTION: Plaintail turkeyfish */ +/* Parazacco vuquangensis. DESCRIPTION: */ +/* Pterois sphex. DESCRIPTION: Hawaiian turkeyfish */ +/* Palaemonetes zariquieyi. DESCRIPTION: Ebro shrimp */ +/* Pseudechinus flemingi. DESCRIPTION: Fleming */ +/* ’s urchin */ +/* Psolidium poriferum. DESCRIPTION: */ +/* Pennatula aculeata. DESCRIPTION: */ +/* Pennatula borealis. DESCRIPTION: */ +/* Pseudopterogorgia elisabethae. DESCRIPTION: Sea plume */ +/* Pennatula phosphorea. DESCRIPTION: */ +/* Psolus ephippifer. DESCRIPTION: */ +/* Psammocinia hawere. DESCRIPTION: Rubber sponge */ +/* Portunus haanii. DESCRIPTION: */ +/* Pseudopallene glutus. DESCRIPTION: */ +/* Psolus paradubiosus. DESCRIPTION: */ +/* Poecillastra laminaris. DESCRIPTION: Fibreglass cup sponge */ +/* Pseudoscaphirhynchus fedtschenkoi. DESCRIPTION: Syr Darya sturgeon */ +/* Scaphirhynchus suttkusi. DESCRIPTION: Alabama sturgeon */ +/* Parablennius dialloi. DESCRIPTION: */ +/* Plutonaster knoxi. DESCRIPTION: Abyssal star */ +/* Psilaster acuminatus. DESCRIPTION: Geometric star */ +/* Parablennius goreensis. DESCRIPTION: */ +/* Astrea spirata. DESCRIPTION: Spirate turban */ +/* Astrea turbanica. DESCRIPTION: Rockpile turban */ +/* Astrea undosa. DESCRIPTION: Wavy turban */ +/* Parablennius incognitus. DESCRIPTION: */ +/* Parablennius parvicornis. DESCRIPTION: Rock-pool blenny */ +/* Oplophorus spp. DESCRIPTION: */ +/* Parablennius tentacularis. DESCRIPTION: Tentacled blenny */ +/* Parablennius verryckeni. DESCRIPTION: */ +/* Prognichthys gibbifrons. DESCRIPTION: Bluntnose flyingfish */ +/* Holtbyrnia innesi. DESCRIPTION: Teardrop tubeshoulder */ +/* Holtbyrnia macrops. DESCRIPTION: Bigeye searsid */ +/* Maulisia mauli. DESCRIPTION: Maul's searsid */ +/* Maulisia microlepis. DESCRIPTION: Smallscale searsid */ +/* Sagamichthys schnakenbecki. DESCRIPTION: Schnakenbeck's searsid */ +/* Pachycara crassiceps. DESCRIPTION: */ +/* Pachycara crossacanthum. DESCRIPTION: */ +/* Microspathodon frontatus. DESCRIPTION: Guinean damselfish */ +/* Pyrosoma atlanticum. DESCRIPTION: */ +/* Pontinus leda. DESCRIPTION: Speckled scorpionfish */ +/* Polyipnus polli. DESCRIPTION: */ +/* Photonectes dinema. DESCRIPTION: */ +/* Aristostomias polydactylus. DESCRIPTION: */ +/* Aristostomias xenostoma. DESCRIPTION: */ +/* Photonectes leucospilus. DESCRIPTION: */ +/* Photonectes margarita. DESCRIPTION: */ +/* Stylocordyla borealis. DESCRIPTION: */ +/* Monodactylus sebae. DESCRIPTION: African moony */ +/* Odontaster meridionalis. DESCRIPTION: */ +/* Odontaster benhami. DESCRIPTION: Pentagonal tooth-star */ +/* Microphis brachyurus. DESCRIPTION: Short-tailed pipefish */ +/* Suberites caminatus. DESCRIPTION: */ +/* Opisthoteuthis spp. DESCRIPTION: Umbrella octopus nei */ +/* Sphoeroides spengleri. DESCRIPTION: Bandtail puffer */ +/* Apogon aureus. DESCRIPTION: Ring-tailed cardinalfish */ +/* Melanostomias bartonbeani. DESCRIPTION: Scaleless black dragonfish */ +/* Equichlamys bifrons. DESCRIPTION: Bifrons scallop */ +/* Apogon coccineus. DESCRIPTION: Ruby cardinalfish */ +/* Apogon cookii. DESCRIPTION: Cook's cardinalfish */ +/* Cinachyra antarctica. DESCRIPTION: */ +/* Apogon cyanosoma. DESCRIPTION: */ +/* Apogon fleurieu. DESCRIPTION: */ +/* Apogon fraenatus. DESCRIPTION: */ +/* Apogon gularis. DESCRIPTION: */ +/* Nicholsina usta. DESCRIPTION: Emerald parrotfish */ +/* Pseudotolithus epipercus. DESCRIPTION: Guinea croaker */ +/* Coelorinchus geronimo. DESCRIPTION: */ +/* Apogon truncatus. DESCRIPTION: Flagfin cardinalfish */ +/* Apogonichthyoides nigripinnis. DESCRIPTION: Bullseye */ +/* Apogonichthyoides pseudotaeniatus. DESCRIPTION: Doublebar cardinalfish */ +/* Apogonichthyoides taeniatus. DESCRIPTION: Twobelt cardinal */ +/* Pagrus africanus. DESCRIPTION: Southern common seabream */ +/* Jaydia queketti. DESCRIPTION: Spotfin cardinal */ +/* Parablennius opercularis. DESCRIPTION: Cheekspot blenny */ +/* Coryogalops anomolus. DESCRIPTION: Anomolous goby */ +/* Coryogalops monospilus. DESCRIPTION: Onespot goby */ +/* Coryogalops tessellatus. DESCRIPTION: */ +/* Parablennius thysanius. DESCRIPTION: Tasseled blenny */ +/* Gorgonocephalus spp. DESCRIPTION: Gorgons head basket-stars nei */ +/* Pomadasys furcatus. DESCRIPTION: Banded grunter */ +/* Pomadasys argyreus. DESCRIPTION: Bluecheek silver grunt */ +/* Pomadasys taeniatus. DESCRIPTION: Bronzestriped grunt */ +/* Porania antarctica. DESCRIPTION: */ +/* Priacanthus blochii. DESCRIPTION: Paeony bulleye */ +/* Scartelaos tenuis. DESCRIPTION: Indian O. slender mudskipper */ +/* Ocypode madagascariensis. DESCRIPTION: */ +/* Stethojulis interrupta. DESCRIPTION: Cutribbon wrasse */ +/* Suezichthys caudavittatus. DESCRIPTION: Spottail wrasse */ +/* Colossendeis enigmatica. DESCRIPTION: */ +/* Colossendeis robusta. DESCRIPTION: */ +/* Suezichthys gracilis. DESCRIPTION: Slender wrasse */ +/* Ocypode ryderi. DESCRIPTION: */ +/* Polyamblyodon gibbosum. DESCRIPTION: Knife-back seabream */ +/* Pelecanoides georgicus. DESCRIPTION: South Georgia diving petrel */ +/* Coelorinchus trunovi. DESCRIPTION: */ +/* Pagophila eburnea. DESCRIPTION: Ivory gull */ +/* Rissa tridactyla. DESCRIPTION: Black-legged kittiwake */ +/* Colossendeis spp. DESCRIPTION: Giant sea spiders nei */ +/* Aseraggodes cyaneus. DESCRIPTION: */ +/* Thysanophrys celebica. DESCRIPTION: Celebes flathead */ +/* Caberea darwinii. DESCRIPTION: */ +/* Potamotrygon. DESCRIPTION: */ +/* Pseudostichopus peripatus. DESCRIPTION: */ +/* Tomiyamichthys latruncularius. DESCRIPTION: Fan shrimp-goby */ +/* Torquigener hypselogeneion. DESCRIPTION: Orange-spotted toadfish */ +/* Torquigener flavimaculosus. DESCRIPTION: */ +/* Pomacanthus semicirculatus. DESCRIPTION: Semicircle angelfish */ +/* Pomacentrus aquilus. DESCRIPTION: Dark damsel */ +/* Pomacentrus leptus. DESCRIPTION: Slender damsel */ +/* Pomacentrus trichrourus. DESCRIPTION: Paletail damsel */ +/* Lutjanus endecacanthus. DESCRIPTION: Guinea snapper */ +/* Pomacentrus trilineatus. DESCRIPTION: Threeline damsel */ +/* Pomacentrus tripunctatus. DESCRIPTION: Threespot damsel */ +/* Solea stanalandi. DESCRIPTION: Stanaland's sole */ +/* Sorsogona tuberculata. DESCRIPTION: Tuberculated flathead */ +/* Synagrops adeni. DESCRIPTION: Aden splitfin */ +/* Synanceia nana. DESCRIPTION: Red Sea stonefish */ +/* Synanceia verrucosa. DESCRIPTION: Stonefish */ +/* Lepidisis spp. DESCRIPTION: */ +/* Chrysogorgiidae. DESCRIPTION: */ +/* Spongia agaricina. DESCRIPTION: Elephant ear */ +/* Spongia barbara. DESCRIPTION: Yellow sponge */ +/* Spongia graminea. DESCRIPTION: Glove sponge */ +/* Spongia nitens. DESCRIPTION: Shiny sponge */ +/* Spongia officinalis. DESCRIPTION: Greek bathing sponge */ +/* Rhabdamia cypselurus. DESCRIPTION: Swallowtail cardinalfish */ +/* Spongia tubulifera. DESCRIPTION: Reef sponge */ +/* Trichonotus setiger. DESCRIPTION: Spotted sand-diver */ +/* Trichonotus arabicus. DESCRIPTION: Arabian sand diver */ +/* Spongia spp. DESCRIPTION: */ +/* Trimma winterbottomi. DESCRIPTION: Winterbottom's goby */ +/* Spongia zimocca. DESCRIPTION: Leather sponge */ +/* Trypauchen vagina. DESCRIPTION: */ +/* Mactrotoma antecedens. DESCRIPTION: */ +/* Sparisoma atomarium. DESCRIPTION: Greenblotch parrotfish */ +/* Paradota marionensis. DESCRIPTION: */ +/* Polydactylus spp. DESCRIPTION: */ +/* Polyipnus indicus. DESCRIPTION: */ +/* Polyipnus spinosus. DESCRIPTION: Spiny hatchetfish */ +/* Ovalipes iridescens. DESCRIPTION: */ +/* Polymixia berndti. DESCRIPTION: Pacific beardfish */ +/* Pristigenys niphonia. DESCRIPTION: Japanese bigeye */ +/* Lutjanus bengalensis. DESCRIPTION: Bengal snapper */ +/* Lutjanus lunulatus. DESCRIPTION: Lunartail snapper */ +/* Pemmatoporella marginata. DESCRIPTION: */ +/* Ocypode spp. DESCRIPTION: */ +/* Scorpaenopsis barbata. DESCRIPTION: Bearded scorpionfish */ +/* Scorpaenopsis lactomaculata. DESCRIPTION: Whiteblotched scorpionfish */ +/* Scorpaenopsis venosa. DESCRIPTION: Raggy scorpionfish */ +/* Tetragonurus spp. DESCRIPTION: Squaretails nei */ +/* Tetrosomus gibbosus. DESCRIPTION: Humpback turretfish */ +/* Thalassoma purpureum. DESCRIPTION: Surge wrasse */ +/* Lutjanus notatus. DESCRIPTION: Bluestriped snapper */ +/* Stephanocyathus platypus. DESCRIPTION: */ +/* Squilla aculeata. DESCRIPTION: Kicking mantis shrimp */ +/* Squilla biformis. DESCRIPTION: Sorcerer mantis shrimp */ +/* Squilla cadenati. DESCRIPTION: Angolan mantis srimp */ +/* Squilla empusa. DESCRIPTION: Rough mantis shrimp */ +/* Spicara nigricauda. DESCRIPTION: Blacktail picarel */ +/* Squilla mantoidea. DESCRIPTION: Catalina mantis */ +/* Squilla panamensis. DESCRIPTION: Panama mantis shrimp */ +/* Squilla parva. DESCRIPTION: Small mantis shrimp */ +/* Squilla bigelowi. DESCRIPTION: Bigelow mantis shrimp */ +/* Apogon spp. DESCRIPTION: */ +/* Archamia fucata. DESCRIPTION: Orangelined cardinalfish */ +/* Psammobatis bergi. DESCRIPTION: Blotched sand skate */ +/* Macrourus caml. DESCRIPTION: Caml grenadier */ +/* Prochilodus mariae. DESCRIPTION: */ +/* Psammobatis normani. DESCRIPTION: Shortfin sand skate */ +/* Nototodarus spp. DESCRIPTION: Nototodarus flying squids nei */ +/* Anabarilius grahami. DESCRIPTION: Kanglang fish */ +/* Promachocrinus kerguelensis. DESCRIPTION: */ +/* Solanometra antarctica. DESCRIPTION: */ +/* Monodactylus falciformis. DESCRIPTION: Full moony */ +/* Diretmidae. DESCRIPTION: Spinyfins nei */ +/* Primnoa resedaeformis. DESCRIPTION: Red trees */ +/* Scortum barcoo. DESCRIPTION: Barcoo grunter */ +/* Thorogobius rofeni. DESCRIPTION: */ +/* Microchirus boscanion. DESCRIPTION: Lusitanian sole */ +/* Microchirus frechkopi. DESCRIPTION: Frechkop */ +/* ’s sole */ +/* Microchirus wittei. DESCRIPTION: Banded sole */ +/* Primnoidae. DESCRIPTION: */ +/* Ostreola stentina. DESCRIPTION: Dwarf oyster */ +/* Thalamita spp. DESCRIPTION: */ +/* Perissodonta mirabilis. DESCRIPTION: Subantarctic struthiolaria */ +/* Aequipecten felipponei. DESCRIPTION: Felippone's scallop */ +/* Polybius henslowii. DESCRIPTION: Henslow */ +/* ’s swimming crab */ +/* Gymnura natalensis. DESCRIPTION: */ +/* Thalassoma hebraicum. DESCRIPTION: Goldbar wrasse */ +/* Patella miniata. DESCRIPTION: Cinnabar limpet */ +/* Prochilodus nigricans. DESCRIPTION: Black prochilodus */ +/* Paralichthys patagonicus. DESCRIPTION: Patagonian flounder */ +/* Procypris rabaudi. DESCRIPTION: Rock carp */ +/* Aequipecten tehuelchus. DESCRIPTION: Tehuelche scallop */ +/* Palaemon spp. DESCRIPTION: Palaemon shrimps nei */ +/* Pisodonophis hoeveni. DESCRIPTION: Hoeven's snake eel */ +/* Manducus maderensis. DESCRIPTION: */ +/* Tridacna spp. DESCRIPTION: Giant clams nei */ +/* Argyropelecus affinis. DESCRIPTION: Pacific hatchet fish */ +/* Argyropelecus gigas. DESCRIPTION: Hatchetfish */ +/* Argyropelecus hemigymnus. DESCRIPTION: Half-naked hatchetfish */ +/* Argyropelecus sladeni. DESCRIPTION: Sladen's hatchet fish */ +/* Serripes groenlandicus. DESCRIPTION: Greenland smoothcockle */ +/* Eleutheronema rhadinum. DESCRIPTION: E. Asian fourfinger threadfin */ +/* Filimanus hexanema. DESCRIPTION: Javanese threadfin */ +/* Filimanus perplexa. DESCRIPTION: Splendid threadfin */ +/* Filimanus sealei. DESCRIPTION: Eightfinger threadfin */ +/* Filimanus similis. DESCRIPTION: Indian sevenfinger threadfin */ +/* Filimanus xanthonema. DESCRIPTION: Yellowthread threadfin */ +/* Parapolynemus verekeri. DESCRIPTION: Dwarf paradise fish */ +/* Polydactylus bifurcus. DESCRIPTION: Slender fivefinger threadfin */ +/* Strombus aurisdianae. DESCRIPTION: Diana conch */ +/* Strombus bulla. DESCRIPTION: Bubble conch */ +/* Aequipecten opercularis. DESCRIPTION: Queen scallop */ +/* Strombus dentatus. DESCRIPTION: Samar conch */ +/* Strombus lentiginosus. DESCRIPTION: Silver conch */ +/* Polydactylus longipes. DESCRIPTION: Long-limb threadfin */ +/* Strombus gibberulus. DESCRIPTION: Gibbose conch */ +/* Polydactylus macrochir. DESCRIPTION: King threadfin */ +/* Strombus mutabilis. DESCRIPTION: Mutable conch */ +/* Polydactylus macrophthalmus. DESCRIPTION: River threadfin */ +/* Polydactylus malagasyensis. DESCRIPTION: African blackspot threadfin */ +/* Strombus labiatus. DESCRIPTION: Plicate conch */ +/* Strombus marginatus. DESCRIPTION: Marginate conch */ +/* Strombus canarium. DESCRIPTION: Dog conch */ +/* Strombus epidromis. DESCRIPTION: Swan conch */ +/* Polydactylus microstomus. DESCRIPTION: Smallmouth threadfin */ +/* Strombus urceus. DESCRIPTION: Little pitcher conch */ +/* Strombus sinuatus. DESCRIPTION: Laciniate conch */ +/* Strombus latissimus. DESCRIPTION: Widest Pacific conch */ +/* Strombus luhuanus. DESCRIPTION: Strawberry conch */ +/* Strombus variabilis. DESCRIPTION: Variable conch */ +/* Polydactylus mullani. DESCRIPTION: Arabian blackspot threadfin */ +/* Todarodes spp. DESCRIPTION: Todarodes flying squids nei */ +/* Polydactylus multiradiatus. DESCRIPTION: Australian threadfin */ +/* Polydactylus nigripinnis. DESCRIPTION: Blackfin threadfin */ +/* Quintana atrizona. DESCRIPTION: Barred topminnow */ +/* Polydactylus octonemus. DESCRIPTION: Atlantic threadfin */ +/* Polydactylus oligodon. DESCRIPTION: Littlescale threadfin */ +/* Polydactylus persicus. DESCRIPTION: Persian blackspot threadfin */ +/* Patella depressa. DESCRIPTION: */ +/* Polydactylus siamensis. DESCRIPTION: Largemouth striped threadfin */ +/* Polydactylus virginicus. DESCRIPTION: Barbu */ +/* Pterocladia heteroplatos. DESCRIPTION: */ +/* Patella lugubris. DESCRIPTION: Mournful limpet */ +/* Polynemus aquilonaris. DESCRIPTION: Northern paradise fish */ +/* Polynemus dubius. DESCRIPTION: Eastern paradise fish */ +/* Porites lobata. DESCRIPTION: Smooth star coral */ +/* Polynemus hornadayi. DESCRIPTION: Hornaday */ +/* ’s paradise fish */ +/* Pterocladia nana. DESCRIPTION: */ +/* Tonna olearium. DESCRIPTION: Oily tun */ +/* Porites panamensis. DESCRIPTION: Small star coral */ +/* Polynemus melanochir. DESCRIPTION: Blackhand paradise fish */ +/* Polynemus multifilis. DESCRIPTION: Elegant paradise fish */ +/* Tonna tessellata. DESCRIPTION: Mosaic tun */ +/* Pterocladia lucida. DESCRIPTION: */ +/* Patella vulgata. DESCRIPTION: Limpet */ +/* Polynemus kapuasensis. DESCRIPTION: Kapuas elegant paradise fish */ +/* Polynemus spp. DESCRIPTION: */ +/* Tylorrhynchus heterochaetus. DESCRIPTION: */ +/* Squaliolus aliae. DESCRIPTION: Smalleye pygmy shark */ +/* Squalus blainville. DESCRIPTION: Longnose spurdog */ +/* Squalus cubensis. DESCRIPTION: Cuban dogfish */ +/* Scomberoides spp. DESCRIPTION: Queenfishes */ +/* Squalus japonicus. DESCRIPTION: Japanese spurdog */ +/* Squalus mitsukurii. DESCRIPTION: Shortspine spurdog */ +/* Squaliolus laticaudus. DESCRIPTION: Spined pygmy shark */ +/* Scomberomorus queenslandicus. DESCRIPTION: Queensland school mackerel */ +/* Squalus melanurus. DESCRIPTION: Blacktailed spurdog */ +/* Oplegnathus conwayi. DESCRIPTION: Cape knifejaw */ +/* Squalus rancureli. DESCRIPTION: Cyrano spurdog */ +/* Quirichthys stramineus. DESCRIPTION: */ +/* Chrysoblephus lophus. DESCRIPTION: False red stumpnose */ +/* Apogon nigripes. DESCRIPTION: Blackfoot cardinal */ +/* Pristiapogon kallopterus. DESCRIPTION: Iridescent cardinalfish */ +/* Quietula y-cauda. DESCRIPTION: */ +/* Oplegnathus robinsoni. DESCRIPTION: Natal knifejaw */ +/* Pagellus natalensis. DESCRIPTION: Natal pandora */ +/* Tylobranchion speciosum. DESCRIPTION: */ +/* Smittina anecdota. DESCRIPTION: */ +/* Smittoidea ornatipectoralis. DESCRIPTION: */ +/* Mediaster sladeni. DESCRIPTION: Sladen's star */ +/* Argyrosomus heinii. DESCRIPTION: Arabian sea meagre */ +/* Arnoglossus aspilos. DESCRIPTION: Spotless lefteye flounder */ +/* Arnoglossus tapeinosoma. DESCRIPTION: Drab flounder */ +/* Polysteganus baissaci. DESCRIPTION: Frenchman seabream */ +/* Sycozoa sigillinoides. DESCRIPTION: */ +/* Pterygoplichthys pardalis. DESCRIPTION: Amazon sailfin catfish */ +/* Paracheilinus mccoskeri. DESCRIPTION: McCosker's flasher */ +/* Stichopathes spp. DESCRIPTION: */ +/* Periophthalmus waltoni. DESCRIPTION: Walton's mudskipper */ +/* Prognathodes marcellae. DESCRIPTION: */ +/* Ctenogobius lepturus. DESCRIPTION: */ +/* Parupeneus rubescens. DESCRIPTION: Rosy goatfish */ +/* Parupeneus ciliatus. DESCRIPTION: Whitesaddle goatfish */ +/* Parupeneus margaritatus. DESCRIPTION: Pearly goatfish */ +/* Parapercis robinsoni. DESCRIPTION: Smallscale grubfish */ +/* Parapercis nebulosa. DESCRIPTION: Barred sandperch */ +/* Parapercis hexophtalma. DESCRIPTION: Speckled sandperch */ +/* Parapercis clathrata. DESCRIPTION: Latticed sandperch */ +/* Parapercis alboguttata. DESCRIPTION: Whitespot sandsmelt */ +/* Paramonacanthus oblongus. DESCRIPTION: Hair-finned filefish */ +/* Paramonacanthus choirocephalus. DESCRIPTION: Pig faced leather jacket */ +/* Paramonacanthus arabicus. DESCRIPTION: Gulf filefish */ +/* Stomias longibarbatus. DESCRIPTION: Longbarb scaly dragonfish */ +/* Stomias lampropeltis. DESCRIPTION: */ +/* Spicara alta. DESCRIPTION: Bigeye picarel */ +/* Sparisoma rubripinne. DESCRIPTION: Redfin parrotfish */ +/* Darina rustica. DESCRIPTION: */ +/* Darina spp. DESCRIPTION: */ +/* Stomias affinis. DESCRIPTION: G */ +/* ünther's boafish */ +/* Rypticus subbifrenatus. DESCRIPTION: Spotted soapfish */ +/* Coilia mystus. DESCRIPTION: Osbeck's grenadier anchovy */ +/* Rastrelliger brachysoma. DESCRIPTION: Short mackerel */ +/* Solen capensis. DESCRIPTION: Cape razor clam */ +/* Rasbora daniconius. DESCRIPTION: Slender rasbora */ +/* Solen marginatus. DESCRIPTION: European razor clam */ +/* Rastrelliger faughni. DESCRIPTION: Island mackerel */ +/* Rastrelliger kanagurta. DESCRIPTION: Indian mackerel */ +/* Anacanthobatis ori. DESCRIPTION: Black legskate */ +/* Randallichthys filamentosus. DESCRIPTION: Randall's snapper */ +/* Rajidae. DESCRIPTION: Rays and skates nei */ +/* Crapatalus angusticeps. DESCRIPTION: Slender stargazer */ +/* Dussumieria elopsoides. DESCRIPTION: Slender rainbow sardine */ +/* Anacanthobatis americanus. DESCRIPTION: */ +/* Anacanthobatis melanosoma. DESCRIPTION: */ +/* Anacanthobatis borneensis. DESCRIPTION: */ +/* Siliqua patula. DESCRIPTION: Pacific razor clam */ +/* Ranina ranina. DESCRIPTION: Spanner crab */ +/* Aptychotrema rostrata. DESCRIPTION: Eastern shovelnose ray */ +/* Dussumieria acuta. DESCRIPTION: Rainbow sardine */ +/* Hydrolagus colliei. DESCRIPTION: Spotted ratfish */ +/* Anacanthobatis marmoratus. DESCRIPTION: Spotted legskate */ +/* Aptychotrema vincentiana. DESCRIPTION: Western shovelnose ray */ +/* Arca avellana. DESCRIPTION: Hazelnut ark */ +/* Rastrelliger spp. DESCRIPTION: Indian mackerels nei */ +/* Arhynchobatis asperrimus. DESCRIPTION: Longtail skate */ +/* Solen spp. DESCRIPTION: Solen razor clams nei */ +/* Rhinobatos annulatus. DESCRIPTION: */ +/* Rhinobatos batillum. DESCRIPTION: */ +/* Rhinobatos cemiculus. DESCRIPTION: Blackchin guitarfish */ +/* Rhinobatos lionotus. DESCRIPTION: */ +/* Rhinobatos brevirostris. DESCRIPTION: Lesser guitarfish */ +/* Rhinobatos punctifer. DESCRIPTION: */ +/* Rhabdamia gracilis. DESCRIPTION: Luminous cardinalfish */ +/* Rhinobatos halavi. DESCRIPTION: Halavi ray */ +/* Rhinobatos irvinei. DESCRIPTION: */ +/* Rexea brevilineata. DESCRIPTION: Short-lined escolar */ +/* Rhinobatos horkelii. DESCRIPTION: Brazilian guitarfish */ +/* Rhinobatos glaucostigma. DESCRIPTION: Speckled guitarfish */ +/* Rhinobatos obtusus. DESCRIPTION: */ +/* Rhinobatos hynnicephalus. DESCRIPTION: */ +/* Rhinobatos holcorhynchus. DESCRIPTION: Slender guitarfish */ +/* Rhinobatos productus. DESCRIPTION: Shovelnose guitarfish */ +/* Rhinobatos typus. DESCRIPTION: Giant shovelnose ray */ +/* Rhinobatos granulatus. DESCRIPTION: Granulated guitarfish */ +/* Rhinobatos leucospilus. DESCRIPTION: Grayspottted guitarfish */ +/* Rhinobatos lentiginosus. DESCRIPTION: Atlantic guitarfish */ +/* Rhinobatos leucorhynchus. DESCRIPTION: Whitesnout guitarfish */ +/* Rhinobatos thouin. DESCRIPTION: Thouin ray */ +/* Rhinobatos salalah. DESCRIPTION: */ +/* Rhinobatos rhinobatos. DESCRIPTION: Common guitarfish */ +/* Gymnura spp. DESCRIPTION: Butterfly rays nei */ +/* Rhinobatos schlegelii. DESCRIPTION: Brown guitarfish */ +/* Rhynchobatus australiae. DESCRIPTION: Whitespotted wedgefish */ +/* Paracyprichromis brieni. DESCRIPTION: */ +/* Parachaetodon ocellatus. DESCRIPTION: Sixspine butterflyfish */ +/* Rhynchobatus djiddensis. DESCRIPTION: Giant guitarfish */ +/* Parapriacanthus elongatus. DESCRIPTION: Slender bullseye */ +/* Racenisia fimbriipinna. DESCRIPTION: */ +/* Ribeiroclinus eigenmanni. DESCRIPTION: */ +/* Rhechias bertini. DESCRIPTION: */ +/* Paracirrhites forsteri. DESCRIPTION: Blackside hawkfish */ +/* Astatoreochromis alluaudi. DESCRIPTION: */ +/* Arctides regalis. DESCRIPTION: Royal spanish lobster */ +/* Rhynchobatus luebberti. DESCRIPTION: African wedgefish */ +/* Caprichromis liemi. DESCRIPTION: */ +/* Rhadinocentrus ornatus. DESCRIPTION: */ +/* Rheocles alaotrensis. DESCRIPTION: Katrana */ +/* Rhinochimaera pacifica. DESCRIPTION: Pacific spookfish */ +/* Rhinocoryne humboldti. DESCRIPTION: Humboldt's potamid */ +/* Raniceps raninus. DESCRIPTION: Tadpole fish */ +/* Roncador stearnsii. DESCRIPTION: Spotfin croaker */ +/* Rhinochimaera atlantica. DESCRIPTION: Straightnose rabbitfish */ +/* Serranocirrhitus latus. DESCRIPTION: Hawkfish anthias */ +/* Paraclinus altivelis. DESCRIPTION: */ +/* Procambarus clarkii. DESCRIPTION: Red swamp crawfish */ +/* Rhacochilus toxotes. DESCRIPTION: Rubberlip seaperch */ +/* Rhynchocinetes durbanensis. DESCRIPTION: Striped hinge beak shrimp */ +/* Arenicola defodiens. DESCRIPTION: Black lug, Runnydown */ +/* Dasyatis americana. DESCRIPTION: Southern stingray */ +/* Dasyatis bennetti. DESCRIPTION: Bennett's stingray */ +/* Dasyatis centroura. DESCRIPTION: Roughtail stingray */ +/* Dasyatis dipterura. DESCRIPTION: Diamond stingray */ +/* Dasyatis margaritella. DESCRIPTION: */ +/* Dasyatis fluviorum. DESCRIPTION: Estuary stingray */ +/* Dasyatis garouaensis. DESCRIPTION: */ +/* Dasyatis chrysonota. DESCRIPTION: */ +/* Dasyatis giganteus. DESCRIPTION: */ +/* Dasyatis geijskesi. DESCRIPTION: Sharpsnout stingray */ +/* Dasyatis kuhlii. DESCRIPTION: Blue-spotted stingray */ +/* Dasyatis longa. DESCRIPTION: Longtail stingray */ +/* Sciaenops ocellatus. DESCRIPTION: Red drum */ +/* Dasyatis annotata. DESCRIPTION: Plain maskray */ +/* Dasyatis laosensis. DESCRIPTION: Mekong stingray */ +/* Dasyatis microps. DESCRIPTION: Smalleye stingray */ +/* Dasyatis marmorata. DESCRIPTION: */ +/* Dasyatis brevicaudata. DESCRIPTION: Short-tail stingray */ +/* Dasyatis margarita. DESCRIPTION: Daisy stingray */ +/* Dasyatis latus. DESCRIPTION: */ +/* Dasyatis guttata. DESCRIPTION: Longnose stingray */ +/* Dasyatis brevis. DESCRIPTION: Whiptail stingray */ +/* Dasyatis ukpam. DESCRIPTION: */ +/* Dasyatis ushiei. DESCRIPTION: */ +/* Dasyatis leylandi. DESCRIPTION: Painted maskray */ +/* Dasyatis zugei. DESCRIPTION: Pale-edged stingray */ +/* Pagrus auriga. DESCRIPTION: Redbanded seabream */ +/* Sebastes mentella. DESCRIPTION: Beaked redfish */ +/* Sebastes capensis. DESCRIPTION: Cape redfish */ +/* Sebastes spp. DESCRIPTION: Atlantic redfishes nei */ +/* Tenualosa reevesii. DESCRIPTION: Reeves shad */ +/* Retroculus lapidifera. DESCRIPTION: */ +/* Sebastes marinus. DESCRIPTION: Golden redfish */ +/* Rectoris posehensis. DESCRIPTION: */ +/* Coccorella atlantica. DESCRIPTION: */ +/* Acreichthys hajam. DESCRIPTION: */ +/* Repomucenus calcaratus. DESCRIPTION: Spotted stinkfish */ +/* Regalecus glesne. DESCRIPTION: King of herrings */ +/* Remora spp. DESCRIPTION: Shark suckers */ +/* Sebastes fasciatus. DESCRIPTION: Acadian redfish */ +/* Remora remora. DESCRIPTION: Shark sucker */ +/* Penaeus penicillatus. DESCRIPTION: Redtail prawn */ +/* Sebastes oculatus. DESCRIPTION: Patagonian redfish */ +/* Petrus rupestris. DESCRIPTION: Red steenbras */ +/* Lutjanus argentimaculatus. DESCRIPTION: Mangrove red snapper */ +/* Relictus solitarius. DESCRIPTION: Relict dace */ +/* Roeboides caucae. DESCRIPTION: */ +/* Pagrus major. DESCRIPTION: Japanese seabream */ +/* Solaster regularis. DESCRIPTION: */ +/* Arenaeus mexicanus. DESCRIPTION: Sand swimcrab */ +/* Remora brachyptera. DESCRIPTION: Spearfish remora */ +/* Remora osteochir. DESCRIPTION: Marlin sucker */ +/* Raja taaf. DESCRIPTION: */ +/* Rhamphochromis brevis. DESCRIPTION: */ +/* Sebastes crameri. DESCRIPTION: Darkblotched rockfish */ +/* Pleuronectes vetulus. DESCRIPTION: English sole */ +/* Rhopiella hirsuta. DESCRIPTION: */ +/* Raja straeleni. DESCRIPTION: Spotted skate */ +/* Marcia flammea. DESCRIPTION: Ovate clam */ +/* Raja rondeleti. DESCRIPTION: Rondelet's ray */ +/* Parupeneus barberinus. DESCRIPTION: Dash-and-dot goatfish */ +/* Parupeneus indicus. DESCRIPTION: Indian goatfish */ +/* Rutilus frisii. DESCRIPTION: Kutum */ +/* Raja springeri. DESCRIPTION: Roughbelly skate */ +/* Raja stellulata. DESCRIPTION: Starry skate */ +/* Raja ravidula. DESCRIPTION: Smoothback skate */ +/* Raja rouxi. DESCRIPTION: */ +/* Raja stenorhynchus. DESCRIPTION: Prow-nose skate */ +/* Rutilus lemmingii. DESCRIPTION: */ +/* Gurgesiella atlantica. DESCRIPTION: */ +/* Rhinogobius brunneus. DESCRIPTION: Amur goby */ +/* Gymnura crebripunctata. DESCRIPTION: Longsnout butterfly ray */ +/* Rangia mendica. DESCRIPTION: Western Mexican rangia */ +/* Paragobiodon echinocephalus. DESCRIPTION: Redhead goby */ +/* Rhinogobius flumineus. DESCRIPTION: */ +/* Racovitzia glacialis. DESCRIPTION: */ +/* Argyrosomus thorpei. DESCRIPTION: Squaretail kob */ +/* Gymnura micrura. DESCRIPTION: Smooth butterfly ray */ +/* Gymnura japonica. DESCRIPTION: Japanese butterflyray */ +/* Arnoglossus capensis. DESCRIPTION: Cape scaldfish */ +/* Gymnura altavela. DESCRIPTION: Spiny butterfly ray */ +/* Gymnura marmorata. DESCRIPTION: California butterfly ray */ +/* Cristatogobius nonatoae. DESCRIPTION: */ +/* Aseraggodes kobensis. DESCRIPTION: */ +/* Gymnura poecilura. DESCRIPTION: Long-tailed butterfly ray */ +/* Rangia cuneata. DESCRIPTION: Common rangia */ +/* Gymnetrus russelii. DESCRIPTION: */ +/* Gurgesiella sibogae. DESCRIPTION: */ +/* Gymnura tentaculata. DESCRIPTION: Tentacled butterfly ray */ +/* Gymnura australis. DESCRIPTION: Australian butterfly ray */ +/* Sargassum vulgare. DESCRIPTION: Common sargassum */ +/* Arnoglossus spp. DESCRIPTION: Scaldfishes nei */ +/* Aseraggodes macleayanus. DESCRIPTION: Narrowbanded sole */ +/* Gymnura zonura. DESCRIPTION: Zonetail butterfly ray */ +/* Rhizoprionodon acutus. DESCRIPTION: Milk shark */ +/* Rhabdalestes brevidorsalis. DESCRIPTION: */ +/* Rhinochimaera spp. DESCRIPTION: Knife-nosed chimaeras nei */ +/* Rhinobatos annandalei. DESCRIPTION: Annandale's guitarfish */ +/* Rhinoraja odai. DESCRIPTION: */ +/* Rhinobatos formosensis. DESCRIPTION: */ +/* Macrourus berglax. DESCRIPTION: Roughhead grenadier */ +/* Rhinobatos blochii. DESCRIPTION: Bluntnose guitarfish */ +/* Labeo spp. DESCRIPTION: Rhinofishes nei */ +/* Rhinoraja longicauda. DESCRIPTION: */ +/* Rhinoraja kujiensis. DESCRIPTION: Dapple-bellied softnose skate */ +/* Rhizoprionodon lalandii. DESCRIPTION: Brazilian sharpnose shark */ +/* Rhodeus amarus. DESCRIPTION: */ +/* Rhincodon typus. DESCRIPTION: Whale shark */ +/* Rhinobatos ocellatus. DESCRIPTION: */ +/* Palmaria palmata. DESCRIPTION: Dulse */ +/* Rhinichthys atratulus. DESCRIPTION: Blacknose dace */ +/* Rhizoprionodon porosus. DESCRIPTION: Caribbean sharpnose shark */ +/* Rhizoprionodon terraenovae. DESCRIPTION: Atlantic sharpnose shark */ +/* Rhizoprionodon longurio. DESCRIPTION: Pacific sharpnose shark */ +/* Rhinichthys osculus. DESCRIPTION: Speckled dace */ +/* Rhinichthys cataractae. DESCRIPTION: Longnose dace */ +/* Rhizoprionodon oligolinx. DESCRIPTION: Grey sharpnose shark */ +/* Rhizoprionodon taylori. DESCRIPTION: Australian sharpnose shark */ +/* Rhizoprionodon spp. DESCRIPTION: Sharpnose sharks nei */ +/* Rhinosardinia amazonica. DESCRIPTION: Amazon spinejaw sprat */ +/* Mora moro. DESCRIPTION: Common mora */ +/* Rhinomugil corsula. DESCRIPTION: Corsula */ +/* Rhadinesthes decimus. DESCRIPTION: */ +/* Paralichthys adspersus. DESCRIPTION: Fine flounder */ +/* Rineloricaria fallax. DESCRIPTION: */ +/* Paristiopterus gallipavo. DESCRIPTION: Yellowspotted boarfish */ +/* Rhinopias aphanes. DESCRIPTION: */ +/* Coris gaimard. DESCRIPTION: African coris */ +/* Arctides guineensis. DESCRIPTION: Small spanish lobster */ +/* Raoulius cultrifer. DESCRIPTION: Pastel odontodactylid mantis s */ +/* Richardsonius balteatus. DESCRIPTION: Redside shiner */ +/* Rhamdiopsis moreirai. DESCRIPTION: */ +/* Rinoctes nasutus. DESCRIPTION: Abyssal smooth-head */ +/* Rainfordia opercularis. DESCRIPTION: Flathead perch */ +/* Rhinelepis aspera. DESCRIPTION: */ +/* Rhodichthys regina. DESCRIPTION: */ +/* Pristolepis fasciata. DESCRIPTION: Malayan leaffish */ +/* Rhinoprenes pentanemus. DESCRIPTION: Threadfin scat */ +/* Alectridium aurantiacum. DESCRIPTION: Lesser prickleback */ +/* Paralabidochromis victoriae. DESCRIPTION: */ +/* Irolita waitii. DESCRIPTION: Southern round skate */ +/* Rangia spp. DESCRIPTION: */ +/* Redigobius amblyrhynchus. DESCRIPTION: */ +/* Raja alba. DESCRIPTION: White skate */ +/* Raja batis. DESCRIPTION: Blue skate */ +/* Raja clavata. DESCRIPTION: Thornback ray */ +/* Raja erinacea. DESCRIPTION: Little skate */ +/* Raja microocellata. DESCRIPTION: Small-eyed ray */ +/* Raja fullonica. DESCRIPTION: Shagreen ray */ +/* Raja hyperborea. DESCRIPTION: Arctic skate */ +/* Raja brachyura. DESCRIPTION: Blonde ray */ +/* Raja circularis. DESCRIPTION: Sandy ray */ +/* Raja jenseni. DESCRIPTION: Shorttail skate */ +/* Raja lintea. DESCRIPTION: Sailray */ +/* Raja laevis. DESCRIPTION: Barndoor skate */ +/* Raja montagui. DESCRIPTION: Spotted ray */ +/* Raja naevus. DESCRIPTION: Cuckoo ray */ +/* Raja oxyrinchus. DESCRIPTION: Longnosed skate */ +/* Malacoraja spinacidermis. DESCRIPTION: Soft skate */ +/* Bathyraja spinicauda. DESCRIPTION: Spinetail ray */ +/* Raja radiata. DESCRIPTION: Starry ray */ +/* Malacoraja senta. DESCRIPTION: Smooth skate */ +/* Raja ocellata. DESCRIPTION: Winter skate */ +/* Raja undulata. DESCRIPTION: Undulate ray */ +/* Aetomylaeus spp. DESCRIPTION: */ +/* Raja fyllae. DESCRIPTION: Round ray */ +/* Serranochromis angusticeps. DESCRIPTION: Thinface cichlid */ +/* Paramonacanthus barnardi. DESCRIPTION: Wedgetail filefish */ +/* Aristochromis christyi. DESCRIPTION: */ +/* Processa edulis. DESCRIPTION: Nika shrimp */ +/* Caridina edulis. DESCRIPTION: Malagasy caridina */ +/* Parachanna africana. DESCRIPTION: */ +/* Paracheilinus angulatus. DESCRIPTION: Angular flasher */ +/* Procambarus hirsutus. DESCRIPTION: */ +/* Caridina africana. DESCRIPTION: African caridina */ +/* Processa peruviana. DESCRIPTION: Peruvian one-handed shrimp */ +/* Caridina tonkinensis. DESCRIPTION: Tonkin caridina */ +/* Ratsirakia legendrei. DESCRIPTION: */ +/* Arca imbricata. DESCRIPTION: Mossy ark */ +/* Caridina nilotica. DESCRIPTION: Common caridina */ +/* Procambarus troglogytes. DESCRIPTION: */ +/* Caridina propinqua. DESCRIPTION: Bengal caridina */ +/* Arca noae. DESCRIPTION: Noah's ark */ +/* Caridina gracilirostris. DESCRIPTION: Needlenose caridina */ +/* Spirula spirula. DESCRIPTION: Ram's horn squid */ +/* Procambarus bivitattus. DESCRIPTION: Ribbon crayfish */ +/* Processa canaliculata. DESCRIPTION: Processa shrimp */ +/* Caridina laevis. DESCRIPTION: Smooth caridina */ +/* Caridina weberi. DESCRIPTION: Pugnose caridina */ +/* Procambarus fallax. DESCRIPTION: */ +/* Procambarus hayi. DESCRIPTION: */ +/* Arnoglossus kessleri. DESCRIPTION: Scaldback */ +/* Rutilus alburnoides. DESCRIPTION: */ +/* Paralonchurus brasiliensis. DESCRIPTION: Banded croaker */ +/* Rhamdella eriarcha. DESCRIPTION: */ +/* Crenicichla lepidota. DESCRIPTION: Pike cichlid */ +/* Paralonchurus elegans. DESCRIPTION: Blackfin croaker */ +/* Seriola fasciata. DESCRIPTION: Lesser amberjack */ +/* Rana aurora. DESCRIPTION: Red-legged frog */ +/* Seriola hippos. DESCRIPTION: Samson fish */ +/* Arnoglossus imperialis. DESCRIPTION: Imperial scaldfish */ +/* Crenicichla johanna. DESCRIPTION: */ +/* Rabaulichthys altipinnis. DESCRIPTION: Sailfin anthias */ +/* Croilia mossambica. DESCRIPTION: Burrowing goby */ +/* Seriola peruana. DESCRIPTION: Fortune jack */ +/* Priolepis boreus. DESCRIPTION: */ +/* Serraniculus pumilio. DESCRIPTION: Pygmy sea bass */ +/* Seriola carpenteri. DESCRIPTION: Guinean amberjack */ +/* Parrella fusca. DESCRIPTION: */ +/* Crenicichla alta. DESCRIPTION: */ +/* Radulinus vinculus. DESCRIPTION: Smoothgum sculpin */ +/* Rhabdolichops caviceps. DESCRIPTION: */ +/* Crenicichla saxatilis. DESCRIPTION: Ringtail pike cichlid */ +/* Rathbunella hypoplecta. DESCRIPTION: Stripefin ronquil */ +/* Seriola zonata. DESCRIPTION: Banded rudderfish */ +/* Manta alfredi. DESCRIPTION: */ +/* Manta birostris. DESCRIPTION: Giant manta */ +/* Mobula coilloti. DESCRIPTION: */ +/* Mobula eregoodootenkee. DESCRIPTION: Longhorned mobula */ +/* Sparisoma aurofrenatum. DESCRIPTION: Redband parrotfish */ +/* Sebastes melanops. DESCRIPTION: Black rockfish */ +/* Mobula hypostoma. DESCRIPTION: Lesser devil ray */ +/* Leiarius arekaima. DESCRIPTION: */ +/* Mobula japanica. DESCRIPTION: Spinetail mobula */ +/* Mobula kuhlii. DESCRIPTION: Shortfin devil ray */ +/* Rhamphichthys hahni. DESCRIPTION: */ +/* Mobula mobular. DESCRIPTION: Devil fish */ +/* Mobula rochebrunei. DESCRIPTION: Lesser Guinean devil ray */ +/* Mobula thurstoni. DESCRIPTION: Smoothtail mobula */ +/* Rhombosolea plebeia. DESCRIPTION: Sand flounder */ +/* Rhamdia quelen. DESCRIPTION: South American catfish */ +/* Mobula robertsi. DESCRIPTION: */ +/* Sesarma sulcatum. DESCRIPTION: Hairy matchbox crab */ +/* Mobula tarapacana. DESCRIPTION: Chilean devil ray */ +/* Mobula munkiana. DESCRIPTION: Munk's devil ray */ +/* Mobula spp. DESCRIPTION: Mobula nei */ +/* Rexea nakamurai. DESCRIPTION: Nakamura's escolar */ +/* Paraclinus mexicanus. DESCRIPTION: Mexican blenny */ +/* Archamia zosterophora. DESCRIPTION: Blackbelted cardinalfish */ +/* Neoraja africana. DESCRIPTION: */ +/* Serranus atrobranchus. DESCRIPTION: Blackear bass */ +/* Parananochromis caudifasciatus. DESCRIPTION: */ +/* Ruanoho decemdigitatus. DESCRIPTION: Longfinned triplefin */ +/* Cirrhinus reba. DESCRIPTION: Reba carp */ +/* Serranus fasciatus. DESCRIPTION: */ +/* Coryphaenoides rupestris. DESCRIPTION: Roundnose grenadier */ +/* Arnoglossus thori. DESCRIPTION: Thor's scaldfish */ +/* Paranibea semiluctuosa. DESCRIPTION: Half-mourning croaker */ +/* Seriolina nigrofasciata. DESCRIPTION: Blackbanded trevally */ +/* Rhinosolea microlepidota. DESCRIPTION: */ +/* Caprodon longimanus. DESCRIPTION: Pink maomao */ +/* Cirrhinus microlepis. DESCRIPTION: Small scale mud carp */ +/* Rhinoliparis attenuatus. DESCRIPTION: Slim snailfish */ +/* Notoraja ochroderma. DESCRIPTION: */ +/* Rhabdoblennius ellipes. DESCRIPTION: Barred-chin blenny */ +/* Saron neglectus. DESCRIPTION: Spotted marbled shrimp */ +/* Cirrhinus cirrhosus. DESCRIPTION: */ +/* Neoraja stehmanni. DESCRIPTION: African pygmy skate */ +/* Notoraja tobitukai. DESCRIPTION: */ +/* Notoraja subtilispinosa. DESCRIPTION: */ +/* Sebastes nigrocinctus. DESCRIPTION: Tiger rockfish */ +/* Lissodelphis borealis. DESCRIPTION: Northern right whale dolphin */ +/* Rhamdia spp. DESCRIPTION: */ +/* Atrina chautardi. DESCRIPTION: Chautard's pen shell */ +/* Rossia macrosoma. DESCRIPTION: Stout bobtail squid */ +/* Centropomus spp. DESCRIPTION: Snooks(=Robalos) nei */ +/* Cancer productus. DESCRIPTION: Pacific rock crab */ +/* Prognathodes dichrous. DESCRIPTION: Bicolor butterflyfish */ +/* Rhombosolea leporina. DESCRIPTION: Yellowbelly flounder */ +/* Rohtee ogilbii. DESCRIPTION: */ +/* Rhabdosargus holubi. DESCRIPTION: Cape stumpnose */ +/* Rohteichthys microlepis. DESCRIPTION: */ +/* Prolatilus jugularis. DESCRIPTION: Pacific sandperch */ +/* Helicolenus spp. DESCRIPTION: Rosefishes nei */ +/* Gaidropsarus spp. DESCRIPTION: Rocklings nei */ +/* Chrysoblephus laticeps. DESCRIPTION: Roman seabream */ +/* Rhoadsia altipinna. DESCRIPTION: */ +/* Rhodeus ocellatus. DESCRIPTION: Rosy bitterling */ +/* Rhombosolea tapirina. DESCRIPTION: Greenback flounder */ +/* Protothaca asperrima. DESCRIPTION: Rough littleneck */ +/* Rhodeus sericeus. DESCRIPTION: Bitterling */ +/* Lepidopsetta bilineata. DESCRIPTION: Rock sole */ +/* Rouleina attrita. DESCRIPTION: Softskin smooth-head */ +/* Romanogobio tenuicorpus. DESCRIPTION: Amur whitefin gudgeon */ +/* Romanichthys valsanicola. DESCRIPTION: Asprete */ +/* Rogadius welanderi. DESCRIPTION: Welander's flathead */ +/* Morone chrysops. DESCRIPTION: White bass */ +/* Rouleina maderensis. DESCRIPTION: Madeiran smooth-head */ +/* Anoxypristis cuspidata. DESCRIPTION: Pointed sawfish */ +/* Parupeneus trifasciatus. DESCRIPTION: Doublebar goatfish */ +/* Pristis clavata. DESCRIPTION: Dwarf sawfish */ +/* Plesiobatis daviesi. DESCRIPTION: Deep-water stingray */ +/* Prototroctes maraena. DESCRIPTION: Australian grayling */ +/* Parupeneus forsskali. DESCRIPTION: Red Sea goatfish */ +/* Pagrus pagrus. DESCRIPTION: Red porgy */ +/* Parupeneus porphyreus. DESCRIPTION: */ +/* Parapercis snyderi. DESCRIPTION: U-mark sandperch */ +/* Sebastes proriger. DESCRIPTION: Redstripe rockfish */ +/* Parupeneus multifasciatus. DESCRIPTION: Manybar goatfish */ +/* Parupeneus pleurostigma. DESCRIPTION: Sidespot goatfish */ +/* Pristis microdon. DESCRIPTION: Largetooth sawfish */ +/* Rapana spp. DESCRIPTION: Sea snails */ +/* Parupeneus macronema. DESCRIPTION: Long-barbel goatfish */ +/* Pristis pectinata. DESCRIPTION: Smalltooth sawfish */ +/* Rogadius prionotus. DESCRIPTION: Blackblotch flathead */ +/* Pristis pristis. DESCRIPTION: Common sawfish */ +/* Platyrhina sinensis. DESCRIPTION: */ +/* Platyrhinoidis triseriata. DESCRIPTION: Thornback guitarfish */ +/* Rhomboplites aurorubens. DESCRIPTION: Vermilion snapper */ +/* Rhaphiodon vulpinus. DESCRIPTION: Biara */ +/* Rapana venosa. DESCRIPTION: Thomas' rapa whelk */ +/* Parupeneus spp. DESCRIPTION: */ +/* Parupeneus cyclostomus. DESCRIPTION: Gold-saddle goatfish */ +/* Pristis zijsron. DESCRIPTION: Longcomb sawfish */ +/* Procambarus alleni. DESCRIPTION: Florida crayfish */ +/* Rexea bengalensis. DESCRIPTION: Bengal escolar */ +/* Protothaca columbiensis. DESCRIPTION: Columbian littleneck */ +/* Macrobrachium rathbunae. DESCRIPTION: Shortfinger river shrimp */ +/* Protothaca pectorina. DESCRIPTION: Brazilian comb venus */ +/* Parupeneus heptacanthus. DESCRIPTION: Cinnabar goatfish */ +/* Protothaca grata. DESCRIPTION: Lesser littleneck */ +/* Trochus hanleyanus. DESCRIPTION: Lined top */ +/* Rhopilema hispidum. DESCRIPTION: */ +/* Ronquilus jordani. DESCRIPTION: Northern ronquil */ +/* Trochus maculatus. DESCRIPTION: Maculated top */ +/* Trochus niloticus. DESCRIPTION: Commercial top */ +/* Rhopilema nomadica. DESCRIPTION: */ +/* Arca pacifica. DESCRIPTION: Chuchoca ark */ +/* Rapana rapiformis. DESCRIPTION: Turnish shaped rapa */ +/* Rhopilema asamushi. DESCRIPTION: */ +/* Protothaca tenerrima. DESCRIPTION: Thin-shelled littleneck */ +/* Rhopilema esculentum. DESCRIPTION: */ +/* Arca ventricosa. DESCRIPTION: Ventricose ark */ +/* Stomiidae. DESCRIPTION: */ +/* Arca zebra. DESCRIPTION: Turkey wing */ +/* Aptychotrema bougainvillii. DESCRIPTION: Short-snouted shovelnose ray */ +/* Rondeletia bicolor. DESCRIPTION: */ +/* Reganochromis calliurus. DESCRIPTION: */ +/* Paretroplus damii. DESCRIPTION: */ +/* Parahollardia lineata. DESCRIPTION: Jambeau */ +/* Rhamphocottus richardsoni. DESCRIPTION: Grunt sculpin */ +/* Regalecidae. DESCRIPTION: Oarfishes nei */ +/* Etrumeus teres. DESCRIPTION: Red-eye round herring */ +/* Crenicara filamentosa. DESCRIPTION: Chessboard cichlid */ +/* Protrachypene precipua. DESCRIPTION: Titi shrimp */ +/* Parribacus caledonicus. DESCRIPTION: Caledonian mitten lobster */ +/* Remorina albescens. DESCRIPTION: White suckerfish */ +/* Ruscarius meanyi. DESCRIPTION: Puget Sound sculpin */ +/* Parribacus antarcticus. DESCRIPTION: Sculptured mitten lobster */ +/* Rudarius ercodes. DESCRIPTION: Whitespotted pygmy filefish */ +/* Paraluteres prionurus. DESCRIPTION: False puffer */ +/* Retropinna retropinna. DESCRIPTION: Cucumberfish */ +/* Pleoticus robustus. DESCRIPTION: Royal red shrimp */ +/* Rita rita. DESCRIPTION: Rita */ +/* Elagatis bipinnulata. DESCRIPTION: Rainbow runner */ +/* Sebastes ruberrimus. DESCRIPTION: Yelloweye rockfish */ +/* Rioraja agassizi. DESCRIPTION: Rio skate */ +/* Serrasalmus spp. DESCRIPTION: */ +/* Rhina ancylostoma. DESCRIPTION: Bowmouth guitarfish */ +/* Rasbora tawarensis. DESCRIPTION: */ +/* Decapterus maruadsi. DESCRIPTION: Japanese scad */ +/* Risor ruber. DESCRIPTION: Tusked goby */ +/* Trachurus lathami. DESCRIPTION: Rough scad */ +/* Arctides antipodarum. DESCRIPTION: Rough spanish lobster */ +/* Scorpaena scrofa. DESCRIPTION: Red scorpionfish */ +/* Rasborichthys helfrichii. DESCRIPTION: */ +/* Rasbora elanga. DESCRIPTION: */ +/* Sicyonia brevirostris. DESCRIPTION: Rock shrimp */ +/* Labropsis alleni. DESCRIPTION: Allen's tubelip */ +/* Cristiceps aurantiacus. DESCRIPTION: Golden weedfish */ +/* Carcharhinidae. DESCRIPTION: Requiem sharks nei */ +/* Rasborinus lineatus. DESCRIPTION: */ +/* Parapsettus panamensis. DESCRIPTION: Panama spadefish */ +/* Chrysoblephus gibbiceps. DESCRIPTION: Red stumpnose seabream */ +/* Proterorhinus marmoratus. DESCRIPTION: Tubenose goby */ +/* Tetrapturus georgii. DESCRIPTION: Roundscale spearfish */ +/* Arenaeus cribrarius. DESCRIPTION: Speckled swimcrab */ +/* Rasbora rasbora. DESCRIPTION: Gangetic scissortail rasbora */ +/* Rhabdosargus sarba. DESCRIPTION: Goldlined seabream */ +/* Rasbora heteromorpha. DESCRIPTION: Harlequin rasbora */ +/* Rusichthys plesiomorphus. DESCRIPTION: */ +/* Rasbora einthovenii. DESCRIPTION: Brilliant rasbora */ +/* Lissodelphis peronii. DESCRIPTION: Southern right whale dolphin */ +/* Chrysoblephus spp. DESCRIPTION: Daggerhead breams nei */ +/* Sparisoma chrysopterum. DESCRIPTION: Redtail parrotfish */ +/* Rasbora argyrotaenia. DESCRIPTION: Silver rasbora */ +/* Ramnogaster arcuata. DESCRIPTION: Jenyns's sprat */ +/* Taeniura grabata. DESCRIPTION: Round stingray */ +/* Paracirrhites arcatus. DESCRIPTION: Arc-eye hawkfish */ +/* Steno bredanensis. DESCRIPTION: Rough-toothed dolphin */ +/* Taeniura meyeni. DESCRIPTION: Round ribbontail ray */ +/* Trygonorrhina fasciata. DESCRIPTION: Southern fiddler */ +/* Trygonorrhina guaneria. DESCRIPTION: */ +/* Rhabdosargus thorpei. DESCRIPTION: Bigeye stumpnose */ +/* Cryptacanthoides bergi. DESCRIPTION: */ +/* Trygonoptera javanica. DESCRIPTION: */ +/* Trygonoptera kaiana. DESCRIPTION: */ +/* Cryptacanthodes aleutensis. DESCRIPTION: Dwarf wrymouth */ +/* Trygonorrhina melaleuca. DESCRIPTION: Magpie fiddler ray */ +/* Paratilapia polleni. DESCRIPTION: */ +/* Trygonoptera ovalis. DESCRIPTION: Striped stingaree */ +/* Trygonoptera personata. DESCRIPTION: Masked stingaree */ +/* Portunus spinimanus. DESCRIPTION: Blotched swimming crab */ +/* Rutilus rubilio. DESCRIPTION: */ +/* Protomelas annectens. DESCRIPTION: */ +/* Asprotilapia leptura. DESCRIPTION: */ +/* Trygonoptera mucosa. DESCRIPTION: Western shovelnose stingaree */ +/* Ruditapes variegatus. DESCRIPTION: Variegated carpet shell */ +/* Prochaetoderma californicum. DESCRIPTION: Jawed solenogaster */ +/* Macrouridae. DESCRIPTION: Grenadiers, rattails nei */ +/* Taeniura lymma. DESCRIPTION: Ribbontail stingray */ +/* Cratinus agassizii. DESCRIPTION: Graery threadfin seabass */ +/* Urogymnus asperrimus. DESCRIPTION: Porcupine ray */ +/* Caranx crysos. DESCRIPTION: Blue runner */ +/* Urolophus bucculentus. DESCRIPTION: Sandyback stingaree */ +/* Ratabulus diversidens. DESCRIPTION: Orange-freckled flathead */ +/* Urolophus expansus. DESCRIPTION: Wide stingaree */ +/* Arripis georgianus. DESCRIPTION: Ruff */ +/* Urolophus gigas. DESCRIPTION: Spotted stingaree */ +/* Urolophus halleri. DESCRIPTION: Haller's round ray */ +/* Urolophus circularis. DESCRIPTION: Circular stingaree */ +/* Urolophus jamaicensis. DESCRIPTION: Yellow stingray */ +/* Urolophus mitosis. DESCRIPTION: Mitotic stingaree */ +/* Urolophus lobatus. DESCRIPTION: Lobed stingaree */ +/* Urolophus maculatus. DESCRIPTION: Spotted round ray */ +/* Urogymnus natalensis. DESCRIPTION: Butterfly ray */ +/* Urolophus concentricus. DESCRIPTION: Spot-on-spot round ray */ +/* Urolophus paucimaculatus. DESCRIPTION: Sparsely-spotted stingaree */ +/* Urolophus orarius. DESCRIPTION: Coastal stingaree */ +/* Urolophus armatus. DESCRIPTION: */ +/* Decapterus russelli. DESCRIPTION: Indian scad */ +/* Urolophus cruciatus. DESCRIPTION: Crossback stingaree */ +/* Urolophus aurantiacus. DESCRIPTION: */ +/* Urolophus flavomosaicus. DESCRIPTION: Patchwork stingaree */ +/* Urolophus westraliensis. DESCRIPTION: Brown stingaree */ +/* Urolophus sufflavus. DESCRIPTION: Yellowback stingaree */ +/* Urolophus testaceus. DESCRIPTION: Common stingaree */ +/* Urolophus viridis. DESCRIPTION: Greenback stingaree */ +/* Rhinoclavis aspera. DESCRIPTION: Rough vergatus */ +/* Sebastes babcocki. DESCRIPTION: Redbanded rockfish */ +/* Sebastes ciliatus. DESCRIPTION: Dusky rockfish */ +/* Pteraster rugatus. DESCRIPTION: */ +/* Rhinoclavis fasciata. DESCRIPTION: Banded vertagus */ +/* Sebastes helvomaculatus. DESCRIPTION: Rosethorn rockfish */ +/* Sebastes melanostomus. DESCRIPTION: Blackgill rockfish */ +/* Sebastes nebulosus. DESCRIPTION: China rockfish */ +/* Sebastes polyspinis. DESCRIPTION: Northern rockfish */ +/* Sebastes aurora. DESCRIPTION: Aurora rockfish */ +/* Rhinoclavis sinensis. DESCRIPTION: Obelisk vergatus */ +/* Sebastes saxicola. DESCRIPTION: Stripetail rockfish */ +/* Sebastes variegatus. DESCRIPTION: Harlequin rockfish */ +/* Rhinoclavis vertagus. DESCRIPTION: Common vergatus */ +/* Sebastes wilsoni. DESCRIPTION: Pygmy rockfish */ +/* Urolophus spp. DESCRIPTION: */ +/* Rivulus cylindraceus. DESCRIPTION: Green rivulus */ +/* Sebastes zacentrus. DESCRIPTION: Sharpchin rockfish */ +/* Dussumieria spp. DESCRIPTION: Rainbow sardines nei */ +/* Rutilus caspicus. DESCRIPTION: Caspian roach */ +/* Rasbora elegans. DESCRIPTION: Twospot rasbora */ +/* Semaprochilodus spp. DESCRIPTION: */ +/* Rexea antefurcata. DESCRIPTION: Long-finned escolar */ +/* Roeboexodon guyanensis. DESCRIPTION: */ +/* Rexichthys johnpaxtoni. DESCRIPTION: Paxton's escolar */ +/* Processa spp. DESCRIPTION: Processa shrimps nei */ +/* Strombus latus. DESCRIPTION: West African stromb */ +/* Staurocucumis liouvillei. DESCRIPTION: */ +/* Rexea prometheoides. DESCRIPTION: Royal escolar */ +/* Sclerasterias mollis. DESCRIPTION: Cross-fish */ +/* Strombus raninus. DESCRIPTION: Hawk-wing conch */ +/* Rhabdosargus haffara. DESCRIPTION: Haffara seabream */ +/* Strombus pugilis. DESCRIPTION: Fighting conch */ +/* Rexea spp. DESCRIPTION: */ +/* Argyrosomus spp. DESCRIPTION: Meagres nei */ +/* Rhytiodus argenteofuscus. DESCRIPTION: */ +/* Rhynchoconger brevirostris. DESCRIPTION: */ +/* Rypticus saponaceus. DESCRIPTION: Greater soapfish */ +/* Rhodymenichthys dolichogaster. DESCRIPTION: Stippled gunnel */ +/* Aetomylaeus vespertilio. DESCRIPTION: Ornate eagle ray */ +/* Raneya fluminensis. DESCRIPTION: */ +/* Plagiogeneion rubiginosum. DESCRIPTION: Rubyfish */ +/* Aetomylaeus niehofii. DESCRIPTION: Banded eagle ray */ +/* Rhycherus filamentosus. DESCRIPTION: Tasselled anglerfish */ +/* Argyrosomus japonicus. DESCRIPTION: Japanese meagre */ +/* Rosenblattichthys alatus. DESCRIPTION: */ +/* Aetomylaeus maculatus. DESCRIPTION: Mottled eagle ray */ +/* Corymbophanes andersoni. DESCRIPTION: */ +/* Rhynchactis leptonema. DESCRIPTION: */ +/* Corydoras paleatus. DESCRIPTION: Peppered corydoras */ +/* Serolis gracilis. DESCRIPTION: */ +/* Rhyacichthys aspro. DESCRIPTION: Loach goby */ +/* Rhamphocetichthys savagei. DESCRIPTION: */ +/* Rhynchogadus hepaticus. DESCRIPTION: */ +/* Corydoras aeneus. DESCRIPTION: Bronze corydoras */ +/* Aetomylaeus milvus. DESCRIPTION: */ +/* Rhynchocinetes typus. DESCRIPTION: Rabbitnose shrimp */ +/* Rhynchopelates oxyrhynchus. DESCRIPTION: */ +/* Argyrosomus amoyensis. DESCRIPTION: Amoy croaker */ +/* Brachypleura novaezeelandiae. DESCRIPTION: Yellow-dabbled flounder */ +/* Zapteryx exasperata. DESCRIPTION: Banded guitarfish */ +/* Zanobatus schoenleinii. DESCRIPTION: */ +/* Solenosmilia variabilis. DESCRIPTION: */ +/* Sympagurus dimorphus. DESCRIPTION: */ +/* Ranzania laevis. DESCRIPTION: Slender sunfish */ +/* Ricuzenius nudithorax. DESCRIPTION: */ +/* Sardinella aurita. DESCRIPTION: Round sardinella */ +/* Anoplopoma fimbria. DESCRIPTION: Sablefish */ +/* Phoca caspica. DESCRIPTION: Caspian seal */ +/* Aristostomias grimaldii. DESCRIPTION: */ +/* Sardinella maderensis. DESCRIPTION: Madeiran sardinella */ +/* Eleginus gracilis. DESCRIPTION: Saffron cod */ +/* Sardinella gibbosa. DESCRIPTION: Goldstripe sardinella */ +/* Sarotherodon melanotheron. DESCRIPTION: Blackchin tilapia */ +/* Istiophorus albicans. DESCRIPTION: Atlantic sailfish */ +/* Acantholingua ohridana. DESCRIPTION: */ +/* Sabanejewia balcanica. DESCRIPTION: */ +/* Salmo salar. DESCRIPTION: Atlantic salmon */ +/* Sardinella lemuru. DESCRIPTION: Bali sardinella */ +/* Ammodytes spp. DESCRIPTION: Sandeels(=Sandlances) nei */ +/* Salilota australis. DESCRIPTION: Tadpole codling */ +/* Cololabis saira. DESCRIPTION: Pacific saury */ +/* Anarchopterus criniger. DESCRIPTION: Fringed pipefish */ +/* Sarotherodon galilaeus. DESCRIPTION: Mango tilapia */ +/* Harengula spp. DESCRIPTION: Scaled sardines */ +/* Scomberesox saurus. DESCRIPTION: Atlantic saury */ +/* Sander volgensis. DESCRIPTION: Volga pikeperch */ +/* Pristidae. DESCRIPTION: Sawfishes */ +/* Scomberesocidae. DESCRIPTION: Sauries nei */ +/* Steindachneridion amblyurua. DESCRIPTION: */ +/* Solenocera alfonso. DESCRIPTION: Deep-water mud shrimp */ +/* Pagellus acarne. DESCRIPTION: Axillary seabream */ +/* Stomias boa. DESCRIPTION: Boa dragonfish */ +/* Sebastes paucispinis. DESCRIPTION: Bocaccio rockfish */ +/* Spinibarbus denticulatus. DESCRIPTION: */ +/* Brachymystax lenok. DESCRIPTION: Lenok */ +/* Thunnus maccoyii. DESCRIPTION: Southern bluefin tuna */ +/* Sparus aurata. DESCRIPTION: Gilthead seabream */ +/* Morone chrysops x M. saxatilis. DESCRIPTION: Striped bass, hybrid */ +/* Belodontichthys dinema. DESCRIPTION: */ +/* Scorpaena brasiliensis. DESCRIPTION: Barbfish */ +/* Phoca sibirica. DESCRIPTION: Baikal seal */ +/* Hexanchus griseus. DESCRIPTION: Bluntnose sixgill shark */ +/* Sorubim lima. DESCRIPTION: Duckbill catfish */ +/* Scopelogadus beanii. DESCRIPTION: */ +/* Sorubim latirostris. DESCRIPTION: */ +/* Pagrus spp. DESCRIPTION: Pargo breams nei */ +/* Sarcothalia crispata. DESCRIPTION: */ +/* Pagellus bogaraveo. DESCRIPTION: Blackspot(=red) seabream */ +/* Oblada melanura. DESCRIPTION: Saddled seabream */ +/* Polysteganus coeruleopunctatus. DESCRIPTION: Blueskin seabream */ +/* Suggrundus brevirostris. DESCRIPTION: */ +/* Lithognathus aureti. DESCRIPTION: West coast seabream */ +/* Sparidae. DESCRIPTION: Porgies, seabreams nei */ +/* Sebastes brevispinis. DESCRIPTION: Silvergray rockfish */ +/* Diplodus cervinus. DESCRIPTION: Zebra seabream */ +/* Placopecten magellanicus. DESCRIPTION: American sea scallop */ +/* Argopecten irradians. DESCRIPTION: Atlantic bay scallop */ +/* Argopecten gibbus. DESCRIPTION: Calico scallop */ +/* Portunus pelagicus. DESCRIPTION: Blue swimming crab */ +/* Pecten maximus. DESCRIPTION: Great Atlantic scallop */ +/* Scophthalmidae. DESCRIPTION: Turbots nei */ +/* Patinopecten caurinus. DESCRIPTION: Weathervane scallop */ +/* Argopecten ventricosus. DESCRIPTION: Pacific calico scallop */ +/* Sternarchogiton cuchillejo. DESCRIPTION: */ +/* Dalatias licha. DESCRIPTION: Kitefin shark */ +/* Scyliorhinus spp. DESCRIPTION: Catsharks, nursehounds nei */ +/* Polysteganus praeorbitalis. DESCRIPTION: Scotsman seabream */ +/* Siganus canaliculatus. DESCRIPTION: White-spotted spinefoot */ +/* Scorpaenidae. DESCRIPTION: Scorpionfishes nei */ +/* Stenotomus chrysops. DESCRIPTION: Scup */ +/* Argopecten purpuratus. DESCRIPTION: Peruvian calico scallop */ +/* Maja squinado. DESCRIPTION: Spinous spider crab */ +/* Scorpaena spp. DESCRIPTION: Scorpionfishes, rockfishes nei */ +/* Scatophagus spp. DESCRIPTION: Scats */ +/* Myoxocephalus spp. DESCRIPTION: Sculpins */ +/* Steindachnerina varii. DESCRIPTION: */ +/* Pachystomias microdon. DESCRIPTION: */ +/* Pectinidae. DESCRIPTION: Scallops nei */ +/* Scyllarus arctus. DESCRIPTION: Lesser slipper lobster */ +/* Pecten novaezelandiae. DESCRIPTION: New Zealand scallop */ +/* Dysomma anguillare. DESCRIPTION: Shortbelly eel */ +/* Sardinella albella. DESCRIPTION: White sardinella */ +/* Diastobranchus capensis. DESCRIPTION: Basketwork eel */ +/* Saccodon dariensis. DESCRIPTION: */ +/* Sparodon durbanensis. DESCRIPTION: Musselcracker seabream */ +/* Lepidopus fitchi. DESCRIPTION: Pacific scabbardfish */ +/* Stypodon signifer. DESCRIPTION: Stumptooth minnow */ +/* Deania hystricosa. DESCRIPTION: Rough longnose dogfish */ +/* Sardinella sindensis. DESCRIPTION: Sind sardinella */ +/* Sardinella jussieui. DESCRIPTION: Mauritian sardinella */ +/* Scalpellidae. DESCRIPTION: Scalpellidae barnacles nei */ +/* Stenodus leucichthys. DESCRIPTION: Sheefish */ +/* Sardinella melanura. DESCRIPTION: Blacktip sardinella */ +/* Sardinella neglecta. DESCRIPTION: East African sardinella */ +/* Danaphos oculatus. DESCRIPTION: Bottlelights */ +/* Mustelus schmitti. DESCRIPTION: Narrownose smooth-hound */ +/* Deania quadrispinosa. DESCRIPTION: Longsnout dogfish */ +/* Synodus saurus. DESCRIPTION: Atlantic lizardfish */ +/* Mustelus asterias. DESCRIPTION: Starry smooth-hound */ +/* Sciadeops troschelii. DESCRIPTION: Chili sea catfish */ +/* Deania profundorum. DESCRIPTION: Arrowhead dogfish */ +/* Mustelus spp. DESCRIPTION: Smooth-hounds nei */ +/* Sciades dowii. DESCRIPTION: Brown sea catfish */ +/* Decapterus spp. DESCRIPTION: Scads nei */ +/* Sardinella brachysoma. DESCRIPTION: Deepbody sardinella */ +/* Seriatopora caliendrum. DESCRIPTION: Birdsnest coral */ +/* Arctocephalus gazella. DESCRIPTION: Antarctic fur seal */ +/* Erignathus barbatus. DESCRIPTION: Bearded seal */ +/* Phoca vitulina. DESCRIPTION: Harbour seal */ +/* Sebastes serranoides. DESCRIPTION: Olive rockfish */ +/* Argyropelecus aculeatus. DESCRIPTION: */ +/* Arctocephalus australis. DESCRIPTION: South American fur seal */ +/* Halichoerus grypus. DESCRIPTION: Grey seal */ +/* Phoca groenlandica. DESCRIPTION: Harp seal */ +/* Seriolella violacea. DESCRIPTION: Palm ruff */ +/* Sebastes minor. DESCRIPTION: */ +/* Arctocephalus pusillus. DESCRIPTION: South African fur seal */ +/* Otaria flavescens. DESCRIPTION: South American sea lion */ +/* Seriolella brama. DESCRIPTION: Common warehou */ +/* Callorhinus ursinus. DESCRIPTION: Northern fur seal */ +/* Seriolella porosa. DESCRIPTION: Choicy ruff */ +/* Seriolella punctata. DESCRIPTION: Silver warehou */ +/* Sebastes rosaceus. DESCRIPTION: Rosy rockfish */ +/* Phoca hispida. DESCRIPTION: Ringed seal */ +/* Mirounga leonina. DESCRIPTION: Southern elephant seal */ +/* Lobodon carcinophagus. DESCRIPTION: Crabeater seal */ +/* Seriolella caerulea. DESCRIPTION: White warehou */ +/* Polysteganus undulosus. DESCRIPTION: Seventyfour seabream */ +/* Trichechus inunguis. DESCRIPTION: Amazonian manatee */ +/* Eurypharynx pelecanoides. DESCRIPTION: Pelican eel */ +/* Schedophilus velaini. DESCRIPTION: Violet warehou */ +/* Cystophora cristata. DESCRIPTION: Hooded seal */ +/* Istiophorus platypterus. DESCRIPTION: Indo-Pacific sailfish */ +/* Sebastes borealis. DESCRIPTION: Shortraker rockfish */ +/* Salmo carpio. DESCRIPTION: */ +/* Sebastes diploproa. DESCRIPTION: Splitnose rockfish */ +/* Sebastes elongatus. DESCRIPTION: Greenstriped rockfish */ +/* Salmo fibreni. DESCRIPTION: */ +/* Sebastes maliger. DESCRIPTION: Quillback rockfish */ +/* Sebastiscus marmoratus. DESCRIPTION: */ +/* Salmo ischchan. DESCRIPTION: Sevan trout */ +/* Sebastes caurinus. DESCRIPTION: Copper rockfish */ +/* Sebastes jordani. DESCRIPTION: Shortbelly rockfish */ +/* Sebastes schlegeli. DESCRIPTION: Korean rockfish */ +/* Salmo marmoratus. DESCRIPTION: */ +/* Diretmichthys parini. DESCRIPTION: Parin's spinyfish */ +/* Sebastes constellatus. DESCRIPTION: Starry rockfish */ +/* Sebastes serriceps. DESCRIPTION: Treefish */ +/* Sebastes inermis. DESCRIPTION: */ +/* Syngnathus rostellatus. DESCRIPTION: Nilsson's pipefish */ +/* Lepidopus caudatus. DESCRIPTION: Silver scabbardfish */ +/* Sebastes aleutianus. DESCRIPTION: Rougheye rockfish */ +/* Sigmistes caulias. DESCRIPTION: Kelp sculpin */ +/* Sebastes viviparus. DESCRIPTION: Norway redfish */ +/* Sebastes miniatus. DESCRIPTION: Vermilion rockfish */ +/* Salmo ferox. DESCRIPTION: */ +/* Sebastes mystinus. DESCRIPTION: Blue rockfish */ +/* Sebastes taczanowskii. DESCRIPTION: */ +/* Arctocephalus galapagoensis. DESCRIPTION: Galapagos fur seal */ +/* Scaphognathops bandanensis. DESCRIPTION: */ +/* Sternopygus macrurus. DESCRIPTION: Longtail knifefish */ +/* Solegnathus dunckeri. DESCRIPTION: */ +/* Stygnobrotula latebricola. DESCRIPTION: */ +/* Arctocephalus townsendi. DESCRIPTION: Guadalupe fur seal */ +/* Sphagemacrurus grenadae. DESCRIPTION: */ +/* Stigmatopora argus. DESCRIPTION: Spotted pipefish */ +/* Pseudochaenichthys georgianus. DESCRIPTION: South Georgia icefish */ +/* Syngnathoides biaculeatus. DESCRIPTION: Alligator pipefish */ +/* Psammogobius knysnaensis. DESCRIPTION: */ +/* Scalanago lateralis. DESCRIPTION: */ +/* Sarcoglanis simplex. DESCRIPTION: */ +/* Scorpaena grandicornis. DESCRIPTION: Plumed scorpionfish */ +/* Sebastes goodei. DESCRIPTION: Chilipepper rockfish */ +/* Syngnathus phlegon. DESCRIPTION: */ +/* Syngnathus acus. DESCRIPTION: Greater pipefish */ +/* Strongylura timucu. DESCRIPTION: Timucu */ +/* Ceratoglanis scleronema. DESCRIPTION: */ +/* Sternopygus astrabes. DESCRIPTION: */ +/* Siganus guttatus. DESCRIPTION: Goldlined spinefoot */ +/* Scaturiginichthys vermeilipinnis. DESCRIPTION: Redfinned blue-eye */ +/* Scolichthys greenwayi. DESCRIPTION: */ +/* Solen gordonis. DESCRIPTION: Akemate razor shell */ +/* Strongylura strongylura. DESCRIPTION: Spottail needlefish */ +/* Scorpaena guttata. DESCRIPTION: California scorpionfish */ +/* Alosa sapidissima. DESCRIPTION: American shad */ +/* Echinorhinus brucus. DESCRIPTION: Bramble shark */ +/* Alosa pontica. DESCRIPTION: Pontic shad */ +/* Alosa alosa, A. fallax. DESCRIPTION: Allis and twaite shads */ +/* Alosa maeotica. DESCRIPTION: Black Sea shad */ +/* Spiniphryne gladisfenae. DESCRIPTION: */ +/* Dorosoma cepedianum. DESCRIPTION: American gizzard shad */ +/* Alosa mediocris. DESCRIPTION: Hickory shad */ +/* Metapenaeus joyneri. DESCRIPTION: Shiba shrimp */ +/* Stegophilus insidiosus. DESCRIPTION: */ +/* Etmopterus spp. DESCRIPTION: Lanternsharks nei */ +/* Grammatorcynus bicarinatus. DESCRIPTION: Shark mackerel */ +/* Schroederichthys tenuis. DESCRIPTION: Slender catshark */ +/* Galeus melastomus. DESCRIPTION: Blackmouth catshark */ +/* Sarcocheilichthys nigripinnis. DESCRIPTION: Rainbow gudgeon */ +/* Syngnathus abaster. DESCRIPTION: */ +/* Diplodus puntazzo. DESCRIPTION: Sharpsnout seabream */ +/* Sergestidae. DESCRIPTION: Sergestid shrimps nei */ +/* Schroederichthys maculatus. DESCRIPTION: Narrowtail catshark */ +/* Schroederichthys bivius. DESCRIPTION: Narrowmouthed catshark */ +/* Globicephala macrorhynchus. DESCRIPTION: Short-finned pilot whale */ +/* Squaliformes. DESCRIPTION: Dogfish sharks, etc. nei */ +/* Schroederichthys chilensis. DESCRIPTION: Redspotted catshark */ +/* Alosa spp. DESCRIPTION: Shads nei */ +/* Stolothrissa tanganicae. DESCRIPTION: Lake Tanganyika sprat */ +/* Ilyophis brunneus. DESCRIPTION: Muddy arrowtooth eel */ +/* Drepane africana. DESCRIPTION: African sicklefish */ +/* Scopelarchoides danae. DESCRIPTION: */ +/* Scomberomorus sierra. DESCRIPTION: Pacific sierra */ +/* Smithichthys fucorum. DESCRIPTION: Leafy klipfish */ +/* Steindachneria argentea. DESCRIPTION: Luminous hake */ +/* Sorubimichthys planiceps. DESCRIPTION: Firewood catfish */ +/* Sorubim trigonocephalus. DESCRIPTION: */ +/* Sillaginopsis panijus. DESCRIPTION: Flathead sillago */ +/* Sio nordenskjoeldii. DESCRIPTION: */ +/* Atherinidae. DESCRIPTION: Silversides(=Sand smelts) nei */ +/* Scopelopsis multipunctatus. DESCRIPTION: */ +/* Siniperca chuatsi. DESCRIPTION: Mandarin fish */ +/* Chirostomias pliopterus. DESCRIPTION: */ +/* Pampus argenteus. DESCRIPTION: Silver pomfret */ +/* Scorpaena histrio. DESCRIPTION: Player scorpionfish */ +/* Spratellicypris palata. DESCRIPTION: */ +/* Sipunculus nudus. DESCRIPTION: Peanut worm */ +/* Sillaginodes punctata. DESCRIPTION: Spotted sillago */ +/* Balaenoptera borealis. DESCRIPTION: Sei whale */ +/* Sardinella spp. DESCRIPTION: Sardinellas nei */ +/* Sudis hyalina. DESCRIPTION: */ +/* Spirulina spp. DESCRIPTION: Spirulina nei */ +/* Pecten jacobaeus. DESCRIPTION: Great Mediterranean scallop */ +/* Sebastapistes ballieui. DESCRIPTION: Spotfin scorpionfish */ +/* Scorpaenopsis cacopsis. DESCRIPTION: Jenkin's scorpionfish */ +/* Tadorna tadorna. DESCRIPTION: Common shelduck */ +/* Symphorus nematophorus. DESCRIPTION: Chinamanfish */ +/* Arctocephalus philippii. DESCRIPTION: Juan Fernandez fur seal */ +/* Scorpaenopsis gibbosa. DESCRIPTION: Humpbacked scorpionfish */ +/* Scorpaenopsis cirrhosa. DESCRIPTION: Weedy stingfish */ +/* Sciaenochromis ahli. DESCRIPTION: Electric blue hap */ +/* Scartichthys gigas. DESCRIPTION: Giant blenny */ +/* Solenocera geijskesi. DESCRIPTION: Guiana mud shrimp */ +/* Synanceia alula. DESCRIPTION: */ +/* Similiparma hermani. DESCRIPTION: Cape damsel */ +/* Stelgistrum stejnegeri. DESCRIPTION: */ +/* Solenocera florea. DESCRIPTION: Flower shrimp */ +/* Caspiosoma caspium. DESCRIPTION: */ +/* Solenocera pectinulata. DESCRIPTION: False comb shrimp */ +/* Solenocera alticarinata. DESCRIPTION: High ridge mud shrimp */ +/* Symphorichthys spilurus. DESCRIPTION: Sailfin snapper */ +/* Stereomastis sculpta. DESCRIPTION: */ +/* Sebastolobus alascanus. DESCRIPTION: Shortspine thornyhead */ +/* Stethojulis albovittata. DESCRIPTION: Bluelined wrasse */ +/* Sebastolobus macrochir. DESCRIPTION: Broadbanded thornyhead */ +/* Sclerocrangon atrox. DESCRIPTION: Four-spines nutshell shrimp */ +/* Seriatopora hystrix. DESCRIPTION: Thin birdsnest coral */ +/* Sebastolobus altivelis. DESCRIPTION: Longspine thornyhead */ +/* Raja spp. DESCRIPTION: Raja rays nei */ +/* Gasterosteus spp. DESCRIPTION: Sticklebacks */ +/* Monachus tropicalis. DESCRIPTION: Caribbean monk seal */ +/* Neoepinnula orientalis. DESCRIPTION: Sackfish */ +/* Solenocera pectinata. DESCRIPTION: Comb shrimp */ +/* Solenocera africana. DESCRIPTION: African mud shrimp */ +/* Sikukia gudgeri. DESCRIPTION: */ +/* Selachimorpha (Pleurotremata). DESCRIPTION: Various sharks nei */ +/* Semaprochilodus insignis. DESCRIPTION: */ +/* Katsuwonus pelamis. DESCRIPTION: Skipjack tuna */ +/* Solenocera choprai. DESCRIPTION: Ridgeback shrimp */ +/* Scobinichthys granulatus. DESCRIPTION: Rough leatherjackets */ +/* Solenocera membranacea. DESCRIPTION: Atlantic mud shrimp */ +/* Stokellia anisodon. DESCRIPTION: Stokell's smelt */ +/* Solenocera koelbeli. DESCRIPTION: Chinese mud shrimp */ +/* Schindleria praematura. DESCRIPTION: */ +/* Solenocera australiana. DESCRIPTION: Australia mus shrimp */ +/* Synchiropus agassizi. DESCRIPTION: Spotfin dragonet */ +/* Starksia atlantica. DESCRIPTION: */ +/* Siokunichthys bentuviai. DESCRIPTION: */ +/* Scortum parviceps. DESCRIPTION: Small-headed grunter */ +/* Solenocera halli. DESCRIPTION: Malayan mud shrimp */ +/* Elasmobranchii. DESCRIPTION: Sharks, rays, skates, etc. nei */ +/* Syncomistes kimberleyensis. DESCRIPTION: Kimberley grunter */ +/* Scoliodon laticaudus. DESCRIPTION: Spadenose shark */ +/* Salmostoma bacaila. DESCRIPTION: Large razorbelly minnow */ +/* Panulirus argus. DESCRIPTION: Caribbean spiny lobster */ +/* Cheimerius nufar. DESCRIPTION: Santer seabream */ +/* Salvelinus leucomaenis. DESCRIPTION: */ +/* Argyrozona argyrozona. DESCRIPTION: Carpenter seabream */ +/* Securicula gora. DESCRIPTION: */ +/* Scopelosaurus hamiltoni. DESCRIPTION: */ +/* Molva macrophthalma. DESCRIPTION: Spanish ling */ +/* Soleichthys siammakuti. DESCRIPTION: */ +/* Sillago ciliata. DESCRIPTION: Sand sillago */ +/* Chrysoblephus puniceus. DESCRIPTION: Slinger seabream */ +/* Sarpa salpa. DESCRIPTION: Salema */ +/* Palinurus delagoae. DESCRIPTION: Natal spiny lobster */ +/* Palinurus elephas. DESCRIPTION: Common spiny lobster */ +/* Hydrurga leptonyx. DESCRIPTION: Leopard seal */ +/* Scorpaena laevis. DESCRIPTION: Senegalese rockfish */ +/* Phoca fasciata. DESCRIPTION: Ribbon seal */ +/* Palinurus gilchristi. DESCRIPTION: Southern spiny lobster */ +/* Allothunnus fallai. DESCRIPTION: Slender tuna */ +/* Stenobrachius leucopsarus. DESCRIPTION: Northern lampfish */ +/* Panulirus spp. DESCRIPTION: Tropical spiny lobsters nei */ +/* Leptonychotes weddellii. DESCRIPTION: Weddell seal */ +/* Salmonoidei. DESCRIPTION: Salmonoids nei */ +/* Solenostomus cyanopterus. DESCRIPTION: Ghost pipefish */ +/* Salmonidae. DESCRIPTION: Salmonids nei */ +/* Isurus oxyrinchus. DESCRIPTION: Shortfin mako */ +/* Systomus brevis. DESCRIPTION: */ +/* Arius heudelotii. DESCRIPTION: Smoothmouth sea catfish */ +/* Mustelus mustelus. DESCRIPTION: Smooth-hound */ +/* Osmerus eperlanus. DESCRIPTION: European smelt */ +/* Monognathus ahlstromi. DESCRIPTION: Paddletail onejaw */ +/* Monachus schauinslandi. DESCRIPTION: Hawaiian monk seal */ +/* Scleronema minutum. DESCRIPTION: */ +/* Stlengis misakia. DESCRIPTION: */ +/* Sternarchorhamphus muelleri. DESCRIPTION: */ +/* Monachus monachus. DESCRIPTION: Mediterranean monk seal */ +/* Semilabeo notabilis. DESCRIPTION: */ +/* Spectrolebias semiocellatus. DESCRIPTION: */ +/* Symbolophorus barnardi. DESCRIPTION: */ +/* Scorpaenichthys marmoratus. DESCRIPTION: Cabezon */ +/* Osmerus mordax. DESCRIPTION: Rainbow smelt */ +/* Saccoderma melanostigma. DESCRIPTION: */ +/* Semotilus atromaculatus. DESCRIPTION: Creek chub */ +/* Stomias brevibarbatus. DESCRIPTION: */ +/* Scorpaena plumieri. DESCRIPTION: Pacific spotted scorpionfish */ +/* Osmerus spp, Hypomesus spp. DESCRIPTION: Smelts nei */ +/* Meadia abyssalis. DESCRIPTION: */ +/* Solenocera mutator. DESCRIPTION: Blossom shrimp */ +/* Lutjanus spp. DESCRIPTION: Snappers nei */ +/* Snyderidia bothrops. DESCRIPTION: */ +/* Lutjanus purpureus. DESCRIPTION: Southern red snapper */ +/* Sinilabeo decorus. DESCRIPTION: */ +/* Concholepas concholepas. DESCRIPTION: False abalone */ +/* Stenatherina panatela. DESCRIPTION: Panatella silverside */ +/* Stemonosudis elegans. DESCRIPTION: */ +/* Salangichthys ishikawae. DESCRIPTION: */ +/* Macroramphosidae. DESCRIPTION: Snipefishes nei */ +/* Neosalanx jordani. DESCRIPTION: */ +/* Thyrsites atun. DESCRIPTION: Snoek */ +/* Lutjanus synagris. DESCRIPTION: Lane snapper */ +/* Sinibrama macrops. DESCRIPTION: */ +/* Salanx ariakensis. DESCRIPTION: */ +/* Centropomus undecimalis. DESCRIPTION: Common snook */ +/* Mirounga angustirostris. DESCRIPTION: Northern elephant seal */ +/* Scorpaena notata. DESCRIPTION: Small red scorpionfish */ +/* Lutjanus campechanus. DESCRIPTION: Northern red snapper */ +/* Macroramphosus scolopax. DESCRIPTION: Longspine snipefish */ +/* Sinocyclocheilus anatirostris. DESCRIPTION: */ +/* Lutjanus russelli. DESCRIPTION: Russell's snapper */ +/* Sanagia velifera. DESCRIPTION: */ +/* Lithognathus lithognathus. DESCRIPTION: White steenbras */ +/* Lutjanidae. DESCRIPTION: Snappers, jobfishes nei */ +/* Ocyurus chrysurus. DESCRIPTION: Yellowtail snapper */ +/* Arctocephalus forsteri. DESCRIPTION: New Zealand fur seal */ +/* Austroglossus spp. DESCRIPTION: Southeast Atlantic soles nei */ +/* Salmothymus obtusirostris. DESCRIPTION: Adriatic trout */ +/* Oncorhynchus nerka. DESCRIPTION: Sockeye(=Red) salmon */ +/* Sisor rabdophorus. DESCRIPTION: */ +/* Austroglossus pectoralis. DESCRIPTION: Mud sole */ +/* Scorpaenodes africanus. DESCRIPTION: */ +/* Somileptes gongota. DESCRIPTION: */ +/* Stenotomus caprinus. DESCRIPTION: Longspine porgy */ +/* Solenidae. DESCRIPTION: Razor clams, knife clams nei */ +/* Solenocera crassicornis. DESCRIPTION: Coastal mud shrimp */ +/* Solenocera agassizii. DESCRIPTION: Kolibri shrimp */ +/* Solea solea. DESCRIPTION: Common sole */ +/* Silurus glanis. DESCRIPTION: Wels(=Som) catfish */ +/* Somniosus pacificus. DESCRIPTION: Pacific sleeper shark */ +/* Solea spp. DESCRIPTION: */ +/* Penaeus notialis. DESCRIPTION: Southern pink shrimp */ +/* Scorpaena sonorae. DESCRIPTION: Sonora scorpionfish */ +/* Somniosus rostratus. DESCRIPTION: Little sleeper shark */ +/* Solea lascaris. DESCRIPTION: Sand sole */ +/* Psettodes belcheri. DESCRIPTION: Spottail spiny turbot */ +/* Selachophidium guentheri. DESCRIPTION: Barbed brotula */ +/* Scorpaenodes parvipinnis. DESCRIPTION: Lowfin scorpionfish */ +/* Austroglossus microlepis. DESCRIPTION: West coast sole */ +/* Soleidae. DESCRIPTION: Soles nei */ +/* Chelon haematocheilus. DESCRIPTION: So-iny (redlip) mullet */ +/* Solenoceridae. DESCRIPTION: Solenocerid shrimps nei */ +/* Ephippidae. DESCRIPTION: Spadefishes nei */ +/* Spicara smaris. DESCRIPTION: Picarel */ +/* Spratelloides delicatulus. DESCRIPTION: Delicate round herring */ +/* Sphyrna media. DESCRIPTION: Scoophead */ +/* Tetrapturus pfluegeri. DESCRIPTION: Longbill spearfish */ +/* Sebastes pinniger. DESCRIPTION: Canary rockfish */ +/* Archosargus probatocephalus. DESCRIPTION: Sheepshead */ +/* Siganus spp. DESCRIPTION: Spinefeet(=Rabbitfishes) nei */ +/* Sphyrna tiburo. DESCRIPTION: Bonnethead */ +/* Sphyrna mokarran. DESCRIPTION: Great hammerhead */ +/* Sphyrna lewini. DESCRIPTION: Scalloped hammerhead */ +/* Sphyrna spp. DESCRIPTION: Hammerhead sharks nei */ +/* Spongiidae. DESCRIPTION: Sponges */ +/* Phocaena dioptrica. DESCRIPTION: Spectacled porpoise */ +/* Sphyrna tudes. DESCRIPTION: Smalleye hammerhead */ +/* Sprattus sprattus. DESCRIPTION: European sprat */ +/* Drepane punctata. DESCRIPTION: Spotted sicklefish */ +/* Leiostomus xanthurus. DESCRIPTION: Spot croaker */ +/* Dicentrarchus punctatus. DESCRIPTION: Spotted seabass */ +/* Sphyrna couardi. DESCRIPTION: Whitefin hammerhead */ +/* Physeter macrocephalus. DESCRIPTION: Sperm whale */ +/* Salpidae. DESCRIPTION: Salps */ +/* Sphyrnidae. DESCRIPTION: Hammerhead sharks, etc. nei */ +/* Sphyrna zygaena. DESCRIPTION: Smooth hammerhead */ +/* Illex argentinus. DESCRIPTION: Argentine shortfin squid */ +/* Squalidus biwae. DESCRIPTION: */ +/* Loligo spp. DESCRIPTION: Common squids nei */ +/* Solen cylindraceus. DESCRIPTION: Cylindrical razor shell */ +/* Todarodes sagittatus. DESCRIPTION: European flying squid */ +/* Loligo forbesi. DESCRIPTION: Veined squid */ +/* Todarodes angolensis. DESCRIPTION: Angolan flying squid */ +/* Solenocera melantho. DESCRIPTION: Razor mud shrimp */ +/* Illex illecebrosus. DESCRIPTION: Northern shortfin squid */ +/* Todarodes pacificus. DESCRIPTION: Japanese flying squid */ +/* Squaliobarbus curriculus. DESCRIPTION: */ +/* Loligo pealeii. DESCRIPTION: Longfin squid */ +/* Illex coindetii. DESCRIPTION: Broadtail shortfin squid */ +/* Loligo opalescens. DESCRIPTION: Opalescent inshore squid */ +/* Loligo gahi. DESCRIPTION: Patagonian squid */ +/* Loligo vulgaris. DESCRIPTION: European squid */ +/* Martialia hyadesi. DESCRIPTION: Sevenstar flying squid */ +/* Lolliguncula spp. DESCRIPTION: Thumbstall squids nei */ +/* Loliginidae, Ommastrephidae. DESCRIPTION: Various squids nei */ +/* Solen strictus. DESCRIPTION: Gould's razor shell */ +/* Stauropathes arctica. DESCRIPTION: */ +/* Squillidae. DESCRIPTION: Squillids nei */ +/* Loliginidae. DESCRIPTION: Inshore squids nei */ +/* Prionotus spp. DESCRIPTION: Atlantic searobins */ +/* Spratellomorpha bianalis. DESCRIPTION: Two-finned round herring */ +/* Sectoria atriceps. DESCRIPTION: */ +/* Serrasalmus brandti. DESCRIPTION: White piranha */ +/* Scardinius erythrophthalmus. DESCRIPTION: Rudd */ +/* Sarritor frenatus. DESCRIPTION: Sawback poacher */ +/* Diplodus spp. DESCRIPTION: Sargo breams nei */ +/* Spratelloides gracilis. DESCRIPTION: Silver-stripe round herring */ +/* Siganus rivulatus. DESCRIPTION: Marbled spinefoot */ +/* Serranus hepatus. DESCRIPTION: Brown comber */ +/* Serranus scriba. DESCRIPTION: Painted comber */ +/* Sierrathrissa leonensis. DESCRIPTION: West African pygmy herring */ +/* Serrasalmus rhombeus. DESCRIPTION: Redeye piranha */ +/* Argyripnus atlanticus. DESCRIPTION: */ +/* Silurus asotus. DESCRIPTION: Amur catfish */ +/* Sardinops neopilchardus. DESCRIPTION: Australian pilchard */ +/* Sorsogona prionota. DESCRIPTION: Halfspined flathead */ +/* Raja georgiana. DESCRIPTION: Antarctic starry skate */ +/* Ommatophoca rossii. DESCRIPTION: Ross seal */ +/* Schismatorhynchos heterorhynchos. DESCRIPTION: */ +/* Serrasalmus elongatus. DESCRIPTION: Slender piranha */ +/* Sternarchella curvioperculata. DESCRIPTION: */ +/* Hyperoodon planifrons. DESCRIPTION: Southern bottlenose whale */ +/* Rajiformes. DESCRIPTION: Rays, stingrays, mantas nei */ +/* Satyrichthys adeni. DESCRIPTION: */ +/* Semele radiata. DESCRIPTION: Radiate semele */ +/* Menidia menidia. DESCRIPTION: Atlantic silverside */ +/* Lithognathus mormyrus. DESCRIPTION: Sand steenbras */ +/* Pecten fumatus. DESCRIPTION: Southern Australia scallop */ +/* Spisula spp. DESCRIPTION: Surf clams nei */ +/* Pyura chilensis. DESCRIPTION: Red sea squirt */ +/* Arctocephalus tropicalis. DESCRIPTION: Subantarctic fur seal */ +/* Microcosmus sulcatus. DESCRIPTION: Grooved sea squirt */ +/* Plesiopenaeus edwardsianus. DESCRIPTION: Scarlet shrimp */ +/* Chaenocephalus aceratus. DESCRIPTION: Blackfin icefish */ +/* Syngnathus schmidti. DESCRIPTION: */ +/* Synaphobranchus kaupii. DESCRIPTION: Kaup's arrowtooth eel */ +/* Eumetopias jubatus. DESCRIPTION: Steller sea lion */ +/* Scomberomorus maculatus. DESCRIPTION: Atlantic Spanish mackerel */ +/* Sphyrna corona. DESCRIPTION: Scalloped bonnethead */ +/* Pseudocyttus maculatus. DESCRIPTION: Smooth oreo dory */ +/* Tetrapturus angustirostris. DESCRIPTION: Shortbill spearfish */ +/* Scymnodon squamulosus. DESCRIPTION: Velvet dogfish */ +/* Pyura stolonifera. DESCRIPTION: Red bait */ +/* Serrasalmus spilopleura. DESCRIPTION: Speckled piranha */ +/* Phoca largha. DESCRIPTION: Larga seal */ +/* Semaprochilodus taeniurus. DESCRIPTION: Silver prochilodus */ +/* Satyrichthys investigatoris. DESCRIPTION: */ +/* Scorpaena angolensis. DESCRIPTION: Angola rockfish */ +/* Ascidiacea. DESCRIPTION: Sea squirts nei */ +/* Sciades herzbergii. DESCRIPTION: Pemecou sea catfish */ +/* Oreochromis andersonii. DESCRIPTION: Three spotted tilapia */ +/* Morone saxatilis. DESCRIPTION: Striped bass */ +/* Menippe mercenaria. DESCRIPTION: Black stone crab */ +/* Steatogenys duidae. DESCRIPTION: */ +/* Asteroidea. DESCRIPTION: Starfishes nei */ +/* Cynoscion regalis. DESCRIPTION: Squeteague(=Gray weakfish) */ +/* Asterias rubens. DESCRIPTION: Red starfish */ +/* Dasyatis spp. DESCRIPTION: Stingrays nei */ +/* Spondyliosoma emarginatum. DESCRIPTION: Steentjie seabream */ +/* Stipecampus cristatus. DESCRIPTION: Ring-backed pipefish */ +/* Encrasicholina punctifer. DESCRIPTION: Buccaneer anchovy */ +/* Anostomus anostomus. DESCRIPTION: Striped headstander */ +/* Stolephorus spp. DESCRIPTION: Stolephorus anchovies nei */ +/* Sander spp. DESCRIPTION: Walleyes nei */ +/* Syngnathus typhle. DESCRIPTION: Broadnosed pipefish */ +/* Scomberomorus lineolatus. DESCRIPTION: Streaked seerfish */ +/* Dasyatidae. DESCRIPTION: Stingrays, butterfly rays nei */ +/* Acipenseridae. DESCRIPTION: Sturgeons nei */ +/* Sander vitreus. DESCRIPTION: Walleye */ +/* Lithognathus spp. DESCRIPTION: Steenbrasses nei */ +/* Syngnathus tenuirostris. DESCRIPTION: */ +/* Stygichthys typhlops. DESCRIPTION: Blind tetra */ +/* Kathetostoma giganteum. DESCRIPTION: Giant stargazer */ +/* Squatina aculeata. DESCRIPTION: Sawback angelshark */ +/* Saurogobio dabryi. DESCRIPTION: Chinese lizard gudgeon */ +/* Squatina californica. DESCRIPTION: Pacific angelshark */ +/* Squatina dumeril. DESCRIPTION: Sand devil */ +/* Squatina tergocellata. DESCRIPTION: Ornate angelshark */ +/* Squatina africana. DESCRIPTION: African angelshark */ +/* Squatina argentina. DESCRIPTION: Argentine angelshark */ +/* Schistura balteata. DESCRIPTION: */ +/* Sundoreonectes tiomanensis. DESCRIPTION: */ +/* Squatina japonica. DESCRIPTION: Japanese angelshark */ +/* Acanthochaenus lutkeni. DESCRIPTION: */ +/* Squatina nebulosa. DESCRIPTION: Clouded angelshark */ +/* Sauvagella madagascariensis. DESCRIPTION: Madagascar round herring */ +/* Squatina tergocellatoides. DESCRIPTION: Ocellated angelshark */ +/* Squatina formosa. DESCRIPTION: Taiwan angleshark */ +/* Spatuloricaria phelpsi. DESCRIPTION: */ +/* Squalogadus modificatus. DESCRIPTION: */ +/* Acanthuridae. DESCRIPTION: Surgeonfishes nei */ +/* Hypomesus pretiosus. DESCRIPTION: Surf smelt */ +/* Squatina oculata. DESCRIPTION: Smoothback angelshark */ +/* Squatina australis. DESCRIPTION: Australian angelshark */ +/* Sturisoma festivum. DESCRIPTION: */ +/* Silurus biwaensis. DESCRIPTION: Eurasian catfish */ +/* Sundasalanx malleti. DESCRIPTION: */ +/* Stauroteuthis syrtensis. DESCRIPTION: */ +/* Syngnathus taenionotus. DESCRIPTION: */ +/* Solivomer arenidens. DESCRIPTION: */ +/* Sterna bergii. DESCRIPTION: Great crested tern */ +/* Hypophthalmichthys molitrix. DESCRIPTION: Silver carp */ +/* Solen rudis. DESCRIPTION: Rough jackknife */ +/* Chamelea gallina. DESCRIPTION: Striped venus */ +/* Salvelinus fontinalis. DESCRIPTION: Brook trout */ +/* Setarches guentheri. DESCRIPTION: Channeled rockfish */ +/* Lepturacanthus savala. DESCRIPTION: Savalai hairtail */ +/* Sterna vittata. DESCRIPTION: Antarctic tern */ +/* Sterna fuscata. DESCRIPTION: Sooty tern */ +/* Solen kempi. DESCRIPTION: Kemp's razor shell */ +/* Svetovidovia lucullus. DESCRIPTION: */ +/* Solen malaccensis. DESCRIPTION: Malacca razor shell */ +/* Salvelinus neiva. DESCRIPTION: Neiva */ +/* Salvelinus confluentus. DESCRIPTION: Bull trout */ +/* Salvelinus profundus. DESCRIPTION: */ +/* Syngnathus variegatus. DESCRIPTION: */ +/* Salvethymus svetovidovi. DESCRIPTION: Long-finned charr */ +/* Sinonovacula constricta. DESCRIPTION: Constricted tagelus */ +/* Solen roseomaculatus. DESCRIPTION: Pink-spotted razor shell */ +/* Scorpaena stephanica. DESCRIPTION: Spotted-fin rockfish */ +/* Symbolophorus veranyi. DESCRIPTION: Large-scale lantern fish */ +/* Stomatopoda. DESCRIPTION: Stomatopods nei */ +/* Synaphobranchidae. DESCRIPTION: Cutthroat eels nei */ +/* Sterna spp. DESCRIPTION: Terns nei */ +/* Diplodus sargus. DESCRIPTION: White seabream */ +/* Phaeophyceae. DESCRIPTION: Brown seaweeds */ +/* Satyrichthys welchi. DESCRIPTION: Robust armoured-gurnard */ +/* Sebastes reedi. DESCRIPTION: Yellowmouth rockfish */ +/* Sawbwa resplendens. DESCRIPTION: */ +/* Cynoscion nebulosus. DESCRIPTION: Spotted weakfish */ +/* Chlorophyceae. DESCRIPTION: Green seaweeds */ +/* Paristiopterus labiosus. DESCRIPTION: Giant boarfish */ +/* Salvelinus willoughbii. DESCRIPTION: */ +/* Diplodus noct. DESCRIPTION: Red Sea seabream */ +/* Stomias spp. DESCRIPTION: */ +/* Sewellia lineolata. DESCRIPTION: */ +/* Portunidae. DESCRIPTION: Swimming crabs, etc. nei */ +/* Schwetzochromis neodon. DESCRIPTION: */ +/* Xiphias gladius. DESCRIPTION: Swordfish */ +/* Dilsea carnosa. DESCRIPTION: Fleshy dilsea */ +/* Delesseria sanguinea. DESCRIPTION: Red delesseria */ +/* Rhodophyceae. DESCRIPTION: Red seaweeds */ +/* Chionis alba. DESCRIPTION: Snowy sheathbill */ +/* Anodonta cygnea. DESCRIPTION: Swan mussel */ +/* Cottidae. DESCRIPTION: Sculpins nei */ +/* Squatina guggenheim. DESCRIPTION: Angular angel shark */ +/* Swiftopecten swiftii. DESCRIPTION: Swift's scallop */ +/* Algae. DESCRIPTION: Seaweeds nei */ +/* Syngnathus spp. DESCRIPTION: Pipefishes nei */ +/* Schizothorax yunnanensis. DESCRIPTION: */ +/* Stalix histrio. DESCRIPTION: */ +/* Pagellus affinis. DESCRIPTION: Arabian pandora */ +/* Pseudocaranx chilensis. DESCRIPTION: Juan Fernandez trevally */ +/* Sternoptyx diaphana. DESCRIPTION: Diaphanous hatchet fish */ +/* Schedophilus spp. DESCRIPTION: Schedophilus nei */ +/* Sonorolux fluminis. DESCRIPTION: Estuary croaker */ +/* Salminus hilarii. DESCRIPTION: */ +/* Scombrolabrax heterolepis. DESCRIPTION: Longfin escolar */ +/* Saxidomus nuttalli. DESCRIPTION: Common butter clam */ +/* Strombus tricornis. DESCRIPTION: Three-knobbed conch */ +/* Stichaeopsis epallax. DESCRIPTION: */ +/* Scopeloberyx microlepis. DESCRIPTION: */ +/* Springeratus xanthosoma. DESCRIPTION: */ +/* Stellerina xyosterna. DESCRIPTION: Pricklebreast poacher */ +/* Sternoptyx pseudobscura. DESCRIPTION: Highlight hatchetfish */ +/* Arctocephalus spp. DESCRIPTION: Fur seals nei */ +/* Synbranchus marmoratus. DESCRIPTION: Marbled swamp eel */ +/* Solenostomus paradoxus. DESCRIPTION: Harlequin ghost pipefish */ +/* Solenocera hextii. DESCRIPTION: Deep-sea mud shrimp */ +/* Salminus brasiliensis. DESCRIPTION: Dorado */ +/* Pseudocaranx wrighti. DESCRIPTION: Skipjack trevally */ +/* Otariidae, Phocidae. DESCRIPTION: Seals nei */ +/* Strongylura exilis. DESCRIPTION: Californian needlefish */ +/* Schizodon spp. DESCRIPTION: */ +/* Scyliorhinus boa. DESCRIPTION: Boa catshark */ +/* Scyliorhinus besnardi. DESCRIPTION: Polkadot catshark */ +/* Scyliorhinus canicula. DESCRIPTION: Small-spotted catshark */ +/* Sphaerophysa dianchiensis. DESCRIPTION: */ +/* Scyliorhinus cervigoni. DESCRIPTION: West African catshark */ +/* Scyliorhinus retifer. DESCRIPTION: Chain catshark */ +/* Scyliorhinus garmani. DESCRIPTION: Brownspotted catshark */ +/* Scyliorhinus haeckelii. DESCRIPTION: Freckled catshark */ +/* Scyliorhinus torrei. DESCRIPTION: Dwarf catshark */ +/* Scopelengys tristis. DESCRIPTION: Pacific blackchin */ +/* Scyliorhinus tokubee. DESCRIPTION: */ +/* Synodus lucioceps. DESCRIPTION: California lizardfish */ +/* Scyliorhinus meadi. DESCRIPTION: Blotched catshark */ +/* Synagrops japonicus. DESCRIPTION: Blackmouth splitfin */ +/* Scymnodon obscurus. DESCRIPTION: Smallmouth knifetooth dogfish */ +/* Scyliorhinus capensis. DESCRIPTION: Yellowspotted catshark */ +/* Strongylura leiura. DESCRIPTION: Banded needlefish */ +/* Scymnodon ringens. DESCRIPTION: Knifetooth dogfish */ +/* Synagrops spp. DESCRIPTION: Splitfins nei */ +/* Scyliorhinus stellaris. DESCRIPTION: Nursehound */ +/* Scyliorhinus hesperius. DESCRIPTION: Whitesaddled catshark */ +/* Synodus evermanni. DESCRIPTION: Inotted lizardfish */ +/* Synodus variegatus. DESCRIPTION: Variegated lizardfish */ +/* Scyliorhinidae. DESCRIPTION: Catsharks, etc. nei */ +/* Sternarchorhynchus curvirostris. DESCRIPTION: */ +/* Scyliorhinus torazame. DESCRIPTION: Cloudy catshark */ +/* Synagrops bellus. DESCRIPTION: Blackmouth bass */ +/* Schizocypris brucei. DESCRIPTION: */ +/* Sander canadensis. DESCRIPTION: Sauger */ +/* Schubotzia eduardiana. DESCRIPTION: */ +/* Schizothorax esocinus. DESCRIPTION: */ +/* Schizodon fasciatus. DESCRIPTION: */ +/* Synchirus gilli. DESCRIPTION: Manacled sculpin */ +/* Sparidentex hasta. DESCRIPTION: Sobaity seabream */ +/* Solea elongata. DESCRIPTION: Elongate sole */ +/* Squatina occulta. DESCRIPTION: Hidden angel shark */ +/* Solenocera spp. DESCRIPTION: Solenocera shrimps nei */ +/* Sinogastromyzon puliensis. DESCRIPTION: */ +/* Salangichthys microdon. DESCRIPTION: Japanese icefish */ +/* Chamelea striatula. DESCRIPTION: */ +/* Schizodon corti. DESCRIPTION: */ +/* Schizopygopsis pylzovi. DESCRIPTION: */ +/* Suezichthys arquatus. DESCRIPTION: Rainbow slender wrasse */ +/* Schizothorax richardsonii. DESCRIPTION: Snowtrout */ +/* Serpulidae. DESCRIPTION: Serpulid tube worms */ +/* Pogonophryne scotti. DESCRIPTION: */ +/* Schizothorax curvifrons. DESCRIPTION: Sattar snowtrout */ +/* Sulidae. DESCRIPTION: Boobies and gannets nei */ +/* Strongylura senegalensis. DESCRIPTION: Senegal needlefish */ +/* Saurida spp. DESCRIPTION: */ +/* Scyphozoa. DESCRIPTION: */ +/* Synagrops microlepis. DESCRIPTION: Smallscale splitfin */ +/* Thalassoica antarctica. DESCRIPTION: Antarctic petrel */ +/* Talismania bifurcata. DESCRIPTION: Threadfin slickhead */ +/* Spicara melanurus. DESCRIPTION: Blackspot picarel */ +/* Tangachromis dhanisi. DESCRIPTION: */ +/* Tarletonbeania crenularis. DESCRIPTION: Blue lanternfish */ +/* Stegastes fasciolatus. DESCRIPTION: Pacific gregory */ +/* Taenioides anguillaris. DESCRIPTION: Eel worm goby */ +/* Taeniochromis holotaenia. DESCRIPTION: */ +/* Megalops cyprinoides. DESCRIPTION: Indo-Pacific tarpon */ +/* Tanganicodus irsacae. DESCRIPTION: Spotfin goby cichlid */ +/* Nemadactylus macropterus. DESCRIPTION: Tarakihi */ +/* Taractichthys longipinnis. DESCRIPTION: Big-scale pomfret */ +/* Tilapia cameronensis. DESCRIPTION: */ +/* Thysanophrys arenicola. DESCRIPTION: Broadhead flathead */ +/* Tateurndina ocellicauda. DESCRIPTION: Peacock gudgeon */ +/* Trachinotus paitensis. DESCRIPTION: Paloma pompano */ +/* Thalassina anomala. DESCRIPTION: Scorpion mud lobster */ +/* Megalops atlanticus. DESCRIPTION: Tarpon */ +/* Taractes asper. DESCRIPTION: Rough pomfret */ +/* Tatia altae. DESCRIPTION: */ +/* Tautoga onitis. DESCRIPTION: Tautog */ +/* Tonna allium. DESCRIPTION: Costate tun */ +/* Thamnaconus spp. DESCRIPTION: */ +/* Thalamita spinimana. DESCRIPTION: Spiny claw swimming crab */ +/* Taaningichthys bathyphilus. DESCRIPTION: */ +/* Tahuantinsuyoa macantzatza. DESCRIPTION: */ +/* Trachinotus baillonii. DESCRIPTION: Small spotted dart */ +/* Stromboli beebei. DESCRIPTION: Stromboli keyhole limpet */ +/* Tapes belcheri. DESCRIPTION: Belcher's venus */ +/* Stonogobiops dracula. DESCRIPTION: */ +/* Terebellum terebellum. DESCRIPTION: Terebellum conch */ +/* Chaetobranchus flavescens. DESCRIPTION: */ +/* Strombus galeatus. DESCRIPTION: Giant Eastern Pacific conch */ +/* Tylosurus choram. DESCRIPTION: Red Sea houndfish */ +/* Strombus gracilior. DESCRIPTION: Eastern Pacific fighting conch */ +/* Strombina fusinoidea. DESCRIPTION: Slender strombina */ +/* Typhlobagrus kronei. DESCRIPTION: */ +/* Astrabe lactisella. DESCRIPTION: */ +/* Troglocambarus maclanei. DESCRIPTION: Spider cave crayfish */ +/* Tosarhombus neocaledonicus. DESCRIPTION: */ +/* Tetrabrachium ocellatum. DESCRIPTION: */ +/* Terebralia palustris. DESCRIPTION: Mud creeper */ +/* Strombus granulatus. DESCRIPTION: Granulated conch */ +/* Ctenolabrus rupestris. DESCRIPTION: Goldsinny-wrasse */ +/* Tongaichthys robustus. DESCRIPTION: Tonga escolar */ +/* Tribolodon taczanowskii. DESCRIPTION: */ +/* Trianectes bucephalus. DESCRIPTION: Bullhead triplefin */ +/* Strombus peruvianus. DESCRIPTION: Cock's comb conch */ +/* Stercorarius parasiticus. DESCRIPTION: Arctic skua */ +/* Terebralia sulcata. DESCRIPTION: Sulcate swamp cerith */ +/* Trachypenaeus byrdi. DESCRIPTION: Carabali shrimp */ +/* Trichomycterus alternatum. DESCRIPTION: */ +/* Tathicarpus butleri. DESCRIPTION: Butler's frogfish */ +/* Cottapistus cottoides. DESCRIPTION: Marbled stingfish */ +/* Taeniacara candidi. DESCRIPTION: */ +/* Richardsonichthys leucogaster. DESCRIPTION: Whiteface waspfish */ +/* Trachidermus fasciatus. DESCRIPTION: Roughskin sculpin */ +/* Coccotropsis gymnoderma. DESCRIPTION: */ +/* Ptychochromis oligacanthus. DESCRIPTION: */ +/* Trachinotus africanus. DESCRIPTION: Southern pompano */ +/* Pterochromis congicus. DESCRIPTION: */ +/* Trachinotus anak. DESCRIPTION: Oyster pompano */ +/* Protothaca thaca. DESCRIPTION: Taca clam */ +/* Triglachromis otostigma. DESCRIPTION: */ +/* Trachinotus cayennensis. DESCRIPTION: Cayenne pompano */ +/* Trachinotus botla. DESCRIPTION: Largespotted dart */ +/* Trachinotus coppingeri. DESCRIPTION: Swallowtail dart */ +/* Trachypenaeus gonospinifer. DESCRIPTION: Northern rough shrimp */ +/* Taractes rubescens. DESCRIPTION: */ +/* Catlocarpio siamensis. DESCRIPTION: Giant barb */ +/* Centropogon australis. DESCRIPTION: Fortescue */ +/* Trachichthys australis. DESCRIPTION: */ +/* Ctenochaetus striatus. DESCRIPTION: Striated surgeonfish */ +/* Trichiurus spp. DESCRIPTION: Hairtails nei */ +/* Tectonatica filosa. DESCRIPTION: Flamed moon-shell */ +/* Trachinocephalus myops. DESCRIPTION: Snakefish */ +/* Thaumastocheles zaleucus. DESCRIPTION: Atlantic pincer lobster */ +/* Tripterygion delaisi. DESCRIPTION: Black-faced blenny */ +/* Tridentiger barbatus. DESCRIPTION: */ +/* Trichodon trichodon. DESCRIPTION: Pacific sandfish */ +/* Tridacna derasa. DESCRIPTION: Smooth giant clam */ +/* Tridens melanops. DESCRIPTION: */ +/* Batrachoides spp. DESCRIPTION: Toadfishes nei */ +/* Tridacna gigas. DESCRIPTION: Giant clam */ +/* Paratriacanthodes herrei. DESCRIPTION: */ +/* Tetraodon cutcutia. DESCRIPTION: */ +/* Thamnaconus modestoides. DESCRIPTION: Modest filefish */ +/* Tandanus bostocki. DESCRIPTION: Freshwater cobbler */ +/* Tetraodon pustulatus. DESCRIPTION: */ +/* Triacanthodes anomalus. DESCRIPTION: */ +/* Platytaeniodus degeni. DESCRIPTION: */ +/* Tripterodon orbis. DESCRIPTION: African spadefish */ +/* Tridentopsis pearsoni. DESCRIPTION: */ +/* Todaropsis eblanae. DESCRIPTION: Lesser flying squid */ +/* Tridensimilis brevis. DESCRIPTION: */ +/* Tridacna squamosa. DESCRIPTION: Fluted giant clam */ +/* Tandanus tandanus. DESCRIPTION: Tandan catfish */ +/* Triodon macropterus. DESCRIPTION: Threetooth puffer */ +/* Tydemania navigatoris. DESCRIPTION: Fleshy-lipped spikefish */ +/* Taratretis derwentensis. DESCRIPTION: Derwent flounder */ +/* Trachycardium egmontianum. DESCRIPTION: American prickly cockle */ +/* Spathodus erythrodon. DESCRIPTION: */ +/* Trachypenaeus sedili. DESCRIPTION: Malayan rough shrimp */ +/* Tetragonopterus argenteus. DESCRIPTION: */ +/* Telmatherina abendanoni. DESCRIPTION: */ +/* Pterocaesio chrysozona. DESCRIPTION: Goldband fusilier */ +/* Pterocaesio digramma. DESCRIPTION: Double-lined fusilier */ +/* Pteraclis aesticola. DESCRIPTION: Pacific fanfish */ +/* Theragra finnmarchica. DESCRIPTION: Norwegian pollock */ +/* Ctenosciaena gracilicirrhus. DESCRIPTION: Barbel drum */ +/* Terapon theraps. DESCRIPTION: Largescaled terapon */ +/* Pterocaesio pisang. DESCRIPTION: Banana fusilier */ +/* Stereolepis gigas. DESCRIPTION: Giant seabass */ +/* Stegastes apicalis. DESCRIPTION: Australian gregory */ +/* Stereolepis doederleini. DESCRIPTION: */ +/* Cteniloricaria maculata. DESCRIPTION: */ +/* Ctenopoma petherici. DESCRIPTION: */ +/* Tetraroge barbata. DESCRIPTION: Bearded roguefish */ +/* Steeneichthys plesiopsus. DESCRIPTION: */ +/* Tetrosomus concatenatus. DESCRIPTION: Triangular boxfish */ +/* Thermarces cerberus. DESCRIPTION: */ +/* Pterocaesio tessellata. DESCRIPTION: One-stripe fusilier */ +/* Terapon puta. DESCRIPTION: Small-scaled terapon */ +/* Stenocionops ovata. DESCRIPTION: Velvet spidercrab */ +/* Pteria sterna. DESCRIPTION: Western wing oyster */ +/* Tagelus plebeius. DESCRIPTION: Stout tagelus */ +/* Tagelus californianus. DESCRIPTION: Californian tagelus */ +/* Paradiplospinus antarcticus. DESCRIPTION: Antarctic escolar */ +/* Typhleotris madagascariensis. DESCRIPTION: */ +/* Batrachoides surinamensis. DESCRIPTION: Pacuma toadfish */ +/* Trinorfolkia clarkei. DESCRIPTION: Clarke's triplefin */ +/* Batrachoididae. DESCRIPTION: Toadfishes, etc. nei */ +/* Tarphops elegans. DESCRIPTION: */ +/* Triglops forficatus. DESCRIPTION: Scissortail sculpin */ +/* Scatophagus argus. DESCRIPTION: Spotted scat */ +/* Stercorarius skua. DESCRIPTION: Skua */ +/* Trichonotus filamentosus. DESCRIPTION: */ +/* Trachypenaeus fuscina. DESCRIPTION: Pinto shrimp */ +/* Tellina foliacea. DESCRIPTION: Foliated tellin */ +/* Typhlogobius californiensis. DESCRIPTION: Blind goby */ +/* Furgaleus macki. DESCRIPTION: Whiskery shark */ +/* Tropheus annectens. DESCRIPTION: */ +/* Trachypenaeus faoe. DESCRIPTION: Indio shrimp */ +/* Todarodes filippovae. DESCRIPTION: Antarctic flying squid */ +/* Thelenota ananas. DESCRIPTION: Prickly redfish */ +/* Strophiurichthys robustus. DESCRIPTION: Chubby basketfish */ +/* Tephrinectes sinensis. DESCRIPTION: */ +/* Ctenogobius fasciatus. DESCRIPTION: Blotchcheek goby */ +/* Pterophyllum altum. DESCRIPTION: */ +/* Trachypenaeus fulvus. DESCRIPTION: Brown rough shrimp */ +/* Spatangus mathesoni. DESCRIPTION: Matheson */ +/* ’s heart urchin */ +/* Tetraodon spp. DESCRIPTION: */ +/* Spatangus multispinus. DESCRIPTION: Purple-heart urchin */ +/* Tribolodon hakonensis. DESCRIPTION: Big-scaled redfin */ +/* Polydactylus quadrifilis. DESCRIPTION: Giant African threadfin */ +/* Pteragogus amboinensis. DESCRIPTION: */ +/* Tiaroga cobitis. DESCRIPTION: Loach minnow */ +/* Stegastes dorsopunicans. DESCRIPTION: Dusky damselfish */ +/* Stegastes leucostictus. DESCRIPTION: Beaugregory */ +/* Gogolia filewoodi. DESCRIPTION: Sailback houndshark */ +/* Ctenogobiops aurocingulus. DESCRIPTION: Gold-streaked prawn-goby */ +/* Trichogaster trichopterus. DESCRIPTION: Three spot gourami */ +/* Glyptauchen insidiator. DESCRIPTION: */ +/* Triglops jordani. DESCRIPTION: Jordan's sculpin */ +/* Pterapogon kauderni. DESCRIPTION: */ +/* Trichogenes longipinnis. DESCRIPTION: */ +/* Triglops murrayi. DESCRIPTION: Moustache sculpin */ +/* Thorogobius angolensis. DESCRIPTION: */ +/* Stigmatochromis modestus. DESCRIPTION: */ +/* Triglops scepticus. DESCRIPTION: Spectacled sculpin */ +/* Triglopsis quadricornis. DESCRIPTION: Fourhorn sculpin */ +/* Gymnapistes marmoratus. DESCRIPTION: South Australian cobbler */ +/* Penaeus kerathurus. DESCRIPTION: Caramote prawn */ +/* Troglocobitis starostini. DESCRIPTION: */ +/* Tominanga aurea. DESCRIPTION: */ +/* Tetragonurus cuvieri. DESCRIPTION: Smalleye squaretail */ +/* Mesoplodon ginkgodens. DESCRIPTION: Ginkgo-toothed beaked whale */ +/* Atergatopsis signatus. DESCRIPTION: Giant egg crab */ +/* Triglops nybelini. DESCRIPTION: Bigeye sculpin */ +/* Tagelus dombeii. DESCRIPTION: Dombey's tagelus */ +/* Opisthonema oglinum. DESCRIPTION: Atlantic thread herring */ +/* Nemipterus spp. DESCRIPTION: Threadfin breams nei */ +/* Nemipteridae. DESCRIPTION: Threadfin and dwarf breams nei */ +/* Terapontidae. DESCRIPTION: Tigerperches nei */ +/* Polynemidae. DESCRIPTION: Threadfins, tasselfishes nei */ +/* Nemipterus virgatus. DESCRIPTION: Golden threadfin bream */ +/* Hypogaleus hyugaensis. DESCRIPTION: Blacktipe tope */ +/* Cathorops fuerthii. DESCRIPTION: Congo sea catfish */ +/* Hemitriakis japanica. DESCRIPTION: Japanese topeshark */ +/* Centrochir crocodili. DESCRIPTION: */ +/* Hemitriakis leucoperiptera. DESCRIPTION: Whitefin topeshark */ +/* Thyrsitoides marleyi. DESCRIPTION: Black snoek */ +/* Thrattidion noctivagus. DESCRIPTION: Sanaga pygmy herring */ +/* Terapon spp. DESCRIPTION: Terapon perches nei */ +/* Opisthonema libertate. DESCRIPTION: Pacific thread herring */ +/* Thenus orientalis. DESCRIPTION: Flathead lobster */ +/* Alopias spp. DESCRIPTION: Thresher sharks nei */ +/* Microchirus spp. DESCRIPTION: Thickback soles nei */ +/* Tenualosa thibaudeaui. DESCRIPTION: Laotian shad */ +/* Citharinus latus. DESCRIPTION: */ +/* Thymopides grobovi. DESCRIPTION: Bellator lobster */ +/* Thaumastochelopsis wardi. DESCRIPTION: Australian pincer lobster */ +/* Opisthonema spp. DESCRIPTION: Thread herrings nei */ +/* Silurichthys citatus. DESCRIPTION: */ +/* Pentheroscion mbizi. DESCRIPTION: */ +/* Trachyscorpia eschmeyeri. DESCRIPTION: Cape scorpionfish */ +/* Tilapia bilineata. DESCRIPTION: */ +/* Chionodraco hamatus. DESCRIPTION: */ +/* Pterygioteuthis giardi. DESCRIPTION: Roundear enope squid */ +/* Trachinotus teraia. DESCRIPTION: Shortfin pompano */ +/* Paranthias furcifer. DESCRIPTION: Creole-fish */ +/* Galeocerdo cuvier. DESCRIPTION: Tiger shark */ +/* Branchiostegus japonicus. DESCRIPTION: Horsehead tilefish */ +/* Tilapia buttikoferi. DESCRIPTION: */ +/* Tilapia tholloni. DESCRIPTION: */ +/* Iago garricki. DESCRIPTION: Longnose houndshark */ +/* Lopholatilus chamaeleonticeps. DESCRIPTION: Great Northern tilefish */ +/* Tilapia busumana. DESCRIPTION: */ +/* Stichaeopsis nana. DESCRIPTION: */ +/* Iago omanensis. DESCRIPTION: Bigeye houndshark */ +/* Penaeus semisulcatus. DESCRIPTION: Green tiger prawn */ +/* Trachycardium isocardia. DESCRIPTION: Even cockle */ +/* Tilapia cabrae. DESCRIPTION: */ +/* Branchiostegidae. DESCRIPTION: Tilefishes nei */ +/* Xiphopenaeus riveti. DESCRIPTION: Pacific seabob */ +/* Trachinops brauni. DESCRIPTION: */ +/* Tilapia brevimanus. DESCRIPTION: */ +/* Stichaeus grigorjewi. DESCRIPTION: */ +/* Trachycardium muricatum. DESCRIPTION: American yellow cockle */ +/* Taeniolethrinops cyrtonotus. DESCRIPTION: */ +/* Branchiostegus wardi. DESCRIPTION: Ward's tilefish */ +/* Tilapia kottae. DESCRIPTION: */ +/* Terapon jarbua. DESCRIPTION: Jarbua terapon */ +/* Tilapia camerunensis. DESCRIPTION: */ +/* Tilapia dageti. DESCRIPTION: */ +/* Tilapia cessiana. DESCRIPTION: */ +/* Tilapia coffea. DESCRIPTION: */ +/* Tilapia congica. DESCRIPTION: */ +/* Tilapia rheophila. DESCRIPTION: */ +/* Tilapia discolor. DESCRIPTION: */ +/* Tilapia joka. DESCRIPTION: */ +/* Tilapia deckerti. DESCRIPTION: */ +/* Tilapia louka. DESCRIPTION: */ +/* Tilapia imbriferna. DESCRIPTION: */ +/* Tilapia nyongana. DESCRIPTION: */ +/* Tilapia mariae. DESCRIPTION: Spotted tilapia */ +/* Thaumastocheles japonicus. DESCRIPTION: Pacific pincer lobster */ +/* Tilapia margaritacea. DESCRIPTION: */ +/* Tilapia spongotroktis. DESCRIPTION: */ +/* Tilapia gutturosa. DESCRIPTION: */ +/* Tilapia guinasana. DESCRIPTION: Otjikoto tilapia */ +/* Tilapia flava. DESCRIPTION: */ +/* Tilapia ruweti. DESCRIPTION: Okavango tilapia */ +/* Trachyscorpia cristulata. DESCRIPTION: Atlantic thornyhead */ +/* Tilapia snyderae. DESCRIPTION: */ +/* Trachipterus jacksonensis. DESCRIPTION: Blackflash ribbonfish */ +/* Glyptocephalus kitaharai. DESCRIPTION: Willowy flounder */ +/* Ctenochaetus binotatus. DESCRIPTION: Twospot surgeonfish */ +/* Tamanka cagayanensis. DESCRIPTION: */ +/* Thamnaconus modestus. DESCRIPTION: */ +/* Pterogobius elapoides. DESCRIPTION: */ +/* Takifugu porphyreus. DESCRIPTION: */ +/* Parastichopus californicus. DESCRIPTION: Giant red sea cucumber */ +/* Trypauchen raha. DESCRIPTION: */ +/* Teramulus kieneri. DESCRIPTION: Kiener's silverside */ +/* Trachypenaeus pacificus. DESCRIPTION: Zebra shrimp */ +/* Trichonotus nikii. DESCRIPTION: */ +/* Trichopsis pumila. DESCRIPTION: Pygmy gourami */ +/* Tanganikallabes mortiauxi. DESCRIPTION: */ +/* Trachypenaeus constrictus. DESCRIPTION: Roughneck shrimp */ +/* Takifugu niphobles. DESCRIPTION: */ +/* Tukugobius philippinus. DESCRIPTION: */ +/* Trachycardium consors. DESCRIPTION: Consors' cockle */ +/* Tentoriceps cristatus. DESCRIPTION: Crested hairtail */ +/* Trypauchenichthys sumatrensis. DESCRIPTION: */ +/* Tanakia tanago. DESCRIPTION: Tokyo bitterling */ +/* Ptereleotris arabica. DESCRIPTION: */ +/* Parastichopus parvimensis. DESCRIPTION: */ +/* Trochus conus. DESCRIPTION: Cone-shaped top */ +/* Tectus dentatus. DESCRIPTION: Dentate top shell */ +/* Ctenopoma kingsleyae. DESCRIPTION: Tailspot ctenopoma */ +/* Palaemonetes tonkinensis. DESCRIPTION: Tonkin grass shrimp */ +/* Thymallus arcticus. DESCRIPTION: Arctic grayling */ +/* Teleogramma brichardi. DESCRIPTION: */ +/* Acantholatris monodactylus. DESCRIPTION: St. Paul's fingerfin */ +/* Trigonolampa miriceps. DESCRIPTION: */ +/* Telmatochromis bifrenatus. DESCRIPTION: */ +/* Tilapia guineensis. DESCRIPTION: Guinean tilapia */ +/* Tilapia thysi. DESCRIPTION: */ +/* Thalassobathia pelagica. DESCRIPTION: */ +/* Trachypenaeus longipes. DESCRIPTION: Longlegged rough shrimp */ +/* Thalamita crenata. DESCRIPTION: Wide front swimcrab */ +/* Oreochromis spilurus. DESCRIPTION: Sabaki tilapia */ +/* Oreochromis mossambicus. DESCRIPTION: Mozambique tilapia */ +/* Oreochromis niloticus. DESCRIPTION: Nile tilapia */ +/* Trematomus loennbergii. DESCRIPTION: Scaly rockcod */ +/* Oreochromis (=Tilapia) spp. DESCRIPTION: Tilapias nei */ +/* Tetracheledone spinicirrhus. DESCRIPTION: Spiney-horn octopus */ +/* Tilapia rendalli. DESCRIPTION: Redbreast tilapia */ +/* Tilapia sparrmanii. DESCRIPTION: Banded tilapia */ +/* Telotrematocara macrostoma. DESCRIPTION: */ +/* Platysilurus barbatus. DESCRIPTION: */ +/* Thymallus thymallus. DESCRIPTION: Grayling */ +/* Tilapia walteri. DESCRIPTION: */ +/* Tagelus peruvianus. DESCRIPTION: Duckbill tagelus */ +/* Tellina simulans. DESCRIPTION: Similar red tellin */ +/* Tilapia zillii. DESCRIPTION: Redbelly tilapia */ +/* Tympanopleura alta. DESCRIPTION: */ +/* Stromateus brasiliensis. DESCRIPTION: Southwest Atlantic butterfish */ +/* Trematocara caparti. DESCRIPTION: */ +/* Thalassoma duperrey. DESCRIPTION: Saddle wrasse */ +/* Tyrannochromis macrostoma. DESCRIPTION: */ +/* Thalassoma bifasciatum. DESCRIPTION: Bluehead */ +/* Stathmonotus culebrai. DESCRIPTION: Panamanian worm blenny */ +/* Tylochromis aristoma. DESCRIPTION: */ +/* Tetracentrum apogonoides. DESCRIPTION: Four-spined glass perchlet */ +/* Trimma okinawae. DESCRIPTION: Okinawa rubble goby */ +/* Trematocranus labifer. DESCRIPTION: */ +/* Stomatepia mariae. DESCRIPTION: Nsess */ +/* Tomiyamichthys oni. DESCRIPTION: */ +/* Tasmanogobius lordi. DESCRIPTION: Lord's goby */ +/* Thalassoma pavo. DESCRIPTION: Ornate wrasse */ +/* Tetranematichthys quadrifilis. DESCRIPTION: */ +/* Tristramella sacra. DESCRIPTION: */ +/* Trematochromis schreyeni. DESCRIPTION: */ +/* Trinectes maculatus. DESCRIPTION: Hogchoker */ +/* Ctenotrypauchen microcephalus. DESCRIPTION: Comb goby */ +/* Tramitichromis brevis. DESCRIPTION: */ +/* Trematomus vicarius. DESCRIPTION: Orange notothen */ +/* Triphoturus mexicanus. DESCRIPTION: Mexican lampfish */ +/* Trachypenaeus similis. DESCRIPTION: Yellow roughneck shrimp */ +/* Astralium calcar. DESCRIPTION: Spurred turban */ +/* Narcine brasiliensis. DESCRIPTION: Brazilian electric ray */ +/* Benthobatis marcida. DESCRIPTION: Blind torpedo */ +/* Crassinarke dormitor. DESCRIPTION: */ +/* Diplobatis ommata. DESCRIPTION: Ocellated electric ray */ +/* Narcine entemedor. DESCRIPTION: Giant electric ray */ +/* Trachinotus falcatus. DESCRIPTION: Permit */ +/* Narke dipterygia. DESCRIPTION: Numbray */ +/* Heteronarce garmani. DESCRIPTION: Natal electric ray */ +/* Narcine indica. DESCRIPTION: */ +/* Narke japonica. DESCRIPTION: */ +/* Narke capensis. DESCRIPTION: Onefin electric ray */ +/* Narcine lingula. DESCRIPTION: */ +/* Heteronarce mollis. DESCRIPTION: */ +/* Narcine rierai. DESCRIPTION: Slender electric ray */ +/* Narcine prodorsalis. DESCRIPTION: */ +/* Diplobatis picta. DESCRIPTION: */ +/* Narcine timlei. DESCRIPTION: Spotted numbfish */ +/* Narcine brevilabiata. DESCRIPTION: */ +/* Trachonurus sulcatus. DESCRIPTION: Bristly grenadier */ +/* Narcine tasmaniensis. DESCRIPTION: Tasmanian numbfish */ +/* Narcine brunnea. DESCRIPTION: Brown numbfish */ +/* Narcine vermiculatus. DESCRIPTION: Vermiculate electric ray */ +/* Narcine westraliensis. DESCRIPTION: Banded numbfish */ +/* Laternula elliptica. DESCRIPTION: Antarctic soft-shell clam */ +/* Discopyge tschudii. DESCRIPTION: */ +/* Tellina laceridens. DESCRIPTION: Lacerate tellin */ +/* Dissostichus mawsoni. DESCRIPTION: Antarctic toothfish */ +/* Tor tambroides. DESCRIPTION: Thai mahseer */ +/* Astronotus ocellatus. DESCRIPTION: Oscar */ +/* Torpedinidae. DESCRIPTION: Electric rays nei */ +/* Torpedo spp. DESCRIPTION: Torpedo rays */ +/* Torpediniformes. DESCRIPTION: Electric rays, etc.nei */ +/* Trachinotus goreensis. DESCRIPTION: Longfin pompano */ +/* Taenianotus triacanthus. DESCRIPTION: Leaf scorpionfish */ +/* Trachinotus marginatus. DESCRIPTION: Plata pompano */ +/* Asterorhombus fijiensis. DESCRIPTION: Angler flatfish */ +/* Tor khudree. DESCRIPTION: */ +/* Tenualosa toli. DESCRIPTION: Toli shad */ +/* Microgadus tomcod. DESCRIPTION: Atlantic tomcod */ +/* Trachinotus kennedyi. DESCRIPTION: Blackblotch pompano */ +/* Trachinotus maxillosus. DESCRIPTION: Guinean pompano */ +/* Dissostichus eleginoides. DESCRIPTION: Patagonian toothfish */ +/* Tonna galea. DESCRIPTION: Helmet ton */ +/* Turbo cornutus. DESCRIPTION: Horned turban */ +/* Dissostichus spp. DESCRIPTION: Antarctic toothfishes nei */ +/* Astrapogon alutus. DESCRIPTION: Bronze cardinalfish */ +/* Trimmatom eviotops. DESCRIPTION: Red-barred rubble goby */ +/* Talismania antillarum. DESCRIPTION: Antillean smooth-head */ +/* Cynoglossidae. DESCRIPTION: Tonguefishes */ +/* Tonna dolium. DESCRIPTION: Spotted tun */ +/* Trachinus vipera. DESCRIPTION: Lesser weever */ +/* Trachipterus arcticus. DESCRIPTION: Dealfish */ +/* Tilapia bakossiorum. DESCRIPTION: */ +/* Acantopsis choirorhynchos. DESCRIPTION: Horseface loach */ +/* Stenopus hispidus. DESCRIPTION: Banded coral shrimp */ +/* Acanthopoma annectens. DESCRIPTION: */ +/* Tripodichthys angustifrons. DESCRIPTION: Black-flag tripodfish */ +/* Tripterophycis gilchristi. DESCRIPTION: Grenadier cod */ +/* Tropidophoxinellus hellenicus. DESCRIPTION: */ +/* Tilapia bemini. DESCRIPTION: */ +/* Taeniopsetta ocellata. DESCRIPTION: */ +/* Paracentropogon longispinus. DESCRIPTION: Wispy waspfish */ +/* Triplophos hemingi. DESCRIPTION: */ +/* Typhlobarbus nudiventris. DESCRIPTION: */ +/* Tilapia baloni. DESCRIPTION: */ +/* Satanoperca acuticeps. DESCRIPTION: Sharphead eartheater */ +/* Trachypenaeus granulosus. DESCRIPTION: Coarse shrimp */ +/* Trachypoma macracanthus. DESCRIPTION: Toadstool groper */ +/* Ruditapes spp. DESCRIPTION: Carpet shells nei */ +/* Paratrachichthys trailli. DESCRIPTION: Sandpaper fish */ +/* Triportheus angulatus. DESCRIPTION: */ +/* Pteria avicular. DESCRIPTION: Swift wing oyster */ +/* Typhlogarra widdowsoni. DESCRIPTION: Iraq blind barb */ +/* Tonna perdix. DESCRIPTION: Pacific partridge tun */ +/* Tilapia bythobates. DESCRIPTION: */ +/* Torquigener altipinnis. DESCRIPTION: */ +/* Thymops birsteini. DESCRIPTION: Southern lobsterette */ +/* Atrina tuberculosa. DESCRIPTION: Tuberculate pen shell */ +/* Tapes dorsatus. DESCRIPTION: Turgid venus */ +/* Atrina pectinata. DESCRIPTION: Comb pen shell */ +/* Atrina fragilis. DESCRIPTION: Brittle pen shell */ +/* Tripneustes gratilla. DESCRIPTION: Striped sea urchin */ +/* Thalassarche carteri. DESCRIPTION: Indian yellow-nosed albatross */ +/* Tellina incarnata. DESCRIPTION: Fleshy tellin */ +/* Tapes literatus. DESCRIPTION: Lettered venus */ +/* Tresus keenae. DESCRIPTION: Japanese horse clam */ +/* Tellina alternata. DESCRIPTION: Alternate tellin */ +/* Atrina maura. DESCRIPTION: Maura pen shell */ +/* Thymopsis nilenta. DESCRIPTION: Nilenta lobsterette */ +/* Trachycardium procerum. DESCRIPTION: Slender cockle */ +/* Trachycardium panamense. DESCRIPTION: Mexican cockle */ +/* Trachycardium quadragenarium. DESCRIPTION: Giant Pacific cockle */ +/* Trachycardium rugosum. DESCRIPTION: Pacific yellow cockle */ +/* Tellina staurella. DESCRIPTION: Cross tellin */ +/* Tellina planata. DESCRIPTION: Flat tellin */ +/* Tresus nuttallii. DESCRIPTION: Pacific horse clam */ +/* Tellina virgata. DESCRIPTION: Virgate tellin */ +/* Thalassarche impavida. DESCRIPTION: Campbell albatross */ +/* Atrina vexillum. DESCRIPTION: Flag pen shell */ +/* Atrina spp. DESCRIPTION: Pen shells nei */ +/* Tresus spp. DESCRIPTION: Pacific horse clams nei */ +/* Trachinidae. DESCRIPTION: Weeverfishes nei */ +/* Triaenodon obesus. DESCRIPTION: Whitetip reef shark */ +/* Trachichthyidae. DESCRIPTION: Slimeheads nei */ +/* Trematomus lepidorhinus. DESCRIPTION: Slender scalyhead */ +/* Caranx spp. DESCRIPTION: Jacks, crevalles nei */ +/* Lactarius lactarius. DESCRIPTION: False trevally */ +/* Balistes carolinensis. DESCRIPTION: Grey triggerfish */ +/* Pagothenia hansoni. DESCRIPTION: Striped rockcod */ +/* Balistidae. DESCRIPTION: Triggerfishes, durgons nei */ +/* Triakidae. DESCRIPTION: Houndsharks, smoothhounds nei */ +/* Trematomus eulepidotus. DESCRIPTION: Blunt scalyhead */ +/* Trematomus scotti. DESCRIPTION: Crowned rockcod */ +/* Trematomus nicolai. DESCRIPTION: Spotted notothen */ +/* Salmo spp. DESCRIPTION: Trouts nei */ +/* Trachipterus spp. DESCRIPTION: Dealfishes */ +/* Trachipterus trachipterus. DESCRIPTION: Mediterranean dealfish */ +/* Oncorhynchus mykiss. DESCRIPTION: Rainbow trout */ +/* Salmo trutta. DESCRIPTION: Sea trout */ +/* Trematomus spp. DESCRIPTION: Trematomus nei */ +/* Latridae. DESCRIPTION: Trumpeters nei */ +/* Trachypenaeus curvirostris. DESCRIPTION: Southern rough shrimp */ +/* Trematomus newnesi. DESCRIPTION: Dusky rockcod */ +/* Trachipteridae. DESCRIPTION: Ribbonfishes */ +/* Selaroides leptolepis. DESCRIPTION: Yellowstripe scad */ +/* Pseudocaranx dentex. DESCRIPTION: White trevally */ +/* Sorosichthys ananassa. DESCRIPTION: Little pineapple fish */ +/* Ctenops nobilis. DESCRIPTION: Frail gourami */ +/* Tricuspidalestes caeruleus. DESCRIPTION: */ +/* Alosa fallax. DESCRIPTION: Twaite shad */ +/* Tocantinsia depressa. DESCRIPTION: */ +/* Tosanoides filamentosus. DESCRIPTION: */ +/* Tilesina gibbosa. DESCRIPTION: */ +/* Ex Trochus spp. DESCRIPTION: Trochus shells nei */ +/* Tosana niwae. DESCRIPTION: Threadtail anthias */ +/* Trichopsetta caribbaea. DESCRIPTION: Caribbean flounder */ +/* Scylliogaleus quecketti. DESCRIPTION: Flapnose houndshark */ +/* Petroscirtes ancylodon. DESCRIPTION: Arabian fangblenny */ +/* Tactostoma macropus. DESCRIPTION: Longfin dragonfish */ +/* Snyderina guentheri. DESCRIPTION: G */ +/* ünther's waspfish */ +/* Thysanichthys crossotus. DESCRIPTION: */ +/* Sphoeroides pachygaster. DESCRIPTION: Blunthead puffer */ +/* Nototodarus sloanii. DESCRIPTION: Wellington flying squid */ +/* Triso dermopterus. DESCRIPTION: Oval grouper */ +/* Steatocranus casuarius. DESCRIPTION: Lionhead cichlid */ +/* Taractichthys steindachneri. DESCRIPTION: Sickle pomfret */ +/* Trachyrincus scabrus. DESCRIPTION: Roughsnout grenadier */ +/* Pteropsaron evolans. DESCRIPTION: */ +/* Mesoplodon layardii. DESCRIPTION: Strap-toothed whale */ +/* Tresus capax. DESCRIPTION: Fat horse clam */ +/* Tetranesodon conorhynchus. DESCRIPTION: Lorentz catfish */ +/* Triakis acutipinna. DESCRIPTION: Sharpfin houndshark */ +/* Torpedo bauchotae. DESCRIPTION: Rosette torpedo */ +/* Torpedo californica. DESCRIPTION: Pacific electric ray */ +/* Torpedo peruana. DESCRIPTION: Peruvian torpedo */ +/* Triakis megalopterus. DESCRIPTION: Sharptooth houndshark */ +/* Torpedo fairchildi. DESCRIPTION: New Zealand torpedo */ +/* Malaclemys spp. DESCRIPTION: Diamond back terrapins */ +/* Eretmochelys imbricata. DESCRIPTION: Hawksbill turtle */ +/* Torpedo macneilli. DESCRIPTION: Shorttail torpedo */ +/* Torpedo sinuspersici. DESCRIPTION: Variable torpedo ray */ +/* Trematomus tokarevi. DESCRIPTION: Bigeye notothen */ +/* Caretta caretta. DESCRIPTION: Loggerhead turtle */ +/* Triakis maculata. DESCRIPTION: Spotted houndshark */ +/* Torpedo mackayana. DESCRIPTION: Ringed torpedo */ +/* Torpedo nobiliana. DESCRIPTION: Electric ray */ +/* Hypnos monopterygium. DESCRIPTION: Australian numbfish */ +/* Torpedo tokionis. DESCRIPTION: Trapezoid torpedo */ +/* Torpedo marmorata. DESCRIPTION: Marbled electric ray */ +/* Trionyx sinensis. DESCRIPTION: Chinese softshell turtle */ +/* Torpedo panthera. DESCRIPTION: Panther electric ray */ +/* Torpedo fuscomaculata. DESCRIPTION: Black-spotted torpedo */ +/* Torpedo torpedo. DESCRIPTION: Common torpedo */ +/* Torpedo tremens. DESCRIPTION: Chilean torpedo */ +/* Testudinata. DESCRIPTION: Marine turtles nei */ +/* Triakis scyllium. DESCRIPTION: Banded houndshark */ +/* Typhlobelus ternetzi. DESCRIPTION: */ +/* Tuberoschistura cambodgiensis. DESCRIPTION: */ +/* Sotalia fluviatilis. DESCRIPTION: Tucuxi */ +/* Trachurus delagoa. DESCRIPTION: African scad */ +/* Trachinotus stilbe. DESCRIPTION: Steel pompano */ +/* Proteracanthus sarissophorus. DESCRIPTION: */ +/* Chelonia mydas. DESCRIPTION: Green turtle */ +/* Trachinotus rhodopus. DESCRIPTION: Gafftopsail pompano */ +/* Tomeurus gracilis. DESCRIPTION: */ +/* Trachurus indicus. DESCRIPTION: Arabian scad */ +/* Trachinotus mookalee. DESCRIPTION: Indian pompano */ +/* Testudinata. DESCRIPTION: River and lake turtles nei */ +/* Atule mate. DESCRIPTION: Yellowtail scad */ +/* Thunnini. DESCRIPTION: Tunas nei */ +/* Paralticus amboinensis. DESCRIPTION: Ambon rockskipper */ +/* Atropus atropos. DESCRIPTION: Cleftbelly trevally */ +/* Parastacus nicoleti. DESCRIPTION: */ +/* Psetta maxima. DESCRIPTION: Turbot */ +/* Thunnus spp. DESCRIPTION: True tunas nei */ +/* Tubbia tasmanica. DESCRIPTION: Tasmanian ruffe */ +/* Taurocottus bergi. DESCRIPTION: */ +/* Tremoctopus violaceus. DESCRIPTION: Palmate octopus */ +/* Semele solida. DESCRIPTION: Chilean semele */ +/* Scombroidei. DESCRIPTION: Tuna-like fishes nei */ +/* Parastacus brasiliensis. DESCRIPTION: */ +/* Trachurus novaezelandiae. DESCRIPTION: Yellowtail horse mackerel */ +/* Sterna hirundo. DESCRIPTION: Common tern */ +/* Tivela byronensis. DESCRIPTION: Byron tivela */ +/* Vandellia cirrhosa. DESCRIPTION: Candiru */ +/* Trimma avidori. DESCRIPTION: */ +/* Pteraclis velifera. DESCRIPTION: Spotted fanfish */ +/* Sterna paradisaea. DESCRIPTION: Arctic tern */ +/* Thaumeledone gunteri. DESCRIPTION: */ +/* Ardea cinerea. DESCRIPTION: Grey heron */ +/* Talismania homoptera. DESCRIPTION: Hairfin smooth-head */ +/* Travancoria jonesi. DESCRIPTION: */ +/* Parastichopus tremulus. DESCRIPTION: */ +/* Tivela lessonii. DESCRIPTION: Hians tivela */ +/* Tivela mactroides. DESCRIPTION: Triangular tivela */ +/* Tanaidacea. DESCRIPTION: Tanaidaceans */ +/* Talismania longifilis. DESCRIPTION: Longtail slickhead */ +/* Tivela planulata. DESCRIPTION: Flat tivela */ +/* Talismania mekistonema. DESCRIPTION: Threadfin smooth-head */ +/* Tivela tripla. DESCRIPTION: Triple venus */ +/* Stavelia subdistorta. DESCRIPTION: Distorted mussel */ +/* Tivela stultorum. DESCRIPTION: Pismo clam */ +/* Trachypenaeus brevisuturae. DESCRIPTION: Smooth shrimp */ +/* Tivela ventricosa. DESCRIPTION: Ventricose tivela */ +/* Tivela spp. DESCRIPTION: Tivelas nei */ +/* Thenus spp. DESCRIPTION: Flathead lobsters nei */ +/* Cataetyx laticeps. DESCRIPTION: */ +/* Trachypenaeus villaluzi. DESCRIPTION: Philippines rough shrimp */ +/* Sardinella rouxi. DESCRIPTION: Yellowtail sardinella */ +/* Synchiropus phaeton. DESCRIPTION: Phaeton dragonet */ +/* Tewara cranwellae. DESCRIPTION: */ +/* Thalassarche steadi. DESCRIPTION: White-capped albatross */ +/* Tawera gayi. DESCRIPTION: Gay's little venus */ +/* Solaster torulatus. DESCRIPTION: Chubby sun-star */ +/* Trachipterus ishikawae. DESCRIPTION: Slender ribbonfish */ +/* Tellina spp. DESCRIPTION: Tellins nei */ +/* Teuthowenia megalops. DESCRIPTION: Atlantic cranch squid */ +/* Tenualosa macrura. DESCRIPTION: Longtail shad */ +/* Thalassoma lunare. DESCRIPTION: Moon wrasse */ +/* Adelieledone polymorpha. DESCRIPTION: Antarctic knobbed octopus */ +/* Cathorops spixii. DESCRIPTION: Madamango sea catfish */ +/* Pareledone turqueti. DESCRIPTION: Turquet's octopus */ +/* Tripneustes ventricosus. DESCRIPTION: Sea egg */ +/* Thalassoma spp. DESCRIPTION: */ +/* Thynnichthys vaillanti. DESCRIPTION: */ +/* P. mesopotamicus x P. brachypomus. DESCRIPTION: Patinga, hybrid */ +/* Toxotes chatareus. DESCRIPTION: Spotted archerfish */ +/* Telescopium telescopium. DESCRIPTION: Telescope snail */ +/* Tellina fabula. DESCRIPTION: */ +/* Tellina hyalina. DESCRIPTION: Hyaline tellin */ +/* Ctenopharynx intermedius. DESCRIPTION: Blackspot climbing perch */ +/* Toxotes jaculatrix. DESCRIPTION: Banded archerfish */ +/* Takifugu rubripes. DESCRIPTION: Tiger pufferfish */ +/* Toxotes microlepis. DESCRIPTION: Smallscale archerfish */ +/* Teixeirichthys jordani. DESCRIPTION: Jordan's damsel */ +/* Talona explanata. DESCRIPTION: Talona pholaad */ +/* Trachythyone muricata. DESCRIPTION: */ +/* Tetilla leptoderma. DESCRIPTION: */ +/* Tellina senegambiensis. DESCRIPTION: Senegambian tellin */ +/* Tellina strigosa. DESCRIPTION: Thin tellin */ +/* Takifugu spp. DESCRIPTION: Pufferfishes nei */ +/* Trixiphichthys weberi. DESCRIPTION: Blacktip tripodfish */ +/* Pteria spp. DESCRIPTION: Wing oysters nei */ +/* P. mesopotamicus x C. macropomum. DESCRIPTION: Tambacu, hybrid */ +/* C. macropomum x P. brachypomus. DESCRIPTION: Tambatinga, hybrid */ +/* Tanichthys albonubes. DESCRIPTION: White cloud mountain minnow */ +/* Thayeria boehlkei. DESCRIPTION: Blackline penguinfish */ +/* Triplophysa choprai. DESCRIPTION: */ +/* Thynnichthys sandkhol. DESCRIPTION: */ +/* Thymallus brevirostris. DESCRIPTION: Mongolian grayling */ +/* Trachyrhamphus bicoarctatus. DESCRIPTION: Double-ended pipefish */ +/* Taunayia marginata. DESCRIPTION: */ +/* Trachyrincus helolepis. DESCRIPTION: Armourhead grenadier */ +/* Trachyglanis ineac. DESCRIPTION: */ +/* Trachycorystes cratensis. DESCRIPTION: */ +/* Trachypenaeus anchoralis. DESCRIPTION: Hardback shrimp */ +/* Trachycorystes striatulus. DESCRIPTION: Singing catfish */ +/* Tyttocharax madeirae. DESCRIPTION: Blackedge tetra */ +/* Tachysurus nenga. DESCRIPTION: */ +/* Thryssocypris ornithostoma. DESCRIPTION: */ +/* Speoplatyrhinus poulsoni. DESCRIPTION: Alabama cavefish */ +/* Trachelyopterus coriaceus. DESCRIPTION: */ +/* Typhlichthys subterraneus. DESCRIPTION: Southern cavefish */ +/* Thynnichthys thynnoides. DESCRIPTION: */ +/* Trachelyichthys decaradiatus. DESCRIPTION: */ +/* Atya spinipes. DESCRIPTION: Soldier brush shrimp */ +/* Atya pilipes. DESCRIPTION: Koros shrimp */ +/* Thysanactis dentex. DESCRIPTION: */ +/* Trachycorystes trachycorystes. DESCRIPTION: Black catfish */ +/* Trachelyopterichthys anduzei. DESCRIPTION: */ +/* Trachinus araneus. DESCRIPTION: Spotted weever */ +/* Anas crecca. DESCRIPTION: Common teal */ +/* Tor douronensis. DESCRIPTION: Semah mahseer */ +/* Anas penelope. DESCRIPTION: Eurasian wigeon */ +/* Anas platyrhynchos. DESCRIPTION: Mallard */ +/* Sotalia guianensis. DESCRIPTION: Guyana dolphin */ +/* Anatidae. DESCRIPTION: Ducks, geese and swans nei */ +/* Liparis tanakae. DESCRIPTION: Tanaka's snailfish */ +/* Taranetzella lyoderma. DESCRIPTION: Looseskin eelpout */ +/* Tremaster mirabilis. DESCRIPTION: */ +/* Takifugu obscurus. DESCRIPTION: Obscure pufferfish */ +/* Torpedo puelcha. DESCRIPTION: Argentine torpedo */ +/* Takifugu flavidus. DESCRIPTION: Yellowbelly pufferfish */ +/* Trachinus radiatus. DESCRIPTION: Starry weever */ +/* Tor soro. DESCRIPTION: */ +/* Takifugu xanthopterus. DESCRIPTION: Yellowfin pufferfish */ +/* Pterocaesio spp. DESCRIPTION: */ +/* Trachyscorpia echinata. DESCRIPTION: Spiny scorpionfish */ +/* Uaru amphiacanthoides. DESCRIPTION: Uaru */ +/* Sacura boulengeri. DESCRIPTION: Boulenger's anthias */ +/* Taaningichthys minimus. DESCRIPTION: Waistcoat lanternfish */ +/* Cataetyx bruuni. DESCRIPTION: */ +/* Branchiostegus semifasciatus. DESCRIPTION: Zebra tilefish */ +/* Stegastes imbricatus. DESCRIPTION: Cape Verde gregory */ +/* Astroscopus guttatus. DESCRIPTION: Northern stargazer */ +/* Leucetta leptoraphis. DESCRIPTION: */ +/* Priolepis cincta. DESCRIPTION: Girdled goby */ +/* Petroscirtes mitratus. DESCRIPTION: Floral blenny */ +/* Petroscirtes variabilis. DESCRIPTION: Variable sabretooth blenny */ +/* Priolepis randalli. DESCRIPTION: Randall's goby */ +/* Pseudamia tarri. DESCRIPTION: Tarr's cardinalfish */ +/* Pseudochromis caudalis. DESCRIPTION: */ +/* Pseudochromis dutoiti. DESCRIPTION: Dutoiti */ +/* Pseudochromis linda. DESCRIPTION: Yellowtail dottyback */ +/* Themisto gaudichaudii. DESCRIPTION: */ +/* Pseudochromis nigrovittatus. DESCRIPTION: Blackstripe dottyback */ +/* Pseudochromis persicus. DESCRIPTION: Bluespotted dottyback */ +/* Dysomma brevirostre. DESCRIPTION: Batnose eel */ +/* Synaphobranchus affinis. DESCRIPTION: Grey cutthroat eel */ +/* Scarus arabicus. DESCRIPTION: Arabian parrotfish */ +/* Turbinella spp. DESCRIPTION: */ +/* Scorpaenodes elongatus. DESCRIPTION: African spotted scorpionfish */ +/* Rogadius pristiger. DESCRIPTION: Thorny flathead */ +/* Cubiceps caeruleus. DESCRIPTION: Blue fathead */ +/* Cubiceps baxteri. DESCRIPTION: Black fathead */ +/* Cubanichthys cubensis. DESCRIPTION: Cuban killifish */ +/* Pleurobema cordatum. DESCRIPTION: Ohio pigtoe */ +/* Turbo petholatus. DESCRIPTION: Tapestry turban */ +/* Turbo fluctuosus. DESCRIPTION: Pacific turban */ +/* Scarus ferrugineus. DESCRIPTION: Rusty parrotfish */ +/* Turbo chrysostomus. DESCRIPTION: Goldmouth turban */ +/* Lumbrineris impatiens. DESCRIPTION: */ +/* Scarus fuscopurpureus. DESCRIPTION: Purple-brown parrotfish */ +/* Carlhubbsia kidderi. DESCRIPTION: */ +/* Serpulorbis colubrinus. DESCRIPTION: Snake-like worm shell */ +/* Ubidia magdalenensis. DESCRIPTION: */ +/* Turbo canaliculatus. DESCRIPTION: Channelled turban */ +/* Cubiceps kotlyari. DESCRIPTION: */ +/* Cubiceps capensis. DESCRIPTION: Cape fathead */ +/* Turbo squamiger. DESCRIPTION: Squamate turban */ +/* Turbo argyrostomus. DESCRIPTION: Silvermouth turban */ +/* Umbrina spp. DESCRIPTION: Drums nei */ +/* Umbonium costatum. DESCRIPTION: Costate top */ +/* Cubiceps pauciradiatus. DESCRIPTION: Bigeye cigarfish */ +/* Pseudobalistes flavimarginatus. DESCRIPTION: Yellowmargin triggerfish */ +/* Scorpaenodes muciparus. DESCRIPTION: */ +/* Turbo saxosus. DESCRIPTION: Stone turban */ +/* Turbinella pyrum. DESCRIPTION: Indian chank */ +/* Upeneus asymmetricus. DESCRIPTION: Asymmetrical goatfish */ +/* Umbrina canariensis. DESCRIPTION: Canary drum(=Baardman) */ +/* Paleosuchus palpebrosus. DESCRIPTION: Cuvier's Dwarf caiman */ +/* Ucides cordatus. DESCRIPTION: Swamp ghost crab */ +/* Ucides occidentalis. DESCRIPTION: Mangrove ghost crab */ +/* Fucus gardneri. DESCRIPTION: Common rockweed */ +/* Pseudotriacanthus strigilifer. DESCRIPTION: Long-spined tripodfish */ +/* Uca tangeri. DESCRIPTION: West african fiddler crab */ +/* Loxechinus albus. DESCRIPTION: Chilean sea urchin */ +/* Paleosuchus trigonatus. DESCRIPTION: Smooth-fronted caiman */ +/* Turricula javana. DESCRIPTION: Javanese turrid */ +/* Ulcina olrikii. DESCRIPTION: Arctic alligatorfish */ +/* Cucullaea labiata. DESCRIPTION: Hooked ark */ +/* Auchenionchus microcirrhis. DESCRIPTION: */ +/* Pseudocrenilabrus nicholsi. DESCRIPTION: */ +/* Etropus crossotus. DESCRIPTION: Fringed flounder */ +/* Tucetona pectunculus. DESCRIPTION: Comb bittersweet */ +/* Capnea georgiana. DESCRIPTION: */ +/* Tucetona strigilata. DESCRIPTION: Tessellated bittersweet */ +/* Coreoleuciscus splendidus. DESCRIPTION: */ +/* Cualac tessellatus. DESCRIPTION: Checkered pupfish */ +/* Fucus spp. DESCRIPTION: */ +/* Upeneus doriae. DESCRIPTION: Gilded goatfish */ +/* Upeneus japonicus. DESCRIPTION: Bensasi goatfish */ +/* Ucla xenogrammus. DESCRIPTION: Largemouth triplefin */ +/* Uranoscopus guttatus. DESCRIPTION: */ +/* Uranoscopus dollfusi. DESCRIPTION: Dollfus' stargazer */ +/* Pseudeutropius atherinoides. DESCRIPTION: Indian potasi */ +/* Pseudopimelodus albomarginatus. DESCRIPTION: */ +/* Pseudoplatystoma corruscans. DESCRIPTION: Spotted sorubim */ +/* Uraspis helvola. DESCRIPTION: Whitetongue jack */ +/* Pseudotropheus ater. DESCRIPTION: */ +/* Pseudoplatystoma fasciatum. DESCRIPTION: Barred sorubim */ +/* Pseudamiops gracilicauda. DESCRIPTION: Graceful-tailed cardinalfish */ +/* Pterocaesio capricornis. DESCRIPTION: Capricorn fusilier */ +/* Pseudoscopelus altipinnis. DESCRIPTION: */ +/* Pseudaesopia japonica. DESCRIPTION: Wavyband sole */ +/* Pterocaesio tile. DESCRIPTION: Dark-banded fusilier */ +/* Pseudotropheus callainos. DESCRIPTION: */ +/* Pseudotolithus moorii. DESCRIPTION: Cameroon croaker */ +/* Pseudotropheus elongatus. DESCRIPTION: Elongate mbuna */ +/* Undaria pinnatifida. DESCRIPTION: Wakame */ +/* Munida gregaria. DESCRIPTION: Swarming squat lobster */ +/* Pseudotropheus aurora. DESCRIPTION: */ +/* Undaria spp. DESCRIPTION: Wakame nei */ +/* Pseudoplatystoma tigrinum. DESCRIPTION: Tiger sorubim */ +/* Pseudupeneus maculatus. DESCRIPTION: Spotted goatfish */ +/* Pseudamussium clavatum. DESCRIPTION: Club scallop */ +/* Trochita pileus. DESCRIPTION: */ +/* Trochita spp. DESCRIPTION: */ +/* Pseudamia zonata. DESCRIPTION: Paddlefish cardinalfish */ +/* Stereomastis suhmi. DESCRIPTION: */ +/* Lepidopus dubius. DESCRIPTION: Doubtful scabbardfish */ +/* Paragobiodon xanthosoma. DESCRIPTION: Emerald coral goby */ +/* Couesius plumbeus. DESCRIPTION: Lake chub */ +/* Munida spp. DESCRIPTION: */ +/* Sufflamen albicaudatus. DESCRIPTION: Bluethroat triggerfish */ +/* Sufflogobius bibarbatus. DESCRIPTION: */ +/* Sufflamen chrysopterus. DESCRIPTION: Halfmoon triggerfish */ +/* Euphausia distinguenda. DESCRIPTION: */ +/* Euphausia eximia. DESCRIPTION: */ +/* Pseudotropheus tropheops. DESCRIPTION: */ +/* Euphausia gibboides. DESCRIPTION: */ +/* Euphausia hanseni. DESCRIPTION: */ +/* Euphausia diomedeae. DESCRIPTION: */ +/* Eunephrops bairdii. DESCRIPTION: Red lobster */ +/* Euphausia americana. DESCRIPTION: */ +/* Euphausia lucens. DESCRIPTION: */ +/* Euphausia lamelligera. DESCRIPTION: */ +/* Euphausia nana. DESCRIPTION: */ +/* Bufonaria crumena. DESCRIPTION: Purse frog shell */ +/* Euphausia pacifica. DESCRIPTION: Isada krill */ +/* Euphausia tenera. DESCRIPTION: */ +/* Euphausia similis. DESCRIPTION: */ +/* Aulacocephalus temmincki. DESCRIPTION: Goldribbon soapfish */ +/* Leptocarpus fluminicola. DESCRIPTION: Ganges delta prawn */ +/* Thermiphione spp. DESCRIPTION: Thermiphione scaleworms */ +/* Pseudotropheus zebra. DESCRIPTION: Zebra mbuna */ +/* Strombus gallus. DESCRIPTION: Roster-tail conch */ +/* Pugilina cochlidium. DESCRIPTION: Spiral melongena */ +/* Coreius guichenoti. DESCRIPTION: */ +/* Pugilina colosseus. DESCRIPTION: Colossal melongena */ +/* Cunningtonia longiventralis. DESCRIPTION: */ +/* Genyagnus monopterygius. DESCRIPTION: Spotted stargazer */ +/* Pugilina morio. DESCRIPTION: Giant hairy melongena */ +/* Bregmaceros rarisquamosus. DESCRIPTION: Big-eye unicorn-cod */ +/* Pugilina ternatana. DESCRIPTION: Ternate melongena */ +/* Scaeurgus unicirrhus. DESCRIPTION: Unihorn octopus */ +/* Pugilina spp. DESCRIPTION: */ +/* Branchiostegus doliatus. DESCRIPTION: Ribbed tilefish */ +/* Uegitglanis zammaranoi. DESCRIPTION: */ +/* Pseudorhombus arsius. DESCRIPTION: Largetooth flounder */ +/* Moroteuthis robustus. DESCRIPTION: Robust clubhook squid */ +/* Opisthoteuthis depressa. DESCRIPTION: */ +/* Pseudorhombus elevatus. DESCRIPTION: Deep flounder */ +/* Pseudorhombus malayanus. DESCRIPTION: Malayan flounder */ +/* Pseudovespicula dracaena. DESCRIPTION: Draco waspfish */ +/* Pteragogus flagellifer. DESCRIPTION: Cocktail wrasse */ +/* Pseudorhombus javanicus. DESCRIPTION: Javan flounder */ +/* Moroteuthis knipovitchi. DESCRIPTION: Smooth hooked squid */ +/* Sepioteuthis lessoniana. DESCRIPTION: Bigfin reef squid */ +/* Ptereleotris microlepis. DESCRIPTION: Blue gudgeon */ +/* Moroteuthis lonnbergi. DESCRIPTION: Japanese hooked squid */ +/* Pseudorhombus oligodon. DESCRIPTION: Roughscale flounder */ +/* Pseudorhombus pentophthalmus. DESCRIPTION: Fivespot flounder */ +/* Pterois miles. DESCRIPTION: Devil firefish */ +/* Moroteuthis robsoni. DESCRIPTION: Rugose hooked squid */ +/* Sepioteuthis sepioidea. DESCRIPTION: Caribbean reef squid */ +/* Pseudorhombus triocellatus. DESCRIPTION: Three spotted flounder */ +/* Sepioteuthis australis. DESCRIPTION: Southern reef squid */ +/* Sepioteuthis spp. DESCRIPTION: Reef squids nei */ +/* Moroteuthis spp. DESCRIPTION: Hooked squids nei */ +/* Sufflamen fraenatum. DESCRIPTION: Masked triggerfish */ +/* Ichthyscopus barbatus. DESCRIPTION: Fringed stargazer */ +/* Turbinaria conoides. DESCRIPTION: Sea bell */ +/* Turritella duplicata. DESCRIPTION: Duplicate turret */ +/* Etropus intermedius. DESCRIPTION: */ +/* Scopelosaurus argenteus. DESCRIPTION: Waryfish */ +/* Scopelosaurus lepidus. DESCRIPTION: Blackfin waryfish */ +/* Puffinus lherminieri. DESCRIPTION: Audubon's shearwater */ +/* Puffinus mauretanicus. DESCRIPTION: Balearic shearwater */ +/* Pusia ebenus. DESCRIPTION: Ebony miter */ +/* Turbinaria ornata. DESCRIPTION: Crowned sea bell */ +/* Puffinus puffinus. DESCRIPTION: Manx shearwater */ +/* Turritella terebra. DESCRIPTION: Screw turret */ +/* Plagusia depressa. DESCRIPTION: Tidal spray crab */ +/* Plagusia tuberculata. DESCRIPTION: Tuberculated light-foot crab */ +/* Turbinaria decurrens. DESCRIPTION: Triangular sea bell */ +/* Sinum spp. DESCRIPTION: */ +/* Turris babylonia. DESCRIPTION: Babylonia turrid */ +/* Uranoscopus albesca. DESCRIPTION: Longspine stargazer */ +/* Aulopus cadenati. DESCRIPTION: Guinean flagfin */ +/* Uranoscopus cadenati. DESCRIPTION: West African stargazer */ +/* Uranoscopus polli. DESCRIPTION: Whitespotted stargazer */ +/* Cubiceps whiteleggii. DESCRIPTION: Shadow driftfish */ +/* Sanguinolaria spp. DESCRIPTION: */ +/* Kathetostoma albigutta. DESCRIPTION: Lancer stargazer */ +/* Arbacia lixula. DESCRIPTION: Black sea urchin */ +/* Eucheuma arnoldii. DESCRIPTION: Mottled sea club */ +/* Echinometra mathaei. DESCRIPTION: Hedgehog sea urchin */ +/* Eucheuma isiforme. DESCRIPTION: */ +/* Bunaka pinguis. DESCRIPTION: */ +/* Echinometra vanbrunti. DESCRIPTION: Purple Pacific sea urchin */ +/* Cephalopholis leopardus. DESCRIPTION: Leopard hind */ +/* Pseudorhombus spp. DESCRIPTION: */ +/* Caulolatilus affinis. DESCRIPTION: Bighead tilefish */ +/* Panulirus albiflagellum. DESCRIPTION: White whisker spiny lobster */ +/* Aulopareia cyanomos. DESCRIPTION: */ +/* Aulonocara auditor. DESCRIPTION: */ +/* Ulua mentalis. DESCRIPTION: Longrakered trevally */ +/* Aulopus filamentosus. DESCRIPTION: Royal flagfin */ +/* Calotomus carolinus. DESCRIPTION: Carolines parrotfish */ +/* Hastula hectica. DESCRIPTION: Sandbeach auger */ +/* Achirus lineatus. DESCRIPTION: Lined sole */ +/* Bullia miran. DESCRIPTION: Miran bullia */ +/* Austriella corrugata. DESCRIPTION: Corrugate lucine */ +/* Spirulina platensis. DESCRIPTION: */ +/* Caulolatilus microps. DESCRIPTION: Grey tilefish */ +/* Cultellus tenuis. DESCRIPTION: African knife shell */ +/* Spisula solida. DESCRIPTION: Solid surf clam */ +/* Caulolatilus princeps. DESCRIPTION: Ocean whitefish */ +/* Spirulina subsalsa. DESCRIPTION: Sea spirulina */ +/* Turritella monterosatoi. DESCRIPTION: Monterosato's auger */ +/* Stanulus seychellensis. DESCRIPTION: Seychelle's blenny */ +/* Spisula subtruncata. DESCRIPTION: Subtruncate surf clam */ +/* Ulua aurochs. DESCRIPTION: Silvermouth trevally */ +/* Spisula ovalis. DESCRIPTION: Oval surf clam */ +/* Aulonocranus dewindti. DESCRIPTION: */ +/* Spirulina maxima. DESCRIPTION: */ +/* Calotomus spinidens. DESCRIPTION: Spinytooth parrotfish */ +/* Pseudomancopsetta andriashevi. DESCRIPTION: */ +/* Umbrina broussonnetii. DESCRIPTION: Striped drum */ +/* Umbrina coroides. DESCRIPTION: Sand drum */ +/* Silurus meridionalis. DESCRIPTION: Chinese large-mouth catfish */ +/* Calumia godeffroyi. DESCRIPTION: Tailface sleeper */ +/* Aruma histrio. DESCRIPTION: Slow goby */ +/* Etropus microstomus. DESCRIPTION: Smallmouth flounder */ +/* Amusium japonicum. DESCRIPTION: Saucer scallop */ +/* Umbra krameri. DESCRIPTION: Mudminnow */ +/* Portumnus latipes. DESCRIPTION: Slender swimcrab */ +/* Hemibarbus maculatus. DESCRIPTION: Spotted steed */ +/* Umbrina ronchus. DESCRIPTION: Fusca drum */ +/* Amusium pleuronectes. DESCRIPTION: Asian moon scallop */ +/* Umbrina roncador. DESCRIPTION: Yellowfin drum */ +/* Umbrina steindachneri. DESCRIPTION: Steindachner's drum */ +/* Sinum concavum. DESCRIPTION: Concave baby's ear */ +/* Umbonium vestiarium. DESCRIPTION: Common button top */ +/* Umbrina xanti. DESCRIPTION: Polla drum */ +/* Amusium papyraceum. DESCRIPTION: Paper moon scallop */ +/* Achirus mazatlanus. DESCRIPTION: Mazatlan sole */ +/* Placuna placenta. DESCRIPTION: Windowpane oyster */ +/* Bregmaceros mcclellandi. DESCRIPTION: Unicorn cod */ +/* Lupinoblennius dispar. DESCRIPTION: Mangrove blenny */ +/* Mulinia cleryana. DESCRIPTION: Caribbean surf clam */ +/* Placuna ephippium. DESCRIPTION: Saddle oyster */ +/* Portunus sanguinolentus. DESCRIPTION: Threespot swimming crab */ +/* Dunaliella salina. DESCRIPTION: */ +/* Dunaliella tertiolecta. DESCRIPTION: */ +/* Uncisudis longirostra. DESCRIPTION: */ +/* Pungu maclareni. DESCRIPTION: */ +/* Bufonaria nana. DESCRIPTION: Dwarf frog shell */ +/* Munida obesa. DESCRIPTION: Stout squat lobster */ +/* Munida propinqua. DESCRIPTION: Deep-water squat lobster */ +/* Lunatia catena. DESCRIPTION: Chained moon-shell */ +/* Munida refulgens. DESCRIPTION: Radiant squat lobster */ +/* Munida tenella. DESCRIPTION: Long-clawed squat lobster */ +/* Sanguinolaria cruenta. DESCRIPTION: Operculate sanguin */ +/* Bullia spp. DESCRIPTION: */ +/* Turbo marmoratus. DESCRIPTION: Green turban */ +/* Turbo bruneus. DESCRIPTION: Brown Pacific turban */ +/* Upogebia capensis. DESCRIPTION: Cape mud shrimp */ +/* Serpulorbis medusae. DESCRIPTION: Jellyfish worm shell */ +/* Undulostrea megodon. DESCRIPTION: Megodon oyster */ +/* Turbo cinereus. DESCRIPTION: Smooth moon turban */ +/* Upogebia major. DESCRIPTION: Japanese mud shrimp */ +/* Bufonaria rana. DESCRIPTION: Common frog shell */ +/* Turbo coronatus. DESCRIPTION: Coronate moon turban */ +/* Upogebia pugettensis. DESCRIPTION: Blue mud shrimp */ +/* Turbo crassus. DESCRIPTION: Crass turban */ +/* Turbo setosus. DESCRIPTION: Rough turban */ +/* Turbo castanea. DESCRIPTION: Chestnut turban */ +/* Cultellus spp. DESCRIPTION: */ +/* Pleuroploca trapezium. DESCRIPTION: Trapezium horse conch */ +/* Eunephrops manningi. DESCRIPTION: Banded lobster */ +/* Eunephrops cadenasi. DESCRIPTION: Sculptured lobster */ +/* Pleuroscopus pseudodorsalis. DESCRIPTION: */ +/* Etropus peruvianus. DESCRIPTION: Peruvian flounder */ +/* Upeneus arge. DESCRIPTION: Band-tail goatfish */ +/* Upeneus pori. DESCRIPTION: Por's goatfish */ +/* Upeneus vittatus. DESCRIPTION: Yellowstriped goatfish */ +/* Upogebia pusilla. DESCRIPTION: Mediterranean mud shrimp */ +/* Pleuroploca princeps. DESCRIPTION: Prince horse conch */ +/* Upeneichthys lineatus. DESCRIPTION: Blue-striped mullet */ +/* Upeneus moluccensis. DESCRIPTION: Goldband goatfish */ +/* Pseudopercis numida. DESCRIPTION: Namorado sandperch */ +/* Leptocarpus potamiscus. DESCRIPTION: Bombay prawn */ +/* Upeneus parvus. DESCRIPTION: Dwarf goatfish */ +/* Purpura pansa. DESCRIPTION: Wide-foot purpura */ +/* Pseudopercis semifasciata. DESCRIPTION: Argentinian sandperch */ +/* Upeneus sulphureus. DESCRIPTION: Sulphur goatfish */ +/* Upeneus tragula. DESCRIPTION: Freckled goatfish */ +/* Upeneus sundaicus. DESCRIPTION: Ochrebanded goatfish */ +/* Upsilodus victori. DESCRIPTION: */ +/* Upogebia wuhsienweni. DESCRIPTION: Chines mud lobster */ +/* Purpura panama. DESCRIPTION: Rudolph's purpura */ +/* Pseudoplatystoma spp. DESCRIPTION: Sorubims nei */ +/* Purpura persica. DESCRIPTION: Persian purpura */ +/* Pleuroploca salmo. DESCRIPTION: Salmon horse conch */ +/* Uria aalge. DESCRIPTION: Common murre */ +/* Uria lomvia. DESCRIPTION: Thick-billed murre */ +/* Lutraria spp. DESCRIPTION: */ +/* Uranoscopus spp. DESCRIPTION: Stargazers */ +/* Uroteuthis bartschi. DESCRIPTION: Bartsch's squid */ +/* Strongylocentrotus spp. DESCRIPTION: Sea urchins nei */ +/* Pleurosicya annandalei. DESCRIPTION: Scalynape goby */ +/* Urophycis earllii. DESCRIPTION: Carolina hake */ +/* Urophycis floridana. DESCRIPTION: Southern codling */ +/* Urophycis regia. DESCRIPTION: Spotted codling */ +/* Puerulus spp. DESCRIPTION: Whip lobsters nei */ +/* Urophycis cirrata. DESCRIPTION: Gulf hake */ +/* Tiariturris libya. DESCRIPTION: Lybian turrid */ +/* Muricopsis cristatus. DESCRIPTION: Blainville's murex */ +/* Puerulus angulatus. DESCRIPTION: Banded whip lobster */ +/* Paracentrotus lividus. DESCRIPTION: Stony sea urchin */ +/* Urocampus carinirostris. DESCRIPTION: */ +/* Turritella turbona. DESCRIPTION: Muddy auger */ +/* Munida rugosa. DESCRIPTION: Rugose squat lobster */ +/* Echinus esculentus. DESCRIPTION: European edible sea urchin */ +/* Puerulus carinatus. DESCRIPTION: Red whip lobster */ +/* Uraspis uraspis. DESCRIPTION: Whitemouth jack */ +/* Puerulus velutinus. DESCRIPTION: Velvet whip lobster */ +/* Puerulus sewelli. DESCRIPTION: Arabian whip lobster */ +/* Echinoidea. DESCRIPTION: Sea urchins, etc. nei */ +/* Parachaeturichthys polynema. DESCRIPTION: Taileyed goby */ +/* Urophycis spp. DESCRIPTION: Urophycis nei */ +/* Austrolabrus maculatus. DESCRIPTION: */ +/* Labrus bergylta. DESCRIPTION: Ballan wrasse */ +/* Cosmochilus cardinalis. DESCRIPTION: */ +/* Echinus acutus. DESCRIPTION: */ +/* Uraspis secunda. DESCRIPTION: Cottonmouth jack */ +/* Scarus forsteni. DESCRIPTION: Forsten's parrotfish */ +/* Malleus regula. DESCRIPTION: Straight hammer oyster */ +/* Pulsellum salishorum. DESCRIPTION: Salish toothshell */ +/* Labrus mixtus. DESCRIPTION: Cuckoo wrasse */ +/* Calotomus japonicus. DESCRIPTION: Japanese parrotfish */ +/* Brosme brosme. DESCRIPTION: Tusk(=Cusk) */ +/* Pterotolithus lateoides. DESCRIPTION: Bigmouth croaker */ +/* Pterotolithus maculatus. DESCRIPTION: Blotched tiger-toothed croaker */ +/* Scarus taeniopterus. DESCRIPTION: Princess parrotfish */ +/* Austronibea oedogenys. DESCRIPTION: Yellowtail croaker */ +/* Clepticus parrae. DESCRIPTION: Creole wrasse */ +/* Selenoscopus turbisquamatus. DESCRIPTION: */ +/* Cetoscarus bicolor. DESCRIPTION: Bicolour parrotfish */ +/* Scarus iserti. DESCRIPTION: Striped parrotfish */ +/* Silurus triostegus. DESCRIPTION: */ +/* Scarus coeruleus. DESCRIPTION: Blue parrotfish */ +/* Pseudosimochromis curvifrons. DESCRIPTION: */ +/* Scarus persicus. DESCRIPTION: Gulf parrotfish */ +/* Scarus spp. DESCRIPTION: */ +/* Scarus ghobban. DESCRIPTION: Blue-barred parrotfish */ +/* Scarus frenatus. DESCRIPTION: Bridled parrotfish */ +/* Lutraria angustior. DESCRIPTION: Narrow otter shell */ +/* Butis butis. DESCRIPTION: Duckbill sleeper */ +/* Sunetta truncata. DESCRIPTION: Truncate sunetta */ +/* Haustellum donmoorei. DESCRIPTION: Don Moore's murex */ +/* Lutraria elongata. DESCRIPTION: Elongate mactra */ +/* Lunatia fusca. DESCRIPTION: Brown moon-shell */ +/* Lunatia guillemini. DESCRIPTION: Guillemin's moon-shell */ +/* Haustellum chrysostoma. DESCRIPTION: Goldmouth murex */ +/* Secutor insidiator. DESCRIPTION: Pugnose ponyfish */ +/* Echinus melo. DESCRIPTION: */ +/* Stoloteuthis leucoptera. DESCRIPTION: Leucoptera bobtail squid */ +/* Lutraria lutraria. DESCRIPTION: Common otter shell */ +/* Lutraria magna. DESCRIPTION: Oblong otter shell */ +/* Nuttallia nuttallii. DESCRIPTION: Nuttall's mahogany clam */ +/* Turritella communis. DESCRIPTION: Horny auger */ +/* Lunatia pulchella. DESCRIPTION: Pretty moon-shell */ +/* Echinus multidentatus. DESCRIPTION: Deepsea kina */ +/* Secutor ruconius. DESCRIPTION: Deep pugnose ponyfish */ +/* Haustellum messorius. DESCRIPTION: Messorius murex */ +/* Austropotamobius torrentium. DESCRIPTION: Stone crayfish */ +/* Sunetta menstrualis. DESCRIPTION: Mauve sunetta */ +/* Pseudoplatystoma reticulatum. DESCRIPTION: */ +/* Secutor spp. DESCRIPTION: */ +/* Tutufa bubo. DESCRIPTION: Giant frog shell */ +/* Uranoscopus scaber. DESCRIPTION: Stargazer */ +/* Chlorurus bowersi. DESCRIPTION: Bower's parrotfish */ +/* Tutufa rubeta. DESCRIPTION: Reddish frog shell */ +/* Suruga fundicola. DESCRIPTION: */ +/* Chlorurus gibbus. DESCRIPTION: Heavybeak parrotfish */ +/* Musculista senhousia. DESCRIPTION: Senhouse horse mussel */ +/* Eualus sinensis. DESCRIPTION: Iso shrimp */ +/* Uranoscopus japonicus. DESCRIPTION: */ +/* Eualus leptognathus. DESCRIPTION: Yamato shrimp */ +/* Eualus macilentus. DESCRIPTION: Greenland shrimp */ +/* Bursa bufonia. DESCRIPTION: Warty frog shell */ +/* Chlorurus bleekeri. DESCRIPTION: Bleeker's parrotfish */ +/* Haustellum haustellum. DESCRIPTION: Snipe's bill murex */ +/* Haustellum recurvirostris. DESCRIPTION: Bent-beak murex */ +/* Chlorurus sordidus. DESCRIPTION: Daisy parrotfish */ +/* Solecurtus strigilatus. DESCRIPTION: Rasp short razor */ +/* Luposicya lupus. DESCRIPTION: */ +/* Chlorurus frontalis. DESCRIPTION: Pacific slopehead parrotfish */ +/* Solecurtus spp. DESCRIPTION: */ +/* Chlorurus strongylocephalus. DESCRIPTION: Steephead parrotfish */ +/* Ulvicola sanctaerosae. DESCRIPTION: Kelp gunnel */ +/* Scarus hoefleri. DESCRIPTION: Guinean parrotfish */ +/* Ulva conglobata. DESCRIPTION: */ +/* Scarus psittacus. DESCRIPTION: Common parrotfish */ +/* Scarus rubroviolaceus. DESCRIPTION: Ember parrotfish */ +/* Ulva fasciata. DESCRIPTION: */ +/* Scarus russelii. DESCRIPTION: Eclipse parrotfish */ +/* Scarus tricolor. DESCRIPTION: Tricolour parrotfish */ +/* Sueviota lachneri. DESCRIPTION: */ +/* Scarus niger. DESCRIPTION: Dusky parrotfish */ +/* Ulva pertusa. DESCRIPTION: Lacy sea lettuce */ +/* Ulva rigida. DESCRIPTION: Chicory sea lettuce */ +/* Ulva reticulata. DESCRIPTION: */ +/* Ulvaria subbifurcata. DESCRIPTION: Radiated shanny */ +/* Scarus vetula. DESCRIPTION: Queen parrotfish */ +/* Ulva lactuca. DESCRIPTION: Sea lettuce */ +/* Pleuroploca spp. DESCRIPTION: Horse conches nei */ +/* Uroptychus spp. DESCRIPTION: */ +/* Xenocephalus armatus. DESCRIPTION: */ +/* Pereulixia kosiensis. DESCRIPTION: */ +/* Murex pecten. DESCRIPTION: Venus comb murex */ +/* Murex trapa. DESCRIPTION: Rarespined murex */ +/* Turbo spp. DESCRIPTION: Turbans nei */ +/* Murex ternispina. DESCRIPTION: Black-spined murex */ +/* Murex tribulus. DESCRIPTION: Caltrop murex */ +/* Telesto spp. DESCRIPTION: Long polyp soft corals nei */ +/* Catathyridium jenynsii. DESCRIPTION: */ +/* Strongylocentrotus droebachiensis. DESCRIPTION: */ +/* Puffinus yelkouan. DESCRIPTION: Yelkouan shearwater */ +/* Strongylocentrotus franciscanus. DESCRIPTION: Red sea urchin */ +/* Strongylocentrotus intermedius. DESCRIPTION: Japanese sea urchin */ +/* Aguarunichthys torosus. DESCRIPTION: */ +/* Sumireyakko venustus. DESCRIPTION: Purplemask angelfish */ +/* Pseudopercis spp. DESCRIPTION: */ +/* Schultzea beta. DESCRIPTION: School bass */ +/* Capitella capitata. DESCRIPTION: Gallery worm */ +/* Rhabdosargus spp. DESCRIPTION: Stumpnoses nei */ +/* Valenciennea alleni. DESCRIPTION: */ +/* Varicorhinus capoeta. DESCRIPTION: Seven khramulya */ +/* Campogramma glaycos. DESCRIPTION: Vadigo */ +/* Vaillantella cinnamomea. DESCRIPTION: */ +/* Variichthys jamoerensis. DESCRIPTION: Jamur Lake grunter */ +/* Varuna litterata. DESCRIPTION: Peregrine crab */ +/* Vanderhorstia ambanoro. DESCRIPTION: Ambanoro prawn-goby */ +/* Vanneaugobius canariensis. DESCRIPTION: */ +/* Phocoena sinus. DESCRIPTION: Vaquita */ +/* Salvelinus malma. DESCRIPTION: Dolly varden */ +/* Valenciennellus tripunctulatus. DESCRIPTION: */ +/* Varuna yui. DESCRIPTION: Sundaic paddler crab */ +/* Bursidae. DESCRIPTION: Frog shell nei */ +/* Varicus marilynae. DESCRIPTION: Orangebelly goby */ +/* Velodona togata. DESCRIPTION: */ +/* Platytroctidae. DESCRIPTION: */ +/* Vanacampus margaritifer. DESCRIPTION: Mother-of-pearl pipefish */ +/* Provocator pulcher. DESCRIPTION: Challenger volute */ +/* Phosichthyidae. DESCRIPTION: */ +/* Ipnopidae. DESCRIPTION: */ +/* Ventrifossa atherodon. DESCRIPTION: Arrowtooth grenadier */ +/* Ventrifossa divergens. DESCRIPTION: Plainfin grenadier */ +/* Ventrifossa ctenomelas. DESCRIPTION: Hawaiian grenadier */ +/* Ventrifossa garmani. DESCRIPTION: Sagami grenadier */ +/* Ventrifossa nigrodorsalis. DESCRIPTION: Spinaker grenadier */ +/* Ventrifossa macropogon. DESCRIPTION: Longbeard grenadier */ +/* Venerupis spp. DESCRIPTION: */ +/* Verilus sordidus. DESCRIPTION: */ +/* Cetengraulis mysticetus. DESCRIPTION: Pacific anchoveta */ +/* Cycethra verrucosa. DESCRIPTION: */ +/* Ventrifossa petersoni. DESCRIPTION: Peterson's grenadier */ +/* Engraulis ringens. DESCRIPTION: Anchoveta(=Peruvian anchovy) */ +/* Vellitor centropomus. DESCRIPTION: */ +/* Venus verrucosa. DESCRIPTION: Warty venus */ +/* Venus spp. DESCRIPTION: */ +/* Ventrifossa nasuta. DESCRIPTION: Conesnout grenadier */ +/* Valenciennea persica. DESCRIPTION: */ +/* Valenciennea sexguttata. DESCRIPTION: Sixspot goby */ +/* Nemichthyidae. DESCRIPTION: */ +/* Mitridae. DESCRIPTION: Mitres nei */ +/* Valencia hispanica. DESCRIPTION: Valencia toothcarp */ +/* Heterenchelyidae. DESCRIPTION: */ +/* Vinciguerria attenuata. DESCRIPTION: */ +/* Vincentia chrysura. DESCRIPTION: */ +/* Vinciguerria nimbaria. DESCRIPTION: Oceanic lightfish */ +/* Vimba melanops. DESCRIPTION: Macedonian vimba */ +/* Vinciguerria poweriae. DESCRIPTION: Power's deep-water bristle-mou */ +/* Vimba vimba. DESCRIPTION: Vimba bream */ +/* Vinculum sexfasciatum. DESCRIPTION: Moonlighter */ +/* Villorita cyprinoides. DESCRIPTION: Common Indian marsh clam */ +/* Alestidae. DESCRIPTION: */ +/* Vepricardium asiaticum. DESCRIPTION: Asiatic cockle */ +/* Vepricardium sinense. DESCRIPTION: Chinese cockle */ +/* Bregmaceros spp. DESCRIPTION: */ +/* Leuciscus bergi. DESCRIPTION: Issyk-Kul dace */ +/* Villosa iris. DESCRIPTION: Rainbow */ +/* Volema myristica. DESCRIPTION: Nutmeg melongena */ +/* Palinuridae. DESCRIPTION: Spiny lobsters nei */ +/* Leuciscus schmidti. DESCRIPTION: Schmidt's dace */ +/* Voluta musica. DESCRIPTION: Common music volute */ +/* Voluta virescens. DESCRIPTION: Green music volute */ +/* Valencia letourneuxi. DESCRIPTION: Corfu toothcarp */ +/* Valamugil cunnesius. DESCRIPTION: Longarm mullet */ +/* Valamugil seheli. DESCRIPTION: Bluespot mullet */ +/* Metavelifer multiradiatus. DESCRIPTION: Spinyfin velifer */ +/* Valamugil speigleri. DESCRIPTION: Speigler's mullet */ +/* Valamugil spp. DESCRIPTION: */ +/* Venerupis aurea. DESCRIPTION: Golden carpet shell */ +/* Vanstraelenia chirophthalmus. DESCRIPTION: African solenette */ +/* Ventricolaria rigida. DESCRIPTION: Rigid venus */ +/* Ventricolaria isocardia. DESCRIPTION: Heart venus */ +/* Venerupis rhomboides. DESCRIPTION: Banded carpet shell */ +/* Venus nux. DESCRIPTION: */ +/* Vomeridens infuscipinnis. DESCRIPTION: */ +/* Volachlamys singaporina. DESCRIPTION: Singapore scallop */ +/* Vespicula depressifrons. DESCRIPTION: */ +/* Variola albimarginata. DESCRIPTION: White-edged lyretail */ +/* Variola louti. DESCRIPTION: Yellow-edged lyretail */ +/* Chlamys varia. DESCRIPTION: Variegated scallop */ +/* Vasum ceramicum. DESCRIPTION: Ceram vase */ +/* Scopelosaurus spp. DESCRIPTION: */ +/* Vasum caestus. DESCRIPTION: Gauntlet vase */ +/* Verasper moseri. DESCRIPTION: Barfin flounder */ +/* Vasum capitellum. DESCRIPTION: Spiny vase */ +/* Vasum turbinellus. DESCRIPTION: Top vase */ +/* Vasum muricatum. DESCRIPTION: Caribbean vase */ +/* Verasper variegatus. DESCRIPTION: Spotted halibut */ +/* Nomeidae. DESCRIPTION: Driftfishes nei */ +/* Venerupis corrugata. DESCRIPTION: Corrugated venus */ +/* Venerupis dura. DESCRIPTION: Durable venus */ +/* Venus foliaceolamellosa. DESCRIPTION: Plicate venus */ +/* Syngnathidae. DESCRIPTION: Pipefishes, seahorses nei */ +/* Velifer hypselopterus. DESCRIPTION: Sailfin velifer */ +/* Volva volva. DESCRIPTION: Shuttlecock volva */ +/* Tripterygiidae. DESCRIPTION: Threefin blennies nei */ +/* Virididentex acromegalus. DESCRIPTION: Bulldog dentex */ +/* Vexillum rugosum. DESCRIPTION: Rugose iter */ +/* Vexillum vulpeculum. DESCRIPTION: Little-fox miter */ +/* Vexilla vexillum. DESCRIPTION: Vexillate jopas */ +/* Astyanax spp. DESCRIPTION: Astyanax nei */ +/* Uranoscopidae. DESCRIPTION: Stargazers nei */ +/* Wallago attu. DESCRIPTION: Wallago */ +/* Parabramis pekinensis. DESCRIPTION: White amur bream */ +/* Acanthocybium solandri. DESCRIPTION: Wahoo */ +/* Odobenus rosmarus. DESCRIPTION: Walrus */ +/* Trichechus senegalensis. DESCRIPTION: West African manatee */ +/* Wallago spp. DESCRIPTION: */ +/* Brotula multibarbata. DESCRIPTION: Goatsbeard brotula */ +/* Cristaria plicata. DESCRIPTION: Cockscomb pearl mussel */ +/* Wetmorella albofasciata. DESCRIPTION: Whitebanded sharpnose wrasse */ +/* Decapterus punctatus. DESCRIPTION: Round scad */ +/* Weberogobius amadi. DESCRIPTION: */ +/* Trachinus draco. DESCRIPTION: Greater weever */ +/* Totoaba macdonaldi. DESCRIPTION: Totoaba */ +/* Cynoscion analis. DESCRIPTION: Peruvian weakfish */ +/* Atractoscion nobilis. DESCRIPTION: White weakfish */ +/* Trachinus spp. DESCRIPTION: Weevers nei */ +/* Caranx fischeri. DESCRIPTION: Longfin crevalle jack */ +/* Pelagodroma marina. DESCRIPTION: White-faced storm petrel */ +/* Macrourus whitsoni. DESCRIPTION: Whitson's grenadier */ +/* Polyprion oxygeneios. DESCRIPTION: Hapuku wreckfish */ +/* Micromesistius poutassou. DESCRIPTION: Blue whiting(=Poutassou) */ +/* Buccinum undatum. DESCRIPTION: Whelk */ +/* Coregonus spp. DESCRIPTION: Whitefishes nei */ +/* Merlangius merlangus. DESCRIPTION: Whiting */ +/* Tetrapturus spp. DESCRIPTION: Spearfishes nei */ +/* Coregonus clupeaformis. DESCRIPTION: Lake(=Common) whitefish */ +/* Tetrapturus albidus. DESCRIPTION: Atlantic white marlin */ +/* Sillaginidae. DESCRIPTION: Sillago-whitings */ +/* Wheelerigobius wirtzi. DESCRIPTION: Cameroon goby */ +/* Busycon spp. DESCRIPTION: Whelks */ +/* Wheelerigobius maltzani. DESCRIPTION: */ +/* Chaenodraco wilsoni. DESCRIPTION: Spiny icefish */ +/* Trichechus manatus. DESCRIPTION: West Indian manatee */ +/* Pegusa triophthalma. DESCRIPTION: Cyclope sole */ +/* Glyptocephalus cynoglossus. DESCRIPTION: Witch flounder */ +/* Cynoscion steindachneri. DESCRIPTION: Smalltooth weakfish */ +/* Macrodon ancylodon. DESCRIPTION: King weakfish */ +/* Penaeus latisulcatus. DESCRIPTION: Western king prawn */ +/* Cynoscion striatus. DESCRIPTION: Striped weakfish */ +/* Cynoscion spp. DESCRIPTION: Weakfishes nei */ +/* Latridopsis forsteri. DESCRIPTION: Bastard trumpeter */ +/* Serranus accraensis. DESCRIPTION: Ghanian comber */ +/* Serranus africanus. DESCRIPTION: */ +/* Brachirus orientalis. DESCRIPTION: */ +/* Latridopsis spp. DESCRIPTION: */ +/* Mactrellona alata. DESCRIPTION: Panamic winged mactra */ +/* Polyprion moeone. DESCRIPTION: Bass groper */ +/* Mactrellona spp. DESCRIPTION: */ +/* Sepia acuminata. DESCRIPTION: */ +/* Woodsia meyerwaardeni. DESCRIPTION: */ +/* Sepia incerta. DESCRIPTION: */ +/* Sepia simoniana. DESCRIPTION: */ +/* Polychaeta. DESCRIPTION: Marine worms */ +/* Cygnus cygnus. DESCRIPTION: Whooper swan */ +/* Cygnus olor. DESCRIPTION: Mute swan */ +/* Melanitta fusca. DESCRIPTION: White-winged scoter */ +/* Melanitta nigra. DESCRIPTION: Black scoter */ +/* Peprilus medius. DESCRIPTION: Pacific harvestfish */ +/* Puntioplites proctozystron. DESCRIPTION: */ +/* Patella tenuis. DESCRIPTION: */ +/* Puntioplites waandersi. DESCRIPTION: */ +/* Pleoticus spp. DESCRIPTION: Pleoticus shrimps nei */ +/* Labridae. DESCRIPTION: Wrasses, hogfishes, etc. nei */ +/* Polyprion americanus. DESCRIPTION: Wreckfish */ +/* Labrus merula. DESCRIPTION: Brown wrasse */ +/* Sebastes entomelas. DESCRIPTION: Widow rockfish */ +/* Etrumeus whiteheadi. DESCRIPTION: Whitehead's round herring */ +/* Labrus viridis. DESCRIPTION: Green wrasse */ +/* Sepiella weberi. DESCRIPTION: Web */ +/* ’s cuttlefish */ +/* Labrus spp. DESCRIPTION: Labrus wrasses nei */ +/* Serranus atricauda. DESCRIPTION: Blacktail comber */ +/* Siniperca knerii. DESCRIPTION: Big-eye mandarin fish */ +/* Carcharodon carcharias. DESCRIPTION: Great white shark */ +/* Gymnodiptychus dybowskii. DESCRIPTION: Naked osman */ +/* Thyrsitops lepidopoides. DESCRIPTION: White snake mackerel */ +/* Rhabdosargus globiceps. DESCRIPTION: White stumpnose */ +/* Sepia papuensis. DESCRIPTION: Papuan cuttlefish */ +/* Spinibarbus sinensis. DESCRIPTION: */ +/* Dasyatis akajei. DESCRIPTION: Whip stingray */ +/* Sepia sulcata. DESCRIPTION: Grooved cuttlefish */ +/* Sepia whitleyana. DESCRIPTION: Whitley */ +/* ’s cuttlefish */ +/* Sepia vossi. DESCRIPTION: Voss */ +/* ’ cuttlefish */ +/* Sepia plangon. DESCRIPTION: Striking cuttlefish */ +/* Sepia bartletti. DESCRIPTION: Bartlett's cuttlefish */ +/* Sepia cultrata. DESCRIPTION: Knifebone cuttlefish */ +/* Sepia elliptica. DESCRIPTION: Ovalbone cuttlefish */ +/* Sepia stellifera. DESCRIPTION: Starry cuttlefish */ +/* Sepia grahami. DESCRIPTION: Ken */ +/* ’s cuttlefish */ +/* Sepia hedleyi. DESCRIPTION: Hedley */ +/* ’s cuttlefish */ +/* Sepia prabahari. DESCRIPTION: Small striped cuttlefish */ +/* Wattsia mossambica. DESCRIPTION: Mozambique large-eye bream */ +/* Sepiella ocellata. DESCRIPTION: Sotty cuttlefish */ +/* Pseudobulweria rostrata. DESCRIPTION: Tahiti petrel */ +/* Sepia mira. DESCRIPTION: Little cuttlefish */ +/* Sepia ramani. DESCRIPTION: Large striped cuttlefish */ +/* Watasenia scintillans. DESCRIPTION: Sparkling enope squid */ +/* Sepia vietnamica. DESCRIPTION: Viet Nam cuttlefish */ +/* Odontocymbiola americana. DESCRIPTION: */ +/* Odontocymbiola spp. DESCRIPTION: */ +/* Sepia smithi. DESCRIPTION: Smith */ +/* ’s cuttlefish */ +/* Sepia rozella. DESCRIPTION: Rosecone cuttlefish */ +/* Megalobrama amblycephala. DESCRIPTION: Wuchang bream */ +/* Megalobrama terminalis. DESCRIPTION: Black Amur bream */ +/* Pareuthria cerealis. DESCRIPTION: */ +/* Pareuthria spp. DESCRIPTION: */ +/* Sepia zanzibarica. DESCRIPTION: Zanzibar cuttlefish */ +/* Trachinus armatus. DESCRIPTION: Guinean weever */ +/* Trachinus collignoni. DESCRIPTION: Sailfin weever */ +/* Trachinus lineolatus. DESCRIPTION: Striped weever */ +/* Trachinus pellegrini. DESCRIPTION: Cape Verde weever */ +/* Penaeus occidentalis. DESCRIPTION: Western white shrimp */ +/* Polysticta stelleri. DESCRIPTION: Steller's eider */ +/* Gymnodiptychus pachycheilus. DESCRIPTION: */ +/* Tachypleus tridentatus. DESCRIPTION: Tri-spine horseshoe crab */ +/* Xanthichthys auromarginatus. DESCRIPTION: Gilded triggerfish */ +/* Allomicrodesmus dorotheae. DESCRIPTION: */ +/* Anguilliformes. DESCRIPTION: Eels, morays, congers nei */ +/* Phascolosoma arcuatum. DESCRIPTION: */ +/* Paralabrax spp. DESCRIPTION: */ +/* Xenoclarias eupogon. DESCRIPTION: */ +/* Cypselurus simus. DESCRIPTION: Short-nosed flyingfish */ +/* Saxidomus purpurata. DESCRIPTION: Purple butter clam */ +/* Saxidomus spp. DESCRIPTION: Butter clams nei */ +/* Xenocypris argentea. DESCRIPTION: Yellowfin */ +/* Xenagoniates bondi. DESCRIPTION: */ +/* Xenistius californiensis. DESCRIPTION: */ +/* Xenolepidichthys dalgleishi. DESCRIPTION: Spotted tinselfish */ +/* Xenophyophora. DESCRIPTION: Xenophyophores */ +/* Xenochromis hecqui. DESCRIPTION: */ +/* Xenocys jessiae. DESCRIPTION: */ +/* Xenopoclinus kochi. DESCRIPTION: Platanna klipfish */ +/* Xenobarbus loveridgei. DESCRIPTION: */ +/* Xenopoecilus oophorus. DESCRIPTION: Eggcarrying buntingi */ +/* Xenobalistes punctatus. DESCRIPTION: Outrigger triggerfish */ +/* Xenomedea rhodopyga. DESCRIPTION: Redrump blenny */ +/* Xenocharax spilurus. DESCRIPTION: */ +/* Xenomugil thoburni. DESCRIPTION: Thoburn's mullet */ +/* Xenichthys agassizi. DESCRIPTION: */ +/* Xiphister atropurpureus. DESCRIPTION: Black prickleback */ +/* Xenoophorus captivus. DESCRIPTION: Relict splitfin */ +/* Xiphophorus montezumae. DESCRIPTION: Montezuma swordtail */ +/* Xenophora solaris. DESCRIPTION: Sunburst carrier shell */ +/* Xiphopenaeus spp. DESCRIPTION: Xiphopenaeus shrimps nei */ +/* Xiphocheilus typus. DESCRIPTION: Blue-banded wrasse */ +/* Xiphasia matsubarai. DESCRIPTION: Japanese snake blenny */ +/* Exhippolysmata ensirostris. DESCRIPTION: Hunter shrimp */ +/* Exhippolysmata hastatoides. DESCRIPTION: Companion shrimp */ +/* Neosalanx tangkahkeii. DESCRIPTION: Chinese icefish */ +/* Exhippolysmata oplophoroides. DESCRIPTION: Cock shrimp */ +/* Cassidae. DESCRIPTION: Helmets shells nei */ +/* Xenojulis margaritaceus. DESCRIPTION: Finspot wrasse */ +/* Grammicolepididae. DESCRIPTION: Grammicolepidids nei */ +/* Plesionika spp. DESCRIPTION: Plesionika shrimps nei */ +/* Psammobatis spp. DESCRIPTION: Psammobatis sand skates nei */ +/* Semele spp. DESCRIPTION: Semeles nei */ +/* Xenisthmus balius. DESCRIPTION: */ +/* Xiphasia setifer. DESCRIPTION: Hairtail blenny */ +/* Perna spp. DESCRIPTION: Perna mussels nei */ +/* Trisopterus spp. DESCRIPTION: Trisopterus nei */ +/* Ammodytidae. DESCRIPTION: Sandlances nei */ +/* Exopalaemon annandalei. DESCRIPTION: Cipango prawn */ +/* Xererpes fucorum. DESCRIPTION: Rockweed gunnel */ +/* Xenopterus naritus. DESCRIPTION: */ +/* Pampus spp. DESCRIPTION: Silver pomfrets nei */ +/* Paraxenisthmus springeri. DESCRIPTION: */ +/* Antennariidae. DESCRIPTION: Frogfishes nei */ +/* Salanx chinensis. DESCRIPTION: Chinese noodlefish */ +/* Xenotilapia bathyphila. DESCRIPTION: */ +/* Xenentodon cancila. DESCRIPTION: Freshwater garfish */ +/* Xenotoca eiseni. DESCRIPTION: Redtail splitfin */ +/* Tyson belos. DESCRIPTION: */ +/* Xenotaenia resolanae. DESCRIPTION: Leopard splitfin */ +/* Trachyscorpia spp. DESCRIPTION: */ +/* Xenopus laevis. DESCRIPTION: African clawed frog */ +/* Xenopus muelleri. DESCRIPTION: */ +/* Xenophallus umbratilis. DESCRIPTION: */ +/* Xiphophorus alvarezi. DESCRIPTION: */ +/* Conidae. DESCRIPTION: Cone shells nei */ +/* Xenisthmus africanus. DESCRIPTION: Flathead wriggler */ +/* Xenodexia ctenolepis. DESCRIPTION: */ +/* Xyliphius barbatus. DESCRIPTION: */ +/* Oxyzygonectes dovii. DESCRIPTION: White-eye */ +/* Oxyeleotris fimbriata. DESCRIPTION: Fimbriate gudgeon */ +/* Oxymonacanthus halli. DESCRIPTION: Red Sea longnose filefish */ +/* Xystreurys liolepis. DESCRIPTION: Fantail flounder */ +/* Xyrichtys novacula. DESCRIPTION: Pearly razorfish */ +/* Xyrauchen texanus. DESCRIPTION: Razorback sucker */ +/* Clinidae. DESCRIPTION: Clinids fishes nei */ +/* Bryaninops amplus. DESCRIPTION: Large whip goby */ +/* Yarrella blackfordi. DESCRIPTION: */ +/* Atya scabra. DESCRIPTION: Camacuto shrimp */ +/* Hypnea saidana. DESCRIPTION: */ +/* Thysanoessa gregaria. DESCRIPTION: */ +/* Cyathopharynx furcifer. DESCRIPTION: Featherfin cichlid */ +/* Syacium gunteri. DESCRIPTION: Shoal flounder */ +/* Hypnea spinella. DESCRIPTION: */ +/* Thysanoessa longicaudata. DESCRIPTION: */ +/* Atya innocous. DESCRIPTION: Basket shrimp */ +/* Hypnea spicifera. DESCRIPTION: */ +/* Syacium latifrons. DESCRIPTION: Beach flounder */ +/* Syacium micrurum. DESCRIPTION: Channel flounder */ +/* Thysanoessa longipes. DESCRIPTION: */ +/* Cyathochromis obliquidens. DESCRIPTION: */ +/* Thysanoessa spinifera. DESCRIPTION: */ +/* Pyura praeputialis. DESCRIPTION: */ +/* Scylla paramamosain. DESCRIPTION: Green mud crab */ +/* Amoya signatus. DESCRIPTION: Tusk goby */ +/* Scylla tranquebarica. DESCRIPTION: Purple mud crab */ +/* Atya sulcatipes. DESCRIPTION: Ekusa shrimp */ +/* Thysanoessa vicina. DESCRIPTION: */ +/* Sympterygia acuta. DESCRIPTION: Bignose fanskate */ +/* Hypnea valentiae. DESCRIPTION: Robust sea moss */ +/* Hypnea japonica. DESCRIPTION: */ +/* Hypnea pannosa. DESCRIPTION: Tattered sea moss */ +/* Bathyblennius antholops. DESCRIPTION: */ +/* Serranochromis robustus. DESCRIPTION: Yellow-belly bream */ +/* Cymbium cymbium. DESCRIPTION: Pig's snout volute */ +/* Oxyeleotris lineolata. DESCRIPTION: Sleepy cod */ +/* Bryaninops yongei. DESCRIPTION: Whip coral goby */ +/* Charybdis affinis. DESCRIPTION: Smoothshelled swimming crab */ +/* Cymbium glans. DESCRIPTION: Elephant's snout volute */ +/* Charybdis longicollis. DESCRIPTION: Lesser swimming crab */ +/* Callionymus carebares. DESCRIPTION: Indian deepwater dragonet */ +/* Charybdis japonica. DESCRIPTION: Japanese swimming crab */ +/* Cyanophyceae. DESCRIPTION: */ +/* Callionymus erythraeus. DESCRIPTION: Smallhead dragonet */ +/* Cymbium marmoratum. DESCRIPTION: Marmorate volute */ +/* Charybdis anisodon. DESCRIPTION: Twospined arm swimming crab */ +/* Cymbium olla. DESCRIPTION: Olla volute */ +/* Cymbium pepo. DESCRIPTION: Neptune's volute */ +/* Sympterygia bonapartii. DESCRIPTION: Smallnose fanskate */ +/* Callionymus filamentosus. DESCRIPTION: Blotchfin dragonet */ +/* Sphyraena forsteri. DESCRIPTION: Bigeye barracuda */ +/* Charybdis truncata. DESCRIPTION: Blunt-toothed crab */ +/* Charybdis annulata. DESCRIPTION: Banded-legged swimming crab */ +/* Cymbiola vespertilio. DESCRIPTION: Bat volute */ +/* Morone mississippiensis. DESCRIPTION: Yellow bass */ +/* Charybdis spp. DESCRIPTION: Charybdis crabs nei */ +/* Callionymus hindsii. DESCRIPTION: */ +/* Callionymus japonicus. DESCRIPTION: */ +/* Cyclocheilichthys apogon. DESCRIPTION: Beardless barb */ +/* Caecocypris basimi. DESCRIPTION: */ +/* Callionymus margaretae. DESCRIPTION: Margaret's dragonet */ +/* Cyclocheilichthys dumerilii. DESCRIPTION: */ +/* Cyclocheilichthys enoplos. DESCRIPTION: */ +/* Cyprinodon latifasciatus. DESCRIPTION: Parras pupfish */ +/* Cycloseris elegans. DESCRIPTION: Curved mushroom coral */ +/* Pelteobagrus fulvidraco. DESCRIPTION: Yellow catfish */ +/* Cyclocardia astartoides. DESCRIPTION: Antarctic cardita */ +/* Cyclope neritea. DESCRIPTION: Cyclope nassa */ +/* Cyprinodon variegatus. DESCRIPTION: Sheepshead minnow */ +/* Cycleptus elongatus. DESCRIPTION: Blue sucker */ +/* Cyprinodon macularius. DESCRIPTION: Desert pupfish */ +/* Thysochromis annectens. DESCRIPTION: */ +/* Callionymus marleyi. DESCRIPTION: Sand dragonet */ +/* Phyllichthys punctatus. DESCRIPTION: Spotted sole */ +/* Cyclocheilichthys armatus. DESCRIPTION: */ +/* Cairnsichthys rhombosomoides. DESCRIPTION: */ +/* Pycnomma semisquamatum. DESCRIPTION: Secret goby */ +/* Polyplacapros tyleri. DESCRIPTION: */ +/* Cyprinodon atrorus. DESCRIPTION: Bolson pupfish */ +/* Lycenchelys verrillii. DESCRIPTION: Wolf eelpout */ +/* Cyclopharynx fwae. DESCRIPTION: */ +/* Centroscyllium spp. DESCRIPTION: Centroscyllium dogfishes nei */ +/* Callionymus persicus. DESCRIPTION: */ +/* Callionymus sagitta. DESCRIPTION: Arrow dragonet */ +/* Synodontis alberti. DESCRIPTION: Bigeye squeaker */ +/* Cryodraco spp. DESCRIPTION: */ +/* Synodontis contractus. DESCRIPTION: Bugeye squeaker */ +/* Synodontis decorus. DESCRIPTION: Clown squeaker */ +/* Synodontis eupterus. DESCRIPTION: Featherfin squeaker */ +/* Synodontis flavitaeniatus. DESCRIPTION: Orangestriped squeaker */ +/* Synodontis nigriventris. DESCRIPTION: Blotched upsidedown catfish */ +/* Yoldia eightsii. DESCRIPTION: Antarctic yoldia */ +/* Payraudeautia intricata. DESCRIPTION: Entangled moon-shell */ +/* Synodontis njassae. DESCRIPTION: Malawi squeaker */ +/* Hydrophis cyanocinctus. DESCRIPTION: Annulated sea snake */ +/* Hydroclathrus clathratus. DESCRIPTION: */ +/* Synodontis angelicus. DESCRIPTION: Angel squeaker */ +/* Synodontis notatus. DESCRIPTION: Onespot squeaker */ +/* Synodontis pleurops. DESCRIPTION: Congo squeaker */ +/* Synodontis nigromaculatus. DESCRIPTION: Blackspotted squeaker */ +/* Synodontis schall. DESCRIPTION: Wahrindi */ +/* Cephalopsetta ventrocellatus. DESCRIPTION: */ +/* Synodontis zambesiensis. DESCRIPTION: Plain squeaker */ +/* Cyprea arabica. DESCRIPTION: Arabian cowrie */ +/* Hypnea boergesenii. DESCRIPTION: Tufted sea moss */ +/* Pyrene scripta. DESCRIPTION: Dotted dove shell */ +/* Nibea albiflora. DESCRIPTION: Yellow drum */ +/* Mytella guyanensis. DESCRIPTION: Guyana swamp mussel */ +/* Hypnea charoides. DESCRIPTION: */ +/* Hyperoplus immaculatus. DESCRIPTION: Greater sand-eel */ +/* Cyprea mauritiana. DESCRIPTION: Humpback cowrie */ +/* Styela clava. DESCRIPTION: */ +/* Limanda ferruginea. DESCRIPTION: Yellowtail flounder */ +/* Cyprea mappa. DESCRIPTION: Map cowrie */ +/* Thysanoessa inermis. DESCRIPTION: */ +/* Atypopenaeus formosus. DESCRIPTION: Orange shrimp */ +/* Mytella speciosa. DESCRIPTION: Reeve's mangrove mussel */ +/* Styela plicata. DESCRIPTION: Sea potato */ +/* Mytella strigata. DESCRIPTION: Strigate mangrove mussel */ +/* Limanda aspera. DESCRIPTION: Yellowfin sole */ +/* Atypopenaeus stenodactylus. DESCRIPTION: Periscope shrimp */ +/* Trachypenaeus spp. DESCRIPTION: Trachypenaeus shrimps nei */ +/* Cnemidocarpa bicornuta. DESCRIPTION: Sea squirt */ +/* Limanda spp. DESCRIPTION: Limandas nei */ +/* Hyperoplus lanceolatus. DESCRIPTION: Great sandeel */ +/* Typhlachirus caecus. DESCRIPTION: */ +/* Charybdis bimaculata. DESCRIPTION: Two-spot swimming crab */ +/* Symphodus cinereus. DESCRIPTION: Grey wrasse */ +/* Symphurus orientalis. DESCRIPTION: */ +/* Cyphotilapia frontosa. DESCRIPTION: Humphead cichlid */ +/* Coryphoblennius galerita. DESCRIPTION: Montagu's blenny */ +/* Semicossyphus pulcher. DESCRIPTION: California sheephead */ +/* Symphurus ginsburgi. DESCRIPTION: Ginsburg's tonguefish */ +/* Symphurus tessellatus. DESCRIPTION: */ +/* Symphurus strictus. DESCRIPTION: Blackbelly tonguesole */ +/* Pseudopleuronectes herzenst.. DESCRIPTION: Yellow striped flounder */ +/* Symphodus melops. DESCRIPTION: Corkwing wrasse */ +/* Cryphiops caementarius. DESCRIPTION: Changallo shrimp */ +/* Symphodus ocellatus. DESCRIPTION: */ +/* Symphurus plagiusa. DESCRIPTION: Blackcheek tonguefish */ +/* Phyllophora spp. DESCRIPTION: Phyllophora nei */ +/* Symphurus atricaudus. DESCRIPTION: California tonguefish */ +/* Symphurus plagusia. DESCRIPTION: Duskycheek tonguefish */ +/* Thunnus albacares. DESCRIPTION: Yellowfin tuna */ +/* Symphurus ligulatus. DESCRIPTION: Elongate tonguesole */ +/* Symphodus spp. DESCRIPTION: Symphodus wrasses nei */ +/* Brachygobius aggregatus. DESCRIPTION: */ +/* Cynoscion guatucupa. DESCRIPTION: Stripped weakfish */ +/* Pygoplites diacanthus. DESCRIPTION: Regal angelfish */ +/* Platygyra daedalea. DESCRIPTION: Brain coral */ +/* Gymnogongrus griffithsiae. DESCRIPTION: */ +/* Cymatogaster aggregata. DESCRIPTION: Shiner perch */ +/* Sinocyclocheilus grahami. DESCRIPTION: Golden-line barbel */ +/* Astropyga radiata. DESCRIPTION: Blue-spotted sea urchin */ +/* Gymnogongrus tenuis. DESCRIPTION: */ +/* Platygobiopsis akihito. DESCRIPTION: */ +/* Syacium guineensis. DESCRIPTION: Papillose flounder */ +/* Pachygrapsus marmoratus. DESCRIPTION: Marbled rock crab */ +/* Gymnogongrus spp. DESCRIPTION: */ +/* Actinopyga palauensis. DESCRIPTION: Panning's blackfish */ +/* Pygadon grandis. DESCRIPTION: Giant floater */ +/* Actinopyga spinea. DESCRIPTION: New Caledonia blackfish */ +/* Pachygrapsus transversus. DESCRIPTION: African matchbox crab */ +/* Capropygia unistriata. DESCRIPTION: Black-banded pigmy boxfish */ +/* Polymesoda spp. DESCRIPTION: */ +/* Bathyteuthis abyssicola. DESCRIPTION: Deep-sea squid */ +/* Onychoteuthis banksii. DESCRIPTION: Common clubhook squid */ +/* Onychoteuthis borealijaponica. DESCRIPTION: Boreal clubhook squid */ +/* Hyporthodus ergastularius. DESCRIPTION: Sevenbar grouper */ +/* Pythia scarabeus. DESCRIPTION: Common pythia */ +/* Ocythoe tuberculata. DESCRIPTION: Tuberculate octopus */ +/* Aspiorhynchus laticeps. DESCRIPTION: Big-head schizothoracin */ +/* Charybdis hawaiensis. DESCRIPTION: Hawaiian swimming crab */ +/* Hypsibarbus spp. DESCRIPTION: */ +/* Sicyonia carinata. DESCRIPTION: Mediterranean rock shrimp */ +/* Sicyonia burkenroadi. DESCRIPTION: Burkenroad's rock shrimp */ +/* Sicyonia cristata. DESCRIPTION: Ridgeback rock shrimp */ +/* Sicyonia dorsalis. DESCRIPTION: Lesser rock shrimp */ +/* Sicyonia affinis. DESCRIPTION: Coloured rock shrimp */ +/* Sicyonia galeata. DESCRIPTION: Tufted rock shrimp */ +/* Mytilopsis leucophaeata. DESCRIPTION: Dark falsemussel */ +/* Sicyonia ingentis. DESCRIPTION: Pacific rock shrimp */ +/* Sicyonia picta. DESCRIPTION: Small peanut rock */ +/* Sicyonia lancifera. DESCRIPTION: Knight rock shrimp */ +/* Sicyonia martini. DESCRIPTION: Martin's rock shrimp */ +/* Sicyonia aliaffinis. DESCRIPTION: Hardhusk rock shrimp */ +/* Sicyonia disdorsalis. DESCRIPTION: Keeled rock shrimp */ +/* Sicyonia penicillata. DESCRIPTION: Peanut rock shrimp */ +/* Sicyonia disparri. DESCRIPTION: Notched rock shrimp */ +/* Sicyonia stimpsoni. DESCRIPTION: Eyespot rock shrimp */ +/* Sicyonia typica. DESCRIPTION: Kinglet rock shrimp */ +/* Mysia undata. DESCRIPTION: Undulated false lucine */ +/* Sicyonia laevigata. DESCRIPTION: Notched tidal rock shrimp */ +/* Sicyonia disedwardsi. DESCRIPTION: Target shrimp */ +/* Sicyonia mixta. DESCRIPTION: Mixed rock shrimp */ +/* Apolymetis papyracea. DESCRIPTION: Paper tellin */ +/* Babylonia areolata. DESCRIPTION: Maculated ivory whelk */ +/* Pogonophryne albipinna. DESCRIPTION: */ +/* Pogonophryne cerebropogon. DESCRIPTION: */ +/* Cymatium femorale. DESCRIPTION: Angular triton */ +/* Mulloidichthys vanicolensis. DESCRIPTION: Yellowfin goatfish */ +/* Pogonophryne immaculata. DESCRIPTION: */ +/* Cymia lacera. DESCRIPTION: Carinate rock shell */ +/* Pogonophryne mentella. DESCRIPTION: */ +/* Pogonophryne lanceobarbata. DESCRIPTION: */ +/* Pogonophryne macropogon. DESCRIPTION: */ +/* Myripristis botche. DESCRIPTION: Blacktip soldierfish */ +/* Babylonia spirata. DESCRIPTION: Spiral babylon */ +/* Cymia tecta. DESCRIPTION: Shoot rock shell */ +/* Babylonia lutosa. DESCRIPTION: Mud ivory whelk */ +/* Pogonophryne ventrimaculata. DESCRIPTION: */ +/* Myripristis berndti. DESCRIPTION: Blotcheye soldierfish */ +/* Babylonia spp. DESCRIPTION: */ +/* Myripristis chryseres. DESCRIPTION: Yellowfin soldierfish */ +/* Myripristis kuntee. DESCRIPTION: Shoulderbar soldierfish */ +/* Trachycardium angulatum. DESCRIPTION: Angulate cockle */ +/* Myripristis hexagona. DESCRIPTION: Doubletooth soldierfish */ +/* Myripristis vittata. DESCRIPTION: Whitetip soldierfish */ +/* Lyropecten subnodosus. DESCRIPTION: Pacific lion's paw */ +/* Phyllophora pseudoceranoides. DESCRIPTION: Membraneous phyllophora */ +/* Myrakeena angelica. DESCRIPTION: Angel oyster */ +/* Dictyopteris plagiogramma. DESCRIPTION: Limu lipoa */ +/* Porphyra columbina. DESCRIPTION: */ +/* Paratya compressa. DESCRIPTION: Nuka shrimp */ +/* Cystoclonium purpureum. DESCRIPTION: Marine bindweed */ +/* Trachycardium orbita. DESCRIPTION: Orbit cockle */ +/* Trachycardium subrugosum. DESCRIPTION: Wrinkled cockle */ +/* Trachycardium rubicundum. DESCRIPTION: Reddish cockle */ +/* Cnemidocarpa verrucosa. DESCRIPTION: */ +/* Apolymetis spp. DESCRIPTION: */ +/* Scyllarides aequinoctialis. DESCRIPTION: Spanish slipper lobster */ +/* Scyllarus batei. DESCRIPTION: Soft locust lobster */ +/* Scyllarides tridacnophaga. DESCRIPTION: Clamkiller slipper lobster */ +/* Scyllarides deceptor. DESCRIPTION: Hooded slipper lobster */ +/* Scyllarus bertholdii. DESCRIPTION: Two-spotted locust lobster */ +/* Scyllarides delfosi. DESCRIPTION: Three-spot slipper lobster */ +/* Scyllarides roggeveeni. DESCRIPTION: Easter Island slipper lobster */ +/* Scyllarides elisabethae. DESCRIPTION: Cape slipper lobster */ +/* Scyllarides brasiliensis. DESCRIPTION: Brazilian slipper lobster */ +/* Scyllarides haanii. DESCRIPTION: Aesop slipper lobster */ +/* Scyllarides herklotsii. DESCRIPTION: Red slipper lobster */ +/* Scyllarides latus. DESCRIPTION: Mediterranean slipper lobster */ +/* Scyllarus martensii. DESCRIPTION: Striated locust lobster */ +/* Dactylophora nigricans. DESCRIPTION: Dusky morwong */ +/* Scyllarides nodifer. DESCRIPTION: Ridged slipper lobster */ +/* Cyclopsetta panamensis. DESCRIPTION: God's flounder */ +/* Cyclopsetta querna. DESCRIPTION: Toothed flounder */ +/* Scyllarus rugosus. DESCRIPTION: Hunchback locust lobster */ +/* Tylerius spinosissimus. DESCRIPTION: Spiny blaasop */ +/* Scyllarides astori. DESCRIPTION: Galapagos slipper lobster */ +/* Scyllarides squammosus. DESCRIPTION: Blunt slipper lobster */ +/* Scyllarus brevicornis. DESCRIPTION: Blue-back locust lobster */ +/* Scylla olivacea. DESCRIPTION: Orange mud crab */ +/* Scyllarus spp. DESCRIPTION: Locust lobsters nei */ +/* Scyllarus pygmaeus. DESCRIPTION: Pygmy locust lobster */ +/* Cyclopsetta chittendeni. DESCRIPTION: Mexican flounder */ +/* Polymesoda aequilatera. DESCRIPTION: Equilateral marsh clam */ +/* Polymesoda bengalensis. DESCRIPTION: Bengali geloina */ +/* Halymenia dilatata. DESCRIPTION: Red sea lettuce */ +/* Polymesoda erosa. DESCRIPTION: Common geloina */ +/* Hymenodora frontalis. DESCRIPTION: Pacific ambereye */ +/* Platymera gaudichaudii. DESCRIPTION: Paco box crab */ +/* Apolymetis ephippium. DESCRIPTION: Saddle grooved macoma */ +/* Polymesoda inflata. DESCRIPTION: Inflated marsh clam */ +/* Cymatium aquatile. DESCRIPTION: Aquatile hairy triton */ +/* Polymesoda arctata. DESCRIPTION: Slender marsh clam */ +/* Cymolutes lecluse. DESCRIPTION: Sharp-headed wrasse */ +/* Cymatium muricinum. DESCRIPTION: Shortneck triton */ +/* Cymatium nicobaricum. DESCRIPTION: Nicobar hairy triton */ +/* Symplectoteuthis oualaniensis. DESCRIPTION: Purpleback flying squid */ +/* Hymenocera picta. DESCRIPTION: Painted harlequin shrimp */ +/* Symphysodon aequifasciata. DESCRIPTION: Blue discus */ +/* Polymesoda caroliniana. DESCRIPTION: Carolina marsh clam */ +/* Lysmata seticaudata. DESCRIPTION: Monaco shrimp */ +/* Polymesoda triangula. DESCRIPTION: Triangular mash clam */ +/* Symplectoteuthis luminosa. DESCRIPTION: Luminous flying squid */ +/* Lysmata vittata. DESCRIPTION: Indian lined shrimp */ +/* Bathysolea profundicola. DESCRIPTION: Deep water sole */ +/* Polymesoda expansa. DESCRIPTION: Broad geloina */ +/* Symphysanodon berryi. DESCRIPTION: Slope bass */ +/* Mulloidichthys martinicus. DESCRIPTION: Yellow goatfish */ +/* Cynoscion acoupa. DESCRIPTION: Acoupa weakfish */ +/* Synaptura albomaculata. DESCRIPTION: */ +/* Synaptura commersonnii. DESCRIPTION: Commerson's sole */ +/* Hypnea chordacea. DESCRIPTION: */ +/* Cynoscion leiarchus. DESCRIPTION: Smooth weakfish */ +/* Hypnea musciformis. DESCRIPTION: Crozier weed */ +/* Synaptura marginata. DESCRIPTION: White-margined sole */ +/* Cynoscion phoxocephalus. DESCRIPTION: Cachema weakfish */ +/* Thysanoessa raschii. DESCRIPTION: */ +/* Cynoscion jamaicensis. DESCRIPTION: Jamaica weakfish */ +/* Hypanis plicatus. DESCRIPTION: Folded lagoon cockle */ +/* Cynoscion albus. DESCRIPTION: Whitefin weakfish */ +/* Cynoscion microlepidotus. DESCRIPTION: Smallscale weakfish */ +/* Cynoscion nothus. DESCRIPTION: Silver seatrout */ +/* Cynoscion othonopterum. DESCRIPTION: Gulf weakfish */ +/* Cynoscion parvipinnis. DESCRIPTION: Shortfin weakfish */ +/* Hypnea cornuta. DESCRIPTION: */ +/* Cynoscion arenarius. DESCRIPTION: Sand weakfish */ +/* Cynoscion similis. DESCRIPTION: Tonkin weakfish */ +/* Cynoscion reticulatus. DESCRIPTION: */ +/* Synaptura lusitanica. DESCRIPTION: Portuguese sole */ +/* Cynoscion virescens. DESCRIPTION: Green weakfish */ +/* Bathysolea polli. DESCRIPTION: */ +/* Cynoscion xanthulum. DESCRIPTION: Orangemouth weakfish */ +/* Synaptura cadenati. DESCRIPTION: Guinean sole */ +/* Cynoscion stolzmanni. DESCRIPTION: Stolzmann's weakfish */ +/* Cynoglossus abbreviatus. DESCRIPTION: Three-lined tounge sole */ +/* Cynoglossus bilineatus. DESCRIPTION: Fourlined tonguesole */ +/* Yongeichthys criniger. DESCRIPTION: */ +/* Cynoglossus dubius. DESCRIPTION: Carrot tonguesole */ +/* Cynoglossus senegalensis. DESCRIPTION: Senegalese tonguesole */ +/* Cynoglossus semifasciatus. DESCRIPTION: Bengal toungesole */ +/* Cynoglossus lingua. DESCRIPTION: Long tongue sole */ +/* Hyotissa hyotis. DESCRIPTION: Honeycomb oyster */ +/* Cynoglossus canariensis. DESCRIPTION: Canary tonguesole */ +/* Cynoglossus joyneri. DESCRIPTION: Red tonguesole */ +/* Yongeichthys thomasi. DESCRIPTION: */ +/* Bathysolea lactea. DESCRIPTION: */ +/* Cynoglossus macrostomus. DESCRIPTION: Malabar tonguesole */ +/* Cynoglossus interruptus. DESCRIPTION: Genko sole */ +/* Cynoglossus microlepis. DESCRIPTION: */ +/* Cynoglossus puncticeps. DESCRIPTION: Speckled tonguesole */ +/* Cryothenia peninsulae. DESCRIPTION: Pithead */ +/* Cynoglossus arel. DESCRIPTION: Largescale tonguesole */ +/* Cynoglossus lida. DESCRIPTION: Roughscale tonguesole */ +/* Cynoglossus robustus. DESCRIPTION: */ +/* Cynoglossus semilaevis. DESCRIPTION: */ +/* Cynoglossus browni. DESCRIPTION: Nigerian tonguesole */ +/* Cynoglossus spp. DESCRIPTION: Tonguesole nei */ +/* Cynoglossus cynoglossus. DESCRIPTION: Bengal tongue sole */ +/* Cynoglossus zanzibarensis. DESCRIPTION: Zanzibar tonguesole */ +/* Cyprinella alvarezdelvillari. DESCRIPTION: */ +/* Cryptocentroides arabicus. DESCRIPTION: Arabian goby */ +/* Cyprinella callistia. DESCRIPTION: Alabama shiner */ +/* Pachypops adspersus. DESCRIPTION: Brazilian croaker */ +/* Cyprichromis leptosoma. DESCRIPTION: */ +/* Pachypops fourcroi. DESCRIPTION: Guyanan croaker */ +/* Cyprea argus. DESCRIPTION: Eyed cowie */ +/* Cyprea histrio. DESCRIPTION: Histrio cowrie */ +/* Cyprinella spiloptera. DESCRIPTION: Spotfin shiner */ +/* Cryptopenaeus catherinae. DESCRIPTION: Catherine shrimp */ +/* Cyrtopleura costata. DESCRIPTION: Angel wing */ +/* Cyprinella lutrensis. DESCRIPTION: Red shiner */ +/* Cyprinella camura. DESCRIPTION: Bluntface shiner */ +/* Cyprinella analostana. DESCRIPTION: Satinfin shiner */ +/* Cyprinocirrhites polyactis. DESCRIPTION: Swallowtail hawkfish */ +/* Cyprinella proserpina. DESCRIPTION: Proserpine shiner */ +/* Stylophora pistillata. DESCRIPTION: Smooth cauliflower coral */ +/* Polylepion cruentum. DESCRIPTION: Bleeding wrasse */ +/* Penaeus californiensis. DESCRIPTION: Yellowleg shrimp */ +/* Pachypops trifilis. DESCRIPTION: */ +/* Atypichthys latus. DESCRIPTION: Eastern footballer */ +/* Cyprinella venusta. DESCRIPTION: Blacktail shiner */ +/* Cyprinion watsoni. DESCRIPTION: */ +/* Cypselurus spp. DESCRIPTION: */ +/* Parahypsos paytensis. DESCRIPTION: */ +/* Cyprea scurra. DESCRIPTION: Jester cowrie */ +/* Cyprea carneola. DESCRIPTION: Carnelian cowrie */ +/* Cyprea bouteti. DESCRIPTION: Boutet's cowrie */ +/* Cyprea caputserpentis. DESCRIPTION: Serpent's head cowrie */ +/* Cyprea depressa. DESCRIPTION: Depressed cowrie */ +/* Cyprea eglantina. DESCRIPTION: Eglantine cowrie */ +/* Cynoglossus cadenati. DESCRIPTION: Ghanian tonguesole */ +/* Cynoglossus monodi. DESCRIPTION: Guinean tonguesole */ +/* Cyprea schilderorum. DESCRIPTION: Schilders' cowrie */ +/* Symphurus vanmelleae. DESCRIPTION: Vanmelle */ +/* ’s tonguefish */ +/* Cyprea leviathan. DESCRIPTION: Monster cowrie */ +/* Cyprea maculifera. DESCRIPTION: Reticulated cowrie */ +/* Cyprea ventriculus. DESCRIPTION: Tummy cowrie */ +/* Cyprea moneta. DESCRIPTION: Money cowrie */ +/* Peprilus snyderi. DESCRIPTION: Salema butterfish */ +/* Cyprea erosa. DESCRIPTION: Eroded cowrie */ +/* Cyprea isabella. DESCRIPTION: Isabelle cowrie */ +/* Cystoseira barbata. DESCRIPTION: Golden Cystoseira */ +/* Cyprea caurica. DESCRIPTION: Dragon cowrie */ +/* Cyprea obvelata. DESCRIPTION: Walled cowrie */ +/* Cyprea onyx. DESCRIPTION: Onyx cowrie */ +/* Cyprea lynx. DESCRIPTION: Lynx cowrie */ +/* Sphyraena acutipinnis. DESCRIPTION: Sharpfin barracuda */ +/* Sphyraena obtusata. DESCRIPTION: Obtuse barracuda */ +/* Sphyraena chrysotaenia. DESCRIPTION: Yellowstripe barracuda */ +/* Lyropecten nodosus. DESCRIPTION: Lion's paw */ +/* Sphyraena ensis. DESCRIPTION: Mexican barracuda */ +/* Sphyraena argentea. DESCRIPTION: Pacific barracuda */ +/* Sphyraena helleri. DESCRIPTION: Heller's barracuda */ +/* Sphyraena idiastes. DESCRIPTION: Pelican barracuda */ +/* Sphyraena japonica. DESCRIPTION: */ +/* Lyrodus pedicellatus. DESCRIPTION: Siamese shipworm */ +/* Cyprea annulus. DESCRIPTION: Gold ring cowrie */ +/* Pyroteuthis margaritifera. DESCRIPTION: Jewel enope squid */ +/* Sphyraena pinguis. DESCRIPTION: */ +/* Sebastes flavidus. DESCRIPTION: Yellowtail rockfish */ +/* Sphyraena picudilla. DESCRIPTION: Southern sennet */ +/* Cyprea tigris. DESCRIPTION: Tiger cowrie */ +/* Cypraecassis rufa. DESCRIPTION: Bullmouth helmet */ +/* Sphyraena sphyraena. DESCRIPTION: European barracuda */ +/* Cyprea talpa. DESCRIPTION: Mole cowrie */ +/* Sphyraena guachancho. DESCRIPTION: Guachanche barracuda */ +/* Cyprea vitellus. DESCRIPTION: Pacific deer cowrie */ +/* Hyotissa spp. DESCRIPTION: */ +/* Cryptocentrus cryptocentrus. DESCRIPTION: Ninebar prawn-goby */ +/* Scymnodalatias albicauda. DESCRIPTION: Whitetail dogfish */ +/* Paralichthys albigutta. DESCRIPTION: Gulf flounder */ +/* Bathystethus cultratus. DESCRIPTION: Grey knifefish */ +/* Lysmata debelius. DESCRIPTION: Cardinal shrimp */ +/* Psettichthys melanostictus. DESCRIPTION: Pacific sand sole */ +/* Paralichthys californicus. DESCRIPTION: California flounder */ +/* Cryptocentrus lutheri. DESCRIPTION: Luther's prawn-goby */ +/* Paralichthys lethostigma. DESCRIPTION: Southern flounder */ +/* Polyspondylogobius sinensis. DESCRIPTION: */ +/* Systellaspis braueri. DESCRIPTION: Quayle spinytail */ +/* Lysmata californica. DESCRIPTION: Lined shrimp */ +/* Paralichthys brasiliensis. DESCRIPTION: Brazilian flounder */ +/* Scymnodon macracanthus. DESCRIPTION: Largespine velvet dogfish */ +/* Lysmata amboinensis. DESCRIPTION: Common cleaner shrimp */ +/* Paralichthys oblongus. DESCRIPTION: Fourspot flounder */ +/* Mytilopsis sallei. DESCRIPTION: Santo Domingo falsemussel */ +/* Chrysiptera rapanui. DESCRIPTION: Easter damselfish */ +/* Scymnodalatias sherwoodi. DESCRIPTION: Sherwood dogfish */ +/* Paralipophrys trigloides. DESCRIPTION: */ +/* Atyopsis moluccensis. DESCRIPTION: Moluccas brush shrimp */ +/* Paralichthys isosceles. DESCRIPTION: */ +/* Paralichthys woolmani. DESCRIPTION: Speckled flounder */ +/* Polystira oxytropis. DESCRIPTION: White keeled turrid */ +/* Polystira nobilis. DESCRIPTION: Noble giant turrid */ +/* Pomadasys panamensis. DESCRIPTION: Panama grunt */ +/* Cyclothone acclinidens. DESCRIPTION: Benttooth bristlemouth */ +/* Cyclothone alba. DESCRIPTION: */ +/* Seriola lalandi. DESCRIPTION: Yellowtail amberjack */ +/* Scytalina cerdale. DESCRIPTION: Graveldiver */ +/* Ammodytoides renniei. DESCRIPTION: Scaly sandlance */ +/* Cryptocentrus filifer. DESCRIPTION: */ +/* Pachymetopon grande. DESCRIPTION: Bronze seabream */ +/* Berryteuthis anonychus. DESCRIPTION: Smallfin gonate squid */ +/* Cryptocentrus albidorsus. DESCRIPTION: */ +/* Cryptichthys jojettae. DESCRIPTION: Cryptic triplefin */ +/* Mya truncata. DESCRIPTION: Blunt gaper */ +/* Seriola rivoliana. DESCRIPTION: Longfin yellowtail */ +/* Cyclothone microdon. DESCRIPTION: Veiled anglemouth */ +/* Crystallogobius linearis. DESCRIPTION: Crystal goby */ +/* Cyrtocara moorii. DESCRIPTION: */ +/* Cyclothone pallida. DESCRIPTION: Tan bristlemouth */ +/* Hyotissa fisheri. DESCRIPTION: Wrinkled oyster */ +/* Cryptotrema corallinum. DESCRIPTION: Deep-water blenny */ +/* Cyclothone pseudopallida. DESCRIPTION: Slender bristlemouth */ +/* Berryteuthis magister. DESCRIPTION: Schoolmaster gonate squid */ +/* Cyclothone braueri. DESCRIPTION: Garrick */ +/* Cyclothone livida. DESCRIPTION: */ +/* Berryteuthis spp. DESCRIPTION: Berryteuthis gonate squids nei */ +/* Cyclothone spp. DESCRIPTION: */ +/* Cyclothone pygmaea. DESCRIPTION: */ +/* Cyclothone obscura. DESCRIPTION: Hidden bristlemouth */ +/* Yunnanilus altus. DESCRIPTION: */ +/* Pachyurus bonariensis. DESCRIPTION: La Plata croaker */ +/* Leptodactylus ocellatus. DESCRIPTION: */ +/* Mytilus desolationis. DESCRIPTION: Kerguelen mussel */ +/* Leptodactylus pentadactylus. DESCRIPTION: */ +/* Lythrypnus alphigena. DESCRIPTION: */ +/* Parenchelyurus hepburni. DESCRIPTION: Hepburn's blenny */ +/* Cymatium intermedium. DESCRIPTION: Intermediate hairy triton */ +/* Cymatium pileare. DESCRIPTION: Common hairy triton */ +/* Crocodylus cataphractus. DESCRIPTION: Slender-snouted crocodile */ +/* Cymatium lotorium. DESCRIPTION: Black-spotted triton */ +/* Choromytilus meridionalis. DESCRIPTION: Black mussel */ +/* Crocodylus intermedius. DESCRIPTION: Orinoco crocodile */ +/* Mytilus aoteanus. DESCRIPTION: New Zealand blue mussel */ +/* Choromytilus palliopunctatus. DESCRIPTION: Pinpricked mussel */ +/* Crocodylus mindorensis. DESCRIPTION: Philippine crocodile */ +/* Thysanoteuthis rhombus. DESCRIPTION: Diamondback squid */ +/* Mytilus trossulus. DESCRIPTION: Norhtern blue mussel */ +/* Enchelyurus ater. DESCRIPTION: Black blenny */ +/* Crocodylus acutus. DESCRIPTION: American crocodile */ +/* Scylla spp. DESCRIPTION: */ +/* Cymatium pyrum. DESCRIPTION: Pear triton */ +/* Charybdis hellerii. DESCRIPTION: Spiny hands swimming crab */ +/* Chelycypraea testudinaria. DESCRIPTION: Tortoise cowrie */ +/* Actinopyga lecanora. DESCRIPTION: */ +/* Callionymidae. DESCRIPTION: Dragonets nei */ +/* Acanthopagrus latus. DESCRIPTION: Yellowfin seabream */ +/* Trachycardium spp. DESCRIPTION: */ +/* Syrinx aruanus. DESCRIPTION: Australian trumpet */ +/* Pyxicephalus adspersus. DESCRIPTION: African bull frog */ +/* Styela nordenskjoeldi. DESCRIPTION: */ +/* Ctenopteryx sicula. DESCRIPTION: Toothed-fin squid */ +/* Carapidae. DESCRIPTION: Pearlfishes nei */ +/* Bathypolypus arcticus. DESCRIPTION: North Atlantic octopus */ +/* Chrysiptera sheila. DESCRIPTION: Sheila's damselfish */ +/* Chiloscyllium hasselti. DESCRIPTION: Hasselt's bambooshark */ +/* Chrysiptera unimaculata. DESCRIPTION: Onespot demoiselle */ +/* Bathypolypus sponsalis. DESCRIPTION: Globose octopus */ +/* Polyphyllia talpina. DESCRIPTION: Feather coral */ +/* Priene scabrum. DESCRIPTION: */ +/* Priene spp. DESCRIPTION: */ +/* Charybdis miles. DESCRIPTION: Soldier swimming crab */ +/* Syacium papillosum. DESCRIPTION: Dusky flounder */ +/* Symphurus macrophthalmus. DESCRIPTION: */ +/* Cirrhitidae. DESCRIPTION: Hawkfishes nei */ +/* Antigonia capros. DESCRIPTION: Deepbody boarfish */ +/* Zalieutes elater. DESCRIPTION: Roundel batfish */ +/* Zaniolepis frenata. DESCRIPTION: Shortspine combfish */ +/* Antigonia rubescens. DESCRIPTION: Indo-Pacific boarfish */ +/* Zanclistius elevatus. DESCRIPTION: Longfin boarfish */ +/* Antigonia malayana. DESCRIPTION: */ +/* Zanclus cornutus. DESCRIPTION: Moorish idol */ +/* Zacco platypus. DESCRIPTION: Freshwater minnow */ +/* Zalembius rosaceus. DESCRIPTION: Pink seaperch */ +/* Zaprora silenus. DESCRIPTION: Prowfish */ +/* Cypraeidae. DESCRIPTION: Cowries nei */ +/* Zebrias fasciatus. DESCRIPTION: */ +/* Zebrias quagga. DESCRIPTION: Fringefin zebra sole */ +/* Zabidius novemaculeatus. DESCRIPTION: Ninespine batfish */ +/* Zebrias zebra. DESCRIPTION: Zebra sole */ +/* Capromimus abbreviatus. DESCRIPTION: Capro dory */ +/* Cyttopsis cypho. DESCRIPTION: */ +/* Cyttopsis rosea. DESCRIPTION: Red dory */ +/* Cyttomimus affinis. DESCRIPTION: */ +/* Cyttus novaezealandiae. DESCRIPTION: New Zealand dory */ +/* Zeus capensis. DESCRIPTION: Cape dory */ +/* Cyttus traversi. DESCRIPTION: King dory */ +/* Cyttus australis. DESCRIPTION: Silver dory */ +/* Zidona dufresnei. DESCRIPTION: Angulate volute */ +/* Zebrasoma scopas. DESCRIPTION: Twotone tang */ +/* Zebrasoma flavescens. DESCRIPTION: Yellow tang */ +/* Zesticelus ochotensis. DESCRIPTION: */ +/* Zebrasoma veliferum. DESCRIPTION: Sailfin tang */ +/* Zeidae. DESCRIPTION: Dories nei */ +/* Zebrus zebrus. DESCRIPTION: */ +/* Gymnammodytes cicerelus. DESCRIPTION: Mediterranean sand eel */ +/* Genioliparis lindbergi. DESCRIPTION: */ +/* Zeugopterus punctatus. DESCRIPTION: Topknot */ +/* Gymnammodytes semisquamatus. DESCRIPTION: Smooth sandeel */ +/* Zingel zingel. DESCRIPTION: Zingel */ +/* Cyclopteridae. DESCRIPTION: Lumpfishes nei */ +/* Zebrasoma xanthurum. DESCRIPTION: Yellowtail tang */ +/* Zebrias captivus. DESCRIPTION: Convict zebra sole */ +/* Zebrias synapturoides. DESCRIPTION: Indian zebra sole */ +/* Zebrasoma gemmatum. DESCRIPTION: Spotted tang */ +/* Zeus spp. DESCRIPTION: */ +/* Azorinus abbreviatus. DESCRIPTION: Small short razor */ +/* Azorinus chamasolen. DESCRIPTION: Antique razor clam */ +/* Zenopsis nebulosus. DESCRIPTION: Mirror dory */ +/* Peltorhamphus novaezeelandiae. DESCRIPTION: New Zealand sole */ +/* Zoarchias glaber. DESCRIPTION: */ +/* Zostera marina. DESCRIPTION: Eel-grass */ +/* Zostera noltii. DESCRIPTION: Dwarf eel-grass */ +/* Zoogoneticus quitzeoensis. DESCRIPTION: Picotee goodeid */ +/* Zoroaster spp. DESCRIPTION: Rat-tail stars nei */ +/* Zoanthidea. DESCRIPTION: Zoanthids */ +/* Zappa confluentus. DESCRIPTION: Slender mudskipper */ +/* Pollicipes elegans. DESCRIPTION: Pacific goose barnacle */ +/* Pollicipes polymerus. DESCRIPTION: Leaf barnacle */ +/* Zearaja nasuta. DESCRIPTION: New Zealand rough skate */ +/* Zanclorhynchus spinifer. DESCRIPTION: Antarctic horsefish */ +/* Siniperca scherzeri. DESCRIPTION: Leopard mandarin fish */ +/* Zu cristatus. DESCRIPTION: Scalloped ribbonfish */ +/* Zu elongatus. DESCRIPTION: Taper-tail ribbonfish */ +/* Zungaropsis multimaculatus. DESCRIPTION: */ +/* Zungaro zungaro. DESCRIPTION: */ +/* Schizophrys aspera. DESCRIPTION: Common decorator crab */ +/* Schizophrys dama. DESCRIPTION: Pronghorn decorator crab */ +/* Zygochlamys delicatula. DESCRIPTION: Delicate scallop */ +/* Zygochlamys patagonica. DESCRIPTION: Patagonian scallop */ +/* Zaireichthys zonatus. DESCRIPTION: */ +/* other. DESCRIPTION: Other */ +/* non-specified. DESCRIPTION: Non specified */ +type enumerated SpeciesType +{ + aAA, + aAB, + aAC, + aAD, + aAE, + aAF, + aAG, + aAH, + aAI, + aAJ, + aAK, + aAL, + aAM, + aAN, + aAO, + aAP, + aAQ, + aAR, + aAS, + aAT, + aAU, + aAV, + aAW, + aAX, + aAY, + aAZ, + aBA, + aBB, + aBC, + aBD, + aBE, + aBF, + aBG, + aBH, + aBI, + aBJ, + aBK, + aBL, + aBM, + aBN, + aBO, + aBP, + aBQ, + aBR, + aBS, + aBT, + aBU, + aBV, + aBW, + aBX, + aBY, + aBZ, + aCA, + aCB, + aCC, + aCD, + aCE, + aCF, + aCG, + aCH, + aCI, + aCJ, + aCK, + aCL, + aCM, + aCN, + aCO, + aCP, + aCQ, + aCR, + aCS, + aCT, + aCU, + aCV, + aCW, + aCX, + aCY, + aCZ, + aDA, + aDB, + aDC, + aDD, + aDE, + aDF, + aDG, + aDH, + aDI, + aDJ, + aDK, + aDL, + aDM, + aDN, + aDO, + aDP, + aDQ, + aDR, + aDS, + aDT, + aDU, + aDV, + aDW, + aDX, + aDY, + aDZ, + aEA, + aEB, + aEC, + aED, + aEE, + aEF, + aEG, + aEH, + aEI, + aEJ, + aEK, + aEL, + aEM, + aEN, + aEO, + aEP, + aER, + aES, + aET, + aEU, + aEV, + aEW, + aEX, + aEY, + aEZ, + aFA, + aFB, + aFC, + aFD, + aFE, + aFF, + aFG, + aFH, + aFI, + aFJ, + aFK, + aFL, + aFM, + aFN, + aFO, + aFP, + aFQ, + aFR, + aFS, + aFT, + aFU, + aFV, + aFW, + aFX, + aFY, + aFZ, + aGA, + aGB, + aGC, + aGD, + aGE, + aGF, + aGG, + aGH, + aGI, + aGJ, + aGK, + aGL, + aGM, + aGN, + aGO, + aGP, + aGQ, + aGR, + aGS, + aGT, + aGU, + aGV, + aGW, + aGX, + aGY, + aGZ, + aHA, + aHB, + aHC, + aHD, + aHE, + aHF, + aHG, + aHH, + aHI, + aHJ, + aHK, + aHL, + aHM, + aHN, + aHO, + aHP, + aHQ, + aHR, + aHS, + aHT, + aHU, + aHV, + aHW, + aHX, + aHY, + aHZ, + aIA, + aIB, + aIC, + aID, + aIE, + aIF, + aIG, + aIH, + aII, + aIJ, + aIK, + aIL, + aIM, + aIN, + aIO, + aIP, + aIQ, + aIR, + aIS, + aIT, + aIU, + aIV, + aIW, + aIX, + aIY, + aIZ, + aJA, + aJB, + aJC, + aJD, + aJE, + aJF, + aJG, + aJH, + aJI, + aJJ, + aJK, + aJL, + aJM, + aJN, + aJO, + aJP, + aJQ, + aJR, + aJS, + aJT, + aJU, + aJV, + aJW, + aJX, + aJY, + aJZ, + aKA, + aKB, + aKC, + aKD, + aKE, + aKF, + aKG, + aKH, + aKI, + aKJ, + aKK, + aKL, + aKM, + aKN, + aKO, + aKP, + aKQ, + aKR, + aKS, + aKT, + aKU, + aKV, + aKW, + aKX, + aKY, + aKZ, + aLA, + aLB, + aLC, + aLD, + aLE, + aLF, + aLG, + aLH, + aLI, + aLJ, + aLK, + aLL, + aLM, + aLN, + aLO, + aLP, + aLQ, + aLR, + aLS, + aLT, + aLU, + aLV, + aLW, + aLX, + aLY, + aLZ, + aMA, + aMB, + aMC, + aMD, + aME, + aMF, + aMG, + aMH, + aMI, + aMJ, + aMK, + aML, + aMM, + aMN, + aMO, + aMP, + aMQ, + aMR, + aMS, + aMT, + aMU, + aMV, + aMW, + aMX, + aMY, + aMZ, + aNA, + aNB, + aNC, + aND, + aNE, + aNF, + aNG, + aNI, + aNJ, + aNK, + aNL, + aNM, + aNN, + aNO, + aNP, + aNQ, + aNR, + aNS, + aNT, + aNU, + aNV, + aNW, + aNX, + aNY, + aNZ, + aOA, + aOB, + aOC, + aOD, + aOE, + aOF, + aOG, + aOH, + aOI, + aOJ, + aOK, + aOL, + aOM, + aON, + aOO, + aOP, + aOQ, + aOR, + aOS, + aOT, + aOU, + aOV, + aOW, + aOX, + aOY, + aOZ, + aPA, + aPB, + aPC, + aPD, + aPE, + aPF, + aPG, + aPH, + aPI, + aPJ, + aPK, + aPL, + aPM, + aPN, + aPO, + aPP, + aPQ, + aPR, + aPS, + aPU, + aPV, + aPW, + aPX, + aPY, + aPZ, + aQA, + aQB, + aQC, + aQD, + aQE, + aQF, + aQG, + aQH, + aQI, + aQJ, + aQK, + aQL, + aQM, + aQN, + aQO, + aQP, + aQQ, + aQR, + aQS, + aQT, + aQU, + aQV, + aQW, + aQX, + aQY, + aQZ, + aRA, + aRB, + aRC, + aRD, + aRE, + aRF, + aRG, + aRH, + aRI, + aRJ, + aRK, + aRL, + aRM, + aRN, + aRO, + aRP, + aRQ, + aRR, + aRS, + aRT, + aRU, + aRV, + aRW, + aRX, + aRY, + aRZ, + aSA, + aSB, + aSD, + aSE, + aSF, + aSG, + aSH, + aSI, + aSJ, + aSK, + aSL, + aSM, + aSN, + aSO, + aSP, + aSQ, + aSR, + aST, + aSU, + aSV, + aSW, + aSX, + aSY, + aSZ, + aTA, + aTB, + aTC, + aTD, + aTE, + aTF, + aTG, + aTI, + aTJ, + aTK, + aTL, + aTM, + aTN, + aTO, + aTP, + aTQ, + aTR, + aTS, + aTT, + aTU, + aTV, + aTW, + aTX, + aTY, + aTZ, + aUA, + aUB, + aUC, + aUD, + aUE, + aUF, + aUG, + aUH, + aUI, + aUJ, + aUK, + aUL, + aUM, + aUN, + aUO, + aUP, + aUQ, + aUR, + aUS, + aUT, + aUU, + aUV, + aUW, + aUX, + aUY, + aUZ, + aVA, + aVB, + aVC, + aVD, + aVE, + aVF, + aVG, + aVH, + aVI, + aVJ, + aVK, + aVL, + aVM, + aVN, + aVO, + aVP, + aVQ, + aVR, + aVS, + aVT, + aVU, + aVV, + aVW, + aVX, + aVY, + aVZ, + aWA, + aWB, + aWC, + aWD, + aWE, + aWF, + aWG, + aWH, + aWI, + aWJ, + aWK, + aWL, + aWM, + aWN, + aWO, + aWP, + aWQ, + aWR, + aWS, + aWT, + aWX, + aWY, + aWZ, + aXA, + aXB, + aXC, + aXD, + aXE, + aXF, + aXG, + aXH, + aXI, + aXJ, + aXK, + aXL, + aXM, + aXN, + aXO, + aXP, + aXQ, + aXR, + aXS, + aXT, + aXU, + aXV, + aXY, + aXZ, + aYA, + aYB, + aYC, + aYD, + aYE, + aYF, + aYG, + aYH, + aYI, + aYJ, + aYK, + aYL, + aYM, + aYN, + aYP, + aYQ, + aYR, + aYS, + aYT, + aYU, + aYV, + aYW, + aYX, + aYY, + aYZ, + aZA, + aZB, + aZC, + aZD, + aZE, + aZF, + aZG, + aZH, + aZI, + aZJ, + aZK, + aZL, + aZM, + aZN, + aZO, + aZP, + aZQ, + aZR, + aZS, + aZT, + aZU, + aZV, + aZX, + aZZ, + bAA, + bAB, + bAC, + bAD, + bAE, + bAF, + bAG, + bAH, + bAI, + bAJ, + bAK, + bAL, + bAM, + bAN, + bAO, + bAP, + bAQ, + bAR, + bAS, + bAT, + bAU, + bAV, + bAW, + bAX, + bAY, + bAZ, + bBA, + bBB, + bBC, + bBD, + bBE, + bBF, + bBG, + bBH, + bBI, + bBJ, + bBK, + bBL, + bBM, + bBN, + bBO, + bBP, + bBQ, + bBR, + bBS, + bBT, + bBU, + bBV, + bBW, + bBX, + bBY, + bBZ, + bCA, + bCB, + bCC, + bCE, + bCF, + bCG, + bCH, + bCI, + bCJ, + bCK, + bCL, + bCM, + bCN, + bCO, + bCP, + bCQ, + bCR, + bCS, + bCT, + bCU, + bCV, + bCW, + bCX, + bCY, + bCZ, + bDA, + bDB, + bDC, + bDD, + bDE, + bDF, + bDG, + bDH, + bDI, + bDJ, + bDK, + bDL, + bDM, + bDN, + bDO, + bDP, + bDQ, + bDR, + bDS, + bDT, + bDU, + bDV, + bDW, + bDX, + bDY, + bDZ, + bEA, + bEB, + bEC, + bED, + bEE, + bEF, + bEG, + bEH, + bEI, + bEJ, + bEK, + bEL, + bEM, + bEN, + bEO, + bEP, + bEQ, + bER, + bES, + bET, + bEU, + bEV, + bEW, + bEX, + bEY, + bEZ, + bFA, + bFB, + bFC, + bFD, + bFE, + bFF, + bFG, + bFH, + bFI, + bFJ, + bFK, + bFL, + bFM, + bFN, + bFO, + bFP, + bFQ, + bFR, + bFS, + bFT, + bFU, + bFV, + bFW, + bFX, + bFY, + bFZ, + bGA, + bGB, + bGC, + bGD, + bGE, + bGF, + bGG, + bGH, + bGI, + bGJ, + bGK, + bGL, + bGM, + bGN, + bGO, + bGP, + bGQ, + bGR, + bGS, + bGU, + bGV, + bGW, + bGX, + bGY, + bGZ, + bHA, + bHB, + bHC, + bHD, + bHE, + bHF, + bHG, + bHH, + bHI, + bHJ, + bHK, + bHL, + bHM, + bHN, + bHO, + bHP, + bHQ, + bHS, + bHT, + bHU, + bHV, + bHW, + bHX, + bHY, + bHZ, + bIA, + bIB, + bIC, + bID, + bIE, + bIF, + bIG, + bIH, + bII, + bIJ, + bIK, + bIL, + bIM, + bIN, + bIO, + bIP, + bIQ, + bIR, + bIS, + bIT, + bIU, + bIV, + bIW, + bIX, + bIY, + bJA, + bJB, + bJC, + bJD, + bJE, + bJF, + bJG, + bJH, + bJI, + bJJ, + bJK, + bJL, + bJM, + bJN, + bJO, + bJP, + bJQ, + bJR, + bJS, + bJT, + bJU, + bJV, + bJW, + bJX, + bJY, + bJZ, + bKA, + bKB, + bKC, + bKD, + bKE, + bKF, + bKG, + bKH, + bKI, + bKJ, + bKK, + bKL, + bKM, + bKN, + bKO, + bKP, + bKQ, + bKR, + bKS, + bKT, + bKU, + bKV, + bKW, + bKX, + bKY, + bKZ, + bLA, + bLB, + bLC, + bLD, + bLE, + bLF, + bLG, + bLH, + bLI, + bLJ, + bLK, + bLL, + bLM, + bLN, + bLO, + bLP, + bLQ, + bLR, + bLS, + bLT, + bLU, + bLV, + bLW, + bLX, + bLY, + bMA, + bMB, + bMC, + bMD, + bME, + bMF, + bMG, + bMH, + bMI, + bMJ, + bMK, + bML, + bMM, + bMN, + bMO, + bMP, + bMQ, + bMR, + bMS, + bMT, + bMU, + bMV, + bMW, + bMX, + bMY, + bMZ, + bNA, + bNB, + bNC, + bND, + bNE, + bNF, + bNG, + bNI, + bNJ, + bNK, + bNL, + bNM, + bNN, + bNO, + bNP, + bNQ, + bNS, + bNT, + bNU, + bNV, + bNW, + bNX, + bNY, + bNZ, + bOA, + bOB, + bOC, + bOD, + bOE, + bOF, + bOG, + bOH, + bOI, + bOJ, + bOK, + bOL, + bOM, + bON, + bOO, + bOP, + bOQ, + bOR, + bOS, + bOT, + bOU, + bOV, + bOW, + bOX, + bOY, + bPA, + bPB, + bPC, + bPD, + bPE, + bPF, + bPG, + bPH, + bPI, + bPJ, + bPK, + bPL, + bPM, + bPN, + bPO, + bPP, + bPQ, + bPR, + bPS, + bPT, + bPU, + bPV, + bPW, + bPX, + bPY, + bPZ, + bQA, + bQB, + bQC, + bQD, + bQE, + bQF, + bQG, + bQH, + bQI, + bQJ, + bQK, + bQL, + bQM, + bQN, + bQO, + bQP, + bQQ, + bQR, + bQS, + bQT, + bQU, + bQV, + bQW, + bQX, + bQY, + bQZ, + bRA, + bRB, + bRC, + bRD, + bRF, + bRG, + bRH, + bRI, + bRJ, + bRK, + bRL, + bRM, + bRN, + bRO, + bRP, + bRR, + bRS, + bRT, + bRU, + bRV, + bRW, + bRX, + bRY, + bRZ, + bSA, + bSB, + bSC, + bSD, + bSE, + bSF, + bSG, + bSH, + bSI, + bSJ, + bSK, + bSL, + bSM, + bSN, + bSO, + bSP, + bSQ, + bSR, + bSS, + bST, + bSU, + bSV, + bSW, + bSX, + bSY, + bSZ, + bTA, + bTB, + bTC, + bTD, + bTE, + bTF, + bTG, + bTH, + bTJ, + bTK, + bTL, + bTM, + bTN, + bTO, + bTP, + bTQ, + bTR, + bTS, + bTT, + bTU, + bTV, + bTW, + bTX, + bTY, + bTZ, + bUA, + bUB, + bUC, + bUD, + bUE, + bUF, + bUG, + bUH, + bUI, + bUJ, + bUK, + bUL, + bUM, + bUN, + bUO, + bUP, + bUQ, + bUR, + bUS, + bUT, + bUU, + bUV, + bUW, + bUX, + bUY, + bUZ, + bVA, + bVB, + bVC, + bVD, + bVE, + bVG, + bVH, + bVI, + bVJ, + bVK, + bVL, + bVN, + bVO, + bVP, + bVQ, + bVR, + bVS, + bVU, + bVV, + bVX, + bVY, + bVZ, + bWA, + bWB, + bWC, + bWD, + bWE, + bWF, + bWH, + bWI, + bWJ, + bWK, + bWL, + bWM, + bWN, + bWO, + bWT, + bWU, + bWV, + bWW, + bWX, + bWY, + bWZ, + bXA, + bXB, + bXC, + bXD, + bXF, + bXH, + bXK, + bXM, + bXN, + bXX, + bXY, + bYA, + bYB, + bYC, + bYD, + bYE, + bYF, + bYG, + bYH, + bYI, + bYJ, + bYK, + bYL, + bYM, + bYN, + bYO, + bYP, + bYQ, + bYR, + bYS, + bYT, + bYU, + bYV, + bYW, + bYX, + bYY, + bYZ, + bZB, + bZC, + bZD, + bZG, + bZH, + bZI, + bZJ, + bZM, + bZN, + bZS, + bZV, + bZW, + bZX, + cAA, + cAB, + cAC, + cAD, + cAE, + cAF, + cAG, + cAH, + cAI, + cAJ, + cAK, + cAL, + cAM, + cAN, + cAO, + cAP, + cAQ, + cAR, + cAS, + cAT, + cAU, + cAV, + cAW, + cAX, + cAY, + cAZ, + cBA, + cBB, + cBC, + cBD, + cBE, + cBF, + cBG, + cBH, + cBI, + cBJ, + cBK, + cBM, + cBN, + cBO, + cBP, + cBQ, + cBR, + cBS, + cBT, + cBU, + cBV, + cBW, + cBY, + cBZ, + cCA, + cCB, + cCC, + cCD, + cCE, + cCF, + cCG, + cCI, + cCJ, + cCK, + cCL, + cCM, + cCN, + cCO, + cCP, + cCQ, + cCR, + cCS, + cCT, + cCU, + cCV, + cCW, + cCX, + cCY, + cCZ, + cDA, + cDB, + cDC, + cDD, + cDE, + cDF, + cDG, + cDH, + cDI, + cDJ, + cDK, + cDL, + cDM, + cDN, + cDO, + cDP, + cDQ, + cDR, + cDS, + cDT, + cDU, + cDV, + cDW, + cDX, + cDY, + cDZ, + cEA, + cEB, + cEC, + cED, + cEE, + cEF, + cEG, + cEH, + cEI, + cEJ, + cEK, + cEL, + cEM, + cEN, + cEO, + cEP, + cEQ, + cER, + cES, + cET, + cEU, + cEV, + cEW, + cEX, + cEY, + cEZ, + cFA, + cFB, + cFC, + cFD, + cFE, + cFF, + cFG, + cFH, + cFI, + cFJ, + cFK, + cFL, + cFM, + cFN, + cFO, + cFP, + cFQ, + cFR, + cFS, + cFT, + cFU, + cFV, + cFW, + cFX, + cFY, + cFZ, + cGA, + cGB, + cGC, + cGD, + cGE, + cGF, + cGG, + cGH, + cGI, + cGJ, + cGK, + cGL, + cGM, + cGN, + cGO, + cGP, + cGQ, + cGR, + cGS, + cGT, + cGU, + cGV, + cGW, + cGX, + cGY, + cGZ, + cHA, + cHB, + cHC, + cHD, + cHE, + cHF, + cHG, + cHH, + cHI, + cHJ, + cHK, + cHL, + cHM, + cHO, + cHP, + cHQ, + cHR, + cHS, + cHU, + cHV, + cHW, + cHX, + cHY, + cHZ, + cIA, + cIB, + cIC, + cID, + cIE, + cIF, + cIG, + cIH, + cII, + cIJ, + cIK, + cIL, + cIM, + cIN, + cIO, + cIP, + cIQ, + cIR, + cIS, + cIT, + cIU, + cIV, + cIW, + cIX, + cIY, + cIZ, + cJA, + cJB, + cJC, + cJD, + cJE, + cJF, + cJG, + cJH, + cJI, + cJJ, + cJK, + cJL, + cJM, + cJN, + cJO, + cJP, + cJQ, + cJR, + cJS, + cJT, + cJU, + cJV, + cJW, + cJX, + cJY, + cJZ, + cKA, + cKC, + cKD, + cKE, + cKF, + cKG, + cKH, + cKI, + cKJ, + cKK, + cKL, + cKM, + cKN, + cKO, + cKP, + cKQ, + cKR, + cKS, + cKT, + cKU, + cKV, + cKW, + cKX, + cKY, + cKZ, + cLA, + cLB, + cLC, + cLD, + cLE, + cLF, + cLG, + cLH, + cLI, + cLJ, + cLK, + cLL, + cLM, + cLN, + cLO, + cLP, + cLQ, + cLR, + cLS, + cLT, + cLU, + cLV, + cLW, + cLX, + cLY, + cLZ, + cMA, + cMB, + cMC, + cMD, + cME, + cMF, + cMG, + cMH, + cMI, + cMJ, + cMK, + cML, + cMM, + cMN, + cMO, + cMQ, + cMR, + cMS, + cMT, + cMU, + cMV, + cMW, + cMX, + cMY, + cMZ, + cNA, + cNB, + cNC, + cND, + cNE, + cNF, + cNG, + cNH, + cNI, + cNJ, + cNK, + cNL, + cNM, + cNN, + cNO, + cNP, + cNQ, + cNR, + cNS, + cNT, + cNU, + cNW, + cNX, + cNY, + cNZ, + cOA, + cOB, + cOC, + cOD, + cOE, + cOF, + cOG, + cOH, + cOI, + cOJ, + cOK, + cOL, + cOM, + cON, + cOO, + cOQ, + cOR, + cOS, + cOT, + cOU, + cOV, + cOW, + cOX, + cOY, + cOZ, + cPA, + cPB, + cPC, + cPD, + cPE, + cPF, + cPG, + cPH, + cPI, + cPJ, + cPK, + cPL, + cPM, + cPN, + cPO, + cPP, + cPQ, + cPR, + cPS, + cPT, + cPU, + cPV, + cPW, + cPX, + cPY, + cPZ, + cQA, + cQB, + cQC, + cQD, + cQE, + cQF, + cQG, + cQH, + cQI, + cQJ, + cQK, + cQL, + cQM, + cQN, + cQO, + cQP, + cQQ, + cQR, + cQS, + cQT, + cQU, + cQV, + cQW, + cQX, + cQY, + cQZ, + cRA, + cRB, + cRC, + cRD, + cRE, + cRF, + cRG, + cRH, + cRI, + cRJ, + cRK, + cRL, + cRN, + cRO, + cRP, + cRQ, + cRR, + cRS, + cRT, + cRU, + cRV, + cRW, + cRX, + cRY, + cRZ, + cSA, + cSC, + cSD, + cSE, + cSF, + cSG, + cSH, + cSI, + cSJ, + cSK, + cSL, + cSM, + cSN, + cSO, + cSP, + cSQ, + cSR, + cSS, + cST, + cSU, + cSV, + cSW, + cSX, + cSY, + cSZ, + cTA, + cTB, + cTC, + cTD, + cTE, + cTF, + cTG, + cTH, + cTI, + cTJ, + cTK, + cTL, + cTM, + cTN, + cTO, + cTP, + cTQ, + cTR, + cTS, + cTT, + cTU, + cTV, + cTW, + cTX, + cTY, + cTZ, + cUA, + cUB, + cUC, + cUD, + cUE, + cUF, + cUG, + cUH, + cUI, + cUJ, + cUK, + cUL, + cUM, + cUN, + cUO, + cUP, + cUQ, + cUR, + cUS, + cUT, + cUU, + cUV, + cUW, + cUX, + cUY, + cUZ, + cVA, + cVB, + cVC, + cVD, + cVE, + cVF, + cVG, + cVH, + cVI, + cVJ, + cVK, + cVL, + cVM, + cVN, + cVO, + cVP, + cVQ, + cVR, + cVS, + cVT, + cVU, + cVV, + cVW, + cVX, + cVY, + cVZ, + cWA, + cWB, + cWC, + cWD, + cWE, + cWG, + cWH, + cWI, + cWJ, + cWK, + cWL, + cWM, + cWN, + cWO, + cWQ, + cWR, + cWS, + cWT, + cWU, + cWV, + cWX, + cWY, + cWZ, + cXA, + cXB, + cXC, + cXD, + cXE, + cXF, + cXG, + cXH, + cXI, + cXJ, + cXK, + cXL, + cXM, + cXN, + cXO, + cXP, + cXQ, + cXR, + cXS, + cXT, + cXU, + cXW, + cXY, + cXZ, + cYA, + cYB, + cYC, + cYD, + cYE, + cYF, + cYG, + cYH, + cYI, + cYJ, + cYK, + cYL, + cYM, + cYN, + cYO, + cYP, + cYR, + cYS, + cYT, + cYU, + cYV, + cYW, + cYX, + cYY, + cYZ, + cZA, + cZC, + cZD, + cZE, + cZF, + cZG, + cZH, + cZI, + cZJ, + cZK, + cZL, + cZM, + cZN, + cZP, + cZQ, + cZS, + cZT, + cZW, + cZX, + cZY, + dAA, + dAB, + dAC, + dAD, + dAE, + dAF, + dAG, + dAH, + dAI, + dAJ, + dAK, + dAL, + dAM, + dAO, + dAP, + dAQ, + dAR, + dAS, + dAT, + dAU, + dAV, + dAW, + dAX, + dAY, + dAZ, + dBA, + dBB, + dBC, + dBD, + dBE, + dBF, + dBG, + dBH, + dBI, + dBJ, + dBK, + dBL, + dBM, + dBN, + dBO, + dBP, + dBQ, + dBR, + dBS, + dBT, + dBU, + dBV, + dBW, + dBY, + dBZ, + dCA, + dCC, + dCD, + dCE, + dCF, + dCG, + dCI, + dCJ, + dCK, + dCL, + dCM, + dCN, + dCO, + dCP, + dCQ, + dCR, + dCS, + dCT, + dCU, + dCV, + dCX, + dCY, + dCZ, + dDA, + dDB, + dDC, + dDD, + dDE, + dDF, + dDG, + dDI, + dDK, + dDL, + dDM, + dDN, + dDO, + dDP, + dDS, + dDU, + dDX, + dDY, + dDZ, + dEA, + dEB, + dEC, + dED, + dEE, + dEG, + dEI, + dEJ, + dEL, + dEM, + dEN, + dEP, + dEQ, + dER, + dES, + dET, + dEU, + dEV, + dEX, + dFA, + dFB, + dFC, + dFD, + dFE, + dFF, + dFG, + dFH, + dFI, + dFJ, + dFK, + dFL, + dFM, + dFN, + dFO, + dFP, + dFQ, + dFR, + dFS, + dFT, + dFU, + dFV, + dFX, + dFY, + dFZ, + dGA, + dGB, + dGC, + dGG, + dGH, + dGM, + dGP, + dGQ, + dGS, + dGT, + dGV, + dGW, + dGX, + dGY, + dGZ, + dHA, + dHB, + dHC, + dHD, + dHE, + dHF, + dHG, + dHH, + dHI, + dHJ, + dHK, + dHL, + dHM, + dHN, + dHO, + dHP, + dHQ, + dHR, + dHS, + dHT, + dHU, + dHV, + dHW, + dHX, + dHY, + dHZ, + dIA, + dIB, + dIC, + dID, + dIE, + dIF, + dIG, + dIH, + dII, + dIJ, + dIK, + dIL, + dIM, + dIN, + dIO, + dIP, + dIQ, + dIR, + dIT, + dIU, + dIV, + dIW, + dIX, + dIY, + dIZ, + dJA, + dJB, + dJC, + dJD, + dJE, + dJF, + dJG, + dJH, + dJI, + dJJ, + dJK, + dJL, + dJM, + dJN, + dJO, + dJP, + dJQ, + dJR, + dJS, + dJU, + dJV, + dJX, + dKB, + dKC, + dKD, + dKF, + dKI, + dKJ, + dKK, + dKN, + dKP, + dKR, + dKS, + dKT, + dKU, + dKV, + dKW, + dKX, + dKY, + dKZ, + dLA, + dLB, + dLC, + dLD, + dLE, + dLF, + dLG, + dLH, + dLI, + dLJ, + dLL, + dLM, + dLN, + dLP, + dLQ, + dLS, + dLT, + dLU, + dLW, + dLX, + dMA, + dMB, + dMC, + dMD, + dME, + dMF, + dMG, + dMH, + dMJ, + dMK, + dMM, + dMO, + dMS, + dMT, + dMU, + dMV, + dMW, + dMX, + dMY, + dNA, + dNB, + dNC, + dND, + dNE, + dNF, + dNG, + dNH, + dNI, + dNJ, + dNK, + dNL, + dNM, + dNN, + dNO, + dNP, + dNR, + dNS, + dNT, + dNU, + dNV, + dNW, + dNX, + dNY, + dOA, + dOB, + dOC, + dOD, + dOE, + dOF, + dOG, + dOH, + dOI, + dOL, + dOM, + dON, + dOO, + dOP, + dOR, + dOS, + dOT, + dOU, + dOV, + dOX, + dPA, + dPB, + dPC, + dPD, + dPE, + dPF, + dPG, + dPH, + dPI, + dPJ, + dPK, + dPL, + dPM, + dPN, + dPO, + dPP, + dPQ, + dPR, + dPS, + dPT, + dPU, + dPV, + dPX, + dPY, + dPZ, + dQA, + dQB, + dQC, + dQD, + dQM, + dQS, + dQX, + dRB, + dRC, + dRD, + dRE, + dRF, + dRG, + dRH, + dRI, + dRK, + dRL, + dRM, + dRN, + dRO, + dRP, + dRR, + dRS, + dRT, + dRU, + dRV, + dRW, + dRX, + dRY, + dRZ, + dSA, + dSB, + dSD, + dSE, + dSF, + dSH, + dSI, + dSJ, + dSM, + dSN, + dSO, + dSP, + dSQ, + dSR, + dSS, + dST, + dSU, + dSV, + dSX, + dSZ, + dTA, + dTB, + dTC, + dTE, + dTF, + dTJ, + dTK, + dTL, + dTM, + dTN, + dTP, + dTS, + dTT, + dTU, + dTV, + dTW, + dTX, + dUA, + dUB, + dUC, + dUD, + dUE, + dUF, + dUG, + dUI, + dUJ, + dUK, + dUL, + dUM, + dUN, + dUO, + dUP, + dUR, + dUS, + dUT, + dUU, + dUX, + dVA, + dVC, + dVD, + dVH, + dVI, + dVJ, + dVK, + dVL, + dVW, + dVX, + dVZ, + dWA, + dWB, + dWH, + dWM, + dWO, + dWP, + dWS, + dWW, + dWX, + dXA, + dXB, + dXC, + dXD, + dXE, + dXF, + dXG, + dXH, + dXI, + dXJ, + dXK, + dXL, + dXM, + dXN, + dXO, + dXP, + dXQ, + dXR, + dXS, + dXT, + dXU, + dXV, + dXX, + dYA, + dYB, + dYC, + dYD, + dYE, + dYF, + dYG, + dYI, + dYJ, + dYK, + dYL, + dYM, + dYN, + dYO, + dYP, + dYS, + dYT, + dYV, + dYW, + dYX, + dYZ, + dZE, + dZG, + dZX, + dZZ, + eAA, + eAB, + eAC, + eAD, + eAE, + eAF, + eAG, + eAH, + eAI, + eAJ, + eAK, + eAL, + eAM, + eAN, + eAO, + eAP, + eAQ, + eAR, + eAS, + eAT, + eAU, + eAV, + eAX, + eAY, + eAZ, + eBA, + eBB, + eBC, + eBD, + eBE, + eBF, + eBG, + eBH, + eBI, + eBJ, + eBK, + eBL, + eBM, + eBN, + eBO, + eBP, + eBR, + eBS, + eBT, + eBU, + eBV, + eBW, + eBX, + eBZ, + eCA, + eCB, + eCC, + eCD, + eCE, + eCF, + eCG, + eCH, + eCI, + eCJ, + eCK, + eCL, + eCM, + eCN, + eCO, + eCP, + eCQ, + eCR, + eCS, + eCT, + eCU, + eCV, + eCW, + eCY, + eCZ, + eDA, + eDB, + eDC, + eDD, + eDE, + eDF, + eDG, + eDH, + eDI, + eDJ, + eDK, + eDL, + eDM, + eDN, + eDO, + eDP, + eDQ, + eDR, + eDS, + eDT, + eDU, + eDV, + eDW, + eDX, + eDY, + eDZ, + eEA, + eEB, + eEC, + eED, + eEE, + eEF, + eEG, + eEH, + eEI, + eEJ, + eEK, + eEL, + eEM, + eEN, + eEO, + eEP, + eEQ, + eER, + eES, + eET, + eEU, + eEV, + eEW, + eEX, + eEY, + eEZ, + eFA, + eFB, + eFC, + eFD, + eFE, + eFF, + eFG, + eFH, + eFI, + eFJ, + eFK, + eFL, + eFM, + eFN, + eFO, + eFP, + eFQ, + eFR, + eFS, + eFT, + eFU, + eFV, + eFW, + eFX, + eFY, + eFZ, + eGA, + eGB, + eGC, + eGD, + eGE, + eGF, + eGG, + eGH, + eGI, + eGJ, + eGK, + eGL, + eGM, + eGN, + eGO, + eGP, + eGQ, + eGR, + eGS, + eGT, + eGU, + eGV, + eGW, + eGX, + eGY, + eGZ, + eHA, + eHB, + eHC, + eHD, + eHE, + eHF, + eHG, + eHH, + eHI, + eHJ, + eHK, + eHL, + eHM, + eHN, + eHO, + eHP, + eHQ, + eHR, + eHS, + eHT, + eHU, + eHV, + eHW, + eHX, + eHY, + eHZ, + eIA, + eIB, + eIC, + eID, + eIE, + eIF, + eIG, + eIH, + eII, + eIJ, + eIK, + eIL, + eIM, + eIN, + eIO, + eIP, + eIQ, + eIR, + eIS, + eIT, + eIU, + eIV, + eIW, + eIX, + eIY, + eIZ, + eJA, + eJB, + eJC, + eJD, + eJE, + eJF, + eJG, + eJH, + eJI, + eJJ, + eJK, + eJL, + eJM, + eJN, + eJO, + eJP, + eJR, + eJS, + eJT, + eJU, + eJV, + eJW, + eJX, + eJY, + eJZ, + eKA, + eKB, + eKC, + eKD, + eKE, + eKF, + eKG, + eKH, + eKI, + eKJ, + eKK, + eKL, + eKM, + eKN, + eKO, + eKP, + eKQ, + eKR, + eKS, + eKT, + eKU, + eKV, + eKW, + eKX, + eKY, + eKZ, + eLA, + eLB, + eLC, + eLD, + eLE, + eLG, + eLH, + eLI, + eLJ, + eLK, + eLL, + eLM, + eLN, + eLO, + eLP, + eLQ, + eLR, + eLS, + eLT, + eLU, + eLV, + eLW, + eLX, + eLY, + eLZ, + eMA, + eMB, + eMC, + eMD, + eME, + eMF, + eMG, + eMH, + eMI, + eMJ, + eMK, + eML, + eMM, + eMN, + eMO, + eMP, + eMQ, + eMR, + eMT, + eMU, + eMV, + eMW, + eMX, + eMY, + eMZ, + eNA, + eNB, + eNC, + eND, + eNE, + eNF, + eNG, + eNH, + eNI, + eNJ, + eNK, + eNL, + eNM, + eNN, + eNO, + eNP, + eNQ, + eNR, + eNS, + eNT, + eNU, + eNV, + eNW, + eNX, + eNY, + eNZ, + eOA, + eOB, + eOC, + eOD, + eOE, + eOF, + eOG, + eOH, + eOI, + eOJ, + eOK, + eOL, + eOM, + eON, + eOO, + eOP, + eOQ, + eOR, + eOS, + eOT, + eOU, + eOV, + eOW, + eOX, + eOY, + eOZ, + ePA, + ePB, + ePC, + ePD, + ePE, + ePF, + ePG, + ePH, + ePI, + ePJ, + ePK, + ePL, + ePM, + ePN, + ePO, + ePP, + ePQ, + ePR, + ePS, + ePT, + ePU, + ePV, + ePW, + ePX, + ePY, + ePZ, + eQA, + eQB, + eQC, + eQD, + eQE, + eQF, + eQG, + eQH, + eQI, + eQJ, + eQK, + eQL, + eQM, + eQN, + eQO, + eQP, + eQQ, + eQR, + eQS, + eQT, + eQU, + eQV, + eQW, + eQX, + eQY, + eQZ, + eRA, + eRB, + eRC, + eRD, + eRE, + eRF, + eRG, + eRH, + eRI, + eRJ, + eRK, + eRL, + eRM, + eRN, + eRO, + eRP, + eRQ, + eRR, + eRS, + eRT, + eRU, + eRV, + eRW, + eRX, + eRY, + eRZ, + eSA, + eSB, + eSC, + eSD, + eSE, + eSF, + eSG, + eSH, + eSI, + eSJ, + eSK, + eSL, + eSM, + eSN, + eSO, + eSP, + eSQ, + eSR, + eSS, + eST, + eSU, + eSV, + eSW, + eSX, + eSY, + eSZ, + eTA, + eTB, + eTC, + eTD, + eTE, + eTF, + eTG, + eTH, + eTI, + eTJ, + eTK, + eTL, + eTM, + eTN, + eTO, + eTP, + eTQ, + eTR, + eTS, + eTT, + eTU, + eTV, + eTW, + eTX, + eTY, + eTZ, + eUA, + eUB, + eUC, + eUD, + eUE, + eUF, + eUG, + eUH, + eUI, + eUJ, + eUK, + eUL, + eUM, + eUN, + eUO, + eUP, + eUQ, + eUR, + eUS, + eUT, + eUU, + eUV, + eUW, + eUX, + eUY, + eUZ, + eVA, + eVB, + eVD, + eVE, + eVF, + eVG, + eVH, + eVI, + eVJ, + eVK, + eVL, + eVM, + eVN, + eVO, + eVP, + eVQ, + eVR, + eVS, + eVT, + eVU, + eVV, + eVW, + eVX, + eVY, + eVZ, + eWA, + eWB, + eWC, + eWD, + eWE, + eWF, + eWG, + eWI, + eWK, + eWL, + eWM, + eWN, + eWO, + eWP, + eWQ, + eWR, + eWS, + eWT, + eWU, + eWV, + eWW, + eWX, + eWY, + eWZ, + eXA, + eXB, + eXC, + eXD, + eXE, + eXG, + eXH, + eXI, + eXL, + eXM, + eXN, + eXO, + eXP, + eXQ, + eXR, + eXS, + eXT, + eXU, + eXV, + eXX, + eXY, + eYA, + eYB, + eYC, + eYD, + eYE, + eYF, + eYG, + eYH, + eYI, + eYJ, + eYK, + eYL, + eYM, + eYN, + eYO, + eYP, + eYQ, + eYR, + eYS, + eYT, + eYU, + eYV, + eYW, + eYX, + eYY, + eYZ, + eZA, + eZE, + eZI, + eZJ, + eZL, + eZM, + eZO, + eZP, + eZR, + eZS, + eZW, + eZX, + fAA, + fAB, + fAC, + fAD, + fAE, + fAF, + fAG, + fAH, + fAI, + fAJ, + fAK, + fAL, + fAM, + fAN, + fAP, + fAR, + fAS, + fAT, + fAU, + fAV, + fAW, + fAX, + fBA, + fBB, + fBC, + fBD, + fBH, + fBM, + fBR, + fBT, + fBU, + fBX, + fCA, + fCB, + fCC, + fCD, + fCE, + fCG, + fCH, + fCI, + fCJ, + fCK, + fCL, + fCM, + fCN, + fCO, + fCP, + fCQ, + fCR, + fCS, + fCT, + fCU, + fCV, + fCW, + fCX, + fCY, + fCZ, + fDA, + fDK, + fDM, + fDT, + fDW, + fDX, + fEB, + fED, + fEE, + fEG, + fEH, + fEI, + fEJ, + fEL, + fEP, + fES, + fET, + fEU, + fEW, + fEX, + fEY, + fFP, + fFQ, + fFR, + fFV, + fFX, + fFZ, + fGA, + fGB, + fGC, + fGD, + fGE, + fGF, + fGG, + fGH, + fGI, + fGK, + fGL, + fGM, + fGN, + fGO, + fGP, + fGQ, + fGR, + fGS, + fGT, + fGU, + fGV, + fGX, + fGY, + fGZ, + fHA, + fHS, + fHX, + fIC, + fID, + fIE, + fIF, + fIG, + fIH, + fIK, + fIL, + fIM, + fIN, + fIO, + fIP, + fIS, + fIT, + fIU, + fIV, + fIW, + fIX, + fJD, + fJE, + fJF, + fJN, + fJP, + fJR, + fJS, + fJX, + fKG, + fKL, + fKN, + fKP, + fKU, + fKX, + fLA, + fLB, + fLC, + fLD, + fLE, + fLF, + fLG, + fLH, + fLI, + fLJ, + fLK, + fLL, + fLM, + fLN, + fLO, + fLP, + fLQ, + fLR, + fLS, + fLT, + fLU, + fLV, + fLW, + fLX, + fLY, + fLZ, + fMA, + fMB, + fMC, + fMG, + fMK, + fMN, + fMS, + fMV, + fMX, + fNG, + fNJ, + fNL, + fNO, + fNS, + fNT, + fNX, + fOA, + fOB, + fOC, + fOD, + fOE, + fOF, + fOH, + fOI, + fOK, + fOL, + fON, + fOO, + fOP, + fOR, + fOS, + fOT, + fOU, + fOV, + fOX, + fOY, + fPA, + fPC, + fPE, + fPI, + fPJ, + fPP, + fPR, + fPX, + fPY, + fQB, + fQC, + fQJ, + fQQ, + fRA, + fRB, + fRC, + fRD, + fRE, + fRF, + fRG, + fRH, + fRI, + fRJ, + fRK, + fRL, + fRM, + fRN, + fRO, + fRP, + fRQ, + fRR, + fRS, + fRT, + fRU, + fRX, + fRZ, + fSA, + fSB, + fSC, + fSD, + fSE, + fSG, + fSH, + fSI, + fSK, + fSM, + fSN, + fSO, + fSR, + fSS, + fST, + fSU, + fSV, + fSX, + fSY, + fSZ, + fTA, + fTB, + fTD, + fTE, + fTF, + fTG, + fTI, + fTL, + fTQ, + fTR, + fTS, + fTX, + fTY, + fUA, + fUC, + fUD, + fUE, + fUG, + fUI, + fUK, + fUL, + fUM, + fUN, + fUQ, + fUS, + fUT, + fUU, + fUV, + fUX, + fUY, + fVA, + fVB, + fVE, + fVF, + fVM, + fVP, + fVX, + fWA, + fWB, + fWC, + fWU, + fWX, + fXB, + fXC, + fXE, + fXF, + fXG, + fXL, + fXM, + fXP, + fXW, + fXX, + fYB, + fYC, + fYJ, + fYS, + fYU, + fYX, + fZG, + fZP, + fZX, + fZZ, + gAA, + gAB, + gAC, + gAD, + gAE, + gAF, + gAG, + gAH, + gAI, + gAJ, + gAK, + gAL, + gAM, + gAN, + gAO, + gAP, + gAQ, + gAR, + gAS, + gAT, + gAU, + gAV, + gAW, + gAX, + gAY, + gAZ, + gBA, + gBB, + gBC, + gBD, + gBE, + gBF, + gBG, + gBH, + gBI, + gBJ, + gBK, + gBL, + gBM, + gBN, + gBO, + gBP, + gBQ, + gBR, + gBS, + gBT, + gBU, + gBV, + gBW, + gBX, + gBY, + gBZ, + gCA, + gCB, + gCC, + gCD, + gCE, + gCF, + gCG, + gCH, + gCI, + gCJ, + gCK, + gCL, + gCM, + gCN, + gCO, + gCP, + gCQ, + gCR, + gCS, + gCT, + gCU, + gCV, + gCW, + gCX, + gCY, + gCZ, + gDA, + gDB, + gDC, + gDE, + gDF, + gDG, + gDH, + gDI, + gDJ, + gDK, + gDL, + gDM, + gDN, + gDO, + gDP, + gDQ, + gDR, + gDS, + gDT, + gDU, + gDV, + gDW, + gDX, + gDY, + gDZ, + gEA, + gEB, + gEC, + gED, + gEE, + gEF, + gEG, + gEH, + gEI, + gEJ, + gEK, + gEL, + gEM, + gEN, + gEO, + gEP, + gEQ, + gER, + gES, + gET, + gEU, + gEV, + gEW, + gEX, + gEY, + gEZ, + gFA, + gFB, + gFC, + gFD, + gFE, + gFF, + gFG, + gFH, + gFI, + gFJ, + gFK, + gFL, + gFM, + gFN, + gFO, + gFP, + gFQ, + gFR, + gFS, + gFT, + gFU, + gFV, + gFW, + gFX, + gFY, + gFZ, + gGA, + gGB, + gGC, + gGD, + gGE, + gGF, + gGG, + gGH, + gGI, + gGJ, + gGK, + gGL, + gGM, + gGN, + gGO, + gGP, + gGQ, + gGR, + gGS, + gGT, + gGU, + gGV, + gGW, + gGX, + gGY, + gGZ, + gHA, + gHB, + gHC, + gHD, + gHE, + gHF, + gHG, + gHH, + gHI, + gHJ, + gHK, + gHL, + gHM, + gHN, + gHO, + gHP, + gHR, + gHS, + gHX, + gIA, + gIB, + gIC, + gID, + gIE, + gIF, + gIH, + gII, + gIK, + gIL, + gIM, + gIN, + gIO, + gIP, + gIQ, + gIR, + gIS, + gIT, + gIU, + gIV, + gIW, + gIX, + gIY, + gIZ, + gJA, + gJC, + gJD, + gJE, + gJF, + gJG, + gJI, + gJJ, + gJK, + gJL, + gJM, + gJO, + gJP, + gJQ, + gJR, + gJT, + gJU, + gJV, + gJW, + gJX, + gJZ, + gKA, + gKC, + gKD, + gKE, + gKF, + gKG, + gKH, + gKI, + gKK, + gKL, + gKM, + gKN, + gKO, + gKP, + gKQ, + gKR, + gKS, + gKU, + gKV, + gKX, + gKY, + gLB, + gLC, + gLD, + gLE, + gLF, + gLG, + gLH, + gLI, + gLJ, + gLK, + gLL, + gLM, + gLN, + gLO, + gLP, + gLQ, + gLR, + gLS, + gLT, + gLU, + gLV, + gLW, + gLX, + gLY, + gLZ, + gMA, + gMC, + gMD, + gME, + gMF, + gMG, + gMH, + gMI, + gMJ, + gMK, + gML, + gMM, + gMN, + gMO, + gMP, + gMQ, + gMR, + gMS, + gMT, + gMU, + gMV, + gMW, + gMY, + gMZ, + gNA, + gNB, + gNC, + gND, + gNE, + gNF, + gNG, + gNH, + gNI, + gNJ, + gNK, + gNL, + gNM, + gNN, + gNO, + gNP, + gNQ, + gNR, + gNS, + gNT, + gNU, + gNV, + gNW, + gNX, + gNY, + gNZ, + gOA, + gOB, + gOC, + gOD, + gOE, + gOF, + gOG, + gOH, + gOI, + gOJ, + gOK, + gOL, + gOM, + gON, + gOO, + gOP, + gOQ, + gOR, + gOT, + gOU, + gOV, + gOW, + gOX, + gOY, + gOZ, + gPA, + gPB, + gPC, + gPD, + gPE, + gPF, + gPG, + gPH, + gPI, + gPJ, + gPK, + gPL, + gPM, + gPN, + gPO, + gPP, + gPQ, + gPR, + gPS, + gPT, + gPU, + gPV, + gPW, + gPX, + gPY, + gQA, + gQB, + gQC, + gQD, + gQE, + gQF, + gQG, + gQH, + gQI, + gQJ, + gQK, + gQL, + gQM, + gQN, + gQO, + gQP, + gQQ, + gQR, + gQS, + gQT, + gQU, + gQV, + gQW, + gQX, + gQY, + gQZ, + gRA, + gRB, + gRC, + gRD, + gRE, + gRF, + gRG, + gRH, + gRI, + gRJ, + gRK, + gRL, + gRM, + gRN, + gRO, + gRP, + gRQ, + gRR, + gRT, + gRU, + gRV, + gRW, + gRX, + gSA, + gSB, + gSC, + gSD, + gSE, + gSF, + gSG, + gSH, + gSI, + gSJ, + gSK, + gSL, + gSM, + gSN, + gSO, + gSP, + gSQ, + gSR, + gSS, + gST, + gSU, + gSV, + gSW, + gSX, + gSY, + gSZ, + gTA, + gTB, + gTC, + gTD, + gTE, + gTF, + gTG, + gTH, + gTI, + gTJ, + gTK, + gTL, + gTM, + gTN, + gTO, + gTP, + gTQ, + gTR, + gTS, + gTT, + gTU, + gTV, + gTW, + gTX, + gTY, + gTZ, + gUB, + gUC, + gUD, + gUE, + gUF, + gUG, + gUH, + gUI, + gUJ, + gUK, + gUM, + gUN, + gUO, + gUP, + gUQ, + gUR, + gUS, + gUT, + gUU, + gUV, + gUW, + gUX, + gUY, + gUZ, + gVA, + gVB, + gVC, + gVD, + gVE, + gVF, + gVG, + gVH, + gVI, + gVM, + gVO, + gVT, + gVX, + gWA, + gWB, + gWC, + gWD, + gWG, + gWR, + gWV, + gWX, + gXA, + gXC, + gXD, + gXE, + gXF, + gXL, + gXM, + gXR, + gXS, + gXU, + gXW, + gXX, + gYB, + gYC, + gYD, + gYE, + gYF, + gYG, + gYH, + gYI, + gYJ, + gYK, + gYL, + gYM, + gYN, + gYO, + gYP, + gYQ, + gYR, + gYS, + gYT, + gYU, + gYV, + gYW, + gYY, + gYZ, + gZM, + gZN, + gZO, + gZP, + gZQ, + gZR, + gZS, + gZT, + gZU, + gZV, + gZW, + gZX, + gZY, + gZZ, + hAA, + hAB, + hAD, + hAE, + hAF, + hAG, + hAH, + hAI, + hAJ, + hAK, + hAL, + hAN, + hAO, + hAP, + hAQ, + hAR, + hAS, + hAU, + hAV, + hAW, + hAX, + hAY, + hAZ, + hBA, + hBB, + hBC, + hBD, + hBE, + hBF, + hBG, + hBH, + hBI, + hBJ, + hBK, + hBL, + hBM, + hBN, + hBO, + hBP, + hBQ, + hBR, + hBS, + hBT, + hBU, + hBV, + hBW, + hBX, + hBY, + hBZ, + hCA, + hCB, + hCC, + hCD, + hCE, + hCF, + hCG, + hCH, + hCI, + hCJ, + hCK, + hCL, + hCM, + hCN, + hCO, + hCP, + hCQ, + hCR, + hCS, + hCT, + hCU, + hCV, + hCW, + hCX, + hCY, + hCZ, + hDA, + hDB, + hDC, + hDD, + hDE, + hDF, + hDG, + hDH, + hDI, + hDJ, + hDK, + hDL, + hDM, + hDO, + hDP, + hDQ, + hDR, + hDS, + hDT, + hDU, + hDV, + hDW, + hDX, + hDY, + hDZ, + hEA, + hEB, + hEC, + hED, + hEE, + hEF, + hEG, + hEH, + hEI, + hEJ, + hEK, + hEL, + hEM, + hEN, + hEO, + hEP, + hEQ, + hER, + hES, + hEU, + hEV, + hEW, + hEX, + hEY, + hEZ, + hFA, + hFB, + hFC, + hFD, + hFE, + hFF, + hFG, + hFH, + hFI, + hFJ, + hFK, + hFL, + hFM, + hFN, + hFO, + hFP, + hFQ, + hFR, + hFS, + hFT, + hFU, + hFV, + hFW, + hFX, + hFY, + hFZ, + hGA, + hGB, + hGC, + hGD, + hGE, + hGF, + hGG, + hGH, + hGI, + hGJ, + hGK, + hGL, + hGM, + hGN, + hGO, + hGP, + hGQ, + hGR, + hGS, + hGT, + hGU, + hGV, + hGW, + hGX, + hGY, + hGZ, + hHA, + hHB, + hHC, + hHD, + hHE, + hHF, + hHG, + hHH, + hHI, + hHJ, + hHK, + hHL, + hHM, + hHN, + hHO, + hHP, + hHQ, + hHR, + hHS, + hHT, + hHU, + hHV, + hHW, + hHX, + hHY, + hHZ, + hIA, + hIB, + hIC, + hID, + hIE, + hIF, + hIG, + hIH, + hII, + hIJ, + hIK, + hIL, + hIM, + hIN, + hIO, + hIP, + hIQ, + hIR, + hIS, + hIT, + hIU, + hIV, + hIW, + hIX, + hIY, + hIZ, + hJA, + hJB, + hJC, + hJD, + hJE, + hJF, + hJG, + hJH, + hJI, + hJJ, + hJK, + hJL, + hJM, + hJN, + hJO, + hJP, + hJQ, + hJR, + hJS, + hJT, + hJU, + hJV, + hJW, + hJX, + hJY, + hJZ, + hKA, + hKB, + hKC, + hKD, + hKE, + hKF, + hKG, + hKH, + hKI, + hKJ, + hKK, + hKL, + hKM, + hKN, + hKO, + hKP, + hKQ, + hKR, + hKS, + hKT, + hKU, + hKV, + hKW, + hKX, + hKY, + hKZ, + hLA, + hLB, + hLC, + hLD, + hLE, + hLF, + hLG, + hLH, + hLI, + hLJ, + hLK, + hLL, + hLM, + hLN, + hLO, + hLP, + hLQ, + hLR, + hLS, + hLT, + hLU, + hLV, + hLW, + hLX, + hLY, + hLZ, + hMA, + hMB, + hMC, + hMD, + hME, + hMF, + hMG, + hMH, + hMI, + hMJ, + hMK, + hML, + hMM, + hMN, + hMO, + hMP, + hMQ, + hMR, + hMS, + hMT, + hMU, + hMV, + hMW, + hMX, + hMY, + hMZ, + hNA, + hNB, + hNC, + hND, + hNE, + hNF, + hNG, + hNH, + hNI, + hNJ, + hNK, + hNL, + hNM, + hNN, + hNO, + hNP, + hNQ, + hNR, + hNS, + hNT, + hNU, + hNV, + hNW, + hNX, + hNY, + hNZ, + hOA, + hOB, + hOC, + hOD, + hOE, + hOF, + hOG, + hOH, + hOI, + hOJ, + hOK, + hOL, + hOM, + hON, + hOO, + hOP, + hOQ, + hOR, + hOS, + hOT, + hOU, + hOV, + hOW, + hOX, + hOY, + hOZ, + hPB, + hPC, + hPD, + hPE, + hPF, + hPG, + hPH, + hPI, + hPJ, + hPK, + hPL, + hPM, + hPN, + hPO, + hPP, + hPQ, + hPR, + hPS, + hPT, + hPU, + hPV, + hPW, + hPX, + hPY, + hPZ, + hQA, + hQB, + hQC, + hQD, + hQE, + hQF, + hQG, + hQH, + hQI, + hQJ, + hQK, + hQL, + hQM, + hQN, + hQO, + hQP, + hQQ, + hQR, + hQS, + hQT, + hQU, + hQV, + hQW, + hQX, + hQY, + hQZ, + hRA, + hRB, + hRC, + hRD, + hRE, + hRF, + hRG, + hRH, + hRI, + hRJ, + hRK, + hRL, + hRM, + hRN, + hRO, + hRP, + hRQ, + hRR, + hRS, + hRT, + hRU, + hRV, + hRW, + hRX, + hRY, + hRZ, + hSA, + hSB, + hSC, + hSD, + hSE, + hSF, + hSG, + hSH, + hSI, + hSJ, + hSK, + hSL, + hSM, + hSN, + hSO, + hSP, + hSQ, + hSR, + hSS, + hST, + hSU, + hSV, + hSW, + hSX, + hSY, + hSZ, + hTA, + hTB, + hTC, + hTD, + hTE, + hTF, + hTG, + hTH, + hTI, + hTJ, + hTK, + hTL, + hTM, + hTN, + hTO, + hTP, + hTQ, + hTR, + hTS, + hTU, + hTV, + hTW, + hTX, + hTY, + hTZ, + hUA, + hUB, + hUC, + hUD, + hUE, + hUF, + hUG, + hUH, + hUI, + hUJ, + hUK, + hUL, + hUM, + hUN, + hUO, + hUP, + hUQ, + hUR, + hUS, + hUT, + hUU, + hUV, + hUW, + hUX, + hUY, + hUZ, + hVA, + hVB, + hVC, + hVD, + hVE, + hVG, + hVH, + hVI, + hVJ, + hVK, + hVL, + hVM, + hVN, + hVP, + hVQ, + hVR, + hVS, + hVT, + hVU, + hVV, + hVW, + hVX, + hVY, + hVZ, + hWA, + hWB, + hWC, + hWD, + hWE, + hWF, + hWH, + hWJ, + hWK, + hWL, + hWM, + hWN, + hWP, + hWQ, + hWR, + hWS, + hWT, + hWU, + hWV, + hWW, + hWX, + hWY, + hWZ, + hXA, + hXB, + hXC, + hXD, + hXE, + hXF, + hXG, + hXH, + hXI, + hXJ, + hXK, + hXL, + hXM, + hXN, + hXO, + hXP, + hXQ, + hXR, + hXS, + hXT, + hXU, + hXV, + hXW, + hXX, + hXY, + hXZ, + hYA, + hYB, + hYC, + hYD, + hYE, + hYF, + hYG, + hYH, + hYI, + hYJ, + hYK, + hYL, + hYM, + hYN, + hYO, + hYQ, + hYR, + hYS, + hYT, + hYU, + hYV, + hYW, + hYX, + hYY, + hYZ, + hZA, + hZB, + hZC, + hZD, + hZE, + hZI, + hZL, + hZM, + hZO, + hZP, + hZS, + hZT, + hZU, + hZV, + hZW, + hZX, + hZY, + hZZ, + iAA, + iAB, + iAC, + iAD, + iAE, + iAF, + iAG, + iAH, + iAI, + iAJ, + iAK, + iAL, + iAM, + iAN, + iAO, + iAP, + iAQ, + iAR, + iAS, + iAT, + iAU, + iAV, + iAW, + iAX, + iAY, + iAZ, + iBA, + iBB, + iBC, + iBD, + iBE, + iBF, + iBG, + iBH, + iBI, + iBJ, + iBK, + iBL, + iBM, + iBN, + iBO, + iBP, + iBQ, + iBR, + iBS, + iBT, + iBU, + iBV, + iBW, + iBX, + iBY, + iBZ, + iCA, + iCB, + iCC, + iCD, + iCE, + iCF, + iCG, + iCH, + iCI, + iCJ, + iCK, + iCL, + iCM, + iCN, + iCO, + iCP, + iCQ, + iCR, + iCS, + iCT, + iCU, + iCV, + iCW, + iCX, + iCY, + iCZ, + iDA, + iDB, + iDC, + iDD, + iDE, + iDF, + iDG, + iDH, + iDI, + iDJ, + iDK, + iDL, + iDM, + iDN, + iDO, + iDP, + iDQ, + iDR, + iDT, + iDU, + iDV, + iDW, + iDX, + iDY, + iDZ, + iEA, + iEB, + iEC, + iED, + iEE, + iEF, + iEG, + iEH, + iEI, + iEJ, + iEK, + iEL, + iEM, + iEN, + iEO, + iEP, + iEQ, + iER, + iET, + iEU, + iEV, + iEW, + iEX, + iEY, + iEZ, + iFA, + iFB, + iFC, + iFD, + iFK, + iFL, + iFQ, + iFR, + iFT, + iFV, + iFX, + iFY, + iGA, + iGB, + iGC, + iGD, + iGE, + iGF, + iGG, + iGH, + iGI, + iGJ, + iGL, + iGM, + iGN, + iGO, + iGP, + iGQ, + iGR, + iGS, + iGT, + iGU, + iGV, + iGX, + iHA, + iHB, + iHC, + iHD, + iHE, + iHF, + iHG, + iHH, + iHI, + iHJ, + iHL, + iHN, + iHO, + iHP, + iHQ, + iHR, + iHS, + iHT, + iHV, + iHX, + iHY, + iIB, + iIC, + iID, + iIE, + iIG, + iII, + iIL, + iIN, + iIR, + iIS, + iIT, + iIU, + iIV, + iIX, + iJI, + iJX, + iJY, + iJZ, + iKA, + iKB, + iKC, + iKD, + iKE, + iKF, + iKG, + iKH, + iKI, + iKJ, + iKK, + iKL, + iKM, + iKN, + iKO, + iKP, + iKQ, + iKR, + iKS, + iKT, + iKU, + iKV, + iKW, + iKX, + iKY, + iLA, + iLB, + iLE, + iLF, + iLG, + iLI, + iLJ, + iLK, + iLL, + iLM, + iLN, + iLO, + iLP, + iLQ, + iLR, + iLS, + iLX, + iLY, + iMA, + iMB, + iMD, + iME, + iML, + iMM, + iMO, + iMP, + iMR, + iMS, + iMT, + iMV, + iMX, + iMY, + iNA, + iNB, + iNC, + iND, + iNE, + iNF, + iNG, + iNI, + iNJ, + iNK, + iNL, + iNM, + iNN, + iNO, + iNP, + iNQ, + iNR, + iNT, + iNU, + iNV, + iNW, + iNX, + iNZ, + iOA, + iOB, + iOD, + iOE, + iOF, + iOI, + iOJ, + iOK, + iOL, + iOM, + iOO, + iOP, + iOQ, + iOR, + iOS, + iOT, + iOU, + iOV, + iOX, + iOZ, + iPD, + iPG, + iPH, + iPL, + iPN, + iPO, + iPP, + iPT, + iPU, + iPX, + iPZ, + iQA, + iQH, + iQI, + iQJ, + iQK, + iQL, + iQM, + iQN, + iQO, + iQP, + iQQ, + iQR, + iQS, + iQT, + iQU, + iQV, + iQW, + iQX, + iRA, + iRB, + iRD, + iRE, + iRF, + iRG, + iRH, + iRI, + iRJ, + iRK, + iRL, + iRM, + iRN, + iRO, + iRP, + iRQ, + iRR, + iRS, + iRT, + iRV, + iRW, + iRX, + iRZ, + iSA, + iSB, + iSC, + iSD, + iSE, + iSF, + iSG, + iSH, + iSI, + iSJ, + iSK, + iSL, + iSM, + iSN, + iSO, + iSP, + iSQ, + iSR, + iSS, + iST, + iSU, + iSV, + iSW, + iSX, + iSY, + iSZ, + iTA, + iTB, + iTC, + iTD, + iTE, + iTF, + iTG, + iTH, + iTI, + iTJ, + iTK, + iTL, + iTM, + iTN, + iTO, + iTP, + iTQ, + iTR, + iTS, + iTT, + iTU, + iTV, + iTW, + iTX, + iTZ, + iUA, + iUB, + iUC, + iUE, + iUG, + iUH, + iUI, + iUJ, + iUL, + iUM, + iUN, + iUO, + iUP, + iUR, + iUS, + iUT, + iUU, + iUV, + iUX, + iVO, + iVV, + iVW, + iVX, + iVY, + iVZ, + iWA, + iWB, + iWC, + iWP, + iWZ, + iXO, + iXP, + iYA, + iYB, + iYC, + iYD, + iYE, + iYF, + iYG, + iYI, + iYJ, + iYK, + iYL, + iYM, + iYO, + iYP, + iYR, + iYS, + iYT, + iYU, + iYV, + iYX, + iYY, + iZI, + iZJ, + iZX, + jAA, + jAB, + jAD, + jAE, + jAF, + jAG, + jAH, + jAI, + jAJ, + jAK, + jAL, + jAM, + jAN, + jAO, + jAP, + jAQ, + jAR, + jAS, + jAT, + jAU, + jAV, + jAW, + jAX, + jAY, + jAZ, + jBA, + jBB, + jBC, + jBD, + jBE, + jBF, + jBG, + jBH, + jBI, + jBJ, + jBK, + jBL, + jBM, + jBN, + jBO, + jBX, + jBZ, + jCB, + jCC, + jCF, + jCG, + jCM, + jCN, + jCP, + jCR, + jCS, + jCT, + jCU, + jCV, + jCX, + jCY, + jCZ, + jDA, + jDC, + jDF, + jDK, + jDM, + jDO, + jDP, + jDR, + jDS, + jDT, + jDX, + jDY, + jEA, + jEB, + jEC, + jED, + jEL, + jER, + jEX, + jFA, + jFB, + jFC, + jFD, + jFE, + jFF, + jFG, + jFH, + jFI, + jFJ, + jFK, + jFL, + jFM, + jFN, + jFO, + jFP, + jFQ, + jFR, + jFS, + jFT, + jFU, + jFV, + jFW, + jFX, + jFY, + jFZ, + jGQ, + jGU, + jGX, + jHA, + jHB, + jHC, + jHD, + jHX, + jIC, + jIO, + jIP, + jIX, + jJM, + jJX, + jKI, + jKJ, + jKO, + jKX, + jLB, + jLD, + jLM, + jLR, + jLT, + jLX, + jMO, + jMP, + jMS, + jMX, + jNA, + jNG, + jNR, + jOA, + jOB, + jOC, + jOD, + jOE, + jON, + jOS, + jOT, + jOU, + jOX, + jPA, + jPC, + jPD, + jPM, + jPP, + jPS, + jPV, + jPX, + jQX, + jRA, + jRB, + jRC, + jRD, + jRE, + jRF, + jRG, + jRH, + jRI, + jRJ, + jRK, + jRL, + jRM, + jRN, + jRO, + jRP, + jRQ, + jRR, + jRS, + jRT, + jRU, + jRV, + jRW, + jRX, + jRY, + jRZ, + jSC, + jSI, + jSN, + jSO, + jSP, + jSS, + jSU, + jSX, + jTP, + jTQ, + jTT, + jTX, + jUA, + jUC, + jUD, + jUH, + jUI, + jUJ, + jUL, + jUM, + jUN, + jUO, + jUP, + jUR, + jUS, + jUT, + jUU, + jUV, + jUX, + jVX, + jVY, + jWX, + jWY, + jWZ, + jXA, + jXB, + jXC, + jXD, + jXX, + jYL, + jYW, + jYX, + jZO, + jZX, + kAA, + kAB, + kAC, + kAD, + kAE, + kAF, + kAG, + kAH, + kAI, + kAK, + kAL, + kAM, + kAN, + kAO, + kAP, + kAQ, + kAR, + kAS, + kAT, + kAW, + kAX, + kAY, + kBA, + kBB, + kBK, + kBR, + kBX, + kCA, + kCB, + kCC, + kCD, + kCE, + kCF, + kCG, + kCH, + kCI, + kCJ, + kCK, + kCL, + kCM, + kCN, + kCO, + kCP, + kCQ, + kCR, + kCS, + kCT, + kCU, + kCV, + kCW, + kCX, + kCY, + kCZ, + kDA, + kDB, + kDC, + kDD, + kDE, + kDF, + kDG, + kDH, + kDI, + kDJ, + kDK, + kDL, + kDM, + kDN, + kDO, + kDQ, + kDR, + kDS, + kDT, + kDU, + kDW, + kDX, + kDY, + kDZ, + kEA, + kEC, + kED, + kEE, + kEF, + kEK, + kEM, + kEN, + kEV, + kEX, + kEZ, + kFA, + kFB, + kFC, + kFF, + kFK, + kFL, + kFM, + kFR, + kFT, + kFU, + kFV, + kFX, + kGA, + kGB, + kGC, + kGF, + kGG, + kGH, + kGL, + kGM, + kGX, + kHA, + kHC, + kHF, + kHI, + kHN, + kHO, + kHP, + kHQ, + kHR, + kHS, + kHU, + kHV, + kHX, + kIA, + kIB, + kIC, + kID, + kIE, + kIF, + kIG, + kIH, + kII, + kIK, + kIL, + kIM, + kIN, + kIO, + kIP, + kIQ, + kIR, + kIS, + kIT, + kIU, + kIW, + kIX, + kIY, + kJC, + kJT, + kJX, + kKA, + kKC, + kKD, + kKF, + kKI, + kKJ, + kKK, + kKL, + kKM, + kKN, + kKO, + kKP, + kKR, + kKS, + kKT, + kKU, + kKV, + kKW, + kKX, + kLA, + kLB, + kLC, + kLD, + kLE, + kLG, + kLH, + kLI, + kLJ, + kLK, + kLL, + kLM, + kLN, + kLO, + kLP, + kLQ, + kLR, + kLS, + kLT, + kLU, + kLV, + kLX, + kMB, + kMC, + kMD, + kMF, + kMH, + kMI, + kMJ, + kMK, + kML, + kMM, + kMN, + kMO, + kMP, + kMQ, + kMR, + kMS, + kMT, + kMU, + kMV, + kMW, + kMX, + kNA, + kNB, + kNC, + kNE, + kNF, + kNG, + kNH, + kNI, + kNJ, + kNK, + kNL, + kNM, + kNN, + kNO, + kNP, + kNQ, + kNR, + kNS, + kNT, + kNU, + kNV, + kNW, + kNX, + kNY, + kOA, + kOB, + kOC, + kOD, + kOE, + kOF, + kOG, + kOI, + kOJ, + kOK, + kOL, + kOM, + kON, + kOO, + kOP, + kOQ, + kOR, + kOS, + kOT, + kOU, + kOV, + kOW, + kOX, + kOY, + kOZ, + kPA, + kPB, + kPC, + kPE, + kPF, + kPG, + kPH, + kPI, + kPJ, + kPK, + kPL, + kPM, + kPN, + kPO, + kPP, + kPQ, + kPR, + kPS, + kPT, + kPU, + kPV, + kPW, + kPX, + kPY, + kQB, + kQC, + kQE, + kQF, + kQH, + kQL, + kQM, + kQN, + kQO, + kQP, + kQR, + kQS, + kQT, + kQU, + kQX, + kQY, + kRA, + kRB, + kRC, + kRE, + kRF, + kRG, + kRH, + kRI, + kRJ, + kRK, + kRL, + kRM, + kRN, + kRO, + kRQ, + kRR, + kRS, + kRT, + kRU, + kRV, + kRW, + kRX, + kRY, + kRZ, + kSB, + kSC, + kSD, + kSE, + kSF, + kSH, + kSM, + kSN, + kSS, + kST, + kSU, + kSV, + kSW, + kSX, + kSY, + kSZ, + kTA, + kTB, + kTC, + kTD, + kTE, + kTF, + kTG, + kTH, + kTI, + kTJ, + kTK, + kTL, + kTM, + kTN, + kTO, + kTP, + kTQ, + kTR, + kTS, + kTT, + kTU, + kTV, + kTX, + kTY, + kTZ, + kUA, + kUB, + kUC, + kUD, + kUE, + kUF, + kUG, + kUH, + kUI, + kUJ, + kUK, + kUL, + kUM, + kUN, + kUO, + kUP, + kUQ, + kUR, + kUS, + kUT, + kUU, + kUV, + kUW, + kUX, + kUY, + kVA, + kVP, + kVQ, + kVR, + kVV, + kVX, + kWA, + kWH, + kWX, + kXP, + kXQ, + kXX, + kYA, + kYB, + kYC, + kYE, + kYG, + kYH, + kYI, + kYJ, + kYL, + kYM, + kYO, + kYP, + kYS, + kYU, + kYV, + kYX, + kYY, + kZG, + kZH, + kZI, + kZJ, + kZK, + kZL, + kZM, + kZN, + kZO, + kZP, + kZQ, + kZR, + kZS, + kZT, + kZU, + kZV, + kZW, + kZX, + kZY, + kZZ, + lAA, + lAB, + lAC, + lAD, + lAE, + lAF, + lAG, + lAH, + lAI, + lAJ, + lAK, + lAL, + lAN, + lAO, + lAP, + lAQ, + lAR, + lAS, + lAT, + lAU, + lAV, + lAW, + lAX, + lAY, + lAZ, + lBA, + lBB, + lBC, + lBD, + lBE, + lBF, + lBG, + lBH, + lBI, + lBJ, + lBK, + lBL, + lBM, + lBN, + lBO, + lBP, + lBQ, + lBR, + lBS, + lBT, + lBU, + lBV, + lBW, + lBX, + lBY, + lBZ, + lCA, + lCB, + lCC, + lCD, + lCE, + lCF, + lCG, + lCH, + lCI, + lCJ, + lCK, + lCL, + lCM, + lCN, + lCO, + lCP, + lCQ, + lCR, + lCS, + lCT, + lCU, + lCV, + lCW, + lCX, + lCY, + lCZ, + lDA, + lDB, + lDC, + lDD, + lDE, + lDF, + lDG, + lDH, + lDI, + lDJ, + lDK, + lDL, + lDM, + lDN, + lDO, + lDP, + lDQ, + lDR, + lDS, + lDT, + lDU, + lDV, + lDW, + lDX, + lDY, + lDZ, + lEB, + lEC, + lED, + lEE, + lEF, + lEG, + lEH, + lEI, + lEJ, + lEK, + lEL, + lEM, + lEN, + lEP, + lEQ, + lER, + lES, + lET, + lEU, + lEV, + lEW, + lEY, + lEZ, + lFA, + lFB, + lFC, + lFD, + lFE, + lFF, + lFG, + lFH, + lFI, + lFJ, + lFK, + lFL, + lFM, + lFN, + lFO, + lFP, + lFQ, + lFR, + lFS, + lFT, + lFU, + lFV, + lFW, + lFX, + lFY, + lFZ, + lGA, + lGB, + lGC, + lGD, + lGE, + lGF, + lGG, + lGH, + lGI, + lGK, + lGL, + lGM, + lGN, + lGO, + lGP, + lGQ, + lGR, + lGS, + lGT, + lGU, + lGV, + lGW, + lGX, + lGY, + lGZ, + lHA, + lHB, + lHC, + lHD, + lHE, + lHF, + lHG, + lHH, + lHI, + lHJ, + lHK, + lHL, + lHM, + lHN, + lHO, + lHP, + lHQ, + lHR, + lHS, + lHT, + lHU, + lHV, + lHW, + lHX, + lHY, + lHZ, + lIA, + lIB, + lIC, + lID, + lIE, + lIF, + lIG, + lIH, + lII, + lIJ, + lIK, + lIL, + lIM, + lIN, + lIO, + lIQ, + lIR, + lIS, + lIT, + lIU, + lIV, + lIW, + lIX, + lIY, + lJA, + lJB, + lJC, + lJD, + lJE, + lJF, + lJG, + lJH, + lJI, + lJJ, + lJK, + lJL, + lJM, + lJN, + lJO, + lJP, + lJQ, + lJR, + lJS, + lJT, + lJU, + lJV, + lJW, + lJX, + lJY, + lJZ, + lKA, + lKB, + lKC, + lKD, + lKE, + lKF, + lKG, + lKH, + lKI, + lKJ, + lKK, + lKL, + lKM, + lKN, + lKO, + lKP, + lKQ, + lKR, + lKS, + lKT, + lKU, + lKV, + lKW, + lKX, + lKY, + lKZ, + lLA, + lLB, + lLC, + lLD, + lLE, + lLF, + lLG, + lLH, + lLI, + lLJ, + lLK, + lLL, + lLM, + lLN, + lLO, + lLP, + lLQ, + lLR, + lLS, + lLT, + lLU, + lLV, + lLW, + lLX, + lLY, + lLZ, + lMA, + lMB, + lMC, + lMD, + lME, + lMF, + lMG, + lMH, + lMI, + lMJ, + lMK, + lML, + lMM, + lMN, + lMO, + lMP, + lMQ, + lMR, + lMS, + lMT, + lMU, + lMV, + lMW, + lMX, + lMY, + lMZ, + lNA, + lNB, + lNC, + lND, + lNE, + lNF, + lNG, + lNH, + lNI, + lNJ, + lNK, + lNL, + lNM, + lNN, + lNO, + lNP, + lNQ, + lNR, + lNS, + lNT, + lNU, + lNV, + lNW, + lNX, + lNY, + lNZ, + lOA, + lOB, + lOC, + lOD, + lOE, + lOF, + lOG, + lOH, + lOI, + lOJ, + lOK, + lOL, + lOM, + lON, + lOO, + lOP, + lOQ, + lOR, + lOS, + lOT, + lOU, + lOV, + lOW, + lOX, + lOY, + lOZ, + lPA, + lPB, + lPC, + lPD, + lPE, + lPF, + lPG, + lPH, + lPI, + lPJ, + lPK, + lPL, + lPM, + lPN, + lPO, + lPP, + lPQ, + lPR, + lPS, + lPT, + lPU, + lPV, + lPW, + lPX, + lPY, + lPZ, + lQA, + lQB, + lQC, + lQD, + lQF, + lQG, + lQH, + lQI, + lQJ, + lQK, + lQL, + lQM, + lQN, + lQO, + lQP, + lQQ, + lQR, + lQS, + lQT, + lQU, + lQV, + lQW, + lQX, + lQY, + lQZ, + lRA, + lRB, + lRC, + lRD, + lRE, + lRF, + lRG, + lRH, + lRI, + lRJ, + lRK, + lRL, + lRM, + lRN, + lRO, + lRP, + lRQ, + lRR, + lRS, + lRT, + lRU, + lRV, + lRW, + lRX, + lRY, + lRZ, + lSA, + lSB, + lSC, + lSD, + lSE, + lSF, + lSG, + lSH, + lSI, + lSJ, + lSL, + lSM, + lSN, + lSO, + lSQ, + lSR, + lSS, + lST, + lSU, + lSV, + lSW, + lSX, + lSZ, + lTA, + lTC, + lTD, + lTE, + lTF, + lTG, + lTH, + lTI, + lTJ, + lTK, + lTL, + lTM, + lTN, + lTO, + lTP, + lTQ, + lTR, + lTS, + lTT, + lTU, + lTV, + lTW, + lTX, + lTY, + lTZ, + lUA, + lUB, + lUC, + lUD, + lUE, + lUF, + lUG, + lUH, + lUI, + lUJ, + lUK, + lUL, + lUM, + lUN, + lUO, + lUP, + lUQ, + lUR, + lUS, + lUT, + lUU, + lUV, + lUW, + lUX, + lUY, + lUZ, + lVA, + lVB, + lVC, + lVD, + lVE, + lVF, + lVG, + lVH, + lVI, + lVJ, + lVK, + lVL, + lVM, + lVN, + lVO, + lVP, + lVQ, + lVS, + lVT, + lVU, + lVV, + lVW, + lVX, + lVY, + lVZ, + lWA, + lWB, + lWD, + lWE, + lWF, + lWG, + lWH, + lWI, + lWJ, + lWK, + lWL, + lWN, + lWO, + lWP, + lWQ, + lWR, + lWS, + lWT, + lWU, + lWW, + lWX, + lWY, + lWZ, + lXA, + lXB, + lXC, + lXE, + lXF, + lXK, + lXN, + lXO, + lXP, + lXR, + lXS, + lXX, + lXY, + lXZ, + lYA, + lYB, + lYC, + lYD, + lYE, + lYF, + lYG, + lYH, + lYI, + lYJ, + lYK, + lYL, + lYM, + lYN, + lYO, + lYP, + lYQ, + lYR, + lYS, + lYT, + lYU, + lYV, + lYW, + lYX, + lYY, + lYZ, + lZA, + lZB, + lZC, + lZD, + lZE, + lZF, + lZG, + lZH, + lZI, + lZJ, + lZK, + lZL, + lZM, + lZN, + lZO, + lZP, + lZQ, + lZR, + lZS, + lZT, + lZU, + lZV, + lZW, + lZX, + lZY, + lZZ, + mAA, + mAB, + mAC, + mAD, + mAE, + mAF, + mAG, + mAH, + mAI, + mAJ, + mAK, + mAL, + mAM, + mAN, + mAO, + mAP, + mAQ, + mAR, + mAS, + mAT, + mAV, + mAW, + mAX, + mAY, + mAZ, + mBA, + mBB, + mBC, + mBD, + mBE, + mBF, + mBG, + mBH, + mBI, + mBJ, + mBK, + mBL, + mBM, + mBN, + mBO, + mBP, + mBQ, + mBR, + mBS, + mBT, + mBU, + mBV, + mBW, + mBX, + mBY, + mBZ, + mCA, + mCB, + mCC, + mCD, + mCE, + mCF, + mCG, + mCH, + mCI, + mCJ, + mCK, + mCL, + mCM, + mCN, + mCO, + mCP, + mCQ, + mCR, + mCS, + mCT, + mCU, + mCV, + mCW, + mCX, + mCY, + mCZ, + mDA, + mDB, + mDC, + mDD, + mDE, + mDF, + mDG, + mDH, + mDI, + mDJ, + mDK, + mDL, + mDM, + mDN, + mDO, + mDP, + mDQ, + mDR, + mDS, + mDT, + mDU, + mDW, + mDX, + mDY, + mDZ, + mEB, + mEC, + mED, + mEE, + mEF, + mEG, + mEH, + mEI, + mEJ, + mEK, + mEL, + mEM, + mEN, + mEO, + mEP, + mEQ, + mER, + mES, + mET, + mEU, + mEV, + mEW, + mEX, + mEY, + mEZ, + mFA, + mFB, + mFC, + mFD, + mFE, + mFF, + mFG, + mFH, + mFI, + mFJ, + mFK, + mFL, + mFM, + mFN, + mFO, + mFP, + mFQ, + mFR, + mFS, + mFT, + mFU, + mFV, + mFW, + mFX, + mFY, + mFZ, + mGA, + mGB, + mGC, + mGD, + mGE, + mGF, + mGG, + mGH, + mGI, + mGJ, + mGK, + mGL, + mGM, + mGN, + mGO, + mGP, + mGQ, + mGR, + mGS, + mGT, + mGU, + mGV, + mGW, + mGX, + mGY, + mGZ, + mHA, + mHB, + mHC, + mHD, + mHE, + mHF, + mHG, + mHH, + mHI, + mHJ, + mHK, + mHL, + mHM, + mHN, + mHO, + mHP, + mHQ, + mHR, + mHS, + mHT, + mHU, + mHV, + mHW, + mHX, + mHY, + mHZ, + mIA, + mIB, + mIC, + mID, + mIE, + mIF, + mIG, + mIH, + mII, + mIJ, + mIK, + mIL, + mIM, + mIN, + mIO, + mIP, + mIQ, + mIR, + mIS, + mIT, + mIU, + mIV, + mIW, + mIY, + mIZ, + mJA, + mJB, + mJC, + mJD, + mJE, + mJF, + mJG, + mJH, + mJI, + mJJ, + mJK, + mJL, + mJM, + mJN, + mJO, + mJP, + mJQ, + mJR, + mJS, + mJT, + mJU, + mJV, + mJW, + mJX, + mJY, + mJZ, + mKA, + mKB, + mKC, + mKD, + mKE, + mKF, + mKG, + mKH, + mKI, + mKJ, + mKK, + mKL, + mKM, + mKN, + mKO, + mKP, + mKQ, + mKR, + mKS, + mKT, + mKU, + mKV, + mKW, + mKY, + mKZ, + mLB, + mLC, + mLD, + mLE, + mLF, + mLG, + mLH, + mLI, + mLJ, + mLK, + mLL, + mLM, + mLN, + mLO, + mLP, + mLQ, + mLR, + mLS, + mLT, + mLU, + mLV, + mLX, + mLY, + mLZ, + mMA, + mMB, + mMC, + mMD, + mME, + mMF, + mMG, + mMH, + mMI, + mMJ, + mMK, + mML, + mMM, + mMN, + mMO, + mMP, + mMQ, + mMR, + mMS, + mMT, + mMU, + mMV, + mMW, + mMX, + mMY, + mMZ, + mNA, + mNB, + mNC, + mND, + mNE, + mNF, + mNG, + mNH, + mNI, + mNJ, + mNK, + mNL, + mNM, + mNN, + mNO, + mNP, + mNQ, + mNR, + mNS, + mNT, + mNU, + mNV, + mNW, + mNX, + mNY, + mNZ, + mOA, + mOB, + mOC, + mOD, + mOE, + mOF, + mOG, + mOH, + mOI, + mOJ, + mOL, + mOM, + mON, + mOO, + mOP, + mOQ, + mOR, + mOS, + mOT, + mOU, + mOV, + mOW, + mOX, + mOY, + mOZ, + mPA, + mPB, + mPC, + mPD, + mPE, + mPF, + mPG, + mPH, + mPI, + mPJ, + mPK, + mPL, + mPM, + mPN, + mPO, + mPP, + mPQ, + mPR, + mPS, + mPT, + mPU, + mPV, + mPW, + mPX, + mPY, + mPZ, + mQA, + mQB, + mQC, + mQD, + mQE, + mQF, + mQG, + mQH, + mQI, + mQJ, + mQK, + mQL, + mQM, + mQN, + mQO, + mQP, + mQQ, + mQR, + mQS, + mQT, + mQU, + mQV, + mQW, + mQX, + mQY, + mQZ, + mRA, + mRB, + mRC, + mRD, + mRE, + mRF, + mRG, + mRH, + mRI, + mRJ, + mRK, + mRL, + mRM, + mRN, + mRO, + mRQ, + mRR, + mRS, + mRT, + mRV, + mRW, + mRX, + mRY, + mRZ, + mSA, + mSB, + mSC, + mSD, + mSE, + mSF, + mSG, + mSH, + mSI, + mSJ, + mSK, + mSL, + mSM, + mSN, + mSO, + mSP, + mSQ, + mSR, + mSS, + mST, + mSU, + mSV, + mSW, + mSX, + mSY, + mSZ, + mTA, + mTB, + mTC, + mTD, + mTE, + mTF, + mTG, + mTH, + mTI, + mTJ, + mTK, + mTL, + mTM, + mTN, + mTO, + mTP, + mTQ, + mTR, + mTS, + mTT, + mTU, + mTV, + mTW, + mTY, + mTZ, + mUA, + mUB, + mUC, + mUD, + mUE, + mUF, + mUH, + mUI, + mUJ, + mUK, + mUL, + mUM, + mUN, + mUO, + mUP, + mUR, + mUS, + mUT, + mUU, + mUV, + mUW, + mUX, + mUZ, + mVA, + mVB, + mVC, + mVD, + mVE, + mVF, + mVG, + mVH, + mVI, + mVJ, + mVK, + mVL, + mVM, + mVN, + mVO, + mVP, + mVQ, + mVR, + mVS, + mVT, + mVU, + mVV, + mVW, + mVX, + mVY, + mVZ, + mWA, + mWB, + mWC, + mWE, + mWF, + mWG, + mWJ, + mWL, + mWM, + mWO, + mWP, + mWQ, + mWR, + mWS, + mWT, + mWU, + mWX, + mWY, + mXA, + mXB, + mXC, + mXE, + mXF, + mXG, + mXH, + mXI, + mXJ, + mXK, + mXL, + mXM, + mXN, + mXO, + mXP, + mXR, + mXS, + mXT, + mXU, + mXV, + mXW, + mXX, + mXY, + mXZ, + mYA, + mYB, + mYC, + mYD, + mYE, + mYF, + mYG, + mYH, + mYI, + mYJ, + mYK, + mYL, + mYM, + mYN, + mYO, + mYP, + mYQ, + mYR, + mYS, + mYT, + mYU, + mYV, + mYW, + mYX, + mYY, + mYZ, + mZA, + mZB, + mZC, + mZD, + mZE, + mZF, + mZG, + mZH, + mZJ, + mZL, + mZM, + mZP, + mZS, + mZT, + mZU, + mZX, + mZY, + mZZ, + nAA, + nAB, + nAC, + nAE, + nAF, + nAG, + nAH, + nAI, + nAJ, + nAK, + nAL, + nAM, + nAN, + nAO, + nAP, + nAQ, + nAR, + nAS, + nAT, + nAU, + nAV, + nAW, + nAX, + nAY, + nAZ, + nBA, + nBB, + nBC, + nBD, + nBE, + nBF, + nBG, + nBI, + nBK, + nBM, + nBN, + nBO, + nBP, + nBR, + nBS, + nBT, + nBU, + nBX, + nBY, + nBZ, + nCA, + nCB, + nCC, + nCD, + nCE, + nCF, + nCG, + nCH, + nCI, + nCJ, + nCK, + nCL, + nCM, + nCN, + nCO, + nCP, + nCQ, + nCR, + nCS, + nCT, + nCV, + nCW, + nCX, + nCY, + nCZ, + nDA, + nDB, + nDC, + nDD, + nDE, + nDG, + nDH, + nDI, + nDJ, + nDK, + nDL, + nDM, + nDN, + nDO, + nDP, + nDQ, + nDR, + nDS, + nDT, + nDU, + nDV, + nDW, + nDX, + nDY, + nDZ, + nEA, + nEB, + nEC, + nED, + nEE, + nEF, + nEG, + nEH, + nEI, + nEJ, + nEK, + nEL, + nEM, + nEN, + nEO, + nEP, + nER, + nES, + nET, + nEU, + nEX, + nEY, + nEZ, + nFA, + nFB, + nFC, + nFD, + nFE, + nFF, + nFG, + nFH, + nFI, + nFJ, + nFK, + nFL, + nFM, + nFN, + nFO, + nFP, + nFQ, + nFR, + nFS, + nFT, + nFU, + nFV, + nFX, + nFZ, + nGA, + nGB, + nGC, + nGD, + nGE, + nGF, + nGG, + nGH, + nGI, + nGJ, + nGK, + nGL, + nGM, + nGN, + nGO, + nGP, + nGQ, + nGR, + nGS, + nGT, + nGU, + nGV, + nGX, + nGY, + nGZ, + nHA, + nHB, + nHC, + nHD, + nHE, + nHF, + nHG, + nHH, + nHI, + nHJ, + nHK, + nHL, + nHM, + nHN, + nHO, + nHP, + nHQ, + nHR, + nHS, + nHT, + nHU, + nHV, + nHW, + nHX, + nHY, + nHZ, + nIA, + nIB, + nIC, + nID, + nIE, + nIF, + nIG, + nIH, + nIL, + nIM, + nIN, + nIP, + nIR, + nIS, + nIT, + nIU, + nIV, + nIX, + nIZ, + nJA, + nJB, + nJC, + nJD, + nJE, + nJF, + nJG, + nJH, + nJL, + nJN, + nJO, + nJP, + nJR, + nJS, + nJT, + nJU, + nJV, + nJX, + nKA, + nKB, + nKC, + nKD, + nKF, + nKG, + nKH, + nKK, + nKL, + nKM, + nKN, + nKO, + nKR, + nKS, + nKT, + nKV, + nKX, + nLA, + nLB, + nLC, + nLD, + nLE, + nLG, + nLH, + nLI, + nLJ, + nLK, + nLL, + nLM, + nLN, + nLO, + nLP, + nLQ, + nLS, + nLT, + nLU, + nLX, + nLY, + nLZ, + nMA, + nMB, + nMC, + nMD, + nME, + nMF, + nMG, + nMH, + nMI, + nMJ, + nMK, + nML, + nMM, + nMN, + nMO, + nMP, + nMQ, + nMR, + nMS, + nMT, + nMU, + nMV, + nMW, + nMX, + nMY, + nMZ, + nNA, + nNB, + nNC, + nND, + nNE, + nNF, + nNG, + nNH, + nNI, + nNJ, + nNK, + nNL, + nNM, + nNN, + nNO, + nNP, + nNQ, + nNR, + nNS, + nNT, + nNU, + nNV, + nNW, + nNX, + nNY, + nNZ, + nOA, + nOB, + nOC, + nOD, + nOE, + nOF, + nOG, + nOH, + nOI, + nOJ, + nOK, + nOL, + nOM, + nON, + nOO, + nOP, + nOQ, + nOR, + nOS, + nOT, + nOU, + nOV, + nOW, + nOX, + nOZ, + nPA, + nPB, + nPC, + nPD, + nPE, + nPF, + nPG, + nPH, + nPI, + nPJ, + nPK, + nPL, + nPM, + nPN, + nPO, + nPP, + nPQ, + nPR, + nPS, + nPT, + nPU, + nPV, + nPW, + nPX, + nPY, + nPZ, + nQA, + nQB, + nQC, + nQD, + nQE, + nQG, + nQH, + nQI, + nQJ, + nQK, + nQL, + nQM, + nQN, + nQO, + nQP, + nQQ, + nQR, + nQS, + nQT, + nQU, + nQW, + nQX, + nQY, + nQZ, + nRA, + nRB, + nRC, + nRD, + nRE, + nRF, + nRG, + nRH, + nRI, + nRJ, + nRK, + nRL, + nRM, + nRN, + nRO, + nRP, + nRQ, + nRR, + nRS, + nRT, + nRU, + nRV, + nRX, + nRY, + nSA, + nSB, + nSC, + nSD, + nSE, + nSF, + nSG, + nSH, + nSI, + nSJ, + nSK, + nSL, + nSM, + nSN, + nSO, + nSP, + nSQ, + nSR, + nSS, + nST, + nSU, + nSV, + nSW, + nSX, + nSY, + nSZ, + nTA, + nTB, + nTC, + nTD, + nTE, + nTF, + nTG, + nTH, + nTI, + nTJ, + nTK, + nTL, + nTM, + nTN, + nTO, + nTP, + nTQ, + nTR, + nTS, + nTT, + nTU, + nTV, + nTW, + nTX, + nTY, + nTZ, + nUA, + nUB, + nUC, + nUD, + nUE, + nUF, + nUG, + nUH, + nUI, + nUJ, + nUK, + nUL, + nUM, + nUN, + nUO, + nUP, + nUQ, + nUR, + nUS, + nUT, + nUU, + nUV, + nUW, + nUX, + nUY, + nUZ, + nVA, + nVB, + nVC, + nVD, + nVE, + nVF, + nVG, + nVH, + nVJ, + nVM, + nVP, + nVX, + nWD, + nWP, + nWS, + nWX, + nXA, + nXB, + nXC, + nXD, + nXF, + nXH, + nXI, + nXK, + nXL, + nXM, + nXN, + nXO, + nXP, + nXS, + nXT, + nXU, + nXV, + nXX, + nYA, + nYB, + nYC, + nYD, + nYE, + nYH, + nYI, + nYJ, + nYK, + nYL, + nYM, + nYN, + nYO, + nYP, + nYQ, + nYR, + nYS, + nYT, + nYU, + nYV, + nYW, + nYX, + nYY, + nYZ, + nZA, + nZB, + nZC, + nZD, + nZE, + nZF, + nZG, + nZH, + nZI, + nZJ, + nZK, + nZL, + nZM, + nZN, + nZO, + nZP, + nZQ, + nZR, + nZS, + nZT, + nZU, + nZV, + nZW, + nZX, + nZY, + nZZ, + oAA, + oAB, + oAC, + oAD, + oAE, + oAF, + oAG, + oAH, + oAI, + oAJ, + oAK, + oAL, + oAM, + oAN, + oAO, + oAP, + oAQ, + oAR, + oAS, + oAT, + oAU, + oAV, + oAW, + oAX, + oAY, + oAZ, + oBA, + oBB, + oBC, + oBD, + oBE, + oBF, + oBG, + oBH, + oBI, + oBJ, + oBK, + oBL, + oBM, + oBN, + oBO, + oBP, + oBQ, + oBR, + oBS, + oBT, + oBU, + oBV, + oBW, + oBX, + oBY, + oBZ, + oCA, + oCB, + oCC, + oCD, + oCE, + oCF, + oCG, + oCH, + oCI, + oCJ, + oCK, + oCL, + oCM, + oCN, + oCO, + oCP, + oCQ, + oCR, + oCS, + oCT, + oCU, + oCV, + oCW, + oCX, + oCY, + oCZ, + oDA, + oDB, + oDC, + oDD, + oDE, + oDF, + oDG, + oDH, + oDI, + oDJ, + oDK, + oDL, + oDM, + oDN, + oDO, + oDP, + oDQ, + oDR, + oDS, + oDT, + oDU, + oDV, + oDW, + oDX, + oDY, + oDZ, + oEA, + oEB, + oEC, + oED, + oEE, + oEF, + oEG, + oEH, + oEI, + oEJ, + oEK, + oEL, + oEM, + oEN, + oEO, + oEP, + oEQ, + oER, + oES, + oET, + oEU, + oEV, + oEW, + oEX, + oEY, + oEZ, + oFA, + oFB, + oFC, + oFD, + oFE, + oFF, + oFG, + oFH, + oFI, + oFJ, + oFK, + oFL, + oFM, + oFN, + oFO, + oFP, + oFQ, + oFR, + oFT, + oFU, + oFV, + oFW, + oFX, + oFY, + oFZ, + oGA, + oGB, + oGC, + oGD, + oGE, + oGF, + oGG, + oGH, + oGI, + oGJ, + oGK, + oGL, + oGM, + oGN, + oGO, + oGP, + oGQ, + oGR, + oGS, + oGT, + oGU, + oGV, + oGW, + oGX, + oGY, + oGZ, + oHA, + oHB, + oHC, + oHD, + oHE, + oHF, + oHG, + oHH, + oHI, + oHJ, + oHK, + oHL, + oHM, + oHN, + oHO, + oHP, + oHQ, + oHR, + oHT, + oHU, + oHV, + oHW, + oHX, + oHY, + oHZ, + oIA, + oIB, + oIC, + oID, + oIE, + oIF, + oIG, + oIH, + oII, + oIJ, + oIK, + oIL, + oIM, + oIN, + oIO, + oIP, + oIQ, + oIR, + oIS, + oIT, + oIU, + oIV, + oIW, + oIX, + oIY, + oIZ, + oJA, + oJB, + oJC, + oJD, + oJE, + oJF, + oJG, + oJH, + oJI, + oJJ, + oJK, + oJL, + oJM, + oJN, + oJO, + oJP, + oJQ, + oJR, + oJS, + oJT, + oJU, + oJV, + oJW, + oJX, + oJY, + oJZ, + oKA, + oKB, + oKC, + oKD, + oKE, + oKF, + oKG, + oKH, + oKI, + oKJ, + oKK, + oKL, + oKM, + oKN, + oKO, + oKP, + oKQ, + oKR, + oKS, + oKT, + oKU, + oKV, + oKW, + oKX, + oKY, + oKZ, + oLA, + oLB, + oLC, + oLD, + oLE, + oLF, + oLG, + oLH, + oLI, + oLJ, + oLK, + oLL, + oLM, + oLN, + oLO, + oLP, + oLQ, + oLR, + oLS, + oLT, + oLU, + oLV, + oLW, + oLX, + oLY, + oLZ, + oMA, + oMB, + oMC, + oMD, + oME, + oMF, + oMG, + oMH, + oMI, + oMJ, + oMK, + oML, + oMM, + oMN, + oMO, + oMP, + oMQ, + oMR, + oMT, + oMU, + oMV, + oMW, + oMX, + oMY, + oMZ, + oNA, + oNB, + oNC, + oND, + oNE, + oNF, + oNG, + oNH, + oNI, + oNJ, + oNK, + oNL, + oNM, + oNN, + oNO, + oNP, + oNQ, + oNR, + oNS, + oNT, + oNU, + oNV, + oNW, + oNX, + oNY, + oNZ, + oOA, + oOB, + oOC, + oOD, + oOE, + oOF, + oOG, + oOH, + oOI, + oOJ, + oOK, + oOL, + oOM, + oON, + oOO, + oOP, + oOQ, + oOR, + oOS, + oOT, + oOU, + oOV, + oOW, + oOX, + oOY, + oOZ, + oPA, + oPB, + oPC, + oPD, + oPE, + oPF, + oPG, + oPH, + oPI, + oPJ, + oPK, + oPL, + oPM, + oPN, + oPO, + oPP, + oPQ, + oPR, + oPS, + oPT, + oPU, + oPV, + oPW, + oPX, + oPY, + oPZ, + oQA, + oQB, + oQC, + oQD, + oQE, + oQF, + oQG, + oQH, + oQI, + oQJ, + oQK, + oQL, + oQM, + oQN, + oQO, + oQP, + oQQ, + oQR, + oQS, + oQT, + oQU, + oQV, + oQW, + oQX, + oQY, + oQZ, + oRA, + oRB, + oRC, + oRD, + oRE, + oRF, + oRG, + oRH, + oRI, + oRJ, + oRK, + oRL, + oRM, + oRN, + oRO, + oRP, + oRQ, + oRR, + oRS, + oRT, + oRU, + oRV, + oRW, + oRX, + oRY, + oRZ, + oSA, + oSB, + oSC, + oSD, + oSE, + oSF, + oSG, + oSH, + oSI, + oSJ, + oSK, + oSL, + oSM, + oSN, + oSO, + oSQ, + oSR, + oSS, + oST, + oSU, + oSW, + oSX, + oSY, + oSZ, + oTA, + oTB, + oTC, + oTD, + oTE, + oTG, + oTI, + oTJ, + oTK, + oTL, + oTM, + oTN, + oTO, + oTP, + oTQ, + oTR, + oTS, + oTT, + oTU, + oTV, + oTW, + oTX, + oTY, + oTZ, + oUA, + oUB, + oUC, + oUD, + oUE, + oUF, + oUG, + oUH, + oUI, + oUJ, + oUK, + oUL, + oUM, + oUN, + oUO, + oUP, + oUQ, + oUR, + oUS, + oUT, + oUU, + oUV, + oUW, + oUX, + oUY, + oUZ, + oVA, + oVB, + oVC, + oVD, + oVE, + oVF, + oVG, + oVH, + oVI, + oVJ, + oVK, + oVL, + oVM, + oVN, + oVO, + oVP, + oVQ, + oVR, + oVS, + oVT, + oVU, + oVV, + oVW, + oVX, + oVY, + oWB, + oWG, + oWH, + oWM, + oWN, + oWO, + oWP, + oWQ, + oWR, + oWS, + oWT, + oWX, + oXA, + oXB, + oXC, + oXD, + oXE, + oXF, + oXG, + oXH, + oXI, + oXJ, + oXK, + oXL, + oXM, + oXN, + oXO, + oXP, + oXQ, + oXR, + oXS, + oXT, + oXU, + oXV, + oXW, + oXX, + oXY, + oXZ, + oYA, + oYB, + oYC, + oYD, + oYE, + oYF, + oYG, + oYH, + oYI, + oYJ, + oYK, + oYL, + oYM, + oYN, + oYO, + oYQ, + oYR, + oYS, + oYT, + oYU, + oYX, + oYY, + oZA, + oZB, + oZC, + oZD, + oZG, + oZL, + oZO, + oZQ, + oZT, + oZU, + oZV, + oZX, + oZY, + oZZ, + pAA, + pAB, + pAC, + pAD, + pAE, + pAF, + pAG, + pAH, + pAI, + pAJ, + pAK, + pAL, + pAM, + pAN, + pAO, + pAP, + pAQ, + pAR, + pAS, + pAT, + pAU, + pAV, + pAW, + pAX, + pAY, + pAZ, + pBA, + pBB, + pBC, + pBD, + pBE, + pBF, + pBG, + pBH, + pBI, + pBJ, + pBK, + pBL, + pBM, + pBN, + pBO, + pBP, + pBQ, + pBR, + pBS, + pBT, + pBU, + pBV, + pBW, + pBX, + pBY, + pBZ, + pCA, + pCB, + pCC, + pCD, + pCE, + pCF, + pCG, + pCH, + pCI, + pCJ, + pCK, + pCL, + pCM, + pCN, + pCO, + pCP, + pCQ, + pCR, + pCS, + pCT, + pCU, + pCV, + pCW, + pCX, + pCY, + pCZ, + pDA, + pDB, + pDC, + pDD, + pDE, + pDF, + pDG, + pDH, + pDI, + pDJ, + pDK, + pDL, + pDM, + pDN, + pDO, + pDP, + pDQ, + pDR, + pDS, + pDT, + pDU, + pDV, + pDW, + pDX, + pDY, + pDZ, + pEA, + pEB, + pEC, + pED, + pEE, + pEF, + pEG, + pEH, + pEI, + pEJ, + pEK, + pEL, + pEM, + pEN, + pEO, + pEQ, + pER, + pES, + pET, + pEU, + pEV, + pEW, + pEX, + pEY, + pEZ, + pFA, + pFB, + pFC, + pFD, + pFE, + pFF, + pFG, + pFH, + pFI, + pFJ, + pFK, + pFL, + pFM, + pFN, + pFO, + pFP, + pFQ, + pFR, + pFS, + pFT, + pFU, + pFV, + pFW, + pFX, + pFY, + pFZ, + pGA, + pGB, + pGC, + pGD, + pGE, + pGF, + pGG, + pGH, + pGI, + pGJ, + pGK, + pGL, + pGM, + pGN, + pGO, + pGP, + pGQ, + pGR, + pGS, + pGT, + pGU, + pGV, + pGW, + pGX, + pGY, + pGZ, + pHA, + pHB, + pHC, + pHD, + pHE, + pHF, + pHG, + pHH, + pHI, + pHJ, + pHK, + pHL, + pHM, + pHN, + pHO, + pHP, + pHQ, + pHR, + pHS, + pHT, + pHU, + pHV, + pHW, + pHX, + pHY, + pHZ, + pIA, + pIB, + pIC, + pID, + pIE, + pIF, + pIG, + pIH, + pII, + pIJ, + pIK, + pIL, + pIM, + pIN, + pIO, + pIP, + pIQ, + pIR, + pIS, + pIT, + pIU, + pIV, + pIW, + pIX, + pIY, + pIZ, + pJA, + pJB, + pJC, + pJD, + pJE, + pJF, + pJG, + pJH, + pJJ, + pJK, + pJL, + pJM, + pJN, + pJO, + pJP, + pJQ, + pJR, + pJS, + pJT, + pJU, + pJV, + pJW, + pJX, + pJY, + pJZ, + pKA, + pKB, + pKC, + pKD, + pKE, + pKF, + pKG, + pKH, + pKI, + pKJ, + pKK, + pKL, + pKM, + pKN, + pKO, + pKP, + pKQ, + pKR, + pKS, + pKT, + pKU, + pKV, + pKW, + pKX, + pKY, + pKZ, + pLA, + pLB, + pLC, + pLD, + pLE, + pLF, + pLG, + pLH, + pLI, + pLJ, + pLK, + pLL, + pLM, + pLN, + pLO, + pLP, + pLQ, + pLR, + pLS, + pLT, + pLU, + pLV, + pLW, + pLX, + pLY, + pLZ, + pMA, + pMB, + pMC, + pMD, + pME, + pMF, + pMG, + pMH, + pMI, + pMJ, + pMK, + pML, + pMM, + pMN, + pMO, + pMP, + pMQ, + pMR, + pMS, + pMT, + pMU, + pMV, + pMW, + pMX, + pMY, + pMZ, + pNA, + pNB, + pND, + pNE, + pNF, + pNG, + pNH, + pNI, + pNJ, + pNK, + pNL, + pNM, + pNN, + pNO, + pNP, + pNQ, + pNR, + pNS, + pNT, + pNU, + pNV, + pNW, + pNX, + pNY, + pNZ, + pOA, + pOB, + pOC, + pOD, + pOE, + pOF, + pOG, + pOH, + pOI, + pOJ, + pOK, + pOL, + pOM, + pON, + pOO, + pOP, + pOQ, + pOR, + pOS, + pOU, + pOV, + pOW, + pOX, + pOY, + pOZ, + pPB, + pPC, + pPD, + pPE, + pPF, + pPG, + pPH, + pPI, + pPJ, + pPK, + pPL, + pPM, + pPN, + pPO, + pPP, + pPQ, + pPR, + pPS, + pPT, + pPU, + pPV, + pPW, + pPX, + pPY, + pPZ, + pQA, + pQB, + pQC, + pQD, + pQE, + pQF, + pQG, + pQH, + pQI, + pQJ, + pQK, + pQL, + pQM, + pQN, + pQO, + pQP, + pQQ, + pQR, + pQS, + pQT, + pQU, + pQV, + pQW, + pQX, + pQY, + pQZ, + pRA, + pRB, + pRC, + pRD, + pRE, + pRF, + pRG, + pRH, + pRI, + pRJ, + pRK, + pRL, + pRM, + pRN, + pRO, + pRP, + pRQ, + pRR, + pRS, + pRT, + pRU, + pRV, + pRW, + pRX, + pRY, + pRZ, + pSA, + pSB, + pSC, + pSD, + pSE, + pSF, + pSG, + pSH, + pSI, + pSJ, + pSK, + pSL, + pSM, + pSN, + pSO, + pSP, + pSQ, + pSR, + pSS, + pST, + pSU, + pSV, + pSW, + pSX, + pSY, + pSZ, + pTA, + pTB, + pTC, + pTD, + pTE, + pTF, + pTG, + pTH, + pTI, + pTJ, + pTK, + pTL, + pTM, + pTN, + pTO, + pTP, + pTQ, + pTR, + pTS, + pTT, + pTU, + pTV, + pTW, + pTX, + pTY, + pTZ, + pUA, + pUB, + pUC, + pUD, + pUE, + pUF, + pUG, + pUH, + pUI, + pUJ, + pUK, + pUL, + pUM, + pUN, + pUO, + pUP, + pUQ, + pUR, + pUS, + pUT, + pUU, + pUV, + pUW, + pUX, + pUY, + pUZ, + pVA, + pVB, + pVC, + pVD, + pVE, + pVF, + pVG, + pVH, + pVI, + pVJ, + pVK, + pVL, + pVM, + pVN, + pVO, + pVP, + pVQ, + pVR, + pVS, + pVT, + pVU, + pVV, + pVW, + pVX, + pVY, + pVZ, + pWA, + pWB, + pWC, + pWD, + pWE, + pWF, + pWG, + pWH, + pWI, + pWJ, + pWK, + pWL, + pWM, + pWN, + pWO, + pWP, + pWQ, + pWR, + pWS, + pWT, + pWU, + pWV, + pWW, + pWX, + pWY, + pWZ, + pXA, + pXB, + pXC, + pXD, + pXE, + pXF, + pXG, + pXH, + pXI, + pXJ, + pXK, + pXL, + pXM, + pXN, + pXO, + pXP, + pXQ, + pXR, + pXS, + pXT, + pXU, + pXV, + pXW, + pXY, + pXZ, + pYA, + pYB, + pYC, + pYD, + pYE, + pYF, + pYG, + pYH, + pYI, + pYJ, + pYK, + pYL, + pYM, + pYN, + pYO, + pYP, + pYQ, + pYR, + pYS, + pYT, + pYU, + pYV, + pYW, + pYX, + pYY, + pZA, + pZB, + pZC, + pZD, + pZE, + pZF, + pZG, + pZH, + pZI, + pZJ, + pZK, + pZL, + pZM, + pZN, + pZO, + pZP, + pZQ, + pZR, + pZS, + pZT, + pZU, + pZV, + pZX, + pZY, + qAA, + qAB, + qAC, + qAD, + qAE, + qAF, + qAG, + qAH, + qAI, + qAJ, + qAK, + qAL, + qAM, + qAN, + qAO, + qAP, + qAQ, + qAR, + qAS, + qAT, + qAU, + qAV, + qAW, + qAX, + qAY, + qAZ, + qBA, + qBB, + qBC, + qBD, + qBE, + qBF, + qBG, + qBH, + qBI, + qBJ, + qBK, + qBL, + qBM, + qBN, + qBO, + qBP, + qBQ, + qBR, + qBS, + qBT, + qBU, + qBV, + qBW, + qBX, + qBY, + qBZ, + qCA, + qCB, + qCC, + qCD, + qCE, + qCF, + qCG, + qCH, + qCI, + qCJ, + qCK, + qCL, + qCM, + qCN, + qCO, + qCP, + qCQ, + qCR, + qCS, + qCT, + qCU, + qCV, + qCW, + qCX, + qCY, + qCZ, + qDA, + qDB, + qDC, + qDD, + qDE, + qDF, + qDG, + qDH, + qDI, + qDJ, + qDK, + qDL, + qDP, + qDS, + qDT, + qDV, + qDX, + qDZ, + qEL, + qEW, + qEX, + qEY, + qFA, + qFB, + qFF, + qFI, + qFJ, + qFK, + qFL, + qFM, + qFN, + qFO, + qFQ, + qFR, + qFT, + qFU, + qFV, + qFX, + qFY, + qGA, + qGB, + qGG, + qGN, + qGO, + qGS, + qGT, + qGV, + qGW, + qGX, + qGY, + qGZ, + qHA, + qHD, + qHI, + qHO, + qHX, + qHY, + qHZ, + qIA, + qIJ, + qIK, + qIT, + qIU, + qIW, + qIX, + qIZ, + qJA, + qJB, + qJX, + qKA, + qKB, + qKU, + qKZ, + qLA, + qLB, + qLC, + qLE, + qLJ, + qLM, + qLP, + qLV, + qLW, + qLX, + qLY, + qMB, + qMC, + qMR, + qMT, + qND, + qNG, + qNR, + qNS, + qNV, + qNX, + qOE, + qOF, + qOG, + qOI, + qOJ, + qOK, + qON, + qOS, + qOX, + qPB, + qPF, + qPH, + qPI, + qPL, + qPM, + qPN, + qPP, + qPQ, + qPT, + qPX, + qQM, + qQV, + qQX, + qRA, + qRB, + qRC, + qRD, + qRG, + qRQ, + qRR, + qRS, + qRT, + qRU, + qRW, + qRY, + qRZ, + qSA, + qSB, + qSC, + qSD, + qSE, + qSF, + qSG, + qSH, + qSI, + qSJ, + qSK, + qSL, + qSM, + qSN, + qSP, + qSQ, + qSR, + qSS, + qST, + qSU, + qSV, + qSW, + qSX, + qSY, + qSZ, + qTA, + qTB, + qTC, + qTD, + qTE, + qTF, + qTG, + qTH, + qTI, + qTJ, + qTK, + qTL, + qTM, + qTN, + qTO, + qTP, + qTR, + qTS, + qTT, + qTU, + qTV, + qTW, + qTX, + qTY, + qUA, + qUB, + qUC, + qUE, + qUJ, + qUK, + qUL, + qUM, + qUN, + qUP, + qUR, + qUS, + qUT, + qUU, + qUV, + qUY, + qVL, + qVO, + qWD, + qWI, + qWL, + qWV, + qXN, + qXO, + qXP, + qXR, + qYB, + qYP, + qYQ, + qYX, + qZE, + qZF, + qZG, + qZH, + qZI, + qZJ, + qZK, + qZL, + qZM, + qZN, + qZO, + qZP, + qZQ, + qZR, + qZS, + qZT, + qZU, + qZV, + qZW, + qZX, + qZY, + qZZ, + rAA, + rAB, + rAC, + rAD, + rAE, + rAF, + rAG, + rAH, + rAI, + rAJ, + rAK, + rAL, + rAM, + rAN, + rAO, + rAP, + rAQ, + rAR, + rAS, + rAT, + rAU, + rAV, + rAW, + rAX, + rAY, + rAZ, + rBA, + rBB, + rBC, + rBD, + rBE, + rBF, + rBG, + rBH, + rBI, + rBJ, + rBK, + rBL, + rBM, + rBN, + rBO, + rBP, + rBQ, + rBR, + rBS, + rBT, + rBU, + rBV, + rBW, + rBX, + rBY, + rBZ, + rCA, + rCB, + rCC, + rCD, + rCE, + rCF, + rCG, + rCH, + rCI, + rCJ, + rCK, + rCL, + rCM, + rCN, + rCO, + rCP, + rCQ, + rCR, + rCS, + rCT, + rCU, + rCV, + rCW, + rCX, + rCY, + rCZ, + rDA, + rDB, + rDC, + rDD, + rDE, + rDF, + rDG, + rDH, + rDI, + rDJ, + rDK, + rDL, + rDM, + rDN, + rDO, + rDP, + rDQ, + rDR, + rDS, + rDT, + rDU, + rDV, + rDW, + rDX, + rDY, + rDZ, + rEA, + rEB, + rEC, + rED, + rEE, + rEF, + rEG, + rEH, + rEI, + rEJ, + rEK, + rEL, + rEM, + rEN, + rEO, + rEP, + rEQ, + rER, + rES, + rET, + rEU, + rEV, + rEW, + rEX, + rEY, + rEZ, + rFA, + rFB, + rFC, + rFE, + rFH, + rFL, + rFM, + rFO, + rFP, + rFQ, + rFR, + rFS, + rFT, + rFV, + rFX, + rFY, + rFZ, + rGA, + rGB, + rGC, + rGD, + rGE, + rGF, + rGG, + rGH, + rGI, + rGJ, + rGK, + rGL, + rGM, + rGN, + rGO, + rGP, + rGQ, + rGR, + rGS, + rGT, + rGU, + rGV, + rGX, + rGY, + rGZ, + rHA, + rHB, + rHC, + rHD, + rHE, + rHF, + rHG, + rHH, + rHI, + rHJ, + rHK, + rHL, + rHM, + rHN, + rHO, + rHP, + rHQ, + rHR, + rHT, + rHU, + rHV, + rHW, + rHX, + rHY, + rHZ, + rIA, + rIB, + rIC, + rID, + rIE, + rIF, + rIG, + rIH, + rII, + rIJ, + rIK, + rIL, + rIM, + rIN, + rIO, + rIP, + rIR, + rIS, + rIT, + rIU, + rIV, + rIW, + rIX, + rIY, + rJA, + rJB, + rJC, + rJD, + rJE, + rJF, + rJG, + rJH, + rJI, + rJJ, + rJK, + rJL, + rJM, + rJN, + rJO, + rJP, + rJQ, + rJR, + rJS, + rJT, + rJU, + rJX, + rJY, + rKA, + rKB, + rKC, + rKD, + rKE, + rKF, + rKG, + rKH, + rKI, + rKJ, + rKK, + rKL, + rKM, + rKN, + rKO, + rKP, + rKQ, + rKR, + rKS, + rKT, + rKU, + rKV, + rKW, + rKX, + rKY, + rKZ, + rLA, + rLB, + rLC, + rLD, + rLE, + rLF, + rLG, + rLH, + rLI, + rLJ, + rLL, + rLM, + rLN, + rLO, + rLP, + rLR, + rLS, + rLT, + rLU, + rLV, + rLX, + rLY, + rLZ, + rMA, + rMB, + rMC, + rME, + rMF, + rMG, + rMH, + rMI, + rMJ, + rMK, + rML, + rMM, + rMN, + rMO, + rMP, + rMQ, + rMR, + rMS, + rMT, + rMU, + rMV, + rMW, + rMX, + rMZ, + rNA, + rNB, + rNC, + rND, + rNE, + rNF, + rNG, + rNH, + rNI, + rNJ, + rNK, + rNL, + rNM, + rNN, + rNO, + rNP, + rNQ, + rNR, + rNS, + rNT, + rNU, + rNV, + rNW, + rNX, + rNY, + rOA, + rOB, + rOC, + rOD, + rOF, + rOG, + rOH, + rOI, + rOJ, + rOK, + rOL, + rOM, + rON, + rOO, + rOP, + rOQ, + rOR, + rOS, + rOT, + rOU, + rOV, + rOW, + rOY, + rOZ, + rPA, + rPB, + rPC, + rPD, + rPE, + rPF, + rPG, + rPH, + rPI, + rPJ, + rPK, + rPL, + rPM, + rPN, + rPO, + rPP, + rPQ, + rPR, + rPS, + rPT, + rPU, + rPV, + rPW, + rPX, + rPY, + rPZ, + rQA, + rQB, + rQC, + rQD, + rQE, + rQF, + rQG, + rQH, + rQI, + rQJ, + rQM, + rQN, + rQO, + rQP, + rQR, + rQS, + rQT, + rQU, + rQV, + rQX, + rQZ, + rRA, + rRB, + rRC, + rRD, + rRE, + rRF, + rRG, + rRH, + rRI, + rRJ, + rRK, + rRL, + rRM, + rRN, + rRO, + rRP, + rRR, + rRS, + rRT, + rRU, + rRV, + rRW, + rRX, + rRY, + rRZ, + rSA, + rSB, + rSC, + rSD, + rSE, + rSF, + rSG, + rSH, + rSI, + rSJ, + rSK, + rSL, + rSM, + rSN, + rSO, + rSP, + rSQ, + rSR, + rSS, + rST, + rSU, + rSV, + rSW, + rSX, + rSY, + rSZ, + rTA, + rTB, + rTC, + rTD, + rTE, + rTF, + rTG, + rTH, + rTI, + rTJ, + rTK, + rTL, + rTM, + rTN, + rTO, + rTP, + rTQ, + rTR, + rTS, + rTT, + rTU, + rTV, + rTW, + rTX, + rTY, + rTZ, + rUA, + rUB, + rUC, + rUD, + rUE, + rUF, + rUG, + rUH, + rUI, + rUJ, + rUK, + rUL, + rUM, + rUN, + rUO, + rUP, + rUQ, + rUR, + rUS, + rUT, + rUU, + rUV, + rUW, + rUX, + rUY, + rUZ, + rVA, + rVB, + rVC, + rVE, + rVF, + rVH, + rVM, + rVN, + rVP, + rVR, + rVS, + rVT, + rVU, + rVV, + rVW, + rVX, + rVY, + rVZ, + rWA, + rWC, + rWS, + rWX, + rXA, + rXG, + rXJ, + rXK, + rXL, + rXO, + rXP, + rXQ, + rXR, + rXS, + rXU, + rXX, + rXY, + rYA, + rYB, + rYC, + rYD, + rYE, + rYF, + rYG, + rYH, + rYI, + rYJ, + rYL, + rYM, + rYN, + rYO, + rYP, + rYQ, + rYR, + rYS, + rYT, + rYU, + rYV, + rYW, + rYX, + rYY, + rYZ, + rZE, + rZS, + rZT, + rZU, + rZV, + rZX, + sAA, + sAB, + sAC, + sAD, + sAE, + sAF, + sAG, + sAH, + sAI, + sAJ, + sAK, + sAL, + sAM, + sAN, + sAO, + sAP, + sAQ, + sAR, + sAS, + sAU, + sAV, + sAW, + sAX, + sAY, + sAZ, + sBA, + sBB, + sBC, + sBD, + sBE, + sBF, + sBG, + sBH, + sBI, + sBJ, + sBK, + sBL, + sBM, + sBN, + sBO, + sBP, + sBQ, + sBR, + sBS, + sBU, + sBV, + sBW, + sBX, + sBY, + sBZ, + sCA, + sCB, + sCC, + sCD, + sCE, + sCF, + sCG, + sCH, + sCJ, + sCK, + sCL, + sCM, + sCN, + sCO, + sCP, + sCQ, + sCR, + sCS, + sCT, + sCU, + sCV, + sCW, + sCX, + sCY, + sCZ, + sDA, + sDB, + sDC, + sDD, + sDE, + sDF, + sDG, + sDH, + sDI, + sDJ, + sDK, + sDL, + sDM, + sDN, + sDO, + sDP, + sDQ, + sDR, + sDS, + sDT, + sDU, + sDV, + sDW, + sDX, + sDY, + sDZ, + sEA, + sEB, + sEC, + sED, + sEE, + sEF, + sEG, + sEH, + sEI, + sEJ, + sEK, + sEL, + sEM, + sEN, + sEO, + sEP, + sEQ, + sER, + sES, + sET, + sEU, + sEV, + sEW, + sEX, + sEY, + sEZ, + sFA, + sFB, + sFC, + sFD, + sFE, + sFF, + sFG, + sFH, + sFI, + sFJ, + sFK, + sFL, + sFM, + sFN, + sFO, + sFP, + sFQ, + sFR, + sFS, + sFT, + sFU, + sFV, + sFW, + sFX, + sFY, + sFZ, + sGA, + sGB, + sGC, + sGD, + sGE, + sGF, + sGG, + sGH, + sGI, + sGJ, + sGK, + sGL, + sGM, + sGN, + sGO, + sGP, + sGQ, + sGR, + sGS, + sGT, + sGU, + sGV, + sGW, + sGX, + sGY, + sGZ, + sHA, + sHB, + sHC, + sHD, + sHE, + sHF, + sHG, + sHH, + sHI, + sHJ, + sHL, + sHM, + sHN, + sHO, + sHP, + sHQ, + sHR, + sHS, + sHU, + sHV, + sHW, + sHX, + sHY, + sHZ, + sIA, + sIB, + sIC, + sID, + sIE, + sIF, + sIG, + sIH, + sII, + sIJ, + sIK, + sIL, + sIM, + sIN, + sIO, + sIP, + sIQ, + sIT, + sIU, + sIV, + sIW, + sIX, + sIY, + sIZ, + sJA, + sJB, + sJC, + sJD, + sJE, + sJF, + sJG, + sJH, + sJI, + sJJ, + sJK, + sJL, + sJM, + sJN, + sJO, + sJP, + sJQ, + sJR, + sJS, + sJT, + sJU, + sJV, + sJW, + sJX, + sJY, + sJZ, + sKA, + sKB, + sKC, + sKD, + sKE, + sKF, + sKG, + sKH, + sKI, + sKJ, + sKK, + sKL, + sKM, + sKN, + sKO, + sKP, + sKQ, + sKS, + sKT, + sKU, + sKV, + sKW, + sKX, + sKY, + sLA, + sLB, + sLC, + sLD, + sLE, + sLF, + sLG, + sLH, + sLI, + sLJ, + sLK, + sLL, + sLM, + sLN, + sLO, + sLP, + sLQ, + sLR, + sLS, + sLT, + sLU, + sLV, + sLW, + sLX, + sLY, + sLZ, + sMA, + sMB, + sMC, + sMD, + sME, + sMG, + sMH, + sMJ, + sMK, + sML, + sMM, + sMN, + sMO, + sMP, + sMQ, + sMR, + sMS, + sMU, + sMV, + sMW, + sMX, + sMY, + sMZ, + sNA, + sNB, + sNC, + sND, + sNE, + sNF, + sNG, + sNH, + sNI, + sNJ, + sNK, + sNL, + sNM, + sNN, + sNO, + sNP, + sNQ, + sNR, + sNS, + sNT, + sNU, + sNV, + sNW, + sNX, + sNY, + sNZ, + sOA, + sOB, + sOC, + sOD, + sOE, + sOF, + sOG, + sOH, + sOI, + sOJ, + sOK, + sOL, + sOM, + sON, + sOO, + sOP, + sOQ, + sOR, + sOS, + sOT, + sOU, + sOV, + sOW, + sOX, + sOY, + sOZ, + sPA, + sPC, + sPD, + sPE, + sPF, + sPG, + sPH, + sPI, + sPJ, + sPK, + sPL, + sPN, + sPO, + sPP, + sPQ, + sPR, + sPS, + sPT, + sPU, + sPV, + sPW, + sPX, + sPY, + sPZ, + sQA, + sQB, + sQC, + sQD, + sQE, + sQF, + sQG, + sQH, + sQI, + sQJ, + sQK, + sQL, + sQM, + sQO, + sQP, + sQR, + sQS, + sQT, + sQU, + sQV, + sQW, + sQY, + sQZ, + sRA, + sRB, + sRC, + sRD, + sRE, + sRF, + sRG, + sRH, + sRI, + sRJ, + sRK, + sRL, + sRM, + sRN, + sRO, + sRP, + sRQ, + sRR, + sRS, + sRT, + sRU, + sRV, + sRW, + sRX, + sRY, + sRZ, + sSA, + sSB, + sSC, + sSD, + sSE, + sSF, + sSG, + sSH, + sSI, + sSJ, + sSK, + sSL, + sSM, + sSN, + sSO, + sSP, + sSQ, + sSR, + sSS, + sST, + sSU, + sSV, + sSW, + sSX, + sSZ, + sTA, + sTB, + sTC, + sTD, + sTF, + sTG, + sTH, + sTI, + sTJ, + sTK, + sTL, + sTM, + sTO, + sTP, + sTQ, + sTS, + sTT, + sTU, + sTV, + sTW, + sTX, + sTY, + sTZ, + sUA, + sUB, + sUC, + sUD, + sUE, + sUF, + sUG, + sUH, + sUI, + sUJ, + sUK, + sUL, + sUM, + sUN, + sUO, + sUP, + sUQ, + sUR, + sUS, + sUT, + sUU, + sUV, + sUW, + sUX, + sUY, + sUZ, + sVA, + sVB, + sVC, + sVD, + sVE, + sVF, + sVG, + sVH, + sVI, + sVJ, + sVK, + sVL, + sVM, + sVN, + sVO, + sVP, + sVR, + sVS, + sVT, + sVU, + sVV, + sVW, + sVX, + sVY, + sVZ, + sWA, + sWB, + sWC, + sWD, + sWE, + sWF, + sWG, + sWH, + sWI, + sWJ, + sWK, + sWL, + sWM, + sWN, + sWO, + sWP, + sWQ, + sWR, + sWS, + sWT, + sWU, + sWV, + sWW, + sWX, + sWY, + sWZ, + sXA, + sXB, + sXC, + sXD, + sXE, + sXF, + sXG, + sXH, + sXI, + sXJ, + sXL, + sXM, + sXN, + sXO, + sXP, + sXQ, + sXR, + sXS, + sXT, + sXU, + sXW, + sXX, + sXY, + sXZ, + sYA, + sYB, + sYC, + sYD, + sYE, + sYF, + sYG, + sYH, + sYI, + sYJ, + sYK, + sYL, + sYM, + sYN, + sYO, + sYP, + sYQ, + sYR, + sYS, + sYT, + sYU, + sYV, + sYW, + sYX, + sYY, + sYZ, + sZA, + sZB, + sZC, + sZD, + sZE, + sZF, + sZG, + sZH, + sZI, + sZJ, + sZK, + sZL, + sZM, + sZN, + sZO, + sZP, + sZQ, + sZR, + sZS, + sZT, + sZU, + sZV, + sZW, + sZX, + sZY, + sZZ, + tAA, + tAB, + tAC, + tAD, + tAE, + tAF, + tAG, + tAH, + tAI, + tAJ, + tAK, + tAL, + tAM, + tAN, + tAO, + tAP, + tAQ, + tAR, + tAS, + tAT, + tAU, + tAV, + tAW, + tAX, + tAY, + tAZ, + tBA, + tBB, + tBC, + tBD, + tBE, + tBF, + tBG, + tBH, + tBI, + tBJ, + tBK, + tBL, + tBM, + tBN, + tBO, + tBP, + tBQ, + tBR, + tBS, + tBT, + tBU, + tBV, + tBW, + tBX, + tBY, + tCA, + tCB, + tCC, + tCD, + tCE, + tCF, + tCG, + tCH, + tCI, + tCJ, + tCK, + tCL, + tCM, + tCN, + tCO, + tCP, + tCQ, + tCR, + tCS, + tCT, + tCU, + tCV, + tCW, + tCX, + tCY, + tCZ, + tDA, + tDB, + tDC, + tDD, + tDE, + tDF, + tDG, + tDH, + tDI, + tDJ, + tDK, + tDL, + tDM, + tDN, + tDO, + tDP, + tDQ, + tDR, + tDS, + tDT, + tDU, + tDV, + tDW, + tDX, + tDY, + tDZ, + tEA, + tEB, + tEC, + tED, + tEE, + tEF, + tEG, + tEH, + tEI, + tEJ, + tEK, + tEL, + tEM, + tEN, + tEO, + tEP, + tEQ, + tES, + tET, + tEU, + tEV, + tEW, + tEX, + tEY, + tEZ, + tFA, + tFB, + tFC, + tFD, + tFE, + tFF, + tFG, + tFH, + tFI, + tFJ, + tFK, + tFL, + tFM, + tFN, + tFO, + tFP, + tFQ, + tFR, + tFS, + tFT, + tFU, + tFV, + tFW, + tFX, + tFY, + tFZ, + tGA, + tGB, + tGC, + tGD, + tGE, + tGF, + tGG, + tGH, + tGI, + tGJ, + tGK, + tGL, + tGM, + tGN, + tGO, + tGP, + tGQ, + tGR, + tGS, + tGT, + tGU, + tGV, + tGW, + tGX, + tGY, + tGZ, + tHA, + tHB, + tHD, + tHE, + tHF, + tHG, + tHH, + tHI, + tHJ, + tHK, + tHL, + tHM, + tHN, + tHO, + tHP, + tHQ, + tHR, + tHS, + tHT, + tHU, + tHV, + tHW, + tHX, + tHY, + tHZ, + tIA, + tIB, + tIC, + tID, + tIE, + tIF, + tIG, + tIH, + tII, + tIJ, + tIK, + tIL, + tIM, + tIN, + tIO, + tIP, + tIQ, + tIR, + tIS, + tIT, + tIU, + tIV, + tIW, + tIX, + tIY, + tIZ, + tJA, + tJB, + tJC, + tJD, + tJE, + tJF, + tJG, + tJH, + tJI, + tJJ, + tJK, + tJL, + tJM, + tJN, + tJP, + tJQ, + tJR, + tJS, + tJT, + tJU, + tJV, + tJW, + tJX, + tJY, + tJZ, + tKA, + tKB, + tKC, + tKD, + tKE, + tKF, + tKG, + tKH, + tKI, + tKJ, + tKK, + tKL, + tKM, + tKN, + tKO, + tKP, + tKQ, + tKR, + tKS, + tKT, + tKU, + tKV, + tKW, + tKX, + tKY, + tKZ, + tLA, + tLC, + tLD, + tLE, + tLF, + tLG, + tLH, + tLI, + tLJ, + tLK, + tLL, + tLM, + tLN, + tLO, + tLP, + tLQ, + tLR, + tLS, + tLT, + tLU, + tLV, + tLW, + tLX, + tLY, + tLZ, + tMA, + tMB, + tMC, + tMD, + tME, + tMF, + tMG, + tMI, + tMJ, + tMK, + tML, + tMM, + tMN, + tMO, + tMP, + tMQ, + tMR, + tMS, + tMT, + tMU, + tMV, + tMW, + tMX, + tMY, + tMZ, + tNA, + tNB, + tNC, + tND, + tNE, + tNF, + tNG, + tNH, + tNI, + tNJ, + tNK, + tNL, + tNM, + tNN, + tNO, + tNP, + tNQ, + tNR, + tNS, + tNT, + tNU, + tNV, + tNW, + tNX, + tNY, + tNZ, + tOA, + tOB, + tOC, + tOD, + tOE, + tOF, + tOG, + tOH, + tOI, + tOJ, + tOK, + tOL, + tOM, + tON, + tOO, + tOP, + tOQ, + tOS, + tOT, + tOU, + tOV, + tOW, + tOX, + tOY, + tOZ, + tPA, + tPB, + tPC, + tPD, + tPE, + tPF, + tPG, + tPH, + tPI, + tPK, + tPL, + tPM, + tPN, + tPO, + tPP, + tPQ, + tPR, + tPS, + tPT, + tPU, + tPV, + tPW, + tPX, + tPY, + tQA, + tQB, + tQC, + tQD, + tQE, + tQF, + tQG, + tQH, + tQI, + tQJ, + tQK, + tQL, + tQM, + tQN, + tQO, + tQP, + tQQ, + tQR, + tQS, + tQT, + tQU, + tQV, + tQW, + tQX, + tQY, + tQZ, + tRA, + tRB, + tRC, + tRD, + tRE, + tRF, + tRG, + tRH, + tRI, + tRK, + tRL, + tRM, + tRN, + tRO, + tRP, + tRQ, + tRR, + tRS, + tRT, + tRU, + tRV, + tRW, + tRX, + tRY, + tRZ, + tSA, + tSB, + tSC, + tSD, + tSE, + tSF, + tSG, + tSH, + tSI, + tSJ, + tSK, + tSL, + tSM, + tSN, + tSO, + tSP, + tSQ, + tSR, + tSS, + tST, + tSU, + tSV, + tSW, + tSX, + tSY, + tTA, + tTB, + tTC, + tTD, + tTE, + tTF, + tTG, + tTH, + tTI, + tTJ, + tTK, + tTL, + tTM, + tTN, + tTO, + tTP, + tTQ, + tTR, + tTS, + tTT, + tTU, + tTV, + tTW, + tTX, + tTY, + tTZ, + tUA, + tUC, + tUD, + tUE, + tUF, + tUG, + tUH, + tUI, + tUJ, + tUK, + tUL, + tUM, + tUN, + tUO, + tUP, + tUQ, + tUR, + tUS, + tUT, + tUU, + tUV, + tUW, + tUX, + tUY, + tUZ, + tVA, + tVB, + tVC, + tVD, + tVE, + tVF, + tVG, + tVH, + tVI, + tVJ, + tVK, + tVL, + tVM, + tVN, + tVO, + tVP, + tVQ, + tVR, + tVS, + tVT, + tVU, + tVV, + tVW, + tVX, + tVY, + tVZ, + tWA, + tWB, + tWC, + tWD, + tWG, + tWI, + tWK, + tWL, + tWM, + tWN, + tWO, + tWP, + tWS, + tWT, + tWV, + tWX, + tWY, + tXB, + tXC, + tXE, + tXF, + tXH, + tXI, + tXJ, + tXK, + tXM, + tXO, + tXP, + tXQ, + tXR, + tXS, + tXT, + tXV, + tXW, + tXX, + tXY, + tXZ, + tYA, + tYB, + tYC, + tYD, + tYE, + tYF, + tYG, + tYH, + tYI, + tYJ, + tYK, + tYL, + tYM, + tYN, + tYO, + tYP, + tYR, + tYS, + tYT, + tYU, + tYV, + tYW, + tYX, + tYY, + tYZ, + tZA, + tZC, + tZD, + tZE, + tZF, + tZG, + tZH, + tZK, + tZL, + tZM, + tZO, + tZP, + tZQ, + tZR, + tZS, + tZW, + tZX, + tZY, + uAA, + uAB, + uAC, + uAD, + uAE, + uAF, + uAG, + uAH, + uAI, + uAJ, + uAK, + uAL, + uAM, + uAN, + uAO, + uAP, + uAQ, + uAR, + uAT, + uAU, + uAV, + uAW, + uAX, + uAY, + uAZ, + uBA, + uBB, + uBC, + uBD, + uBE, + uBF, + uBG, + uBH, + uBI, + uBJ, + uBK, + uBL, + uBM, + uBN, + uBO, + uBP, + uBQ, + uBR, + uBS, + uBT, + uBU, + uBV, + uBW, + uBX, + uBY, + uBZ, + uCA, + uCB, + uCC, + uCD, + uCE, + uCF, + uCG, + uCH, + uCI, + uCJ, + uCK, + uCL, + uCM, + uCN, + uCO, + uCP, + uCQ, + uCR, + uCS, + uCT, + uCU, + uCV, + uCW, + uCX, + uCY, + uCZ, + uDA, + uDB, + uDC, + uDD, + uDE, + uDF, + uDG, + uDH, + uDI, + uDJ, + uDK, + uDL, + uDM, + uDO, + uDP, + uDQ, + uDR, + uDS, + uDT, + uDU, + uDV, + uDW, + uDX, + uDZ, + uEB, + uEF, + uEH, + uEP, + uEX, + uFA, + uFB, + uFC, + uFD, + uFE, + uFF, + uFG, + uFH, + uFI, + uFJ, + uFK, + uFL, + uFM, + uFN, + uFO, + uFP, + uFR, + uFS, + uFT, + uFU, + uFX, + uFZ, + uGA, + uGC, + uGH, + uGK, + uGL, + uGM, + uGO, + uGS, + uGT, + uGU, + uGX, + uGY, + uGZ, + uHA, + uHB, + uHD, + uHE, + uHG, + uHH, + uHI, + uHJ, + uHK, + uHL, + uHM, + uHN, + uHO, + uHP, + uHQ, + uHR, + uHS, + uHT, + uHU, + uHW, + uHX, + uIA, + uIB, + uIC, + uID, + uIE, + uIF, + uIG, + uIL, + uIM, + uIN, + uIO, + uIP, + uIR, + uIS, + uIT, + uIU, + uIX, + uIY, + uIZ, + uJA, + uJB, + uJC, + uJI, + uJX, + uKA, + uKB, + uKD, + uKH, + uKI, + uKP, + uKQ, + uKR, + uKX, + uLA, + uLB, + uLC, + uLD, + uLE, + uLF, + uLG, + uLH, + uLI, + uLJ, + uLK, + uLL, + uLM, + uLN, + uLO, + uLP, + uLQ, + uLR, + uLS, + uLT, + uLU, + uLV, + uLW, + uLX, + uLY, + uMA, + uMB, + uMC, + uMD, + uMG, + uMH, + uMI, + uMJ, + uMK, + uML, + uMM, + uMO, + uMP, + uMR, + uMS, + uMU, + uMV, + uMX, + uMY, + uMZ, + uNA, + uNC, + uND, + uNE, + uNF, + uNG, + uNI, + uNJ, + uNL, + uNM, + uNN, + uNO, + uNP, + uNQ, + uNR, + uNT, + uNU, + uNX, + uOA, + uOB, + uOC, + uOE, + uOG, + uOI, + uOM, + uON, + uOO, + uOP, + uOR, + uOS, + uOT, + uOX, + uOZ, + uPA, + uPC, + uPD, + uPE, + uPG, + uPH, + uPI, + uPJ, + uPK, + uPL, + uPM, + uPN, + uPO, + uPP, + uPQ, + uPR, + uPS, + uPT, + uPU, + uPV, + uPW, + uPX, + uPY, + uQP, + uQS, + uQT, + uQU, + uQX, + uRA, + uRB, + uRC, + uRD, + uRE, + uRF, + uRG, + uRH, + uRI, + uRJ, + uRK, + uRL, + uRM, + uRN, + uRO, + uRQ, + uRS, + uRT, + uRU, + uRV, + uRW, + uRX, + uRY, + uRZ, + uSA, + uSB, + uSC, + uSD, + uSE, + uSF, + uSG, + uSH, + uSI, + uSJ, + uSK, + uSL, + uSM, + uSN, + uSO, + uSP, + uSQ, + uSR, + uSS, + uST, + uSU, + uSV, + uSW, + uSX, + uSY, + uSZ, + uTA, + uTB, + uTC, + uTD, + uTE, + uTF, + uTG, + uTH, + uTI, + uTJ, + uTK, + uTL, + uTM, + uTN, + uTO, + uTP, + uTQ, + uTR, + uTS, + uTT, + uTU, + uTW, + uTX, + uUB, + uUC, + uUD, + uUE, + uUF, + uUG, + uUH, + uUI, + uUJ, + uUL, + uUM, + uUN, + uUP, + uUQ, + uUR, + uUS, + uUT, + uUU, + uUV, + uUX, + uUY, + uVA, + uVB, + uVC, + uVD, + uVE, + uVF, + uVG, + uVH, + uVL, + uVN, + uVP, + uVQ, + uVR, + uVS, + uVT, + uVU, + uVX, + uWX, + uXA, + uXK, + uXP, + uXR, + uXS, + uXT, + uXU, + uXX, + uYC, + uYD, + uYE, + uYF, + uYI, + uYT, + uYV, + uYX, + uZB, + uZO, + uZX, + vAA, + vAC, + vAD, + vAI, + vAJ, + vAL, + vAM, + vAN, + vAQ, + vAR, + vAT, + vAU, + vAX, + vAY, + vAZ, + vBX, + vCM, + vCP, + vCX, + vDX, + vEA, + vED, + vEE, + vEG, + vEI, + vEM, + vEN, + vEO, + vEP, + vER, + vES, + vET, + vEU, + vEV, + vEX, + vFT, + vFV, + vFW, + vFX, + vGX, + vHS, + vHX, + vIA, + vIC, + vII, + vIM, + vIP, + vIV, + vIX, + vIY, + vJX, + vKA, + vKS, + vKX, + vLB, + vLI, + vLM, + vLO, + vLS, + vLU, + vLV, + vLX, + vMC, + vMH, + vMM, + vMP, + vMX, + vNA, + vNC, + vNG, + vNI, + vNR, + vNU, + vOI, + vOS, + vPD, + vRA, + vRL, + vSC, + vSE, + vSH, + vSK, + vSM, + vSP, + vST, + vSU, + vSV, + vTX, + vUC, + vUD, + vUF, + vUX, + vVH, + vVV, + vVX, + vXA, + vXR, + vXU, + vXV, + vXX, + vYX, + wAA, + wAB, + wAH, + wAL, + wAM, + wAX, + wBM, + wCP, + wEA, + wEC, + wED, + wEG, + wEM, + wEP, + wEW, + wEX, + wFF, + wFS, + wGR, + wHA, + wHB, + wHE, + wHF, + wHG, + wHH, + wHL, + wHM, + wHS, + wHV, + wHX, + wHZ, + wIC, + wIM, + wIO, + wIT, + wKB, + wKK, + wKP, + wKS, + wKX, + wLF, + wLJ, + wLK, + wLL, + wLX, + wMC, + wME, + wMX, + wOA, + wOM, + wON, + wOO, + wOR, + wOS, + wOT, + wOW, + wOY, + wPM, + wPP, + wPT, + wPU, + wPX, + wRA, + wRF, + wRM, + wRO, + wRR, + wRV, + wRW, + wRX, + wSA, + wSG, + wSH, + wSK, + wSM, + wSN, + wSP, + wSS, + wST, + wSU, + wSW, + wSZ, + wTA, + wTB, + wTC, + wTE, + wTF, + wTG, + wTH, + wTK, + wTM, + wTO, + wTP, + wTQ, + wTR, + wTS, + wTV, + wTW, + wTX, + wTY, + wTZ, + wUB, + wUT, + wUW, + wUX, + wUZ, + wVW, + wVZ, + wWA, + wWB, + wWP, + wYC, + wYG, + wYP, + x98, + x99, + xAC, + xAD, + xAX, + xBP, + xBX, + xCE, + xCS, + xDP, + xDX, + xEA, + xEB, + xEC, + xED, + xEF, + xEH, + xEJ, + xEK, + xEL, + xEO, + xEP, + xER, + xES, + xET, + xEZ, + xFA, + xFC, + xFM, + xFO, + xFS, + xFT, + xFU, + xHE, + xHH, + xHK, + xHO, + xIX, + xJM, + xJX, + xKX, + xMB, + xML, + xMQ, + xMR, + xMS, + xOD, + xOX, + xPA, + xPF, + xPN, + xPO, + xPS, + xPX, + xSC, + xTB, + xTC, + xTE, + xTO, + xTR, + xTY, + xUL, + xUM, + xUU, + xUV, + xUX, + xXA, + xXC, + xYB, + xYD, + xYF, + xYH, + xYL, + xYN, + xYT, + xYX, + yAA, + yAB, + yAC, + yAD, + yAE, + yAF, + yAG, + yAH, + yAI, + yAJ, + yAK, + yAL, + yAM, + yAN, + yAO, + yAP, + yAQ, + yAR, + yAS, + yAT, + yAU, + yAV, + yAW, + yAX, + yAY, + yAZ, + yBA, + yBB, + yBC, + yBD, + yBE, + yBF, + yBG, + yBH, + yBI, + yBJ, + yBK, + yBL, + yBM, + yBN, + yBO, + yBP, + yBQ, + yBR, + yBS, + yBT, + yBU, + yBV, + yBW, + yBX, + yBY, + yBZ, + yCA, + yCB, + yCC, + yCD, + yCE, + yCF, + yCG, + yCH, + yCI, + yCJ, + yCK, + yCL, + yCM, + yCN, + yCO, + yCP, + yCQ, + yCR, + yCS, + yCT, + yCU, + yCV, + yCW, + yCX, + yCY, + yCZ, + yDA, + yDB, + yDC, + yDD, + yDE, + yDF, + yDG, + yDH, + yDI, + yDJ, + yDK, + yDL, + yDN, + yDO, + yDP, + yDR, + yDS, + yDY, + yDZ, + yEA, + yEB, + yEC, + yED, + yEG, + yEH, + yEI, + yEJ, + yEK, + yEL, + yEM, + yEN, + yEO, + yEP, + yEQ, + yER, + yES, + yET, + yEU, + yEV, + yEX, + yEZ, + yFA, + yFB, + yFC, + yFE, + yFF, + yFG, + yFH, + yFI, + yFJ, + yFK, + yFL, + yFM, + yFN, + yFO, + yFP, + yFQ, + yFR, + yFS, + yFT, + yFU, + yFX, + yGA, + yGC, + yGD, + yGE, + yGF, + yGG, + yGH, + yGI, + yGJ, + yGK, + yGL, + yGM, + yGN, + yGP, + yGR, + yGS, + yGT, + yGU, + yGX, + yHA, + yHB, + yHJ, + yHP, + yHS, + yHT, + yHU, + yHW, + yHX, + yIA, + yIB, + yIC, + yID, + yIF, + yIG, + yIH, + yII, + yIK, + yIL, + yIM, + yIN, + yIO, + yIP, + yIR, + yIS, + yIT, + yIU, + yIV, + yIW, + yIX, + yIY, + yJA, + yJB, + yJC, + yJF, + yJG, + yJI, + yJL, + yJM, + yJO, + yJP, + yJR, + yJS, + yJT, + yJU, + yJV, + yJW, + yJX, + yJY, + yJZ, + yKA, + yKB, + yKC, + yKD, + yKE, + yKG, + yKL, + yKN, + yKO, + yKP, + yKR, + yKS, + yKU, + yKV, + yKX, + yLA, + yLB, + yLC, + yLD, + yLE, + yLF, + yLG, + yLH, + yLI, + yLJ, + yLK, + yLL, + yLM, + yLN, + yLO, + yLP, + yLQ, + yLR, + yLS, + yLT, + yLU, + yLV, + yLW, + yLX, + yLY, + yLZ, + yMA, + yMB, + yMD, + yME, + yMF, + yMG, + yMH, + yMI, + yMJ, + yMK, + yML, + yMM, + yMN, + yMO, + yMP, + yMQ, + yMR, + yMS, + yMT, + yMU, + yMV, + yMW, + yMX, + yMY, + yMZ, + yNA, + yNB, + yNC, + yND, + yNE, + yNF, + yNG, + yNH, + yNI, + yNJ, + yNK, + yNL, + yNM, + yNN, + yNO, + yNP, + yNQ, + yNR, + yNS, + yNT, + yNU, + yNV, + yNW, + yNX, + yNY, + yNZ, + yOA, + yOB, + yOC, + yOD, + yOE, + yOF, + yOG, + yOH, + yOI, + yOJ, + yOK, + yOL, + yOM, + yON, + yOO, + yOP, + yOQ, + yOR, + yOS, + yOT, + yOV, + yOW, + yOX, + yOY, + yOZ, + yPA, + yPB, + yPC, + yPD, + yPE, + yPF, + yPG, + yPH, + yPI, + yPJ, + yPK, + yPL, + yPM, + yPN, + yPO, + yPP, + yPQ, + yPR, + yPS, + yPT, + yPU, + yPV, + yPW, + yPX, + yPY, + yPZ, + yQA, + yQB, + yQC, + yQD, + yQE, + yQF, + yQG, + yQH, + yQI, + yQL, + yQM, + yQN, + yQO, + yQP, + yQR, + yQS, + yQT, + yQU, + yQV, + yQX, + yQY, + yRA, + yRB, + yRC, + yRD, + yRE, + yRG, + yRH, + yRI, + yRJ, + yRK, + yRL, + yRM, + yRN, + yRO, + yRP, + yRQ, + yRR, + yRS, + yRT, + yRU, + yRV, + yRX, + yRZ, + ySA, + ySB, + ySC, + ySD, + ySE, + ySF, + ySG, + ySH, + ySI, + ySJ, + ySK, + ySL, + ySM, + ySN, + ySO, + ySQ, + ySR, + ySS, + yST, + ySU, + ySV, + ySW, + ySX, + ySY, + ySZ, + yTA, + yTB, + yTC, + yTD, + yTE, + yTF, + yTG, + yTH, + yTI, + yTJ, + yTK, + yTL, + yTM, + yTN, + yTO, + yTP, + yTQ, + yTR, + yTS, + yTT, + yTU, + yTV, + yTW, + yTX, + yTY, + yTZ, + yUA, + yUB, + yUC, + yUD, + yUE, + yUF, + yUH, + yUI, + yUJ, + yUK, + yUL, + yUM, + yUN, + yUO, + yUP, + yUQ, + yUR, + yUS, + yUT, + yUU, + yUX, + yUY, + yVB, + yVG, + yVV, + yVX, + yWF, + yWX, + yXA, + yXD, + yXL, + yXS, + yXX, + yYA, + yYK, + yYL, + yYM, + yYS, + yYT, + yYW, + yYX, + yZB, + yZS, + yZU, + yZX, + zAC, + zAE, + zAF, + zAI, + zAL, + zAM, + zAO, + zAP, + zAR, + zAS, + zAX, + zBF, + zBQ, + zBV, + zBZ, + zCA, + zCC, + zCD, + zCF, + zCN, + zCP, + zCT, + zCU, + zDF, + zEA, + zEF, + zEO, + zEV, + zEX, + zEZ, + zGC, + zGL, + zGP, + zGS, + zIZ, + zLS, + zLV, + zMA, + zMH, + zML, + zMX, + zNB, + zNC, + zNE, + zNZ, + zOG, + zOM, + zON, + zOQ, + zOR, + zOT, + zPC, + zPE, + zPP, + zRN, + zSP, + zSS, + zUC, + zUE, + zUM, + zUZ, + zYA, + zYD, + zYE, + zYP, + zYZ +} +with { + variant "text 'aAA' as capitalized"; + variant "text 'aAB' as capitalized"; + variant "text 'aAC' as capitalized"; + variant "text 'aAD' as capitalized"; + variant "text 'aAE' as capitalized"; + variant "text 'aAF' as capitalized"; + variant "text 'aAG' as capitalized"; + variant "text 'aAH' as capitalized"; + variant "text 'aAI' as capitalized"; + variant "text 'aAJ' as capitalized"; + variant "text 'aAK' as capitalized"; + variant "text 'aAL' as capitalized"; + variant "text 'aAM' as capitalized"; + variant "text 'aAN' as capitalized"; + variant "text 'aAO' as capitalized"; + variant "text 'aAP' as capitalized"; + variant "text 'aAQ' as capitalized"; + variant "text 'aAR' as capitalized"; + variant "text 'aAS' as capitalized"; + variant "text 'aAT' as capitalized"; + variant "text 'aAU' as capitalized"; + variant "text 'aAV' as capitalized"; + variant "text 'aAW' as capitalized"; + variant "text 'aAX' as capitalized"; + variant "text 'aAY' as capitalized"; + variant "text 'aAZ' as capitalized"; + variant "text 'aBA' as capitalized"; + variant "text 'aBB' as capitalized"; + variant "text 'aBC' as capitalized"; + variant "text 'aBD' as capitalized"; + variant "text 'aBE' as capitalized"; + variant "text 'aBF' as capitalized"; + variant "text 'aBG' as capitalized"; + variant "text 'aBH' as capitalized"; + variant "text 'aBI' as capitalized"; + variant "text 'aBJ' as capitalized"; + variant "text 'aBK' as capitalized"; + variant "text 'aBL' as capitalized"; + variant "text 'aBM' as capitalized"; + variant "text 'aBN' as capitalized"; + variant "text 'aBO' as capitalized"; + variant "text 'aBP' as capitalized"; + variant "text 'aBQ' as capitalized"; + variant "text 'aBR' as capitalized"; + variant "text 'aBS' as capitalized"; + variant "text 'aBT' as capitalized"; + variant "text 'aBU' as capitalized"; + variant "text 'aBV' as capitalized"; + variant "text 'aBW' as capitalized"; + variant "text 'aBX' as capitalized"; + variant "text 'aBY' as capitalized"; + variant "text 'aBZ' as capitalized"; + variant "text 'aCA' as capitalized"; + variant "text 'aCB' as capitalized"; + variant "text 'aCC' as capitalized"; + variant "text 'aCD' as capitalized"; + variant "text 'aCE' as capitalized"; + variant "text 'aCF' as capitalized"; + variant "text 'aCG' as capitalized"; + variant "text 'aCH' as capitalized"; + variant "text 'aCI' as capitalized"; + variant "text 'aCJ' as capitalized"; + variant "text 'aCK' as capitalized"; + variant "text 'aCL' as capitalized"; + variant "text 'aCM' as capitalized"; + variant "text 'aCN' as capitalized"; + variant "text 'aCO' as capitalized"; + variant "text 'aCP' as capitalized"; + variant "text 'aCQ' as capitalized"; + variant "text 'aCR' as capitalized"; + variant "text 'aCS' as capitalized"; + variant "text 'aCT' as capitalized"; + variant "text 'aCU' as capitalized"; + variant "text 'aCV' as capitalized"; + variant "text 'aCW' as capitalized"; + variant "text 'aCX' as capitalized"; + variant "text 'aCY' as capitalized"; + variant "text 'aCZ' as capitalized"; + variant "text 'aDA' as capitalized"; + variant "text 'aDB' as capitalized"; + variant "text 'aDC' as capitalized"; + variant "text 'aDD' as capitalized"; + variant "text 'aDE' as capitalized"; + variant "text 'aDF' as capitalized"; + variant "text 'aDG' as capitalized"; + variant "text 'aDH' as capitalized"; + variant "text 'aDI' as capitalized"; + variant "text 'aDJ' as capitalized"; + variant "text 'aDK' as capitalized"; + variant "text 'aDL' as capitalized"; + variant "text 'aDM' as capitalized"; + variant "text 'aDN' as capitalized"; + variant "text 'aDO' as capitalized"; + variant "text 'aDP' as capitalized"; + variant "text 'aDQ' as capitalized"; + variant "text 'aDR' as capitalized"; + variant "text 'aDS' as capitalized"; + variant "text 'aDT' as capitalized"; + variant "text 'aDU' as capitalized"; + variant "text 'aDV' as capitalized"; + variant "text 'aDW' as capitalized"; + variant "text 'aDX' as capitalized"; + variant "text 'aDY' as capitalized"; + variant "text 'aDZ' as capitalized"; + variant "text 'aEA' as capitalized"; + variant "text 'aEB' as capitalized"; + variant "text 'aEC' as capitalized"; + variant "text 'aED' as capitalized"; + variant "text 'aEE' as capitalized"; + variant "text 'aEF' as capitalized"; + variant "text 'aEG' as capitalized"; + variant "text 'aEH' as capitalized"; + variant "text 'aEI' as capitalized"; + variant "text 'aEJ' as capitalized"; + variant "text 'aEK' as capitalized"; + variant "text 'aEL' as capitalized"; + variant "text 'aEM' as capitalized"; + variant "text 'aEN' as capitalized"; + variant "text 'aEO' as capitalized"; + variant "text 'aEP' as capitalized"; + variant "text 'aER' as capitalized"; + variant "text 'aES' as capitalized"; + variant "text 'aET' as capitalized"; + variant "text 'aEU' as capitalized"; + variant "text 'aEV' as capitalized"; + variant "text 'aEW' as capitalized"; + variant "text 'aEX' as capitalized"; + variant "text 'aEY' as capitalized"; + variant "text 'aEZ' as capitalized"; + variant "text 'aFA' as capitalized"; + variant "text 'aFB' as capitalized"; + variant "text 'aFC' as capitalized"; + variant "text 'aFD' as capitalized"; + variant "text 'aFE' as capitalized"; + variant "text 'aFF' as capitalized"; + variant "text 'aFG' as capitalized"; + variant "text 'aFH' as capitalized"; + variant "text 'aFI' as capitalized"; + variant "text 'aFJ' as capitalized"; + variant "text 'aFK' as capitalized"; + variant "text 'aFL' as capitalized"; + variant "text 'aFM' as capitalized"; + variant "text 'aFN' as capitalized"; + variant "text 'aFO' as capitalized"; + variant "text 'aFP' as capitalized"; + variant "text 'aFQ' as capitalized"; + variant "text 'aFR' as capitalized"; + variant "text 'aFS' as capitalized"; + variant "text 'aFT' as capitalized"; + variant "text 'aFU' as capitalized"; + variant "text 'aFV' as capitalized"; + variant "text 'aFW' as capitalized"; + variant "text 'aFX' as capitalized"; + variant "text 'aFY' as capitalized"; + variant "text 'aFZ' as capitalized"; + variant "text 'aGA' as capitalized"; + variant "text 'aGB' as capitalized"; + variant "text 'aGC' as capitalized"; + variant "text 'aGD' as capitalized"; + variant "text 'aGE' as capitalized"; + variant "text 'aGF' as capitalized"; + variant "text 'aGG' as capitalized"; + variant "text 'aGH' as capitalized"; + variant "text 'aGI' as capitalized"; + variant "text 'aGJ' as capitalized"; + variant "text 'aGK' as capitalized"; + variant "text 'aGL' as capitalized"; + variant "text 'aGM' as capitalized"; + variant "text 'aGN' as capitalized"; + variant "text 'aGO' as capitalized"; + variant "text 'aGP' as capitalized"; + variant "text 'aGQ' as capitalized"; + variant "text 'aGR' as capitalized"; + variant "text 'aGS' as capitalized"; + variant "text 'aGT' as capitalized"; + variant "text 'aGU' as capitalized"; + variant "text 'aGV' as capitalized"; + variant "text 'aGW' as capitalized"; + variant "text 'aGX' as capitalized"; + variant "text 'aGY' as capitalized"; + variant "text 'aGZ' as capitalized"; + variant "text 'aHA' as capitalized"; + variant "text 'aHB' as capitalized"; + variant "text 'aHC' as capitalized"; + variant "text 'aHD' as capitalized"; + variant "text 'aHE' as capitalized"; + variant "text 'aHF' as capitalized"; + variant "text 'aHG' as capitalized"; + variant "text 'aHH' as capitalized"; + variant "text 'aHI' as capitalized"; + variant "text 'aHJ' as capitalized"; + variant "text 'aHK' as capitalized"; + variant "text 'aHL' as capitalized"; + variant "text 'aHM' as capitalized"; + variant "text 'aHN' as capitalized"; + variant "text 'aHO' as capitalized"; + variant "text 'aHP' as capitalized"; + variant "text 'aHQ' as capitalized"; + variant "text 'aHR' as capitalized"; + variant "text 'aHS' as capitalized"; + variant "text 'aHT' as capitalized"; + variant "text 'aHU' as capitalized"; + variant "text 'aHV' as capitalized"; + variant "text 'aHW' as capitalized"; + variant "text 'aHX' as capitalized"; + variant "text 'aHY' as capitalized"; + variant "text 'aHZ' as capitalized"; + variant "text 'aIA' as capitalized"; + variant "text 'aIB' as capitalized"; + variant "text 'aIC' as capitalized"; + variant "text 'aID' as capitalized"; + variant "text 'aIE' as capitalized"; + variant "text 'aIF' as capitalized"; + variant "text 'aIG' as capitalized"; + variant "text 'aIH' as capitalized"; + variant "text 'aII' as capitalized"; + variant "text 'aIJ' as capitalized"; + variant "text 'aIK' as capitalized"; + variant "text 'aIL' as capitalized"; + variant "text 'aIM' as capitalized"; + variant "text 'aIN' as capitalized"; + variant "text 'aIO' as capitalized"; + variant "text 'aIP' as capitalized"; + variant "text 'aIQ' as capitalized"; + variant "text 'aIR' as capitalized"; + variant "text 'aIS' as capitalized"; + variant "text 'aIT' as capitalized"; + variant "text 'aIU' as capitalized"; + variant "text 'aIV' as capitalized"; + variant "text 'aIW' as capitalized"; + variant "text 'aIX' as capitalized"; + variant "text 'aIY' as capitalized"; + variant "text 'aIZ' as capitalized"; + variant "text 'aJA' as capitalized"; + variant "text 'aJB' as capitalized"; + variant "text 'aJC' as capitalized"; + variant "text 'aJD' as capitalized"; + variant "text 'aJE' as capitalized"; + variant "text 'aJF' as capitalized"; + variant "text 'aJG' as capitalized"; + variant "text 'aJH' as capitalized"; + variant "text 'aJI' as capitalized"; + variant "text 'aJJ' as capitalized"; + variant "text 'aJK' as capitalized"; + variant "text 'aJL' as capitalized"; + variant "text 'aJM' as capitalized"; + variant "text 'aJN' as capitalized"; + variant "text 'aJO' as capitalized"; + variant "text 'aJP' as capitalized"; + variant "text 'aJQ' as capitalized"; + variant "text 'aJR' as capitalized"; + variant "text 'aJS' as capitalized"; + variant "text 'aJT' as capitalized"; + variant "text 'aJU' as capitalized"; + variant "text 'aJV' as capitalized"; + variant "text 'aJW' as capitalized"; + variant "text 'aJX' as capitalized"; + variant "text 'aJY' as capitalized"; + variant "text 'aJZ' as capitalized"; + variant "text 'aKA' as capitalized"; + variant "text 'aKB' as capitalized"; + variant "text 'aKC' as capitalized"; + variant "text 'aKD' as capitalized"; + variant "text 'aKE' as capitalized"; + variant "text 'aKF' as capitalized"; + variant "text 'aKG' as capitalized"; + variant "text 'aKH' as capitalized"; + variant "text 'aKI' as capitalized"; + variant "text 'aKJ' as capitalized"; + variant "text 'aKK' as capitalized"; + variant "text 'aKL' as capitalized"; + variant "text 'aKM' as capitalized"; + variant "text 'aKN' as capitalized"; + variant "text 'aKO' as capitalized"; + variant "text 'aKP' as capitalized"; + variant "text 'aKQ' as capitalized"; + variant "text 'aKR' as capitalized"; + variant "text 'aKS' as capitalized"; + variant "text 'aKT' as capitalized"; + variant "text 'aKU' as capitalized"; + variant "text 'aKV' as capitalized"; + variant "text 'aKW' as capitalized"; + variant "text 'aKX' as capitalized"; + variant "text 'aKY' as capitalized"; + variant "text 'aKZ' as capitalized"; + variant "text 'aLA' as capitalized"; + variant "text 'aLB' as capitalized"; + variant "text 'aLC' as capitalized"; + variant "text 'aLD' as capitalized"; + variant "text 'aLE' as capitalized"; + variant "text 'aLF' as capitalized"; + variant "text 'aLG' as capitalized"; + variant "text 'aLH' as capitalized"; + variant "text 'aLI' as capitalized"; + variant "text 'aLJ' as capitalized"; + variant "text 'aLK' as capitalized"; + variant "text 'aLL' as capitalized"; + variant "text 'aLM' as capitalized"; + variant "text 'aLN' as capitalized"; + variant "text 'aLO' as capitalized"; + variant "text 'aLP' as capitalized"; + variant "text 'aLQ' as capitalized"; + variant "text 'aLR' as capitalized"; + variant "text 'aLS' as capitalized"; + variant "text 'aLT' as capitalized"; + variant "text 'aLU' as capitalized"; + variant "text 'aLV' as capitalized"; + variant "text 'aLW' as capitalized"; + variant "text 'aLX' as capitalized"; + variant "text 'aLY' as capitalized"; + variant "text 'aLZ' as capitalized"; + variant "text 'aMA' as capitalized"; + variant "text 'aMB' as capitalized"; + variant "text 'aMC' as capitalized"; + variant "text 'aMD' as capitalized"; + variant "text 'aME' as capitalized"; + variant "text 'aMF' as capitalized"; + variant "text 'aMG' as capitalized"; + variant "text 'aMH' as capitalized"; + variant "text 'aMI' as capitalized"; + variant "text 'aMJ' as capitalized"; + variant "text 'aMK' as capitalized"; + variant "text 'aML' as capitalized"; + variant "text 'aMM' as capitalized"; + variant "text 'aMN' as capitalized"; + variant "text 'aMO' as capitalized"; + variant "text 'aMP' as capitalized"; + variant "text 'aMQ' as capitalized"; + variant "text 'aMR' as capitalized"; + variant "text 'aMS' as capitalized"; + variant "text 'aMT' as capitalized"; + variant "text 'aMU' as capitalized"; + variant "text 'aMV' as capitalized"; + variant "text 'aMW' as capitalized"; + variant "text 'aMX' as capitalized"; + variant "text 'aMY' as capitalized"; + variant "text 'aMZ' as capitalized"; + variant "text 'aNA' as capitalized"; + variant "text 'aNB' as capitalized"; + variant "text 'aNC' as capitalized"; + variant "text 'aND' as capitalized"; + variant "text 'aNE' as capitalized"; + variant "text 'aNF' as capitalized"; + variant "text 'aNG' as capitalized"; + variant "text 'aNI' as capitalized"; + variant "text 'aNJ' as capitalized"; + variant "text 'aNK' as capitalized"; + variant "text 'aNL' as capitalized"; + variant "text 'aNM' as capitalized"; + variant "text 'aNN' as capitalized"; + variant "text 'aNO' as capitalized"; + variant "text 'aNP' as capitalized"; + variant "text 'aNQ' as capitalized"; + variant "text 'aNR' as capitalized"; + variant "text 'aNS' as capitalized"; + variant "text 'aNT' as capitalized"; + variant "text 'aNU' as capitalized"; + variant "text 'aNV' as capitalized"; + variant "text 'aNW' as capitalized"; + variant "text 'aNX' as capitalized"; + variant "text 'aNY' as capitalized"; + variant "text 'aNZ' as capitalized"; + variant "text 'aOA' as capitalized"; + variant "text 'aOB' as capitalized"; + variant "text 'aOC' as capitalized"; + variant "text 'aOD' as capitalized"; + variant "text 'aOE' as capitalized"; + variant "text 'aOF' as capitalized"; + variant "text 'aOG' as capitalized"; + variant "text 'aOH' as capitalized"; + variant "text 'aOI' as capitalized"; + variant "text 'aOJ' as capitalized"; + variant "text 'aOK' as capitalized"; + variant "text 'aOL' as capitalized"; + variant "text 'aOM' as capitalized"; + variant "text 'aON' as capitalized"; + variant "text 'aOO' as capitalized"; + variant "text 'aOP' as capitalized"; + variant "text 'aOQ' as capitalized"; + variant "text 'aOR' as capitalized"; + variant "text 'aOS' as capitalized"; + variant "text 'aOT' as capitalized"; + variant "text 'aOU' as capitalized"; + variant "text 'aOV' as capitalized"; + variant "text 'aOW' as capitalized"; + variant "text 'aOX' as capitalized"; + variant "text 'aOY' as capitalized"; + variant "text 'aOZ' as capitalized"; + variant "text 'aPA' as capitalized"; + variant "text 'aPB' as capitalized"; + variant "text 'aPC' as capitalized"; + variant "text 'aPD' as capitalized"; + variant "text 'aPE' as capitalized"; + variant "text 'aPF' as capitalized"; + variant "text 'aPG' as capitalized"; + variant "text 'aPH' as capitalized"; + variant "text 'aPI' as capitalized"; + variant "text 'aPJ' as capitalized"; + variant "text 'aPK' as capitalized"; + variant "text 'aPL' as capitalized"; + variant "text 'aPM' as capitalized"; + variant "text 'aPN' as capitalized"; + variant "text 'aPO' as capitalized"; + variant "text 'aPP' as capitalized"; + variant "text 'aPQ' as capitalized"; + variant "text 'aPR' as capitalized"; + variant "text 'aPS' as capitalized"; + variant "text 'aPU' as capitalized"; + variant "text 'aPV' as capitalized"; + variant "text 'aPW' as capitalized"; + variant "text 'aPX' as capitalized"; + variant "text 'aPY' as capitalized"; + variant "text 'aPZ' as capitalized"; + variant "text 'aQA' as capitalized"; + variant "text 'aQB' as capitalized"; + variant "text 'aQC' as capitalized"; + variant "text 'aQD' as capitalized"; + variant "text 'aQE' as capitalized"; + variant "text 'aQF' as capitalized"; + variant "text 'aQG' as capitalized"; + variant "text 'aQH' as capitalized"; + variant "text 'aQI' as capitalized"; + variant "text 'aQJ' as capitalized"; + variant "text 'aQK' as capitalized"; + variant "text 'aQL' as capitalized"; + variant "text 'aQM' as capitalized"; + variant "text 'aQN' as capitalized"; + variant "text 'aQO' as capitalized"; + variant "text 'aQP' as capitalized"; + variant "text 'aQQ' as capitalized"; + variant "text 'aQR' as capitalized"; + variant "text 'aQS' as capitalized"; + variant "text 'aQT' as capitalized"; + variant "text 'aQU' as capitalized"; + variant "text 'aQV' as capitalized"; + variant "text 'aQW' as capitalized"; + variant "text 'aQX' as capitalized"; + variant "text 'aQY' as capitalized"; + variant "text 'aQZ' as capitalized"; + variant "text 'aRA' as capitalized"; + variant "text 'aRB' as capitalized"; + variant "text 'aRC' as capitalized"; + variant "text 'aRD' as capitalized"; + variant "text 'aRE' as capitalized"; + variant "text 'aRF' as capitalized"; + variant "text 'aRG' as capitalized"; + variant "text 'aRH' as capitalized"; + variant "text 'aRI' as capitalized"; + variant "text 'aRJ' as capitalized"; + variant "text 'aRK' as capitalized"; + variant "text 'aRL' as capitalized"; + variant "text 'aRM' as capitalized"; + variant "text 'aRN' as capitalized"; + variant "text 'aRO' as capitalized"; + variant "text 'aRP' as capitalized"; + variant "text 'aRQ' as capitalized"; + variant "text 'aRR' as capitalized"; + variant "text 'aRS' as capitalized"; + variant "text 'aRT' as capitalized"; + variant "text 'aRU' as capitalized"; + variant "text 'aRV' as capitalized"; + variant "text 'aRW' as capitalized"; + variant "text 'aRX' as capitalized"; + variant "text 'aRY' as capitalized"; + variant "text 'aRZ' as capitalized"; + variant "text 'aSA' as capitalized"; + variant "text 'aSB' as capitalized"; + variant "text 'aSD' as capitalized"; + variant "text 'aSE' as capitalized"; + variant "text 'aSF' as capitalized"; + variant "text 'aSG' as capitalized"; + variant "text 'aSH' as capitalized"; + variant "text 'aSI' as capitalized"; + variant "text 'aSJ' as capitalized"; + variant "text 'aSK' as capitalized"; + variant "text 'aSL' as capitalized"; + variant "text 'aSM' as capitalized"; + variant "text 'aSN' as capitalized"; + variant "text 'aSO' as capitalized"; + variant "text 'aSP' as capitalized"; + variant "text 'aSQ' as capitalized"; + variant "text 'aSR' as capitalized"; + variant "text 'aST' as capitalized"; + variant "text 'aSU' as capitalized"; + variant "text 'aSV' as capitalized"; + variant "text 'aSW' as capitalized"; + variant "text 'aSX' as capitalized"; + variant "text 'aSY' as capitalized"; + variant "text 'aSZ' as capitalized"; + variant "text 'aTA' as capitalized"; + variant "text 'aTB' as capitalized"; + variant "text 'aTC' as capitalized"; + variant "text 'aTD' as capitalized"; + variant "text 'aTE' as capitalized"; + variant "text 'aTF' as capitalized"; + variant "text 'aTG' as capitalized"; + variant "text 'aTI' as capitalized"; + variant "text 'aTJ' as capitalized"; + variant "text 'aTK' as capitalized"; + variant "text 'aTL' as capitalized"; + variant "text 'aTM' as capitalized"; + variant "text 'aTN' as capitalized"; + variant "text 'aTO' as capitalized"; + variant "text 'aTP' as capitalized"; + variant "text 'aTQ' as capitalized"; + variant "text 'aTR' as capitalized"; + variant "text 'aTS' as capitalized"; + variant "text 'aTT' as capitalized"; + variant "text 'aTU' as capitalized"; + variant "text 'aTV' as capitalized"; + variant "text 'aTW' as capitalized"; + variant "text 'aTX' as capitalized"; + variant "text 'aTY' as capitalized"; + variant "text 'aTZ' as capitalized"; + variant "text 'aUA' as capitalized"; + variant "text 'aUB' as capitalized"; + variant "text 'aUC' as capitalized"; + variant "text 'aUD' as capitalized"; + variant "text 'aUE' as capitalized"; + variant "text 'aUF' as capitalized"; + variant "text 'aUG' as capitalized"; + variant "text 'aUH' as capitalized"; + variant "text 'aUI' as capitalized"; + variant "text 'aUJ' as capitalized"; + variant "text 'aUK' as capitalized"; + variant "text 'aUL' as capitalized"; + variant "text 'aUM' as capitalized"; + variant "text 'aUN' as capitalized"; + variant "text 'aUO' as capitalized"; + variant "text 'aUP' as capitalized"; + variant "text 'aUQ' as capitalized"; + variant "text 'aUR' as capitalized"; + variant "text 'aUS' as capitalized"; + variant "text 'aUT' as capitalized"; + variant "text 'aUU' as capitalized"; + variant "text 'aUV' as capitalized"; + variant "text 'aUW' as capitalized"; + variant "text 'aUX' as capitalized"; + variant "text 'aUY' as capitalized"; + variant "text 'aUZ' as capitalized"; + variant "text 'aVA' as capitalized"; + variant "text 'aVB' as capitalized"; + variant "text 'aVC' as capitalized"; + variant "text 'aVD' as capitalized"; + variant "text 'aVE' as capitalized"; + variant "text 'aVF' as capitalized"; + variant "text 'aVG' as capitalized"; + variant "text 'aVH' as capitalized"; + variant "text 'aVI' as capitalized"; + variant "text 'aVJ' as capitalized"; + variant "text 'aVK' as capitalized"; + variant "text 'aVL' as capitalized"; + variant "text 'aVM' as capitalized"; + variant "text 'aVN' as capitalized"; + variant "text 'aVO' as capitalized"; + variant "text 'aVP' as capitalized"; + variant "text 'aVQ' as capitalized"; + variant "text 'aVR' as capitalized"; + variant "text 'aVS' as capitalized"; + variant "text 'aVT' as capitalized"; + variant "text 'aVU' as capitalized"; + variant "text 'aVV' as capitalized"; + variant "text 'aVW' as capitalized"; + variant "text 'aVX' as capitalized"; + variant "text 'aVY' as capitalized"; + variant "text 'aVZ' as capitalized"; + variant "text 'aWA' as capitalized"; + variant "text 'aWB' as capitalized"; + variant "text 'aWC' as capitalized"; + variant "text 'aWD' as capitalized"; + variant "text 'aWE' as capitalized"; + variant "text 'aWF' as capitalized"; + variant "text 'aWG' as capitalized"; + variant "text 'aWH' as capitalized"; + variant "text 'aWI' as capitalized"; + variant "text 'aWJ' as capitalized"; + variant "text 'aWK' as capitalized"; + variant "text 'aWL' as capitalized"; + variant "text 'aWM' as capitalized"; + variant "text 'aWN' as capitalized"; + variant "text 'aWO' as capitalized"; + variant "text 'aWP' as capitalized"; + variant "text 'aWQ' as capitalized"; + variant "text 'aWR' as capitalized"; + variant "text 'aWS' as capitalized"; + variant "text 'aWT' as capitalized"; + variant "text 'aWX' as capitalized"; + variant "text 'aWY' as capitalized"; + variant "text 'aWZ' as capitalized"; + variant "text 'aXA' as capitalized"; + variant "text 'aXB' as capitalized"; + variant "text 'aXC' as capitalized"; + variant "text 'aXD' as capitalized"; + variant "text 'aXE' as capitalized"; + variant "text 'aXF' as capitalized"; + variant "text 'aXG' as capitalized"; + variant "text 'aXH' as capitalized"; + variant "text 'aXI' as capitalized"; + variant "text 'aXJ' as capitalized"; + variant "text 'aXK' as capitalized"; + variant "text 'aXL' as capitalized"; + variant "text 'aXM' as capitalized"; + variant "text 'aXN' as capitalized"; + variant "text 'aXO' as capitalized"; + variant "text 'aXP' as capitalized"; + variant "text 'aXQ' as capitalized"; + variant "text 'aXR' as capitalized"; + variant "text 'aXS' as capitalized"; + variant "text 'aXT' as capitalized"; + variant "text 'aXU' as capitalized"; + variant "text 'aXV' as capitalized"; + variant "text 'aXY' as capitalized"; + variant "text 'aXZ' as capitalized"; + variant "text 'aYA' as capitalized"; + variant "text 'aYB' as capitalized"; + variant "text 'aYC' as capitalized"; + variant "text 'aYD' as capitalized"; + variant "text 'aYE' as capitalized"; + variant "text 'aYF' as capitalized"; + variant "text 'aYG' as capitalized"; + variant "text 'aYH' as capitalized"; + variant "text 'aYI' as capitalized"; + variant "text 'aYJ' as capitalized"; + variant "text 'aYK' as capitalized"; + variant "text 'aYL' as capitalized"; + variant "text 'aYM' as capitalized"; + variant "text 'aYN' as capitalized"; + variant "text 'aYP' as capitalized"; + variant "text 'aYQ' as capitalized"; + variant "text 'aYR' as capitalized"; + variant "text 'aYS' as capitalized"; + variant "text 'aYT' as capitalized"; + variant "text 'aYU' as capitalized"; + variant "text 'aYV' as capitalized"; + variant "text 'aYW' as capitalized"; + variant "text 'aYX' as capitalized"; + variant "text 'aYY' as capitalized"; + variant "text 'aYZ' as capitalized"; + variant "text 'aZA' as capitalized"; + variant "text 'aZB' as capitalized"; + variant "text 'aZC' as capitalized"; + variant "text 'aZD' as capitalized"; + variant "text 'aZE' as capitalized"; + variant "text 'aZF' as capitalized"; + variant "text 'aZG' as capitalized"; + variant "text 'aZH' as capitalized"; + variant "text 'aZI' as capitalized"; + variant "text 'aZJ' as capitalized"; + variant "text 'aZK' as capitalized"; + variant "text 'aZL' as capitalized"; + variant "text 'aZM' as capitalized"; + variant "text 'aZN' as capitalized"; + variant "text 'aZO' as capitalized"; + variant "text 'aZP' as capitalized"; + variant "text 'aZQ' as capitalized"; + variant "text 'aZR' as capitalized"; + variant "text 'aZS' as capitalized"; + variant "text 'aZT' as capitalized"; + variant "text 'aZU' as capitalized"; + variant "text 'aZV' as capitalized"; + variant "text 'aZX' as capitalized"; + variant "text 'aZZ' as capitalized"; + variant "text 'bAA' as capitalized"; + variant "text 'bAB' as capitalized"; + variant "text 'bAC' as capitalized"; + variant "text 'bAD' as capitalized"; + variant "text 'bAE' as capitalized"; + variant "text 'bAF' as capitalized"; + variant "text 'bAG' as capitalized"; + variant "text 'bAH' as capitalized"; + variant "text 'bAI' as capitalized"; + variant "text 'bAJ' as capitalized"; + variant "text 'bAK' as capitalized"; + variant "text 'bAL' as capitalized"; + variant "text 'bAM' as capitalized"; + variant "text 'bAN' as capitalized"; + variant "text 'bAO' as capitalized"; + variant "text 'bAP' as capitalized"; + variant "text 'bAQ' as capitalized"; + variant "text 'bAR' as capitalized"; + variant "text 'bAS' as capitalized"; + variant "text 'bAT' as capitalized"; + variant "text 'bAU' as capitalized"; + variant "text 'bAV' as capitalized"; + variant "text 'bAW' as capitalized"; + variant "text 'bAX' as capitalized"; + variant "text 'bAY' as capitalized"; + variant "text 'bAZ' as capitalized"; + variant "text 'bBA' as capitalized"; + variant "text 'bBB' as capitalized"; + variant "text 'bBC' as capitalized"; + variant "text 'bBD' as capitalized"; + variant "text 'bBE' as capitalized"; + variant "text 'bBF' as capitalized"; + variant "text 'bBG' as capitalized"; + variant "text 'bBH' as capitalized"; + variant "text 'bBI' as capitalized"; + variant "text 'bBJ' as capitalized"; + variant "text 'bBK' as capitalized"; + variant "text 'bBL' as capitalized"; + variant "text 'bBM' as capitalized"; + variant "text 'bBN' as capitalized"; + variant "text 'bBO' as capitalized"; + variant "text 'bBP' as capitalized"; + variant "text 'bBQ' as capitalized"; + variant "text 'bBR' as capitalized"; + variant "text 'bBS' as capitalized"; + variant "text 'bBT' as capitalized"; + variant "text 'bBU' as capitalized"; + variant "text 'bBV' as capitalized"; + variant "text 'bBW' as capitalized"; + variant "text 'bBX' as capitalized"; + variant "text 'bBY' as capitalized"; + variant "text 'bBZ' as capitalized"; + variant "text 'bCA' as capitalized"; + variant "text 'bCB' as capitalized"; + variant "text 'bCC' as capitalized"; + variant "text 'bCE' as capitalized"; + variant "text 'bCF' as capitalized"; + variant "text 'bCG' as capitalized"; + variant "text 'bCH' as capitalized"; + variant "text 'bCI' as capitalized"; + variant "text 'bCJ' as capitalized"; + variant "text 'bCK' as capitalized"; + variant "text 'bCL' as capitalized"; + variant "text 'bCM' as capitalized"; + variant "text 'bCN' as capitalized"; + variant "text 'bCO' as capitalized"; + variant "text 'bCP' as capitalized"; + variant "text 'bCQ' as capitalized"; + variant "text 'bCR' as capitalized"; + variant "text 'bCS' as capitalized"; + variant "text 'bCT' as capitalized"; + variant "text 'bCU' as capitalized"; + variant "text 'bCV' as capitalized"; + variant "text 'bCW' as capitalized"; + variant "text 'bCX' as capitalized"; + variant "text 'bCY' as capitalized"; + variant "text 'bCZ' as capitalized"; + variant "text 'bDA' as capitalized"; + variant "text 'bDB' as capitalized"; + variant "text 'bDC' as capitalized"; + variant "text 'bDD' as capitalized"; + variant "text 'bDE' as capitalized"; + variant "text 'bDF' as capitalized"; + variant "text 'bDG' as capitalized"; + variant "text 'bDH' as capitalized"; + variant "text 'bDI' as capitalized"; + variant "text 'bDJ' as capitalized"; + variant "text 'bDK' as capitalized"; + variant "text 'bDL' as capitalized"; + variant "text 'bDM' as capitalized"; + variant "text 'bDN' as capitalized"; + variant "text 'bDO' as capitalized"; + variant "text 'bDP' as capitalized"; + variant "text 'bDQ' as capitalized"; + variant "text 'bDR' as capitalized"; + variant "text 'bDS' as capitalized"; + variant "text 'bDT' as capitalized"; + variant "text 'bDU' as capitalized"; + variant "text 'bDV' as capitalized"; + variant "text 'bDW' as capitalized"; + variant "text 'bDX' as capitalized"; + variant "text 'bDY' as capitalized"; + variant "text 'bDZ' as capitalized"; + variant "text 'bEA' as capitalized"; + variant "text 'bEB' as capitalized"; + variant "text 'bEC' as capitalized"; + variant "text 'bED' as capitalized"; + variant "text 'bEE' as capitalized"; + variant "text 'bEF' as capitalized"; + variant "text 'bEG' as capitalized"; + variant "text 'bEH' as capitalized"; + variant "text 'bEI' as capitalized"; + variant "text 'bEJ' as capitalized"; + variant "text 'bEK' as capitalized"; + variant "text 'bEL' as capitalized"; + variant "text 'bEM' as capitalized"; + variant "text 'bEN' as capitalized"; + variant "text 'bEO' as capitalized"; + variant "text 'bEP' as capitalized"; + variant "text 'bEQ' as capitalized"; + variant "text 'bER' as capitalized"; + variant "text 'bES' as capitalized"; + variant "text 'bET' as capitalized"; + variant "text 'bEU' as capitalized"; + variant "text 'bEV' as capitalized"; + variant "text 'bEW' as capitalized"; + variant "text 'bEX' as capitalized"; + variant "text 'bEY' as capitalized"; + variant "text 'bEZ' as capitalized"; + variant "text 'bFA' as capitalized"; + variant "text 'bFB' as capitalized"; + variant "text 'bFC' as capitalized"; + variant "text 'bFD' as capitalized"; + variant "text 'bFE' as capitalized"; + variant "text 'bFF' as capitalized"; + variant "text 'bFG' as capitalized"; + variant "text 'bFH' as capitalized"; + variant "text 'bFI' as capitalized"; + variant "text 'bFJ' as capitalized"; + variant "text 'bFK' as capitalized"; + variant "text 'bFL' as capitalized"; + variant "text 'bFM' as capitalized"; + variant "text 'bFN' as capitalized"; + variant "text 'bFO' as capitalized"; + variant "text 'bFP' as capitalized"; + variant "text 'bFQ' as capitalized"; + variant "text 'bFR' as capitalized"; + variant "text 'bFS' as capitalized"; + variant "text 'bFT' as capitalized"; + variant "text 'bFU' as capitalized"; + variant "text 'bFV' as capitalized"; + variant "text 'bFW' as capitalized"; + variant "text 'bFX' as capitalized"; + variant "text 'bFY' as capitalized"; + variant "text 'bFZ' as capitalized"; + variant "text 'bGA' as capitalized"; + variant "text 'bGB' as capitalized"; + variant "text 'bGC' as capitalized"; + variant "text 'bGD' as capitalized"; + variant "text 'bGE' as capitalized"; + variant "text 'bGF' as capitalized"; + variant "text 'bGG' as capitalized"; + variant "text 'bGH' as capitalized"; + variant "text 'bGI' as capitalized"; + variant "text 'bGJ' as capitalized"; + variant "text 'bGK' as capitalized"; + variant "text 'bGL' as capitalized"; + variant "text 'bGM' as capitalized"; + variant "text 'bGN' as capitalized"; + variant "text 'bGO' as capitalized"; + variant "text 'bGP' as capitalized"; + variant "text 'bGQ' as capitalized"; + variant "text 'bGR' as capitalized"; + variant "text 'bGS' as capitalized"; + variant "text 'bGU' as capitalized"; + variant "text 'bGV' as capitalized"; + variant "text 'bGW' as capitalized"; + variant "text 'bGX' as capitalized"; + variant "text 'bGY' as capitalized"; + variant "text 'bGZ' as capitalized"; + variant "text 'bHA' as capitalized"; + variant "text 'bHB' as capitalized"; + variant "text 'bHC' as capitalized"; + variant "text 'bHD' as capitalized"; + variant "text 'bHE' as capitalized"; + variant "text 'bHF' as capitalized"; + variant "text 'bHG' as capitalized"; + variant "text 'bHH' as capitalized"; + variant "text 'bHI' as capitalized"; + variant "text 'bHJ' as capitalized"; + variant "text 'bHK' as capitalized"; + variant "text 'bHL' as capitalized"; + variant "text 'bHM' as capitalized"; + variant "text 'bHN' as capitalized"; + variant "text 'bHO' as capitalized"; + variant "text 'bHP' as capitalized"; + variant "text 'bHQ' as capitalized"; + variant "text 'bHS' as capitalized"; + variant "text 'bHT' as capitalized"; + variant "text 'bHU' as capitalized"; + variant "text 'bHV' as capitalized"; + variant "text 'bHW' as capitalized"; + variant "text 'bHX' as capitalized"; + variant "text 'bHY' as capitalized"; + variant "text 'bHZ' as capitalized"; + variant "text 'bIA' as capitalized"; + variant "text 'bIB' as capitalized"; + variant "text 'bIC' as capitalized"; + variant "text 'bID' as capitalized"; + variant "text 'bIE' as capitalized"; + variant "text 'bIF' as capitalized"; + variant "text 'bIG' as capitalized"; + variant "text 'bIH' as capitalized"; + variant "text 'bII' as capitalized"; + variant "text 'bIJ' as capitalized"; + variant "text 'bIK' as capitalized"; + variant "text 'bIL' as capitalized"; + variant "text 'bIM' as capitalized"; + variant "text 'bIN' as capitalized"; + variant "text 'bIO' as capitalized"; + variant "text 'bIP' as capitalized"; + variant "text 'bIQ' as capitalized"; + variant "text 'bIR' as capitalized"; + variant "text 'bIS' as capitalized"; + variant "text 'bIT' as capitalized"; + variant "text 'bIU' as capitalized"; + variant "text 'bIV' as capitalized"; + variant "text 'bIW' as capitalized"; + variant "text 'bIX' as capitalized"; + variant "text 'bIY' as capitalized"; + variant "text 'bJA' as capitalized"; + variant "text 'bJB' as capitalized"; + variant "text 'bJC' as capitalized"; + variant "text 'bJD' as capitalized"; + variant "text 'bJE' as capitalized"; + variant "text 'bJF' as capitalized"; + variant "text 'bJG' as capitalized"; + variant "text 'bJH' as capitalized"; + variant "text 'bJI' as capitalized"; + variant "text 'bJJ' as capitalized"; + variant "text 'bJK' as capitalized"; + variant "text 'bJL' as capitalized"; + variant "text 'bJM' as capitalized"; + variant "text 'bJN' as capitalized"; + variant "text 'bJO' as capitalized"; + variant "text 'bJP' as capitalized"; + variant "text 'bJQ' as capitalized"; + variant "text 'bJR' as capitalized"; + variant "text 'bJS' as capitalized"; + variant "text 'bJT' as capitalized"; + variant "text 'bJU' as capitalized"; + variant "text 'bJV' as capitalized"; + variant "text 'bJW' as capitalized"; + variant "text 'bJX' as capitalized"; + variant "text 'bJY' as capitalized"; + variant "text 'bJZ' as capitalized"; + variant "text 'bKA' as capitalized"; + variant "text 'bKB' as capitalized"; + variant "text 'bKC' as capitalized"; + variant "text 'bKD' as capitalized"; + variant "text 'bKE' as capitalized"; + variant "text 'bKF' as capitalized"; + variant "text 'bKG' as capitalized"; + variant "text 'bKH' as capitalized"; + variant "text 'bKI' as capitalized"; + variant "text 'bKJ' as capitalized"; + variant "text 'bKK' as capitalized"; + variant "text 'bKL' as capitalized"; + variant "text 'bKM' as capitalized"; + variant "text 'bKN' as capitalized"; + variant "text 'bKO' as capitalized"; + variant "text 'bKP' as capitalized"; + variant "text 'bKQ' as capitalized"; + variant "text 'bKR' as capitalized"; + variant "text 'bKS' as capitalized"; + variant "text 'bKT' as capitalized"; + variant "text 'bKU' as capitalized"; + variant "text 'bKV' as capitalized"; + variant "text 'bKW' as capitalized"; + variant "text 'bKX' as capitalized"; + variant "text 'bKY' as capitalized"; + variant "text 'bKZ' as capitalized"; + variant "text 'bLA' as capitalized"; + variant "text 'bLB' as capitalized"; + variant "text 'bLC' as capitalized"; + variant "text 'bLD' as capitalized"; + variant "text 'bLE' as capitalized"; + variant "text 'bLF' as capitalized"; + variant "text 'bLG' as capitalized"; + variant "text 'bLH' as capitalized"; + variant "text 'bLI' as capitalized"; + variant "text 'bLJ' as capitalized"; + variant "text 'bLK' as capitalized"; + variant "text 'bLL' as capitalized"; + variant "text 'bLM' as capitalized"; + variant "text 'bLN' as capitalized"; + variant "text 'bLO' as capitalized"; + variant "text 'bLP' as capitalized"; + variant "text 'bLQ' as capitalized"; + variant "text 'bLR' as capitalized"; + variant "text 'bLS' as capitalized"; + variant "text 'bLT' as capitalized"; + variant "text 'bLU' as capitalized"; + variant "text 'bLV' as capitalized"; + variant "text 'bLW' as capitalized"; + variant "text 'bLX' as capitalized"; + variant "text 'bLY' as capitalized"; + variant "text 'bMA' as capitalized"; + variant "text 'bMB' as capitalized"; + variant "text 'bMC' as capitalized"; + variant "text 'bMD' as capitalized"; + variant "text 'bME' as capitalized"; + variant "text 'bMF' as capitalized"; + variant "text 'bMG' as capitalized"; + variant "text 'bMH' as capitalized"; + variant "text 'bMI' as capitalized"; + variant "text 'bMJ' as capitalized"; + variant "text 'bMK' as capitalized"; + variant "text 'bML' as capitalized"; + variant "text 'bMM' as capitalized"; + variant "text 'bMN' as capitalized"; + variant "text 'bMO' as capitalized"; + variant "text 'bMP' as capitalized"; + variant "text 'bMQ' as capitalized"; + variant "text 'bMR' as capitalized"; + variant "text 'bMS' as capitalized"; + variant "text 'bMT' as capitalized"; + variant "text 'bMU' as capitalized"; + variant "text 'bMV' as capitalized"; + variant "text 'bMW' as capitalized"; + variant "text 'bMX' as capitalized"; + variant "text 'bMY' as capitalized"; + variant "text 'bMZ' as capitalized"; + variant "text 'bNA' as capitalized"; + variant "text 'bNB' as capitalized"; + variant "text 'bNC' as capitalized"; + variant "text 'bND' as capitalized"; + variant "text 'bNE' as capitalized"; + variant "text 'bNF' as capitalized"; + variant "text 'bNG' as capitalized"; + variant "text 'bNI' as capitalized"; + variant "text 'bNJ' as capitalized"; + variant "text 'bNK' as capitalized"; + variant "text 'bNL' as capitalized"; + variant "text 'bNM' as capitalized"; + variant "text 'bNN' as capitalized"; + variant "text 'bNO' as capitalized"; + variant "text 'bNP' as capitalized"; + variant "text 'bNQ' as capitalized"; + variant "text 'bNS' as capitalized"; + variant "text 'bNT' as capitalized"; + variant "text 'bNU' as capitalized"; + variant "text 'bNV' as capitalized"; + variant "text 'bNW' as capitalized"; + variant "text 'bNX' as capitalized"; + variant "text 'bNY' as capitalized"; + variant "text 'bNZ' as capitalized"; + variant "text 'bOA' as capitalized"; + variant "text 'bOB' as capitalized"; + variant "text 'bOC' as capitalized"; + variant "text 'bOD' as capitalized"; + variant "text 'bOE' as capitalized"; + variant "text 'bOF' as capitalized"; + variant "text 'bOG' as capitalized"; + variant "text 'bOH' as capitalized"; + variant "text 'bOI' as capitalized"; + variant "text 'bOJ' as capitalized"; + variant "text 'bOK' as capitalized"; + variant "text 'bOL' as capitalized"; + variant "text 'bOM' as capitalized"; + variant "text 'bON' as capitalized"; + variant "text 'bOO' as capitalized"; + variant "text 'bOP' as capitalized"; + variant "text 'bOQ' as capitalized"; + variant "text 'bOR' as capitalized"; + variant "text 'bOS' as capitalized"; + variant "text 'bOT' as capitalized"; + variant "text 'bOU' as capitalized"; + variant "text 'bOV' as capitalized"; + variant "text 'bOW' as capitalized"; + variant "text 'bOX' as capitalized"; + variant "text 'bOY' as capitalized"; + variant "text 'bPA' as capitalized"; + variant "text 'bPB' as capitalized"; + variant "text 'bPC' as capitalized"; + variant "text 'bPD' as capitalized"; + variant "text 'bPE' as capitalized"; + variant "text 'bPF' as capitalized"; + variant "text 'bPG' as capitalized"; + variant "text 'bPH' as capitalized"; + variant "text 'bPI' as capitalized"; + variant "text 'bPJ' as capitalized"; + variant "text 'bPK' as capitalized"; + variant "text 'bPL' as capitalized"; + variant "text 'bPM' as capitalized"; + variant "text 'bPN' as capitalized"; + variant "text 'bPO' as capitalized"; + variant "text 'bPP' as capitalized"; + variant "text 'bPQ' as capitalized"; + variant "text 'bPR' as capitalized"; + variant "text 'bPS' as capitalized"; + variant "text 'bPT' as capitalized"; + variant "text 'bPU' as capitalized"; + variant "text 'bPV' as capitalized"; + variant "text 'bPW' as capitalized"; + variant "text 'bPX' as capitalized"; + variant "text 'bPY' as capitalized"; + variant "text 'bPZ' as capitalized"; + variant "text 'bQA' as capitalized"; + variant "text 'bQB' as capitalized"; + variant "text 'bQC' as capitalized"; + variant "text 'bQD' as capitalized"; + variant "text 'bQE' as capitalized"; + variant "text 'bQF' as capitalized"; + variant "text 'bQG' as capitalized"; + variant "text 'bQH' as capitalized"; + variant "text 'bQI' as capitalized"; + variant "text 'bQJ' as capitalized"; + variant "text 'bQK' as capitalized"; + variant "text 'bQL' as capitalized"; + variant "text 'bQM' as capitalized"; + variant "text 'bQN' as capitalized"; + variant "text 'bQO' as capitalized"; + variant "text 'bQP' as capitalized"; + variant "text 'bQQ' as capitalized"; + variant "text 'bQR' as capitalized"; + variant "text 'bQS' as capitalized"; + variant "text 'bQT' as capitalized"; + variant "text 'bQU' as capitalized"; + variant "text 'bQV' as capitalized"; + variant "text 'bQW' as capitalized"; + variant "text 'bQX' as capitalized"; + variant "text 'bQY' as capitalized"; + variant "text 'bQZ' as capitalized"; + variant "text 'bRA' as capitalized"; + variant "text 'bRB' as capitalized"; + variant "text 'bRC' as capitalized"; + variant "text 'bRD' as capitalized"; + variant "text 'bRF' as capitalized"; + variant "text 'bRG' as capitalized"; + variant "text 'bRH' as capitalized"; + variant "text 'bRI' as capitalized"; + variant "text 'bRJ' as capitalized"; + variant "text 'bRK' as capitalized"; + variant "text 'bRL' as capitalized"; + variant "text 'bRM' as capitalized"; + variant "text 'bRN' as capitalized"; + variant "text 'bRO' as capitalized"; + variant "text 'bRP' as capitalized"; + variant "text 'bRR' as capitalized"; + variant "text 'bRS' as capitalized"; + variant "text 'bRT' as capitalized"; + variant "text 'bRU' as capitalized"; + variant "text 'bRV' as capitalized"; + variant "text 'bRW' as capitalized"; + variant "text 'bRX' as capitalized"; + variant "text 'bRY' as capitalized"; + variant "text 'bRZ' as capitalized"; + variant "text 'bSA' as capitalized"; + variant "text 'bSB' as capitalized"; + variant "text 'bSC' as capitalized"; + variant "text 'bSD' as capitalized"; + variant "text 'bSE' as capitalized"; + variant "text 'bSF' as capitalized"; + variant "text 'bSG' as capitalized"; + variant "text 'bSH' as capitalized"; + variant "text 'bSI' as capitalized"; + variant "text 'bSJ' as capitalized"; + variant "text 'bSK' as capitalized"; + variant "text 'bSL' as capitalized"; + variant "text 'bSM' as capitalized"; + variant "text 'bSN' as capitalized"; + variant "text 'bSO' as capitalized"; + variant "text 'bSP' as capitalized"; + variant "text 'bSQ' as capitalized"; + variant "text 'bSR' as capitalized"; + variant "text 'bSS' as capitalized"; + variant "text 'bST' as capitalized"; + variant "text 'bSU' as capitalized"; + variant "text 'bSV' as capitalized"; + variant "text 'bSW' as capitalized"; + variant "text 'bSX' as capitalized"; + variant "text 'bSY' as capitalized"; + variant "text 'bSZ' as capitalized"; + variant "text 'bTA' as capitalized"; + variant "text 'bTB' as capitalized"; + variant "text 'bTC' as capitalized"; + variant "text 'bTD' as capitalized"; + variant "text 'bTE' as capitalized"; + variant "text 'bTF' as capitalized"; + variant "text 'bTG' as capitalized"; + variant "text 'bTH' as capitalized"; + variant "text 'bTJ' as capitalized"; + variant "text 'bTK' as capitalized"; + variant "text 'bTL' as capitalized"; + variant "text 'bTM' as capitalized"; + variant "text 'bTN' as capitalized"; + variant "text 'bTO' as capitalized"; + variant "text 'bTP' as capitalized"; + variant "text 'bTQ' as capitalized"; + variant "text 'bTR' as capitalized"; + variant "text 'bTS' as capitalized"; + variant "text 'bTT' as capitalized"; + variant "text 'bTU' as capitalized"; + variant "text 'bTV' as capitalized"; + variant "text 'bTW' as capitalized"; + variant "text 'bTX' as capitalized"; + variant "text 'bTY' as capitalized"; + variant "text 'bTZ' as capitalized"; + variant "text 'bUA' as capitalized"; + variant "text 'bUB' as capitalized"; + variant "text 'bUC' as capitalized"; + variant "text 'bUD' as capitalized"; + variant "text 'bUE' as capitalized"; + variant "text 'bUF' as capitalized"; + variant "text 'bUG' as capitalized"; + variant "text 'bUH' as capitalized"; + variant "text 'bUI' as capitalized"; + variant "text 'bUJ' as capitalized"; + variant "text 'bUK' as capitalized"; + variant "text 'bUL' as capitalized"; + variant "text 'bUM' as capitalized"; + variant "text 'bUN' as capitalized"; + variant "text 'bUO' as capitalized"; + variant "text 'bUP' as capitalized"; + variant "text 'bUQ' as capitalized"; + variant "text 'bUR' as capitalized"; + variant "text 'bUS' as capitalized"; + variant "text 'bUT' as capitalized"; + variant "text 'bUU' as capitalized"; + variant "text 'bUV' as capitalized"; + variant "text 'bUW' as capitalized"; + variant "text 'bUX' as capitalized"; + variant "text 'bUY' as capitalized"; + variant "text 'bUZ' as capitalized"; + variant "text 'bVA' as capitalized"; + variant "text 'bVB' as capitalized"; + variant "text 'bVC' as capitalized"; + variant "text 'bVD' as capitalized"; + variant "text 'bVE' as capitalized"; + variant "text 'bVG' as capitalized"; + variant "text 'bVH' as capitalized"; + variant "text 'bVI' as capitalized"; + variant "text 'bVJ' as capitalized"; + variant "text 'bVK' as capitalized"; + variant "text 'bVL' as capitalized"; + variant "text 'bVN' as capitalized"; + variant "text 'bVO' as capitalized"; + variant "text 'bVP' as capitalized"; + variant "text 'bVQ' as capitalized"; + variant "text 'bVR' as capitalized"; + variant "text 'bVS' as capitalized"; + variant "text 'bVU' as capitalized"; + variant "text 'bVV' as capitalized"; + variant "text 'bVX' as capitalized"; + variant "text 'bVY' as capitalized"; + variant "text 'bVZ' as capitalized"; + variant "text 'bWA' as capitalized"; + variant "text 'bWB' as capitalized"; + variant "text 'bWC' as capitalized"; + variant "text 'bWD' as capitalized"; + variant "text 'bWE' as capitalized"; + variant "text 'bWF' as capitalized"; + variant "text 'bWH' as capitalized"; + variant "text 'bWI' as capitalized"; + variant "text 'bWJ' as capitalized"; + variant "text 'bWK' as capitalized"; + variant "text 'bWL' as capitalized"; + variant "text 'bWM' as capitalized"; + variant "text 'bWN' as capitalized"; + variant "text 'bWO' as capitalized"; + variant "text 'bWT' as capitalized"; + variant "text 'bWU' as capitalized"; + variant "text 'bWV' as capitalized"; + variant "text 'bWW' as capitalized"; + variant "text 'bWX' as capitalized"; + variant "text 'bWY' as capitalized"; + variant "text 'bWZ' as capitalized"; + variant "text 'bXA' as capitalized"; + variant "text 'bXB' as capitalized"; + variant "text 'bXC' as capitalized"; + variant "text 'bXD' as capitalized"; + variant "text 'bXF' as capitalized"; + variant "text 'bXH' as capitalized"; + variant "text 'bXK' as capitalized"; + variant "text 'bXM' as capitalized"; + variant "text 'bXN' as capitalized"; + variant "text 'bXX' as capitalized"; + variant "text 'bXY' as capitalized"; + variant "text 'bYA' as capitalized"; + variant "text 'bYB' as capitalized"; + variant "text 'bYC' as capitalized"; + variant "text 'bYD' as capitalized"; + variant "text 'bYE' as capitalized"; + variant "text 'bYF' as capitalized"; + variant "text 'bYG' as capitalized"; + variant "text 'bYH' as capitalized"; + variant "text 'bYI' as capitalized"; + variant "text 'bYJ' as capitalized"; + variant "text 'bYK' as capitalized"; + variant "text 'bYL' as capitalized"; + variant "text 'bYM' as capitalized"; + variant "text 'bYN' as capitalized"; + variant "text 'bYO' as capitalized"; + variant "text 'bYP' as capitalized"; + variant "text 'bYQ' as capitalized"; + variant "text 'bYR' as capitalized"; + variant "text 'bYS' as capitalized"; + variant "text 'bYT' as capitalized"; + variant "text 'bYU' as capitalized"; + variant "text 'bYV' as capitalized"; + variant "text 'bYW' as capitalized"; + variant "text 'bYX' as capitalized"; + variant "text 'bYY' as capitalized"; + variant "text 'bYZ' as capitalized"; + variant "text 'bZB' as capitalized"; + variant "text 'bZC' as capitalized"; + variant "text 'bZD' as capitalized"; + variant "text 'bZG' as capitalized"; + variant "text 'bZH' as capitalized"; + variant "text 'bZI' as capitalized"; + variant "text 'bZJ' as capitalized"; + variant "text 'bZM' as capitalized"; + variant "text 'bZN' as capitalized"; + variant "text 'bZS' as capitalized"; + variant "text 'bZV' as capitalized"; + variant "text 'bZW' as capitalized"; + variant "text 'bZX' as capitalized"; + variant "text 'cAA' as capitalized"; + variant "text 'cAB' as capitalized"; + variant "text 'cAC' as capitalized"; + variant "text 'cAD' as capitalized"; + variant "text 'cAE' as capitalized"; + variant "text 'cAF' as capitalized"; + variant "text 'cAG' as capitalized"; + variant "text 'cAH' as capitalized"; + variant "text 'cAI' as capitalized"; + variant "text 'cAJ' as capitalized"; + variant "text 'cAK' as capitalized"; + variant "text 'cAL' as capitalized"; + variant "text 'cAM' as capitalized"; + variant "text 'cAN' as capitalized"; + variant "text 'cAO' as capitalized"; + variant "text 'cAP' as capitalized"; + variant "text 'cAQ' as capitalized"; + variant "text 'cAR' as capitalized"; + variant "text 'cAS' as capitalized"; + variant "text 'cAT' as capitalized"; + variant "text 'cAU' as capitalized"; + variant "text 'cAV' as capitalized"; + variant "text 'cAW' as capitalized"; + variant "text 'cAX' as capitalized"; + variant "text 'cAY' as capitalized"; + variant "text 'cAZ' as capitalized"; + variant "text 'cBA' as capitalized"; + variant "text 'cBB' as capitalized"; + variant "text 'cBC' as capitalized"; + variant "text 'cBD' as capitalized"; + variant "text 'cBE' as capitalized"; + variant "text 'cBF' as capitalized"; + variant "text 'cBG' as capitalized"; + variant "text 'cBH' as capitalized"; + variant "text 'cBI' as capitalized"; + variant "text 'cBJ' as capitalized"; + variant "text 'cBK' as capitalized"; + variant "text 'cBM' as capitalized"; + variant "text 'cBN' as capitalized"; + variant "text 'cBO' as capitalized"; + variant "text 'cBP' as capitalized"; + variant "text 'cBQ' as capitalized"; + variant "text 'cBR' as capitalized"; + variant "text 'cBS' as capitalized"; + variant "text 'cBT' as capitalized"; + variant "text 'cBU' as capitalized"; + variant "text 'cBV' as capitalized"; + variant "text 'cBW' as capitalized"; + variant "text 'cBY' as capitalized"; + variant "text 'cBZ' as capitalized"; + variant "text 'cCA' as capitalized"; + variant "text 'cCB' as capitalized"; + variant "text 'cCC' as capitalized"; + variant "text 'cCD' as capitalized"; + variant "text 'cCE' as capitalized"; + variant "text 'cCF' as capitalized"; + variant "text 'cCG' as capitalized"; + variant "text 'cCI' as capitalized"; + variant "text 'cCJ' as capitalized"; + variant "text 'cCK' as capitalized"; + variant "text 'cCL' as capitalized"; + variant "text 'cCM' as capitalized"; + variant "text 'cCN' as capitalized"; + variant "text 'cCO' as capitalized"; + variant "text 'cCP' as capitalized"; + variant "text 'cCQ' as capitalized"; + variant "text 'cCR' as capitalized"; + variant "text 'cCS' as capitalized"; + variant "text 'cCT' as capitalized"; + variant "text 'cCU' as capitalized"; + variant "text 'cCV' as capitalized"; + variant "text 'cCW' as capitalized"; + variant "text 'cCX' as capitalized"; + variant "text 'cCY' as capitalized"; + variant "text 'cCZ' as capitalized"; + variant "text 'cDA' as capitalized"; + variant "text 'cDB' as capitalized"; + variant "text 'cDC' as capitalized"; + variant "text 'cDD' as capitalized"; + variant "text 'cDE' as capitalized"; + variant "text 'cDF' as capitalized"; + variant "text 'cDG' as capitalized"; + variant "text 'cDH' as capitalized"; + variant "text 'cDI' as capitalized"; + variant "text 'cDJ' as capitalized"; + variant "text 'cDK' as capitalized"; + variant "text 'cDL' as capitalized"; + variant "text 'cDM' as capitalized"; + variant "text 'cDN' as capitalized"; + variant "text 'cDO' as capitalized"; + variant "text 'cDP' as capitalized"; + variant "text 'cDQ' as capitalized"; + variant "text 'cDR' as capitalized"; + variant "text 'cDS' as capitalized"; + variant "text 'cDT' as capitalized"; + variant "text 'cDU' as capitalized"; + variant "text 'cDV' as capitalized"; + variant "text 'cDW' as capitalized"; + variant "text 'cDX' as capitalized"; + variant "text 'cDY' as capitalized"; + variant "text 'cDZ' as capitalized"; + variant "text 'cEA' as capitalized"; + variant "text 'cEB' as capitalized"; + variant "text 'cEC' as capitalized"; + variant "text 'cED' as capitalized"; + variant "text 'cEE' as capitalized"; + variant "text 'cEF' as capitalized"; + variant "text 'cEG' as capitalized"; + variant "text 'cEH' as capitalized"; + variant "text 'cEI' as capitalized"; + variant "text 'cEJ' as capitalized"; + variant "text 'cEK' as capitalized"; + variant "text 'cEL' as capitalized"; + variant "text 'cEM' as capitalized"; + variant "text 'cEN' as capitalized"; + variant "text 'cEO' as capitalized"; + variant "text 'cEP' as capitalized"; + variant "text 'cEQ' as capitalized"; + variant "text 'cER' as capitalized"; + variant "text 'cES' as capitalized"; + variant "text 'cET' as capitalized"; + variant "text 'cEU' as capitalized"; + variant "text 'cEV' as capitalized"; + variant "text 'cEW' as capitalized"; + variant "text 'cEX' as capitalized"; + variant "text 'cEY' as capitalized"; + variant "text 'cEZ' as capitalized"; + variant "text 'cFA' as capitalized"; + variant "text 'cFB' as capitalized"; + variant "text 'cFC' as capitalized"; + variant "text 'cFD' as capitalized"; + variant "text 'cFE' as capitalized"; + variant "text 'cFF' as capitalized"; + variant "text 'cFG' as capitalized"; + variant "text 'cFH' as capitalized"; + variant "text 'cFI' as capitalized"; + variant "text 'cFJ' as capitalized"; + variant "text 'cFK' as capitalized"; + variant "text 'cFL' as capitalized"; + variant "text 'cFM' as capitalized"; + variant "text 'cFN' as capitalized"; + variant "text 'cFO' as capitalized"; + variant "text 'cFP' as capitalized"; + variant "text 'cFQ' as capitalized"; + variant "text 'cFR' as capitalized"; + variant "text 'cFS' as capitalized"; + variant "text 'cFT' as capitalized"; + variant "text 'cFU' as capitalized"; + variant "text 'cFV' as capitalized"; + variant "text 'cFW' as capitalized"; + variant "text 'cFX' as capitalized"; + variant "text 'cFY' as capitalized"; + variant "text 'cFZ' as capitalized"; + variant "text 'cGA' as capitalized"; + variant "text 'cGB' as capitalized"; + variant "text 'cGC' as capitalized"; + variant "text 'cGD' as capitalized"; + variant "text 'cGE' as capitalized"; + variant "text 'cGF' as capitalized"; + variant "text 'cGG' as capitalized"; + variant "text 'cGH' as capitalized"; + variant "text 'cGI' as capitalized"; + variant "text 'cGJ' as capitalized"; + variant "text 'cGK' as capitalized"; + variant "text 'cGL' as capitalized"; + variant "text 'cGM' as capitalized"; + variant "text 'cGN' as capitalized"; + variant "text 'cGO' as capitalized"; + variant "text 'cGP' as capitalized"; + variant "text 'cGQ' as capitalized"; + variant "text 'cGR' as capitalized"; + variant "text 'cGS' as capitalized"; + variant "text 'cGT' as capitalized"; + variant "text 'cGU' as capitalized"; + variant "text 'cGV' as capitalized"; + variant "text 'cGW' as capitalized"; + variant "text 'cGX' as capitalized"; + variant "text 'cGY' as capitalized"; + variant "text 'cGZ' as capitalized"; + variant "text 'cHA' as capitalized"; + variant "text 'cHB' as capitalized"; + variant "text 'cHC' as capitalized"; + variant "text 'cHD' as capitalized"; + variant "text 'cHE' as capitalized"; + variant "text 'cHF' as capitalized"; + variant "text 'cHG' as capitalized"; + variant "text 'cHH' as capitalized"; + variant "text 'cHI' as capitalized"; + variant "text 'cHJ' as capitalized"; + variant "text 'cHK' as capitalized"; + variant "text 'cHL' as capitalized"; + variant "text 'cHM' as capitalized"; + variant "text 'cHO' as capitalized"; + variant "text 'cHP' as capitalized"; + variant "text 'cHQ' as capitalized"; + variant "text 'cHR' as capitalized"; + variant "text 'cHS' as capitalized"; + variant "text 'cHU' as capitalized"; + variant "text 'cHV' as capitalized"; + variant "text 'cHW' as capitalized"; + variant "text 'cHX' as capitalized"; + variant "text 'cHY' as capitalized"; + variant "text 'cHZ' as capitalized"; + variant "text 'cIA' as capitalized"; + variant "text 'cIB' as capitalized"; + variant "text 'cIC' as capitalized"; + variant "text 'cID' as capitalized"; + variant "text 'cIE' as capitalized"; + variant "text 'cIF' as capitalized"; + variant "text 'cIG' as capitalized"; + variant "text 'cIH' as capitalized"; + variant "text 'cII' as capitalized"; + variant "text 'cIJ' as capitalized"; + variant "text 'cIK' as capitalized"; + variant "text 'cIL' as capitalized"; + variant "text 'cIM' as capitalized"; + variant "text 'cIN' as capitalized"; + variant "text 'cIO' as capitalized"; + variant "text 'cIP' as capitalized"; + variant "text 'cIQ' as capitalized"; + variant "text 'cIR' as capitalized"; + variant "text 'cIS' as capitalized"; + variant "text 'cIT' as capitalized"; + variant "text 'cIU' as capitalized"; + variant "text 'cIV' as capitalized"; + variant "text 'cIW' as capitalized"; + variant "text 'cIX' as capitalized"; + variant "text 'cIY' as capitalized"; + variant "text 'cIZ' as capitalized"; + variant "text 'cJA' as capitalized"; + variant "text 'cJB' as capitalized"; + variant "text 'cJC' as capitalized"; + variant "text 'cJD' as capitalized"; + variant "text 'cJE' as capitalized"; + variant "text 'cJF' as capitalized"; + variant "text 'cJG' as capitalized"; + variant "text 'cJH' as capitalized"; + variant "text 'cJI' as capitalized"; + variant "text 'cJJ' as capitalized"; + variant "text 'cJK' as capitalized"; + variant "text 'cJL' as capitalized"; + variant "text 'cJM' as capitalized"; + variant "text 'cJN' as capitalized"; + variant "text 'cJO' as capitalized"; + variant "text 'cJP' as capitalized"; + variant "text 'cJQ' as capitalized"; + variant "text 'cJR' as capitalized"; + variant "text 'cJS' as capitalized"; + variant "text 'cJT' as capitalized"; + variant "text 'cJU' as capitalized"; + variant "text 'cJV' as capitalized"; + variant "text 'cJW' as capitalized"; + variant "text 'cJX' as capitalized"; + variant "text 'cJY' as capitalized"; + variant "text 'cJZ' as capitalized"; + variant "text 'cKA' as capitalized"; + variant "text 'cKC' as capitalized"; + variant "text 'cKD' as capitalized"; + variant "text 'cKE' as capitalized"; + variant "text 'cKF' as capitalized"; + variant "text 'cKG' as capitalized"; + variant "text 'cKH' as capitalized"; + variant "text 'cKI' as capitalized"; + variant "text 'cKJ' as capitalized"; + variant "text 'cKK' as capitalized"; + variant "text 'cKL' as capitalized"; + variant "text 'cKM' as capitalized"; + variant "text 'cKN' as capitalized"; + variant "text 'cKO' as capitalized"; + variant "text 'cKP' as capitalized"; + variant "text 'cKQ' as capitalized"; + variant "text 'cKR' as capitalized"; + variant "text 'cKS' as capitalized"; + variant "text 'cKT' as capitalized"; + variant "text 'cKU' as capitalized"; + variant "text 'cKV' as capitalized"; + variant "text 'cKW' as capitalized"; + variant "text 'cKX' as capitalized"; + variant "text 'cKY' as capitalized"; + variant "text 'cKZ' as capitalized"; + variant "text 'cLA' as capitalized"; + variant "text 'cLB' as capitalized"; + variant "text 'cLC' as capitalized"; + variant "text 'cLD' as capitalized"; + variant "text 'cLE' as capitalized"; + variant "text 'cLF' as capitalized"; + variant "text 'cLG' as capitalized"; + variant "text 'cLH' as capitalized"; + variant "text 'cLI' as capitalized"; + variant "text 'cLJ' as capitalized"; + variant "text 'cLK' as capitalized"; + variant "text 'cLL' as capitalized"; + variant "text 'cLM' as capitalized"; + variant "text 'cLN' as capitalized"; + variant "text 'cLO' as capitalized"; + variant "text 'cLP' as capitalized"; + variant "text 'cLQ' as capitalized"; + variant "text 'cLR' as capitalized"; + variant "text 'cLS' as capitalized"; + variant "text 'cLT' as capitalized"; + variant "text 'cLU' as capitalized"; + variant "text 'cLV' as capitalized"; + variant "text 'cLW' as capitalized"; + variant "text 'cLX' as capitalized"; + variant "text 'cLY' as capitalized"; + variant "text 'cLZ' as capitalized"; + variant "text 'cMA' as capitalized"; + variant "text 'cMB' as capitalized"; + variant "text 'cMC' as capitalized"; + variant "text 'cMD' as capitalized"; + variant "text 'cME' as capitalized"; + variant "text 'cMF' as capitalized"; + variant "text 'cMG' as capitalized"; + variant "text 'cMH' as capitalized"; + variant "text 'cMI' as capitalized"; + variant "text 'cMJ' as capitalized"; + variant "text 'cMK' as capitalized"; + variant "text 'cML' as capitalized"; + variant "text 'cMM' as capitalized"; + variant "text 'cMN' as capitalized"; + variant "text 'cMO' as capitalized"; + variant "text 'cMQ' as capitalized"; + variant "text 'cMR' as capitalized"; + variant "text 'cMS' as capitalized"; + variant "text 'cMT' as capitalized"; + variant "text 'cMU' as capitalized"; + variant "text 'cMV' as capitalized"; + variant "text 'cMW' as capitalized"; + variant "text 'cMX' as capitalized"; + variant "text 'cMY' as capitalized"; + variant "text 'cMZ' as capitalized"; + variant "text 'cNA' as capitalized"; + variant "text 'cNB' as capitalized"; + variant "text 'cNC' as capitalized"; + variant "text 'cND' as capitalized"; + variant "text 'cNE' as capitalized"; + variant "text 'cNF' as capitalized"; + variant "text 'cNG' as capitalized"; + variant "text 'cNH' as capitalized"; + variant "text 'cNI' as capitalized"; + variant "text 'cNJ' as capitalized"; + variant "text 'cNK' as capitalized"; + variant "text 'cNL' as capitalized"; + variant "text 'cNM' as capitalized"; + variant "text 'cNN' as capitalized"; + variant "text 'cNO' as capitalized"; + variant "text 'cNP' as capitalized"; + variant "text 'cNQ' as capitalized"; + variant "text 'cNR' as capitalized"; + variant "text 'cNS' as capitalized"; + variant "text 'cNT' as capitalized"; + variant "text 'cNU' as capitalized"; + variant "text 'cNW' as capitalized"; + variant "text 'cNX' as capitalized"; + variant "text 'cNY' as capitalized"; + variant "text 'cNZ' as capitalized"; + variant "text 'cOA' as capitalized"; + variant "text 'cOB' as capitalized"; + variant "text 'cOC' as capitalized"; + variant "text 'cOD' as capitalized"; + variant "text 'cOE' as capitalized"; + variant "text 'cOF' as capitalized"; + variant "text 'cOG' as capitalized"; + variant "text 'cOH' as capitalized"; + variant "text 'cOI' as capitalized"; + variant "text 'cOJ' as capitalized"; + variant "text 'cOK' as capitalized"; + variant "text 'cOL' as capitalized"; + variant "text 'cOM' as capitalized"; + variant "text 'cON' as capitalized"; + variant "text 'cOO' as capitalized"; + variant "text 'cOQ' as capitalized"; + variant "text 'cOR' as capitalized"; + variant "text 'cOS' as capitalized"; + variant "text 'cOT' as capitalized"; + variant "text 'cOU' as capitalized"; + variant "text 'cOV' as capitalized"; + variant "text 'cOW' as capitalized"; + variant "text 'cOX' as capitalized"; + variant "text 'cOY' as capitalized"; + variant "text 'cOZ' as capitalized"; + variant "text 'cPA' as capitalized"; + variant "text 'cPB' as capitalized"; + variant "text 'cPC' as capitalized"; + variant "text 'cPD' as capitalized"; + variant "text 'cPE' as capitalized"; + variant "text 'cPF' as capitalized"; + variant "text 'cPG' as capitalized"; + variant "text 'cPH' as capitalized"; + variant "text 'cPI' as capitalized"; + variant "text 'cPJ' as capitalized"; + variant "text 'cPK' as capitalized"; + variant "text 'cPL' as capitalized"; + variant "text 'cPM' as capitalized"; + variant "text 'cPN' as capitalized"; + variant "text 'cPO' as capitalized"; + variant "text 'cPP' as capitalized"; + variant "text 'cPQ' as capitalized"; + variant "text 'cPR' as capitalized"; + variant "text 'cPS' as capitalized"; + variant "text 'cPT' as capitalized"; + variant "text 'cPU' as capitalized"; + variant "text 'cPV' as capitalized"; + variant "text 'cPW' as capitalized"; + variant "text 'cPX' as capitalized"; + variant "text 'cPY' as capitalized"; + variant "text 'cPZ' as capitalized"; + variant "text 'cQA' as capitalized"; + variant "text 'cQB' as capitalized"; + variant "text 'cQC' as capitalized"; + variant "text 'cQD' as capitalized"; + variant "text 'cQE' as capitalized"; + variant "text 'cQF' as capitalized"; + variant "text 'cQG' as capitalized"; + variant "text 'cQH' as capitalized"; + variant "text 'cQI' as capitalized"; + variant "text 'cQJ' as capitalized"; + variant "text 'cQK' as capitalized"; + variant "text 'cQL' as capitalized"; + variant "text 'cQM' as capitalized"; + variant "text 'cQN' as capitalized"; + variant "text 'cQO' as capitalized"; + variant "text 'cQP' as capitalized"; + variant "text 'cQQ' as capitalized"; + variant "text 'cQR' as capitalized"; + variant "text 'cQS' as capitalized"; + variant "text 'cQT' as capitalized"; + variant "text 'cQU' as capitalized"; + variant "text 'cQV' as capitalized"; + variant "text 'cQW' as capitalized"; + variant "text 'cQX' as capitalized"; + variant "text 'cQY' as capitalized"; + variant "text 'cQZ' as capitalized"; + variant "text 'cRA' as capitalized"; + variant "text 'cRB' as capitalized"; + variant "text 'cRC' as capitalized"; + variant "text 'cRD' as capitalized"; + variant "text 'cRE' as capitalized"; + variant "text 'cRF' as capitalized"; + variant "text 'cRG' as capitalized"; + variant "text 'cRH' as capitalized"; + variant "text 'cRI' as capitalized"; + variant "text 'cRJ' as capitalized"; + variant "text 'cRK' as capitalized"; + variant "text 'cRL' as capitalized"; + variant "text 'cRN' as capitalized"; + variant "text 'cRO' as capitalized"; + variant "text 'cRP' as capitalized"; + variant "text 'cRQ' as capitalized"; + variant "text 'cRR' as capitalized"; + variant "text 'cRS' as capitalized"; + variant "text 'cRT' as capitalized"; + variant "text 'cRU' as capitalized"; + variant "text 'cRV' as capitalized"; + variant "text 'cRW' as capitalized"; + variant "text 'cRX' as capitalized"; + variant "text 'cRY' as capitalized"; + variant "text 'cRZ' as capitalized"; + variant "text 'cSA' as capitalized"; + variant "text 'cSC' as capitalized"; + variant "text 'cSD' as capitalized"; + variant "text 'cSE' as capitalized"; + variant "text 'cSF' as capitalized"; + variant "text 'cSG' as capitalized"; + variant "text 'cSH' as capitalized"; + variant "text 'cSI' as capitalized"; + variant "text 'cSJ' as capitalized"; + variant "text 'cSK' as capitalized"; + variant "text 'cSL' as capitalized"; + variant "text 'cSM' as capitalized"; + variant "text 'cSN' as capitalized"; + variant "text 'cSO' as capitalized"; + variant "text 'cSP' as capitalized"; + variant "text 'cSQ' as capitalized"; + variant "text 'cSR' as capitalized"; + variant "text 'cSS' as capitalized"; + variant "text 'cST' as capitalized"; + variant "text 'cSU' as capitalized"; + variant "text 'cSV' as capitalized"; + variant "text 'cSW' as capitalized"; + variant "text 'cSX' as capitalized"; + variant "text 'cSY' as capitalized"; + variant "text 'cSZ' as capitalized"; + variant "text 'cTA' as capitalized"; + variant "text 'cTB' as capitalized"; + variant "text 'cTC' as capitalized"; + variant "text 'cTD' as capitalized"; + variant "text 'cTE' as capitalized"; + variant "text 'cTF' as capitalized"; + variant "text 'cTG' as capitalized"; + variant "text 'cTH' as capitalized"; + variant "text 'cTI' as capitalized"; + variant "text 'cTJ' as capitalized"; + variant "text 'cTK' as capitalized"; + variant "text 'cTL' as capitalized"; + variant "text 'cTM' as capitalized"; + variant "text 'cTN' as capitalized"; + variant "text 'cTO' as capitalized"; + variant "text 'cTP' as capitalized"; + variant "text 'cTQ' as capitalized"; + variant "text 'cTR' as capitalized"; + variant "text 'cTS' as capitalized"; + variant "text 'cTT' as capitalized"; + variant "text 'cTU' as capitalized"; + variant "text 'cTV' as capitalized"; + variant "text 'cTW' as capitalized"; + variant "text 'cTX' as capitalized"; + variant "text 'cTY' as capitalized"; + variant "text 'cTZ' as capitalized"; + variant "text 'cUA' as capitalized"; + variant "text 'cUB' as capitalized"; + variant "text 'cUC' as capitalized"; + variant "text 'cUD' as capitalized"; + variant "text 'cUE' as capitalized"; + variant "text 'cUF' as capitalized"; + variant "text 'cUG' as capitalized"; + variant "text 'cUH' as capitalized"; + variant "text 'cUI' as capitalized"; + variant "text 'cUJ' as capitalized"; + variant "text 'cUK' as capitalized"; + variant "text 'cUL' as capitalized"; + variant "text 'cUM' as capitalized"; + variant "text 'cUN' as capitalized"; + variant "text 'cUO' as capitalized"; + variant "text 'cUP' as capitalized"; + variant "text 'cUQ' as capitalized"; + variant "text 'cUR' as capitalized"; + variant "text 'cUS' as capitalized"; + variant "text 'cUT' as capitalized"; + variant "text 'cUU' as capitalized"; + variant "text 'cUV' as capitalized"; + variant "text 'cUW' as capitalized"; + variant "text 'cUX' as capitalized"; + variant "text 'cUY' as capitalized"; + variant "text 'cUZ' as capitalized"; + variant "text 'cVA' as capitalized"; + variant "text 'cVB' as capitalized"; + variant "text 'cVC' as capitalized"; + variant "text 'cVD' as capitalized"; + variant "text 'cVE' as capitalized"; + variant "text 'cVF' as capitalized"; + variant "text 'cVG' as capitalized"; + variant "text 'cVH' as capitalized"; + variant "text 'cVI' as capitalized"; + variant "text 'cVJ' as capitalized"; + variant "text 'cVK' as capitalized"; + variant "text 'cVL' as capitalized"; + variant "text 'cVM' as capitalized"; + variant "text 'cVN' as capitalized"; + variant "text 'cVO' as capitalized"; + variant "text 'cVP' as capitalized"; + variant "text 'cVQ' as capitalized"; + variant "text 'cVR' as capitalized"; + variant "text 'cVS' as capitalized"; + variant "text 'cVT' as capitalized"; + variant "text 'cVU' as capitalized"; + variant "text 'cVV' as capitalized"; + variant "text 'cVW' as capitalized"; + variant "text 'cVX' as capitalized"; + variant "text 'cVY' as capitalized"; + variant "text 'cVZ' as capitalized"; + variant "text 'cWA' as capitalized"; + variant "text 'cWB' as capitalized"; + variant "text 'cWC' as capitalized"; + variant "text 'cWD' as capitalized"; + variant "text 'cWE' as capitalized"; + variant "text 'cWG' as capitalized"; + variant "text 'cWH' as capitalized"; + variant "text 'cWI' as capitalized"; + variant "text 'cWJ' as capitalized"; + variant "text 'cWK' as capitalized"; + variant "text 'cWL' as capitalized"; + variant "text 'cWM' as capitalized"; + variant "text 'cWN' as capitalized"; + variant "text 'cWO' as capitalized"; + variant "text 'cWQ' as capitalized"; + variant "text 'cWR' as capitalized"; + variant "text 'cWS' as capitalized"; + variant "text 'cWT' as capitalized"; + variant "text 'cWU' as capitalized"; + variant "text 'cWV' as capitalized"; + variant "text 'cWX' as capitalized"; + variant "text 'cWY' as capitalized"; + variant "text 'cWZ' as capitalized"; + variant "text 'cXA' as capitalized"; + variant "text 'cXB' as capitalized"; + variant "text 'cXC' as capitalized"; + variant "text 'cXD' as capitalized"; + variant "text 'cXE' as capitalized"; + variant "text 'cXF' as capitalized"; + variant "text 'cXG' as capitalized"; + variant "text 'cXH' as capitalized"; + variant "text 'cXI' as capitalized"; + variant "text 'cXJ' as capitalized"; + variant "text 'cXK' as capitalized"; + variant "text 'cXL' as capitalized"; + variant "text 'cXM' as capitalized"; + variant "text 'cXN' as capitalized"; + variant "text 'cXO' as capitalized"; + variant "text 'cXP' as capitalized"; + variant "text 'cXQ' as capitalized"; + variant "text 'cXR' as capitalized"; + variant "text 'cXS' as capitalized"; + variant "text 'cXT' as capitalized"; + variant "text 'cXU' as capitalized"; + variant "text 'cXW' as capitalized"; + variant "text 'cXY' as capitalized"; + variant "text 'cXZ' as capitalized"; + variant "text 'cYA' as capitalized"; + variant "text 'cYB' as capitalized"; + variant "text 'cYC' as capitalized"; + variant "text 'cYD' as capitalized"; + variant "text 'cYE' as capitalized"; + variant "text 'cYF' as capitalized"; + variant "text 'cYG' as capitalized"; + variant "text 'cYH' as capitalized"; + variant "text 'cYI' as capitalized"; + variant "text 'cYJ' as capitalized"; + variant "text 'cYK' as capitalized"; + variant "text 'cYL' as capitalized"; + variant "text 'cYM' as capitalized"; + variant "text 'cYN' as capitalized"; + variant "text 'cYO' as capitalized"; + variant "text 'cYP' as capitalized"; + variant "text 'cYR' as capitalized"; + variant "text 'cYS' as capitalized"; + variant "text 'cYT' as capitalized"; + variant "text 'cYU' as capitalized"; + variant "text 'cYV' as capitalized"; + variant "text 'cYW' as capitalized"; + variant "text 'cYX' as capitalized"; + variant "text 'cYY' as capitalized"; + variant "text 'cYZ' as capitalized"; + variant "text 'cZA' as capitalized"; + variant "text 'cZC' as capitalized"; + variant "text 'cZD' as capitalized"; + variant "text 'cZE' as capitalized"; + variant "text 'cZF' as capitalized"; + variant "text 'cZG' as capitalized"; + variant "text 'cZH' as capitalized"; + variant "text 'cZI' as capitalized"; + variant "text 'cZJ' as capitalized"; + variant "text 'cZK' as capitalized"; + variant "text 'cZL' as capitalized"; + variant "text 'cZM' as capitalized"; + variant "text 'cZN' as capitalized"; + variant "text 'cZP' as capitalized"; + variant "text 'cZQ' as capitalized"; + variant "text 'cZS' as capitalized"; + variant "text 'cZT' as capitalized"; + variant "text 'cZW' as capitalized"; + variant "text 'cZX' as capitalized"; + variant "text 'cZY' as capitalized"; + variant "text 'dAA' as capitalized"; + variant "text 'dAB' as capitalized"; + variant "text 'dAC' as capitalized"; + variant "text 'dAD' as capitalized"; + variant "text 'dAE' as capitalized"; + variant "text 'dAF' as capitalized"; + variant "text 'dAG' as capitalized"; + variant "text 'dAH' as capitalized"; + variant "text 'dAI' as capitalized"; + variant "text 'dAJ' as capitalized"; + variant "text 'dAK' as capitalized"; + variant "text 'dAL' as capitalized"; + variant "text 'dAM' as capitalized"; + variant "text 'dAO' as capitalized"; + variant "text 'dAP' as capitalized"; + variant "text 'dAQ' as capitalized"; + variant "text 'dAR' as capitalized"; + variant "text 'dAS' as capitalized"; + variant "text 'dAT' as capitalized"; + variant "text 'dAU' as capitalized"; + variant "text 'dAV' as capitalized"; + variant "text 'dAW' as capitalized"; + variant "text 'dAX' as capitalized"; + variant "text 'dAY' as capitalized"; + variant "text 'dAZ' as capitalized"; + variant "text 'dBA' as capitalized"; + variant "text 'dBB' as capitalized"; + variant "text 'dBC' as capitalized"; + variant "text 'dBD' as capitalized"; + variant "text 'dBE' as capitalized"; + variant "text 'dBF' as capitalized"; + variant "text 'dBG' as capitalized"; + variant "text 'dBH' as capitalized"; + variant "text 'dBI' as capitalized"; + variant "text 'dBJ' as capitalized"; + variant "text 'dBK' as capitalized"; + variant "text 'dBL' as capitalized"; + variant "text 'dBM' as capitalized"; + variant "text 'dBN' as capitalized"; + variant "text 'dBO' as capitalized"; + variant "text 'dBP' as capitalized"; + variant "text 'dBQ' as capitalized"; + variant "text 'dBR' as capitalized"; + variant "text 'dBS' as capitalized"; + variant "text 'dBT' as capitalized"; + variant "text 'dBU' as capitalized"; + variant "text 'dBV' as capitalized"; + variant "text 'dBW' as capitalized"; + variant "text 'dBY' as capitalized"; + variant "text 'dBZ' as capitalized"; + variant "text 'dCA' as capitalized"; + variant "text 'dCC' as capitalized"; + variant "text 'dCD' as capitalized"; + variant "text 'dCE' as capitalized"; + variant "text 'dCF' as capitalized"; + variant "text 'dCG' as capitalized"; + variant "text 'dCI' as capitalized"; + variant "text 'dCJ' as capitalized"; + variant "text 'dCK' as capitalized"; + variant "text 'dCL' as capitalized"; + variant "text 'dCM' as capitalized"; + variant "text 'dCN' as capitalized"; + variant "text 'dCO' as capitalized"; + variant "text 'dCP' as capitalized"; + variant "text 'dCQ' as capitalized"; + variant "text 'dCR' as capitalized"; + variant "text 'dCS' as capitalized"; + variant "text 'dCT' as capitalized"; + variant "text 'dCU' as capitalized"; + variant "text 'dCV' as capitalized"; + variant "text 'dCX' as capitalized"; + variant "text 'dCY' as capitalized"; + variant "text 'dCZ' as capitalized"; + variant "text 'dDA' as capitalized"; + variant "text 'dDB' as capitalized"; + variant "text 'dDC' as capitalized"; + variant "text 'dDD' as capitalized"; + variant "text 'dDE' as capitalized"; + variant "text 'dDF' as capitalized"; + variant "text 'dDG' as capitalized"; + variant "text 'dDI' as capitalized"; + variant "text 'dDK' as capitalized"; + variant "text 'dDL' as capitalized"; + variant "text 'dDM' as capitalized"; + variant "text 'dDN' as capitalized"; + variant "text 'dDO' as capitalized"; + variant "text 'dDP' as capitalized"; + variant "text 'dDS' as capitalized"; + variant "text 'dDU' as capitalized"; + variant "text 'dDX' as capitalized"; + variant "text 'dDY' as capitalized"; + variant "text 'dDZ' as capitalized"; + variant "text 'dEA' as capitalized"; + variant "text 'dEB' as capitalized"; + variant "text 'dEC' as capitalized"; + variant "text 'dED' as capitalized"; + variant "text 'dEE' as capitalized"; + variant "text 'dEG' as capitalized"; + variant "text 'dEI' as capitalized"; + variant "text 'dEJ' as capitalized"; + variant "text 'dEL' as capitalized"; + variant "text 'dEM' as capitalized"; + variant "text 'dEN' as capitalized"; + variant "text 'dEP' as capitalized"; + variant "text 'dEQ' as capitalized"; + variant "text 'dER' as capitalized"; + variant "text 'dES' as capitalized"; + variant "text 'dET' as capitalized"; + variant "text 'dEU' as capitalized"; + variant "text 'dEV' as capitalized"; + variant "text 'dEX' as capitalized"; + variant "text 'dFA' as capitalized"; + variant "text 'dFB' as capitalized"; + variant "text 'dFC' as capitalized"; + variant "text 'dFD' as capitalized"; + variant "text 'dFE' as capitalized"; + variant "text 'dFF' as capitalized"; + variant "text 'dFG' as capitalized"; + variant "text 'dFH' as capitalized"; + variant "text 'dFI' as capitalized"; + variant "text 'dFJ' as capitalized"; + variant "text 'dFK' as capitalized"; + variant "text 'dFL' as capitalized"; + variant "text 'dFM' as capitalized"; + variant "text 'dFN' as capitalized"; + variant "text 'dFO' as capitalized"; + variant "text 'dFP' as capitalized"; + variant "text 'dFQ' as capitalized"; + variant "text 'dFR' as capitalized"; + variant "text 'dFS' as capitalized"; + variant "text 'dFT' as capitalized"; + variant "text 'dFU' as capitalized"; + variant "text 'dFV' as capitalized"; + variant "text 'dFX' as capitalized"; + variant "text 'dFY' as capitalized"; + variant "text 'dFZ' as capitalized"; + variant "text 'dGA' as capitalized"; + variant "text 'dGB' as capitalized"; + variant "text 'dGC' as capitalized"; + variant "text 'dGG' as capitalized"; + variant "text 'dGH' as capitalized"; + variant "text 'dGM' as capitalized"; + variant "text 'dGP' as capitalized"; + variant "text 'dGQ' as capitalized"; + variant "text 'dGS' as capitalized"; + variant "text 'dGT' as capitalized"; + variant "text 'dGV' as capitalized"; + variant "text 'dGW' as capitalized"; + variant "text 'dGX' as capitalized"; + variant "text 'dGY' as capitalized"; + variant "text 'dGZ' as capitalized"; + variant "text 'dHA' as capitalized"; + variant "text 'dHB' as capitalized"; + variant "text 'dHC' as capitalized"; + variant "text 'dHD' as capitalized"; + variant "text 'dHE' as capitalized"; + variant "text 'dHF' as capitalized"; + variant "text 'dHG' as capitalized"; + variant "text 'dHH' as capitalized"; + variant "text 'dHI' as capitalized"; + variant "text 'dHJ' as capitalized"; + variant "text 'dHK' as capitalized"; + variant "text 'dHL' as capitalized"; + variant "text 'dHM' as capitalized"; + variant "text 'dHN' as capitalized"; + variant "text 'dHO' as capitalized"; + variant "text 'dHP' as capitalized"; + variant "text 'dHQ' as capitalized"; + variant "text 'dHR' as capitalized"; + variant "text 'dHS' as capitalized"; + variant "text 'dHT' as capitalized"; + variant "text 'dHU' as capitalized"; + variant "text 'dHV' as capitalized"; + variant "text 'dHW' as capitalized"; + variant "text 'dHX' as capitalized"; + variant "text 'dHY' as capitalized"; + variant "text 'dHZ' as capitalized"; + variant "text 'dIA' as capitalized"; + variant "text 'dIB' as capitalized"; + variant "text 'dIC' as capitalized"; + variant "text 'dID' as capitalized"; + variant "text 'dIE' as capitalized"; + variant "text 'dIF' as capitalized"; + variant "text 'dIG' as capitalized"; + variant "text 'dIH' as capitalized"; + variant "text 'dII' as capitalized"; + variant "text 'dIJ' as capitalized"; + variant "text 'dIK' as capitalized"; + variant "text 'dIL' as capitalized"; + variant "text 'dIM' as capitalized"; + variant "text 'dIN' as capitalized"; + variant "text 'dIO' as capitalized"; + variant "text 'dIP' as capitalized"; + variant "text 'dIQ' as capitalized"; + variant "text 'dIR' as capitalized"; + variant "text 'dIT' as capitalized"; + variant "text 'dIU' as capitalized"; + variant "text 'dIV' as capitalized"; + variant "text 'dIW' as capitalized"; + variant "text 'dIX' as capitalized"; + variant "text 'dIY' as capitalized"; + variant "text 'dIZ' as capitalized"; + variant "text 'dJA' as capitalized"; + variant "text 'dJB' as capitalized"; + variant "text 'dJC' as capitalized"; + variant "text 'dJD' as capitalized"; + variant "text 'dJE' as capitalized"; + variant "text 'dJF' as capitalized"; + variant "text 'dJG' as capitalized"; + variant "text 'dJH' as capitalized"; + variant "text 'dJI' as capitalized"; + variant "text 'dJJ' as capitalized"; + variant "text 'dJK' as capitalized"; + variant "text 'dJL' as capitalized"; + variant "text 'dJM' as capitalized"; + variant "text 'dJN' as capitalized"; + variant "text 'dJO' as capitalized"; + variant "text 'dJP' as capitalized"; + variant "text 'dJQ' as capitalized"; + variant "text 'dJR' as capitalized"; + variant "text 'dJS' as capitalized"; + variant "text 'dJU' as capitalized"; + variant "text 'dJV' as capitalized"; + variant "text 'dJX' as capitalized"; + variant "text 'dKB' as capitalized"; + variant "text 'dKC' as capitalized"; + variant "text 'dKD' as capitalized"; + variant "text 'dKF' as capitalized"; + variant "text 'dKI' as capitalized"; + variant "text 'dKJ' as capitalized"; + variant "text 'dKK' as capitalized"; + variant "text 'dKN' as capitalized"; + variant "text 'dKP' as capitalized"; + variant "text 'dKR' as capitalized"; + variant "text 'dKS' as capitalized"; + variant "text 'dKT' as capitalized"; + variant "text 'dKU' as capitalized"; + variant "text 'dKV' as capitalized"; + variant "text 'dKW' as capitalized"; + variant "text 'dKX' as capitalized"; + variant "text 'dKY' as capitalized"; + variant "text 'dKZ' as capitalized"; + variant "text 'dLA' as capitalized"; + variant "text 'dLB' as capitalized"; + variant "text 'dLC' as capitalized"; + variant "text 'dLD' as capitalized"; + variant "text 'dLE' as capitalized"; + variant "text 'dLF' as capitalized"; + variant "text 'dLG' as capitalized"; + variant "text 'dLH' as capitalized"; + variant "text 'dLI' as capitalized"; + variant "text 'dLJ' as capitalized"; + variant "text 'dLL' as capitalized"; + variant "text 'dLM' as capitalized"; + variant "text 'dLN' as capitalized"; + variant "text 'dLP' as capitalized"; + variant "text 'dLQ' as capitalized"; + variant "text 'dLS' as capitalized"; + variant "text 'dLT' as capitalized"; + variant "text 'dLU' as capitalized"; + variant "text 'dLW' as capitalized"; + variant "text 'dLX' as capitalized"; + variant "text 'dMA' as capitalized"; + variant "text 'dMB' as capitalized"; + variant "text 'dMC' as capitalized"; + variant "text 'dMD' as capitalized"; + variant "text 'dME' as capitalized"; + variant "text 'dMF' as capitalized"; + variant "text 'dMG' as capitalized"; + variant "text 'dMH' as capitalized"; + variant "text 'dMJ' as capitalized"; + variant "text 'dMK' as capitalized"; + variant "text 'dMM' as capitalized"; + variant "text 'dMO' as capitalized"; + variant "text 'dMS' as capitalized"; + variant "text 'dMT' as capitalized"; + variant "text 'dMU' as capitalized"; + variant "text 'dMV' as capitalized"; + variant "text 'dMW' as capitalized"; + variant "text 'dMX' as capitalized"; + variant "text 'dMY' as capitalized"; + variant "text 'dNA' as capitalized"; + variant "text 'dNB' as capitalized"; + variant "text 'dNC' as capitalized"; + variant "text 'dND' as capitalized"; + variant "text 'dNE' as capitalized"; + variant "text 'dNF' as capitalized"; + variant "text 'dNG' as capitalized"; + variant "text 'dNH' as capitalized"; + variant "text 'dNI' as capitalized"; + variant "text 'dNJ' as capitalized"; + variant "text 'dNK' as capitalized"; + variant "text 'dNL' as capitalized"; + variant "text 'dNM' as capitalized"; + variant "text 'dNN' as capitalized"; + variant "text 'dNO' as capitalized"; + variant "text 'dNP' as capitalized"; + variant "text 'dNR' as capitalized"; + variant "text 'dNS' as capitalized"; + variant "text 'dNT' as capitalized"; + variant "text 'dNU' as capitalized"; + variant "text 'dNV' as capitalized"; + variant "text 'dNW' as capitalized"; + variant "text 'dNX' as capitalized"; + variant "text 'dNY' as capitalized"; + variant "text 'dOA' as capitalized"; + variant "text 'dOB' as capitalized"; + variant "text 'dOC' as capitalized"; + variant "text 'dOD' as capitalized"; + variant "text 'dOE' as capitalized"; + variant "text 'dOF' as capitalized"; + variant "text 'dOG' as capitalized"; + variant "text 'dOH' as capitalized"; + variant "text 'dOI' as capitalized"; + variant "text 'dOL' as capitalized"; + variant "text 'dOM' as capitalized"; + variant "text 'dON' as capitalized"; + variant "text 'dOO' as capitalized"; + variant "text 'dOP' as capitalized"; + variant "text 'dOR' as capitalized"; + variant "text 'dOS' as capitalized"; + variant "text 'dOT' as capitalized"; + variant "text 'dOU' as capitalized"; + variant "text 'dOV' as capitalized"; + variant "text 'dOX' as capitalized"; + variant "text 'dPA' as capitalized"; + variant "text 'dPB' as capitalized"; + variant "text 'dPC' as capitalized"; + variant "text 'dPD' as capitalized"; + variant "text 'dPE' as capitalized"; + variant "text 'dPF' as capitalized"; + variant "text 'dPG' as capitalized"; + variant "text 'dPH' as capitalized"; + variant "text 'dPI' as capitalized"; + variant "text 'dPJ' as capitalized"; + variant "text 'dPK' as capitalized"; + variant "text 'dPL' as capitalized"; + variant "text 'dPM' as capitalized"; + variant "text 'dPN' as capitalized"; + variant "text 'dPO' as capitalized"; + variant "text 'dPP' as capitalized"; + variant "text 'dPQ' as capitalized"; + variant "text 'dPR' as capitalized"; + variant "text 'dPS' as capitalized"; + variant "text 'dPT' as capitalized"; + variant "text 'dPU' as capitalized"; + variant "text 'dPV' as capitalized"; + variant "text 'dPX' as capitalized"; + variant "text 'dPY' as capitalized"; + variant "text 'dPZ' as capitalized"; + variant "text 'dQA' as capitalized"; + variant "text 'dQB' as capitalized"; + variant "text 'dQC' as capitalized"; + variant "text 'dQD' as capitalized"; + variant "text 'dQM' as capitalized"; + variant "text 'dQS' as capitalized"; + variant "text 'dQX' as capitalized"; + variant "text 'dRB' as capitalized"; + variant "text 'dRC' as capitalized"; + variant "text 'dRD' as capitalized"; + variant "text 'dRE' as capitalized"; + variant "text 'dRF' as capitalized"; + variant "text 'dRG' as capitalized"; + variant "text 'dRH' as capitalized"; + variant "text 'dRI' as capitalized"; + variant "text 'dRK' as capitalized"; + variant "text 'dRL' as capitalized"; + variant "text 'dRM' as capitalized"; + variant "text 'dRN' as capitalized"; + variant "text 'dRO' as capitalized"; + variant "text 'dRP' as capitalized"; + variant "text 'dRR' as capitalized"; + variant "text 'dRS' as capitalized"; + variant "text 'dRT' as capitalized"; + variant "text 'dRU' as capitalized"; + variant "text 'dRV' as capitalized"; + variant "text 'dRW' as capitalized"; + variant "text 'dRX' as capitalized"; + variant "text 'dRY' as capitalized"; + variant "text 'dRZ' as capitalized"; + variant "text 'dSA' as capitalized"; + variant "text 'dSB' as capitalized"; + variant "text 'dSD' as capitalized"; + variant "text 'dSE' as capitalized"; + variant "text 'dSF' as capitalized"; + variant "text 'dSH' as capitalized"; + variant "text 'dSI' as capitalized"; + variant "text 'dSJ' as capitalized"; + variant "text 'dSM' as capitalized"; + variant "text 'dSN' as capitalized"; + variant "text 'dSO' as capitalized"; + variant "text 'dSP' as capitalized"; + variant "text 'dSQ' as capitalized"; + variant "text 'dSR' as capitalized"; + variant "text 'dSS' as capitalized"; + variant "text 'dST' as capitalized"; + variant "text 'dSU' as capitalized"; + variant "text 'dSV' as capitalized"; + variant "text 'dSX' as capitalized"; + variant "text 'dSZ' as capitalized"; + variant "text 'dTA' as capitalized"; + variant "text 'dTB' as capitalized"; + variant "text 'dTC' as capitalized"; + variant "text 'dTE' as capitalized"; + variant "text 'dTF' as capitalized"; + variant "text 'dTJ' as capitalized"; + variant "text 'dTK' as capitalized"; + variant "text 'dTL' as capitalized"; + variant "text 'dTM' as capitalized"; + variant "text 'dTN' as capitalized"; + variant "text 'dTP' as capitalized"; + variant "text 'dTS' as capitalized"; + variant "text 'dTT' as capitalized"; + variant "text 'dTU' as capitalized"; + variant "text 'dTV' as capitalized"; + variant "text 'dTW' as capitalized"; + variant "text 'dTX' as capitalized"; + variant "text 'dUA' as capitalized"; + variant "text 'dUB' as capitalized"; + variant "text 'dUC' as capitalized"; + variant "text 'dUD' as capitalized"; + variant "text 'dUE' as capitalized"; + variant "text 'dUF' as capitalized"; + variant "text 'dUG' as capitalized"; + variant "text 'dUI' as capitalized"; + variant "text 'dUJ' as capitalized"; + variant "text 'dUK' as capitalized"; + variant "text 'dUL' as capitalized"; + variant "text 'dUM' as capitalized"; + variant "text 'dUN' as capitalized"; + variant "text 'dUO' as capitalized"; + variant "text 'dUP' as capitalized"; + variant "text 'dUR' as capitalized"; + variant "text 'dUS' as capitalized"; + variant "text 'dUT' as capitalized"; + variant "text 'dUU' as capitalized"; + variant "text 'dUX' as capitalized"; + variant "text 'dVA' as capitalized"; + variant "text 'dVC' as capitalized"; + variant "text 'dVD' as capitalized"; + variant "text 'dVH' as capitalized"; + variant "text 'dVI' as capitalized"; + variant "text 'dVJ' as capitalized"; + variant "text 'dVK' as capitalized"; + variant "text 'dVL' as capitalized"; + variant "text 'dVW' as capitalized"; + variant "text 'dVX' as capitalized"; + variant "text 'dVZ' as capitalized"; + variant "text 'dWA' as capitalized"; + variant "text 'dWB' as capitalized"; + variant "text 'dWH' as capitalized"; + variant "text 'dWM' as capitalized"; + variant "text 'dWO' as capitalized"; + variant "text 'dWP' as capitalized"; + variant "text 'dWS' as capitalized"; + variant "text 'dWW' as capitalized"; + variant "text 'dWX' as capitalized"; + variant "text 'dXA' as capitalized"; + variant "text 'dXB' as capitalized"; + variant "text 'dXC' as capitalized"; + variant "text 'dXD' as capitalized"; + variant "text 'dXE' as capitalized"; + variant "text 'dXF' as capitalized"; + variant "text 'dXG' as capitalized"; + variant "text 'dXH' as capitalized"; + variant "text 'dXI' as capitalized"; + variant "text 'dXJ' as capitalized"; + variant "text 'dXK' as capitalized"; + variant "text 'dXL' as capitalized"; + variant "text 'dXM' as capitalized"; + variant "text 'dXN' as capitalized"; + variant "text 'dXO' as capitalized"; + variant "text 'dXP' as capitalized"; + variant "text 'dXQ' as capitalized"; + variant "text 'dXR' as capitalized"; + variant "text 'dXS' as capitalized"; + variant "text 'dXT' as capitalized"; + variant "text 'dXU' as capitalized"; + variant "text 'dXV' as capitalized"; + variant "text 'dXX' as capitalized"; + variant "text 'dYA' as capitalized"; + variant "text 'dYB' as capitalized"; + variant "text 'dYC' as capitalized"; + variant "text 'dYD' as capitalized"; + variant "text 'dYE' as capitalized"; + variant "text 'dYF' as capitalized"; + variant "text 'dYG' as capitalized"; + variant "text 'dYI' as capitalized"; + variant "text 'dYJ' as capitalized"; + variant "text 'dYK' as capitalized"; + variant "text 'dYL' as capitalized"; + variant "text 'dYM' as capitalized"; + variant "text 'dYN' as capitalized"; + variant "text 'dYO' as capitalized"; + variant "text 'dYP' as capitalized"; + variant "text 'dYS' as capitalized"; + variant "text 'dYT' as capitalized"; + variant "text 'dYV' as capitalized"; + variant "text 'dYW' as capitalized"; + variant "text 'dYX' as capitalized"; + variant "text 'dYZ' as capitalized"; + variant "text 'dZE' as capitalized"; + variant "text 'dZG' as capitalized"; + variant "text 'dZX' as capitalized"; + variant "text 'dZZ' as capitalized"; + variant "text 'eAA' as capitalized"; + variant "text 'eAB' as capitalized"; + variant "text 'eAC' as capitalized"; + variant "text 'eAD' as capitalized"; + variant "text 'eAE' as capitalized"; + variant "text 'eAF' as capitalized"; + variant "text 'eAG' as capitalized"; + variant "text 'eAH' as capitalized"; + variant "text 'eAI' as capitalized"; + variant "text 'eAJ' as capitalized"; + variant "text 'eAK' as capitalized"; + variant "text 'eAL' as capitalized"; + variant "text 'eAM' as capitalized"; + variant "text 'eAN' as capitalized"; + variant "text 'eAO' as capitalized"; + variant "text 'eAP' as capitalized"; + variant "text 'eAQ' as capitalized"; + variant "text 'eAR' as capitalized"; + variant "text 'eAS' as capitalized"; + variant "text 'eAT' as capitalized"; + variant "text 'eAU' as capitalized"; + variant "text 'eAV' as capitalized"; + variant "text 'eAX' as capitalized"; + variant "text 'eAY' as capitalized"; + variant "text 'eAZ' as capitalized"; + variant "text 'eBA' as capitalized"; + variant "text 'eBB' as capitalized"; + variant "text 'eBC' as capitalized"; + variant "text 'eBD' as capitalized"; + variant "text 'eBE' as capitalized"; + variant "text 'eBF' as capitalized"; + variant "text 'eBG' as capitalized"; + variant "text 'eBH' as capitalized"; + variant "text 'eBI' as capitalized"; + variant "text 'eBJ' as capitalized"; + variant "text 'eBK' as capitalized"; + variant "text 'eBL' as capitalized"; + variant "text 'eBM' as capitalized"; + variant "text 'eBN' as capitalized"; + variant "text 'eBO' as capitalized"; + variant "text 'eBP' as capitalized"; + variant "text 'eBR' as capitalized"; + variant "text 'eBS' as capitalized"; + variant "text 'eBT' as capitalized"; + variant "text 'eBU' as capitalized"; + variant "text 'eBV' as capitalized"; + variant "text 'eBW' as capitalized"; + variant "text 'eBX' as capitalized"; + variant "text 'eBZ' as capitalized"; + variant "text 'eCA' as capitalized"; + variant "text 'eCB' as capitalized"; + variant "text 'eCC' as capitalized"; + variant "text 'eCD' as capitalized"; + variant "text 'eCE' as capitalized"; + variant "text 'eCF' as capitalized"; + variant "text 'eCG' as capitalized"; + variant "text 'eCH' as capitalized"; + variant "text 'eCI' as capitalized"; + variant "text 'eCJ' as capitalized"; + variant "text 'eCK' as capitalized"; + variant "text 'eCL' as capitalized"; + variant "text 'eCM' as capitalized"; + variant "text 'eCN' as capitalized"; + variant "text 'eCO' as capitalized"; + variant "text 'eCP' as capitalized"; + variant "text 'eCQ' as capitalized"; + variant "text 'eCR' as capitalized"; + variant "text 'eCS' as capitalized"; + variant "text 'eCT' as capitalized"; + variant "text 'eCU' as capitalized"; + variant "text 'eCV' as capitalized"; + variant "text 'eCW' as capitalized"; + variant "text 'eCY' as capitalized"; + variant "text 'eCZ' as capitalized"; + variant "text 'eDA' as capitalized"; + variant "text 'eDB' as capitalized"; + variant "text 'eDC' as capitalized"; + variant "text 'eDD' as capitalized"; + variant "text 'eDE' as capitalized"; + variant "text 'eDF' as capitalized"; + variant "text 'eDG' as capitalized"; + variant "text 'eDH' as capitalized"; + variant "text 'eDI' as capitalized"; + variant "text 'eDJ' as capitalized"; + variant "text 'eDK' as capitalized"; + variant "text 'eDL' as capitalized"; + variant "text 'eDM' as capitalized"; + variant "text 'eDN' as capitalized"; + variant "text 'eDO' as capitalized"; + variant "text 'eDP' as capitalized"; + variant "text 'eDQ' as capitalized"; + variant "text 'eDR' as capitalized"; + variant "text 'eDS' as capitalized"; + variant "text 'eDT' as capitalized"; + variant "text 'eDU' as capitalized"; + variant "text 'eDV' as capitalized"; + variant "text 'eDW' as capitalized"; + variant "text 'eDX' as capitalized"; + variant "text 'eDY' as capitalized"; + variant "text 'eDZ' as capitalized"; + variant "text 'eEA' as capitalized"; + variant "text 'eEB' as capitalized"; + variant "text 'eEC' as capitalized"; + variant "text 'eED' as capitalized"; + variant "text 'eEE' as capitalized"; + variant "text 'eEF' as capitalized"; + variant "text 'eEG' as capitalized"; + variant "text 'eEH' as capitalized"; + variant "text 'eEI' as capitalized"; + variant "text 'eEJ' as capitalized"; + variant "text 'eEK' as capitalized"; + variant "text 'eEL' as capitalized"; + variant "text 'eEM' as capitalized"; + variant "text 'eEN' as capitalized"; + variant "text 'eEO' as capitalized"; + variant "text 'eEP' as capitalized"; + variant "text 'eEQ' as capitalized"; + variant "text 'eER' as capitalized"; + variant "text 'eES' as capitalized"; + variant "text 'eET' as capitalized"; + variant "text 'eEU' as capitalized"; + variant "text 'eEV' as capitalized"; + variant "text 'eEW' as capitalized"; + variant "text 'eEX' as capitalized"; + variant "text 'eEY' as capitalized"; + variant "text 'eEZ' as capitalized"; + variant "text 'eFA' as capitalized"; + variant "text 'eFB' as capitalized"; + variant "text 'eFC' as capitalized"; + variant "text 'eFD' as capitalized"; + variant "text 'eFE' as capitalized"; + variant "text 'eFF' as capitalized"; + variant "text 'eFG' as capitalized"; + variant "text 'eFH' as capitalized"; + variant "text 'eFI' as capitalized"; + variant "text 'eFJ' as capitalized"; + variant "text 'eFK' as capitalized"; + variant "text 'eFL' as capitalized"; + variant "text 'eFM' as capitalized"; + variant "text 'eFN' as capitalized"; + variant "text 'eFO' as capitalized"; + variant "text 'eFP' as capitalized"; + variant "text 'eFQ' as capitalized"; + variant "text 'eFR' as capitalized"; + variant "text 'eFS' as capitalized"; + variant "text 'eFT' as capitalized"; + variant "text 'eFU' as capitalized"; + variant "text 'eFV' as capitalized"; + variant "text 'eFW' as capitalized"; + variant "text 'eFX' as capitalized"; + variant "text 'eFY' as capitalized"; + variant "text 'eFZ' as capitalized"; + variant "text 'eGA' as capitalized"; + variant "text 'eGB' as capitalized"; + variant "text 'eGC' as capitalized"; + variant "text 'eGD' as capitalized"; + variant "text 'eGE' as capitalized"; + variant "text 'eGF' as capitalized"; + variant "text 'eGG' as capitalized"; + variant "text 'eGH' as capitalized"; + variant "text 'eGI' as capitalized"; + variant "text 'eGJ' as capitalized"; + variant "text 'eGK' as capitalized"; + variant "text 'eGL' as capitalized"; + variant "text 'eGM' as capitalized"; + variant "text 'eGN' as capitalized"; + variant "text 'eGO' as capitalized"; + variant "text 'eGP' as capitalized"; + variant "text 'eGQ' as capitalized"; + variant "text 'eGR' as capitalized"; + variant "text 'eGS' as capitalized"; + variant "text 'eGT' as capitalized"; + variant "text 'eGU' as capitalized"; + variant "text 'eGV' as capitalized"; + variant "text 'eGW' as capitalized"; + variant "text 'eGX' as capitalized"; + variant "text 'eGY' as capitalized"; + variant "text 'eGZ' as capitalized"; + variant "text 'eHA' as capitalized"; + variant "text 'eHB' as capitalized"; + variant "text 'eHC' as capitalized"; + variant "text 'eHD' as capitalized"; + variant "text 'eHE' as capitalized"; + variant "text 'eHF' as capitalized"; + variant "text 'eHG' as capitalized"; + variant "text 'eHH' as capitalized"; + variant "text 'eHI' as capitalized"; + variant "text 'eHJ' as capitalized"; + variant "text 'eHK' as capitalized"; + variant "text 'eHL' as capitalized"; + variant "text 'eHM' as capitalized"; + variant "text 'eHN' as capitalized"; + variant "text 'eHO' as capitalized"; + variant "text 'eHP' as capitalized"; + variant "text 'eHQ' as capitalized"; + variant "text 'eHR' as capitalized"; + variant "text 'eHS' as capitalized"; + variant "text 'eHT' as capitalized"; + variant "text 'eHU' as capitalized"; + variant "text 'eHV' as capitalized"; + variant "text 'eHW' as capitalized"; + variant "text 'eHX' as capitalized"; + variant "text 'eHY' as capitalized"; + variant "text 'eHZ' as capitalized"; + variant "text 'eIA' as capitalized"; + variant "text 'eIB' as capitalized"; + variant "text 'eIC' as capitalized"; + variant "text 'eID' as capitalized"; + variant "text 'eIE' as capitalized"; + variant "text 'eIF' as capitalized"; + variant "text 'eIG' as capitalized"; + variant "text 'eIH' as capitalized"; + variant "text 'eII' as capitalized"; + variant "text 'eIJ' as capitalized"; + variant "text 'eIK' as capitalized"; + variant "text 'eIL' as capitalized"; + variant "text 'eIM' as capitalized"; + variant "text 'eIN' as capitalized"; + variant "text 'eIO' as capitalized"; + variant "text 'eIP' as capitalized"; + variant "text 'eIQ' as capitalized"; + variant "text 'eIR' as capitalized"; + variant "text 'eIS' as capitalized"; + variant "text 'eIT' as capitalized"; + variant "text 'eIU' as capitalized"; + variant "text 'eIV' as capitalized"; + variant "text 'eIW' as capitalized"; + variant "text 'eIX' as capitalized"; + variant "text 'eIY' as capitalized"; + variant "text 'eIZ' as capitalized"; + variant "text 'eJA' as capitalized"; + variant "text 'eJB' as capitalized"; + variant "text 'eJC' as capitalized"; + variant "text 'eJD' as capitalized"; + variant "text 'eJE' as capitalized"; + variant "text 'eJF' as capitalized"; + variant "text 'eJG' as capitalized"; + variant "text 'eJH' as capitalized"; + variant "text 'eJI' as capitalized"; + variant "text 'eJJ' as capitalized"; + variant "text 'eJK' as capitalized"; + variant "text 'eJL' as capitalized"; + variant "text 'eJM' as capitalized"; + variant "text 'eJN' as capitalized"; + variant "text 'eJO' as capitalized"; + variant "text 'eJP' as capitalized"; + variant "text 'eJR' as capitalized"; + variant "text 'eJS' as capitalized"; + variant "text 'eJT' as capitalized"; + variant "text 'eJU' as capitalized"; + variant "text 'eJV' as capitalized"; + variant "text 'eJW' as capitalized"; + variant "text 'eJX' as capitalized"; + variant "text 'eJY' as capitalized"; + variant "text 'eJZ' as capitalized"; + variant "text 'eKA' as capitalized"; + variant "text 'eKB' as capitalized"; + variant "text 'eKC' as capitalized"; + variant "text 'eKD' as capitalized"; + variant "text 'eKE' as capitalized"; + variant "text 'eKF' as capitalized"; + variant "text 'eKG' as capitalized"; + variant "text 'eKH' as capitalized"; + variant "text 'eKI' as capitalized"; + variant "text 'eKJ' as capitalized"; + variant "text 'eKK' as capitalized"; + variant "text 'eKL' as capitalized"; + variant "text 'eKM' as capitalized"; + variant "text 'eKN' as capitalized"; + variant "text 'eKO' as capitalized"; + variant "text 'eKP' as capitalized"; + variant "text 'eKQ' as capitalized"; + variant "text 'eKR' as capitalized"; + variant "text 'eKS' as capitalized"; + variant "text 'eKT' as capitalized"; + variant "text 'eKU' as capitalized"; + variant "text 'eKV' as capitalized"; + variant "text 'eKW' as capitalized"; + variant "text 'eKX' as capitalized"; + variant "text 'eKY' as capitalized"; + variant "text 'eKZ' as capitalized"; + variant "text 'eLA' as capitalized"; + variant "text 'eLB' as capitalized"; + variant "text 'eLC' as capitalized"; + variant "text 'eLD' as capitalized"; + variant "text 'eLE' as capitalized"; + variant "text 'eLG' as capitalized"; + variant "text 'eLH' as capitalized"; + variant "text 'eLI' as capitalized"; + variant "text 'eLJ' as capitalized"; + variant "text 'eLK' as capitalized"; + variant "text 'eLL' as capitalized"; + variant "text 'eLM' as capitalized"; + variant "text 'eLN' as capitalized"; + variant "text 'eLO' as capitalized"; + variant "text 'eLP' as capitalized"; + variant "text 'eLQ' as capitalized"; + variant "text 'eLR' as capitalized"; + variant "text 'eLS' as capitalized"; + variant "text 'eLT' as capitalized"; + variant "text 'eLU' as capitalized"; + variant "text 'eLV' as capitalized"; + variant "text 'eLW' as capitalized"; + variant "text 'eLX' as capitalized"; + variant "text 'eLY' as capitalized"; + variant "text 'eLZ' as capitalized"; + variant "text 'eMA' as capitalized"; + variant "text 'eMB' as capitalized"; + variant "text 'eMC' as capitalized"; + variant "text 'eMD' as capitalized"; + variant "text 'eME' as capitalized"; + variant "text 'eMF' as capitalized"; + variant "text 'eMG' as capitalized"; + variant "text 'eMH' as capitalized"; + variant "text 'eMI' as capitalized"; + variant "text 'eMJ' as capitalized"; + variant "text 'eMK' as capitalized"; + variant "text 'eML' as capitalized"; + variant "text 'eMM' as capitalized"; + variant "text 'eMN' as capitalized"; + variant "text 'eMO' as capitalized"; + variant "text 'eMP' as capitalized"; + variant "text 'eMQ' as capitalized"; + variant "text 'eMR' as capitalized"; + variant "text 'eMT' as capitalized"; + variant "text 'eMU' as capitalized"; + variant "text 'eMV' as capitalized"; + variant "text 'eMW' as capitalized"; + variant "text 'eMX' as capitalized"; + variant "text 'eMY' as capitalized"; + variant "text 'eMZ' as capitalized"; + variant "text 'eNA' as capitalized"; + variant "text 'eNB' as capitalized"; + variant "text 'eNC' as capitalized"; + variant "text 'eND' as capitalized"; + variant "text 'eNE' as capitalized"; + variant "text 'eNF' as capitalized"; + variant "text 'eNG' as capitalized"; + variant "text 'eNH' as capitalized"; + variant "text 'eNI' as capitalized"; + variant "text 'eNJ' as capitalized"; + variant "text 'eNK' as capitalized"; + variant "text 'eNL' as capitalized"; + variant "text 'eNM' as capitalized"; + variant "text 'eNN' as capitalized"; + variant "text 'eNO' as capitalized"; + variant "text 'eNP' as capitalized"; + variant "text 'eNQ' as capitalized"; + variant "text 'eNR' as capitalized"; + variant "text 'eNS' as capitalized"; + variant "text 'eNT' as capitalized"; + variant "text 'eNU' as capitalized"; + variant "text 'eNV' as capitalized"; + variant "text 'eNW' as capitalized"; + variant "text 'eNX' as capitalized"; + variant "text 'eNY' as capitalized"; + variant "text 'eNZ' as capitalized"; + variant "text 'eOA' as capitalized"; + variant "text 'eOB' as capitalized"; + variant "text 'eOC' as capitalized"; + variant "text 'eOD' as capitalized"; + variant "text 'eOE' as capitalized"; + variant "text 'eOF' as capitalized"; + variant "text 'eOG' as capitalized"; + variant "text 'eOH' as capitalized"; + variant "text 'eOI' as capitalized"; + variant "text 'eOJ' as capitalized"; + variant "text 'eOK' as capitalized"; + variant "text 'eOL' as capitalized"; + variant "text 'eOM' as capitalized"; + variant "text 'eON' as capitalized"; + variant "text 'eOO' as capitalized"; + variant "text 'eOP' as capitalized"; + variant "text 'eOQ' as capitalized"; + variant "text 'eOR' as capitalized"; + variant "text 'eOS' as capitalized"; + variant "text 'eOT' as capitalized"; + variant "text 'eOU' as capitalized"; + variant "text 'eOV' as capitalized"; + variant "text 'eOW' as capitalized"; + variant "text 'eOX' as capitalized"; + variant "text 'eOY' as capitalized"; + variant "text 'eOZ' as capitalized"; + variant "text 'ePA' as capitalized"; + variant "text 'ePB' as capitalized"; + variant "text 'ePC' as capitalized"; + variant "text 'ePD' as capitalized"; + variant "text 'ePE' as capitalized"; + variant "text 'ePF' as capitalized"; + variant "text 'ePG' as capitalized"; + variant "text 'ePH' as capitalized"; + variant "text 'ePI' as capitalized"; + variant "text 'ePJ' as capitalized"; + variant "text 'ePK' as capitalized"; + variant "text 'ePL' as capitalized"; + variant "text 'ePM' as capitalized"; + variant "text 'ePN' as capitalized"; + variant "text 'ePO' as capitalized"; + variant "text 'ePP' as capitalized"; + variant "text 'ePQ' as capitalized"; + variant "text 'ePR' as capitalized"; + variant "text 'ePS' as capitalized"; + variant "text 'ePT' as capitalized"; + variant "text 'ePU' as capitalized"; + variant "text 'ePV' as capitalized"; + variant "text 'ePW' as capitalized"; + variant "text 'ePX' as capitalized"; + variant "text 'ePY' as capitalized"; + variant "text 'ePZ' as capitalized"; + variant "text 'eQA' as capitalized"; + variant "text 'eQB' as capitalized"; + variant "text 'eQC' as capitalized"; + variant "text 'eQD' as capitalized"; + variant "text 'eQE' as capitalized"; + variant "text 'eQF' as capitalized"; + variant "text 'eQG' as capitalized"; + variant "text 'eQH' as capitalized"; + variant "text 'eQI' as capitalized"; + variant "text 'eQJ' as capitalized"; + variant "text 'eQK' as capitalized"; + variant "text 'eQL' as capitalized"; + variant "text 'eQM' as capitalized"; + variant "text 'eQN' as capitalized"; + variant "text 'eQO' as capitalized"; + variant "text 'eQP' as capitalized"; + variant "text 'eQQ' as capitalized"; + variant "text 'eQR' as capitalized"; + variant "text 'eQS' as capitalized"; + variant "text 'eQT' as capitalized"; + variant "text 'eQU' as capitalized"; + variant "text 'eQV' as capitalized"; + variant "text 'eQW' as capitalized"; + variant "text 'eQX' as capitalized"; + variant "text 'eQY' as capitalized"; + variant "text 'eQZ' as capitalized"; + variant "text 'eRA' as capitalized"; + variant "text 'eRB' as capitalized"; + variant "text 'eRC' as capitalized"; + variant "text 'eRD' as capitalized"; + variant "text 'eRE' as capitalized"; + variant "text 'eRF' as capitalized"; + variant "text 'eRG' as capitalized"; + variant "text 'eRH' as capitalized"; + variant "text 'eRI' as capitalized"; + variant "text 'eRJ' as capitalized"; + variant "text 'eRK' as capitalized"; + variant "text 'eRL' as capitalized"; + variant "text 'eRM' as capitalized"; + variant "text 'eRN' as capitalized"; + variant "text 'eRO' as capitalized"; + variant "text 'eRP' as capitalized"; + variant "text 'eRQ' as capitalized"; + variant "text 'eRR' as capitalized"; + variant "text 'eRS' as capitalized"; + variant "text 'eRT' as capitalized"; + variant "text 'eRU' as capitalized"; + variant "text 'eRV' as capitalized"; + variant "text 'eRW' as capitalized"; + variant "text 'eRX' as capitalized"; + variant "text 'eRY' as capitalized"; + variant "text 'eRZ' as capitalized"; + variant "text 'eSA' as capitalized"; + variant "text 'eSB' as capitalized"; + variant "text 'eSC' as capitalized"; + variant "text 'eSD' as capitalized"; + variant "text 'eSE' as capitalized"; + variant "text 'eSF' as capitalized"; + variant "text 'eSG' as capitalized"; + variant "text 'eSH' as capitalized"; + variant "text 'eSI' as capitalized"; + variant "text 'eSJ' as capitalized"; + variant "text 'eSK' as capitalized"; + variant "text 'eSL' as capitalized"; + variant "text 'eSM' as capitalized"; + variant "text 'eSN' as capitalized"; + variant "text 'eSO' as capitalized"; + variant "text 'eSP' as capitalized"; + variant "text 'eSQ' as capitalized"; + variant "text 'eSR' as capitalized"; + variant "text 'eSS' as capitalized"; + variant "text 'eST' as capitalized"; + variant "text 'eSU' as capitalized"; + variant "text 'eSV' as capitalized"; + variant "text 'eSW' as capitalized"; + variant "text 'eSX' as capitalized"; + variant "text 'eSY' as capitalized"; + variant "text 'eSZ' as capitalized"; + variant "text 'eTA' as capitalized"; + variant "text 'eTB' as capitalized"; + variant "text 'eTC' as capitalized"; + variant "text 'eTD' as capitalized"; + variant "text 'eTE' as capitalized"; + variant "text 'eTF' as capitalized"; + variant "text 'eTG' as capitalized"; + variant "text 'eTH' as capitalized"; + variant "text 'eTI' as capitalized"; + variant "text 'eTJ' as capitalized"; + variant "text 'eTK' as capitalized"; + variant "text 'eTL' as capitalized"; + variant "text 'eTM' as capitalized"; + variant "text 'eTN' as capitalized"; + variant "text 'eTO' as capitalized"; + variant "text 'eTP' as capitalized"; + variant "text 'eTQ' as capitalized"; + variant "text 'eTR' as capitalized"; + variant "text 'eTS' as capitalized"; + variant "text 'eTT' as capitalized"; + variant "text 'eTU' as capitalized"; + variant "text 'eTV' as capitalized"; + variant "text 'eTW' as capitalized"; + variant "text 'eTX' as capitalized"; + variant "text 'eTY' as capitalized"; + variant "text 'eTZ' as capitalized"; + variant "text 'eUA' as capitalized"; + variant "text 'eUB' as capitalized"; + variant "text 'eUC' as capitalized"; + variant "text 'eUD' as capitalized"; + variant "text 'eUE' as capitalized"; + variant "text 'eUF' as capitalized"; + variant "text 'eUG' as capitalized"; + variant "text 'eUH' as capitalized"; + variant "text 'eUI' as capitalized"; + variant "text 'eUJ' as capitalized"; + variant "text 'eUK' as capitalized"; + variant "text 'eUL' as capitalized"; + variant "text 'eUM' as capitalized"; + variant "text 'eUN' as capitalized"; + variant "text 'eUO' as capitalized"; + variant "text 'eUP' as capitalized"; + variant "text 'eUQ' as capitalized"; + variant "text 'eUR' as capitalized"; + variant "text 'eUS' as capitalized"; + variant "text 'eUT' as capitalized"; + variant "text 'eUU' as capitalized"; + variant "text 'eUV' as capitalized"; + variant "text 'eUW' as capitalized"; + variant "text 'eUX' as capitalized"; + variant "text 'eUY' as capitalized"; + variant "text 'eUZ' as capitalized"; + variant "text 'eVA' as capitalized"; + variant "text 'eVB' as capitalized"; + variant "text 'eVD' as capitalized"; + variant "text 'eVE' as capitalized"; + variant "text 'eVF' as capitalized"; + variant "text 'eVG' as capitalized"; + variant "text 'eVH' as capitalized"; + variant "text 'eVI' as capitalized"; + variant "text 'eVJ' as capitalized"; + variant "text 'eVK' as capitalized"; + variant "text 'eVL' as capitalized"; + variant "text 'eVM' as capitalized"; + variant "text 'eVN' as capitalized"; + variant "text 'eVO' as capitalized"; + variant "text 'eVP' as capitalized"; + variant "text 'eVQ' as capitalized"; + variant "text 'eVR' as capitalized"; + variant "text 'eVS' as capitalized"; + variant "text 'eVT' as capitalized"; + variant "text 'eVU' as capitalized"; + variant "text 'eVV' as capitalized"; + variant "text 'eVW' as capitalized"; + variant "text 'eVX' as capitalized"; + variant "text 'eVY' as capitalized"; + variant "text 'eVZ' as capitalized"; + variant "text 'eWA' as capitalized"; + variant "text 'eWB' as capitalized"; + variant "text 'eWC' as capitalized"; + variant "text 'eWD' as capitalized"; + variant "text 'eWE' as capitalized"; + variant "text 'eWF' as capitalized"; + variant "text 'eWG' as capitalized"; + variant "text 'eWI' as capitalized"; + variant "text 'eWK' as capitalized"; + variant "text 'eWL' as capitalized"; + variant "text 'eWM' as capitalized"; + variant "text 'eWN' as capitalized"; + variant "text 'eWO' as capitalized"; + variant "text 'eWP' as capitalized"; + variant "text 'eWQ' as capitalized"; + variant "text 'eWR' as capitalized"; + variant "text 'eWS' as capitalized"; + variant "text 'eWT' as capitalized"; + variant "text 'eWU' as capitalized"; + variant "text 'eWV' as capitalized"; + variant "text 'eWW' as capitalized"; + variant "text 'eWX' as capitalized"; + variant "text 'eWY' as capitalized"; + variant "text 'eWZ' as capitalized"; + variant "text 'eXA' as capitalized"; + variant "text 'eXB' as capitalized"; + variant "text 'eXC' as capitalized"; + variant "text 'eXD' as capitalized"; + variant "text 'eXE' as capitalized"; + variant "text 'eXG' as capitalized"; + variant "text 'eXH' as capitalized"; + variant "text 'eXI' as capitalized"; + variant "text 'eXL' as capitalized"; + variant "text 'eXM' as capitalized"; + variant "text 'eXN' as capitalized"; + variant "text 'eXO' as capitalized"; + variant "text 'eXP' as capitalized"; + variant "text 'eXQ' as capitalized"; + variant "text 'eXR' as capitalized"; + variant "text 'eXS' as capitalized"; + variant "text 'eXT' as capitalized"; + variant "text 'eXU' as capitalized"; + variant "text 'eXV' as capitalized"; + variant "text 'eXX' as capitalized"; + variant "text 'eXY' as capitalized"; + variant "text 'eYA' as capitalized"; + variant "text 'eYB' as capitalized"; + variant "text 'eYC' as capitalized"; + variant "text 'eYD' as capitalized"; + variant "text 'eYE' as capitalized"; + variant "text 'eYF' as capitalized"; + variant "text 'eYG' as capitalized"; + variant "text 'eYH' as capitalized"; + variant "text 'eYI' as capitalized"; + variant "text 'eYJ' as capitalized"; + variant "text 'eYK' as capitalized"; + variant "text 'eYL' as capitalized"; + variant "text 'eYM' as capitalized"; + variant "text 'eYN' as capitalized"; + variant "text 'eYO' as capitalized"; + variant "text 'eYP' as capitalized"; + variant "text 'eYQ' as capitalized"; + variant "text 'eYR' as capitalized"; + variant "text 'eYS' as capitalized"; + variant "text 'eYT' as capitalized"; + variant "text 'eYU' as capitalized"; + variant "text 'eYV' as capitalized"; + variant "text 'eYW' as capitalized"; + variant "text 'eYX' as capitalized"; + variant "text 'eYY' as capitalized"; + variant "text 'eYZ' as capitalized"; + variant "text 'eZA' as capitalized"; + variant "text 'eZE' as capitalized"; + variant "text 'eZI' as capitalized"; + variant "text 'eZJ' as capitalized"; + variant "text 'eZL' as capitalized"; + variant "text 'eZM' as capitalized"; + variant "text 'eZO' as capitalized"; + variant "text 'eZP' as capitalized"; + variant "text 'eZR' as capitalized"; + variant "text 'eZS' as capitalized"; + variant "text 'eZW' as capitalized"; + variant "text 'eZX' as capitalized"; + variant "text 'fAA' as capitalized"; + variant "text 'fAB' as capitalized"; + variant "text 'fAC' as capitalized"; + variant "text 'fAD' as capitalized"; + variant "text 'fAE' as capitalized"; + variant "text 'fAF' as capitalized"; + variant "text 'fAG' as capitalized"; + variant "text 'fAH' as capitalized"; + variant "text 'fAI' as capitalized"; + variant "text 'fAJ' as capitalized"; + variant "text 'fAK' as capitalized"; + variant "text 'fAL' as capitalized"; + variant "text 'fAM' as capitalized"; + variant "text 'fAN' as capitalized"; + variant "text 'fAP' as capitalized"; + variant "text 'fAR' as capitalized"; + variant "text 'fAS' as capitalized"; + variant "text 'fAT' as capitalized"; + variant "text 'fAU' as capitalized"; + variant "text 'fAV' as capitalized"; + variant "text 'fAW' as capitalized"; + variant "text 'fAX' as capitalized"; + variant "text 'fBA' as capitalized"; + variant "text 'fBB' as capitalized"; + variant "text 'fBC' as capitalized"; + variant "text 'fBD' as capitalized"; + variant "text 'fBH' as capitalized"; + variant "text 'fBM' as capitalized"; + variant "text 'fBR' as capitalized"; + variant "text 'fBT' as capitalized"; + variant "text 'fBU' as capitalized"; + variant "text 'fBX' as capitalized"; + variant "text 'fCA' as capitalized"; + variant "text 'fCB' as capitalized"; + variant "text 'fCC' as capitalized"; + variant "text 'fCD' as capitalized"; + variant "text 'fCE' as capitalized"; + variant "text 'fCG' as capitalized"; + variant "text 'fCH' as capitalized"; + variant "text 'fCI' as capitalized"; + variant "text 'fCJ' as capitalized"; + variant "text 'fCK' as capitalized"; + variant "text 'fCL' as capitalized"; + variant "text 'fCM' as capitalized"; + variant "text 'fCN' as capitalized"; + variant "text 'fCO' as capitalized"; + variant "text 'fCP' as capitalized"; + variant "text 'fCQ' as capitalized"; + variant "text 'fCR' as capitalized"; + variant "text 'fCS' as capitalized"; + variant "text 'fCT' as capitalized"; + variant "text 'fCU' as capitalized"; + variant "text 'fCV' as capitalized"; + variant "text 'fCW' as capitalized"; + variant "text 'fCX' as capitalized"; + variant "text 'fCY' as capitalized"; + variant "text 'fCZ' as capitalized"; + variant "text 'fDA' as capitalized"; + variant "text 'fDK' as capitalized"; + variant "text 'fDM' as capitalized"; + variant "text 'fDT' as capitalized"; + variant "text 'fDW' as capitalized"; + variant "text 'fDX' as capitalized"; + variant "text 'fEB' as capitalized"; + variant "text 'fED' as capitalized"; + variant "text 'fEE' as capitalized"; + variant "text 'fEG' as capitalized"; + variant "text 'fEH' as capitalized"; + variant "text 'fEI' as capitalized"; + variant "text 'fEJ' as capitalized"; + variant "text 'fEL' as capitalized"; + variant "text 'fEP' as capitalized"; + variant "text 'fES' as capitalized"; + variant "text 'fET' as capitalized"; + variant "text 'fEU' as capitalized"; + variant "text 'fEW' as capitalized"; + variant "text 'fEX' as capitalized"; + variant "text 'fEY' as capitalized"; + variant "text 'fFP' as capitalized"; + variant "text 'fFQ' as capitalized"; + variant "text 'fFR' as capitalized"; + variant "text 'fFV' as capitalized"; + variant "text 'fFX' as capitalized"; + variant "text 'fFZ' as capitalized"; + variant "text 'fGA' as capitalized"; + variant "text 'fGB' as capitalized"; + variant "text 'fGC' as capitalized"; + variant "text 'fGD' as capitalized"; + variant "text 'fGE' as capitalized"; + variant "text 'fGF' as capitalized"; + variant "text 'fGG' as capitalized"; + variant "text 'fGH' as capitalized"; + variant "text 'fGI' as capitalized"; + variant "text 'fGK' as capitalized"; + variant "text 'fGL' as capitalized"; + variant "text 'fGM' as capitalized"; + variant "text 'fGN' as capitalized"; + variant "text 'fGO' as capitalized"; + variant "text 'fGP' as capitalized"; + variant "text 'fGQ' as capitalized"; + variant "text 'fGR' as capitalized"; + variant "text 'fGS' as capitalized"; + variant "text 'fGT' as capitalized"; + variant "text 'fGU' as capitalized"; + variant "text 'fGV' as capitalized"; + variant "text 'fGX' as capitalized"; + variant "text 'fGY' as capitalized"; + variant "text 'fGZ' as capitalized"; + variant "text 'fHA' as capitalized"; + variant "text 'fHS' as capitalized"; + variant "text 'fHX' as capitalized"; + variant "text 'fIC' as capitalized"; + variant "text 'fID' as capitalized"; + variant "text 'fIE' as capitalized"; + variant "text 'fIF' as capitalized"; + variant "text 'fIG' as capitalized"; + variant "text 'fIH' as capitalized"; + variant "text 'fIK' as capitalized"; + variant "text 'fIL' as capitalized"; + variant "text 'fIM' as capitalized"; + variant "text 'fIN' as capitalized"; + variant "text 'fIO' as capitalized"; + variant "text 'fIP' as capitalized"; + variant "text 'fIS' as capitalized"; + variant "text 'fIT' as capitalized"; + variant "text 'fIU' as capitalized"; + variant "text 'fIV' as capitalized"; + variant "text 'fIW' as capitalized"; + variant "text 'fIX' as capitalized"; + variant "text 'fJD' as capitalized"; + variant "text 'fJE' as capitalized"; + variant "text 'fJF' as capitalized"; + variant "text 'fJN' as capitalized"; + variant "text 'fJP' as capitalized"; + variant "text 'fJR' as capitalized"; + variant "text 'fJS' as capitalized"; + variant "text 'fJX' as capitalized"; + variant "text 'fKG' as capitalized"; + variant "text 'fKL' as capitalized"; + variant "text 'fKN' as capitalized"; + variant "text 'fKP' as capitalized"; + variant "text 'fKU' as capitalized"; + variant "text 'fKX' as capitalized"; + variant "text 'fLA' as capitalized"; + variant "text 'fLB' as capitalized"; + variant "text 'fLC' as capitalized"; + variant "text 'fLD' as capitalized"; + variant "text 'fLE' as capitalized"; + variant "text 'fLF' as capitalized"; + variant "text 'fLG' as capitalized"; + variant "text 'fLH' as capitalized"; + variant "text 'fLI' as capitalized"; + variant "text 'fLJ' as capitalized"; + variant "text 'fLK' as capitalized"; + variant "text 'fLL' as capitalized"; + variant "text 'fLM' as capitalized"; + variant "text 'fLN' as capitalized"; + variant "text 'fLO' as capitalized"; + variant "text 'fLP' as capitalized"; + variant "text 'fLQ' as capitalized"; + variant "text 'fLR' as capitalized"; + variant "text 'fLS' as capitalized"; + variant "text 'fLT' as capitalized"; + variant "text 'fLU' as capitalized"; + variant "text 'fLV' as capitalized"; + variant "text 'fLW' as capitalized"; + variant "text 'fLX' as capitalized"; + variant "text 'fLY' as capitalized"; + variant "text 'fLZ' as capitalized"; + variant "text 'fMA' as capitalized"; + variant "text 'fMB' as capitalized"; + variant "text 'fMC' as capitalized"; + variant "text 'fMG' as capitalized"; + variant "text 'fMK' as capitalized"; + variant "text 'fMN' as capitalized"; + variant "text 'fMS' as capitalized"; + variant "text 'fMV' as capitalized"; + variant "text 'fMX' as capitalized"; + variant "text 'fNG' as capitalized"; + variant "text 'fNJ' as capitalized"; + variant "text 'fNL' as capitalized"; + variant "text 'fNO' as capitalized"; + variant "text 'fNS' as capitalized"; + variant "text 'fNT' as capitalized"; + variant "text 'fNX' as capitalized"; + variant "text 'fOA' as capitalized"; + variant "text 'fOB' as capitalized"; + variant "text 'fOC' as capitalized"; + variant "text 'fOD' as capitalized"; + variant "text 'fOE' as capitalized"; + variant "text 'fOF' as capitalized"; + variant "text 'fOH' as capitalized"; + variant "text 'fOI' as capitalized"; + variant "text 'fOK' as capitalized"; + variant "text 'fOL' as capitalized"; + variant "text 'fON' as capitalized"; + variant "text 'fOO' as capitalized"; + variant "text 'fOP' as capitalized"; + variant "text 'fOR' as capitalized"; + variant "text 'fOS' as capitalized"; + variant "text 'fOT' as capitalized"; + variant "text 'fOU' as capitalized"; + variant "text 'fOV' as capitalized"; + variant "text 'fOX' as capitalized"; + variant "text 'fOY' as capitalized"; + variant "text 'fPA' as capitalized"; + variant "text 'fPC' as capitalized"; + variant "text 'fPE' as capitalized"; + variant "text 'fPI' as capitalized"; + variant "text 'fPJ' as capitalized"; + variant "text 'fPP' as capitalized"; + variant "text 'fPR' as capitalized"; + variant "text 'fPX' as capitalized"; + variant "text 'fPY' as capitalized"; + variant "text 'fQB' as capitalized"; + variant "text 'fQC' as capitalized"; + variant "text 'fQJ' as capitalized"; + variant "text 'fQQ' as capitalized"; + variant "text 'fRA' as capitalized"; + variant "text 'fRB' as capitalized"; + variant "text 'fRC' as capitalized"; + variant "text 'fRD' as capitalized"; + variant "text 'fRE' as capitalized"; + variant "text 'fRF' as capitalized"; + variant "text 'fRG' as capitalized"; + variant "text 'fRH' as capitalized"; + variant "text 'fRI' as capitalized"; + variant "text 'fRJ' as capitalized"; + variant "text 'fRK' as capitalized"; + variant "text 'fRL' as capitalized"; + variant "text 'fRM' as capitalized"; + variant "text 'fRN' as capitalized"; + variant "text 'fRO' as capitalized"; + variant "text 'fRP' as capitalized"; + variant "text 'fRQ' as capitalized"; + variant "text 'fRR' as capitalized"; + variant "text 'fRS' as capitalized"; + variant "text 'fRT' as capitalized"; + variant "text 'fRU' as capitalized"; + variant "text 'fRX' as capitalized"; + variant "text 'fRZ' as capitalized"; + variant "text 'fSA' as capitalized"; + variant "text 'fSB' as capitalized"; + variant "text 'fSC' as capitalized"; + variant "text 'fSD' as capitalized"; + variant "text 'fSE' as capitalized"; + variant "text 'fSG' as capitalized"; + variant "text 'fSH' as capitalized"; + variant "text 'fSI' as capitalized"; + variant "text 'fSK' as capitalized"; + variant "text 'fSM' as capitalized"; + variant "text 'fSN' as capitalized"; + variant "text 'fSO' as capitalized"; + variant "text 'fSR' as capitalized"; + variant "text 'fSS' as capitalized"; + variant "text 'fST' as capitalized"; + variant "text 'fSU' as capitalized"; + variant "text 'fSV' as capitalized"; + variant "text 'fSX' as capitalized"; + variant "text 'fSY' as capitalized"; + variant "text 'fSZ' as capitalized"; + variant "text 'fTA' as capitalized"; + variant "text 'fTB' as capitalized"; + variant "text 'fTD' as capitalized"; + variant "text 'fTE' as capitalized"; + variant "text 'fTF' as capitalized"; + variant "text 'fTG' as capitalized"; + variant "text 'fTI' as capitalized"; + variant "text 'fTL' as capitalized"; + variant "text 'fTQ' as capitalized"; + variant "text 'fTR' as capitalized"; + variant "text 'fTS' as capitalized"; + variant "text 'fTX' as capitalized"; + variant "text 'fTY' as capitalized"; + variant "text 'fUA' as capitalized"; + variant "text 'fUC' as capitalized"; + variant "text 'fUD' as capitalized"; + variant "text 'fUE' as capitalized"; + variant "text 'fUG' as capitalized"; + variant "text 'fUI' as capitalized"; + variant "text 'fUK' as capitalized"; + variant "text 'fUL' as capitalized"; + variant "text 'fUM' as capitalized"; + variant "text 'fUN' as capitalized"; + variant "text 'fUQ' as capitalized"; + variant "text 'fUS' as capitalized"; + variant "text 'fUT' as capitalized"; + variant "text 'fUU' as capitalized"; + variant "text 'fUV' as capitalized"; + variant "text 'fUX' as capitalized"; + variant "text 'fUY' as capitalized"; + variant "text 'fVA' as capitalized"; + variant "text 'fVB' as capitalized"; + variant "text 'fVE' as capitalized"; + variant "text 'fVF' as capitalized"; + variant "text 'fVM' as capitalized"; + variant "text 'fVP' as capitalized"; + variant "text 'fVX' as capitalized"; + variant "text 'fWA' as capitalized"; + variant "text 'fWB' as capitalized"; + variant "text 'fWC' as capitalized"; + variant "text 'fWU' as capitalized"; + variant "text 'fWX' as capitalized"; + variant "text 'fXB' as capitalized"; + variant "text 'fXC' as capitalized"; + variant "text 'fXE' as capitalized"; + variant "text 'fXF' as capitalized"; + variant "text 'fXG' as capitalized"; + variant "text 'fXL' as capitalized"; + variant "text 'fXM' as capitalized"; + variant "text 'fXP' as capitalized"; + variant "text 'fXW' as capitalized"; + variant "text 'fXX' as capitalized"; + variant "text 'fYB' as capitalized"; + variant "text 'fYC' as capitalized"; + variant "text 'fYJ' as capitalized"; + variant "text 'fYS' as capitalized"; + variant "text 'fYU' as capitalized"; + variant "text 'fYX' as capitalized"; + variant "text 'fZG' as capitalized"; + variant "text 'fZP' as capitalized"; + variant "text 'fZX' as capitalized"; + variant "text 'fZZ' as capitalized"; + variant "text 'gAA' as capitalized"; + variant "text 'gAB' as capitalized"; + variant "text 'gAC' as capitalized"; + variant "text 'gAD' as capitalized"; + variant "text 'gAE' as capitalized"; + variant "text 'gAF' as capitalized"; + variant "text 'gAG' as capitalized"; + variant "text 'gAH' as capitalized"; + variant "text 'gAI' as capitalized"; + variant "text 'gAJ' as capitalized"; + variant "text 'gAK' as capitalized"; + variant "text 'gAL' as capitalized"; + variant "text 'gAM' as capitalized"; + variant "text 'gAN' as capitalized"; + variant "text 'gAO' as capitalized"; + variant "text 'gAP' as capitalized"; + variant "text 'gAQ' as capitalized"; + variant "text 'gAR' as capitalized"; + variant "text 'gAS' as capitalized"; + variant "text 'gAT' as capitalized"; + variant "text 'gAU' as capitalized"; + variant "text 'gAV' as capitalized"; + variant "text 'gAW' as capitalized"; + variant "text 'gAX' as capitalized"; + variant "text 'gAY' as capitalized"; + variant "text 'gAZ' as capitalized"; + variant "text 'gBA' as capitalized"; + variant "text 'gBB' as capitalized"; + variant "text 'gBC' as capitalized"; + variant "text 'gBD' as capitalized"; + variant "text 'gBE' as capitalized"; + variant "text 'gBF' as capitalized"; + variant "text 'gBG' as capitalized"; + variant "text 'gBH' as capitalized"; + variant "text 'gBI' as capitalized"; + variant "text 'gBJ' as capitalized"; + variant "text 'gBK' as capitalized"; + variant "text 'gBL' as capitalized"; + variant "text 'gBM' as capitalized"; + variant "text 'gBN' as capitalized"; + variant "text 'gBO' as capitalized"; + variant "text 'gBP' as capitalized"; + variant "text 'gBQ' as capitalized"; + variant "text 'gBR' as capitalized"; + variant "text 'gBS' as capitalized"; + variant "text 'gBT' as capitalized"; + variant "text 'gBU' as capitalized"; + variant "text 'gBV' as capitalized"; + variant "text 'gBW' as capitalized"; + variant "text 'gBX' as capitalized"; + variant "text 'gBY' as capitalized"; + variant "text 'gBZ' as capitalized"; + variant "text 'gCA' as capitalized"; + variant "text 'gCB' as capitalized"; + variant "text 'gCC' as capitalized"; + variant "text 'gCD' as capitalized"; + variant "text 'gCE' as capitalized"; + variant "text 'gCF' as capitalized"; + variant "text 'gCG' as capitalized"; + variant "text 'gCH' as capitalized"; + variant "text 'gCI' as capitalized"; + variant "text 'gCJ' as capitalized"; + variant "text 'gCK' as capitalized"; + variant "text 'gCL' as capitalized"; + variant "text 'gCM' as capitalized"; + variant "text 'gCN' as capitalized"; + variant "text 'gCO' as capitalized"; + variant "text 'gCP' as capitalized"; + variant "text 'gCQ' as capitalized"; + variant "text 'gCR' as capitalized"; + variant "text 'gCS' as capitalized"; + variant "text 'gCT' as capitalized"; + variant "text 'gCU' as capitalized"; + variant "text 'gCV' as capitalized"; + variant "text 'gCW' as capitalized"; + variant "text 'gCX' as capitalized"; + variant "text 'gCY' as capitalized"; + variant "text 'gCZ' as capitalized"; + variant "text 'gDA' as capitalized"; + variant "text 'gDB' as capitalized"; + variant "text 'gDC' as capitalized"; + variant "text 'gDE' as capitalized"; + variant "text 'gDF' as capitalized"; + variant "text 'gDG' as capitalized"; + variant "text 'gDH' as capitalized"; + variant "text 'gDI' as capitalized"; + variant "text 'gDJ' as capitalized"; + variant "text 'gDK' as capitalized"; + variant "text 'gDL' as capitalized"; + variant "text 'gDM' as capitalized"; + variant "text 'gDN' as capitalized"; + variant "text 'gDO' as capitalized"; + variant "text 'gDP' as capitalized"; + variant "text 'gDQ' as capitalized"; + variant "text 'gDR' as capitalized"; + variant "text 'gDS' as capitalized"; + variant "text 'gDT' as capitalized"; + variant "text 'gDU' as capitalized"; + variant "text 'gDV' as capitalized"; + variant "text 'gDW' as capitalized"; + variant "text 'gDX' as capitalized"; + variant "text 'gDY' as capitalized"; + variant "text 'gDZ' as capitalized"; + variant "text 'gEA' as capitalized"; + variant "text 'gEB' as capitalized"; + variant "text 'gEC' as capitalized"; + variant "text 'gED' as capitalized"; + variant "text 'gEE' as capitalized"; + variant "text 'gEF' as capitalized"; + variant "text 'gEG' as capitalized"; + variant "text 'gEH' as capitalized"; + variant "text 'gEI' as capitalized"; + variant "text 'gEJ' as capitalized"; + variant "text 'gEK' as capitalized"; + variant "text 'gEL' as capitalized"; + variant "text 'gEM' as capitalized"; + variant "text 'gEN' as capitalized"; + variant "text 'gEO' as capitalized"; + variant "text 'gEP' as capitalized"; + variant "text 'gEQ' as capitalized"; + variant "text 'gER' as capitalized"; + variant "text 'gES' as capitalized"; + variant "text 'gET' as capitalized"; + variant "text 'gEU' as capitalized"; + variant "text 'gEV' as capitalized"; + variant "text 'gEW' as capitalized"; + variant "text 'gEX' as capitalized"; + variant "text 'gEY' as capitalized"; + variant "text 'gEZ' as capitalized"; + variant "text 'gFA' as capitalized"; + variant "text 'gFB' as capitalized"; + variant "text 'gFC' as capitalized"; + variant "text 'gFD' as capitalized"; + variant "text 'gFE' as capitalized"; + variant "text 'gFF' as capitalized"; + variant "text 'gFG' as capitalized"; + variant "text 'gFH' as capitalized"; + variant "text 'gFI' as capitalized"; + variant "text 'gFJ' as capitalized"; + variant "text 'gFK' as capitalized"; + variant "text 'gFL' as capitalized"; + variant "text 'gFM' as capitalized"; + variant "text 'gFN' as capitalized"; + variant "text 'gFO' as capitalized"; + variant "text 'gFP' as capitalized"; + variant "text 'gFQ' as capitalized"; + variant "text 'gFR' as capitalized"; + variant "text 'gFS' as capitalized"; + variant "text 'gFT' as capitalized"; + variant "text 'gFU' as capitalized"; + variant "text 'gFV' as capitalized"; + variant "text 'gFW' as capitalized"; + variant "text 'gFX' as capitalized"; + variant "text 'gFY' as capitalized"; + variant "text 'gFZ' as capitalized"; + variant "text 'gGA' as capitalized"; + variant "text 'gGB' as capitalized"; + variant "text 'gGC' as capitalized"; + variant "text 'gGD' as capitalized"; + variant "text 'gGE' as capitalized"; + variant "text 'gGF' as capitalized"; + variant "text 'gGG' as capitalized"; + variant "text 'gGH' as capitalized"; + variant "text 'gGI' as capitalized"; + variant "text 'gGJ' as capitalized"; + variant "text 'gGK' as capitalized"; + variant "text 'gGL' as capitalized"; + variant "text 'gGM' as capitalized"; + variant "text 'gGN' as capitalized"; + variant "text 'gGO' as capitalized"; + variant "text 'gGP' as capitalized"; + variant "text 'gGQ' as capitalized"; + variant "text 'gGR' as capitalized"; + variant "text 'gGS' as capitalized"; + variant "text 'gGT' as capitalized"; + variant "text 'gGU' as capitalized"; + variant "text 'gGV' as capitalized"; + variant "text 'gGW' as capitalized"; + variant "text 'gGX' as capitalized"; + variant "text 'gGY' as capitalized"; + variant "text 'gGZ' as capitalized"; + variant "text 'gHA' as capitalized"; + variant "text 'gHB' as capitalized"; + variant "text 'gHC' as capitalized"; + variant "text 'gHD' as capitalized"; + variant "text 'gHE' as capitalized"; + variant "text 'gHF' as capitalized"; + variant "text 'gHG' as capitalized"; + variant "text 'gHH' as capitalized"; + variant "text 'gHI' as capitalized"; + variant "text 'gHJ' as capitalized"; + variant "text 'gHK' as capitalized"; + variant "text 'gHL' as capitalized"; + variant "text 'gHM' as capitalized"; + variant "text 'gHN' as capitalized"; + variant "text 'gHO' as capitalized"; + variant "text 'gHP' as capitalized"; + variant "text 'gHR' as capitalized"; + variant "text 'gHS' as capitalized"; + variant "text 'gHX' as capitalized"; + variant "text 'gIA' as capitalized"; + variant "text 'gIB' as capitalized"; + variant "text 'gIC' as capitalized"; + variant "text 'gID' as capitalized"; + variant "text 'gIE' as capitalized"; + variant "text 'gIF' as capitalized"; + variant "text 'gIH' as capitalized"; + variant "text 'gII' as capitalized"; + variant "text 'gIK' as capitalized"; + variant "text 'gIL' as capitalized"; + variant "text 'gIM' as capitalized"; + variant "text 'gIN' as capitalized"; + variant "text 'gIO' as capitalized"; + variant "text 'gIP' as capitalized"; + variant "text 'gIQ' as capitalized"; + variant "text 'gIR' as capitalized"; + variant "text 'gIS' as capitalized"; + variant "text 'gIT' as capitalized"; + variant "text 'gIU' as capitalized"; + variant "text 'gIV' as capitalized"; + variant "text 'gIW' as capitalized"; + variant "text 'gIX' as capitalized"; + variant "text 'gIY' as capitalized"; + variant "text 'gIZ' as capitalized"; + variant "text 'gJA' as capitalized"; + variant "text 'gJC' as capitalized"; + variant "text 'gJD' as capitalized"; + variant "text 'gJE' as capitalized"; + variant "text 'gJF' as capitalized"; + variant "text 'gJG' as capitalized"; + variant "text 'gJI' as capitalized"; + variant "text 'gJJ' as capitalized"; + variant "text 'gJK' as capitalized"; + variant "text 'gJL' as capitalized"; + variant "text 'gJM' as capitalized"; + variant "text 'gJO' as capitalized"; + variant "text 'gJP' as capitalized"; + variant "text 'gJQ' as capitalized"; + variant "text 'gJR' as capitalized"; + variant "text 'gJT' as capitalized"; + variant "text 'gJU' as capitalized"; + variant "text 'gJV' as capitalized"; + variant "text 'gJW' as capitalized"; + variant "text 'gJX' as capitalized"; + variant "text 'gJZ' as capitalized"; + variant "text 'gKA' as capitalized"; + variant "text 'gKC' as capitalized"; + variant "text 'gKD' as capitalized"; + variant "text 'gKE' as capitalized"; + variant "text 'gKF' as capitalized"; + variant "text 'gKG' as capitalized"; + variant "text 'gKH' as capitalized"; + variant "text 'gKI' as capitalized"; + variant "text 'gKK' as capitalized"; + variant "text 'gKL' as capitalized"; + variant "text 'gKM' as capitalized"; + variant "text 'gKN' as capitalized"; + variant "text 'gKO' as capitalized"; + variant "text 'gKP' as capitalized"; + variant "text 'gKQ' as capitalized"; + variant "text 'gKR' as capitalized"; + variant "text 'gKS' as capitalized"; + variant "text 'gKU' as capitalized"; + variant "text 'gKV' as capitalized"; + variant "text 'gKX' as capitalized"; + variant "text 'gKY' as capitalized"; + variant "text 'gLB' as capitalized"; + variant "text 'gLC' as capitalized"; + variant "text 'gLD' as capitalized"; + variant "text 'gLE' as capitalized"; + variant "text 'gLF' as capitalized"; + variant "text 'gLG' as capitalized"; + variant "text 'gLH' as capitalized"; + variant "text 'gLI' as capitalized"; + variant "text 'gLJ' as capitalized"; + variant "text 'gLK' as capitalized"; + variant "text 'gLL' as capitalized"; + variant "text 'gLM' as capitalized"; + variant "text 'gLN' as capitalized"; + variant "text 'gLO' as capitalized"; + variant "text 'gLP' as capitalized"; + variant "text 'gLQ' as capitalized"; + variant "text 'gLR' as capitalized"; + variant "text 'gLS' as capitalized"; + variant "text 'gLT' as capitalized"; + variant "text 'gLU' as capitalized"; + variant "text 'gLV' as capitalized"; + variant "text 'gLW' as capitalized"; + variant "text 'gLX' as capitalized"; + variant "text 'gLY' as capitalized"; + variant "text 'gLZ' as capitalized"; + variant "text 'gMA' as capitalized"; + variant "text 'gMC' as capitalized"; + variant "text 'gMD' as capitalized"; + variant "text 'gME' as capitalized"; + variant "text 'gMF' as capitalized"; + variant "text 'gMG' as capitalized"; + variant "text 'gMH' as capitalized"; + variant "text 'gMI' as capitalized"; + variant "text 'gMJ' as capitalized"; + variant "text 'gMK' as capitalized"; + variant "text 'gML' as capitalized"; + variant "text 'gMM' as capitalized"; + variant "text 'gMN' as capitalized"; + variant "text 'gMO' as capitalized"; + variant "text 'gMP' as capitalized"; + variant "text 'gMQ' as capitalized"; + variant "text 'gMR' as capitalized"; + variant "text 'gMS' as capitalized"; + variant "text 'gMT' as capitalized"; + variant "text 'gMU' as capitalized"; + variant "text 'gMV' as capitalized"; + variant "text 'gMW' as capitalized"; + variant "text 'gMY' as capitalized"; + variant "text 'gMZ' as capitalized"; + variant "text 'gNA' as capitalized"; + variant "text 'gNB' as capitalized"; + variant "text 'gNC' as capitalized"; + variant "text 'gND' as capitalized"; + variant "text 'gNE' as capitalized"; + variant "text 'gNF' as capitalized"; + variant "text 'gNG' as capitalized"; + variant "text 'gNH' as capitalized"; + variant "text 'gNI' as capitalized"; + variant "text 'gNJ' as capitalized"; + variant "text 'gNK' as capitalized"; + variant "text 'gNL' as capitalized"; + variant "text 'gNM' as capitalized"; + variant "text 'gNN' as capitalized"; + variant "text 'gNO' as capitalized"; + variant "text 'gNP' as capitalized"; + variant "text 'gNQ' as capitalized"; + variant "text 'gNR' as capitalized"; + variant "text 'gNS' as capitalized"; + variant "text 'gNT' as capitalized"; + variant "text 'gNU' as capitalized"; + variant "text 'gNV' as capitalized"; + variant "text 'gNW' as capitalized"; + variant "text 'gNX' as capitalized"; + variant "text 'gNY' as capitalized"; + variant "text 'gNZ' as capitalized"; + variant "text 'gOA' as capitalized"; + variant "text 'gOB' as capitalized"; + variant "text 'gOC' as capitalized"; + variant "text 'gOD' as capitalized"; + variant "text 'gOE' as capitalized"; + variant "text 'gOF' as capitalized"; + variant "text 'gOG' as capitalized"; + variant "text 'gOH' as capitalized"; + variant "text 'gOI' as capitalized"; + variant "text 'gOJ' as capitalized"; + variant "text 'gOK' as capitalized"; + variant "text 'gOL' as capitalized"; + variant "text 'gOM' as capitalized"; + variant "text 'gON' as capitalized"; + variant "text 'gOO' as capitalized"; + variant "text 'gOP' as capitalized"; + variant "text 'gOQ' as capitalized"; + variant "text 'gOR' as capitalized"; + variant "text 'gOT' as capitalized"; + variant "text 'gOU' as capitalized"; + variant "text 'gOV' as capitalized"; + variant "text 'gOW' as capitalized"; + variant "text 'gOX' as capitalized"; + variant "text 'gOY' as capitalized"; + variant "text 'gOZ' as capitalized"; + variant "text 'gPA' as capitalized"; + variant "text 'gPB' as capitalized"; + variant "text 'gPC' as capitalized"; + variant "text 'gPD' as capitalized"; + variant "text 'gPE' as capitalized"; + variant "text 'gPF' as capitalized"; + variant "text 'gPG' as capitalized"; + variant "text 'gPH' as capitalized"; + variant "text 'gPI' as capitalized"; + variant "text 'gPJ' as capitalized"; + variant "text 'gPK' as capitalized"; + variant "text 'gPL' as capitalized"; + variant "text 'gPM' as capitalized"; + variant "text 'gPN' as capitalized"; + variant "text 'gPO' as capitalized"; + variant "text 'gPP' as capitalized"; + variant "text 'gPQ' as capitalized"; + variant "text 'gPR' as capitalized"; + variant "text 'gPS' as capitalized"; + variant "text 'gPT' as capitalized"; + variant "text 'gPU' as capitalized"; + variant "text 'gPV' as capitalized"; + variant "text 'gPW' as capitalized"; + variant "text 'gPX' as capitalized"; + variant "text 'gPY' as capitalized"; + variant "text 'gQA' as capitalized"; + variant "text 'gQB' as capitalized"; + variant "text 'gQC' as capitalized"; + variant "text 'gQD' as capitalized"; + variant "text 'gQE' as capitalized"; + variant "text 'gQF' as capitalized"; + variant "text 'gQG' as capitalized"; + variant "text 'gQH' as capitalized"; + variant "text 'gQI' as capitalized"; + variant "text 'gQJ' as capitalized"; + variant "text 'gQK' as capitalized"; + variant "text 'gQL' as capitalized"; + variant "text 'gQM' as capitalized"; + variant "text 'gQN' as capitalized"; + variant "text 'gQO' as capitalized"; + variant "text 'gQP' as capitalized"; + variant "text 'gQQ' as capitalized"; + variant "text 'gQR' as capitalized"; + variant "text 'gQS' as capitalized"; + variant "text 'gQT' as capitalized"; + variant "text 'gQU' as capitalized"; + variant "text 'gQV' as capitalized"; + variant "text 'gQW' as capitalized"; + variant "text 'gQX' as capitalized"; + variant "text 'gQY' as capitalized"; + variant "text 'gQZ' as capitalized"; + variant "text 'gRA' as capitalized"; + variant "text 'gRB' as capitalized"; + variant "text 'gRC' as capitalized"; + variant "text 'gRD' as capitalized"; + variant "text 'gRE' as capitalized"; + variant "text 'gRF' as capitalized"; + variant "text 'gRG' as capitalized"; + variant "text 'gRH' as capitalized"; + variant "text 'gRI' as capitalized"; + variant "text 'gRJ' as capitalized"; + variant "text 'gRK' as capitalized"; + variant "text 'gRL' as capitalized"; + variant "text 'gRM' as capitalized"; + variant "text 'gRN' as capitalized"; + variant "text 'gRO' as capitalized"; + variant "text 'gRP' as capitalized"; + variant "text 'gRQ' as capitalized"; + variant "text 'gRR' as capitalized"; + variant "text 'gRT' as capitalized"; + variant "text 'gRU' as capitalized"; + variant "text 'gRV' as capitalized"; + variant "text 'gRW' as capitalized"; + variant "text 'gRX' as capitalized"; + variant "text 'gSA' as capitalized"; + variant "text 'gSB' as capitalized"; + variant "text 'gSC' as capitalized"; + variant "text 'gSD' as capitalized"; + variant "text 'gSE' as capitalized"; + variant "text 'gSF' as capitalized"; + variant "text 'gSG' as capitalized"; + variant "text 'gSH' as capitalized"; + variant "text 'gSI' as capitalized"; + variant "text 'gSJ' as capitalized"; + variant "text 'gSK' as capitalized"; + variant "text 'gSL' as capitalized"; + variant "text 'gSM' as capitalized"; + variant "text 'gSN' as capitalized"; + variant "text 'gSO' as capitalized"; + variant "text 'gSP' as capitalized"; + variant "text 'gSQ' as capitalized"; + variant "text 'gSR' as capitalized"; + variant "text 'gSS' as capitalized"; + variant "text 'gST' as capitalized"; + variant "text 'gSU' as capitalized"; + variant "text 'gSV' as capitalized"; + variant "text 'gSW' as capitalized"; + variant "text 'gSX' as capitalized"; + variant "text 'gSY' as capitalized"; + variant "text 'gSZ' as capitalized"; + variant "text 'gTA' as capitalized"; + variant "text 'gTB' as capitalized"; + variant "text 'gTC' as capitalized"; + variant "text 'gTD' as capitalized"; + variant "text 'gTE' as capitalized"; + variant "text 'gTF' as capitalized"; + variant "text 'gTG' as capitalized"; + variant "text 'gTH' as capitalized"; + variant "text 'gTI' as capitalized"; + variant "text 'gTJ' as capitalized"; + variant "text 'gTK' as capitalized"; + variant "text 'gTL' as capitalized"; + variant "text 'gTM' as capitalized"; + variant "text 'gTN' as capitalized"; + variant "text 'gTO' as capitalized"; + variant "text 'gTP' as capitalized"; + variant "text 'gTQ' as capitalized"; + variant "text 'gTR' as capitalized"; + variant "text 'gTS' as capitalized"; + variant "text 'gTT' as capitalized"; + variant "text 'gTU' as capitalized"; + variant "text 'gTV' as capitalized"; + variant "text 'gTW' as capitalized"; + variant "text 'gTX' as capitalized"; + variant "text 'gTY' as capitalized"; + variant "text 'gTZ' as capitalized"; + variant "text 'gUB' as capitalized"; + variant "text 'gUC' as capitalized"; + variant "text 'gUD' as capitalized"; + variant "text 'gUE' as capitalized"; + variant "text 'gUF' as capitalized"; + variant "text 'gUG' as capitalized"; + variant "text 'gUH' as capitalized"; + variant "text 'gUI' as capitalized"; + variant "text 'gUJ' as capitalized"; + variant "text 'gUK' as capitalized"; + variant "text 'gUM' as capitalized"; + variant "text 'gUN' as capitalized"; + variant "text 'gUO' as capitalized"; + variant "text 'gUP' as capitalized"; + variant "text 'gUQ' as capitalized"; + variant "text 'gUR' as capitalized"; + variant "text 'gUS' as capitalized"; + variant "text 'gUT' as capitalized"; + variant "text 'gUU' as capitalized"; + variant "text 'gUV' as capitalized"; + variant "text 'gUW' as capitalized"; + variant "text 'gUX' as capitalized"; + variant "text 'gUY' as capitalized"; + variant "text 'gUZ' as capitalized"; + variant "text 'gVA' as capitalized"; + variant "text 'gVB' as capitalized"; + variant "text 'gVC' as capitalized"; + variant "text 'gVD' as capitalized"; + variant "text 'gVE' as capitalized"; + variant "text 'gVF' as capitalized"; + variant "text 'gVG' as capitalized"; + variant "text 'gVH' as capitalized"; + variant "text 'gVI' as capitalized"; + variant "text 'gVM' as capitalized"; + variant "text 'gVO' as capitalized"; + variant "text 'gVT' as capitalized"; + variant "text 'gVX' as capitalized"; + variant "text 'gWA' as capitalized"; + variant "text 'gWB' as capitalized"; + variant "text 'gWC' as capitalized"; + variant "text 'gWD' as capitalized"; + variant "text 'gWG' as capitalized"; + variant "text 'gWR' as capitalized"; + variant "text 'gWV' as capitalized"; + variant "text 'gWX' as capitalized"; + variant "text 'gXA' as capitalized"; + variant "text 'gXC' as capitalized"; + variant "text 'gXD' as capitalized"; + variant "text 'gXE' as capitalized"; + variant "text 'gXF' as capitalized"; + variant "text 'gXL' as capitalized"; + variant "text 'gXM' as capitalized"; + variant "text 'gXR' as capitalized"; + variant "text 'gXS' as capitalized"; + variant "text 'gXU' as capitalized"; + variant "text 'gXW' as capitalized"; + variant "text 'gXX' as capitalized"; + variant "text 'gYB' as capitalized"; + variant "text 'gYC' as capitalized"; + variant "text 'gYD' as capitalized"; + variant "text 'gYE' as capitalized"; + variant "text 'gYF' as capitalized"; + variant "text 'gYG' as capitalized"; + variant "text 'gYH' as capitalized"; + variant "text 'gYI' as capitalized"; + variant "text 'gYJ' as capitalized"; + variant "text 'gYK' as capitalized"; + variant "text 'gYL' as capitalized"; + variant "text 'gYM' as capitalized"; + variant "text 'gYN' as capitalized"; + variant "text 'gYO' as capitalized"; + variant "text 'gYP' as capitalized"; + variant "text 'gYQ' as capitalized"; + variant "text 'gYR' as capitalized"; + variant "text 'gYS' as capitalized"; + variant "text 'gYT' as capitalized"; + variant "text 'gYU' as capitalized"; + variant "text 'gYV' as capitalized"; + variant "text 'gYW' as capitalized"; + variant "text 'gYY' as capitalized"; + variant "text 'gYZ' as capitalized"; + variant "text 'gZM' as capitalized"; + variant "text 'gZN' as capitalized"; + variant "text 'gZO' as capitalized"; + variant "text 'gZP' as capitalized"; + variant "text 'gZQ' as capitalized"; + variant "text 'gZR' as capitalized"; + variant "text 'gZS' as capitalized"; + variant "text 'gZT' as capitalized"; + variant "text 'gZU' as capitalized"; + variant "text 'gZV' as capitalized"; + variant "text 'gZW' as capitalized"; + variant "text 'gZX' as capitalized"; + variant "text 'gZY' as capitalized"; + variant "text 'gZZ' as capitalized"; + variant "text 'hAA' as capitalized"; + variant "text 'hAB' as capitalized"; + variant "text 'hAD' as capitalized"; + variant "text 'hAE' as capitalized"; + variant "text 'hAF' as capitalized"; + variant "text 'hAG' as capitalized"; + variant "text 'hAH' as capitalized"; + variant "text 'hAI' as capitalized"; + variant "text 'hAJ' as capitalized"; + variant "text 'hAK' as capitalized"; + variant "text 'hAL' as capitalized"; + variant "text 'hAN' as capitalized"; + variant "text 'hAO' as capitalized"; + variant "text 'hAP' as capitalized"; + variant "text 'hAQ' as capitalized"; + variant "text 'hAR' as capitalized"; + variant "text 'hAS' as capitalized"; + variant "text 'hAU' as capitalized"; + variant "text 'hAV' as capitalized"; + variant "text 'hAW' as capitalized"; + variant "text 'hAX' as capitalized"; + variant "text 'hAY' as capitalized"; + variant "text 'hAZ' as capitalized"; + variant "text 'hBA' as capitalized"; + variant "text 'hBB' as capitalized"; + variant "text 'hBC' as capitalized"; + variant "text 'hBD' as capitalized"; + variant "text 'hBE' as capitalized"; + variant "text 'hBF' as capitalized"; + variant "text 'hBG' as capitalized"; + variant "text 'hBH' as capitalized"; + variant "text 'hBI' as capitalized"; + variant "text 'hBJ' as capitalized"; + variant "text 'hBK' as capitalized"; + variant "text 'hBL' as capitalized"; + variant "text 'hBM' as capitalized"; + variant "text 'hBN' as capitalized"; + variant "text 'hBO' as capitalized"; + variant "text 'hBP' as capitalized"; + variant "text 'hBQ' as capitalized"; + variant "text 'hBR' as capitalized"; + variant "text 'hBS' as capitalized"; + variant "text 'hBT' as capitalized"; + variant "text 'hBU' as capitalized"; + variant "text 'hBV' as capitalized"; + variant "text 'hBW' as capitalized"; + variant "text 'hBX' as capitalized"; + variant "text 'hBY' as capitalized"; + variant "text 'hBZ' as capitalized"; + variant "text 'hCA' as capitalized"; + variant "text 'hCB' as capitalized"; + variant "text 'hCC' as capitalized"; + variant "text 'hCD' as capitalized"; + variant "text 'hCE' as capitalized"; + variant "text 'hCF' as capitalized"; + variant "text 'hCG' as capitalized"; + variant "text 'hCH' as capitalized"; + variant "text 'hCI' as capitalized"; + variant "text 'hCJ' as capitalized"; + variant "text 'hCK' as capitalized"; + variant "text 'hCL' as capitalized"; + variant "text 'hCM' as capitalized"; + variant "text 'hCN' as capitalized"; + variant "text 'hCO' as capitalized"; + variant "text 'hCP' as capitalized"; + variant "text 'hCQ' as capitalized"; + variant "text 'hCR' as capitalized"; + variant "text 'hCS' as capitalized"; + variant "text 'hCT' as capitalized"; + variant "text 'hCU' as capitalized"; + variant "text 'hCV' as capitalized"; + variant "text 'hCW' as capitalized"; + variant "text 'hCX' as capitalized"; + variant "text 'hCY' as capitalized"; + variant "text 'hCZ' as capitalized"; + variant "text 'hDA' as capitalized"; + variant "text 'hDB' as capitalized"; + variant "text 'hDC' as capitalized"; + variant "text 'hDD' as capitalized"; + variant "text 'hDE' as capitalized"; + variant "text 'hDF' as capitalized"; + variant "text 'hDG' as capitalized"; + variant "text 'hDH' as capitalized"; + variant "text 'hDI' as capitalized"; + variant "text 'hDJ' as capitalized"; + variant "text 'hDK' as capitalized"; + variant "text 'hDL' as capitalized"; + variant "text 'hDM' as capitalized"; + variant "text 'hDO' as capitalized"; + variant "text 'hDP' as capitalized"; + variant "text 'hDQ' as capitalized"; + variant "text 'hDR' as capitalized"; + variant "text 'hDS' as capitalized"; + variant "text 'hDT' as capitalized"; + variant "text 'hDU' as capitalized"; + variant "text 'hDV' as capitalized"; + variant "text 'hDW' as capitalized"; + variant "text 'hDX' as capitalized"; + variant "text 'hDY' as capitalized"; + variant "text 'hDZ' as capitalized"; + variant "text 'hEA' as capitalized"; + variant "text 'hEB' as capitalized"; + variant "text 'hEC' as capitalized"; + variant "text 'hED' as capitalized"; + variant "text 'hEE' as capitalized"; + variant "text 'hEF' as capitalized"; + variant "text 'hEG' as capitalized"; + variant "text 'hEH' as capitalized"; + variant "text 'hEI' as capitalized"; + variant "text 'hEJ' as capitalized"; + variant "text 'hEK' as capitalized"; + variant "text 'hEL' as capitalized"; + variant "text 'hEM' as capitalized"; + variant "text 'hEN' as capitalized"; + variant "text 'hEO' as capitalized"; + variant "text 'hEP' as capitalized"; + variant "text 'hEQ' as capitalized"; + variant "text 'hER' as capitalized"; + variant "text 'hES' as capitalized"; + variant "text 'hEU' as capitalized"; + variant "text 'hEV' as capitalized"; + variant "text 'hEW' as capitalized"; + variant "text 'hEX' as capitalized"; + variant "text 'hEY' as capitalized"; + variant "text 'hEZ' as capitalized"; + variant "text 'hFA' as capitalized"; + variant "text 'hFB' as capitalized"; + variant "text 'hFC' as capitalized"; + variant "text 'hFD' as capitalized"; + variant "text 'hFE' as capitalized"; + variant "text 'hFF' as capitalized"; + variant "text 'hFG' as capitalized"; + variant "text 'hFH' as capitalized"; + variant "text 'hFI' as capitalized"; + variant "text 'hFJ' as capitalized"; + variant "text 'hFK' as capitalized"; + variant "text 'hFL' as capitalized"; + variant "text 'hFM' as capitalized"; + variant "text 'hFN' as capitalized"; + variant "text 'hFO' as capitalized"; + variant "text 'hFP' as capitalized"; + variant "text 'hFQ' as capitalized"; + variant "text 'hFR' as capitalized"; + variant "text 'hFS' as capitalized"; + variant "text 'hFT' as capitalized"; + variant "text 'hFU' as capitalized"; + variant "text 'hFV' as capitalized"; + variant "text 'hFW' as capitalized"; + variant "text 'hFX' as capitalized"; + variant "text 'hFY' as capitalized"; + variant "text 'hFZ' as capitalized"; + variant "text 'hGA' as capitalized"; + variant "text 'hGB' as capitalized"; + variant "text 'hGC' as capitalized"; + variant "text 'hGD' as capitalized"; + variant "text 'hGE' as capitalized"; + variant "text 'hGF' as capitalized"; + variant "text 'hGG' as capitalized"; + variant "text 'hGH' as capitalized"; + variant "text 'hGI' as capitalized"; + variant "text 'hGJ' as capitalized"; + variant "text 'hGK' as capitalized"; + variant "text 'hGL' as capitalized"; + variant "text 'hGM' as capitalized"; + variant "text 'hGN' as capitalized"; + variant "text 'hGO' as capitalized"; + variant "text 'hGP' as capitalized"; + variant "text 'hGQ' as capitalized"; + variant "text 'hGR' as capitalized"; + variant "text 'hGS' as capitalized"; + variant "text 'hGT' as capitalized"; + variant "text 'hGU' as capitalized"; + variant "text 'hGV' as capitalized"; + variant "text 'hGW' as capitalized"; + variant "text 'hGX' as capitalized"; + variant "text 'hGY' as capitalized"; + variant "text 'hGZ' as capitalized"; + variant "text 'hHA' as capitalized"; + variant "text 'hHB' as capitalized"; + variant "text 'hHC' as capitalized"; + variant "text 'hHD' as capitalized"; + variant "text 'hHE' as capitalized"; + variant "text 'hHF' as capitalized"; + variant "text 'hHG' as capitalized"; + variant "text 'hHH' as capitalized"; + variant "text 'hHI' as capitalized"; + variant "text 'hHJ' as capitalized"; + variant "text 'hHK' as capitalized"; + variant "text 'hHL' as capitalized"; + variant "text 'hHM' as capitalized"; + variant "text 'hHN' as capitalized"; + variant "text 'hHO' as capitalized"; + variant "text 'hHP' as capitalized"; + variant "text 'hHQ' as capitalized"; + variant "text 'hHR' as capitalized"; + variant "text 'hHS' as capitalized"; + variant "text 'hHT' as capitalized"; + variant "text 'hHU' as capitalized"; + variant "text 'hHV' as capitalized"; + variant "text 'hHW' as capitalized"; + variant "text 'hHX' as capitalized"; + variant "text 'hHY' as capitalized"; + variant "text 'hHZ' as capitalized"; + variant "text 'hIA' as capitalized"; + variant "text 'hIB' as capitalized"; + variant "text 'hIC' as capitalized"; + variant "text 'hID' as capitalized"; + variant "text 'hIE' as capitalized"; + variant "text 'hIF' as capitalized"; + variant "text 'hIG' as capitalized"; + variant "text 'hIH' as capitalized"; + variant "text 'hII' as capitalized"; + variant "text 'hIJ' as capitalized"; + variant "text 'hIK' as capitalized"; + variant "text 'hIL' as capitalized"; + variant "text 'hIM' as capitalized"; + variant "text 'hIN' as capitalized"; + variant "text 'hIO' as capitalized"; + variant "text 'hIP' as capitalized"; + variant "text 'hIQ' as capitalized"; + variant "text 'hIR' as capitalized"; + variant "text 'hIS' as capitalized"; + variant "text 'hIT' as capitalized"; + variant "text 'hIU' as capitalized"; + variant "text 'hIV' as capitalized"; + variant "text 'hIW' as capitalized"; + variant "text 'hIX' as capitalized"; + variant "text 'hIY' as capitalized"; + variant "text 'hIZ' as capitalized"; + variant "text 'hJA' as capitalized"; + variant "text 'hJB' as capitalized"; + variant "text 'hJC' as capitalized"; + variant "text 'hJD' as capitalized"; + variant "text 'hJE' as capitalized"; + variant "text 'hJF' as capitalized"; + variant "text 'hJG' as capitalized"; + variant "text 'hJH' as capitalized"; + variant "text 'hJI' as capitalized"; + variant "text 'hJJ' as capitalized"; + variant "text 'hJK' as capitalized"; + variant "text 'hJL' as capitalized"; + variant "text 'hJM' as capitalized"; + variant "text 'hJN' as capitalized"; + variant "text 'hJO' as capitalized"; + variant "text 'hJP' as capitalized"; + variant "text 'hJQ' as capitalized"; + variant "text 'hJR' as capitalized"; + variant "text 'hJS' as capitalized"; + variant "text 'hJT' as capitalized"; + variant "text 'hJU' as capitalized"; + variant "text 'hJV' as capitalized"; + variant "text 'hJW' as capitalized"; + variant "text 'hJX' as capitalized"; + variant "text 'hJY' as capitalized"; + variant "text 'hJZ' as capitalized"; + variant "text 'hKA' as capitalized"; + variant "text 'hKB' as capitalized"; + variant "text 'hKC' as capitalized"; + variant "text 'hKD' as capitalized"; + variant "text 'hKE' as capitalized"; + variant "text 'hKF' as capitalized"; + variant "text 'hKG' as capitalized"; + variant "text 'hKH' as capitalized"; + variant "text 'hKI' as capitalized"; + variant "text 'hKJ' as capitalized"; + variant "text 'hKK' as capitalized"; + variant "text 'hKL' as capitalized"; + variant "text 'hKM' as capitalized"; + variant "text 'hKN' as capitalized"; + variant "text 'hKO' as capitalized"; + variant "text 'hKP' as capitalized"; + variant "text 'hKQ' as capitalized"; + variant "text 'hKR' as capitalized"; + variant "text 'hKS' as capitalized"; + variant "text 'hKT' as capitalized"; + variant "text 'hKU' as capitalized"; + variant "text 'hKV' as capitalized"; + variant "text 'hKW' as capitalized"; + variant "text 'hKX' as capitalized"; + variant "text 'hKY' as capitalized"; + variant "text 'hKZ' as capitalized"; + variant "text 'hLA' as capitalized"; + variant "text 'hLB' as capitalized"; + variant "text 'hLC' as capitalized"; + variant "text 'hLD' as capitalized"; + variant "text 'hLE' as capitalized"; + variant "text 'hLF' as capitalized"; + variant "text 'hLG' as capitalized"; + variant "text 'hLH' as capitalized"; + variant "text 'hLI' as capitalized"; + variant "text 'hLJ' as capitalized"; + variant "text 'hLK' as capitalized"; + variant "text 'hLL' as capitalized"; + variant "text 'hLM' as capitalized"; + variant "text 'hLN' as capitalized"; + variant "text 'hLO' as capitalized"; + variant "text 'hLP' as capitalized"; + variant "text 'hLQ' as capitalized"; + variant "text 'hLR' as capitalized"; + variant "text 'hLS' as capitalized"; + variant "text 'hLT' as capitalized"; + variant "text 'hLU' as capitalized"; + variant "text 'hLV' as capitalized"; + variant "text 'hLW' as capitalized"; + variant "text 'hLX' as capitalized"; + variant "text 'hLY' as capitalized"; + variant "text 'hLZ' as capitalized"; + variant "text 'hMA' as capitalized"; + variant "text 'hMB' as capitalized"; + variant "text 'hMC' as capitalized"; + variant "text 'hMD' as capitalized"; + variant "text 'hME' as capitalized"; + variant "text 'hMF' as capitalized"; + variant "text 'hMG' as capitalized"; + variant "text 'hMH' as capitalized"; + variant "text 'hMI' as capitalized"; + variant "text 'hMJ' as capitalized"; + variant "text 'hMK' as capitalized"; + variant "text 'hML' as capitalized"; + variant "text 'hMM' as capitalized"; + variant "text 'hMN' as capitalized"; + variant "text 'hMO' as capitalized"; + variant "text 'hMP' as capitalized"; + variant "text 'hMQ' as capitalized"; + variant "text 'hMR' as capitalized"; + variant "text 'hMS' as capitalized"; + variant "text 'hMT' as capitalized"; + variant "text 'hMU' as capitalized"; + variant "text 'hMV' as capitalized"; + variant "text 'hMW' as capitalized"; + variant "text 'hMX' as capitalized"; + variant "text 'hMY' as capitalized"; + variant "text 'hMZ' as capitalized"; + variant "text 'hNA' as capitalized"; + variant "text 'hNB' as capitalized"; + variant "text 'hNC' as capitalized"; + variant "text 'hND' as capitalized"; + variant "text 'hNE' as capitalized"; + variant "text 'hNF' as capitalized"; + variant "text 'hNG' as capitalized"; + variant "text 'hNH' as capitalized"; + variant "text 'hNI' as capitalized"; + variant "text 'hNJ' as capitalized"; + variant "text 'hNK' as capitalized"; + variant "text 'hNL' as capitalized"; + variant "text 'hNM' as capitalized"; + variant "text 'hNN' as capitalized"; + variant "text 'hNO' as capitalized"; + variant "text 'hNP' as capitalized"; + variant "text 'hNQ' as capitalized"; + variant "text 'hNR' as capitalized"; + variant "text 'hNS' as capitalized"; + variant "text 'hNT' as capitalized"; + variant "text 'hNU' as capitalized"; + variant "text 'hNV' as capitalized"; + variant "text 'hNW' as capitalized"; + variant "text 'hNX' as capitalized"; + variant "text 'hNY' as capitalized"; + variant "text 'hNZ' as capitalized"; + variant "text 'hOA' as capitalized"; + variant "text 'hOB' as capitalized"; + variant "text 'hOC' as capitalized"; + variant "text 'hOD' as capitalized"; + variant "text 'hOE' as capitalized"; + variant "text 'hOF' as capitalized"; + variant "text 'hOG' as capitalized"; + variant "text 'hOH' as capitalized"; + variant "text 'hOI' as capitalized"; + variant "text 'hOJ' as capitalized"; + variant "text 'hOK' as capitalized"; + variant "text 'hOL' as capitalized"; + variant "text 'hOM' as capitalized"; + variant "text 'hON' as capitalized"; + variant "text 'hOO' as capitalized"; + variant "text 'hOP' as capitalized"; + variant "text 'hOQ' as capitalized"; + variant "text 'hOR' as capitalized"; + variant "text 'hOS' as capitalized"; + variant "text 'hOT' as capitalized"; + variant "text 'hOU' as capitalized"; + variant "text 'hOV' as capitalized"; + variant "text 'hOW' as capitalized"; + variant "text 'hOX' as capitalized"; + variant "text 'hOY' as capitalized"; + variant "text 'hOZ' as capitalized"; + variant "text 'hPB' as capitalized"; + variant "text 'hPC' as capitalized"; + variant "text 'hPD' as capitalized"; + variant "text 'hPE' as capitalized"; + variant "text 'hPF' as capitalized"; + variant "text 'hPG' as capitalized"; + variant "text 'hPH' as capitalized"; + variant "text 'hPI' as capitalized"; + variant "text 'hPJ' as capitalized"; + variant "text 'hPK' as capitalized"; + variant "text 'hPL' as capitalized"; + variant "text 'hPM' as capitalized"; + variant "text 'hPN' as capitalized"; + variant "text 'hPO' as capitalized"; + variant "text 'hPP' as capitalized"; + variant "text 'hPQ' as capitalized"; + variant "text 'hPR' as capitalized"; + variant "text 'hPS' as capitalized"; + variant "text 'hPT' as capitalized"; + variant "text 'hPU' as capitalized"; + variant "text 'hPV' as capitalized"; + variant "text 'hPW' as capitalized"; + variant "text 'hPX' as capitalized"; + variant "text 'hPY' as capitalized"; + variant "text 'hPZ' as capitalized"; + variant "text 'hQA' as capitalized"; + variant "text 'hQB' as capitalized"; + variant "text 'hQC' as capitalized"; + variant "text 'hQD' as capitalized"; + variant "text 'hQE' as capitalized"; + variant "text 'hQF' as capitalized"; + variant "text 'hQG' as capitalized"; + variant "text 'hQH' as capitalized"; + variant "text 'hQI' as capitalized"; + variant "text 'hQJ' as capitalized"; + variant "text 'hQK' as capitalized"; + variant "text 'hQL' as capitalized"; + variant "text 'hQM' as capitalized"; + variant "text 'hQN' as capitalized"; + variant "text 'hQO' as capitalized"; + variant "text 'hQP' as capitalized"; + variant "text 'hQQ' as capitalized"; + variant "text 'hQR' as capitalized"; + variant "text 'hQS' as capitalized"; + variant "text 'hQT' as capitalized"; + variant "text 'hQU' as capitalized"; + variant "text 'hQV' as capitalized"; + variant "text 'hQW' as capitalized"; + variant "text 'hQX' as capitalized"; + variant "text 'hQY' as capitalized"; + variant "text 'hQZ' as capitalized"; + variant "text 'hRA' as capitalized"; + variant "text 'hRB' as capitalized"; + variant "text 'hRC' as capitalized"; + variant "text 'hRD' as capitalized"; + variant "text 'hRE' as capitalized"; + variant "text 'hRF' as capitalized"; + variant "text 'hRG' as capitalized"; + variant "text 'hRH' as capitalized"; + variant "text 'hRI' as capitalized"; + variant "text 'hRJ' as capitalized"; + variant "text 'hRK' as capitalized"; + variant "text 'hRL' as capitalized"; + variant "text 'hRM' as capitalized"; + variant "text 'hRN' as capitalized"; + variant "text 'hRO' as capitalized"; + variant "text 'hRP' as capitalized"; + variant "text 'hRQ' as capitalized"; + variant "text 'hRR' as capitalized"; + variant "text 'hRS' as capitalized"; + variant "text 'hRT' as capitalized"; + variant "text 'hRU' as capitalized"; + variant "text 'hRV' as capitalized"; + variant "text 'hRW' as capitalized"; + variant "text 'hRX' as capitalized"; + variant "text 'hRY' as capitalized"; + variant "text 'hRZ' as capitalized"; + variant "text 'hSA' as capitalized"; + variant "text 'hSB' as capitalized"; + variant "text 'hSC' as capitalized"; + variant "text 'hSD' as capitalized"; + variant "text 'hSE' as capitalized"; + variant "text 'hSF' as capitalized"; + variant "text 'hSG' as capitalized"; + variant "text 'hSH' as capitalized"; + variant "text 'hSI' as capitalized"; + variant "text 'hSJ' as capitalized"; + variant "text 'hSK' as capitalized"; + variant "text 'hSL' as capitalized"; + variant "text 'hSM' as capitalized"; + variant "text 'hSN' as capitalized"; + variant "text 'hSO' as capitalized"; + variant "text 'hSP' as capitalized"; + variant "text 'hSQ' as capitalized"; + variant "text 'hSR' as capitalized"; + variant "text 'hSS' as capitalized"; + variant "text 'hST' as capitalized"; + variant "text 'hSU' as capitalized"; + variant "text 'hSV' as capitalized"; + variant "text 'hSW' as capitalized"; + variant "text 'hSX' as capitalized"; + variant "text 'hSY' as capitalized"; + variant "text 'hSZ' as capitalized"; + variant "text 'hTA' as capitalized"; + variant "text 'hTB' as capitalized"; + variant "text 'hTC' as capitalized"; + variant "text 'hTD' as capitalized"; + variant "text 'hTE' as capitalized"; + variant "text 'hTF' as capitalized"; + variant "text 'hTG' as capitalized"; + variant "text 'hTH' as capitalized"; + variant "text 'hTI' as capitalized"; + variant "text 'hTJ' as capitalized"; + variant "text 'hTK' as capitalized"; + variant "text 'hTL' as capitalized"; + variant "text 'hTM' as capitalized"; + variant "text 'hTN' as capitalized"; + variant "text 'hTO' as capitalized"; + variant "text 'hTP' as capitalized"; + variant "text 'hTQ' as capitalized"; + variant "text 'hTR' as capitalized"; + variant "text 'hTS' as capitalized"; + variant "text 'hTU' as capitalized"; + variant "text 'hTV' as capitalized"; + variant "text 'hTW' as capitalized"; + variant "text 'hTX' as capitalized"; + variant "text 'hTY' as capitalized"; + variant "text 'hTZ' as capitalized"; + variant "text 'hUA' as capitalized"; + variant "text 'hUB' as capitalized"; + variant "text 'hUC' as capitalized"; + variant "text 'hUD' as capitalized"; + variant "text 'hUE' as capitalized"; + variant "text 'hUF' as capitalized"; + variant "text 'hUG' as capitalized"; + variant "text 'hUH' as capitalized"; + variant "text 'hUI' as capitalized"; + variant "text 'hUJ' as capitalized"; + variant "text 'hUK' as capitalized"; + variant "text 'hUL' as capitalized"; + variant "text 'hUM' as capitalized"; + variant "text 'hUN' as capitalized"; + variant "text 'hUO' as capitalized"; + variant "text 'hUP' as capitalized"; + variant "text 'hUQ' as capitalized"; + variant "text 'hUR' as capitalized"; + variant "text 'hUS' as capitalized"; + variant "text 'hUT' as capitalized"; + variant "text 'hUU' as capitalized"; + variant "text 'hUV' as capitalized"; + variant "text 'hUW' as capitalized"; + variant "text 'hUX' as capitalized"; + variant "text 'hUY' as capitalized"; + variant "text 'hUZ' as capitalized"; + variant "text 'hVA' as capitalized"; + variant "text 'hVB' as capitalized"; + variant "text 'hVC' as capitalized"; + variant "text 'hVD' as capitalized"; + variant "text 'hVE' as capitalized"; + variant "text 'hVG' as capitalized"; + variant "text 'hVH' as capitalized"; + variant "text 'hVI' as capitalized"; + variant "text 'hVJ' as capitalized"; + variant "text 'hVK' as capitalized"; + variant "text 'hVL' as capitalized"; + variant "text 'hVM' as capitalized"; + variant "text 'hVN' as capitalized"; + variant "text 'hVP' as capitalized"; + variant "text 'hVQ' as capitalized"; + variant "text 'hVR' as capitalized"; + variant "text 'hVS' as capitalized"; + variant "text 'hVT' as capitalized"; + variant "text 'hVU' as capitalized"; + variant "text 'hVV' as capitalized"; + variant "text 'hVW' as capitalized"; + variant "text 'hVX' as capitalized"; + variant "text 'hVY' as capitalized"; + variant "text 'hVZ' as capitalized"; + variant "text 'hWA' as capitalized"; + variant "text 'hWB' as capitalized"; + variant "text 'hWC' as capitalized"; + variant "text 'hWD' as capitalized"; + variant "text 'hWE' as capitalized"; + variant "text 'hWF' as capitalized"; + variant "text 'hWH' as capitalized"; + variant "text 'hWJ' as capitalized"; + variant "text 'hWK' as capitalized"; + variant "text 'hWL' as capitalized"; + variant "text 'hWM' as capitalized"; + variant "text 'hWN' as capitalized"; + variant "text 'hWP' as capitalized"; + variant "text 'hWQ' as capitalized"; + variant "text 'hWR' as capitalized"; + variant "text 'hWS' as capitalized"; + variant "text 'hWT' as capitalized"; + variant "text 'hWU' as capitalized"; + variant "text 'hWV' as capitalized"; + variant "text 'hWW' as capitalized"; + variant "text 'hWX' as capitalized"; + variant "text 'hWY' as capitalized"; + variant "text 'hWZ' as capitalized"; + variant "text 'hXA' as capitalized"; + variant "text 'hXB' as capitalized"; + variant "text 'hXC' as capitalized"; + variant "text 'hXD' as capitalized"; + variant "text 'hXE' as capitalized"; + variant "text 'hXF' as capitalized"; + variant "text 'hXG' as capitalized"; + variant "text 'hXH' as capitalized"; + variant "text 'hXI' as capitalized"; + variant "text 'hXJ' as capitalized"; + variant "text 'hXK' as capitalized"; + variant "text 'hXL' as capitalized"; + variant "text 'hXM' as capitalized"; + variant "text 'hXN' as capitalized"; + variant "text 'hXO' as capitalized"; + variant "text 'hXP' as capitalized"; + variant "text 'hXQ' as capitalized"; + variant "text 'hXR' as capitalized"; + variant "text 'hXS' as capitalized"; + variant "text 'hXT' as capitalized"; + variant "text 'hXU' as capitalized"; + variant "text 'hXV' as capitalized"; + variant "text 'hXW' as capitalized"; + variant "text 'hXX' as capitalized"; + variant "text 'hXY' as capitalized"; + variant "text 'hXZ' as capitalized"; + variant "text 'hYA' as capitalized"; + variant "text 'hYB' as capitalized"; + variant "text 'hYC' as capitalized"; + variant "text 'hYD' as capitalized"; + variant "text 'hYE' as capitalized"; + variant "text 'hYF' as capitalized"; + variant "text 'hYG' as capitalized"; + variant "text 'hYH' as capitalized"; + variant "text 'hYI' as capitalized"; + variant "text 'hYJ' as capitalized"; + variant "text 'hYK' as capitalized"; + variant "text 'hYL' as capitalized"; + variant "text 'hYM' as capitalized"; + variant "text 'hYN' as capitalized"; + variant "text 'hYO' as capitalized"; + variant "text 'hYQ' as capitalized"; + variant "text 'hYR' as capitalized"; + variant "text 'hYS' as capitalized"; + variant "text 'hYT' as capitalized"; + variant "text 'hYU' as capitalized"; + variant "text 'hYV' as capitalized"; + variant "text 'hYW' as capitalized"; + variant "text 'hYX' as capitalized"; + variant "text 'hYY' as capitalized"; + variant "text 'hYZ' as capitalized"; + variant "text 'hZA' as capitalized"; + variant "text 'hZB' as capitalized"; + variant "text 'hZC' as capitalized"; + variant "text 'hZD' as capitalized"; + variant "text 'hZE' as capitalized"; + variant "text 'hZI' as capitalized"; + variant "text 'hZL' as capitalized"; + variant "text 'hZM' as capitalized"; + variant "text 'hZO' as capitalized"; + variant "text 'hZP' as capitalized"; + variant "text 'hZS' as capitalized"; + variant "text 'hZT' as capitalized"; + variant "text 'hZU' as capitalized"; + variant "text 'hZV' as capitalized"; + variant "text 'hZW' as capitalized"; + variant "text 'hZX' as capitalized"; + variant "text 'hZY' as capitalized"; + variant "text 'hZZ' as capitalized"; + variant "text 'iAA' as capitalized"; + variant "text 'iAB' as capitalized"; + variant "text 'iAC' as capitalized"; + variant "text 'iAD' as capitalized"; + variant "text 'iAE' as capitalized"; + variant "text 'iAF' as capitalized"; + variant "text 'iAG' as capitalized"; + variant "text 'iAH' as capitalized"; + variant "text 'iAI' as capitalized"; + variant "text 'iAJ' as capitalized"; + variant "text 'iAK' as capitalized"; + variant "text 'iAL' as capitalized"; + variant "text 'iAM' as capitalized"; + variant "text 'iAN' as capitalized"; + variant "text 'iAO' as capitalized"; + variant "text 'iAP' as capitalized"; + variant "text 'iAQ' as capitalized"; + variant "text 'iAR' as capitalized"; + variant "text 'iAS' as capitalized"; + variant "text 'iAT' as capitalized"; + variant "text 'iAU' as capitalized"; + variant "text 'iAV' as capitalized"; + variant "text 'iAW' as capitalized"; + variant "text 'iAX' as capitalized"; + variant "text 'iAY' as capitalized"; + variant "text 'iAZ' as capitalized"; + variant "text 'iBA' as capitalized"; + variant "text 'iBB' as capitalized"; + variant "text 'iBC' as capitalized"; + variant "text 'iBD' as capitalized"; + variant "text 'iBE' as capitalized"; + variant "text 'iBF' as capitalized"; + variant "text 'iBG' as capitalized"; + variant "text 'iBH' as capitalized"; + variant "text 'iBI' as capitalized"; + variant "text 'iBJ' as capitalized"; + variant "text 'iBK' as capitalized"; + variant "text 'iBL' as capitalized"; + variant "text 'iBM' as capitalized"; + variant "text 'iBN' as capitalized"; + variant "text 'iBO' as capitalized"; + variant "text 'iBP' as capitalized"; + variant "text 'iBQ' as capitalized"; + variant "text 'iBR' as capitalized"; + variant "text 'iBS' as capitalized"; + variant "text 'iBT' as capitalized"; + variant "text 'iBU' as capitalized"; + variant "text 'iBV' as capitalized"; + variant "text 'iBW' as capitalized"; + variant "text 'iBX' as capitalized"; + variant "text 'iBY' as capitalized"; + variant "text 'iBZ' as capitalized"; + variant "text 'iCA' as capitalized"; + variant "text 'iCB' as capitalized"; + variant "text 'iCC' as capitalized"; + variant "text 'iCD' as capitalized"; + variant "text 'iCE' as capitalized"; + variant "text 'iCF' as capitalized"; + variant "text 'iCG' as capitalized"; + variant "text 'iCH' as capitalized"; + variant "text 'iCI' as capitalized"; + variant "text 'iCJ' as capitalized"; + variant "text 'iCK' as capitalized"; + variant "text 'iCL' as capitalized"; + variant "text 'iCM' as capitalized"; + variant "text 'iCN' as capitalized"; + variant "text 'iCO' as capitalized"; + variant "text 'iCP' as capitalized"; + variant "text 'iCQ' as capitalized"; + variant "text 'iCR' as capitalized"; + variant "text 'iCS' as capitalized"; + variant "text 'iCT' as capitalized"; + variant "text 'iCU' as capitalized"; + variant "text 'iCV' as capitalized"; + variant "text 'iCW' as capitalized"; + variant "text 'iCX' as capitalized"; + variant "text 'iCY' as capitalized"; + variant "text 'iCZ' as capitalized"; + variant "text 'iDA' as capitalized"; + variant "text 'iDB' as capitalized"; + variant "text 'iDC' as capitalized"; + variant "text 'iDD' as capitalized"; + variant "text 'iDE' as capitalized"; + variant "text 'iDF' as capitalized"; + variant "text 'iDG' as capitalized"; + variant "text 'iDH' as capitalized"; + variant "text 'iDI' as capitalized"; + variant "text 'iDJ' as capitalized"; + variant "text 'iDK' as capitalized"; + variant "text 'iDL' as capitalized"; + variant "text 'iDM' as capitalized"; + variant "text 'iDN' as capitalized"; + variant "text 'iDO' as capitalized"; + variant "text 'iDP' as capitalized"; + variant "text 'iDQ' as capitalized"; + variant "text 'iDR' as capitalized"; + variant "text 'iDT' as capitalized"; + variant "text 'iDU' as capitalized"; + variant "text 'iDV' as capitalized"; + variant "text 'iDW' as capitalized"; + variant "text 'iDX' as capitalized"; + variant "text 'iDY' as capitalized"; + variant "text 'iDZ' as capitalized"; + variant "text 'iEA' as capitalized"; + variant "text 'iEB' as capitalized"; + variant "text 'iEC' as capitalized"; + variant "text 'iED' as capitalized"; + variant "text 'iEE' as capitalized"; + variant "text 'iEF' as capitalized"; + variant "text 'iEG' as capitalized"; + variant "text 'iEH' as capitalized"; + variant "text 'iEI' as capitalized"; + variant "text 'iEJ' as capitalized"; + variant "text 'iEK' as capitalized"; + variant "text 'iEL' as capitalized"; + variant "text 'iEM' as capitalized"; + variant "text 'iEN' as capitalized"; + variant "text 'iEO' as capitalized"; + variant "text 'iEP' as capitalized"; + variant "text 'iEQ' as capitalized"; + variant "text 'iER' as capitalized"; + variant "text 'iET' as capitalized"; + variant "text 'iEU' as capitalized"; + variant "text 'iEV' as capitalized"; + variant "text 'iEW' as capitalized"; + variant "text 'iEX' as capitalized"; + variant "text 'iEY' as capitalized"; + variant "text 'iEZ' as capitalized"; + variant "text 'iFA' as capitalized"; + variant "text 'iFB' as capitalized"; + variant "text 'iFC' as capitalized"; + variant "text 'iFD' as capitalized"; + variant "text 'iFK' as capitalized"; + variant "text 'iFL' as capitalized"; + variant "text 'iFQ' as capitalized"; + variant "text 'iFR' as capitalized"; + variant "text 'iFT' as capitalized"; + variant "text 'iFV' as capitalized"; + variant "text 'iFX' as capitalized"; + variant "text 'iFY' as capitalized"; + variant "text 'iGA' as capitalized"; + variant "text 'iGB' as capitalized"; + variant "text 'iGC' as capitalized"; + variant "text 'iGD' as capitalized"; + variant "text 'iGE' as capitalized"; + variant "text 'iGF' as capitalized"; + variant "text 'iGG' as capitalized"; + variant "text 'iGH' as capitalized"; + variant "text 'iGI' as capitalized"; + variant "text 'iGJ' as capitalized"; + variant "text 'iGL' as capitalized"; + variant "text 'iGM' as capitalized"; + variant "text 'iGN' as capitalized"; + variant "text 'iGO' as capitalized"; + variant "text 'iGP' as capitalized"; + variant "text 'iGQ' as capitalized"; + variant "text 'iGR' as capitalized"; + variant "text 'iGS' as capitalized"; + variant "text 'iGT' as capitalized"; + variant "text 'iGU' as capitalized"; + variant "text 'iGV' as capitalized"; + variant "text 'iGX' as capitalized"; + variant "text 'iHA' as capitalized"; + variant "text 'iHB' as capitalized"; + variant "text 'iHC' as capitalized"; + variant "text 'iHD' as capitalized"; + variant "text 'iHE' as capitalized"; + variant "text 'iHF' as capitalized"; + variant "text 'iHG' as capitalized"; + variant "text 'iHH' as capitalized"; + variant "text 'iHI' as capitalized"; + variant "text 'iHJ' as capitalized"; + variant "text 'iHL' as capitalized"; + variant "text 'iHN' as capitalized"; + variant "text 'iHO' as capitalized"; + variant "text 'iHP' as capitalized"; + variant "text 'iHQ' as capitalized"; + variant "text 'iHR' as capitalized"; + variant "text 'iHS' as capitalized"; + variant "text 'iHT' as capitalized"; + variant "text 'iHV' as capitalized"; + variant "text 'iHX' as capitalized"; + variant "text 'iHY' as capitalized"; + variant "text 'iIB' as capitalized"; + variant "text 'iIC' as capitalized"; + variant "text 'iID' as capitalized"; + variant "text 'iIE' as capitalized"; + variant "text 'iIG' as capitalized"; + variant "text 'iII' as capitalized"; + variant "text 'iIL' as capitalized"; + variant "text 'iIN' as capitalized"; + variant "text 'iIR' as capitalized"; + variant "text 'iIS' as capitalized"; + variant "text 'iIT' as capitalized"; + variant "text 'iIU' as capitalized"; + variant "text 'iIV' as capitalized"; + variant "text 'iIX' as capitalized"; + variant "text 'iJI' as capitalized"; + variant "text 'iJX' as capitalized"; + variant "text 'iJY' as capitalized"; + variant "text 'iJZ' as capitalized"; + variant "text 'iKA' as capitalized"; + variant "text 'iKB' as capitalized"; + variant "text 'iKC' as capitalized"; + variant "text 'iKD' as capitalized"; + variant "text 'iKE' as capitalized"; + variant "text 'iKF' as capitalized"; + variant "text 'iKG' as capitalized"; + variant "text 'iKH' as capitalized"; + variant "text 'iKI' as capitalized"; + variant "text 'iKJ' as capitalized"; + variant "text 'iKK' as capitalized"; + variant "text 'iKL' as capitalized"; + variant "text 'iKM' as capitalized"; + variant "text 'iKN' as capitalized"; + variant "text 'iKO' as capitalized"; + variant "text 'iKP' as capitalized"; + variant "text 'iKQ' as capitalized"; + variant "text 'iKR' as capitalized"; + variant "text 'iKS' as capitalized"; + variant "text 'iKT' as capitalized"; + variant "text 'iKU' as capitalized"; + variant "text 'iKV' as capitalized"; + variant "text 'iKW' as capitalized"; + variant "text 'iKX' as capitalized"; + variant "text 'iKY' as capitalized"; + variant "text 'iLA' as capitalized"; + variant "text 'iLB' as capitalized"; + variant "text 'iLE' as capitalized"; + variant "text 'iLF' as capitalized"; + variant "text 'iLG' as capitalized"; + variant "text 'iLI' as capitalized"; + variant "text 'iLJ' as capitalized"; + variant "text 'iLK' as capitalized"; + variant "text 'iLL' as capitalized"; + variant "text 'iLM' as capitalized"; + variant "text 'iLN' as capitalized"; + variant "text 'iLO' as capitalized"; + variant "text 'iLP' as capitalized"; + variant "text 'iLQ' as capitalized"; + variant "text 'iLR' as capitalized"; + variant "text 'iLS' as capitalized"; + variant "text 'iLX' as capitalized"; + variant "text 'iLY' as capitalized"; + variant "text 'iMA' as capitalized"; + variant "text 'iMB' as capitalized"; + variant "text 'iMD' as capitalized"; + variant "text 'iME' as capitalized"; + variant "text 'iML' as capitalized"; + variant "text 'iMM' as capitalized"; + variant "text 'iMO' as capitalized"; + variant "text 'iMP' as capitalized"; + variant "text 'iMR' as capitalized"; + variant "text 'iMS' as capitalized"; + variant "text 'iMT' as capitalized"; + variant "text 'iMV' as capitalized"; + variant "text 'iMX' as capitalized"; + variant "text 'iMY' as capitalized"; + variant "text 'iNA' as capitalized"; + variant "text 'iNB' as capitalized"; + variant "text 'iNC' as capitalized"; + variant "text 'iND' as capitalized"; + variant "text 'iNE' as capitalized"; + variant "text 'iNF' as capitalized"; + variant "text 'iNG' as capitalized"; + variant "text 'iNI' as capitalized"; + variant "text 'iNJ' as capitalized"; + variant "text 'iNK' as capitalized"; + variant "text 'iNL' as capitalized"; + variant "text 'iNM' as capitalized"; + variant "text 'iNN' as capitalized"; + variant "text 'iNO' as capitalized"; + variant "text 'iNP' as capitalized"; + variant "text 'iNQ' as capitalized"; + variant "text 'iNR' as capitalized"; + variant "text 'iNT' as capitalized"; + variant "text 'iNU' as capitalized"; + variant "text 'iNV' as capitalized"; + variant "text 'iNW' as capitalized"; + variant "text 'iNX' as capitalized"; + variant "text 'iNZ' as capitalized"; + variant "text 'iOA' as capitalized"; + variant "text 'iOB' as capitalized"; + variant "text 'iOD' as capitalized"; + variant "text 'iOE' as capitalized"; + variant "text 'iOF' as capitalized"; + variant "text 'iOI' as capitalized"; + variant "text 'iOJ' as capitalized"; + variant "text 'iOK' as capitalized"; + variant "text 'iOL' as capitalized"; + variant "text 'iOM' as capitalized"; + variant "text 'iOO' as capitalized"; + variant "text 'iOP' as capitalized"; + variant "text 'iOQ' as capitalized"; + variant "text 'iOR' as capitalized"; + variant "text 'iOS' as capitalized"; + variant "text 'iOT' as capitalized"; + variant "text 'iOU' as capitalized"; + variant "text 'iOV' as capitalized"; + variant "text 'iOX' as capitalized"; + variant "text 'iOZ' as capitalized"; + variant "text 'iPD' as capitalized"; + variant "text 'iPG' as capitalized"; + variant "text 'iPH' as capitalized"; + variant "text 'iPL' as capitalized"; + variant "text 'iPN' as capitalized"; + variant "text 'iPO' as capitalized"; + variant "text 'iPP' as capitalized"; + variant "text 'iPT' as capitalized"; + variant "text 'iPU' as capitalized"; + variant "text 'iPX' as capitalized"; + variant "text 'iPZ' as capitalized"; + variant "text 'iQA' as capitalized"; + variant "text 'iQH' as capitalized"; + variant "text 'iQI' as capitalized"; + variant "text 'iQJ' as capitalized"; + variant "text 'iQK' as capitalized"; + variant "text 'iQL' as capitalized"; + variant "text 'iQM' as capitalized"; + variant "text 'iQN' as capitalized"; + variant "text 'iQO' as capitalized"; + variant "text 'iQP' as capitalized"; + variant "text 'iQQ' as capitalized"; + variant "text 'iQR' as capitalized"; + variant "text 'iQS' as capitalized"; + variant "text 'iQT' as capitalized"; + variant "text 'iQU' as capitalized"; + variant "text 'iQV' as capitalized"; + variant "text 'iQW' as capitalized"; + variant "text 'iQX' as capitalized"; + variant "text 'iRA' as capitalized"; + variant "text 'iRB' as capitalized"; + variant "text 'iRD' as capitalized"; + variant "text 'iRE' as capitalized"; + variant "text 'iRF' as capitalized"; + variant "text 'iRG' as capitalized"; + variant "text 'iRH' as capitalized"; + variant "text 'iRI' as capitalized"; + variant "text 'iRJ' as capitalized"; + variant "text 'iRK' as capitalized"; + variant "text 'iRL' as capitalized"; + variant "text 'iRM' as capitalized"; + variant "text 'iRN' as capitalized"; + variant "text 'iRO' as capitalized"; + variant "text 'iRP' as capitalized"; + variant "text 'iRQ' as capitalized"; + variant "text 'iRR' as capitalized"; + variant "text 'iRS' as capitalized"; + variant "text 'iRT' as capitalized"; + variant "text 'iRV' as capitalized"; + variant "text 'iRW' as capitalized"; + variant "text 'iRX' as capitalized"; + variant "text 'iRZ' as capitalized"; + variant "text 'iSA' as capitalized"; + variant "text 'iSB' as capitalized"; + variant "text 'iSC' as capitalized"; + variant "text 'iSD' as capitalized"; + variant "text 'iSE' as capitalized"; + variant "text 'iSF' as capitalized"; + variant "text 'iSG' as capitalized"; + variant "text 'iSH' as capitalized"; + variant "text 'iSI' as capitalized"; + variant "text 'iSJ' as capitalized"; + variant "text 'iSK' as capitalized"; + variant "text 'iSL' as capitalized"; + variant "text 'iSM' as capitalized"; + variant "text 'iSN' as capitalized"; + variant "text 'iSO' as capitalized"; + variant "text 'iSP' as capitalized"; + variant "text 'iSQ' as capitalized"; + variant "text 'iSR' as capitalized"; + variant "text 'iSS' as capitalized"; + variant "text 'iST' as capitalized"; + variant "text 'iSU' as capitalized"; + variant "text 'iSV' as capitalized"; + variant "text 'iSW' as capitalized"; + variant "text 'iSX' as capitalized"; + variant "text 'iSY' as capitalized"; + variant "text 'iSZ' as capitalized"; + variant "text 'iTA' as capitalized"; + variant "text 'iTB' as capitalized"; + variant "text 'iTC' as capitalized"; + variant "text 'iTD' as capitalized"; + variant "text 'iTE' as capitalized"; + variant "text 'iTF' as capitalized"; + variant "text 'iTG' as capitalized"; + variant "text 'iTH' as capitalized"; + variant "text 'iTI' as capitalized"; + variant "text 'iTJ' as capitalized"; + variant "text 'iTK' as capitalized"; + variant "text 'iTL' as capitalized"; + variant "text 'iTM' as capitalized"; + variant "text 'iTN' as capitalized"; + variant "text 'iTO' as capitalized"; + variant "text 'iTP' as capitalized"; + variant "text 'iTQ' as capitalized"; + variant "text 'iTR' as capitalized"; + variant "text 'iTS' as capitalized"; + variant "text 'iTT' as capitalized"; + variant "text 'iTU' as capitalized"; + variant "text 'iTV' as capitalized"; + variant "text 'iTW' as capitalized"; + variant "text 'iTX' as capitalized"; + variant "text 'iTZ' as capitalized"; + variant "text 'iUA' as capitalized"; + variant "text 'iUB' as capitalized"; + variant "text 'iUC' as capitalized"; + variant "text 'iUE' as capitalized"; + variant "text 'iUG' as capitalized"; + variant "text 'iUH' as capitalized"; + variant "text 'iUI' as capitalized"; + variant "text 'iUJ' as capitalized"; + variant "text 'iUL' as capitalized"; + variant "text 'iUM' as capitalized"; + variant "text 'iUN' as capitalized"; + variant "text 'iUO' as capitalized"; + variant "text 'iUP' as capitalized"; + variant "text 'iUR' as capitalized"; + variant "text 'iUS' as capitalized"; + variant "text 'iUT' as capitalized"; + variant "text 'iUU' as capitalized"; + variant "text 'iUV' as capitalized"; + variant "text 'iUX' as capitalized"; + variant "text 'iVO' as capitalized"; + variant "text 'iVV' as capitalized"; + variant "text 'iVW' as capitalized"; + variant "text 'iVX' as capitalized"; + variant "text 'iVY' as capitalized"; + variant "text 'iVZ' as capitalized"; + variant "text 'iWA' as capitalized"; + variant "text 'iWB' as capitalized"; + variant "text 'iWC' as capitalized"; + variant "text 'iWP' as capitalized"; + variant "text 'iWZ' as capitalized"; + variant "text 'iXO' as capitalized"; + variant "text 'iXP' as capitalized"; + variant "text 'iYA' as capitalized"; + variant "text 'iYB' as capitalized"; + variant "text 'iYC' as capitalized"; + variant "text 'iYD' as capitalized"; + variant "text 'iYE' as capitalized"; + variant "text 'iYF' as capitalized"; + variant "text 'iYG' as capitalized"; + variant "text 'iYI' as capitalized"; + variant "text 'iYJ' as capitalized"; + variant "text 'iYK' as capitalized"; + variant "text 'iYL' as capitalized"; + variant "text 'iYM' as capitalized"; + variant "text 'iYO' as capitalized"; + variant "text 'iYP' as capitalized"; + variant "text 'iYR' as capitalized"; + variant "text 'iYS' as capitalized"; + variant "text 'iYT' as capitalized"; + variant "text 'iYU' as capitalized"; + variant "text 'iYV' as capitalized"; + variant "text 'iYX' as capitalized"; + variant "text 'iYY' as capitalized"; + variant "text 'iZI' as capitalized"; + variant "text 'iZJ' as capitalized"; + variant "text 'iZX' as capitalized"; + variant "text 'jAA' as capitalized"; + variant "text 'jAB' as capitalized"; + variant "text 'jAD' as capitalized"; + variant "text 'jAE' as capitalized"; + variant "text 'jAF' as capitalized"; + variant "text 'jAG' as capitalized"; + variant "text 'jAH' as capitalized"; + variant "text 'jAI' as capitalized"; + variant "text 'jAJ' as capitalized"; + variant "text 'jAK' as capitalized"; + variant "text 'jAL' as capitalized"; + variant "text 'jAM' as capitalized"; + variant "text 'jAN' as capitalized"; + variant "text 'jAO' as capitalized"; + variant "text 'jAP' as capitalized"; + variant "text 'jAQ' as capitalized"; + variant "text 'jAR' as capitalized"; + variant "text 'jAS' as capitalized"; + variant "text 'jAT' as capitalized"; + variant "text 'jAU' as capitalized"; + variant "text 'jAV' as capitalized"; + variant "text 'jAW' as capitalized"; + variant "text 'jAX' as capitalized"; + variant "text 'jAY' as capitalized"; + variant "text 'jAZ' as capitalized"; + variant "text 'jBA' as capitalized"; + variant "text 'jBB' as capitalized"; + variant "text 'jBC' as capitalized"; + variant "text 'jBD' as capitalized"; + variant "text 'jBE' as capitalized"; + variant "text 'jBF' as capitalized"; + variant "text 'jBG' as capitalized"; + variant "text 'jBH' as capitalized"; + variant "text 'jBI' as capitalized"; + variant "text 'jBJ' as capitalized"; + variant "text 'jBK' as capitalized"; + variant "text 'jBL' as capitalized"; + variant "text 'jBM' as capitalized"; + variant "text 'jBN' as capitalized"; + variant "text 'jBO' as capitalized"; + variant "text 'jBX' as capitalized"; + variant "text 'jBZ' as capitalized"; + variant "text 'jCB' as capitalized"; + variant "text 'jCC' as capitalized"; + variant "text 'jCF' as capitalized"; + variant "text 'jCG' as capitalized"; + variant "text 'jCM' as capitalized"; + variant "text 'jCN' as capitalized"; + variant "text 'jCP' as capitalized"; + variant "text 'jCR' as capitalized"; + variant "text 'jCS' as capitalized"; + variant "text 'jCT' as capitalized"; + variant "text 'jCU' as capitalized"; + variant "text 'jCV' as capitalized"; + variant "text 'jCX' as capitalized"; + variant "text 'jCY' as capitalized"; + variant "text 'jCZ' as capitalized"; + variant "text 'jDA' as capitalized"; + variant "text 'jDC' as capitalized"; + variant "text 'jDF' as capitalized"; + variant "text 'jDK' as capitalized"; + variant "text 'jDM' as capitalized"; + variant "text 'jDO' as capitalized"; + variant "text 'jDP' as capitalized"; + variant "text 'jDR' as capitalized"; + variant "text 'jDS' as capitalized"; + variant "text 'jDT' as capitalized"; + variant "text 'jDX' as capitalized"; + variant "text 'jDY' as capitalized"; + variant "text 'jEA' as capitalized"; + variant "text 'jEB' as capitalized"; + variant "text 'jEC' as capitalized"; + variant "text 'jED' as capitalized"; + variant "text 'jEL' as capitalized"; + variant "text 'jER' as capitalized"; + variant "text 'jEX' as capitalized"; + variant "text 'jFA' as capitalized"; + variant "text 'jFB' as capitalized"; + variant "text 'jFC' as capitalized"; + variant "text 'jFD' as capitalized"; + variant "text 'jFE' as capitalized"; + variant "text 'jFF' as capitalized"; + variant "text 'jFG' as capitalized"; + variant "text 'jFH' as capitalized"; + variant "text 'jFI' as capitalized"; + variant "text 'jFJ' as capitalized"; + variant "text 'jFK' as capitalized"; + variant "text 'jFL' as capitalized"; + variant "text 'jFM' as capitalized"; + variant "text 'jFN' as capitalized"; + variant "text 'jFO' as capitalized"; + variant "text 'jFP' as capitalized"; + variant "text 'jFQ' as capitalized"; + variant "text 'jFR' as capitalized"; + variant "text 'jFS' as capitalized"; + variant "text 'jFT' as capitalized"; + variant "text 'jFU' as capitalized"; + variant "text 'jFV' as capitalized"; + variant "text 'jFW' as capitalized"; + variant "text 'jFX' as capitalized"; + variant "text 'jFY' as capitalized"; + variant "text 'jFZ' as capitalized"; + variant "text 'jGQ' as capitalized"; + variant "text 'jGU' as capitalized"; + variant "text 'jGX' as capitalized"; + variant "text 'jHA' as capitalized"; + variant "text 'jHB' as capitalized"; + variant "text 'jHC' as capitalized"; + variant "text 'jHD' as capitalized"; + variant "text 'jHX' as capitalized"; + variant "text 'jIC' as capitalized"; + variant "text 'jIO' as capitalized"; + variant "text 'jIP' as capitalized"; + variant "text 'jIX' as capitalized"; + variant "text 'jJM' as capitalized"; + variant "text 'jJX' as capitalized"; + variant "text 'jKI' as capitalized"; + variant "text 'jKJ' as capitalized"; + variant "text 'jKO' as capitalized"; + variant "text 'jKX' as capitalized"; + variant "text 'jLB' as capitalized"; + variant "text 'jLD' as capitalized"; + variant "text 'jLM' as capitalized"; + variant "text 'jLR' as capitalized"; + variant "text 'jLT' as capitalized"; + variant "text 'jLX' as capitalized"; + variant "text 'jMO' as capitalized"; + variant "text 'jMP' as capitalized"; + variant "text 'jMS' as capitalized"; + variant "text 'jMX' as capitalized"; + variant "text 'jNA' as capitalized"; + variant "text 'jNG' as capitalized"; + variant "text 'jNR' as capitalized"; + variant "text 'jOA' as capitalized"; + variant "text 'jOB' as capitalized"; + variant "text 'jOC' as capitalized"; + variant "text 'jOD' as capitalized"; + variant "text 'jOE' as capitalized"; + variant "text 'jON' as capitalized"; + variant "text 'jOS' as capitalized"; + variant "text 'jOT' as capitalized"; + variant "text 'jOU' as capitalized"; + variant "text 'jOX' as capitalized"; + variant "text 'jPA' as capitalized"; + variant "text 'jPC' as capitalized"; + variant "text 'jPD' as capitalized"; + variant "text 'jPM' as capitalized"; + variant "text 'jPP' as capitalized"; + variant "text 'jPS' as capitalized"; + variant "text 'jPV' as capitalized"; + variant "text 'jPX' as capitalized"; + variant "text 'jQX' as capitalized"; + variant "text 'jRA' as capitalized"; + variant "text 'jRB' as capitalized"; + variant "text 'jRC' as capitalized"; + variant "text 'jRD' as capitalized"; + variant "text 'jRE' as capitalized"; + variant "text 'jRF' as capitalized"; + variant "text 'jRG' as capitalized"; + variant "text 'jRH' as capitalized"; + variant "text 'jRI' as capitalized"; + variant "text 'jRJ' as capitalized"; + variant "text 'jRK' as capitalized"; + variant "text 'jRL' as capitalized"; + variant "text 'jRM' as capitalized"; + variant "text 'jRN' as capitalized"; + variant "text 'jRO' as capitalized"; + variant "text 'jRP' as capitalized"; + variant "text 'jRQ' as capitalized"; + variant "text 'jRR' as capitalized"; + variant "text 'jRS' as capitalized"; + variant "text 'jRT' as capitalized"; + variant "text 'jRU' as capitalized"; + variant "text 'jRV' as capitalized"; + variant "text 'jRW' as capitalized"; + variant "text 'jRX' as capitalized"; + variant "text 'jRY' as capitalized"; + variant "text 'jRZ' as capitalized"; + variant "text 'jSC' as capitalized"; + variant "text 'jSI' as capitalized"; + variant "text 'jSN' as capitalized"; + variant "text 'jSO' as capitalized"; + variant "text 'jSP' as capitalized"; + variant "text 'jSS' as capitalized"; + variant "text 'jSU' as capitalized"; + variant "text 'jSX' as capitalized"; + variant "text 'jTP' as capitalized"; + variant "text 'jTQ' as capitalized"; + variant "text 'jTT' as capitalized"; + variant "text 'jTX' as capitalized"; + variant "text 'jUA' as capitalized"; + variant "text 'jUC' as capitalized"; + variant "text 'jUD' as capitalized"; + variant "text 'jUH' as capitalized"; + variant "text 'jUI' as capitalized"; + variant "text 'jUJ' as capitalized"; + variant "text 'jUL' as capitalized"; + variant "text 'jUM' as capitalized"; + variant "text 'jUN' as capitalized"; + variant "text 'jUO' as capitalized"; + variant "text 'jUP' as capitalized"; + variant "text 'jUR' as capitalized"; + variant "text 'jUS' as capitalized"; + variant "text 'jUT' as capitalized"; + variant "text 'jUU' as capitalized"; + variant "text 'jUV' as capitalized"; + variant "text 'jUX' as capitalized"; + variant "text 'jVX' as capitalized"; + variant "text 'jVY' as capitalized"; + variant "text 'jWX' as capitalized"; + variant "text 'jWY' as capitalized"; + variant "text 'jWZ' as capitalized"; + variant "text 'jXA' as capitalized"; + variant "text 'jXB' as capitalized"; + variant "text 'jXC' as capitalized"; + variant "text 'jXD' as capitalized"; + variant "text 'jXX' as capitalized"; + variant "text 'jYL' as capitalized"; + variant "text 'jYW' as capitalized"; + variant "text 'jYX' as capitalized"; + variant "text 'jZO' as capitalized"; + variant "text 'jZX' as capitalized"; + variant "text 'kAA' as capitalized"; + variant "text 'kAB' as capitalized"; + variant "text 'kAC' as capitalized"; + variant "text 'kAD' as capitalized"; + variant "text 'kAE' as capitalized"; + variant "text 'kAF' as capitalized"; + variant "text 'kAG' as capitalized"; + variant "text 'kAH' as capitalized"; + variant "text 'kAI' as capitalized"; + variant "text 'kAK' as capitalized"; + variant "text 'kAL' as capitalized"; + variant "text 'kAM' as capitalized"; + variant "text 'kAN' as capitalized"; + variant "text 'kAO' as capitalized"; + variant "text 'kAP' as capitalized"; + variant "text 'kAQ' as capitalized"; + variant "text 'kAR' as capitalized"; + variant "text 'kAS' as capitalized"; + variant "text 'kAT' as capitalized"; + variant "text 'kAW' as capitalized"; + variant "text 'kAX' as capitalized"; + variant "text 'kAY' as capitalized"; + variant "text 'kBA' as capitalized"; + variant "text 'kBB' as capitalized"; + variant "text 'kBK' as capitalized"; + variant "text 'kBR' as capitalized"; + variant "text 'kBX' as capitalized"; + variant "text 'kCA' as capitalized"; + variant "text 'kCB' as capitalized"; + variant "text 'kCC' as capitalized"; + variant "text 'kCD' as capitalized"; + variant "text 'kCE' as capitalized"; + variant "text 'kCF' as capitalized"; + variant "text 'kCG' as capitalized"; + variant "text 'kCH' as capitalized"; + variant "text 'kCI' as capitalized"; + variant "text 'kCJ' as capitalized"; + variant "text 'kCK' as capitalized"; + variant "text 'kCL' as capitalized"; + variant "text 'kCM' as capitalized"; + variant "text 'kCN' as capitalized"; + variant "text 'kCO' as capitalized"; + variant "text 'kCP' as capitalized"; + variant "text 'kCQ' as capitalized"; + variant "text 'kCR' as capitalized"; + variant "text 'kCS' as capitalized"; + variant "text 'kCT' as capitalized"; + variant "text 'kCU' as capitalized"; + variant "text 'kCV' as capitalized"; + variant "text 'kCW' as capitalized"; + variant "text 'kCX' as capitalized"; + variant "text 'kCY' as capitalized"; + variant "text 'kCZ' as capitalized"; + variant "text 'kDA' as capitalized"; + variant "text 'kDB' as capitalized"; + variant "text 'kDC' as capitalized"; + variant "text 'kDD' as capitalized"; + variant "text 'kDE' as capitalized"; + variant "text 'kDF' as capitalized"; + variant "text 'kDG' as capitalized"; + variant "text 'kDH' as capitalized"; + variant "text 'kDI' as capitalized"; + variant "text 'kDJ' as capitalized"; + variant "text 'kDK' as capitalized"; + variant "text 'kDL' as capitalized"; + variant "text 'kDM' as capitalized"; + variant "text 'kDN' as capitalized"; + variant "text 'kDO' as capitalized"; + variant "text 'kDQ' as capitalized"; + variant "text 'kDR' as capitalized"; + variant "text 'kDS' as capitalized"; + variant "text 'kDT' as capitalized"; + variant "text 'kDU' as capitalized"; + variant "text 'kDW' as capitalized"; + variant "text 'kDX' as capitalized"; + variant "text 'kDY' as capitalized"; + variant "text 'kDZ' as capitalized"; + variant "text 'kEA' as capitalized"; + variant "text 'kEC' as capitalized"; + variant "text 'kED' as capitalized"; + variant "text 'kEE' as capitalized"; + variant "text 'kEF' as capitalized"; + variant "text 'kEK' as capitalized"; + variant "text 'kEM' as capitalized"; + variant "text 'kEN' as capitalized"; + variant "text 'kEV' as capitalized"; + variant "text 'kEX' as capitalized"; + variant "text 'kEZ' as capitalized"; + variant "text 'kFA' as capitalized"; + variant "text 'kFB' as capitalized"; + variant "text 'kFC' as capitalized"; + variant "text 'kFF' as capitalized"; + variant "text 'kFK' as capitalized"; + variant "text 'kFL' as capitalized"; + variant "text 'kFM' as capitalized"; + variant "text 'kFR' as capitalized"; + variant "text 'kFT' as capitalized"; + variant "text 'kFU' as capitalized"; + variant "text 'kFV' as capitalized"; + variant "text 'kFX' as capitalized"; + variant "text 'kGA' as capitalized"; + variant "text 'kGB' as capitalized"; + variant "text 'kGC' as capitalized"; + variant "text 'kGF' as capitalized"; + variant "text 'kGG' as capitalized"; + variant "text 'kGH' as capitalized"; + variant "text 'kGL' as capitalized"; + variant "text 'kGM' as capitalized"; + variant "text 'kGX' as capitalized"; + variant "text 'kHA' as capitalized"; + variant "text 'kHC' as capitalized"; + variant "text 'kHF' as capitalized"; + variant "text 'kHI' as capitalized"; + variant "text 'kHN' as capitalized"; + variant "text 'kHO' as capitalized"; + variant "text 'kHP' as capitalized"; + variant "text 'kHQ' as capitalized"; + variant "text 'kHR' as capitalized"; + variant "text 'kHS' as capitalized"; + variant "text 'kHU' as capitalized"; + variant "text 'kHV' as capitalized"; + variant "text 'kHX' as capitalized"; + variant "text 'kIA' as capitalized"; + variant "text 'kIB' as capitalized"; + variant "text 'kIC' as capitalized"; + variant "text 'kID' as capitalized"; + variant "text 'kIE' as capitalized"; + variant "text 'kIF' as capitalized"; + variant "text 'kIG' as capitalized"; + variant "text 'kIH' as capitalized"; + variant "text 'kII' as capitalized"; + variant "text 'kIK' as capitalized"; + variant "text 'kIL' as capitalized"; + variant "text 'kIM' as capitalized"; + variant "text 'kIN' as capitalized"; + variant "text 'kIO' as capitalized"; + variant "text 'kIP' as capitalized"; + variant "text 'kIQ' as capitalized"; + variant "text 'kIR' as capitalized"; + variant "text 'kIS' as capitalized"; + variant "text 'kIT' as capitalized"; + variant "text 'kIU' as capitalized"; + variant "text 'kIW' as capitalized"; + variant "text 'kIX' as capitalized"; + variant "text 'kIY' as capitalized"; + variant "text 'kJC' as capitalized"; + variant "text 'kJT' as capitalized"; + variant "text 'kJX' as capitalized"; + variant "text 'kKA' as capitalized"; + variant "text 'kKC' as capitalized"; + variant "text 'kKD' as capitalized"; + variant "text 'kKF' as capitalized"; + variant "text 'kKI' as capitalized"; + variant "text 'kKJ' as capitalized"; + variant "text 'kKK' as capitalized"; + variant "text 'kKL' as capitalized"; + variant "text 'kKM' as capitalized"; + variant "text 'kKN' as capitalized"; + variant "text 'kKO' as capitalized"; + variant "text 'kKP' as capitalized"; + variant "text 'kKR' as capitalized"; + variant "text 'kKS' as capitalized"; + variant "text 'kKT' as capitalized"; + variant "text 'kKU' as capitalized"; + variant "text 'kKV' as capitalized"; + variant "text 'kKW' as capitalized"; + variant "text 'kKX' as capitalized"; + variant "text 'kLA' as capitalized"; + variant "text 'kLB' as capitalized"; + variant "text 'kLC' as capitalized"; + variant "text 'kLD' as capitalized"; + variant "text 'kLE' as capitalized"; + variant "text 'kLG' as capitalized"; + variant "text 'kLH' as capitalized"; + variant "text 'kLI' as capitalized"; + variant "text 'kLJ' as capitalized"; + variant "text 'kLK' as capitalized"; + variant "text 'kLL' as capitalized"; + variant "text 'kLM' as capitalized"; + variant "text 'kLN' as capitalized"; + variant "text 'kLO' as capitalized"; + variant "text 'kLP' as capitalized"; + variant "text 'kLQ' as capitalized"; + variant "text 'kLR' as capitalized"; + variant "text 'kLS' as capitalized"; + variant "text 'kLT' as capitalized"; + variant "text 'kLU' as capitalized"; + variant "text 'kLV' as capitalized"; + variant "text 'kLX' as capitalized"; + variant "text 'kMB' as capitalized"; + variant "text 'kMC' as capitalized"; + variant "text 'kMD' as capitalized"; + variant "text 'kMF' as capitalized"; + variant "text 'kMH' as capitalized"; + variant "text 'kMI' as capitalized"; + variant "text 'kMJ' as capitalized"; + variant "text 'kMK' as capitalized"; + variant "text 'kML' as capitalized"; + variant "text 'kMM' as capitalized"; + variant "text 'kMN' as capitalized"; + variant "text 'kMO' as capitalized"; + variant "text 'kMP' as capitalized"; + variant "text 'kMQ' as capitalized"; + variant "text 'kMR' as capitalized"; + variant "text 'kMS' as capitalized"; + variant "text 'kMT' as capitalized"; + variant "text 'kMU' as capitalized"; + variant "text 'kMV' as capitalized"; + variant "text 'kMW' as capitalized"; + variant "text 'kMX' as capitalized"; + variant "text 'kNA' as capitalized"; + variant "text 'kNB' as capitalized"; + variant "text 'kNC' as capitalized"; + variant "text 'kNE' as capitalized"; + variant "text 'kNF' as capitalized"; + variant "text 'kNG' as capitalized"; + variant "text 'kNH' as capitalized"; + variant "text 'kNI' as capitalized"; + variant "text 'kNJ' as capitalized"; + variant "text 'kNK' as capitalized"; + variant "text 'kNL' as capitalized"; + variant "text 'kNM' as capitalized"; + variant "text 'kNN' as capitalized"; + variant "text 'kNO' as capitalized"; + variant "text 'kNP' as capitalized"; + variant "text 'kNQ' as capitalized"; + variant "text 'kNR' as capitalized"; + variant "text 'kNS' as capitalized"; + variant "text 'kNT' as capitalized"; + variant "text 'kNU' as capitalized"; + variant "text 'kNV' as capitalized"; + variant "text 'kNW' as capitalized"; + variant "text 'kNX' as capitalized"; + variant "text 'kNY' as capitalized"; + variant "text 'kOA' as capitalized"; + variant "text 'kOB' as capitalized"; + variant "text 'kOC' as capitalized"; + variant "text 'kOD' as capitalized"; + variant "text 'kOE' as capitalized"; + variant "text 'kOF' as capitalized"; + variant "text 'kOG' as capitalized"; + variant "text 'kOI' as capitalized"; + variant "text 'kOJ' as capitalized"; + variant "text 'kOK' as capitalized"; + variant "text 'kOL' as capitalized"; + variant "text 'kOM' as capitalized"; + variant "text 'kON' as capitalized"; + variant "text 'kOO' as capitalized"; + variant "text 'kOP' as capitalized"; + variant "text 'kOQ' as capitalized"; + variant "text 'kOR' as capitalized"; + variant "text 'kOS' as capitalized"; + variant "text 'kOT' as capitalized"; + variant "text 'kOU' as capitalized"; + variant "text 'kOV' as capitalized"; + variant "text 'kOW' as capitalized"; + variant "text 'kOX' as capitalized"; + variant "text 'kOY' as capitalized"; + variant "text 'kOZ' as capitalized"; + variant "text 'kPA' as capitalized"; + variant "text 'kPB' as capitalized"; + variant "text 'kPC' as capitalized"; + variant "text 'kPE' as capitalized"; + variant "text 'kPF' as capitalized"; + variant "text 'kPG' as capitalized"; + variant "text 'kPH' as capitalized"; + variant "text 'kPI' as capitalized"; + variant "text 'kPJ' as capitalized"; + variant "text 'kPK' as capitalized"; + variant "text 'kPL' as capitalized"; + variant "text 'kPM' as capitalized"; + variant "text 'kPN' as capitalized"; + variant "text 'kPO' as capitalized"; + variant "text 'kPP' as capitalized"; + variant "text 'kPQ' as capitalized"; + variant "text 'kPR' as capitalized"; + variant "text 'kPS' as capitalized"; + variant "text 'kPT' as capitalized"; + variant "text 'kPU' as capitalized"; + variant "text 'kPV' as capitalized"; + variant "text 'kPW' as capitalized"; + variant "text 'kPX' as capitalized"; + variant "text 'kPY' as capitalized"; + variant "text 'kQB' as capitalized"; + variant "text 'kQC' as capitalized"; + variant "text 'kQE' as capitalized"; + variant "text 'kQF' as capitalized"; + variant "text 'kQH' as capitalized"; + variant "text 'kQL' as capitalized"; + variant "text 'kQM' as capitalized"; + variant "text 'kQN' as capitalized"; + variant "text 'kQO' as capitalized"; + variant "text 'kQP' as capitalized"; + variant "text 'kQR' as capitalized"; + variant "text 'kQS' as capitalized"; + variant "text 'kQT' as capitalized"; + variant "text 'kQU' as capitalized"; + variant "text 'kQX' as capitalized"; + variant "text 'kQY' as capitalized"; + variant "text 'kRA' as capitalized"; + variant "text 'kRB' as capitalized"; + variant "text 'kRC' as capitalized"; + variant "text 'kRE' as capitalized"; + variant "text 'kRF' as capitalized"; + variant "text 'kRG' as capitalized"; + variant "text 'kRH' as capitalized"; + variant "text 'kRI' as capitalized"; + variant "text 'kRJ' as capitalized"; + variant "text 'kRK' as capitalized"; + variant "text 'kRL' as capitalized"; + variant "text 'kRM' as capitalized"; + variant "text 'kRN' as capitalized"; + variant "text 'kRO' as capitalized"; + variant "text 'kRQ' as capitalized"; + variant "text 'kRR' as capitalized"; + variant "text 'kRS' as capitalized"; + variant "text 'kRT' as capitalized"; + variant "text 'kRU' as capitalized"; + variant "text 'kRV' as capitalized"; + variant "text 'kRW' as capitalized"; + variant "text 'kRX' as capitalized"; + variant "text 'kRY' as capitalized"; + variant "text 'kRZ' as capitalized"; + variant "text 'kSB' as capitalized"; + variant "text 'kSC' as capitalized"; + variant "text 'kSD' as capitalized"; + variant "text 'kSE' as capitalized"; + variant "text 'kSF' as capitalized"; + variant "text 'kSH' as capitalized"; + variant "text 'kSM' as capitalized"; + variant "text 'kSN' as capitalized"; + variant "text 'kSS' as capitalized"; + variant "text 'kST' as capitalized"; + variant "text 'kSU' as capitalized"; + variant "text 'kSV' as capitalized"; + variant "text 'kSW' as capitalized"; + variant "text 'kSX' as capitalized"; + variant "text 'kSY' as capitalized"; + variant "text 'kSZ' as capitalized"; + variant "text 'kTA' as capitalized"; + variant "text 'kTB' as capitalized"; + variant "text 'kTC' as capitalized"; + variant "text 'kTD' as capitalized"; + variant "text 'kTE' as capitalized"; + variant "text 'kTF' as capitalized"; + variant "text 'kTG' as capitalized"; + variant "text 'kTH' as capitalized"; + variant "text 'kTI' as capitalized"; + variant "text 'kTJ' as capitalized"; + variant "text 'kTK' as capitalized"; + variant "text 'kTL' as capitalized"; + variant "text 'kTM' as capitalized"; + variant "text 'kTN' as capitalized"; + variant "text 'kTO' as capitalized"; + variant "text 'kTP' as capitalized"; + variant "text 'kTQ' as capitalized"; + variant "text 'kTR' as capitalized"; + variant "text 'kTS' as capitalized"; + variant "text 'kTT' as capitalized"; + variant "text 'kTU' as capitalized"; + variant "text 'kTV' as capitalized"; + variant "text 'kTX' as capitalized"; + variant "text 'kTY' as capitalized"; + variant "text 'kTZ' as capitalized"; + variant "text 'kUA' as capitalized"; + variant "text 'kUB' as capitalized"; + variant "text 'kUC' as capitalized"; + variant "text 'kUD' as capitalized"; + variant "text 'kUE' as capitalized"; + variant "text 'kUF' as capitalized"; + variant "text 'kUG' as capitalized"; + variant "text 'kUH' as capitalized"; + variant "text 'kUI' as capitalized"; + variant "text 'kUJ' as capitalized"; + variant "text 'kUK' as capitalized"; + variant "text 'kUL' as capitalized"; + variant "text 'kUM' as capitalized"; + variant "text 'kUN' as capitalized"; + variant "text 'kUO' as capitalized"; + variant "text 'kUP' as capitalized"; + variant "text 'kUQ' as capitalized"; + variant "text 'kUR' as capitalized"; + variant "text 'kUS' as capitalized"; + variant "text 'kUT' as capitalized"; + variant "text 'kUU' as capitalized"; + variant "text 'kUV' as capitalized"; + variant "text 'kUW' as capitalized"; + variant "text 'kUX' as capitalized"; + variant "text 'kUY' as capitalized"; + variant "text 'kVA' as capitalized"; + variant "text 'kVP' as capitalized"; + variant "text 'kVQ' as capitalized"; + variant "text 'kVR' as capitalized"; + variant "text 'kVV' as capitalized"; + variant "text 'kVX' as capitalized"; + variant "text 'kWA' as capitalized"; + variant "text 'kWH' as capitalized"; + variant "text 'kWX' as capitalized"; + variant "text 'kXP' as capitalized"; + variant "text 'kXQ' as capitalized"; + variant "text 'kXX' as capitalized"; + variant "text 'kYA' as capitalized"; + variant "text 'kYB' as capitalized"; + variant "text 'kYC' as capitalized"; + variant "text 'kYE' as capitalized"; + variant "text 'kYG' as capitalized"; + variant "text 'kYH' as capitalized"; + variant "text 'kYI' as capitalized"; + variant "text 'kYJ' as capitalized"; + variant "text 'kYL' as capitalized"; + variant "text 'kYM' as capitalized"; + variant "text 'kYO' as capitalized"; + variant "text 'kYP' as capitalized"; + variant "text 'kYS' as capitalized"; + variant "text 'kYU' as capitalized"; + variant "text 'kYV' as capitalized"; + variant "text 'kYX' as capitalized"; + variant "text 'kYY' as capitalized"; + variant "text 'kZG' as capitalized"; + variant "text 'kZH' as capitalized"; + variant "text 'kZI' as capitalized"; + variant "text 'kZJ' as capitalized"; + variant "text 'kZK' as capitalized"; + variant "text 'kZL' as capitalized"; + variant "text 'kZM' as capitalized"; + variant "text 'kZN' as capitalized"; + variant "text 'kZO' as capitalized"; + variant "text 'kZP' as capitalized"; + variant "text 'kZQ' as capitalized"; + variant "text 'kZR' as capitalized"; + variant "text 'kZS' as capitalized"; + variant "text 'kZT' as capitalized"; + variant "text 'kZU' as capitalized"; + variant "text 'kZV' as capitalized"; + variant "text 'kZW' as capitalized"; + variant "text 'kZX' as capitalized"; + variant "text 'kZY' as capitalized"; + variant "text 'kZZ' as capitalized"; + variant "text 'lAA' as capitalized"; + variant "text 'lAB' as capitalized"; + variant "text 'lAC' as capitalized"; + variant "text 'lAD' as capitalized"; + variant "text 'lAE' as capitalized"; + variant "text 'lAF' as capitalized"; + variant "text 'lAG' as capitalized"; + variant "text 'lAH' as capitalized"; + variant "text 'lAI' as capitalized"; + variant "text 'lAJ' as capitalized"; + variant "text 'lAK' as capitalized"; + variant "text 'lAL' as capitalized"; + variant "text 'lAN' as capitalized"; + variant "text 'lAO' as capitalized"; + variant "text 'lAP' as capitalized"; + variant "text 'lAQ' as capitalized"; + variant "text 'lAR' as capitalized"; + variant "text 'lAS' as capitalized"; + variant "text 'lAT' as capitalized"; + variant "text 'lAU' as capitalized"; + variant "text 'lAV' as capitalized"; + variant "text 'lAW' as capitalized"; + variant "text 'lAX' as capitalized"; + variant "text 'lAY' as capitalized"; + variant "text 'lAZ' as capitalized"; + variant "text 'lBA' as capitalized"; + variant "text 'lBB' as capitalized"; + variant "text 'lBC' as capitalized"; + variant "text 'lBD' as capitalized"; + variant "text 'lBE' as capitalized"; + variant "text 'lBF' as capitalized"; + variant "text 'lBG' as capitalized"; + variant "text 'lBH' as capitalized"; + variant "text 'lBI' as capitalized"; + variant "text 'lBJ' as capitalized"; + variant "text 'lBK' as capitalized"; + variant "text 'lBL' as capitalized"; + variant "text 'lBM' as capitalized"; + variant "text 'lBN' as capitalized"; + variant "text 'lBO' as capitalized"; + variant "text 'lBP' as capitalized"; + variant "text 'lBQ' as capitalized"; + variant "text 'lBR' as capitalized"; + variant "text 'lBS' as capitalized"; + variant "text 'lBT' as capitalized"; + variant "text 'lBU' as capitalized"; + variant "text 'lBV' as capitalized"; + variant "text 'lBW' as capitalized"; + variant "text 'lBX' as capitalized"; + variant "text 'lBY' as capitalized"; + variant "text 'lBZ' as capitalized"; + variant "text 'lCA' as capitalized"; + variant "text 'lCB' as capitalized"; + variant "text 'lCC' as capitalized"; + variant "text 'lCD' as capitalized"; + variant "text 'lCE' as capitalized"; + variant "text 'lCF' as capitalized"; + variant "text 'lCG' as capitalized"; + variant "text 'lCH' as capitalized"; + variant "text 'lCI' as capitalized"; + variant "text 'lCJ' as capitalized"; + variant "text 'lCK' as capitalized"; + variant "text 'lCL' as capitalized"; + variant "text 'lCM' as capitalized"; + variant "text 'lCN' as capitalized"; + variant "text 'lCO' as capitalized"; + variant "text 'lCP' as capitalized"; + variant "text 'lCQ' as capitalized"; + variant "text 'lCR' as capitalized"; + variant "text 'lCS' as capitalized"; + variant "text 'lCT' as capitalized"; + variant "text 'lCU' as capitalized"; + variant "text 'lCV' as capitalized"; + variant "text 'lCW' as capitalized"; + variant "text 'lCX' as capitalized"; + variant "text 'lCY' as capitalized"; + variant "text 'lCZ' as capitalized"; + variant "text 'lDA' as capitalized"; + variant "text 'lDB' as capitalized"; + variant "text 'lDC' as capitalized"; + variant "text 'lDD' as capitalized"; + variant "text 'lDE' as capitalized"; + variant "text 'lDF' as capitalized"; + variant "text 'lDG' as capitalized"; + variant "text 'lDH' as capitalized"; + variant "text 'lDI' as capitalized"; + variant "text 'lDJ' as capitalized"; + variant "text 'lDK' as capitalized"; + variant "text 'lDL' as capitalized"; + variant "text 'lDM' as capitalized"; + variant "text 'lDN' as capitalized"; + variant "text 'lDO' as capitalized"; + variant "text 'lDP' as capitalized"; + variant "text 'lDQ' as capitalized"; + variant "text 'lDR' as capitalized"; + variant "text 'lDS' as capitalized"; + variant "text 'lDT' as capitalized"; + variant "text 'lDU' as capitalized"; + variant "text 'lDV' as capitalized"; + variant "text 'lDW' as capitalized"; + variant "text 'lDX' as capitalized"; + variant "text 'lDY' as capitalized"; + variant "text 'lDZ' as capitalized"; + variant "text 'lEB' as capitalized"; + variant "text 'lEC' as capitalized"; + variant "text 'lED' as capitalized"; + variant "text 'lEE' as capitalized"; + variant "text 'lEF' as capitalized"; + variant "text 'lEG' as capitalized"; + variant "text 'lEH' as capitalized"; + variant "text 'lEI' as capitalized"; + variant "text 'lEJ' as capitalized"; + variant "text 'lEK' as capitalized"; + variant "text 'lEL' as capitalized"; + variant "text 'lEM' as capitalized"; + variant "text 'lEN' as capitalized"; + variant "text 'lEP' as capitalized"; + variant "text 'lEQ' as capitalized"; + variant "text 'lER' as capitalized"; + variant "text 'lES' as capitalized"; + variant "text 'lET' as capitalized"; + variant "text 'lEU' as capitalized"; + variant "text 'lEV' as capitalized"; + variant "text 'lEW' as capitalized"; + variant "text 'lEY' as capitalized"; + variant "text 'lEZ' as capitalized"; + variant "text 'lFA' as capitalized"; + variant "text 'lFB' as capitalized"; + variant "text 'lFC' as capitalized"; + variant "text 'lFD' as capitalized"; + variant "text 'lFE' as capitalized"; + variant "text 'lFF' as capitalized"; + variant "text 'lFG' as capitalized"; + variant "text 'lFH' as capitalized"; + variant "text 'lFI' as capitalized"; + variant "text 'lFJ' as capitalized"; + variant "text 'lFK' as capitalized"; + variant "text 'lFL' as capitalized"; + variant "text 'lFM' as capitalized"; + variant "text 'lFN' as capitalized"; + variant "text 'lFO' as capitalized"; + variant "text 'lFP' as capitalized"; + variant "text 'lFQ' as capitalized"; + variant "text 'lFR' as capitalized"; + variant "text 'lFS' as capitalized"; + variant "text 'lFT' as capitalized"; + variant "text 'lFU' as capitalized"; + variant "text 'lFV' as capitalized"; + variant "text 'lFW' as capitalized"; + variant "text 'lFX' as capitalized"; + variant "text 'lFY' as capitalized"; + variant "text 'lFZ' as capitalized"; + variant "text 'lGA' as capitalized"; + variant "text 'lGB' as capitalized"; + variant "text 'lGC' as capitalized"; + variant "text 'lGD' as capitalized"; + variant "text 'lGE' as capitalized"; + variant "text 'lGF' as capitalized"; + variant "text 'lGG' as capitalized"; + variant "text 'lGH' as capitalized"; + variant "text 'lGI' as capitalized"; + variant "text 'lGK' as capitalized"; + variant "text 'lGL' as capitalized"; + variant "text 'lGM' as capitalized"; + variant "text 'lGN' as capitalized"; + variant "text 'lGO' as capitalized"; + variant "text 'lGP' as capitalized"; + variant "text 'lGQ' as capitalized"; + variant "text 'lGR' as capitalized"; + variant "text 'lGS' as capitalized"; + variant "text 'lGT' as capitalized"; + variant "text 'lGU' as capitalized"; + variant "text 'lGV' as capitalized"; + variant "text 'lGW' as capitalized"; + variant "text 'lGX' as capitalized"; + variant "text 'lGY' as capitalized"; + variant "text 'lGZ' as capitalized"; + variant "text 'lHA' as capitalized"; + variant "text 'lHB' as capitalized"; + variant "text 'lHC' as capitalized"; + variant "text 'lHD' as capitalized"; + variant "text 'lHE' as capitalized"; + variant "text 'lHF' as capitalized"; + variant "text 'lHG' as capitalized"; + variant "text 'lHH' as capitalized"; + variant "text 'lHI' as capitalized"; + variant "text 'lHJ' as capitalized"; + variant "text 'lHK' as capitalized"; + variant "text 'lHL' as capitalized"; + variant "text 'lHM' as capitalized"; + variant "text 'lHN' as capitalized"; + variant "text 'lHO' as capitalized"; + variant "text 'lHP' as capitalized"; + variant "text 'lHQ' as capitalized"; + variant "text 'lHR' as capitalized"; + variant "text 'lHS' as capitalized"; + variant "text 'lHT' as capitalized"; + variant "text 'lHU' as capitalized"; + variant "text 'lHV' as capitalized"; + variant "text 'lHW' as capitalized"; + variant "text 'lHX' as capitalized"; + variant "text 'lHY' as capitalized"; + variant "text 'lHZ' as capitalized"; + variant "text 'lIA' as capitalized"; + variant "text 'lIB' as capitalized"; + variant "text 'lIC' as capitalized"; + variant "text 'lID' as capitalized"; + variant "text 'lIE' as capitalized"; + variant "text 'lIF' as capitalized"; + variant "text 'lIG' as capitalized"; + variant "text 'lIH' as capitalized"; + variant "text 'lII' as capitalized"; + variant "text 'lIJ' as capitalized"; + variant "text 'lIK' as capitalized"; + variant "text 'lIL' as capitalized"; + variant "text 'lIM' as capitalized"; + variant "text 'lIN' as capitalized"; + variant "text 'lIO' as capitalized"; + variant "text 'lIQ' as capitalized"; + variant "text 'lIR' as capitalized"; + variant "text 'lIS' as capitalized"; + variant "text 'lIT' as capitalized"; + variant "text 'lIU' as capitalized"; + variant "text 'lIV' as capitalized"; + variant "text 'lIW' as capitalized"; + variant "text 'lIX' as capitalized"; + variant "text 'lIY' as capitalized"; + variant "text 'lJA' as capitalized"; + variant "text 'lJB' as capitalized"; + variant "text 'lJC' as capitalized"; + variant "text 'lJD' as capitalized"; + variant "text 'lJE' as capitalized"; + variant "text 'lJF' as capitalized"; + variant "text 'lJG' as capitalized"; + variant "text 'lJH' as capitalized"; + variant "text 'lJI' as capitalized"; + variant "text 'lJJ' as capitalized"; + variant "text 'lJK' as capitalized"; + variant "text 'lJL' as capitalized"; + variant "text 'lJM' as capitalized"; + variant "text 'lJN' as capitalized"; + variant "text 'lJO' as capitalized"; + variant "text 'lJP' as capitalized"; + variant "text 'lJQ' as capitalized"; + variant "text 'lJR' as capitalized"; + variant "text 'lJS' as capitalized"; + variant "text 'lJT' as capitalized"; + variant "text 'lJU' as capitalized"; + variant "text 'lJV' as capitalized"; + variant "text 'lJW' as capitalized"; + variant "text 'lJX' as capitalized"; + variant "text 'lJY' as capitalized"; + variant "text 'lJZ' as capitalized"; + variant "text 'lKA' as capitalized"; + variant "text 'lKB' as capitalized"; + variant "text 'lKC' as capitalized"; + variant "text 'lKD' as capitalized"; + variant "text 'lKE' as capitalized"; + variant "text 'lKF' as capitalized"; + variant "text 'lKG' as capitalized"; + variant "text 'lKH' as capitalized"; + variant "text 'lKI' as capitalized"; + variant "text 'lKJ' as capitalized"; + variant "text 'lKK' as capitalized"; + variant "text 'lKL' as capitalized"; + variant "text 'lKM' as capitalized"; + variant "text 'lKN' as capitalized"; + variant "text 'lKO' as capitalized"; + variant "text 'lKP' as capitalized"; + variant "text 'lKQ' as capitalized"; + variant "text 'lKR' as capitalized"; + variant "text 'lKS' as capitalized"; + variant "text 'lKT' as capitalized"; + variant "text 'lKU' as capitalized"; + variant "text 'lKV' as capitalized"; + variant "text 'lKW' as capitalized"; + variant "text 'lKX' as capitalized"; + variant "text 'lKY' as capitalized"; + variant "text 'lKZ' as capitalized"; + variant "text 'lLA' as capitalized"; + variant "text 'lLB' as capitalized"; + variant "text 'lLC' as capitalized"; + variant "text 'lLD' as capitalized"; + variant "text 'lLE' as capitalized"; + variant "text 'lLF' as capitalized"; + variant "text 'lLG' as capitalized"; + variant "text 'lLH' as capitalized"; + variant "text 'lLI' as capitalized"; + variant "text 'lLJ' as capitalized"; + variant "text 'lLK' as capitalized"; + variant "text 'lLL' as capitalized"; + variant "text 'lLM' as capitalized"; + variant "text 'lLN' as capitalized"; + variant "text 'lLO' as capitalized"; + variant "text 'lLP' as capitalized"; + variant "text 'lLQ' as capitalized"; + variant "text 'lLR' as capitalized"; + variant "text 'lLS' as capitalized"; + variant "text 'lLT' as capitalized"; + variant "text 'lLU' as capitalized"; + variant "text 'lLV' as capitalized"; + variant "text 'lLW' as capitalized"; + variant "text 'lLX' as capitalized"; + variant "text 'lLY' as capitalized"; + variant "text 'lLZ' as capitalized"; + variant "text 'lMA' as capitalized"; + variant "text 'lMB' as capitalized"; + variant "text 'lMC' as capitalized"; + variant "text 'lMD' as capitalized"; + variant "text 'lME' as capitalized"; + variant "text 'lMF' as capitalized"; + variant "text 'lMG' as capitalized"; + variant "text 'lMH' as capitalized"; + variant "text 'lMI' as capitalized"; + variant "text 'lMJ' as capitalized"; + variant "text 'lMK' as capitalized"; + variant "text 'lML' as capitalized"; + variant "text 'lMM' as capitalized"; + variant "text 'lMN' as capitalized"; + variant "text 'lMO' as capitalized"; + variant "text 'lMP' as capitalized"; + variant "text 'lMQ' as capitalized"; + variant "text 'lMR' as capitalized"; + variant "text 'lMS' as capitalized"; + variant "text 'lMT' as capitalized"; + variant "text 'lMU' as capitalized"; + variant "text 'lMV' as capitalized"; + variant "text 'lMW' as capitalized"; + variant "text 'lMX' as capitalized"; + variant "text 'lMY' as capitalized"; + variant "text 'lMZ' as capitalized"; + variant "text 'lNA' as capitalized"; + variant "text 'lNB' as capitalized"; + variant "text 'lNC' as capitalized"; + variant "text 'lND' as capitalized"; + variant "text 'lNE' as capitalized"; + variant "text 'lNF' as capitalized"; + variant "text 'lNG' as capitalized"; + variant "text 'lNH' as capitalized"; + variant "text 'lNI' as capitalized"; + variant "text 'lNJ' as capitalized"; + variant "text 'lNK' as capitalized"; + variant "text 'lNL' as capitalized"; + variant "text 'lNM' as capitalized"; + variant "text 'lNN' as capitalized"; + variant "text 'lNO' as capitalized"; + variant "text 'lNP' as capitalized"; + variant "text 'lNQ' as capitalized"; + variant "text 'lNR' as capitalized"; + variant "text 'lNS' as capitalized"; + variant "text 'lNT' as capitalized"; + variant "text 'lNU' as capitalized"; + variant "text 'lNV' as capitalized"; + variant "text 'lNW' as capitalized"; + variant "text 'lNX' as capitalized"; + variant "text 'lNY' as capitalized"; + variant "text 'lNZ' as capitalized"; + variant "text 'lOA' as capitalized"; + variant "text 'lOB' as capitalized"; + variant "text 'lOC' as capitalized"; + variant "text 'lOD' as capitalized"; + variant "text 'lOE' as capitalized"; + variant "text 'lOF' as capitalized"; + variant "text 'lOG' as capitalized"; + variant "text 'lOH' as capitalized"; + variant "text 'lOI' as capitalized"; + variant "text 'lOJ' as capitalized"; + variant "text 'lOK' as capitalized"; + variant "text 'lOL' as capitalized"; + variant "text 'lOM' as capitalized"; + variant "text 'lON' as capitalized"; + variant "text 'lOO' as capitalized"; + variant "text 'lOP' as capitalized"; + variant "text 'lOQ' as capitalized"; + variant "text 'lOR' as capitalized"; + variant "text 'lOS' as capitalized"; + variant "text 'lOT' as capitalized"; + variant "text 'lOU' as capitalized"; + variant "text 'lOV' as capitalized"; + variant "text 'lOW' as capitalized"; + variant "text 'lOX' as capitalized"; + variant "text 'lOY' as capitalized"; + variant "text 'lOZ' as capitalized"; + variant "text 'lPA' as capitalized"; + variant "text 'lPB' as capitalized"; + variant "text 'lPC' as capitalized"; + variant "text 'lPD' as capitalized"; + variant "text 'lPE' as capitalized"; + variant "text 'lPF' as capitalized"; + variant "text 'lPG' as capitalized"; + variant "text 'lPH' as capitalized"; + variant "text 'lPI' as capitalized"; + variant "text 'lPJ' as capitalized"; + variant "text 'lPK' as capitalized"; + variant "text 'lPL' as capitalized"; + variant "text 'lPM' as capitalized"; + variant "text 'lPN' as capitalized"; + variant "text 'lPO' as capitalized"; + variant "text 'lPP' as capitalized"; + variant "text 'lPQ' as capitalized"; + variant "text 'lPR' as capitalized"; + variant "text 'lPS' as capitalized"; + variant "text 'lPT' as capitalized"; + variant "text 'lPU' as capitalized"; + variant "text 'lPV' as capitalized"; + variant "text 'lPW' as capitalized"; + variant "text 'lPX' as capitalized"; + variant "text 'lPY' as capitalized"; + variant "text 'lPZ' as capitalized"; + variant "text 'lQA' as capitalized"; + variant "text 'lQB' as capitalized"; + variant "text 'lQC' as capitalized"; + variant "text 'lQD' as capitalized"; + variant "text 'lQF' as capitalized"; + variant "text 'lQG' as capitalized"; + variant "text 'lQH' as capitalized"; + variant "text 'lQI' as capitalized"; + variant "text 'lQJ' as capitalized"; + variant "text 'lQK' as capitalized"; + variant "text 'lQL' as capitalized"; + variant "text 'lQM' as capitalized"; + variant "text 'lQN' as capitalized"; + variant "text 'lQO' as capitalized"; + variant "text 'lQP' as capitalized"; + variant "text 'lQQ' as capitalized"; + variant "text 'lQR' as capitalized"; + variant "text 'lQS' as capitalized"; + variant "text 'lQT' as capitalized"; + variant "text 'lQU' as capitalized"; + variant "text 'lQV' as capitalized"; + variant "text 'lQW' as capitalized"; + variant "text 'lQX' as capitalized"; + variant "text 'lQY' as capitalized"; + variant "text 'lQZ' as capitalized"; + variant "text 'lRA' as capitalized"; + variant "text 'lRB' as capitalized"; + variant "text 'lRC' as capitalized"; + variant "text 'lRD' as capitalized"; + variant "text 'lRE' as capitalized"; + variant "text 'lRF' as capitalized"; + variant "text 'lRG' as capitalized"; + variant "text 'lRH' as capitalized"; + variant "text 'lRI' as capitalized"; + variant "text 'lRJ' as capitalized"; + variant "text 'lRK' as capitalized"; + variant "text 'lRL' as capitalized"; + variant "text 'lRM' as capitalized"; + variant "text 'lRN' as capitalized"; + variant "text 'lRO' as capitalized"; + variant "text 'lRP' as capitalized"; + variant "text 'lRQ' as capitalized"; + variant "text 'lRR' as capitalized"; + variant "text 'lRS' as capitalized"; + variant "text 'lRT' as capitalized"; + variant "text 'lRU' as capitalized"; + variant "text 'lRV' as capitalized"; + variant "text 'lRW' as capitalized"; + variant "text 'lRX' as capitalized"; + variant "text 'lRY' as capitalized"; + variant "text 'lRZ' as capitalized"; + variant "text 'lSA' as capitalized"; + variant "text 'lSB' as capitalized"; + variant "text 'lSC' as capitalized"; + variant "text 'lSD' as capitalized"; + variant "text 'lSE' as capitalized"; + variant "text 'lSF' as capitalized"; + variant "text 'lSG' as capitalized"; + variant "text 'lSH' as capitalized"; + variant "text 'lSI' as capitalized"; + variant "text 'lSJ' as capitalized"; + variant "text 'lSL' as capitalized"; + variant "text 'lSM' as capitalized"; + variant "text 'lSN' as capitalized"; + variant "text 'lSO' as capitalized"; + variant "text 'lSQ' as capitalized"; + variant "text 'lSR' as capitalized"; + variant "text 'lSS' as capitalized"; + variant "text 'lST' as capitalized"; + variant "text 'lSU' as capitalized"; + variant "text 'lSV' as capitalized"; + variant "text 'lSW' as capitalized"; + variant "text 'lSX' as capitalized"; + variant "text 'lSZ' as capitalized"; + variant "text 'lTA' as capitalized"; + variant "text 'lTC' as capitalized"; + variant "text 'lTD' as capitalized"; + variant "text 'lTE' as capitalized"; + variant "text 'lTF' as capitalized"; + variant "text 'lTG' as capitalized"; + variant "text 'lTH' as capitalized"; + variant "text 'lTI' as capitalized"; + variant "text 'lTJ' as capitalized"; + variant "text 'lTK' as capitalized"; + variant "text 'lTL' as capitalized"; + variant "text 'lTM' as capitalized"; + variant "text 'lTN' as capitalized"; + variant "text 'lTO' as capitalized"; + variant "text 'lTP' as capitalized"; + variant "text 'lTQ' as capitalized"; + variant "text 'lTR' as capitalized"; + variant "text 'lTS' as capitalized"; + variant "text 'lTT' as capitalized"; + variant "text 'lTU' as capitalized"; + variant "text 'lTV' as capitalized"; + variant "text 'lTW' as capitalized"; + variant "text 'lTX' as capitalized"; + variant "text 'lTY' as capitalized"; + variant "text 'lTZ' as capitalized"; + variant "text 'lUA' as capitalized"; + variant "text 'lUB' as capitalized"; + variant "text 'lUC' as capitalized"; + variant "text 'lUD' as capitalized"; + variant "text 'lUE' as capitalized"; + variant "text 'lUF' as capitalized"; + variant "text 'lUG' as capitalized"; + variant "text 'lUH' as capitalized"; + variant "text 'lUI' as capitalized"; + variant "text 'lUJ' as capitalized"; + variant "text 'lUK' as capitalized"; + variant "text 'lUL' as capitalized"; + variant "text 'lUM' as capitalized"; + variant "text 'lUN' as capitalized"; + variant "text 'lUO' as capitalized"; + variant "text 'lUP' as capitalized"; + variant "text 'lUQ' as capitalized"; + variant "text 'lUR' as capitalized"; + variant "text 'lUS' as capitalized"; + variant "text 'lUT' as capitalized"; + variant "text 'lUU' as capitalized"; + variant "text 'lUV' as capitalized"; + variant "text 'lUW' as capitalized"; + variant "text 'lUX' as capitalized"; + variant "text 'lUY' as capitalized"; + variant "text 'lUZ' as capitalized"; + variant "text 'lVA' as capitalized"; + variant "text 'lVB' as capitalized"; + variant "text 'lVC' as capitalized"; + variant "text 'lVD' as capitalized"; + variant "text 'lVE' as capitalized"; + variant "text 'lVF' as capitalized"; + variant "text 'lVG' as capitalized"; + variant "text 'lVH' as capitalized"; + variant "text 'lVI' as capitalized"; + variant "text 'lVJ' as capitalized"; + variant "text 'lVK' as capitalized"; + variant "text 'lVL' as capitalized"; + variant "text 'lVM' as capitalized"; + variant "text 'lVN' as capitalized"; + variant "text 'lVO' as capitalized"; + variant "text 'lVP' as capitalized"; + variant "text 'lVQ' as capitalized"; + variant "text 'lVS' as capitalized"; + variant "text 'lVT' as capitalized"; + variant "text 'lVU' as capitalized"; + variant "text 'lVV' as capitalized"; + variant "text 'lVW' as capitalized"; + variant "text 'lVX' as capitalized"; + variant "text 'lVY' as capitalized"; + variant "text 'lVZ' as capitalized"; + variant "text 'lWA' as capitalized"; + variant "text 'lWB' as capitalized"; + variant "text 'lWD' as capitalized"; + variant "text 'lWE' as capitalized"; + variant "text 'lWF' as capitalized"; + variant "text 'lWG' as capitalized"; + variant "text 'lWH' as capitalized"; + variant "text 'lWI' as capitalized"; + variant "text 'lWJ' as capitalized"; + variant "text 'lWK' as capitalized"; + variant "text 'lWL' as capitalized"; + variant "text 'lWN' as capitalized"; + variant "text 'lWO' as capitalized"; + variant "text 'lWP' as capitalized"; + variant "text 'lWQ' as capitalized"; + variant "text 'lWR' as capitalized"; + variant "text 'lWS' as capitalized"; + variant "text 'lWT' as capitalized"; + variant "text 'lWU' as capitalized"; + variant "text 'lWW' as capitalized"; + variant "text 'lWX' as capitalized"; + variant "text 'lWY' as capitalized"; + variant "text 'lWZ' as capitalized"; + variant "text 'lXA' as capitalized"; + variant "text 'lXB' as capitalized"; + variant "text 'lXC' as capitalized"; + variant "text 'lXE' as capitalized"; + variant "text 'lXF' as capitalized"; + variant "text 'lXK' as capitalized"; + variant "text 'lXN' as capitalized"; + variant "text 'lXO' as capitalized"; + variant "text 'lXP' as capitalized"; + variant "text 'lXR' as capitalized"; + variant "text 'lXS' as capitalized"; + variant "text 'lXX' as capitalized"; + variant "text 'lXY' as capitalized"; + variant "text 'lXZ' as capitalized"; + variant "text 'lYA' as capitalized"; + variant "text 'lYB' as capitalized"; + variant "text 'lYC' as capitalized"; + variant "text 'lYD' as capitalized"; + variant "text 'lYE' as capitalized"; + variant "text 'lYF' as capitalized"; + variant "text 'lYG' as capitalized"; + variant "text 'lYH' as capitalized"; + variant "text 'lYI' as capitalized"; + variant "text 'lYJ' as capitalized"; + variant "text 'lYK' as capitalized"; + variant "text 'lYL' as capitalized"; + variant "text 'lYM' as capitalized"; + variant "text 'lYN' as capitalized"; + variant "text 'lYO' as capitalized"; + variant "text 'lYP' as capitalized"; + variant "text 'lYQ' as capitalized"; + variant "text 'lYR' as capitalized"; + variant "text 'lYS' as capitalized"; + variant "text 'lYT' as capitalized"; + variant "text 'lYU' as capitalized"; + variant "text 'lYV' as capitalized"; + variant "text 'lYW' as capitalized"; + variant "text 'lYX' as capitalized"; + variant "text 'lYY' as capitalized"; + variant "text 'lYZ' as capitalized"; + variant "text 'lZA' as capitalized"; + variant "text 'lZB' as capitalized"; + variant "text 'lZC' as capitalized"; + variant "text 'lZD' as capitalized"; + variant "text 'lZE' as capitalized"; + variant "text 'lZF' as capitalized"; + variant "text 'lZG' as capitalized"; + variant "text 'lZH' as capitalized"; + variant "text 'lZI' as capitalized"; + variant "text 'lZJ' as capitalized"; + variant "text 'lZK' as capitalized"; + variant "text 'lZL' as capitalized"; + variant "text 'lZM' as capitalized"; + variant "text 'lZN' as capitalized"; + variant "text 'lZO' as capitalized"; + variant "text 'lZP' as capitalized"; + variant "text 'lZQ' as capitalized"; + variant "text 'lZR' as capitalized"; + variant "text 'lZS' as capitalized"; + variant "text 'lZT' as capitalized"; + variant "text 'lZU' as capitalized"; + variant "text 'lZV' as capitalized"; + variant "text 'lZW' as capitalized"; + variant "text 'lZX' as capitalized"; + variant "text 'lZY' as capitalized"; + variant "text 'lZZ' as capitalized"; + variant "text 'mAA' as capitalized"; + variant "text 'mAB' as capitalized"; + variant "text 'mAC' as capitalized"; + variant "text 'mAD' as capitalized"; + variant "text 'mAE' as capitalized"; + variant "text 'mAF' as capitalized"; + variant "text 'mAG' as capitalized"; + variant "text 'mAH' as capitalized"; + variant "text 'mAI' as capitalized"; + variant "text 'mAJ' as capitalized"; + variant "text 'mAK' as capitalized"; + variant "text 'mAL' as capitalized"; + variant "text 'mAM' as capitalized"; + variant "text 'mAN' as capitalized"; + variant "text 'mAO' as capitalized"; + variant "text 'mAP' as capitalized"; + variant "text 'mAQ' as capitalized"; + variant "text 'mAR' as capitalized"; + variant "text 'mAS' as capitalized"; + variant "text 'mAT' as capitalized"; + variant "text 'mAV' as capitalized"; + variant "text 'mAW' as capitalized"; + variant "text 'mAX' as capitalized"; + variant "text 'mAY' as capitalized"; + variant "text 'mAZ' as capitalized"; + variant "text 'mBA' as capitalized"; + variant "text 'mBB' as capitalized"; + variant "text 'mBC' as capitalized"; + variant "text 'mBD' as capitalized"; + variant "text 'mBE' as capitalized"; + variant "text 'mBF' as capitalized"; + variant "text 'mBG' as capitalized"; + variant "text 'mBH' as capitalized"; + variant "text 'mBI' as capitalized"; + variant "text 'mBJ' as capitalized"; + variant "text 'mBK' as capitalized"; + variant "text 'mBL' as capitalized"; + variant "text 'mBM' as capitalized"; + variant "text 'mBN' as capitalized"; + variant "text 'mBO' as capitalized"; + variant "text 'mBP' as capitalized"; + variant "text 'mBQ' as capitalized"; + variant "text 'mBR' as capitalized"; + variant "text 'mBS' as capitalized"; + variant "text 'mBT' as capitalized"; + variant "text 'mBU' as capitalized"; + variant "text 'mBV' as capitalized"; + variant "text 'mBW' as capitalized"; + variant "text 'mBX' as capitalized"; + variant "text 'mBY' as capitalized"; + variant "text 'mBZ' as capitalized"; + variant "text 'mCA' as capitalized"; + variant "text 'mCB' as capitalized"; + variant "text 'mCC' as capitalized"; + variant "text 'mCD' as capitalized"; + variant "text 'mCE' as capitalized"; + variant "text 'mCF' as capitalized"; + variant "text 'mCG' as capitalized"; + variant "text 'mCH' as capitalized"; + variant "text 'mCI' as capitalized"; + variant "text 'mCJ' as capitalized"; + variant "text 'mCK' as capitalized"; + variant "text 'mCL' as capitalized"; + variant "text 'mCM' as capitalized"; + variant "text 'mCN' as capitalized"; + variant "text 'mCO' as capitalized"; + variant "text 'mCP' as capitalized"; + variant "text 'mCQ' as capitalized"; + variant "text 'mCR' as capitalized"; + variant "text 'mCS' as capitalized"; + variant "text 'mCT' as capitalized"; + variant "text 'mCU' as capitalized"; + variant "text 'mCV' as capitalized"; + variant "text 'mCW' as capitalized"; + variant "text 'mCX' as capitalized"; + variant "text 'mCY' as capitalized"; + variant "text 'mCZ' as capitalized"; + variant "text 'mDA' as capitalized"; + variant "text 'mDB' as capitalized"; + variant "text 'mDC' as capitalized"; + variant "text 'mDD' as capitalized"; + variant "text 'mDE' as capitalized"; + variant "text 'mDF' as capitalized"; + variant "text 'mDG' as capitalized"; + variant "text 'mDH' as capitalized"; + variant "text 'mDI' as capitalized"; + variant "text 'mDJ' as capitalized"; + variant "text 'mDK' as capitalized"; + variant "text 'mDL' as capitalized"; + variant "text 'mDM' as capitalized"; + variant "text 'mDN' as capitalized"; + variant "text 'mDO' as capitalized"; + variant "text 'mDP' as capitalized"; + variant "text 'mDQ' as capitalized"; + variant "text 'mDR' as capitalized"; + variant "text 'mDS' as capitalized"; + variant "text 'mDT' as capitalized"; + variant "text 'mDU' as capitalized"; + variant "text 'mDW' as capitalized"; + variant "text 'mDX' as capitalized"; + variant "text 'mDY' as capitalized"; + variant "text 'mDZ' as capitalized"; + variant "text 'mEB' as capitalized"; + variant "text 'mEC' as capitalized"; + variant "text 'mED' as capitalized"; + variant "text 'mEE' as capitalized"; + variant "text 'mEF' as capitalized"; + variant "text 'mEG' as capitalized"; + variant "text 'mEH' as capitalized"; + variant "text 'mEI' as capitalized"; + variant "text 'mEJ' as capitalized"; + variant "text 'mEK' as capitalized"; + variant "text 'mEL' as capitalized"; + variant "text 'mEM' as capitalized"; + variant "text 'mEN' as capitalized"; + variant "text 'mEO' as capitalized"; + variant "text 'mEP' as capitalized"; + variant "text 'mEQ' as capitalized"; + variant "text 'mER' as capitalized"; + variant "text 'mES' as capitalized"; + variant "text 'mET' as capitalized"; + variant "text 'mEU' as capitalized"; + variant "text 'mEV' as capitalized"; + variant "text 'mEW' as capitalized"; + variant "text 'mEX' as capitalized"; + variant "text 'mEY' as capitalized"; + variant "text 'mEZ' as capitalized"; + variant "text 'mFA' as capitalized"; + variant "text 'mFB' as capitalized"; + variant "text 'mFC' as capitalized"; + variant "text 'mFD' as capitalized"; + variant "text 'mFE' as capitalized"; + variant "text 'mFF' as capitalized"; + variant "text 'mFG' as capitalized"; + variant "text 'mFH' as capitalized"; + variant "text 'mFI' as capitalized"; + variant "text 'mFJ' as capitalized"; + variant "text 'mFK' as capitalized"; + variant "text 'mFL' as capitalized"; + variant "text 'mFM' as capitalized"; + variant "text 'mFN' as capitalized"; + variant "text 'mFO' as capitalized"; + variant "text 'mFP' as capitalized"; + variant "text 'mFQ' as capitalized"; + variant "text 'mFR' as capitalized"; + variant "text 'mFS' as capitalized"; + variant "text 'mFT' as capitalized"; + variant "text 'mFU' as capitalized"; + variant "text 'mFV' as capitalized"; + variant "text 'mFW' as capitalized"; + variant "text 'mFX' as capitalized"; + variant "text 'mFY' as capitalized"; + variant "text 'mFZ' as capitalized"; + variant "text 'mGA' as capitalized"; + variant "text 'mGB' as capitalized"; + variant "text 'mGC' as capitalized"; + variant "text 'mGD' as capitalized"; + variant "text 'mGE' as capitalized"; + variant "text 'mGF' as capitalized"; + variant "text 'mGG' as capitalized"; + variant "text 'mGH' as capitalized"; + variant "text 'mGI' as capitalized"; + variant "text 'mGJ' as capitalized"; + variant "text 'mGK' as capitalized"; + variant "text 'mGL' as capitalized"; + variant "text 'mGM' as capitalized"; + variant "text 'mGN' as capitalized"; + variant "text 'mGO' as capitalized"; + variant "text 'mGP' as capitalized"; + variant "text 'mGQ' as capitalized"; + variant "text 'mGR' as capitalized"; + variant "text 'mGS' as capitalized"; + variant "text 'mGT' as capitalized"; + variant "text 'mGU' as capitalized"; + variant "text 'mGV' as capitalized"; + variant "text 'mGW' as capitalized"; + variant "text 'mGX' as capitalized"; + variant "text 'mGY' as capitalized"; + variant "text 'mGZ' as capitalized"; + variant "text 'mHA' as capitalized"; + variant "text 'mHB' as capitalized"; + variant "text 'mHC' as capitalized"; + variant "text 'mHD' as capitalized"; + variant "text 'mHE' as capitalized"; + variant "text 'mHF' as capitalized"; + variant "text 'mHG' as capitalized"; + variant "text 'mHH' as capitalized"; + variant "text 'mHI' as capitalized"; + variant "text 'mHJ' as capitalized"; + variant "text 'mHK' as capitalized"; + variant "text 'mHL' as capitalized"; + variant "text 'mHM' as capitalized"; + variant "text 'mHN' as capitalized"; + variant "text 'mHO' as capitalized"; + variant "text 'mHP' as capitalized"; + variant "text 'mHQ' as capitalized"; + variant "text 'mHR' as capitalized"; + variant "text 'mHS' as capitalized"; + variant "text 'mHT' as capitalized"; + variant "text 'mHU' as capitalized"; + variant "text 'mHV' as capitalized"; + variant "text 'mHW' as capitalized"; + variant "text 'mHX' as capitalized"; + variant "text 'mHY' as capitalized"; + variant "text 'mHZ' as capitalized"; + variant "text 'mIA' as capitalized"; + variant "text 'mIB' as capitalized"; + variant "text 'mIC' as capitalized"; + variant "text 'mID' as capitalized"; + variant "text 'mIE' as capitalized"; + variant "text 'mIF' as capitalized"; + variant "text 'mIG' as capitalized"; + variant "text 'mIH' as capitalized"; + variant "text 'mII' as capitalized"; + variant "text 'mIJ' as capitalized"; + variant "text 'mIK' as capitalized"; + variant "text 'mIL' as capitalized"; + variant "text 'mIM' as capitalized"; + variant "text 'mIN' as capitalized"; + variant "text 'mIO' as capitalized"; + variant "text 'mIP' as capitalized"; + variant "text 'mIQ' as capitalized"; + variant "text 'mIR' as capitalized"; + variant "text 'mIS' as capitalized"; + variant "text 'mIT' as capitalized"; + variant "text 'mIU' as capitalized"; + variant "text 'mIV' as capitalized"; + variant "text 'mIW' as capitalized"; + variant "text 'mIY' as capitalized"; + variant "text 'mIZ' as capitalized"; + variant "text 'mJA' as capitalized"; + variant "text 'mJB' as capitalized"; + variant "text 'mJC' as capitalized"; + variant "text 'mJD' as capitalized"; + variant "text 'mJE' as capitalized"; + variant "text 'mJF' as capitalized"; + variant "text 'mJG' as capitalized"; + variant "text 'mJH' as capitalized"; + variant "text 'mJI' as capitalized"; + variant "text 'mJJ' as capitalized"; + variant "text 'mJK' as capitalized"; + variant "text 'mJL' as capitalized"; + variant "text 'mJM' as capitalized"; + variant "text 'mJN' as capitalized"; + variant "text 'mJO' as capitalized"; + variant "text 'mJP' as capitalized"; + variant "text 'mJQ' as capitalized"; + variant "text 'mJR' as capitalized"; + variant "text 'mJS' as capitalized"; + variant "text 'mJT' as capitalized"; + variant "text 'mJU' as capitalized"; + variant "text 'mJV' as capitalized"; + variant "text 'mJW' as capitalized"; + variant "text 'mJX' as capitalized"; + variant "text 'mJY' as capitalized"; + variant "text 'mJZ' as capitalized"; + variant "text 'mKA' as capitalized"; + variant "text 'mKB' as capitalized"; + variant "text 'mKC' as capitalized"; + variant "text 'mKD' as capitalized"; + variant "text 'mKE' as capitalized"; + variant "text 'mKF' as capitalized"; + variant "text 'mKG' as capitalized"; + variant "text 'mKH' as capitalized"; + variant "text 'mKI' as capitalized"; + variant "text 'mKJ' as capitalized"; + variant "text 'mKK' as capitalized"; + variant "text 'mKL' as capitalized"; + variant "text 'mKM' as capitalized"; + variant "text 'mKN' as capitalized"; + variant "text 'mKO' as capitalized"; + variant "text 'mKP' as capitalized"; + variant "text 'mKQ' as capitalized"; + variant "text 'mKR' as capitalized"; + variant "text 'mKS' as capitalized"; + variant "text 'mKT' as capitalized"; + variant "text 'mKU' as capitalized"; + variant "text 'mKV' as capitalized"; + variant "text 'mKW' as capitalized"; + variant "text 'mKY' as capitalized"; + variant "text 'mKZ' as capitalized"; + variant "text 'mLB' as capitalized"; + variant "text 'mLC' as capitalized"; + variant "text 'mLD' as capitalized"; + variant "text 'mLE' as capitalized"; + variant "text 'mLF' as capitalized"; + variant "text 'mLG' as capitalized"; + variant "text 'mLH' as capitalized"; + variant "text 'mLI' as capitalized"; + variant "text 'mLJ' as capitalized"; + variant "text 'mLK' as capitalized"; + variant "text 'mLL' as capitalized"; + variant "text 'mLM' as capitalized"; + variant "text 'mLN' as capitalized"; + variant "text 'mLO' as capitalized"; + variant "text 'mLP' as capitalized"; + variant "text 'mLQ' as capitalized"; + variant "text 'mLR' as capitalized"; + variant "text 'mLS' as capitalized"; + variant "text 'mLT' as capitalized"; + variant "text 'mLU' as capitalized"; + variant "text 'mLV' as capitalized"; + variant "text 'mLX' as capitalized"; + variant "text 'mLY' as capitalized"; + variant "text 'mLZ' as capitalized"; + variant "text 'mMA' as capitalized"; + variant "text 'mMB' as capitalized"; + variant "text 'mMC' as capitalized"; + variant "text 'mMD' as capitalized"; + variant "text 'mME' as capitalized"; + variant "text 'mMF' as capitalized"; + variant "text 'mMG' as capitalized"; + variant "text 'mMH' as capitalized"; + variant "text 'mMI' as capitalized"; + variant "text 'mMJ' as capitalized"; + variant "text 'mMK' as capitalized"; + variant "text 'mML' as capitalized"; + variant "text 'mMM' as capitalized"; + variant "text 'mMN' as capitalized"; + variant "text 'mMO' as capitalized"; + variant "text 'mMP' as capitalized"; + variant "text 'mMQ' as capitalized"; + variant "text 'mMR' as capitalized"; + variant "text 'mMS' as capitalized"; + variant "text 'mMT' as capitalized"; + variant "text 'mMU' as capitalized"; + variant "text 'mMV' as capitalized"; + variant "text 'mMW' as capitalized"; + variant "text 'mMX' as capitalized"; + variant "text 'mMY' as capitalized"; + variant "text 'mMZ' as capitalized"; + variant "text 'mNA' as capitalized"; + variant "text 'mNB' as capitalized"; + variant "text 'mNC' as capitalized"; + variant "text 'mND' as capitalized"; + variant "text 'mNE' as capitalized"; + variant "text 'mNF' as capitalized"; + variant "text 'mNG' as capitalized"; + variant "text 'mNH' as capitalized"; + variant "text 'mNI' as capitalized"; + variant "text 'mNJ' as capitalized"; + variant "text 'mNK' as capitalized"; + variant "text 'mNL' as capitalized"; + variant "text 'mNM' as capitalized"; + variant "text 'mNN' as capitalized"; + variant "text 'mNO' as capitalized"; + variant "text 'mNP' as capitalized"; + variant "text 'mNQ' as capitalized"; + variant "text 'mNR' as capitalized"; + variant "text 'mNS' as capitalized"; + variant "text 'mNT' as capitalized"; + variant "text 'mNU' as capitalized"; + variant "text 'mNV' as capitalized"; + variant "text 'mNW' as capitalized"; + variant "text 'mNX' as capitalized"; + variant "text 'mNY' as capitalized"; + variant "text 'mNZ' as capitalized"; + variant "text 'mOA' as capitalized"; + variant "text 'mOB' as capitalized"; + variant "text 'mOC' as capitalized"; + variant "text 'mOD' as capitalized"; + variant "text 'mOE' as capitalized"; + variant "text 'mOF' as capitalized"; + variant "text 'mOG' as capitalized"; + variant "text 'mOH' as capitalized"; + variant "text 'mOI' as capitalized"; + variant "text 'mOJ' as capitalized"; + variant "text 'mOL' as capitalized"; + variant "text 'mOM' as capitalized"; + variant "text 'mON' as capitalized"; + variant "text 'mOO' as capitalized"; + variant "text 'mOP' as capitalized"; + variant "text 'mOQ' as capitalized"; + variant "text 'mOR' as capitalized"; + variant "text 'mOS' as capitalized"; + variant "text 'mOT' as capitalized"; + variant "text 'mOU' as capitalized"; + variant "text 'mOV' as capitalized"; + variant "text 'mOW' as capitalized"; + variant "text 'mOX' as capitalized"; + variant "text 'mOY' as capitalized"; + variant "text 'mOZ' as capitalized"; + variant "text 'mPA' as capitalized"; + variant "text 'mPB' as capitalized"; + variant "text 'mPC' as capitalized"; + variant "text 'mPD' as capitalized"; + variant "text 'mPE' as capitalized"; + variant "text 'mPF' as capitalized"; + variant "text 'mPG' as capitalized"; + variant "text 'mPH' as capitalized"; + variant "text 'mPI' as capitalized"; + variant "text 'mPJ' as capitalized"; + variant "text 'mPK' as capitalized"; + variant "text 'mPL' as capitalized"; + variant "text 'mPM' as capitalized"; + variant "text 'mPN' as capitalized"; + variant "text 'mPO' as capitalized"; + variant "text 'mPP' as capitalized"; + variant "text 'mPQ' as capitalized"; + variant "text 'mPR' as capitalized"; + variant "text 'mPS' as capitalized"; + variant "text 'mPT' as capitalized"; + variant "text 'mPU' as capitalized"; + variant "text 'mPV' as capitalized"; + variant "text 'mPW' as capitalized"; + variant "text 'mPX' as capitalized"; + variant "text 'mPY' as capitalized"; + variant "text 'mPZ' as capitalized"; + variant "text 'mQA' as capitalized"; + variant "text 'mQB' as capitalized"; + variant "text 'mQC' as capitalized"; + variant "text 'mQD' as capitalized"; + variant "text 'mQE' as capitalized"; + variant "text 'mQF' as capitalized"; + variant "text 'mQG' as capitalized"; + variant "text 'mQH' as capitalized"; + variant "text 'mQI' as capitalized"; + variant "text 'mQJ' as capitalized"; + variant "text 'mQK' as capitalized"; + variant "text 'mQL' as capitalized"; + variant "text 'mQM' as capitalized"; + variant "text 'mQN' as capitalized"; + variant "text 'mQO' as capitalized"; + variant "text 'mQP' as capitalized"; + variant "text 'mQQ' as capitalized"; + variant "text 'mQR' as capitalized"; + variant "text 'mQS' as capitalized"; + variant "text 'mQT' as capitalized"; + variant "text 'mQU' as capitalized"; + variant "text 'mQV' as capitalized"; + variant "text 'mQW' as capitalized"; + variant "text 'mQX' as capitalized"; + variant "text 'mQY' as capitalized"; + variant "text 'mQZ' as capitalized"; + variant "text 'mRA' as capitalized"; + variant "text 'mRB' as capitalized"; + variant "text 'mRC' as capitalized"; + variant "text 'mRD' as capitalized"; + variant "text 'mRE' as capitalized"; + variant "text 'mRF' as capitalized"; + variant "text 'mRG' as capitalized"; + variant "text 'mRH' as capitalized"; + variant "text 'mRI' as capitalized"; + variant "text 'mRJ' as capitalized"; + variant "text 'mRK' as capitalized"; + variant "text 'mRL' as capitalized"; + variant "text 'mRM' as capitalized"; + variant "text 'mRN' as capitalized"; + variant "text 'mRO' as capitalized"; + variant "text 'mRQ' as capitalized"; + variant "text 'mRR' as capitalized"; + variant "text 'mRS' as capitalized"; + variant "text 'mRT' as capitalized"; + variant "text 'mRV' as capitalized"; + variant "text 'mRW' as capitalized"; + variant "text 'mRX' as capitalized"; + variant "text 'mRY' as capitalized"; + variant "text 'mRZ' as capitalized"; + variant "text 'mSA' as capitalized"; + variant "text 'mSB' as capitalized"; + variant "text 'mSC' as capitalized"; + variant "text 'mSD' as capitalized"; + variant "text 'mSE' as capitalized"; + variant "text 'mSF' as capitalized"; + variant "text 'mSG' as capitalized"; + variant "text 'mSH' as capitalized"; + variant "text 'mSI' as capitalized"; + variant "text 'mSJ' as capitalized"; + variant "text 'mSK' as capitalized"; + variant "text 'mSL' as capitalized"; + variant "text 'mSM' as capitalized"; + variant "text 'mSN' as capitalized"; + variant "text 'mSO' as capitalized"; + variant "text 'mSP' as capitalized"; + variant "text 'mSQ' as capitalized"; + variant "text 'mSR' as capitalized"; + variant "text 'mSS' as capitalized"; + variant "text 'mST' as capitalized"; + variant "text 'mSU' as capitalized"; + variant "text 'mSV' as capitalized"; + variant "text 'mSW' as capitalized"; + variant "text 'mSX' as capitalized"; + variant "text 'mSY' as capitalized"; + variant "text 'mSZ' as capitalized"; + variant "text 'mTA' as capitalized"; + variant "text 'mTB' as capitalized"; + variant "text 'mTC' as capitalized"; + variant "text 'mTD' as capitalized"; + variant "text 'mTE' as capitalized"; + variant "text 'mTF' as capitalized"; + variant "text 'mTG' as capitalized"; + variant "text 'mTH' as capitalized"; + variant "text 'mTI' as capitalized"; + variant "text 'mTJ' as capitalized"; + variant "text 'mTK' as capitalized"; + variant "text 'mTL' as capitalized"; + variant "text 'mTM' as capitalized"; + variant "text 'mTN' as capitalized"; + variant "text 'mTO' as capitalized"; + variant "text 'mTP' as capitalized"; + variant "text 'mTQ' as capitalized"; + variant "text 'mTR' as capitalized"; + variant "text 'mTS' as capitalized"; + variant "text 'mTT' as capitalized"; + variant "text 'mTU' as capitalized"; + variant "text 'mTV' as capitalized"; + variant "text 'mTW' as capitalized"; + variant "text 'mTY' as capitalized"; + variant "text 'mTZ' as capitalized"; + variant "text 'mUA' as capitalized"; + variant "text 'mUB' as capitalized"; + variant "text 'mUC' as capitalized"; + variant "text 'mUD' as capitalized"; + variant "text 'mUE' as capitalized"; + variant "text 'mUF' as capitalized"; + variant "text 'mUH' as capitalized"; + variant "text 'mUI' as capitalized"; + variant "text 'mUJ' as capitalized"; + variant "text 'mUK' as capitalized"; + variant "text 'mUL' as capitalized"; + variant "text 'mUM' as capitalized"; + variant "text 'mUN' as capitalized"; + variant "text 'mUO' as capitalized"; + variant "text 'mUP' as capitalized"; + variant "text 'mUR' as capitalized"; + variant "text 'mUS' as capitalized"; + variant "text 'mUT' as capitalized"; + variant "text 'mUU' as capitalized"; + variant "text 'mUV' as capitalized"; + variant "text 'mUW' as capitalized"; + variant "text 'mUX' as capitalized"; + variant "text 'mUZ' as capitalized"; + variant "text 'mVA' as capitalized"; + variant "text 'mVB' as capitalized"; + variant "text 'mVC' as capitalized"; + variant "text 'mVD' as capitalized"; + variant "text 'mVE' as capitalized"; + variant "text 'mVF' as capitalized"; + variant "text 'mVG' as capitalized"; + variant "text 'mVH' as capitalized"; + variant "text 'mVI' as capitalized"; + variant "text 'mVJ' as capitalized"; + variant "text 'mVK' as capitalized"; + variant "text 'mVL' as capitalized"; + variant "text 'mVM' as capitalized"; + variant "text 'mVN' as capitalized"; + variant "text 'mVO' as capitalized"; + variant "text 'mVP' as capitalized"; + variant "text 'mVQ' as capitalized"; + variant "text 'mVR' as capitalized"; + variant "text 'mVS' as capitalized"; + variant "text 'mVT' as capitalized"; + variant "text 'mVU' as capitalized"; + variant "text 'mVV' as capitalized"; + variant "text 'mVW' as capitalized"; + variant "text 'mVX' as capitalized"; + variant "text 'mVY' as capitalized"; + variant "text 'mVZ' as capitalized"; + variant "text 'mWA' as capitalized"; + variant "text 'mWB' as capitalized"; + variant "text 'mWC' as capitalized"; + variant "text 'mWE' as capitalized"; + variant "text 'mWF' as capitalized"; + variant "text 'mWG' as capitalized"; + variant "text 'mWJ' as capitalized"; + variant "text 'mWL' as capitalized"; + variant "text 'mWM' as capitalized"; + variant "text 'mWO' as capitalized"; + variant "text 'mWP' as capitalized"; + variant "text 'mWQ' as capitalized"; + variant "text 'mWR' as capitalized"; + variant "text 'mWS' as capitalized"; + variant "text 'mWT' as capitalized"; + variant "text 'mWU' as capitalized"; + variant "text 'mWX' as capitalized"; + variant "text 'mWY' as capitalized"; + variant "text 'mXA' as capitalized"; + variant "text 'mXB' as capitalized"; + variant "text 'mXC' as capitalized"; + variant "text 'mXE' as capitalized"; + variant "text 'mXF' as capitalized"; + variant "text 'mXG' as capitalized"; + variant "text 'mXH' as capitalized"; + variant "text 'mXI' as capitalized"; + variant "text 'mXJ' as capitalized"; + variant "text 'mXK' as capitalized"; + variant "text 'mXL' as capitalized"; + variant "text 'mXM' as capitalized"; + variant "text 'mXN' as capitalized"; + variant "text 'mXO' as capitalized"; + variant "text 'mXP' as capitalized"; + variant "text 'mXR' as capitalized"; + variant "text 'mXS' as capitalized"; + variant "text 'mXT' as capitalized"; + variant "text 'mXU' as capitalized"; + variant "text 'mXV' as capitalized"; + variant "text 'mXW' as capitalized"; + variant "text 'mXX' as capitalized"; + variant "text 'mXY' as capitalized"; + variant "text 'mXZ' as capitalized"; + variant "text 'mYA' as capitalized"; + variant "text 'mYB' as capitalized"; + variant "text 'mYC' as capitalized"; + variant "text 'mYD' as capitalized"; + variant "text 'mYE' as capitalized"; + variant "text 'mYF' as capitalized"; + variant "text 'mYG' as capitalized"; + variant "text 'mYH' as capitalized"; + variant "text 'mYI' as capitalized"; + variant "text 'mYJ' as capitalized"; + variant "text 'mYK' as capitalized"; + variant "text 'mYL' as capitalized"; + variant "text 'mYM' as capitalized"; + variant "text 'mYN' as capitalized"; + variant "text 'mYO' as capitalized"; + variant "text 'mYP' as capitalized"; + variant "text 'mYQ' as capitalized"; + variant "text 'mYR' as capitalized"; + variant "text 'mYS' as capitalized"; + variant "text 'mYT' as capitalized"; + variant "text 'mYU' as capitalized"; + variant "text 'mYV' as capitalized"; + variant "text 'mYW' as capitalized"; + variant "text 'mYX' as capitalized"; + variant "text 'mYY' as capitalized"; + variant "text 'mYZ' as capitalized"; + variant "text 'mZA' as capitalized"; + variant "text 'mZB' as capitalized"; + variant "text 'mZC' as capitalized"; + variant "text 'mZD' as capitalized"; + variant "text 'mZE' as capitalized"; + variant "text 'mZF' as capitalized"; + variant "text 'mZG' as capitalized"; + variant "text 'mZH' as capitalized"; + variant "text 'mZJ' as capitalized"; + variant "text 'mZL' as capitalized"; + variant "text 'mZM' as capitalized"; + variant "text 'mZP' as capitalized"; + variant "text 'mZS' as capitalized"; + variant "text 'mZT' as capitalized"; + variant "text 'mZU' as capitalized"; + variant "text 'mZX' as capitalized"; + variant "text 'mZY' as capitalized"; + variant "text 'mZZ' as capitalized"; + variant "text 'nAA' as capitalized"; + variant "text 'nAB' as capitalized"; + variant "text 'nAC' as capitalized"; + variant "text 'nAE' as capitalized"; + variant "text 'nAF' as capitalized"; + variant "text 'nAG' as capitalized"; + variant "text 'nAH' as capitalized"; + variant "text 'nAI' as capitalized"; + variant "text 'nAJ' as capitalized"; + variant "text 'nAK' as capitalized"; + variant "text 'nAL' as capitalized"; + variant "text 'nAM' as capitalized"; + variant "text 'nAN' as capitalized"; + variant "text 'nAO' as capitalized"; + variant "text 'nAP' as capitalized"; + variant "text 'nAQ' as capitalized"; + variant "text 'nAR' as capitalized"; + variant "text 'nAS' as capitalized"; + variant "text 'nAT' as capitalized"; + variant "text 'nAU' as capitalized"; + variant "text 'nAV' as capitalized"; + variant "text 'nAW' as capitalized"; + variant "text 'nAX' as capitalized"; + variant "text 'nAY' as capitalized"; + variant "text 'nAZ' as capitalized"; + variant "text 'nBA' as capitalized"; + variant "text 'nBB' as capitalized"; + variant "text 'nBC' as capitalized"; + variant "text 'nBD' as capitalized"; + variant "text 'nBE' as capitalized"; + variant "text 'nBF' as capitalized"; + variant "text 'nBG' as capitalized"; + variant "text 'nBI' as capitalized"; + variant "text 'nBK' as capitalized"; + variant "text 'nBM' as capitalized"; + variant "text 'nBN' as capitalized"; + variant "text 'nBO' as capitalized"; + variant "text 'nBP' as capitalized"; + variant "text 'nBR' as capitalized"; + variant "text 'nBS' as capitalized"; + variant "text 'nBT' as capitalized"; + variant "text 'nBU' as capitalized"; + variant "text 'nBX' as capitalized"; + variant "text 'nBY' as capitalized"; + variant "text 'nBZ' as capitalized"; + variant "text 'nCA' as capitalized"; + variant "text 'nCB' as capitalized"; + variant "text 'nCC' as capitalized"; + variant "text 'nCD' as capitalized"; + variant "text 'nCE' as capitalized"; + variant "text 'nCF' as capitalized"; + variant "text 'nCG' as capitalized"; + variant "text 'nCH' as capitalized"; + variant "text 'nCI' as capitalized"; + variant "text 'nCJ' as capitalized"; + variant "text 'nCK' as capitalized"; + variant "text 'nCL' as capitalized"; + variant "text 'nCM' as capitalized"; + variant "text 'nCN' as capitalized"; + variant "text 'nCO' as capitalized"; + variant "text 'nCP' as capitalized"; + variant "text 'nCQ' as capitalized"; + variant "text 'nCR' as capitalized"; + variant "text 'nCS' as capitalized"; + variant "text 'nCT' as capitalized"; + variant "text 'nCV' as capitalized"; + variant "text 'nCW' as capitalized"; + variant "text 'nCX' as capitalized"; + variant "text 'nCY' as capitalized"; + variant "text 'nCZ' as capitalized"; + variant "text 'nDA' as capitalized"; + variant "text 'nDB' as capitalized"; + variant "text 'nDC' as capitalized"; + variant "text 'nDD' as capitalized"; + variant "text 'nDE' as capitalized"; + variant "text 'nDG' as capitalized"; + variant "text 'nDH' as capitalized"; + variant "text 'nDI' as capitalized"; + variant "text 'nDJ' as capitalized"; + variant "text 'nDK' as capitalized"; + variant "text 'nDL' as capitalized"; + variant "text 'nDM' as capitalized"; + variant "text 'nDN' as capitalized"; + variant "text 'nDO' as capitalized"; + variant "text 'nDP' as capitalized"; + variant "text 'nDQ' as capitalized"; + variant "text 'nDR' as capitalized"; + variant "text 'nDS' as capitalized"; + variant "text 'nDT' as capitalized"; + variant "text 'nDU' as capitalized"; + variant "text 'nDV' as capitalized"; + variant "text 'nDW' as capitalized"; + variant "text 'nDX' as capitalized"; + variant "text 'nDY' as capitalized"; + variant "text 'nDZ' as capitalized"; + variant "text 'nEA' as capitalized"; + variant "text 'nEB' as capitalized"; + variant "text 'nEC' as capitalized"; + variant "text 'nED' as capitalized"; + variant "text 'nEE' as capitalized"; + variant "text 'nEF' as capitalized"; + variant "text 'nEG' as capitalized"; + variant "text 'nEH' as capitalized"; + variant "text 'nEI' as capitalized"; + variant "text 'nEJ' as capitalized"; + variant "text 'nEK' as capitalized"; + variant "text 'nEL' as capitalized"; + variant "text 'nEM' as capitalized"; + variant "text 'nEN' as capitalized"; + variant "text 'nEO' as capitalized"; + variant "text 'nEP' as capitalized"; + variant "text 'nER' as capitalized"; + variant "text 'nES' as capitalized"; + variant "text 'nET' as capitalized"; + variant "text 'nEU' as capitalized"; + variant "text 'nEX' as capitalized"; + variant "text 'nEY' as capitalized"; + variant "text 'nEZ' as capitalized"; + variant "text 'nFA' as capitalized"; + variant "text 'nFB' as capitalized"; + variant "text 'nFC' as capitalized"; + variant "text 'nFD' as capitalized"; + variant "text 'nFE' as capitalized"; + variant "text 'nFF' as capitalized"; + variant "text 'nFG' as capitalized"; + variant "text 'nFH' as capitalized"; + variant "text 'nFI' as capitalized"; + variant "text 'nFJ' as capitalized"; + variant "text 'nFK' as capitalized"; + variant "text 'nFL' as capitalized"; + variant "text 'nFM' as capitalized"; + variant "text 'nFN' as capitalized"; + variant "text 'nFO' as capitalized"; + variant "text 'nFP' as capitalized"; + variant "text 'nFQ' as capitalized"; + variant "text 'nFR' as capitalized"; + variant "text 'nFS' as capitalized"; + variant "text 'nFT' as capitalized"; + variant "text 'nFU' as capitalized"; + variant "text 'nFV' as capitalized"; + variant "text 'nFX' as capitalized"; + variant "text 'nFZ' as capitalized"; + variant "text 'nGA' as capitalized"; + variant "text 'nGB' as capitalized"; + variant "text 'nGC' as capitalized"; + variant "text 'nGD' as capitalized"; + variant "text 'nGE' as capitalized"; + variant "text 'nGF' as capitalized"; + variant "text 'nGG' as capitalized"; + variant "text 'nGH' as capitalized"; + variant "text 'nGI' as capitalized"; + variant "text 'nGJ' as capitalized"; + variant "text 'nGK' as capitalized"; + variant "text 'nGL' as capitalized"; + variant "text 'nGM' as capitalized"; + variant "text 'nGN' as capitalized"; + variant "text 'nGO' as capitalized"; + variant "text 'nGP' as capitalized"; + variant "text 'nGQ' as capitalized"; + variant "text 'nGR' as capitalized"; + variant "text 'nGS' as capitalized"; + variant "text 'nGT' as capitalized"; + variant "text 'nGU' as capitalized"; + variant "text 'nGV' as capitalized"; + variant "text 'nGX' as capitalized"; + variant "text 'nGY' as capitalized"; + variant "text 'nGZ' as capitalized"; + variant "text 'nHA' as capitalized"; + variant "text 'nHB' as capitalized"; + variant "text 'nHC' as capitalized"; + variant "text 'nHD' as capitalized"; + variant "text 'nHE' as capitalized"; + variant "text 'nHF' as capitalized"; + variant "text 'nHG' as capitalized"; + variant "text 'nHH' as capitalized"; + variant "text 'nHI' as capitalized"; + variant "text 'nHJ' as capitalized"; + variant "text 'nHK' as capitalized"; + variant "text 'nHL' as capitalized"; + variant "text 'nHM' as capitalized"; + variant "text 'nHN' as capitalized"; + variant "text 'nHO' as capitalized"; + variant "text 'nHP' as capitalized"; + variant "text 'nHQ' as capitalized"; + variant "text 'nHR' as capitalized"; + variant "text 'nHS' as capitalized"; + variant "text 'nHT' as capitalized"; + variant "text 'nHU' as capitalized"; + variant "text 'nHV' as capitalized"; + variant "text 'nHW' as capitalized"; + variant "text 'nHX' as capitalized"; + variant "text 'nHY' as capitalized"; + variant "text 'nHZ' as capitalized"; + variant "text 'nIA' as capitalized"; + variant "text 'nIB' as capitalized"; + variant "text 'nIC' as capitalized"; + variant "text 'nID' as capitalized"; + variant "text 'nIE' as capitalized"; + variant "text 'nIF' as capitalized"; + variant "text 'nIG' as capitalized"; + variant "text 'nIH' as capitalized"; + variant "text 'nIL' as capitalized"; + variant "text 'nIM' as capitalized"; + variant "text 'nIN' as capitalized"; + variant "text 'nIP' as capitalized"; + variant "text 'nIR' as capitalized"; + variant "text 'nIS' as capitalized"; + variant "text 'nIT' as capitalized"; + variant "text 'nIU' as capitalized"; + variant "text 'nIV' as capitalized"; + variant "text 'nIX' as capitalized"; + variant "text 'nIZ' as capitalized"; + variant "text 'nJA' as capitalized"; + variant "text 'nJB' as capitalized"; + variant "text 'nJC' as capitalized"; + variant "text 'nJD' as capitalized"; + variant "text 'nJE' as capitalized"; + variant "text 'nJF' as capitalized"; + variant "text 'nJG' as capitalized"; + variant "text 'nJH' as capitalized"; + variant "text 'nJL' as capitalized"; + variant "text 'nJN' as capitalized"; + variant "text 'nJO' as capitalized"; + variant "text 'nJP' as capitalized"; + variant "text 'nJR' as capitalized"; + variant "text 'nJS' as capitalized"; + variant "text 'nJT' as capitalized"; + variant "text 'nJU' as capitalized"; + variant "text 'nJV' as capitalized"; + variant "text 'nJX' as capitalized"; + variant "text 'nKA' as capitalized"; + variant "text 'nKB' as capitalized"; + variant "text 'nKC' as capitalized"; + variant "text 'nKD' as capitalized"; + variant "text 'nKF' as capitalized"; + variant "text 'nKG' as capitalized"; + variant "text 'nKH' as capitalized"; + variant "text 'nKK' as capitalized"; + variant "text 'nKL' as capitalized"; + variant "text 'nKM' as capitalized"; + variant "text 'nKN' as capitalized"; + variant "text 'nKO' as capitalized"; + variant "text 'nKR' as capitalized"; + variant "text 'nKS' as capitalized"; + variant "text 'nKT' as capitalized"; + variant "text 'nKV' as capitalized"; + variant "text 'nKX' as capitalized"; + variant "text 'nLA' as capitalized"; + variant "text 'nLB' as capitalized"; + variant "text 'nLC' as capitalized"; + variant "text 'nLD' as capitalized"; + variant "text 'nLE' as capitalized"; + variant "text 'nLG' as capitalized"; + variant "text 'nLH' as capitalized"; + variant "text 'nLI' as capitalized"; + variant "text 'nLJ' as capitalized"; + variant "text 'nLK' as capitalized"; + variant "text 'nLL' as capitalized"; + variant "text 'nLM' as capitalized"; + variant "text 'nLN' as capitalized"; + variant "text 'nLO' as capitalized"; + variant "text 'nLP' as capitalized"; + variant "text 'nLQ' as capitalized"; + variant "text 'nLS' as capitalized"; + variant "text 'nLT' as capitalized"; + variant "text 'nLU' as capitalized"; + variant "text 'nLX' as capitalized"; + variant "text 'nLY' as capitalized"; + variant "text 'nLZ' as capitalized"; + variant "text 'nMA' as capitalized"; + variant "text 'nMB' as capitalized"; + variant "text 'nMC' as capitalized"; + variant "text 'nMD' as capitalized"; + variant "text 'nME' as capitalized"; + variant "text 'nMF' as capitalized"; + variant "text 'nMG' as capitalized"; + variant "text 'nMH' as capitalized"; + variant "text 'nMI' as capitalized"; + variant "text 'nMJ' as capitalized"; + variant "text 'nMK' as capitalized"; + variant "text 'nML' as capitalized"; + variant "text 'nMM' as capitalized"; + variant "text 'nMN' as capitalized"; + variant "text 'nMO' as capitalized"; + variant "text 'nMP' as capitalized"; + variant "text 'nMQ' as capitalized"; + variant "text 'nMR' as capitalized"; + variant "text 'nMS' as capitalized"; + variant "text 'nMT' as capitalized"; + variant "text 'nMU' as capitalized"; + variant "text 'nMV' as capitalized"; + variant "text 'nMW' as capitalized"; + variant "text 'nMX' as capitalized"; + variant "text 'nMY' as capitalized"; + variant "text 'nMZ' as capitalized"; + variant "text 'nNA' as capitalized"; + variant "text 'nNB' as capitalized"; + variant "text 'nNC' as capitalized"; + variant "text 'nND' as capitalized"; + variant "text 'nNE' as capitalized"; + variant "text 'nNF' as capitalized"; + variant "text 'nNG' as capitalized"; + variant "text 'nNH' as capitalized"; + variant "text 'nNI' as capitalized"; + variant "text 'nNJ' as capitalized"; + variant "text 'nNK' as capitalized"; + variant "text 'nNL' as capitalized"; + variant "text 'nNM' as capitalized"; + variant "text 'nNN' as capitalized"; + variant "text 'nNO' as capitalized"; + variant "text 'nNP' as capitalized"; + variant "text 'nNQ' as capitalized"; + variant "text 'nNR' as capitalized"; + variant "text 'nNS' as capitalized"; + variant "text 'nNT' as capitalized"; + variant "text 'nNU' as capitalized"; + variant "text 'nNV' as capitalized"; + variant "text 'nNW' as capitalized"; + variant "text 'nNX' as capitalized"; + variant "text 'nNY' as capitalized"; + variant "text 'nNZ' as capitalized"; + variant "text 'nOA' as capitalized"; + variant "text 'nOB' as capitalized"; + variant "text 'nOC' as capitalized"; + variant "text 'nOD' as capitalized"; + variant "text 'nOE' as capitalized"; + variant "text 'nOF' as capitalized"; + variant "text 'nOG' as capitalized"; + variant "text 'nOH' as capitalized"; + variant "text 'nOI' as capitalized"; + variant "text 'nOJ' as capitalized"; + variant "text 'nOK' as capitalized"; + variant "text 'nOL' as capitalized"; + variant "text 'nOM' as capitalized"; + variant "text 'nON' as capitalized"; + variant "text 'nOO' as capitalized"; + variant "text 'nOP' as capitalized"; + variant "text 'nOQ' as capitalized"; + variant "text 'nOR' as capitalized"; + variant "text 'nOS' as capitalized"; + variant "text 'nOT' as capitalized"; + variant "text 'nOU' as capitalized"; + variant "text 'nOV' as capitalized"; + variant "text 'nOW' as capitalized"; + variant "text 'nOX' as capitalized"; + variant "text 'nOZ' as capitalized"; + variant "text 'nPA' as capitalized"; + variant "text 'nPB' as capitalized"; + variant "text 'nPC' as capitalized"; + variant "text 'nPD' as capitalized"; + variant "text 'nPE' as capitalized"; + variant "text 'nPF' as capitalized"; + variant "text 'nPG' as capitalized"; + variant "text 'nPH' as capitalized"; + variant "text 'nPI' as capitalized"; + variant "text 'nPJ' as capitalized"; + variant "text 'nPK' as capitalized"; + variant "text 'nPL' as capitalized"; + variant "text 'nPM' as capitalized"; + variant "text 'nPN' as capitalized"; + variant "text 'nPO' as capitalized"; + variant "text 'nPP' as capitalized"; + variant "text 'nPQ' as capitalized"; + variant "text 'nPR' as capitalized"; + variant "text 'nPS' as capitalized"; + variant "text 'nPT' as capitalized"; + variant "text 'nPU' as capitalized"; + variant "text 'nPV' as capitalized"; + variant "text 'nPW' as capitalized"; + variant "text 'nPX' as capitalized"; + variant "text 'nPY' as capitalized"; + variant "text 'nPZ' as capitalized"; + variant "text 'nQA' as capitalized"; + variant "text 'nQB' as capitalized"; + variant "text 'nQC' as capitalized"; + variant "text 'nQD' as capitalized"; + variant "text 'nQE' as capitalized"; + variant "text 'nQG' as capitalized"; + variant "text 'nQH' as capitalized"; + variant "text 'nQI' as capitalized"; + variant "text 'nQJ' as capitalized"; + variant "text 'nQK' as capitalized"; + variant "text 'nQL' as capitalized"; + variant "text 'nQM' as capitalized"; + variant "text 'nQN' as capitalized"; + variant "text 'nQO' as capitalized"; + variant "text 'nQP' as capitalized"; + variant "text 'nQQ' as capitalized"; + variant "text 'nQR' as capitalized"; + variant "text 'nQS' as capitalized"; + variant "text 'nQT' as capitalized"; + variant "text 'nQU' as capitalized"; + variant "text 'nQW' as capitalized"; + variant "text 'nQX' as capitalized"; + variant "text 'nQY' as capitalized"; + variant "text 'nQZ' as capitalized"; + variant "text 'nRA' as capitalized"; + variant "text 'nRB' as capitalized"; + variant "text 'nRC' as capitalized"; + variant "text 'nRD' as capitalized"; + variant "text 'nRE' as capitalized"; + variant "text 'nRF' as capitalized"; + variant "text 'nRG' as capitalized"; + variant "text 'nRH' as capitalized"; + variant "text 'nRI' as capitalized"; + variant "text 'nRJ' as capitalized"; + variant "text 'nRK' as capitalized"; + variant "text 'nRL' as capitalized"; + variant "text 'nRM' as capitalized"; + variant "text 'nRN' as capitalized"; + variant "text 'nRO' as capitalized"; + variant "text 'nRP' as capitalized"; + variant "text 'nRQ' as capitalized"; + variant "text 'nRR' as capitalized"; + variant "text 'nRS' as capitalized"; + variant "text 'nRT' as capitalized"; + variant "text 'nRU' as capitalized"; + variant "text 'nRV' as capitalized"; + variant "text 'nRX' as capitalized"; + variant "text 'nRY' as capitalized"; + variant "text 'nSA' as capitalized"; + variant "text 'nSB' as capitalized"; + variant "text 'nSC' as capitalized"; + variant "text 'nSD' as capitalized"; + variant "text 'nSE' as capitalized"; + variant "text 'nSF' as capitalized"; + variant "text 'nSG' as capitalized"; + variant "text 'nSH' as capitalized"; + variant "text 'nSI' as capitalized"; + variant "text 'nSJ' as capitalized"; + variant "text 'nSK' as capitalized"; + variant "text 'nSL' as capitalized"; + variant "text 'nSM' as capitalized"; + variant "text 'nSN' as capitalized"; + variant "text 'nSO' as capitalized"; + variant "text 'nSP' as capitalized"; + variant "text 'nSQ' as capitalized"; + variant "text 'nSR' as capitalized"; + variant "text 'nSS' as capitalized"; + variant "text 'nST' as capitalized"; + variant "text 'nSU' as capitalized"; + variant "text 'nSV' as capitalized"; + variant "text 'nSW' as capitalized"; + variant "text 'nSX' as capitalized"; + variant "text 'nSY' as capitalized"; + variant "text 'nSZ' as capitalized"; + variant "text 'nTA' as capitalized"; + variant "text 'nTB' as capitalized"; + variant "text 'nTC' as capitalized"; + variant "text 'nTD' as capitalized"; + variant "text 'nTE' as capitalized"; + variant "text 'nTF' as capitalized"; + variant "text 'nTG' as capitalized"; + variant "text 'nTH' as capitalized"; + variant "text 'nTI' as capitalized"; + variant "text 'nTJ' as capitalized"; + variant "text 'nTK' as capitalized"; + variant "text 'nTL' as capitalized"; + variant "text 'nTM' as capitalized"; + variant "text 'nTN' as capitalized"; + variant "text 'nTO' as capitalized"; + variant "text 'nTP' as capitalized"; + variant "text 'nTQ' as capitalized"; + variant "text 'nTR' as capitalized"; + variant "text 'nTS' as capitalized"; + variant "text 'nTT' as capitalized"; + variant "text 'nTU' as capitalized"; + variant "text 'nTV' as capitalized"; + variant "text 'nTW' as capitalized"; + variant "text 'nTX' as capitalized"; + variant "text 'nTY' as capitalized"; + variant "text 'nTZ' as capitalized"; + variant "text 'nUA' as capitalized"; + variant "text 'nUB' as capitalized"; + variant "text 'nUC' as capitalized"; + variant "text 'nUD' as capitalized"; + variant "text 'nUE' as capitalized"; + variant "text 'nUF' as capitalized"; + variant "text 'nUG' as capitalized"; + variant "text 'nUH' as capitalized"; + variant "text 'nUI' as capitalized"; + variant "text 'nUJ' as capitalized"; + variant "text 'nUK' as capitalized"; + variant "text 'nUL' as capitalized"; + variant "text 'nUM' as capitalized"; + variant "text 'nUN' as capitalized"; + variant "text 'nUO' as capitalized"; + variant "text 'nUP' as capitalized"; + variant "text 'nUQ' as capitalized"; + variant "text 'nUR' as capitalized"; + variant "text 'nUS' as capitalized"; + variant "text 'nUT' as capitalized"; + variant "text 'nUU' as capitalized"; + variant "text 'nUV' as capitalized"; + variant "text 'nUW' as capitalized"; + variant "text 'nUX' as capitalized"; + variant "text 'nUY' as capitalized"; + variant "text 'nUZ' as capitalized"; + variant "text 'nVA' as capitalized"; + variant "text 'nVB' as capitalized"; + variant "text 'nVC' as capitalized"; + variant "text 'nVD' as capitalized"; + variant "text 'nVE' as capitalized"; + variant "text 'nVF' as capitalized"; + variant "text 'nVG' as capitalized"; + variant "text 'nVH' as capitalized"; + variant "text 'nVJ' as capitalized"; + variant "text 'nVM' as capitalized"; + variant "text 'nVP' as capitalized"; + variant "text 'nVX' as capitalized"; + variant "text 'nWD' as capitalized"; + variant "text 'nWP' as capitalized"; + variant "text 'nWS' as capitalized"; + variant "text 'nWX' as capitalized"; + variant "text 'nXA' as capitalized"; + variant "text 'nXB' as capitalized"; + variant "text 'nXC' as capitalized"; + variant "text 'nXD' as capitalized"; + variant "text 'nXF' as capitalized"; + variant "text 'nXH' as capitalized"; + variant "text 'nXI' as capitalized"; + variant "text 'nXK' as capitalized"; + variant "text 'nXL' as capitalized"; + variant "text 'nXM' as capitalized"; + variant "text 'nXN' as capitalized"; + variant "text 'nXO' as capitalized"; + variant "text 'nXP' as capitalized"; + variant "text 'nXS' as capitalized"; + variant "text 'nXT' as capitalized"; + variant "text 'nXU' as capitalized"; + variant "text 'nXV' as capitalized"; + variant "text 'nXX' as capitalized"; + variant "text 'nYA' as capitalized"; + variant "text 'nYB' as capitalized"; + variant "text 'nYC' as capitalized"; + variant "text 'nYD' as capitalized"; + variant "text 'nYE' as capitalized"; + variant "text 'nYH' as capitalized"; + variant "text 'nYI' as capitalized"; + variant "text 'nYJ' as capitalized"; + variant "text 'nYK' as capitalized"; + variant "text 'nYL' as capitalized"; + variant "text 'nYM' as capitalized"; + variant "text 'nYN' as capitalized"; + variant "text 'nYO' as capitalized"; + variant "text 'nYP' as capitalized"; + variant "text 'nYQ' as capitalized"; + variant "text 'nYR' as capitalized"; + variant "text 'nYS' as capitalized"; + variant "text 'nYT' as capitalized"; + variant "text 'nYU' as capitalized"; + variant "text 'nYV' as capitalized"; + variant "text 'nYW' as capitalized"; + variant "text 'nYX' as capitalized"; + variant "text 'nYY' as capitalized"; + variant "text 'nYZ' as capitalized"; + variant "text 'nZA' as capitalized"; + variant "text 'nZB' as capitalized"; + variant "text 'nZC' as capitalized"; + variant "text 'nZD' as capitalized"; + variant "text 'nZE' as capitalized"; + variant "text 'nZF' as capitalized"; + variant "text 'nZG' as capitalized"; + variant "text 'nZH' as capitalized"; + variant "text 'nZI' as capitalized"; + variant "text 'nZJ' as capitalized"; + variant "text 'nZK' as capitalized"; + variant "text 'nZL' as capitalized"; + variant "text 'nZM' as capitalized"; + variant "text 'nZN' as capitalized"; + variant "text 'nZO' as capitalized"; + variant "text 'nZP' as capitalized"; + variant "text 'nZQ' as capitalized"; + variant "text 'nZR' as capitalized"; + variant "text 'nZS' as capitalized"; + variant "text 'nZT' as capitalized"; + variant "text 'nZU' as capitalized"; + variant "text 'nZV' as capitalized"; + variant "text 'nZW' as capitalized"; + variant "text 'nZX' as capitalized"; + variant "text 'nZY' as capitalized"; + variant "text 'nZZ' as capitalized"; + variant "text 'oAA' as capitalized"; + variant "text 'oAB' as capitalized"; + variant "text 'oAC' as capitalized"; + variant "text 'oAD' as capitalized"; + variant "text 'oAE' as capitalized"; + variant "text 'oAF' as capitalized"; + variant "text 'oAG' as capitalized"; + variant "text 'oAH' as capitalized"; + variant "text 'oAI' as capitalized"; + variant "text 'oAJ' as capitalized"; + variant "text 'oAK' as capitalized"; + variant "text 'oAL' as capitalized"; + variant "text 'oAM' as capitalized"; + variant "text 'oAN' as capitalized"; + variant "text 'oAO' as capitalized"; + variant "text 'oAP' as capitalized"; + variant "text 'oAQ' as capitalized"; + variant "text 'oAR' as capitalized"; + variant "text 'oAS' as capitalized"; + variant "text 'oAT' as capitalized"; + variant "text 'oAU' as capitalized"; + variant "text 'oAV' as capitalized"; + variant "text 'oAW' as capitalized"; + variant "text 'oAX' as capitalized"; + variant "text 'oAY' as capitalized"; + variant "text 'oAZ' as capitalized"; + variant "text 'oBA' as capitalized"; + variant "text 'oBB' as capitalized"; + variant "text 'oBC' as capitalized"; + variant "text 'oBD' as capitalized"; + variant "text 'oBE' as capitalized"; + variant "text 'oBF' as capitalized"; + variant "text 'oBG' as capitalized"; + variant "text 'oBH' as capitalized"; + variant "text 'oBI' as capitalized"; + variant "text 'oBJ' as capitalized"; + variant "text 'oBK' as capitalized"; + variant "text 'oBL' as capitalized"; + variant "text 'oBM' as capitalized"; + variant "text 'oBN' as capitalized"; + variant "text 'oBO' as capitalized"; + variant "text 'oBP' as capitalized"; + variant "text 'oBQ' as capitalized"; + variant "text 'oBR' as capitalized"; + variant "text 'oBS' as capitalized"; + variant "text 'oBT' as capitalized"; + variant "text 'oBU' as capitalized"; + variant "text 'oBV' as capitalized"; + variant "text 'oBW' as capitalized"; + variant "text 'oBX' as capitalized"; + variant "text 'oBY' as capitalized"; + variant "text 'oBZ' as capitalized"; + variant "text 'oCA' as capitalized"; + variant "text 'oCB' as capitalized"; + variant "text 'oCC' as capitalized"; + variant "text 'oCD' as capitalized"; + variant "text 'oCE' as capitalized"; + variant "text 'oCF' as capitalized"; + variant "text 'oCG' as capitalized"; + variant "text 'oCH' as capitalized"; + variant "text 'oCI' as capitalized"; + variant "text 'oCJ' as capitalized"; + variant "text 'oCK' as capitalized"; + variant "text 'oCL' as capitalized"; + variant "text 'oCM' as capitalized"; + variant "text 'oCN' as capitalized"; + variant "text 'oCO' as capitalized"; + variant "text 'oCP' as capitalized"; + variant "text 'oCQ' as capitalized"; + variant "text 'oCR' as capitalized"; + variant "text 'oCS' as capitalized"; + variant "text 'oCT' as capitalized"; + variant "text 'oCU' as capitalized"; + variant "text 'oCV' as capitalized"; + variant "text 'oCW' as capitalized"; + variant "text 'oCX' as capitalized"; + variant "text 'oCY' as capitalized"; + variant "text 'oCZ' as capitalized"; + variant "text 'oDA' as capitalized"; + variant "text 'oDB' as capitalized"; + variant "text 'oDC' as capitalized"; + variant "text 'oDD' as capitalized"; + variant "text 'oDE' as capitalized"; + variant "text 'oDF' as capitalized"; + variant "text 'oDG' as capitalized"; + variant "text 'oDH' as capitalized"; + variant "text 'oDI' as capitalized"; + variant "text 'oDJ' as capitalized"; + variant "text 'oDK' as capitalized"; + variant "text 'oDL' as capitalized"; + variant "text 'oDM' as capitalized"; + variant "text 'oDN' as capitalized"; + variant "text 'oDO' as capitalized"; + variant "text 'oDP' as capitalized"; + variant "text 'oDQ' as capitalized"; + variant "text 'oDR' as capitalized"; + variant "text 'oDS' as capitalized"; + variant "text 'oDT' as capitalized"; + variant "text 'oDU' as capitalized"; + variant "text 'oDV' as capitalized"; + variant "text 'oDW' as capitalized"; + variant "text 'oDX' as capitalized"; + variant "text 'oDY' as capitalized"; + variant "text 'oDZ' as capitalized"; + variant "text 'oEA' as capitalized"; + variant "text 'oEB' as capitalized"; + variant "text 'oEC' as capitalized"; + variant "text 'oED' as capitalized"; + variant "text 'oEE' as capitalized"; + variant "text 'oEF' as capitalized"; + variant "text 'oEG' as capitalized"; + variant "text 'oEH' as capitalized"; + variant "text 'oEI' as capitalized"; + variant "text 'oEJ' as capitalized"; + variant "text 'oEK' as capitalized"; + variant "text 'oEL' as capitalized"; + variant "text 'oEM' as capitalized"; + variant "text 'oEN' as capitalized"; + variant "text 'oEO' as capitalized"; + variant "text 'oEP' as capitalized"; + variant "text 'oEQ' as capitalized"; + variant "text 'oER' as capitalized"; + variant "text 'oES' as capitalized"; + variant "text 'oET' as capitalized"; + variant "text 'oEU' as capitalized"; + variant "text 'oEV' as capitalized"; + variant "text 'oEW' as capitalized"; + variant "text 'oEX' as capitalized"; + variant "text 'oEY' as capitalized"; + variant "text 'oEZ' as capitalized"; + variant "text 'oFA' as capitalized"; + variant "text 'oFB' as capitalized"; + variant "text 'oFC' as capitalized"; + variant "text 'oFD' as capitalized"; + variant "text 'oFE' as capitalized"; + variant "text 'oFF' as capitalized"; + variant "text 'oFG' as capitalized"; + variant "text 'oFH' as capitalized"; + variant "text 'oFI' as capitalized"; + variant "text 'oFJ' as capitalized"; + variant "text 'oFK' as capitalized"; + variant "text 'oFL' as capitalized"; + variant "text 'oFM' as capitalized"; + variant "text 'oFN' as capitalized"; + variant "text 'oFO' as capitalized"; + variant "text 'oFP' as capitalized"; + variant "text 'oFQ' as capitalized"; + variant "text 'oFR' as capitalized"; + variant "text 'oFT' as capitalized"; + variant "text 'oFU' as capitalized"; + variant "text 'oFV' as capitalized"; + variant "text 'oFW' as capitalized"; + variant "text 'oFX' as capitalized"; + variant "text 'oFY' as capitalized"; + variant "text 'oFZ' as capitalized"; + variant "text 'oGA' as capitalized"; + variant "text 'oGB' as capitalized"; + variant "text 'oGC' as capitalized"; + variant "text 'oGD' as capitalized"; + variant "text 'oGE' as capitalized"; + variant "text 'oGF' as capitalized"; + variant "text 'oGG' as capitalized"; + variant "text 'oGH' as capitalized"; + variant "text 'oGI' as capitalized"; + variant "text 'oGJ' as capitalized"; + variant "text 'oGK' as capitalized"; + variant "text 'oGL' as capitalized"; + variant "text 'oGM' as capitalized"; + variant "text 'oGN' as capitalized"; + variant "text 'oGO' as capitalized"; + variant "text 'oGP' as capitalized"; + variant "text 'oGQ' as capitalized"; + variant "text 'oGR' as capitalized"; + variant "text 'oGS' as capitalized"; + variant "text 'oGT' as capitalized"; + variant "text 'oGU' as capitalized"; + variant "text 'oGV' as capitalized"; + variant "text 'oGW' as capitalized"; + variant "text 'oGX' as capitalized"; + variant "text 'oGY' as capitalized"; + variant "text 'oGZ' as capitalized"; + variant "text 'oHA' as capitalized"; + variant "text 'oHB' as capitalized"; + variant "text 'oHC' as capitalized"; + variant "text 'oHD' as capitalized"; + variant "text 'oHE' as capitalized"; + variant "text 'oHF' as capitalized"; + variant "text 'oHG' as capitalized"; + variant "text 'oHH' as capitalized"; + variant "text 'oHI' as capitalized"; + variant "text 'oHJ' as capitalized"; + variant "text 'oHK' as capitalized"; + variant "text 'oHL' as capitalized"; + variant "text 'oHM' as capitalized"; + variant "text 'oHN' as capitalized"; + variant "text 'oHO' as capitalized"; + variant "text 'oHP' as capitalized"; + variant "text 'oHQ' as capitalized"; + variant "text 'oHR' as capitalized"; + variant "text 'oHT' as capitalized"; + variant "text 'oHU' as capitalized"; + variant "text 'oHV' as capitalized"; + variant "text 'oHW' as capitalized"; + variant "text 'oHX' as capitalized"; + variant "text 'oHY' as capitalized"; + variant "text 'oHZ' as capitalized"; + variant "text 'oIA' as capitalized"; + variant "text 'oIB' as capitalized"; + variant "text 'oIC' as capitalized"; + variant "text 'oID' as capitalized"; + variant "text 'oIE' as capitalized"; + variant "text 'oIF' as capitalized"; + variant "text 'oIG' as capitalized"; + variant "text 'oIH' as capitalized"; + variant "text 'oII' as capitalized"; + variant "text 'oIJ' as capitalized"; + variant "text 'oIK' as capitalized"; + variant "text 'oIL' as capitalized"; + variant "text 'oIM' as capitalized"; + variant "text 'oIN' as capitalized"; + variant "text 'oIO' as capitalized"; + variant "text 'oIP' as capitalized"; + variant "text 'oIQ' as capitalized"; + variant "text 'oIR' as capitalized"; + variant "text 'oIS' as capitalized"; + variant "text 'oIT' as capitalized"; + variant "text 'oIU' as capitalized"; + variant "text 'oIV' as capitalized"; + variant "text 'oIW' as capitalized"; + variant "text 'oIX' as capitalized"; + variant "text 'oIY' as capitalized"; + variant "text 'oIZ' as capitalized"; + variant "text 'oJA' as capitalized"; + variant "text 'oJB' as capitalized"; + variant "text 'oJC' as capitalized"; + variant "text 'oJD' as capitalized"; + variant "text 'oJE' as capitalized"; + variant "text 'oJF' as capitalized"; + variant "text 'oJG' as capitalized"; + variant "text 'oJH' as capitalized"; + variant "text 'oJI' as capitalized"; + variant "text 'oJJ' as capitalized"; + variant "text 'oJK' as capitalized"; + variant "text 'oJL' as capitalized"; + variant "text 'oJM' as capitalized"; + variant "text 'oJN' as capitalized"; + variant "text 'oJO' as capitalized"; + variant "text 'oJP' as capitalized"; + variant "text 'oJQ' as capitalized"; + variant "text 'oJR' as capitalized"; + variant "text 'oJS' as capitalized"; + variant "text 'oJT' as capitalized"; + variant "text 'oJU' as capitalized"; + variant "text 'oJV' as capitalized"; + variant "text 'oJW' as capitalized"; + variant "text 'oJX' as capitalized"; + variant "text 'oJY' as capitalized"; + variant "text 'oJZ' as capitalized"; + variant "text 'oKA' as capitalized"; + variant "text 'oKB' as capitalized"; + variant "text 'oKC' as capitalized"; + variant "text 'oKD' as capitalized"; + variant "text 'oKE' as capitalized"; + variant "text 'oKF' as capitalized"; + variant "text 'oKG' as capitalized"; + variant "text 'oKH' as capitalized"; + variant "text 'oKI' as capitalized"; + variant "text 'oKJ' as capitalized"; + variant "text 'oKK' as capitalized"; + variant "text 'oKL' as capitalized"; + variant "text 'oKM' as capitalized"; + variant "text 'oKN' as capitalized"; + variant "text 'oKO' as capitalized"; + variant "text 'oKP' as capitalized"; + variant "text 'oKQ' as capitalized"; + variant "text 'oKR' as capitalized"; + variant "text 'oKS' as capitalized"; + variant "text 'oKT' as capitalized"; + variant "text 'oKU' as capitalized"; + variant "text 'oKV' as capitalized"; + variant "text 'oKW' as capitalized"; + variant "text 'oKX' as capitalized"; + variant "text 'oKY' as capitalized"; + variant "text 'oKZ' as capitalized"; + variant "text 'oLA' as capitalized"; + variant "text 'oLB' as capitalized"; + variant "text 'oLC' as capitalized"; + variant "text 'oLD' as capitalized"; + variant "text 'oLE' as capitalized"; + variant "text 'oLF' as capitalized"; + variant "text 'oLG' as capitalized"; + variant "text 'oLH' as capitalized"; + variant "text 'oLI' as capitalized"; + variant "text 'oLJ' as capitalized"; + variant "text 'oLK' as capitalized"; + variant "text 'oLL' as capitalized"; + variant "text 'oLM' as capitalized"; + variant "text 'oLN' as capitalized"; + variant "text 'oLO' as capitalized"; + variant "text 'oLP' as capitalized"; + variant "text 'oLQ' as capitalized"; + variant "text 'oLR' as capitalized"; + variant "text 'oLS' as capitalized"; + variant "text 'oLT' as capitalized"; + variant "text 'oLU' as capitalized"; + variant "text 'oLV' as capitalized"; + variant "text 'oLW' as capitalized"; + variant "text 'oLX' as capitalized"; + variant "text 'oLY' as capitalized"; + variant "text 'oLZ' as capitalized"; + variant "text 'oMA' as capitalized"; + variant "text 'oMB' as capitalized"; + variant "text 'oMC' as capitalized"; + variant "text 'oMD' as capitalized"; + variant "text 'oME' as capitalized"; + variant "text 'oMF' as capitalized"; + variant "text 'oMG' as capitalized"; + variant "text 'oMH' as capitalized"; + variant "text 'oMI' as capitalized"; + variant "text 'oMJ' as capitalized"; + variant "text 'oMK' as capitalized"; + variant "text 'oML' as capitalized"; + variant "text 'oMM' as capitalized"; + variant "text 'oMN' as capitalized"; + variant "text 'oMO' as capitalized"; + variant "text 'oMP' as capitalized"; + variant "text 'oMQ' as capitalized"; + variant "text 'oMR' as capitalized"; + variant "text 'oMT' as capitalized"; + variant "text 'oMU' as capitalized"; + variant "text 'oMV' as capitalized"; + variant "text 'oMW' as capitalized"; + variant "text 'oMX' as capitalized"; + variant "text 'oMY' as capitalized"; + variant "text 'oMZ' as capitalized"; + variant "text 'oNA' as capitalized"; + variant "text 'oNB' as capitalized"; + variant "text 'oNC' as capitalized"; + variant "text 'oND' as capitalized"; + variant "text 'oNE' as capitalized"; + variant "text 'oNF' as capitalized"; + variant "text 'oNG' as capitalized"; + variant "text 'oNH' as capitalized"; + variant "text 'oNI' as capitalized"; + variant "text 'oNJ' as capitalized"; + variant "text 'oNK' as capitalized"; + variant "text 'oNL' as capitalized"; + variant "text 'oNM' as capitalized"; + variant "text 'oNN' as capitalized"; + variant "text 'oNO' as capitalized"; + variant "text 'oNP' as capitalized"; + variant "text 'oNQ' as capitalized"; + variant "text 'oNR' as capitalized"; + variant "text 'oNS' as capitalized"; + variant "text 'oNT' as capitalized"; + variant "text 'oNU' as capitalized"; + variant "text 'oNV' as capitalized"; + variant "text 'oNW' as capitalized"; + variant "text 'oNX' as capitalized"; + variant "text 'oNY' as capitalized"; + variant "text 'oNZ' as capitalized"; + variant "text 'oOA' as capitalized"; + variant "text 'oOB' as capitalized"; + variant "text 'oOC' as capitalized"; + variant "text 'oOD' as capitalized"; + variant "text 'oOE' as capitalized"; + variant "text 'oOF' as capitalized"; + variant "text 'oOG' as capitalized"; + variant "text 'oOH' as capitalized"; + variant "text 'oOI' as capitalized"; + variant "text 'oOJ' as capitalized"; + variant "text 'oOK' as capitalized"; + variant "text 'oOL' as capitalized"; + variant "text 'oOM' as capitalized"; + variant "text 'oON' as capitalized"; + variant "text 'oOO' as capitalized"; + variant "text 'oOP' as capitalized"; + variant "text 'oOQ' as capitalized"; + variant "text 'oOR' as capitalized"; + variant "text 'oOS' as capitalized"; + variant "text 'oOT' as capitalized"; + variant "text 'oOU' as capitalized"; + variant "text 'oOV' as capitalized"; + variant "text 'oOW' as capitalized"; + variant "text 'oOX' as capitalized"; + variant "text 'oOY' as capitalized"; + variant "text 'oOZ' as capitalized"; + variant "text 'oPA' as capitalized"; + variant "text 'oPB' as capitalized"; + variant "text 'oPC' as capitalized"; + variant "text 'oPD' as capitalized"; + variant "text 'oPE' as capitalized"; + variant "text 'oPF' as capitalized"; + variant "text 'oPG' as capitalized"; + variant "text 'oPH' as capitalized"; + variant "text 'oPI' as capitalized"; + variant "text 'oPJ' as capitalized"; + variant "text 'oPK' as capitalized"; + variant "text 'oPL' as capitalized"; + variant "text 'oPM' as capitalized"; + variant "text 'oPN' as capitalized"; + variant "text 'oPO' as capitalized"; + variant "text 'oPP' as capitalized"; + variant "text 'oPQ' as capitalized"; + variant "text 'oPR' as capitalized"; + variant "text 'oPS' as capitalized"; + variant "text 'oPT' as capitalized"; + variant "text 'oPU' as capitalized"; + variant "text 'oPV' as capitalized"; + variant "text 'oPW' as capitalized"; + variant "text 'oPX' as capitalized"; + variant "text 'oPY' as capitalized"; + variant "text 'oPZ' as capitalized"; + variant "text 'oQA' as capitalized"; + variant "text 'oQB' as capitalized"; + variant "text 'oQC' as capitalized"; + variant "text 'oQD' as capitalized"; + variant "text 'oQE' as capitalized"; + variant "text 'oQF' as capitalized"; + variant "text 'oQG' as capitalized"; + variant "text 'oQH' as capitalized"; + variant "text 'oQI' as capitalized"; + variant "text 'oQJ' as capitalized"; + variant "text 'oQK' as capitalized"; + variant "text 'oQL' as capitalized"; + variant "text 'oQM' as capitalized"; + variant "text 'oQN' as capitalized"; + variant "text 'oQO' as capitalized"; + variant "text 'oQP' as capitalized"; + variant "text 'oQQ' as capitalized"; + variant "text 'oQR' as capitalized"; + variant "text 'oQS' as capitalized"; + variant "text 'oQT' as capitalized"; + variant "text 'oQU' as capitalized"; + variant "text 'oQV' as capitalized"; + variant "text 'oQW' as capitalized"; + variant "text 'oQX' as capitalized"; + variant "text 'oQY' as capitalized"; + variant "text 'oQZ' as capitalized"; + variant "text 'oRA' as capitalized"; + variant "text 'oRB' as capitalized"; + variant "text 'oRC' as capitalized"; + variant "text 'oRD' as capitalized"; + variant "text 'oRE' as capitalized"; + variant "text 'oRF' as capitalized"; + variant "text 'oRG' as capitalized"; + variant "text 'oRH' as capitalized"; + variant "text 'oRI' as capitalized"; + variant "text 'oRJ' as capitalized"; + variant "text 'oRK' as capitalized"; + variant "text 'oRL' as capitalized"; + variant "text 'oRM' as capitalized"; + variant "text 'oRN' as capitalized"; + variant "text 'oRO' as capitalized"; + variant "text 'oRP' as capitalized"; + variant "text 'oRQ' as capitalized"; + variant "text 'oRR' as capitalized"; + variant "text 'oRS' as capitalized"; + variant "text 'oRT' as capitalized"; + variant "text 'oRU' as capitalized"; + variant "text 'oRV' as capitalized"; + variant "text 'oRW' as capitalized"; + variant "text 'oRX' as capitalized"; + variant "text 'oRY' as capitalized"; + variant "text 'oRZ' as capitalized"; + variant "text 'oSA' as capitalized"; + variant "text 'oSB' as capitalized"; + variant "text 'oSC' as capitalized"; + variant "text 'oSD' as capitalized"; + variant "text 'oSE' as capitalized"; + variant "text 'oSF' as capitalized"; + variant "text 'oSG' as capitalized"; + variant "text 'oSH' as capitalized"; + variant "text 'oSI' as capitalized"; + variant "text 'oSJ' as capitalized"; + variant "text 'oSK' as capitalized"; + variant "text 'oSL' as capitalized"; + variant "text 'oSM' as capitalized"; + variant "text 'oSN' as capitalized"; + variant "text 'oSO' as capitalized"; + variant "text 'oSQ' as capitalized"; + variant "text 'oSR' as capitalized"; + variant "text 'oSS' as capitalized"; + variant "text 'oST' as capitalized"; + variant "text 'oSU' as capitalized"; + variant "text 'oSW' as capitalized"; + variant "text 'oSX' as capitalized"; + variant "text 'oSY' as capitalized"; + variant "text 'oSZ' as capitalized"; + variant "text 'oTA' as capitalized"; + variant "text 'oTB' as capitalized"; + variant "text 'oTC' as capitalized"; + variant "text 'oTD' as capitalized"; + variant "text 'oTE' as capitalized"; + variant "text 'oTG' as capitalized"; + variant "text 'oTI' as capitalized"; + variant "text 'oTJ' as capitalized"; + variant "text 'oTK' as capitalized"; + variant "text 'oTL' as capitalized"; + variant "text 'oTM' as capitalized"; + variant "text 'oTN' as capitalized"; + variant "text 'oTO' as capitalized"; + variant "text 'oTP' as capitalized"; + variant "text 'oTQ' as capitalized"; + variant "text 'oTR' as capitalized"; + variant "text 'oTS' as capitalized"; + variant "text 'oTT' as capitalized"; + variant "text 'oTU' as capitalized"; + variant "text 'oTV' as capitalized"; + variant "text 'oTW' as capitalized"; + variant "text 'oTX' as capitalized"; + variant "text 'oTY' as capitalized"; + variant "text 'oTZ' as capitalized"; + variant "text 'oUA' as capitalized"; + variant "text 'oUB' as capitalized"; + variant "text 'oUC' as capitalized"; + variant "text 'oUD' as capitalized"; + variant "text 'oUE' as capitalized"; + variant "text 'oUF' as capitalized"; + variant "text 'oUG' as capitalized"; + variant "text 'oUH' as capitalized"; + variant "text 'oUI' as capitalized"; + variant "text 'oUJ' as capitalized"; + variant "text 'oUK' as capitalized"; + variant "text 'oUL' as capitalized"; + variant "text 'oUM' as capitalized"; + variant "text 'oUN' as capitalized"; + variant "text 'oUO' as capitalized"; + variant "text 'oUP' as capitalized"; + variant "text 'oUQ' as capitalized"; + variant "text 'oUR' as capitalized"; + variant "text 'oUS' as capitalized"; + variant "text 'oUT' as capitalized"; + variant "text 'oUU' as capitalized"; + variant "text 'oUV' as capitalized"; + variant "text 'oUW' as capitalized"; + variant "text 'oUX' as capitalized"; + variant "text 'oUY' as capitalized"; + variant "text 'oUZ' as capitalized"; + variant "text 'oVA' as capitalized"; + variant "text 'oVB' as capitalized"; + variant "text 'oVC' as capitalized"; + variant "text 'oVD' as capitalized"; + variant "text 'oVE' as capitalized"; + variant "text 'oVF' as capitalized"; + variant "text 'oVG' as capitalized"; + variant "text 'oVH' as capitalized"; + variant "text 'oVI' as capitalized"; + variant "text 'oVJ' as capitalized"; + variant "text 'oVK' as capitalized"; + variant "text 'oVL' as capitalized"; + variant "text 'oVM' as capitalized"; + variant "text 'oVN' as capitalized"; + variant "text 'oVO' as capitalized"; + variant "text 'oVP' as capitalized"; + variant "text 'oVQ' as capitalized"; + variant "text 'oVR' as capitalized"; + variant "text 'oVS' as capitalized"; + variant "text 'oVT' as capitalized"; + variant "text 'oVU' as capitalized"; + variant "text 'oVV' as capitalized"; + variant "text 'oVW' as capitalized"; + variant "text 'oVX' as capitalized"; + variant "text 'oVY' as capitalized"; + variant "text 'oWB' as capitalized"; + variant "text 'oWG' as capitalized"; + variant "text 'oWH' as capitalized"; + variant "text 'oWM' as capitalized"; + variant "text 'oWN' as capitalized"; + variant "text 'oWO' as capitalized"; + variant "text 'oWP' as capitalized"; + variant "text 'oWQ' as capitalized"; + variant "text 'oWR' as capitalized"; + variant "text 'oWS' as capitalized"; + variant "text 'oWT' as capitalized"; + variant "text 'oWX' as capitalized"; + variant "text 'oXA' as capitalized"; + variant "text 'oXB' as capitalized"; + variant "text 'oXC' as capitalized"; + variant "text 'oXD' as capitalized"; + variant "text 'oXE' as capitalized"; + variant "text 'oXF' as capitalized"; + variant "text 'oXG' as capitalized"; + variant "text 'oXH' as capitalized"; + variant "text 'oXI' as capitalized"; + variant "text 'oXJ' as capitalized"; + variant "text 'oXK' as capitalized"; + variant "text 'oXL' as capitalized"; + variant "text 'oXM' as capitalized"; + variant "text 'oXN' as capitalized"; + variant "text 'oXO' as capitalized"; + variant "text 'oXP' as capitalized"; + variant "text 'oXQ' as capitalized"; + variant "text 'oXR' as capitalized"; + variant "text 'oXS' as capitalized"; + variant "text 'oXT' as capitalized"; + variant "text 'oXU' as capitalized"; + variant "text 'oXV' as capitalized"; + variant "text 'oXW' as capitalized"; + variant "text 'oXX' as capitalized"; + variant "text 'oXY' as capitalized"; + variant "text 'oXZ' as capitalized"; + variant "text 'oYA' as capitalized"; + variant "text 'oYB' as capitalized"; + variant "text 'oYC' as capitalized"; + variant "text 'oYD' as capitalized"; + variant "text 'oYE' as capitalized"; + variant "text 'oYF' as capitalized"; + variant "text 'oYG' as capitalized"; + variant "text 'oYH' as capitalized"; + variant "text 'oYI' as capitalized"; + variant "text 'oYJ' as capitalized"; + variant "text 'oYK' as capitalized"; + variant "text 'oYL' as capitalized"; + variant "text 'oYM' as capitalized"; + variant "text 'oYN' as capitalized"; + variant "text 'oYO' as capitalized"; + variant "text 'oYQ' as capitalized"; + variant "text 'oYR' as capitalized"; + variant "text 'oYS' as capitalized"; + variant "text 'oYT' as capitalized"; + variant "text 'oYU' as capitalized"; + variant "text 'oYX' as capitalized"; + variant "text 'oYY' as capitalized"; + variant "text 'oZA' as capitalized"; + variant "text 'oZB' as capitalized"; + variant "text 'oZC' as capitalized"; + variant "text 'oZD' as capitalized"; + variant "text 'oZG' as capitalized"; + variant "text 'oZL' as capitalized"; + variant "text 'oZO' as capitalized"; + variant "text 'oZQ' as capitalized"; + variant "text 'oZT' as capitalized"; + variant "text 'oZU' as capitalized"; + variant "text 'oZV' as capitalized"; + variant "text 'oZX' as capitalized"; + variant "text 'oZY' as capitalized"; + variant "text 'oZZ' as capitalized"; + variant "text 'pAA' as capitalized"; + variant "text 'pAB' as capitalized"; + variant "text 'pAC' as capitalized"; + variant "text 'pAD' as capitalized"; + variant "text 'pAE' as capitalized"; + variant "text 'pAF' as capitalized"; + variant "text 'pAG' as capitalized"; + variant "text 'pAH' as capitalized"; + variant "text 'pAI' as capitalized"; + variant "text 'pAJ' as capitalized"; + variant "text 'pAK' as capitalized"; + variant "text 'pAL' as capitalized"; + variant "text 'pAM' as capitalized"; + variant "text 'pAN' as capitalized"; + variant "text 'pAO' as capitalized"; + variant "text 'pAP' as capitalized"; + variant "text 'pAQ' as capitalized"; + variant "text 'pAR' as capitalized"; + variant "text 'pAS' as capitalized"; + variant "text 'pAT' as capitalized"; + variant "text 'pAU' as capitalized"; + variant "text 'pAV' as capitalized"; + variant "text 'pAW' as capitalized"; + variant "text 'pAX' as capitalized"; + variant "text 'pAY' as capitalized"; + variant "text 'pAZ' as capitalized"; + variant "text 'pBA' as capitalized"; + variant "text 'pBB' as capitalized"; + variant "text 'pBC' as capitalized"; + variant "text 'pBD' as capitalized"; + variant "text 'pBE' as capitalized"; + variant "text 'pBF' as capitalized"; + variant "text 'pBG' as capitalized"; + variant "text 'pBH' as capitalized"; + variant "text 'pBI' as capitalized"; + variant "text 'pBJ' as capitalized"; + variant "text 'pBK' as capitalized"; + variant "text 'pBL' as capitalized"; + variant "text 'pBM' as capitalized"; + variant "text 'pBN' as capitalized"; + variant "text 'pBO' as capitalized"; + variant "text 'pBP' as capitalized"; + variant "text 'pBQ' as capitalized"; + variant "text 'pBR' as capitalized"; + variant "text 'pBS' as capitalized"; + variant "text 'pBT' as capitalized"; + variant "text 'pBU' as capitalized"; + variant "text 'pBV' as capitalized"; + variant "text 'pBW' as capitalized"; + variant "text 'pBX' as capitalized"; + variant "text 'pBY' as capitalized"; + variant "text 'pBZ' as capitalized"; + variant "text 'pCA' as capitalized"; + variant "text 'pCB' as capitalized"; + variant "text 'pCC' as capitalized"; + variant "text 'pCD' as capitalized"; + variant "text 'pCE' as capitalized"; + variant "text 'pCF' as capitalized"; + variant "text 'pCG' as capitalized"; + variant "text 'pCH' as capitalized"; + variant "text 'pCI' as capitalized"; + variant "text 'pCJ' as capitalized"; + variant "text 'pCK' as capitalized"; + variant "text 'pCL' as capitalized"; + variant "text 'pCM' as capitalized"; + variant "text 'pCN' as capitalized"; + variant "text 'pCO' as capitalized"; + variant "text 'pCP' as capitalized"; + variant "text 'pCQ' as capitalized"; + variant "text 'pCR' as capitalized"; + variant "text 'pCS' as capitalized"; + variant "text 'pCT' as capitalized"; + variant "text 'pCU' as capitalized"; + variant "text 'pCV' as capitalized"; + variant "text 'pCW' as capitalized"; + variant "text 'pCX' as capitalized"; + variant "text 'pCY' as capitalized"; + variant "text 'pCZ' as capitalized"; + variant "text 'pDA' as capitalized"; + variant "text 'pDB' as capitalized"; + variant "text 'pDC' as capitalized"; + variant "text 'pDD' as capitalized"; + variant "text 'pDE' as capitalized"; + variant "text 'pDF' as capitalized"; + variant "text 'pDG' as capitalized"; + variant "text 'pDH' as capitalized"; + variant "text 'pDI' as capitalized"; + variant "text 'pDJ' as capitalized"; + variant "text 'pDK' as capitalized"; + variant "text 'pDL' as capitalized"; + variant "text 'pDM' as capitalized"; + variant "text 'pDN' as capitalized"; + variant "text 'pDO' as capitalized"; + variant "text 'pDP' as capitalized"; + variant "text 'pDQ' as capitalized"; + variant "text 'pDR' as capitalized"; + variant "text 'pDS' as capitalized"; + variant "text 'pDT' as capitalized"; + variant "text 'pDU' as capitalized"; + variant "text 'pDV' as capitalized"; + variant "text 'pDW' as capitalized"; + variant "text 'pDX' as capitalized"; + variant "text 'pDY' as capitalized"; + variant "text 'pDZ' as capitalized"; + variant "text 'pEA' as capitalized"; + variant "text 'pEB' as capitalized"; + variant "text 'pEC' as capitalized"; + variant "text 'pED' as capitalized"; + variant "text 'pEE' as capitalized"; + variant "text 'pEF' as capitalized"; + variant "text 'pEG' as capitalized"; + variant "text 'pEH' as capitalized"; + variant "text 'pEI' as capitalized"; + variant "text 'pEJ' as capitalized"; + variant "text 'pEK' as capitalized"; + variant "text 'pEL' as capitalized"; + variant "text 'pEM' as capitalized"; + variant "text 'pEN' as capitalized"; + variant "text 'pEO' as capitalized"; + variant "text 'pEQ' as capitalized"; + variant "text 'pER' as capitalized"; + variant "text 'pES' as capitalized"; + variant "text 'pET' as capitalized"; + variant "text 'pEU' as capitalized"; + variant "text 'pEV' as capitalized"; + variant "text 'pEW' as capitalized"; + variant "text 'pEX' as capitalized"; + variant "text 'pEY' as capitalized"; + variant "text 'pEZ' as capitalized"; + variant "text 'pFA' as capitalized"; + variant "text 'pFB' as capitalized"; + variant "text 'pFC' as capitalized"; + variant "text 'pFD' as capitalized"; + variant "text 'pFE' as capitalized"; + variant "text 'pFF' as capitalized"; + variant "text 'pFG' as capitalized"; + variant "text 'pFH' as capitalized"; + variant "text 'pFI' as capitalized"; + variant "text 'pFJ' as capitalized"; + variant "text 'pFK' as capitalized"; + variant "text 'pFL' as capitalized"; + variant "text 'pFM' as capitalized"; + variant "text 'pFN' as capitalized"; + variant "text 'pFO' as capitalized"; + variant "text 'pFP' as capitalized"; + variant "text 'pFQ' as capitalized"; + variant "text 'pFR' as capitalized"; + variant "text 'pFS' as capitalized"; + variant "text 'pFT' as capitalized"; + variant "text 'pFU' as capitalized"; + variant "text 'pFV' as capitalized"; + variant "text 'pFW' as capitalized"; + variant "text 'pFX' as capitalized"; + variant "text 'pFY' as capitalized"; + variant "text 'pFZ' as capitalized"; + variant "text 'pGA' as capitalized"; + variant "text 'pGB' as capitalized"; + variant "text 'pGC' as capitalized"; + variant "text 'pGD' as capitalized"; + variant "text 'pGE' as capitalized"; + variant "text 'pGF' as capitalized"; + variant "text 'pGG' as capitalized"; + variant "text 'pGH' as capitalized"; + variant "text 'pGI' as capitalized"; + variant "text 'pGJ' as capitalized"; + variant "text 'pGK' as capitalized"; + variant "text 'pGL' as capitalized"; + variant "text 'pGM' as capitalized"; + variant "text 'pGN' as capitalized"; + variant "text 'pGO' as capitalized"; + variant "text 'pGP' as capitalized"; + variant "text 'pGQ' as capitalized"; + variant "text 'pGR' as capitalized"; + variant "text 'pGS' as capitalized"; + variant "text 'pGT' as capitalized"; + variant "text 'pGU' as capitalized"; + variant "text 'pGV' as capitalized"; + variant "text 'pGW' as capitalized"; + variant "text 'pGX' as capitalized"; + variant "text 'pGY' as capitalized"; + variant "text 'pGZ' as capitalized"; + variant "text 'pHA' as capitalized"; + variant "text 'pHB' as capitalized"; + variant "text 'pHC' as capitalized"; + variant "text 'pHD' as capitalized"; + variant "text 'pHE' as capitalized"; + variant "text 'pHF' as capitalized"; + variant "text 'pHG' as capitalized"; + variant "text 'pHH' as capitalized"; + variant "text 'pHI' as capitalized"; + variant "text 'pHJ' as capitalized"; + variant "text 'pHK' as capitalized"; + variant "text 'pHL' as capitalized"; + variant "text 'pHM' as capitalized"; + variant "text 'pHN' as capitalized"; + variant "text 'pHO' as capitalized"; + variant "text 'pHP' as capitalized"; + variant "text 'pHQ' as capitalized"; + variant "text 'pHR' as capitalized"; + variant "text 'pHS' as capitalized"; + variant "text 'pHT' as capitalized"; + variant "text 'pHU' as capitalized"; + variant "text 'pHV' as capitalized"; + variant "text 'pHW' as capitalized"; + variant "text 'pHX' as capitalized"; + variant "text 'pHY' as capitalized"; + variant "text 'pHZ' as capitalized"; + variant "text 'pIA' as capitalized"; + variant "text 'pIB' as capitalized"; + variant "text 'pIC' as capitalized"; + variant "text 'pID' as capitalized"; + variant "text 'pIE' as capitalized"; + variant "text 'pIF' as capitalized"; + variant "text 'pIG' as capitalized"; + variant "text 'pIH' as capitalized"; + variant "text 'pII' as capitalized"; + variant "text 'pIJ' as capitalized"; + variant "text 'pIK' as capitalized"; + variant "text 'pIL' as capitalized"; + variant "text 'pIM' as capitalized"; + variant "text 'pIN' as capitalized"; + variant "text 'pIO' as capitalized"; + variant "text 'pIP' as capitalized"; + variant "text 'pIQ' as capitalized"; + variant "text 'pIR' as capitalized"; + variant "text 'pIS' as capitalized"; + variant "text 'pIT' as capitalized"; + variant "text 'pIU' as capitalized"; + variant "text 'pIV' as capitalized"; + variant "text 'pIW' as capitalized"; + variant "text 'pIX' as capitalized"; + variant "text 'pIY' as capitalized"; + variant "text 'pIZ' as capitalized"; + variant "text 'pJA' as capitalized"; + variant "text 'pJB' as capitalized"; + variant "text 'pJC' as capitalized"; + variant "text 'pJD' as capitalized"; + variant "text 'pJE' as capitalized"; + variant "text 'pJF' as capitalized"; + variant "text 'pJG' as capitalized"; + variant "text 'pJH' as capitalized"; + variant "text 'pJJ' as capitalized"; + variant "text 'pJK' as capitalized"; + variant "text 'pJL' as capitalized"; + variant "text 'pJM' as capitalized"; + variant "text 'pJN' as capitalized"; + variant "text 'pJO' as capitalized"; + variant "text 'pJP' as capitalized"; + variant "text 'pJQ' as capitalized"; + variant "text 'pJR' as capitalized"; + variant "text 'pJS' as capitalized"; + variant "text 'pJT' as capitalized"; + variant "text 'pJU' as capitalized"; + variant "text 'pJV' as capitalized"; + variant "text 'pJW' as capitalized"; + variant "text 'pJX' as capitalized"; + variant "text 'pJY' as capitalized"; + variant "text 'pJZ' as capitalized"; + variant "text 'pKA' as capitalized"; + variant "text 'pKB' as capitalized"; + variant "text 'pKC' as capitalized"; + variant "text 'pKD' as capitalized"; + variant "text 'pKE' as capitalized"; + variant "text 'pKF' as capitalized"; + variant "text 'pKG' as capitalized"; + variant "text 'pKH' as capitalized"; + variant "text 'pKI' as capitalized"; + variant "text 'pKJ' as capitalized"; + variant "text 'pKK' as capitalized"; + variant "text 'pKL' as capitalized"; + variant "text 'pKM' as capitalized"; + variant "text 'pKN' as capitalized"; + variant "text 'pKO' as capitalized"; + variant "text 'pKP' as capitalized"; + variant "text 'pKQ' as capitalized"; + variant "text 'pKR' as capitalized"; + variant "text 'pKS' as capitalized"; + variant "text 'pKT' as capitalized"; + variant "text 'pKU' as capitalized"; + variant "text 'pKV' as capitalized"; + variant "text 'pKW' as capitalized"; + variant "text 'pKX' as capitalized"; + variant "text 'pKY' as capitalized"; + variant "text 'pKZ' as capitalized"; + variant "text 'pLA' as capitalized"; + variant "text 'pLB' as capitalized"; + variant "text 'pLC' as capitalized"; + variant "text 'pLD' as capitalized"; + variant "text 'pLE' as capitalized"; + variant "text 'pLF' as capitalized"; + variant "text 'pLG' as capitalized"; + variant "text 'pLH' as capitalized"; + variant "text 'pLI' as capitalized"; + variant "text 'pLJ' as capitalized"; + variant "text 'pLK' as capitalized"; + variant "text 'pLL' as capitalized"; + variant "text 'pLM' as capitalized"; + variant "text 'pLN' as capitalized"; + variant "text 'pLO' as capitalized"; + variant "text 'pLP' as capitalized"; + variant "text 'pLQ' as capitalized"; + variant "text 'pLR' as capitalized"; + variant "text 'pLS' as capitalized"; + variant "text 'pLT' as capitalized"; + variant "text 'pLU' as capitalized"; + variant "text 'pLV' as capitalized"; + variant "text 'pLW' as capitalized"; + variant "text 'pLX' as capitalized"; + variant "text 'pLY' as capitalized"; + variant "text 'pLZ' as capitalized"; + variant "text 'pMA' as capitalized"; + variant "text 'pMB' as capitalized"; + variant "text 'pMC' as capitalized"; + variant "text 'pMD' as capitalized"; + variant "text 'pME' as capitalized"; + variant "text 'pMF' as capitalized"; + variant "text 'pMG' as capitalized"; + variant "text 'pMH' as capitalized"; + variant "text 'pMI' as capitalized"; + variant "text 'pMJ' as capitalized"; + variant "text 'pMK' as capitalized"; + variant "text 'pML' as capitalized"; + variant "text 'pMM' as capitalized"; + variant "text 'pMN' as capitalized"; + variant "text 'pMO' as capitalized"; + variant "text 'pMP' as capitalized"; + variant "text 'pMQ' as capitalized"; + variant "text 'pMR' as capitalized"; + variant "text 'pMS' as capitalized"; + variant "text 'pMT' as capitalized"; + variant "text 'pMU' as capitalized"; + variant "text 'pMV' as capitalized"; + variant "text 'pMW' as capitalized"; + variant "text 'pMX' as capitalized"; + variant "text 'pMY' as capitalized"; + variant "text 'pMZ' as capitalized"; + variant "text 'pNA' as capitalized"; + variant "text 'pNB' as capitalized"; + variant "text 'pND' as capitalized"; + variant "text 'pNE' as capitalized"; + variant "text 'pNF' as capitalized"; + variant "text 'pNG' as capitalized"; + variant "text 'pNH' as capitalized"; + variant "text 'pNI' as capitalized"; + variant "text 'pNJ' as capitalized"; + variant "text 'pNK' as capitalized"; + variant "text 'pNL' as capitalized"; + variant "text 'pNM' as capitalized"; + variant "text 'pNN' as capitalized"; + variant "text 'pNO' as capitalized"; + variant "text 'pNP' as capitalized"; + variant "text 'pNQ' as capitalized"; + variant "text 'pNR' as capitalized"; + variant "text 'pNS' as capitalized"; + variant "text 'pNT' as capitalized"; + variant "text 'pNU' as capitalized"; + variant "text 'pNV' as capitalized"; + variant "text 'pNW' as capitalized"; + variant "text 'pNX' as capitalized"; + variant "text 'pNY' as capitalized"; + variant "text 'pNZ' as capitalized"; + variant "text 'pOA' as capitalized"; + variant "text 'pOB' as capitalized"; + variant "text 'pOC' as capitalized"; + variant "text 'pOD' as capitalized"; + variant "text 'pOE' as capitalized"; + variant "text 'pOF' as capitalized"; + variant "text 'pOG' as capitalized"; + variant "text 'pOH' as capitalized"; + variant "text 'pOI' as capitalized"; + variant "text 'pOJ' as capitalized"; + variant "text 'pOK' as capitalized"; + variant "text 'pOL' as capitalized"; + variant "text 'pOM' as capitalized"; + variant "text 'pON' as capitalized"; + variant "text 'pOO' as capitalized"; + variant "text 'pOP' as capitalized"; + variant "text 'pOQ' as capitalized"; + variant "text 'pOR' as capitalized"; + variant "text 'pOS' as capitalized"; + variant "text 'pOU' as capitalized"; + variant "text 'pOV' as capitalized"; + variant "text 'pOW' as capitalized"; + variant "text 'pOX' as capitalized"; + variant "text 'pOY' as capitalized"; + variant "text 'pOZ' as capitalized"; + variant "text 'pPB' as capitalized"; + variant "text 'pPC' as capitalized"; + variant "text 'pPD' as capitalized"; + variant "text 'pPE' as capitalized"; + variant "text 'pPF' as capitalized"; + variant "text 'pPG' as capitalized"; + variant "text 'pPH' as capitalized"; + variant "text 'pPI' as capitalized"; + variant "text 'pPJ' as capitalized"; + variant "text 'pPK' as capitalized"; + variant "text 'pPL' as capitalized"; + variant "text 'pPM' as capitalized"; + variant "text 'pPN' as capitalized"; + variant "text 'pPO' as capitalized"; + variant "text 'pPP' as capitalized"; + variant "text 'pPQ' as capitalized"; + variant "text 'pPR' as capitalized"; + variant "text 'pPS' as capitalized"; + variant "text 'pPT' as capitalized"; + variant "text 'pPU' as capitalized"; + variant "text 'pPV' as capitalized"; + variant "text 'pPW' as capitalized"; + variant "text 'pPX' as capitalized"; + variant "text 'pPY' as capitalized"; + variant "text 'pPZ' as capitalized"; + variant "text 'pQA' as capitalized"; + variant "text 'pQB' as capitalized"; + variant "text 'pQC' as capitalized"; + variant "text 'pQD' as capitalized"; + variant "text 'pQE' as capitalized"; + variant "text 'pQF' as capitalized"; + variant "text 'pQG' as capitalized"; + variant "text 'pQH' as capitalized"; + variant "text 'pQI' as capitalized"; + variant "text 'pQJ' as capitalized"; + variant "text 'pQK' as capitalized"; + variant "text 'pQL' as capitalized"; + variant "text 'pQM' as capitalized"; + variant "text 'pQN' as capitalized"; + variant "text 'pQO' as capitalized"; + variant "text 'pQP' as capitalized"; + variant "text 'pQQ' as capitalized"; + variant "text 'pQR' as capitalized"; + variant "text 'pQS' as capitalized"; + variant "text 'pQT' as capitalized"; + variant "text 'pQU' as capitalized"; + variant "text 'pQV' as capitalized"; + variant "text 'pQW' as capitalized"; + variant "text 'pQX' as capitalized"; + variant "text 'pQY' as capitalized"; + variant "text 'pQZ' as capitalized"; + variant "text 'pRA' as capitalized"; + variant "text 'pRB' as capitalized"; + variant "text 'pRC' as capitalized"; + variant "text 'pRD' as capitalized"; + variant "text 'pRE' as capitalized"; + variant "text 'pRF' as capitalized"; + variant "text 'pRG' as capitalized"; + variant "text 'pRH' as capitalized"; + variant "text 'pRI' as capitalized"; + variant "text 'pRJ' as capitalized"; + variant "text 'pRK' as capitalized"; + variant "text 'pRL' as capitalized"; + variant "text 'pRM' as capitalized"; + variant "text 'pRN' as capitalized"; + variant "text 'pRO' as capitalized"; + variant "text 'pRP' as capitalized"; + variant "text 'pRQ' as capitalized"; + variant "text 'pRR' as capitalized"; + variant "text 'pRS' as capitalized"; + variant "text 'pRT' as capitalized"; + variant "text 'pRU' as capitalized"; + variant "text 'pRV' as capitalized"; + variant "text 'pRW' as capitalized"; + variant "text 'pRX' as capitalized"; + variant "text 'pRY' as capitalized"; + variant "text 'pRZ' as capitalized"; + variant "text 'pSA' as capitalized"; + variant "text 'pSB' as capitalized"; + variant "text 'pSC' as capitalized"; + variant "text 'pSD' as capitalized"; + variant "text 'pSE' as capitalized"; + variant "text 'pSF' as capitalized"; + variant "text 'pSG' as capitalized"; + variant "text 'pSH' as capitalized"; + variant "text 'pSI' as capitalized"; + variant "text 'pSJ' as capitalized"; + variant "text 'pSK' as capitalized"; + variant "text 'pSL' as capitalized"; + variant "text 'pSM' as capitalized"; + variant "text 'pSN' as capitalized"; + variant "text 'pSO' as capitalized"; + variant "text 'pSP' as capitalized"; + variant "text 'pSQ' as capitalized"; + variant "text 'pSR' as capitalized"; + variant "text 'pSS' as capitalized"; + variant "text 'pST' as capitalized"; + variant "text 'pSU' as capitalized"; + variant "text 'pSV' as capitalized"; + variant "text 'pSW' as capitalized"; + variant "text 'pSX' as capitalized"; + variant "text 'pSY' as capitalized"; + variant "text 'pSZ' as capitalized"; + variant "text 'pTA' as capitalized"; + variant "text 'pTB' as capitalized"; + variant "text 'pTC' as capitalized"; + variant "text 'pTD' as capitalized"; + variant "text 'pTE' as capitalized"; + variant "text 'pTF' as capitalized"; + variant "text 'pTG' as capitalized"; + variant "text 'pTH' as capitalized"; + variant "text 'pTI' as capitalized"; + variant "text 'pTJ' as capitalized"; + variant "text 'pTK' as capitalized"; + variant "text 'pTL' as capitalized"; + variant "text 'pTM' as capitalized"; + variant "text 'pTN' as capitalized"; + variant "text 'pTO' as capitalized"; + variant "text 'pTP' as capitalized"; + variant "text 'pTQ' as capitalized"; + variant "text 'pTR' as capitalized"; + variant "text 'pTS' as capitalized"; + variant "text 'pTT' as capitalized"; + variant "text 'pTU' as capitalized"; + variant "text 'pTV' as capitalized"; + variant "text 'pTW' as capitalized"; + variant "text 'pTX' as capitalized"; + variant "text 'pTY' as capitalized"; + variant "text 'pTZ' as capitalized"; + variant "text 'pUA' as capitalized"; + variant "text 'pUB' as capitalized"; + variant "text 'pUC' as capitalized"; + variant "text 'pUD' as capitalized"; + variant "text 'pUE' as capitalized"; + variant "text 'pUF' as capitalized"; + variant "text 'pUG' as capitalized"; + variant "text 'pUH' as capitalized"; + variant "text 'pUI' as capitalized"; + variant "text 'pUJ' as capitalized"; + variant "text 'pUK' as capitalized"; + variant "text 'pUL' as capitalized"; + variant "text 'pUM' as capitalized"; + variant "text 'pUN' as capitalized"; + variant "text 'pUO' as capitalized"; + variant "text 'pUP' as capitalized"; + variant "text 'pUQ' as capitalized"; + variant "text 'pUR' as capitalized"; + variant "text 'pUS' as capitalized"; + variant "text 'pUT' as capitalized"; + variant "text 'pUU' as capitalized"; + variant "text 'pUV' as capitalized"; + variant "text 'pUW' as capitalized"; + variant "text 'pUX' as capitalized"; + variant "text 'pUY' as capitalized"; + variant "text 'pUZ' as capitalized"; + variant "text 'pVA' as capitalized"; + variant "text 'pVB' as capitalized"; + variant "text 'pVC' as capitalized"; + variant "text 'pVD' as capitalized"; + variant "text 'pVE' as capitalized"; + variant "text 'pVF' as capitalized"; + variant "text 'pVG' as capitalized"; + variant "text 'pVH' as capitalized"; + variant "text 'pVI' as capitalized"; + variant "text 'pVJ' as capitalized"; + variant "text 'pVK' as capitalized"; + variant "text 'pVL' as capitalized"; + variant "text 'pVM' as capitalized"; + variant "text 'pVN' as capitalized"; + variant "text 'pVO' as capitalized"; + variant "text 'pVP' as capitalized"; + variant "text 'pVQ' as capitalized"; + variant "text 'pVR' as capitalized"; + variant "text 'pVS' as capitalized"; + variant "text 'pVT' as capitalized"; + variant "text 'pVU' as capitalized"; + variant "text 'pVV' as capitalized"; + variant "text 'pVW' as capitalized"; + variant "text 'pVX' as capitalized"; + variant "text 'pVY' as capitalized"; + variant "text 'pVZ' as capitalized"; + variant "text 'pWA' as capitalized"; + variant "text 'pWB' as capitalized"; + variant "text 'pWC' as capitalized"; + variant "text 'pWD' as capitalized"; + variant "text 'pWE' as capitalized"; + variant "text 'pWF' as capitalized"; + variant "text 'pWG' as capitalized"; + variant "text 'pWH' as capitalized"; + variant "text 'pWI' as capitalized"; + variant "text 'pWJ' as capitalized"; + variant "text 'pWK' as capitalized"; + variant "text 'pWL' as capitalized"; + variant "text 'pWM' as capitalized"; + variant "text 'pWN' as capitalized"; + variant "text 'pWO' as capitalized"; + variant "text 'pWP' as capitalized"; + variant "text 'pWQ' as capitalized"; + variant "text 'pWR' as capitalized"; + variant "text 'pWS' as capitalized"; + variant "text 'pWT' as capitalized"; + variant "text 'pWU' as capitalized"; + variant "text 'pWV' as capitalized"; + variant "text 'pWW' as capitalized"; + variant "text 'pWX' as capitalized"; + variant "text 'pWY' as capitalized"; + variant "text 'pWZ' as capitalized"; + variant "text 'pXA' as capitalized"; + variant "text 'pXB' as capitalized"; + variant "text 'pXC' as capitalized"; + variant "text 'pXD' as capitalized"; + variant "text 'pXE' as capitalized"; + variant "text 'pXF' as capitalized"; + variant "text 'pXG' as capitalized"; + variant "text 'pXH' as capitalized"; + variant "text 'pXI' as capitalized"; + variant "text 'pXJ' as capitalized"; + variant "text 'pXK' as capitalized"; + variant "text 'pXL' as capitalized"; + variant "text 'pXM' as capitalized"; + variant "text 'pXN' as capitalized"; + variant "text 'pXO' as capitalized"; + variant "text 'pXP' as capitalized"; + variant "text 'pXQ' as capitalized"; + variant "text 'pXR' as capitalized"; + variant "text 'pXS' as capitalized"; + variant "text 'pXT' as capitalized"; + variant "text 'pXU' as capitalized"; + variant "text 'pXV' as capitalized"; + variant "text 'pXW' as capitalized"; + variant "text 'pXY' as capitalized"; + variant "text 'pXZ' as capitalized"; + variant "text 'pYA' as capitalized"; + variant "text 'pYB' as capitalized"; + variant "text 'pYC' as capitalized"; + variant "text 'pYD' as capitalized"; + variant "text 'pYE' as capitalized"; + variant "text 'pYF' as capitalized"; + variant "text 'pYG' as capitalized"; + variant "text 'pYH' as capitalized"; + variant "text 'pYI' as capitalized"; + variant "text 'pYJ' as capitalized"; + variant "text 'pYK' as capitalized"; + variant "text 'pYL' as capitalized"; + variant "text 'pYM' as capitalized"; + variant "text 'pYN' as capitalized"; + variant "text 'pYO' as capitalized"; + variant "text 'pYP' as capitalized"; + variant "text 'pYQ' as capitalized"; + variant "text 'pYR' as capitalized"; + variant "text 'pYS' as capitalized"; + variant "text 'pYT' as capitalized"; + variant "text 'pYU' as capitalized"; + variant "text 'pYV' as capitalized"; + variant "text 'pYW' as capitalized"; + variant "text 'pYX' as capitalized"; + variant "text 'pYY' as capitalized"; + variant "text 'pZA' as capitalized"; + variant "text 'pZB' as capitalized"; + variant "text 'pZC' as capitalized"; + variant "text 'pZD' as capitalized"; + variant "text 'pZE' as capitalized"; + variant "text 'pZF' as capitalized"; + variant "text 'pZG' as capitalized"; + variant "text 'pZH' as capitalized"; + variant "text 'pZI' as capitalized"; + variant "text 'pZJ' as capitalized"; + variant "text 'pZK' as capitalized"; + variant "text 'pZL' as capitalized"; + variant "text 'pZM' as capitalized"; + variant "text 'pZN' as capitalized"; + variant "text 'pZO' as capitalized"; + variant "text 'pZP' as capitalized"; + variant "text 'pZQ' as capitalized"; + variant "text 'pZR' as capitalized"; + variant "text 'pZS' as capitalized"; + variant "text 'pZT' as capitalized"; + variant "text 'pZU' as capitalized"; + variant "text 'pZV' as capitalized"; + variant "text 'pZX' as capitalized"; + variant "text 'pZY' as capitalized"; + variant "text 'qAA' as capitalized"; + variant "text 'qAB' as capitalized"; + variant "text 'qAC' as capitalized"; + variant "text 'qAD' as capitalized"; + variant "text 'qAE' as capitalized"; + variant "text 'qAF' as capitalized"; + variant "text 'qAG' as capitalized"; + variant "text 'qAH' as capitalized"; + variant "text 'qAI' as capitalized"; + variant "text 'qAJ' as capitalized"; + variant "text 'qAK' as capitalized"; + variant "text 'qAL' as capitalized"; + variant "text 'qAM' as capitalized"; + variant "text 'qAN' as capitalized"; + variant "text 'qAO' as capitalized"; + variant "text 'qAP' as capitalized"; + variant "text 'qAQ' as capitalized"; + variant "text 'qAR' as capitalized"; + variant "text 'qAS' as capitalized"; + variant "text 'qAT' as capitalized"; + variant "text 'qAU' as capitalized"; + variant "text 'qAV' as capitalized"; + variant "text 'qAW' as capitalized"; + variant "text 'qAX' as capitalized"; + variant "text 'qAY' as capitalized"; + variant "text 'qAZ' as capitalized"; + variant "text 'qBA' as capitalized"; + variant "text 'qBB' as capitalized"; + variant "text 'qBC' as capitalized"; + variant "text 'qBD' as capitalized"; + variant "text 'qBE' as capitalized"; + variant "text 'qBF' as capitalized"; + variant "text 'qBG' as capitalized"; + variant "text 'qBH' as capitalized"; + variant "text 'qBI' as capitalized"; + variant "text 'qBJ' as capitalized"; + variant "text 'qBK' as capitalized"; + variant "text 'qBL' as capitalized"; + variant "text 'qBM' as capitalized"; + variant "text 'qBN' as capitalized"; + variant "text 'qBO' as capitalized"; + variant "text 'qBP' as capitalized"; + variant "text 'qBQ' as capitalized"; + variant "text 'qBR' as capitalized"; + variant "text 'qBS' as capitalized"; + variant "text 'qBT' as capitalized"; + variant "text 'qBU' as capitalized"; + variant "text 'qBV' as capitalized"; + variant "text 'qBW' as capitalized"; + variant "text 'qBX' as capitalized"; + variant "text 'qBY' as capitalized"; + variant "text 'qBZ' as capitalized"; + variant "text 'qCA' as capitalized"; + variant "text 'qCB' as capitalized"; + variant "text 'qCC' as capitalized"; + variant "text 'qCD' as capitalized"; + variant "text 'qCE' as capitalized"; + variant "text 'qCF' as capitalized"; + variant "text 'qCG' as capitalized"; + variant "text 'qCH' as capitalized"; + variant "text 'qCI' as capitalized"; + variant "text 'qCJ' as capitalized"; + variant "text 'qCK' as capitalized"; + variant "text 'qCL' as capitalized"; + variant "text 'qCM' as capitalized"; + variant "text 'qCN' as capitalized"; + variant "text 'qCO' as capitalized"; + variant "text 'qCP' as capitalized"; + variant "text 'qCQ' as capitalized"; + variant "text 'qCR' as capitalized"; + variant "text 'qCS' as capitalized"; + variant "text 'qCT' as capitalized"; + variant "text 'qCU' as capitalized"; + variant "text 'qCV' as capitalized"; + variant "text 'qCW' as capitalized"; + variant "text 'qCX' as capitalized"; + variant "text 'qCY' as capitalized"; + variant "text 'qCZ' as capitalized"; + variant "text 'qDA' as capitalized"; + variant "text 'qDB' as capitalized"; + variant "text 'qDC' as capitalized"; + variant "text 'qDD' as capitalized"; + variant "text 'qDE' as capitalized"; + variant "text 'qDF' as capitalized"; + variant "text 'qDG' as capitalized"; + variant "text 'qDH' as capitalized"; + variant "text 'qDI' as capitalized"; + variant "text 'qDJ' as capitalized"; + variant "text 'qDK' as capitalized"; + variant "text 'qDL' as capitalized"; + variant "text 'qDP' as capitalized"; + variant "text 'qDS' as capitalized"; + variant "text 'qDT' as capitalized"; + variant "text 'qDV' as capitalized"; + variant "text 'qDX' as capitalized"; + variant "text 'qDZ' as capitalized"; + variant "text 'qEL' as capitalized"; + variant "text 'qEW' as capitalized"; + variant "text 'qEX' as capitalized"; + variant "text 'qEY' as capitalized"; + variant "text 'qFA' as capitalized"; + variant "text 'qFB' as capitalized"; + variant "text 'qFF' as capitalized"; + variant "text 'qFI' as capitalized"; + variant "text 'qFJ' as capitalized"; + variant "text 'qFK' as capitalized"; + variant "text 'qFL' as capitalized"; + variant "text 'qFM' as capitalized"; + variant "text 'qFN' as capitalized"; + variant "text 'qFO' as capitalized"; + variant "text 'qFQ' as capitalized"; + variant "text 'qFR' as capitalized"; + variant "text 'qFT' as capitalized"; + variant "text 'qFU' as capitalized"; + variant "text 'qFV' as capitalized"; + variant "text 'qFX' as capitalized"; + variant "text 'qFY' as capitalized"; + variant "text 'qGA' as capitalized"; + variant "text 'qGB' as capitalized"; + variant "text 'qGG' as capitalized"; + variant "text 'qGN' as capitalized"; + variant "text 'qGO' as capitalized"; + variant "text 'qGS' as capitalized"; + variant "text 'qGT' as capitalized"; + variant "text 'qGV' as capitalized"; + variant "text 'qGW' as capitalized"; + variant "text 'qGX' as capitalized"; + variant "text 'qGY' as capitalized"; + variant "text 'qGZ' as capitalized"; + variant "text 'qHA' as capitalized"; + variant "text 'qHD' as capitalized"; + variant "text 'qHI' as capitalized"; + variant "text 'qHO' as capitalized"; + variant "text 'qHX' as capitalized"; + variant "text 'qHY' as capitalized"; + variant "text 'qHZ' as capitalized"; + variant "text 'qIA' as capitalized"; + variant "text 'qIJ' as capitalized"; + variant "text 'qIK' as capitalized"; + variant "text 'qIT' as capitalized"; + variant "text 'qIU' as capitalized"; + variant "text 'qIW' as capitalized"; + variant "text 'qIX' as capitalized"; + variant "text 'qIZ' as capitalized"; + variant "text 'qJA' as capitalized"; + variant "text 'qJB' as capitalized"; + variant "text 'qJX' as capitalized"; + variant "text 'qKA' as capitalized"; + variant "text 'qKB' as capitalized"; + variant "text 'qKU' as capitalized"; + variant "text 'qKZ' as capitalized"; + variant "text 'qLA' as capitalized"; + variant "text 'qLB' as capitalized"; + variant "text 'qLC' as capitalized"; + variant "text 'qLE' as capitalized"; + variant "text 'qLJ' as capitalized"; + variant "text 'qLM' as capitalized"; + variant "text 'qLP' as capitalized"; + variant "text 'qLV' as capitalized"; + variant "text 'qLW' as capitalized"; + variant "text 'qLX' as capitalized"; + variant "text 'qLY' as capitalized"; + variant "text 'qMB' as capitalized"; + variant "text 'qMC' as capitalized"; + variant "text 'qMR' as capitalized"; + variant "text 'qMT' as capitalized"; + variant "text 'qND' as capitalized"; + variant "text 'qNG' as capitalized"; + variant "text 'qNR' as capitalized"; + variant "text 'qNS' as capitalized"; + variant "text 'qNV' as capitalized"; + variant "text 'qNX' as capitalized"; + variant "text 'qOE' as capitalized"; + variant "text 'qOF' as capitalized"; + variant "text 'qOG' as capitalized"; + variant "text 'qOI' as capitalized"; + variant "text 'qOJ' as capitalized"; + variant "text 'qOK' as capitalized"; + variant "text 'qON' as capitalized"; + variant "text 'qOS' as capitalized"; + variant "text 'qOX' as capitalized"; + variant "text 'qPB' as capitalized"; + variant "text 'qPF' as capitalized"; + variant "text 'qPH' as capitalized"; + variant "text 'qPI' as capitalized"; + variant "text 'qPL' as capitalized"; + variant "text 'qPM' as capitalized"; + variant "text 'qPN' as capitalized"; + variant "text 'qPP' as capitalized"; + variant "text 'qPQ' as capitalized"; + variant "text 'qPT' as capitalized"; + variant "text 'qPX' as capitalized"; + variant "text 'qQM' as capitalized"; + variant "text 'qQV' as capitalized"; + variant "text 'qQX' as capitalized"; + variant "text 'qRA' as capitalized"; + variant "text 'qRB' as capitalized"; + variant "text 'qRC' as capitalized"; + variant "text 'qRD' as capitalized"; + variant "text 'qRG' as capitalized"; + variant "text 'qRQ' as capitalized"; + variant "text 'qRR' as capitalized"; + variant "text 'qRS' as capitalized"; + variant "text 'qRT' as capitalized"; + variant "text 'qRU' as capitalized"; + variant "text 'qRW' as capitalized"; + variant "text 'qRY' as capitalized"; + variant "text 'qRZ' as capitalized"; + variant "text 'qSA' as capitalized"; + variant "text 'qSB' as capitalized"; + variant "text 'qSC' as capitalized"; + variant "text 'qSD' as capitalized"; + variant "text 'qSE' as capitalized"; + variant "text 'qSF' as capitalized"; + variant "text 'qSG' as capitalized"; + variant "text 'qSH' as capitalized"; + variant "text 'qSI' as capitalized"; + variant "text 'qSJ' as capitalized"; + variant "text 'qSK' as capitalized"; + variant "text 'qSL' as capitalized"; + variant "text 'qSM' as capitalized"; + variant "text 'qSN' as capitalized"; + variant "text 'qSP' as capitalized"; + variant "text 'qSQ' as capitalized"; + variant "text 'qSR' as capitalized"; + variant "text 'qSS' as capitalized"; + variant "text 'qST' as capitalized"; + variant "text 'qSU' as capitalized"; + variant "text 'qSV' as capitalized"; + variant "text 'qSW' as capitalized"; + variant "text 'qSX' as capitalized"; + variant "text 'qSY' as capitalized"; + variant "text 'qSZ' as capitalized"; + variant "text 'qTA' as capitalized"; + variant "text 'qTB' as capitalized"; + variant "text 'qTC' as capitalized"; + variant "text 'qTD' as capitalized"; + variant "text 'qTE' as capitalized"; + variant "text 'qTF' as capitalized"; + variant "text 'qTG' as capitalized"; + variant "text 'qTH' as capitalized"; + variant "text 'qTI' as capitalized"; + variant "text 'qTJ' as capitalized"; + variant "text 'qTK' as capitalized"; + variant "text 'qTL' as capitalized"; + variant "text 'qTM' as capitalized"; + variant "text 'qTN' as capitalized"; + variant "text 'qTO' as capitalized"; + variant "text 'qTP' as capitalized"; + variant "text 'qTR' as capitalized"; + variant "text 'qTS' as capitalized"; + variant "text 'qTT' as capitalized"; + variant "text 'qTU' as capitalized"; + variant "text 'qTV' as capitalized"; + variant "text 'qTW' as capitalized"; + variant "text 'qTX' as capitalized"; + variant "text 'qTY' as capitalized"; + variant "text 'qUA' as capitalized"; + variant "text 'qUB' as capitalized"; + variant "text 'qUC' as capitalized"; + variant "text 'qUE' as capitalized"; + variant "text 'qUJ' as capitalized"; + variant "text 'qUK' as capitalized"; + variant "text 'qUL' as capitalized"; + variant "text 'qUM' as capitalized"; + variant "text 'qUN' as capitalized"; + variant "text 'qUP' as capitalized"; + variant "text 'qUR' as capitalized"; + variant "text 'qUS' as capitalized"; + variant "text 'qUT' as capitalized"; + variant "text 'qUU' as capitalized"; + variant "text 'qUV' as capitalized"; + variant "text 'qUY' as capitalized"; + variant "text 'qVL' as capitalized"; + variant "text 'qVO' as capitalized"; + variant "text 'qWD' as capitalized"; + variant "text 'qWI' as capitalized"; + variant "text 'qWL' as capitalized"; + variant "text 'qWV' as capitalized"; + variant "text 'qXN' as capitalized"; + variant "text 'qXO' as capitalized"; + variant "text 'qXP' as capitalized"; + variant "text 'qXR' as capitalized"; + variant "text 'qYB' as capitalized"; + variant "text 'qYP' as capitalized"; + variant "text 'qYQ' as capitalized"; + variant "text 'qYX' as capitalized"; + variant "text 'qZE' as capitalized"; + variant "text 'qZF' as capitalized"; + variant "text 'qZG' as capitalized"; + variant "text 'qZH' as capitalized"; + variant "text 'qZI' as capitalized"; + variant "text 'qZJ' as capitalized"; + variant "text 'qZK' as capitalized"; + variant "text 'qZL' as capitalized"; + variant "text 'qZM' as capitalized"; + variant "text 'qZN' as capitalized"; + variant "text 'qZO' as capitalized"; + variant "text 'qZP' as capitalized"; + variant "text 'qZQ' as capitalized"; + variant "text 'qZR' as capitalized"; + variant "text 'qZS' as capitalized"; + variant "text 'qZT' as capitalized"; + variant "text 'qZU' as capitalized"; + variant "text 'qZV' as capitalized"; + variant "text 'qZW' as capitalized"; + variant "text 'qZX' as capitalized"; + variant "text 'qZY' as capitalized"; + variant "text 'qZZ' as capitalized"; + variant "text 'rAA' as capitalized"; + variant "text 'rAB' as capitalized"; + variant "text 'rAC' as capitalized"; + variant "text 'rAD' as capitalized"; + variant "text 'rAE' as capitalized"; + variant "text 'rAF' as capitalized"; + variant "text 'rAG' as capitalized"; + variant "text 'rAH' as capitalized"; + variant "text 'rAI' as capitalized"; + variant "text 'rAJ' as capitalized"; + variant "text 'rAK' as capitalized"; + variant "text 'rAL' as capitalized"; + variant "text 'rAM' as capitalized"; + variant "text 'rAN' as capitalized"; + variant "text 'rAO' as capitalized"; + variant "text 'rAP' as capitalized"; + variant "text 'rAQ' as capitalized"; + variant "text 'rAR' as capitalized"; + variant "text 'rAS' as capitalized"; + variant "text 'rAT' as capitalized"; + variant "text 'rAU' as capitalized"; + variant "text 'rAV' as capitalized"; + variant "text 'rAW' as capitalized"; + variant "text 'rAX' as capitalized"; + variant "text 'rAY' as capitalized"; + variant "text 'rAZ' as capitalized"; + variant "text 'rBA' as capitalized"; + variant "text 'rBB' as capitalized"; + variant "text 'rBC' as capitalized"; + variant "text 'rBD' as capitalized"; + variant "text 'rBE' as capitalized"; + variant "text 'rBF' as capitalized"; + variant "text 'rBG' as capitalized"; + variant "text 'rBH' as capitalized"; + variant "text 'rBI' as capitalized"; + variant "text 'rBJ' as capitalized"; + variant "text 'rBK' as capitalized"; + variant "text 'rBL' as capitalized"; + variant "text 'rBM' as capitalized"; + variant "text 'rBN' as capitalized"; + variant "text 'rBO' as capitalized"; + variant "text 'rBP' as capitalized"; + variant "text 'rBQ' as capitalized"; + variant "text 'rBR' as capitalized"; + variant "text 'rBS' as capitalized"; + variant "text 'rBT' as capitalized"; + variant "text 'rBU' as capitalized"; + variant "text 'rBV' as capitalized"; + variant "text 'rBW' as capitalized"; + variant "text 'rBX' as capitalized"; + variant "text 'rBY' as capitalized"; + variant "text 'rBZ' as capitalized"; + variant "text 'rCA' as capitalized"; + variant "text 'rCB' as capitalized"; + variant "text 'rCC' as capitalized"; + variant "text 'rCD' as capitalized"; + variant "text 'rCE' as capitalized"; + variant "text 'rCF' as capitalized"; + variant "text 'rCG' as capitalized"; + variant "text 'rCH' as capitalized"; + variant "text 'rCI' as capitalized"; + variant "text 'rCJ' as capitalized"; + variant "text 'rCK' as capitalized"; + variant "text 'rCL' as capitalized"; + variant "text 'rCM' as capitalized"; + variant "text 'rCN' as capitalized"; + variant "text 'rCO' as capitalized"; + variant "text 'rCP' as capitalized"; + variant "text 'rCQ' as capitalized"; + variant "text 'rCR' as capitalized"; + variant "text 'rCS' as capitalized"; + variant "text 'rCT' as capitalized"; + variant "text 'rCU' as capitalized"; + variant "text 'rCV' as capitalized"; + variant "text 'rCW' as capitalized"; + variant "text 'rCX' as capitalized"; + variant "text 'rCY' as capitalized"; + variant "text 'rCZ' as capitalized"; + variant "text 'rDA' as capitalized"; + variant "text 'rDB' as capitalized"; + variant "text 'rDC' as capitalized"; + variant "text 'rDD' as capitalized"; + variant "text 'rDE' as capitalized"; + variant "text 'rDF' as capitalized"; + variant "text 'rDG' as capitalized"; + variant "text 'rDH' as capitalized"; + variant "text 'rDI' as capitalized"; + variant "text 'rDJ' as capitalized"; + variant "text 'rDK' as capitalized"; + variant "text 'rDL' as capitalized"; + variant "text 'rDM' as capitalized"; + variant "text 'rDN' as capitalized"; + variant "text 'rDO' as capitalized"; + variant "text 'rDP' as capitalized"; + variant "text 'rDQ' as capitalized"; + variant "text 'rDR' as capitalized"; + variant "text 'rDS' as capitalized"; + variant "text 'rDT' as capitalized"; + variant "text 'rDU' as capitalized"; + variant "text 'rDV' as capitalized"; + variant "text 'rDW' as capitalized"; + variant "text 'rDX' as capitalized"; + variant "text 'rDY' as capitalized"; + variant "text 'rDZ' as capitalized"; + variant "text 'rEA' as capitalized"; + variant "text 'rEB' as capitalized"; + variant "text 'rEC' as capitalized"; + variant "text 'rED' as capitalized"; + variant "text 'rEE' as capitalized"; + variant "text 'rEF' as capitalized"; + variant "text 'rEG' as capitalized"; + variant "text 'rEH' as capitalized"; + variant "text 'rEI' as capitalized"; + variant "text 'rEJ' as capitalized"; + variant "text 'rEK' as capitalized"; + variant "text 'rEL' as capitalized"; + variant "text 'rEM' as capitalized"; + variant "text 'rEN' as capitalized"; + variant "text 'rEO' as capitalized"; + variant "text 'rEP' as capitalized"; + variant "text 'rEQ' as capitalized"; + variant "text 'rER' as capitalized"; + variant "text 'rES' as capitalized"; + variant "text 'rET' as capitalized"; + variant "text 'rEU' as capitalized"; + variant "text 'rEV' as capitalized"; + variant "text 'rEW' as capitalized"; + variant "text 'rEX' as capitalized"; + variant "text 'rEY' as capitalized"; + variant "text 'rEZ' as capitalized"; + variant "text 'rFA' as capitalized"; + variant "text 'rFB' as capitalized"; + variant "text 'rFC' as capitalized"; + variant "text 'rFE' as capitalized"; + variant "text 'rFH' as capitalized"; + variant "text 'rFL' as capitalized"; + variant "text 'rFM' as capitalized"; + variant "text 'rFO' as capitalized"; + variant "text 'rFP' as capitalized"; + variant "text 'rFQ' as capitalized"; + variant "text 'rFR' as capitalized"; + variant "text 'rFS' as capitalized"; + variant "text 'rFT' as capitalized"; + variant "text 'rFV' as capitalized"; + variant "text 'rFX' as capitalized"; + variant "text 'rFY' as capitalized"; + variant "text 'rFZ' as capitalized"; + variant "text 'rGA' as capitalized"; + variant "text 'rGB' as capitalized"; + variant "text 'rGC' as capitalized"; + variant "text 'rGD' as capitalized"; + variant "text 'rGE' as capitalized"; + variant "text 'rGF' as capitalized"; + variant "text 'rGG' as capitalized"; + variant "text 'rGH' as capitalized"; + variant "text 'rGI' as capitalized"; + variant "text 'rGJ' as capitalized"; + variant "text 'rGK' as capitalized"; + variant "text 'rGL' as capitalized"; + variant "text 'rGM' as capitalized"; + variant "text 'rGN' as capitalized"; + variant "text 'rGO' as capitalized"; + variant "text 'rGP' as capitalized"; + variant "text 'rGQ' as capitalized"; + variant "text 'rGR' as capitalized"; + variant "text 'rGS' as capitalized"; + variant "text 'rGT' as capitalized"; + variant "text 'rGU' as capitalized"; + variant "text 'rGV' as capitalized"; + variant "text 'rGX' as capitalized"; + variant "text 'rGY' as capitalized"; + variant "text 'rGZ' as capitalized"; + variant "text 'rHA' as capitalized"; + variant "text 'rHB' as capitalized"; + variant "text 'rHC' as capitalized"; + variant "text 'rHD' as capitalized"; + variant "text 'rHE' as capitalized"; + variant "text 'rHF' as capitalized"; + variant "text 'rHG' as capitalized"; + variant "text 'rHH' as capitalized"; + variant "text 'rHI' as capitalized"; + variant "text 'rHJ' as capitalized"; + variant "text 'rHK' as capitalized"; + variant "text 'rHL' as capitalized"; + variant "text 'rHM' as capitalized"; + variant "text 'rHN' as capitalized"; + variant "text 'rHO' as capitalized"; + variant "text 'rHP' as capitalized"; + variant "text 'rHQ' as capitalized"; + variant "text 'rHR' as capitalized"; + variant "text 'rHT' as capitalized"; + variant "text 'rHU' as capitalized"; + variant "text 'rHV' as capitalized"; + variant "text 'rHW' as capitalized"; + variant "text 'rHX' as capitalized"; + variant "text 'rHY' as capitalized"; + variant "text 'rHZ' as capitalized"; + variant "text 'rIA' as capitalized"; + variant "text 'rIB' as capitalized"; + variant "text 'rIC' as capitalized"; + variant "text 'rID' as capitalized"; + variant "text 'rIE' as capitalized"; + variant "text 'rIF' as capitalized"; + variant "text 'rIG' as capitalized"; + variant "text 'rIH' as capitalized"; + variant "text 'rII' as capitalized"; + variant "text 'rIJ' as capitalized"; + variant "text 'rIK' as capitalized"; + variant "text 'rIL' as capitalized"; + variant "text 'rIM' as capitalized"; + variant "text 'rIN' as capitalized"; + variant "text 'rIO' as capitalized"; + variant "text 'rIP' as capitalized"; + variant "text 'rIR' as capitalized"; + variant "text 'rIS' as capitalized"; + variant "text 'rIT' as capitalized"; + variant "text 'rIU' as capitalized"; + variant "text 'rIV' as capitalized"; + variant "text 'rIW' as capitalized"; + variant "text 'rIX' as capitalized"; + variant "text 'rIY' as capitalized"; + variant "text 'rJA' as capitalized"; + variant "text 'rJB' as capitalized"; + variant "text 'rJC' as capitalized"; + variant "text 'rJD' as capitalized"; + variant "text 'rJE' as capitalized"; + variant "text 'rJF' as capitalized"; + variant "text 'rJG' as capitalized"; + variant "text 'rJH' as capitalized"; + variant "text 'rJI' as capitalized"; + variant "text 'rJJ' as capitalized"; + variant "text 'rJK' as capitalized"; + variant "text 'rJL' as capitalized"; + variant "text 'rJM' as capitalized"; + variant "text 'rJN' as capitalized"; + variant "text 'rJO' as capitalized"; + variant "text 'rJP' as capitalized"; + variant "text 'rJQ' as capitalized"; + variant "text 'rJR' as capitalized"; + variant "text 'rJS' as capitalized"; + variant "text 'rJT' as capitalized"; + variant "text 'rJU' as capitalized"; + variant "text 'rJX' as capitalized"; + variant "text 'rJY' as capitalized"; + variant "text 'rKA' as capitalized"; + variant "text 'rKB' as capitalized"; + variant "text 'rKC' as capitalized"; + variant "text 'rKD' as capitalized"; + variant "text 'rKE' as capitalized"; + variant "text 'rKF' as capitalized"; + variant "text 'rKG' as capitalized"; + variant "text 'rKH' as capitalized"; + variant "text 'rKI' as capitalized"; + variant "text 'rKJ' as capitalized"; + variant "text 'rKK' as capitalized"; + variant "text 'rKL' as capitalized"; + variant "text 'rKM' as capitalized"; + variant "text 'rKN' as capitalized"; + variant "text 'rKO' as capitalized"; + variant "text 'rKP' as capitalized"; + variant "text 'rKQ' as capitalized"; + variant "text 'rKR' as capitalized"; + variant "text 'rKS' as capitalized"; + variant "text 'rKT' as capitalized"; + variant "text 'rKU' as capitalized"; + variant "text 'rKV' as capitalized"; + variant "text 'rKW' as capitalized"; + variant "text 'rKX' as capitalized"; + variant "text 'rKY' as capitalized"; + variant "text 'rKZ' as capitalized"; + variant "text 'rLA' as capitalized"; + variant "text 'rLB' as capitalized"; + variant "text 'rLC' as capitalized"; + variant "text 'rLD' as capitalized"; + variant "text 'rLE' as capitalized"; + variant "text 'rLF' as capitalized"; + variant "text 'rLG' as capitalized"; + variant "text 'rLH' as capitalized"; + variant "text 'rLI' as capitalized"; + variant "text 'rLJ' as capitalized"; + variant "text 'rLL' as capitalized"; + variant "text 'rLM' as capitalized"; + variant "text 'rLN' as capitalized"; + variant "text 'rLO' as capitalized"; + variant "text 'rLP' as capitalized"; + variant "text 'rLR' as capitalized"; + variant "text 'rLS' as capitalized"; + variant "text 'rLT' as capitalized"; + variant "text 'rLU' as capitalized"; + variant "text 'rLV' as capitalized"; + variant "text 'rLX' as capitalized"; + variant "text 'rLY' as capitalized"; + variant "text 'rLZ' as capitalized"; + variant "text 'rMA' as capitalized"; + variant "text 'rMB' as capitalized"; + variant "text 'rMC' as capitalized"; + variant "text 'rME' as capitalized"; + variant "text 'rMF' as capitalized"; + variant "text 'rMG' as capitalized"; + variant "text 'rMH' as capitalized"; + variant "text 'rMI' as capitalized"; + variant "text 'rMJ' as capitalized"; + variant "text 'rMK' as capitalized"; + variant "text 'rML' as capitalized"; + variant "text 'rMM' as capitalized"; + variant "text 'rMN' as capitalized"; + variant "text 'rMO' as capitalized"; + variant "text 'rMP' as capitalized"; + variant "text 'rMQ' as capitalized"; + variant "text 'rMR' as capitalized"; + variant "text 'rMS' as capitalized"; + variant "text 'rMT' as capitalized"; + variant "text 'rMU' as capitalized"; + variant "text 'rMV' as capitalized"; + variant "text 'rMW' as capitalized"; + variant "text 'rMX' as capitalized"; + variant "text 'rMZ' as capitalized"; + variant "text 'rNA' as capitalized"; + variant "text 'rNB' as capitalized"; + variant "text 'rNC' as capitalized"; + variant "text 'rND' as capitalized"; + variant "text 'rNE' as capitalized"; + variant "text 'rNF' as capitalized"; + variant "text 'rNG' as capitalized"; + variant "text 'rNH' as capitalized"; + variant "text 'rNI' as capitalized"; + variant "text 'rNJ' as capitalized"; + variant "text 'rNK' as capitalized"; + variant "text 'rNL' as capitalized"; + variant "text 'rNM' as capitalized"; + variant "text 'rNN' as capitalized"; + variant "text 'rNO' as capitalized"; + variant "text 'rNP' as capitalized"; + variant "text 'rNQ' as capitalized"; + variant "text 'rNR' as capitalized"; + variant "text 'rNS' as capitalized"; + variant "text 'rNT' as capitalized"; + variant "text 'rNU' as capitalized"; + variant "text 'rNV' as capitalized"; + variant "text 'rNW' as capitalized"; + variant "text 'rNX' as capitalized"; + variant "text 'rNY' as capitalized"; + variant "text 'rOA' as capitalized"; + variant "text 'rOB' as capitalized"; + variant "text 'rOC' as capitalized"; + variant "text 'rOD' as capitalized"; + variant "text 'rOF' as capitalized"; + variant "text 'rOG' as capitalized"; + variant "text 'rOH' as capitalized"; + variant "text 'rOI' as capitalized"; + variant "text 'rOJ' as capitalized"; + variant "text 'rOK' as capitalized"; + variant "text 'rOL' as capitalized"; + variant "text 'rOM' as capitalized"; + variant "text 'rON' as capitalized"; + variant "text 'rOO' as capitalized"; + variant "text 'rOP' as capitalized"; + variant "text 'rOQ' as capitalized"; + variant "text 'rOR' as capitalized"; + variant "text 'rOS' as capitalized"; + variant "text 'rOT' as capitalized"; + variant "text 'rOU' as capitalized"; + variant "text 'rOV' as capitalized"; + variant "text 'rOW' as capitalized"; + variant "text 'rOY' as capitalized"; + variant "text 'rOZ' as capitalized"; + variant "text 'rPA' as capitalized"; + variant "text 'rPB' as capitalized"; + variant "text 'rPC' as capitalized"; + variant "text 'rPD' as capitalized"; + variant "text 'rPE' as capitalized"; + variant "text 'rPF' as capitalized"; + variant "text 'rPG' as capitalized"; + variant "text 'rPH' as capitalized"; + variant "text 'rPI' as capitalized"; + variant "text 'rPJ' as capitalized"; + variant "text 'rPK' as capitalized"; + variant "text 'rPL' as capitalized"; + variant "text 'rPM' as capitalized"; + variant "text 'rPN' as capitalized"; + variant "text 'rPO' as capitalized"; + variant "text 'rPP' as capitalized"; + variant "text 'rPQ' as capitalized"; + variant "text 'rPR' as capitalized"; + variant "text 'rPS' as capitalized"; + variant "text 'rPT' as capitalized"; + variant "text 'rPU' as capitalized"; + variant "text 'rPV' as capitalized"; + variant "text 'rPW' as capitalized"; + variant "text 'rPX' as capitalized"; + variant "text 'rPY' as capitalized"; + variant "text 'rPZ' as capitalized"; + variant "text 'rQA' as capitalized"; + variant "text 'rQB' as capitalized"; + variant "text 'rQC' as capitalized"; + variant "text 'rQD' as capitalized"; + variant "text 'rQE' as capitalized"; + variant "text 'rQF' as capitalized"; + variant "text 'rQG' as capitalized"; + variant "text 'rQH' as capitalized"; + variant "text 'rQI' as capitalized"; + variant "text 'rQJ' as capitalized"; + variant "text 'rQM' as capitalized"; + variant "text 'rQN' as capitalized"; + variant "text 'rQO' as capitalized"; + variant "text 'rQP' as capitalized"; + variant "text 'rQR' as capitalized"; + variant "text 'rQS' as capitalized"; + variant "text 'rQT' as capitalized"; + variant "text 'rQU' as capitalized"; + variant "text 'rQV' as capitalized"; + variant "text 'rQX' as capitalized"; + variant "text 'rQZ' as capitalized"; + variant "text 'rRA' as capitalized"; + variant "text 'rRB' as capitalized"; + variant "text 'rRC' as capitalized"; + variant "text 'rRD' as capitalized"; + variant "text 'rRE' as capitalized"; + variant "text 'rRF' as capitalized"; + variant "text 'rRG' as capitalized"; + variant "text 'rRH' as capitalized"; + variant "text 'rRI' as capitalized"; + variant "text 'rRJ' as capitalized"; + variant "text 'rRK' as capitalized"; + variant "text 'rRL' as capitalized"; + variant "text 'rRM' as capitalized"; + variant "text 'rRN' as capitalized"; + variant "text 'rRO' as capitalized"; + variant "text 'rRP' as capitalized"; + variant "text 'rRR' as capitalized"; + variant "text 'rRS' as capitalized"; + variant "text 'rRT' as capitalized"; + variant "text 'rRU' as capitalized"; + variant "text 'rRV' as capitalized"; + variant "text 'rRW' as capitalized"; + variant "text 'rRX' as capitalized"; + variant "text 'rRY' as capitalized"; + variant "text 'rRZ' as capitalized"; + variant "text 'rSA' as capitalized"; + variant "text 'rSB' as capitalized"; + variant "text 'rSC' as capitalized"; + variant "text 'rSD' as capitalized"; + variant "text 'rSE' as capitalized"; + variant "text 'rSF' as capitalized"; + variant "text 'rSG' as capitalized"; + variant "text 'rSH' as capitalized"; + variant "text 'rSI' as capitalized"; + variant "text 'rSJ' as capitalized"; + variant "text 'rSK' as capitalized"; + variant "text 'rSL' as capitalized"; + variant "text 'rSM' as capitalized"; + variant "text 'rSN' as capitalized"; + variant "text 'rSO' as capitalized"; + variant "text 'rSP' as capitalized"; + variant "text 'rSQ' as capitalized"; + variant "text 'rSR' as capitalized"; + variant "text 'rSS' as capitalized"; + variant "text 'rST' as capitalized"; + variant "text 'rSU' as capitalized"; + variant "text 'rSV' as capitalized"; + variant "text 'rSW' as capitalized"; + variant "text 'rSX' as capitalized"; + variant "text 'rSY' as capitalized"; + variant "text 'rSZ' as capitalized"; + variant "text 'rTA' as capitalized"; + variant "text 'rTB' as capitalized"; + variant "text 'rTC' as capitalized"; + variant "text 'rTD' as capitalized"; + variant "text 'rTE' as capitalized"; + variant "text 'rTF' as capitalized"; + variant "text 'rTG' as capitalized"; + variant "text 'rTH' as capitalized"; + variant "text 'rTI' as capitalized"; + variant "text 'rTJ' as capitalized"; + variant "text 'rTK' as capitalized"; + variant "text 'rTL' as capitalized"; + variant "text 'rTM' as capitalized"; + variant "text 'rTN' as capitalized"; + variant "text 'rTO' as capitalized"; + variant "text 'rTP' as capitalized"; + variant "text 'rTQ' as capitalized"; + variant "text 'rTR' as capitalized"; + variant "text 'rTS' as capitalized"; + variant "text 'rTT' as capitalized"; + variant "text 'rTU' as capitalized"; + variant "text 'rTV' as capitalized"; + variant "text 'rTW' as capitalized"; + variant "text 'rTX' as capitalized"; + variant "text 'rTY' as capitalized"; + variant "text 'rTZ' as capitalized"; + variant "text 'rUA' as capitalized"; + variant "text 'rUB' as capitalized"; + variant "text 'rUC' as capitalized"; + variant "text 'rUD' as capitalized"; + variant "text 'rUE' as capitalized"; + variant "text 'rUF' as capitalized"; + variant "text 'rUG' as capitalized"; + variant "text 'rUH' as capitalized"; + variant "text 'rUI' as capitalized"; + variant "text 'rUJ' as capitalized"; + variant "text 'rUK' as capitalized"; + variant "text 'rUL' as capitalized"; + variant "text 'rUM' as capitalized"; + variant "text 'rUN' as capitalized"; + variant "text 'rUO' as capitalized"; + variant "text 'rUP' as capitalized"; + variant "text 'rUQ' as capitalized"; + variant "text 'rUR' as capitalized"; + variant "text 'rUS' as capitalized"; + variant "text 'rUT' as capitalized"; + variant "text 'rUU' as capitalized"; + variant "text 'rUV' as capitalized"; + variant "text 'rUW' as capitalized"; + variant "text 'rUX' as capitalized"; + variant "text 'rUY' as capitalized"; + variant "text 'rUZ' as capitalized"; + variant "text 'rVA' as capitalized"; + variant "text 'rVB' as capitalized"; + variant "text 'rVC' as capitalized"; + variant "text 'rVE' as capitalized"; + variant "text 'rVF' as capitalized"; + variant "text 'rVH' as capitalized"; + variant "text 'rVM' as capitalized"; + variant "text 'rVN' as capitalized"; + variant "text 'rVP' as capitalized"; + variant "text 'rVR' as capitalized"; + variant "text 'rVS' as capitalized"; + variant "text 'rVT' as capitalized"; + variant "text 'rVU' as capitalized"; + variant "text 'rVV' as capitalized"; + variant "text 'rVW' as capitalized"; + variant "text 'rVX' as capitalized"; + variant "text 'rVY' as capitalized"; + variant "text 'rVZ' as capitalized"; + variant "text 'rWA' as capitalized"; + variant "text 'rWC' as capitalized"; + variant "text 'rWS' as capitalized"; + variant "text 'rWX' as capitalized"; + variant "text 'rXA' as capitalized"; + variant "text 'rXG' as capitalized"; + variant "text 'rXJ' as capitalized"; + variant "text 'rXK' as capitalized"; + variant "text 'rXL' as capitalized"; + variant "text 'rXO' as capitalized"; + variant "text 'rXP' as capitalized"; + variant "text 'rXQ' as capitalized"; + variant "text 'rXR' as capitalized"; + variant "text 'rXS' as capitalized"; + variant "text 'rXU' as capitalized"; + variant "text 'rXX' as capitalized"; + variant "text 'rXY' as capitalized"; + variant "text 'rYA' as capitalized"; + variant "text 'rYB' as capitalized"; + variant "text 'rYC' as capitalized"; + variant "text 'rYD' as capitalized"; + variant "text 'rYE' as capitalized"; + variant "text 'rYF' as capitalized"; + variant "text 'rYG' as capitalized"; + variant "text 'rYH' as capitalized"; + variant "text 'rYI' as capitalized"; + variant "text 'rYJ' as capitalized"; + variant "text 'rYL' as capitalized"; + variant "text 'rYM' as capitalized"; + variant "text 'rYN' as capitalized"; + variant "text 'rYO' as capitalized"; + variant "text 'rYP' as capitalized"; + variant "text 'rYQ' as capitalized"; + variant "text 'rYR' as capitalized"; + variant "text 'rYS' as capitalized"; + variant "text 'rYT' as capitalized"; + variant "text 'rYU' as capitalized"; + variant "text 'rYV' as capitalized"; + variant "text 'rYW' as capitalized"; + variant "text 'rYX' as capitalized"; + variant "text 'rYY' as capitalized"; + variant "text 'rYZ' as capitalized"; + variant "text 'rZE' as capitalized"; + variant "text 'rZS' as capitalized"; + variant "text 'rZT' as capitalized"; + variant "text 'rZU' as capitalized"; + variant "text 'rZV' as capitalized"; + variant "text 'rZX' as capitalized"; + variant "text 'sAA' as capitalized"; + variant "text 'sAB' as capitalized"; + variant "text 'sAC' as capitalized"; + variant "text 'sAD' as capitalized"; + variant "text 'sAE' as capitalized"; + variant "text 'sAF' as capitalized"; + variant "text 'sAG' as capitalized"; + variant "text 'sAH' as capitalized"; + variant "text 'sAI' as capitalized"; + variant "text 'sAJ' as capitalized"; + variant "text 'sAK' as capitalized"; + variant "text 'sAL' as capitalized"; + variant "text 'sAM' as capitalized"; + variant "text 'sAN' as capitalized"; + variant "text 'sAO' as capitalized"; + variant "text 'sAP' as capitalized"; + variant "text 'sAQ' as capitalized"; + variant "text 'sAR' as capitalized"; + variant "text 'sAS' as capitalized"; + variant "text 'sAU' as capitalized"; + variant "text 'sAV' as capitalized"; + variant "text 'sAW' as capitalized"; + variant "text 'sAX' as capitalized"; + variant "text 'sAY' as capitalized"; + variant "text 'sAZ' as capitalized"; + variant "text 'sBA' as capitalized"; + variant "text 'sBB' as capitalized"; + variant "text 'sBC' as capitalized"; + variant "text 'sBD' as capitalized"; + variant "text 'sBE' as capitalized"; + variant "text 'sBF' as capitalized"; + variant "text 'sBG' as capitalized"; + variant "text 'sBH' as capitalized"; + variant "text 'sBI' as capitalized"; + variant "text 'sBJ' as capitalized"; + variant "text 'sBK' as capitalized"; + variant "text 'sBL' as capitalized"; + variant "text 'sBM' as capitalized"; + variant "text 'sBN' as capitalized"; + variant "text 'sBO' as capitalized"; + variant "text 'sBP' as capitalized"; + variant "text 'sBQ' as capitalized"; + variant "text 'sBR' as capitalized"; + variant "text 'sBS' as capitalized"; + variant "text 'sBU' as capitalized"; + variant "text 'sBV' as capitalized"; + variant "text 'sBW' as capitalized"; + variant "text 'sBX' as capitalized"; + variant "text 'sBY' as capitalized"; + variant "text 'sBZ' as capitalized"; + variant "text 'sCA' as capitalized"; + variant "text 'sCB' as capitalized"; + variant "text 'sCC' as capitalized"; + variant "text 'sCD' as capitalized"; + variant "text 'sCE' as capitalized"; + variant "text 'sCF' as capitalized"; + variant "text 'sCG' as capitalized"; + variant "text 'sCH' as capitalized"; + variant "text 'sCJ' as capitalized"; + variant "text 'sCK' as capitalized"; + variant "text 'sCL' as capitalized"; + variant "text 'sCM' as capitalized"; + variant "text 'sCN' as capitalized"; + variant "text 'sCO' as capitalized"; + variant "text 'sCP' as capitalized"; + variant "text 'sCQ' as capitalized"; + variant "text 'sCR' as capitalized"; + variant "text 'sCS' as capitalized"; + variant "text 'sCT' as capitalized"; + variant "text 'sCU' as capitalized"; + variant "text 'sCV' as capitalized"; + variant "text 'sCW' as capitalized"; + variant "text 'sCX' as capitalized"; + variant "text 'sCY' as capitalized"; + variant "text 'sCZ' as capitalized"; + variant "text 'sDA' as capitalized"; + variant "text 'sDB' as capitalized"; + variant "text 'sDC' as capitalized"; + variant "text 'sDD' as capitalized"; + variant "text 'sDE' as capitalized"; + variant "text 'sDF' as capitalized"; + variant "text 'sDG' as capitalized"; + variant "text 'sDH' as capitalized"; + variant "text 'sDI' as capitalized"; + variant "text 'sDJ' as capitalized"; + variant "text 'sDK' as capitalized"; + variant "text 'sDL' as capitalized"; + variant "text 'sDM' as capitalized"; + variant "text 'sDN' as capitalized"; + variant "text 'sDO' as capitalized"; + variant "text 'sDP' as capitalized"; + variant "text 'sDQ' as capitalized"; + variant "text 'sDR' as capitalized"; + variant "text 'sDS' as capitalized"; + variant "text 'sDT' as capitalized"; + variant "text 'sDU' as capitalized"; + variant "text 'sDV' as capitalized"; + variant "text 'sDW' as capitalized"; + variant "text 'sDX' as capitalized"; + variant "text 'sDY' as capitalized"; + variant "text 'sDZ' as capitalized"; + variant "text 'sEA' as capitalized"; + variant "text 'sEB' as capitalized"; + variant "text 'sEC' as capitalized"; + variant "text 'sED' as capitalized"; + variant "text 'sEE' as capitalized"; + variant "text 'sEF' as capitalized"; + variant "text 'sEG' as capitalized"; + variant "text 'sEH' as capitalized"; + variant "text 'sEI' as capitalized"; + variant "text 'sEJ' as capitalized"; + variant "text 'sEK' as capitalized"; + variant "text 'sEL' as capitalized"; + variant "text 'sEM' as capitalized"; + variant "text 'sEN' as capitalized"; + variant "text 'sEO' as capitalized"; + variant "text 'sEP' as capitalized"; + variant "text 'sEQ' as capitalized"; + variant "text 'sER' as capitalized"; + variant "text 'sES' as capitalized"; + variant "text 'sET' as capitalized"; + variant "text 'sEU' as capitalized"; + variant "text 'sEV' as capitalized"; + variant "text 'sEW' as capitalized"; + variant "text 'sEX' as capitalized"; + variant "text 'sEY' as capitalized"; + variant "text 'sEZ' as capitalized"; + variant "text 'sFA' as capitalized"; + variant "text 'sFB' as capitalized"; + variant "text 'sFC' as capitalized"; + variant "text 'sFD' as capitalized"; + variant "text 'sFE' as capitalized"; + variant "text 'sFF' as capitalized"; + variant "text 'sFG' as capitalized"; + variant "text 'sFH' as capitalized"; + variant "text 'sFI' as capitalized"; + variant "text 'sFJ' as capitalized"; + variant "text 'sFK' as capitalized"; + variant "text 'sFL' as capitalized"; + variant "text 'sFM' as capitalized"; + variant "text 'sFN' as capitalized"; + variant "text 'sFO' as capitalized"; + variant "text 'sFP' as capitalized"; + variant "text 'sFQ' as capitalized"; + variant "text 'sFR' as capitalized"; + variant "text 'sFS' as capitalized"; + variant "text 'sFT' as capitalized"; + variant "text 'sFU' as capitalized"; + variant "text 'sFV' as capitalized"; + variant "text 'sFW' as capitalized"; + variant "text 'sFX' as capitalized"; + variant "text 'sFY' as capitalized"; + variant "text 'sFZ' as capitalized"; + variant "text 'sGA' as capitalized"; + variant "text 'sGB' as capitalized"; + variant "text 'sGC' as capitalized"; + variant "text 'sGD' as capitalized"; + variant "text 'sGE' as capitalized"; + variant "text 'sGF' as capitalized"; + variant "text 'sGG' as capitalized"; + variant "text 'sGH' as capitalized"; + variant "text 'sGI' as capitalized"; + variant "text 'sGJ' as capitalized"; + variant "text 'sGK' as capitalized"; + variant "text 'sGL' as capitalized"; + variant "text 'sGM' as capitalized"; + variant "text 'sGN' as capitalized"; + variant "text 'sGO' as capitalized"; + variant "text 'sGP' as capitalized"; + variant "text 'sGQ' as capitalized"; + variant "text 'sGR' as capitalized"; + variant "text 'sGS' as capitalized"; + variant "text 'sGT' as capitalized"; + variant "text 'sGU' as capitalized"; + variant "text 'sGV' as capitalized"; + variant "text 'sGW' as capitalized"; + variant "text 'sGX' as capitalized"; + variant "text 'sGY' as capitalized"; + variant "text 'sGZ' as capitalized"; + variant "text 'sHA' as capitalized"; + variant "text 'sHB' as capitalized"; + variant "text 'sHC' as capitalized"; + variant "text 'sHD' as capitalized"; + variant "text 'sHE' as capitalized"; + variant "text 'sHF' as capitalized"; + variant "text 'sHG' as capitalized"; + variant "text 'sHH' as capitalized"; + variant "text 'sHI' as capitalized"; + variant "text 'sHJ' as capitalized"; + variant "text 'sHL' as capitalized"; + variant "text 'sHM' as capitalized"; + variant "text 'sHN' as capitalized"; + variant "text 'sHO' as capitalized"; + variant "text 'sHP' as capitalized"; + variant "text 'sHQ' as capitalized"; + variant "text 'sHR' as capitalized"; + variant "text 'sHS' as capitalized"; + variant "text 'sHU' as capitalized"; + variant "text 'sHV' as capitalized"; + variant "text 'sHW' as capitalized"; + variant "text 'sHX' as capitalized"; + variant "text 'sHY' as capitalized"; + variant "text 'sHZ' as capitalized"; + variant "text 'sIA' as capitalized"; + variant "text 'sIB' as capitalized"; + variant "text 'sIC' as capitalized"; + variant "text 'sID' as capitalized"; + variant "text 'sIE' as capitalized"; + variant "text 'sIF' as capitalized"; + variant "text 'sIG' as capitalized"; + variant "text 'sIH' as capitalized"; + variant "text 'sII' as capitalized"; + variant "text 'sIJ' as capitalized"; + variant "text 'sIK' as capitalized"; + variant "text 'sIL' as capitalized"; + variant "text 'sIM' as capitalized"; + variant "text 'sIN' as capitalized"; + variant "text 'sIO' as capitalized"; + variant "text 'sIP' as capitalized"; + variant "text 'sIQ' as capitalized"; + variant "text 'sIT' as capitalized"; + variant "text 'sIU' as capitalized"; + variant "text 'sIV' as capitalized"; + variant "text 'sIW' as capitalized"; + variant "text 'sIX' as capitalized"; + variant "text 'sIY' as capitalized"; + variant "text 'sIZ' as capitalized"; + variant "text 'sJA' as capitalized"; + variant "text 'sJB' as capitalized"; + variant "text 'sJC' as capitalized"; + variant "text 'sJD' as capitalized"; + variant "text 'sJE' as capitalized"; + variant "text 'sJF' as capitalized"; + variant "text 'sJG' as capitalized"; + variant "text 'sJH' as capitalized"; + variant "text 'sJI' as capitalized"; + variant "text 'sJJ' as capitalized"; + variant "text 'sJK' as capitalized"; + variant "text 'sJL' as capitalized"; + variant "text 'sJM' as capitalized"; + variant "text 'sJN' as capitalized"; + variant "text 'sJO' as capitalized"; + variant "text 'sJP' as capitalized"; + variant "text 'sJQ' as capitalized"; + variant "text 'sJR' as capitalized"; + variant "text 'sJS' as capitalized"; + variant "text 'sJT' as capitalized"; + variant "text 'sJU' as capitalized"; + variant "text 'sJV' as capitalized"; + variant "text 'sJW' as capitalized"; + variant "text 'sJX' as capitalized"; + variant "text 'sJY' as capitalized"; + variant "text 'sJZ' as capitalized"; + variant "text 'sKA' as capitalized"; + variant "text 'sKB' as capitalized"; + variant "text 'sKC' as capitalized"; + variant "text 'sKD' as capitalized"; + variant "text 'sKE' as capitalized"; + variant "text 'sKF' as capitalized"; + variant "text 'sKG' as capitalized"; + variant "text 'sKH' as capitalized"; + variant "text 'sKI' as capitalized"; + variant "text 'sKJ' as capitalized"; + variant "text 'sKK' as capitalized"; + variant "text 'sKL' as capitalized"; + variant "text 'sKM' as capitalized"; + variant "text 'sKN' as capitalized"; + variant "text 'sKO' as capitalized"; + variant "text 'sKP' as capitalized"; + variant "text 'sKQ' as capitalized"; + variant "text 'sKS' as capitalized"; + variant "text 'sKT' as capitalized"; + variant "text 'sKU' as capitalized"; + variant "text 'sKV' as capitalized"; + variant "text 'sKW' as capitalized"; + variant "text 'sKX' as capitalized"; + variant "text 'sKY' as capitalized"; + variant "text 'sLA' as capitalized"; + variant "text 'sLB' as capitalized"; + variant "text 'sLC' as capitalized"; + variant "text 'sLD' as capitalized"; + variant "text 'sLE' as capitalized"; + variant "text 'sLF' as capitalized"; + variant "text 'sLG' as capitalized"; + variant "text 'sLH' as capitalized"; + variant "text 'sLI' as capitalized"; + variant "text 'sLJ' as capitalized"; + variant "text 'sLK' as capitalized"; + variant "text 'sLL' as capitalized"; + variant "text 'sLM' as capitalized"; + variant "text 'sLN' as capitalized"; + variant "text 'sLO' as capitalized"; + variant "text 'sLP' as capitalized"; + variant "text 'sLQ' as capitalized"; + variant "text 'sLR' as capitalized"; + variant "text 'sLS' as capitalized"; + variant "text 'sLT' as capitalized"; + variant "text 'sLU' as capitalized"; + variant "text 'sLV' as capitalized"; + variant "text 'sLW' as capitalized"; + variant "text 'sLX' as capitalized"; + variant "text 'sLY' as capitalized"; + variant "text 'sLZ' as capitalized"; + variant "text 'sMA' as capitalized"; + variant "text 'sMB' as capitalized"; + variant "text 'sMC' as capitalized"; + variant "text 'sMD' as capitalized"; + variant "text 'sME' as capitalized"; + variant "text 'sMG' as capitalized"; + variant "text 'sMH' as capitalized"; + variant "text 'sMJ' as capitalized"; + variant "text 'sMK' as capitalized"; + variant "text 'sML' as capitalized"; + variant "text 'sMM' as capitalized"; + variant "text 'sMN' as capitalized"; + variant "text 'sMO' as capitalized"; + variant "text 'sMP' as capitalized"; + variant "text 'sMQ' as capitalized"; + variant "text 'sMR' as capitalized"; + variant "text 'sMS' as capitalized"; + variant "text 'sMU' as capitalized"; + variant "text 'sMV' as capitalized"; + variant "text 'sMW' as capitalized"; + variant "text 'sMX' as capitalized"; + variant "text 'sMY' as capitalized"; + variant "text 'sMZ' as capitalized"; + variant "text 'sNA' as capitalized"; + variant "text 'sNB' as capitalized"; + variant "text 'sNC' as capitalized"; + variant "text 'sND' as capitalized"; + variant "text 'sNE' as capitalized"; + variant "text 'sNF' as capitalized"; + variant "text 'sNG' as capitalized"; + variant "text 'sNH' as capitalized"; + variant "text 'sNI' as capitalized"; + variant "text 'sNJ' as capitalized"; + variant "text 'sNK' as capitalized"; + variant "text 'sNL' as capitalized"; + variant "text 'sNM' as capitalized"; + variant "text 'sNN' as capitalized"; + variant "text 'sNO' as capitalized"; + variant "text 'sNP' as capitalized"; + variant "text 'sNQ' as capitalized"; + variant "text 'sNR' as capitalized"; + variant "text 'sNS' as capitalized"; + variant "text 'sNT' as capitalized"; + variant "text 'sNU' as capitalized"; + variant "text 'sNV' as capitalized"; + variant "text 'sNW' as capitalized"; + variant "text 'sNX' as capitalized"; + variant "text 'sNY' as capitalized"; + variant "text 'sNZ' as capitalized"; + variant "text 'sOA' as capitalized"; + variant "text 'sOB' as capitalized"; + variant "text 'sOC' as capitalized"; + variant "text 'sOD' as capitalized"; + variant "text 'sOE' as capitalized"; + variant "text 'sOF' as capitalized"; + variant "text 'sOG' as capitalized"; + variant "text 'sOH' as capitalized"; + variant "text 'sOI' as capitalized"; + variant "text 'sOJ' as capitalized"; + variant "text 'sOK' as capitalized"; + variant "text 'sOL' as capitalized"; + variant "text 'sOM' as capitalized"; + variant "text 'sON' as capitalized"; + variant "text 'sOO' as capitalized"; + variant "text 'sOP' as capitalized"; + variant "text 'sOQ' as capitalized"; + variant "text 'sOR' as capitalized"; + variant "text 'sOS' as capitalized"; + variant "text 'sOT' as capitalized"; + variant "text 'sOU' as capitalized"; + variant "text 'sOV' as capitalized"; + variant "text 'sOW' as capitalized"; + variant "text 'sOX' as capitalized"; + variant "text 'sOY' as capitalized"; + variant "text 'sOZ' as capitalized"; + variant "text 'sPA' as capitalized"; + variant "text 'sPC' as capitalized"; + variant "text 'sPD' as capitalized"; + variant "text 'sPE' as capitalized"; + variant "text 'sPF' as capitalized"; + variant "text 'sPG' as capitalized"; + variant "text 'sPH' as capitalized"; + variant "text 'sPI' as capitalized"; + variant "text 'sPJ' as capitalized"; + variant "text 'sPK' as capitalized"; + variant "text 'sPL' as capitalized"; + variant "text 'sPN' as capitalized"; + variant "text 'sPO' as capitalized"; + variant "text 'sPP' as capitalized"; + variant "text 'sPQ' as capitalized"; + variant "text 'sPR' as capitalized"; + variant "text 'sPS' as capitalized"; + variant "text 'sPT' as capitalized"; + variant "text 'sPU' as capitalized"; + variant "text 'sPV' as capitalized"; + variant "text 'sPW' as capitalized"; + variant "text 'sPX' as capitalized"; + variant "text 'sPY' as capitalized"; + variant "text 'sPZ' as capitalized"; + variant "text 'sQA' as capitalized"; + variant "text 'sQB' as capitalized"; + variant "text 'sQC' as capitalized"; + variant "text 'sQD' as capitalized"; + variant "text 'sQE' as capitalized"; + variant "text 'sQF' as capitalized"; + variant "text 'sQG' as capitalized"; + variant "text 'sQH' as capitalized"; + variant "text 'sQI' as capitalized"; + variant "text 'sQJ' as capitalized"; + variant "text 'sQK' as capitalized"; + variant "text 'sQL' as capitalized"; + variant "text 'sQM' as capitalized"; + variant "text 'sQO' as capitalized"; + variant "text 'sQP' as capitalized"; + variant "text 'sQR' as capitalized"; + variant "text 'sQS' as capitalized"; + variant "text 'sQT' as capitalized"; + variant "text 'sQU' as capitalized"; + variant "text 'sQV' as capitalized"; + variant "text 'sQW' as capitalized"; + variant "text 'sQY' as capitalized"; + variant "text 'sQZ' as capitalized"; + variant "text 'sRA' as capitalized"; + variant "text 'sRB' as capitalized"; + variant "text 'sRC' as capitalized"; + variant "text 'sRD' as capitalized"; + variant "text 'sRE' as capitalized"; + variant "text 'sRF' as capitalized"; + variant "text 'sRG' as capitalized"; + variant "text 'sRH' as capitalized"; + variant "text 'sRI' as capitalized"; + variant "text 'sRJ' as capitalized"; + variant "text 'sRK' as capitalized"; + variant "text 'sRL' as capitalized"; + variant "text 'sRM' as capitalized"; + variant "text 'sRN' as capitalized"; + variant "text 'sRO' as capitalized"; + variant "text 'sRP' as capitalized"; + variant "text 'sRQ' as capitalized"; + variant "text 'sRR' as capitalized"; + variant "text 'sRS' as capitalized"; + variant "text 'sRT' as capitalized"; + variant "text 'sRU' as capitalized"; + variant "text 'sRV' as capitalized"; + variant "text 'sRW' as capitalized"; + variant "text 'sRX' as capitalized"; + variant "text 'sRY' as capitalized"; + variant "text 'sRZ' as capitalized"; + variant "text 'sSA' as capitalized"; + variant "text 'sSB' as capitalized"; + variant "text 'sSC' as capitalized"; + variant "text 'sSD' as capitalized"; + variant "text 'sSE' as capitalized"; + variant "text 'sSF' as capitalized"; + variant "text 'sSG' as capitalized"; + variant "text 'sSH' as capitalized"; + variant "text 'sSI' as capitalized"; + variant "text 'sSJ' as capitalized"; + variant "text 'sSK' as capitalized"; + variant "text 'sSL' as capitalized"; + variant "text 'sSM' as capitalized"; + variant "text 'sSN' as capitalized"; + variant "text 'sSO' as capitalized"; + variant "text 'sSP' as capitalized"; + variant "text 'sSQ' as capitalized"; + variant "text 'sSR' as capitalized"; + variant "text 'sSS' as capitalized"; + variant "text 'sST' as capitalized"; + variant "text 'sSU' as capitalized"; + variant "text 'sSV' as capitalized"; + variant "text 'sSW' as capitalized"; + variant "text 'sSX' as capitalized"; + variant "text 'sSZ' as capitalized"; + variant "text 'sTA' as capitalized"; + variant "text 'sTB' as capitalized"; + variant "text 'sTC' as capitalized"; + variant "text 'sTD' as capitalized"; + variant "text 'sTF' as capitalized"; + variant "text 'sTG' as capitalized"; + variant "text 'sTH' as capitalized"; + variant "text 'sTI' as capitalized"; + variant "text 'sTJ' as capitalized"; + variant "text 'sTK' as capitalized"; + variant "text 'sTL' as capitalized"; + variant "text 'sTM' as capitalized"; + variant "text 'sTO' as capitalized"; + variant "text 'sTP' as capitalized"; + variant "text 'sTQ' as capitalized"; + variant "text 'sTS' as capitalized"; + variant "text 'sTT' as capitalized"; + variant "text 'sTU' as capitalized"; + variant "text 'sTV' as capitalized"; + variant "text 'sTW' as capitalized"; + variant "text 'sTX' as capitalized"; + variant "text 'sTY' as capitalized"; + variant "text 'sTZ' as capitalized"; + variant "text 'sUA' as capitalized"; + variant "text 'sUB' as capitalized"; + variant "text 'sUC' as capitalized"; + variant "text 'sUD' as capitalized"; + variant "text 'sUE' as capitalized"; + variant "text 'sUF' as capitalized"; + variant "text 'sUG' as capitalized"; + variant "text 'sUH' as capitalized"; + variant "text 'sUI' as capitalized"; + variant "text 'sUJ' as capitalized"; + variant "text 'sUK' as capitalized"; + variant "text 'sUL' as capitalized"; + variant "text 'sUM' as capitalized"; + variant "text 'sUN' as capitalized"; + variant "text 'sUO' as capitalized"; + variant "text 'sUP' as capitalized"; + variant "text 'sUQ' as capitalized"; + variant "text 'sUR' as capitalized"; + variant "text 'sUS' as capitalized"; + variant "text 'sUT' as capitalized"; + variant "text 'sUU' as capitalized"; + variant "text 'sUV' as capitalized"; + variant "text 'sUW' as capitalized"; + variant "text 'sUX' as capitalized"; + variant "text 'sUY' as capitalized"; + variant "text 'sUZ' as capitalized"; + variant "text 'sVA' as capitalized"; + variant "text 'sVB' as capitalized"; + variant "text 'sVC' as capitalized"; + variant "text 'sVD' as capitalized"; + variant "text 'sVE' as capitalized"; + variant "text 'sVF' as capitalized"; + variant "text 'sVG' as capitalized"; + variant "text 'sVH' as capitalized"; + variant "text 'sVI' as capitalized"; + variant "text 'sVJ' as capitalized"; + variant "text 'sVK' as capitalized"; + variant "text 'sVL' as capitalized"; + variant "text 'sVM' as capitalized"; + variant "text 'sVN' as capitalized"; + variant "text 'sVO' as capitalized"; + variant "text 'sVP' as capitalized"; + variant "text 'sVR' as capitalized"; + variant "text 'sVS' as capitalized"; + variant "text 'sVT' as capitalized"; + variant "text 'sVU' as capitalized"; + variant "text 'sVV' as capitalized"; + variant "text 'sVW' as capitalized"; + variant "text 'sVX' as capitalized"; + variant "text 'sVY' as capitalized"; + variant "text 'sVZ' as capitalized"; + variant "text 'sWA' as capitalized"; + variant "text 'sWB' as capitalized"; + variant "text 'sWC' as capitalized"; + variant "text 'sWD' as capitalized"; + variant "text 'sWE' as capitalized"; + variant "text 'sWF' as capitalized"; + variant "text 'sWG' as capitalized"; + variant "text 'sWH' as capitalized"; + variant "text 'sWI' as capitalized"; + variant "text 'sWJ' as capitalized"; + variant "text 'sWK' as capitalized"; + variant "text 'sWL' as capitalized"; + variant "text 'sWM' as capitalized"; + variant "text 'sWN' as capitalized"; + variant "text 'sWO' as capitalized"; + variant "text 'sWP' as capitalized"; + variant "text 'sWQ' as capitalized"; + variant "text 'sWR' as capitalized"; + variant "text 'sWS' as capitalized"; + variant "text 'sWT' as capitalized"; + variant "text 'sWU' as capitalized"; + variant "text 'sWV' as capitalized"; + variant "text 'sWW' as capitalized"; + variant "text 'sWX' as capitalized"; + variant "text 'sWY' as capitalized"; + variant "text 'sWZ' as capitalized"; + variant "text 'sXA' as capitalized"; + variant "text 'sXB' as capitalized"; + variant "text 'sXC' as capitalized"; + variant "text 'sXD' as capitalized"; + variant "text 'sXE' as capitalized"; + variant "text 'sXF' as capitalized"; + variant "text 'sXG' as capitalized"; + variant "text 'sXH' as capitalized"; + variant "text 'sXI' as capitalized"; + variant "text 'sXJ' as capitalized"; + variant "text 'sXL' as capitalized"; + variant "text 'sXM' as capitalized"; + variant "text 'sXN' as capitalized"; + variant "text 'sXO' as capitalized"; + variant "text 'sXP' as capitalized"; + variant "text 'sXQ' as capitalized"; + variant "text 'sXR' as capitalized"; + variant "text 'sXS' as capitalized"; + variant "text 'sXT' as capitalized"; + variant "text 'sXU' as capitalized"; + variant "text 'sXW' as capitalized"; + variant "text 'sXX' as capitalized"; + variant "text 'sXY' as capitalized"; + variant "text 'sXZ' as capitalized"; + variant "text 'sYA' as capitalized"; + variant "text 'sYB' as capitalized"; + variant "text 'sYC' as capitalized"; + variant "text 'sYD' as capitalized"; + variant "text 'sYE' as capitalized"; + variant "text 'sYF' as capitalized"; + variant "text 'sYG' as capitalized"; + variant "text 'sYH' as capitalized"; + variant "text 'sYI' as capitalized"; + variant "text 'sYJ' as capitalized"; + variant "text 'sYK' as capitalized"; + variant "text 'sYL' as capitalized"; + variant "text 'sYM' as capitalized"; + variant "text 'sYN' as capitalized"; + variant "text 'sYO' as capitalized"; + variant "text 'sYP' as capitalized"; + variant "text 'sYQ' as capitalized"; + variant "text 'sYR' as capitalized"; + variant "text 'sYS' as capitalized"; + variant "text 'sYT' as capitalized"; + variant "text 'sYU' as capitalized"; + variant "text 'sYV' as capitalized"; + variant "text 'sYW' as capitalized"; + variant "text 'sYX' as capitalized"; + variant "text 'sYY' as capitalized"; + variant "text 'sYZ' as capitalized"; + variant "text 'sZA' as capitalized"; + variant "text 'sZB' as capitalized"; + variant "text 'sZC' as capitalized"; + variant "text 'sZD' as capitalized"; + variant "text 'sZE' as capitalized"; + variant "text 'sZF' as capitalized"; + variant "text 'sZG' as capitalized"; + variant "text 'sZH' as capitalized"; + variant "text 'sZI' as capitalized"; + variant "text 'sZJ' as capitalized"; + variant "text 'sZK' as capitalized"; + variant "text 'sZL' as capitalized"; + variant "text 'sZM' as capitalized"; + variant "text 'sZN' as capitalized"; + variant "text 'sZO' as capitalized"; + variant "text 'sZP' as capitalized"; + variant "text 'sZQ' as capitalized"; + variant "text 'sZR' as capitalized"; + variant "text 'sZS' as capitalized"; + variant "text 'sZT' as capitalized"; + variant "text 'sZU' as capitalized"; + variant "text 'sZV' as capitalized"; + variant "text 'sZW' as capitalized"; + variant "text 'sZX' as capitalized"; + variant "text 'sZY' as capitalized"; + variant "text 'sZZ' as capitalized"; + variant "text 'tAA' as capitalized"; + variant "text 'tAB' as capitalized"; + variant "text 'tAC' as capitalized"; + variant "text 'tAD' as capitalized"; + variant "text 'tAE' as capitalized"; + variant "text 'tAF' as capitalized"; + variant "text 'tAG' as capitalized"; + variant "text 'tAH' as capitalized"; + variant "text 'tAI' as capitalized"; + variant "text 'tAJ' as capitalized"; + variant "text 'tAK' as capitalized"; + variant "text 'tAL' as capitalized"; + variant "text 'tAM' as capitalized"; + variant "text 'tAN' as capitalized"; + variant "text 'tAO' as capitalized"; + variant "text 'tAP' as capitalized"; + variant "text 'tAQ' as capitalized"; + variant "text 'tAR' as capitalized"; + variant "text 'tAS' as capitalized"; + variant "text 'tAT' as capitalized"; + variant "text 'tAU' as capitalized"; + variant "text 'tAV' as capitalized"; + variant "text 'tAW' as capitalized"; + variant "text 'tAX' as capitalized"; + variant "text 'tAY' as capitalized"; + variant "text 'tAZ' as capitalized"; + variant "text 'tBA' as capitalized"; + variant "text 'tBB' as capitalized"; + variant "text 'tBC' as capitalized"; + variant "text 'tBD' as capitalized"; + variant "text 'tBE' as capitalized"; + variant "text 'tBF' as capitalized"; + variant "text 'tBG' as capitalized"; + variant "text 'tBH' as capitalized"; + variant "text 'tBI' as capitalized"; + variant "text 'tBJ' as capitalized"; + variant "text 'tBK' as capitalized"; + variant "text 'tBL' as capitalized"; + variant "text 'tBM' as capitalized"; + variant "text 'tBN' as capitalized"; + variant "text 'tBO' as capitalized"; + variant "text 'tBP' as capitalized"; + variant "text 'tBQ' as capitalized"; + variant "text 'tBR' as capitalized"; + variant "text 'tBS' as capitalized"; + variant "text 'tBT' as capitalized"; + variant "text 'tBU' as capitalized"; + variant "text 'tBV' as capitalized"; + variant "text 'tBW' as capitalized"; + variant "text 'tBX' as capitalized"; + variant "text 'tBY' as capitalized"; + variant "text 'tCA' as capitalized"; + variant "text 'tCB' as capitalized"; + variant "text 'tCC' as capitalized"; + variant "text 'tCD' as capitalized"; + variant "text 'tCE' as capitalized"; + variant "text 'tCF' as capitalized"; + variant "text 'tCG' as capitalized"; + variant "text 'tCH' as capitalized"; + variant "text 'tCI' as capitalized"; + variant "text 'tCJ' as capitalized"; + variant "text 'tCK' as capitalized"; + variant "text 'tCL' as capitalized"; + variant "text 'tCM' as capitalized"; + variant "text 'tCN' as capitalized"; + variant "text 'tCO' as capitalized"; + variant "text 'tCP' as capitalized"; + variant "text 'tCQ' as capitalized"; + variant "text 'tCR' as capitalized"; + variant "text 'tCS' as capitalized"; + variant "text 'tCT' as capitalized"; + variant "text 'tCU' as capitalized"; + variant "text 'tCV' as capitalized"; + variant "text 'tCW' as capitalized"; + variant "text 'tCX' as capitalized"; + variant "text 'tCY' as capitalized"; + variant "text 'tCZ' as capitalized"; + variant "text 'tDA' as capitalized"; + variant "text 'tDB' as capitalized"; + variant "text 'tDC' as capitalized"; + variant "text 'tDD' as capitalized"; + variant "text 'tDE' as capitalized"; + variant "text 'tDF' as capitalized"; + variant "text 'tDG' as capitalized"; + variant "text 'tDH' as capitalized"; + variant "text 'tDI' as capitalized"; + variant "text 'tDJ' as capitalized"; + variant "text 'tDK' as capitalized"; + variant "text 'tDL' as capitalized"; + variant "text 'tDM' as capitalized"; + variant "text 'tDN' as capitalized"; + variant "text 'tDO' as capitalized"; + variant "text 'tDP' as capitalized"; + variant "text 'tDQ' as capitalized"; + variant "text 'tDR' as capitalized"; + variant "text 'tDS' as capitalized"; + variant "text 'tDT' as capitalized"; + variant "text 'tDU' as capitalized"; + variant "text 'tDV' as capitalized"; + variant "text 'tDW' as capitalized"; + variant "text 'tDX' as capitalized"; + variant "text 'tDY' as capitalized"; + variant "text 'tDZ' as capitalized"; + variant "text 'tEA' as capitalized"; + variant "text 'tEB' as capitalized"; + variant "text 'tEC' as capitalized"; + variant "text 'tED' as capitalized"; + variant "text 'tEE' as capitalized"; + variant "text 'tEF' as capitalized"; + variant "text 'tEG' as capitalized"; + variant "text 'tEH' as capitalized"; + variant "text 'tEI' as capitalized"; + variant "text 'tEJ' as capitalized"; + variant "text 'tEK' as capitalized"; + variant "text 'tEL' as capitalized"; + variant "text 'tEM' as capitalized"; + variant "text 'tEN' as capitalized"; + variant "text 'tEO' as capitalized"; + variant "text 'tEP' as capitalized"; + variant "text 'tEQ' as capitalized"; + variant "text 'tES' as capitalized"; + variant "text 'tET' as capitalized"; + variant "text 'tEU' as capitalized"; + variant "text 'tEV' as capitalized"; + variant "text 'tEW' as capitalized"; + variant "text 'tEX' as capitalized"; + variant "text 'tEY' as capitalized"; + variant "text 'tEZ' as capitalized"; + variant "text 'tFA' as capitalized"; + variant "text 'tFB' as capitalized"; + variant "text 'tFC' as capitalized"; + variant "text 'tFD' as capitalized"; + variant "text 'tFE' as capitalized"; + variant "text 'tFF' as capitalized"; + variant "text 'tFG' as capitalized"; + variant "text 'tFH' as capitalized"; + variant "text 'tFI' as capitalized"; + variant "text 'tFJ' as capitalized"; + variant "text 'tFK' as capitalized"; + variant "text 'tFL' as capitalized"; + variant "text 'tFM' as capitalized"; + variant "text 'tFN' as capitalized"; + variant "text 'tFO' as capitalized"; + variant "text 'tFP' as capitalized"; + variant "text 'tFQ' as capitalized"; + variant "text 'tFR' as capitalized"; + variant "text 'tFS' as capitalized"; + variant "text 'tFT' as capitalized"; + variant "text 'tFU' as capitalized"; + variant "text 'tFV' as capitalized"; + variant "text 'tFW' as capitalized"; + variant "text 'tFX' as capitalized"; + variant "text 'tFY' as capitalized"; + variant "text 'tFZ' as capitalized"; + variant "text 'tGA' as capitalized"; + variant "text 'tGB' as capitalized"; + variant "text 'tGC' as capitalized"; + variant "text 'tGD' as capitalized"; + variant "text 'tGE' as capitalized"; + variant "text 'tGF' as capitalized"; + variant "text 'tGG' as capitalized"; + variant "text 'tGH' as capitalized"; + variant "text 'tGI' as capitalized"; + variant "text 'tGJ' as capitalized"; + variant "text 'tGK' as capitalized"; + variant "text 'tGL' as capitalized"; + variant "text 'tGM' as capitalized"; + variant "text 'tGN' as capitalized"; + variant "text 'tGO' as capitalized"; + variant "text 'tGP' as capitalized"; + variant "text 'tGQ' as capitalized"; + variant "text 'tGR' as capitalized"; + variant "text 'tGS' as capitalized"; + variant "text 'tGT' as capitalized"; + variant "text 'tGU' as capitalized"; + variant "text 'tGV' as capitalized"; + variant "text 'tGW' as capitalized"; + variant "text 'tGX' as capitalized"; + variant "text 'tGY' as capitalized"; + variant "text 'tGZ' as capitalized"; + variant "text 'tHA' as capitalized"; + variant "text 'tHB' as capitalized"; + variant "text 'tHD' as capitalized"; + variant "text 'tHE' as capitalized"; + variant "text 'tHF' as capitalized"; + variant "text 'tHG' as capitalized"; + variant "text 'tHH' as capitalized"; + variant "text 'tHI' as capitalized"; + variant "text 'tHJ' as capitalized"; + variant "text 'tHK' as capitalized"; + variant "text 'tHL' as capitalized"; + variant "text 'tHM' as capitalized"; + variant "text 'tHN' as capitalized"; + variant "text 'tHO' as capitalized"; + variant "text 'tHP' as capitalized"; + variant "text 'tHQ' as capitalized"; + variant "text 'tHR' as capitalized"; + variant "text 'tHS' as capitalized"; + variant "text 'tHT' as capitalized"; + variant "text 'tHU' as capitalized"; + variant "text 'tHV' as capitalized"; + variant "text 'tHW' as capitalized"; + variant "text 'tHX' as capitalized"; + variant "text 'tHY' as capitalized"; + variant "text 'tHZ' as capitalized"; + variant "text 'tIA' as capitalized"; + variant "text 'tIB' as capitalized"; + variant "text 'tIC' as capitalized"; + variant "text 'tID' as capitalized"; + variant "text 'tIE' as capitalized"; + variant "text 'tIF' as capitalized"; + variant "text 'tIG' as capitalized"; + variant "text 'tIH' as capitalized"; + variant "text 'tII' as capitalized"; + variant "text 'tIJ' as capitalized"; + variant "text 'tIK' as capitalized"; + variant "text 'tIL' as capitalized"; + variant "text 'tIM' as capitalized"; + variant "text 'tIN' as capitalized"; + variant "text 'tIO' as capitalized"; + variant "text 'tIP' as capitalized"; + variant "text 'tIQ' as capitalized"; + variant "text 'tIR' as capitalized"; + variant "text 'tIS' as capitalized"; + variant "text 'tIT' as capitalized"; + variant "text 'tIU' as capitalized"; + variant "text 'tIV' as capitalized"; + variant "text 'tIW' as capitalized"; + variant "text 'tIX' as capitalized"; + variant "text 'tIY' as capitalized"; + variant "text 'tIZ' as capitalized"; + variant "text 'tJA' as capitalized"; + variant "text 'tJB' as capitalized"; + variant "text 'tJC' as capitalized"; + variant "text 'tJD' as capitalized"; + variant "text 'tJE' as capitalized"; + variant "text 'tJF' as capitalized"; + variant "text 'tJG' as capitalized"; + variant "text 'tJH' as capitalized"; + variant "text 'tJI' as capitalized"; + variant "text 'tJJ' as capitalized"; + variant "text 'tJK' as capitalized"; + variant "text 'tJL' as capitalized"; + variant "text 'tJM' as capitalized"; + variant "text 'tJN' as capitalized"; + variant "text 'tJP' as capitalized"; + variant "text 'tJQ' as capitalized"; + variant "text 'tJR' as capitalized"; + variant "text 'tJS' as capitalized"; + variant "text 'tJT' as capitalized"; + variant "text 'tJU' as capitalized"; + variant "text 'tJV' as capitalized"; + variant "text 'tJW' as capitalized"; + variant "text 'tJX' as capitalized"; + variant "text 'tJY' as capitalized"; + variant "text 'tJZ' as capitalized"; + variant "text 'tKA' as capitalized"; + variant "text 'tKB' as capitalized"; + variant "text 'tKC' as capitalized"; + variant "text 'tKD' as capitalized"; + variant "text 'tKE' as capitalized"; + variant "text 'tKF' as capitalized"; + variant "text 'tKG' as capitalized"; + variant "text 'tKH' as capitalized"; + variant "text 'tKI' as capitalized"; + variant "text 'tKJ' as capitalized"; + variant "text 'tKK' as capitalized"; + variant "text 'tKL' as capitalized"; + variant "text 'tKM' as capitalized"; + variant "text 'tKN' as capitalized"; + variant "text 'tKO' as capitalized"; + variant "text 'tKP' as capitalized"; + variant "text 'tKQ' as capitalized"; + variant "text 'tKR' as capitalized"; + variant "text 'tKS' as capitalized"; + variant "text 'tKT' as capitalized"; + variant "text 'tKU' as capitalized"; + variant "text 'tKV' as capitalized"; + variant "text 'tKW' as capitalized"; + variant "text 'tKX' as capitalized"; + variant "text 'tKY' as capitalized"; + variant "text 'tKZ' as capitalized"; + variant "text 'tLA' as capitalized"; + variant "text 'tLC' as capitalized"; + variant "text 'tLD' as capitalized"; + variant "text 'tLE' as capitalized"; + variant "text 'tLF' as capitalized"; + variant "text 'tLG' as capitalized"; + variant "text 'tLH' as capitalized"; + variant "text 'tLI' as capitalized"; + variant "text 'tLJ' as capitalized"; + variant "text 'tLK' as capitalized"; + variant "text 'tLL' as capitalized"; + variant "text 'tLM' as capitalized"; + variant "text 'tLN' as capitalized"; + variant "text 'tLO' as capitalized"; + variant "text 'tLP' as capitalized"; + variant "text 'tLQ' as capitalized"; + variant "text 'tLR' as capitalized"; + variant "text 'tLS' as capitalized"; + variant "text 'tLT' as capitalized"; + variant "text 'tLU' as capitalized"; + variant "text 'tLV' as capitalized"; + variant "text 'tLW' as capitalized"; + variant "text 'tLX' as capitalized"; + variant "text 'tLY' as capitalized"; + variant "text 'tLZ' as capitalized"; + variant "text 'tMA' as capitalized"; + variant "text 'tMB' as capitalized"; + variant "text 'tMC' as capitalized"; + variant "text 'tMD' as capitalized"; + variant "text 'tME' as capitalized"; + variant "text 'tMF' as capitalized"; + variant "text 'tMG' as capitalized"; + variant "text 'tMI' as capitalized"; + variant "text 'tMJ' as capitalized"; + variant "text 'tMK' as capitalized"; + variant "text 'tML' as capitalized"; + variant "text 'tMM' as capitalized"; + variant "text 'tMN' as capitalized"; + variant "text 'tMO' as capitalized"; + variant "text 'tMP' as capitalized"; + variant "text 'tMQ' as capitalized"; + variant "text 'tMR' as capitalized"; + variant "text 'tMS' as capitalized"; + variant "text 'tMT' as capitalized"; + variant "text 'tMU' as capitalized"; + variant "text 'tMV' as capitalized"; + variant "text 'tMW' as capitalized"; + variant "text 'tMX' as capitalized"; + variant "text 'tMY' as capitalized"; + variant "text 'tMZ' as capitalized"; + variant "text 'tNA' as capitalized"; + variant "text 'tNB' as capitalized"; + variant "text 'tNC' as capitalized"; + variant "text 'tND' as capitalized"; + variant "text 'tNE' as capitalized"; + variant "text 'tNF' as capitalized"; + variant "text 'tNG' as capitalized"; + variant "text 'tNH' as capitalized"; + variant "text 'tNI' as capitalized"; + variant "text 'tNJ' as capitalized"; + variant "text 'tNK' as capitalized"; + variant "text 'tNL' as capitalized"; + variant "text 'tNM' as capitalized"; + variant "text 'tNN' as capitalized"; + variant "text 'tNO' as capitalized"; + variant "text 'tNP' as capitalized"; + variant "text 'tNQ' as capitalized"; + variant "text 'tNR' as capitalized"; + variant "text 'tNS' as capitalized"; + variant "text 'tNT' as capitalized"; + variant "text 'tNU' as capitalized"; + variant "text 'tNV' as capitalized"; + variant "text 'tNW' as capitalized"; + variant "text 'tNX' as capitalized"; + variant "text 'tNY' as capitalized"; + variant "text 'tNZ' as capitalized"; + variant "text 'tOA' as capitalized"; + variant "text 'tOB' as capitalized"; + variant "text 'tOC' as capitalized"; + variant "text 'tOD' as capitalized"; + variant "text 'tOE' as capitalized"; + variant "text 'tOF' as capitalized"; + variant "text 'tOG' as capitalized"; + variant "text 'tOH' as capitalized"; + variant "text 'tOI' as capitalized"; + variant "text 'tOJ' as capitalized"; + variant "text 'tOK' as capitalized"; + variant "text 'tOL' as capitalized"; + variant "text 'tOM' as capitalized"; + variant "text 'tON' as capitalized"; + variant "text 'tOO' as capitalized"; + variant "text 'tOP' as capitalized"; + variant "text 'tOQ' as capitalized"; + variant "text 'tOS' as capitalized"; + variant "text 'tOT' as capitalized"; + variant "text 'tOU' as capitalized"; + variant "text 'tOV' as capitalized"; + variant "text 'tOW' as capitalized"; + variant "text 'tOX' as capitalized"; + variant "text 'tOY' as capitalized"; + variant "text 'tOZ' as capitalized"; + variant "text 'tPA' as capitalized"; + variant "text 'tPB' as capitalized"; + variant "text 'tPC' as capitalized"; + variant "text 'tPD' as capitalized"; + variant "text 'tPE' as capitalized"; + variant "text 'tPF' as capitalized"; + variant "text 'tPG' as capitalized"; + variant "text 'tPH' as capitalized"; + variant "text 'tPI' as capitalized"; + variant "text 'tPK' as capitalized"; + variant "text 'tPL' as capitalized"; + variant "text 'tPM' as capitalized"; + variant "text 'tPN' as capitalized"; + variant "text 'tPO' as capitalized"; + variant "text 'tPP' as capitalized"; + variant "text 'tPQ' as capitalized"; + variant "text 'tPR' as capitalized"; + variant "text 'tPS' as capitalized"; + variant "text 'tPT' as capitalized"; + variant "text 'tPU' as capitalized"; + variant "text 'tPV' as capitalized"; + variant "text 'tPW' as capitalized"; + variant "text 'tPX' as capitalized"; + variant "text 'tPY' as capitalized"; + variant "text 'tQA' as capitalized"; + variant "text 'tQB' as capitalized"; + variant "text 'tQC' as capitalized"; + variant "text 'tQD' as capitalized"; + variant "text 'tQE' as capitalized"; + variant "text 'tQF' as capitalized"; + variant "text 'tQG' as capitalized"; + variant "text 'tQH' as capitalized"; + variant "text 'tQI' as capitalized"; + variant "text 'tQJ' as capitalized"; + variant "text 'tQK' as capitalized"; + variant "text 'tQL' as capitalized"; + variant "text 'tQM' as capitalized"; + variant "text 'tQN' as capitalized"; + variant "text 'tQO' as capitalized"; + variant "text 'tQP' as capitalized"; + variant "text 'tQQ' as capitalized"; + variant "text 'tQR' as capitalized"; + variant "text 'tQS' as capitalized"; + variant "text 'tQT' as capitalized"; + variant "text 'tQU' as capitalized"; + variant "text 'tQV' as capitalized"; + variant "text 'tQW' as capitalized"; + variant "text 'tQX' as capitalized"; + variant "text 'tQY' as capitalized"; + variant "text 'tQZ' as capitalized"; + variant "text 'tRA' as capitalized"; + variant "text 'tRB' as capitalized"; + variant "text 'tRC' as capitalized"; + variant "text 'tRD' as capitalized"; + variant "text 'tRE' as capitalized"; + variant "text 'tRF' as capitalized"; + variant "text 'tRG' as capitalized"; + variant "text 'tRH' as capitalized"; + variant "text 'tRI' as capitalized"; + variant "text 'tRK' as capitalized"; + variant "text 'tRL' as capitalized"; + variant "text 'tRM' as capitalized"; + variant "text 'tRN' as capitalized"; + variant "text 'tRO' as capitalized"; + variant "text 'tRP' as capitalized"; + variant "text 'tRQ' as capitalized"; + variant "text 'tRR' as capitalized"; + variant "text 'tRS' as capitalized"; + variant "text 'tRT' as capitalized"; + variant "text 'tRU' as capitalized"; + variant "text 'tRV' as capitalized"; + variant "text 'tRW' as capitalized"; + variant "text 'tRX' as capitalized"; + variant "text 'tRY' as capitalized"; + variant "text 'tRZ' as capitalized"; + variant "text 'tSA' as capitalized"; + variant "text 'tSB' as capitalized"; + variant "text 'tSC' as capitalized"; + variant "text 'tSD' as capitalized"; + variant "text 'tSE' as capitalized"; + variant "text 'tSF' as capitalized"; + variant "text 'tSG' as capitalized"; + variant "text 'tSH' as capitalized"; + variant "text 'tSI' as capitalized"; + variant "text 'tSJ' as capitalized"; + variant "text 'tSK' as capitalized"; + variant "text 'tSL' as capitalized"; + variant "text 'tSM' as capitalized"; + variant "text 'tSN' as capitalized"; + variant "text 'tSO' as capitalized"; + variant "text 'tSP' as capitalized"; + variant "text 'tSQ' as capitalized"; + variant "text 'tSR' as capitalized"; + variant "text 'tSS' as capitalized"; + variant "text 'tST' as capitalized"; + variant "text 'tSU' as capitalized"; + variant "text 'tSV' as capitalized"; + variant "text 'tSW' as capitalized"; + variant "text 'tSX' as capitalized"; + variant "text 'tSY' as capitalized"; + variant "text 'tTA' as capitalized"; + variant "text 'tTB' as capitalized"; + variant "text 'tTC' as capitalized"; + variant "text 'tTD' as capitalized"; + variant "text 'tTE' as capitalized"; + variant "text 'tTF' as capitalized"; + variant "text 'tTG' as capitalized"; + variant "text 'tTH' as capitalized"; + variant "text 'tTI' as capitalized"; + variant "text 'tTJ' as capitalized"; + variant "text 'tTK' as capitalized"; + variant "text 'tTL' as capitalized"; + variant "text 'tTM' as capitalized"; + variant "text 'tTN' as capitalized"; + variant "text 'tTO' as capitalized"; + variant "text 'tTP' as capitalized"; + variant "text 'tTQ' as capitalized"; + variant "text 'tTR' as capitalized"; + variant "text 'tTS' as capitalized"; + variant "text 'tTT' as capitalized"; + variant "text 'tTU' as capitalized"; + variant "text 'tTV' as capitalized"; + variant "text 'tTW' as capitalized"; + variant "text 'tTX' as capitalized"; + variant "text 'tTY' as capitalized"; + variant "text 'tTZ' as capitalized"; + variant "text 'tUA' as capitalized"; + variant "text 'tUC' as capitalized"; + variant "text 'tUD' as capitalized"; + variant "text 'tUE' as capitalized"; + variant "text 'tUF' as capitalized"; + variant "text 'tUG' as capitalized"; + variant "text 'tUH' as capitalized"; + variant "text 'tUI' as capitalized"; + variant "text 'tUJ' as capitalized"; + variant "text 'tUK' as capitalized"; + variant "text 'tUL' as capitalized"; + variant "text 'tUM' as capitalized"; + variant "text 'tUN' as capitalized"; + variant "text 'tUO' as capitalized"; + variant "text 'tUP' as capitalized"; + variant "text 'tUQ' as capitalized"; + variant "text 'tUR' as capitalized"; + variant "text 'tUS' as capitalized"; + variant "text 'tUT' as capitalized"; + variant "text 'tUU' as capitalized"; + variant "text 'tUV' as capitalized"; + variant "text 'tUW' as capitalized"; + variant "text 'tUX' as capitalized"; + variant "text 'tUY' as capitalized"; + variant "text 'tUZ' as capitalized"; + variant "text 'tVA' as capitalized"; + variant "text 'tVB' as capitalized"; + variant "text 'tVC' as capitalized"; + variant "text 'tVD' as capitalized"; + variant "text 'tVE' as capitalized"; + variant "text 'tVF' as capitalized"; + variant "text 'tVG' as capitalized"; + variant "text 'tVH' as capitalized"; + variant "text 'tVI' as capitalized"; + variant "text 'tVJ' as capitalized"; + variant "text 'tVK' as capitalized"; + variant "text 'tVL' as capitalized"; + variant "text 'tVM' as capitalized"; + variant "text 'tVN' as capitalized"; + variant "text 'tVO' as capitalized"; + variant "text 'tVP' as capitalized"; + variant "text 'tVQ' as capitalized"; + variant "text 'tVR' as capitalized"; + variant "text 'tVS' as capitalized"; + variant "text 'tVT' as capitalized"; + variant "text 'tVU' as capitalized"; + variant "text 'tVV' as capitalized"; + variant "text 'tVW' as capitalized"; + variant "text 'tVX' as capitalized"; + variant "text 'tVY' as capitalized"; + variant "text 'tVZ' as capitalized"; + variant "text 'tWA' as capitalized"; + variant "text 'tWB' as capitalized"; + variant "text 'tWC' as capitalized"; + variant "text 'tWD' as capitalized"; + variant "text 'tWG' as capitalized"; + variant "text 'tWI' as capitalized"; + variant "text 'tWK' as capitalized"; + variant "text 'tWL' as capitalized"; + variant "text 'tWM' as capitalized"; + variant "text 'tWN' as capitalized"; + variant "text 'tWO' as capitalized"; + variant "text 'tWP' as capitalized"; + variant "text 'tWS' as capitalized"; + variant "text 'tWT' as capitalized"; + variant "text 'tWV' as capitalized"; + variant "text 'tWX' as capitalized"; + variant "text 'tWY' as capitalized"; + variant "text 'tXB' as capitalized"; + variant "text 'tXC' as capitalized"; + variant "text 'tXE' as capitalized"; + variant "text 'tXF' as capitalized"; + variant "text 'tXH' as capitalized"; + variant "text 'tXI' as capitalized"; + variant "text 'tXJ' as capitalized"; + variant "text 'tXK' as capitalized"; + variant "text 'tXM' as capitalized"; + variant "text 'tXO' as capitalized"; + variant "text 'tXP' as capitalized"; + variant "text 'tXQ' as capitalized"; + variant "text 'tXR' as capitalized"; + variant "text 'tXS' as capitalized"; + variant "text 'tXT' as capitalized"; + variant "text 'tXV' as capitalized"; + variant "text 'tXW' as capitalized"; + variant "text 'tXX' as capitalized"; + variant "text 'tXY' as capitalized"; + variant "text 'tXZ' as capitalized"; + variant "text 'tYA' as capitalized"; + variant "text 'tYB' as capitalized"; + variant "text 'tYC' as capitalized"; + variant "text 'tYD' as capitalized"; + variant "text 'tYE' as capitalized"; + variant "text 'tYF' as capitalized"; + variant "text 'tYG' as capitalized"; + variant "text 'tYH' as capitalized"; + variant "text 'tYI' as capitalized"; + variant "text 'tYJ' as capitalized"; + variant "text 'tYK' as capitalized"; + variant "text 'tYL' as capitalized"; + variant "text 'tYM' as capitalized"; + variant "text 'tYN' as capitalized"; + variant "text 'tYO' as capitalized"; + variant "text 'tYP' as capitalized"; + variant "text 'tYR' as capitalized"; + variant "text 'tYS' as capitalized"; + variant "text 'tYT' as capitalized"; + variant "text 'tYU' as capitalized"; + variant "text 'tYV' as capitalized"; + variant "text 'tYW' as capitalized"; + variant "text 'tYX' as capitalized"; + variant "text 'tYY' as capitalized"; + variant "text 'tYZ' as capitalized"; + variant "text 'tZA' as capitalized"; + variant "text 'tZC' as capitalized"; + variant "text 'tZD' as capitalized"; + variant "text 'tZE' as capitalized"; + variant "text 'tZF' as capitalized"; + variant "text 'tZG' as capitalized"; + variant "text 'tZH' as capitalized"; + variant "text 'tZK' as capitalized"; + variant "text 'tZL' as capitalized"; + variant "text 'tZM' as capitalized"; + variant "text 'tZO' as capitalized"; + variant "text 'tZP' as capitalized"; + variant "text 'tZQ' as capitalized"; + variant "text 'tZR' as capitalized"; + variant "text 'tZS' as capitalized"; + variant "text 'tZW' as capitalized"; + variant "text 'tZX' as capitalized"; + variant "text 'tZY' as capitalized"; + variant "text 'uAA' as capitalized"; + variant "text 'uAB' as capitalized"; + variant "text 'uAC' as capitalized"; + variant "text 'uAD' as capitalized"; + variant "text 'uAE' as capitalized"; + variant "text 'uAF' as capitalized"; + variant "text 'uAG' as capitalized"; + variant "text 'uAH' as capitalized"; + variant "text 'uAI' as capitalized"; + variant "text 'uAJ' as capitalized"; + variant "text 'uAK' as capitalized"; + variant "text 'uAL' as capitalized"; + variant "text 'uAM' as capitalized"; + variant "text 'uAN' as capitalized"; + variant "text 'uAO' as capitalized"; + variant "text 'uAP' as capitalized"; + variant "text 'uAQ' as capitalized"; + variant "text 'uAR' as capitalized"; + variant "text 'uAT' as capitalized"; + variant "text 'uAU' as capitalized"; + variant "text 'uAV' as capitalized"; + variant "text 'uAW' as capitalized"; + variant "text 'uAX' as capitalized"; + variant "text 'uAY' as capitalized"; + variant "text 'uAZ' as capitalized"; + variant "text 'uBA' as capitalized"; + variant "text 'uBB' as capitalized"; + variant "text 'uBC' as capitalized"; + variant "text 'uBD' as capitalized"; + variant "text 'uBE' as capitalized"; + variant "text 'uBF' as capitalized"; + variant "text 'uBG' as capitalized"; + variant "text 'uBH' as capitalized"; + variant "text 'uBI' as capitalized"; + variant "text 'uBJ' as capitalized"; + variant "text 'uBK' as capitalized"; + variant "text 'uBL' as capitalized"; + variant "text 'uBM' as capitalized"; + variant "text 'uBN' as capitalized"; + variant "text 'uBO' as capitalized"; + variant "text 'uBP' as capitalized"; + variant "text 'uBQ' as capitalized"; + variant "text 'uBR' as capitalized"; + variant "text 'uBS' as capitalized"; + variant "text 'uBT' as capitalized"; + variant "text 'uBU' as capitalized"; + variant "text 'uBV' as capitalized"; + variant "text 'uBW' as capitalized"; + variant "text 'uBX' as capitalized"; + variant "text 'uBY' as capitalized"; + variant "text 'uBZ' as capitalized"; + variant "text 'uCA' as capitalized"; + variant "text 'uCB' as capitalized"; + variant "text 'uCC' as capitalized"; + variant "text 'uCD' as capitalized"; + variant "text 'uCE' as capitalized"; + variant "text 'uCF' as capitalized"; + variant "text 'uCG' as capitalized"; + variant "text 'uCH' as capitalized"; + variant "text 'uCI' as capitalized"; + variant "text 'uCJ' as capitalized"; + variant "text 'uCK' as capitalized"; + variant "text 'uCL' as capitalized"; + variant "text 'uCM' as capitalized"; + variant "text 'uCN' as capitalized"; + variant "text 'uCO' as capitalized"; + variant "text 'uCP' as capitalized"; + variant "text 'uCQ' as capitalized"; + variant "text 'uCR' as capitalized"; + variant "text 'uCS' as capitalized"; + variant "text 'uCT' as capitalized"; + variant "text 'uCU' as capitalized"; + variant "text 'uCV' as capitalized"; + variant "text 'uCW' as capitalized"; + variant "text 'uCX' as capitalized"; + variant "text 'uCY' as capitalized"; + variant "text 'uCZ' as capitalized"; + variant "text 'uDA' as capitalized"; + variant "text 'uDB' as capitalized"; + variant "text 'uDC' as capitalized"; + variant "text 'uDD' as capitalized"; + variant "text 'uDE' as capitalized"; + variant "text 'uDF' as capitalized"; + variant "text 'uDG' as capitalized"; + variant "text 'uDH' as capitalized"; + variant "text 'uDI' as capitalized"; + variant "text 'uDJ' as capitalized"; + variant "text 'uDK' as capitalized"; + variant "text 'uDL' as capitalized"; + variant "text 'uDM' as capitalized"; + variant "text 'uDO' as capitalized"; + variant "text 'uDP' as capitalized"; + variant "text 'uDQ' as capitalized"; + variant "text 'uDR' as capitalized"; + variant "text 'uDS' as capitalized"; + variant "text 'uDT' as capitalized"; + variant "text 'uDU' as capitalized"; + variant "text 'uDV' as capitalized"; + variant "text 'uDW' as capitalized"; + variant "text 'uDX' as capitalized"; + variant "text 'uDZ' as capitalized"; + variant "text 'uEB' as capitalized"; + variant "text 'uEF' as capitalized"; + variant "text 'uEH' as capitalized"; + variant "text 'uEP' as capitalized"; + variant "text 'uEX' as capitalized"; + variant "text 'uFA' as capitalized"; + variant "text 'uFB' as capitalized"; + variant "text 'uFC' as capitalized"; + variant "text 'uFD' as capitalized"; + variant "text 'uFE' as capitalized"; + variant "text 'uFF' as capitalized"; + variant "text 'uFG' as capitalized"; + variant "text 'uFH' as capitalized"; + variant "text 'uFI' as capitalized"; + variant "text 'uFJ' as capitalized"; + variant "text 'uFK' as capitalized"; + variant "text 'uFL' as capitalized"; + variant "text 'uFM' as capitalized"; + variant "text 'uFN' as capitalized"; + variant "text 'uFO' as capitalized"; + variant "text 'uFP' as capitalized"; + variant "text 'uFR' as capitalized"; + variant "text 'uFS' as capitalized"; + variant "text 'uFT' as capitalized"; + variant "text 'uFU' as capitalized"; + variant "text 'uFX' as capitalized"; + variant "text 'uFZ' as capitalized"; + variant "text 'uGA' as capitalized"; + variant "text 'uGC' as capitalized"; + variant "text 'uGH' as capitalized"; + variant "text 'uGK' as capitalized"; + variant "text 'uGL' as capitalized"; + variant "text 'uGM' as capitalized"; + variant "text 'uGO' as capitalized"; + variant "text 'uGS' as capitalized"; + variant "text 'uGT' as capitalized"; + variant "text 'uGU' as capitalized"; + variant "text 'uGX' as capitalized"; + variant "text 'uGY' as capitalized"; + variant "text 'uGZ' as capitalized"; + variant "text 'uHA' as capitalized"; + variant "text 'uHB' as capitalized"; + variant "text 'uHD' as capitalized"; + variant "text 'uHE' as capitalized"; + variant "text 'uHG' as capitalized"; + variant "text 'uHH' as capitalized"; + variant "text 'uHI' as capitalized"; + variant "text 'uHJ' as capitalized"; + variant "text 'uHK' as capitalized"; + variant "text 'uHL' as capitalized"; + variant "text 'uHM' as capitalized"; + variant "text 'uHN' as capitalized"; + variant "text 'uHO' as capitalized"; + variant "text 'uHP' as capitalized"; + variant "text 'uHQ' as capitalized"; + variant "text 'uHR' as capitalized"; + variant "text 'uHS' as capitalized"; + variant "text 'uHT' as capitalized"; + variant "text 'uHU' as capitalized"; + variant "text 'uHW' as capitalized"; + variant "text 'uHX' as capitalized"; + variant "text 'uIA' as capitalized"; + variant "text 'uIB' as capitalized"; + variant "text 'uIC' as capitalized"; + variant "text 'uID' as capitalized"; + variant "text 'uIE' as capitalized"; + variant "text 'uIF' as capitalized"; + variant "text 'uIG' as capitalized"; + variant "text 'uIL' as capitalized"; + variant "text 'uIM' as capitalized"; + variant "text 'uIN' as capitalized"; + variant "text 'uIO' as capitalized"; + variant "text 'uIP' as capitalized"; + variant "text 'uIR' as capitalized"; + variant "text 'uIS' as capitalized"; + variant "text 'uIT' as capitalized"; + variant "text 'uIU' as capitalized"; + variant "text 'uIX' as capitalized"; + variant "text 'uIY' as capitalized"; + variant "text 'uIZ' as capitalized"; + variant "text 'uJA' as capitalized"; + variant "text 'uJB' as capitalized"; + variant "text 'uJC' as capitalized"; + variant "text 'uJI' as capitalized"; + variant "text 'uJX' as capitalized"; + variant "text 'uKA' as capitalized"; + variant "text 'uKB' as capitalized"; + variant "text 'uKD' as capitalized"; + variant "text 'uKH' as capitalized"; + variant "text 'uKI' as capitalized"; + variant "text 'uKP' as capitalized"; + variant "text 'uKQ' as capitalized"; + variant "text 'uKR' as capitalized"; + variant "text 'uKX' as capitalized"; + variant "text 'uLA' as capitalized"; + variant "text 'uLB' as capitalized"; + variant "text 'uLC' as capitalized"; + variant "text 'uLD' as capitalized"; + variant "text 'uLE' as capitalized"; + variant "text 'uLF' as capitalized"; + variant "text 'uLG' as capitalized"; + variant "text 'uLH' as capitalized"; + variant "text 'uLI' as capitalized"; + variant "text 'uLJ' as capitalized"; + variant "text 'uLK' as capitalized"; + variant "text 'uLL' as capitalized"; + variant "text 'uLM' as capitalized"; + variant "text 'uLN' as capitalized"; + variant "text 'uLO' as capitalized"; + variant "text 'uLP' as capitalized"; + variant "text 'uLQ' as capitalized"; + variant "text 'uLR' as capitalized"; + variant "text 'uLS' as capitalized"; + variant "text 'uLT' as capitalized"; + variant "text 'uLU' as capitalized"; + variant "text 'uLV' as capitalized"; + variant "text 'uLW' as capitalized"; + variant "text 'uLX' as capitalized"; + variant "text 'uLY' as capitalized"; + variant "text 'uMA' as capitalized"; + variant "text 'uMB' as capitalized"; + variant "text 'uMC' as capitalized"; + variant "text 'uMD' as capitalized"; + variant "text 'uMG' as capitalized"; + variant "text 'uMH' as capitalized"; + variant "text 'uMI' as capitalized"; + variant "text 'uMJ' as capitalized"; + variant "text 'uMK' as capitalized"; + variant "text 'uML' as capitalized"; + variant "text 'uMM' as capitalized"; + variant "text 'uMO' as capitalized"; + variant "text 'uMP' as capitalized"; + variant "text 'uMR' as capitalized"; + variant "text 'uMS' as capitalized"; + variant "text 'uMU' as capitalized"; + variant "text 'uMV' as capitalized"; + variant "text 'uMX' as capitalized"; + variant "text 'uMY' as capitalized"; + variant "text 'uMZ' as capitalized"; + variant "text 'uNA' as capitalized"; + variant "text 'uNC' as capitalized"; + variant "text 'uND' as capitalized"; + variant "text 'uNE' as capitalized"; + variant "text 'uNF' as capitalized"; + variant "text 'uNG' as capitalized"; + variant "text 'uNI' as capitalized"; + variant "text 'uNJ' as capitalized"; + variant "text 'uNL' as capitalized"; + variant "text 'uNM' as capitalized"; + variant "text 'uNN' as capitalized"; + variant "text 'uNO' as capitalized"; + variant "text 'uNP' as capitalized"; + variant "text 'uNQ' as capitalized"; + variant "text 'uNR' as capitalized"; + variant "text 'uNT' as capitalized"; + variant "text 'uNU' as capitalized"; + variant "text 'uNX' as capitalized"; + variant "text 'uOA' as capitalized"; + variant "text 'uOB' as capitalized"; + variant "text 'uOC' as capitalized"; + variant "text 'uOE' as capitalized"; + variant "text 'uOG' as capitalized"; + variant "text 'uOI' as capitalized"; + variant "text 'uOM' as capitalized"; + variant "text 'uON' as capitalized"; + variant "text 'uOO' as capitalized"; + variant "text 'uOP' as capitalized"; + variant "text 'uOR' as capitalized"; + variant "text 'uOS' as capitalized"; + variant "text 'uOT' as capitalized"; + variant "text 'uOX' as capitalized"; + variant "text 'uOZ' as capitalized"; + variant "text 'uPA' as capitalized"; + variant "text 'uPC' as capitalized"; + variant "text 'uPD' as capitalized"; + variant "text 'uPE' as capitalized"; + variant "text 'uPG' as capitalized"; + variant "text 'uPH' as capitalized"; + variant "text 'uPI' as capitalized"; + variant "text 'uPJ' as capitalized"; + variant "text 'uPK' as capitalized"; + variant "text 'uPL' as capitalized"; + variant "text 'uPM' as capitalized"; + variant "text 'uPN' as capitalized"; + variant "text 'uPO' as capitalized"; + variant "text 'uPP' as capitalized"; + variant "text 'uPQ' as capitalized"; + variant "text 'uPR' as capitalized"; + variant "text 'uPS' as capitalized"; + variant "text 'uPT' as capitalized"; + variant "text 'uPU' as capitalized"; + variant "text 'uPV' as capitalized"; + variant "text 'uPW' as capitalized"; + variant "text 'uPX' as capitalized"; + variant "text 'uPY' as capitalized"; + variant "text 'uQP' as capitalized"; + variant "text 'uQS' as capitalized"; + variant "text 'uQT' as capitalized"; + variant "text 'uQU' as capitalized"; + variant "text 'uQX' as capitalized"; + variant "text 'uRA' as capitalized"; + variant "text 'uRB' as capitalized"; + variant "text 'uRC' as capitalized"; + variant "text 'uRD' as capitalized"; + variant "text 'uRE' as capitalized"; + variant "text 'uRF' as capitalized"; + variant "text 'uRG' as capitalized"; + variant "text 'uRH' as capitalized"; + variant "text 'uRI' as capitalized"; + variant "text 'uRJ' as capitalized"; + variant "text 'uRK' as capitalized"; + variant "text 'uRL' as capitalized"; + variant "text 'uRM' as capitalized"; + variant "text 'uRN' as capitalized"; + variant "text 'uRO' as capitalized"; + variant "text 'uRQ' as capitalized"; + variant "text 'uRS' as capitalized"; + variant "text 'uRT' as capitalized"; + variant "text 'uRU' as capitalized"; + variant "text 'uRV' as capitalized"; + variant "text 'uRW' as capitalized"; + variant "text 'uRX' as capitalized"; + variant "text 'uRY' as capitalized"; + variant "text 'uRZ' as capitalized"; + variant "text 'uSA' as capitalized"; + variant "text 'uSB' as capitalized"; + variant "text 'uSC' as capitalized"; + variant "text 'uSD' as capitalized"; + variant "text 'uSE' as capitalized"; + variant "text 'uSF' as capitalized"; + variant "text 'uSG' as capitalized"; + variant "text 'uSH' as capitalized"; + variant "text 'uSI' as capitalized"; + variant "text 'uSJ' as capitalized"; + variant "text 'uSK' as capitalized"; + variant "text 'uSL' as capitalized"; + variant "text 'uSM' as capitalized"; + variant "text 'uSN' as capitalized"; + variant "text 'uSO' as capitalized"; + variant "text 'uSP' as capitalized"; + variant "text 'uSQ' as capitalized"; + variant "text 'uSR' as capitalized"; + variant "text 'uSS' as capitalized"; + variant "text 'uST' as capitalized"; + variant "text 'uSU' as capitalized"; + variant "text 'uSV' as capitalized"; + variant "text 'uSW' as capitalized"; + variant "text 'uSX' as capitalized"; + variant "text 'uSY' as capitalized"; + variant "text 'uSZ' as capitalized"; + variant "text 'uTA' as capitalized"; + variant "text 'uTB' as capitalized"; + variant "text 'uTC' as capitalized"; + variant "text 'uTD' as capitalized"; + variant "text 'uTE' as capitalized"; + variant "text 'uTF' as capitalized"; + variant "text 'uTG' as capitalized"; + variant "text 'uTH' as capitalized"; + variant "text 'uTI' as capitalized"; + variant "text 'uTJ' as capitalized"; + variant "text 'uTK' as capitalized"; + variant "text 'uTL' as capitalized"; + variant "text 'uTM' as capitalized"; + variant "text 'uTN' as capitalized"; + variant "text 'uTO' as capitalized"; + variant "text 'uTP' as capitalized"; + variant "text 'uTQ' as capitalized"; + variant "text 'uTR' as capitalized"; + variant "text 'uTS' as capitalized"; + variant "text 'uTT' as capitalized"; + variant "text 'uTU' as capitalized"; + variant "text 'uTW' as capitalized"; + variant "text 'uTX' as capitalized"; + variant "text 'uUB' as capitalized"; + variant "text 'uUC' as capitalized"; + variant "text 'uUD' as capitalized"; + variant "text 'uUE' as capitalized"; + variant "text 'uUF' as capitalized"; + variant "text 'uUG' as capitalized"; + variant "text 'uUH' as capitalized"; + variant "text 'uUI' as capitalized"; + variant "text 'uUJ' as capitalized"; + variant "text 'uUL' as capitalized"; + variant "text 'uUM' as capitalized"; + variant "text 'uUN' as capitalized"; + variant "text 'uUP' as capitalized"; + variant "text 'uUQ' as capitalized"; + variant "text 'uUR' as capitalized"; + variant "text 'uUS' as capitalized"; + variant "text 'uUT' as capitalized"; + variant "text 'uUU' as capitalized"; + variant "text 'uUV' as capitalized"; + variant "text 'uUX' as capitalized"; + variant "text 'uUY' as capitalized"; + variant "text 'uVA' as capitalized"; + variant "text 'uVB' as capitalized"; + variant "text 'uVC' as capitalized"; + variant "text 'uVD' as capitalized"; + variant "text 'uVE' as capitalized"; + variant "text 'uVF' as capitalized"; + variant "text 'uVG' as capitalized"; + variant "text 'uVH' as capitalized"; + variant "text 'uVL' as capitalized"; + variant "text 'uVN' as capitalized"; + variant "text 'uVP' as capitalized"; + variant "text 'uVQ' as capitalized"; + variant "text 'uVR' as capitalized"; + variant "text 'uVS' as capitalized"; + variant "text 'uVT' as capitalized"; + variant "text 'uVU' as capitalized"; + variant "text 'uVX' as capitalized"; + variant "text 'uWX' as capitalized"; + variant "text 'uXA' as capitalized"; + variant "text 'uXK' as capitalized"; + variant "text 'uXP' as capitalized"; + variant "text 'uXR' as capitalized"; + variant "text 'uXS' as capitalized"; + variant "text 'uXT' as capitalized"; + variant "text 'uXU' as capitalized"; + variant "text 'uXX' as capitalized"; + variant "text 'uYC' as capitalized"; + variant "text 'uYD' as capitalized"; + variant "text 'uYE' as capitalized"; + variant "text 'uYF' as capitalized"; + variant "text 'uYI' as capitalized"; + variant "text 'uYT' as capitalized"; + variant "text 'uYV' as capitalized"; + variant "text 'uYX' as capitalized"; + variant "text 'uZB' as capitalized"; + variant "text 'uZO' as capitalized"; + variant "text 'uZX' as capitalized"; + variant "text 'vAA' as capitalized"; + variant "text 'vAC' as capitalized"; + variant "text 'vAD' as capitalized"; + variant "text 'vAI' as capitalized"; + variant "text 'vAJ' as capitalized"; + variant "text 'vAL' as capitalized"; + variant "text 'vAM' as capitalized"; + variant "text 'vAN' as capitalized"; + variant "text 'vAQ' as capitalized"; + variant "text 'vAR' as capitalized"; + variant "text 'vAT' as capitalized"; + variant "text 'vAU' as capitalized"; + variant "text 'vAX' as capitalized"; + variant "text 'vAY' as capitalized"; + variant "text 'vAZ' as capitalized"; + variant "text 'vBX' as capitalized"; + variant "text 'vCM' as capitalized"; + variant "text 'vCP' as capitalized"; + variant "text 'vCX' as capitalized"; + variant "text 'vDX' as capitalized"; + variant "text 'vEA' as capitalized"; + variant "text 'vED' as capitalized"; + variant "text 'vEE' as capitalized"; + variant "text 'vEG' as capitalized"; + variant "text 'vEI' as capitalized"; + variant "text 'vEM' as capitalized"; + variant "text 'vEN' as capitalized"; + variant "text 'vEO' as capitalized"; + variant "text 'vEP' as capitalized"; + variant "text 'vER' as capitalized"; + variant "text 'vES' as capitalized"; + variant "text 'vET' as capitalized"; + variant "text 'vEU' as capitalized"; + variant "text 'vEV' as capitalized"; + variant "text 'vEX' as capitalized"; + variant "text 'vFT' as capitalized"; + variant "text 'vFV' as capitalized"; + variant "text 'vFW' as capitalized"; + variant "text 'vFX' as capitalized"; + variant "text 'vGX' as capitalized"; + variant "text 'vHS' as capitalized"; + variant "text 'vHX' as capitalized"; + variant "text 'vIA' as capitalized"; + variant "text 'vIC' as capitalized"; + variant "text 'vII' as capitalized"; + variant "text 'vIM' as capitalized"; + variant "text 'vIP' as capitalized"; + variant "text 'vIV' as capitalized"; + variant "text 'vIX' as capitalized"; + variant "text 'vIY' as capitalized"; + variant "text 'vJX' as capitalized"; + variant "text 'vKA' as capitalized"; + variant "text 'vKS' as capitalized"; + variant "text 'vKX' as capitalized"; + variant "text 'vLB' as capitalized"; + variant "text 'vLI' as capitalized"; + variant "text 'vLM' as capitalized"; + variant "text 'vLO' as capitalized"; + variant "text 'vLS' as capitalized"; + variant "text 'vLU' as capitalized"; + variant "text 'vLV' as capitalized"; + variant "text 'vLX' as capitalized"; + variant "text 'vMC' as capitalized"; + variant "text 'vMH' as capitalized"; + variant "text 'vMM' as capitalized"; + variant "text 'vMP' as capitalized"; + variant "text 'vMX' as capitalized"; + variant "text 'vNA' as capitalized"; + variant "text 'vNC' as capitalized"; + variant "text 'vNG' as capitalized"; + variant "text 'vNI' as capitalized"; + variant "text 'vNR' as capitalized"; + variant "text 'vNU' as capitalized"; + variant "text 'vOI' as capitalized"; + variant "text 'vOS' as capitalized"; + variant "text 'vPD' as capitalized"; + variant "text 'vRA' as capitalized"; + variant "text 'vRL' as capitalized"; + variant "text 'vSC' as capitalized"; + variant "text 'vSE' as capitalized"; + variant "text 'vSH' as capitalized"; + variant "text 'vSK' as capitalized"; + variant "text 'vSM' as capitalized"; + variant "text 'vSP' as capitalized"; + variant "text 'vST' as capitalized"; + variant "text 'vSU' as capitalized"; + variant "text 'vSV' as capitalized"; + variant "text 'vTX' as capitalized"; + variant "text 'vUC' as capitalized"; + variant "text 'vUD' as capitalized"; + variant "text 'vUF' as capitalized"; + variant "text 'vUX' as capitalized"; + variant "text 'vVH' as capitalized"; + variant "text 'vVV' as capitalized"; + variant "text 'vVX' as capitalized"; + variant "text 'vXA' as capitalized"; + variant "text 'vXR' as capitalized"; + variant "text 'vXU' as capitalized"; + variant "text 'vXV' as capitalized"; + variant "text 'vXX' as capitalized"; + variant "text 'vYX' as capitalized"; + variant "text 'wAA' as capitalized"; + variant "text 'wAB' as capitalized"; + variant "text 'wAH' as capitalized"; + variant "text 'wAL' as capitalized"; + variant "text 'wAM' as capitalized"; + variant "text 'wAX' as capitalized"; + variant "text 'wBM' as capitalized"; + variant "text 'wCP' as capitalized"; + variant "text 'wEA' as capitalized"; + variant "text 'wEC' as capitalized"; + variant "text 'wED' as capitalized"; + variant "text 'wEG' as capitalized"; + variant "text 'wEM' as capitalized"; + variant "text 'wEP' as capitalized"; + variant "text 'wEW' as capitalized"; + variant "text 'wEX' as capitalized"; + variant "text 'wFF' as capitalized"; + variant "text 'wFS' as capitalized"; + variant "text 'wGR' as capitalized"; + variant "text 'wHA' as capitalized"; + variant "text 'wHB' as capitalized"; + variant "text 'wHE' as capitalized"; + variant "text 'wHF' as capitalized"; + variant "text 'wHG' as capitalized"; + variant "text 'wHH' as capitalized"; + variant "text 'wHL' as capitalized"; + variant "text 'wHM' as capitalized"; + variant "text 'wHS' as capitalized"; + variant "text 'wHV' as capitalized"; + variant "text 'wHX' as capitalized"; + variant "text 'wHZ' as capitalized"; + variant "text 'wIC' as capitalized"; + variant "text 'wIM' as capitalized"; + variant "text 'wIO' as capitalized"; + variant "text 'wIT' as capitalized"; + variant "text 'wKB' as capitalized"; + variant "text 'wKK' as capitalized"; + variant "text 'wKP' as capitalized"; + variant "text 'wKS' as capitalized"; + variant "text 'wKX' as capitalized"; + variant "text 'wLF' as capitalized"; + variant "text 'wLJ' as capitalized"; + variant "text 'wLK' as capitalized"; + variant "text 'wLL' as capitalized"; + variant "text 'wLX' as capitalized"; + variant "text 'wMC' as capitalized"; + variant "text 'wME' as capitalized"; + variant "text 'wMX' as capitalized"; + variant "text 'wOA' as capitalized"; + variant "text 'wOM' as capitalized"; + variant "text 'wON' as capitalized"; + variant "text 'wOO' as capitalized"; + variant "text 'wOR' as capitalized"; + variant "text 'wOS' as capitalized"; + variant "text 'wOT' as capitalized"; + variant "text 'wOW' as capitalized"; + variant "text 'wOY' as capitalized"; + variant "text 'wPM' as capitalized"; + variant "text 'wPP' as capitalized"; + variant "text 'wPT' as capitalized"; + variant "text 'wPU' as capitalized"; + variant "text 'wPX' as capitalized"; + variant "text 'wRA' as capitalized"; + variant "text 'wRF' as capitalized"; + variant "text 'wRM' as capitalized"; + variant "text 'wRO' as capitalized"; + variant "text 'wRR' as capitalized"; + variant "text 'wRV' as capitalized"; + variant "text 'wRW' as capitalized"; + variant "text 'wRX' as capitalized"; + variant "text 'wSA' as capitalized"; + variant "text 'wSG' as capitalized"; + variant "text 'wSH' as capitalized"; + variant "text 'wSK' as capitalized"; + variant "text 'wSM' as capitalized"; + variant "text 'wSN' as capitalized"; + variant "text 'wSP' as capitalized"; + variant "text 'wSS' as capitalized"; + variant "text 'wST' as capitalized"; + variant "text 'wSU' as capitalized"; + variant "text 'wSW' as capitalized"; + variant "text 'wSZ' as capitalized"; + variant "text 'wTA' as capitalized"; + variant "text 'wTB' as capitalized"; + variant "text 'wTC' as capitalized"; + variant "text 'wTE' as capitalized"; + variant "text 'wTF' as capitalized"; + variant "text 'wTG' as capitalized"; + variant "text 'wTH' as capitalized"; + variant "text 'wTK' as capitalized"; + variant "text 'wTM' as capitalized"; + variant "text 'wTO' as capitalized"; + variant "text 'wTP' as capitalized"; + variant "text 'wTQ' as capitalized"; + variant "text 'wTR' as capitalized"; + variant "text 'wTS' as capitalized"; + variant "text 'wTV' as capitalized"; + variant "text 'wTW' as capitalized"; + variant "text 'wTX' as capitalized"; + variant "text 'wTY' as capitalized"; + variant "text 'wTZ' as capitalized"; + variant "text 'wUB' as capitalized"; + variant "text 'wUT' as capitalized"; + variant "text 'wUW' as capitalized"; + variant "text 'wUX' as capitalized"; + variant "text 'wUZ' as capitalized"; + variant "text 'wVW' as capitalized"; + variant "text 'wVZ' as capitalized"; + variant "text 'wWA' as capitalized"; + variant "text 'wWB' as capitalized"; + variant "text 'wWP' as capitalized"; + variant "text 'wYC' as capitalized"; + variant "text 'wYG' as capitalized"; + variant "text 'wYP' as capitalized"; + variant "text 'x98' as '98'"; + variant "text 'x99' as '99'"; + variant "text 'xAC' as capitalized"; + variant "text 'xAD' as capitalized"; + variant "text 'xAX' as capitalized"; + variant "text 'xBP' as capitalized"; + variant "text 'xBX' as capitalized"; + variant "text 'xCE' as capitalized"; + variant "text 'xCS' as capitalized"; + variant "text 'xDP' as capitalized"; + variant "text 'xDX' as capitalized"; + variant "text 'xEA' as capitalized"; + variant "text 'xEB' as capitalized"; + variant "text 'xEC' as capitalized"; + variant "text 'xED' as capitalized"; + variant "text 'xEF' as capitalized"; + variant "text 'xEH' as capitalized"; + variant "text 'xEJ' as capitalized"; + variant "text 'xEK' as capitalized"; + variant "text 'xEL' as capitalized"; + variant "text 'xEO' as capitalized"; + variant "text 'xEP' as capitalized"; + variant "text 'xER' as capitalized"; + variant "text 'xES' as capitalized"; + variant "text 'xET' as capitalized"; + variant "text 'xEZ' as capitalized"; + variant "text 'xFA' as capitalized"; + variant "text 'xFC' as capitalized"; + variant "text 'xFM' as capitalized"; + variant "text 'xFO' as capitalized"; + variant "text 'xFS' as capitalized"; + variant "text 'xFT' as capitalized"; + variant "text 'xFU' as capitalized"; + variant "text 'xHE' as capitalized"; + variant "text 'xHH' as capitalized"; + variant "text 'xHK' as capitalized"; + variant "text 'xHO' as capitalized"; + variant "text 'xIX' as capitalized"; + variant "text 'xJM' as capitalized"; + variant "text 'xJX' as capitalized"; + variant "text 'xKX' as capitalized"; + variant "text 'xMB' as capitalized"; + variant "text 'xML' as capitalized"; + variant "text 'xMQ' as capitalized"; + variant "text 'xMR' as capitalized"; + variant "text 'xMS' as capitalized"; + variant "text 'xOD' as capitalized"; + variant "text 'xOX' as capitalized"; + variant "text 'xPA' as capitalized"; + variant "text 'xPF' as capitalized"; + variant "text 'xPN' as capitalized"; + variant "text 'xPO' as capitalized"; + variant "text 'xPS' as capitalized"; + variant "text 'xPX' as capitalized"; + variant "text 'xSC' as capitalized"; + variant "text 'xTB' as capitalized"; + variant "text 'xTC' as capitalized"; + variant "text 'xTE' as capitalized"; + variant "text 'xTO' as capitalized"; + variant "text 'xTR' as capitalized"; + variant "text 'xTY' as capitalized"; + variant "text 'xUL' as capitalized"; + variant "text 'xUM' as capitalized"; + variant "text 'xUU' as capitalized"; + variant "text 'xUV' as capitalized"; + variant "text 'xUX' as capitalized"; + variant "text 'xXA' as capitalized"; + variant "text 'xXC' as capitalized"; + variant "text 'xYB' as capitalized"; + variant "text 'xYD' as capitalized"; + variant "text 'xYF' as capitalized"; + variant "text 'xYH' as capitalized"; + variant "text 'xYL' as capitalized"; + variant "text 'xYN' as capitalized"; + variant "text 'xYT' as capitalized"; + variant "text 'xYX' as capitalized"; + variant "text 'yAA' as capitalized"; + variant "text 'yAB' as capitalized"; + variant "text 'yAC' as capitalized"; + variant "text 'yAD' as capitalized"; + variant "text 'yAE' as capitalized"; + variant "text 'yAF' as capitalized"; + variant "text 'yAG' as capitalized"; + variant "text 'yAH' as capitalized"; + variant "text 'yAI' as capitalized"; + variant "text 'yAJ' as capitalized"; + variant "text 'yAK' as capitalized"; + variant "text 'yAL' as capitalized"; + variant "text 'yAM' as capitalized"; + variant "text 'yAN' as capitalized"; + variant "text 'yAO' as capitalized"; + variant "text 'yAP' as capitalized"; + variant "text 'yAQ' as capitalized"; + variant "text 'yAR' as capitalized"; + variant "text 'yAS' as capitalized"; + variant "text 'yAT' as capitalized"; + variant "text 'yAU' as capitalized"; + variant "text 'yAV' as capitalized"; + variant "text 'yAW' as capitalized"; + variant "text 'yAX' as capitalized"; + variant "text 'yAY' as capitalized"; + variant "text 'yAZ' as capitalized"; + variant "text 'yBA' as capitalized"; + variant "text 'yBB' as capitalized"; + variant "text 'yBC' as capitalized"; + variant "text 'yBD' as capitalized"; + variant "text 'yBE' as capitalized"; + variant "text 'yBF' as capitalized"; + variant "text 'yBG' as capitalized"; + variant "text 'yBH' as capitalized"; + variant "text 'yBI' as capitalized"; + variant "text 'yBJ' as capitalized"; + variant "text 'yBK' as capitalized"; + variant "text 'yBL' as capitalized"; + variant "text 'yBM' as capitalized"; + variant "text 'yBN' as capitalized"; + variant "text 'yBO' as capitalized"; + variant "text 'yBP' as capitalized"; + variant "text 'yBQ' as capitalized"; + variant "text 'yBR' as capitalized"; + variant "text 'yBS' as capitalized"; + variant "text 'yBT' as capitalized"; + variant "text 'yBU' as capitalized"; + variant "text 'yBV' as capitalized"; + variant "text 'yBW' as capitalized"; + variant "text 'yBX' as capitalized"; + variant "text 'yBY' as capitalized"; + variant "text 'yBZ' as capitalized"; + variant "text 'yCA' as capitalized"; + variant "text 'yCB' as capitalized"; + variant "text 'yCC' as capitalized"; + variant "text 'yCD' as capitalized"; + variant "text 'yCE' as capitalized"; + variant "text 'yCF' as capitalized"; + variant "text 'yCG' as capitalized"; + variant "text 'yCH' as capitalized"; + variant "text 'yCI' as capitalized"; + variant "text 'yCJ' as capitalized"; + variant "text 'yCK' as capitalized"; + variant "text 'yCL' as capitalized"; + variant "text 'yCM' as capitalized"; + variant "text 'yCN' as capitalized"; + variant "text 'yCO' as capitalized"; + variant "text 'yCP' as capitalized"; + variant "text 'yCQ' as capitalized"; + variant "text 'yCR' as capitalized"; + variant "text 'yCS' as capitalized"; + variant "text 'yCT' as capitalized"; + variant "text 'yCU' as capitalized"; + variant "text 'yCV' as capitalized"; + variant "text 'yCW' as capitalized"; + variant "text 'yCX' as capitalized"; + variant "text 'yCY' as capitalized"; + variant "text 'yCZ' as capitalized"; + variant "text 'yDA' as capitalized"; + variant "text 'yDB' as capitalized"; + variant "text 'yDC' as capitalized"; + variant "text 'yDD' as capitalized"; + variant "text 'yDE' as capitalized"; + variant "text 'yDF' as capitalized"; + variant "text 'yDG' as capitalized"; + variant "text 'yDH' as capitalized"; + variant "text 'yDI' as capitalized"; + variant "text 'yDJ' as capitalized"; + variant "text 'yDK' as capitalized"; + variant "text 'yDL' as capitalized"; + variant "text 'yDN' as capitalized"; + variant "text 'yDO' as capitalized"; + variant "text 'yDP' as capitalized"; + variant "text 'yDR' as capitalized"; + variant "text 'yDS' as capitalized"; + variant "text 'yDY' as capitalized"; + variant "text 'yDZ' as capitalized"; + variant "text 'yEA' as capitalized"; + variant "text 'yEB' as capitalized"; + variant "text 'yEC' as capitalized"; + variant "text 'yED' as capitalized"; + variant "text 'yEG' as capitalized"; + variant "text 'yEH' as capitalized"; + variant "text 'yEI' as capitalized"; + variant "text 'yEJ' as capitalized"; + variant "text 'yEK' as capitalized"; + variant "text 'yEL' as capitalized"; + variant "text 'yEM' as capitalized"; + variant "text 'yEN' as capitalized"; + variant "text 'yEO' as capitalized"; + variant "text 'yEP' as capitalized"; + variant "text 'yEQ' as capitalized"; + variant "text 'yER' as capitalized"; + variant "text 'yES' as capitalized"; + variant "text 'yET' as capitalized"; + variant "text 'yEU' as capitalized"; + variant "text 'yEV' as capitalized"; + variant "text 'yEX' as capitalized"; + variant "text 'yEZ' as capitalized"; + variant "text 'yFA' as capitalized"; + variant "text 'yFB' as capitalized"; + variant "text 'yFC' as capitalized"; + variant "text 'yFE' as capitalized"; + variant "text 'yFF' as capitalized"; + variant "text 'yFG' as capitalized"; + variant "text 'yFH' as capitalized"; + variant "text 'yFI' as capitalized"; + variant "text 'yFJ' as capitalized"; + variant "text 'yFK' as capitalized"; + variant "text 'yFL' as capitalized"; + variant "text 'yFM' as capitalized"; + variant "text 'yFN' as capitalized"; + variant "text 'yFO' as capitalized"; + variant "text 'yFP' as capitalized"; + variant "text 'yFQ' as capitalized"; + variant "text 'yFR' as capitalized"; + variant "text 'yFS' as capitalized"; + variant "text 'yFT' as capitalized"; + variant "text 'yFU' as capitalized"; + variant "text 'yFX' as capitalized"; + variant "text 'yGA' as capitalized"; + variant "text 'yGC' as capitalized"; + variant "text 'yGD' as capitalized"; + variant "text 'yGE' as capitalized"; + variant "text 'yGF' as capitalized"; + variant "text 'yGG' as capitalized"; + variant "text 'yGH' as capitalized"; + variant "text 'yGI' as capitalized"; + variant "text 'yGJ' as capitalized"; + variant "text 'yGK' as capitalized"; + variant "text 'yGL' as capitalized"; + variant "text 'yGM' as capitalized"; + variant "text 'yGN' as capitalized"; + variant "text 'yGP' as capitalized"; + variant "text 'yGR' as capitalized"; + variant "text 'yGS' as capitalized"; + variant "text 'yGT' as capitalized"; + variant "text 'yGU' as capitalized"; + variant "text 'yGX' as capitalized"; + variant "text 'yHA' as capitalized"; + variant "text 'yHB' as capitalized"; + variant "text 'yHJ' as capitalized"; + variant "text 'yHP' as capitalized"; + variant "text 'yHS' as capitalized"; + variant "text 'yHT' as capitalized"; + variant "text 'yHU' as capitalized"; + variant "text 'yHW' as capitalized"; + variant "text 'yHX' as capitalized"; + variant "text 'yIA' as capitalized"; + variant "text 'yIB' as capitalized"; + variant "text 'yIC' as capitalized"; + variant "text 'yID' as capitalized"; + variant "text 'yIF' as capitalized"; + variant "text 'yIG' as capitalized"; + variant "text 'yIH' as capitalized"; + variant "text 'yII' as capitalized"; + variant "text 'yIK' as capitalized"; + variant "text 'yIL' as capitalized"; + variant "text 'yIM' as capitalized"; + variant "text 'yIN' as capitalized"; + variant "text 'yIO' as capitalized"; + variant "text 'yIP' as capitalized"; + variant "text 'yIR' as capitalized"; + variant "text 'yIS' as capitalized"; + variant "text 'yIT' as capitalized"; + variant "text 'yIU' as capitalized"; + variant "text 'yIV' as capitalized"; + variant "text 'yIW' as capitalized"; + variant "text 'yIX' as capitalized"; + variant "text 'yIY' as capitalized"; + variant "text 'yJA' as capitalized"; + variant "text 'yJB' as capitalized"; + variant "text 'yJC' as capitalized"; + variant "text 'yJF' as capitalized"; + variant "text 'yJG' as capitalized"; + variant "text 'yJI' as capitalized"; + variant "text 'yJL' as capitalized"; + variant "text 'yJM' as capitalized"; + variant "text 'yJO' as capitalized"; + variant "text 'yJP' as capitalized"; + variant "text 'yJR' as capitalized"; + variant "text 'yJS' as capitalized"; + variant "text 'yJT' as capitalized"; + variant "text 'yJU' as capitalized"; + variant "text 'yJV' as capitalized"; + variant "text 'yJW' as capitalized"; + variant "text 'yJX' as capitalized"; + variant "text 'yJY' as capitalized"; + variant "text 'yJZ' as capitalized"; + variant "text 'yKA' as capitalized"; + variant "text 'yKB' as capitalized"; + variant "text 'yKC' as capitalized"; + variant "text 'yKD' as capitalized"; + variant "text 'yKE' as capitalized"; + variant "text 'yKG' as capitalized"; + variant "text 'yKL' as capitalized"; + variant "text 'yKN' as capitalized"; + variant "text 'yKO' as capitalized"; + variant "text 'yKP' as capitalized"; + variant "text 'yKR' as capitalized"; + variant "text 'yKS' as capitalized"; + variant "text 'yKU' as capitalized"; + variant "text 'yKV' as capitalized"; + variant "text 'yKX' as capitalized"; + variant "text 'yLA' as capitalized"; + variant "text 'yLB' as capitalized"; + variant "text 'yLC' as capitalized"; + variant "text 'yLD' as capitalized"; + variant "text 'yLE' as capitalized"; + variant "text 'yLF' as capitalized"; + variant "text 'yLG' as capitalized"; + variant "text 'yLH' as capitalized"; + variant "text 'yLI' as capitalized"; + variant "text 'yLJ' as capitalized"; + variant "text 'yLK' as capitalized"; + variant "text 'yLL' as capitalized"; + variant "text 'yLM' as capitalized"; + variant "text 'yLN' as capitalized"; + variant "text 'yLO' as capitalized"; + variant "text 'yLP' as capitalized"; + variant "text 'yLQ' as capitalized"; + variant "text 'yLR' as capitalized"; + variant "text 'yLS' as capitalized"; + variant "text 'yLT' as capitalized"; + variant "text 'yLU' as capitalized"; + variant "text 'yLV' as capitalized"; + variant "text 'yLW' as capitalized"; + variant "text 'yLX' as capitalized"; + variant "text 'yLY' as capitalized"; + variant "text 'yLZ' as capitalized"; + variant "text 'yMA' as capitalized"; + variant "text 'yMB' as capitalized"; + variant "text 'yMD' as capitalized"; + variant "text 'yME' as capitalized"; + variant "text 'yMF' as capitalized"; + variant "text 'yMG' as capitalized"; + variant "text 'yMH' as capitalized"; + variant "text 'yMI' as capitalized"; + variant "text 'yMJ' as capitalized"; + variant "text 'yMK' as capitalized"; + variant "text 'yML' as capitalized"; + variant "text 'yMM' as capitalized"; + variant "text 'yMN' as capitalized"; + variant "text 'yMO' as capitalized"; + variant "text 'yMP' as capitalized"; + variant "text 'yMQ' as capitalized"; + variant "text 'yMR' as capitalized"; + variant "text 'yMS' as capitalized"; + variant "text 'yMT' as capitalized"; + variant "text 'yMU' as capitalized"; + variant "text 'yMV' as capitalized"; + variant "text 'yMW' as capitalized"; + variant "text 'yMX' as capitalized"; + variant "text 'yMY' as capitalized"; + variant "text 'yMZ' as capitalized"; + variant "text 'yNA' as capitalized"; + variant "text 'yNB' as capitalized"; + variant "text 'yNC' as capitalized"; + variant "text 'yND' as capitalized"; + variant "text 'yNE' as capitalized"; + variant "text 'yNF' as capitalized"; + variant "text 'yNG' as capitalized"; + variant "text 'yNH' as capitalized"; + variant "text 'yNI' as capitalized"; + variant "text 'yNJ' as capitalized"; + variant "text 'yNK' as capitalized"; + variant "text 'yNL' as capitalized"; + variant "text 'yNM' as capitalized"; + variant "text 'yNN' as capitalized"; + variant "text 'yNO' as capitalized"; + variant "text 'yNP' as capitalized"; + variant "text 'yNQ' as capitalized"; + variant "text 'yNR' as capitalized"; + variant "text 'yNS' as capitalized"; + variant "text 'yNT' as capitalized"; + variant "text 'yNU' as capitalized"; + variant "text 'yNV' as capitalized"; + variant "text 'yNW' as capitalized"; + variant "text 'yNX' as capitalized"; + variant "text 'yNY' as capitalized"; + variant "text 'yNZ' as capitalized"; + variant "text 'yOA' as capitalized"; + variant "text 'yOB' as capitalized"; + variant "text 'yOC' as capitalized"; + variant "text 'yOD' as capitalized"; + variant "text 'yOE' as capitalized"; + variant "text 'yOF' as capitalized"; + variant "text 'yOG' as capitalized"; + variant "text 'yOH' as capitalized"; + variant "text 'yOI' as capitalized"; + variant "text 'yOJ' as capitalized"; + variant "text 'yOK' as capitalized"; + variant "text 'yOL' as capitalized"; + variant "text 'yOM' as capitalized"; + variant "text 'yON' as capitalized"; + variant "text 'yOO' as capitalized"; + variant "text 'yOP' as capitalized"; + variant "text 'yOQ' as capitalized"; + variant "text 'yOR' as capitalized"; + variant "text 'yOS' as capitalized"; + variant "text 'yOT' as capitalized"; + variant "text 'yOV' as capitalized"; + variant "text 'yOW' as capitalized"; + variant "text 'yOX' as capitalized"; + variant "text 'yOY' as capitalized"; + variant "text 'yOZ' as capitalized"; + variant "text 'yPA' as capitalized"; + variant "text 'yPB' as capitalized"; + variant "text 'yPC' as capitalized"; + variant "text 'yPD' as capitalized"; + variant "text 'yPE' as capitalized"; + variant "text 'yPF' as capitalized"; + variant "text 'yPG' as capitalized"; + variant "text 'yPH' as capitalized"; + variant "text 'yPI' as capitalized"; + variant "text 'yPJ' as capitalized"; + variant "text 'yPK' as capitalized"; + variant "text 'yPL' as capitalized"; + variant "text 'yPM' as capitalized"; + variant "text 'yPN' as capitalized"; + variant "text 'yPO' as capitalized"; + variant "text 'yPP' as capitalized"; + variant "text 'yPQ' as capitalized"; + variant "text 'yPR' as capitalized"; + variant "text 'yPS' as capitalized"; + variant "text 'yPT' as capitalized"; + variant "text 'yPU' as capitalized"; + variant "text 'yPV' as capitalized"; + variant "text 'yPW' as capitalized"; + variant "text 'yPX' as capitalized"; + variant "text 'yPY' as capitalized"; + variant "text 'yPZ' as capitalized"; + variant "text 'yQA' as capitalized"; + variant "text 'yQB' as capitalized"; + variant "text 'yQC' as capitalized"; + variant "text 'yQD' as capitalized"; + variant "text 'yQE' as capitalized"; + variant "text 'yQF' as capitalized"; + variant "text 'yQG' as capitalized"; + variant "text 'yQH' as capitalized"; + variant "text 'yQI' as capitalized"; + variant "text 'yQL' as capitalized"; + variant "text 'yQM' as capitalized"; + variant "text 'yQN' as capitalized"; + variant "text 'yQO' as capitalized"; + variant "text 'yQP' as capitalized"; + variant "text 'yQR' as capitalized"; + variant "text 'yQS' as capitalized"; + variant "text 'yQT' as capitalized"; + variant "text 'yQU' as capitalized"; + variant "text 'yQV' as capitalized"; + variant "text 'yQX' as capitalized"; + variant "text 'yQY' as capitalized"; + variant "text 'yRA' as capitalized"; + variant "text 'yRB' as capitalized"; + variant "text 'yRC' as capitalized"; + variant "text 'yRD' as capitalized"; + variant "text 'yRE' as capitalized"; + variant "text 'yRG' as capitalized"; + variant "text 'yRH' as capitalized"; + variant "text 'yRI' as capitalized"; + variant "text 'yRJ' as capitalized"; + variant "text 'yRK' as capitalized"; + variant "text 'yRL' as capitalized"; + variant "text 'yRM' as capitalized"; + variant "text 'yRN' as capitalized"; + variant "text 'yRO' as capitalized"; + variant "text 'yRP' as capitalized"; + variant "text 'yRQ' as capitalized"; + variant "text 'yRR' as capitalized"; + variant "text 'yRS' as capitalized"; + variant "text 'yRT' as capitalized"; + variant "text 'yRU' as capitalized"; + variant "text 'yRV' as capitalized"; + variant "text 'yRX' as capitalized"; + variant "text 'yRZ' as capitalized"; + variant "text 'ySA' as capitalized"; + variant "text 'ySB' as capitalized"; + variant "text 'ySC' as capitalized"; + variant "text 'ySD' as capitalized"; + variant "text 'ySE' as capitalized"; + variant "text 'ySF' as capitalized"; + variant "text 'ySG' as capitalized"; + variant "text 'ySH' as capitalized"; + variant "text 'ySI' as capitalized"; + variant "text 'ySJ' as capitalized"; + variant "text 'ySK' as capitalized"; + variant "text 'ySL' as capitalized"; + variant "text 'ySM' as capitalized"; + variant "text 'ySN' as capitalized"; + variant "text 'ySO' as capitalized"; + variant "text 'ySQ' as capitalized"; + variant "text 'ySR' as capitalized"; + variant "text 'ySS' as capitalized"; + variant "text 'yST' as capitalized"; + variant "text 'ySU' as capitalized"; + variant "text 'ySV' as capitalized"; + variant "text 'ySW' as capitalized"; + variant "text 'ySX' as capitalized"; + variant "text 'ySY' as capitalized"; + variant "text 'ySZ' as capitalized"; + variant "text 'yTA' as capitalized"; + variant "text 'yTB' as capitalized"; + variant "text 'yTC' as capitalized"; + variant "text 'yTD' as capitalized"; + variant "text 'yTE' as capitalized"; + variant "text 'yTF' as capitalized"; + variant "text 'yTG' as capitalized"; + variant "text 'yTH' as capitalized"; + variant "text 'yTI' as capitalized"; + variant "text 'yTJ' as capitalized"; + variant "text 'yTK' as capitalized"; + variant "text 'yTL' as capitalized"; + variant "text 'yTM' as capitalized"; + variant "text 'yTN' as capitalized"; + variant "text 'yTO' as capitalized"; + variant "text 'yTP' as capitalized"; + variant "text 'yTQ' as capitalized"; + variant "text 'yTR' as capitalized"; + variant "text 'yTS' as capitalized"; + variant "text 'yTT' as capitalized"; + variant "text 'yTU' as capitalized"; + variant "text 'yTV' as capitalized"; + variant "text 'yTW' as capitalized"; + variant "text 'yTX' as capitalized"; + variant "text 'yTY' as capitalized"; + variant "text 'yTZ' as capitalized"; + variant "text 'yUA' as capitalized"; + variant "text 'yUB' as capitalized"; + variant "text 'yUC' as capitalized"; + variant "text 'yUD' as capitalized"; + variant "text 'yUE' as capitalized"; + variant "text 'yUF' as capitalized"; + variant "text 'yUH' as capitalized"; + variant "text 'yUI' as capitalized"; + variant "text 'yUJ' as capitalized"; + variant "text 'yUK' as capitalized"; + variant "text 'yUL' as capitalized"; + variant "text 'yUM' as capitalized"; + variant "text 'yUN' as capitalized"; + variant "text 'yUO' as capitalized"; + variant "text 'yUP' as capitalized"; + variant "text 'yUQ' as capitalized"; + variant "text 'yUR' as capitalized"; + variant "text 'yUS' as capitalized"; + variant "text 'yUT' as capitalized"; + variant "text 'yUU' as capitalized"; + variant "text 'yUX' as capitalized"; + variant "text 'yUY' as capitalized"; + variant "text 'yVB' as capitalized"; + variant "text 'yVG' as capitalized"; + variant "text 'yVV' as capitalized"; + variant "text 'yVX' as capitalized"; + variant "text 'yWF' as capitalized"; + variant "text 'yWX' as capitalized"; + variant "text 'yXA' as capitalized"; + variant "text 'yXD' as capitalized"; + variant "text 'yXL' as capitalized"; + variant "text 'yXS' as capitalized"; + variant "text 'yXX' as capitalized"; + variant "text 'yYA' as capitalized"; + variant "text 'yYK' as capitalized"; + variant "text 'yYL' as capitalized"; + variant "text 'yYM' as capitalized"; + variant "text 'yYS' as capitalized"; + variant "text 'yYT' as capitalized"; + variant "text 'yYW' as capitalized"; + variant "text 'yYX' as capitalized"; + variant "text 'yZB' as capitalized"; + variant "text 'yZS' as capitalized"; + variant "text 'yZU' as capitalized"; + variant "text 'yZX' as capitalized"; + variant "text 'zAC' as capitalized"; + variant "text 'zAE' as capitalized"; + variant "text 'zAF' as capitalized"; + variant "text 'zAI' as capitalized"; + variant "text 'zAL' as capitalized"; + variant "text 'zAM' as capitalized"; + variant "text 'zAO' as capitalized"; + variant "text 'zAP' as capitalized"; + variant "text 'zAR' as capitalized"; + variant "text 'zAS' as capitalized"; + variant "text 'zAX' as capitalized"; + variant "text 'zBF' as capitalized"; + variant "text 'zBQ' as capitalized"; + variant "text 'zBV' as capitalized"; + variant "text 'zBZ' as capitalized"; + variant "text 'zCA' as capitalized"; + variant "text 'zCC' as capitalized"; + variant "text 'zCD' as capitalized"; + variant "text 'zCF' as capitalized"; + variant "text 'zCN' as capitalized"; + variant "text 'zCP' as capitalized"; + variant "text 'zCT' as capitalized"; + variant "text 'zCU' as capitalized"; + variant "text 'zDF' as capitalized"; + variant "text 'zEA' as capitalized"; + variant "text 'zEF' as capitalized"; + variant "text 'zEO' as capitalized"; + variant "text 'zEV' as capitalized"; + variant "text 'zEX' as capitalized"; + variant "text 'zEZ' as capitalized"; + variant "text 'zGC' as capitalized"; + variant "text 'zGL' as capitalized"; + variant "text 'zGP' as capitalized"; + variant "text 'zGS' as capitalized"; + variant "text 'zIZ' as capitalized"; + variant "text 'zLS' as capitalized"; + variant "text 'zLV' as capitalized"; + variant "text 'zMA' as capitalized"; + variant "text 'zMH' as capitalized"; + variant "text 'zML' as capitalized"; + variant "text 'zMX' as capitalized"; + variant "text 'zNB' as capitalized"; + variant "text 'zNC' as capitalized"; + variant "text 'zNE' as capitalized"; + variant "text 'zNZ' as capitalized"; + variant "text 'zOG' as capitalized"; + variant "text 'zOM' as capitalized"; + variant "text 'zON' as capitalized"; + variant "text 'zOQ' as capitalized"; + variant "text 'zOR' as capitalized"; + variant "text 'zOT' as capitalized"; + variant "text 'zPC' as capitalized"; + variant "text 'zPE' as capitalized"; + variant "text 'zPP' as capitalized"; + variant "text 'zRN' as capitalized"; + variant "text 'zSP' as capitalized"; + variant "text 'zSS' as capitalized"; + variant "text 'zUC' as capitalized"; + variant "text 'zUE' as capitalized"; + variant "text 'zUM' as capitalized"; + variant "text 'zUZ' as capitalized"; + variant "text 'zYA' as capitalized"; + variant "text 'zYD' as capitalized"; + variant "text 'zYE' as capitalized"; + variant "text 'zYP' as capitalized"; + variant "text 'zYZ' as capitalized"; +}; + + +/* This enumeration defines United Nations Dangerous Goods list. */ +/* AMMONIUM PICRATE dry or wetted with less than 10% water, by mass. DESCRIPTION: AMMONIUM PICRATE dry or wetted with less than 10% water, by mass (Class 1.1D) */ +/* CARTRIDGES FOR WEAPONS with bursting charge. DESCRIPTION: CARTRIDGES FOR WEAPONS with bursting charge (Class 1.1F) */ +/* CARTRIDGES FOR WEAPONS with bursting charge. DESCRIPTION: CARTRIDGES FOR WEAPONS with bursting charge (Class 1.1E) */ +/* CARTRIDGES FOR WEAPONS with bursting charge. DESCRIPTION: CARTRIDGES FOR WEAPONS with bursting charge (Class 1.2F) */ +/* AMMUNITION, INCENDIARY with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, INCENDIARY with or without burster, expelling charge or propelling charge (Class 1.2G) */ +/* AMMUNITION, INCENDIARY with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, INCENDIARY with or without burster, expelling charge or propelling charge (Class 1.3G) */ +/* CARTRIDGES FOR WEAPONS, INERT PROJECTILE or CARTRIDGES, SMALL ARMS. DESCRIPTION: CARTRIDGES FOR WEAPONS, INERT PROJECTILE or CARTRIDGES, SMALL ARMS (Class 1.4S) */ +/* CARTRIDGES FOR WEAPONS, BLANK or CARTRIDGES, SMALL ARMS, BLANK. DESCRIPTION: CARTRIDGES FOR WEAPONS, BLANK or CARTRIDGES, SMALL ARMS, BLANK (Class 1.4S) */ +/* AMMUNITION, SMOKE with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, SMOKE with or without burster, expelling charge or propelling charge (Class 1.2G) */ +/* AMMUNITION, SMOKE with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, SMOKE with or without burster, expelling charge or propelling charge (Class 1.3G) */ +/* AMMUNITION, TEAR-PRODUCING with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, TEAR-PRODUCING with burster, expelling charge or propelling charge (Class 1.2G) */ +/* AMMUNITION, TEAR-PRODUCING with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, TEAR-PRODUCING with burster, expelling charge or propelling charge (Class 1.3G) */ +/* Ammunition, toxic with burster, expelling charge or propelling charge. DESCRIPTION: Ammunition, toxic with burster, expelling charge or propelling charge (Class 1.2K) */ +/* Ammunition, toxic with burster, expelling charge or propelling charge. DESCRIPTION: Ammunition, toxic with burster, expelling charge or propelling charge (Class 1.3K) */ +/* BLACK POWDER (GUNPOWDER), granular or as a meal. DESCRIPTION: BLACK POWDER (GUNPOWDER), granular or as a meal (Class 1.1D) */ +/* BLACK POWDER (GUNPOWDER), COMPRESSED or BLACK POWDER (GUNPOWDER), IN PELLETS. DESCRIPTION: BLACK POWDER (GUNPOWDER), COMPRESSED or BLACK POWDER (GUNPOWDER), IN PELLETS (Class 1.1D) */ +/* DETONATORS, NON-ELECTRIC for blasting. DESCRIPTION: DETONATORS, NON-ELECTRIC for blasting (Class 1.1B) */ +/* DETONATORS, ELECTRIC for blasting. DESCRIPTION: DETONATORS, ELECTRIC for blasting (Class 1.1B) */ +/* BOMBS with bursting charge. DESCRIPTION: BOMBS with bursting charge (Class 1.1F) */ +/* BOMBS with bursting charge. DESCRIPTION: BOMBS with bursting charge (Class 1.1D) */ +/* BOMBS with bursting charge. DESCRIPTION: BOMBS with bursting charge (Class 1.2D) */ +/* BOMBS, PHOTO-FLASH. DESCRIPTION: BOMBS, PHOTO-FLASH (Class 1.1F) */ +/* BOMBS, PHOTO-FLASH. DESCRIPTION: BOMBS, PHOTO-FLASH (Class 1.1D) */ +/* BOMBS, PHOTO-FLASH. DESCRIPTION: BOMBS, PHOTO-FLASH (Class 1.2G) */ +/* BOOSTERS without detonator. DESCRIPTION: BOOSTERS without detonator (Class 1.1D) */ +/* BURSTERS, explosive. DESCRIPTION: BURSTERS, explosive (Class 1.1D) */ +/* PRIMERS, CAP TYPE. DESCRIPTION: PRIMERS, CAP TYPE (Class 1.4S) */ +/* CHARGES, DEMOLITION. DESCRIPTION: CHARGES, DEMOLITION (Class 1.1D) */ +/* CARTRIDGES, FLASH. DESCRIPTION: CARTRIDGES, FLASH (Class 1.1G) */ +/* CARTRIDGES, FLASH. DESCRIPTION: CARTRIDGES, FLASH (Class 1.3G) */ +/* CARTRIDGES, SIGNAL. DESCRIPTION: CARTRIDGES, SIGNAL (Class 1.3G) */ +/* CASES, CARTRIDGE, EMPTY, WITH PRIMER. DESCRIPTION: CASES, CARTRIDGE, EMPTY, WITH PRIMER (Class 1.4S) */ +/* CHARGES, DEPTH. DESCRIPTION: CHARGES, DEPTH (Class 1.1D) */ +/* CHARGES, SHAPED without detonator. DESCRIPTION: CHARGES, SHAPED without detonator (Class 1.1D) */ +/* CHARGES, SUPPLEMENTARY, EXPLOSIVE. DESCRIPTION: CHARGES, SUPPLEMENTARY, EXPLOSIVE (Class 1.1D) */ +/* CORD, DETONATING, flexible. DESCRIPTION: CORD, DETONATING, flexible (Class 1.1D) */ +/* CORD, IGNITER. DESCRIPTION: CORD, IGNITER (Class 1.4G) */ +/* CUTTERS, CABLE, EXPLOSIVE. DESCRIPTION: CUTTERS, CABLE, EXPLOSIVE (Class 1.4S) */ +/* CYCLOTRIMETHYLENETRINITRAMINE (CYCLONITE; HEXOGEN; RDX), WETTED with not less than 15% water, by mass. DESCRIPTION: CYCLOTRIMETHYLENETRINITRAMINE (CYCLONITE; HEXOGEN; RDX), WETTED with not less than 15% water, by mass (Class 1.1D) */ +/* DETONATORS FOR AMMUNITION. DESCRIPTION: DETONATORS FOR AMMUNITION (Class 1.1B) */ +/* DIAZODINITROPHENOL, WETTED with not less than 40% water, or mixture of alcohol and water, by mass. DESCRIPTION: DIAZODINITROPHENOL, WETTED with not less than 40% water, or mixture of alcohol and water, by mass (Class 1.1A) */ +/* DIETHYLENEGLYCOL DINITRATE, DESENSITIZED with not less than 25% non-volatile, water-insoluble phlegmatizer, by mass. DESCRIPTION: DIETHYLENEGLYCOL DINITRATE, DESENSITIZED with not less than 25% non-volatile, water-insoluble phlegmatizer, by mass (Class 1.1D) */ +/* DINITROPHENOL, dry or wetted with less than 15% water, by mass. DESCRIPTION: DINITROPHENOL, dry or wetted with less than 15% water, by mass (Class 1.1D) */ +/* DINITROPHENOLATES, alkali metals, dry or wetted with less than 15% water, by mass. DESCRIPTION: DINITROPHENOLATES, alkali metals, dry or wetted with less than 15% water, by mass (Class 1.3C) */ +/* DINITRORESORCINOL, dry or wetted with less than 15% water, by mass. DESCRIPTION: DINITRORESORCINOL, dry or wetted with less than 15% water, by mass (Class 1.1D) */ +/* HEXANITRODIPHENYLAMINE (DIPICRYLAMINE; HEXYL). DESCRIPTION: HEXANITRODIPHENYLAMINE (DIPICRYLAMINE; HEXYL) (Class 1.1D) */ +/* EXPLOSIVE, BLASTING, TYPE A. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE A (Class 1.1D) */ +/* EXPLOSIVE, BLASTING, TYPE B. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE B (Class 1.1D) */ +/* EXPLOSIVE, BLASTING, TYPE C. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE C (Class 1.1D) */ +/* EXPLOSIVE, BLASTING, TYPE D. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE D (Class 1.1D) */ +/* FLARES, SURFACE. DESCRIPTION: FLARES, SURFACE (Class 1.3G) */ +/* FLARES, AERIAL. DESCRIPTION: FLARES, AERIAL (Class 1.3G) */ +/* FLASH POWDER. DESCRIPTION: FLASH POWDER (Class 1.1G) */ +/* FRACTURING DEVICES, EXPLOSIVE without detonator, for oil wells. DESCRIPTION: FRACTURING DEVICES, EXPLOSIVE without detonator, for oil wells (Class 1.1D) */ +/* FUSE, NON-DETONATING. DESCRIPTION: FUSE, NON-DETONATING (Class 1.3G) */ +/* CORD (FUSE), DETONATING, metal clad. DESCRIPTION: CORD (FUSE), DETONATING, metal clad (Class 1.2D) */ +/* FUSE, IGNITER, tubular, metal clad. DESCRIPTION: FUSE, IGNITER, tubular, metal clad (Class 1.4G) */ +/* CORD (FUSE), DETONATING, MILD EFFECT, metal clad. DESCRIPTION: CORD (FUSE), DETONATING, MILD EFFECT, metal clad (Class 1.4D) */ +/* FUSE, SAFETY. DESCRIPTION: FUSE, SAFETY (Class 1.4S) */ +/* FUZES, DETONATING. DESCRIPTION: FUZES, DETONATING (Class 1.1B) */ +/* FUZES, DETONATING. DESCRIPTION: FUZES, DETONATING (Class 1.2B) */ +/* GRENADES, PRACTICE, hand or rifle. DESCRIPTION: GRENADES, PRACTICE, hand or rifle (Class 1.4S) */ +/* GUANYLNITROSAMINOGUANYLIDENE HYDRAZINE, WETTED with not less than 30% water, by mass. DESCRIPTION: GUANYLNITROSAMINOGUANYLIDENE HYDRAZINE, WETTED with not less than 30% water, by mass (Class 1.1A) */ +/* GUANYLNITROSAMINOGUANYLTETRAZENE (TETRAZENE), WETTED with not less than 30% water, or mixture of alcohol and water, by mass. DESCRIPTION: GUANYLNITROSAMINOGUANYLTETRAZENE (TETRAZENE), WETTED with not less than 30% water, or mixture of alcohol and water, by mass (Class 1.1A) */ +/* HEXOLITE (HEXOTOL), dry or wetted with less than 15% water, by mass. DESCRIPTION: HEXOLITE (HEXOTOL), dry or wetted with less than 15% water, by mass (Class 1.1D) */ +/* IGNITERS. DESCRIPTION: IGNITERS (Class 1.1G) */ +/* JET PERFORATING GUNS, CHARGED, oil well, without detonator. DESCRIPTION: JET PERFORATING GUNS, CHARGED, oil well, without detonator (Class 1.1D) */ +/* LEAD AZIDE, WETTED with not less than 20% water, or mixture of alcohol and water, by mass. DESCRIPTION: LEAD AZIDE, WETTED with not less than 20% water, or mixture of alcohol and water, by mass (Class 1.1A) */ +/* LEAD STYPHNATE (LEAD TRINITRORESORCINATE), WETTED with not less than 20% water, or mixture of alcohol and water, by mass. DESCRIPTION: LEAD STYPHNATE (LEAD TRINITRORESORCINATE), WETTED with not less than 20% water, or mixture of alcohol and water, by mass (Class 1.1A) */ +/* LIGHTERS, FUSE. DESCRIPTION: LIGHTERS, FUSE (Class 1.4S) */ +/* DEFLAGRATING METAL SALTS OF AROMATIC NITRODERIVATIVES, N.O.S.. DESCRIPTION: DEFLAGRATING METAL SALTS OF AROMATIC NITRODERIVATIVES, N.O.S. (Class 1.3C) */ +/* MANNITOL HEXANITRATE (NITROMANNITE), WETTED with not less than 40% water, or mixture of alcohol and water, by mass. DESCRIPTION: MANNITOL HEXANITRATE (NITROMANNITE), WETTED with not less than 40% water, or mixture of alcohol and water, by mass (Class 1.1D) */ +/* MERCURY FULMINATE, WETTED with not less than 20% water, or mixture of alcohol and water, by mass. DESCRIPTION: MERCURY FULMINATE, WETTED with not less than 20% water, or mixture of alcohol and water, by mass (Class 1.1A) */ +/* MINES with bursting charge. DESCRIPTION: MINES with bursting charge (Class 1.1F) */ +/* MINES with bursting charge. DESCRIPTION: MINES with bursting charge (Class 1.1D) */ +/* MINES with bursting charge. DESCRIPTION: MINES with bursting charge (Class 1.2D) */ +/* NITROGLYCERIN, DESENSITIZED with not less than 40% non-volatile water-insoluble phlegmatizer, by mass. DESCRIPTION: NITROGLYCERIN, DESENSITIZED with not less than 40% non-volatile water-insoluble phlegmatizer, by mass (Class 1.1D) */ +/* NITROGLYCERIN SOLUTION IN ALCOHOL with more than 1% but not more than 10% nitroglycerin. DESCRIPTION: NITROGLYCERIN SOLUTION IN ALCOHOL with more than 1% but not more than 10% nitroglycerin (Class 1.1D) */ +/* NITROSTARCH, dry or wetted with less than 20% water, by mass. DESCRIPTION: NITROSTARCH, dry or wetted with less than 20% water, by mass (Class 1.1D) */ +/* NITRO UREA. DESCRIPTION: NITRO UREA (Class 1.1D) */ +/* PENTAERYTHRITE TETRANITRATE (PENTAERYTHRITOL TETRANITRATE; PETN), WETTED with not less than 25% water, by mass, or DESENSITIZED with not less than 15% phlegmatizer, by mass. DESCRIPTION: PENTAERYTHRITE TETRANITRATE (PENTAERYTHRITOL TETRANITRATE; PETN), WETTED with not less than 25% water, by mass, or DESENSITIZED with not less than 15% phlegmatizer, by mass (Class 1.1D) */ +/* PENTOLITE, dry or wetted with less than 15% water, by mass. DESCRIPTION: PENTOLITE, dry or wetted with less than 15% water, by mass (Class 1.1D) */ +/* TRINITROANILINE (PICRAMIDE). DESCRIPTION: TRINITROANILINE (PICRAMIDE) (Class 1.1D) */ +/* TRINITROPHENOL (PICRIC ACID), dry or wetted with less than 30% water, by mass. DESCRIPTION: TRINITROPHENOL (PICRIC ACID), dry or wetted with less than 30% water, by mass (Class 1.1D) */ +/* TRINITROCHLOROBENZENE (PICRYL CHLORIDE). DESCRIPTION: TRINITROCHLOROBENZENE (PICRYL CHLORIDE) (Class 1.1D) */ +/* POWDER CAKE (POWDER PASTE), WETTED with not less than 25% water, by mass. DESCRIPTION: POWDER CAKE (POWDER PASTE), WETTED with not less than 25% water, by mass (Class 1.3C) */ +/* POWDER, SMOKELESS. DESCRIPTION: POWDER, SMOKELESS (Class 1.1C) */ +/* POWDER, SMOKELESS. DESCRIPTION: POWDER, SMOKELESS (Class 1.3C) */ +/* PROJECTILES with bursting charge. DESCRIPTION: PROJECTILES with bursting charge (Class 1.1F) */ +/* PROJECTILES with bursting charge. DESCRIPTION: PROJECTILES with bursting charge (Class 1.1D) */ +/* PROJECTILES with bursting charge. DESCRIPTION: PROJECTILES with bursting charge (Class 1.2D) */ +/* AMMUNITION, ILLUMINATING with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, ILLUMINATING with or without burster, expelling charge or propelling charge (Class 1.2G) */ +/* RELEASE DEVICES, EXPLOSIVE. DESCRIPTION: RELEASE DEVICES, EXPLOSIVE (Class 1.4S) */ +/* RIVETS, EXPLOSIVE. DESCRIPTION: RIVETS, EXPLOSIVE (Class 1.4S) */ +/* ROCKETS with bursting charge. DESCRIPTION: ROCKETS with bursting charge (Class 1.1F) */ +/* ROCKETS with bursting charge. DESCRIPTION: ROCKETS with bursting charge (Class 1.1E) */ +/* ROCKETS with bursting charge. DESCRIPTION: ROCKETS with bursting charge (Class 1.2E) */ +/* ROCKETS with inert head. DESCRIPTION: ROCKETS with inert head (Class 1.3C) */ +/* ROCKET MOTORS. DESCRIPTION: ROCKET MOTORS (Class 1.3C) */ +/* SAMPLES, EXPLOSIVE, other than initiating explosive. DESCRIPTION: SAMPLES, EXPLOSIVE, other than initiating explosive (Class 1) */ +/* SIGNAL DEVICES, HAND. DESCRIPTION: SIGNAL DEVICES, HAND (Class 1.4G) */ +/* SIGNALS, RAILWAY TRACK, EXPLOSIVE. DESCRIPTION: SIGNALS, RAILWAY TRACK, EXPLOSIVE (Class 1.1G) */ +/* SIGNALS, RAILWAY TRACK, EXPLOSIVE. DESCRIPTION: SIGNALS, RAILWAY TRACK, EXPLOSIVE (Class 1.4S) */ +/* SIGNALS, DISTRESS, ship. DESCRIPTION: SIGNALS, DISTRESS, ship (Class 1.1G) */ +/* SIGNALS, DISTRESS, ship. DESCRIPTION: SIGNALS, DISTRESS, ship (Class 1.3G) */ +/* SIGNALS, SMOKE. DESCRIPTION: SIGNALS, SMOKE (Class 1.1G) */ +/* SIGNALS, SMOKE. DESCRIPTION: SIGNALS, SMOKE (Class 1.4G) */ +/* SOUNDING DEVICES, EXPLOSIVE. DESCRIPTION: SOUNDING DEVICES, EXPLOSIVE (Class 1.2F) */ +/* TETRANITROANILINE. DESCRIPTION: TETRANITROANILINE (Class 1.1D) */ +/* TRINITROPHENYLMETHYLNITRAMINE (TETRYL). DESCRIPTION: TRINITROPHENYLMETHYLNITRAMINE (TETRYL) (Class 1.1D) */ +/* TRINITROTOLUENE (TNT), dry or wetted with less than 30% water, by mass. DESCRIPTION: TRINITROTOLUENE (TNT), dry or wetted with less than 30% water, by mass (Class 1.1D) */ +/* TRACERS FOR AMMUNITION. DESCRIPTION: TRACERS FOR AMMUNITION (Class 1.3G) */ +/* TRINITROANISOLE. DESCRIPTION: TRINITROANISOLE (Class 1.1D) */ +/* TRINITROBENZENE, dry or wetted with less than 30% water, by mass. DESCRIPTION: TRINITROBENZENE, dry or wetted with less than 30% water, by mass (Class 1.1D) */ +/* TRINITROBENZOIC ACID, dry or wetted with less than 30% water, by mass. DESCRIPTION: TRINITROBENZOIC ACID, dry or wetted with less than 30% water, by mass (Class 1.1D) */ +/* TRINITRO-m-CRESOL. DESCRIPTION: TRINITRO-m-CRESOL (Class 1.1D) */ +/* TRINITRONAPHTHALENE. DESCRIPTION: TRINITRONAPHTHALENE (Class 1.1D) */ +/* TRINITROPHENETOLE. DESCRIPTION: TRINITROPHENETOLE (Class 1.1D) */ +/* TRINITRORESORCINOL (STYPHNIC ACID), dry or wetted with less than 20% water, or mixture of alcohol and water, by mass. DESCRIPTION: TRINITRORESORCINOL (STYPHNIC ACID), dry or wetted with less than 20% water, or mixture of alcohol and water, by mass (Class 1.1D) */ +/* UREA NITRATE, dry or wetted with less than 20% water, by mass. DESCRIPTION: UREA NITRATE, dry or wetted with less than 20% water, by mass (Class 1.1D) */ +/* WARHEADS, TORPEDO with bursting charge. DESCRIPTION: WARHEADS, TORPEDO with bursting charge (Class 1.1D) */ +/* AMMONIUM NITRATE with more than 0.2% combustible substances, including any organic substance calculated as carbon, to the exclusion of any other added substance. DESCRIPTION: AMMONIUM NITRATE with more than 0.2% combustible substances, including any organic substance calculated as carbon, to the exclusion of any other added substance (Class 1.1D) */ +/* AMMONIUM NITRATE FERTILIZER, which is more liable to explode than ammonium nitrate with 0.2% combustible substances, including any organic substance calculated as carbon, to the exclusion of any other added substance. DESCRIPTION: AMMONIUM NITRATE FERTILIZER, which is more liable to explode than ammonium nitrate with 0.2% combustible substances, including any organic substance calculated as carbon, to the exclusion of any other added substance (Class 1.1D) */ +/* BARIUM AZIDE, dry or wetted with less than 50% water, by mass. DESCRIPTION: BARIUM AZIDE, dry or wetted with less than 50% water, by mass (Class 1.1A) */ +/* BOOSTERS WITH DETONATOR. DESCRIPTION: BOOSTERS WITH DETONATOR (Class 1.1B) */ +/* CYCLOTETRAMETHYLENETETRANITRAMINE (HMX; OCTOGEN), WETTED with not less than 15% water, by mass. DESCRIPTION: CYCLOTETRAMETHYLENETETRANITRAMINE (HMX; OCTOGEN), WETTED with not less than 15% water, by mass (Class 1.1D) */ +/* SODIUM DINITRO-o-CRESOLATE, dry or wetted with less than 15% water, by mass. DESCRIPTION: SODIUM DINITRO-o-CRESOLATE, dry or wetted with less than 15% water, by mass (Class 1.3C) */ +/* SODIUM PICRAMATE, dry or wetted with less than 20% water, by mass. DESCRIPTION: SODIUM PICRAMATE, dry or wetted with less than 20% water, by mass (Class 1.3C) */ +/* ZIRCONIUM PICRAMATE, dry or wetted with less than 20% water, by mass. DESCRIPTION: ZIRCONIUM PICRAMATE, dry or wetted with less than 20% water, by mass (Class 1.3C) */ +/* CHARGES, SHAPED, FLEXIBLE, LINEAR. DESCRIPTION: CHARGES, SHAPED, FLEXIBLE, LINEAR (Class 1.4D) */ +/* ROCKETS, LINE-THROWING. DESCRIPTION: ROCKETS, LINE-THROWING (Class 1.2G) */ +/* ROCKETS, LINE-THROWING. DESCRIPTION: ROCKETS, LINE-THROWING (Class 1.3G) */ +/* EXPLOSIVE, BLASTING, TYPE E. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE E (Class 1.1D) */ +/* CHARGES, PROPELLING, FOR CANNON. DESCRIPTION: CHARGES, PROPELLING, FOR CANNON (Class 1.3C) */ +/* AMMUNITION, INCENDIARY, WHITE PHOSPHORUS with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, INCENDIARY, WHITE PHOSPHORUS with burster, expelling charge or propelling charge (Class 1.2H) */ +/* AMMUNITION, INCENDIARY, WHITE PHOSPHORUS with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, INCENDIARY, WHITE PHOSPHORUS with burster, expelling charge or propelling charge (Class 1.3H) */ +/* AMMUNITION, SMOKE, WHITE PHOSPHORUS with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, SMOKE, WHITE PHOSPHORUS with burster, expelling charge or propelling charge (Class 1.2H) */ +/* AMMUNITION, SMOKE, WHITE PHOSPHORUS with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, SMOKE, WHITE PHOSPHORUS with burster, expelling charge or propelling charge (Class 1.3H) */ +/* AMMUNITION, INCENDIARY, liquid or gel, with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, INCENDIARY, liquid or gel, with burster, expelling charge or propelling charge (Class 1.3J) */ +/* CONTRIVANCES, WATER-ACTIVATED with burster, expelling charge or propelling charge. DESCRIPTION: CONTRIVANCES, WATER-ACTIVATED with burster, expelling charge or propelling charge (Class 1.2L) */ +/* CONTRIVANCES, WATER-ACTIVATED with burster, expelling charge or propelling charge. DESCRIPTION: CONTRIVANCES, WATER-ACTIVATED with burster, expelling charge or propelling charge (Class 1.3L) */ +/* ROCKET MOTORS WITH HYPERGOLIC LIQUIDS with or without expelling charge. DESCRIPTION: ROCKET MOTORS WITH HYPERGOLIC LIQUIDS with or without expelling charge (Class 1.3L) */ +/* AMMUNITION, ILLUMINATING with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, ILLUMINATING with or without burster, expelling charge or propelling charge (Class 1.3G) */ +/* DETONATORS, ELECTRIC for blasting. DESCRIPTION: DETONATORS, ELECTRIC for blasting (Class 1.4B) */ +/* FUZES, DETONATING. DESCRIPTION: FUZES, DETONATING (Class 1.4B) */ +/* OCTOLITE (OCTOL), dry or wetted with less than 15% water, by mass. DESCRIPTION: OCTOLITE (OCTOL), dry or wetted with less than 15% water, by mass (Class 1.1D) */ +/* DETONATORS, NON-ELECTRIC for blasting. DESCRIPTION: DETONATORS, NON-ELECTRIC for blasting (Class 1.4B) */ +/* BOOSTERS WITH DETONATOR. DESCRIPTION: BOOSTERS WITH DETONATOR (Class 1.2B) */ +/* CHARGES, PROPELLING. DESCRIPTION: CHARGES, PROPELLING (Class 1.1C) */ +/* CHARGES, PROPELLING. DESCRIPTION: CHARGES, PROPELLING (Class 1.3C) */ +/* CARTRIDGES, POWER DEVICE. DESCRIPTION: CARTRIDGES, POWER DEVICE (Class 1.3C) */ +/* CARTRIDGES, POWER DEVICE. DESCRIPTION: CARTRIDGES, POWER DEVICE (Class 1.4C) */ +/* CARTRIDGES, OIL WELL. DESCRIPTION: CARTRIDGES, OIL WELL (Class 1.3C) */ +/* CARTRIDGES, OIL WELL. DESCRIPTION: CARTRIDGES, OIL WELL (Class 1.4C) */ +/* CHARGES, PROPELLING, FOR CANNON. DESCRIPTION: CHARGES, PROPELLING, FOR CANNON (Class 1.1C) */ +/* ROCKET MOTORS. DESCRIPTION: ROCKET MOTORS (Class 1.1C) */ +/* ROCKET MOTORS. DESCRIPTION: ROCKET MOTORS (Class 1.2C) */ +/* NITROGUANIDINE (PICRITE), dry or wetted with less than 20% water, by mass. DESCRIPTION: NITROGUANIDINE (PICRITE), dry or wetted with less than 20% water, by mass (Class 1.1D) */ +/* BOOSTERS without detonator. DESCRIPTION: BOOSTERS without detonator (Class 1.2D) */ +/* GRENADES, hand or rifle, with bursting charge. DESCRIPTION: GRENADES, hand or rifle, with bursting charge (Class 1.1D) */ +/* GRENADES, hand or rifle, with bursting charge. DESCRIPTION: GRENADES, hand or rifle, with bursting charge (Class 1.2D) */ +/* WARHEADS, ROCKET with bursting charge. DESCRIPTION: WARHEADS, ROCKET with bursting charge (Class 1.1D) */ +/* WARHEADS, ROCKET with bursting charge. DESCRIPTION: WARHEADS, ROCKET with bursting charge (Class 1.2D) */ +/* CHARGES, SHAPED, FLEXIBLE, LINEAR. DESCRIPTION: CHARGES, SHAPED, FLEXIBLE, LINEAR (Class 1.1D) */ +/* CORD, DETONATING, flexible. DESCRIPTION: CORD, DETONATING, flexible (Class 1.4D) */ +/* CORD (FUSE), DETONATING, metal clad. DESCRIPTION: CORD (FUSE), DETONATING, metal clad (Class 1.1D) */ +/* BOMBS with bursting charge. DESCRIPTION: BOMBS with bursting charge (Class 1.2F) */ +/* GRENADES, hand or rifle, with bursting charge. DESCRIPTION: GRENADES, hand or rifle, with bursting charge (Class 1.1F) */ +/* GRENADES, hand or rifle, with bursting charge. DESCRIPTION: GRENADES, hand or rifle, with bursting charge (Class 1.2F) */ +/* MINES with bursting charge. DESCRIPTION: MINES with bursting charge (Class 1.2F) */ +/* ROCKETS with bursting charge. DESCRIPTION: ROCKETS with bursting charge (Class 1.2F) */ +/* SOUNDING DEVICES, EXPLOSIVE. DESCRIPTION: SOUNDING DEVICES, EXPLOSIVE (Class 1.1F) */ +/* AMMUNITION, ILLUMINATING with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, ILLUMINATING with or without burster, expelling charge or propelling charge (Class 1.4G) */ +/* BOMBS, PHOTO-FLASH. DESCRIPTION: BOMBS, PHOTO-FLASH (Class 1.3G) */ +/* AMMUNITION, INCENDIARY with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, INCENDIARY with or without burster, expelling charge or propelling charge (Class 1.4G) */ +/* AMMUNITION, TEAR-PRODUCING with burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, TEAR-PRODUCING with burster, expelling charge or propelling charge (Class 1.4G) */ +/* AMMUNITION, SMOKE with or without burster, expelling charge or propelling charge. DESCRIPTION: AMMUNITION, SMOKE with or without burster, expelling charge or propelling charge (Class 1.4G) */ +/* FLASH POWDER. DESCRIPTION: FLASH POWDER (Class 1.3G) */ +/* TRACERS FOR AMMUNITION. DESCRIPTION: TRACERS FOR AMMUNITION (Class 1.4G) */ +/* CARTRIDGES, SIGNAL. DESCRIPTION: CARTRIDGES, SIGNAL (Class 1.4G) */ +/* SIGNALS, SMOKE. DESCRIPTION: SIGNALS, SMOKE (Class 1.2G) */ +/* IGNITERS. DESCRIPTION: IGNITERS (Class 1.2G) */ +/* IGNITERS. DESCRIPTION: IGNITERS (Class 1.3G) */ +/* FUZES, IGNITING. DESCRIPTION: FUZES, IGNITING (Class 1.3G) */ +/* FUZES, IGNITING. DESCRIPTION: FUZES, IGNITING (Class 1.4G) */ +/* GRENADES, PRACTICE, hand or rifle. DESCRIPTION: GRENADES, PRACTICE, hand or rifle (Class 1.3G) */ +/* PRIMERS, TUBULAR. DESCRIPTION: PRIMERS, TUBULAR (Class 1.3G) */ +/* PRIMERS, TUBULAR. DESCRIPTION: PRIMERS, TUBULAR (Class 1.4G) */ +/* CARTRIDGES FOR WEAPONS with bursting charge. DESCRIPTION: CARTRIDGES FOR WEAPONS with bursting charge (Class 1.2E) */ +/* ROCKET MOTORS WITH HYPERGOLIC LIQUIDS with or without expelling charge. DESCRIPTION: ROCKET MOTORS WITH HYPERGOLIC LIQUIDS with or without expelling charge (Class 1.2L) */ +/* CARTRIDGES, POWER DEVICE. DESCRIPTION: CARTRIDGES, POWER DEVICE (Class 1.4S) */ +/* PROJECTILES with bursting charge. DESCRIPTION: PROJECTILES with bursting charge (Class 1.2F) */ +/* IGNITERS. DESCRIPTION: IGNITERS (Class 1.4G) */ +/* CARTRIDGES FOR WEAPONS, BLANK. DESCRIPTION: CARTRIDGES FOR WEAPONS, BLANK (Class 1.1C) */ +/* CARTRIDGES FOR WEAPONS, BLANK or CARTRIDGES, SMALL ARMS, BLANK. DESCRIPTION: CARTRIDGES FOR WEAPONS, BLANK or CARTRIDGES, SMALL ARMS, BLANK (Class 1.3C) */ +/* CARTRIDGES FOR WEAPONS, INERT PROJECTILE. DESCRIPTION: CARTRIDGES FOR WEAPONS, INERT PROJECTILE (Class 1.2C) */ +/* TORPEDOES with bursting charge. DESCRIPTION: TORPEDOES with bursting charge (Class 1.1E) */ +/* TORPEDOES with bursting charge. DESCRIPTION: TORPEDOES with bursting charge (Class 1.1F) */ +/* EXPLOSIVE, BLASTING, TYPE B. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE B (Class 1.5D) */ +/* EXPLOSIVE, BLASTING, TYPE E. DESCRIPTION: EXPLOSIVE, BLASTING, TYPE E (Class 1.5D) */ +/* FIREWORKS. DESCRIPTION: FIREWORKS (Class 1.1G) */ +/* FIREWORKS. DESCRIPTION: FIREWORKS (Class 1.2G) */ +/* FIREWORKS. DESCRIPTION: FIREWORKS (Class 1.3G) */ +/* FIREWORKS. DESCRIPTION: FIREWORKS (Class 1.4G) */ +/* FIREWORKS. DESCRIPTION: FIREWORKS (Class 1.4S) */ +/* CARTRIDGES FOR WEAPONS, BLANK or CARTRIDGES, SMALL ARMS, BLANK. DESCRIPTION: CARTRIDGES FOR WEAPONS, BLANK or CARTRIDGES, SMALL ARMS, BLANK (Class 1.4C) */ +/* CARTRIDGES FOR WEAPONS, INERT PROJECTILE or CARTRIDGES, SMALL ARMS. DESCRIPTION: CARTRIDGES FOR WEAPONS, INERT PROJECTILE or CARTRIDGES, SMALL ARMS (Class 1.4C) */ +/* NITROCELLULOSE, dry or wetted with less than 25% water (or alcohol), by mass. DESCRIPTION: NITROCELLULOSE, dry or wetted with less than 25% water (or alcohol), by mass (Class 1.1D) */ +/* NITROCELLULOSE, unmodified or plasticized with less than 18% plasticizing substance, by mass. DESCRIPTION: NITROCELLULOSE, unmodified or plasticized with less than 18% plasticizing substance, by mass (Class 1.1D) */ +/* NITROCELLULOSE, WETTED with not less than 25% alcohol, by mass. DESCRIPTION: NITROCELLULOSE, WETTED with not less than 25% alcohol, by mass (Class 1.3C) */ +/* NITROCELLULOSE, PLASTICIZED with not less than 18% plasticizing substance, by mass. DESCRIPTION: NITROCELLULOSE, PLASTICIZED with not less than 18% plasticizing substance, by mass (Class 1.3C) */ +/* PROJECTILES with bursting charge. DESCRIPTION: PROJECTILES with bursting charge (Class 1.4D) */ +/* PROJECTILES, inert with tracer. DESCRIPTION: PROJECTILES, inert with tracer (Class 1.4S) */ +/* PROJECTILES with burster or expelling charge. DESCRIPTION: PROJECTILES with burster or expelling charge (Class 1.2D) */ +/* PROJECTILES with burster or expelling charge. DESCRIPTION: PROJECTILES with burster or expelling charge (Class 1.4D) */ +/* CARTRIDGES FOR WEAPONS with bursting charge. DESCRIPTION: CARTRIDGES FOR WEAPONS with bursting charge (Class 1.4F) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4S) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4B) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4C) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4D) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4G) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.1L) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.2L) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.3L) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.1L) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.2L) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.3L) */ +/* DETONATOR ASSEMBLIES, NON-ELECTRIC for blasting. DESCRIPTION: DETONATOR ASSEMBLIES, NON-ELECTRIC for blasting (Class 1.1B) */ +/* DETONATOR ASSEMBLIES, NON-ELECTRIC for blasting. DESCRIPTION: DETONATOR ASSEMBLIES, NON-ELECTRIC for blasting (Class 1.4B) */ +/* AMMUNITION, PRACTICE. DESCRIPTION: AMMUNITION, PRACTICE (Class 1.4G) */ +/* AMMUNITION, PROOF. DESCRIPTION: AMMUNITION, PROOF (Class 1.4G) */ +/* DETONATORS FOR AMMUNITION. DESCRIPTION: DETONATORS FOR AMMUNITION (Class 1.2B) */ +/* DETONATORS FOR AMMUNITION. DESCRIPTION: DETONATORS FOR AMMUNITION (Class 1.4B) */ +/* DETONATORS FOR AMMUNITION. DESCRIPTION: DETONATORS FOR AMMUNITION (Class 1.4S) */ +/* FUZES, DETONATING. DESCRIPTION: FUZES, DETONATING (Class 1.4S) */ +/* FUZES, IGNITING. DESCRIPTION: FUZES, IGNITING (Class 1.4S) */ +/* WARHEADS, ROCKET with bursting charge. DESCRIPTION: WARHEADS, ROCKET with bursting charge (Class 1.1F) */ +/* WARHEADS, ROCKET with burster or expelling charge. DESCRIPTION: WARHEADS, ROCKET with burster or expelling charge (Class 1.4D) */ +/* WARHEADS, ROCKET with burster or expelling charge. DESCRIPTION: WARHEADS, ROCKET with burster or expelling charge (Class 1.4F) */ +/* GRENADES, PRACTICE, hand or rifle. DESCRIPTION: GRENADES, PRACTICE, hand or rifle (Class 1.2G) */ +/* SIGNAL DEVICES, HAND. DESCRIPTION: SIGNAL DEVICES, HAND (Class 1.4S) */ +/* SOUNDING DEVICES, EXPLOSIVE. DESCRIPTION: SOUNDING DEVICES, EXPLOSIVE (Class 1.1D) */ +/* SOUNDING DEVICES, EXPLOSIVE. DESCRIPTION: SOUNDING DEVICES, EXPLOSIVE (Class 1.2D) */ +/* PRIMERS, TUBULAR. DESCRIPTION: PRIMERS, TUBULAR (Class 1.4S) */ +/* PRIMERS, CAP TYPE. DESCRIPTION: PRIMERS, CAP TYPE (Class 1.1B) */ +/* PRIMERS, CAP TYPE. DESCRIPTION: PRIMERS, CAP TYPE (Class 1.4B) */ +/* CASES, CARTRIDGE, EMPTY, WITH PRIMER. DESCRIPTION: CASES, CARTRIDGE, EMPTY, WITH PRIMER (Class 1.4C) */ +/* ARTICLES, PYROPHORIC. DESCRIPTION: ARTICLES, PYROPHORIC (Class 1.2L) */ +/* CARTRIDGES, POWER DEVICE. DESCRIPTION: CARTRIDGES, POWER DEVICE (Class 1.2C) */ +/* COMPONENTS, EXPLOSIVE TRAIN, N.O.S.. DESCRIPTION: COMPONENTS, EXPLOSIVE TRAIN, N.O.S. (Class 1.2B) */ +/* COMPONENTS, EXPLOSIVE TRAIN, N.O.S.. DESCRIPTION: COMPONENTS, EXPLOSIVE TRAIN, N.O.S. (Class 1.4B) */ +/* COMPONENTS, EXPLOSIVE TRAIN, N.O.S.. DESCRIPTION: COMPONENTS, EXPLOSIVE TRAIN, N.O.S. (Class 1.4S) */ +/* 5-NITROBENZOTRIAZOL. DESCRIPTION: 5-NITROBENZOTRIAZOL (Class 1.1D) */ +/* TRINITROBENZENESULPHONIC ACID. DESCRIPTION: TRINITROBENZENESULPHONIC ACID (Class 1.1D) */ +/* TRINITROFLUORENONE. DESCRIPTION: TRINITROFLUORENONE (Class 1.1D) */ +/* TRINITROTOLUENE (TNT) AND TRINITROBENZENE MIXTURE or TRINITROTOLUENE (TNT) AND HEXANITROSTILBENE MIXTURE. DESCRIPTION: TRINITROTOLUENE (TNT) AND TRINITROBENZENE MIXTURE or TRINITROTOLUENE (TNT) AND HEXANITROSTILBENE MIXTURE (Class 1.1D) */ +/* TRINITROTOLUENE (TNT) MIXTURE CONTAINING TRINITROBENZENE AND HEXANITROSTILBENE. DESCRIPTION: TRINITROTOLUENE (TNT) MIXTURE CONTAINING TRINITROBENZENE AND HEXANITROSTILBENE (Class 1.1D) */ +/* TRITONAL. DESCRIPTION: TRITONAL (Class 1.1D) */ +/* CYCLOTRIMETHYLENETRINITRAMINE (CYCLONITE; HEXOGEN; RDX) AND CYCLOTETRAMETHYLENETETRANITRAMINE (HMX; OCTOGEN) MIXTURE, WETTED with not less than 15% water, by mass or DESENSITIZED with not lest than 10% phlegmatiser by mass. DESCRIPTION: CYCLOTRIMETHYLENETRINITRAMINE (CYCLONITE; HEXOGEN; RDX) AND CYCLOTETRAMETHYLENETETRANITRAMINE (HMX; OCTOGEN) MIXTURE, WETTED with not less than 15% water, by mass or DESENSITIZED with not lest than 10% phlegmatiser by mass (Class 1.1D) */ +/* HEXANITROSTILBENE. DESCRIPTION: HEXANITROSTILBENE (Class 1.1D) */ +/* HEXOTONAL. DESCRIPTION: HEXOTONAL (Class 1.1D) */ +/* TRINITRORESORCINOL (STYPHNIC ACID), WETTED with not less than 20% water, or mixture of alcohol and water, by mass. DESCRIPTION: TRINITRORESORCINOL (STYPHNIC ACID), WETTED with not less than 20% water, or mixture of alcohol and water, by mass (Class 1.1D) */ +/* ROCKET MOTORS, LIQUID FUELLED. DESCRIPTION: ROCKET MOTORS, LIQUID FUELLED (Class 1.2J) */ +/* ROCKET MOTORS, LIQUID FUELLED. DESCRIPTION: ROCKET MOTORS, LIQUID FUELLED (Class 1.3J) */ +/* ROCKETS, LIQUID FUELLED with bursting charge. DESCRIPTION: ROCKETS, LIQUID FUELLED with bursting charge (Class 1.1J) */ +/* ROCKETS, LIQUID FUELLED with bursting charge. DESCRIPTION: ROCKETS, LIQUID FUELLED with bursting charge (Class 1.2J) */ +/* BOMBS WITH FLAMMABLE LIQUID with bursting charge. DESCRIPTION: BOMBS WITH FLAMMABLE LIQUID with bursting charge (Class 1.1J) */ +/* BOMBS WITH FLAMMABLE LIQUID with bursting charge. DESCRIPTION: BOMBS WITH FLAMMABLE LIQUID with bursting charge (Class 1.2J) */ +/* DIPICRYL SULPHIDE, dry or wetted with less than 10% water, by mass. DESCRIPTION: DIPICRYL SULPHIDE, dry or wetted with less than 10% water, by mass (Class 1.1D) */ +/* AMMONIUM PERCHLORATE. DESCRIPTION: AMMONIUM PERCHLORATE (Class 1.1D) */ +/* FLARES, AERIAL. DESCRIPTION: FLARES, AERIAL (Class 1.4G) */ +/* FLARES, AERIAL. DESCRIPTION: FLARES, AERIAL (Class 1.4S) */ +/* CARTRIDGES, SIGNAL. DESCRIPTION: CARTRIDGES, SIGNAL (Class 1.4S) */ +/* DINITROSOBENZENE. DESCRIPTION: DINITROSOBENZENE (Class 1.3C) */ +/* TETRAZOL-1-ACETIC ACID. DESCRIPTION: TETRAZOL-1-ACETIC ACID (Class 1.4C) */ +/* FUZES, DETONATING with protective features. DESCRIPTION: FUZES, DETONATING with protective features (Class 1.1D) */ +/* FUZES, DETONATING with protective features. DESCRIPTION: FUZES, DETONATING with protective features (Class 1.2D) */ +/* FUZES, DETONATING with protective features. DESCRIPTION: FUZES, DETONATING with protective features (Class 1.4D) */ +/* PENTAERYTHRITE TETRANITRATE (PENTAERYTHRITOL TETRANITRATE; PETN) with not less than 7% wax, by mass. DESCRIPTION: PENTAERYTHRITE TETRANITRATE (PENTAERYTHRITOL TETRANITRATE; PETN) with not less than 7% wax, by mass (Class 1.1D) */ +/* CARTRIDGES FOR WEAPONS with bursting charge. DESCRIPTION: CARTRIDGES FOR WEAPONS with bursting charge (Class 1.4E) */ +/* CARTRIDGES FOR WEAPONS, BLANK. DESCRIPTION: CARTRIDGES FOR WEAPONS, BLANK (Class 1.2C) */ +/* CHARGES, PROPELLING, FOR CANNON. DESCRIPTION: CHARGES, PROPELLING, FOR CANNON (Class 1.2C) */ +/* CHARGES, PROPELLING. DESCRIPTION: CHARGES, PROPELLING (Class 1.2C) */ +/* CARTRIDGES FOR WEAPONS, INERT PROJECTILE or CARTRIDGES, SMALL ARMS. DESCRIPTION: CARTRIDGES FOR WEAPONS, INERT PROJECTILE or CARTRIDGES, SMALL ARMS (Class 1.3C) */ +/* FLARES, SURFACE. DESCRIPTION: FLARES, SURFACE (Class 1.1G) */ +/* FLARES, SURFACE. DESCRIPTION: FLARES, SURFACE (Class 1.2G) */ +/* FLARES, AERIAL. DESCRIPTION: FLARES, AERIAL (Class 1.1G) */ +/* FLARES, AERIAL. DESCRIPTION: FLARES, AERIAL (Class 1.2G) */ +/* PROJECTILES, inert with tracer. DESCRIPTION: PROJECTILES, inert with tracer (Class 1.3G) */ +/* PROJECTILES, inert with tracer. DESCRIPTION: PROJECTILES, inert with tracer (Class 1.4G) */ +/* PROJECTILES with burster or expelling charge. DESCRIPTION: PROJECTILES with burster or expelling charge (Class 1.2F) */ +/* PROJECTILES with burster or expelling charge. DESCRIPTION: PROJECTILES with burster or expelling charge (Class 1.4F) */ +/* ARTICLES, PYROTECHNIC for technical purposes. DESCRIPTION: ARTICLES, PYROTECHNIC for technical purposes (Class 1.1G) */ +/* ARTICLES, PYROTECHNIC for technical purposes. DESCRIPTION: ARTICLES, PYROTECHNIC for technical purposes (Class 1.2G) */ +/* ARTICLES, PYROTECHNIC for technical purposes. DESCRIPTION: ARTICLES, PYROTECHNIC for technical purposes (Class 1.3G) */ +/* ARTICLES, PYROTECHNIC for technical purposes. DESCRIPTION: ARTICLES, PYROTECHNIC for technical purposes (Class 1.4G) */ +/* ARTICLES, PYROTECHNIC for technical purposes. DESCRIPTION: ARTICLES, PYROTECHNIC for technical purposes (Class 1.4S) */ +/* POWDER CAKE (POWDER PASTE), WETTED with not less than 17% alcohol, by mass. DESCRIPTION: POWDER CAKE (POWDER PASTE), WETTED with not less than 17% alcohol, by mass (Class 1.1C) */ +/* PROJECTILES with burster or expelling charge. DESCRIPTION: PROJECTILES with burster or expelling charge (Class 1.2G) */ +/* PROJECTILES with burster or expelling charge. DESCRIPTION: PROJECTILES with burster or expelling charge (Class 1.4G) */ +/* ROCKETS with expelling charge. DESCRIPTION: ROCKETS with expelling charge (Class 1.2C) */ +/* ROCKETS with expelling charge. DESCRIPTION: ROCKETS with expelling charge (Class 1.3C) */ +/* ROCKETS with expelling charge. DESCRIPTION: ROCKETS with expelling charge (Class 1.4C) */ +/* CHARGES, SHAPED, without detonator. DESCRIPTION: CHARGES, SHAPED, without detonator (Class 1.2D) */ +/* CHARGES, SHAPED, without detonator. DESCRIPTION: CHARGES, SHAPED, without detonator (Class 1.4D) */ +/* CHARGES, SHAPED, without detonator. DESCRIPTION: CHARGES, SHAPED, without detonator (Class 1.4S) */ +/* CHARGES, EXPLOSIVE, COMMERCIAL without detonator. DESCRIPTION: CHARGES, EXPLOSIVE, COMMERCIAL without detonator (Class 1.1D) */ +/* CHARGES, EXPLOSIVE, COMMERCIAL without detonator. DESCRIPTION: CHARGES, EXPLOSIVE, COMMERCIAL without detonator (Class 1.2D) */ +/* CHARGES, EXPLOSIVE, COMMERCIAL without detonator. DESCRIPTION: CHARGES, EXPLOSIVE, COMMERCIAL without detonator (Class 1.4D) */ +/* CHARGES, EXPLOSIVE, COMMERCIAL without detonator. DESCRIPTION: CHARGES, EXPLOSIVE, COMMERCIAL without detonator (Class 1.4S) */ +/* CASES, COMBUSTIBLE, EMPTY, WITHOUT PRIMER. DESCRIPTION: CASES, COMBUSTIBLE, EMPTY, WITHOUT PRIMER (Class 1.4C) */ +/* CASES, COMBUSTIBLE, EMPTY, WITHOUT PRIMER. DESCRIPTION: CASES, COMBUSTIBLE, EMPTY, WITHOUT PRIMER (Class 1.3C) */ +/* 5-MERCAPTOTETRAZOL-1-ACETIC ACID. DESCRIPTION: 5-MERCAPTOTETRAZOL-1-ACETIC ACID (Class 1.4C) */ +/* TORPEDOES, LIQUID FUELLED with or without bursting charge. DESCRIPTION: TORPEDOES, LIQUID FUELLED with or without bursting charge (Class 1.1J) */ +/* TORPEDOES, LIQUID FUELLED with inert head. DESCRIPTION: TORPEDOES, LIQUID FUELLED with inert head (Class 1.3J) */ +/* TORPEDOES with bursting charge. DESCRIPTION: TORPEDOES with bursting charge (Class 1.1D) */ +/* GRENADES, PRACTICE, hand or rifle. DESCRIPTION: GRENADES, PRACTICE, hand or rifle (Class 1.4G) */ +/* ROCKETS, LINE-THROWING. DESCRIPTION: ROCKETS, LINE-THROWING (Class 1.4G) */ +/* IGNITERS. DESCRIPTION: IGNITERS (Class 1.4S) */ +/* DETONATORS, NON-ELECTRIC for blasting. DESCRIPTION: DETONATORS, NON-ELECTRIC for blasting (Class 1.4S) */ +/* DETONATORS, ELECTRIC for blasting. DESCRIPTION: DETONATORS, ELECTRIC for blasting (Class 1.4S) */ +/* CHARGES, BURSTING, PLASTICS BONDED. DESCRIPTION: CHARGES, BURSTING, PLASTICS BONDED (Class 1.1D) */ +/* CHARGES, BURSTING, PLASTICS BONDED. DESCRIPTION: CHARGES, BURSTING, PLASTICS BONDED (Class 1.2D) */ +/* CHARGES, BURSTING, PLASTICS BONDED. DESCRIPTION: CHARGES, BURSTING, PLASTICS BONDED (Class 1.4D) */ +/* CHARGES, BURSTING, PLASTICS BONDED. DESCRIPTION: CHARGES, BURSTING, PLASTICS BONDED (Class 1.4S) */ +/* COMPONENTS, EXPLOSIVE TRAIN, N.O.S.. DESCRIPTION: COMPONENTS, EXPLOSIVE TRAIN, N.O.S. (Class 1.1B) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.1C) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.1D) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.1E) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.1F) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.2C) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.2D) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.2E) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.2F) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.3C) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4E) */ +/* ARTICLES, EXPLOSIVE, N.O.S.. DESCRIPTION: ARTICLES, EXPLOSIVE, N.O.S. (Class 1.4F) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.1A) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.1C) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.1D) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.1G) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.3C) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.3G) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.4C) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.4D) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.4S) */ +/* SUBSTANCES, EXPLOSIVE, VERY INSENSITIVE (SUBSTANCES, EVI), N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, VERY INSENSITIVE (SUBSTANCES, EVI), N.O.S. (Class 1.5D) */ +/* CYCLOTRIMETHYLENETRINITRA-MINE (CYCLONITE; HEXOGEN; RDX), DESENSITIZED. DESCRIPTION: CYCLOTRIMETHYLENETRINITRA-MINE (CYCLONITE; HEXOGEN; RDX), DESENSITIZED (Class 1.1D) */ +/* CYCLOTETRAMETHYLENETETRA-NITRAMINE (HMX; OCTOGEN), DESENSITIZED. DESCRIPTION: CYCLOTETRAMETHYLENETETRA-NITRAMINE (HMX; OCTOGEN), DESENSITIZED (Class 1.1D) */ +/* SUBSTANCES, EXPLOSIVE, N.O.S.. DESCRIPTION: SUBSTANCES, EXPLOSIVE, N.O.S. (Class 1.4G) */ +/* ARTICLES, EXPLOSIVE, EXTREMELY INSENSITIVE (ARTICLES, EEI). DESCRIPTION: ARTICLES, EXPLOSIVE, EXTREMELY INSENSITIVE (ARTICLES, EEI) (Class 1.6N) */ +/* SIGNALS, SMOKE. DESCRIPTION: SIGNALS, SMOKE (Class 1.3G) */ +/* AMMUNITION, PRACTICE. DESCRIPTION: AMMUNITION, PRACTICE (Class 1.3G) */ +/* DINITROGLYCOLURIL (DINGU). DESCRIPTION: DINITROGLYCOLURIL (DINGU) (Class 1.1D) */ +/* NITROTRIAZOLONE (NTO). DESCRIPTION: NITROTRIAZOLONE (NTO) (Class 1.1D) */ +/* CHARGES, PROPELLING. DESCRIPTION: CHARGES, PROPELLING (Class 1.4C) */ +/* SIGNALS, RAILWAY TRACK, EXPLOSIVE. DESCRIPTION: SIGNALS, RAILWAY TRACK, EXPLOSIVE (Class 1.3G) */ +/* SIGNALS, RAILWAY TRACK, EXPLOSIVE. DESCRIPTION: SIGNALS, RAILWAY TRACK, EXPLOSIVE (Class 1.4G) */ +/* JET PERFORATING GUNS, CHARGED, oil well, without detonator. DESCRIPTION: JET PERFORATING GUNS, CHARGED, oil well, without detonator (Class 1.4D) */ +/* PROPELLANT, LIQUID. DESCRIPTION: PROPELLANT, LIQUID (Class 1.3C) */ +/* OCTONAL. DESCRIPTION: OCTONAL (Class 1.1D) */ +/* PROPELLANT, LIQUID. DESCRIPTION: PROPELLANT, LIQUID (Class 1.1C) */ +/* PROPELLANT, SOLID. DESCRIPTION: PROPELLANT, SOLID (Class 1.1C) */ +/* PROPELLANT, SOLID. DESCRIPTION: PROPELLANT, SOLID (Class 1.3C) */ +/* DETONATOR ASSEMBLIES, NON-ELECTRIC for blasting. DESCRIPTION: DETONATOR ASSEMBLIES, NON-ELECTRIC for blasting (Class 1.4S) */ +/* PROPELLANT, SOLID. DESCRIPTION: PROPELLANT, SOLID (Class 1.4C) */ +/* ROCKETS with inert head. DESCRIPTION: ROCKETS with inert head (Class 1.2C) */ +/* AIR BAG INFLATORS, pyrotechnic or AIR BAG MODULES, pyrotechnic or SEAT-BELT PRETENSIONERS, pyrotechnic. DESCRIPTION: AIR BAG INFLATORS, pyrotechnic or AIR BAG MODULES, pyrotechnic or SEAT-BELT PRETENSIONERS, pyrotechnic (Class 1.1E) */ +/* 1H-TETRAZOLE. DESCRIPTION: 1H-TETRAZOLE (Class 1.1D) */ +/* ACETYLENE, DISSOLVED. DESCRIPTION: ACETYLENE, DISSOLVED (Class 2) */ +/* AIR, COMPRESSED. DESCRIPTION: AIR, COMPRESSED (Class 2) */ +/* AIR, REFRIGERATED LIQUID. DESCRIPTION: AIR, REFRIGERATED LIQUID (Class 2) */ +/* AMMONIA, ANHYDROUS. DESCRIPTION: AMMONIA, ANHYDROUS (Class 2) */ +/* ARGON, COMPRESSED. DESCRIPTION: ARGON, COMPRESSED (Class 2) */ +/* BORON TRIFLUORIDE, COMPRESSED. DESCRIPTION: BORON TRIFLUORIDE, COMPRESSED (Class 2) */ +/* BROMOTRIFLUOROMETHANE (REFRIGERANT GAS R 13B1). DESCRIPTION: BROMOTRIFLUOROMETHANE (REFRIGERANT GAS R 13B1) (Class 2) */ +/* BUTADIENES, STABILIZED. DESCRIPTION: BUTADIENES, STABILIZED (Class 2) */ +/* BUTANE. DESCRIPTION: BUTANE (Class 2) */ +/* BUTYLENE. DESCRIPTION: BUTYLENE (Class 2) */ +/* CARBON DIOXIDE. DESCRIPTION: CARBON DIOXIDE (Class 2) */ +/* CARBON DIOXIDE AND OXYGEN MIXTURE, COMPRESSED. DESCRIPTION: CARBON DIOXIDE AND OXYGEN MIXTURE, COMPRESSED (Class 2) */ +/* CARBON DIOXIDE AND NITROUS OXIDE MIXTURE. DESCRIPTION: CARBON DIOXIDE AND NITROUS OXIDE MIXTURE (Class 2) */ +/* CARBON MONOXIDE, COMPRESSED. DESCRIPTION: CARBON MONOXIDE, COMPRESSED (Class 2) */ +/* CHLORINE. DESCRIPTION: CHLORINE (Class 2) */ +/* CHLORODIFLUOROMETHANE (REFRIGERANT GAS R 22). DESCRIPTION: CHLORODIFLUOROMETHANE (REFRIGERANT GAS R 22) (Class 2) */ +/* CHLOROPENTAFLUOROETHANE (REFRIGERANT GAS R 115). DESCRIPTION: CHLOROPENTAFLUOROETHANE (REFRIGERANT GAS R 115) (Class 2) */ +/* 1-CHLORO-1,2,2,2-TETRAFLUOROETHANE (REFRIGERANT GAS R 124). DESCRIPTION: 1-CHLORO-1,2,2,2-TETRAFLUOROETHANE (REFRIGERANT GAS R 124) (Class 2) */ +/* CHLOROTRIFLUOROMETHANE (REFRIGERANT GAS R 13). DESCRIPTION: CHLOROTRIFLUOROMETHANE (REFRIGERANT GAS R 13) (Class 2) */ +/* COAL GAS, COMPRESSED. DESCRIPTION: COAL GAS, COMPRESSED (Class 2) */ +/* CYANOGEN. DESCRIPTION: CYANOGEN (Class 2) */ +/* CYCLOPROPANE. DESCRIPTION: CYCLOPROPANE (Class 2) */ +/* DICHLORODIFLUOROMETHANE (REFRIGERANT GAS R 12). DESCRIPTION: DICHLORODIFLUOROMETHANE (REFRIGERANT GAS R 12) (Class 2) */ +/* DICHLOROFLUOROMETHANE (REFRIGERANT GAS R 21). DESCRIPTION: DICHLOROFLUOROMETHANE (REFRIGERANT GAS R 21) (Class 2) */ +/* 1,1-DIFLUOROETHANE (REFRIGERANT GAS R 152a). DESCRIPTION: 1,1-DIFLUOROETHANE (REFRIGERANT GAS R 152a) (Class 2) */ +/* DIMETHYLAMINE, ANHYDROUS. DESCRIPTION: DIMETHYLAMINE, ANHYDROUS (Class 2) */ +/* DIMETHYL ETHER. DESCRIPTION: DIMETHYL ETHER (Class 2) */ +/* ETHANE. DESCRIPTION: ETHANE (Class 2) */ +/* ETHYLAMINE. DESCRIPTION: ETHYLAMINE (Class 2) */ +/* ETHYL CHLORIDE. DESCRIPTION: ETHYL CHLORIDE (Class 2) */ +/* ETHYLENE, REFRIGERATED LIQUID. DESCRIPTION: ETHYLENE, REFRIGERATED LIQUID (Class 2) */ +/* ETHYL METHYL ETHER. DESCRIPTION: ETHYL METHYL ETHER (Class 2) */ +/* ETHYLENE OXIDE, or ETHYLENE OXIDE WITH NITROGEN up to a total pressure of 1 MPa (10 bar) at 50 */ +/* ºC. DESCRIPTION: ETHYLENE OXIDE, or ETHYLENE OXIDE WITH NITROGEN up to a total pressure of 1 MPa (10 bar) at 50 ºC (Class 2) */ +/* ETHYLENE OXIDE AND CARBON DIOXIDE MIXTURE with more than 9% but not more than 87% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND CARBON DIOXIDE MIXTURE with more than 9% but not more than 87% ethylene oxide (Class 2) */ +/* FERTILIZER AMMONIATING SOLUTION with free ammonia. DESCRIPTION: FERTILIZER AMMONIATING SOLUTION with free ammonia (Class 2) */ +/* FIRE EXTINGUISHERS with compressed or liquefied gas. DESCRIPTION: FIRE EXTINGUISHERS with compressed or liquefied gas (Class 2) */ +/* FLUORINE, COMPRESSED. DESCRIPTION: FLUORINE, COMPRESSED (Class 2) */ +/* HELIUM, COMPRESSED. DESCRIPTION: HELIUM, COMPRESSED (Class 2) */ +/* HYDROGEN BROMIDE, ANHYDROUS. DESCRIPTION: HYDROGEN BROMIDE, ANHYDROUS (Class 2) */ +/* HYDROGEN, COMPRESSED. DESCRIPTION: HYDROGEN, COMPRESSED (Class 2) */ +/* HYDROGEN CHLORIDE, ANHYDROUS. DESCRIPTION: HYDROGEN CHLORIDE, ANHYDROUS (Class 2) */ +/* HYDROGEN CYANIDE, STABILIZED containing less than 3% water (flash point less than 23 */ +/* ºC). DESCRIPTION: HYDROGEN CYANIDE, STABILIZED containing less than 3% water (flash point less than 23ºC) (Class 6.1) */ +/* HYDROGEN FLUORIDE, ANHYDROUS. DESCRIPTION: HYDROGEN FLUORIDE, ANHYDROUS (Class 8) */ +/* HYDROGEN SULPHIDE. DESCRIPTION: HYDROGEN SULPHIDE (Class 2) */ +/* ISOBUTYLENE. DESCRIPTION: ISOBUTYLENE (Class 2) */ +/* KRYPTON, COMPRESSED. DESCRIPTION: KRYPTON, COMPRESSED (Class 2) */ +/* LIGHTERS or LIGHTER REFILLS (cigarettes) containing flammable gas. DESCRIPTION: LIGHTERS or LIGHTER REFILLS (cigarettes) containing flammable gas (Class 2) */ +/* LIQUEFIED GASES, non-flammable, charged with nitrogen, carbon dioxide or air. DESCRIPTION: LIQUEFIED GASES, non-flammable, charged with nitrogen, carbon dioxide or air (Class 2) */ +/* METHYLACETYLENE AND PROPADIENE MIXTURE, STABILIZED. DESCRIPTION: METHYLACETYLENE AND PROPADIENE MIXTURE, STABILIZED (Class 2) */ +/* METHYLAMINE, ANHYDROUS. DESCRIPTION: METHYLAMINE, ANHYDROUS (Class 2) */ +/* METHYL BROMIDE. DESCRIPTION: METHYL BROMIDE (Class 2) */ +/* METHYL CHLORIDE (REFRIGERANT GAS R 40). DESCRIPTION: METHYL CHLORIDE (REFRIGERANT GAS R 40) (Class 2) */ +/* METHYL MERCAPTAN. DESCRIPTION: METHYL MERCAPTAN (Class 2) */ +/* NEON, COMPRESSED. DESCRIPTION: NEON, COMPRESSED (Class 2) */ +/* NITROGEN, COMPRESSED. DESCRIPTION: NITROGEN, COMPRESSED (Class 2) */ +/* DINITROGEN TETROXIDE (NITROGEN DIOXIDE). DESCRIPTION: DINITROGEN TETROXIDE (NITROGEN DIOXIDE) (Class 2) */ +/* NITROSYL CHLORIDE. DESCRIPTION: NITROSYL CHLORIDE (Class 2) */ +/* NITROUS OXIDE. DESCRIPTION: NITROUS OXIDE (Class 2) */ +/* OIL GAS, COMPRESSED. DESCRIPTION: OIL GAS, COMPRESSED (Class 2) */ +/* OXYGEN, COMPRESSED. DESCRIPTION: OXYGEN, COMPRESSED (Class 2) */ +/* OXYGEN, REFRIGERATED LIQUID. DESCRIPTION: OXYGEN, REFRIGERATED LIQUID (Class 2) */ +/* PETROLEUM GASES, LIQUEFIED. DESCRIPTION: PETROLEUM GASES, LIQUEFIED (Class 2) */ +/* PHOSGENE. DESCRIPTION: PHOSGENE (Class 2) */ +/* PROPYLENE. DESCRIPTION: PROPYLENE (Class 2) */ +/* REFRIGERANT GAS, N.O.S.. DESCRIPTION: REFRIGERANT GAS, N.O.S. (Class 2) */ +/* SULPHUR DIOXIDE. DESCRIPTION: SULPHUR DIOXIDE (Class 2) */ +/* SULPHUR HEXAFLUORIDE. DESCRIPTION: SULPHUR HEXAFLUORIDE (Class 2) */ +/* TETRAFLUOROETHYLENE, STABILIZED. DESCRIPTION: TETRAFLUOROETHYLENE, STABILIZED (Class 2) */ +/* TRIFLUOROCHLOROETHYLENE, STABILIZED. DESCRIPTION: TRIFLUOROCHLOROETHYLENE, STABILIZED (Class 2) */ +/* TRIMETHYLAMINE, ANHYDROUS. DESCRIPTION: TRIMETHYLAMINE, ANHYDROUS (Class 2) */ +/* VINYL BROMIDE, STABILIZED. DESCRIPTION: VINYL BROMIDE, STABILIZED (Class 2) */ +/* VINYL CHLORIDE, STABILIZED. DESCRIPTION: VINYL CHLORIDE, STABILIZED (Class 2) */ +/* VINYL METHYL ETHER, STABILIZED. DESCRIPTION: VINYL METHYL ETHER, STABILIZED (Class 2) */ +/* ACETAL. DESCRIPTION: ACETAL (Class 3) */ +/* ACETALDEHYDE. DESCRIPTION: ACETALDEHYDE (Class 3) */ +/* ACETONE. DESCRIPTION: ACETONE (Class 3) */ +/* ACETONE OILS. DESCRIPTION: ACETONE OILS (Class 3) */ +/* ACROLEIN, STABILIZED. DESCRIPTION: ACROLEIN, STABILIZED (Class 6.1) */ +/* ACRYLONITRILE, STABILISED. DESCRIPTION: ACRYLONITRILE, STABILISED (Class 3) */ +/* ALLYL ALCOHOL. DESCRIPTION: ALLYL ALCOHOL (Class 6.1) */ +/* ALLYL BROMIDE. DESCRIPTION: ALLYL BROMIDE (Class 3) */ +/* ALLYL CHLORIDE. DESCRIPTION: ALLYL CHLORIDE (Class 3) */ +/* AMYL ACETATES. DESCRIPTION: AMYL ACETATES (Class 3) */ +/* PENTANOLS. DESCRIPTION: PENTANOLS (Class 3) */ +/* AMYLAMINE. DESCRIPTION: AMYLAMINE (Class 3) */ +/* AMYL CHLORIDE. DESCRIPTION: AMYL CHLORIDE (Class 3) */ +/* 1-PENTENE (n-AMYLENE). DESCRIPTION: 1-PENTENE (n-AMYLENE) (Class 3) */ +/* AMYL FORMATES. DESCRIPTION: AMYL FORMATES (Class 3) */ +/* n-AMYL METHYL KETONE. DESCRIPTION: n-AMYL METHYL KETONE (Class 3) */ +/* AMYL MERCAPTAN. DESCRIPTION: AMYL MERCAPTAN (Class 3) */ +/* AMYL NITRATE. DESCRIPTION: AMYL NITRATE (Class 3) */ +/* AMYL NITRITE. DESCRIPTION: AMYL NITRITE (Class 3) */ +/* BENZENE. DESCRIPTION: BENZENE (Class 3) */ +/* BUTANOLS. DESCRIPTION: BUTANOLS (Class 3) */ +/* BUTYL ACETATES. DESCRIPTION: BUTYL ACETATES (Class 3) */ +/* n-BUTYLAMINE. DESCRIPTION: n-BUTYLAMINE (Class 3) */ +/* 1-BROMOBUTANE. DESCRIPTION: 1-BROMOBUTANE (Class 3) */ +/* CHLOROBUTANES. DESCRIPTION: CHLOROBUTANES (Class 3) */ +/* n-BUTYL FORMATE. DESCRIPTION: n-BUTYL FORMATE (Class 3) */ +/* BUTYRALDEHYDE. DESCRIPTION: BUTYRALDEHYDE (Class 3) */ +/* CAMPHOR OIL. DESCRIPTION: CAMPHOR OIL (Class 3) */ +/* CARBON DISULPHIDE. DESCRIPTION: CARBON DISULPHIDE (Class 3) */ +/* ADHESIVES containing flammable liquid. DESCRIPTION: ADHESIVES containing flammable liquid (Class 3) */ +/* CHLOROBENZENE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: CHLOROBENZENE (flash point between 23ºC and 61ºC) (Class 3) */ +/* ETHYLENE CHLOROHYDRIN. DESCRIPTION: ETHYLENE CHLOROHYDRIN (Class 6.1) */ +/* COAL TAR DISTILLATES, FLAMMABLE. DESCRIPTION: COAL TAR DISTILLATES, FLAMMABLE (Class 3) */ +/* COATING SOLUTION. DESCRIPTION: COATING SOLUTION (includes surface treatments or coatings used for industrial or other purposes such as vehicle undercoating, drum or barrel lining) (Class 3) */ +/* CROTONALDEHYDE, STABILIZED. DESCRIPTION: CROTONALDEHYDE, STABILIZED (Class 6.1) */ +/* CROTONYLENE. DESCRIPTION: CROTONYLENE (Class 3) */ +/* CYCLOHEXANE. DESCRIPTION: CYCLOHEXANE (Class 3) */ +/* CYCLOPENTANE. DESCRIPTION: CYCLOPENTANE (Class 3) */ +/* DECAHYDRONAPHTHALENE. DESCRIPTION: DECAHYDRONAPHTHALENE (Class 3) */ +/* DIACETONE ALCOHOL. DESCRIPTION: DIACETONE ALCOHOL (Class 3) */ +/* DIBUTYL ETHERS. DESCRIPTION: DIBUTYL ETHERS (Class 3) */ +/* 1,2-DICHLOROETHYLENE. DESCRIPTION: 1,2-DICHLOROETHYLENE (Class 3) */ +/* DICHLOROPENTANES. DESCRIPTION: DICHLOROPENTANES (Class 3) */ +/* ETHYLENE GLYCOL DIETHYL ETHER. DESCRIPTION: ETHYLENE GLYCOL DIETHYL ETHER (Class 3) */ +/* DIETHYLAMINE. DESCRIPTION: DIETHYLAMINE (Class 3) */ +/* DIETHYL ETHER. DESCRIPTION: DIETHYL ETHER (Class 3) */ +/* DIETHYL KETONE. DESCRIPTION: DIETHYL KETONE (Class 3) */ +/* DIISOBUTYL KETONE. DESCRIPTION: DIISOBUTYL KETONE (Class 3) */ +/* DIISOPROPYLAMINE. DESCRIPTION: DIISOPROPYLAMINE (Class 3) */ +/* DIISOPROPYL ETHER. DESCRIPTION: DIISOPROPYL ETHER (Class 3) */ +/* DIMETHYLAMINE AQUEOUS SOLUTION. DESCRIPTION: DIMETHYLAMINE AQUEOUS SOLUTION (Class 3) */ +/* DIMETHYL CARBONATE. DESCRIPTION: DIMETHYL CARBONATE (Class 3) */ +/* DIMETHYLDICHLOROSILANE. DESCRIPTION: DIMETHYLDICHLOROSILANE (Class 3) */ +/* DIMETHYLHYDRAZINE, UNSYMMETRICAL. DESCRIPTION: DIMETHYLHYDRAZINE, UNSYMMETRICAL (Class 6.1) */ +/* DIMETHYL SULPHIDE. DESCRIPTION: DIMETHYL SULPHIDE (Class 3) */ +/* DIOXANE. DESCRIPTION: DIOXANE (Class 3) */ +/* DIOXOLANE. DESCRIPTION: DIOXOLANE (Class 3) */ +/* DIVINYL ETHER, STABILIZED. DESCRIPTION: DIVINYL ETHER, STABILIZED (Class 3) */ +/* EXTRACTS, AROMATIC, LIQUID. DESCRIPTION: EXTRACTS, AROMATIC, LIQUID (Class 3) */ +/* ETHANOL (ETHYL ALCOHOL) or ETHANOL SOLUTION (ETHYL ALCOHOL SOLUTION). DESCRIPTION: ETHANOL (ETHYL ALCOHOL) or ETHANOL SOLUTION (ETHYL ALCOHOL SOLUTION) (Class 3) */ +/* ETHYLENE GLYCOL MONOETHYL ETHER. DESCRIPTION: ETHYLENE GLYCOL MONOETHYL ETHER (Class 3) */ +/* ETHYLENE GLYCOL MONOETHYL ETHER ACETATE. DESCRIPTION: ETHYLENE GLYCOL MONOETHYL ETHER ACETATE (Class 3) */ +/* ETHYL ACETATE. DESCRIPTION: ETHYL ACETATE (Class 3) */ +/* ETHYLBENZENE. DESCRIPTION: ETHYLBENZENE (Class 3) */ +/* ETHYL BORATE. DESCRIPTION: ETHYL BORATE (Class 3) */ +/* ETHYLBUTYL ACETATE. DESCRIPTION: ETHYLBUTYL ACETATE (Class 3) */ +/* 2-ETHYLBUTYRALDEHYDE. DESCRIPTION: 2-ETHYLBUTYRALDEHYDE (Class 3) */ +/* ETHYL BUTYL ETHER. DESCRIPTION: ETHYL BUTYL ETHER (Class 3) */ +/* ETHYL BUTYRATE. DESCRIPTION: ETHYL BUTYRATE (Class 3) */ +/* ETHYL CHLOROACETATE. DESCRIPTION: ETHYL CHLOROACETATE (Class 6.1) */ +/* ETHYL CHLOROFORMATE. DESCRIPTION: ETHYL CHLOROFORMATE (Class 6.1) */ +/* ETHYLDICHLOROSILANE. DESCRIPTION: ETHYLDICHLOROSILANE (Class 4.3) */ +/* ETHYLENE DICHLORIDE. DESCRIPTION: ETHYLENE DICHLORIDE (Class 3) */ +/* ETHYLENEIMINE, STABILIZED. DESCRIPTION: ETHYLENEIMINE, STABILIZED (Class 6.1) */ +/* ETHYLENE GLYCOL MONOMETHYL ETHER. DESCRIPTION: ETHYLENE GLYCOL MONOMETHYL ETHER (Class 3) */ +/* ETHYLENE GLYCOL MONOMETHYL ETHER ACETATE. DESCRIPTION: ETHYLENE GLYCOL MONOMETHYL ETHER ACETATE (Class 3) */ +/* ETHYL FORMATE. DESCRIPTION: ETHYL FORMATE (Class 3) */ +/* OCTYL ALDEHYDES. DESCRIPTION: OCTYL ALDEHYDES (Class 3) */ +/* ETHYL LACTATE. DESCRIPTION: ETHYL LACTATE (Class 3) */ +/* ETHYL METHYL KETONE (METHYL ETHYL KETONE). DESCRIPTION: ETHYL METHYL KETONE (METHYL ETHYL KETONE) (Class 3) */ +/* ETHYL NITRITE SOLUTION. DESCRIPTION: ETHYL NITRITE SOLUTION (Class 3) */ +/* ETHYL PROPIONATE. DESCRIPTION: ETHYL PROPIONATE (Class 3) */ +/* ETHYLTRICHLOROSILANE. DESCRIPTION: ETHYLTRICHLOROSILANE (Class 3) */ +/* EXTRACTS, FLAVOURING, LIQUID. DESCRIPTION: EXTRACTS, FLAVOURING, LIQUID (Class 3) */ +/* FORMALDEHYDE SOLUTION, FLAMMABLE. DESCRIPTION: FORMALDEHYDE SOLUTION, FLAMMABLE (Class 3) */ +/* FURALDEHYDES. DESCRIPTION: FURALDEHYDES (Class 6.1) */ +/* FUSEL OIL. DESCRIPTION: FUSEL OIL (Class 3) */ +/* GAS OIL or DIESEL FUEL or HEATING OIL LIGHT (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: GAS OIL or DIESEL FUEL or HEATING OIL LIGHT (flash point between 23ºC and 61ºC) (Class 3) */ +/* MOTOR SPIRIT or GASOLINE or PETROL. DESCRIPTION: MOTOR SPIRIT or GASOLINE or PETROL (Class 3) */ +/* NITROGLYCERIN SOLUTION IN ALCOHOL with not more than 1% nitroglycerin. DESCRIPTION: NITROGLYCERIN SOLUTION IN ALCOHOL with not more than 1% nitroglycerin (Class 3) */ +/* HEPTANES. DESCRIPTION: HEPTANES (Class 3) */ +/* HEXALDEHYDE. DESCRIPTION: HEXALDEHYDE (Class 3) */ +/* HEXANES. DESCRIPTION: HEXANES (Class 3) */ +/* PRINTING INK, flammable or PRINTING INK RELATED MATERIAL, flammable. DESCRIPTION: PRINTING INK, flammable or PRINTING INK RELATED MATERIAL, flammable (Class 3) */ +/* ISOBUTANOL (ISOBUTYL ALCOHOL). DESCRIPTION: ISOBUTANOL (ISOBUTYL ALCOHOL) (Class 3) */ +/* ISOBUTYL ACETATE. DESCRIPTION: ISOBUTYL ACETATE (Class 3) */ +/* ISOBUTYLAMINE. DESCRIPTION: ISOBUTYLAMINE (Class 3) */ +/* ISOOCTENE. DESCRIPTION: ISOOCTENE (Class 3) */ +/* ISOPRENE, STABILIZED. DESCRIPTION: ISOPRENE, STABILIZED (Class 3) */ +/* ISOPROPANOL (ISOPROPYL ALCOHOL). DESCRIPTION: ISOPROPANOL (ISOPROPYL ALCOHOL) (Class 3) */ +/* ISOPROPYL ACETATE. DESCRIPTION: ISOPROPYL ACETATE (Class 3) */ +/* ISOPROPYLAMINE. DESCRIPTION: ISOPROPYLAMINE (Class 3) */ +/* ISOPROPYL NITRATE. DESCRIPTION: ISOPROPYL NITRATE (Class 3) */ +/* KEROSENE. DESCRIPTION: KEROSENE (Class 3) */ +/* KETONES, LIQUID, N.O.S.. DESCRIPTION: KETONES, LIQUID, N.O.S. (Class 3) */ +/* MERCAPTANS, LIQUID, FLAMMABLE, TOXIC, N.O.S. or MERCAPTAN MIXTURE, LIQUID, FLAMMABLE, TOXIC, N.O.S.. DESCRIPTION: MERCAPTANS, LIQUID, FLAMMABLE, TOXIC, N.O.S. or MERCAPTAN MIXTURE, LIQUID, FLAMMABLE, TOXIC, N.O.S. (Class 3) */ +/* MESITYL OXIDE. DESCRIPTION: MESITYL OXIDE (Class 3) */ +/* METHANOL. DESCRIPTION: METHANOL (Class 3) */ +/* METHYL ACETATE. DESCRIPTION: METHYL ACETATE (Class 3) */ +/* METHYLAMYL ACETATE. DESCRIPTION: METHYLAMYL ACETATE (Class 3) */ +/* METHYLAL. DESCRIPTION: METHYLAL (Class 3) */ +/* METHYLAMINE, AQUEOUS SOLUTION. DESCRIPTION: METHYLAMINE, AQUEOUS SOLUTION (Class 3) */ +/* METHYL BUTYRATE. DESCRIPTION: METHYL BUTYRATE (Class 3) */ +/* METHYL CHLOROFORMATE. DESCRIPTION: METHYL CHLOROFORMATE (Class 6.1) */ +/* METHYL CHLOROMETHYL ETHER. DESCRIPTION: METHYL CHLOROMETHYL ETHER (Class 6.1) */ +/* METHYLDICHLOROSILANE. DESCRIPTION: METHYLDICHLOROSILANE (Class 4.3) */ +/* METHYL FORMATE. DESCRIPTION: METHYL FORMATE (Class 3) */ +/* METHYLHYDRAZINE. DESCRIPTION: METHYLHYDRAZINE (Class 6.1) */ +/* METHYL ISOBUTYL KETONE. DESCRIPTION: METHYL ISOBUTYL KETONE (Class 3) */ +/* METHYL ISOPROPENYL KETONE, STABILIZED. DESCRIPTION: METHYL ISOPROPENYL KETONE, STABILIZED (Class 3) */ +/* METHYL METHACRYLATE MONOMER, STABILIZED. DESCRIPTION: METHYL METHACRYLATE MONOMER, STABILIZED (Class 3) */ +/* METHYL PROPIONATE. DESCRIPTION: METHYL PROPIONATE (Class 3) */ +/* METHYL PROPYL KETONE. DESCRIPTION: METHYL PROPYL KETONE (Class 3) */ +/* METHYLTRICHLOROSILANE. DESCRIPTION: METHYLTRICHLOROSILANE (Class 3) */ +/* METHYL VINYL KETONE, STABILIZED. DESCRIPTION: METHYL VINYL KETONE, STABILIZED (Class 6.1) */ +/* NICKEL CARBONYL. DESCRIPTION: NICKEL CARBONYL (Class 6.1) */ +/* NITROMETHANE. DESCRIPTION: NITROMETHANE (Class 3) */ +/* OCTANES. DESCRIPTION: OCTANES (Class 3) */ +/* PAINT or PAINT RELATED MATERIAL. DESCRIPTION: PAINT or PAINT RELATED MATERIAL (Class 3) */ +/* PARALDEHYDE. DESCRIPTION: PARALDEHYDE (Class 3) */ +/* PENTANES, liquid. DESCRIPTION: PENTANES, liquid (Class 3) */ +/* PERFUMERY PRODUCTS with flammable solvents. DESCRIPTION: PERFUMERY PRODUCTS with flammable solvents (Class 3) */ +/* PETROLEUM CRUDE OIL. DESCRIPTION: PETROLEUM CRUDE OIL (Class 3) */ +/* PETROLEUM DISTILLATES, N.O.S. or PETROLEUM PRODUCTS, N.O.S.. DESCRIPTION: PETROLEUM DISTILLATES, N.O.S. or PETROLEUM PRODUCTS, N.O.S. (Class 3) */ +/* PINE OIL. DESCRIPTION: PINE OIL (Class 3) */ +/* n-PROPANOL (PROPYL ALCOHOL, NORMAL). DESCRIPTION: n-PROPANOL (PROPYL ALCOHOL, NORMAL) (Class 3) */ +/* PROPIONALDEHYDE. DESCRIPTION: PROPIONALDEHYDE (Class 3) */ +/* n-PROPYL ACETATE. DESCRIPTION: n-PROPYL ACETATE (Class 3) */ +/* PROPYLAMINE. DESCRIPTION: PROPYLAMINE (Class 3) */ +/* PROPYL CHLORIDE. DESCRIPTION: PROPYL CHLORIDE (Class 3) */ +/* 1,2-DICHLOROPROPANE. DESCRIPTION: 1,2-DICHLOROPROPANE (Class 3) */ +/* PROPYLENE OXIDE. DESCRIPTION: PROPYLENE OXIDE (Class 3) */ +/* PROPYL FORMATES. DESCRIPTION: PROPYL FORMATES (Class 3) */ +/* PYRIDINE. DESCRIPTION: PYRIDINE (Class 3) */ +/* ROSIN OIL. DESCRIPTION: ROSIN OIL (Class 3) */ +/* RUBBER SOLUTION. DESCRIPTION: RUBBER SOLUTION (Class 3) */ +/* SHALE OIL. DESCRIPTION: SHALE OIL (Class 3) */ +/* SODIUM METHYLATE SOLUTION in alcohol. DESCRIPTION: SODIUM METHYLATE SOLUTION in alcohol (Class 3) */ +/* TETRAETHYL SILICATE. DESCRIPTION: TETRAETHYL SILICATE (Class 3) */ +/* TINCTURES, MEDICINAL. DESCRIPTION: TINCTURES, MEDICINAL (Class 3) */ +/* TOLUENE. DESCRIPTION: TOLUENE (Class 3) */ +/* TRICHLOROSILANE. DESCRIPTION: TRICHLOROSILANE (Class 4.3) */ +/* TRIETHYLAMINE. DESCRIPTION: TRIETHYLAMINE (Class 3) */ +/* TRIMETHYLAMINE, AQUEOUS SOLUTION, not more than 50% trimethylamine, by mass. DESCRIPTION: TRIMETHYLAMINE, AQUEOUS SOLUTION, not more than 50% trimethylamine, by mass */ +/* TRIMETHYLCHLOROSILANE. DESCRIPTION: TRIMETHYLCHLOROSILANE (Class 3) */ +/* TURPENTINE. DESCRIPTION: TURPENTINE (Class 3) */ +/* TURPENTINE SUBSTITUTE. DESCRIPTION: TURPENTINE SUBSTITUTE */ +/* VINYL ACETATE, STABILIZED. DESCRIPTION: VINYL ACETATE, STABILIZED (Class 3) */ +/* VINYL ETHYL ETHER,STABILIZED. DESCRIPTION: VINYL ETHYL ETHER,STABILIZED (Class 3) */ +/* VINYLIDENE CHLORIDE, STABILIZED. DESCRIPTION: VINYLIDENE CHLORIDE, STABILIZED (Class 3) */ +/* VINYL ISOBUTYL ETHER, STABILIZED. DESCRIPTION: VINYL ISOBUTYL ETHER, STABILIZED (Class 3) */ +/* VINYLTRICHLOROSILANE, STABILIZED. DESCRIPTION: VINYLTRICHLOROSILANE, STABILIZED (Class 3) */ +/* WOOD PRESERVATIVES, LIQUID. DESCRIPTION: WOOD PRESERVATIVES, LIQUID (Class 3) */ +/* XYLENES. DESCRIPTION: XYLENES (Class 3) */ +/* ZIRCONIUM SUSPENDED IN A FLAMMABLE LIQUID. DESCRIPTION: ZIRCONIUM SUSPENDED IN A FLAMMABLE LIQUID (Class 3) */ +/* ALUMINIUM POWDER, COATED. DESCRIPTION: ALUMINIUM POWDER, COATED (Class 4.1) */ +/* AMMONIUM PICRATE, WETTED with not less than 10% water, by mass. DESCRIPTION: AMMONIUM PICRATE, WETTED with not less than 10% water, by mass (Class 4.1) */ +/* BORNEOL. DESCRIPTION: BORNEOL (Class 4.1) */ +/* CALCIUM RESINATE. DESCRIPTION: CALCIUM RESINATE (Class 4.1) */ +/* CALCIUM RESINATE, FUSED. DESCRIPTION: CALCIUM RESINATE, FUSED (Class 4.1) */ +/* COBALT RESINATE, PRECIPITATED. DESCRIPTION: COBALT RESINATE, PRECIPITATED (Class 4.1) */ +/* DINITROPHENOL, WETTED with not less than 15% water, by mass. DESCRIPTION: DINITROPHENOL, WETTED with not less than 15% water, by mass (Class 4.1) */ +/* DINITROPHENOLATES, WETTED with not less than 15% water, by mass. DESCRIPTION: DINITROPHENOLATES, WETTED with not less than 15% water, by mass (Class 4.1) */ +/* DINITRORESORCINOL, WETTED with not less than 15% water, by mass. DESCRIPTION: DINITRORESORCINOL, WETTED with not less than 15% water, by mass (Class 4.1) */ +/* FERROCERIUM. DESCRIPTION: FERROCERIUM (Class 4.1) */ +/* FILMS, NITROCELLULOSE BASE, gelatin coated. DESCRIPTION: FILMS, NITROCELLULOSE BASE, gelatin coated (Class 4.1) */ +/* FLAMMABLE SOLID, ORGANIC, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, ORGANIC, N.O.S. (Class 4.1) */ +/* HAFNIUM POWDER, WETTED with not less than 25% water. DESCRIPTION: HAFNIUM POWDER, WETTED with not less than 25% water (Class 4.1) */ +/* Hay, Straw or Bhusa. DESCRIPTION: Hay, Straw or Bhusa (Class 4.1) */ +/* HEXAMETHYLENETETRAMINE. DESCRIPTION: HEXAMETHYLENETETRAMINE (Class 4.1) */ +/* MANGANESE RESINATE. DESCRIPTION: MANGANESE RESINATE (Class 4.1) */ +/* MATCHES, 'STRIKE ANYWHERE'. DESCRIPTION: MATCHES, 'STRIKE ANYWHERE' (Class 4.1) */ +/* METALDEHYDE. DESCRIPTION: METALDEHYDE (Class 4.1) */ +/* CERIUM, slabs, ingots or rods. DESCRIPTION: CERIUM, slabs, ingots or rods (Class 4.1) */ +/* NAPHTHALENE, CRUDE or NAPHTHALENE, REFINED. DESCRIPTION: NAPHTHALENE, CRUDE or NAPHTHALENE, REFINED (Class 4.1) */ +/* NITROGUANIDINE (PICRITE), WETTED with not less than 20% water, by mass. DESCRIPTION: NITROGUANIDINE (PICRITE), WETTED with not less than 20% water, by mass (Class 4.1) */ +/* NITROSTARCH, WETTED with not less than 20% water, by mass. DESCRIPTION: NITROSTARCH, WETTED with not less than 20% water, by mass (Class 4.1) */ +/* PHOSPHORUS, AMORPHOUS. DESCRIPTION: PHOSPHORUS, AMORPHOUS (Class 4.1) */ +/* PHOSPHORUS HEPTASULPHIDE, free from yellow and white phosphorus. DESCRIPTION: PHOSPHORUS HEPTASULPHIDE, free from yellow and white phosphorus (Class 4.1) */ +/* PHOSPHORUS PENTASULPHIDE, free from yellow and white phosphorus. DESCRIPTION: PHOSPHORUS PENTASULPHIDE, free from yellow and white phosphorus (Class 4.3) */ +/* PHOSPHORUS SESQUISULPHIDE, free from yellow and white phosphorus. DESCRIPTION: PHOSPHORUS SESQUISULPHIDE, free from yellow and white phosphorus (Class 4.1) */ +/* PHOSPHORUS TRISULPHIDE, free from yellow and white phosphorus. DESCRIPTION: PHOSPHORUS TRISULPHIDE, free from yellow and white phosphorus (Class 4.1) */ +/* TRINITROPHENOL, WETTED with not less than 30% water, by mass. DESCRIPTION: TRINITROPHENOL, WETTED with not less than 30% water, by mass (Class 4.1) */ +/* RUBBER SCRAP or RUBBER SHODDY, powdered or granulated. DESCRIPTION: RUBBER SCRAP or RUBBER SHODDY, powdered or granulated (Class 4.1) */ +/* SILICON POWDER, AMORPHOUS. DESCRIPTION: SILICON POWDER, AMORPHOUS (Class 4.1) */ +/* SILVER PICRATE, WETTED with not less than 30% water, by mass. DESCRIPTION: SILVER PICRATE, WETTED with not less than 30% water, by mass (Class 4.1) */ +/* SODIUM DINITRO-o-CRESOLATE, WETTED with not less than 15% water, by mass. DESCRIPTION: SODIUM DINITRO-o-CRESOLATE, WETTED with not less than 15% water, by mass (Class 4.1) */ +/* SODIUM PICRAMATE, WETTED with not less than 20% water, by mass. DESCRIPTION: SODIUM PICRAMATE, WETTED with not less than 20% water, by mass (Class 4.1) */ +/* SULPHUR. DESCRIPTION: SULPHUR (Class 4.1) */ +/* TITANIUM POWDER, WETTED with not less than 25% water. DESCRIPTION: TITANIUM POWDER, WETTED with not less than 25% water (Class 4.1) */ +/* FIBRES or FABRICS IMPREGNATED WITH WEAKLY NITRATED NITROCELLULOSE, N.O.S.. DESCRIPTION: FIBRES or FABRICS IMPREGNATED WITH WEAKLY NITRATED NITROCELLULOSE, N.O.S. (Class 4.1) */ +/* TRINITROBENZENE, WETTED with not less than 30% water, by mass. DESCRIPTION: TRINITROBENZENE, WETTED with not less than 30% water, by mass (Class 4.1) */ +/* TRINITROBENZOIC ACID, WETTED with not less than 30% water, by mass. DESCRIPTION: TRINITROBENZOIC ACID, WETTED with not less than 30% water, by mass (Class 4.1) */ +/* TRINITROTOLUENE, WETTED with not less than 30% water, by mass. DESCRIPTION: TRINITROTOLUENE, WETTED with not less than 30% water, by mass (Class 4.1) */ +/* UREA NITRATE, WETTED with not less than 20% water, by mass. DESCRIPTION: UREA NITRATE, WETTED with not less than 20% water, by mass (Class 4.1) */ +/* ZIRCONIUM POWDER, WETTED with not less than 25% water. DESCRIPTION: ZIRCONIUM POWDER, WETTED with not less than 25% water (Class 4.1) */ +/* CALCIUM PHOSPHIDE. DESCRIPTION: CALCIUM PHOSPHIDE (Class 4.3) */ +/* CARBON, animal or vegetable origin. DESCRIPTION: CARBON, animal or vegetable origin (Class 4.2) */ +/* CARBON, ACTIVATED. DESCRIPTION: CARBON, ACTIVATED (Class 4.2) */ +/* COPRA. DESCRIPTION: COPRA (Class 4.2) */ +/* COTTON WASTE, OILY. DESCRIPTION: COTTON WASTE, OILY (Class 4.2) */ +/* COTTON, WET. DESCRIPTION: COTTON, WET (Class 4.2) */ +/* DIETHYLZINC. DESCRIPTION: DIETHYLZINC (Class 4.2) */ +/* p-NITROSODIMETHYLANILINE. DESCRIPTION: p-NITROSODIMETHYLANILINE (Class 4.2) */ +/* DIMETHYLZINC. DESCRIPTION: DIMETHYLZINC (Class 4.2) */ +/* FIBRES or FABRICS, ANIMAL or VEGETABLE or SYNTHETIC, N.O.S. with oil. DESCRIPTION: FIBRES or FABRICS, ANIMAL or VEGETABLE or SYNTHETIC, N.O.S. with oil (Class 4.2) */ +/* FISH MEAL (FISH SCRAP), UNSTABILIZED. DESCRIPTION: FISH MEAL (FISH SCRAP), UNSTABILIZED (Class 4.2) */ +/* IRON OXIDE, SPENT or IRON SPONGE, SPENT obtained from coal gas purification. DESCRIPTION: IRON OXIDE, SPENT or IRON SPONGE, SPENT obtained from coal gas purification (Class 4.2) */ +/* METAL CATALYST, WETTED with a visible excess of liquid. DESCRIPTION: METAL CATALYST, WETTED with a visible excess of liquid (Class 4.2) */ +/* PAPER, UNSATURATED OIL TREATED, incompletely dried (including carbon paper). DESCRIPTION: PAPER, UNSATURATED OIL TREATED, incompletely dried (including carbon paper) (Class 4.2) */ +/* PENTABORANE. DESCRIPTION: PENTABORANE (Class 4.2) */ +/* PHOSPHORUS, WHITE or YELLOW, DRY or UNDER WATER or IN SOLUTION. DESCRIPTION: PHOSPHORUS, WHITE or YELLOW, DRY or UNDER WATER or IN SOLUTION (Class 4.2) */ +/* POTASSIUM SULPHIDE, ANHYDROUS or POTASSIUM SULPHIDE with less than 30% water of crystallization. DESCRIPTION: POTASSIUM SULPHIDE, ANHYDROUS or POTASSIUM SULPHIDE with less than 30% water of crystallization (Class 4.2) */ +/* PYROPHORIC METAL, N.O.S. or PYROPHORIC ALLOY, N.O.S.. DESCRIPTION: PYROPHORIC METAL, N.O.S. or PYROPHORIC ALLOY, N.O.S. (Class 4.2) */ +/* SODIUM DITHIONITE (SODIUM HYDROSULPHITE). DESCRIPTION: SODIUM DITHIONITE (SODIUM HYDROSULPHITE) (Class 4.2) */ +/* SODIUM SULPHIDE, ANHYDROUS or SODIUM SULPHIDE with less than 30% water of crystallization. DESCRIPTION: SODIUM SULPHIDE, ANHYDROUS or SODIUM SULPHIDE with less than 30% water of crystallization (Class 4.2) */ +/* SEED CAKE with more than 1.5% oil and not more than 11% moisture. DESCRIPTION: SEED CAKE with more than 1.5% oil and not more than 11% moisture (Class 4.2) */ +/* ALKALI METAL AMALGAM. DESCRIPTION: ALKALI METAL AMALGAM (Class 4.3) */ +/* ALKALI METAL AMIDES. DESCRIPTION: ALKALI METAL AMIDES (Class 4.3) */ +/* ALKALI METAL DISPERSION or ALKALINE EARTH METAL DISPERSION. DESCRIPTION: ALKALI METAL DISPERSION or ALKALINE EARTH METAL DISPERSION (Class 4.3) */ +/* ALKALINE EARTH METAL AMALGAM. DESCRIPTION: ALKALINE EARTH METAL AMALGAM (Class 4.3) */ +/* ALKALINE EARTH METAL ALLOY, N.O.S.. DESCRIPTION: ALKALINE EARTH METAL ALLOY, N.O.S. (Class 4.3) */ +/* ALUMINIUM CARBIDE. DESCRIPTION: ALUMINIUM CARBIDE (Class 4.3) */ +/* ALUMINIUM FERROSILICON POWDER. DESCRIPTION: ALUMINIUM FERROSILICON POWDER (Class 4.3) */ +/* ALUMINIUM POWDER, UNCOATED. DESCRIPTION: ALUMINIUM POWDER, UNCOATED (Class 4.3) */ +/* ALUMINIUM PHOSPHIDE. DESCRIPTION: ALUMINIUM PHOSPHIDE (Class 4.3) */ +/* ALUMINIUM SILICON POWDER, UNCOATED. DESCRIPTION: ALUMINIUM SILICON POWDER, UNCOATED (Class 4.3) */ +/* BARIUM. DESCRIPTION: BARIUM (Class 4.3) */ +/* CALCIUM. DESCRIPTION: CALCIUM (Class 4.3) */ +/* CALCIUM CARBIDE. DESCRIPTION: CALCIUM CARBIDE (Class 4.3) */ +/* CALCIUM CYANAMIDE with more than 0.1% calcium carbide. DESCRIPTION: CALCIUM CYANAMIDE with more than 0.1% calcium carbide (Class 4.3) */ +/* CALCIUM HYDRIDE. DESCRIPTION: CALCIUM HYDRIDE (Class 4.3) */ +/* CALCIUM SILICIDE. DESCRIPTION: CALCIUM SILICIDE (Class 4.3) */ +/* CAESIUM. DESCRIPTION: CAESIUM (Class 4.3) */ +/* FERROSILICON with 30% or more but less than 90% silicon. DESCRIPTION: FERROSILICON with 30% or more but less than 90% silicon (Class 4.3) */ +/* METAL HYDRIDES, WATER-REACTIVE, N.O.S.. DESCRIPTION: METAL HYDRIDES, WATER-REACTIVE, N.O.S. (Class 4.3) */ +/* LITHIUM ALUMINIUM HYDRIDE. DESCRIPTION: LITHIUM ALUMINIUM HYDRIDE (Class 4.3) */ +/* LITHIUM ALUMINIUM HYDRIDE, ETHEREAL. DESCRIPTION: LITHIUM ALUMINIUM HYDRIDE, ETHEREAL (Class 4.3) */ +/* LITHIUM BOROHYDRIDE. DESCRIPTION: LITHIUM BOROHYDRIDE (Class 4.3) */ +/* LITHIUM HYDRIDE. DESCRIPTION: LITHIUM HYDRIDE (Class 4.3) */ +/* LITHIUM. DESCRIPTION: LITHIUM (Class 4.3) */ +/* LITHIUM SILICON. DESCRIPTION: LITHIUM SILICON (Class 4.3) */ +/* MAGNESIUM POWDER or MAGNESIUM ALLOYS POWDER. DESCRIPTION: MAGNESIUM POWDER or MAGNESIUM ALLOYS POWDER (Class 4.3) */ +/* MAGNESIUM ALUMINIUM PHOSPHIDE. DESCRIPTION: MAGNESIUM ALUMINIUM PHOSPHIDE (Class 4.3) */ +/* POTASSIUM METAL ALLOYS. DESCRIPTION: POTASSIUM METAL ALLOYS (Class 4.3) */ +/* ALKALI METAL ALLOY, LIQUID, N.O.S.. DESCRIPTION: ALKALI METAL ALLOY, LIQUID, N.O.S. (Class 4.3) */ +/* POTASSIUM SODIUM ALLOYS. DESCRIPTION: POTASSIUM SODIUM ALLOYS (Class 4.3) */ +/* RUBIDIUM. DESCRIPTION: RUBIDIUM (Class 4.3) */ +/* SODIUM BOROHYDRIDE. DESCRIPTION: SODIUM BOROHYDRIDE (Class 4.3) */ +/* SODIUM HYDRIDE. DESCRIPTION: SODIUM HYDRIDE (Class 4.3) */ +/* SODIUM. DESCRIPTION: SODIUM (Class 4.3) */ +/* SODIUM METHYLATE. DESCRIPTION: SODIUM METHYLATE (Class 4.2) */ +/* SODIUM PHOSPHIDE. DESCRIPTION: SODIUM PHOSPHIDE (Class 4.3) */ +/* STANNIC PHOSPHIDES. DESCRIPTION: STANNIC PHOSPHIDES (Class 4.3) */ +/* ZINC ASHES. DESCRIPTION: ZINC ASHES (Class 4.3) */ +/* ZINC POWDER or ZINC DUST. DESCRIPTION: ZINC POWDER or ZINC DUST (Class 4.3) */ +/* ZIRCONIUM HYDRIDE. DESCRIPTION: ZIRCONIUM HYDRIDE (Class 4.1) */ +/* ALUMINIUM NITRATE. DESCRIPTION: ALUMINIUM NITRATE (Class 5.1) */ +/* AMMONIUM DICHROMATE. DESCRIPTION: AMMONIUM DICHROMATE (Class 5.1) */ +/* AMMONIUM PERCHLORATE. DESCRIPTION: AMMONIUM PERCHLORATE (Class 5.1) */ +/* AMMONIUM PERSULPHATE. DESCRIPTION: AMMONIUM PERSULPHATE (Class 5.1) */ +/* BARIUM CHLORATE. DESCRIPTION: BARIUM CHLORATE (Class 5.1) */ +/* BARIUM NITRATE. DESCRIPTION: BARIUM NITRATE (Class 5.1) */ +/* BARIUM PERCHLORATE. DESCRIPTION: BARIUM PERCHLORATE (Class 5.1) */ +/* BARIUM PERMANGANATE. DESCRIPTION: BARIUM PERMANGANATE (Class 5.1) */ +/* BARIUM PEROXIDE. DESCRIPTION: BARIUM PEROXIDE (Class 5.1) */ +/* BROMATES, INORGANIC, N.O.S.. DESCRIPTION: BROMATES, INORGANIC, N.O.S. (Class 5.1) */ +/* CAESIUM NITRATE. DESCRIPTION: CAESIUM NITRATE (Class 5.1) */ +/* CALCIUM CHLORATE. DESCRIPTION: CALCIUM CHLORATE (Class 5.1) */ +/* CALCIUM CHLORITE. DESCRIPTION: CALCIUM CHLORITE (Class 5.1) */ +/* CALCIUM NITRATE. DESCRIPTION: CALCIUM NITRATE (Class 5.1) */ +/* CALCIUM PERCHLORATE. DESCRIPTION: CALCIUM PERCHLORATE (Class 5.1) */ +/* CALCIUM PERMANGANATE. DESCRIPTION: CALCIUM PERMANGANATE (Class 5.1) */ +/* CALCIUM PEROXIDE. DESCRIPTION: CALCIUM PEROXIDE (Class 5.1) */ +/* CHLORATE AND BORATE MIXTURE. DESCRIPTION: CHLORATE AND BORATE MIXTURE (Class 5.1) */ +/* CHLORATE AND MAGNESIUM CHLORIDE MIXTURE. DESCRIPTION: CHLORATE AND MAGNESIUM CHLORIDE MIXTURE (Class 5.1) */ +/* CHLORATES, INORGANIC, N.O.S.. DESCRIPTION: CHLORATES, INORGANIC, N.O.S. (Class 5.1) */ +/* CHLORITES, INORGANIC, N.O.S.. DESCRIPTION: CHLORITES, INORGANIC, N.O.S. (Class 5.1) */ +/* CHROMIUM TRIOXIDE, ANHYDROUS. DESCRIPTION: CHROMIUM TRIOXIDE, ANHYDROUS (Class 5.1) */ +/* DIDYMIUM NITRATE. DESCRIPTION: DIDYMIUM NITRATE (Class 5.1) */ +/* FERRIC NITRATE. DESCRIPTION: FERRIC NITRATE (Class 5.1) */ +/* GUANIDINE NITRATE. DESCRIPTION: GUANIDINE NITRATE (Class 5.1) */ +/* LEAD NITRATE. DESCRIPTION: LEAD NITRATE (Class 5.1) */ +/* LEAD PERCHLORATE. DESCRIPTION: LEAD PERCHLORATE (Class 5.1) */ +/* LITHIUM HYPOCHLORITE, DRY or LITHIUM HYPOCHLORITE MIXTURE. DESCRIPTION: LITHIUM HYPOCHLORITE, DRY or LITHIUM HYPOCHLORITE MIXTURE (Class 5.1) */ +/* LITHIUM PEROXIDE. DESCRIPTION: LITHIUM PEROXIDE (Class 5.1) */ +/* MAGNESIUM BROMATE. DESCRIPTION: MAGNESIUM BROMATE (Class 5.1) */ +/* MAGNESIUM NITRATE. DESCRIPTION: MAGNESIUM NITRATE (Class 5.1) */ +/* MAGNESIUM PERCHLORATE. DESCRIPTION: MAGNESIUM PERCHLORATE (Class 5.1) */ +/* MAGNESIUM PEROXIDE. DESCRIPTION: MAGNESIUM PEROXIDE (Class 5.1) */ +/* NITRATES, INORGANIC, N.O.S.. DESCRIPTION: NITRATES, INORGANIC, N.O.S. (Class 5.1) */ +/* OXIDIZING SOLID, N.O.S.. DESCRIPTION: OXIDIZING SOLID, N.O.S. (Class 5.1) */ +/* PERCHLORATES, INORGANIC, N.O.S.. DESCRIPTION: PERCHLORATES, INORGANIC, N.O.S. (Class 5.1) */ +/* PERMANGANATES, INORGANIC, N.O.S.. DESCRIPTION: PERMANGANATES, INORGANIC, N.O.S. (Class 5.1) */ +/* PEROXIDES, INORGANIC, N.O.S.. DESCRIPTION: PEROXIDES, INORGANIC, N.O.S. (Class 5.1) */ +/* POTASSIUM BROMATE. DESCRIPTION: POTASSIUM BROMATE (Class 5.1) */ +/* POTASSIUM CHLORATE. DESCRIPTION: POTASSIUM CHLORATE (Class 5.1) */ +/* POTASSIUM NITRATE. DESCRIPTION: POTASSIUM NITRATE (Class 5.1) */ +/* POTASSIUM NITRATE AND SODIUM NITRITE MIXTURE. DESCRIPTION: POTASSIUM NITRATE AND SODIUM NITRITE MIXTURE (Class 5.1) */ +/* POTASSIUM NITRITE. DESCRIPTION: POTASSIUM NITRITE (Class 5.1) */ +/* POTASSIUM PERCHLORATE. DESCRIPTION: POTASSIUM PERCHLORATE (Class 5.1) */ +/* POTASSIUM PERMANGANATE. DESCRIPTION: POTASSIUM PERMANGANATE (Class 5.1) */ +/* POTASSIUM PEROXIDE. DESCRIPTION: POTASSIUM PEROXIDE (Class 5.1) */ +/* POTASSIUM PERSULPHATE. DESCRIPTION: POTASSIUM PERSULPHATE (Class 5.1) */ +/* SILVER NITRATE. DESCRIPTION: SILVER NITRATE (Class 5.1) */ +/* SODIUM BROMATE. DESCRIPTION: SODIUM BROMATE (Class 5.1) */ +/* SODIUM CHLORATE. DESCRIPTION: SODIUM CHLORATE (Class 5.1) */ +/* SODIUM CHLORITE. DESCRIPTION: SODIUM CHLORITE (Class 5.1) */ +/* SODIUM NITRATE. DESCRIPTION: SODIUM NITRATE (Class 5.1) */ +/* SODIUM NITRATE AND POTASSIUM NITRATE MIXTURE. DESCRIPTION: SODIUM NITRATE AND POTASSIUM NITRATE MIXTURE (Class 5.1) */ +/* SODIUM NITRITE. DESCRIPTION: SODIUM NITRITE (Class 5.1) */ +/* SODIUM PERCHLORATE. DESCRIPTION: SODIUM PERCHLORATE (Class 5.1) */ +/* SODIUM PERMANGANATE. DESCRIPTION: SODIUM PERMANGANATE (Class 5.1) */ +/* SODIUM PEROXIDE. DESCRIPTION: SODIUM PEROXIDE (Class 5.1) */ +/* SODIUM PERSULPHATE. DESCRIPTION: SODIUM PERSULPHATE (Class 5.1) */ +/* STRONTIUM CHLORATE. DESCRIPTION: STRONTIUM CHLORATE (Class 5.1) */ +/* STRONTIUM NITRATE. DESCRIPTION: STRONTIUM NITRATE (Class 5.1) */ +/* STRONTIUM PERCHLORATE. DESCRIPTION: STRONTIUM PERCHLORATE (Class 5.1) */ +/* STRONTIUM PEROXIDE. DESCRIPTION: STRONTIUM PEROXIDE (Class 5.1) */ +/* TETRANITROMETHANE. DESCRIPTION: TETRANITROMETHANE (Class 5.1) */ +/* UREA HYDROGEN PEROXIDE. DESCRIPTION: UREA HYDROGEN PEROXIDE (Class 5.1) */ +/* ZINC AMMONIUM NITRITE. DESCRIPTION: ZINC AMMONIUM NITRITE (Class 5.1) */ +/* ZINC CHLORATE. DESCRIPTION: ZINC CHLORATE (Class 5.1) */ +/* ZINC NITRATE. DESCRIPTION: ZINC NITRATE (Class 5.1) */ +/* ZINC PERMANGANATE. DESCRIPTION: ZINC PERMANGANATE (Class 5.1) */ +/* ZINC PEROXIDE. DESCRIPTION: ZINC PEROXIDE (Class 5.1) */ +/* ZIRCONIUM PICRAMATE, WETTED with not less than 20% water, by mass. DESCRIPTION: ZIRCONIUM PICRAMATE, WETTED with not less than 20% water, by mass (Class 4.1) */ +/* ACETONE CYANOHYDRIN, STABILIZED. DESCRIPTION: ACETONE CYANOHYDRIN, STABILIZED (Class 6.1) */ +/* ALKALOIDS, SOLID, N.O.S. or ALKALOID SALTS, SOLID, N.O.S.. DESCRIPTION: ALKALOIDS, SOLID, N.O.S. or ALKALOID SALTS, SOLID, N.O.S. (Class 6.1) */ +/* ALLYL ISOTHIOCYANATE, STABILIZED. DESCRIPTION: ALLYL ISOTHIOCYANATE, STABILIZED (Class 6.1) */ +/* AMMONIUM ARSENATE. DESCRIPTION: AMMONIUM ARSENATE (Class 6.1) */ +/* ANILINE. DESCRIPTION: ANILINE (Class 6.1) */ +/* ANILINE HYDROCHLORIDE. DESCRIPTION: ANILINE HYDROCHLORIDE (Class 6.1) */ +/* ANTIMONY COMPOUND, INORGANIC, SOLID, N.O.S.. DESCRIPTION: ANTIMONY COMPOUND, INORGANIC, SOLID, N.O.S. (Class 6.1) */ +/* ANTIMONY LACTATE. DESCRIPTION: ANTIMONY LACTATE (Class 6.1) */ +/* ANTIMONY POTASSIUM TARTRATE. DESCRIPTION: ANTIMONY POTASSIUM TARTRATE (Class 6.1) */ +/* ARSENIC ACID, LIQUID. DESCRIPTION: ARSENIC ACID, LIQUID (Class 6.1) */ +/* ARSENIC ACID, SOLID. DESCRIPTION: ARSENIC ACID, SOLID (Class 6.1) */ +/* ARSENIC BROMIDE. DESCRIPTION: ARSENIC BROMIDE (Class 6.1) */ +/* ARSENIC COMPOUND, LIQUID, N.O.S., inorganic, including: Arsenates, n.o.s., Arsenites, n.o.s.; and Arsenic sulphides, n.o.s.. DESCRIPTION: ARSENIC COMPOUND, LIQUID, N.O.S., inorganic, including: Arsenates, n.o.s., Arsenites, n.o.s.; and Arsenic sulphides, n.o.s. (Class 6.1) */ +/* ARSENIC COMPOUND, SOLID, N.O.S., inorganic, including: Arsenates, n.o.s.; Arsenites, n.o.s.; and Arsenic sulphides, n.o.s.. DESCRIPTION: ARSENIC COMPOUND, SOLID, N.O.S., inorganic, including: Arsenates, n.o.s.; Arsenites, n.o.s.; and Arsenic sulphides, n.o.s. (Class 6.1) */ +/* ARSENIC. DESCRIPTION: ARSENIC (Class 6.1) */ +/* ARSENIC PENTOXIDE. DESCRIPTION: ARSENIC PENTOXIDE (Class 6.1) */ +/* ARSENIC TRICHLORIDE. DESCRIPTION: ARSENIC TRICHLORIDE (Class 6.1) */ +/* ARSENIC TRIOXIDE. DESCRIPTION: ARSENIC TRIOXIDE (Class 6.1) */ +/* ARSENICAL DUST. DESCRIPTION: ARSENICAL DUST (Class 6.1) */ +/* BARIUM COMPOUND, N.O.S.. DESCRIPTION: BARIUM COMPOUND, N.O.S. (Class 6.1) */ +/* BARIUM CYANIDE. DESCRIPTION: BARIUM CYANIDE (Class 6.1) */ +/* BERYLLIUM COMPOUND, N.O.S.. DESCRIPTION: BERYLLIUM COMPOUND, N.O.S. (Class 6.1) */ +/* BERYLLIUM POWDER. DESCRIPTION: BERYLLIUM POWDER (Class 6.1) */ +/* BROMOACETONE. DESCRIPTION: BROMOACETONE (Class 6.1) */ +/* BRUCINE. DESCRIPTION: BRUCINE (Class 6.1) */ +/* BARIUM AZIDE, WETTED with not less than 50% water, by mass. DESCRIPTION: BARIUM AZIDE, WETTED with not less than 50% water, by mass (Class 4.1) */ +/* CACODYLIC ACID. DESCRIPTION: CACODYLIC ACID (Class 6.1) */ +/* CALCIUM ARSENATE. DESCRIPTION: CALCIUM ARSENATE (Class 6.1) */ +/* CALCIUM ARSENATE AND CALCIUM ARSENITE MIXTURE, SOLID. DESCRIPTION: CALCIUM ARSENATE AND CALCIUM ARSENITE MIXTURE, SOLID (Class 6.1) */ +/* CALCIUM CYANIDE. DESCRIPTION: CALCIUM CYANIDE (Class 6.1) */ +/* CHLORODINITROBENZENES, LIQUID. DESCRIPTION: CHLORODINITROBENZENES, LIQUID (Class 6.1) */ +/* CHLORODINITROBENZENES, SOLID. DESCRIPTION: CHLORODINITROBENZENES, SOLID (Class 6.1) */ +/* 4-CHLORO-o-TOLUIDINE HYDROCHLORIDE. DESCRIPTION: 4-CHLORO-o-TOLUIDINE HYDROCHLORIDE (Class 6.1) */ +/* CHLOROPICRIN. DESCRIPTION: CHLOROPICRIN (Class 6.1) */ +/* CHLOROPICRIN AND METHYL BROMIDE MIXTURE. DESCRIPTION: CHLOROPICRIN AND METHYL BROMIDE MIXTURE (Class 2) */ +/* CHLOROPICRIN AND METHYL CHLORIDE MIXTURE. DESCRIPTION: CHLOROPICRIN AND METHYL CHLORIDE MIXTURE (Class 2) */ +/* CHLOROPICRIN MIXTURE, N.O.S. (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: CHLOROPICRIN MIXTURE, N.O.S. (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* COPPER ACETOARSENITE. DESCRIPTION: COPPER ACETOARSENITE (Class 6.1) */ +/* COPPER ARSENITE. DESCRIPTION: COPPER ARSENITE (Class 6.1) */ +/* COPPER CYANIDE. DESCRIPTION: COPPER CYANIDE (Class 6.1) */ +/* CYANIDES, INORGANIC, SOLID, N.O.S.. DESCRIPTION: CYANIDES, INORGANIC, SOLID, N.O.S. (Class 6.1) */ +/* CYANOGEN CHLORIDE, STABILIZED. DESCRIPTION: CYANOGEN CHLORIDE, STABILIZED (Class 2) */ +/* DICHLOROANILINES, LIQUID. DESCRIPTION: DICHLOROANILINES, LIQUID (Class 6.1) */ +/* o-DICHLOROBENZENE. DESCRIPTION: o-DICHLOROBENZENE (Class 6.1) */ +/* DICHLOROMETHANE. DESCRIPTION: DICHLOROMETHANE (Class 6.1) */ +/* DIETHYL SULPHATE. DESCRIPTION: DIETHYL SULPHATE (Class 6.1) */ +/* DIMETHYL SULPHATE. DESCRIPTION: DIMETHYL SULPHATE (Class 6.1) */ +/* DINITROANILINES. DESCRIPTION: DINITROANILINES (Class 6.1) */ +/* DINITROBENZENES, LIQUID. DESCRIPTION: DINITROBENZENES, LIQUID (Class 6.1) */ +/* DINITRO-o-CRESOL. DESCRIPTION: DINITRO-o-CRESOL (Class 6.1) */ +/* DINITROPHENOL SOLUTION. DESCRIPTION: DINITROPHENOL SOLUTION (Class 6.1) */ +/* DINITROTOLUENES, MOLTEN. DESCRIPTION: DINITROTOLUENES, MOLTEN (Class 6.1) */ +/* DISINFECTANT, SOLID, TOXIC, N.O.S.. DESCRIPTION: DISINFECTANT, SOLID, TOXIC, N.O.S. (Class 6.1) */ +/* DYE, LIQUID, TOXIC, N.O.S. or DYE INTERMEDIATE, LIQUID, TOXIC, N.O.S.. DESCRIPTION: DYE, LIQUID, TOXIC, N.O.S. or DYE INTERMEDIATE, LIQUID, TOXIC, N.O.S. (Class 6.1) */ +/* ETHYL BROMOACETATE. DESCRIPTION: ETHYL BROMOACETATE (Class 6.1) */ +/* ETHYLENEDIAMINE. DESCRIPTION: ETHYLENEDIAMINE (Class 8) */ +/* ETHYLENE DIBROMIDE. DESCRIPTION: ETHYLENE DIBROMIDE (Class 6.1) */ +/* FERRIC ARSENATE. DESCRIPTION: FERRIC ARSENATE (Class 6.1) */ +/* FERRIC ARSENITE. DESCRIPTION: FERRIC ARSENITE (Class 6.1) */ +/* FERROUS ARSENATE. DESCRIPTION: FERROUS ARSENATE (Class 6.1) */ +/* HEXAETHYL TETRAPHOSPHATE. DESCRIPTION: HEXAETHYL TETRAPHOSPHATE (Class 6.1) */ +/* HEXAETHYL TETRAPHOSPHATE AND COMPRESSED GAS MIXTURE. DESCRIPTION: HEXAETHYL TETRAPHOSPHATE AND COMPRESSED GAS MIXTURE (Class 2) */ +/* HYDROCYANIC ACID, AQUEOUS SOLUTION (HYDROGEN CYANIDE, AQUEOUS SOLUTION) with not more than 20% hydrogen cyanide. DESCRIPTION: HYDROCYANIC ACID, AQUEOUS SOLUTION (HYDROGEN CYANIDE, AQUEOUS SOLUTION) with not more than 20% hydrogen cyanide (Class 6.1) */ +/* HYDROGEN CYANIDE, STABILIZED, containing less than 3% water and absorbed in a porous inert material. DESCRIPTION: HYDROGEN CYANIDE, STABILIZED, containing less than 3% water and absorbed in a porous inert material (Class 6.1) */ +/* LEAD ACETATE. DESCRIPTION: LEAD ACETATE (Class 6.1) */ +/* LEAD ARSENATES. DESCRIPTION: LEAD ARSENATES (Class 6.1) */ +/* LEAD ARSENITES. DESCRIPTION: LEAD ARSENITES (Class 6.1) */ +/* LEAD CYANIDE. DESCRIPTION: LEAD CYANIDE (Class 6.1) */ +/* LONDON PURPLE. DESCRIPTION: LONDON PURPLE (Class 6.1) */ +/* MAGNESIUM ARSENATE. DESCRIPTION: MAGNESIUM ARSENATE (Class 6.1) */ +/* MERCURIC ARSENATE. DESCRIPTION: MERCURIC ARSENATE (Class 6.1) */ +/* MERCURIC CHLORIDE. DESCRIPTION: MERCURIC CHLORIDE (Class 6.1) */ +/* MERCURIC NITRATE. DESCRIPTION: MERCURIC NITRATE (Class 6.1) */ +/* MERCURIC POTASSIUM CYANIDE. DESCRIPTION: MERCURIC POTASSIUM CYANIDE (Class 6.1) */ +/* MERCUROUS NITRATE. DESCRIPTION: MERCUROUS NITRATE (Class 6.1) */ +/* MERCURY ACETATE. DESCRIPTION: MERCURY ACETATE (Class 6.1) */ +/* MERCURY AMMONIUM CHLORIDE. DESCRIPTION: MERCURY AMMONIUM CHLORIDE (Class 6.1) */ +/* MERCURY BENZOATE. DESCRIPTION: MERCURY BENZOATE (Class 6.1) */ +/* MERCURY BROMIDES. DESCRIPTION: MERCURY BROMIDES (Class 6.1) */ +/* MERCURY CYANIDE. DESCRIPTION: MERCURY CYANIDE (Class 6.1) */ +/* MERCURY GLUCONATE. DESCRIPTION: MERCURY GLUCONATE (Class 6.1) */ +/* MERCURY IODIDE. DESCRIPTION: MERCURY IODIDE (Class 6.1) */ +/* MERCURY NUCLEATE. DESCRIPTION: MERCURY NUCLEATE (Class 6.1) */ +/* MERCURY OLEATE. DESCRIPTION: MERCURY OLEATE (Class 6.1) */ +/* MERCURY OXIDE. DESCRIPTION: MERCURY OXIDE (Class 6.1) */ +/* MERCURY OXYCYANIDE, DESENSITIZED. DESCRIPTION: MERCURY OXYCYANIDE, DESENSITIZED (Class 6.1) */ +/* MERCURY POTASSIUM IODIDE. DESCRIPTION: MERCURY POTASSIUM IODIDE (Class 6.1) */ +/* MERCURY SALICYLATE. DESCRIPTION: MERCURY SALICYLATE (Class 6.1) */ +/* MERCURY SULPHATE. DESCRIPTION: MERCURY SULPHATE (Class 6.1) */ +/* MERCURY THIOCYANATE. DESCRIPTION: MERCURY THIOCYANATE (Class 6.1) */ +/* METHYL BROMIDE AND ETHYLENE DIBROMIDE MIXTURE, LIQUID. DESCRIPTION: METHYL BROMIDE AND ETHYLENE DIBROMIDE MIXTURE, LIQUID (Class 6.1) */ +/* ACETONITRILE. DESCRIPTION: ACETONITRILE (Class 3) */ +/* MOTOR FUEL ANTI-KNOCK MIXTURE. DESCRIPTION: MOTOR FUEL ANTI-KNOCK MIXTURE (Class 6.1) */ +/* beta-NAPHTHYLAMINE. DESCRIPTION: beta-NAPHTHYLAMINE (Class 6.1) */ +/* NAPHTHYLTHIOUREA. DESCRIPTION: NAPHTHYLTHIOUREA (Class 6.1) */ +/* NAPHTHYLUREA. DESCRIPTION: NAPHTHYLUREA (Class 6.1) */ +/* NICKEL CYANIDE. DESCRIPTION: NICKEL CYANIDE (Class 6.1) */ +/* NICOTINE. DESCRIPTION: NICOTINE (Class 6.1) */ +/* NICOTINE COMPOUND, SOLID, N.O.S. or NICOTINE PREPARATION, SOLID, N.O.S.. DESCRIPTION: NICOTINE COMPOUND, SOLID, N.O.S. or NICOTINE PREPARATION, SOLID, N.O.S. (Class 6.1) */ +/* NICOTINE HYDROCHLORIDE, liquid or NICOTINE HYDROCHLORIDE SOLUTION. DESCRIPTION: NICOTINE HYDROCHLORIDE, liquid or NICOTINE HYDROCHLORIDE SOLUTION (Class 6.1) */ +/* NICOTINE SALICYLATE, solid. DESCRIPTION: NICOTINE SALICYLATE, solid (Class 6.1) */ +/* NICOTINE SULPHATE, SOLUTION. DESCRIPTION: NICOTINE SULPHATE, SOLUTION (Class 6.1) */ +/* NICOTINE TARTRATE. DESCRIPTION: NICOTINE TARTRATE (Class 6.1) */ +/* NITRIC OXIDE, COMPRESSED. DESCRIPTION: NITRIC OXIDE, COMPRESSED (Class 2) */ +/* NITROANILINES (o-, m-, p-). DESCRIPTION: NITROANILINES (o-, m-, p-) (Class 6.1) */ +/* NITROBENZENE. DESCRIPTION: NITROBENZENE (Class 6.1) */ +/* NITROPHENOLS (o-, m-, p-). DESCRIPTION: NITROPHENOLS (o-, m-, p-) (Class 6.1) */ +/* NITROTOLUENES, LIQUID. DESCRIPTION: NITROTOLUENES, LIQUID (Class 6.1) */ +/* NITROXYLENES, LIQUID. DESCRIPTION: NITROXYLENES, LIQUID (Class 6.1) */ +/* PENTACHLOROETHANE. DESCRIPTION: PENTACHLOROETHANE (Class 6.1) */ +/* PERCHLOROMETHYL MERCAPTAN. DESCRIPTION: PERCHLOROMETHYL MERCAPTAN (Class 6.1) */ +/* PHENOL, SOLID. DESCRIPTION: PHENOL, SOLID (Class 6.1) */ +/* PHENYLCARBYLAMINE CHLORIDE. DESCRIPTION: PHENYLCARBYLAMINE CHLORIDE (Class 6.1) */ +/* PHENYLENEDIAMINES (o-, m-, p-). DESCRIPTION: PHENYLENEDIAMINES (o-, m-, p-) (Class 6.1) */ +/* PHENYLMERCURIC ACETATE. DESCRIPTION: PHENYLMERCURIC ACETATE (Class 6.1) */ +/* POTASSIUM ARSENATE. DESCRIPTION: POTASSIUM ARSENATE (Class 6.1) */ +/* POTASSIUM ARSENITE. DESCRIPTION: POTASSIUM ARSENITE (Class 6.1) */ +/* POTASSIUM CUPROCYANIDE. DESCRIPTION: POTASSIUM CUPROCYANIDE (Class 6.1) */ +/* POTASSIUM CYANIDE. DESCRIPTION: POTASSIUM CYANIDE (Class 6.1) */ +/* SILVER ARSENITE. DESCRIPTION: SILVER ARSENITE (Class 6.1) */ +/* SILVER CYANIDE. DESCRIPTION: SILVER CYANIDE (Class 6.1) */ +/* SODIUM ARSENATE. DESCRIPTION: SODIUM ARSENATE (Class 6.1) */ +/* SODIUM ARSENITE, AQUEOUS SOLUTION. DESCRIPTION: SODIUM ARSENITE, AQUEOUS SOLUTION (Class 6.1) */ +/* SODIUM AZIDE. DESCRIPTION: SODIUM AZIDE (Class 6.1) */ +/* SODIUM CACODYLATE. DESCRIPTION: SODIUM CACODYLATE (Class 6.1) */ +/* SODIUM CYANIDE. DESCRIPTION: SODIUM CYANIDE (Class 6.1) */ +/* SODIUM FLUORIDE. DESCRIPTION: SODIUM FLUORIDE (Class 6.1) */ +/* STRONTIUM ARSENITE. DESCRIPTION: STRONTIUM ARSENITE (Class 6.1) */ +/* STRYCHNINE or STRYCHNINE SALTS. DESCRIPTION: STRYCHNINE or STRYCHNINE SALTS (Class 6.1) */ +/* TEAR GAS SUBSTANCE, LIQUID, N.O.S.. DESCRIPTION: TEAR GAS SUBSTANCE, LIQUID, N.O.S. (Class 6.1) */ +/* BROMOBENZYL CYANIDES, LIQUID. DESCRIPTION: BROMOBENZYL CYANIDES, LIQUID (Class 6.1) */ +/* CHLOROACETONE, STABILIZED. DESCRIPTION: CHLOROACETONE, STABILIZED (Class 6.1) */ +/* CHLOROACETOPHENONE. DESCRIPTION: CHLOROACETOPHENONE (Class 6.1) */ +/* DIPHENYLAMINE CHLOROARSINE. DESCRIPTION: DIPHENYLAMINE CHLOROARSINE (Class 6.1) */ +/* DIPHENYLCHLOROARSINE, LIQUID. DESCRIPTION: DIPHENYLCHLOROARSINE, LIQUID (Class 6.1) */ +/* TEAR GAS CANDLES. DESCRIPTION: TEAR GAS CANDLES (Class 6.1) */ +/* XYLYL BROMIDE. DESCRIPTION: XYLYL BROMIDE (Class 6.1) */ +/* TETRACHLOROETHANE. DESCRIPTION: TETRACHLOROETHANE (Class 6.1) */ +/* TETRAETHYL DITHIOPYROPHOSPHATE. DESCRIPTION: TETRAETHYL DITHIOPYROPHOSPHATE (Class 6.1) */ +/* THALLIUM COMPOUND, N.O.S.. DESCRIPTION: THALLIUM COMPOUND, N.O.S. (Class 6.1) */ +/* TOLUIDINES, LIQUID. DESCRIPTION: TOLUIDINES, LIQUID (Class 6.1) */ +/* 2,4-TOLUYLENEDIAMINE. DESCRIPTION: 2,4-TOLUYLENEDIAMINE (Class 6.1) */ +/* TRICHLOROETHYLENE. DESCRIPTION: TRICHLOROETHYLENE (Class 6.1) */ +/* XYLIDINES, LIQUID. DESCRIPTION: XYLIDINES, LIQUID (Class 6.1) */ +/* ZINC ARSENATE, ZINC ARSENITE or ZINC ARSENATE AND ZINC ARSENITE MIXTURE. DESCRIPTION: ZINC ARSENATE, ZINC ARSENITE or ZINC ARSENATE AND ZINC ARSENITE MIXTURE (Class 6.1) */ +/* ZINC CYANIDE. DESCRIPTION: ZINC CYANIDE (Class 6.1) */ +/* ZINC PHOSPHIDE. DESCRIPTION: ZINC PHOSPHIDE (Class 4.3) */ +/* ACETIC ANHYDRIDE. DESCRIPTION: ACETIC ANHYDRIDE (Class 8) */ +/* ACETYL BROMIDE. DESCRIPTION: ACETYL BROMIDE (Class 8) */ +/* ACETYL CHLORIDE. DESCRIPTION: ACETYL CHLORIDE (Class 3) */ +/* BUTYL ACID PHOSPHATE. DESCRIPTION: BUTYL ACID PHOSPHATE (Class 8) */ +/* CAUSTIC ALKALI LIQUID, N.O.S.. DESCRIPTION: CAUSTIC ALKALI LIQUID, N.O.S. (Class 8) */ +/* ALLYL CHLOROFORMATE. DESCRIPTION: ALLYL CHLOROFORMATE (Class 6.1) */ +/* ALLYL IODIDE. DESCRIPTION: ALLYL IODIDE (Class 3) */ +/* ALLYLTRICHLOROSILANE, STABILIZED. DESCRIPTION: ALLYLTRICHLOROSILANE, STABILIZED (Class 8) */ +/* ALUMINIUM BROMIDE, ANHYDROUS. DESCRIPTION: ALUMINIUM BROMIDE, ANHYDROUS (Class 8) */ +/* ALUMINIUM CHLORIDE, ANHYDROUS. DESCRIPTION: ALUMINIUM CHLORIDE, ANHYDROUS (Class 8) */ +/* AMMONIUM HYDROGENDIFLUORIDE, SOLID. DESCRIPTION: AMMONIUM HYDROGENDIFLUORIDE, SOLID (Class 8) */ +/* AMYLTRICHLOROSILANE. DESCRIPTION: AMYLTRICHLOROSILANE (Class 8) */ +/* ANISOYL CHLORIDE. DESCRIPTION: ANISOYL CHLORIDE (Class 8) */ +/* ANTIMONY PENTACHLORIDE, LIQUID. DESCRIPTION: ANTIMONY PENTACHLORIDE, LIQUID (Class 8) */ +/* ANTIMONY PENTACHLORIDE SOLUTION. DESCRIPTION: ANTIMONY PENTACHLORIDE SOLUTION (Class 8) */ +/* ANTIMONY PENTAFLUORIDE. DESCRIPTION: ANTIMONY PENTAFLUORIDE (Class 8) */ +/* ANTIMONY TRICHLORIDE. DESCRIPTION: ANTIMONY TRICHLORIDE (Class 8) */ +/* BENZOYL CHLORIDE. DESCRIPTION: BENZOYL CHLORIDE (Class 8) */ +/* BENZYL BROMIDE. DESCRIPTION: BENZYL BROMIDE (Class 6.1) */ +/* BENZYL CHLORIDE. DESCRIPTION: BENZYL CHLORIDE (Class 6.1) */ +/* BENZYL CHLOROFORMATE. DESCRIPTION: BENZYL CHLOROFORMATE (Class 8) */ +/* HYDROGENDIFLUORIDES, N.O.S.. DESCRIPTION: HYDROGENDIFLUORIDES, N.O.S. (Class 8) */ +/* BORON TRICHLORIDE. DESCRIPTION: BORON TRICHLORIDE (Class 2) */ +/* BORON TRIFLUORIDE ACETIC ACID COMPLEX. DESCRIPTION: BORON TRIFLUORIDE ACETIC ACID COMPLEX (Class 8) */ +/* BORON TRIFLUORIDE PROPIONIC ACID COMPLEX. DESCRIPTION: BORON TRIFLUORIDE PROPIONIC ACID COMPLEX (Class 8) */ +/* BROMINE or BROMINE SOLUTION. DESCRIPTION: BROMINE or BROMINE SOLUTION (Class 8) */ +/* BROMINE PENTAFLUORIDE. DESCRIPTION: BROMINE PENTAFLUORIDE (Class 5.1) */ +/* BROMINE TRIFLUORIDE. DESCRIPTION: BROMINE TRIFLUORIDE (Class 5.1) */ +/* BUTYLTRICHLOROSILANE. DESCRIPTION: BUTYLTRICHLOROSILANE (Class 8) */ +/* CALCIUM HYPOCHLORITE, DRY or CALCIUM HYPOCHLORITE MIXTURE, DRY with more than 39% available chlorine (8.8% available oxygen). DESCRIPTION: CALCIUM HYPOCHLORITE, DRY or CALCIUM HYPOCHLORITE MIXTURE, DRY with more than 39% available chlorine (8.8% available oxygen) (Class 5.1) */ +/* CHLORINE TRIFLUORIDE. DESCRIPTION: CHLORINE TRIFLUORIDE (Class 2) */ +/* CHLOROACETIC ACID SOLUTION. DESCRIPTION: CHLOROACETIC ACID SOLUTION (Class 6.1) */ +/* CHLOROACETIC ACID, SOLID. DESCRIPTION: CHLOROACETIC ACID, SOLID (Class 6.1) */ +/* CHLOROACETYL CHLORIDE. DESCRIPTION: CHLOROACETYL CHLORIDE (Class 6.1) */ +/* CHLOROPHENYLTRICHLOROSILANE. DESCRIPTION: CHLOROPHENYLTRICHLOROSILANE (Class 8) */ +/* CHLOROSULPHONIC ACID (with or without sulphur trioxide). DESCRIPTION: CHLOROSULPHONIC ACID (with or without sulphur trioxide) (Class 8) */ +/* CHROMIC ACID SOLUTION. DESCRIPTION: CHROMIC ACID SOLUTION (Class 8) */ +/* CHROMIC FLUORIDE, SOLID. DESCRIPTION: CHROMIC FLUORIDE, SOLID (Class 8) */ +/* CHROMIC FLUORIDE SOLUTION. DESCRIPTION: CHROMIC FLUORIDE SOLUTION (Class 8) */ +/* CHROMIUM OXYCHLORIDE. DESCRIPTION: CHROMIUM OXYCHLORIDE (Class 8) */ +/* CORROSIVE SOLID, N.O.S.. DESCRIPTION: CORROSIVE SOLID, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, N.O.S. (Class 8) */ +/* CUPRIETHYLENEDIAMINE SOLUTION. DESCRIPTION: CUPRIETHYLENEDIAMINE SOLUTION (Class 8) */ +/* CYCLOHEXENYLTRICHLOROSILANE. DESCRIPTION: CYCLOHEXENYLTRICHLOROSILANE (Class 8) */ +/* CYCLOHEXYLTRICHLOROSILANE. DESCRIPTION: CYCLOHEXYLTRICHLOROSILANE (Class 8) */ +/* DICHLOROACETIC ACID. DESCRIPTION: DICHLOROACETIC ACID (Class 8) */ +/* DICHLOROACETYL CHLORIDE. DESCRIPTION: DICHLOROACETYL CHLORIDE (Class 8) */ +/* DICHLOROPHENYLTRICHLOROSILANE. DESCRIPTION: DICHLOROPHENYLTRICHLOROSILANE (Class 8) */ +/* DIETHYLDICHLOROSILANE. DESCRIPTION: DIETHYLDICHLOROSILANE (Class 8) */ +/* DIFLUOROPHOSPHORIC ACID, ANHYDROUS. DESCRIPTION: DIFLUOROPHOSPHORIC ACID, ANHYDROUS (Class 8) */ +/* DIPHENYLDICHLOROSILANE. DESCRIPTION: DIPHENYLDICHLOROSILANE (Class 8) */ +/* DIPHENYLMETHYL BROMIDE. DESCRIPTION: DIPHENYLMETHYL BROMIDE (Class 8) */ +/* DODECYLTRICHLOROSILANE. DESCRIPTION: DODECYLTRICHLOROSILANE (Class 8) */ +/* FERRIC CHLORIDE, ANHYDROUS. DESCRIPTION: FERRIC CHLORIDE, ANHYDROUS (Class 8) */ +/* FIRE EXTINGUISHER CHARGES, corrosive liquid. DESCRIPTION: FIRE EXTINGUISHER CHARGES, corrosive liquid (Class 8) */ +/* FLUOROBORIC ACID. DESCRIPTION: FLUOROBORIC ACID (Class 8) */ +/* FLUOROPHOSPHORIC ACID, ANHYDROUS. DESCRIPTION: FLUOROPHOSPHORIC ACID, ANHYDROUS (Class 8) */ +/* FLUOROSULPHONIC ACID. DESCRIPTION: FLUOROSULPHONIC ACID (Class 8) */ +/* FLUOROSILICIC ACID. DESCRIPTION: FLUOROSILICIC ACID (Class 8) */ +/* FORMIC ACID. DESCRIPTION: FORMIC ACID (Class 8) */ +/* FUMARYL CHLORIDE. DESCRIPTION: FUMARYL CHLORIDE (Class 8) */ +/* HEXADECYLTRICHLOROSILANE. DESCRIPTION: HEXADECYLTRICHLOROSILANE (Class 8) */ +/* HEXAFLUOROPHOSPHORIC ACID. DESCRIPTION: HEXAFLUOROPHOSPHORIC ACID (Class 8) */ +/* HEXAMETHYLENEDIAMINE SOLUTION. DESCRIPTION: HEXAMETHYLENEDIAMINE SOLUTION (Class 8) */ +/* HEXYLTRICHLOROSILANE. DESCRIPTION: HEXYLTRICHLOROSILANE (Class 8) */ +/* HYDROFLUORIC ACID AND SULPHURIC ACID MIXTURE. DESCRIPTION: HYDROFLUORIC ACID AND SULPHURIC ACID MIXTURE (Class 8) */ +/* HYDRIODIC ACID. DESCRIPTION: HYDRIODIC ACID (Class 8) */ +/* HYDROBROMIC ACID. DESCRIPTION: HYDROBROMIC ACID (Class 8) */ +/* HYDROCHLORIC ACID. DESCRIPTION: HYDROCHLORIC ACID (Class 8) */ +/* HYDROFLUORIC ACID, solution. DESCRIPTION: HYDROFLUORIC ACID, solution (Class 8) */ +/* HYPOCHLORITE SOLUTION. DESCRIPTION: HYPOCHLORITE SOLUTION (Class 8) */ +/* IODINE MONOCHLORIDE. DESCRIPTION: IODINE MONOCHLORIDE (Class 8) */ +/* ISOPROPYL ACID PHOSPHATE. DESCRIPTION: ISOPROPYL ACID PHOSPHATE (Class 8) */ +/* LEAD SULPHATE with more than 3% free acid. DESCRIPTION: LEAD SULPHATE with more than 3% free acid (Class 8) */ +/* NITRATING ACID MIXTURE. DESCRIPTION: NITRATING ACID MIXTURE (Class 8) */ +/* Nitrohydrochloric acid. DESCRIPTION: Nitrohydrochloric acid (Class 8) */ +/* NONYLTRICHLOROSILANE. DESCRIPTION: NONYLTRICHLOROSILANE (Class 8) */ +/* OCTADECYLTRICHLOROSILANE. DESCRIPTION: OCTADECYLTRICHLOROSILANE (Class 8) */ +/* OCTYLTRICHLOROSILANE. DESCRIPTION: OCTYLTRICHLOROSILANE (Class 8) */ +/* PERCHLORIC ACID with not more than 50% acid, by mass. DESCRIPTION: PERCHLORIC ACID with not more than 50% acid, by mass (Class 8) */ +/* PHENOLSULPHONIC ACID, LIQUID. DESCRIPTION: PHENOLSULPHONIC ACID, LIQUID (Class 8) */ +/* PHENYLTRICHLOROSILANE. DESCRIPTION: PHENYLTRICHLOROSILANE (Class 8) */ +/* PHOSPHORIC ACID, SOLUTION. DESCRIPTION: PHOSPHORIC ACID, SOLUTION (Class 8) */ +/* PHOSPHORUS PENTACHLORIDE. DESCRIPTION: PHOSPHORUS PENTACHLORIDE (Class 8) */ +/* PHOSPHORUS PENTOXIDE. DESCRIPTION: PHOSPHORUS PENTOXIDE (Class 8) */ +/* PHOSPHORUS TRIBROMIDE. DESCRIPTION: PHOSPHORUS TRIBROMIDE (Class 8) */ +/* PHOSPHORUS TRICHLORIDE. DESCRIPTION: PHOSPHORUS TRICHLORIDE (Class 6.1) */ +/* PHOSPHORUS OXYCHLORIDE. DESCRIPTION: PHOSPHORUS OXYCHLORIDE (Class 8) */ +/* POTASSIUM HYDROGENDIFLUORIDE. DESCRIPTION: POTASSIUM HYDROGENDIFLUORIDE (Class 8) */ +/* POTASSIUM FLUORIDE. DESCRIPTION: POTASSIUM FLUORIDE (Class 6.1) */ +/* POTASSIUM HYDROXIDE, SOLID. DESCRIPTION: POTASSIUM HYDROXIDE, SOLID (Class 8) */ +/* POTASSIUM HYDROXIDE SOLUTION. DESCRIPTION: POTASSIUM HYDROXIDE SOLUTION (Class 8) */ +/* PROPIONYL CHLORIDE. DESCRIPTION: PROPIONYL CHLORIDE (Class 3) */ +/* PROPYLTRICHLOROSILANE. DESCRIPTION: PROPYLTRICHLOROSILANE (Class 8) */ +/* PYROSULPHURYL CHLORIDE. DESCRIPTION: PYROSULPHURYL CHLORIDE (Class 8) */ +/* SILICON TETRACHLORIDE. DESCRIPTION: SILICON TETRACHLORIDE (Class 8) */ +/* SODIUM ALUMINATE SOLUTION. DESCRIPTION: SODIUM ALUMINATE SOLUTION (Class 8) */ +/* SODIUM HYDROXIDE, SOLID. DESCRIPTION: SODIUM HYDROXIDE, SOLID (Class 8) */ +/* SODIUM HYDROXIDE SOLUTION. DESCRIPTION: SODIUM HYDROXIDE SOLUTION (Class 8) */ +/* SODIUM MONOXIDE. DESCRIPTION: SODIUM MONOXIDE (Class 8) */ +/* NITRATING ACID MIXTURE, SPENT. DESCRIPTION: NITRATING ACID MIXTURE, SPENT (Class 8) */ +/* STANNIC CHLORIDE, ANHYDROUS. DESCRIPTION: STANNIC CHLORIDE, ANHYDROUS (Class 8) */ +/* SULPHUR CHLORIDES. DESCRIPTION: SULPHUR CHLORIDES (Class 8) */ +/* SULPHUR TRIOXIDE, STABILIZED. DESCRIPTION: SULPHUR TRIOXIDE, STABILIZED (Class 8) */ +/* SULPHURIC ACID with more than 51% acid. DESCRIPTION: SULPHURIC ACID with more than 51% acid (Class 8) */ +/* SULPHURIC ACID, FUMING. DESCRIPTION: SULPHURIC ACID, FUMING (Class 8) */ +/* SULPHURIC ACID, SPENT. DESCRIPTION: SULPHURIC ACID, SPENT (Class 8) */ +/* SULPHUROUS ACID. DESCRIPTION: SULPHUROUS ACID (Class 8) */ +/* SULPHURYL CHLORIDE. DESCRIPTION: SULPHURYL CHLORIDE (Class 8) */ +/* TETRAMETHYLAMMONIUM HYDROXIDE. DESCRIPTION: TETRAMETHYLAMMONIUM HYDROXIDE (Class 8) */ +/* THIONYL CHLORIDE. DESCRIPTION: THIONYL CHLORIDE (Class 8) */ +/* THIOPHOSPHORYL CHLORIDE. DESCRIPTION: THIOPHOSPHORYL CHLORIDE (Class 8) */ +/* TITANIUM TETRACHLORIDE. DESCRIPTION: TITANIUM TETRACHLORIDE (Class 8) */ +/* TRICHLOROACETIC ACID. DESCRIPTION: TRICHLOROACETIC ACID (Class 8) */ +/* ZINC CHLORIDE SOLUTION. DESCRIPTION: ZINC CHLORIDE SOLUTION (Class 8) */ +/* ACETALDEHYDE AMMONIA. DESCRIPTION: ACETALDEHYDE AMMONIA (Class 9) */ +/* AMMONIUM DINITRO-o-CRESOLATE. DESCRIPTION: AMMONIUM DINITRO-o-CRESOLATE (Class 6.1) */ +/* Carbon dioxide, solid (Dry ice). DESCRIPTION: Carbon dioxide, solid (Dry ice) (Class 9) */ +/* CARBON TETRACHLORIDE. DESCRIPTION: CARBON TETRACHLORIDE (Class 6.1) */ +/* POTASSIUM SULPHIDE, HYDRATED with not less than 30% water of crystallization. DESCRIPTION: POTASSIUM SULPHIDE, HYDRATED with not less than 30% water of crystallization (Class 8) */ +/* PROPIONIC ACID. DESCRIPTION: PROPIONIC ACID (Class 8) */ +/* SODIUM SULPHIDE, HYDRATED with not less than 30% water. DESCRIPTION: SODIUM SULPHIDE, HYDRATED with not less than 30% water (Class 8) */ +/* MEDICINE, LIQUID, TOXIC, N.O.S.. DESCRIPTION: MEDICINE, LIQUID, TOXIC, N.O.S. (Class 6.1) */ +/* BARIUM ALLOYS, PYROPHORIC. DESCRIPTION: BARIUM ALLOYS, PYROPHORIC (Class 4.2) */ +/* CALCIUM, PYROPHORIC or CALCIUM ALLOYS, PYROPHORIC. DESCRIPTION: CALCIUM, PYROPHORIC or CALCIUM ALLOYS, PYROPHORIC (Class 4.2) */ +/* HEXAFLUOROPROPYLENE (REFRIGERANT GAS R 1216). DESCRIPTION: HEXAFLUOROPROPYLENE (REFRIGERANT GAS R 1216) (Class 2) */ +/* SILICON TETRAFLUORIDE, COMPRESSED. DESCRIPTION: SILICON TETRAFLUORIDE, COMPRESSED (Class 2) */ +/* VINYL FLUORIDE, STABILIZED. DESCRIPTION: VINYL FLUORIDE, STABILIZED (Class 2) */ +/* ETHYL CROTONATE. DESCRIPTION: ETHYL CROTONATE (Class 3) */ +/* FUEL, AVIATION, TURBINE ENGINE. DESCRIPTION: FUEL, AVIATION, TURBINE ENGINE (Class 3) */ +/* n-PROPYL NITRATE. DESCRIPTION: n-PROPYL NITRATE (Class 3) */ +/* RESIN SOLUTION, flammable. DESCRIPTION: RESIN SOLUTION, flammable (Class 3) */ +/* DECABORANE. DESCRIPTION: DECABORANE (Class 4.1) */ +/* MAGNESIUM or MAGNESIUM ALLOYS with more than 50% magnesium in pellets, turnings or ribbons. DESCRIPTION: MAGNESIUM or MAGNESIUM ALLOYS with more than 50% magnesium in pellets, turnings or ribbons (Class 4.1) */ +/* POTASSIUM BOROHYDRIDE. DESCRIPTION: POTASSIUM BOROHYDRIDE (Class 4.3) */ +/* TITANIUM HYDRIDE. DESCRIPTION: TITANIUM HYDRIDE (Class 4.1) */ +/* LEAD DIOXIDE. DESCRIPTION: LEAD DIOXIDE (Class 5.1) */ +/* PERCHLORIC ACID with more than 50% but not more than 72% acid, by mass. DESCRIPTION: PERCHLORIC ACID with more than 50% but not more than 72% acid, by mass (Class 5.1) */ +/* BARIUM OXIDE. DESCRIPTION: BARIUM OXIDE (Class 6.1) */ +/* BENZIDINE. DESCRIPTION: BENZIDINE (Class 6.1) */ +/* BENZYLIDENE CHLORIDE. DESCRIPTION: BENZYLIDENE CHLORIDE (Class 6.1) */ +/* BROMOCHLOROMETHANE. DESCRIPTION: BROMOCHLOROMETHANE (Class 6.1) */ +/* CHLOROFORM. DESCRIPTION: CHLOROFORM (Class 6.1) */ +/* CYANOGEN BROMIDE. DESCRIPTION: CYANOGEN BROMIDE (Class 6.1) */ +/* ETHYL BROMIDE. DESCRIPTION: ETHYL BROMIDE (Class 6.1) */ +/* ETHYLDICHLOROARSINE. DESCRIPTION: ETHYLDICHLOROARSINE (Class 6.1) */ +/* PHENYLMERCURIC HYDROXIDE. DESCRIPTION: PHENYLMERCURIC HYDROXIDE (Class 6.1) */ +/* PHENYLMERCURIC NITRATE. DESCRIPTION: PHENYLMERCURIC NITRATE (Class 6.1) */ +/* TETRACHLOROETHYLENE. DESCRIPTION: TETRACHLOROETHYLENE (Class 6.1) */ +/* ACETYL IODIDE. DESCRIPTION: ACETYL IODIDE (Class 8) */ +/* DIISOOCTYL ACID PHOSPHATE. DESCRIPTION: DIISOOCTYL ACID PHOSPHATE (Class 8) */ +/* DISINFECTANT, LIQUID, CORROSIVE, N.O.S.. DESCRIPTION: DISINFECTANT, LIQUID, CORROSIVE, N.O.S. (Class 8) */ +/* SELENIC ACID. DESCRIPTION: SELENIC ACID (Class 8) */ +/* SLUDGE ACID. DESCRIPTION: SLUDGE ACID (Class 8) */ +/* SODA LIME with more than 4% sodium hydroxide. DESCRIPTION: SODA LIME with more than 4% sodium hydroxide (Class 8) */ +/* CHLORITE SOLUTION. DESCRIPTION: CHLORITE SOLUTION (Class 8) */ +/* Calcium oxide. DESCRIPTION: Calcium oxide (Class 8) */ +/* DIBORANE, COMPRESSED. DESCRIPTION: DIBORANE, COMPRESSED (Class 2) */ +/* METHYL CHLORIDE AND METHYLENE CHLORIDE MIXTURE. DESCRIPTION: METHYL CHLORIDE AND METHYLENE CHLORIDE MIXTURE (Class 2) */ +/* NEON, REFRIGERATED LIQUID. DESCRIPTION: NEON, REFRIGERATED LIQUID (Class 2) */ +/* BUTYL PROPIONATES. DESCRIPTION: BUTYL PROPIONATES (Class 3) */ +/* CYCLOHEXANONE. DESCRIPTION: CYCLOHEXANONE (Class 3) */ +/* 2,2'-DICHLORODIETHYL ETHER. DESCRIPTION: 2,2'-DICHLORODIETHYL ETHER (Class 6.1) */ +/* ETHYL ACRYLATE, STABILIZED. DESCRIPTION: ETHYL ACRYLATE, STABILIZED (Class 3) */ +/* ISOPROPYLBENZENE. DESCRIPTION: ISOPROPYLBENZENE (Class 3) */ +/* METHYL ACRYLATE, STABILIZED. DESCRIPTION: METHYL ACRYLATE, STABILIZED (Class 3) */ +/* NONANES. DESCRIPTION: NONANES (Class 3) */ +/* PROPYLENEIMINE, STABILIZED. DESCRIPTION: PROPYLENEIMINE, STABILIZED (Class 3) */ +/* PYRROLIDINE. DESCRIPTION: PYRROLIDINE (Class 3) */ +/* CALCIUM DITHIONITE (CALCIUM HYDROSULPHITE). DESCRIPTION: CALCIUM DITHIONITE (CALCIUM HYDROSULPHITE) (Class 4.2) */ +/* METHYL MAGNESIUM BROMIDE IN ETHYL ETHER. DESCRIPTION: METHYL MAGNESIUM BROMIDE IN ETHYL ETHER (Class 4.3) */ +/* POTASSIUM DITHIONITE (POTASSIUM HYDROSULPHITE). DESCRIPTION: POTASSIUM DITHIONITE (POTASSIUM HYDROSULPHITE) (Class 4.2) */ +/* ZINC DITHIONITE (ZINC HYDROSULPHITE). DESCRIPTION: ZINC DITHIONITE (ZINC HYDROSULPHITE) (Class 9) */ +/* ZIRCONIUM SCRAP. DESCRIPTION: ZIRCONIUM SCRAP (Class 4.2) */ +/* CYANIDE SOLUTION, N.O.S.. DESCRIPTION: CYANIDE SOLUTION, N.O.S. (Class 6.1) */ +/* BROMOACETIC ACID. DESCRIPTION: BROMOACETIC ACID (Class 8) */ +/* PHOSPHORUS OXYBROMIDE. DESCRIPTION: PHOSPHORUS OXYBROMIDE (Class 8) */ +/* THIOGLYCOLIC ACID. DESCRIPTION: THIOGLYCOLIC ACID (Class 8) */ +/* DIBROMODIFLUOROMETHANE. DESCRIPTION: DIBROMODIFLUOROMETHANE (Class 9) */ +/* AMMONIUM NITRATE with not more than 0.2% combustible substances, including any organic substance calculated as carbon, to the exclusion of any other added substance. DESCRIPTION: AMMONIUM NITRATE with not more than 0.2% combustible substances, including any organic substance calculated as carbon, to the exclusion of any other added substance (Class 5.1) */ +/* MATCHES, SAFETY (book, card or strike on box). DESCRIPTION: MATCHES, SAFETY (book, card or strike on box) (Class 4.1) */ +/* MATCHES, WAX 'VESTA'. DESCRIPTION: MATCHES, WAX 'VESTA' (Class 4.1) */ +/* AEROSOLS. DESCRIPTION: AEROSOLS (Class 2) */ +/* ARGON, REFRIGERATED LIQUID. DESCRIPTION: ARGON, REFRIGERATED LIQUID (Class 2) */ +/* ETHYLENE OXIDE AND CARBON DIOXIDE MIXTURE with not more than 9% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND CARBON DIOXIDE MIXTURE with not more than 9% ethylene oxide (Class 2) */ +/* COMPRESSED GAS, TOXIC, FLAMMABLE, N.O.S.. DESCRIPTION: COMPRESSED GAS, TOXIC, FLAMMABLE, N.O.S. (Class 2) */ +/* COMPRESSED GAS, FLAMMABLE, N.O.S.. DESCRIPTION: COMPRESSED GAS, FLAMMABLE, N.O.S. (Class 2) */ +/* COMPRESSED GAS, TOXIC, N.O.S.. DESCRIPTION: COMPRESSED GAS, TOXIC, N.O.S. (Class 2) */ +/* COMPRESSED GAS, N.O.S.. DESCRIPTION: COMPRESSED GAS, N.O.S. (Class 2) */ +/* DEUTERIUM, COMPRESSED. DESCRIPTION: DEUTERIUM, COMPRESSED (Class 2) */ +/* 1,2-DICHLORO-1,1,2,2-TETRAFLUOROETHANE (REFRIGERANT GAS R 114). DESCRIPTION: 1,2-DICHLORO-1,1,2,2-TETRAFLUOROETHANE (REFRIGERANT GAS R 114) (Class 2) */ +/* 1,1-DIFLUOROETHYLENE (REFRIGERANT GAS R 1132a). DESCRIPTION: 1,1-DIFLUOROETHYLENE (REFRIGERANT GAS R 1132a) (Class 2) */ +/* ETHANE, REFRIGERATED LIQUID. DESCRIPTION: ETHANE, REFRIGERATED LIQUID (Class 2) */ +/* ETHYLENE, COMPRESSED. DESCRIPTION: ETHYLENE, COMPRESSED (Class 2) */ +/* HELIUM, REFRIGERATED LIQUID. DESCRIPTION: HELIUM, REFRIGERATED LIQUID (Class 2) */ +/* HYDROCARBON GAS MIXTURE, COMPRESSED, N.O.S.. DESCRIPTION: HYDROCARBON GAS MIXTURE, COMPRESSED, N.O.S. (Class 2) */ +/* HYDROCARBON GAS MIXTURE, LIQUEFIED, N.O.S.. DESCRIPTION: HYDROCARBON GAS MIXTURE, LIQUEFIED, N.O.S. (Class 2) */ +/* HYDROGEN, REFRIGERATED LIQUID. DESCRIPTION: HYDROGEN, REFRIGERATED LIQUID (Class 2) */ +/* INSECTICIDE GAS, TOXIC, N.O.S.. DESCRIPTION: INSECTICIDE GAS, TOXIC, N.O.S. (Class 2) */ +/* INSECTICIDE GAS, N.O.S.. DESCRIPTION: INSECTICIDE GAS, N.O.S. (Class 2) */ +/* ISOBUTANE. DESCRIPTION: ISOBUTANE (Class 2) */ +/* KRYPTON, REFRIGERATED LIQUID. DESCRIPTION: KRYPTON, REFRIGERATED LIQUID (Class 2) */ +/* METHANE, COMPRESSED or NATURAL GAS, COMPRESSED with high methane content. DESCRIPTION: METHANE, COMPRESSED or NATURAL GAS, COMPRESSED with high methane content (Class 2) */ +/* METHANE, REFRIGERATED LIQUID or NATURAL GAS, REFRIGERATED LIQUID with high methane content. DESCRIPTION: METHANE, REFRIGERATED LIQUID or NATURAL GAS, REFRIGERATED LIQUID with high methane content (Class 2) */ +/* CHLORODIFLUOROMETHANE AND CHLOROPENTAFLUOROETHANE MIXTURE with fixed boiling point, with approximately 49% chlorodifluoromethane (REFRIGERANT GAS R 502). DESCRIPTION: CHLORODIFLUOROMETHANE AND CHLOROPENTAFLUOROETHANE MIXTURE with fixed boiling point, with approximately 49% chlorodifluoromethane (REFRIGERANT GAS R 502) (Class 2) */ +/* CHLORODIFLUOROBROMO-METHANE (REFRIGERANT GAS R 12B1). DESCRIPTION: CHLORODIFLUOROBROMO-METHANE (REFRIGERANT GAS R 12B1) (Class 2) */ +/* NITRIC OXIDE AND DINITROGEN TETROXIDE MIXTURE (NITRIC OXIDE AND NITROGEN DIOXIDE MIXTURE). DESCRIPTION: NITRIC OXIDE AND DINITROGEN TETROXIDE MIXTURE (NITRIC OXIDE AND NITROGEN DIOXIDE MIXTURE) (Class 2) */ +/* OCTAFLUOROCYCLOBUTANE (REFRIGERANT GAS RC 318). DESCRIPTION: OCTAFLUOROCYCLOBUTANE (REFRIGERANT GAS RC 318) (Class 2) */ +/* NITROGEN, REFRIGERATED LIQUID. DESCRIPTION: NITROGEN, REFRIGERATED LIQUID (Class 2) */ +/* PROPANE. DESCRIPTION: PROPANE (Class 2) */ +/* RARE GASES MIXTURE, COMPRESSED. DESCRIPTION: RARE GASES MIXTURE, COMPRESSED (Class 2) */ +/* RARE GASES AND OXYGEN MIXTURE, COMPRESSED. DESCRIPTION: RARE GASES AND OXYGEN MIXTURE, COMPRESSED (Class 2) */ +/* RARE GASES AND NITROGEN MIXTURE, COMPRESSED. DESCRIPTION: RARE GASES AND NITROGEN MIXTURE, COMPRESSED (Class 2) */ +/* TETRAFLUOROMETHANE, COMPRESSED (REFRIGERANT GAS R 14, COMPRESSED). DESCRIPTION: TETRAFLUOROMETHANE, COMPRESSED (REFRIGERANT GAS R 14, COMPRESSED) (Class 2) */ +/* 1-CHLORO-2,2,2-TRIFLUOROETHANE (REFRIGERANT GAS R 133a). DESCRIPTION: 1-CHLORO-2,2,2-TRIFLUOROETHANE (REFRIGERANT GAS R 133a) (Class 2) */ +/* TRIFLUOROMETHANE (REFRIGERANT GAS R 23). DESCRIPTION: TRIFLUOROMETHANE (REFRIGERANT GAS R 23) (Class 2) */ +/* ALCOHOLS, FLAMMABLE, TOXIC, N.O.S.. DESCRIPTION: ALCOHOLS, FLAMMABLE, TOXIC, N.O.S. (Class 3) */ +/* ALCOHOLS, N.O.S.. DESCRIPTION: ALCOHOLS, N.O.S. (Class 3) */ +/* ALDEHYDES, FLAMMABLE, TOXIC, N.O.S.. DESCRIPTION: ALDEHYDES, FLAMMABLE, TOXIC, N.O.S. (Class 3) */ +/* ALDEHYDES, N.O.S.. DESCRIPTION: ALDEHYDES, N.O.S. (Class 3) */ +/* BENZALDEHYDE. DESCRIPTION: BENZALDEHYDE (Class 9) */ +/* CHLOROPRENE, STABILIZED. DESCRIPTION: CHLOROPRENE, STABILIZED (Class 3) */ +/* FLAMMABLE LIQUID, TOXIC, N.O.S.. DESCRIPTION: FLAMMABLE LIQUID, TOXIC, N.O.S. (Class 3) */ +/* FLAMMABLE LIQUID, N.O.S.. DESCRIPTION: FLAMMABLE LIQUID, N.O.S. (Class 3) */ +/* IRON PENTACARBONYL. DESCRIPTION: IRON PENTACARBONYL (Class 6.1) */ +/* TARS, LIQUID. DESCRIPTION: TARS, LIQUID (Class 3) */ +/* CELLULOID in block, rods, rolls, sheets, tubes, etc., except scrap. DESCRIPTION: CELLULOID in block, rods, rolls, sheets, tubes, etc., except scrap (Class 4.1) */ +/* COBALT NAPHTHENATES, POWDER. DESCRIPTION: COBALT NAPHTHENATES, POWDER (Class 4.1) */ +/* CELLULOID, SCRAP. DESCRIPTION: CELLULOID, SCRAP (Class 4.2) */ +/* METAL ALKYLS, WATER-REACTIVE, N.O.S. or METAL ARYLS, WATER-REACTIVE, N.O.S.. DESCRIPTION: METAL ALKYLS, WATER-REACTIVE, N.O.S. or METAL ARYLS, WATER-REACTIVE, N.O.S. (Class 4.2) */ +/* MAGNESIUM DIAMIDE. DESCRIPTION: MAGNESIUM DIAMIDE (Class 4.2) */ +/* MAGNESIUM DIPHENYL. DESCRIPTION: MAGNESIUM DIPHENYL (Class 4.2) */ +/* PLASTICS, NITROCELLULOSE-BASED, SELF-HEATING, N.O.S.. DESCRIPTION: PLASTICS, NITROCELLULOSE-BASED, SELF-HEATING, N.O.S. (Class 4.2) */ +/* ZIRCONIUM POWDER, DRY. DESCRIPTION: ZIRCONIUM POWDER, DRY (Class 4.2) */ +/* ZIRCONIUM, DRY, finished sheets, strip or coiled wire. DESCRIPTION: ZIRCONIUM, DRY, finished sheets, strip or coiled wire (Class 4.2) */ +/* MAGNESIUM HYDRIDE. DESCRIPTION: MAGNESIUM HYDRIDE (Class 4.3) */ +/* MAGNESIUM PHOSPHIDE. DESCRIPTION: MAGNESIUM PHOSPHIDE (Class 4.3) */ +/* POTASSIUM PHOSPHIDE. DESCRIPTION: POTASSIUM PHOSPHIDE (Class 4.3) */ +/* STRONTIUM PHOSPHIDE. DESCRIPTION: STRONTIUM PHOSPHIDE (Class 4.3) */ +/* HYDROGEN PEROXIDE, AQUEOUS SOLUTION with not less than 20% but not more than 60% hydrogen peroxide (stabilized as necessary). DESCRIPTION: HYDROGEN PEROXIDE, AQUEOUS SOLUTION with not less than 20% but not more than 60% hydrogen peroxide (stabilized as necessary) (Class 5.1) */ +/* HYDROGEN PEROXIDE, STABILIZED or HYDROGEN PEROXIDE, AQUEOUS SOLUTION, STABILIZED with more than 60% hydrogen peroxide (stabilized as necessary). DESCRIPTION: HYDROGEN PEROXIDE, STABILIZED or HYDROGEN PEROXIDE, AQUEOUS SOLUTION, STABILIZED with more than 60% hydrogen peroxide (stabilized as necessary) (Class 5.1) */ +/* AMMUNITION, TOXIC, NON-EXPLOSIVE without burster or expelling charge, non-fuzed. DESCRIPTION: AMMUNITION, TOXIC, NON-EXPLOSIVE without burster or expelling charge, non-fuzed (Class 6.1) */ +/* AMMUNITION, TEAR-PRODUCING, NON-EXPLOSIVE without burster or expelling charge, non-fuzed. DESCRIPTION: AMMUNITION, TEAR-PRODUCING, NON-EXPLOSIVE without burster or expelling charge, non-fuzed (Class 6.1) */ +/* CHLOROANILINES, SOLID. DESCRIPTION: CHLOROANILINES, SOLID (Class 6.1) */ +/* CHLOROANILINES, LIQUID. DESCRIPTION: CHLOROANILINES, LIQUID (Class 6.1) */ +/* CHLOROPHENOLS, SOLID. DESCRIPTION: CHLOROPHENOLS, SOLID (Class 6.1) */ +/* CHLOROPHENOLS, LIQUID. DESCRIPTION: CHLOROPHENOLS, LIQUID (Class 6.1) */ +/* CRESYLIC ACID. DESCRIPTION: CRESYLIC ACID (Class 6.1) */ +/* EPICHLOROHYDRIN. DESCRIPTION: EPICHLOROHYDRIN (Class 6.1) */ +/* MERCURY COMPOUND, LIQUID, N.O.S.. DESCRIPTION: MERCURY COMPOUND, LIQUID, N.O.S. (Class 6.1) */ +/* MERCURY COMPOUND, SOLID, N.O.S.. DESCRIPTION: MERCURY COMPOUND, SOLID, N.O.S. (Class 6.1) */ +/* PHENYLMERCURIC COMPOUND, N.O.S.. DESCRIPTION: PHENYLMERCURIC COMPOUND, N.O.S. (Class 6.1) */ +/* SODIUM ARSENITE, SOLID. DESCRIPTION: SODIUM ARSENITE, SOLID (Class 6.1) */ +/* BOMBS, SMOKE, NON-EXPLOSIVE with corrosive liquid, without initiating device. DESCRIPTION: BOMBS, SMOKE, NON-EXPLOSIVE with corrosive liquid, without initiating device (Class 8) */ +/* HYDRAZINE, ANHYDROUS. DESCRIPTION: HYDRAZINE, ANHYDROUS (Class 8) */ +/* HYDRAZINE HYDRATE or HYDRAZINE, AQUEOUS SOLUTION with not less than 37% but not more than 64% hydrazine, by mass. DESCRIPTION: HYDRAZINE HYDRATE or HYDRAZINE, AQUEOUS SOLUTION with not less than 37% but not more than 64% hydrazine, by mass (Class 8) */ +/* NITRIC ACID. DESCRIPTION: NITRIC ACID (Class 8) */ +/* NITRIC ACID, RED FUMING. DESCRIPTION: NITRIC ACID, RED FUMING (Class 8) */ +/* POTASSIUM MONOXIDE. DESCRIPTION: POTASSIUM MONOXIDE (Class 8) */ +/* HYDROGEN AND METHANE MIXTURE, COMPRESSED. DESCRIPTION: HYDROGEN AND METHANE MIXTURE, COMPRESSED (Class 2) */ +/* 1,1,1-TRIFLUOROETHANE (REFRIGERANT GAS R 143a). DESCRIPTION: 1,1,1-TRIFLUOROETHANE (REFRIGERANT GAS R 143a) (Class 2) */ +/* XENON, COMPRESSED. DESCRIPTION: XENON, COMPRESSED (Class 2) */ +/* RECEPTACLES, SMALL, CONTAINING GAS (GAS CARTRIDGES) without a release device, non-refillable. DESCRIPTION: RECEPTACLES, SMALL, CONTAINING GAS (GAS CARTRIDGES) without a release device, non-refillable (Class 2) */ +/* DINITROTOLUENES, LIQUID. DESCRIPTION: DINITROTOLUENES, LIQUID (Class 6.1) */ +/* 2,2-DIMETHYLPROPANE. DESCRIPTION: 2,2-DIMETHYLPROPANE (Class 2) */ +/* ISOBUTYRALDEHYDE (ISOBUTYL ALDEHYDE). DESCRIPTION: ISOBUTYRALDEHYDE (ISOBUTYL ALDEHYDE) (Class 3) */ +/* CYMENES. DESCRIPTION: CYMENES (Class 3) */ +/* DICHLOROPROPENES. DESCRIPTION: DICHLOROPROPENES (Class 3) */ +/* DICYCLOPENTADIENE. DESCRIPTION: DICYCLOPENTADIENE (Class 3) */ +/* DIETHYLBENZENE. DESCRIPTION: DIETHYLBENZENE (Class 3) */ +/* DIISOBUTYLENE, ISOMERIC COMPOUNDS. DESCRIPTION: DIISOBUTYLENE, ISOMERIC COMPOUNDS (Class 3) */ +/* 2-DIMETHYLAMINOETHANOL. DESCRIPTION: 2-DIMETHYLAMINOETHANOL (Class 8) */ +/* DIPENTENE. DESCRIPTION: DIPENTENE (Class 3) */ +/* METHYL ISOBUTYL CARBINOL. DESCRIPTION: METHYL ISOBUTYL CARBINOL (Class 3) */ +/* MORPHOLINE. DESCRIPTION: MORPHOLINE (Class 8) */ +/* STYRENE MONOMER, STABILIZED. DESCRIPTION: STYRENE MONOMER, STABILIZED (Class 3) */ +/* TETRAHYDROFURAN. DESCRIPTION: TETRAHYDROFURAN (Class 3) */ +/* TRIPROPYLENE. DESCRIPTION: TRIPROPYLENE (flash point less than 23 */ +/* ºC, vapour pressure at 50ºC not more than 110 kPa) (Class 3) */ +/* VALERALDEHYDE. DESCRIPTION: VALERALDEHYDE (Class 3) */ +/* NITROCELLULOSE SOLUTION, FLAMMABLE. DESCRIPTION: NITROCELLULOSE SOLUTION, FLAMMABLE (Class 3) */ +/* AMMONIUM NITRATE FERTILIZERS, Type A1. DESCRIPTION: AMMONIUM NITRATE FERTILIZERS, Type A1 (Class 5.1) */ +/* AMMONIUM NITRATE FERTILIZERS, Type A2. DESCRIPTION: AMMONIUM NITRATE FERTILIZERS, Type A2 (Class 5.1) */ +/* AMMONIUM NITRATE FERTILIZERS, Type A3. DESCRIPTION: AMMONIUM NITRATE FERTILIZERS, Type A3 (Class 5.1) */ +/* AMMONIUM NITRATE FERTILIZERS, Type A4. DESCRIPTION: AMMONIUM NITRATE FERTILIZERS, Type A4 (Class 5.1) */ +/* Ammonium nitrate fertilizers. DESCRIPTION: Ammonium nitrate fertilizers (Class 9) */ +/* Ammonium nitrate fertilizer, n.o.s.. DESCRIPTION: Ammonium nitrate fertilizer, n.o.s. (Class 5.1) */ +/* AMMONIA SOLUTION, in water, with more than 35% but not more than 50% ammonia. DESCRIPTION: AMMONIA SOLUTION, in water, with more than 35% but not more than 50% ammonia (Class 2) */ +/* ACRYLAMIDE. DESCRIPTION: ACRYLAMIDE (Class 6.1) */ +/* CHLORAL, ANHYDROUS, STABILIZED. DESCRIPTION: CHLORAL, ANHYDROUS, STABILIZED (Class 6.1) */ +/* CRESOLS, LIQUID. DESCRIPTION: CRESOLS, LIQUID (Class 6.1) */ +/* alpha-NAPHTHYLAMINE. DESCRIPTION: alpha-NAPHTHYLAMINE (Class 6.1) */ +/* TOLUENE DIISOCYANATE. DESCRIPTION: TOLUENE DIISOCYANATE (Class 6.1) */ +/* DIETHYLENETRIAMINE. DESCRIPTION: DIETHYLENETRIAMINE (Class 8) */ +/* Hydrogen chloride, refrigerated liquid. DESCRIPTION: Hydrogen chloride, refrigerated liquid (Class 2) */ +/* CARBON DIOXIDE, REFRIGERATED LIQUID. DESCRIPTION: CARBON DIOXIDE, REFRIGERATED LIQUID (Class 2) */ +/* ARSINE. DESCRIPTION: ARSINE (Class 2) */ +/* DICHLOROSILANE. DESCRIPTION: DICHLOROSILANE (Class 2) */ +/* OXYGEN DIFLUORIDE, COMPRESSED. DESCRIPTION: OXYGEN DIFLUORIDE, COMPRESSED (Class 2) */ +/* SULPHURYL FLUORIDE. DESCRIPTION: SULPHURYL FLUORIDE (Class 2) */ +/* GERMANE. DESCRIPTION: GERMANE (Class 2) */ +/* HEXAFLUOROETHANE, COMPRESSED (REFRIGERANT GAS R 116, COMPRESSED). DESCRIPTION: HEXAFLUOROETHANE, COMPRESSED (REFRIGERANT GAS R 116, COMPRESSED) (Class 2) */ +/* SELENIUM HEXAFLUORIDE. DESCRIPTION: SELENIUM HEXAFLUORIDE (Class 2) */ +/* TELLURIUM HEXAFLUORIDE. DESCRIPTION: TELLURIUM HEXAFLUORIDE (Class 2) */ +/* TUNGSTEN HEXAFLUORIDE. DESCRIPTION: TUNGSTEN HEXAFLUORIDE (Class 2) */ +/* HYDROGEN IODIDE, ANHYDROUS. DESCRIPTION: HYDROGEN IODIDE, ANHYDROUS (Class 2) */ +/* PHOSPHORUS PENTAFLUORIDE, COMPRESSED. DESCRIPTION: PHOSPHORUS PENTAFLUORIDE, COMPRESSED (Class 2) */ +/* PHOSPHINE. DESCRIPTION: PHOSPHINE (Class 2) */ +/* PROPADIENE, STABILIZED. DESCRIPTION: PROPADIENE, STABILIZED (Class 2) */ +/* NITROUS OXIDE, REFRIGERATED LIQUID. DESCRIPTION: NITROUS OXIDE, REFRIGERATED LIQUID (Class 2) */ +/* HYDROGEN SELENIDE, ANHYDROUS. DESCRIPTION: HYDROGEN SELENIDE, ANHYDROUS (Class 2) */ +/* SILANE, COMPRESSED. DESCRIPTION: SILANE, COMPRESSED (Class 2) */ +/* CARBONYL SULPHIDE. DESCRIPTION: CARBONYL SULPHIDE (Class 2) */ +/* ADIPONITRILE. DESCRIPTION: ADIPONITRILE (Class 6.1) */ +/* ISOCYANATES, TOXIC, N.O.S. or ISOCYANATE SOLUTION, TOXIC, N.O.S.. DESCRIPTION: ISOCYANATES, TOXIC, N.O.S. or ISOCYANATE SOLUTION, TOXIC, N.O.S. (Class 6.1) */ +/* CALCIUM HYPOCHLORITE MIXTURE, DRY with more than 10% but not more than 39% available chlorine. DESCRIPTION: CALCIUM HYPOCHLORITE MIXTURE, DRY with more than 10% but not more than 39% available chlorine (Class 5.1) */ +/* FORMALDEHYDE SOLUTION with not less than 25% formaldehyde. DESCRIPTION: FORMALDEHYDE SOLUTION with not less than 25% formaldehyde (Class 8) */ +/* MANEB or MANEB PREPARATION with not less than 60% maneb. DESCRIPTION: MANEB or MANEB PREPARATION with not less than 60% maneb (Class 4.2) */ +/* POLYMERIC BEADS, EXPANDABLE, evolving flammable vapour. DESCRIPTION: POLYMERIC BEADS, EXPANDABLE, evolving flammable vapour (Class 9) */ +/* BLUE ASBESTOS or BROWN ASBESTOS. DESCRIPTION: BLUE ASBESTOS or BROWN ASBESTOS (Class 9) */ +/* PARAFORMALDEHYDE. DESCRIPTION: PARAFORMALDEHYDE (Class 4.1) */ +/* PHTHALIC ANHYDRIDE with more than 0.05% of maleic anhydride. DESCRIPTION: PHTHALIC ANHYDRIDE with more than 0.05% of maleic anhydride (Class 8) */ +/* MALEIC ANHYDRIDE. DESCRIPTION: MALEIC ANHYDRIDE (Class 8) */ +/* Fish meal (Fish scrap), stabilized. DESCRIPTION: Fish meal (Fish scrap), stabilized (Class 9) */ +/* SEED CAKE with not more than 1.5% oil and not more than 11% moisture. DESCRIPTION: SEED CAKE with not more than 1.5% oil and not more than 11% moisture (Class 4.2) */ +/* ACRYLIC ACID, STABILIZED. DESCRIPTION: ACRYLIC ACID, STABILIZED (Class 8) */ +/* ALLYL GLYCIDYL ETHER. DESCRIPTION: ALLYL GLYCIDYL ETHER (Class 3) */ +/* ANISOLE. DESCRIPTION: ANISOLE (Class 3) */ +/* BENZONITRILE. DESCRIPTION: BENZONITRILE (Class 6.1) */ +/* BENZENESULPHONYL CHLORIDE. DESCRIPTION: BENZENESULPHONYL CHLORIDE (Class 8) */ +/* BENZOTRICHLORIDE. DESCRIPTION: BENZOTRICHLORIDE (Class 8) */ +/* n-BUTYL METHACRYLATE, STABILIZED. DESCRIPTION: n-BUTYL METHACRYLATE, STABILIZED (Class 3) */ +/* 2-CHLOROETHANAL. DESCRIPTION: 2-CHLOROETHANAL (Class 6.1) */ +/* CHLOROANISIDINES. DESCRIPTION: CHLOROANISIDINES (Class 6.1) */ +/* CHLOROBENZOTRIFLUORIDES. DESCRIPTION: CHLOROBENZOTRIFLUORIDES (Class 3) */ +/* CHLOROBENZYL CHLORIDES. DESCRIPTION: CHLOROBENZYL CHLORIDES (Class 6.1) */ +/* 3-CHLORO-4-METHYLPHENYL ISOCYANATE. DESCRIPTION: 3-CHLORO-4-METHYLPHENYL ISOCYANATE (Class 6.1) */ +/* CHLORONITROANILINES. DESCRIPTION: CHLORONITROANILINES (Class 6.1) */ +/* CHLOROTOLUENES. DESCRIPTION: CHLOROTOLUENES (Class 3) */ +/* CHLOROTOLUIDINES. DESCRIPTION: CHLOROTOLUIDINES (Class 6.1) */ +/* CHROMOSULPHURIC ACID. DESCRIPTION: CHROMOSULPHURIC ACID (Class 8) */ +/* CYCLOHEPTANE. DESCRIPTION: CYCLOHEPTANE (Class 3) */ +/* CYCLOHEPTENE. DESCRIPTION: CYCLOHEPTENE (Class 3) */ +/* CYCLOHEXYL ACETATE. DESCRIPTION: CYCLOHEXYL ACETATE (Class 3) */ +/* CYCLOPENTANOL. DESCRIPTION: CYCLOPENTANOL (Class 3) */ +/* CYCLOPENTANONE. DESCRIPTION: CYCLOPENTANONE (Class 3) */ +/* CYCLOPENTENE. DESCRIPTION: CYCLOPENTENE (Class 3) */ +/* n-DECANE. DESCRIPTION: n-DECANE (Class 3) */ +/* DI-n-BUTYLAMINE. DESCRIPTION: DI-n-BUTYLAMINE (Class 8) */ +/* Dichlorodimethyl ether, symmetrical. DESCRIPTION: Dichlorodimethyl ether, symmetrical (Class 6.1) */ +/* DICHLOROPHENYL ISOCYANATES. DESCRIPTION: DICHLOROPHENYL ISOCYANATES (Class 6.1) */ +/* BICYCLO[2.2.1]HEPTA-2,5-DIENE, STABILIZED (2,5-NORBORNADIENE, STABILIZED). DESCRIPTION: BICYCLO[2.2.1]HEPTA-2,5-DIENE, STABILIZED (2,5-NORBORNADIENE, STABILIZED) (Class 3) */ +/* 1,2-DIMETHOXYETHANE. DESCRIPTION: 1,2-DIMETHOXYETHANE (Class 3) */ +/* N,N-DIMETHYLANILINE. DESCRIPTION: N,N-DIMETHYLANILINE (Class 6.1) */ +/* MATCHES, FUSEE. DESCRIPTION: MATCHES, FUSEE (Class 4.1) */ +/* CYCLOHEXENE. DESCRIPTION: CYCLOHEXENE (Class 3) */ +/* POTASSIUM. DESCRIPTION: POTASSIUM (Class 4.3) */ +/* 1,2-PROPYLENEDIAMINE. DESCRIPTION: 1,2-PROPYLENEDIAMINE (Class 8) */ +/* TRIETHYLENETETRAMINE. DESCRIPTION: TRIETHYLENETETRAMINE (Class 8) */ +/* TRIPROPYLAMINE. DESCRIPTION: TRIPROPYLAMINE (Class 3) */ +/* XYLENOLS. DESCRIPTION: XYLENOLS (Class 6.1) */ +/* DIMETHYLCARBAMOYL CHLORIDE. DESCRIPTION: DIMETHYLCARBAMOYL CHLORIDE (Class 8) */ +/* DIMETHYLCYCLOHEXANES. DESCRIPTION: DIMETHYLCYCLOHEXANES (Class 3) */ +/* DIMETHYLCYCLOHEXYLAMINE. DESCRIPTION: DIMETHYLCYCLOHEXYLAMINE (Class 8) */ +/* N,N-DIMETHYLFORMAMIDE. DESCRIPTION: N,N-DIMETHYLFORMAMIDE (Class 3) */ +/* DIMETHYL-N-PROPYLAMINE. DESCRIPTION: DIMETHYL-N-PROPYLAMINE (Class 3) */ +/* DIMETHYL THIOPHOSPHORYL CHLORIDE. DESCRIPTION: DIMETHYL THIOPHOSPHORYL CHLORIDE (Class 6.1) */ +/* 3,3'-IMINODIPROPYLAMINE. DESCRIPTION: 3,3'-IMINODIPROPYLAMINE (Class 8) */ +/* ETHYLAMINE, AQUEOUS SOLUTION with not less than 50% but not more than 70% ethylamine. DESCRIPTION: ETHYLAMINE, AQUEOUS SOLUTION with not less than 50% but not more than 70% ethylamine (Class 3) */ +/* ETHYL AMYL KETONE. DESCRIPTION: ETHYL AMYL KETONE (Class 3) */ +/* N-ETHYLANILINE. DESCRIPTION: N-ETHYLANILINE (Class 6.1) */ +/* 2-ETHYLANILINE. DESCRIPTION: 2-ETHYLANILINE (Class 6.1) */ +/* N-ETHYL-N-BENZYLANILINE. DESCRIPTION: N-ETHYL-N-BENZYLANILINE (Class 6.1) */ +/* 2-ETHYLBUTANOL. DESCRIPTION: 2-ETHYLBUTANOL (Class 3) */ +/* 2-ETHYLHEXYLAMINE. DESCRIPTION: 2-ETHYLHEXYLAMINE (Class 3) */ +/* ETHYL METHACRYLATE. DESCRIPTION: ETHYL METHACRYLATE (Class 3) */ +/* n-HEPTENE. DESCRIPTION: n-HEPTENE (Class 3) */ +/* HEXACHLOROBUTADIENE. DESCRIPTION: HEXACHLOROBUTADIENE (Class 6.1) */ +/* HEXAMETHYLENEDIAMINE, SOLID. DESCRIPTION: HEXAMETHYLENEDIAMINE, SOLID (Class 8) */ +/* HEXAMETHYLENE DIISOCYANATE. DESCRIPTION: HEXAMETHYLENE DIISOCYANATE (Class 6.1) */ +/* HEXANOLS. DESCRIPTION: HEXANOLS (Class 3) */ +/* ISOBUTYL METHACRYLATE, STABILIZED. DESCRIPTION: ISOBUTYL METHACRYLATE, STABILIZED (Class 3) */ +/* ISOBUTYRONITRILE. DESCRIPTION: ISOBUTYRONITRILE (Class 3) */ +/* ISOCYANATOBENZOTRIFLUORIDES. DESCRIPTION: ISOCYANATOBENZOTRIFLUORIDES (Class 6.1) */ +/* PENTAMETHYLHEPTANE. DESCRIPTION: PENTAMETHYLHEPTANE (Class 3) */ +/* ISOHEPTENE. DESCRIPTION: ISOHEPTENE (Class 3) */ +/* ISOHEXENE. DESCRIPTION: ISOHEXENE (Class 3) */ +/* ISOPHORONEDIAMINE. DESCRIPTION: ISOPHORONEDIAMINE (Class 8) */ +/* ISOPHORONE DIISOCYANATE. DESCRIPTION: ISOPHORONE DIISOCYANATE (Class 6.1) */ +/* LEAD COMPOUND, SOLUBLE, N.O.S.. DESCRIPTION: LEAD COMPOUND, SOLUBLE, N.O.S. (Class 6.1) */ +/* 4-METHOXY-4-METHYLPENTAN-2-ONE. DESCRIPTION: 4-METHOXY-4-METHYLPENTAN-2-ONE (Class 3) */ +/* N-METHYLANILINE. DESCRIPTION: N-METHYLANILINE (Class 6.1) */ +/* METHYL CHLOROACETATE. DESCRIPTION: METHYL CHLOROACETATE (Class 6.1) */ +/* METHYLCYCLOHEXANE. DESCRIPTION: METHYLCYCLOHEXANE (Class 3) */ +/* METHYLCYCLOHEXANONE. DESCRIPTION: METHYLCYCLOHEXANONE (Class 3) */ +/* METHYLCYCLOPENTANE. DESCRIPTION: METHYLCYCLOPENTANE (Class 3) */ +/* METHYL DICHLOROACETATE. DESCRIPTION: METHYL DICHLOROACETATE (Class 6.1) */ +/* 2-METHYL-5-ETHYLPYRIDINE. DESCRIPTION: 2-METHYL-5-ETHYLPYRIDINE (Class 6.1) */ +/* 2-METHYLFURAN. DESCRIPTION: 2-METHYLFURAN (Class 3) */ +/* 5-METHYLHEXAN-2-ONE. DESCRIPTION: 5-METHYLHEXAN-2-ONE (Class 3) */ +/* ISOPROPENYLBENZENE. DESCRIPTION: ISOPROPENYLBENZENE (Class 3) */ +/* NAPHTHALENE, MOLTEN. DESCRIPTION: NAPHTHALENE, MOLTEN (Class 4.1) */ +/* NITROBENZENESULPHONIC ACID. DESCRIPTION: NITROBENZENESULPHONIC ACID (Class 8) */ +/* NITROBENZOTRIFLUORIDES. DESCRIPTION: NITROBENZOTRIFLUORIDES (Class 6.1) */ +/* 3-NITRO-4-CHLOROBENZOTRIFLUORIDE. DESCRIPTION: 3-NITRO-4-CHLOROBENZOTRIFLUORIDE (Class 6.1) */ +/* NITROSYLSULPHURIC ACID, LIQUID. DESCRIPTION: NITROSYLSULPHURIC ACID, LIQUID (Class 8) */ +/* OCTADIENE. DESCRIPTION: OCTADIENE (Class 3) */ +/* PENTANE-2,4-DIONE. DESCRIPTION: PENTANE-2,4-DIONE (Class 3) */ +/* PHENETIDINES. DESCRIPTION: PHENETIDINES (Class 6.1) */ +/* PHENOL, MOLTEN. DESCRIPTION: PHENOL, MOLTEN (Class 6.1) */ +/* PICOLINES. DESCRIPTION: PICOLINES (Class 3) */ +/* POLYCHLORINATED BIPHENYLS. DESCRIPTION: POLYCHLORINATED BIPHENYLS (Class 9) */ +/* SODIUM CUPROCYANIDE, SOLID. DESCRIPTION: SODIUM CUPROCYANIDE, SOLID (Class 6.1) */ +/* SODIUM CUPROCYANIDE SOLUTION. DESCRIPTION: SODIUM CUPROCYANIDE SOLUTION (Class 6.1) */ +/* SODIUM HYDROSULPHIDE with less than 25% water of crystallization. DESCRIPTION: SODIUM HYDROSULPHIDE with less than 25% water of crystallization (Class 4.2) */ +/* TERPENE HYDROCARBONS, N.O.S.. DESCRIPTION: TERPENE HYDROCARBONS, N.O.S. (Class 3) */ +/* TETRAETHYLENEPENTAMINE. DESCRIPTION: TETRAETHYLENEPENTAMINE (Class 8) */ +/* TRICHLOROBENZENES, LIQUID. DESCRIPTION: TRICHLOROBENZENES, LIQUID (Class 6.1) */ +/* TRICHLOROBUTENE. DESCRIPTION: TRICHLOROBUTENE (Class 6.1) */ +/* TRIETHYL PHOSPHITE. DESCRIPTION: TRIETHYL PHOSPHITE (Class 3) */ +/* TRIISOBUTYLENE. DESCRIPTION: TRIISOBUTYLENE (Class 3) */ +/* 1,3,5-TRIMETHYLBENZENE. DESCRIPTION: 1,3,5-TRIMETHYLBENZENE (Class 3) */ +/* TRIMETHYLCYCLOHEXYLAMINE. DESCRIPTION: TRIMETHYLCYCLOHEXYLAMINE (Class 8) */ +/* TRIMETHYLHEXAMETHYLENEDIAMINES. DESCRIPTION: TRIMETHYLHEXAMETHYLENEDIAMINES (Class 8) */ +/* TRIMETHYLHEXAMETHYLENE DIISOCYANATE. DESCRIPTION: TRIMETHYLHEXAMETHYLENE DIISOCYANATE (Class 6.1) */ +/* TRIMETHYL PHOSPHITE. DESCRIPTION: TRIMETHYL PHOSPHITE (Class 3) */ +/* UNDECANE. DESCRIPTION: UNDECANE (Class 3) */ +/* ZINC CHLORIDE, ANHYDROUS. DESCRIPTION: ZINC CHLORIDE, ANHYDROUS (Class 8) */ +/* ACETALDEHYDE OXIME. DESCRIPTION: ACETALDEHYDE OXIME (Class 3) */ +/* ALLYL ACETATE. DESCRIPTION: ALLYL ACETATE (Class 3) */ +/* ALLYLAMINE. DESCRIPTION: ALLYLAMINE (Class 6.1) */ +/* ALLYL ETHYL ETHER. DESCRIPTION: ALLYL ETHYL ETHER (Class 3) */ +/* ALLYL FORMATE. DESCRIPTION: ALLYL FORMATE (Class 3) */ +/* PHENYL MERCAPTAN. DESCRIPTION: PHENYL MERCAPTAN (Class 6.1) */ +/* BENZOTRIFLUORIDE. DESCRIPTION: BENZOTRIFLUORIDE (Class 3) */ +/* 2-BROMOBUTANE. DESCRIPTION: 2-BROMOBUTANE (Class 3) */ +/* 2-BROMOETHYL ETHYL ETHER. DESCRIPTION: 2-BROMOETHYL ETHYL ETHER (Class 3) */ +/* 1-BROMO-3-METHYLBUTANE. DESCRIPTION: 1-BROMO-3-METHYLBUTANE (Class 3) */ +/* BROMOMETHYLPROPANES. DESCRIPTION: BROMOMETHYLPROPANES (Class 3) */ +/* 2-BROMOPENTANE. DESCRIPTION: 2-BROMOPENTANE (Class 3) */ +/* BROMOPROPANES. DESCRIPTION: BROMOPROPANES (Class 3) */ +/* 3-BROMOPROPYNE. DESCRIPTION: 3-BROMOPROPYNE (Class 3) */ +/* BUTANEDIONE. DESCRIPTION: BUTANEDIONE (Class 3) */ +/* BUTYL MERCAPTAN. DESCRIPTION: BUTYL MERCAPTAN (Class 3) */ +/* BUTYL ACRYLATES, STABILIZED. DESCRIPTION: BUTYL ACRYLATES, STABILIZED (Class 3) */ +/* BUTYL METHYL ETHER. DESCRIPTION: BUTYL METHYL ETHER (Class 3) */ +/* BUTYL NITRITES. DESCRIPTION: BUTYL NITRITES (Class 3) */ +/* BUTYL VINYL ETHER, STABILIZED. DESCRIPTION: BUTYL VINYL ETHER, STABILIZED (Class 3) */ +/* BUTYRYL CHLORIDE. DESCRIPTION: BUTYRYL CHLORIDE (Class 3) */ +/* CHLOROMETHYL ETHYL ETHER. DESCRIPTION: CHLOROMETHYL ETHYL ETHER (Class 3) */ +/* 2-CHLOROPROPANE. DESCRIPTION: 2-CHLOROPROPANE (Class 3) */ +/* CYCLOHEXYLAMINE. DESCRIPTION: CYCLOHEXYLAMINE (Class 8) */ +/* CYCLOOCTATETRAENE. DESCRIPTION: CYCLOOCTATETRAENE (Class 3) */ +/* DIALLYLAMINE. DESCRIPTION: DIALLYLAMINE (Class 3) */ +/* DIALLYL ETHER. DESCRIPTION: DIALLYL ETHER (Class 3) */ +/* DIISOBUTYLAMINE. DESCRIPTION: DIISOBUTYLAMINE (Class 3) */ +/* 1,1-DICHLOROETHANE. DESCRIPTION: 1,1-DICHLOROETHANE (Class 3) */ +/* ETHYL MERCAPTAN. DESCRIPTION: ETHYL MERCAPTAN (Class 3) */ +/* n-PROPYLBENZENE. DESCRIPTION: n-PROPYLBENZENE (Class 3) */ +/* DIETHYL CARBONATE. DESCRIPTION: DIETHYL CARBONATE (Class 3) */ +/* alpha-METHYLVALERALDEHYDE. DESCRIPTION: alpha-METHYLVALERALDEHYDE (Class 3) */ +/* alpha-PINENE. DESCRIPTION: alpha-PINENE (Class 3) */ +/* 1-HEXENE. DESCRIPTION: 1-HEXENE (Class 3) */ +/* ISOPENTENES. DESCRIPTION: ISOPENTENES (Class 3) */ +/* 1,2-DI-(DIMETHYLAMINO) ETHANE. DESCRIPTION: 1,2-DI-(DIMETHYLAMINO) ETHANE (Class 3) */ +/* DIETHOXYMETHANE. DESCRIPTION: DIETHOXYMETHANE (Class 3) */ +/* 3,3-DIETHOXYPROPENE. DESCRIPTION: 3,3-DIETHOXYPROPENE (Class 3) */ +/* DIETHYL SULPHIDE. DESCRIPTION: DIETHYL SULPHIDE (Class 3) */ +/* 2,3-DIHYDROPYRAN. DESCRIPTION: 2,3-DIHYDROPYRAN (Class 3) */ +/* 1,1-DIMETHOXYETHANE. DESCRIPTION: 1,1-DIMETHOXYETHANE (Class 3) */ +/* 2-DIMETHYLAMINOACETONITRILE. DESCRIPTION: 2-DIMETHYLAMINOACETONITRILE (Class 3) */ +/* 1,3-DIMETHYLBUTYLAMINE. DESCRIPTION: 1,3-DIMETHYLBUTYLAMINE (Class 3) */ +/* DIMETHYLDIETHOXYSILANE. DESCRIPTION: DIMETHYLDIETHOXYSILANE (Class 3) */ +/* DIMETHYL DISULPHIDE. DESCRIPTION: DIMETHYL DISULPHIDE (Class 3) */ +/* DIMETHYLHYDRAZINE, SYMMETRICAL. DESCRIPTION: DIMETHYLHYDRAZINE, SYMMETRICAL (Class 6.1) */ +/* DIPROPYLAMINE. DESCRIPTION: DIPROPYLAMINE (Class 3) */ +/* DI-n-PROPYL ETHER. DESCRIPTION: DI-n-PROPYL ETHER (Class 3) */ +/* ETHYL ISOBUTYRATE. DESCRIPTION: ETHYL ISOBUTYRATE (Class 3) */ +/* 1-ETHYLPIPERIDINE. DESCRIPTION: 1-ETHYLPIPERIDINE (Class 3) */ +/* FLUOROBENZENE. DESCRIPTION: FLUOROBENZENE (Class 3) */ +/* FLUOROTOLUENES. DESCRIPTION: FLUOROTOLUENES (Class 3) */ +/* FURAN. DESCRIPTION: FURAN (Class 3) */ +/* 2-IODOBUTANE. DESCRIPTION: 2-IODOBUTANE (Class 3) */ +/* IODOMETHYLPROPANES. DESCRIPTION: IODOMETHYLPROPANES (Class 3) */ +/* IODOPROPANES. DESCRIPTION: IODOPROPANES (Class 3) */ +/* ISOBUTYL FORMATE. DESCRIPTION: ISOBUTYL FORMATE (Class 3) */ +/* ISOBUTYL PROPIONATE. DESCRIPTION: ISOBUTYL PROPIONATE (Class 3) */ +/* ISOBUTYRYL CHLORIDE. DESCRIPTION: ISOBUTYRYL CHLORIDE (Class 3) */ +/* METHACRYLALDEHYDE, STABILIZED. DESCRIPTION: METHACRYLALDEHYDE, STABILIZED (Class 3) */ +/* 3-METHYLBUTAN-2-ONE. DESCRIPTION: 3-METHYLBUTAN-2-ONE (Class 3) */ +/* METHYL tert-BUTYL ETHER. DESCRIPTION: METHYL tert-BUTYL ETHER (Class 3) */ +/* 1-METHYLPIPERIDINE. DESCRIPTION: 1-METHYLPIPERIDINE (Class 3) */ +/* METHYL ISOVALERATE. DESCRIPTION: METHYL ISOVALERATE (Class 3) */ +/* PIPERIDINE. DESCRIPTION: PIPERIDINE (Class 8) */ +/* PROPANETHIOLS. DESCRIPTION: PROPANETHIOLS (Class 3) */ +/* ISOPROPENYL ACETATE. DESCRIPTION: ISOPROPENYL ACETATE (Class 3) */ +/* PROPIONITRILE. DESCRIPTION: PROPIONITRILE (Class 3) */ +/* ISOPROPYL BUTYRATE. DESCRIPTION: ISOPROPYL BUTYRATE (Class 3) */ +/* ISOPROPYL ISOBUTYRATE. DESCRIPTION: ISOPROPYL ISOBUTYRATE (Class 3) */ +/* ISOPROPYL CHLOROFORMATE. DESCRIPTION: ISOPROPYL CHLOROFORMATE (Class 6.1) */ +/* ISOPROPYL PROPIONATE. DESCRIPTION: ISOPROPYL PROPIONATE (Class 3) */ +/* 1,2,3,6-TETRAHYDROPYRIDINE. DESCRIPTION: 1,2,3,6-TETRAHYDROPYRIDINE (Class 3) */ +/* BUTYRONITRILE. DESCRIPTION: BUTYRONITRILE (Class 3) */ +/* TETRAHYDROTHIOPHENE. DESCRIPTION: TETRAHYDROTHIOPHENE (Class 3) */ +/* TETRAPROPYL ORTHOTITANATE. DESCRIPTION: TETRAPROPYL ORTHOTITANATE (Class 3) */ +/* THIOPHENE. DESCRIPTION: THIOPHENE (Class 3) */ +/* TRIMETHYL BORATE. DESCRIPTION: TRIMETHYL BORATE (Class 3) */ +/* CARBONYL FLUORIDE, COMPRESSED. DESCRIPTION: CARBONYL FLUORIDE, COMPRESSED (Class 2) */ +/* SULPHUR TETRAFLUORIDE. DESCRIPTION: SULPHUR TETRAFLUORIDE (Class 2) */ +/* BROMOTRIFLUOROETHYLENE. DESCRIPTION: BROMOTRIFLUOROETHYLENE (Class 2) */ +/* HEXAFLUOROACETONE. DESCRIPTION: HEXAFLUOROACETONE (Class 2) */ +/* Nitrogen trioxide. DESCRIPTION: Nitrogen trioxide (Class 2) */ +/* OCTAFLUOROBUT-2-ENE (REFRIGERANT GAS R 1318). DESCRIPTION: OCTAFLUOROBUT-2-ENE (REFRIGERANT GAS R 1318) (Class 2) */ +/* OCTAFLUOROPROPANE (REFRIGERANT GAS R 218). DESCRIPTION: OCTAFLUOROPROPANE (REFRIGERANT GAS R 218) (Class 2) */ +/* AMMONIUM NITRATE, LIQUID (hot concentrated solution). DESCRIPTION: AMMONIUM NITRATE, LIQUID (hot concentrated solution) (Class 5.1) */ +/* POTASSIUM CHLORATE, AQUEOUS SOLUTION. DESCRIPTION: POTASSIUM CHLORATE, AQUEOUS SOLUTION (Class 5.1) */ +/* SODIUM CHLORATE, AQUEOUS SOLUTION. DESCRIPTION: SODIUM CHLORATE, AQUEOUS SOLUTION (Class 5.1) */ +/* CALCIUM CHLORATE, AQUEOUS SOLUTION. DESCRIPTION: CALCIUM CHLORATE, AQUEOUS SOLUTION (Class 5.1) */ +/* ALKYLPHENOLS, SOLID, N.O.S. (including C2-C12 homologues). DESCRIPTION: ALKYLPHENOLS, SOLID, N.O.S. (including C2-C12 homologues) (Class 8) */ +/* ANISIDINES. DESCRIPTION: ANISIDINES (Class 6.1) */ +/* N,N-DIETHYLANILINE. DESCRIPTION: N,N-DIETHYLANILINE (Class 6.1) */ +/* CHLORONITROTOLUENES, LIQUID. DESCRIPTION: CHLORONITROTOLUENES, LIQUID (Class 6.1) */ +/* DIBENZYLDICHLOROSILANE. DESCRIPTION: DIBENZYLDICHLOROSILANE (Class 8) */ +/* ETHYLPHENYLDICHLOROSILANE. DESCRIPTION: ETHYLPHENYLDICHLOROSILANE (Class 8) */ +/* THIOACETIC ACID. DESCRIPTION: THIOACETIC ACID (Class 3) */ +/* METHYLPHENYLDICHLOROSILANE. DESCRIPTION: METHYLPHENYLDICHLOROSILANE (Class 8) */ +/* TRIMETHYLACETYL CHLORIDE. DESCRIPTION: TRIMETHYLACETYL CHLORIDE (Class 6.1) */ +/* SODIUM HYDROGENDIFLUORIDE. DESCRIPTION: SODIUM HYDROGENDIFLUORIDE (Class 8) */ +/* STANNIC CHLORIDE PENTAHYDRATE. DESCRIPTION: STANNIC CHLORIDE PENTAHYDRATE (Class 8) */ +/* TITANIUM TRICHLORIDE, PYROPHORIC or TITANIUM TRICHLORIDE MIXTURE, PYROPHORIC. DESCRIPTION: TITANIUM TRICHLORIDE, PYROPHORIC or TITANIUM TRICHLORIDE MIXTURE, PYROPHORIC (Class 4.2) */ +/* TRICHLOROACETYL CHLORIDE. DESCRIPTION: TRICHLOROACETYL CHLORIDE (Class 8) */ +/* VANADIUM OXYTRICHLORIDE. DESCRIPTION: VANADIUM OXYTRICHLORIDE (Class 8) */ +/* VANADIUM TETRACHLORIDE. DESCRIPTION: VANADIUM TETRACHLORIDE (Class 8) */ +/* LITHIUM ALKYLS. DESCRIPTION: LITHIUM ALKYLS (Class 4.2) */ +/* NITROCRESOLS. DESCRIPTION: NITROCRESOLS (Class 6.1) */ +/* PHOSPHORUS, WHITE, MOLTEN. DESCRIPTION: PHOSPHORUS, WHITE, MOLTEN (Class 4.2) */ +/* SULPHUR, MOLTEN. DESCRIPTION: SULPHUR, MOLTEN (Class 4.1) */ +/* NITROGEN TRIFLUORIDE, COMPRESSED. DESCRIPTION: NITROGEN TRIFLUORIDE, COMPRESSED (Class 2) */ +/* ETHYLACETYLENE, STABILIZED. DESCRIPTION: ETHYLACETYLENE, STABILIZED (Class 2) */ +/* ETHYL FLUORIDE (REFRIGERANT GAS R 161). DESCRIPTION: ETHYL FLUORIDE (REFRIGERANT GAS R 161) (Class 2) */ +/* METHYL FLUORIDE (REFRIGERANT GAS R 41). DESCRIPTION: METHYL FLUORIDE (REFRIGERANT GAS R 41) (Class 2) */ +/* Methyl nitrite. DESCRIPTION: Methyl nitrite (Class 2) */ +/* 2-CHLOROPROPENE. DESCRIPTION: 2-CHLOROPROPENE (Class 3) */ +/* 2,3-DIMETHYLBUTANE. DESCRIPTION: 2,3-DIMETHYLBUTANE (Class 3) */ +/* HEXADIENE. DESCRIPTION: HEXADIENE (Class 3) */ +/* 2-METHYL-1-BUTENE. DESCRIPTION: 2-METHYL-1-BUTENE (Class 3) */ +/* 2-METHYL-2-BUTENE. DESCRIPTION: 2-METHYL-2-BUTENE (Class 3) */ +/* METHYLPENTADIENE. DESCRIPTION: METHYLPENTADIENE (Class 3) */ +/* ALUMINIUM HYDRIDE. DESCRIPTION: ALUMINIUM HYDRIDE (Class 4.3) */ +/* BERYLLIUM NITRATE. DESCRIPTION: BERYLLIUM NITRATE (Class 5.1) */ +/* DICHLOROISOCYANURIC ACID, DRY or DICHLOROISOCYANURIC ACID SALTS. DESCRIPTION: DICHLOROISOCYANURIC ACID, DRY or DICHLOROISOCYANURIC ACID SALTS (Class 5.1) */ +/* POTASSIUM SUPEROXIDE. DESCRIPTION: POTASSIUM SUPEROXIDE (Class 5.1) */ +/* TRICHLOROISOCYANURIC ACID, DRY. DESCRIPTION: TRICHLOROISOCYANURIC ACID, DRY (Class 5.1) */ +/* ZINC BROMATE. DESCRIPTION: ZINC BROMATE (Class 5.1) */ +/* PHENYLACETONITRILE, LIQUID. DESCRIPTION: PHENYLACETONITRILE, LIQUID (Class 6.1) */ +/* OSMIUM TETROXIDE. DESCRIPTION: OSMIUM TETROXIDE (Class 6.1) */ +/* SODIUM ARSANILATE. DESCRIPTION: SODIUM ARSANILATE (Class 6.1) */ +/* THIOPHOSGENE. DESCRIPTION: THIOPHOSGENE (Class 6.1) */ +/* VANADIUM TRICHLORIDE. DESCRIPTION: VANADIUM TRICHLORIDE (Class 8) */ +/* METHYL ISOTHIOCYANATE. DESCRIPTION: METHYL ISOTHIOCYANATE (Class 6.1) */ +/* ISOCYANATES, FLAMMABLE, TOXIC, N.O.S. or ISOCYANATE SOLUTION, FLAMMABLE, TOXIC, N.O.S.. DESCRIPTION: ISOCYANATES, FLAMMABLE, TOXIC, N.O.S. or ISOCYANATE SOLUTION, FLAMMABLE, TOXIC, N.O.S. (Class 3) */ +/* METHYL ISOCYANATE. DESCRIPTION: METHYL ISOCYANATE (Class 6.1) */ +/* ETHYL ISOCYANATE. DESCRIPTION: ETHYL ISOCYANATE (Class 3) */ +/* n-PROPYL ISOCYANATE. DESCRIPTION: n-PROPYL ISOCYANATE (Class 6.1) */ +/* ISOPROPYL ISOCYANATE. DESCRIPTION: ISOPROPYL ISOCYANATE (Class 3) */ +/* tert-BUTYL ISOCYANATE. DESCRIPTION: tert-BUTYL ISOCYANATE (Class 6.1) */ +/* n-BUTYL ISOCYANATE. DESCRIPTION: n-BUTYL ISOCYANATE (Class 6.1) */ +/* ISOBUTYL ISOCYANATE. DESCRIPTION: ISOBUTYL ISOCYANATE (Class 3) */ +/* PHENYL ISOCYANATE. DESCRIPTION: PHENYL ISOCYANATE (Class 6.1) */ +/* CYCLOHEXYL ISOCYANATE. DESCRIPTION: CYCLOHEXYL ISOCYANATE (Class 6.1) */ +/* DICHLOROISOPROPYL ETHER. DESCRIPTION: DICHLOROISOPROPYL ETHER (Class 6.1) */ +/* ETHANOLAMINE or ETHANOLAMINE SOLUTION. DESCRIPTION: ETHANOLAMINE or ETHANOLAMINE SOLUTION (Class 8) */ +/* HEXAMETHYLENEIMINE. DESCRIPTION: HEXAMETHYLENEIMINE (Class 3) */ +/* IODINE PENTAFLUORIDE. DESCRIPTION: IODINE PENTAFLUORIDE (Class 5.1) */ +/* PROPIONIC ANHYDRIDE. DESCRIPTION: PROPIONIC ANHYDRIDE (Class 8) */ +/* 1,2,3,6-TETRAHYDROBENZALDEHYDE. DESCRIPTION: 1,2,3,6-TETRAHYDROBENZALDEHYDE (Class 3) */ +/* TRIS-(1-AZIRIDINYL) PHOSPHINE OXIDE SOLUTION. DESCRIPTION: TRIS-(1-AZIRIDINYL) PHOSPHINE OXIDE SOLUTION (Class 6.1) */ +/* VALERYL CHLORIDE. DESCRIPTION: VALERYL CHLORIDE (Class 8) */ +/* ZIRCONIUM TETRACHLORIDE. DESCRIPTION: ZIRCONIUM TETRACHLORIDE (Class 8) */ +/* TETRABROMOETHANE. DESCRIPTION: TETRABROMOETHANE (Class 6.1) */ +/* AMMONIUM FLUORIDE. DESCRIPTION: AMMONIUM FLUORIDE (Class 6.1) */ +/* AMMONIUM HYDROGEN SULPHATE. DESCRIPTION: AMMONIUM HYDROGEN SULPHATE (Class 8) */ +/* CHLOROPLATINIC ACID, SOLID. DESCRIPTION: CHLOROPLATINIC ACID, SOLID (Class 8) */ +/* MOLYBDENUM PENTACHLORIDE. DESCRIPTION: MOLYBDENUM PENTACHLORIDE (Class 8) */ +/* POTASSIUM HYDROGEN SULPHATE. DESCRIPTION: POTASSIUM HYDROGEN SULPHATE (Class 8) */ +/* 2-CHLOROPROPIONIC ACID. DESCRIPTION: 2-CHLOROPROPIONIC ACID (Class 8) */ +/* AMINOPHENOLS (o-, m-, p-). DESCRIPTION: AMINOPHENOLS (o-, m-, p-) (Class 6.1) */ +/* BROMOACETYL BROMIDE. DESCRIPTION: BROMOACETYL BROMIDE (Class 8) */ +/* BROMOBENZENE. DESCRIPTION: BROMOBENZENE (Class 3) */ +/* BROMOFORM. DESCRIPTION: BROMOFORM (Class 6.1) */ +/* CARBON TETRABROMIDE. DESCRIPTION: CARBON TETRABROMIDE (Class 6.1) */ +/* 1-CHLORO-1,1-DIFLUOROETHANE (REFRIGERANT GAS R 142b). DESCRIPTION: 1-CHLORO-1,1-DIFLUOROETHANE (REFRIGERANT GAS R 142b) (Class 2) */ +/* 1,5,9-CYCLODODECATRIENE. DESCRIPTION: 1,5,9-CYCLODODECATRIENE (Class 6.1) */ +/* CYCLOOCTADIENES. DESCRIPTION: CYCLOOCTADIENES (Class 3) */ +/* DIKETENE, STABILIZED. DESCRIPTION: DIKETENE, STABILIZED (Class 6.1) */ +/* 2-DIMETHYLAMINOETHYL METHACRYLATE. DESCRIPTION: 2-DIMETHYLAMINOETHYL METHACRYLATE (Class 6.1) */ +/* ETHYL ORTHOFORMATE. DESCRIPTION: ETHYL ORTHOFORMATE (Class 3) */ +/* ETHYL OXALATE. DESCRIPTION: ETHYL OXALATE (Class 6.1) */ +/* FURFURYLAMINE. DESCRIPTION: FURFURYLAMINE (Class 3) */ +/* ISOBUTYL ACRYLATE, STABILIZED. DESCRIPTION: ISOBUTYL ACRYLATE, STABILIZED (Class 3) */ +/* ISOBUTYL ISOBUTYRATE. DESCRIPTION: ISOBUTYL ISOBUTYRATE (Class 3) */ +/* ISOBUTYRIC ACID. DESCRIPTION: ISOBUTYRIC ACID (Class 3) */ +/* METHACRYLIC ACID, STABILIZED. DESCRIPTION: METHACRYLIC ACID, STABILIZED (Class 8) */ +/* METHYL TRICHLOROACETATE. DESCRIPTION: METHYL TRICHLOROACETATE (Class 6.1) */ +/* METHYLCHLOROSILANE. DESCRIPTION: METHYLCHLOROSILANE (Class 2) */ +/* 4-METHYLMORPHOLINE (N-METHYLMORPHOLINE). DESCRIPTION: 4-METHYLMORPHOLINE (N-METHYLMORPHOLINE) (Class 3) */ +/* METHYLTETRAHYDROFURAN. DESCRIPTION: METHYLTETRAHYDROFURAN (Class 3) */ +/* NITRONAPHTHALENE. DESCRIPTION: NITRONAPHTHALENE (Class 4.1) */ +/* TERPINOLENE. DESCRIPTION: TERPINOLENE (Class 3) */ +/* TRIBUTYLAMINE. DESCRIPTION: TRIBUTYLAMINE (Class 6.1) */ +/* HAFNIUM POWDER, DRY. DESCRIPTION: HAFNIUM POWDER, DRY (Class 4.2) */ +/* TITANIUM POWDER, DRY. DESCRIPTION: TITANIUM POWDER, DRY (Class 4.2) */ +/* SODIUM SUPEROXIDE. DESCRIPTION: SODIUM SUPEROXIDE (Class 5.1) */ +/* CHLORINE PENTAFLUORIDE. DESCRIPTION: CHLORINE PENTAFLUORIDE (Class 2) */ +/* HEXAFLUOROACETONE HYDRATE. DESCRIPTION: HEXAFLUOROACETONE HYDRATE (Class 6.1) */ +/* METHYLALLYL CHLORIDE. DESCRIPTION: METHYLALLYL CHLORIDE (Class 3) */ +/* NITROCELLULOSE WITH WATER (not less than 25% water, by mass). DESCRIPTION: NITROCELLULOSE WITH WATER (not less than 25% water, by mass) (Class 4.1) */ +/* NITROCELLULOSE WITH ALCOHOL (not less than 25% alcohol, by mass, and not more than 12.6% nitrogen, by dry mass). DESCRIPTION: NITROCELLULOSE WITH ALCOHOL (not less than 25% alcohol, by mass, and not more than 12.6% nitrogen, by dry mass) (Class 4.1) */ +/* NITROCELLULOSE, with not more than 12.6% nitrogen, by dry mass, MIXTURE WITH or WITHOUT PLASTICIZER, WITH or WITHOUT PIGMENT. DESCRIPTION: NITROCELLULOSE, with not more than 12.6% nitrogen, by dry mass, MIXTURE WITH or WITHOUT PLASTICIZER, WITH or WITHOUT PIGMENT (Class 4.1) */ +/* EPIBROMOHYDRIN. DESCRIPTION: EPIBROMOHYDRIN (Class 6.1) */ +/* 2-METHYLPENTAN-2-OL. DESCRIPTION: 2-METHYLPENTAN-2-OL (Class 3) */ +/* 3-METHYL-1-BUTENE. DESCRIPTION: 3-METHYL-1-BUTENE (Class 3) */ +/* TRICHLOROACETIC ACID SOLUTION. DESCRIPTION: TRICHLOROACETIC ACID SOLUTION (Class 8) */ +/* DICYCLOHEXYLAMINE. DESCRIPTION: DICYCLOHEXYLAMINE (Class 8) */ +/* SODIUM PENTACHLOROPHENATE. DESCRIPTION: SODIUM PENTACHLOROPHENATE (Class 6.1) */ +/* CADMIUM COMPOUND. DESCRIPTION: CADMIUM COMPOUND (Class 6.1) */ +/* ALKYLSULPHURIC ACIDS. DESCRIPTION: ALKYLSULPHURIC ACIDS (Class 8) */ +/* PHENYLHYDRAZINE. DESCRIPTION: PHENYLHYDRAZINE (Class 6.1) */ +/* THALLIUM CHLORATE. DESCRIPTION: THALLIUM CHLORATE (Class 5.1) */ +/* TRICRESYL PHOSPHATE with more than 3% ortho isomer. DESCRIPTION: TRICRESYL PHOSPHATE with more than 3% ortho isomer (Class 6.1) */ +/* PHOSPHORUS OXYBROMIDE, MOLTEN. DESCRIPTION: PHOSPHORUS OXYBROMIDE, MOLTEN (Class 8) */ +/* PHENYLACETYL CHLORIDE. DESCRIPTION: PHENYLACETYL CHLORIDE (Class 8) */ +/* PHOSPHORUS TRIOXIDE. DESCRIPTION: PHOSPHORUS TRIOXIDE (Class 8) */ +/* PIPERAZINE. DESCRIPTION: PIPERAZINE (Class 8) */ +/* ALUMINIUM BROMIDE SOLUTION. DESCRIPTION: ALUMINIUM BROMIDE SOLUTION (Class 8) */ +/* ALUMINIUM CHLORIDE SOLUTION. DESCRIPTION: ALUMINIUM CHLORIDE SOLUTION (Class 8) */ +/* FERRIC CHLORIDE SOLUTION. DESCRIPTION: FERRIC CHLORIDE SOLUTION (Class 8) */ +/* ALKYLSULPHONIC ACIDS, SOLID or ARYLSULPHONIC ACIDS, SOLID with more than 5% free sulphuric acid. DESCRIPTION: ALKYLSULPHONIC ACIDS, SOLID or ARYLSULPHONIC ACIDS, SOLID with more than 5% free sulphuric acid (Class 8) */ +/* ALKYSULPHONIC ACIDS, LIQUID or ARYLSULPHONIC ACIDS, LIQUID with more than 5% free sulphuric acid. DESCRIPTION: ALKYSULPHONIC ACIDS, LIQUID or ARYLSULPHONIC ACIDS, LIQUID with more than 5% free sulphuric acid (Class 8) */ +/* ALKYLSULPHONIC ACIDS, SOLID or ARYLSULPHONIC ACIDS, SOLID with not more than 5% free sulphuric acid. DESCRIPTION: ALKYLSULPHONIC ACIDS, SOLID or ARYLSULPHONIC ACIDS, SOLID with not more than 5% free sulphuric acid (Class 8) */ +/* ALKYLSULPHONIC ACIDS, LIQUID or ARYLSULPHONIC ACIDS, LIQUID with not more than 5% free sulphuric acid. DESCRIPTION: ALKYLSULPHONIC ACIDS, LIQUID or ARYLSULPHONIC ACIDS, LIQUID with not more than 5% free sulphuric acid (Class 8) */ +/* BENZOQUINONE. DESCRIPTION: BENZOQUINONE (Class 6.1) */ +/* PESTICIDE, SOLID, TOXIC, N.O.S.. DESCRIPTION: PESTICIDE, SOLID, TOXIC, N.O.S. (Class 6.1) */ +/* VINYL CHLOROACETATE. DESCRIPTION: VINYL CHLOROACETATE (Class 6.1) */ +/* WHITE ASBESTOS. DESCRIPTION: WHITE ASBESTOS (Class 9) */ +/* XENON, REFRIGERATED LIQUID. DESCRIPTION: XENON, REFRIGERATED LIQUID (Class 2) */ +/* CHLOROTRIFLUOROMETHANE AND TRIFLUOROMETHANE AZEOTROPIC MIXTURE with approximately 60% chlorotrifluoromethane (REFRIGERANT GAS R 503). DESCRIPTION: CHLOROTRIFLUOROMETHANE AND TRIFLUOROMETHANE AZEOTROPIC MIXTURE with approximately 60% chlorotrifluoromethane (REFRIGERANT GAS R 503) (Class 2) */ +/* CARBON MONOXIDE AND HYDROGEN MIXTURE, COMPRESSED. DESCRIPTION: CARBON MONOXIDE AND HYDROGEN MIXTURE, COMPRESSED (Class 2) */ +/* CYCLOBUTANE. DESCRIPTION: CYCLOBUTANE (Class 2) */ +/* DICHLORODIFLUOROMETHANE AND DIFLUOROETHANE AZEOTROPIC MIXTURE with approximately 74% dichlorodifluoromethane (REFRIGERANT GAS R 500). DESCRIPTION: DICHLORODIFLUOROMETHANE AND DIFLUOROETHANE AZEOTROPIC MIXTURE with approximately 74% dichlorodifluoromethane (REFRIGERANT GAS R 500) (Class 2) */ +/* CYCLOHEPTATRIENE. DESCRIPTION: CYCLOHEPTATRIENE (Class 3) */ +/* BORON TRIFLUORIDE DIETHYL ETHERATE. DESCRIPTION: BORON TRIFLUORIDE DIETHYL ETHERATE (Class 8) */ +/* METHOXYMETHYL ISOCYANATE. DESCRIPTION: METHOXYMETHYL ISOCYANATE (Class 3) */ +/* METHYL ORTHOSILICATE. DESCRIPTION: METHYL ORTHOSILICATE (Class 6.1) */ +/* ACROLEIN DIMER, STABILIZED. DESCRIPTION: ACROLEIN DIMER, STABILIZED (Class 3) */ +/* NITROPROPANES. DESCRIPTION: NITROPROPANES (Class 3) */ +/* TRIALLYL BORATE. DESCRIPTION: TRIALLYL BORATE (Class 6.1) */ +/* TRIALLYLAMINE. DESCRIPTION: TRIALLYLAMINE (Class 3) */ +/* PROPYLENE CHLOROHYDRIN. DESCRIPTION: PROPYLENE CHLOROHYDRIN (Class 6.1) */ +/* METHYL PROPYL ETHER. DESCRIPTION: METHYL PROPYL ETHER (Class 3) */ +/* METHALLYL ALCOHOL. DESCRIPTION: METHALLYL ALCOHOL (Class 3) */ +/* ETHYL PROPYL ETHER. DESCRIPTION: ETHYL PROPYL ETHER (Class 3) */ +/* TRIISOPROPYL BORATE. DESCRIPTION: TRIISOPROPYL BORATE (Class 3) */ +/* METHYLCYCLOHEXANOLS, flammable. DESCRIPTION: METHYLCYCLOHEXANOLS, flammable (Class 3) */ +/* VINYLTOLUENES, STABILIZED. DESCRIPTION: VINYLTOLUENES, STABILIZED (Class 3) */ +/* BENZYLDIMETHYLAMINE. DESCRIPTION: BENZYLDIMETHYLAMINE (Class 8) */ +/* AMYL BUTYRATES. DESCRIPTION: AMYL BUTYRATES (Class 3) */ +/* ACETYL METHYL CARBINOL. DESCRIPTION: ACETYL METHYL CARBINOL (Class 3) */ +/* GLYCIDALDEHYDE. DESCRIPTION: GLYCIDALDEHYDE (Class 3) */ +/* FIRELIGHTERS, SOLID with flammable liquid. DESCRIPTION: FIRELIGHTERS, SOLID with flammable liquid (Class 4.1) */ +/* MAGNESIUM SILICIDE. DESCRIPTION: MAGNESIUM SILICIDE (Class 4.3) */ +/* CHLORIC ACID, AQUEOUS SOLUTION with not more than 10% chloric acid. DESCRIPTION: CHLORIC ACID, AQUEOUS SOLUTION with not more than 10% chloric acid (Class 5.1) */ +/* NITRITES, INORGANIC, N.O.S.. DESCRIPTION: NITRITES, INORGANIC, N.O.S. (Class 5.1) */ +/* POTASSIUM FLUOROACETATE. DESCRIPTION: POTASSIUM FLUOROACETATE (Class 6.1) */ +/* SODIUM FLUOROACETATE. DESCRIPTION: SODIUM FLUOROACETATE (Class 6.1) */ +/* SELENATES or SELENITES. DESCRIPTION: SELENATES or SELENITES (Class 6.1) */ +/* FLUOROACETIC ACID. DESCRIPTION: FLUOROACETIC ACID (Class 6.1) */ +/* METHYL BROMOACETATE. DESCRIPTION: METHYL BROMOACETATE (Class 6.1) */ +/* METHYL IODIDE. DESCRIPTION: METHYL IODIDE (Class 6.1) */ +/* PHENACYL BROMIDE. DESCRIPTION: PHENACYL BROMIDE (Class 6.1) */ +/* HEXACHLOROCYCLOPENTADIENE. DESCRIPTION: HEXACHLOROCYCLOPENTADIENE (Class 6.1) */ +/* MALONONITRILE. DESCRIPTION: MALONONITRILE (Class 6.1) */ +/* 1,2-DIBROMOBUTAN-3-ONE. DESCRIPTION: 1,2-DIBROMOBUTAN-3-ONE (Class 6.1) */ +/* 1,3-DICHLOROACETONE. DESCRIPTION: 1,3-DICHLOROACETONE (Class 6.1) */ +/* 1,1-DICHLORO-1-NITROETHANE. DESCRIPTION: 1,1-DICHLORO-1-NITROETHANE (Class 6.1) */ +/* 4,4'-DIAMINODIPHENYLMETHANE. DESCRIPTION: 4,4'-DIAMINODIPHENYLMETHANE (Class 6.1) */ +/* BENZYL IODIDE. DESCRIPTION: BENZYL IODIDE (Class 6.1) */ +/* POTASSIUM FLUOROSILICATE. DESCRIPTION: POTASSIUM FLUOROSILICATE (Class 6.1) */ +/* QUINOLINE. DESCRIPTION: QUINOLINE (Class 6.1) */ +/* SELENIUM DISULPHIDE. DESCRIPTION: SELENIUM DISULPHIDE (Class 6.1) */ +/* SODIUM CHLOROACETATE. DESCRIPTION: SODIUM CHLOROACETATE (Class 6.1) */ +/* NITROTOLUIDINES. DESCRIPTION: NITROTOLUIDINES (Class 6.1) */ +/* HEXACHLOROACETONE. DESCRIPTION: HEXACHLOROACETONE (Class 6.1) */ +/* HYDROQUINONE. DESCRIPTION: HYDROQUINONE (Class 6.1) */ +/* DIBROMOMETHANE. DESCRIPTION: DIBROMOMETHANE (Class 6.1) */ +/* BUTYLTOLUENES. DESCRIPTION: BUTYLTOLUENES (Class 6.1) */ +/* CHLOROACETONITRILE. DESCRIPTION: CHLOROACETONITRILE (Class 6.1) */ +/* CHLOROCRESOLS. DESCRIPTION: CHLOROCRESOLS (Class 6.1) */ +/* CYANURIC CHLORIDE. DESCRIPTION: CYANURIC CHLORIDE (Class 8) */ +/* AMINOPYRIDINES (o-, m-, p-). DESCRIPTION: AMINOPYRIDINES (o-, m-, p-) (Class 6.1) */ +/* AMMONIA SOLUTION, in water, with more than 10% but not more than 35% ammonia. DESCRIPTION: AMMONIA SOLUTION, in water, with more than 10% but not more than 35% ammonia (Class 8) */ +/* 2-AMINO-4-CHLOROPHENOL. DESCRIPTION: 2-AMINO-4-CHLOROPHENOL (Class 6.1) */ +/* SODIUM FLUOROSILICATE. DESCRIPTION: SODIUM FLUOROSILICATE (Class 6.1) */ +/* STIBINE. DESCRIPTION: STIBINE (Class 2) */ +/* RUBIDIUM HYDROXIDE SOLUTION. DESCRIPTION: RUBIDIUM HYDROXIDE SOLUTION (Class 8) */ +/* RUBIDIUM HYDROXIDE. DESCRIPTION: RUBIDIUM HYDROXIDE (Class 8) */ +/* LITHIUM HYDROXIDE SOLUTION. DESCRIPTION: LITHIUM HYDROXIDE SOLUTION (Class 8) */ +/* LITHIUM HYDROXIDE MONOHYDRATE. DESCRIPTION: LITHIUM HYDROXIDE MONOHYDRATE (Class 8) */ +/* CAESIUM HYDROXIDE SOLUTION. DESCRIPTION: CAESIUM HYDROXIDE SOLUTION (Class 8) */ +/* CAESIUM HYDROXIDE. DESCRIPTION: CAESIUM HYDROXIDE (Class 8) */ +/* AMMONIUM SULPHIDE SOLUTION. DESCRIPTION: AMMONIUM SULPHIDE SOLUTION (Class 8) */ +/* DIETHYLAMINOPROPYLAMINE. DESCRIPTION: DIETHYLAMINOPROPYLAMINE (Class 3) */ +/* N,N-DIETHYLETHYLENEDIAMINE. DESCRIPTION: N,N-DIETHYLETHYLENEDIAMINE (Class 8) */ +/* 2-DIETHYLAMINOETHANOL. DESCRIPTION: 2-DIETHYLAMINOETHANOL (Class 8) */ +/* DICYCLOHEXYLAMMONIUM NITRITE. DESCRIPTION: DICYCLOHEXYLAMMONIUM NITRITE (Class 4.1) */ +/* 1-BROMO-3-CHLOROPROPANE. DESCRIPTION: 1-BROMO-3-CHLOROPROPANE (Class 6.1) */ +/* GLYCEROL alpha-MONOCHLOROHYDRIN. DESCRIPTION: GLYCEROL alpha-MONOCHLOROHYDRIN (Class 6.1) */ +/* N,n-BUTYLIMIDAZOLE. DESCRIPTION: N,n-BUTYLIMIDAZOLE (Class 6.1) */ +/* PHOSPHORUS PENTABROMIDE. DESCRIPTION: PHOSPHORUS PENTABROMIDE (Class 8) */ +/* BORON TRIBROMIDE. DESCRIPTION: BORON TRIBROMIDE (Class 8) */ +/* BISULPHITES, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: BISULPHITES, AQUEOUS SOLUTION, N.O.S. (Class 8) */ +/* TETRAHYDROPHTHALIC ANHYDRIDES with more than 0.05% of maleic anhydride. DESCRIPTION: TETRAHYDROPHTHALIC ANHYDRIDES with more than 0.05% of maleic anhydride (Class 8) */ +/* TRIFLUOROACETIC ACID. DESCRIPTION: TRIFLUOROACETIC ACID (Class 8) */ +/* 1-PENTOL. DESCRIPTION: 1-PENTOL (Class 8) */ +/* DIMETHYLDIOXANES. DESCRIPTION: DIMETHYLDIOXANES (Class 3) */ +/* BUTYLBENZENES. DESCRIPTION: BUTYLBENZENES (Class 3) */ +/* DIPROPYL KETONE. DESCRIPTION: DIPROPYL KETONE (Class 3) */ +/* ACRIDINE. DESCRIPTION: ACRIDINE (Class 6.1) */ +/* ZINC RESINATE. DESCRIPTION: ZINC RESINATE (Class 4.1) */ +/* ALUMINIUM RESINATE. DESCRIPTION: ALUMINIUM RESINATE (Class 4.1) */ +/* 1,4-BUTYNEDIOL. DESCRIPTION: 1,4-BUTYNEDIOL (Class 6.1) */ +/* CAMPHOR, synthetic. DESCRIPTION: CAMPHOR, synthetic (Class 4.1) */ +/* BARIUM BROMATE. DESCRIPTION: BARIUM BROMATE (Class 5.1) */ +/* CHROMIUM NITRATE. DESCRIPTION: CHROMIUM NITRATE (Class 5.1) */ +/* COPPER CHLORATE. DESCRIPTION: COPPER CHLORATE (Class 5.1) */ +/* LITHIUM NITRATE. DESCRIPTION: LITHIUM NITRATE (Class 5.1) */ +/* MAGNESIUM CHLORATE. DESCRIPTION: MAGNESIUM CHLORATE (Class 5.1) */ +/* MANGANESE NITRATE. DESCRIPTION: MANGANESE NITRATE (Class 5.1) */ +/* NICKEL NITRATE. DESCRIPTION: NICKEL NITRATE (Class 5.1) */ +/* NICKEL NITRITE. DESCRIPTION: NICKEL NITRITE (Class 5.1) */ +/* THALLIUM NITRATE. DESCRIPTION: THALLIUM NITRATE (Class 6.1) */ +/* ZIRCONIUM NITRATE. DESCRIPTION: ZIRCONIUM NITRATE (Class 5.1) */ +/* HEXACHLOROBENZENE. DESCRIPTION: HEXACHLOROBENZENE (Class 6.1) */ +/* NITROANISOLES, LIQUID. DESCRIPTION: NITROANISOLES, LIQUID (Class 6.1) */ +/* NITROBROMOBENZENES, LIQUID. DESCRIPTION: NITROBROMOBENZENES, LIQUID (Class 6.1) */ +/* AMINES, FLAMMABLE, CORROSIVE, N.O.S. or POLYAMINES, FLAMMABLE, CORROSIVE, N.O.S.. DESCRIPTION: AMINES, FLAMMABLE, CORROSIVE, N.O.S. or POLYAMINES, FLAMMABLE, CORROSIVE, N.O.S. (Class 3) */ +/* AMINES, LIQUID, CORROSIVE, FLAMMABLE, N.O.S. or POLYAMINES, LIQUID, CORROSIVE, FLAMMABLE, N.O.S.. DESCRIPTION: AMINES, LIQUID, CORROSIVE, FLAMMABLE, N.O.S. or POLYAMINES, LIQUID, CORROSIVE, FLAMMABLE, N.O.S. (Class 8) */ +/* AMINES, LIQUID, CORROSIVE, N.O.S. or POLYAMINES, LIQUID, CORROSIVE, N.O.S.. DESCRIPTION: AMINES, LIQUID, CORROSIVE, N.O.S. or POLYAMINES, LIQUID, CORROSIVE, N.O.S. (Class 8) */ +/* N-BUTYLANILINE. DESCRIPTION: N-BUTYLANILINE (Class 6.1) */ +/* BUTYRIC ANHYDRIDE. DESCRIPTION: BUTYRIC ANHYDRIDE (Class 8) */ +/* n-PROPYL CHLOROFORMATE. DESCRIPTION: n-PROPYL CHLOROFORMATE (Class 6.1) */ +/* BARIUM HYPOCHLORITE with more than 22% available chlorine. DESCRIPTION: BARIUM HYPOCHLORITE with more than 22% available chlorine (Class 5.1) */ +/* CHLOROFORMATES, TOXIC, CORROSIVE, FLAMMABLE, N.O.S.. DESCRIPTION: CHLOROFORMATES, TOXIC, CORROSIVE, FLAMMABLE, N.O.S. (Class 6.1) */ +/* n-BUTYL CHLOROFORMATE. DESCRIPTION: n-BUTYL CHLOROFORMATE (Class 6.1) */ +/* CYCLOBUTYL CHLOROFORMATE. DESCRIPTION: CYCLOBUTYL CHLOROFORMATE (Class 6.1) */ +/* CHLOROMETHYL CHLOROFORMATE. DESCRIPTION: CHLOROMETHYL CHLOROFORMATE (Class 6.1) */ +/* PHENYL CHLOROFORMATE. DESCRIPTION: PHENYL CHLOROFORMATE (Class 6.1) */ +/* tert-BUTYLCYCLOHEXYL CHLOROFORMATE. DESCRIPTION: tert-BUTYLCYCLOHEXYL CHLOROFORMATE (Class 6.1) */ +/* 2-ETHYLHEXYL CHLOROFORMATE. DESCRIPTION: 2-ETHYLHEXYL CHLOROFORMATE (Class 6.1) */ +/* TETRAMETHYLSILANE. DESCRIPTION: TETRAMETHYLSILANE (Class 3) */ +/* 1,3-DICHLOROPROPANOL-2. DESCRIPTION: 1,3-DICHLOROPROPANOL-2 (Class 6.1) */ +/* DIETHYLTHIOPHOSPHORYL CHLORIDE. DESCRIPTION: DIETHYLTHIOPHOSPHORYL CHLORIDE (Class 8) */ +/* 1,2-EPOXY-3-ETHOXYPROPANE. DESCRIPTION: 1,2-EPOXY-3-ETHOXYPROPANE (Class 3) */ +/* N-ETHYLBENZYLTOLUIDINES, LIQUID. DESCRIPTION: N-ETHYLBENZYLTOLUIDINES, LIQUID (Class 6.1) */ +/* N-ETHYLTOLUIDINES. DESCRIPTION: N-ETHYLTOLUIDINES (Class 6.1) */ +/* CARBAMATE PESTICIDE, SOLID, TOXIC. DESCRIPTION: CARBAMATE PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* CARBAMATE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: CARBAMATE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* ARSENICAL PESTICIDE, SOLID, TOXIC. DESCRIPTION: ARSENICAL PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* ARSENICAL PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: ARSENICAL PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* ORGANOCHLORINE PESTICIDE, SOLID, TOXIC. DESCRIPTION: ORGANOCHLORINE PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* ORGANOCHLORINE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: ORGANOCHLORINE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* TRIAZINE PESTICIDE, SOLID, TOXIC. DESCRIPTION: TRIAZINE PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* TRIAZINE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: TRIAZINE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* THIOCARBAMATE PESTICIDE, SOLID, TOXIC. DESCRIPTION: THIOCARBAMATE PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* THIOCARBAMATE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: THIOCARBAMATE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* COPPER BASED PESTICIDE, SOLID, TOXIC. DESCRIPTION: COPPER BASED PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* COPPER BASED PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: COPPER BASED PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* MERCURY BASED PESTICIDE, SOLID, TOXIC. DESCRIPTION: MERCURY BASED PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* MERCURY BASED PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: MERCURY BASED PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* SUBSTITUTED NITROPHENOL PESTICIDE, SOLID, TOXIC. DESCRIPTION: SUBSTITUTED NITROPHENOL PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* SUBSTITUTED NITROPHENOL PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: SUBSTITUTED NITROPHENOL PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* BIPYRIDILIUM PESTICIDE, SOLID, TOXIC. DESCRIPTION: BIPYRIDILIUM PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* BIPYRIDILIUM PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: BIPYRIDILIUM PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* ORGANOPHOSPHORUS PESTICIDE, SOLID, TOXIC. DESCRIPTION: ORGANOPHOSPHORUS PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* ORGANOPHOSPHORUS PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: ORGANOPHOSPHORUS PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* 4-THIAPENTANAL. DESCRIPTION: 4-THIAPENTANAL (Class 6.1) */ +/* ORGANOTIN PESTICIDE, SOLID, TOXIC. DESCRIPTION: ORGANOTIN PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* ORGANOTIN PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: ORGANOTIN PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* ORGANOTIN COMPOUND, LIQUID, N.O.S.. DESCRIPTION: ORGANOTIN COMPOUND, LIQUID, N.O.S. (Class 6.1) */ +/* ACETIC ACID, GLACIAL or ACETIC ACID SOLUTION, more than 80% acid, by mass. DESCRIPTION: ACETIC ACID, GLACIAL or ACETIC ACID SOLUTION, more than 80% acid, by mass (Class 8) */ +/* ACETIC ACID SOLUTION. DESCRIPTION: ACETIC ACID SOLUTION (Class 8) */ +/* FERROUS METAL BORINGS, SHAVINGS, TURNINGS or CUTTINGS in a form liable to self-heating. DESCRIPTION: FERROUS METAL BORINGS, SHAVINGS, TURNINGS or CUTTINGS in a form liable to self-heating (Class 4.2) */ +/* BATTERIES, WET, FILLED WITH ACID, electric storage. DESCRIPTION: BATTERIES, WET, FILLED WITH ACID, electric storage (Class 8) */ +/* BATTERIES, WET, FILLED WITH ALKALI, electric storage. DESCRIPTION: BATTERIES, WET, FILLED WITH ALKALI, electric storage (Class 8) */ +/* SULPHURIC ACID with not more than 51% acid or BATTERY FLUID, ACID. DESCRIPTION: SULPHURIC ACID with not more than 51% acid or BATTERY FLUID, ACID (Class 8) */ +/* BATTERY FLUID, ALKALI. DESCRIPTION: BATTERY FLUID, ALKALI (Class 8) */ +/* PHENYLPHOSPHORUS DICHLORIDE. DESCRIPTION: PHENYLPHOSPHORUS DICHLORIDE (Class 8) */ +/* PHENYLPHOSPHORUS THIODICHLORIDE. DESCRIPTION: PHENYLPHOSPHORUS THIODICHLORIDE (Class 8) */ +/* BATTERIES, WET, NON-SPILLABLE, electric storage. DESCRIPTION: BATTERIES, WET, NON-SPILLABLE, electric storage (Class 8) */ +/* DYE, LIQUID, CORROSIVE, N.O.S. or DYE INTERMEDIATE, LIQUID, CORROSIVE, N.O.S.. DESCRIPTION: DYE, LIQUID, CORROSIVE, N.O.S. or DYE INTERMEDIATE, LIQUID, CORROSIVE, N.O.S. (Class 8) */ +/* COPPER CHLORIDE. DESCRIPTION: COPPER CHLORIDE (Class 8) */ +/* GALLIUM. DESCRIPTION: GALLIUM (Class 8) */ +/* LITHIUM HYDRIDE, FUSED SOLID. DESCRIPTION: LITHIUM HYDRIDE, FUSED SOLID (Class 4.3) */ +/* LITHIUM NITRIDE. DESCRIPTION: LITHIUM NITRIDE (Class 4.3) */ +/* Magnetized material. DESCRIPTION: Magnetized material (Class 9) */ +/* MERCURY. DESCRIPTION: MERCURY (Class 8) */ +/* TOXIC LIQUID, ORGANIC, N.O.S.. DESCRIPTION: TOXIC LIQUID, ORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, ORGANIC, N.O.S.. DESCRIPTION: TOXIC SOLID, ORGANIC, N.O.S. (Class 6.1) */ +/* Sodium aluminate, solid. DESCRIPTION: Sodium aluminate, solid (Class 8) */ +/* WATER-REACTIVE SOLID, N.O.S.. DESCRIPTION: WATER-REACTIVE SOLID, N.O.S. (Class 4.3) */ +/* INFECTIOUS SUBSTANCE, AFFECTING HUMANS. DESCRIPTION: INFECTIOUS SUBSTANCE, AFFECTING HUMANS (Class 6.2) */ +/* N-AMINOETHYLPIPERAZINE. DESCRIPTION: N-AMINOETHYLPIPERAZINE (Class 8) */ +/* AMMONIUM HYDROGENDIFLUORIDE SOLUTION. DESCRIPTION: AMMONIUM HYDROGENDIFLUORIDE SOLUTION (Class 8) */ +/* AMMONIUM POLYSULPHIDE SOLUTION. DESCRIPTION: AMMONIUM POLYSULPHIDE SOLUTION (Class 8) */ +/* AMYL ACID PHOSPHATE. DESCRIPTION: AMYL ACID PHOSPHATE (Class 8) */ +/* BUTYRIC ACID. DESCRIPTION: BUTYRIC ACID (Class 8) */ +/* PHENOL SOLUTION. DESCRIPTION: PHENOL SOLUTION (Class 6.1) */ +/* 2-CHLOROPYRIDINE. DESCRIPTION: 2-CHLOROPYRIDINE (Class 6.1) */ +/* CROTONIC ACID. DESCRIPTION: CROTONIC ACID (Class 8) */ +/* ETHYL CHLOROTHIOFORMATE. DESCRIPTION: ETHYL CHLOROTHIOFORMATE (Class 8) */ +/* CAPROIC ACID. DESCRIPTION: CAPROIC ACID (Class 8) */ +/* LITHIUM FERROSILICON. DESCRIPTION: LITHIUM FERROSILICON (Class 4.3) */ +/* 1,1,1-TRICHLOROETHANE. DESCRIPTION: 1,1,1-TRICHLOROETHANE (Class 6.1) */ +/* PHOSPHOROUS ACID. DESCRIPTION: PHOSPHOROUS ACID (Class 8) */ +/* SODIUM ALUMINIUM HYDRIDE. DESCRIPTION: SODIUM ALUMINIUM HYDRIDE (Class 4.3) */ +/* BISULPHATES, AQUEOUS SOLUTION. DESCRIPTION: BISULPHATES, AQUEOUS SOLUTION (Class 8) */ +/* VINYL BUTYRATE, STABILIZED. DESCRIPTION: VINYL BUTYRATE, STABILIZED (Class 3) */ +/* ALDOL. DESCRIPTION: ALDOL (Class 6.1) */ +/* BUTYRALDOXIME. DESCRIPTION: BUTYRALDOXIME (Class 3) */ +/* DI-n-AMYLAMINE. DESCRIPTION: DI-n-AMYLAMINE (Class 3) */ +/* NITROETHANE. DESCRIPTION: NITROETHANE (Class 3) */ +/* CALCIUM MANGANESE SILICON. DESCRIPTION: CALCIUM MANGANESE SILICON (Class 4.3) */ +/* PYROPHORIC LIQUID, ORGANIC, N.O.S.. DESCRIPTION: PYROPHORIC LIQUID, ORGANIC, N.O.S. (Class 4.2) */ +/* PYROPHORIC SOLID, ORGANIC, N.O.S.. DESCRIPTION: PYROPHORIC SOLID, ORGANIC, N.O.S. (Class 4.2) */ +/* 3-CHLOROPROPANOL-1. DESCRIPTION: 3-CHLOROPROPANOL-1 (Class 6.1) */ +/* PROPYLENE TETRAMER. DESCRIPTION: PROPYLENE TETRAMER (Class 3) */ +/* BORON TRIFLUORIDE DIHYDRATE. DESCRIPTION: BORON TRIFLUORIDE DIHYDRATE (Class 8) */ +/* DIPICRYL SULPHIDE, WETTED with not less than 10% water, by mass. DESCRIPTION: DIPICRYL SULPHIDE, WETTED with not less than 10% water, by mass (Class 4.1) */ +/* MAGNESIUM FLUOROSILICATE. DESCRIPTION: MAGNESIUM FLUOROSILICATE (Class 6.1) */ +/* AMMONIUM FLUOROSILICATE. DESCRIPTION: AMMONIUM FLUOROSILICATE (Class 6.1) */ +/* ZINC FLUOROSILICATE. DESCRIPTION: ZINC FLUOROSILICATE (Class 6.1) */ +/* FLUOROSILICATES, N.O.S.. DESCRIPTION: FLUOROSILICATES, N.O.S. (Class 6.1) */ +/* REFRIGERATING MACHINES containing non-flammable, non-toxic, liquefied gas or ammonia solutions. DESCRIPTION: REFRIGERATING MACHINES containing non-flammable, non-toxic, liquefied gas or ammonia solutions (Class 2) */ +/* ZIRCONIUM, DRY, coiled wire, finished metal sheets, strip (thinner than 254 microns but not thinner than 18 microns). DESCRIPTION: ZIRCONIUM, DRY, coiled wire, finished metal sheets, strip (thinner than 254 microns but not thinner than 18 microns) (Class 4.1) */ +/* AMMONIUM METAVANADATE. DESCRIPTION: AMMONIUM METAVANADATE (Class 6.1) */ +/* AMMONIUM POLYVANADATE. DESCRIPTION: AMMONIUM POLYVANADATE (Class 6.1) */ +/* VANADIUM PENTOXIDE, non-fused form. DESCRIPTION: VANADIUM PENTOXIDE, non-fused form (Class 6.1) */ +/* SODIUM AMMONIUM VANADATE. DESCRIPTION: SODIUM AMMONIUM VANADATE (Class 6.1) */ +/* POTASSIUM METAVANADATE. DESCRIPTION: POTASSIUM METAVANADATE (Class 6.1) */ +/* HYDROXYLAMINE SULPHATE. DESCRIPTION: HYDROXYLAMINE SULPHATE (Class 8) */ +/* TITANIUM TRICHLORIDE MIXTURE. DESCRIPTION: TITANIUM TRICHLORIDE MIXTURE (Class 8) */ +/* ALUMINIUM BOROHYDRIDE. DESCRIPTION: ALUMINIUM BOROHYDRIDE (Class 4.2) */ +/* ANTIMONY POWDER. DESCRIPTION: ANTIMONY POWDER (Class 6.1) */ +/* DIBROMOCHLOROPROPANES. DESCRIPTION: DIBROMOCHLOROPROPANES (Class 6.1) */ +/* DIBUTYLAMINOETHANOL. DESCRIPTION: DIBUTYLAMINOETHANOL (Class 6.1) */ +/* FURFURYL ALCOHOL. DESCRIPTION: FURFURYL ALCOHOL (Class 6.1) */ +/* HEXACHLOROPHENE. DESCRIPTION: HEXACHLOROPHENE (Class 6.1) */ +/* RESORCINOL. DESCRIPTION: RESORCINOL (Class 6.1) */ +/* TITANIUM SPONGE GRANULES or TITANIUM SPONGE POWDERS. DESCRIPTION: TITANIUM SPONGE GRANULES or TITANIUM SPONGE POWDERS (Class 4.1) */ +/* SELENIUM OXYCHLORIDE. DESCRIPTION: SELENIUM OXYCHLORIDE (Class 8) */ +/* CALCIUM HYPOCHLORITE, HYDRATED, or CALCIUM HYPOCHLORITE, HYDRATED MIXTURE with not less than 5.5% but not more than 10% water. DESCRIPTION: CALCIUM HYPOCHLORITE, HYDRATED, or CALCIUM HYPOCHLORITE, HYDRATED MIXTURE with not less than 5.5% but not more than 10% water (Class 5.1) */ +/* METAL CATALYST, DRY. DESCRIPTION: METAL CATALYST, DRY (Class 4.2) */ +/* INFECTIOUS SUBSTANCE, AFFECTING ANIMALS only. DESCRIPTION: INFECTIOUS SUBSTANCE, AFFECTING ANIMALS only (Class 6.2) */ +/* BROMINE CHLORIDE. DESCRIPTION: BROMINE CHLORIDE (Class 2) */ +/* PESTICIDE, LIQUID, TOXIC, N.O.S.. DESCRIPTION: PESTICIDE, LIQUID, TOXIC, N.O.S. (Class 6.1) */ +/* PESTICIDE, LIQUID, TOXIC, FLAMMABLE, N.O.S. (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: PESTICIDE, LIQUID, TOXIC, FLAMMABLE, N.O.S. (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* CHLOROPHENOLATES, LIQUID or PHENOLATES, LIQUID. DESCRIPTION: CHLOROPHENOLATES, LIQUID or PHENOLATES, LIQUID (Class 8) */ +/* CHLOROPHENOLATES, SOLID or PHENOLATES, SOLID. DESCRIPTION: CHLOROPHENOLATES, SOLID or PHENOLATES, SOLID (Class 8) */ +/* ISOSORBIDE DINITRATE MIXTURE with not less than 60% lactose, mannose, starch or calcium hydrogen phosphate. DESCRIPTION: ISOSORBIDE DINITRATE MIXTURE with not less than 60% lactose, mannose, starch or calcium hydrogen phosphate (Class 4.1) */ +/* RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - EMPTY PACKAGING. DESCRIPTION: RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - EMPTY PACKAGING (Class 7) */ +/* RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - ARTICLES MANUFACTURED FROM NATURAL URANIUM or DEPLETED URANIUM or NATURAL THORIUM. DESCRIPTION: RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - ARTICLES MANUFACTURED FROM NATURAL URANIUM or DEPLETED URANIUM or NATURAL THORIUM (Class 7) */ +/* RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - LIMITED QUANTITY OF MATERIAL. DESCRIPTION: RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - LIMITED QUANTITY OF MATERIAL (Class 7) */ +/* RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - INSTRUMENTS or ARTICLES. DESCRIPTION: RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - INSTRUMENTS or ARTICLES (Class 7) */ +/* RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-I), non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-I), non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, SURFACE CONTAMINATED OBJECTS (SCO-I or SCO-II), non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, SURFACE CONTAMINATED OBJECTS (SCO-I or SCO-II), non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE A PACKAGE, non-special form, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE A PACKAGE, non-special form, non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE B(U) PACKAGE, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE B(U) PACKAGE, non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE B(M) PACKAGE, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE B(M) PACKAGE, non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, TRANSPORTED UNDER SPECIAL ARRANGEMENT, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, TRANSPORTED UNDER SPECIAL ARRANGEMENT, non fissile or fissile-excepted (Class 7) */ +/* CORROSIVE LIQUID, FLAMMABLE, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, FLAMMABLE, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, FLAMMABLE, N.O.S.. DESCRIPTION: CORROSIVE SOLID, FLAMMABLE, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, TOXIC, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, TOXIC, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, TOXIC, N.O.S.. DESCRIPTION: CORROSIVE SOLID, TOXIC, N.O.S. (Class 8) */ +/* FLAMMABLE LIQUID, CORROSIVE, N.O.S.. DESCRIPTION: FLAMMABLE LIQUID, CORROSIVE, N.O.S. (Class 3) */ +/* FLAMMABLE SOLID, CORROSIVE, ORGANIC, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, CORROSIVE, ORGANIC, N.O.S. (Class 4.1) */ +/* FLAMMABLE SOLID, TOXIC, ORGANIC, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, TOXIC, ORGANIC, N.O.S. (Class 4.1) */ +/* TOXIC LIQUID, CORROSIVE, ORGANIC, N.O.S.. DESCRIPTION: TOXIC LIQUID, CORROSIVE, ORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, CORROSIVE, ORGANIC, N.O.S.. DESCRIPTION: TOXIC SOLID, CORROSIVE, ORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC LIQUID, FLAMMABLE, ORGANIC, N.O.S.. DESCRIPTION: TOXIC LIQUID, FLAMMABLE, ORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, FLAMMABLE, ORGANIC, N.O.S.. DESCRIPTION: TOXIC SOLID, FLAMMABLE, ORGANIC, N.O.S. (Class 6.1) */ +/* VANADYL SULPHATE. DESCRIPTION: VANADYL SULPHATE (Class 6.1) */ +/* METHYL 2-CHLOROPROPIONATE. DESCRIPTION: METHYL 2-CHLOROPROPIONATE (Class 3) */ +/* ISOPROPYL 2-CHLOROPROPIONATE. DESCRIPTION: ISOPROPYL 2-CHLOROPROPIONATE (Class 3) */ +/* ETHYL 2-CHLOROPROPIONATE. DESCRIPTION: ETHYL 2-CHLOROPROPIONATE (Class 3) */ +/* THIOLACTIC ACID. DESCRIPTION: THIOLACTIC ACID (Class 6.1) */ +/* alpha-METHYLBENZYL ALCOHOL. DESCRIPTION: alpha-METHYLBENZYL ALCOHOL (Class 6.1) */ +/* 9-PHOSPHABICYCLONONANES (CYCLOOCTADIENE PHOSPHINES). DESCRIPTION: 9-PHOSPHABICYCLONONANES (CYCLOOCTADIENE PHOSPHINES) (Class 4.2) */ +/* FLUOROANILINES. DESCRIPTION: FLUOROANILINES (Class 6.1) */ +/* 2-TRIFLUOROMETHYLANILINE. DESCRIPTION: 2-TRIFLUOROMETHYLANILINE (Class 6.1) */ +/* TETRAHYDROFURFURYLAMINE. DESCRIPTION: TETRAHYDROFURFURYLAMINE (Class 3) */ +/* N-METHYLBUTYLAMINE. DESCRIPTION: N-METHYLBUTYLAMINE (Class 3) */ +/* 2-AMINO-5-DIETHYLAMINOPENTANE. DESCRIPTION: 2-AMINO-5-DIETHYLAMINOPENTANE (Class 6.1) */ +/* ISOPROPYL CHLOROACETATE. DESCRIPTION: ISOPROPYL CHLOROACETATE (Class 3) */ +/* 3-TRIFLUOROMETHYLANILINE. DESCRIPTION: 3-TRIFLUOROMETHYLANILINE (Class 6.1) */ +/* SODIUM HYDROSULPHIDE with not less than 25% water of crystallization. DESCRIPTION: SODIUM HYDROSULPHIDE with not less than 25% water of crystallization (Class 8) */ +/* MAGNESIUM GRANULES, COATED, particle size not less than 149 microns. DESCRIPTION: MAGNESIUM GRANULES, COATED, particle size not less than 149 microns (Class 4.3) */ +/* 5-tert-BUTYL-2,4,6-TRINITRO-m-XYLENE (MUSK XYLENE). DESCRIPTION: 5-tert-BUTYL-2,4,6-TRINITRO-m-XYLENE (MUSK XYLENE) (Class 4.1) */ +/* BORON TRIFLUORIDE DIMETHYL ETHERATE. DESCRIPTION: BORON TRIFLUORIDE DIMETHYL ETHERATE (Class 4.3) */ +/* THIOGLYCOL. DESCRIPTION: THIOGLYCOL (Class 6.1) */ +/* SULPHAMIC ACID. DESCRIPTION: SULPHAMIC ACID (Class 8) */ +/* MANEB, STABILIZED or MANEB PREPARATION, STABILIZED against self-heating. DESCRIPTION: MANEB, STABILIZED or MANEB PREPARATION, STABILIZED against self-heating (Class 4.3) */ +/* CASTOR BEANS or CASTOR MEAL or CASTOR POMACE or CASTOR FLAKE. DESCRIPTION: CASTOR BEANS or CASTOR MEAL or CASTOR POMACE or CASTOR FLAKE (Class 9) */ +/* RADIOACTIVE MATERIAL, URANIUM HEXAFLUORIDE, FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, URANIUM HEXAFLUORIDE, FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, URANIUM HEXAFLUORIDE, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, URANIUM HEXAFLUORIDE, non fissile or fissile-excepted (Class 7) */ +/* ETHYLENE OXIDE AND PROPYLENE OXIDE MIXTURE, not more than 30% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND PROPYLENE OXIDE MIXTURE, not more than 30% ethylene oxide (Class 3) */ +/* HYDROGEN PEROXIDE, AQUEOUS SOLUTION with not less than 8% but less than 20% hydrogen peroxide (stabilized as necessary). DESCRIPTION: HYDROGEN PEROXIDE, AQUEOUS SOLUTION with not less than 8% but less than 20% hydrogen peroxide (stabilized as necessary) (Class 5.1) */ +/* CHLOROSILANES, FLAMMABLE, CORROSIVE, N.O.S. (flash point less than 23 */ +/* ºC). DESCRIPTION: CHLOROSILANES, FLAMMABLE, CORROSIVE, N.O.S. (flash point less than 23ºC) (Class 3) */ +/* CHLOROSILANES, CORROSIVE, FLAMMABLE, N.O.S.. DESCRIPTION: CHLOROSILANES, CORROSIVE, FLAMMABLE, N.O.S. (Class 8) */ +/* CHLOROSILANES, CORROSIVE, N.O.S.. DESCRIPTION: CHLOROSILANES, CORROSIVE, N.O.S. (Class 8) */ +/* CHLOROSILANES, WATER-REACTIVE, FLAMMABLE, CORROSIVE, N.O.S.. DESCRIPTION: CHLOROSILANES, WATER-REACTIVE, FLAMMABLE, CORROSIVE, N.O.S. (Class 4.3) */ +/* LEAD PHOSPHITE, DIBASIC. DESCRIPTION: LEAD PHOSPHITE, DIBASIC (Class 4.1) */ +/* LIFE-SAVING APPLIANCES, SELF-INFLATING. DESCRIPTION: LIFE-SAVING APPLIANCES, SELF-INFLATING (Class 9) */ +/* CARBAMATE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: CARBAMATE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* CARBAMATE PESTICIDE, LIQUID, TOXIC. DESCRIPTION: CARBAMATE PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* ARSENICAL PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: ARSENICAL PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* ARSENICAL PESTICIDE, LIQUID, TOXIC. DESCRIPTION: ARSENICAL PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* ORGANOCHLORINE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: ORGANOCHLORINE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* ORGANOCHLORINE PESTICIDE, LIQUID, TOXIC. DESCRIPTION: ORGANOCHLORINE PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* TRIAZINE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: TRIAZINE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* TRIAZINE PESTICIDE, LIQUID, TOXIC. DESCRIPTION: TRIAZINE PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* THIOCARBAMATE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: THIOCARBAMATE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* THIOCARBAMATE PESTICIDE, LIQUID, TOXIC. DESCRIPTION: THIOCARBAMATE PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* COPPER BASED PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: COPPER BASED PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* COPPER BASED PESTICIDE, LIQUID, TOXIC. DESCRIPTION: COPPER BASED PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* MERCURY BASED PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: MERCURY BASED PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* MERCURY BASED PESTICIDE, LIQUID, TOXIC. DESCRIPTION: MERCURY BASED PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* SUBSTITUTED NITROPHENOL PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: SUBSTITUTED NITROPHENOL PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* SUBSTITUTED NITROPHENOL PESTICIDE, LIQUID, TOXIC. DESCRIPTION: SUBSTITUTED NITROPHENOL PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* BIPYRIDILIUM PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: BIPYRIDILIUM PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* BIPYRIDILIUM PESTICIDE, LIQUID, TOXIC. DESCRIPTION: BIPYRIDILIUM PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* ORGANOPHOSPHORUS PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: ORGANOPHOSPHORUS PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* ORGANOPHOSPHORUS PESTICIDE, LIQUID, TOXIC. DESCRIPTION: ORGANOPHOSPHORUS PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* ORGANOTIN PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: ORGANOTIN PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* ORGANOTIN PESTICIDE, LIQUID, TOXIC. DESCRIPTION: ORGANOTIN PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* PESTICIDE, LIQUID, FLAMMABLE, TOXIC, N.O.S. (flash point less than 23 */ +/* ºC). DESCRIPTION: PESTICIDE, LIQUID, FLAMMABLE, TOXIC, N.O.S. (flash point less than 23ºC) (Class 3) */ +/* 1,2-BUTYLENE OXIDE, STABILIZED. DESCRIPTION: 1,2-BUTYLENE OXIDE, STABILIZED (Class 3) */ +/* 2-METHYL-2-HEPTANETHIOL. DESCRIPTION: 2-METHYL-2-HEPTANETHIOL (Class 6.1) */ +/* COUMARIN DERIVATIVE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: COUMARIN DERIVATIVE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* COUMARIN DERIVATIVE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: COUMARIN DERIVATIVE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* COUMARIN DERIVATIVE PESTICIDE, LIQUID, TOXIC. DESCRIPTION: COUMARIN DERIVATIVE PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* COUMARIN DERIVATIVE PESTICIDE, SOLID, TOXIC. DESCRIPTION: COUMARIN DERIVATIVE PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* BATTERIES, DRY, CONTAINING POTASSIUM HYDROXIDE SOLID, electric storage. DESCRIPTION: BATTERIES, DRY, CONTAINING POTASSIUM HYDROXIDE SOLID, electric storage (Class 8) */ +/* ALUMINIUM PHOSPHIDE PESTICIDE. DESCRIPTION: ALUMINIUM PHOSPHIDE PESTICIDE (Class 6.1) */ +/* METAL ALKYL HALIDES, WATER-REACTIVE, N.O.S. or METAL ARYL HALIDES, WATER-REACTIVE, N.O.S.. DESCRIPTION: METAL ALKYL HALIDES, WATER-REACTIVE, N.O.S. or METAL ARYL HALIDES, WATER-REACTIVE, N.O.S. (Class 4.2) */ +/* METAL ALKYL HYDRIDES, WATER-REACTIVE, N.O.S. or METAL ARYL HYDRIDES, WATER-REACTIVE, N.O.S.. DESCRIPTION: METAL ALKYL HYDRIDES, WATER-REACTIVE, N.O.S. or METAL ARYL HYDRIDES, WATER-REACTIVE, N.O.S. (Class 4.2) */ +/* ALUMINIUM ALKYLS. DESCRIPTION: ALUMINIUM ALKYLS (Class 4.2) */ +/* ALUMINIUM ALKYL HALIDES, LIQUID. DESCRIPTION: ALUMINIUM ALKYL HALIDES, LIQUID (Class 4.2) */ +/* MAGNESIUM ALKYLS. DESCRIPTION: MAGNESIUM ALKYLS (Class 4.2) */ +/* CYCLOHEXYL MERCAPTAN. DESCRIPTION: CYCLOHEXYL MERCAPTAN (Class 3) */ +/* 2-(2-AMINOETHOXY)ETHANOL. DESCRIPTION: 2-(2-AMINOETHOXY)ETHANOL (Class 8) */ +/* n-HEPTALDEHYDE. DESCRIPTION: n-HEPTALDEHYDE (Class 3) */ +/* TRIFLUOROACETYL CHLORIDE. DESCRIPTION: TRIFLUOROACETYL CHLORIDE (Class 2) */ +/* NITROGLYCERIN, SOLUTION IN ALCOHOL with more than 1% but not more than 5% nitroglycerin. DESCRIPTION: NITROGLYCERIN, SOLUTION IN ALCOHOL with more than 1% but not more than 5% nitroglycerin (Class 3) */ +/* ALCOHOLIC BEVERAGES. DESCRIPTION: ALCOHOLIC BEVERAGES (Class 3) */ +/* PAINT or PAINT RELATED MATERIAL. DESCRIPTION: PAINT or PAINT RELATED MATERIAL (Class 8) */ +/* ETHYLENE OXIDE AND DICHLORODIFLUOROMETHANE MIXTURE with not more than 12.5% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND DICHLORODIFLUOROMETHANE MIXTURE with not more than 12.5% ethylene oxide (Class 2) */ +/* MERCAPTANS, LIQUID, TOXIC, FLAMMABLE, N.O.S. or MERCAPTAN MIXTURE, LIQUID, TOXIC, FLAMMABLE, N.O.S. (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: MERCAPTANS, LIQUID, TOXIC, FLAMMABLE, N.O.S. or MERCAPTAN MIXTURE, LIQUID, TOXIC, FLAMMABLE, N.O.S. (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* LIFE-SAVING APPLIANCES NOT SELF-INFLATING containing dangerous goods as equipment. DESCRIPTION: LIFE-SAVING APPLIANCES NOT SELF-INFLATING containing dangerous goods as equipment (Class 9) */ +/* VINYLPYRIDINES, STABILIZED. DESCRIPTION: VINYLPYRIDINES, STABILIZED (Class 6.1) */ +/* ALUMINIUM ALKYL HYDRIDES. DESCRIPTION: ALUMINIUM ALKYL HYDRIDES (Class 4.2) */ +/* ENVIRONMENTALLY HAZARDOUS SUBSTANCE, SOLID, N.O.S.. DESCRIPTION: ENVIRONMENTALLY HAZARDOUS SUBSTANCE, SOLID, N.O.S. (Class 9) */ +/* CERIUM, turnings or gritty powder. DESCRIPTION: CERIUM, turnings or gritty powder (Class 4.3) */ +/* METHACRYLONITRILE, STABILIZED. DESCRIPTION: METHACRYLONITRILE, STABILIZED (Class 3) */ +/* ISOCYANATES, TOXIC, FLAMMABLE, N.O.S. or ISOCYANATE SOLUTION, TOXIC, FLAMMABLE, N.O.S. (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: ISOCYANATES, TOXIC, FLAMMABLE, N.O.S. or ISOCYANATE SOLUTION, TOXIC, FLAMMABLE, N.O.S. (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* ENVIRONMENTALLY HAZARDOUS SUBSTANCE, LIQUID, N.O.S.. DESCRIPTION: ENVIRONMENTALLY HAZARDOUS SUBSTANCE, LIQUID, N.O.S. (Class 9) */ +/* PERCHLORYL FLUORIDE. DESCRIPTION: PERCHLORYL FLUORIDE (Class 2) */ +/* CORROSIVE SOLID, OXIDIZING, N.O.S.. DESCRIPTION: CORROSIVE SOLID, OXIDIZING, N.O.S. (Class 8) */ +/* OXIDIZING SOLID, CORROSIVE, N.O.S.. DESCRIPTION: OXIDIZING SOLID, CORROSIVE, N.O.S. (Class 5.1) */ +/* TOXIC SOLID, OXIDIZING, N.O.S.. DESCRIPTION: TOXIC SOLID, OXIDIZING, N.O.S. (Class 6.1) */ +/* OXIDIZING SOLID, TOXIC, N.O.S.. DESCRIPTION: OXIDIZING SOLID, TOXIC, N.O.S. (Class 5.1) */ +/* SELF-HEATING SOLID, ORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING SOLID, ORGANIC, N.O.S. (Class 4.2) */ +/* METAL POWDER, FLAMMABLE, N.O.S.. DESCRIPTION: METAL POWDER, FLAMMABLE, N.O.S. (Class 4.1) */ +/* LITHIUM BATTERIES. DESCRIPTION: LITHIUM BATTERIES (Class 9) */ +/* LITHIUM BATTERIES CONTAINED IN EQUIPMENT or LITHIUM BATTERIES PACKED WITH EQUIPMENT. DESCRIPTION: LITHIUM BATTERIES CONTAINED IN EQUIPMENT or LITHIUM BATTERIES PACKED WITH EQUIPMENT (Class 9) */ +/* 1-METHOXY-2-PROPANOL. DESCRIPTION: 1-METHOXY-2-PROPANOL (Class 3) */ +/* CORROSIVE LIQUID, OXIDIZING, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, OXIDIZING, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, WATER-REACTIVE, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, WATER-REACTIVE, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, SELF-HEATING, N.O.S.. DESCRIPTION: CORROSIVE SOLID, SELF-HEATING, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, WATER-REACTIVE, N.O.S.. DESCRIPTION: CORROSIVE SOLID, WATER-REACTIVE, N.O.S. (Class 8) */ +/* Flammable solid, oxidizing, n.o.s.. DESCRIPTION: Flammable solid, oxidizing, n.o.s. (Class 4.1) */ +/* OXIDIZING LIQUID, CORROSIVE, N.O.S.. DESCRIPTION: OXIDIZING LIQUID, CORROSIVE, N.O.S. (Class 5.1) */ +/* OXIDIZING LIQUID, TOXIC, N.O.S.. DESCRIPTION: OXIDIZING LIQUID, TOXIC, N.O.S. (Class 5.1) */ +/* Oxidizing solid, self-heating, n.o.s.. DESCRIPTION: Oxidizing solid, self-heating, n.o.s. (Class 5.1) */ +/* ORGANIC PEROXIDE TYPE B, LIQUID. DESCRIPTION: ORGANIC PEROXIDE TYPE B, LIQUID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE B, SOLID. DESCRIPTION: ORGANIC PEROXIDE TYPE B, SOLID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE C, LIQUID. DESCRIPTION: ORGANIC PEROXIDE TYPE C, LIQUID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE C, SOLID. DESCRIPTION: ORGANIC PEROXIDE TYPE C, SOLID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE D, LIQUID. DESCRIPTION: ORGANIC PEROXIDE TYPE D, LIQUID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE D, SOLID. DESCRIPTION: ORGANIC PEROXIDE TYPE D, SOLID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE E, LIQUID. DESCRIPTION: ORGANIC PEROXIDE TYPE E, LIQUID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE E, SOLID. DESCRIPTION: ORGANIC PEROXIDE TYPE E, SOLID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE F, LIQUID. DESCRIPTION: ORGANIC PEROXIDE TYPE F, LIQUID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE F, SOLID. DESCRIPTION: ORGANIC PEROXIDE TYPE F, SOLID (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE B, LIQUID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE B, LIQUID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE B, SOLID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE B, SOLID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE C, LIQUID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE C, LIQUID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE C, SOLID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE C, SOLID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE D, LIQUID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE D, LIQUID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE D, SOLID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE D, SOLID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE E, LIQUID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE E, LIQUID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE E, SOLID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE E, SOLID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE F, LIQUID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE F, LIQUID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* ORGANIC PEROXIDE TYPE F, SOLID, TEMPERATURE CONTROLLED. DESCRIPTION: ORGANIC PEROXIDE TYPE F, SOLID, TEMPERATURE CONTROLLED (Class 5.2) */ +/* Oxidizing solid, water-reactive, n.o.s.. DESCRIPTION: Oxidizing solid, water-reactive, n.o.s. (Class 5.1) */ +/* TOXIC LIQUID, OXIDIZING, N.O.S.. DESCRIPTION: TOXIC LIQUID, OXIDIZING, N.O.S. (Class 6.1) */ +/* TOXIC LIQUID, WATER-REACTIVE, N.O.S.. DESCRIPTION: TOXIC LIQUID, WATER-REACTIVE, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, SELF-HEATING, N.O.S.. DESCRIPTION: TOXIC SOLID, SELF-HEATING, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, WATER-REACTIVE, N.O.S.. DESCRIPTION: TOXIC SOLID, WATER-REACTIVE, N.O.S. (Class 6.1) */ +/* SELF-HEATING SOLID, CORROSIVE, ORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING SOLID, CORROSIVE, ORGANIC, N.O.S. (Class 4.2) */ +/* Self-heating solid, oxidizing, n.o.s.. DESCRIPTION: Self-heating solid, oxidizing, n.o.s. (Class 4.2) */ +/* SELF-HEATING SOLID, TOXIC, ORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING SOLID, TOXIC, ORGANIC, N.O.S. (Class 4.2) */ +/* WATER-REACTIVE LIQUID, CORROSIVE, N.O.S.. DESCRIPTION: WATER-REACTIVE LIQUID, CORROSIVE, N.O.S. (Class 4.3) */ +/* WATER-REACTIVE LIQUID, TOXIC, N.O.S.. DESCRIPTION: WATER-REACTIVE LIQUID, TOXIC, N.O.S. (Class 4.3) */ +/* WATER-REACTIVE SOLID, CORROSIVE, N.O.S.. DESCRIPTION: WATER-REACTIVE SOLID, CORROSIVE, N.O.S. (Class 4.3) */ +/* Water-reactive solid, flammable, n.o.s.. DESCRIPTION: Water-reactive solid, flammable, n.o.s. (Class 4.3) */ +/* Water-reactive solid, oxidizing, n.o.s.. DESCRIPTION: Water-reactive solid, oxidizing, n.o.s. (Class 4.3) */ +/* WATER-REACTIVE SOLID, TOXIC, N.O.S.. DESCRIPTION: WATER-REACTIVE SOLID, TOXIC, N.O.S. (Class 4.3) */ +/* Water-reactive solid, self-heating, n.o.s.. DESCRIPTION: Water-reactive solid, self-heating, n.o.s. (Class 4.3) */ +/* TRIFLUOROMETHANE, REFRIGERATED LIQUID. DESCRIPTION: TRIFLUOROMETHANE, REFRIGERATED LIQUID (Class 2) */ +/* Oxidizing solid, flammable, n.o.s.. DESCRIPTION: Oxidizing solid, flammable, n.o.s. (Class 5.1) */ +/* ETHYLENE, ACETYLENE AND PROPYLENE MIXTURE, REFRIGERATED LIQUID containing at least 71.5% ethylene with not more than 22.5% acetylene and not more than 6% propylene. DESCRIPTION: ETHYLENE, ACETYLENE AND PROPYLENE MIXTURE, REFRIGERATED LIQUID containing at least 71.5% ethylene with not more than 22.5% acetylene and not more than 6% propylene (Class 2) */ +/* OXIDIZING LIQUID, N.O.S.. DESCRIPTION: OXIDIZING LIQUID, N.O.S. (Class 5.1) */ +/* ALKALOIDS, LIQUID, N.O.S. or ALKALOID SALTS, LIQUID, N.O.S.. DESCRIPTION: ALKALOIDS, LIQUID, N.O.S. or ALKALOID SALTS, LIQUID, N.O.S. (Class 6.1) */ +/* ANTIMONY COMPOUND, INORGANIC, LIQUID, N.O.S.. DESCRIPTION: ANTIMONY COMPOUND, INORGANIC, LIQUID, N.O.S. (Class 6.1) */ +/* DISINFECTANT, LIQUID, TOXIC, N.O.S. (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: DISINFECTANT, LIQUID, TOXIC, N.O.S. (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* DYE, SOLID, TOXIC, N.O.S. or DYE INTERMEDIATE, SOLID, TOXIC, N.O.S.. DESCRIPTION: DYE, SOLID, TOXIC, N.O.S. or DYE INTERMEDIATE, SOLID, TOXIC, N.O.S. (Class 6.1) */ +/* NICOTINE COMPOUND, LIQUID, N.O.S. or NICOTINE PREPARATION, LIQUID, N.O.S.. DESCRIPTION: NICOTINE COMPOUND, LIQUID, N.O.S. or NICOTINE PREPARATION, LIQUID, N.O.S. (Class 6.1) */ +/* ALKYLPHENOLS, LIQUID, N.O.S. (including C2-C12 homologues). DESCRIPTION: ALKYLPHENOLS, LIQUID, N.O.S. (including C2-C12 homologues) (Class 8) */ +/* ORGANOTIN COMPOUND, SOLID, N.O.S.. DESCRIPTION: ORGANOTIN COMPOUND, SOLID, N.O.S. (Class 6.1) */ +/* DYE, SOLID, CORROSIVE, N.O.S. or DYE INTERMEDIATE, SOLID, CORROSIVE, N.O.S.. DESCRIPTION: DYE, SOLID, CORROSIVE, N.O.S. or DYE INTERMEDIATE, SOLID, CORROSIVE, N.O.S. (Class 8) */ +/* WATER-REACTIVE LIQUID, N.O.S.. DESCRIPTION: WATER-REACTIVE LIQUID, N.O.S. (Class 4.3) */ +/* HYDROGEN PEROXIDE AND PEROXYACETIC ACID MIXTURE with acid(s), water and not more than 5% peroxyacetic acid, STABILIZED. DESCRIPTION: HYDROGEN PEROXIDE AND PEROXYACETIC ACID MIXTURE with acid(s), water and not more than 5% peroxyacetic acid, STABILIZED (Class 5.1) */ +/* DEVICES, SMALL, HYDROCARBON GAS POWERED or HYDROCARBON GAS REFILLS FOR SMALL DEVICES with release device. DESCRIPTION: DEVICES, SMALL, HYDROCARBON GAS POWERED or HYDROCARBON GAS REFILLS FOR SMALL DEVICES with release device (Class 2) */ +/* POLYHALOGENATED BIPHENYLS, LIQUID or POLYHALOGENATED TERPHENYLS, LIQUID. DESCRIPTION: POLYHALOGENATED BIPHENYLS, LIQUID or POLYHALOGENATED TERPHENYLS, LIQUID (Class 9) */ +/* POLYHALOGENATED BIPHENYLS, SOLID or POLYHALOGENATED TERPHENYLS, SOLID. DESCRIPTION: POLYHALOGENATED BIPHENYLS, SOLID or POLYHALOGENATED TERPHENYLS, SOLID (Class 9) */ +/* PERFLUORO(METHYL VINYL ETHER). DESCRIPTION: PERFLUORO(METHYL VINYL ETHER) (Class 2) */ +/* PERFLUORO(ETHYL VINYL ETHER). DESCRIPTION: PERFLUORO(ETHYL VINYL ETHER) (Class 2) */ +/* PENTACHLOROPHENOL. DESCRIPTION: PENTACHLOROPHENOL (Class 6.1) */ +/* COMPRESSED GAS, OXIDIZING, N.O.S.. DESCRIPTION: COMPRESSED GAS, OXIDIZING, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, OXIDIZING, N.O.S.. DESCRIPTION: LIQUEFIED GAS, OXIDIZING, N.O.S. (Class 2) */ +/* GAS, REFRIGERATED LIQUID, N.O.S.. DESCRIPTION: GAS, REFRIGERATED LIQUID, N.O.S. (Class 2) */ +/* 1,1,1,2-TETRAFLUOROETHANE (REFRIGERANT GAS R 134a). DESCRIPTION: 1,1,1,2-TETRAFLUOROETHANE (REFRIGERANT GAS R 134a) (Class 2) */ +/* LIQUEFIED GAS, TOXIC, FLAMMABLE, N.O.S.. DESCRIPTION: LIQUEFIED GAS, TOXIC, FLAMMABLE, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, FLAMMABLE, N.O.S.. DESCRIPTION: LIQUEFIED GAS, FLAMMABLE, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, TOXIC, N.O.S.. DESCRIPTION: LIQUEFIED GAS, TOXIC, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, N.O.S.. DESCRIPTION: LIQUEFIED GAS, N.O.S. (Class 2) */ +/* ARTICLES, PRESSURIZED, PNEUMATIC or HYDRAULIC (containing non-flammable gas). DESCRIPTION: ARTICLES, PRESSURIZED, PNEUMATIC or HYDRAULIC (containing non-flammable gas) (Class 2) */ +/* AIRCRAFT HYDRAULIC POWER UNIT FUEL TANK (containing a mixture of anhydrous hydrazine and methylhydrazine) (M86 fuel). DESCRIPTION: AIRCRAFT HYDRAULIC POWER UNIT FUEL TANK (containing a mixture of anhydrous hydrazine and methylhydrazine) (M86 fuel) (Class 3) */ +/* Engines, internal combustion, including when fitted in machinery or vehicles. DESCRIPTION: Engines, internal combustion, including when fitted in machinery or vehicles (Class 9) */ +/* GAS SAMPLE, NON-PRESSURIZED, FLAMMABLE, N.O.S., not refrigerated liquid. DESCRIPTION: GAS SAMPLE, NON-PRESSURIZED, FLAMMABLE, N.O.S., not refrigerated liquid (Class 2) */ +/* GAS SAMPLE, NON-PRESSURIZED, TOXIC, FLAMMABLE, N.O.S., not refrigerated liquid. DESCRIPTION: GAS SAMPLE, NON-PRESSURIZED, TOXIC, FLAMMABLE, N.O.S., not refrigerated liquid (Class 2) */ +/* GAS SAMPLE, NON-PRESSURIZED, TOXIC, N.O.S., not refrigerated liquid. DESCRIPTION: GAS SAMPLE, NON-PRESSURIZED, TOXIC, N.O.S., not refrigerated liquid (Class 2) */ +/* ALUMINIUM SMELTING BY-PRODUCTS or ALUMINIUM REMELTING BY-PRODUCTS. DESCRIPTION: ALUMINIUM SMELTING BY-PRODUCTS or ALUMINIUM REMELTING BY-PRODUCTS (Class 4.3) */ +/* Battery-powered vehicle or Battery-powered equipment. DESCRIPTION: Battery-powered vehicle or Battery-powered equipment (Class 9) */ +/* TOXINS, EXTRACTED FROM LIVING SOURCES, LIQUID, N.O.S.. DESCRIPTION: TOXINS, EXTRACTED FROM LIVING SOURCES, LIQUID, N.O.S. (Class 6.1) */ +/* TITANIUM DISULPHIDE. DESCRIPTION: TITANIUM DISULPHIDE (Class 4.2) */ +/* SOLIDS CONTAINING FLAMMABLE LIQUID, N.O.S.. DESCRIPTION: SOLIDS CONTAINING FLAMMABLE LIQUID, N.O.S. (Class 4.1) */ +/* FLAMMABLE SOLID, ORGANIC, MOLTEN, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, ORGANIC, MOLTEN, N.O.S. (Class 4.1) */ +/* FLAMMABLE SOLID, INORGANIC, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, INORGANIC, N.O.S. (Class 4.1) */ +/* FLAMMABLE SOLID, TOXIC, INORGANIC, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, TOXIC, INORGANIC, N.O.S. (Class 4.1) */ +/* FLAMMABLE SOLID, CORROSIVE, INORGANIC, N.O.S.. DESCRIPTION: FLAMMABLE SOLID, CORROSIVE, INORGANIC, N.O.S. (Class 4.1) */ +/* METAL SALTS OF ORGANIC COMPOUNDS, FLAMMABLE, N.O.S.. DESCRIPTION: METAL SALTS OF ORGANIC COMPOUNDS, FLAMMABLE, N.O.S. (Class 4.1) */ +/* METAL HYDRIDES, FLAMMABLE, N.O.S.. DESCRIPTION: METAL HYDRIDES, FLAMMABLE, N.O.S. (Class 4.1) */ +/* SELF-HEATING LIQUID, ORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING LIQUID, ORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING LIQUID, TOXIC, ORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING LIQUID, TOXIC, ORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING LIQUID, CORROSIVE, ORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING LIQUID, CORROSIVE, ORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING LIQUID, INORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING LIQUID, INORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING LIQUID, TOXIC, INORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING LIQUID, TOXIC, INORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING LIQUID, CORROSIVE, INORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING LIQUID, CORROSIVE, INORGANIC, N.O.S. (Class 4.2) */ +/* METAL POWDER, SELF-HEATING, N.O.S.. DESCRIPTION: METAL POWDER, SELF-HEATING, N.O.S. (Class 4.2) */ +/* SELF-HEATING SOLID, INORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING SOLID, INORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING SOLID, TOXIC, INORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING SOLID, TOXIC, INORGANIC, N.O.S. (Class 4.2) */ +/* SELF-HEATING SOLID, CORROSIVE, INORGANIC, N.O.S.. DESCRIPTION: SELF-HEATING SOLID, CORROSIVE, INORGANIC, N.O.S. (Class 4.2) */ +/* PYROPHORIC LIQUID, INORGANIC, N.O.S.. DESCRIPTION: PYROPHORIC LIQUID, INORGANIC, N.O.S. (Class 4.2) */ +/* PYROPHORIC SOLID, INORGANIC, N.O.S.. DESCRIPTION: PYROPHORIC SOLID, INORGANIC, N.O.S. (Class 4.2) */ +/* PYROPHORIC ORGANOMETALLIC COMPOUND, WATER-REACTIVE, N.O.S., liquid. DESCRIPTION: PYROPHORIC ORGANOMETALLIC COMPOUND, WATER-REACTIVE, N.O.S., liquid (Class 4.2) */ +/* ALKALINE EARTH METAL ALCOHOLATES, N.O.S.. DESCRIPTION: ALKALINE EARTH METAL ALCOHOLATES, N.O.S. (Class 4.2) */ +/* ALKALI METAL ALCOHOLATES, SELF-HEATING, CORROSIVE, N.O.S.. DESCRIPTION: ALKALI METAL ALCOHOLATES, SELF-HEATING, CORROSIVE, N.O.S. (Class 4.2) */ +/* ORGANOMETALLIC COMPOUND or ORGANOMETALLIC COMPOUND SOLUTION or ORGANOMETALLIC COMPOUND DISPERSION, WATER-REACTIVE, FLAMMABLE, N.O.S.. DESCRIPTION: ORGANOMETALLIC COMPOUND or ORGANOMETALLIC COMPOUND SOLUTION or ORGANOMETALLIC COMPOUND DISPERSION, WATER-REACTIVE, FLAMMABLE, N.O.S. (Class 4.3) */ +/* METALLIC SUBSTANCE, WATER-REACTIVE, N.O.S.. DESCRIPTION: METALLIC SUBSTANCE, WATER-REACTIVE, N.O.S. (Class 4.3) */ +/* METALLIC SUBSTANCE, WATER-REACTIVE, SELF-HEATING, N.O.S.. DESCRIPTION: METALLIC SUBSTANCE, WATER-REACTIVE, SELF-HEATING, N.O.S. (Class 4.3) */ +/* CHLORATES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: CHLORATES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* PERCHLORATES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: PERCHLORATES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* HYPOCHLORITES, INORGANIC, N.O.S.. DESCRIPTION: HYPOCHLORITES, INORGANIC, N.O.S. (Class 5.1) */ +/* BROMATES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: BROMATES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* PERMANGANATES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: PERMANGANATES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* PERSULPHATES, INORGANIC, N.O.S.. DESCRIPTION: PERSULPHATES, INORGANIC, N.O.S. (Class 5.1) */ +/* PERSULPHATES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: PERSULPHATES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* NITRATES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: NITRATES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* NITRITES, INORGANIC, AQUEOUS SOLUTION, N.O.S.. DESCRIPTION: NITRITES, INORGANIC, AQUEOUS SOLUTION, N.O.S. (Class 5.1) */ +/* PENTAFLUOROETHANE (REFRIGERANT GAS R 125). DESCRIPTION: PENTAFLUOROETHANE (REFRIGERANT GAS R 125) (Class 2) */ +/* SELF-REACTIVE LIQUID TYPE B. DESCRIPTION: SELF-REACTIVE LIQUID TYPE B (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE B. DESCRIPTION: SELF-REACTIVE SOLID TYPE B (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE C. DESCRIPTION: SELF-REACTIVE LIQUID TYPE C (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE C. DESCRIPTION: SELF-REACTIVE SOLID TYPE C (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE D. DESCRIPTION: SELF-REACTIVE LIQUID TYPE D (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE D. DESCRIPTION: SELF-REACTIVE SOLID TYPE D (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE E. DESCRIPTION: SELF-REACTIVE LIQUID TYPE E (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE E. DESCRIPTION: SELF-REACTIVE SOLID TYPE E (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE F. DESCRIPTION: SELF-REACTIVE LIQUID TYPE F (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE F. DESCRIPTION: SELF-REACTIVE SOLID TYPE F (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE B, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE LIQUID TYPE B, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE B, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE SOLID TYPE B, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE C, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE LIQUID TYPE C, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE C, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE SOLID TYPE C, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE D, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE LIQUID TYPE D, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE D, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE SOLID TYPE D, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE E, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE LIQUID TYPE E, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE E, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE SOLID TYPE E, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE LIQUID TYPE F, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE LIQUID TYPE F, TEMPERATURE CONTROLLED (Class 4.1) */ +/* SELF-REACTIVE SOLID TYPE F, TEMPERATURE CONTROLLED. DESCRIPTION: SELF-REACTIVE SOLID TYPE F, TEMPERATURE CONTROLLED (Class 4.1) */ +/* 2-BROMO-2-NITROPROPANE-1,3-DIOL. DESCRIPTION: 2-BROMO-2-NITROPROPANE-1,3-DIOL (Class 4.1) */ +/* AZODICARBONAMIDE. DESCRIPTION: AZODICARBONAMIDE (Class 4.1) */ +/* SOLIDS CONTAINING TOXIC LIQUID, N.O.S.. DESCRIPTION: SOLIDS CONTAINING TOXIC LIQUID, N.O.S. (Class 6.1) */ +/* SOLIDS CONTAINING CORROSIVE LIQUID, N.O.S.. DESCRIPTION: SOLIDS CONTAINING CORROSIVE LIQUID, N.O.S. (Class 8) */ +/* GENETICALLY MODIFIED MICRO-ORGANISMS. DESCRIPTION: GENETICALLY MODIFIED MICRO-ORGANISMS (Class 9) */ +/* METHANESULPHONYL CHLORIDE. DESCRIPTION: METHANESULPHONYL CHLORIDE (Class 6.1) */ +/* SODIUM PEROXOBORATE, ANHYDROUS. DESCRIPTION: SODIUM PEROXOBORATE, ANHYDROUS (Class 5.1) */ +/* MEDICINE, LIQUID, FLAMMABLE, TOXIC, N.O.S.. DESCRIPTION: MEDICINE, LIQUID, FLAMMABLE, TOXIC, N.O.S. (Class 3) */ +/* MEDICINE, SOLID, TOXIC, N.O.S.. DESCRIPTION: MEDICINE, SOLID, TOXIC, N.O.S. (Class 6.1) */ +/* CHLOROACETIC ACID, MOLTEN. DESCRIPTION: CHLOROACETIC ACID, MOLTEN (Class 6.1) */ +/* ISOSORBIDE-5-MONONITRATE. DESCRIPTION: ISOSORBIDE-5-MONONITRATE (Class 4.1) */ +/* DIFLUOROMETHANE (REFRIGERANT GAS R 32). DESCRIPTION: DIFLUOROMETHANE (REFRIGERANT GAS R 32) (Class 2) */ +/* DISODIUM TRIOXOSILICATE. DESCRIPTION: DISODIUM TRIOXOSILICATE (Class 8) */ +/* TRIBUTYLPHOSPHANE. DESCRIPTION: TRIBUTYLPHOSPHANE (Class 4.2) */ +/* tert-BUTYL HYPOCHLORITE. DESCRIPTION: tert-BUTYL HYPOCHLORITE (Class 4.2) */ +/* ELEVATED TEMPERATURE LIQUID, FLAMMABLE, N.O.S. with flash point above 61 */ +/* ºC, at or above its flash point. DESCRIPTION: ELEVATED TEMPERATURE LIQUID, FLAMMABLE, N.O.S. with flash point above 61ºC, at or above its flash point (Class 3) */ +/* ELEVATED TEMPERATURE LIQUID, N.O.S., at or above 100 */ +/* ºC and below its flash point (including molten metals, molten salts, etc.). DESCRIPTION: ELEVATED TEMPERATURE LIQUID, N.O.S., at or above 100ºC and below its flash point (including molten metals, molten salts, etc.) (Class 9) */ +/* ELEVATED TEMPERATURE SOLID, N.O.S., at or above 240 */ +/* ºC. DESCRIPTION: ELEVATED TEMPERATURE SOLID, N.O.S., at or above 240ºC (Class 9) */ +/* AMINES, SOLID, CORROSIVE, N.O.S. or POLYAMINES, SOLID, CORROSIVE, N.O.S.. DESCRIPTION: AMINES, SOLID, CORROSIVE, N.O.S. or POLYAMINES, SOLID, CORROSIVE, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, ACIDIC, INORGANIC, N.O.S.. DESCRIPTION: CORROSIVE SOLID, ACIDIC, INORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, ACIDIC, ORGANIC, N.O.S.. DESCRIPTION: CORROSIVE SOLID, ACIDIC, ORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, BASIC, INORGANIC, N.O.S.. DESCRIPTION: CORROSIVE SOLID, BASIC, INORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE SOLID, BASIC, ORGANIC, N.O.S.. DESCRIPTION: CORROSIVE SOLID, BASIC, ORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, ACIDIC, INORGANIC, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, ACIDIC, INORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, ACIDIC, ORGANIC, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, ACIDIC, ORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, BASIC, INORGANIC, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, BASIC, INORGANIC, N.O.S. (Class 8) */ +/* CORROSIVE LIQUID, BASIC, ORGANIC, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, BASIC, ORGANIC, N.O.S. (Class 8) */ +/* AIR BAG INFLATORS, pyrotechnic or AIR BAG MODULES, pyrotechnic or SEAT-BELT PRETENSIONERS, pyrotechnic. DESCRIPTION: AIR BAG INFLATORS, pyrotechnic or AIR BAG MODULES, pyrotechnic or SEAT-BELT PRETENSIONERS, pyrotechnic (Class 9) */ +/* POLYESTER RESIN KIT. DESCRIPTION: POLYESTER RESIN KIT (Class 3) */ +/* NITROCELLULOSE MEMBRANE FILTERS. DESCRIPTION: NITROCELLULOSE MEMBRANE FILTERS (Class 4.1) */ +/* ETHERS, N.O.S.. DESCRIPTION: ETHERS, N.O.S. (Class 3) */ +/* ESTERS, N.O.S.. DESCRIPTION: ESTERS, N.O.S. (Class 3) */ +/* NITRILES, FLAMMABLE, TOXIC, N.O.S. (flash point less than 23 */ +/* ºC). DESCRIPTION: NITRILES, FLAMMABLE, TOXIC, N.O.S. (flash point less than 23ºC) (Class 3) */ +/* ALCOHOLATES SOLUTION, N.O.S., in alcohol (flash point less than 23 */ +/* ºC). DESCRIPTION: ALCOHOLATES SOLUTION, N.O.S., in alcohol (flash point less than 23ºC) (Class 3) */ +/* NITRILES, TOXIC, FLAMMABLE, N.O.S. (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: NITRILES, TOXIC, FLAMMABLE, N.O.S. (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* NITRILES, TOXIC, N.O.S.. DESCRIPTION: NITRILES, TOXIC, N.O.S. (Class 6.1) */ +/* CHLOROFORMATES, TOXIC, CORROSIVE, N.O.S.. DESCRIPTION: CHLOROFORMATES, TOXIC, CORROSIVE, N.O.S. (Class 6.1) */ +/* ORGANOPHOSPHORUS COMPOUND, TOXIC, N.O.S., liquid. DESCRIPTION: ORGANOPHOSPHORUS COMPOUND, TOXIC, N.O.S., liquid (Class 6.1) */ +/* ORGANOPHOSPHORUS COMPOUND, TOXIC, FLAMMABLE, N.O.S.. DESCRIPTION: ORGANOPHOSPHORUS COMPOUND, TOXIC, FLAMMABLE, N.O.S. (Class 6.1) */ +/* ORGANOARSENIC COMPOUND, N.O.S., liquid. DESCRIPTION: ORGANOARSENIC COMPOUND, N.O.S., liquid (Class 6.1) */ +/* METAL CARBONYLS, N.O.S., liquid. DESCRIPTION: METAL CARBONYLS, N.O.S., liquid (Class 6.1) */ +/* ORGANOMETALLIC COMPOUND, TOXIC, N.O.S., liquid. DESCRIPTION: ORGANOMETALLIC COMPOUND, TOXIC, N.O.S., liquid (Class 6.1) */ +/* SELENIUM COMPOUND, N.O.S.. DESCRIPTION: SELENIUM COMPOUND, N.O.S. (Class 6.1) */ +/* TELLURIUM COMPOUND, N.O.S.. DESCRIPTION: TELLURIUM COMPOUND, N.O.S. (Class 6.1) */ +/* VANADIUM COMPOUND, N.O.S.. DESCRIPTION: VANADIUM COMPOUND, N.O.S. (Class 6.1) */ +/* FLAMMABLE LIQUID, TOXIC, CORROSIVE, N.O.S.. DESCRIPTION: FLAMMABLE LIQUID, TOXIC, CORROSIVE, N.O.S. (Class 3) */ +/* TOXIC LIQUID, INORGANIC, N.O.S.. DESCRIPTION: TOXIC LIQUID, INORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, INORGANIC, N.O.S.. DESCRIPTION: TOXIC SOLID, INORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC LIQUID, CORROSIVE, INORGANIC, N.O.S.. DESCRIPTION: TOXIC LIQUID, CORROSIVE, INORGANIC, N.O.S. (Class 6.1) */ +/* TOXIC SOLID, CORROSIVE, INORGANIC, N.O.S.. DESCRIPTION: TOXIC SOLID, CORROSIVE, INORGANIC, N.O.S. (Class 6.1) */ +/* CLINICAL WASTE, UNSPECIFIED, N.O.S. or (BIO) MEDICAL WASTE, N.O.S. or REGULATED MEDICAL WASTE, N.O.S.. DESCRIPTION: CLINICAL WASTE, UNSPECIFIED, N.O.S. or (BIO) MEDICAL WASTE, N.O.S. or REGULATED MEDICAL WASTE, N.O.S. (Class 6.2) */ +/* BATTERIES, CONTAINING SODIUM, or CELLS, CONTAINING SODIUM. DESCRIPTION: BATTERIES, CONTAINING SODIUM, or CELLS, CONTAINING SODIUM (Class 4.3) */ +/* HYDRAZINE,AQUEOUS SOLUTION with not more than 37% hydrazine, by mass. DESCRIPTION: HYDRAZINE,AQUEOUS SOLUTION with not more than 37% hydrazine, by mass (Class 6.1) */ +/* HYDROGEN CYANIDE, SOLUTION IN ALCOHOL with not more than 45% hydrogen cyanide. DESCRIPTION: HYDROGEN CYANIDE, SOLUTION IN ALCOHOL with not more than 45% hydrogen cyanide (Class 6.1) */ +/* HYDROCARBONS, LIQUID, N.O.S.. DESCRIPTION: HYDROCARBONS, LIQUID, N.O.S. (Class 3) */ +/* HEPTAFLUOROPROPANE (REFRIGERANT GAS R 227). DESCRIPTION: HEPTAFLUOROPROPANE (REFRIGERANT GAS R 227) (Class 2) */ +/* ETHYLENE OXIDE AND CHLOROTETRAFLUOROETHANE MIXTURE with not more than 8.8% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND CHLOROTETRAFLUOROETHANE MIXTURE with not more than 8.8% ethylene oxide (Class 2) */ +/* ETHYLENE OXIDE AND PENTAFLUOROETHANE MIXTURE with not more than 7.9% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND PENTAFLUOROETHANE MIXTURE with not more than 7.9% ethylene oxide (Class 2) */ +/* ETHYLENE OXIDE AND TETRAFLUOROETHANE MIXTURE with not more than 5.6% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND TETRAFLUOROETHANE MIXTURE with not more than 5.6% ethylene oxide (Class 2) */ +/* ETHYLENE OXIDE AND CARBON DIOXIDE MIXTURE with more than 87% ethylene oxide. DESCRIPTION: ETHYLENE OXIDE AND CARBON DIOXIDE MIXTURE with more than 87% ethylene oxide (Class 2) */ +/* CORROSIVE LIQUID, SELF-HEATING, N.O.S.. DESCRIPTION: CORROSIVE LIQUID, SELF-HEATING, N.O.S. (Class 8) */ +/* 2-DIMETHYLAMINOETHYL ACRYLATE. DESCRIPTION: 2-DIMETHYLAMINOETHYL ACRYLATE (Class 6.1) */ +/* COMPRESSED GAS, TOXIC, OXIDIZING, N.O.S.. DESCRIPTION: COMPRESSED GAS, TOXIC, OXIDIZING, N.O.S. (Class 2) */ +/* COMPRESSED GAS, TOXIC, CORROSIVE, N.O.S.. DESCRIPTION: COMPRESSED GAS, TOXIC, CORROSIVE, N.O.S. (Class 2) */ +/* COMPRESSED GAS, TOXIC, FLAMMABLE, CORROSIVE, N.O.S.. DESCRIPTION: COMPRESSED GAS, TOXIC, FLAMMABLE, CORROSIVE, N.O.S. (Class 2) */ +/* COMPRESSED GAS, TOXIC, OXIDIZING, CORROSIVE, N.O.S.. DESCRIPTION: COMPRESSED GAS, TOXIC, OXIDIZING, CORROSIVE, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, TOXIC, OXIDIZING, N.O.S.. DESCRIPTION: LIQUEFIED GAS, TOXIC, OXIDIZING, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, TOXIC, CORROSIVE, N.O.S.. DESCRIPTION: LIQUEFIED GAS, TOXIC, CORROSIVE, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, TOXIC, FLAMMABLE, CORROSIVE, N.O.S.. DESCRIPTION: LIQUEFIED GAS, TOXIC, FLAMMABLE, CORROSIVE, N.O.S. (Class 2) */ +/* LIQUEFIED GAS, TOXIC, OXIDIZING, CORROSIVE, N.O.S.. DESCRIPTION: LIQUEFIED GAS, TOXIC, OXIDIZING, CORROSIVE, N.O.S. (Class 2) */ +/* GAS, REFRIGERATED LIQUID, OXIDIZING, N.O.S.. DESCRIPTION: GAS, REFRIGERATED LIQUID, OXIDIZING, N.O.S. (Class 2) */ +/* GAS, REFRIGERATED LIQUID, FLAMMABLE, N.O.S.. DESCRIPTION: GAS, REFRIGERATED LIQUID, FLAMMABLE, N.O.S. (Class 2) */ +/* ORGANIC PIGMENTS, SELF-HEATING. DESCRIPTION: ORGANIC PIGMENTS, SELF-HEATING (Class 4.2) */ +/* PLASTICS MOULDING COMPOUND in dough, sheet or extruded rope form evolving flammable vapour. DESCRIPTION: PLASTICS MOULDING COMPOUND in dough, sheet or extruded rope form evolving flammable vapour (Class 9) */ +/* CHEMICAL SAMPLE, TOXIC, liquid or solid. DESCRIPTION: CHEMICAL SAMPLE, TOXIC, liquid or solid (Class 6.1) */ +/* CHEMICAL KIT or FIRST AID KIT. DESCRIPTION: CHEMICAL KIT or FIRST AID KIT (Class 9) */ +/* 2-AMINO-4,6-DINITROPHENOL, WETTED with not less than 20% water, by mass. DESCRIPTION: 2-AMINO-4,6-DINITROPHENOL, WETTED with not less than 20% water, by mass (Class 4.1) */ +/* AMMONIA SOLUTION, in water, with more than 50% ammonia. DESCRIPTION: AMMONIA SOLUTION, in water, with more than 50% ammonia (Class 2) */ +/* NITROGLYCERIN MIXTURE, DESENSITIZED, SOLID, N.O.S. with more than 2% but not more than 10% nitroglycerin, by mass. DESCRIPTION: NITROGLYCERIN MIXTURE, DESENSITIZED, SOLID, N.O.S. with more than 2% but not more than 10% nitroglycerin, by mass (Class 4.1) */ +/* SODIUM BOROHYDRIDE AND SODIUM HYDROXIDE SOLUTION, with not more than 12% sodium borohydride and not more than 40% sodium hydroxide by mass. DESCRIPTION: SODIUM BOROHYDRIDE AND SODIUM HYDROXIDE SOLUTION, with not more than 12% sodium borohydride and not more than 40% sodium hydroxide by mass (Class 8) */ +/* RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-II), non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-II), non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-III), non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-III), non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE C PACKAGE, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE C PACKAGE, non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-II), FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY (LSA-II), FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY, (LSA-III), FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, LOW SPECIFIC ACTIVITY, (LSA-III), FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, SURFACE CONTAMINATED OBJECTS (SCO-I or SCO-II), FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, SURFACE CONTAMINATED OBJECTS (SCO-I or SCO-II), FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE A PACKAGE, FISSILE, non-special form. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE A PACKAGE, FISSILE, non-special form (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE B(U) PACKAGE, FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE B(U) PACKAGE, FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE B(M) PACKAGE, FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE B(M) PACKAGE, FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE C PACKAGE, FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE C PACKAGE, FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, TRANSPORTED UNDER SPECIAL ARRANGEMENT, FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, TRANSPORTED UNDER SPECIAL ARRANGEMENT, FISSILE (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE A PACKAGE, SPECIAL FORM, non fissile or fissile-excepted. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE A PACKAGE, SPECIAL FORM, non fissile or fissile-excepted (Class 7) */ +/* RADIOACTIVE MATERIAL, TYPE A PACKAGE, SPECIAL FORM, FISSILE. DESCRIPTION: RADIOACTIVE MATERIAL, TYPE A PACKAGE, SPECIAL FORM, FISSILE (Class 7) */ +/* Aviation regulated liquid, n.o.s.. DESCRIPTION: Aviation regulated liquid, n.o.s. (Class 9) */ +/* Aviation regulated solid, n.o.s.. DESCRIPTION: Aviation regulated solid, n.o.s. (Class 9) */ +/* MERCAPTANS, LIQUID, FLAMMABLE, N.O.S. or MERCAPTAN MIXTURE, LIQUID, FLAMMABLE, N.O.S.. DESCRIPTION: MERCAPTANS, LIQUID, FLAMMABLE, N.O.S. or MERCAPTAN MIXTURE, LIQUID, FLAMMABLE, N.O.S. */ +/* REFRIGERANT GAS R 404A. DESCRIPTION: REFRIGERANT GAS R 404A (Class 2) */ +/* REFRIGERANT GAS R 407A. DESCRIPTION: REFRIGERANT GAS R 407A (Class 2) */ +/* REFRIGERANT GAS R 407B. DESCRIPTION: REFRIGERANT GAS R 407B (Class 2) */ +/* REFRIGERANT GAS R 407C. DESCRIPTION: REFRIGERANT GAS R 407C (Class 2) */ +/* THIOUREA DIOXIDE. DESCRIPTION: THIOUREA DIOXIDE (Class 4.2) */ +/* XANTHATES. DESCRIPTION: XANTHATES (Class 4.2) */ +/* NITROGLYCERIN MIXTURE, DESENSITIZED, LIQUID, FLAMMABLE, N.O.S. with not more than 30% nitroglycerin, by mass. DESCRIPTION: NITROGLYCERIN MIXTURE, DESENSITIZED, LIQUID, FLAMMABLE, N.O.S. with not more than 30% nitroglycerin, by mass (Class 3) */ +/* PENTAERYTHRITE TETRANITRATE MIXTURE, DESENSITIZED, SOLID, N.O.S. with more than 10% but not more than 20% PETN, by mass. DESCRIPTION: PENTAERYTHRITE TETRANITRATE MIXTURE, DESENSITIZED, SOLID, N.O.S. with more than 10% but not more than 20% PETN, by mass (Class 4.1) */ +/* PHENOXYACETIC ACID DERIVATIVE PESTICIDE, SOLID, TOXIC. DESCRIPTION: PHENOXYACETIC ACID DERIVATIVE PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* PHENOXYACETIC ACID DERIVATIVE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: PHENOXYACETIC ACID DERIVATIVE PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* PHENOXYACETIC ACID DERIVATIVE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: PHENOXYACETIC ACID DERIVATIVE PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* PHENOXYACETIC ACID DERIVATIVE PESTICIDE, LIQUID, TOXIC. DESCRIPTION: PHENOXYACETIC ACID DERIVATIVE PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* PYRETHROID PESTICIDE, SOLID, TOXIC. DESCRIPTION: PYRETHROID PESTICIDE, SOLID, TOXIC (Class 6.1) */ +/* PYRETHROID PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23 */ +/* ºC). DESCRIPTION: PYRETHROID PESTICIDE, LIQUID, FLAMMABLE, TOXIC (flash point less than 23ºC) (Class 3) */ +/* PYRETHROID PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23 */ +/* ºC and 61ºC). DESCRIPTION: PYRETHROID PESTICIDE, LIQUID, TOXIC, FLAMMABLE (flash point between 23ºC and 61ºC) (Class 6.1) */ +/* PYRETHROID PESTICIDE, LIQUID, TOXIC. DESCRIPTION: PYRETHROID PESTICIDE, LIQUID, TOXIC (Class 6.1) */ +/* AIR BAG INFLATORS, COMPRESSED GAS or AIR BAG MODULES, COMPRESSED GAS or SEAT-BELT PRETENSIONERS, COMPRESSED GAS. DESCRIPTION: AIR BAG INFLATORS, COMPRESSED GAS or AIR BAG MODULES, COMPRESSED GAS or SEAT-BELT PRETENSIONERS, COMPRESSED GAS (Class 2) */ +/* INSECTICIDE GAS, FLAMMABLE, N.O.S.. DESCRIPTION: INSECTICIDE GAS, FLAMMABLE, N.O.S. (Class 2) */ +/* INSECTICIDE GAS, TOXIC, FLAMMABLE, N.O.S.. DESCRIPTION: INSECTICIDE GAS, TOXIC, FLAMMABLE, N.O.S. (Class 2) */ +/* OXYGEN GENERATOR, CHEMICAL. DESCRIPTION: OXYGEN GENERATOR, CHEMICAL (Class 5.1) */ +/* NITROGLYCERIN MIXTURE, DESENSITIZED, LIQUID, N.O.S. with not more than 30% nitroglycerin, by mass. DESCRIPTION: NITROGLYCERIN MIXTURE, DESENSITIZED, LIQUID, N.O.S. with not more than 30% nitroglycerin, by mass (Class 3) */ +/* REFRIGERATING MACHINES containing flammable, non-toxic, liquefied gas. DESCRIPTION: REFRIGERATING MACHINES containing flammable, non-toxic, liquefied gas (Class 2) */ +type enumerated UNDGType +{ + x0004, + x0005, + x0006, + x0007, + x0009, + x0010, + x0012, + x0014, + x0015, + x0016, + x0018, + x0019, + x0020, + x0021, + x0027, + x0028, + x0029, + x0030, + x0033, + x0034, + x0035, + x0037, + x0038, + x0039, + x0042, + x0043, + x0044, + x0048, + x0049, + x0050, + x0054, + x0055, + x0056, + x0059, + x0060, + x0065, + x0066, + x0070, + x0072, + x0073, + x0074, + x0075, + x0076, + x0077, + x0078, + x0079, + x0081, + x0082, + x0083, + x0084, + x0092, + x0093, + x0094, + x0099, + x0101, + x0102, + x0103, + x0104, + x0105, + x0106, + x0107, + x0110, + x0113, + x0114, + x0118, + x0121, + x0124, + x0129, + x0130, + x0131, + x0132, + x0133, + x0135, + x0136, + x0137, + x0138, + x0143, + x0144, + x0146, + x0147, + x0150, + x0151, + x0153, + x0154, + x0155, + x0159, + x0160, + x0161, + x0167, + x0168, + x0169, + x0171, + x0173, + x0174, + x0180, + x0181, + x0182, + x0183, + x0186, + x0190, + x0191, + x0192, + x0193, + x0194, + x0195, + x0196, + x0197, + x0204, + x0207, + x0208, + x0209, + x0212, + x0213, + x0214, + x0215, + x0216, + x0217, + x0218, + x0219, + x0220, + x0221, + x0222, + x0223, + x0224, + x0225, + x0226, + x0234, + x0235, + x0236, + x0237, + x0238, + x0240, + x0241, + x0242, + x0243, + x0244, + x0245, + x0246, + x0247, + x0248, + x0249, + x0250, + x0254, + x0255, + x0257, + x0266, + x0267, + x0268, + x0271, + x0272, + x0275, + x0276, + x0277, + x0278, + x0279, + x0280, + x0281, + x0282, + x0283, + x0284, + x0285, + x0286, + x0287, + x0288, + x0289, + x0290, + x0291, + x0292, + x0293, + x0294, + x0295, + x0296, + x0297, + x0299, + x0300, + x0301, + x0303, + x0305, + x0306, + x0312, + x0313, + x0314, + x0315, + x0316, + x0317, + x0318, + x0319, + x0320, + x0321, + x0322, + x0323, + x0324, + x0325, + x0326, + x0327, + x0328, + x0329, + x0330, + x0331, + x0332, + x0333, + x0334, + x0335, + x0336, + x0337, + x0338, + x0339, + x0340, + x0341, + x0342, + x0343, + x0344, + x0345, + x0346, + x0347, + x0348, + x0349, + x0350, + x0351, + x0352, + x0353, + x0354, + x0355, + x0356, + x0357, + x0358, + x0359, + x0360, + x0361, + x0362, + x0363, + x0364, + x0365, + x0366, + x0367, + x0368, + x0369, + x0370, + x0371, + x0372, + x0373, + x0374, + x0375, + x0376, + x0377, + x0378, + x0379, + x0380, + x0381, + x0382, + x0383, + x0384, + x0385, + x0386, + x0387, + x0388, + x0389, + x0390, + x0391, + x0392, + x0393, + x0394, + x0395, + x0396, + x0397, + x0398, + x0399, + x0400, + x0401, + x0402, + x0403, + x0404, + x0405, + x0406, + x0407, + x0408, + x0409, + x0410, + x0411, + x0412, + x0413, + x0414, + x0415, + x0417, + x0418, + x0419, + x0420, + x0421, + x0424, + x0425, + x0426, + x0427, + x0428, + x0429, + x0430, + x0431, + x0432, + x0433, + x0434, + x0435, + x0436, + x0437, + x0438, + x0439, + x0440, + x0441, + x0442, + x0443, + x0444, + x0445, + x0446, + x0447, + x0448, + x0449, + x0450, + x0451, + x0452, + x0453, + x0454, + x0455, + x0456, + x0457, + x0458, + x0459, + x0460, + x0461, + x0462, + x0463, + x0464, + x0465, + x0466, + x0467, + x0468, + x0469, + x0470, + x0471, + x0472, + x0473, + x0474, + x0475, + x0476, + x0477, + x0478, + x0479, + x0480, + x0481, + x0482, + x0483, + x0484, + x0485, + x0486, + x0487, + x0488, + x0489, + x0490, + x0491, + x0492, + x0493, + x0494, + x0495, + x0496, + x0497, + x0498, + x0499, + x0500, + x0501, + x0502, + x0503, + x0504, + x1001, + x1002, + x1003, + x1005, + x1006, + x1008, + x1009, + x1010, + x1011, + x1012, + x1013, + x1014, + x1015, + x1016, + x1017, + x1018, + x1020, + x1021, + x1022, + x1023, + x1026, + x1027, + x1028, + x1029, + x1030, + x1032, + x1033, + x1035, + x1036, + x1037, + x1038, + x1039, + x1040, + x1041, + x1043, + x1044, + x1045, + x1046, + x1048, + x1049, + x1050, + x1051, + x1052, + x1053, + x1055, + x1056, + x1057, + x1058, + x1060, + x1061, + x1062, + x1063, + x1064, + x1065, + x1066, + x1067, + x1069, + x1070, + x1071, + x1072, + x1073, + x1075, + x1076, + x1077, + x1078, + x1079, + x1080, + x1081, + x1082, + x1083, + x1085, + x1086, + x1087, + x1088, + x1089, + x1090, + x1091, + x1092, + x1093, + x1098, + x1099, + x1100, + x1104, + x1105, + x1106, + x1107, + x1108, + x1109, + x1110, + x1111, + x1112, + x1113, + x1114, + x1120, + x1123, + x1125, + x1126, + x1127, + x1128, + x1129, + x1130, + x1131, + x1133, + x1134, + x1135, + x1136, + x1139, + x1143, + x1144, + x1145, + x1146, + x1147, + x1148, + x1149, + x1150, + x1152, + x1153, + x1154, + x1155, + x1156, + x1157, + x1158, + x1159, + x1160, + x1161, + x1162, + x1163, + x1164, + x1165, + x1166, + x1167, + x1169, + x1170, + x1171, + x1172, + x1173, + x1175, + x1176, + x1177, + x1178, + x1179, + x1180, + x1181, + x1182, + x1183, + x1184, + x1185, + x1188, + x1189, + x1190, + x1191, + x1192, + x1193, + x1194, + x1195, + x1196, + x1197, + x1198, + x1199, + x1201, + x1202, + x1203, + x1204, + x1206, + x1207, + x1208, + x1210, + x1212, + x1213, + x1214, + x1216, + x1218, + x1219, + x1220, + x1221, + x1222, + x1223, + x1224, + x1228, + x1229, + x1230, + x1231, + x1233, + x1234, + x1235, + x1237, + x1238, + x1239, + x1242, + x1243, + x1244, + x1245, + x1246, + x1247, + x1248, + x1249, + x1250, + x1251, + x1259, + x1261, + x1262, + x1263, + x1264, + x1265, + x1266, + x1267, + x1268, + x1272, + x1274, + x1275, + x1276, + x1277, + x1278, + x1279, + x1280, + x1281, + x1282, + x1286, + x1287, + x1288, + x1289, + x1292, + x1293, + x1294, + x1295, + x1296, + x1297, + x1298, + x1299, + x1300, + x1301, + x1302, + x1303, + x1304, + x1305, + x1306, + x1307, + x1308, + x1309, + x1310, + x1312, + x1313, + x1314, + x1318, + x1320, + x1321, + x1322, + x1323, + x1324, + x1325, + x1326, + x1327, + x1328, + x1330, + x1331, + x1332, + x1333, + x1334, + x1336, + x1337, + x1338, + x1339, + x1340, + x1341, + x1343, + x1344, + x1345, + x1346, + x1347, + x1348, + x1349, + x1350, + x1352, + x1353, + x1354, + x1355, + x1356, + x1357, + x1358, + x1360, + x1361, + x1362, + x1363, + x1364, + x1365, + x1366, + x1369, + x1370, + x1373, + x1374, + x1376, + x1378, + x1379, + x1380, + x1381, + x1382, + x1383, + x1384, + x1385, + x1386, + x1389, + x1390, + x1391, + x1392, + x1393, + x1394, + x1395, + x1396, + x1397, + x1398, + x1400, + x1401, + x1402, + x1403, + x1404, + x1405, + x1407, + x1408, + x1409, + x1410, + x1411, + x1413, + x1414, + x1415, + x1417, + x1418, + x1419, + x1420, + x1421, + x1422, + x1423, + x1426, + x1427, + x1428, + x1431, + x1432, + x1433, + x1435, + x1436, + x1437, + x1438, + x1439, + x1442, + x1444, + x1445, + x1446, + x1447, + x1448, + x1449, + x1450, + x1451, + x1452, + x1453, + x1454, + x1455, + x1456, + x1457, + x1458, + x1459, + x1461, + x1462, + x1463, + x1465, + x1466, + x1467, + x1469, + x1470, + x1471, + x1472, + x1473, + x1474, + x1475, + x1476, + x1477, + x1479, + x1481, + x1482, + x1483, + x1484, + x1485, + x1486, + x1487, + x1488, + x1489, + x1490, + x1491, + x1492, + x1493, + x1494, + x1495, + x1496, + x1498, + x1499, + x1500, + x1502, + x1503, + x1504, + x1505, + x1506, + x1507, + x1508, + x1509, + x1510, + x1511, + x1512, + x1513, + x1514, + x1515, + x1516, + x1517, + x1541, + x1544, + x1545, + x1546, + x1547, + x1548, + x1549, + x1550, + x1551, + x1553, + x1554, + x1555, + x1556, + x1557, + x1558, + x1559, + x1560, + x1561, + x1562, + x1564, + x1565, + x1566, + x1567, + x1569, + x1570, + x1571, + x1572, + x1573, + x1574, + x1575, + x1577, + x1578, + x1579, + x1580, + x1581, + x1582, + x1583, + x1585, + x1586, + x1587, + x1588, + x1589, + x1590, + x1591, + x1593, + x1594, + x1595, + x1596, + x1597, + x1598, + x1599, + x1600, + x1601, + x1602, + x1603, + x1604, + x1605, + x1606, + x1607, + x1608, + x1611, + x1612, + x1613, + x1614, + x1616, + x1617, + x1618, + x1620, + x1621, + x1622, + x1623, + x1624, + x1625, + x1626, + x1627, + x1629, + x1630, + x1631, + x1634, + x1636, + x1637, + x1638, + x1639, + x1640, + x1641, + x1642, + x1643, + x1644, + x1645, + x1646, + x1647, + x1648, + x1649, + x1650, + x1651, + x1652, + x1653, + x1654, + x1655, + x1656, + x1657, + x1658, + x1659, + x1660, + x1661, + x1662, + x1663, + x1664, + x1665, + x1669, + x1670, + x1671, + x1672, + x1673, + x1674, + x1677, + x1678, + x1679, + x1680, + x1683, + x1684, + x1685, + x1686, + x1687, + x1688, + x1689, + x1690, + x1691, + x1692, + x1693, + x1694, + x1695, + x1697, + x1698, + x1699, + x1700, + x1701, + x1702, + x1704, + x1707, + x1708, + x1709, + x1710, + x1711, + x1712, + x1713, + x1714, + x1715, + x1716, + x1717, + x1718, + x1719, + x1722, + x1723, + x1724, + x1725, + x1726, + x1727, + x1728, + x1729, + x1730, + x1731, + x1732, + x1733, + x1736, + x1737, + x1738, + x1739, + x1740, + x1741, + x1742, + x1743, + x1744, + x1745, + x1746, + x1747, + x1748, + x1749, + x1750, + x1751, + x1752, + x1753, + x1754, + x1755, + x1756, + x1757, + x1758, + x1759, + x1760, + x1761, + x1762, + x1763, + x1764, + x1765, + x1766, + x1767, + x1768, + x1769, + x1770, + x1771, + x1773, + x1774, + x1775, + x1776, + x1777, + x1778, + x1779, + x1780, + x1781, + x1782, + x1783, + x1784, + x1786, + x1787, + x1788, + x1789, + x1790, + x1791, + x1792, + x1793, + x1794, + x1796, + x1798, + x1799, + x1800, + x1801, + x1802, + x1803, + x1804, + x1805, + x1806, + x1807, + x1808, + x1809, + x1810, + x1811, + x1812, + x1813, + x1814, + x1815, + x1816, + x1817, + x1818, + x1819, + x1823, + x1824, + x1825, + x1826, + x1827, + x1828, + x1829, + x1830, + x1831, + x1832, + x1833, + x1834, + x1835, + x1836, + x1837, + x1838, + x1839, + x1840, + x1841, + x1843, + x1845, + x1846, + x1847, + x1848, + x1849, + x1851, + x1854, + x1855, + x1858, + x1859, + x1860, + x1862, + x1863, + x1865, + x1866, + x1868, + x1869, + x1870, + x1871, + x1872, + x1873, + x1884, + x1885, + x1886, + x1887, + x1888, + x1889, + x1891, + x1892, + x1894, + x1895, + x1897, + x1898, + x1902, + x1903, + x1905, + x1906, + x1907, + x1908, + x1910, + x1911, + x1912, + x1913, + x1914, + x1915, + x1916, + x1917, + x1918, + x1919, + x1920, + x1921, + x1922, + x1923, + x1928, + x1929, + x1931, + x1932, + x1935, + x1938, + x1939, + x1940, + x1941, + x1942, + x1944, + x1945, + x1950, + x1951, + x1952, + x1953, + x1954, + x1955, + x1956, + x1957, + x1958, + x1959, + x1961, + x1962, + x1963, + x1964, + x1965, + x1966, + x1967, + x1968, + x1969, + x1970, + x1971, + x1972, + x1973, + x1974, + x1975, + x1976, + x1977, + x1978, + x1979, + x1980, + x1981, + x1982, + x1983, + x1984, + x1986, + x1987, + x1988, + x1989, + x1990, + x1991, + x1992, + x1993, + x1994, + x1999, + x2000, + x2001, + x2002, + x2003, + x2004, + x2005, + x2006, + x2008, + x2009, + x2010, + x2011, + x2012, + x2013, + x2014, + x2015, + x2016, + x2017, + x2018, + x2019, + x2020, + x2021, + x2022, + x2023, + x2024, + x2025, + x2026, + x2027, + x2028, + x2029, + x2030, + x2031, + x2032, + x2033, + x2034, + x2035, + x2036, + x2037, + x2038, + x2044, + x2045, + x2046, + x2047, + x2048, + x2049, + x2050, + x2051, + x2052, + x2053, + x2054, + x2055, + x2056, + x2057, + x2058, + x2059, + x2067, + x2068, + x2069, + x2070, + x2071, + x2072, + x2073, + x2074, + x2075, + x2076, + x2077, + x2078, + x2079, + x2186, + x2187, + x2188, + x2189, + x2190, + x2191, + x2192, + x2193, + x2194, + x2195, + x2196, + x2197, + x2198, + x2199, + x2200, + x2201, + x2202, + x2203, + x2204, + x2205, + x2206, + x2208, + x2209, + x2210, + x2211, + x2212, + x2213, + x2214, + x2215, + x2216, + x2217, + x2218, + x2219, + x2222, + x2224, + x2225, + x2226, + x2227, + x2232, + x2233, + x2234, + x2235, + x2236, + x2237, + x2238, + x2239, + x2240, + x2241, + x2242, + x2243, + x2244, + x2245, + x2246, + x2247, + x2248, + x2249, + x2250, + x2251, + x2252, + x2253, + x2254, + x2256, + x2257, + x2258, + x2259, + x2260, + x2261, + x2262, + x2263, + x2264, + x2265, + x2266, + x2267, + x2269, + x2270, + x2271, + x2272, + x2273, + x2274, + x2275, + x2276, + x2277, + x2278, + x2279, + x2280, + x2281, + x2282, + x2283, + x2284, + x2285, + x2286, + x2287, + x2288, + x2289, + x2290, + x2291, + x2293, + x2294, + x2295, + x2296, + x2297, + x2298, + x2299, + x2300, + x2301, + x2302, + x2303, + x2304, + x2305, + x2306, + x2307, + x2308, + x2309, + x2310, + x2311, + x2312, + x2313, + x2315, + x2316, + x2317, + x2318, + x2319, + x2320, + x2321, + x2322, + x2323, + x2324, + x2325, + x2326, + x2327, + x2328, + x2329, + x2330, + x2331, + x2332, + x2333, + x2334, + x2335, + x2336, + x2337, + x2338, + x2339, + x2340, + x2341, + x2342, + x2343, + x2344, + x2345, + x2346, + x2347, + x2348, + x2350, + x2351, + x2352, + x2353, + x2354, + x2356, + x2357, + x2358, + x2359, + x2360, + x2361, + x2362, + x2363, + x2364, + x2366, + x2367, + x2368, + x2370, + x2371, + x2372, + x2373, + x2374, + x2375, + x2376, + x2377, + x2378, + x2379, + x2380, + x2381, + x2382, + x2383, + x2384, + x2385, + x2386, + x2387, + x2388, + x2389, + x2390, + x2391, + x2392, + x2393, + x2394, + x2395, + x2396, + x2397, + x2398, + x2399, + x2400, + x2401, + x2402, + x2403, + x2404, + x2405, + x2406, + x2407, + x2409, + x2410, + x2411, + x2412, + x2413, + x2414, + x2416, + x2417, + x2418, + x2419, + x2420, + x2421, + x2422, + x2424, + x2426, + x2427, + x2428, + x2429, + x2430, + x2431, + x2432, + x2433, + x2434, + x2435, + x2436, + x2437, + x2438, + x2439, + x2440, + x2441, + x2442, + x2443, + x2444, + x2445, + x2446, + x2447, + x2448, + x2451, + x2452, + x2453, + x2454, + x2455, + x2456, + x2457, + x2458, + x2459, + x2460, + x2461, + x2463, + x2464, + x2465, + x2466, + x2468, + x2469, + x2470, + x2471, + x2473, + x2474, + x2475, + x2477, + x2478, + x2480, + x2481, + x2482, + x2483, + x2484, + x2485, + x2486, + x2487, + x2488, + x2490, + x2491, + x2493, + x2495, + x2496, + x2498, + x2501, + x2502, + x2503, + x2504, + x2505, + x2506, + x2507, + x2508, + x2509, + x2511, + x2512, + x2513, + x2514, + x2515, + x2516, + x2517, + x2518, + x2520, + x2521, + x2522, + x2524, + x2525, + x2526, + x2527, + x2528, + x2529, + x2531, + x2533, + x2534, + x2535, + x2536, + x2538, + x2541, + x2542, + x2545, + x2546, + x2547, + x2548, + x2552, + x2554, + x2555, + x2556, + x2557, + x2558, + x2560, + x2561, + x2564, + x2565, + x2567, + x2570, + x2571, + x2572, + x2573, + x2574, + x2576, + x2577, + x2578, + x2579, + x2580, + x2581, + x2582, + x2583, + x2584, + x2585, + x2586, + x2587, + x2588, + x2589, + x2590, + x2591, + x2599, + x2600, + x2601, + x2602, + x2603, + x2604, + x2605, + x2606, + x2607, + x2608, + x2609, + x2610, + x2611, + x2612, + x2614, + x2615, + x2616, + x2617, + x2618, + x2619, + x2620, + x2621, + x2622, + x2623, + x2624, + x2626, + x2627, + x2628, + x2629, + x2630, + x2642, + x2643, + x2644, + x2645, + x2646, + x2647, + x2648, + x2649, + x2650, + x2651, + x2653, + x2655, + x2656, + x2657, + x2659, + x2660, + x2661, + x2662, + x2664, + x2667, + x2668, + x2669, + x2670, + x2671, + x2672, + x2673, + x2674, + x2676, + x2677, + x2678, + x2679, + x2680, + x2681, + x2682, + x2683, + x2684, + x2685, + x2686, + x2687, + x2688, + x2689, + x2690, + x2691, + x2692, + x2693, + x2698, + x2699, + x2705, + x2707, + x2709, + x2710, + x2713, + x2714, + x2715, + x2716, + x2717, + x2719, + x2720, + x2721, + x2722, + x2723, + x2724, + x2725, + x2726, + x2727, + x2728, + x2729, + x2730, + x2732, + x2733, + x2734, + x2735, + x2738, + x2739, + x2740, + x2741, + x2742, + x2743, + x2744, + x2745, + x2746, + x2747, + x2748, + x2749, + x2750, + x2751, + x2752, + x2753, + x2754, + x2757, + x2758, + x2759, + x2760, + x2761, + x2762, + x2763, + x2764, + x2771, + x2772, + x2775, + x2776, + x2777, + x2778, + x2779, + x2780, + x2781, + x2782, + x2783, + x2784, + x2785, + x2786, + x2787, + x2788, + x2789, + x2790, + x2793, + x2794, + x2795, + x2796, + x2797, + x2798, + x2799, + x2800, + x2801, + x2802, + x2803, + x2805, + x2806, + x2807, + x2809, + x2810, + x2811, + x2812, + x2813, + x2814, + x2815, + x2817, + x2818, + x2819, + x2820, + x2821, + x2822, + x2823, + x2826, + x2829, + x2830, + x2831, + x2834, + x2835, + x2837, + x2838, + x2839, + x2840, + x2841, + x2842, + x2844, + x2845, + x2846, + x2849, + x2850, + x2851, + x2852, + x2853, + x2854, + x2855, + x2856, + x2857, + x2858, + x2859, + x2861, + x2862, + x2863, + x2864, + x2865, + x2869, + x2870, + x2871, + x2872, + x2873, + x2874, + x2875, + x2876, + x2878, + x2879, + x2880, + x2881, + x2900, + x2901, + x2902, + x2903, + x2904, + x2905, + x2907, + x2908, + x2909, + x2910, + x2911, + x2912, + x2913, + x2915, + x2916, + x2917, + x2919, + x2920, + x2921, + x2922, + x2923, + x2924, + x2925, + x2926, + x2927, + x2928, + x2929, + x2930, + x2931, + x2933, + x2934, + x2935, + x2936, + x2937, + x2940, + x2941, + x2942, + x2943, + x2945, + x2946, + x2947, + x2948, + x2949, + x2950, + x2956, + x2965, + x2966, + x2967, + x2968, + x2969, + x2977, + x2978, + x2983, + x2984, + x2985, + x2986, + x2987, + x2988, + x2989, + x2990, + x2991, + x2992, + x2993, + x2994, + x2995, + x2996, + x2997, + x2998, + x3005, + x3006, + x3009, + x3010, + x3011, + x3012, + x3013, + x3014, + x3015, + x3016, + x3017, + x3018, + x3019, + x3020, + x3021, + x3022, + x3023, + x3024, + x3025, + x3026, + x3027, + x3028, + x3048, + x3049, + x3050, + x3051, + x3052, + x3053, + x3054, + x3055, + x3056, + x3057, + x3064, + x3065, + x3066, + x3070, + x3071, + x3072, + x3073, + x3076, + x3077, + x3078, + x3079, + x3080, + x3082, + x3083, + x3084, + x3085, + x3086, + x3087, + x3088, + x3089, + x3090, + x3091, + x3092, + x3093, + x3094, + x3095, + x3096, + x3097, + x3098, + x3099, + x3100, + x3101, + x3102, + x3103, + x3104, + x3105, + x3106, + x3107, + x3108, + x3109, + x3110, + x3111, + x3112, + x3113, + x3114, + x3115, + x3116, + x3117, + x3118, + x3119, + x3120, + x3121, + x3122, + x3123, + x3124, + x3125, + x3126, + x3127, + x3128, + x3129, + x3130, + x3131, + x3132, + x3133, + x3134, + x3135, + x3136, + x3137, + x3138, + x3139, + x3140, + x3141, + x3142, + x3143, + x3144, + x3145, + x3146, + x3147, + x3148, + x3149, + x3150, + x3151, + x3152, + x3153, + x3154, + x3155, + x3156, + x3157, + x3158, + x3159, + x3160, + x3161, + x3162, + x3163, + x3164, + x3165, + x3166, + x3167, + x3168, + x3169, + x3170, + x3171, + x3172, + x3174, + x3175, + x3176, + x3178, + x3179, + x3180, + x3181, + x3182, + x3183, + x3184, + x3185, + x3186, + x3187, + x3188, + x3189, + x3190, + x3191, + x3192, + x3194, + x3200, + x3203, + x3205, + x3206, + x3207, + x3208, + x3209, + x3210, + x3211, + x3212, + x3213, + x3214, + x3215, + x3216, + x3218, + x3219, + x3220, + x3221, + x3222, + x3223, + x3224, + x3225, + x3226, + x3227, + x3228, + x3229, + x3230, + x3231, + x3232, + x3233, + x3234, + x3235, + x3236, + x3237, + x3238, + x3239, + x3240, + x3241, + x3242, + x3243, + x3244, + x3245, + x3246, + x3247, + x3248, + x3249, + x3250, + x3251, + x3252, + x3253, + x3254, + x3255, + x3256, + x3257, + x3258, + x3259, + x3260, + x3261, + x3262, + x3263, + x3264, + x3265, + x3266, + x3267, + x3268, + x3269, + x3270, + x3271, + x3272, + x3273, + x3274, + x3275, + x3276, + x3277, + x3278, + x3279, + x3280, + x3281, + x3282, + x3283, + x3284, + x3285, + x3286, + x3287, + x3288, + x3289, + x3290, + x3291, + x3292, + x3293, + x3294, + x3295, + x3296, + x3297, + x3298, + x3299, + x3300, + x3301, + x3302, + x3303, + x3304, + x3305, + x3306, + x3307, + x3308, + x3309, + x3310, + x3311, + x3312, + x3313, + x3314, + x3315, + x3316, + x3317, + x3318, + x3319, + x3320, + x3321, + x3322, + x3323, + x3324, + x3325, + x3326, + x3327, + x3328, + x3329, + x3330, + x3331, + x3332, + x3333, + x3334, + x3335, + x3336, + x3337, + x3338, + x3339, + x3340, + x3341, + x3342, + x3343, + x3344, + x3345, + x3346, + x3347, + x3348, + x3349, + x3350, + x3351, + x3352, + x3353, + x3354, + x3355, + x3356, + x3357, + x3358 +} +with { + variant "text 'x0004' as '0004'"; + variant "text 'x0005' as '0005'"; + variant "text 'x0006' as '0006'"; + variant "text 'x0007' as '0007'"; + variant "text 'x0009' as '0009'"; + variant "text 'x0010' as '0010'"; + variant "text 'x0012' as '0012'"; + variant "text 'x0014' as '0014'"; + variant "text 'x0015' as '0015'"; + variant "text 'x0016' as '0016'"; + variant "text 'x0018' as '0018'"; + variant "text 'x0019' as '0019'"; + variant "text 'x0020' as '0020'"; + variant "text 'x0021' as '0021'"; + variant "text 'x0027' as '0027'"; + variant "text 'x0028' as '0028'"; + variant "text 'x0029' as '0029'"; + variant "text 'x0030' as '0030'"; + variant "text 'x0033' as '0033'"; + variant "text 'x0034' as '0034'"; + variant "text 'x0035' as '0035'"; + variant "text 'x0037' as '0037'"; + variant "text 'x0038' as '0038'"; + variant "text 'x0039' as '0039'"; + variant "text 'x0042' as '0042'"; + variant "text 'x0043' as '0043'"; + variant "text 'x0044' as '0044'"; + variant "text 'x0048' as '0048'"; + variant "text 'x0049' as '0049'"; + variant "text 'x0050' as '0050'"; + variant "text 'x0054' as '0054'"; + variant "text 'x0055' as '0055'"; + variant "text 'x0056' as '0056'"; + variant "text 'x0059' as '0059'"; + variant "text 'x0060' as '0060'"; + variant "text 'x0065' as '0065'"; + variant "text 'x0066' as '0066'"; + variant "text 'x0070' as '0070'"; + variant "text 'x0072' as '0072'"; + variant "text 'x0073' as '0073'"; + variant "text 'x0074' as '0074'"; + variant "text 'x0075' as '0075'"; + variant "text 'x0076' as '0076'"; + variant "text 'x0077' as '0077'"; + variant "text 'x0078' as '0078'"; + variant "text 'x0079' as '0079'"; + variant "text 'x0081' as '0081'"; + variant "text 'x0082' as '0082'"; + variant "text 'x0083' as '0083'"; + variant "text 'x0084' as '0084'"; + variant "text 'x0092' as '0092'"; + variant "text 'x0093' as '0093'"; + variant "text 'x0094' as '0094'"; + variant "text 'x0099' as '0099'"; + variant "text 'x0101' as '0101'"; + variant "text 'x0102' as '0102'"; + variant "text 'x0103' as '0103'"; + variant "text 'x0104' as '0104'"; + variant "text 'x0105' as '0105'"; + variant "text 'x0106' as '0106'"; + variant "text 'x0107' as '0107'"; + variant "text 'x0110' as '0110'"; + variant "text 'x0113' as '0113'"; + variant "text 'x0114' as '0114'"; + variant "text 'x0118' as '0118'"; + variant "text 'x0121' as '0121'"; + variant "text 'x0124' as '0124'"; + variant "text 'x0129' as '0129'"; + variant "text 'x0130' as '0130'"; + variant "text 'x0131' as '0131'"; + variant "text 'x0132' as '0132'"; + variant "text 'x0133' as '0133'"; + variant "text 'x0135' as '0135'"; + variant "text 'x0136' as '0136'"; + variant "text 'x0137' as '0137'"; + variant "text 'x0138' as '0138'"; + variant "text 'x0143' as '0143'"; + variant "text 'x0144' as '0144'"; + variant "text 'x0146' as '0146'"; + variant "text 'x0147' as '0147'"; + variant "text 'x0150' as '0150'"; + variant "text 'x0151' as '0151'"; + variant "text 'x0153' as '0153'"; + variant "text 'x0154' as '0154'"; + variant "text 'x0155' as '0155'"; + variant "text 'x0159' as '0159'"; + variant "text 'x0160' as '0160'"; + variant "text 'x0161' as '0161'"; + variant "text 'x0167' as '0167'"; + variant "text 'x0168' as '0168'"; + variant "text 'x0169' as '0169'"; + variant "text 'x0171' as '0171'"; + variant "text 'x0173' as '0173'"; + variant "text 'x0174' as '0174'"; + variant "text 'x0180' as '0180'"; + variant "text 'x0181' as '0181'"; + variant "text 'x0182' as '0182'"; + variant "text 'x0183' as '0183'"; + variant "text 'x0186' as '0186'"; + variant "text 'x0190' as '0190'"; + variant "text 'x0191' as '0191'"; + variant "text 'x0192' as '0192'"; + variant "text 'x0193' as '0193'"; + variant "text 'x0194' as '0194'"; + variant "text 'x0195' as '0195'"; + variant "text 'x0196' as '0196'"; + variant "text 'x0197' as '0197'"; + variant "text 'x0204' as '0204'"; + variant "text 'x0207' as '0207'"; + variant "text 'x0208' as '0208'"; + variant "text 'x0209' as '0209'"; + variant "text 'x0212' as '0212'"; + variant "text 'x0213' as '0213'"; + variant "text 'x0214' as '0214'"; + variant "text 'x0215' as '0215'"; + variant "text 'x0216' as '0216'"; + variant "text 'x0217' as '0217'"; + variant "text 'x0218' as '0218'"; + variant "text 'x0219' as '0219'"; + variant "text 'x0220' as '0220'"; + variant "text 'x0221' as '0221'"; + variant "text 'x0222' as '0222'"; + variant "text 'x0223' as '0223'"; + variant "text 'x0224' as '0224'"; + variant "text 'x0225' as '0225'"; + variant "text 'x0226' as '0226'"; + variant "text 'x0234' as '0234'"; + variant "text 'x0235' as '0235'"; + variant "text 'x0236' as '0236'"; + variant "text 'x0237' as '0237'"; + variant "text 'x0238' as '0238'"; + variant "text 'x0240' as '0240'"; + variant "text 'x0241' as '0241'"; + variant "text 'x0242' as '0242'"; + variant "text 'x0243' as '0243'"; + variant "text 'x0244' as '0244'"; + variant "text 'x0245' as '0245'"; + variant "text 'x0246' as '0246'"; + variant "text 'x0247' as '0247'"; + variant "text 'x0248' as '0248'"; + variant "text 'x0249' as '0249'"; + variant "text 'x0250' as '0250'"; + variant "text 'x0254' as '0254'"; + variant "text 'x0255' as '0255'"; + variant "text 'x0257' as '0257'"; + variant "text 'x0266' as '0266'"; + variant "text 'x0267' as '0267'"; + variant "text 'x0268' as '0268'"; + variant "text 'x0271' as '0271'"; + variant "text 'x0272' as '0272'"; + variant "text 'x0275' as '0275'"; + variant "text 'x0276' as '0276'"; + variant "text 'x0277' as '0277'"; + variant "text 'x0278' as '0278'"; + variant "text 'x0279' as '0279'"; + variant "text 'x0280' as '0280'"; + variant "text 'x0281' as '0281'"; + variant "text 'x0282' as '0282'"; + variant "text 'x0283' as '0283'"; + variant "text 'x0284' as '0284'"; + variant "text 'x0285' as '0285'"; + variant "text 'x0286' as '0286'"; + variant "text 'x0287' as '0287'"; + variant "text 'x0288' as '0288'"; + variant "text 'x0289' as '0289'"; + variant "text 'x0290' as '0290'"; + variant "text 'x0291' as '0291'"; + variant "text 'x0292' as '0292'"; + variant "text 'x0293' as '0293'"; + variant "text 'x0294' as '0294'"; + variant "text 'x0295' as '0295'"; + variant "text 'x0296' as '0296'"; + variant "text 'x0297' as '0297'"; + variant "text 'x0299' as '0299'"; + variant "text 'x0300' as '0300'"; + variant "text 'x0301' as '0301'"; + variant "text 'x0303' as '0303'"; + variant "text 'x0305' as '0305'"; + variant "text 'x0306' as '0306'"; + variant "text 'x0312' as '0312'"; + variant "text 'x0313' as '0313'"; + variant "text 'x0314' as '0314'"; + variant "text 'x0315' as '0315'"; + variant "text 'x0316' as '0316'"; + variant "text 'x0317' as '0317'"; + variant "text 'x0318' as '0318'"; + variant "text 'x0319' as '0319'"; + variant "text 'x0320' as '0320'"; + variant "text 'x0321' as '0321'"; + variant "text 'x0322' as '0322'"; + variant "text 'x0323' as '0323'"; + variant "text 'x0324' as '0324'"; + variant "text 'x0325' as '0325'"; + variant "text 'x0326' as '0326'"; + variant "text 'x0327' as '0327'"; + variant "text 'x0328' as '0328'"; + variant "text 'x0329' as '0329'"; + variant "text 'x0330' as '0330'"; + variant "text 'x0331' as '0331'"; + variant "text 'x0332' as '0332'"; + variant "text 'x0333' as '0333'"; + variant "text 'x0334' as '0334'"; + variant "text 'x0335' as '0335'"; + variant "text 'x0336' as '0336'"; + variant "text 'x0337' as '0337'"; + variant "text 'x0338' as '0338'"; + variant "text 'x0339' as '0339'"; + variant "text 'x0340' as '0340'"; + variant "text 'x0341' as '0341'"; + variant "text 'x0342' as '0342'"; + variant "text 'x0343' as '0343'"; + variant "text 'x0344' as '0344'"; + variant "text 'x0345' as '0345'"; + variant "text 'x0346' as '0346'"; + variant "text 'x0347' as '0347'"; + variant "text 'x0348' as '0348'"; + variant "text 'x0349' as '0349'"; + variant "text 'x0350' as '0350'"; + variant "text 'x0351' as '0351'"; + variant "text 'x0352' as '0352'"; + variant "text 'x0353' as '0353'"; + variant "text 'x0354' as '0354'"; + variant "text 'x0355' as '0355'"; + variant "text 'x0356' as '0356'"; + variant "text 'x0357' as '0357'"; + variant "text 'x0358' as '0358'"; + variant "text 'x0359' as '0359'"; + variant "text 'x0360' as '0360'"; + variant "text 'x0361' as '0361'"; + variant "text 'x0362' as '0362'"; + variant "text 'x0363' as '0363'"; + variant "text 'x0364' as '0364'"; + variant "text 'x0365' as '0365'"; + variant "text 'x0366' as '0366'"; + variant "text 'x0367' as '0367'"; + variant "text 'x0368' as '0368'"; + variant "text 'x0369' as '0369'"; + variant "text 'x0370' as '0370'"; + variant "text 'x0371' as '0371'"; + variant "text 'x0372' as '0372'"; + variant "text 'x0373' as '0373'"; + variant "text 'x0374' as '0374'"; + variant "text 'x0375' as '0375'"; + variant "text 'x0376' as '0376'"; + variant "text 'x0377' as '0377'"; + variant "text 'x0378' as '0378'"; + variant "text 'x0379' as '0379'"; + variant "text 'x0380' as '0380'"; + variant "text 'x0381' as '0381'"; + variant "text 'x0382' as '0382'"; + variant "text 'x0383' as '0383'"; + variant "text 'x0384' as '0384'"; + variant "text 'x0385' as '0385'"; + variant "text 'x0386' as '0386'"; + variant "text 'x0387' as '0387'"; + variant "text 'x0388' as '0388'"; + variant "text 'x0389' as '0389'"; + variant "text 'x0390' as '0390'"; + variant "text 'x0391' as '0391'"; + variant "text 'x0392' as '0392'"; + variant "text 'x0393' as '0393'"; + variant "text 'x0394' as '0394'"; + variant "text 'x0395' as '0395'"; + variant "text 'x0396' as '0396'"; + variant "text 'x0397' as '0397'"; + variant "text 'x0398' as '0398'"; + variant "text 'x0399' as '0399'"; + variant "text 'x0400' as '0400'"; + variant "text 'x0401' as '0401'"; + variant "text 'x0402' as '0402'"; + variant "text 'x0403' as '0403'"; + variant "text 'x0404' as '0404'"; + variant "text 'x0405' as '0405'"; + variant "text 'x0406' as '0406'"; + variant "text 'x0407' as '0407'"; + variant "text 'x0408' as '0408'"; + variant "text 'x0409' as '0409'"; + variant "text 'x0410' as '0410'"; + variant "text 'x0411' as '0411'"; + variant "text 'x0412' as '0412'"; + variant "text 'x0413' as '0413'"; + variant "text 'x0414' as '0414'"; + variant "text 'x0415' as '0415'"; + variant "text 'x0417' as '0417'"; + variant "text 'x0418' as '0418'"; + variant "text 'x0419' as '0419'"; + variant "text 'x0420' as '0420'"; + variant "text 'x0421' as '0421'"; + variant "text 'x0424' as '0424'"; + variant "text 'x0425' as '0425'"; + variant "text 'x0426' as '0426'"; + variant "text 'x0427' as '0427'"; + variant "text 'x0428' as '0428'"; + variant "text 'x0429' as '0429'"; + variant "text 'x0430' as '0430'"; + variant "text 'x0431' as '0431'"; + variant "text 'x0432' as '0432'"; + variant "text 'x0433' as '0433'"; + variant "text 'x0434' as '0434'"; + variant "text 'x0435' as '0435'"; + variant "text 'x0436' as '0436'"; + variant "text 'x0437' as '0437'"; + variant "text 'x0438' as '0438'"; + variant "text 'x0439' as '0439'"; + variant "text 'x0440' as '0440'"; + variant "text 'x0441' as '0441'"; + variant "text 'x0442' as '0442'"; + variant "text 'x0443' as '0443'"; + variant "text 'x0444' as '0444'"; + variant "text 'x0445' as '0445'"; + variant "text 'x0446' as '0446'"; + variant "text 'x0447' as '0447'"; + variant "text 'x0448' as '0448'"; + variant "text 'x0449' as '0449'"; + variant "text 'x0450' as '0450'"; + variant "text 'x0451' as '0451'"; + variant "text 'x0452' as '0452'"; + variant "text 'x0453' as '0453'"; + variant "text 'x0454' as '0454'"; + variant "text 'x0455' as '0455'"; + variant "text 'x0456' as '0456'"; + variant "text 'x0457' as '0457'"; + variant "text 'x0458' as '0458'"; + variant "text 'x0459' as '0459'"; + variant "text 'x0460' as '0460'"; + variant "text 'x0461' as '0461'"; + variant "text 'x0462' as '0462'"; + variant "text 'x0463' as '0463'"; + variant "text 'x0464' as '0464'"; + variant "text 'x0465' as '0465'"; + variant "text 'x0466' as '0466'"; + variant "text 'x0467' as '0467'"; + variant "text 'x0468' as '0468'"; + variant "text 'x0469' as '0469'"; + variant "text 'x0470' as '0470'"; + variant "text 'x0471' as '0471'"; + variant "text 'x0472' as '0472'"; + variant "text 'x0473' as '0473'"; + variant "text 'x0474' as '0474'"; + variant "text 'x0475' as '0475'"; + variant "text 'x0476' as '0476'"; + variant "text 'x0477' as '0477'"; + variant "text 'x0478' as '0478'"; + variant "text 'x0479' as '0479'"; + variant "text 'x0480' as '0480'"; + variant "text 'x0481' as '0481'"; + variant "text 'x0482' as '0482'"; + variant "text 'x0483' as '0483'"; + variant "text 'x0484' as '0484'"; + variant "text 'x0485' as '0485'"; + variant "text 'x0486' as '0486'"; + variant "text 'x0487' as '0487'"; + variant "text 'x0488' as '0488'"; + variant "text 'x0489' as '0489'"; + variant "text 'x0490' as '0490'"; + variant "text 'x0491' as '0491'"; + variant "text 'x0492' as '0492'"; + variant "text 'x0493' as '0493'"; + variant "text 'x0494' as '0494'"; + variant "text 'x0495' as '0495'"; + variant "text 'x0496' as '0496'"; + variant "text 'x0497' as '0497'"; + variant "text 'x0498' as '0498'"; + variant "text 'x0499' as '0499'"; + variant "text 'x0500' as '0500'"; + variant "text 'x0501' as '0501'"; + variant "text 'x0502' as '0502'"; + variant "text 'x0503' as '0503'"; + variant "text 'x0504' as '0504'"; + variant "text 'x1001' as '1001'"; + variant "text 'x1002' as '1002'"; + variant "text 'x1003' as '1003'"; + variant "text 'x1005' as '1005'"; + variant "text 'x1006' as '1006'"; + variant "text 'x1008' as '1008'"; + variant "text 'x1009' as '1009'"; + variant "text 'x1010' as '1010'"; + variant "text 'x1011' as '1011'"; + variant "text 'x1012' as '1012'"; + variant "text 'x1013' as '1013'"; + variant "text 'x1014' as '1014'"; + variant "text 'x1015' as '1015'"; + variant "text 'x1016' as '1016'"; + variant "text 'x1017' as '1017'"; + variant "text 'x1018' as '1018'"; + variant "text 'x1020' as '1020'"; + variant "text 'x1021' as '1021'"; + variant "text 'x1022' as '1022'"; + variant "text 'x1023' as '1023'"; + variant "text 'x1026' as '1026'"; + variant "text 'x1027' as '1027'"; + variant "text 'x1028' as '1028'"; + variant "text 'x1029' as '1029'"; + variant "text 'x1030' as '1030'"; + variant "text 'x1032' as '1032'"; + variant "text 'x1033' as '1033'"; + variant "text 'x1035' as '1035'"; + variant "text 'x1036' as '1036'"; + variant "text 'x1037' as '1037'"; + variant "text 'x1038' as '1038'"; + variant "text 'x1039' as '1039'"; + variant "text 'x1040' as '1040'"; + variant "text 'x1041' as '1041'"; + variant "text 'x1043' as '1043'"; + variant "text 'x1044' as '1044'"; + variant "text 'x1045' as '1045'"; + variant "text 'x1046' as '1046'"; + variant "text 'x1048' as '1048'"; + variant "text 'x1049' as '1049'"; + variant "text 'x1050' as '1050'"; + variant "text 'x1051' as '1051'"; + variant "text 'x1052' as '1052'"; + variant "text 'x1053' as '1053'"; + variant "text 'x1055' as '1055'"; + variant "text 'x1056' as '1056'"; + variant "text 'x1057' as '1057'"; + variant "text 'x1058' as '1058'"; + variant "text 'x1060' as '1060'"; + variant "text 'x1061' as '1061'"; + variant "text 'x1062' as '1062'"; + variant "text 'x1063' as '1063'"; + variant "text 'x1064' as '1064'"; + variant "text 'x1065' as '1065'"; + variant "text 'x1066' as '1066'"; + variant "text 'x1067' as '1067'"; + variant "text 'x1069' as '1069'"; + variant "text 'x1070' as '1070'"; + variant "text 'x1071' as '1071'"; + variant "text 'x1072' as '1072'"; + variant "text 'x1073' as '1073'"; + variant "text 'x1075' as '1075'"; + variant "text 'x1076' as '1076'"; + variant "text 'x1077' as '1077'"; + variant "text 'x1078' as '1078'"; + variant "text 'x1079' as '1079'"; + variant "text 'x1080' as '1080'"; + variant "text 'x1081' as '1081'"; + variant "text 'x1082' as '1082'"; + variant "text 'x1083' as '1083'"; + variant "text 'x1085' as '1085'"; + variant "text 'x1086' as '1086'"; + variant "text 'x1087' as '1087'"; + variant "text 'x1088' as '1088'"; + variant "text 'x1089' as '1089'"; + variant "text 'x1090' as '1090'"; + variant "text 'x1091' as '1091'"; + variant "text 'x1092' as '1092'"; + variant "text 'x1093' as '1093'"; + variant "text 'x1098' as '1098'"; + variant "text 'x1099' as '1099'"; + variant "text 'x1100' as '1100'"; + variant "text 'x1104' as '1104'"; + variant "text 'x1105' as '1105'"; + variant "text 'x1106' as '1106'"; + variant "text 'x1107' as '1107'"; + variant "text 'x1108' as '1108'"; + variant "text 'x1109' as '1109'"; + variant "text 'x1110' as '1110'"; + variant "text 'x1111' as '1111'"; + variant "text 'x1112' as '1112'"; + variant "text 'x1113' as '1113'"; + variant "text 'x1114' as '1114'"; + variant "text 'x1120' as '1120'"; + variant "text 'x1123' as '1123'"; + variant "text 'x1125' as '1125'"; + variant "text 'x1126' as '1126'"; + variant "text 'x1127' as '1127'"; + variant "text 'x1128' as '1128'"; + variant "text 'x1129' as '1129'"; + variant "text 'x1130' as '1130'"; + variant "text 'x1131' as '1131'"; + variant "text 'x1133' as '1133'"; + variant "text 'x1134' as '1134'"; + variant "text 'x1135' as '1135'"; + variant "text 'x1136' as '1136'"; + variant "text 'x1139' as '1139'"; + variant "text 'x1143' as '1143'"; + variant "text 'x1144' as '1144'"; + variant "text 'x1145' as '1145'"; + variant "text 'x1146' as '1146'"; + variant "text 'x1147' as '1147'"; + variant "text 'x1148' as '1148'"; + variant "text 'x1149' as '1149'"; + variant "text 'x1150' as '1150'"; + variant "text 'x1152' as '1152'"; + variant "text 'x1153' as '1153'"; + variant "text 'x1154' as '1154'"; + variant "text 'x1155' as '1155'"; + variant "text 'x1156' as '1156'"; + variant "text 'x1157' as '1157'"; + variant "text 'x1158' as '1158'"; + variant "text 'x1159' as '1159'"; + variant "text 'x1160' as '1160'"; + variant "text 'x1161' as '1161'"; + variant "text 'x1162' as '1162'"; + variant "text 'x1163' as '1163'"; + variant "text 'x1164' as '1164'"; + variant "text 'x1165' as '1165'"; + variant "text 'x1166' as '1166'"; + variant "text 'x1167' as '1167'"; + variant "text 'x1169' as '1169'"; + variant "text 'x1170' as '1170'"; + variant "text 'x1171' as '1171'"; + variant "text 'x1172' as '1172'"; + variant "text 'x1173' as '1173'"; + variant "text 'x1175' as '1175'"; + variant "text 'x1176' as '1176'"; + variant "text 'x1177' as '1177'"; + variant "text 'x1178' as '1178'"; + variant "text 'x1179' as '1179'"; + variant "text 'x1180' as '1180'"; + variant "text 'x1181' as '1181'"; + variant "text 'x1182' as '1182'"; + variant "text 'x1183' as '1183'"; + variant "text 'x1184' as '1184'"; + variant "text 'x1185' as '1185'"; + variant "text 'x1188' as '1188'"; + variant "text 'x1189' as '1189'"; + variant "text 'x1190' as '1190'"; + variant "text 'x1191' as '1191'"; + variant "text 'x1192' as '1192'"; + variant "text 'x1193' as '1193'"; + variant "text 'x1194' as '1194'"; + variant "text 'x1195' as '1195'"; + variant "text 'x1196' as '1196'"; + variant "text 'x1197' as '1197'"; + variant "text 'x1198' as '1198'"; + variant "text 'x1199' as '1199'"; + variant "text 'x1201' as '1201'"; + variant "text 'x1202' as '1202'"; + variant "text 'x1203' as '1203'"; + variant "text 'x1204' as '1204'"; + variant "text 'x1206' as '1206'"; + variant "text 'x1207' as '1207'"; + variant "text 'x1208' as '1208'"; + variant "text 'x1210' as '1210'"; + variant "text 'x1212' as '1212'"; + variant "text 'x1213' as '1213'"; + variant "text 'x1214' as '1214'"; + variant "text 'x1216' as '1216'"; + variant "text 'x1218' as '1218'"; + variant "text 'x1219' as '1219'"; + variant "text 'x1220' as '1220'"; + variant "text 'x1221' as '1221'"; + variant "text 'x1222' as '1222'"; + variant "text 'x1223' as '1223'"; + variant "text 'x1224' as '1224'"; + variant "text 'x1228' as '1228'"; + variant "text 'x1229' as '1229'"; + variant "text 'x1230' as '1230'"; + variant "text 'x1231' as '1231'"; + variant "text 'x1233' as '1233'"; + variant "text 'x1234' as '1234'"; + variant "text 'x1235' as '1235'"; + variant "text 'x1237' as '1237'"; + variant "text 'x1238' as '1238'"; + variant "text 'x1239' as '1239'"; + variant "text 'x1242' as '1242'"; + variant "text 'x1243' as '1243'"; + variant "text 'x1244' as '1244'"; + variant "text 'x1245' as '1245'"; + variant "text 'x1246' as '1246'"; + variant "text 'x1247' as '1247'"; + variant "text 'x1248' as '1248'"; + variant "text 'x1249' as '1249'"; + variant "text 'x1250' as '1250'"; + variant "text 'x1251' as '1251'"; + variant "text 'x1259' as '1259'"; + variant "text 'x1261' as '1261'"; + variant "text 'x1262' as '1262'"; + variant "text 'x1263' as '1263'"; + variant "text 'x1264' as '1264'"; + variant "text 'x1265' as '1265'"; + variant "text 'x1266' as '1266'"; + variant "text 'x1267' as '1267'"; + variant "text 'x1268' as '1268'"; + variant "text 'x1272' as '1272'"; + variant "text 'x1274' as '1274'"; + variant "text 'x1275' as '1275'"; + variant "text 'x1276' as '1276'"; + variant "text 'x1277' as '1277'"; + variant "text 'x1278' as '1278'"; + variant "text 'x1279' as '1279'"; + variant "text 'x1280' as '1280'"; + variant "text 'x1281' as '1281'"; + variant "text 'x1282' as '1282'"; + variant "text 'x1286' as '1286'"; + variant "text 'x1287' as '1287'"; + variant "text 'x1288' as '1288'"; + variant "text 'x1289' as '1289'"; + variant "text 'x1292' as '1292'"; + variant "text 'x1293' as '1293'"; + variant "text 'x1294' as '1294'"; + variant "text 'x1295' as '1295'"; + variant "text 'x1296' as '1296'"; + variant "text 'x1297' as '1297'"; + variant "text 'x1298' as '1298'"; + variant "text 'x1299' as '1299'"; + variant "text 'x1300' as '1300'"; + variant "text 'x1301' as '1301'"; + variant "text 'x1302' as '1302'"; + variant "text 'x1303' as '1303'"; + variant "text 'x1304' as '1304'"; + variant "text 'x1305' as '1305'"; + variant "text 'x1306' as '1306'"; + variant "text 'x1307' as '1307'"; + variant "text 'x1308' as '1308'"; + variant "text 'x1309' as '1309'"; + variant "text 'x1310' as '1310'"; + variant "text 'x1312' as '1312'"; + variant "text 'x1313' as '1313'"; + variant "text 'x1314' as '1314'"; + variant "text 'x1318' as '1318'"; + variant "text 'x1320' as '1320'"; + variant "text 'x1321' as '1321'"; + variant "text 'x1322' as '1322'"; + variant "text 'x1323' as '1323'"; + variant "text 'x1324' as '1324'"; + variant "text 'x1325' as '1325'"; + variant "text 'x1326' as '1326'"; + variant "text 'x1327' as '1327'"; + variant "text 'x1328' as '1328'"; + variant "text 'x1330' as '1330'"; + variant "text 'x1331' as '1331'"; + variant "text 'x1332' as '1332'"; + variant "text 'x1333' as '1333'"; + variant "text 'x1334' as '1334'"; + variant "text 'x1336' as '1336'"; + variant "text 'x1337' as '1337'"; + variant "text 'x1338' as '1338'"; + variant "text 'x1339' as '1339'"; + variant "text 'x1340' as '1340'"; + variant "text 'x1341' as '1341'"; + variant "text 'x1343' as '1343'"; + variant "text 'x1344' as '1344'"; + variant "text 'x1345' as '1345'"; + variant "text 'x1346' as '1346'"; + variant "text 'x1347' as '1347'"; + variant "text 'x1348' as '1348'"; + variant "text 'x1349' as '1349'"; + variant "text 'x1350' as '1350'"; + variant "text 'x1352' as '1352'"; + variant "text 'x1353' as '1353'"; + variant "text 'x1354' as '1354'"; + variant "text 'x1355' as '1355'"; + variant "text 'x1356' as '1356'"; + variant "text 'x1357' as '1357'"; + variant "text 'x1358' as '1358'"; + variant "text 'x1360' as '1360'"; + variant "text 'x1361' as '1361'"; + variant "text 'x1362' as '1362'"; + variant "text 'x1363' as '1363'"; + variant "text 'x1364' as '1364'"; + variant "text 'x1365' as '1365'"; + variant "text 'x1366' as '1366'"; + variant "text 'x1369' as '1369'"; + variant "text 'x1370' as '1370'"; + variant "text 'x1373' as '1373'"; + variant "text 'x1374' as '1374'"; + variant "text 'x1376' as '1376'"; + variant "text 'x1378' as '1378'"; + variant "text 'x1379' as '1379'"; + variant "text 'x1380' as '1380'"; + variant "text 'x1381' as '1381'"; + variant "text 'x1382' as '1382'"; + variant "text 'x1383' as '1383'"; + variant "text 'x1384' as '1384'"; + variant "text 'x1385' as '1385'"; + variant "text 'x1386' as '1386'"; + variant "text 'x1389' as '1389'"; + variant "text 'x1390' as '1390'"; + variant "text 'x1391' as '1391'"; + variant "text 'x1392' as '1392'"; + variant "text 'x1393' as '1393'"; + variant "text 'x1394' as '1394'"; + variant "text 'x1395' as '1395'"; + variant "text 'x1396' as '1396'"; + variant "text 'x1397' as '1397'"; + variant "text 'x1398' as '1398'"; + variant "text 'x1400' as '1400'"; + variant "text 'x1401' as '1401'"; + variant "text 'x1402' as '1402'"; + variant "text 'x1403' as '1403'"; + variant "text 'x1404' as '1404'"; + variant "text 'x1405' as '1405'"; + variant "text 'x1407' as '1407'"; + variant "text 'x1408' as '1408'"; + variant "text 'x1409' as '1409'"; + variant "text 'x1410' as '1410'"; + variant "text 'x1411' as '1411'"; + variant "text 'x1413' as '1413'"; + variant "text 'x1414' as '1414'"; + variant "text 'x1415' as '1415'"; + variant "text 'x1417' as '1417'"; + variant "text 'x1418' as '1418'"; + variant "text 'x1419' as '1419'"; + variant "text 'x1420' as '1420'"; + variant "text 'x1421' as '1421'"; + variant "text 'x1422' as '1422'"; + variant "text 'x1423' as '1423'"; + variant "text 'x1426' as '1426'"; + variant "text 'x1427' as '1427'"; + variant "text 'x1428' as '1428'"; + variant "text 'x1431' as '1431'"; + variant "text 'x1432' as '1432'"; + variant "text 'x1433' as '1433'"; + variant "text 'x1435' as '1435'"; + variant "text 'x1436' as '1436'"; + variant "text 'x1437' as '1437'"; + variant "text 'x1438' as '1438'"; + variant "text 'x1439' as '1439'"; + variant "text 'x1442' as '1442'"; + variant "text 'x1444' as '1444'"; + variant "text 'x1445' as '1445'"; + variant "text 'x1446' as '1446'"; + variant "text 'x1447' as '1447'"; + variant "text 'x1448' as '1448'"; + variant "text 'x1449' as '1449'"; + variant "text 'x1450' as '1450'"; + variant "text 'x1451' as '1451'"; + variant "text 'x1452' as '1452'"; + variant "text 'x1453' as '1453'"; + variant "text 'x1454' as '1454'"; + variant "text 'x1455' as '1455'"; + variant "text 'x1456' as '1456'"; + variant "text 'x1457' as '1457'"; + variant "text 'x1458' as '1458'"; + variant "text 'x1459' as '1459'"; + variant "text 'x1461' as '1461'"; + variant "text 'x1462' as '1462'"; + variant "text 'x1463' as '1463'"; + variant "text 'x1465' as '1465'"; + variant "text 'x1466' as '1466'"; + variant "text 'x1467' as '1467'"; + variant "text 'x1469' as '1469'"; + variant "text 'x1470' as '1470'"; + variant "text 'x1471' as '1471'"; + variant "text 'x1472' as '1472'"; + variant "text 'x1473' as '1473'"; + variant "text 'x1474' as '1474'"; + variant "text 'x1475' as '1475'"; + variant "text 'x1476' as '1476'"; + variant "text 'x1477' as '1477'"; + variant "text 'x1479' as '1479'"; + variant "text 'x1481' as '1481'"; + variant "text 'x1482' as '1482'"; + variant "text 'x1483' as '1483'"; + variant "text 'x1484' as '1484'"; + variant "text 'x1485' as '1485'"; + variant "text 'x1486' as '1486'"; + variant "text 'x1487' as '1487'"; + variant "text 'x1488' as '1488'"; + variant "text 'x1489' as '1489'"; + variant "text 'x1490' as '1490'"; + variant "text 'x1491' as '1491'"; + variant "text 'x1492' as '1492'"; + variant "text 'x1493' as '1493'"; + variant "text 'x1494' as '1494'"; + variant "text 'x1495' as '1495'"; + variant "text 'x1496' as '1496'"; + variant "text 'x1498' as '1498'"; + variant "text 'x1499' as '1499'"; + variant "text 'x1500' as '1500'"; + variant "text 'x1502' as '1502'"; + variant "text 'x1503' as '1503'"; + variant "text 'x1504' as '1504'"; + variant "text 'x1505' as '1505'"; + variant "text 'x1506' as '1506'"; + variant "text 'x1507' as '1507'"; + variant "text 'x1508' as '1508'"; + variant "text 'x1509' as '1509'"; + variant "text 'x1510' as '1510'"; + variant "text 'x1511' as '1511'"; + variant "text 'x1512' as '1512'"; + variant "text 'x1513' as '1513'"; + variant "text 'x1514' as '1514'"; + variant "text 'x1515' as '1515'"; + variant "text 'x1516' as '1516'"; + variant "text 'x1517' as '1517'"; + variant "text 'x1541' as '1541'"; + variant "text 'x1544' as '1544'"; + variant "text 'x1545' as '1545'"; + variant "text 'x1546' as '1546'"; + variant "text 'x1547' as '1547'"; + variant "text 'x1548' as '1548'"; + variant "text 'x1549' as '1549'"; + variant "text 'x1550' as '1550'"; + variant "text 'x1551' as '1551'"; + variant "text 'x1553' as '1553'"; + variant "text 'x1554' as '1554'"; + variant "text 'x1555' as '1555'"; + variant "text 'x1556' as '1556'"; + variant "text 'x1557' as '1557'"; + variant "text 'x1558' as '1558'"; + variant "text 'x1559' as '1559'"; + variant "text 'x1560' as '1560'"; + variant "text 'x1561' as '1561'"; + variant "text 'x1562' as '1562'"; + variant "text 'x1564' as '1564'"; + variant "text 'x1565' as '1565'"; + variant "text 'x1566' as '1566'"; + variant "text 'x1567' as '1567'"; + variant "text 'x1569' as '1569'"; + variant "text 'x1570' as '1570'"; + variant "text 'x1571' as '1571'"; + variant "text 'x1572' as '1572'"; + variant "text 'x1573' as '1573'"; + variant "text 'x1574' as '1574'"; + variant "text 'x1575' as '1575'"; + variant "text 'x1577' as '1577'"; + variant "text 'x1578' as '1578'"; + variant "text 'x1579' as '1579'"; + variant "text 'x1580' as '1580'"; + variant "text 'x1581' as '1581'"; + variant "text 'x1582' as '1582'"; + variant "text 'x1583' as '1583'"; + variant "text 'x1585' as '1585'"; + variant "text 'x1586' as '1586'"; + variant "text 'x1587' as '1587'"; + variant "text 'x1588' as '1588'"; + variant "text 'x1589' as '1589'"; + variant "text 'x1590' as '1590'"; + variant "text 'x1591' as '1591'"; + variant "text 'x1593' as '1593'"; + variant "text 'x1594' as '1594'"; + variant "text 'x1595' as '1595'"; + variant "text 'x1596' as '1596'"; + variant "text 'x1597' as '1597'"; + variant "text 'x1598' as '1598'"; + variant "text 'x1599' as '1599'"; + variant "text 'x1600' as '1600'"; + variant "text 'x1601' as '1601'"; + variant "text 'x1602' as '1602'"; + variant "text 'x1603' as '1603'"; + variant "text 'x1604' as '1604'"; + variant "text 'x1605' as '1605'"; + variant "text 'x1606' as '1606'"; + variant "text 'x1607' as '1607'"; + variant "text 'x1608' as '1608'"; + variant "text 'x1611' as '1611'"; + variant "text 'x1612' as '1612'"; + variant "text 'x1613' as '1613'"; + variant "text 'x1614' as '1614'"; + variant "text 'x1616' as '1616'"; + variant "text 'x1617' as '1617'"; + variant "text 'x1618' as '1618'"; + variant "text 'x1620' as '1620'"; + variant "text 'x1621' as '1621'"; + variant "text 'x1622' as '1622'"; + variant "text 'x1623' as '1623'"; + variant "text 'x1624' as '1624'"; + variant "text 'x1625' as '1625'"; + variant "text 'x1626' as '1626'"; + variant "text 'x1627' as '1627'"; + variant "text 'x1629' as '1629'"; + variant "text 'x1630' as '1630'"; + variant "text 'x1631' as '1631'"; + variant "text 'x1634' as '1634'"; + variant "text 'x1636' as '1636'"; + variant "text 'x1637' as '1637'"; + variant "text 'x1638' as '1638'"; + variant "text 'x1639' as '1639'"; + variant "text 'x1640' as '1640'"; + variant "text 'x1641' as '1641'"; + variant "text 'x1642' as '1642'"; + variant "text 'x1643' as '1643'"; + variant "text 'x1644' as '1644'"; + variant "text 'x1645' as '1645'"; + variant "text 'x1646' as '1646'"; + variant "text 'x1647' as '1647'"; + variant "text 'x1648' as '1648'"; + variant "text 'x1649' as '1649'"; + variant "text 'x1650' as '1650'"; + variant "text 'x1651' as '1651'"; + variant "text 'x1652' as '1652'"; + variant "text 'x1653' as '1653'"; + variant "text 'x1654' as '1654'"; + variant "text 'x1655' as '1655'"; + variant "text 'x1656' as '1656'"; + variant "text 'x1657' as '1657'"; + variant "text 'x1658' as '1658'"; + variant "text 'x1659' as '1659'"; + variant "text 'x1660' as '1660'"; + variant "text 'x1661' as '1661'"; + variant "text 'x1662' as '1662'"; + variant "text 'x1663' as '1663'"; + variant "text 'x1664' as '1664'"; + variant "text 'x1665' as '1665'"; + variant "text 'x1669' as '1669'"; + variant "text 'x1670' as '1670'"; + variant "text 'x1671' as '1671'"; + variant "text 'x1672' as '1672'"; + variant "text 'x1673' as '1673'"; + variant "text 'x1674' as '1674'"; + variant "text 'x1677' as '1677'"; + variant "text 'x1678' as '1678'"; + variant "text 'x1679' as '1679'"; + variant "text 'x1680' as '1680'"; + variant "text 'x1683' as '1683'"; + variant "text 'x1684' as '1684'"; + variant "text 'x1685' as '1685'"; + variant "text 'x1686' as '1686'"; + variant "text 'x1687' as '1687'"; + variant "text 'x1688' as '1688'"; + variant "text 'x1689' as '1689'"; + variant "text 'x1690' as '1690'"; + variant "text 'x1691' as '1691'"; + variant "text 'x1692' as '1692'"; + variant "text 'x1693' as '1693'"; + variant "text 'x1694' as '1694'"; + variant "text 'x1695' as '1695'"; + variant "text 'x1697' as '1697'"; + variant "text 'x1698' as '1698'"; + variant "text 'x1699' as '1699'"; + variant "text 'x1700' as '1700'"; + variant "text 'x1701' as '1701'"; + variant "text 'x1702' as '1702'"; + variant "text 'x1704' as '1704'"; + variant "text 'x1707' as '1707'"; + variant "text 'x1708' as '1708'"; + variant "text 'x1709' as '1709'"; + variant "text 'x1710' as '1710'"; + variant "text 'x1711' as '1711'"; + variant "text 'x1712' as '1712'"; + variant "text 'x1713' as '1713'"; + variant "text 'x1714' as '1714'"; + variant "text 'x1715' as '1715'"; + variant "text 'x1716' as '1716'"; + variant "text 'x1717' as '1717'"; + variant "text 'x1718' as '1718'"; + variant "text 'x1719' as '1719'"; + variant "text 'x1722' as '1722'"; + variant "text 'x1723' as '1723'"; + variant "text 'x1724' as '1724'"; + variant "text 'x1725' as '1725'"; + variant "text 'x1726' as '1726'"; + variant "text 'x1727' as '1727'"; + variant "text 'x1728' as '1728'"; + variant "text 'x1729' as '1729'"; + variant "text 'x1730' as '1730'"; + variant "text 'x1731' as '1731'"; + variant "text 'x1732' as '1732'"; + variant "text 'x1733' as '1733'"; + variant "text 'x1736' as '1736'"; + variant "text 'x1737' as '1737'"; + variant "text 'x1738' as '1738'"; + variant "text 'x1739' as '1739'"; + variant "text 'x1740' as '1740'"; + variant "text 'x1741' as '1741'"; + variant "text 'x1742' as '1742'"; + variant "text 'x1743' as '1743'"; + variant "text 'x1744' as '1744'"; + variant "text 'x1745' as '1745'"; + variant "text 'x1746' as '1746'"; + variant "text 'x1747' as '1747'"; + variant "text 'x1748' as '1748'"; + variant "text 'x1749' as '1749'"; + variant "text 'x1750' as '1750'"; + variant "text 'x1751' as '1751'"; + variant "text 'x1752' as '1752'"; + variant "text 'x1753' as '1753'"; + variant "text 'x1754' as '1754'"; + variant "text 'x1755' as '1755'"; + variant "text 'x1756' as '1756'"; + variant "text 'x1757' as '1757'"; + variant "text 'x1758' as '1758'"; + variant "text 'x1759' as '1759'"; + variant "text 'x1760' as '1760'"; + variant "text 'x1761' as '1761'"; + variant "text 'x1762' as '1762'"; + variant "text 'x1763' as '1763'"; + variant "text 'x1764' as '1764'"; + variant "text 'x1765' as '1765'"; + variant "text 'x1766' as '1766'"; + variant "text 'x1767' as '1767'"; + variant "text 'x1768' as '1768'"; + variant "text 'x1769' as '1769'"; + variant "text 'x1770' as '1770'"; + variant "text 'x1771' as '1771'"; + variant "text 'x1773' as '1773'"; + variant "text 'x1774' as '1774'"; + variant "text 'x1775' as '1775'"; + variant "text 'x1776' as '1776'"; + variant "text 'x1777' as '1777'"; + variant "text 'x1778' as '1778'"; + variant "text 'x1779' as '1779'"; + variant "text 'x1780' as '1780'"; + variant "text 'x1781' as '1781'"; + variant "text 'x1782' as '1782'"; + variant "text 'x1783' as '1783'"; + variant "text 'x1784' as '1784'"; + variant "text 'x1786' as '1786'"; + variant "text 'x1787' as '1787'"; + variant "text 'x1788' as '1788'"; + variant "text 'x1789' as '1789'"; + variant "text 'x1790' as '1790'"; + variant "text 'x1791' as '1791'"; + variant "text 'x1792' as '1792'"; + variant "text 'x1793' as '1793'"; + variant "text 'x1794' as '1794'"; + variant "text 'x1796' as '1796'"; + variant "text 'x1798' as '1798'"; + variant "text 'x1799' as '1799'"; + variant "text 'x1800' as '1800'"; + variant "text 'x1801' as '1801'"; + variant "text 'x1802' as '1802'"; + variant "text 'x1803' as '1803'"; + variant "text 'x1804' as '1804'"; + variant "text 'x1805' as '1805'"; + variant "text 'x1806' as '1806'"; + variant "text 'x1807' as '1807'"; + variant "text 'x1808' as '1808'"; + variant "text 'x1809' as '1809'"; + variant "text 'x1810' as '1810'"; + variant "text 'x1811' as '1811'"; + variant "text 'x1812' as '1812'"; + variant "text 'x1813' as '1813'"; + variant "text 'x1814' as '1814'"; + variant "text 'x1815' as '1815'"; + variant "text 'x1816' as '1816'"; + variant "text 'x1817' as '1817'"; + variant "text 'x1818' as '1818'"; + variant "text 'x1819' as '1819'"; + variant "text 'x1823' as '1823'"; + variant "text 'x1824' as '1824'"; + variant "text 'x1825' as '1825'"; + variant "text 'x1826' as '1826'"; + variant "text 'x1827' as '1827'"; + variant "text 'x1828' as '1828'"; + variant "text 'x1829' as '1829'"; + variant "text 'x1830' as '1830'"; + variant "text 'x1831' as '1831'"; + variant "text 'x1832' as '1832'"; + variant "text 'x1833' as '1833'"; + variant "text 'x1834' as '1834'"; + variant "text 'x1835' as '1835'"; + variant "text 'x1836' as '1836'"; + variant "text 'x1837' as '1837'"; + variant "text 'x1838' as '1838'"; + variant "text 'x1839' as '1839'"; + variant "text 'x1840' as '1840'"; + variant "text 'x1841' as '1841'"; + variant "text 'x1843' as '1843'"; + variant "text 'x1845' as '1845'"; + variant "text 'x1846' as '1846'"; + variant "text 'x1847' as '1847'"; + variant "text 'x1848' as '1848'"; + variant "text 'x1849' as '1849'"; + variant "text 'x1851' as '1851'"; + variant "text 'x1854' as '1854'"; + variant "text 'x1855' as '1855'"; + variant "text 'x1858' as '1858'"; + variant "text 'x1859' as '1859'"; + variant "text 'x1860' as '1860'"; + variant "text 'x1862' as '1862'"; + variant "text 'x1863' as '1863'"; + variant "text 'x1865' as '1865'"; + variant "text 'x1866' as '1866'"; + variant "text 'x1868' as '1868'"; + variant "text 'x1869' as '1869'"; + variant "text 'x1870' as '1870'"; + variant "text 'x1871' as '1871'"; + variant "text 'x1872' as '1872'"; + variant "text 'x1873' as '1873'"; + variant "text 'x1884' as '1884'"; + variant "text 'x1885' as '1885'"; + variant "text 'x1886' as '1886'"; + variant "text 'x1887' as '1887'"; + variant "text 'x1888' as '1888'"; + variant "text 'x1889' as '1889'"; + variant "text 'x1891' as '1891'"; + variant "text 'x1892' as '1892'"; + variant "text 'x1894' as '1894'"; + variant "text 'x1895' as '1895'"; + variant "text 'x1897' as '1897'"; + variant "text 'x1898' as '1898'"; + variant "text 'x1902' as '1902'"; + variant "text 'x1903' as '1903'"; + variant "text 'x1905' as '1905'"; + variant "text 'x1906' as '1906'"; + variant "text 'x1907' as '1907'"; + variant "text 'x1908' as '1908'"; + variant "text 'x1910' as '1910'"; + variant "text 'x1911' as '1911'"; + variant "text 'x1912' as '1912'"; + variant "text 'x1913' as '1913'"; + variant "text 'x1914' as '1914'"; + variant "text 'x1915' as '1915'"; + variant "text 'x1916' as '1916'"; + variant "text 'x1917' as '1917'"; + variant "text 'x1918' as '1918'"; + variant "text 'x1919' as '1919'"; + variant "text 'x1920' as '1920'"; + variant "text 'x1921' as '1921'"; + variant "text 'x1922' as '1922'"; + variant "text 'x1923' as '1923'"; + variant "text 'x1928' as '1928'"; + variant "text 'x1929' as '1929'"; + variant "text 'x1931' as '1931'"; + variant "text 'x1932' as '1932'"; + variant "text 'x1935' as '1935'"; + variant "text 'x1938' as '1938'"; + variant "text 'x1939' as '1939'"; + variant "text 'x1940' as '1940'"; + variant "text 'x1941' as '1941'"; + variant "text 'x1942' as '1942'"; + variant "text 'x1944' as '1944'"; + variant "text 'x1945' as '1945'"; + variant "text 'x1950' as '1950'"; + variant "text 'x1951' as '1951'"; + variant "text 'x1952' as '1952'"; + variant "text 'x1953' as '1953'"; + variant "text 'x1954' as '1954'"; + variant "text 'x1955' as '1955'"; + variant "text 'x1956' as '1956'"; + variant "text 'x1957' as '1957'"; + variant "text 'x1958' as '1958'"; + variant "text 'x1959' as '1959'"; + variant "text 'x1961' as '1961'"; + variant "text 'x1962' as '1962'"; + variant "text 'x1963' as '1963'"; + variant "text 'x1964' as '1964'"; + variant "text 'x1965' as '1965'"; + variant "text 'x1966' as '1966'"; + variant "text 'x1967' as '1967'"; + variant "text 'x1968' as '1968'"; + variant "text 'x1969' as '1969'"; + variant "text 'x1970' as '1970'"; + variant "text 'x1971' as '1971'"; + variant "text 'x1972' as '1972'"; + variant "text 'x1973' as '1973'"; + variant "text 'x1974' as '1974'"; + variant "text 'x1975' as '1975'"; + variant "text 'x1976' as '1976'"; + variant "text 'x1977' as '1977'"; + variant "text 'x1978' as '1978'"; + variant "text 'x1979' as '1979'"; + variant "text 'x1980' as '1980'"; + variant "text 'x1981' as '1981'"; + variant "text 'x1982' as '1982'"; + variant "text 'x1983' as '1983'"; + variant "text 'x1984' as '1984'"; + variant "text 'x1986' as '1986'"; + variant "text 'x1987' as '1987'"; + variant "text 'x1988' as '1988'"; + variant "text 'x1989' as '1989'"; + variant "text 'x1990' as '1990'"; + variant "text 'x1991' as '1991'"; + variant "text 'x1992' as '1992'"; + variant "text 'x1993' as '1993'"; + variant "text 'x1994' as '1994'"; + variant "text 'x1999' as '1999'"; + variant "text 'x2000' as '2000'"; + variant "text 'x2001' as '2001'"; + variant "text 'x2002' as '2002'"; + variant "text 'x2003' as '2003'"; + variant "text 'x2004' as '2004'"; + variant "text 'x2005' as '2005'"; + variant "text 'x2006' as '2006'"; + variant "text 'x2008' as '2008'"; + variant "text 'x2009' as '2009'"; + variant "text 'x2010' as '2010'"; + variant "text 'x2011' as '2011'"; + variant "text 'x2012' as '2012'"; + variant "text 'x2013' as '2013'"; + variant "text 'x2014' as '2014'"; + variant "text 'x2015' as '2015'"; + variant "text 'x2016' as '2016'"; + variant "text 'x2017' as '2017'"; + variant "text 'x2018' as '2018'"; + variant "text 'x2019' as '2019'"; + variant "text 'x2020' as '2020'"; + variant "text 'x2021' as '2021'"; + variant "text 'x2022' as '2022'"; + variant "text 'x2023' as '2023'"; + variant "text 'x2024' as '2024'"; + variant "text 'x2025' as '2025'"; + variant "text 'x2026' as '2026'"; + variant "text 'x2027' as '2027'"; + variant "text 'x2028' as '2028'"; + variant "text 'x2029' as '2029'"; + variant "text 'x2030' as '2030'"; + variant "text 'x2031' as '2031'"; + variant "text 'x2032' as '2032'"; + variant "text 'x2033' as '2033'"; + variant "text 'x2034' as '2034'"; + variant "text 'x2035' as '2035'"; + variant "text 'x2036' as '2036'"; + variant "text 'x2037' as '2037'"; + variant "text 'x2038' as '2038'"; + variant "text 'x2044' as '2044'"; + variant "text 'x2045' as '2045'"; + variant "text 'x2046' as '2046'"; + variant "text 'x2047' as '2047'"; + variant "text 'x2048' as '2048'"; + variant "text 'x2049' as '2049'"; + variant "text 'x2050' as '2050'"; + variant "text 'x2051' as '2051'"; + variant "text 'x2052' as '2052'"; + variant "text 'x2053' as '2053'"; + variant "text 'x2054' as '2054'"; + variant "text 'x2055' as '2055'"; + variant "text 'x2056' as '2056'"; + variant "text 'x2057' as '2057'"; + variant "text 'x2058' as '2058'"; + variant "text 'x2059' as '2059'"; + variant "text 'x2067' as '2067'"; + variant "text 'x2068' as '2068'"; + variant "text 'x2069' as '2069'"; + variant "text 'x2070' as '2070'"; + variant "text 'x2071' as '2071'"; + variant "text 'x2072' as '2072'"; + variant "text 'x2073' as '2073'"; + variant "text 'x2074' as '2074'"; + variant "text 'x2075' as '2075'"; + variant "text 'x2076' as '2076'"; + variant "text 'x2077' as '2077'"; + variant "text 'x2078' as '2078'"; + variant "text 'x2079' as '2079'"; + variant "text 'x2186' as '2186'"; + variant "text 'x2187' as '2187'"; + variant "text 'x2188' as '2188'"; + variant "text 'x2189' as '2189'"; + variant "text 'x2190' as '2190'"; + variant "text 'x2191' as '2191'"; + variant "text 'x2192' as '2192'"; + variant "text 'x2193' as '2193'"; + variant "text 'x2194' as '2194'"; + variant "text 'x2195' as '2195'"; + variant "text 'x2196' as '2196'"; + variant "text 'x2197' as '2197'"; + variant "text 'x2198' as '2198'"; + variant "text 'x2199' as '2199'"; + variant "text 'x2200' as '2200'"; + variant "text 'x2201' as '2201'"; + variant "text 'x2202' as '2202'"; + variant "text 'x2203' as '2203'"; + variant "text 'x2204' as '2204'"; + variant "text 'x2205' as '2205'"; + variant "text 'x2206' as '2206'"; + variant "text 'x2208' as '2208'"; + variant "text 'x2209' as '2209'"; + variant "text 'x2210' as '2210'"; + variant "text 'x2211' as '2211'"; + variant "text 'x2212' as '2212'"; + variant "text 'x2213' as '2213'"; + variant "text 'x2214' as '2214'"; + variant "text 'x2215' as '2215'"; + variant "text 'x2216' as '2216'"; + variant "text 'x2217' as '2217'"; + variant "text 'x2218' as '2218'"; + variant "text 'x2219' as '2219'"; + variant "text 'x2222' as '2222'"; + variant "text 'x2224' as '2224'"; + variant "text 'x2225' as '2225'"; + variant "text 'x2226' as '2226'"; + variant "text 'x2227' as '2227'"; + variant "text 'x2232' as '2232'"; + variant "text 'x2233' as '2233'"; + variant "text 'x2234' as '2234'"; + variant "text 'x2235' as '2235'"; + variant "text 'x2236' as '2236'"; + variant "text 'x2237' as '2237'"; + variant "text 'x2238' as '2238'"; + variant "text 'x2239' as '2239'"; + variant "text 'x2240' as '2240'"; + variant "text 'x2241' as '2241'"; + variant "text 'x2242' as '2242'"; + variant "text 'x2243' as '2243'"; + variant "text 'x2244' as '2244'"; + variant "text 'x2245' as '2245'"; + variant "text 'x2246' as '2246'"; + variant "text 'x2247' as '2247'"; + variant "text 'x2248' as '2248'"; + variant "text 'x2249' as '2249'"; + variant "text 'x2250' as '2250'"; + variant "text 'x2251' as '2251'"; + variant "text 'x2252' as '2252'"; + variant "text 'x2253' as '2253'"; + variant "text 'x2254' as '2254'"; + variant "text 'x2256' as '2256'"; + variant "text 'x2257' as '2257'"; + variant "text 'x2258' as '2258'"; + variant "text 'x2259' as '2259'"; + variant "text 'x2260' as '2260'"; + variant "text 'x2261' as '2261'"; + variant "text 'x2262' as '2262'"; + variant "text 'x2263' as '2263'"; + variant "text 'x2264' as '2264'"; + variant "text 'x2265' as '2265'"; + variant "text 'x2266' as '2266'"; + variant "text 'x2267' as '2267'"; + variant "text 'x2269' as '2269'"; + variant "text 'x2270' as '2270'"; + variant "text 'x2271' as '2271'"; + variant "text 'x2272' as '2272'"; + variant "text 'x2273' as '2273'"; + variant "text 'x2274' as '2274'"; + variant "text 'x2275' as '2275'"; + variant "text 'x2276' as '2276'"; + variant "text 'x2277' as '2277'"; + variant "text 'x2278' as '2278'"; + variant "text 'x2279' as '2279'"; + variant "text 'x2280' as '2280'"; + variant "text 'x2281' as '2281'"; + variant "text 'x2282' as '2282'"; + variant "text 'x2283' as '2283'"; + variant "text 'x2284' as '2284'"; + variant "text 'x2285' as '2285'"; + variant "text 'x2286' as '2286'"; + variant "text 'x2287' as '2287'"; + variant "text 'x2288' as '2288'"; + variant "text 'x2289' as '2289'"; + variant "text 'x2290' as '2290'"; + variant "text 'x2291' as '2291'"; + variant "text 'x2293' as '2293'"; + variant "text 'x2294' as '2294'"; + variant "text 'x2295' as '2295'"; + variant "text 'x2296' as '2296'"; + variant "text 'x2297' as '2297'"; + variant "text 'x2298' as '2298'"; + variant "text 'x2299' as '2299'"; + variant "text 'x2300' as '2300'"; + variant "text 'x2301' as '2301'"; + variant "text 'x2302' as '2302'"; + variant "text 'x2303' as '2303'"; + variant "text 'x2304' as '2304'"; + variant "text 'x2305' as '2305'"; + variant "text 'x2306' as '2306'"; + variant "text 'x2307' as '2307'"; + variant "text 'x2308' as '2308'"; + variant "text 'x2309' as '2309'"; + variant "text 'x2310' as '2310'"; + variant "text 'x2311' as '2311'"; + variant "text 'x2312' as '2312'"; + variant "text 'x2313' as '2313'"; + variant "text 'x2315' as '2315'"; + variant "text 'x2316' as '2316'"; + variant "text 'x2317' as '2317'"; + variant "text 'x2318' as '2318'"; + variant "text 'x2319' as '2319'"; + variant "text 'x2320' as '2320'"; + variant "text 'x2321' as '2321'"; + variant "text 'x2322' as '2322'"; + variant "text 'x2323' as '2323'"; + variant "text 'x2324' as '2324'"; + variant "text 'x2325' as '2325'"; + variant "text 'x2326' as '2326'"; + variant "text 'x2327' as '2327'"; + variant "text 'x2328' as '2328'"; + variant "text 'x2329' as '2329'"; + variant "text 'x2330' as '2330'"; + variant "text 'x2331' as '2331'"; + variant "text 'x2332' as '2332'"; + variant "text 'x2333' as '2333'"; + variant "text 'x2334' as '2334'"; + variant "text 'x2335' as '2335'"; + variant "text 'x2336' as '2336'"; + variant "text 'x2337' as '2337'"; + variant "text 'x2338' as '2338'"; + variant "text 'x2339' as '2339'"; + variant "text 'x2340' as '2340'"; + variant "text 'x2341' as '2341'"; + variant "text 'x2342' as '2342'"; + variant "text 'x2343' as '2343'"; + variant "text 'x2344' as '2344'"; + variant "text 'x2345' as '2345'"; + variant "text 'x2346' as '2346'"; + variant "text 'x2347' as '2347'"; + variant "text 'x2348' as '2348'"; + variant "text 'x2350' as '2350'"; + variant "text 'x2351' as '2351'"; + variant "text 'x2352' as '2352'"; + variant "text 'x2353' as '2353'"; + variant "text 'x2354' as '2354'"; + variant "text 'x2356' as '2356'"; + variant "text 'x2357' as '2357'"; + variant "text 'x2358' as '2358'"; + variant "text 'x2359' as '2359'"; + variant "text 'x2360' as '2360'"; + variant "text 'x2361' as '2361'"; + variant "text 'x2362' as '2362'"; + variant "text 'x2363' as '2363'"; + variant "text 'x2364' as '2364'"; + variant "text 'x2366' as '2366'"; + variant "text 'x2367' as '2367'"; + variant "text 'x2368' as '2368'"; + variant "text 'x2370' as '2370'"; + variant "text 'x2371' as '2371'"; + variant "text 'x2372' as '2372'"; + variant "text 'x2373' as '2373'"; + variant "text 'x2374' as '2374'"; + variant "text 'x2375' as '2375'"; + variant "text 'x2376' as '2376'"; + variant "text 'x2377' as '2377'"; + variant "text 'x2378' as '2378'"; + variant "text 'x2379' as '2379'"; + variant "text 'x2380' as '2380'"; + variant "text 'x2381' as '2381'"; + variant "text 'x2382' as '2382'"; + variant "text 'x2383' as '2383'"; + variant "text 'x2384' as '2384'"; + variant "text 'x2385' as '2385'"; + variant "text 'x2386' as '2386'"; + variant "text 'x2387' as '2387'"; + variant "text 'x2388' as '2388'"; + variant "text 'x2389' as '2389'"; + variant "text 'x2390' as '2390'"; + variant "text 'x2391' as '2391'"; + variant "text 'x2392' as '2392'"; + variant "text 'x2393' as '2393'"; + variant "text 'x2394' as '2394'"; + variant "text 'x2395' as '2395'"; + variant "text 'x2396' as '2396'"; + variant "text 'x2397' as '2397'"; + variant "text 'x2398' as '2398'"; + variant "text 'x2399' as '2399'"; + variant "text 'x2400' as '2400'"; + variant "text 'x2401' as '2401'"; + variant "text 'x2402' as '2402'"; + variant "text 'x2403' as '2403'"; + variant "text 'x2404' as '2404'"; + variant "text 'x2405' as '2405'"; + variant "text 'x2406' as '2406'"; + variant "text 'x2407' as '2407'"; + variant "text 'x2409' as '2409'"; + variant "text 'x2410' as '2410'"; + variant "text 'x2411' as '2411'"; + variant "text 'x2412' as '2412'"; + variant "text 'x2413' as '2413'"; + variant "text 'x2414' as '2414'"; + variant "text 'x2416' as '2416'"; + variant "text 'x2417' as '2417'"; + variant "text 'x2418' as '2418'"; + variant "text 'x2419' as '2419'"; + variant "text 'x2420' as '2420'"; + variant "text 'x2421' as '2421'"; + variant "text 'x2422' as '2422'"; + variant "text 'x2424' as '2424'"; + variant "text 'x2426' as '2426'"; + variant "text 'x2427' as '2427'"; + variant "text 'x2428' as '2428'"; + variant "text 'x2429' as '2429'"; + variant "text 'x2430' as '2430'"; + variant "text 'x2431' as '2431'"; + variant "text 'x2432' as '2432'"; + variant "text 'x2433' as '2433'"; + variant "text 'x2434' as '2434'"; + variant "text 'x2435' as '2435'"; + variant "text 'x2436' as '2436'"; + variant "text 'x2437' as '2437'"; + variant "text 'x2438' as '2438'"; + variant "text 'x2439' as '2439'"; + variant "text 'x2440' as '2440'"; + variant "text 'x2441' as '2441'"; + variant "text 'x2442' as '2442'"; + variant "text 'x2443' as '2443'"; + variant "text 'x2444' as '2444'"; + variant "text 'x2445' as '2445'"; + variant "text 'x2446' as '2446'"; + variant "text 'x2447' as '2447'"; + variant "text 'x2448' as '2448'"; + variant "text 'x2451' as '2451'"; + variant "text 'x2452' as '2452'"; + variant "text 'x2453' as '2453'"; + variant "text 'x2454' as '2454'"; + variant "text 'x2455' as '2455'"; + variant "text 'x2456' as '2456'"; + variant "text 'x2457' as '2457'"; + variant "text 'x2458' as '2458'"; + variant "text 'x2459' as '2459'"; + variant "text 'x2460' as '2460'"; + variant "text 'x2461' as '2461'"; + variant "text 'x2463' as '2463'"; + variant "text 'x2464' as '2464'"; + variant "text 'x2465' as '2465'"; + variant "text 'x2466' as '2466'"; + variant "text 'x2468' as '2468'"; + variant "text 'x2469' as '2469'"; + variant "text 'x2470' as '2470'"; + variant "text 'x2471' as '2471'"; + variant "text 'x2473' as '2473'"; + variant "text 'x2474' as '2474'"; + variant "text 'x2475' as '2475'"; + variant "text 'x2477' as '2477'"; + variant "text 'x2478' as '2478'"; + variant "text 'x2480' as '2480'"; + variant "text 'x2481' as '2481'"; + variant "text 'x2482' as '2482'"; + variant "text 'x2483' as '2483'"; + variant "text 'x2484' as '2484'"; + variant "text 'x2485' as '2485'"; + variant "text 'x2486' as '2486'"; + variant "text 'x2487' as '2487'"; + variant "text 'x2488' as '2488'"; + variant "text 'x2490' as '2490'"; + variant "text 'x2491' as '2491'"; + variant "text 'x2493' as '2493'"; + variant "text 'x2495' as '2495'"; + variant "text 'x2496' as '2496'"; + variant "text 'x2498' as '2498'"; + variant "text 'x2501' as '2501'"; + variant "text 'x2502' as '2502'"; + variant "text 'x2503' as '2503'"; + variant "text 'x2504' as '2504'"; + variant "text 'x2505' as '2505'"; + variant "text 'x2506' as '2506'"; + variant "text 'x2507' as '2507'"; + variant "text 'x2508' as '2508'"; + variant "text 'x2509' as '2509'"; + variant "text 'x2511' as '2511'"; + variant "text 'x2512' as '2512'"; + variant "text 'x2513' as '2513'"; + variant "text 'x2514' as '2514'"; + variant "text 'x2515' as '2515'"; + variant "text 'x2516' as '2516'"; + variant "text 'x2517' as '2517'"; + variant "text 'x2518' as '2518'"; + variant "text 'x2520' as '2520'"; + variant "text 'x2521' as '2521'"; + variant "text 'x2522' as '2522'"; + variant "text 'x2524' as '2524'"; + variant "text 'x2525' as '2525'"; + variant "text 'x2526' as '2526'"; + variant "text 'x2527' as '2527'"; + variant "text 'x2528' as '2528'"; + variant "text 'x2529' as '2529'"; + variant "text 'x2531' as '2531'"; + variant "text 'x2533' as '2533'"; + variant "text 'x2534' as '2534'"; + variant "text 'x2535' as '2535'"; + variant "text 'x2536' as '2536'"; + variant "text 'x2538' as '2538'"; + variant "text 'x2541' as '2541'"; + variant "text 'x2542' as '2542'"; + variant "text 'x2545' as '2545'"; + variant "text 'x2546' as '2546'"; + variant "text 'x2547' as '2547'"; + variant "text 'x2548' as '2548'"; + variant "text 'x2552' as '2552'"; + variant "text 'x2554' as '2554'"; + variant "text 'x2555' as '2555'"; + variant "text 'x2556' as '2556'"; + variant "text 'x2557' as '2557'"; + variant "text 'x2558' as '2558'"; + variant "text 'x2560' as '2560'"; + variant "text 'x2561' as '2561'"; + variant "text 'x2564' as '2564'"; + variant "text 'x2565' as '2565'"; + variant "text 'x2567' as '2567'"; + variant "text 'x2570' as '2570'"; + variant "text 'x2571' as '2571'"; + variant "text 'x2572' as '2572'"; + variant "text 'x2573' as '2573'"; + variant "text 'x2574' as '2574'"; + variant "text 'x2576' as '2576'"; + variant "text 'x2577' as '2577'"; + variant "text 'x2578' as '2578'"; + variant "text 'x2579' as '2579'"; + variant "text 'x2580' as '2580'"; + variant "text 'x2581' as '2581'"; + variant "text 'x2582' as '2582'"; + variant "text 'x2583' as '2583'"; + variant "text 'x2584' as '2584'"; + variant "text 'x2585' as '2585'"; + variant "text 'x2586' as '2586'"; + variant "text 'x2587' as '2587'"; + variant "text 'x2588' as '2588'"; + variant "text 'x2589' as '2589'"; + variant "text 'x2590' as '2590'"; + variant "text 'x2591' as '2591'"; + variant "text 'x2599' as '2599'"; + variant "text 'x2600' as '2600'"; + variant "text 'x2601' as '2601'"; + variant "text 'x2602' as '2602'"; + variant "text 'x2603' as '2603'"; + variant "text 'x2604' as '2604'"; + variant "text 'x2605' as '2605'"; + variant "text 'x2606' as '2606'"; + variant "text 'x2607' as '2607'"; + variant "text 'x2608' as '2608'"; + variant "text 'x2609' as '2609'"; + variant "text 'x2610' as '2610'"; + variant "text 'x2611' as '2611'"; + variant "text 'x2612' as '2612'"; + variant "text 'x2614' as '2614'"; + variant "text 'x2615' as '2615'"; + variant "text 'x2616' as '2616'"; + variant "text 'x2617' as '2617'"; + variant "text 'x2618' as '2618'"; + variant "text 'x2619' as '2619'"; + variant "text 'x2620' as '2620'"; + variant "text 'x2621' as '2621'"; + variant "text 'x2622' as '2622'"; + variant "text 'x2623' as '2623'"; + variant "text 'x2624' as '2624'"; + variant "text 'x2626' as '2626'"; + variant "text 'x2627' as '2627'"; + variant "text 'x2628' as '2628'"; + variant "text 'x2629' as '2629'"; + variant "text 'x2630' as '2630'"; + variant "text 'x2642' as '2642'"; + variant "text 'x2643' as '2643'"; + variant "text 'x2644' as '2644'"; + variant "text 'x2645' as '2645'"; + variant "text 'x2646' as '2646'"; + variant "text 'x2647' as '2647'"; + variant "text 'x2648' as '2648'"; + variant "text 'x2649' as '2649'"; + variant "text 'x2650' as '2650'"; + variant "text 'x2651' as '2651'"; + variant "text 'x2653' as '2653'"; + variant "text 'x2655' as '2655'"; + variant "text 'x2656' as '2656'"; + variant "text 'x2657' as '2657'"; + variant "text 'x2659' as '2659'"; + variant "text 'x2660' as '2660'"; + variant "text 'x2661' as '2661'"; + variant "text 'x2662' as '2662'"; + variant "text 'x2664' as '2664'"; + variant "text 'x2667' as '2667'"; + variant "text 'x2668' as '2668'"; + variant "text 'x2669' as '2669'"; + variant "text 'x2670' as '2670'"; + variant "text 'x2671' as '2671'"; + variant "text 'x2672' as '2672'"; + variant "text 'x2673' as '2673'"; + variant "text 'x2674' as '2674'"; + variant "text 'x2676' as '2676'"; + variant "text 'x2677' as '2677'"; + variant "text 'x2678' as '2678'"; + variant "text 'x2679' as '2679'"; + variant "text 'x2680' as '2680'"; + variant "text 'x2681' as '2681'"; + variant "text 'x2682' as '2682'"; + variant "text 'x2683' as '2683'"; + variant "text 'x2684' as '2684'"; + variant "text 'x2685' as '2685'"; + variant "text 'x2686' as '2686'"; + variant "text 'x2687' as '2687'"; + variant "text 'x2688' as '2688'"; + variant "text 'x2689' as '2689'"; + variant "text 'x2690' as '2690'"; + variant "text 'x2691' as '2691'"; + variant "text 'x2692' as '2692'"; + variant "text 'x2693' as '2693'"; + variant "text 'x2698' as '2698'"; + variant "text 'x2699' as '2699'"; + variant "text 'x2705' as '2705'"; + variant "text 'x2707' as '2707'"; + variant "text 'x2709' as '2709'"; + variant "text 'x2710' as '2710'"; + variant "text 'x2713' as '2713'"; + variant "text 'x2714' as '2714'"; + variant "text 'x2715' as '2715'"; + variant "text 'x2716' as '2716'"; + variant "text 'x2717' as '2717'"; + variant "text 'x2719' as '2719'"; + variant "text 'x2720' as '2720'"; + variant "text 'x2721' as '2721'"; + variant "text 'x2722' as '2722'"; + variant "text 'x2723' as '2723'"; + variant "text 'x2724' as '2724'"; + variant "text 'x2725' as '2725'"; + variant "text 'x2726' as '2726'"; + variant "text 'x2727' as '2727'"; + variant "text 'x2728' as '2728'"; + variant "text 'x2729' as '2729'"; + variant "text 'x2730' as '2730'"; + variant "text 'x2732' as '2732'"; + variant "text 'x2733' as '2733'"; + variant "text 'x2734' as '2734'"; + variant "text 'x2735' as '2735'"; + variant "text 'x2738' as '2738'"; + variant "text 'x2739' as '2739'"; + variant "text 'x2740' as '2740'"; + variant "text 'x2741' as '2741'"; + variant "text 'x2742' as '2742'"; + variant "text 'x2743' as '2743'"; + variant "text 'x2744' as '2744'"; + variant "text 'x2745' as '2745'"; + variant "text 'x2746' as '2746'"; + variant "text 'x2747' as '2747'"; + variant "text 'x2748' as '2748'"; + variant "text 'x2749' as '2749'"; + variant "text 'x2750' as '2750'"; + variant "text 'x2751' as '2751'"; + variant "text 'x2752' as '2752'"; + variant "text 'x2753' as '2753'"; + variant "text 'x2754' as '2754'"; + variant "text 'x2757' as '2757'"; + variant "text 'x2758' as '2758'"; + variant "text 'x2759' as '2759'"; + variant "text 'x2760' as '2760'"; + variant "text 'x2761' as '2761'"; + variant "text 'x2762' as '2762'"; + variant "text 'x2763' as '2763'"; + variant "text 'x2764' as '2764'"; + variant "text 'x2771' as '2771'"; + variant "text 'x2772' as '2772'"; + variant "text 'x2775' as '2775'"; + variant "text 'x2776' as '2776'"; + variant "text 'x2777' as '2777'"; + variant "text 'x2778' as '2778'"; + variant "text 'x2779' as '2779'"; + variant "text 'x2780' as '2780'"; + variant "text 'x2781' as '2781'"; + variant "text 'x2782' as '2782'"; + variant "text 'x2783' as '2783'"; + variant "text 'x2784' as '2784'"; + variant "text 'x2785' as '2785'"; + variant "text 'x2786' as '2786'"; + variant "text 'x2787' as '2787'"; + variant "text 'x2788' as '2788'"; + variant "text 'x2789' as '2789'"; + variant "text 'x2790' as '2790'"; + variant "text 'x2793' as '2793'"; + variant "text 'x2794' as '2794'"; + variant "text 'x2795' as '2795'"; + variant "text 'x2796' as '2796'"; + variant "text 'x2797' as '2797'"; + variant "text 'x2798' as '2798'"; + variant "text 'x2799' as '2799'"; + variant "text 'x2800' as '2800'"; + variant "text 'x2801' as '2801'"; + variant "text 'x2802' as '2802'"; + variant "text 'x2803' as '2803'"; + variant "text 'x2805' as '2805'"; + variant "text 'x2806' as '2806'"; + variant "text 'x2807' as '2807'"; + variant "text 'x2809' as '2809'"; + variant "text 'x2810' as '2810'"; + variant "text 'x2811' as '2811'"; + variant "text 'x2812' as '2812'"; + variant "text 'x2813' as '2813'"; + variant "text 'x2814' as '2814'"; + variant "text 'x2815' as '2815'"; + variant "text 'x2817' as '2817'"; + variant "text 'x2818' as '2818'"; + variant "text 'x2819' as '2819'"; + variant "text 'x2820' as '2820'"; + variant "text 'x2821' as '2821'"; + variant "text 'x2822' as '2822'"; + variant "text 'x2823' as '2823'"; + variant "text 'x2826' as '2826'"; + variant "text 'x2829' as '2829'"; + variant "text 'x2830' as '2830'"; + variant "text 'x2831' as '2831'"; + variant "text 'x2834' as '2834'"; + variant "text 'x2835' as '2835'"; + variant "text 'x2837' as '2837'"; + variant "text 'x2838' as '2838'"; + variant "text 'x2839' as '2839'"; + variant "text 'x2840' as '2840'"; + variant "text 'x2841' as '2841'"; + variant "text 'x2842' as '2842'"; + variant "text 'x2844' as '2844'"; + variant "text 'x2845' as '2845'"; + variant "text 'x2846' as '2846'"; + variant "text 'x2849' as '2849'"; + variant "text 'x2850' as '2850'"; + variant "text 'x2851' as '2851'"; + variant "text 'x2852' as '2852'"; + variant "text 'x2853' as '2853'"; + variant "text 'x2854' as '2854'"; + variant "text 'x2855' as '2855'"; + variant "text 'x2856' as '2856'"; + variant "text 'x2857' as '2857'"; + variant "text 'x2858' as '2858'"; + variant "text 'x2859' as '2859'"; + variant "text 'x2861' as '2861'"; + variant "text 'x2862' as '2862'"; + variant "text 'x2863' as '2863'"; + variant "text 'x2864' as '2864'"; + variant "text 'x2865' as '2865'"; + variant "text 'x2869' as '2869'"; + variant "text 'x2870' as '2870'"; + variant "text 'x2871' as '2871'"; + variant "text 'x2872' as '2872'"; + variant "text 'x2873' as '2873'"; + variant "text 'x2874' as '2874'"; + variant "text 'x2875' as '2875'"; + variant "text 'x2876' as '2876'"; + variant "text 'x2878' as '2878'"; + variant "text 'x2879' as '2879'"; + variant "text 'x2880' as '2880'"; + variant "text 'x2881' as '2881'"; + variant "text 'x2900' as '2900'"; + variant "text 'x2901' as '2901'"; + variant "text 'x2902' as '2902'"; + variant "text 'x2903' as '2903'"; + variant "text 'x2904' as '2904'"; + variant "text 'x2905' as '2905'"; + variant "text 'x2907' as '2907'"; + variant "text 'x2908' as '2908'"; + variant "text 'x2909' as '2909'"; + variant "text 'x2910' as '2910'"; + variant "text 'x2911' as '2911'"; + variant "text 'x2912' as '2912'"; + variant "text 'x2913' as '2913'"; + variant "text 'x2915' as '2915'"; + variant "text 'x2916' as '2916'"; + variant "text 'x2917' as '2917'"; + variant "text 'x2919' as '2919'"; + variant "text 'x2920' as '2920'"; + variant "text 'x2921' as '2921'"; + variant "text 'x2922' as '2922'"; + variant "text 'x2923' as '2923'"; + variant "text 'x2924' as '2924'"; + variant "text 'x2925' as '2925'"; + variant "text 'x2926' as '2926'"; + variant "text 'x2927' as '2927'"; + variant "text 'x2928' as '2928'"; + variant "text 'x2929' as '2929'"; + variant "text 'x2930' as '2930'"; + variant "text 'x2931' as '2931'"; + variant "text 'x2933' as '2933'"; + variant "text 'x2934' as '2934'"; + variant "text 'x2935' as '2935'"; + variant "text 'x2936' as '2936'"; + variant "text 'x2937' as '2937'"; + variant "text 'x2940' as '2940'"; + variant "text 'x2941' as '2941'"; + variant "text 'x2942' as '2942'"; + variant "text 'x2943' as '2943'"; + variant "text 'x2945' as '2945'"; + variant "text 'x2946' as '2946'"; + variant "text 'x2947' as '2947'"; + variant "text 'x2948' as '2948'"; + variant "text 'x2949' as '2949'"; + variant "text 'x2950' as '2950'"; + variant "text 'x2956' as '2956'"; + variant "text 'x2965' as '2965'"; + variant "text 'x2966' as '2966'"; + variant "text 'x2967' as '2967'"; + variant "text 'x2968' as '2968'"; + variant "text 'x2969' as '2969'"; + variant "text 'x2977' as '2977'"; + variant "text 'x2978' as '2978'"; + variant "text 'x2983' as '2983'"; + variant "text 'x2984' as '2984'"; + variant "text 'x2985' as '2985'"; + variant "text 'x2986' as '2986'"; + variant "text 'x2987' as '2987'"; + variant "text 'x2988' as '2988'"; + variant "text 'x2989' as '2989'"; + variant "text 'x2990' as '2990'"; + variant "text 'x2991' as '2991'"; + variant "text 'x2992' as '2992'"; + variant "text 'x2993' as '2993'"; + variant "text 'x2994' as '2994'"; + variant "text 'x2995' as '2995'"; + variant "text 'x2996' as '2996'"; + variant "text 'x2997' as '2997'"; + variant "text 'x2998' as '2998'"; + variant "text 'x3005' as '3005'"; + variant "text 'x3006' as '3006'"; + variant "text 'x3009' as '3009'"; + variant "text 'x3010' as '3010'"; + variant "text 'x3011' as '3011'"; + variant "text 'x3012' as '3012'"; + variant "text 'x3013' as '3013'"; + variant "text 'x3014' as '3014'"; + variant "text 'x3015' as '3015'"; + variant "text 'x3016' as '3016'"; + variant "text 'x3017' as '3017'"; + variant "text 'x3018' as '3018'"; + variant "text 'x3019' as '3019'"; + variant "text 'x3020' as '3020'"; + variant "text 'x3021' as '3021'"; + variant "text 'x3022' as '3022'"; + variant "text 'x3023' as '3023'"; + variant "text 'x3024' as '3024'"; + variant "text 'x3025' as '3025'"; + variant "text 'x3026' as '3026'"; + variant "text 'x3027' as '3027'"; + variant "text 'x3028' as '3028'"; + variant "text 'x3048' as '3048'"; + variant "text 'x3049' as '3049'"; + variant "text 'x3050' as '3050'"; + variant "text 'x3051' as '3051'"; + variant "text 'x3052' as '3052'"; + variant "text 'x3053' as '3053'"; + variant "text 'x3054' as '3054'"; + variant "text 'x3055' as '3055'"; + variant "text 'x3056' as '3056'"; + variant "text 'x3057' as '3057'"; + variant "text 'x3064' as '3064'"; + variant "text 'x3065' as '3065'"; + variant "text 'x3066' as '3066'"; + variant "text 'x3070' as '3070'"; + variant "text 'x3071' as '3071'"; + variant "text 'x3072' as '3072'"; + variant "text 'x3073' as '3073'"; + variant "text 'x3076' as '3076'"; + variant "text 'x3077' as '3077'"; + variant "text 'x3078' as '3078'"; + variant "text 'x3079' as '3079'"; + variant "text 'x3080' as '3080'"; + variant "text 'x3082' as '3082'"; + variant "text 'x3083' as '3083'"; + variant "text 'x3084' as '3084'"; + variant "text 'x3085' as '3085'"; + variant "text 'x3086' as '3086'"; + variant "text 'x3087' as '3087'"; + variant "text 'x3088' as '3088'"; + variant "text 'x3089' as '3089'"; + variant "text 'x3090' as '3090'"; + variant "text 'x3091' as '3091'"; + variant "text 'x3092' as '3092'"; + variant "text 'x3093' as '3093'"; + variant "text 'x3094' as '3094'"; + variant "text 'x3095' as '3095'"; + variant "text 'x3096' as '3096'"; + variant "text 'x3097' as '3097'"; + variant "text 'x3098' as '3098'"; + variant "text 'x3099' as '3099'"; + variant "text 'x3100' as '3100'"; + variant "text 'x3101' as '3101'"; + variant "text 'x3102' as '3102'"; + variant "text 'x3103' as '3103'"; + variant "text 'x3104' as '3104'"; + variant "text 'x3105' as '3105'"; + variant "text 'x3106' as '3106'"; + variant "text 'x3107' as '3107'"; + variant "text 'x3108' as '3108'"; + variant "text 'x3109' as '3109'"; + variant "text 'x3110' as '3110'"; + variant "text 'x3111' as '3111'"; + variant "text 'x3112' as '3112'"; + variant "text 'x3113' as '3113'"; + variant "text 'x3114' as '3114'"; + variant "text 'x3115' as '3115'"; + variant "text 'x3116' as '3116'"; + variant "text 'x3117' as '3117'"; + variant "text 'x3118' as '3118'"; + variant "text 'x3119' as '3119'"; + variant "text 'x3120' as '3120'"; + variant "text 'x3121' as '3121'"; + variant "text 'x3122' as '3122'"; + variant "text 'x3123' as '3123'"; + variant "text 'x3124' as '3124'"; + variant "text 'x3125' as '3125'"; + variant "text 'x3126' as '3126'"; + variant "text 'x3127' as '3127'"; + variant "text 'x3128' as '3128'"; + variant "text 'x3129' as '3129'"; + variant "text 'x3130' as '3130'"; + variant "text 'x3131' as '3131'"; + variant "text 'x3132' as '3132'"; + variant "text 'x3133' as '3133'"; + variant "text 'x3134' as '3134'"; + variant "text 'x3135' as '3135'"; + variant "text 'x3136' as '3136'"; + variant "text 'x3137' as '3137'"; + variant "text 'x3138' as '3138'"; + variant "text 'x3139' as '3139'"; + variant "text 'x3140' as '3140'"; + variant "text 'x3141' as '3141'"; + variant "text 'x3142' as '3142'"; + variant "text 'x3143' as '3143'"; + variant "text 'x3144' as '3144'"; + variant "text 'x3145' as '3145'"; + variant "text 'x3146' as '3146'"; + variant "text 'x3147' as '3147'"; + variant "text 'x3148' as '3148'"; + variant "text 'x3149' as '3149'"; + variant "text 'x3150' as '3150'"; + variant "text 'x3151' as '3151'"; + variant "text 'x3152' as '3152'"; + variant "text 'x3153' as '3153'"; + variant "text 'x3154' as '3154'"; + variant "text 'x3155' as '3155'"; + variant "text 'x3156' as '3156'"; + variant "text 'x3157' as '3157'"; + variant "text 'x3158' as '3158'"; + variant "text 'x3159' as '3159'"; + variant "text 'x3160' as '3160'"; + variant "text 'x3161' as '3161'"; + variant "text 'x3162' as '3162'"; + variant "text 'x3163' as '3163'"; + variant "text 'x3164' as '3164'"; + variant "text 'x3165' as '3165'"; + variant "text 'x3166' as '3166'"; + variant "text 'x3167' as '3167'"; + variant "text 'x3168' as '3168'"; + variant "text 'x3169' as '3169'"; + variant "text 'x3170' as '3170'"; + variant "text 'x3171' as '3171'"; + variant "text 'x3172' as '3172'"; + variant "text 'x3174' as '3174'"; + variant "text 'x3175' as '3175'"; + variant "text 'x3176' as '3176'"; + variant "text 'x3178' as '3178'"; + variant "text 'x3179' as '3179'"; + variant "text 'x3180' as '3180'"; + variant "text 'x3181' as '3181'"; + variant "text 'x3182' as '3182'"; + variant "text 'x3183' as '3183'"; + variant "text 'x3184' as '3184'"; + variant "text 'x3185' as '3185'"; + variant "text 'x3186' as '3186'"; + variant "text 'x3187' as '3187'"; + variant "text 'x3188' as '3188'"; + variant "text 'x3189' as '3189'"; + variant "text 'x3190' as '3190'"; + variant "text 'x3191' as '3191'"; + variant "text 'x3192' as '3192'"; + variant "text 'x3194' as '3194'"; + variant "text 'x3200' as '3200'"; + variant "text 'x3203' as '3203'"; + variant "text 'x3205' as '3205'"; + variant "text 'x3206' as '3206'"; + variant "text 'x3207' as '3207'"; + variant "text 'x3208' as '3208'"; + variant "text 'x3209' as '3209'"; + variant "text 'x3210' as '3210'"; + variant "text 'x3211' as '3211'"; + variant "text 'x3212' as '3212'"; + variant "text 'x3213' as '3213'"; + variant "text 'x3214' as '3214'"; + variant "text 'x3215' as '3215'"; + variant "text 'x3216' as '3216'"; + variant "text 'x3218' as '3218'"; + variant "text 'x3219' as '3219'"; + variant "text 'x3220' as '3220'"; + variant "text 'x3221' as '3221'"; + variant "text 'x3222' as '3222'"; + variant "text 'x3223' as '3223'"; + variant "text 'x3224' as '3224'"; + variant "text 'x3225' as '3225'"; + variant "text 'x3226' as '3226'"; + variant "text 'x3227' as '3227'"; + variant "text 'x3228' as '3228'"; + variant "text 'x3229' as '3229'"; + variant "text 'x3230' as '3230'"; + variant "text 'x3231' as '3231'"; + variant "text 'x3232' as '3232'"; + variant "text 'x3233' as '3233'"; + variant "text 'x3234' as '3234'"; + variant "text 'x3235' as '3235'"; + variant "text 'x3236' as '3236'"; + variant "text 'x3237' as '3237'"; + variant "text 'x3238' as '3238'"; + variant "text 'x3239' as '3239'"; + variant "text 'x3240' as '3240'"; + variant "text 'x3241' as '3241'"; + variant "text 'x3242' as '3242'"; + variant "text 'x3243' as '3243'"; + variant "text 'x3244' as '3244'"; + variant "text 'x3245' as '3245'"; + variant "text 'x3246' as '3246'"; + variant "text 'x3247' as '3247'"; + variant "text 'x3248' as '3248'"; + variant "text 'x3249' as '3249'"; + variant "text 'x3250' as '3250'"; + variant "text 'x3251' as '3251'"; + variant "text 'x3252' as '3252'"; + variant "text 'x3253' as '3253'"; + variant "text 'x3254' as '3254'"; + variant "text 'x3255' as '3255'"; + variant "text 'x3256' as '3256'"; + variant "text 'x3257' as '3257'"; + variant "text 'x3258' as '3258'"; + variant "text 'x3259' as '3259'"; + variant "text 'x3260' as '3260'"; + variant "text 'x3261' as '3261'"; + variant "text 'x3262' as '3262'"; + variant "text 'x3263' as '3263'"; + variant "text 'x3264' as '3264'"; + variant "text 'x3265' as '3265'"; + variant "text 'x3266' as '3266'"; + variant "text 'x3267' as '3267'"; + variant "text 'x3268' as '3268'"; + variant "text 'x3269' as '3269'"; + variant "text 'x3270' as '3270'"; + variant "text 'x3271' as '3271'"; + variant "text 'x3272' as '3272'"; + variant "text 'x3273' as '3273'"; + variant "text 'x3274' as '3274'"; + variant "text 'x3275' as '3275'"; + variant "text 'x3276' as '3276'"; + variant "text 'x3277' as '3277'"; + variant "text 'x3278' as '3278'"; + variant "text 'x3279' as '3279'"; + variant "text 'x3280' as '3280'"; + variant "text 'x3281' as '3281'"; + variant "text 'x3282' as '3282'"; + variant "text 'x3283' as '3283'"; + variant "text 'x3284' as '3284'"; + variant "text 'x3285' as '3285'"; + variant "text 'x3286' as '3286'"; + variant "text 'x3287' as '3287'"; + variant "text 'x3288' as '3288'"; + variant "text 'x3289' as '3289'"; + variant "text 'x3290' as '3290'"; + variant "text 'x3291' as '3291'"; + variant "text 'x3292' as '3292'"; + variant "text 'x3293' as '3293'"; + variant "text 'x3294' as '3294'"; + variant "text 'x3295' as '3295'"; + variant "text 'x3296' as '3296'"; + variant "text 'x3297' as '3297'"; + variant "text 'x3298' as '3298'"; + variant "text 'x3299' as '3299'"; + variant "text 'x3300' as '3300'"; + variant "text 'x3301' as '3301'"; + variant "text 'x3302' as '3302'"; + variant "text 'x3303' as '3303'"; + variant "text 'x3304' as '3304'"; + variant "text 'x3305' as '3305'"; + variant "text 'x3306' as '3306'"; + variant "text 'x3307' as '3307'"; + variant "text 'x3308' as '3308'"; + variant "text 'x3309' as '3309'"; + variant "text 'x3310' as '3310'"; + variant "text 'x3311' as '3311'"; + variant "text 'x3312' as '3312'"; + variant "text 'x3313' as '3313'"; + variant "text 'x3314' as '3314'"; + variant "text 'x3315' as '3315'"; + variant "text 'x3316' as '3316'"; + variant "text 'x3317' as '3317'"; + variant "text 'x3318' as '3318'"; + variant "text 'x3319' as '3319'"; + variant "text 'x3320' as '3320'"; + variant "text 'x3321' as '3321'"; + variant "text 'x3322' as '3322'"; + variant "text 'x3323' as '3323'"; + variant "text 'x3324' as '3324'"; + variant "text 'x3325' as '3325'"; + variant "text 'x3326' as '3326'"; + variant "text 'x3327' as '3327'"; + variant "text 'x3328' as '3328'"; + variant "text 'x3329' as '3329'"; + variant "text 'x3330' as '3330'"; + variant "text 'x3331' as '3331'"; + variant "text 'x3332' as '3332'"; + variant "text 'x3333' as '3333'"; + variant "text 'x3334' as '3334'"; + variant "text 'x3335' as '3335'"; + variant "text 'x3336' as '3336'"; + variant "text 'x3337' as '3337'"; + variant "text 'x3338' as '3338'"; + variant "text 'x3339' as '3339'"; + variant "text 'x3340' as '3340'"; + variant "text 'x3341' as '3341'"; + variant "text 'x3342' as '3342'"; + variant "text 'x3343' as '3343'"; + variant "text 'x3344' as '3344'"; + variant "text 'x3345' as '3345'"; + variant "text 'x3346' as '3346'"; + variant "text 'x3347' as '3347'"; + variant "text 'x3348' as '3348'"; + variant "text 'x3349' as '3349'"; + variant "text 'x3350' as '3350'"; + variant "text 'x3351' as '3351'"; + variant "text 'x3352' as '3352'"; + variant "text 'x3353' as '3353'"; + variant "text 'x3354' as '3354'"; + variant "text 'x3355' as '3355'"; + variant "text 'x3356' as '3356'"; + variant "text 'x3357' as '3357'"; + variant "text 'x3358' as '3358'"; +}; + + +/* This enumeration presents the considered units of measure for CargoUnits, according to the United Nations codes for units of measure used in international trade. */ +/* kilogram. DESCRIPTION: kilogram */ +/* Metric tonne. DESCRIPTION: Metric tonne */ +/* other. DESCRIPTION: Any other unit not mentioned above */ +/* non-specified. DESCRIPTION: Unit not specified */ +type enumerated UnitsOfMeasureType +{ + kilogram, + metricTonne, + nonSpecified, + other +} +with { + variant "text 'kilogram' as capitalized"; + variant "text 'metricTonne' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the different means of weight for fisheries */ +/* Estimation. DESCRIPTION: Estimation */ +/* weighing on board. DESCRIPTION: weighing on board */ +type enumerated WeightMeansType +{ + eST, + wGH +} +with { + variant "text 'eST' as capitalized"; + variant "text 'wGH' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/cargo/' prefix 'cargo'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_document.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_document.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4072ba010d968802466392e67d033e056b130cd1 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_document.ttcn @@ -0,0 +1,1524 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_document.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - OrganizationDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - PersonDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - PersonDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - RiskDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - RiskDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - StreamType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - Stream.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - VesselDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - VesselDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - AttachedDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - CargoDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - CargoDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - CertificateDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - CertificateDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - Document.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - EventDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - EventDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - LocationDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - LocationDocument.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +// - OrganizationDocumentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/document/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_document { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +import from http_www_cise_eu_datamodel_v1_entity_location all; + + +/* This sub-class allows the identification and exchange of Organization related documents and material in electronic format. */ +type record OrganizationDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + OrganizationDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of documents that can be related to individual persons. */ +/* travel document. DESCRIPTION: Document that enables the entry and exit from one country to another (e.g. Passport). */ +/* national ID. DESCRIPTION: National identification document. */ +/* drivers license. DESCRIPTION: Document proving the right to drive a car. */ +/* seafarers ID document. DESCRIPTION: Special identification document for seafarers (e.g. SeamansBook) */ +/* crew certificates. DESCRIPTION: Certificate of ability to hold a certain post in vessel. */ +/* residence permit. DESCRIPTION: Document proving that a person has right to stay in the country (e.g. MigrationCard, CruiseShipIDCard (passangers)) */ +/* work permit. DESCRIPTION: Document proving that a person has right to work in the country (e.g.WorkCard, BlueCard) */ +/* work certificate. DESCRIPTION: Document proving the past employment of a person (e.g.EmploymentRecordBook) */ +/* health certificate. DESCRIPTION: Document stating the health status of the person. */ +/* birth certificate. DESCRIPTION: The official birth certificate of a person */ +/* death certificate. DESCRIPTION: The official death certificate of a person */ +/* criminal record. DESCRIPTION: Persons criminal record */ +/* photograph. DESCRIPTION: Photograph of a person. */ +/* other. DESCRIPTION: Any other document not mentioned above */ +/* non-specified. DESCRIPTION: Type of the document not specified */ +type enumerated PersonDocumentType +{ + birthCertificate, + crewCertificates, + criminalRecord, + deathCertificate, + driversLicense, + healthCertificate, + nationalID, + nonSpecified, + other, + photograph, + residencePermit, + seafarersIDDocument, + travelDocument, + workCertificate, + workPermit +} +with { + variant "text 'birthCertificate' as capitalized"; + variant "text 'crewCertificates' as capitalized"; + variant "text 'criminalRecord' as capitalized"; + variant "text 'deathCertificate' as capitalized"; + variant "text 'driversLicense' as capitalized"; + variant "text 'healthCertificate' as capitalized"; + variant "text 'nationalID' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'photograph' as capitalized"; + variant "text 'residencePermit' as capitalized"; + variant "text 'seafarersIDDocument' as capitalized"; + variant "text 'travelDocument' as capitalized"; + variant "text 'workCertificate' as capitalized"; + variant "text 'workPermit' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Person related documents and material in electronic format. */ +type record PersonDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + PersonDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of documents related to risks. */ +/* briefing notes. DESCRIPTION: */ +/* route description. DESCRIPTION: */ +/* facilitationanalysis. DESCRIPTION: */ +/* migrant profile. DESCRIPTION: */ +/* key developments. DESCRIPTION: */ +/* risk ratings. DESCRIPTION: */ +/* HAZMAT notification. DESCRIPTION: */ +/* risk assessment. DESCRIPTION: */ +/* organised crime documents. DESCRIPTION: */ +/* terrorist threat documents. DESCRIPTION: */ +/* ship hijacking suspicion report. DESCRIPTION: */ +/* crew hostaging suspicion report. DESCRIPTION: */ +/* weapons on board suspicion report. DESCRIPTION: */ +/* other. DESCRIPTION: */ +/* non-specified. DESCRIPTION: */ +type enumerated RiskDocumentType +{ + briefingNotes, + crewHostagingSuspicionReport, + facilitationanalysis, + hAZMATNotification, + keyDevelopments, + migrantProfile, + nonSpecified, + organisedCrimeDocuments, + other, + riskAssessment, + riskRatings, + routeDescription, + shipHijackingSuspicionReport, + terroristThreatDocuments, + weaponsOnBoardSuspicionReport +} +with { + variant "text 'briefingNotes' as capitalized"; + variant "text 'crewHostagingSuspicionReport' as capitalized"; + variant "text 'facilitationanalysis' as capitalized"; + variant "text 'hAZMATNotification' as capitalized"; + variant "text 'keyDevelopments' as capitalized"; + variant "text 'migrantProfile' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'organisedCrimeDocuments' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'riskAssessment' as capitalized"; + variant "text 'riskRatings' as capitalized"; + variant "text 'routeDescription' as capitalized"; + variant "text 'shipHijackingSuspicionReport' as capitalized"; + variant "text 'terroristThreatDocuments' as capitalized"; + variant "text 'weaponsOnBoardSuspicionReport' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Risk related documents and material in electronic format. */ +type record RiskDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + RiskDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* Types of streams. Each type is associated to a specific standard. */ +/* video. DESCRIPTION: Video stream in format MPEG4 H264 */ +/* image map. DESCRIPTION: Image map in format WMS */ +/* vectorial map. DESCRIPTION: Vectorial map in format WFS */ +/* radar. DESCRIPTION: VTS exchange format IVEF */ +/* AIS. DESCRIPTION: Stream format in ITU-RM1371 */ +type enumerated StreamType +{ + aIS, + imageMap, + radar, + vectorialMap, + video +} +with { + variant "text 'aIS' as capitalized"; + variant "text 'imageMap' as capitalized"; + variant "text 'radar' as capitalized"; + variant "text 'vectorialMap' as capitalized"; + variant "text 'video' as capitalized"; +}; + +/* +type Document_derivations Document +with { + variant "element"; +};*/ + + +/* Stream of information. */ +type record Stream +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + StreamType streamType optional, + XSD.AnyURI streamURI optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (streamType) "name as capitalized"; + variant (streamURI) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of electronic material that can be related to individual vessels. */ +/* international tonnage certificate. DESCRIPTION: An International Tonnage Certificate (1969) shall be issued to every ship, the gross and net tonnage of which have been determined in accordance with the Convention (Tonnage Convention, article 7). */ +/* international load line certificate. DESCRIPTION: An International Load Line Certificate shall be issued under the provisions of the International Convention on Load Lines, 1966, to every ship which has been surveyed and marked in accordance with the Convention or the Convention as modified by the 1988 LL Protocol, as appropriate (LL Convention, article 16; 1988 LL Protocol, article 16). */ +/* international load line exemption certificate. DESCRIPTION: An International Load Line Exemption Certificate shall be issued to any ship to which an exemption has been granted under and in accordance with article 6 of the Load Line Convention or the Convention as modified by the 1988 LL Protocol, as appropriate\n(LL Convention, article 6; 1988 LL Protocol, article 16) */ +/* coating technical file. DESCRIPTION: A Coating Technical File, containing specifications of the coating system applied to dedicated seawater ballast tanks in all types of ships and double-side skin spaces of bulk carriers of 150 m in length and upwards, record of the shipyard's and shipowner's coating work, detailed criteria for coating sections, job specifications, inspection, maintenance and repair, shall be kept on board and maintained throughout the life of the ship\n(SOLAS 1974, regulation II-1/3-2; Performance standard for protective coatings for dedicated seawater ballast tanks in all types of ships and double-side skin spaces of bulk carriers (resolution MSC.215(82))) */ +/* construction drawings. DESCRIPTION: A set of as-built construction drawings and other plans showing any subsequent structural alterations shall be kept on board a ship constructed on or after 1 January 2007\n(SOLAS 1974, regulation II-1/3-7; MSC/Circ.1135 on As-built construction drawings to be maintained on board the ship and ashore) */ +/* ship construction file. DESCRIPTION: A Ship Construction File with specific information should be kept on board oil tankers of 150 m in length and above and bulk carriers of 150 m in length and above, constructed with single deck, top-side tanks and hopper side tanks in cargo spaces, excluding ore carriers and combination carriers:\n.1 for which the building contract is placed on or after 1 July 2016;\n.2 in the absence of a building contract, the keels of which are laid or which are at a similar stage of construction on or after 1 July 2017; or\n.3 the delivery of which is on or after 1 July 2020 shall carry a Ship Construction File containing information in accordance with regulations and guidelines,\nand updated as appropriate throughout the ship's life in order to facilitate safe operation, maintenance, survey, repair and emergency measures.\n(SOLAS 1974, regulation II-1/3-10; MSC.1/Circ.1343 on Guidelines for the information to be included in a Ship Construction File) */ +/* intact stability booklet. DESCRIPTION: Every passenger ship regardless of size and every cargo ship of 24 metres and over shall be inclined on completion and the elements of their stability determined. The master shall be supplied with a Stability Booklet containing such information as is necessary to enable him, by rapid and simple procedures, to obtain accurate guidance as to the stability of the ship under varying conditions of service. For bulk carriers, the information required in a bulk carrier booklet may be contained in the stability booklet.\n(SOLAS 1974, regulations II-1/5 and II-1/5-1; LL Convention; 1988 LL Protocol, regulation 10) */ +/* damage control plans and booklets. DESCRIPTION: On passenger and cargo ships, there shall be permanently exhibited plans showing clearly for each deck and hold the boundaries of the watertight compartments, the openings therein with the means of closure and position of any controls thereof, and the arrangements for the correction of any list due to flooding. Booklets containing the aforementioned information shall be made available to the officers of the ship. */ +/* minimum safe manning document. DESCRIPTION: Every ship to which chapter I of the Convention applies shall be provided with an appropriate safe manning document or equivalent issued by the Administration as evidence of the minimum safe manning.\n(SOLAS 1974, regulation V/14.2) */ +/* fire safety training manual. DESCRIPTION: A training manual shall be written in the working language of the ship and shall be provided in each crew mess room and recreation room or in each crew cabin. The manual shall contain the instructions and information required in regulation II-2/15.2.3.4. Part of such information may be provided in the form of audio-visual aids in lieu of the manual.\n(SOLAS 1974, regulation II-2/15.2.3) */ +/* fire control plan booklet. DESCRIPTION: General arrangement plans shall be permanently exhibited for the guidance of the ship's officers, showing clearly for each deck the control stations, the various fire sections together with particulars of the fire detection and fire alarm systems and the fire-extinguishing appliances, etc. Alternatively, at the discretion of the Administration, the aforementioned details may be set out in a booklet, a copy of which shall be supplied to each officer, and one copy shall at all times be available on board in an accessible position. Plans and booklets shall be kept up to date; any alterations shall be recorded as soon as practicable. A duplicate set of fire control plans or a booklet containing such plans shall be permanently stored in a prominently marked weathertight enclosure outside the deckhouse for the assistance of shore-side fire-fighting personnel.\n(SOLAS 1974, regulations II-2/15.2.4 and II-2/15.3.2) */ +/* onboard training and drills record. DESCRIPTION: Fire drills shall be conducted and recorded in accordance with the provisions of regulations III/19.3 and III/19.5.\n(SOLAS 1974, regulation II-2/15.2.2.5) */ +/* fire safety operational booklet. DESCRIPTION: The fire safety operational booklet shall contain the necessary information and instructions for the safe operation of the ship and cargo handling operations in relation to fire safety. The booklet shall be written in the working language of the ship and be provided in each crew mess room and recreation room or in each crew cabin. The booklet may be combined with the fire safety training manuals required in regulation II-2/15.2.3.\n(SOLAS 1974, regulation II-2/16.2) */ +/* maintenance plans. DESCRIPTION: The maintenance plan shall include the necessary information about fire protection systems and fire-fighting systems and appliances as required under regulation II-2/14.2.2. For tankers, additional requirements are referred to in regulation II-2/14.4.\n(SOLAS 1974, regulations II-2/14.2.2 and II-2/14.4) */ +/* training manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* records of navigational activities. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* manoeuvring booklet. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificates for masters officers or ratings. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* records of hours of rest. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international oil pollution prevention certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* oil record book. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship board oil pollution emergency plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international sewage pollution prevention certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* garbage management plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* garbage record book. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* voyage data recorder system certificate of compliance. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo securing manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* document of compliance. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* safety management certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international ship security certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* interim international ship security certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship security plan and associated records. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* continuous synopsis record. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international anti fouling system certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* declaration on anti fouling system. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international air pollution prevention certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ozone depleting substances record book. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* fuel oil change over procedure and logbook. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* manufacturers operating manual for incinerators. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* bunker delivery noe and representative sample. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* technical file- marine diesel engine. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* record book of engine parameters. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* exemption certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* LRIT conformance test report. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* passenger ship safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* specia trade passenger ship safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* special trade passenger ship space certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* search and rescue cooperation plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* list of operational limitations. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* decision support system for masters. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo ship safety construction certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo ship safety equipment certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo ship safety radio certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo ship safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* authorization for the carriage of grain. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of insurance for oil pollution damage. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of insurance for bunker oil pollution damage. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* enhanced survey report file. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* record of oil discharge monitoring and control system. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* oil discharge monitoring and control operational manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship structure access manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* bulk carrier booklet. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* crude oil washing operation and equipment manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* condition assessment scheme statement of compliance. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* subdivision and stability information. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* VOC management plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international pollution prevention certificate for noxious liquid substances. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo record book. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* procedures and arrangements manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship board marine pollution emergency plan for noxious liquid substances. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of fitness for the carriage of dangerous chemicals in bulk. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international certificate of fitness for the carriage of dangerous chemicals in bulk. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of fitness for the carriage of liquified gases in bulk. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international certificate of fitness for the carriage of liquified gases in bulk. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* high speed craft safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* permit to operate high speed craft. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* compliance with special requirements for ships carrying dangerous goods. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* dangerous goods manifest. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* dangerous good stowage plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international certificate of fitness for carriage of INF cargo. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* nuclear cargo ship safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* nuclear passenger ship safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* special purpose ship safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* off shore supply vessel document of compliance. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of fitness for off shore support vessels. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* diving system safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* dynamically supported craft construction and equipment certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* mobile off shore drilling unit safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* wing in ground craft safety certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* permit to operate WIG craft. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* noise survey report. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* maritime declaration of health. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* crew list. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* passengers list. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo declaration. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ships stores declaration. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* general declaration. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* crews effects declaration. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* emergency towing procedures. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* deck log book. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* operating and maintenance manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* A amax ratio information. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* documention evaluation of the alternative design and arrangements. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* instruction manual for inert gas systems. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* muster list. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* emergency instructions. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship specific plans and procedures for recovery of persons from the water. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* training manual for lifesaving appliances. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* instructions for on board maintenance of life saving appliances. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* radio record. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* AIS test report. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international code of signals. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* deviation curve for magnetic process. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* nautical publications. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* material safety data sheets. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* cargo handling booklet. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* shipboard emergency plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* high speed craft operating manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* route operational manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* training manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* maintenance and servicing manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* type rafting certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* copy of IBC code. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* copy of IGC code. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* statement of compliance with CAS. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* dedicated clean ballast tank operational manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* operations and equipment manual for crude oil washing systems. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* record of oil discharge monitoring and control system for the last ballast voyage. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* oil discharge monitoring and control system operational manual. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* damage survival capability information. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship to ship operations plans. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* result of calculation of moderate rate of discharge in accordance with MEPC157. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* engine international air pollution prevention certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* international energy efficiency certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* list of equipment containing ozone depleting substances. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* fuel oil changeover procedures and logbook. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship energy efficiency management plan. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* energy efficiency design index technical file. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* maritime labour certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of compliance for ILO92. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of compliance for ILO133. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* medical certificate for ILO73. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* load test certificate for ILO152. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* declaration of maritime labour compliance. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* register book for ILO152. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* ship sanitation control exemption certificate. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* radio station license. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* radio service document. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* certificate of registry. DESCRIPTION: refer to document: IMO FSI 21/18, Report to the Maritime Safety Committee and the Marine Environment Protection Committee; ANNEX 1, draft FAL.2-MEPC.1-MSC.1 Circular on list of Certificates and Documents required to be carried on board ships */ +/* other. DESCRIPTION: Any other type of document not mentioned above */ +/* non-specified. DESCRIPTION: Type of the document not specified */ +type enumerated VesselDocumentType +{ + aAmaxRatioInformation, + aISTestReport, + authorizationForTheCarriageOfGrain, + bulkCarrierBooklet, + bunkerDeliveryNoeAndRepresentativeSample, + cargoDeclaration, + cargoHandlingBooklet, + cargoRecordBook, + cargoSecuringManual, + cargoShipSafetyCertificate, + cargoShipSafetyConstructionCertificate, + cargoShipSafetyEquipmentCertificate, + cargoShipSafetyRadioCertificate, + certificateOfComplianceForILO133, + certificateOfComplianceForILO92, + certificateOfFitnessForOffShoreSupportVessels, + certificateOfFitnessForTheCarriageOfDangerousChemicalsInBulk, + certificateOfFitnessForTheCarriageOfLiquifiedGasesInBulk, + certificateOfInsuranceForBunkerOilPollutionDamage, + certificateOfInsuranceForOilPollutionDamage, + certificateOfRegistry, + certificatesForMastersOfficersOrRatings, + coatingTechnicalFile, + complianceWithSpecialRequirementsForShipsCarryingDangerousGoods, + conditionAssessmentSchemeStatementOfCompliance, + constructionDrawings, + continuousSynopsisRecord, + copyOfIBCCode, + copyOfIGCCode, + crewList, + crewsEffectsDeclaration, + crudeOilWashingOperationAndEquipmentManual, + damageControlPlansAndBooklets, + damageSurvivalCapabilityInformation, + dangerousGoodStowagePlan, + dangerousGoodsManifest, + decisionSupportSystemForMasters, + deckLogBook, + declarationOfMaritimeLabourCompliance, + declarationOnAntiFoulingSystem, + dedicatedCleanBallastTankOperationalManual, + deviationCurveForMagneticProcess, + divingSystemSafetyCertificate, + documentOfCompliance, + documentionEvaluationOfTheAlternativeDesignAndArrangements, + dynamicallySupportedCraftConstructionAndEquipmentCertificate, + emergencyInstructions, + emergency_towing_procedures, + energyEfficiencyDesignIndexTechnicalFile, + engineInternationalAirPollutionPreventionCertificate, + enhancedSurveyReportFile, + exemptionCertificate, + fireControlPlanBooklet, + fireSafetyOperationalBooklet, + fireSafetyTrainingManual, + fuelOilChangeOverProcedureAndLogbook, + fuelOilChangeoverProceduresAndLogbook, + garbageManagementPlan, + garbageRecordBook, + generalDeclaration, + highSpeedCraftOperatingManual, + highSpeedCraftSafetyCertificate, + instructionManualForInertGasSystems, + instructionsForOnBoardMaintenanceOfLifeSavingAppliances, + intactStabilityBooklet, + interimInternationalShipSecurityCertificate, + internationalAirPollutionPreventionCertificate, + internationalAntiFoulingSystemCertificate, + internationalCertificateOfFitnessForCarriageOfINFCargo, + internationalCertificateOfFitnessForTheCarriageOfDangerousChemicalsInBulk, + internationalCertificateOfFitnessForTheCarriageOfLiquifiedGasesInBulk, + internationalCodeOfSignals, + internationalEnergyEfficiencyCertificate, + internationalLoadLineCertificate, + internationalLoadLineExemptionCertificate, + internationalOilPollutionPreventionCertificate, + internationalPollutionPreventionCertificateForNoxiousLiquidSubstances, + internationalSewagePollutionPreventionCertificate, + internationalShipSecurityCertificate, + internationalTonnageCertificate, + lRITConformanceTestReport, + listOfEquipmentContainingOzoneDepletingSubstances, + listOfOperationalLimitations, + loadTestCertificateForILO152, + maintenanceAndServicingManual, + maintenancePlans, + manoeuvringBooklet, + manufacturersOperatingManualForIncinerators, + maritimeDeclarationOfHealth, + maritimeLabourCertificate, + materialSafetyDataSheets, + medicalCertificateForILO73, + minimumSafeManningDocument, + mobileOffShoreDrillingUnitSafetyCertificate, + musterList, + nauticalPublications, + noiseSurveyReport, + nonSpecified, + nuclearCargoShipSafetyCertificate, + nuclearPassengerShipSafetyCertificate, + offShoreSupplyVesselDocumentOfCompliance, + oilDischargeMonitoringAndControlOperationalManual, + oilDischargeMonitoringAndControlSystemOperationalManual, + oilRecordBook, + onboardTrainingAndDrillsRecord, + operatingAndMaintenanceManual, + operationsAndEquipmentManualForCrudeOilWashingSystems, + other, + ozoneDepletingSubstancesRecordBook, + passengerShipSafetyCertificate, + passengersList, + permitToOperateHighSpeedCraft, + permitToOperateWIGCraft, + proceduresAndArrangementsManual, + radioRecord, + radioServiceDocument, + radioStationLicense, + recordBookOfEngineParameters, + recordOfOilDischargeMonitoringAndControlSystem, + recordOfOilDischargeMonitoringAndControlSystemForTheLastBallastVoyage, + recordsOfHoursOfRest, + recordsOfNavigationalActivities, + registerBookForILO152, + resultOfCalculationOfModerateRateOfDischargeInAccordanceWithMEPC157, + routeOperationalManual, + safetyManagementCertificate, + searchAndRescueCooperationPlan, + shipBoardMarinePollutionEmergencyPlanForNoxiousLiquidSubstances, + shipBoardOilPollutionEmergencyPlan, + shipConstructionFile, + shipEnergyEfficiencyManagementPlan, + shipSanitationControlExemptionCertificate, + shipSecurityPlanAndAssociatedRecords, + shipSpecificPlansAndProceduresForRecoveryOfPersonsFromTheWater, + shipStructureAccessManual, + shipToShipOperationsPlans, + shipboardEmergencyPlan, + shipsStoresDeclaration, + speciaTradePassengerShipSafetyCertificate, + specialPurposeShipSafetyCertificate, + specialTradePassengerShipSpaceCertificate, + statementOfComplianceWithCAS, + subdivisionAndStabilityInformation, + technicalFile_MarineDieselEngine, + trainingManual, + trainingManualForLifesavingAppliances, + trainingManual_1, + typeRaftingCertificate, + vOCManagementPlan, + voyageDataRecorderSystemCertificateOfCompliance, + wingInGroundCraftSafetyCertificate +} +with { + variant "text 'aAmaxRatioInformation' as capitalized"; + variant "text 'aISTestReport' as capitalized"; + variant "text 'authorizationForTheCarriageOfGrain' as capitalized"; + variant "text 'bulkCarrierBooklet' as capitalized"; + variant "text 'bunkerDeliveryNoeAndRepresentativeSample' as capitalized"; + variant "text 'cargoDeclaration' as capitalized"; + variant "text 'cargoHandlingBooklet' as capitalized"; + variant "text 'cargoRecordBook' as capitalized"; + variant "text 'cargoSecuringManual' as capitalized"; + variant "text 'cargoShipSafetyCertificate' as capitalized"; + variant "text 'cargoShipSafetyConstructionCertificate' as capitalized"; + variant "text 'cargoShipSafetyEquipmentCertificate' as capitalized"; + variant "text 'cargoShipSafetyRadioCertificate' as capitalized"; + variant "text 'certificateOfComplianceForILO133' as capitalized"; + variant "text 'certificateOfComplianceForILO92' as capitalized"; + variant "text 'certificateOfFitnessForOffShoreSupportVessels' as capitalized"; + variant "text 'certificateOfFitnessForTheCarriageOfDangerousChemicalsInBulk' as capitalized"; + variant "text 'certificateOfFitnessForTheCarriageOfLiquifiedGasesInBulk' as capitalized"; + variant "text 'certificateOfInsuranceForBunkerOilPollutionDamage' as capitalized"; + variant "text 'certificateOfInsuranceForOilPollutionDamage' as capitalized"; + variant "text 'certificateOfRegistry' as capitalized"; + variant "text 'certificatesForMastersOfficersOrRatings' as capitalized"; + variant "text 'coatingTechnicalFile' as capitalized"; + variant "text 'complianceWithSpecialRequirementsForShipsCarryingDangerousGoods' as capitalized"; + variant "text 'conditionAssessmentSchemeStatementOfCompliance' as capitalized"; + variant "text 'constructionDrawings' as capitalized"; + variant "text 'continuousSynopsisRecord' as capitalized"; + variant "text 'copyOfIBCCode' as capitalized"; + variant "text 'copyOfIGCCode' as capitalized"; + variant "text 'crewList' as capitalized"; + variant "text 'crewsEffectsDeclaration' as capitalized"; + variant "text 'crudeOilWashingOperationAndEquipmentManual' as capitalized"; + variant "text 'damageControlPlansAndBooklets' as capitalized"; + variant "text 'damageSurvivalCapabilityInformation' as capitalized"; + variant "text 'dangerousGoodStowagePlan' as capitalized"; + variant "text 'dangerousGoodsManifest' as capitalized"; + variant "text 'decisionSupportSystemForMasters' as capitalized"; + variant "text 'deckLogBook' as capitalized"; + variant "text 'declarationOfMaritimeLabourCompliance' as capitalized"; + variant "text 'declarationOnAntiFoulingSystem' as capitalized"; + variant "text 'dedicatedCleanBallastTankOperationalManual' as capitalized"; + variant "text 'deviationCurveForMagneticProcess' as capitalized"; + variant "text 'divingSystemSafetyCertificate' as capitalized"; + variant "text 'documentOfCompliance' as capitalized"; + variant "text 'documentionEvaluationOfTheAlternativeDesignAndArrangements' as capitalized"; + variant "text 'dynamicallySupportedCraftConstructionAndEquipmentCertificate' as capitalized"; + variant "text 'emergencyInstructions' as capitalized"; + variant "text 'emergency_towing_procedures' as 'Emergency towing procedures'"; + variant "text 'energyEfficiencyDesignIndexTechnicalFile' as capitalized"; + variant "text 'engineInternationalAirPollutionPreventionCertificate' as capitalized"; + variant "text 'enhancedSurveyReportFile' as capitalized"; + variant "text 'exemptionCertificate' as capitalized"; + variant "text 'fireControlPlanBooklet' as capitalized"; + variant "text 'fireSafetyOperationalBooklet' as capitalized"; + variant "text 'fireSafetyTrainingManual' as capitalized"; + variant "text 'fuelOilChangeOverProcedureAndLogbook' as capitalized"; + variant "text 'fuelOilChangeoverProceduresAndLogbook' as capitalized"; + variant "text 'garbageManagementPlan' as capitalized"; + variant "text 'garbageRecordBook' as capitalized"; + variant "text 'generalDeclaration' as capitalized"; + variant "text 'highSpeedCraftOperatingManual' as capitalized"; + variant "text 'highSpeedCraftSafetyCertificate' as capitalized"; + variant "text 'instructionManualForInertGasSystems' as capitalized"; + variant "text 'instructionsForOnBoardMaintenanceOfLifeSavingAppliances' as capitalized"; + variant "text 'intactStabilityBooklet' as capitalized"; + variant "text 'interimInternationalShipSecurityCertificate' as capitalized"; + variant "text 'internationalAirPollutionPreventionCertificate' as capitalized"; + variant "text 'internationalAntiFoulingSystemCertificate' as capitalized"; + variant "text 'internationalCertificateOfFitnessForCarriageOfINFCargo' as capitalized"; + variant "text 'internationalCertificateOfFitnessForTheCarriageOfDangerousChemicalsInBulk' as capitalized"; + variant "text 'internationalCertificateOfFitnessForTheCarriageOfLiquifiedGasesInBulk' as capitalized"; + variant "text 'internationalCodeOfSignals' as capitalized"; + variant "text 'internationalEnergyEfficiencyCertificate' as capitalized"; + variant "text 'internationalLoadLineCertificate' as capitalized"; + variant "text 'internationalLoadLineExemptionCertificate' as capitalized"; + variant "text 'internationalOilPollutionPreventionCertificate' as capitalized"; + variant "text 'internationalPollutionPreventionCertificateForNoxiousLiquidSubstances' as capitalized"; + variant "text 'internationalSewagePollutionPreventionCertificate' as capitalized"; + variant "text 'internationalShipSecurityCertificate' as capitalized"; + variant "text 'internationalTonnageCertificate' as capitalized"; + variant "text 'lRITConformanceTestReport' as capitalized"; + variant "text 'listOfEquipmentContainingOzoneDepletingSubstances' as capitalized"; + variant "text 'listOfOperationalLimitations' as capitalized"; + variant "text 'loadTestCertificateForILO152' as capitalized"; + variant "text 'maintenanceAndServicingManual' as capitalized"; + variant "text 'maintenancePlans' as capitalized"; + variant "text 'manoeuvringBooklet' as capitalized"; + variant "text 'manufacturersOperatingManualForIncinerators' as capitalized"; + variant "text 'maritimeDeclarationOfHealth' as capitalized"; + variant "text 'maritimeLabourCertificate' as capitalized"; + variant "text 'materialSafetyDataSheets' as capitalized"; + variant "text 'medicalCertificateForILO73' as capitalized"; + variant "text 'minimumSafeManningDocument' as capitalized"; + variant "text 'mobileOffShoreDrillingUnitSafetyCertificate' as capitalized"; + variant "text 'musterList' as capitalized"; + variant "text 'nauticalPublications' as capitalized"; + variant "text 'noiseSurveyReport' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'nuclearCargoShipSafetyCertificate' as capitalized"; + variant "text 'nuclearPassengerShipSafetyCertificate' as capitalized"; + variant "text 'offShoreSupplyVesselDocumentOfCompliance' as capitalized"; + variant "text 'oilDischargeMonitoringAndControlOperationalManual' as capitalized"; + variant "text 'oilDischargeMonitoringAndControlSystemOperationalManual' as capitalized"; + variant "text 'oilRecordBook' as capitalized"; + variant "text 'onboardTrainingAndDrillsRecord' as capitalized"; + variant "text 'operatingAndMaintenanceManual' as capitalized"; + variant "text 'operationsAndEquipmentManualForCrudeOilWashingSystems' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'ozoneDepletingSubstancesRecordBook' as capitalized"; + variant "text 'passengerShipSafetyCertificate' as capitalized"; + variant "text 'passengersList' as capitalized"; + variant "text 'permitToOperateHighSpeedCraft' as capitalized"; + variant "text 'permitToOperateWIGCraft' as capitalized"; + variant "text 'proceduresAndArrangementsManual' as capitalized"; + variant "text 'radioRecord' as capitalized"; + variant "text 'radioServiceDocument' as capitalized"; + variant "text 'radioStationLicense' as capitalized"; + variant "text 'recordBookOfEngineParameters' as capitalized"; + variant "text 'recordOfOilDischargeMonitoringAndControlSystem' as capitalized"; + variant "text 'recordOfOilDischargeMonitoringAndControlSystemForTheLastBallastVoyage' as capitalized"; + variant "text 'recordsOfHoursOfRest' as capitalized"; + variant "text 'recordsOfNavigationalActivities' as capitalized"; + variant "text 'registerBookForILO152' as capitalized"; + variant "text 'resultOfCalculationOfModerateRateOfDischargeInAccordanceWithMEPC157' as capitalized"; + variant "text 'routeOperationalManual' as capitalized"; + variant "text 'safetyManagementCertificate' as capitalized"; + variant "text 'searchAndRescueCooperationPlan' as capitalized"; + variant "text 'shipBoardMarinePollutionEmergencyPlanForNoxiousLiquidSubstances' as capitalized"; + variant "text 'shipBoardOilPollutionEmergencyPlan' as capitalized"; + variant "text 'shipConstructionFile' as capitalized"; + variant "text 'shipEnergyEfficiencyManagementPlan' as capitalized"; + variant "text 'shipSanitationControlExemptionCertificate' as capitalized"; + variant "text 'shipSecurityPlanAndAssociatedRecords' as capitalized"; + variant "text 'shipSpecificPlansAndProceduresForRecoveryOfPersonsFromTheWater' as capitalized"; + variant "text 'shipStructureAccessManual' as capitalized"; + variant "text 'shipToShipOperationsPlans' as capitalized"; + variant "text 'shipboardEmergencyPlan' as capitalized"; + variant "text 'shipsStoresDeclaration' as capitalized"; + variant "text 'speciaTradePassengerShipSafetyCertificate' as capitalized"; + variant "text 'specialPurposeShipSafetyCertificate' as capitalized"; + variant "text 'specialTradePassengerShipSpaceCertificate' as capitalized"; + variant "text 'statementOfComplianceWithCAS' as capitalized"; + variant "text 'subdivisionAndStabilityInformation' as capitalized"; + variant "text 'technicalFile_MarineDieselEngine' as 'TechnicalFile-MarineDieselEngine'"; + variant "text 'trainingManual' as capitalized"; + variant "text 'trainingManualForLifesavingAppliances' as capitalized"; + variant "text 'trainingManual_1' as 'TrainingManual '"; + variant "text 'typeRaftingCertificate' as capitalized"; + variant "text 'vOCManagementPlan' as capitalized"; + variant "text 'voyageDataRecorderSystemCertificateOfCompliance' as capitalized"; + variant "text 'wingInGroundCraftSafetyCertificate' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Vessel related documents and material in electronic format. */ +type record VesselDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + VesselDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + +/* +type Document_derivations Document +with { + variant "element"; +};*/ + + +type record AttachedDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional +} +with { + variant "abstract"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of documents related to cargo. */ +/* cargo manifest. DESCRIPTION: Basic information about the cargo. Would include also links to further information: bill of lading, cargo bill, liner way bill */ +/* VAT exception. DESCRIPTION: */ +/* entry summary declaration. DESCRIPTION: */ +/* IMOFAL form2 cargo declaration. DESCRIPTION: */ +/* IMOFAL form3 ships stores declaration. DESCRIPTION: */ +/* IMOFAL form4 crews effects declaration. DESCRIPTION: */ +/* notification of dangerous goods. DESCRIPTION: */ +/* IMOFAL form7 dangerous goods. DESCRIPTION: */ +/* single administrative document. DESCRIPTION: */ +/* catch certificate. DESCRIPTION: */ +/* fishing logbook. DESCRIPTION: */ +/* other. DESCRIPTION: */ +/* non-specified. DESCRIPTION: */ +type enumerated CargoDocumentType +{ + cargoManifest, + catchCertificate, + entrySummaryDeclaration, + fishingLogbook, + iMOFALForm2CargoDeclaration, + iMOFALForm3ShipsStoresDeclaration, + iMOFALForm4CrewsEffectsDeclaration, + iMOFALForm7DangerousGoods, + nonSpecified, + notificationOfDangerousGoods, + other, + singleAdministrativeDocument, + vATException +} +with { + variant "text 'cargoManifest' as capitalized"; + variant "text 'catchCertificate' as capitalized"; + variant "text 'entrySummaryDeclaration' as capitalized"; + variant "text 'fishingLogbook' as capitalized"; + variant "text 'iMOFALForm2CargoDeclaration' as capitalized"; + variant "text 'iMOFALForm3ShipsStoresDeclaration' as capitalized"; + variant "text 'iMOFALForm4CrewsEffectsDeclaration' as capitalized"; + variant "text 'iMOFALForm7DangerousGoods' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'notificationOfDangerousGoods' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'singleAdministrativeDocument' as capitalized"; + variant "text 'vATException' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Cargo related documents and material in electronic format. */ +type record CargoDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + CargoDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* tonnage certificate. DESCRIPTION: */ +/* load line certificate. DESCRIPTION: */ +/* minimum safe manning document. DESCRIPTION: */ +/* oil pollution prevention certificate. DESCRIPTION: */ +/* sewage pollution prevention certificate. DESCRIPTION: */ +/* VDR compliance certificate. DESCRIPTION: */ +/* ISM compliance document. DESCRIPTION: */ +/* safety management certificate. DESCRIPTION: */ +/* ISS certificate. DESCRIPTION: */ +/* PSS certificate. DESCRIPTION: */ +/* STPS sa certificate. DESCRIPTION: */ +/* STPS sp certificate. DESCRIPTION: */ +/* CSS construction certificate. DESCRIPTION: */ +/* CSS equipment certificate. DESCRIPTION: */ +/* CSS radio certificate. DESCRIPTION: */ +/* CSS certificate. DESCRIPTION: */ +/* grain authorization document. DESCRIPTION: */ +/* civil liability certificate. DESCRIPTION: */ +/* enhanced survey document. DESCRIPTION: */ +/* NLS certificate. DESCRIPTION: */ +/* bulk chemicals carriage certificate. DESCRIPTION: */ +/* int bulk chemicals carriage certificate. DESCRIPTION: */ +/* bulk liquid gas certificate. DESCRIPTION: */ +/* int bulk liquid gas certificate. DESCRIPTION: */ +/* HSC safety certificate. DESCRIPTION: */ +/* HSC operation permit. DESCRIPTION: */ +/* IMDG certificate. DESCRIPTION: */ +/* INF certificate. DESCRIPTION: */ +/* registry certificate. DESCRIPTION: */ +/* hull class certificate. DESCRIPTION: */ +/* engine class certificate. DESCRIPTION: */ +/* pand I certificate. DESCRIPTION: */ +/* ILO133 certificate. DESCRIPTION: */ +/* ILO92 certificate. DESCRIPTION: */ +/* ITF blue card. DESCRIPTION: */ +/* declaration of health. DESCRIPTION: */ +/* gas free certificate. DESCRIPTION: */ +/* de rat certificate. DESCRIPTION: */ +/* certificate. DESCRIPTION: */ +/* other. DESCRIPTION: */ +/* non-specified. DESCRIPTION: */ +type enumerated CertificateDocumentType +{ + bulkChemicalsCarriageCertificate, + bulkLiquidGasCertificate, + cSSCertificate, + cSSConstructionCertificate, + cSSEquipmentCertificate, + cSSRadioCertificate, + certificate, + civilLiabilityCertificate, + deRatCertificate, + declarationOfHealth, + engineClassCertificate, + enhancedSurveyDocument, + gasFreeCertificate, + grainAuthorizationDocument, + hSCOperationPermit, + hSCSafetyCertificate, + hullClassCertificate, + iLO133Certificate, + iLO92Certificate, + iMDGCertificate, + iNFCertificate, + iSMComplianceDocument, + iSSCertificate, + iTFBlueCard, + intBulkChemicalsCarriageCertificate, + intBulkLiquidGasCertificate, + loadLineCertificate, + minimumSafeManningDocument, + nLSCertificate, + nonSpecified, + oilPollutionPreventionCertificate, + other, + pSSCertificate, + pandICertificate, + registryCertificate, + sTPSSaCertificate, + sTPSSpCertificate, + safetyManagementCertificate, + sewagePollutionPreventionCertificate, + tonnageCertificate, + vDRComplianceCertificate +} +with { + variant "text 'bulkChemicalsCarriageCertificate' as capitalized"; + variant "text 'bulkLiquidGasCertificate' as capitalized"; + variant "text 'cSSCertificate' as capitalized"; + variant "text 'cSSConstructionCertificate' as capitalized"; + variant "text 'cSSEquipmentCertificate' as capitalized"; + variant "text 'cSSRadioCertificate' as capitalized"; + variant "text 'certificate' as capitalized"; + variant "text 'civilLiabilityCertificate' as capitalized"; + variant "text 'deRatCertificate' as capitalized"; + variant "text 'declarationOfHealth' as capitalized"; + variant "text 'engineClassCertificate' as capitalized"; + variant "text 'enhancedSurveyDocument' as capitalized"; + variant "text 'gasFreeCertificate' as capitalized"; + variant "text 'grainAuthorizationDocument' as capitalized"; + variant "text 'hSCOperationPermit' as capitalized"; + variant "text 'hSCSafetyCertificate' as capitalized"; + variant "text 'hullClassCertificate' as capitalized"; + variant "text 'iLO133Certificate' as capitalized"; + variant "text 'iLO92Certificate' as capitalized"; + variant "text 'iMDGCertificate' as capitalized"; + variant "text 'iNFCertificate' as capitalized"; + variant "text 'iSMComplianceDocument' as capitalized"; + variant "text 'iSSCertificate' as capitalized"; + variant "text 'iTFBlueCard' as capitalized"; + variant "text 'intBulkChemicalsCarriageCertificate' as capitalized"; + variant "text 'intBulkLiquidGasCertificate' as capitalized"; + variant "text 'loadLineCertificate' as capitalized"; + variant "text 'minimumSafeManningDocument' as capitalized"; + variant "text 'nLSCertificate' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'oilPollutionPreventionCertificate' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'pSSCertificate' as capitalized"; + variant "text 'pandICertificate' as capitalized"; + variant "text 'registryCertificate' as capitalized"; + variant "text 'sTPSSaCertificate' as capitalized"; + variant "text 'sTPSSpCertificate' as capitalized"; + variant "text 'safetyManagementCertificate' as capitalized"; + variant "text 'sewagePollutionPreventionCertificate' as capitalized"; + variant "text 'tonnageCertificate' as capitalized"; + variant "text 'vDRComplianceCertificate' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Certificate related documents and material in electronic format.||Subclass of Document. */ +type record CertificateDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + CertificateDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* The Document is one of the fundamental entities of the overall data model of the information sharing environment. A Document allows tracing and exchanging information in a persistent manner in almost any possible electronic format; this information is expected to provide details on and express specific associations between other Entity Classes such as Agents, Objects, Events, Risks, Locations etc. */ +type record Document +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; +}; + + +/* The Document is one of the fundamental entities of the overall data model of the information sharing environment. A Document allows tracing and exchanging information in a persistent manner in almost any possible electronic format; this information is expected to provide details on and express specific associations between other Entity Classes such as Agents, Objects, Events, Risks, Locations etc. */ +type union Document_derivations +{ + Document document, + AttachedDocument attachedDocument, + /* This sub-class allows the identification and exchange of Cargo related documents and material in electronic format. */ + CargoDocument cargoDocument, + /* This sub-class allows the identification and exchange of Certificate related documents and material in electronic format.||Subclass of Document. */ + CertificateDocument certificateDocument, + /* This sub-class allows the identification and exchange of Event related documents and material in electronic format. */ + EventDocument eventDocument, + /* This sub-class allows the identification and exchange of Location related documents and material in electronic format. */ + LocationDocument locationDocument, + /* This sub-class allows the identification and exchange of Organization related documents and material in electronic format. */ + OrganizationDocument organizationDocument, + /* This sub-class allows the identification and exchange of Person related documents and material in electronic format. */ + PersonDocument personDocument, + /* This sub-class allows the identification and exchange of Risk related documents and material in electronic format. */ + RiskDocument riskDocument, + /* Stream of information. */ + Stream stream, + /* This sub-class allows the identification and exchange of Vessel related documents and material in electronic format. */ + VesselDocument vesselDocument +} +with { + variant "useType"; + variant (document) "name as capitalized"; + variant (attachedDocument) "name as capitalized"; + variant (cargoDocument) "name as capitalized"; + variant (certificateDocument) "name as capitalized"; + variant (eventDocument) "name as capitalized"; + variant (locationDocument) "name as capitalized"; + variant (organizationDocument) "name as capitalized"; + variant (personDocument) "name as capitalized"; + variant (riskDocument) "name as capitalized"; + variant (stream) "name as capitalized"; + variant (vesselDocument) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of documents related to different events (movements, actions, anomalies, incidents). */ +/* regional monitors. DESCRIPTION: Observation reports from different EU regions related to issues reported via EUROSUR (e.g. irregular migration, related cross-border crime, crisis, other). */ +/* incident report. DESCRIPTION: Documents containing the detailed report of incidents reported via SSN (e.g. waste, situations , pollution, containers or packages drifting at sea, failed vessel notifications, VTS rules infringements, banned ships, insurance failures, anomaly reports by pilots or ports). */ +/* environmental incident document. DESCRIPTION: Documents and reports that describe environmental icidents (e.g. oil pollution) */ +/* evacuation orders. DESCRIPTION: Detailed orders related to evacuation situations. */ +/* accident report. DESCRIPTION: Detailed reports of accidents in sea. */ +/* hazards mapping and tracking humanitarian assistance. DESCRIPTION: */ +/* organized crime documents. DESCRIPTION: */ +/* terrorist thread documents. DESCRIPTION: */ +/* ship hijacking suspicion report. DESCRIPTION: */ +/* crew hostaging suspicion report. DESCRIPTION: */ +/* weapons onboard suspicion report. DESCRIPTION: */ +/* initial piracy attack report. DESCRIPTION: Initial report about piracy attack as defined in IMO MSC Circular 1333. */ +/* follow-up piracy attack report. DESCRIPTION: Follow-up report about piracy attack as defined in IMO MSC Circular 1333. */ +/* other. DESCRIPTION: Any other document related to events not mentioned above */ +/* non-specified. DESCRIPTION: Type of document not specified. */ +type enumerated EventDocumentType +{ + accidentReport, + crewHostagingSuspicionReport, + environmentalIncidentDocument, + evacuationOrders, + followUpPiracyAttackReport, + hazardsMappingAndTrackingHumanitarianAssistance, + incidentReport, + initialPiracyAttackReport, + nonSpecified, + organizedCrimeDocuments, + other, + regionalMonitors, + shipHijackingSuspicionReport, + terroristThreadDocuments, + weaponsOnboardSuspicionReport +} +with { + variant "text 'accidentReport' as capitalized"; + variant "text 'crewHostagingSuspicionReport' as capitalized"; + variant "text 'environmentalIncidentDocument' as capitalized"; + variant "text 'evacuationOrders' as capitalized"; + variant "text 'followUpPiracyAttackReport' as capitalized"; + variant "text 'hazardsMappingAndTrackingHumanitarianAssistance' as capitalized"; + variant "text 'incidentReport' as capitalized"; + variant "text 'initialPiracyAttackReport' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'organizedCrimeDocuments' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'regionalMonitors' as capitalized"; + variant "text 'shipHijackingSuspicionReport' as capitalized"; + variant "text 'terroristThreadDocuments' as capitalized"; + variant "text 'weaponsOnboardSuspicionReport' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Event related documents and material in electronic format. */ +type record EventDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + EventDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of documents related to a location. */ +/* port law. DESCRIPTION: */ +/* port regulations. DESCRIPTION: */ +/* port services. DESCRIPTION: */ +/* port facilities. DESCRIPTION: */ +/* port dues. DESCRIPTION: */ +/* port infrastructures. DESCRIPTION: */ +/* port planning and development. DESCRIPTION: */ +/* operational infrastructures. DESCRIPTION: */ +/* maritime access. DESCRIPTION: */ +/* marine services and facilities. DESCRIPTION: */ +/* harbormaster. DESCRIPTION: */ +/* hydrographic map. DESCRIPTION: */ +/* maritime infrastructures. DESCRIPTION: */ +/* meteorological maps. DESCRIPTION: */ +/* oceanographic maps per season. DESCRIPTION: */ +/* legal maps. DESCRIPTION: */ +/* marine resources. DESCRIPTION: */ +/* marine resources potential. DESCRIPTION: */ +/* remnent pollution. DESCRIPTION: */ +/* seabed hazards. DESCRIPTION: */ +/* natura2000 areas. DESCRIPTION: */ +/* areas MARPOL. DESCRIPTION: */ +/* location of areas with rich archaeological heritage. DESCRIPTION: */ +/* location of PSSA particulary sensitive areas. DESCRIPTION: */ +/* location of other types of marine protected areas. DESCRIPTION: */ +/* location of sensitive areas for cetaceans and type of restrictions for maritime operations according national laws. DESCRIPTION: */ +/* change frequency of observations of endangered and protected species. DESCRIPTION: */ +/* locations of migratory paths or routes. DESCRIPTION: */ +/* sea state wind and current information. DESCRIPTION: */ +/* sea surface temperature information. DESCRIPTION: */ +/* air temperature information. DESCRIPTION: */ +/* visibility information. DESCRIPTION: */ +/* wave height information. DESCRIPTION: */ +/* global region tides information. DESCRIPTION: */ +/* ice information. DESCRIPTION: */ +/* currentsm salinity temperature opacity at different depth. DESCRIPTION: */ +/* chemical concentrations in water column. DESCRIPTION: */ +/* elaborated sectoral information. DESCRIPTION: */ +/* emerging areas rich in nutrients and particular marine currents. DESCRIPTION: */ +/* real time closure of fishing areas. DESCRIPTION: */ +/* information about past piracy incidents. DESCRIPTION: */ +/* maps of piracy incident distribution. DESCRIPTION: */ +/* maps of ship traffic distribution per ship type and per season. DESCRIPTION: */ +/* shore bases of pirates and their current activity level. DESCRIPTION: */ +/* actual locations of merchant and fishing ships. DESCRIPTION: */ +/* actual locations of naval patrol ships. DESCRIPTION: */ +/* pirate ships atacks locations. DESCRIPTION: */ +/* locations of bases of patrol assets. DESCRIPTION: */ +/* maps of past non-piracy incidents distribution not only on sea but also on the shores. DESCRIPTION: */ +/* other. DESCRIPTION: */ +/* non-specified. DESCRIPTION: */ +type enumerated LocationDocumentType +{ + actualLocationsOfMerchantAndFishingShips, + actualLocationsOfNavalPatrolShips, + airTemperatureInformation, + areasMARPOL, + changeFrequencyOfObservationsOfEndangeredAndProtectedSpecies, + chemicalConcentrationsInWaterColumn, + currentsmSalinityTemperatureOpacityAtDifferentDepth, + elaboratedSectoralInformation, + emergingAreasRichInNutrientsAndParticularMarineCurrents, + globalRegionTidesInformation, + harbormaster, + hydrographicMap, + iceInformation, + informationAboutPast_piracy_incidents, + legalMaps, + locationOfAreasWithRichArchaeologicalHeritage, + locationOfOtherTypesOfMarineProtectedAreas, + locationOfPSSAParticularySensitiveAreas, + locationOfSensitiveAreasForCetaceansAndTypeOfRestrictionsForMaritimeOperationsAccordingNationalLaws, + locationsOfBasesOfPatrolAssets, + locationsOfMigratoryPathsOrRoutes, + mapsOfPastNonPiracyIncidentsDistributionNotOnlyOnSeaButAlsoOnTheShores, + mapsOfPiracyIncidentDistribution, + mapsOfShipTrafficDistributionPerShipTypeAndPerSeason, + marineResources, + marineResourcesPotential, + marineServicesAndFacilities, + maritimeAccess, + maritimeInfrastructures, + meteorologicalMaps, + natura2000Areas, + nonSpecified, + oceanographicMapsPerSeason, + operationalInfrastructures, + other, + pirateShipsAtacksLocations, + portDues, + portFacilities, + portInfrastructures, + portLaw, + portPlanningAndDevelopment, + portRegulations, + portServices, + realTimeClosureOfFishingAreas, + remnentPollution, + seaStateWindAndCurrentInformation, + seaSurfaceTemperatureInformation, + seabedHazards, + shoreBasesOfPiratesAndTheirCurrentActivityLevel, + visibilityInformation, + waveHeightInformation +} +with { + variant "text 'actualLocationsOfMerchantAndFishingShips' as capitalized"; + variant "text 'actualLocationsOfNavalPatrolShips' as capitalized"; + variant "text 'airTemperatureInformation' as capitalized"; + variant "text 'areasMARPOL' as capitalized"; + variant "text 'changeFrequencyOfObservationsOfEndangeredAndProtectedSpecies' as capitalized"; + variant "text 'chemicalConcentrationsInWaterColumn' as capitalized"; + variant "text 'currentsmSalinityTemperatureOpacityAtDifferentDepth' as capitalized"; + variant "text 'elaboratedSectoralInformation' as capitalized"; + variant "text 'emergingAreasRichInNutrientsAndParticularMarineCurrents' as capitalized"; + variant "text 'globalRegionTidesInformation' as capitalized"; + variant "text 'harbormaster' as capitalized"; + variant "text 'hydrographicMap' as capitalized"; + variant "text 'iceInformation' as capitalized"; + variant "text 'informationAboutPast_piracy_incidents' as 'InformationAboutPast piracy incidents'"; + variant "text 'legalMaps' as capitalized"; + variant "text 'locationOfAreasWithRichArchaeologicalHeritage' as capitalized"; + variant "text 'locationOfOtherTypesOfMarineProtectedAreas' as capitalized"; + variant "text 'locationOfPSSAParticularySensitiveAreas' as capitalized"; + variant "text 'locationOfSensitiveAreasForCetaceansAndTypeOfRestrictionsForMaritimeOperationsAccordingNationalLaws' as capitalized"; + variant "text 'locationsOfBasesOfPatrolAssets' as capitalized"; + variant "text 'locationsOfMigratoryPathsOrRoutes' as capitalized"; + variant "text 'mapsOfPastNonPiracyIncidentsDistributionNotOnlyOnSeaButAlsoOnTheShores' as capitalized"; + variant "text 'mapsOfPiracyIncidentDistribution' as capitalized"; + variant "text 'mapsOfShipTrafficDistributionPerShipTypeAndPerSeason' as capitalized"; + variant "text 'marineResources' as capitalized"; + variant "text 'marineResourcesPotential' as capitalized"; + variant "text 'marineServicesAndFacilities' as capitalized"; + variant "text 'maritimeAccess' as capitalized"; + variant "text 'maritimeInfrastructures' as capitalized"; + variant "text 'meteorologicalMaps' as capitalized"; + variant "text 'natura2000Areas' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'oceanographicMapsPerSeason' as capitalized"; + variant "text 'operationalInfrastructures' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'pirateShipsAtacksLocations' as capitalized"; + variant "text 'portDues' as capitalized"; + variant "text 'portFacilities' as capitalized"; + variant "text 'portInfrastructures' as capitalized"; + variant "text 'portLaw' as capitalized"; + variant "text 'portPlanningAndDevelopment' as capitalized"; + variant "text 'portRegulations' as capitalized"; + variant "text 'portServices' as capitalized"; + variant "text 'realTimeClosureOfFishingAreas' as capitalized"; + variant "text 'remnentPollution' as capitalized"; + variant "text 'seaStateWindAndCurrentInformation' as capitalized"; + variant "text 'seaSurfaceTemperatureInformation' as capitalized"; + variant "text 'seabedHazards' as capitalized"; + variant "text 'shoreBasesOfPiratesAndTheirCurrentActivityLevel' as capitalized"; + variant "text 'visibilityInformation' as capitalized"; + variant "text 'waveHeightInformation' as capitalized"; +}; + + +/* This sub-class allows the identification and exchange of Location related documents and material in electronic format. */ +type record LocationDocument +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + XSD.String subject optional, + XSD.String title optional, + XSD.String version optional, + record of record { + Location_derivations location optional + } locationRel_list, + XSD.Base64Binary content optional, + XSD.HexBinary hash optional, + XSD.AnyURI referenceURI optional, + LocationDocumentType documentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (content) "name as capitalized"; + variant (hash) "name as capitalized"; + variant (referenceURI) "name as capitalized"; + variant (documentType) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of documents that can be related to organizations. */ +/* harbour security document. DESCRIPTION: Documents that related to a specific harbour and deal with security issues. */ +/* ISPS code. DESCRIPTION: Documents that are related to an organization and deal with IMO ISPS Code. */ +/* map. DESCRIPTION: Any type of map related to the organization. */ +/* other. DESCRIPTION: Any other type of document not specified above. */ +/* non-specified. DESCRIPTION: Type of the document not specified. */ +type enumerated OrganizationDocumentType +{ + harbourSecurityDocument, + iSPSCode, + map_, + nonSpecified, + other +} +with { + variant "text 'harbourSecurityDocument' as capitalized"; + variant "text 'iSPSCode' as capitalized"; + variant "text 'map_' as 'Map'"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/document/' prefix 'document'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_event.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_event.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9d61a3c20487fb8d45a9c163c372e43012c4a16d --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_event.ttcn @@ -0,0 +1,433 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_event.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - AgentRoleInEventType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +// - EventAreaType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +// - EventRoleInEventType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +// - Event.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +// - LocationRoleInEventType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +// - NatureType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +// - ObjectRoleInEventType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/event/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_event { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +import from http_www_cise_eu_datamodel_v1_entity_location all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_entity_risk all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_document all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + +import from http_www_cise_eu_datamodel_v1_entity_action all; +import from http_www_cise_eu_datamodel_v1_entity_anomaly all; +import from http_www_cise_eu_datamodel_v1_entity_incident all; +import from http_www_cise_eu_datamodel_v1_entity_movement all; + + +/* This enumeration presents the possible roles that an Agent can have in relation to Event */ +/* coordinator. DESCRIPTION: Coordinates the Event */ +/* participant. DESCRIPTION: Participates the Event */ +/* observer. DESCRIPTION: Observes the Event */ +/* cause. DESCRIPTION: Causes/has caused the Event */ +/* reporter. DESCRIPTION: Reports about the Event */ +/* victim. DESCRIPTION: Victim of the Event */ +/* informed. DESCRIPTION: Is informed about the Event */ +/* perpetrator. DESCRIPTION: Is the perpetrator/actor of the Event */ +/* other. DESCRIPTION: Any other role not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated AgentRoleInEventType +{ + cause, + coordinator, + informed, + nonSpecified, + observer, + other, + participant, + perpetrator, + reporter, + victim +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'cause' as capitalized"; + variant "text 'coordinator' as capitalized"; + variant "text 'informed' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'observer' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'participant' as capitalized"; + variant "text 'perpetrator' as capitalized"; + variant "text 'reporter' as capitalized"; + variant "text 'victim' as capitalized"; +}; + + +/* In order to define the possible types a Location can have when in relation to an Event; we suggest reusing the work already done during the "tactical situation object" project. Among many artifacts, a list of area type has been defined. During the scope of the Cooperation project, we chose to limit the enumeration list to the first level defined by the tactical situation object project. Sub-levels are also defined and their adoption could be considered in future developments of the data model (see "Disaster and emergency management - Shared situation awareness - Part 2: Codes for the message structure.").||--Source: ||CWA 15931-1:2009 */ +/* . DESCRIPTION: Aerial area */ +/* . DESCRIPTION: Combat-related area */ +/* . DESCRIPTION: Polluted/dangerous area */ +/* . DESCRIPTION: Area in combustion */ +/* . DESCRIPTION: General purpose area */ +/* . DESCRIPTION: Trails of hazardous emissions from an incident influenced by\nthe wind and other weather conditions that are laden with\nparticulates and gaseous pollutants */ +/* . DESCRIPTION: Cloud of fine particles resulting from a combustion suspended\nin a gas of hot vapour which potentially can impact on people */ +/* . DESCRIPTION: Area where people will be at risk */ +/* other. DESCRIPTION: Any other role not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated EventAreaType +{ + aIR, + cMB, + dGR, + fLAME, + gEN, + nonSpecified, + other, + pLUME, + sMOKE, + vULN +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'aIR' as capitalized"; + variant "text 'cMB' as capitalized"; + variant "text 'dGR' as capitalized"; + variant "text 'fLAME' as capitalized"; + variant "text 'gEN' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'pLUME' as capitalized"; + variant "text 'sMOKE' as capitalized"; + variant "text 'vULN' as capitalized"; +}; + + +/* This enumeration presents the role an Event can have in respect to another Event. */ +/* causes. DESCRIPTION: Event which is the cause of other Event(s) */ +/* responds. DESCRIPTION: Event which responds to other Event(s) */ +/* prevents. DESCRIPTION: Event which prevents other Event(s) */ +/* encompasses. DESCRIPTION: Event which encompasses the other Event(s) */ +/* requires. DESCRIPTION: Event which requires other Event(s) */ +/* other. DESCRIPTION: Any other role not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated EventRoleInEventType +{ + causes, + encompasses, + nonSpecified, + other, + prevents, + requires, + responds +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'causes' as capitalized"; + variant "text 'encompasses' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'prevents' as capitalized"; + variant "text 'requires' as capitalized"; + variant "text 'responds' as capitalized"; +}; + + +/* xs:include schemaLocation="Event.xsd"/ */ + + +/* The Event is one of the core entities of the overall data model of the information sharing environment. It is an entity which holds information about movements, anomalies, incidents or actions which occur in the maritime domain. Event can have relationships with other events, objects, agents, documents, periods and locations. Event can also be related to risks in different roles. Event is an abstract entity which has four sub-entities: Movement, Anomaly, Incident and Action. */ +type record Event +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "abstract"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; +}; + + +/* The Event is one of the core entities of the overall data model of the information sharing environment. It is an entity which holds information about movements, anomalies, incidents or actions which occur in the maritime domain. Event can have relationships with other events, objects, agents, documents, periods and locations. Event can also be related to risks in different roles. Event is an abstract entity which has four sub-entities: Movement, Anomaly, Incident and Action. */ +type union Event_derivations +{ + Event event, + /* It is a subclass of Event. The Action entity may be linked to Incident, Anomaly and can also be expressed taking into account other entities as location, object, etc. */ + Action action_, + /* The class Anomaly is a sub-class of the class Event. An anomaly is used to characterize an unusual event which deserves to be noted or reported. Anomaly has the same associations and relationships than its parent-class Event. Thus it can have relationship with Document, Risk, Event, Object, Period, Location, and Agent. */ + Anomaly anomaly, + /* The CrisisIncident class is a sub-class of Incident and is used to determine types of incidents related to crisis situations as defined by the EUROSUR project. */ + CrisisIncident crisisIncident, + /* The class Incident is a sub-class of the abstract class Event. An incident refers to a particular happening, sometimes criminal but always noteworthy. Incident can have the same associations and relationships than the parent-class Event. Thus it can have relationship with other agents, objects, documents and locations or it can be related to risks. An incident can also be associated with other(s) incident(s) (an incident can cause others for example). Incident has four sub-classes: MaritimeSafetyIncident, IrregularMigrationIncident, LawInfringementIncident and CrisisIncident. */ + Incident incident, + /* The IrregularMigrationIncident class is a sub-class of Incident and is used to determine types of incidents related to irregular migration as defined by the EUROSUR project. */ + IrregularMigrationIncident irregularMigrationIncident, + /* The LawInfringementIncident class is a sub-class of Incident and is used to determine types of incidents related to law infringement as defined by the EUROSUR project. */ + LawInfringementIncident lawInfringementIncident, + /* The MaritimeSafetyIncident class is a sub-class of Incident and is used to determine types of incidents related to maritime safety as defined by the SafeSeaNet project. */ + MaritimeSafetyIncident maritimeSafetyIncident, + /* It is a subclass of event. The Movement entity is linked to Voyage. Movement can be actual (e.g. current position, heading and speed), Historical data or planned in the future and can also be expressed taking into account other entities as location, object, etc. */ + Movement movement, + /* The PollutionIncident is a type of Maritime Safety Incident and is used to exchange specific information about pollution. The position and extend of the pollution can be described by the entity Location. */ + PollutionIncident pollutionIncident +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "useType"; + variant (event) "name as capitalized"; + variant (event) "abstract"; + variant (action_) "name as 'Action'"; + variant (anomaly) "name as capitalized"; + variant (crisisIncident) "name as capitalized"; + variant (incident) "name as capitalized"; + variant (irregularMigrationIncident) "name as capitalized"; + variant (lawInfringementIncident) "name as capitalized"; + variant (maritimeSafetyIncident) "name as capitalized"; + variant (movement) "name as capitalized"; + variant (pollutionIncident) "name as capitalized"; +}; + + +/* This enumeration presents the possible roles that a Location can have in relation to an Event. */ +/* start place. DESCRIPTION: The Location is the start place of the Event */ +/* end place. DESCRIPTION: The Location is the end place of the Event */ +/* last place. DESCRIPTION: The Location is the last place known of the Event */ +/* next place. DESCRIPTION: The Location is the next place of the Event */ +/* other. DESCRIPTION: Any other role not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated LocationRoleInEventType +{ + endPlace, + lastPlace, + nextPlace, + nonSpecified, + other, + startPlace +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'endPlace' as capitalized"; + variant "text 'lastPlace' as capitalized"; + variant "text 'nextPlace' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'startPlace' as capitalized"; +}; + + +/* This enumeration presents the different natures of an Event. */ +/* observed. DESCRIPTION: The Event is observed */ +/* declared. DESCRIPTION: The Event is declared */ +/* estimated. DESCRIPTION: This Event is estimated */ +/* simulated. DESCRIPTION: The Event is simulated */ +/* other. DESCRIPTION: Any other type not mentioned above */ +/* non-specified. DESCRIPTION: Type not specified */ +type enumerated NatureType +{ + declared, + estimated, + nonSpecified, + observed, + other, + simulated +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'declared' as capitalized"; + variant "text 'estimated' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'observed' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'simulated' as capitalized"; +}; + + +/* This enumeration presents the possible roles that an Object can have in relation to an Event */ +/* coordinator. DESCRIPTION: Coordinates the Event */ +/* participant. DESCRIPTION: Participates the Event */ +/* observer. DESCRIPTION: Observes the Event */ +/* cause. DESCRIPTION: Causes/has caused the Event */ +/* reporter. DESCRIPTION: Reports about the Event */ +/* victim. DESCRIPTION: Victim of the Event */ +/* mean. DESCRIPTION: A mean used during the Event */ +/* other. DESCRIPTION: Any other role not mentioned above */ +/* non-specified. DESCRIPTION: Role not specified */ +type enumerated ObjectRoleInEventType +{ + cause, + coordinator, + mean, + nonSpecified, + observer, + other, + participant, + reporter, + victim +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'cause' as capitalized"; + variant "text 'coordinator' as capitalized"; + variant "text 'mean' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'observer' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'participant' as capitalized"; + variant "text 'reporter' as capitalized"; + variant "text 'victim' as capitalized"; +}; + + +} +/* +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/event/' prefix 'event'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +}*/ diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_incident.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_incident.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..34418ba015abd51d7232e4434f7091209ea8fb4b --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_incident.ttcn @@ -0,0 +1,1319 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_incident.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - UrgencyType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - CertaintyType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - CrisisIncidentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - CrisisIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - Incident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - IrregularMigrationIncidentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - IrregularMigrationIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - LawInfringementIncidentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - LawInfringementIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - MaritimeSafetyIncidentType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - MaritimeSafetyIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - PollutionIncident.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - PollutionType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - ResponseType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +// - SeverityType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/incident/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_incident { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + + + +/* This enumeration presents the urgency of an incident response as defined by the OASIS common alerting protocol. */ +/* immediate. DESCRIPTION: Responsive action should be taken immediately */ +/* expected. DESCRIPTION: Responsive action should be taken soon (within next hour) */ +/* future. DESCRIPTION: Responsive action should be taken in the near future */ +/* past. DESCRIPTION: Responsive action is no longer required */ +/* unknown. DESCRIPTION: Urgency not known */ +/* other. DESCRIPTION: Any other urgency not mentioned above */ +/* non-specified. DESCRIPTION: Urgency not specified */ +type enumerated UrgencyType +{ + expected, + future, + immediate, + nonSpecified, + other, + past, + unknown +} +with { + variant "text 'expected' as capitalized"; + variant "text 'future' as capitalized"; + variant "text 'immediate' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'past' as capitalized"; + variant "text 'unknown' as capitalized"; +}; + + +/* This enumeration presents the certainty of an incident as defined by the OASIS common alerting protocol. */ +/* observed. DESCRIPTION: Determined to have occurred or to be ongoing */ +/* likely. DESCRIPTION: Likely (p > ~50%) */ +/* possible. DESCRIPTION: Possible but not likely (p <= ~50%) */ +/* unlikely. DESCRIPTION: Not expected to occur (p ~ 0) */ +/* unknown. DESCRIPTION: Certainty unknown */ +/* other. DESCRIPTION: Any other certainty not mentioned above */ +/* non-specified. DESCRIPTION: Certainty not specified */ +type enumerated CertaintyType +{ + likely, + nonSpecified, + observed, + other, + possible, + unknown, + unlikely +} +with { + variant "text 'likely' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'observed' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'possible' as capitalized"; + variant "text 'unknown' as capitalized"; + variant "text 'unlikely' as capitalized"; +}; + + +/* This enumeration presents the incident types related to crisis situations. */ +/* natural disaster tsunami. DESCRIPTION: */ +/* natural disaster earthquake. DESCRIPTION: */ +/* natural disaster heat wave. DESCRIPTION: */ +/* natural disaster wild fire. DESCRIPTION: */ +/* natural disaster flood. DESCRIPTION: */ +/* natural disaster volcanic eruption. DESCRIPTION: */ +/* natural disaster storm. DESCRIPTION: */ +/* natural disaster snow storm. DESCRIPTION: */ +/* natural disaster tropical storm. DESCRIPTION: */ +/* natural disaster lightning strike. DESCRIPTION: */ +/* natural disaster landslide. DESCRIPTION: */ +/* natural disaster avalanche. DESCRIPTION: */ +/* natural disaster outbreak of infectious disease and other bio hazard. DESCRIPTION: */ +/* natural disaster other. DESCRIPTION: */ +/* man made disaster man made fire. DESCRIPTION: */ +/* man made disaster man made explosion. DESCRIPTION: */ +/* man made disaster maritime accident. DESCRIPTION: */ +/* man made disaster aircraft accident. DESCRIPTION: */ +/* man made disaster radiation. DESCRIPTION: */ +/* man made disaster oil pollution. DESCRIPTION: */ +/* man made disaster waste pollution. DESCRIPTION: */ +/* man made disaster any other man made disaster. DESCRIPTION: */ +/* violence assassination. DESCRIPTION: */ +/* man made disaster terrorist attack. DESCRIPTION: */ +/* violence bombing. DESCRIPTION: */ +/* violence disorder protest mutiny. DESCRIPTION: */ +/* violence air missile attack. DESCRIPTION: */ +/* violence bio chemical attack. DESCRIPTION: */ +/* violence heavy weapons fire. DESCRIPTION: */ +/* violence shooting. DESCRIPTION: */ +/* violence stabbing. DESCRIPTION: */ +/* violence physical attack. DESCRIPTION: */ +/* violence execution. DESCRIPTION: */ +/* violence vandalism. DESCRIPTION: */ +/* violence robbery. DESCRIPTION: */ +/* violence kidnapping hostage taking. DESCRIPTION: */ +/* mines explosives. DESCRIPTION: */ +/* armed conflict. DESCRIPTION: */ +/* humanitarian crisis. DESCRIPTION: */ +/* other. DESCRIPTION: Any other response not mentioned above */ +/* non-specified. DESCRIPTION: Response not specified */ +type enumerated CrisisIncidentType +{ + armedConflict, + humanitarianCrisis, + manMadeDisasterAircraftAccident, + manMadeDisasterAnyOtherManMadeDisaster, + manMadeDisasterManMadeExplosion, + manMadeDisasterManMadeFire, + manMadeDisasterMaritimeAccident, + manMadeDisasterOilPollution, + manMadeDisasterRadiation, + manMadeDisasterTerroristAttack, + manMadeDisasterWastePollution, + minesExplosives, + naturalDisasterAvalanche, + naturalDisasterEarthquake, + naturalDisasterFlood, + naturalDisasterHeatWave, + naturalDisasterLandslide, + naturalDisasterLightningStrike, + naturalDisasterOther, + naturalDisasterOutbreakOfInfectiousDiseaseAndOtherBioHazard, + naturalDisasterSnowStorm, + naturalDisasterStorm, + naturalDisasterTropicalStorm, + naturalDisasterTsunami, + naturalDisasterVolcanicEruption, + naturalDisasterWildFire, + nonSpecified, + other, + violenceAirMissileAttack, + violenceAssassination, + violenceBioChemicalAttack, + violenceBombing, + violenceDisorderProtestMutiny, + violenceExecution, + violenceHeavyWeaponsFire, + violenceKidnappingHostageTaking, + violencePhysicalAttack, + violenceRobbery, + violenceShooting, + violenceStabbing, + violenceVandalism +} +with { + variant "text 'armedConflict' as capitalized"; + variant "text 'humanitarianCrisis' as capitalized"; + variant "text 'manMadeDisasterAircraftAccident' as capitalized"; + variant "text 'manMadeDisasterAnyOtherManMadeDisaster' as capitalized"; + variant "text 'manMadeDisasterManMadeExplosion' as capitalized"; + variant "text 'manMadeDisasterManMadeFire' as capitalized"; + variant "text 'manMadeDisasterMaritimeAccident' as 'ManMadeDisasterMaritimeAccident '"; + variant "text 'manMadeDisasterOilPollution' as capitalized"; + variant "text 'manMadeDisasterRadiation' as capitalized"; + variant "text 'manMadeDisasterTerroristAttack' as capitalized"; + variant "text 'manMadeDisasterWastePollution' as capitalized"; + variant "text 'minesExplosives' as capitalized"; + variant "text 'naturalDisasterAvalanche' as capitalized"; + variant "text 'naturalDisasterEarthquake' as capitalized"; + variant "text 'naturalDisasterFlood' as capitalized"; + variant "text 'naturalDisasterHeatWave' as capitalized"; + variant "text 'naturalDisasterLandslide' as capitalized"; + variant "text 'naturalDisasterLightningStrike' as capitalized"; + variant "text 'naturalDisasterOther' as capitalized"; + variant "text 'naturalDisasterOutbreakOfInfectiousDiseaseAndOtherBioHazard' as capitalized"; + variant "text 'naturalDisasterSnowStorm' as capitalized"; + variant "text 'naturalDisasterStorm' as capitalized"; + variant "text 'naturalDisasterTropicalStorm' as capitalized"; + variant "text 'naturalDisasterTsunami' as capitalized"; + variant "text 'naturalDisasterVolcanicEruption' as capitalized"; + variant "text 'naturalDisasterWildFire' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'violenceAirMissileAttack' as capitalized"; + variant "text 'violenceAssassination' as capitalized"; + variant "text 'violenceBioChemicalAttack' as capitalized"; + variant "text 'violenceBombing' as capitalized"; + variant "text 'violenceDisorderProtestMutiny' as capitalized"; + variant "text 'violenceExecution' as capitalized"; + variant "text 'violenceHeavyWeaponsFire' as capitalized"; + variant "text 'violenceKidnappingHostageTaking' as capitalized"; + variant "text 'violencePhysicalAttack' as capitalized"; + variant "text 'violenceRobbery' as capitalized"; + variant "text 'violenceShooting' as capitalized"; + variant "text 'violenceStabbing' as capitalized"; + variant "text 'violenceVandalism' as capitalized"; +}; + +/* +type http_www_cise_eu_datamodel_v1_entity_incident.Incident Incident +with { + variant "element"; +}; +*/ + +/* The CrisisIncident class is a sub-class of Incident and is used to determine types of incidents related to crisis situations as defined by the EUROSUR project. */ +type record CrisisIncident +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + CertaintyType certainty optional, + XSD.Int deathsOnBoard optional, + XSD.Boolean diseasesOnBoard optional, + XSD.Boolean infectionOnBoard optional, + record of XSD.String instructions_list, + XSD.Int numberOfIIllPersons optional, + record of ResponseType responseType_list, + UrgencyType responseUrgency optional, + http_www_cise_eu_datamodel_v1_entity_incident.SeverityType severity optional, + XSD.Boolean sickAnimalOnBoard optional, + CrisisIncidentType crisisIncidentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (certainty) "name as capitalized"; + variant (deathsOnBoard) "name as capitalized"; + variant (diseasesOnBoard) "name as capitalized"; + //variant (diseasesOnBoard) "text 'true' as '1'"; + //variant (diseasesOnBoard) "text 'false' as '0'"; + variant (infectionOnBoard) "name as capitalized"; + //variant (infectionOnBoard) "text 'true' as '1'"; + //variant (infectionOnBoard) "text 'false' as '0'"; + variant (instructions_list) "untagged"; + variant (instructions_list[-]) "name as 'Instructions'"; + variant (numberOfIIllPersons) "name as capitalized"; + variant (responseType_list) "untagged"; + variant (responseType_list[-]) "name as 'ResponseType'"; + variant (responseUrgency) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (sickAnimalOnBoard) "name as capitalized"; + //variant (sickAnimalOnBoard) "text 'true' as '1'"; + //variant (sickAnimalOnBoard) "text 'false' as '0'"; + variant (crisisIncidentType) "name as capitalized"; +}; + + +/* The class Incident is a sub-class of the abstract class Event. An incident refers to a particular happening, sometimes criminal but always noteworthy. Incident can have the same associations and relationships than the parent-class Event. Thus it can have relationship with other agents, objects, documents and locations or it can be related to risks. An incident can also be associated with other(s) incident(s) (an incident can cause others for example). Incident has four sub-classes: MaritimeSafetyIncident, IrregularMigrationIncident, LawInfringementIncident and CrisisIncident. */ +type record Incident +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + CertaintyType certainty optional, + XSD.Int deathsOnBoard optional, + XSD.Boolean diseasesOnBoard optional, + XSD.Boolean infectionOnBoard optional, + record of XSD.String instructions_list, + XSD.Int numberOfIIllPersons optional, + record of ResponseType responseType_list, + UrgencyType responseUrgency optional, + http_www_cise_eu_datamodel_v1_entity_incident.SeverityType severity optional, + XSD.Boolean sickAnimalOnBoard optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (certainty) "name as capitalized"; + variant (deathsOnBoard) "name as capitalized"; + variant (diseasesOnBoard) "name as capitalized"; + //variant (diseasesOnBoard) "text 'true' as '1'"; + //variant (diseasesOnBoard) "text 'false' as '0'"; + variant (infectionOnBoard) "name as capitalized"; + //variant (infectionOnBoard) "text 'true' as '1'"; + //variant (infectionOnBoard) "text 'false' as '0'"; + variant (instructions_list) "untagged"; + variant (instructions_list[-]) "name as 'Instructions'"; + variant (numberOfIIllPersons) "name as capitalized"; + variant (responseType_list) "untagged"; + variant (responseType_list[-]) "name as 'ResponseType'"; + variant (responseUrgency) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (sickAnimalOnBoard) "name as capitalized"; + //variant (sickAnimalOnBoard) "text 'true' as '1'"; + //variant (sickAnimalOnBoard) "text 'false' as '0'"; +}; + + +/* This enumeration presents the irregular migration incident types. */ +/* irregular border entry. DESCRIPTION: Irregular border entry */ +/* event refused border entry. DESCRIPTION: Refused border entry */ +/* irregular entry attempt. DESCRIPTION: Irregular entry attempt */ +/* irregular border exit. DESCRIPTION: Irregular border exit */ +/* refused border entry. DESCRIPTION: Refused border entry */ +/* irregular exit attempt. DESCRIPTION: Irregular exit attempt */ +/* irregular stay. DESCRIPTION: Irregular stay */ +/* facilitator interception. DESCRIPTION: Facilitator interception */ +/* facilitator disclosure. DESCRIPTION: Facilitator disclosure */ +/* interception in third country territory. DESCRIPTION: Event::Interception in third country territory */ +/* other. DESCRIPTION: Any other incident not mentioned above */ +/* non-specified. DESCRIPTION: Incident not specified */ +type enumerated IrregularMigrationIncidentType +{ + eventRefusedBorderEntry, + facilitatorDisclosure, + facilitatorInterception, + interceptionInThirdCountryTerritory, + irregularBorderEntry, + irregularBorderExit, + irregularEntryAttempt, + irregularExitAttempt, + irregularStay, + nonSpecified, + other, + refusedBorderEntry +} +with { + variant "text 'eventRefusedBorderEntry' as capitalized"; + variant "text 'facilitatorDisclosure' as capitalized"; + variant "text 'facilitatorInterception' as capitalized"; + variant "text 'interceptionInThirdCountryTerritory' as capitalized"; + variant "text 'irregularBorderEntry' as capitalized"; + variant "text 'irregularBorderExit' as capitalized"; + variant "text 'irregularEntryAttempt' as capitalized"; + variant "text 'irregularExitAttempt' as capitalized"; + variant "text 'irregularStay' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'refusedBorderEntry' as capitalized"; +}; + +/* +type http_www_cise_eu_datamodel_v1_entity_incident.Incident Incident +with { + variant "element"; +}; +*/ + +/* The IrregularMigrationIncident class is a sub-class of Incident and is used to determine types of incidents related to irregular migration as defined by the EUROSUR project. */ +type record IrregularMigrationIncident +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + CertaintyType certainty optional, + XSD.Int deathsOnBoard optional, + XSD.Boolean diseasesOnBoard optional, + XSD.Boolean infectionOnBoard optional, + record of XSD.String instructions_list, + XSD.Int numberOfIIllPersons optional, + record of ResponseType responseType_list, + UrgencyType responseUrgency optional, + http_www_cise_eu_datamodel_v1_entity_incident.SeverityType severity optional, + XSD.Boolean sickAnimalOnBoard optional, + IrregularMigrationIncidentType irregularMigrationIncidentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (certainty) "name as capitalized"; + variant (deathsOnBoard) "name as capitalized"; + variant (diseasesOnBoard) "name as capitalized"; + //variant (diseasesOnBoard) "text 'true' as '1'"; + //variant (diseasesOnBoard) "text 'false' as '0'"; + variant (infectionOnBoard) "name as capitalized"; + //variant (infectionOnBoard) "text 'true' as '1'"; + //variant (infectionOnBoard) "text 'false' as '0'"; + variant (instructions_list) "untagged"; + variant (instructions_list[-]) "name as 'Instructions'"; + variant (numberOfIIllPersons) "name as capitalized"; + variant (responseType_list) "untagged"; + variant (responseType_list[-]) "name as 'ResponseType'"; + variant (responseUrgency) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (sickAnimalOnBoard) "name as capitalized"; + //variant (sickAnimalOnBoard) "text 'true' as '1'"; + //variant (sickAnimalOnBoard) "text 'false' as '0'"; + variant (irregularMigrationIncidentType) "name as capitalized"; +}; + + +/* This enumeration presents the law infringement incident types. */ +/* human trafficking exploitation of prostitution of others. DESCRIPTION: */ +/* human trafficking other forms of sexual exploitation. DESCRIPTION: */ +/* human trafficking forced labour or services. DESCRIPTION: */ +/* human trafficking slavery or practices similar to slavery. DESCRIPTION: */ +/* human trafficking servitude. DESCRIPTION: */ +/* human trafficking exploitation of activities associated with begging or of unlawful activities. DESCRIPTION: */ +/* human trafficking removal of organs. DESCRIPTION: */ +/* human trafficking other. DESCRIPTION: */ +/* drug smuggling marihuana. DESCRIPTION: */ +/* drug smuggling cocaine. DESCRIPTION: */ +/* drug smuggling hashish. DESCRIPTION: */ +/* drug smuggling cannabis. DESCRIPTION: */ +/* drug smuggling heroin. DESCRIPTION: */ +/* drug smuggling amphetamine. DESCRIPTION: */ +/* drug smuggling metamphetamine. DESCRIPTION: */ +/* drug smuggling ecstasy. DESCRIPTION: */ +/* drug smuggling opium. DESCRIPTION: */ +/* drug smuggling hallucinogens. DESCRIPTION: */ +/* drug smuggling other drugs. DESCRIPTION: */ +/* goods smuggling goods carried with no required permits. DESCRIPTION: */ +/* goods smuggling excise goods. DESCRIPTION: */ +/* goods smuggling counterfeited products. DESCRIPTION: */ +/* goods smuggling natural resources minerals. DESCRIPTION: */ +/* goods smuggling threatened species. DESCRIPTION: */ +/* goods smuggling cultural heritage goods. DESCRIPTION: */ +/* smuggling in waste and other hazardous material waste. DESCRIPTION: */ +/* smuggling in waste and other hazardous material chemical. DESCRIPTION: */ +/* smuggling in waste and other hazardous material biohazard. DESCRIPTION: */ +/* smuggling in waste and other hazardous material radio active. DESCRIPTION: */ +/* smuggling in waste and other hazardous material nuclear. DESCRIPTION: */ +/* smuggling in waste and other hazardous material other dangerous substances. DESCRIPTION: */ +/* smuggling in weapon and related accessories arms weapons. DESCRIPTION: */ +/* smuggling in weapon and related accessories weapons of mass destruction. DESCRIPTION: */ +/* smuggling in weapon and related accessories ammunition. DESCRIPTION: */ +/* smuggling in weapon and related accessories explosives. DESCRIPTION: */ +/* smuggling in other material. DESCRIPTION: */ +/* other related cross border criminal activity stolen vehicle. DESCRIPTION: */ +/* other related cross border criminal activity document falsification fraud. DESCRIPTION: */ +/* other related cross border criminal activity other. DESCRIPTION: */ +/* law infringement by vessels. DESCRIPTION: */ +/* illegal flight of an aircraft. DESCRIPTION: */ +/* law infringement by vehicles. DESCRIPTION: */ +/* other administrative offense. DESCRIPTION: */ +/* other. DESCRIPTION: Any other response not mentioned above */ +/* non-specified. DESCRIPTION: Response not specified */ +type enumerated LawInfringementIncidentType +{ + drugSmugglingAmphetamine, + drugSmugglingCannabis, + drugSmugglingCocaine, + drugSmugglingEcstasy, + drugSmugglingHallucinogens, + drugSmugglingHashish, + drugSmugglingHeroin, + drugSmugglingMarihuana, + drugSmugglingMetamphetamine, + drugSmugglingOpium, + drugSmugglingOtherDrugs, + goodsSmugglingCounterfeitedProducts, + goodsSmugglingCulturalHeritageGoods, + goodsSmugglingExciseGoods, + goodsSmugglingGoodsCarriedWithNoRequiredPermits, + goodsSmugglingNaturalResourcesMinerals, + goodsSmugglingThreatenedSpecies, + humanTraffickingExploitationOfActivitiesAssociatedWithBeggingOrOfUnlawfulActivities, + humanTraffickingExploitationOfProstitutionOfOthers, + humanTraffickingForcedLabourOrServices, + humanTraffickingOther, + humanTraffickingOtherFormsOfSexualExploitation, + humanTraffickingRemovalOfOrgans, + humanTraffickingServitude, + humanTraffickingSlaveryOrPracticesSimilarToSlavery, + illegalFlightOfAnAircraft, + lawInfringementByVehicles, + lawInfringementByVessels, + nonSpecified, + other, + otherAdministrativeOffense, + otherRelatedCrossBorderCriminalActivityDocumentFalsificationFraud, + otherRelatedCrossBorderCriminalActivityOther, + otherRelatedCrossBorderCriminalActivityStolenVehicle, + smugglingInOtherMaterial, + smugglingInWasteAndOtherHazardousMaterialBiohazard, + smugglingInWasteAndOtherHazardousMaterialChemical, + smugglingInWasteAndOtherHazardousMaterialNuclear, + smugglingInWasteAndOtherHazardousMaterialOtherDangerousSubstances, + smugglingInWasteAndOtherHazardousMaterialRadioActive, + smugglingInWasteAndOtherHazardousMaterialWaste, + smugglingInWeaponAndRelatedAccessoriesAmmunition, + smugglingInWeaponAndRelatedAccessoriesArmsWeapons, + smugglingInWeaponAndRelatedAccessoriesExplosives, + smugglingInWeaponAndRelatedAccessoriesWeaponsOfMassDestruction +} +with { + variant "text 'drugSmugglingAmphetamine' as capitalized"; + variant "text 'drugSmugglingCannabis' as capitalized"; + variant "text 'drugSmugglingCocaine' as capitalized"; + variant "text 'drugSmugglingEcstasy' as capitalized"; + variant "text 'drugSmugglingHallucinogens' as capitalized"; + variant "text 'drugSmugglingHashish' as capitalized"; + variant "text 'drugSmugglingHeroin' as capitalized"; + variant "text 'drugSmugglingMarihuana' as capitalized"; + variant "text 'drugSmugglingMetamphetamine' as capitalized"; + variant "text 'drugSmugglingOpium' as capitalized"; + variant "text 'drugSmugglingOtherDrugs' as capitalized"; + variant "text 'goodsSmugglingCounterfeitedProducts' as capitalized"; + variant "text 'goodsSmugglingCulturalHeritageGoods' as capitalized"; + variant "text 'goodsSmugglingExciseGoods' as capitalized"; + variant "text 'goodsSmugglingGoodsCarriedWithNoRequiredPermits' as capitalized"; + variant "text 'goodsSmugglingNaturalResourcesMinerals' as capitalized"; + variant "text 'goodsSmugglingThreatenedSpecies' as capitalized"; + variant "text 'humanTraffickingExploitationOfActivitiesAssociatedWithBeggingOrOfUnlawfulActivities' as capitalized"; + variant "text 'humanTraffickingExploitationOfProstitutionOfOthers' as capitalized"; + variant "text 'humanTraffickingForcedLabourOrServices' as capitalized"; + variant "text 'humanTraffickingOther' as capitalized"; + variant "text 'humanTraffickingOtherFormsOfSexualExploitation' as capitalized"; + variant "text 'humanTraffickingRemovalOfOrgans' as capitalized"; + variant "text 'humanTraffickingServitude' as capitalized"; + variant "text 'humanTraffickingSlaveryOrPracticesSimilarToSlavery' as capitalized"; + variant "text 'illegalFlightOfAnAircraft' as capitalized"; + variant "text 'lawInfringementByVehicles' as capitalized"; + variant "text 'lawInfringementByVessels' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'otherAdministrativeOffense' as capitalized"; + variant "text 'otherRelatedCrossBorderCriminalActivityDocumentFalsificationFraud' as capitalized"; + variant "text 'otherRelatedCrossBorderCriminalActivityOther' as capitalized"; + variant "text 'otherRelatedCrossBorderCriminalActivityStolenVehicle' as capitalized"; + variant "text 'smugglingInOtherMaterial' as capitalized"; + variant "text 'smugglingInWasteAndOtherHazardousMaterialBiohazard' as capitalized"; + variant "text 'smugglingInWasteAndOtherHazardousMaterialChemical' as capitalized"; + variant "text 'smugglingInWasteAndOtherHazardousMaterialNuclear' as capitalized"; + variant "text 'smugglingInWasteAndOtherHazardousMaterialOtherDangerousSubstances' as capitalized"; + variant "text 'smugglingInWasteAndOtherHazardousMaterialRadioActive' as capitalized"; + variant "text 'smugglingInWasteAndOtherHazardousMaterialWaste' as capitalized"; + variant "text 'smugglingInWeaponAndRelatedAccessoriesAmmunition' as capitalized"; + variant "text 'smugglingInWeaponAndRelatedAccessoriesArmsWeapons' as capitalized"; + variant "text 'smugglingInWeaponAndRelatedAccessoriesExplosives' as capitalized"; + variant "text 'smugglingInWeaponAndRelatedAccessoriesWeaponsOfMassDestruction' as capitalized"; +}; + +/* +type http_www_cise_eu_datamodel_v1_entity_incident.Incident Incident +with { + variant "element"; +}; +*/ + +/* The LawInfringementIncident class is a sub-class of Incident and is used to determine types of incidents related to law infringement as defined by the EUROSUR project. */ +type record LawInfringementIncident +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + CertaintyType certainty optional, + XSD.Int deathsOnBoard optional, + XSD.Boolean diseasesOnBoard optional, + XSD.Boolean infectionOnBoard optional, + record of XSD.String instructions_list, + XSD.Int numberOfIIllPersons optional, + record of ResponseType responseType_list, + UrgencyType responseUrgency optional, + http_www_cise_eu_datamodel_v1_entity_incident.SeverityType severity optional, + XSD.Boolean sickAnimalOnBoard optional, + LawInfringementIncidentType lawInfringementIncidentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (certainty) "name as capitalized"; + variant (deathsOnBoard) "name as capitalized"; + variant (diseasesOnBoard) "name as capitalized"; + //variant (diseasesOnBoard) "text 'true' as '1'"; + //variant (diseasesOnBoard) "text 'false' as '0'"; + variant (infectionOnBoard) "name as capitalized"; + //variant (infectionOnBoard) "text 'true' as '1'"; + //variant (infectionOnBoard) "text 'false' as '0'"; + variant (instructions_list) "untagged"; + variant (instructions_list[-]) "name as 'Instructions'"; + variant (numberOfIIllPersons) "name as capitalized"; + variant (responseType_list) "untagged"; + variant (responseType_list[-]) "name as 'ResponseType'"; + variant (responseUrgency) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (sickAnimalOnBoard) "name as capitalized"; + //variant (sickAnimalOnBoard) "text 'true' as '1'"; + //variant (sickAnimalOnBoard) "text 'false' as '0'"; + variant (lawInfringementIncidentType) "name as capitalized"; +}; + + +/* This enumeration presents the maritime safety incident types. */ +/* pollution. DESCRIPTION: Pollution */ +/* waste. DESCRIPTION: Waste */ +/* lost found containers. DESCRIPTION: Lost or Found Containers */ +/* VTS rules infringement. DESCRIPTION: VTS Rules Infringement */ +/* banned ship. DESCRIPTION: Banned Ship */ +/* insurance failure. DESCRIPTION: Insurance Failure */ +/* result inspection. DESCRIPTION: Result Inspection */ +/* pilot or port report. DESCRIPTION: Pilot Or Port Report */ +/* fire. DESCRIPTION: Fire */ +/* collision. DESCRIPTION: Collision */ +/* medico. DESCRIPTION: Medico */ +/* grounding. DESCRIPTION: Grounding */ +/* flooding. DESCRIPTION: Flooding */ +/* list. DESCRIPTION: List */ +/* capsizing. DESCRIPTION: Capsizing */ +/* engine failure. DESCRIPTION: Engine Failure */ +/* structural failure. DESCRIPTION: Structural failure */ +/* steering gear failure. DESCRIPTION: Steering gear failure */ +/* electrical generating system failure. DESCRIPTION: Electrical generating system failure */ +/* navigation equipment failure. DESCRIPTION: Navigation equipment failure */ +/* communication equipment failure. DESCRIPTION: Communication equipment failure */ +/* incident nature abandon ship. DESCRIPTION: Abandon ship */ +/* incident nature sinking. DESCRIPTION: Sinking */ +/* detained ship. DESCRIPTION: DetainedShip */ +/* other. DESCRIPTION: Any other incident not mentioned above */ +/* non-specified. DESCRIPTION: Incident not specified */ +type enumerated MaritimeSafetyIncidentType +{ + bannedShip, + capsizing, + collision, + communicationEquipmentFailure, + detainedShip, + electricalGeneratingSystemFailure, + engineFailure, + fire, + flooding, + grounding, + incidentNatureAbandonShip, + incidentNatureSinking, + insuranceFailure, + list, + lostFoundContainers, + medico, + navigationEquipmentFailure, + nonSpecified, + other, + pilotOrPortReport, + pollution, + resultInspection, + steeringGearFailure, + structuralFailure, + vTSRulesInfringement, + waste +} +with { + variant "text 'bannedShip' as capitalized"; + variant "text 'capsizing' as capitalized"; + variant "text 'collision' as capitalized"; + variant "text 'communicationEquipmentFailure' as capitalized"; + variant "text 'detainedShip' as capitalized"; + variant "text 'electricalGeneratingSystemFailure' as capitalized"; + variant "text 'engineFailure' as capitalized"; + variant "text 'fire' as capitalized"; + variant "text 'flooding' as capitalized"; + variant "text 'grounding' as capitalized"; + variant "text 'incidentNatureAbandonShip' as capitalized"; + variant "text 'incidentNatureSinking' as capitalized"; + variant "text 'insuranceFailure' as capitalized"; + variant "text 'list' as capitalized"; + variant "text 'lostFoundContainers' as capitalized"; + variant "text 'medico' as capitalized"; + variant "text 'navigationEquipmentFailure' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'pilotOrPortReport' as capitalized"; + variant "text 'pollution' as capitalized"; + variant "text 'resultInspection' as capitalized"; + variant "text 'steeringGearFailure' as capitalized"; + variant "text 'structuralFailure' as capitalized"; + variant "text 'vTSRulesInfringement' as capitalized"; + variant "text 'waste' as capitalized"; +}; + +/* +type http_www_cise_eu_datamodel_v1_entity_incident.Incident Incident +with { + variant "element"; +}; +*/ + +/* The MaritimeSafetyIncident class is a sub-class of Incident and is used to determine types of incidents related to maritime safety as defined by the SafeSeaNet project. */ +type record MaritimeSafetyIncident +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + CertaintyType certainty optional, + XSD.Int deathsOnBoard optional, + XSD.Boolean diseasesOnBoard optional, + XSD.Boolean infectionOnBoard optional, + record of XSD.String instructions_list, + XSD.Int numberOfIIllPersons optional, + record of ResponseType responseType_list, + UrgencyType responseUrgency optional, + http_www_cise_eu_datamodel_v1_entity_incident.SeverityType severity optional, + XSD.Boolean sickAnimalOnBoard optional, + MaritimeSafetyIncidentType maritimeSafetyIncidentType optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (certainty) "name as capitalized"; + variant (deathsOnBoard) "name as capitalized"; + variant (diseasesOnBoard) "name as capitalized"; + //variant (diseasesOnBoard) "text 'true' as '1'"; + //variant (diseasesOnBoard) "text 'false' as '0'"; + variant (infectionOnBoard) "name as capitalized"; + //variant (infectionOnBoard) "text 'true' as '1'"; + //variant (infectionOnBoard) "text 'false' as '0'"; + variant (instructions_list) "untagged"; + variant (instructions_list[-]) "name as 'Instructions'"; + variant (numberOfIIllPersons) "name as capitalized"; + variant (responseType_list) "untagged"; + variant (responseType_list[-]) "name as 'ResponseType'"; + variant (responseUrgency) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (sickAnimalOnBoard) "name as capitalized"; + //variant (sickAnimalOnBoard) "text 'true' as '1'"; + //variant (sickAnimalOnBoard) "text 'false' as '0'"; + variant (maritimeSafetyIncidentType) "name as capitalized"; +}; + +/* +type http_www_cise_eu_datamodel_v1_entity_incident.MaritimeSafetyIncident MaritimeSafetyIncident +with { + variant "element"; +}; +*/ + +/* The PollutionIncident is a type of Maritime Safety Incident and is used to exchange specific information about pollution. The position and extend of the pollution can be described by the entity Location. */ +type record PollutionIncident +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + CertaintyType certainty optional, + XSD.Int deathsOnBoard optional, + XSD.Boolean diseasesOnBoard optional, + XSD.Boolean infectionOnBoard optional, + record of XSD.String instructions_list, + XSD.Int numberOfIIllPersons optional, + record of ResponseType responseType_list, + UrgencyType responseUrgency optional, + http_www_cise_eu_datamodel_v1_entity_incident.SeverityType severity optional, + XSD.Boolean sickAnimalOnBoard optional, + MaritimeSafetyIncidentType maritimeSafetyIncidentType optional, + XSD.String areaCoverPercentage optional, + XSD.String characteristics optional, + XSD.Int driftCourse optional, + XSD.Double driftSpeed optional, + PollutionType pollutionType optional, + XSD.Double quantity optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (certainty) "name as capitalized"; + variant (deathsOnBoard) "name as capitalized"; + variant (diseasesOnBoard) "name as capitalized"; + //variant (diseasesOnBoard) "text 'true' as '1'"; + //variant (diseasesOnBoard) "text 'false' as '0'"; + variant (infectionOnBoard) "name as capitalized"; + //variant (infectionOnBoard) "text 'true' as '1'"; + //variant (infectionOnBoard) "text 'false' as '0'"; + variant (instructions_list) "untagged"; + variant (instructions_list[-]) "name as 'Instructions'"; + variant (numberOfIIllPersons) "name as capitalized"; + variant (responseType_list) "untagged"; + variant (responseType_list[-]) "name as 'ResponseType'"; + variant (responseUrgency) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (sickAnimalOnBoard) "name as capitalized"; + //variant (sickAnimalOnBoard) "text 'true' as '1'"; + //variant (sickAnimalOnBoard) "text 'false' as '0'"; + variant (maritimeSafetyIncidentType) "name as capitalized"; + variant (areaCoverPercentage) "name as capitalized"; + variant (characteristics) "name as capitalized"; + variant (driftCourse) "name as capitalized"; + variant (driftSpeed) "name as capitalized"; + variant (pollutionType) "name as capitalized"; + variant (quantity) "name as capitalized"; +}; + + +/* Oil. DESCRIPTION: Oil */ +/* Chemical. DESCRIPTION: Chemical */ +/* Fish Oil or Waste. DESCRIPTION: Fish Oil or Waste */ +/* Vegetable Oil or Waste. DESCRIPTION: Vegetable Oil or Waste */ +/* Other. DESCRIPTION: Other */ +/* Unknown. DESCRIPTION: Unknown */ +type enumerated PollutionType +{ + cHEM, + fISH, + oIL, + oTH, + uNK, + vEG +} +with { + variant "text 'cHEM' as capitalized"; + variant "text 'fISH' as capitalized"; + variant "text 'oIL' as capitalized"; + variant "text 'oTH' as capitalized"; + variant "text 'uNK' as capitalized"; + variant "text 'vEG' as capitalized"; +}; + + +/* This enumeration presents the incident */ +/* ’s response types as defined by the OASIS common alerting protocol. */ +/* shelter. DESCRIPTION: Take shelter in place or per */ +/* evacuate. DESCRIPTION: Relocate as instructed in the */ +/* prepare. DESCRIPTION: Make preparations per the */ +/* execute. DESCRIPTION: Execute a pre-planned activity identified in */ +/* avoid. DESCRIPTION: Avoid the subject event as per the */ +/* monitor. DESCRIPTION: Attend to information sources as described in */ +/* assess. DESCRIPTION: Evaluate the information in this message. (This value SHOULD NOT be used in public warning applications.) */ +/* all clear. DESCRIPTION: The subject event no longer poses a threat or concern and any follow on action is described in */ +/* none. DESCRIPTION: No action recommended */ +/* other. DESCRIPTION: Any other response not mentioned above */ +/* non-specified. DESCRIPTION: Response not specified */ +type enumerated ResponseType +{ + allClear, + assess, + avoid, + evacuate, + execute_, + monitor, + nonSpecified, + none_, + other, + prepare, + shelter +} +with { + variant "text 'allClear' as capitalized"; + variant "text 'assess' as capitalized"; + variant "text 'avoid' as capitalized"; + variant "text 'evacuate' as capitalized"; + variant "text 'execute_' as 'Execute'"; + variant "text 'monitor' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'none_' as 'None'"; + variant "text 'other' as capitalized"; + variant "text 'prepare' as capitalized"; + variant "text 'shelter' as capitalized"; +}; + + +/* This enumeration presents the severity of an incident as defined by the OASIS common alerting protocol. */ +/* extreme. DESCRIPTION: Extraordinary threat to life or property */ +/* severe. DESCRIPTION: Significant threat to life or property */ +/* moderate. DESCRIPTION: Possible threat to life or property */ +/* minor. DESCRIPTION: Minimal threat to life or property */ +/* unknown. DESCRIPTION: Severity unknown */ +/* other. DESCRIPTION: Any other severity not mentioned above */ +/* non-specified. DESCRIPTION: Severity not specified */ +type enumerated SeverityType +{ + extreme, + minor, + moderate, + nonSpecified, + other, + severe, + unknown +} +with { + variant "text 'extreme' as capitalized"; + variant "text 'minor' as capitalized"; + variant "text 'moderate' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'severe' as capitalized"; + variant "text 'unknown' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/incident/' prefix 'incident'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_location.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_location.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1c0c4060910d03f3da64f454dab4c2e08d6f3571 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_location.ttcn @@ -0,0 +1,563 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_location.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - CloudCoverType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - Geometry.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - LocationQualitativeAccuracyType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - Location.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - LocationZoneType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - MeteoOceanographicCondition.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - MetocType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - NamedLocation.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - OperationalPurposeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - PortFacilityLocation.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - PortLocation.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - SeaConditionType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - TidesType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +// - WeatherConditionType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/location/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_location { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_vessel all; + + +/* Cloud cover is estimated in terms of how many eighths of the sky are covered in cloud, ranging from 0 oktas (completely clear sky) through to 8 oktas (completely overcast). */ +/* clear sky. DESCRIPTION: Sky completely clear */ +/* 1 okta. DESCRIPTION: */ +/* 2 oktas. DESCRIPTION: */ +/* 3 oktas. DESCRIPTION: */ +/* 4 oktas. DESCRIPTION: Sky half cloudy */ +/* 5 oktas. DESCRIPTION: */ +/* 6 oktas. DESCRIPTION: */ +/* 7 oktas. DESCRIPTION: */ +/* 8 oktas. DESCRIPTION: Sky completely cloudy */ +/* sky obscured. DESCRIPTION: Sky obstructed from view */ +type enumerated CloudCoverType +{ + clearSky, + octa3, + okta1, + okta2, + okta4, + okta5, + okta6, + okta7, + okta8, + skyObscured +} +with { + variant "text 'clearSky' as capitalized"; + variant "text 'octa3' as capitalized"; + variant "text 'okta1' as capitalized"; + variant "text 'okta2' as capitalized"; + variant "text 'okta4' as capitalized"; + variant "text 'okta5' as capitalized"; + variant "text 'okta6' as capitalized"; + variant "text 'okta7' as capitalized"; + variant "text 'okta8' as capitalized"; + variant "text 'skyObscured' as capitalized"; +}; + + +/* This class allows the definition of Georeferenced areas. */ +type record Geometry +{ + XSD.String altitude optional, + XSD.String latitude optional, + XSD.String longitude optional, + XSD.String wKT optional, + XSD.String xMLGeometry optional +} +with { + variant (altitude) "name as capitalized"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + variant (wKT) "name as capitalized"; + variant (xMLGeometry) "name as capitalized"; +}; + + +/* high. DESCRIPTION: High qualitative accuracy */ +/* medium. DESCRIPTION: Medium qualitative accuracy */ +/* low. DESCRIPTION: Low qualitative accuracy */ +/* other. DESCRIPTION: Qualitative accuracy not listed here */ +/* non-specified. DESCRIPTION: The qualitative accuracy is not declared */ +type enumerated LocationQualitativeAccuracyType +{ + high, + low, + medium, + nonSpecified, + other +} +with { + variant "text 'high' as capitalized"; + variant "text 'low' as capitalized"; + variant "text 'medium' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* Locations can be described in three principal ways: by using a place name, geometry or an address. The specific context will determine which method of describing a location is most appropriate. ISO 19112 defines a location as "an identifiable geographic place". With this in mind, "Eiffel Tower", "Madrid" and "California" are all locations and this is a common way of representing locations in public sector data, i.e. simply by using a recognized name. Such identifiers are common although they can be highly ambiguous as many places share the same or similar names.||In addition to a simple (string) label or name for a Location, the identifier property allows defining a Location by a Uniform Resource Identifier (URI), such as a GeoNames or DBpedia URI.||No cardinality constraints are placed on any property of the Location class so as to maximize flexibility. */ +type record Location +{ + record of Geometry geometry_list, + LocationQualitativeAccuracyType locationQualitativeAccuracy optional, + record of LocationZoneType locationZone_list, + record of Metadata metadata_list, + OperationalPurposeType operationalPurpose optional +} +with { + variant (geometry_list) "untagged"; + variant (geometry_list[-]) "name as 'Geometry'"; + variant (locationQualitativeAccuracy) "name as capitalized"; + variant (locationZone_list) "untagged"; + variant (locationZone_list[-]) "name as 'LocationZone'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (operationalPurpose) "name as capitalized"; +}; + + +/* Locations can be described in three principal ways: by using a place name, geometry or an address. The specific context will determine which method of describing a location is most appropriate. ISO 19112 defines a location as "an identifiable geographic place". With this in mind, "Eiffel Tower", "Madrid" and "California" are all locations and this is a common way of representing locations in public sector data, i.e. simply by using a recognized name. Such identifiers are common although they can be highly ambiguous as many places share the same or similar names.||In addition to a simple (string) label or name for a Location, the identifier property allows defining a Location by a Uniform Resource Identifier (URI), such as a GeoNames or DBpedia URI.||No cardinality constraints are placed on any property of the Location class so as to maximize flexibility. */ +type union Location_derivations +{ + Location location, + /* Location with a given name. */ + NamedLocation namedLocation, + /* Location of one of the facilities contained in a port. */ + PortFacilityLocation portFacilityLocation, + /* Location describing the position/area of a port. */ + PortLocation portLocation +} +with { + variant "useType"; + variant (location) "name as capitalized"; + variant (namedLocation) "name as capitalized"; + variant (portFacilityLocation) "name as capitalized"; + variant (portLocation) "name as capitalized"; +}; + + +/* high seas. DESCRIPTION: High seas */ +/* territorial waters. DESCRIPTION: Territorial waters */ +/* coast line. DESCRIPTION: Coast line */ +/* contiguous zone. DESCRIPTION: Contiguous zone */ +/* port. DESCRIPTION: Port */ +/* control point. DESCRIPTION: Control point */ +/* green border. DESCRIPTION: Green border */ +/* inland. DESCRIPTION: Inland */ +/* exclusive economic area. DESCRIPTION: Exclusive Economic Area */ +/* third country. DESCRIPTION: Third country */ +/* INW. DESCRIPTION: Inland waterway. A body of water, such as a river, canal or lake. It may be navigable if it is deep and wide enough for a vessel to pass and there are no obstructions. */ +/* NAT. DESCRIPTION: Natural / rural environment */ +/* other. DESCRIPTION: Location type not listed here */ +/* non-specified. DESCRIPTION: The location type is not declared */ +type enumerated LocationZoneType +{ + coastLine, + contiguousZone, + controlPoint, + exclusiveEconomicArea, + greenBorder, + highSeas, + iNW, + inland, + nAT, + nonSpecified, + other, + port_, + territorialWaters, + thirdCountry +} +with { + variant "text 'coastLine' as capitalized"; + variant "text 'contiguousZone' as capitalized"; + variant "text 'controlPoint' as capitalized"; + variant "text 'exclusiveEconomicArea' as capitalized"; + variant "text 'greenBorder' as capitalized"; + variant "text 'highSeas' as capitalized"; + variant "text 'iNW' as capitalized"; + variant "text 'inland' as capitalized"; + variant "text 'nAT' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'port_' as 'Port'"; + variant "text 'territorialWaters' as capitalized"; + variant "text 'thirdCountry' as capitalized"; +}; + +/* +type Location Location_derivations +with { + variant "element"; +}; +*/ + +/* This class allows the description of the meteorological oceanographic condition of a given Location. */ +type record MeteoOceanographicCondition +{ + XSD.Double airTemperature optional, + XSD.Int cloudCeiling optional, + CloudCoverType cloudCover optional, + XSD.Int precipitation optional, + Period referencePeriod optional, + XSD.Double salinity optional, + SeaConditionType seaCondition optional, + XSD.Double seaLevelPressure optional, + SourceType sourceType optional, + XSD.Double tidalCurrentDirection optional, + XSD.Double tidalCurrentSpeed optional, + TidesType tides optional, + XSD.Double visibility optional, + XSD.Double waterTemperature optional, + XSD.Double waveDirection optional, + XSD.Double waveHeight optional, + http_www_cise_eu_datamodel_v1_entity_location.WeatherConditionType weatherCondition optional, + XSD.Double windCurrentDirection optional, + XSD.Double windCurrentSpeed optional, + record { + Location_derivations location optional + } locationRel optional +} +with { + variant (airTemperature) "name as capitalized"; + variant (cloudCeiling) "name as capitalized"; + variant (cloudCover) "name as capitalized"; + variant (precipitation) "name as capitalized"; + variant (referencePeriod) "name as capitalized"; + variant (salinity) "name as capitalized"; + variant (seaCondition) "name as capitalized"; + variant (seaLevelPressure) "name as capitalized"; + variant (sourceType) "name as capitalized"; + variant (tidalCurrentDirection) "name as capitalized"; + variant (tidalCurrentSpeed) "name as capitalized"; + variant (tides) "name as capitalized"; + variant (visibility) "name as capitalized"; + variant (waterTemperature) "name as capitalized"; + variant (waveDirection) "name as capitalized"; + variant (waveHeight) "name as capitalized"; + variant (weatherCondition) "name as capitalized"; + variant (windCurrentDirection) "name as capitalized"; + variant (windCurrentSpeed) "name as capitalized"; + variant (locationRel) "name as capitalized"; + variant (locationRel.location) "name as capitalized"; +}; + + +/* observed. DESCRIPTION: By observation */ +/* declared. DESCRIPTION: By declaration */ +/* estimated. DESCRIPTION: By estimation */ +/* simulated. DESCRIPTION: By simulation */ +/* other. DESCRIPTION: METOC type not listed here */ +/* non-specified. DESCRIPTION: The METOC type is not declared */ +type enumerated MetocType +{ + declared, + estimated, + nonSpecified, + observed, + other, + simulated +} +with { + variant "text 'declared' as capitalized"; + variant "text 'estimated' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'observed' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'simulated' as capitalized"; +}; + +/* +type Location_derivations Location +with { + variant "element"; +}; +*/ + +/* Location with a given name. */ +type record NamedLocation +{ + record of Geometry geometry_list, + LocationQualitativeAccuracyType locationQualitativeAccuracy optional, + record of LocationZoneType locationZone_list, + record of Metadata metadata_list, + OperationalPurposeType operationalPurpose optional, + XSD.AnyURI geographicIdentifier optional, + record of XSD.String geographicName_list +} +with { + variant (geometry_list) "untagged"; + variant (geometry_list[-]) "name as 'Geometry'"; + variant (locationQualitativeAccuracy) "name as capitalized"; + variant (locationZone_list) "untagged"; + variant (locationZone_list[-]) "name as 'LocationZone'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (operationalPurpose) "name as capitalized"; + variant (geographicIdentifier) "name as capitalized"; + variant (geographicName_list) "untagged"; + variant (geographicName_list[-]) "name as 'GeographicName'"; +}; + + +/* search area. DESCRIPTION: Search area */ +/* surveillance area. DESCRIPTION: Surveillance area */ +/* other. DESCRIPTION: Operational purpose not listed here */ +/* non-specified. DESCRIPTION: The operational purpose is not declared */ +type enumerated OperationalPurposeType +{ + nonSpecified, + other, + search_area, + surveillance_area +} +with { + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'search_area' as 'Search area'"; + variant "text 'surveillance_area' as 'Surveillance area'"; +}; + +/* +type Location_derivations Location +with { + variant "element"; +};*/ + + +/* Location of one of the facilities contained in a port. */ +type record PortFacilityLocation +{ + record of Geometry geometry_list, + LocationQualitativeAccuracyType locationQualitativeAccuracy optional, + record of LocationZoneType locationZone_list, + record of Metadata metadata_list, + OperationalPurposeType operationalPurpose optional, + XSD.String portFacilityName optional, + XSD.String portFacilityNumber optional, + ISPSSecurityLevelType portSecurityLevel optional +} +with { + variant (geometry_list) "untagged"; + variant (geometry_list[-]) "name as 'Geometry'"; + variant (locationQualitativeAccuracy) "name as capitalized"; + variant (locationZone_list) "untagged"; + variant (locationZone_list[-]) "name as 'LocationZone'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (operationalPurpose) "name as capitalized"; + variant (portFacilityName) "name as capitalized"; + variant (portFacilityNumber) "name as capitalized"; + variant (portSecurityLevel) "name as capitalized"; +}; + +/* +type Location_derivations Location +with { + variant "element"; +}; +*/ + +/* Location describing the position/area of a port. */ +type record PortLocation +{ + record of Geometry geometry_list, + LocationQualitativeAccuracyType locationQualitativeAccuracy optional, + record of LocationZoneType locationZone_list, + record of Metadata metadata_list, + OperationalPurposeType operationalPurpose optional, + XSD.String locationCode optional, + XSD.String portName optional, + ISPSSecurityLevelType portSecurityLevel optional +} +with { + variant (geometry_list) "untagged"; + variant (geometry_list[-]) "name as 'Geometry'"; + variant (locationQualitativeAccuracy) "name as capitalized"; + variant (locationZone_list) "untagged"; + variant (locationZone_list[-]) "name as 'LocationZone'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (operationalPurpose) "name as capitalized"; + variant (locationCode) "name as capitalized"; + variant (portName) "name as capitalized"; + variant (portSecurityLevel) "name as capitalized"; +}; + + +/* calm (glassy). DESCRIPTION: 0 metres (0 */ +/*  ft) */ +/* calm (rippled). DESCRIPTION: Waves from 0 to 0.1 metres (0.00 to 0.33 */ +/*  ft) */ +/* smooth (wavelets). DESCRIPTION: Waves from 0.1 to 0.5 metres (3.9 */ +/*  in to 1 ft 7.7 in) */ +/* slight. DESCRIPTION: Waves from 0.5 to 1.25 metres (1 */ +/*  ft 8 in to 4 ft 1 in) */ +/* moderate. DESCRIPTION: Waves from 1.25 to 2.5 metres (4 */ +/*  ft 1 in to 8 ft 2 in) */ +/* rough. DESCRIPTION: Waves from 2.5 to 4 metres (8 */ +/*  ft 2 in to 13 ft 1 in) */ +/* very rough. DESCRIPTION: Waves from 4 to 6 metres (13 to 20 */ +/*  ft) */ +/* high. DESCRIPTION: Waves from 6 to 9 metres (20 to 30 */ +/*  ft) */ +/* very high. DESCRIPTION: Waves from 9 to 14 metres (30 to 46 */ +/*  ft) */ +/* phenomenal. DESCRIPTION: Waves over 14 metres (46 */ +/*  ft) */ +type enumerated SeaConditionType +{ + calm_glassy, + calm_rippled, + high, + moderate, + phenomenal, + rough, + slight, + smooth_wavelets, + very_high, + very_rough +} +with { + variant "text 'calm_glassy' as 'Calm (glassy)'"; + variant "text 'calm_rippled' as 'Calm (rippled)'"; + variant "text 'high' as capitalized"; + variant "text 'moderate' as capitalized"; + variant "text 'phenomenal' as capitalized"; + variant "text 'rough' as capitalized"; + variant "text 'slight' as capitalized"; + variant "text 'smooth_wavelets' as 'Smooth (wavelets)'"; + variant "text 'very_high' as 'Very high'"; + variant "text 'very_rough' as 'Very rough'"; +}; + + +/* low tides. DESCRIPTION: low tides */ +/* high tides. DESCRIPTION: high tides */ +type enumerated TidesType +{ + high, + low +} +with { + variant "text 'high' as capitalized"; + variant "text 'low' as capitalized"; +}; + + +/* hum weather. DESCRIPTION: Humid conditions */ +/* icy weather. DESCRIPTION: Icy conditions */ +/* tds weather. DESCRIPTION: Thunderstorm conditions */ +/* win weather. DESCRIPTION: Windy conditions */ +/* drzle weather. DESCRIPTION: Drizzle. Fairly uniform precipitation composed exclusively of fine drops very close together. Drizzle appears to float while following air currents although, unlike fog droplets, it falls to the ground. It usually falls from low stratus clouds and is frequently accompanied by low visibility and fog. */ +/* fog weather. DESCRIPTION: Fog/mist. A visible aggregate of minute water particles (droplets) which are based on the Earth */ +/* ’s surface, extends vertically, and reduceshorizontal visibility to less than 5/8 mile (1,000 meters). Unlike drizzle, FOG does not fall to the ground. */ +/* other. DESCRIPTION: Weather Condition type not listed here */ +/* non-specified. DESCRIPTION: Weather Condition type is not declared */ +type enumerated WeatherConditionType +{ + dRZLE, + fOG, + hUM, + iCY, + nonSpecified, + other, + tDS, + wIN +} +with { + variant "text 'dRZLE' as capitalized"; + variant "text 'fOG' as capitalized"; + variant "text 'hUM' as capitalized"; + variant "text 'iCY' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'tDS' as capitalized"; + variant "text 'wIN' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/location/' prefix 'location'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_metadata.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_metadata.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6cf04b17500983eb720048903c6cf269974fe8d7 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_metadata.ttcn @@ -0,0 +1,197 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_metadata.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - FileMediaType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/metadata/" */ +// - InformationReliabilityLevelType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/metadata/" */ +// - InformationSecurityClassificationType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/metadata/" */ +// - InformationSensitivityDegreeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/metadata/" */ +// - Metadata.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/metadata/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_entity_metadata { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +/* Content types and subtypes as defined in RFC 2046||(Main types include: application, audio, example, image, message, model, multipart, text, video) */ +/* x-world/x-3dmf. DESCRIPTION: */ +/* video/avi. DESCRIPTION: */ +/* image/jpeg. DESCRIPTION: */ +type enumerated FileMediaType +{ + imagejpeg, + videoavi, + x_worldx_3dmf +} +with { + variant "text 'imagejpeg' as 'image/jpeg'"; + variant "text 'videoavi' as 'video/avi'"; + variant "text 'x_worldx_3dmf' as 'x-world/x-3dmf'"; +}; + + +/* This enumeration provides a quantitative evaluation of the reliability level of the information that is provided. */ +/* very high confidence, verified data. DESCRIPTION: Information and material whose owner is extremely confident of */ +/* high confidence. DESCRIPTION: Information and material whose owner is very confident of */ +/* confident. DESCRIPTION: Information and material whose owner is confident of */ +/* low confidence, unsure source of verification. DESCRIPTION: Information and material whose owner is not confident of */ +/* very low confidence, no verification, co-operative target. DESCRIPTION: Information and material whose owner is very unconfident of */ +/* non-specified. DESCRIPTION: Information and material whose reliability is not specified */ +type enumerated InformationReliabilityLevelType +{ + confident, + highConfidence, + lowConfidence, + nonSpecified, + veryHighConfidence, + veryLowConfidence +} +with { + variant "text 'confident' as capitalized"; + variant "text 'highConfidence' as capitalized"; + variant "text 'lowConfidence' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'veryHighConfidence' as capitalized"; + variant "text 'veryLowConfidence' as capitalized"; +}; + + +/* This enumeration presents the possible values for information security classification. The enumeration is based in the security rules for protecting EU classified information (http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:141:0017:0065:EN:PDF ). */ +/* EU top secret. DESCRIPTION: Information and material the unauthorized disclosure of which could cause exceptionally grave prejudice to the essential interests of the European Union or of one or more of the Member States */ +/* EU secret. DESCRIPTION: Information and material the unauthorized disclosure of which could seriously harm the essential interests of the European Union or of one or more of the Member States */ +/* EU confidential. DESCRIPTION: Information and material the unauthorized disclosure of which could harm the essential interests of the European Union or of one or more of the Member States */ +/* EU restricted. DESCRIPTION: Information and material the unauthorized disclosure of which could be disadvantageous to the interests of the European Union or of one or more of the Member States */ +/* non-classified. DESCRIPTION: It can be used for information and material whose classification level is still pending */ +/* non-specified. DESCRIPTION: It can be used for information and material whose classification level is not specified */ +type enumerated InformationSecurityClassificationType +{ + eUConfidential, + eURestricted, + eUSecret, + eUTopSecret, + nonClassified, + nonSpecified +} +with { + variant "text 'eUConfidential' as capitalized"; + variant "text 'eURestricted' as capitalized"; + variant "text 'eUSecret' as capitalized"; + variant "text 'eUTopSecret' as capitalized"; + variant "text 'nonClassified' as capitalized"; + variant "text 'nonSpecified' as capitalized"; +}; + + +/* This enumeration presents the possible values for information sensitivity degree. The Traffic Light Protocol (TLP) of US-CERT is applied (http://www.us-cert.gov/tlp ). */ +/* red. DESCRIPTION: TLP: RED when information cannot be effectively acted upon by additional parties, and could lead to impacts on a party's privacy, reputation, or operations if misused. */ +/* amber. DESCRIPTION: TLP: AMBER when information requires support to be effectively acted upon, but carries risks to privacy, reputation, or operations if shared outside of the organizations involved. */ +/* green. DESCRIPTION: TLP: GREEN when information is useful for the awareness of all participating organizations as well as with peers within the broader community or sector. */ +/* white. DESCRIPTION: TLP: WHITE when information carries minimal or no foreseeable risk of misuse, in accordance with applicable rules and procedures for public release. */ +/* non-specified. DESCRIPTION: It can be used for information and material whose classification level is not specified */ +type enumerated InformationSensitivityDegreeType +{ + amber, + green, + nonSpecified, + red, + white +} +with { + variant "text 'amber' as capitalized"; + variant "text 'green' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'red' as capitalized"; + variant "text 'white' as capitalized"; +}; + + +/* The class provides information about the properties of the data communicated through the system, excluding the content of the data. */ +type record Metadata +{ + XSD.String abstract optional, + XSD.String comments optional, + XSD.DateTime creationDate optional, + Agent_derivations creator optional, + XSD.String description optional, + XSD.String designation optional, + FileMediaType fileMediaType optional, + XSD.AnyURI fileSchema optional, + XSD.AnyURI fileURI optional, + InformationReliabilityLevelType informationReliabilityLevel optional, + InformationSecurityClassificationType informationSecurityClassification optional, + http_www_cise_eu_datamodel_v1_entity_metadata.InformationSensitivityDegreeType informationSensitivityDegree optional, + XSD.String language_ optional, + XSD.DateTime publicationDate optional, + Agent_derivations publisher optional, + Period validityPeriod optional +} +with { + variant (abstract) "name as capitalized"; + variant (comments) "name as capitalized"; + variant (creationDate) "name as capitalized"; + variant (creator) "name as capitalized"; + variant (description) "name as capitalized"; + variant (designation) "name as capitalized"; + variant (fileMediaType) "name as capitalized"; + variant (fileSchema) "name as capitalized"; + variant (fileURI) "name as capitalized"; + variant (informationReliabilityLevel) "name as capitalized"; + variant (informationSecurityClassification) "name as capitalized"; + variant (informationSensitivityDegree) "name as capitalized"; + variant (language_) "name as 'Language'"; + variant (publicationDate) "name as capitalized"; + variant (publisher) "name as capitalized"; + variant (validityPeriod) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/metadata/' prefix 'metadata'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_movement.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_movement.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..bd93aa09e56c035b4cc564c9c4ba30897b7a66ce --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_movement.ttcn @@ -0,0 +1,171 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_movement.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - MovementType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/movement/" */ +// - Movement.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/movement/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_movement { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +/* This enumeration presents the possible types of processes used to perform the objects */ +/* ’ correlation. */ +/* route plan. DESCRIPTION: Expected locations/direction and movements that a vessels will follow during a voyage. It is known before departure */ +/* voyage. DESCRIPTION: Journey involving travel by sea */ +/* voyage leg. DESCRIPTION: Stage of a Voyage */ +/* search pattern. DESCRIPTION: Search pattern for a certain area */ +/* patrol route plan. DESCRIPTION: Patrol route plan for a certain area */ +/* other. DESCRIPTION: Movement type not included above */ +/* non-specified. DESCRIPTION: Movement type non-specified */ +type enumerated MovementType +{ + nonSpecified, + other, + patrol_route_plan, + routePlan, + search_pattern, + voyage, + voyage_leg +} +with { + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'patrol_route_plan' as 'Patrol route plan'"; + variant "text 'routePlan' as capitalized"; + variant "text 'search_pattern' as 'Search pattern'"; + variant "text 'voyage' as capitalized"; + variant "text 'voyage_leg' as 'Voyage leg'"; +}; + + +/* It is a subclass of event. The Movement entity is linked to Voyage. Movement can be actual (e.g. current position, heading and speed), Historical data or planned in the future and can also be expressed taking into account other entities as location, object, etc. */ +type record Movement +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + NatureType natureType optional, + Period occurrencePeriod optional, + record of record { + Event_derivations event optional, + EventRoleInEventType eventRole optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Risk risk optional + } impliedRiskRel_list, + record of record { + Location_derivations location optional, + Period dateTime optional, + EventAreaType eventArea optional, + LocationRoleInEventType locationRole optional, + SourceType sourceType optional + } locationRel_list, + record of record { + Object_derivations object_ optional, + http_www_cise_eu_datamodel_v1_entity_event.ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedObjectRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list, + MovementType movementType optional, + XSD.String purpose optional, + XSD.String voyageNumber optional +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (natureType) "name as capitalized"; + variant (occurrencePeriod) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].event) "name as capitalized"; + variant (involvedWithRel_list[-].eventRole) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (impliedRiskRel_list) "untagged"; + variant (impliedRiskRel_list[-]) "name as 'ImpliedRiskRel'"; + variant (impliedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].dateTime) "name as capitalized"; + variant (locationRel_list[-].eventArea) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].objectRole) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (movementType) "name as capitalized"; + variant (purpose) "name as capitalized"; + variant (voyageNumber) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/movement/' prefix 'movement'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_object.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_object.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a2e33fac8e6decf8dd8d96c58a194e47b235f7c8 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_object.ttcn @@ -0,0 +1,606 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_object.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - PlacementPurposeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - Aircraft.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - ColourType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - LandVehicle.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - LocationRoleType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - Object.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - PlannedOperationsType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - PlannedWorksType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - SensorType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - SourceType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +// - Vehicle.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/object/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_object { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +import from http_www_cise_eu_datamodel_v1_entity_location all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_entity_risk all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; + + +import from http_www_cise_eu_datamodel_v1_entity_document all; + + +import from http_www_cise_eu_datamodel_v1_entity_operationalasset all; + + +import from http_www_cise_eu_datamodel_v1_entity_cargo all; + +import from http_www_cise_eu_datamodel_v1_entity_vessel all; + + +/* This enumeration describes the reason of placement of an object to a location. An object can be at a location because it is in transit. A vessel (i.e. an object) can also be assigned to a location. */ +/* in transit. DESCRIPTION: The Object is at a Location during a transit */ +/* assigned. DESCRIPTION: The Object is assigned to the Location */ +/* other. DESCRIPTION: Any other type not mentioned above */ +/* non-specified. DESCRIPTION: Type not specified */ +type enumerated PlacementPurposeType +{ + assigned, + inTransit, + nonSpecified, + other +} +with { + variant "text 'assigned' as capitalized"; + variant "text 'inTransit' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +type Vehicle_derivations Aircraft; + + +/* cyan. DESCRIPTION: */ +/* grey. DESCRIPTION: */ +/* yellow. DESCRIPTION: */ +/* white. DESCRIPTION: */ +/* black. DESCRIPTION: */ +/* pink. DESCRIPTION: */ +/* green. DESCRIPTION: */ +/* blue. DESCRIPTION: */ +/* brown. DESCRIPTION: */ +/* orange. DESCRIPTION: */ +/* violet. DESCRIPTION: */ +/* red. DESCRIPTION: */ +type enumerated ColourType +{ + black, + blue, + brown, + cyan, + green, + grey, + orange, + pink, + red, + violet, + white, + yellow +} +with { + variant "text 'black' as capitalized"; + variant "text 'blue' as capitalized"; + variant "text 'brown' as capitalized"; + variant "text 'cyan' as capitalized"; + variant "text 'green' as capitalized"; + variant "text 'grey' as capitalized"; + variant "text 'orange' as capitalized"; + variant "text 'pink' as capitalized"; + variant "text 'red' as capitalized"; + variant "text 'violet' as capitalized"; + variant "text 'white' as capitalized"; + variant "text 'yellow' as capitalized"; +}; + + +type Vehicle_derivations LandVehicle; + + +/* Port of embarkation. DESCRIPTION: Port of embarkation (for vessel) */ +/* Port of disembarkation. DESCRIPTION: Port of disembarkation (for vessel) */ +/* Port of registry. DESCRIPTION: Port of registry (for vessel) */ +/* Lengthened place. DESCRIPTION: Lengthened place (for vessel) */ +/* Port of loading. DESCRIPTION: Port of loading (for cargo) */ +/* Port of discharge. DESCRIPTION: Port of discharge (for cargo) */ +/* non-specified. DESCRIPTION: Non specified */ +type enumerated LocationRoleType +{ + lengthenedPlace, + nonSpecified, + portOfDischarge, + portOfDisembarkation, + portOfEmbarkation, + portOfLoading, + portOfRegistry +} +with { + variant "text 'lengthenedPlace' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'portOfDischarge' as capitalized"; + variant "text 'portOfDisembarkation' as capitalized"; + variant "text 'portOfEmbarkation' as capitalized"; + variant "text 'portOfLoading' as capitalized"; + variant "text 'portOfRegistry' as capitalized"; +}; + + +/* The Object entity is one of the core entities of the overall data model. It is an abstract entity (it cannot been used as such) that holds information about physical entities from the maritime domain like vehicles (vessels, aircrafts and land vehicles) and cargo. Object has relationships with Event, Agent, Document, Risk and Location. Object can also be associated with another Object. */ +type record Object +{ + record of ColourType colour_list, + record of XSD.String externalMarkings_list, + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + record of XSD.String name_list, + record of record { + Risk risk optional + } involvedRiskRel_list, + record of record { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } locationRel_list, + record of record { + Event_derivations event optional, + ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedAgentRel_list +} +with { + variant "abstract"; + variant (colour_list) "untagged"; + variant (colour_list[-]) "name as 'Colour'"; + variant (externalMarkings_list) "untagged"; + variant (externalMarkings_list[-]) "name as 'ExternalMarkings'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (name_list) "untagged"; + variant (name_list[-]) "name as 'Name'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].cOG) "name as capitalized"; + variant (locationRel_list[-].heading) "name as capitalized"; + variant (locationRel_list[-].metadata_list) "untagged"; + variant (locationRel_list[-].metadata_list[-]) "name as 'Metadata'"; + variant (locationRel_list[-].periodOfTime) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (locationRel_list[-].placementPurpose) "name as capitalized"; + variant (locationRel_list[-].plannedOperations_list) "untagged"; + variant (locationRel_list[-].plannedOperations_list[-]) "name as 'PlannedOperations'"; + variant (locationRel_list[-].plannedWorks) "name as capitalized"; + variant (locationRel_list[-].sensorType) "name as capitalized"; + variant (locationRel_list[-].sOG) "name as capitalized"; + variant (locationRel_list[-].specialSecurityMeasures) "name as capitalized"; + variant (locationRel_list[-].speed) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].objectRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].duty) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedAgentRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'false' as '0'"; +}; + + +/* The Object entity is one of the core entities of the overall data model. It is an abstract entity (it cannot been used as such) that holds information about physical entities from the maritime domain like vehicles (vessels, aircrafts and land vehicles) and cargo. Object has relationships with Event, Agent, Document, Risk and Location. Object can also be associated with another Object. */ +type union Object_derivations +{ + Object object_, + Vehicle aircraft, + /* A Cargo refers to a set of goods transported by a ship between two ports. */ + Cargo cargo, + /* CargoUnit is an entity which holds information about units of goods when transported by ships. The subclasses of CargoUnit can represent either the whole cargo in a vehicle or a part of it. */ + Object cargoUnit, + /* A Catch refers to a set of distinct species catch in the see/ocean by a fishing vessel. Catch has the same associations and relationships than its parent-class Object. Thus it can have relationship with Document, Risk, Event, Location, and Agent. */ + Catch catch_, + /* Containment unit is an entity which holds information about units of goods when transported by ships contained in containers or bulk. */ + ContainmentUnit containmentUnit, + Vehicle_derivations landVehicle, + /* The Vehicle is a sub-class of Object and is used to determine types of physical moving objects related to maritime. The class Vehicle inherits the attributes and relationships of Object. Vehicle has three sub-classes: Vessel, Aircraft and LandVehicle. */ + Vehicle vehicle, + /* The class Vessel is a sub-class of the class Vehicle. A vessel refers to a ship or a boat. Vessel has the same associations and relationships than its parent-classes Vehicle and Object. Thus it can have relationship with Document, Risk, Event, Location, and Agent. It can also be associated with OperationalAsset. */ + Vessel vessel +} +with { + variant "useType"; + variant (object_) "name as 'Object'"; + variant (object_) "abstract"; + variant (aircraft) "name as capitalized"; + variant (cargo) "name as capitalized"; + variant (cargoUnit) "name as capitalized"; + variant (catch_) "name as 'Catch'"; + variant (containmentUnit) "name as capitalized"; + variant (landVehicle) "name as capitalized"; + variant (vehicle) "name as capitalized"; + variant (vessel) "name as capitalized"; +}; + + +/* This enumeration presents the possible planned operations for which an Object is at a Location. */ +/* loading. DESCRIPTION: The Object is at the Location to load cargo */ +/* unloading. DESCRIPTION: The Object is at the Location to unload cargo */ +/* other. DESCRIPTION: Any other operation not mentioned above */ +/* non-specified. DESCRIPTION: Operation not specified */ +type enumerated PlannedOperationsType +{ + loading, + nonSpecified, + other, + unloading +} +with { + variant "text 'loading' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'unloading' as capitalized"; +}; + + +/* This enumeration presents the possible planned works which can explain that an Object is at a Location. */ +/* inspection. DESCRIPTION: The Object is at a Location for Inspection */ +/* maintenance and repair. DESCRIPTION: The Object is at a Location for Maintenance and repair */ +/* other. DESCRIPTION: Any other works not mentioned above */ +/* non-specified. DESCRIPTION: Works not specified */ +type enumerated PlannedWorksType +{ + inspection, + maintenanceAndRepair, + nonSpecified, + other +} +with { + variant "text 'inspection' as capitalized"; + variant "text 'maintenanceAndRepair' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the Sensor at the origin of an association between an Object and a Location. */ +/* sighting. DESCRIPTION: The Object is observed at the Location */ +/* underwater sensor. DESCRIPTION: Underwater sensor */ +/* maritime radar. DESCRIPTION: Maritime radar */ +/* synthetic aperture radar. DESCRIPTION: Synthetic aperture radar */ +/* EOIR optronic system. DESCRIPTION: EO/IR Optronic system */ +/* maritime moving target identification. DESCRIPTION: Maritime moving target identification */ +/* signal interception systems COMINT. DESCRIPTION: Signal interception systems COMINT */ +/* signal interception systems ELINT. DESCRIPTION: Signal interception systems ELINT */ +/* environmental sensing systems. DESCRIPTION: Environmental sensing systems */ +/* automatic identification system. DESCRIPTION: Automatic Identification System (AIS) */ +/* vessel monitoring system. DESCRIPTION: Vessel monitoring system (VMS) */ +/* long range identification tracking. DESCRIPTION: Long range identification and tracking (LRIT) */ +/* automatic vehicle location. DESCRIPTION: Automatic vehicle location (AVL) */ +/* acoustic systems. DESCRIPTION: Acoustic Systems ACINT */ +/* non-traditional sources. DESCRIPTION: Non-traditional sources */ +/* other. DESCRIPTION: Any other sensor not mentioned above */ +/* non-specified. DESCRIPTION: Sensor not specified */ +type enumerated SensorType +{ + acousticSystems, + automaticIdentificationSystem, + automaticVehicleLocation, + eOIROptronicSystem, + environmentalSensingSystems, + longRangeIdentificationTracking, + maritimeMovingTargetIdentification, + maritimeRadar, + nonSpecified, + nonTraditionalSources, + other, + sighting, + signalInterceptionSystemsCOMINT, + signalInterceptionSystemsELINT, + syntheticApertureRadar, + underwaterSensor, + vesselMonitoringSystem +} +with { + variant "text 'acousticSystems' as 'AcousticSystems '"; + variant "text 'automaticIdentificationSystem' as capitalized"; + variant "text 'automaticVehicleLocation' as capitalized"; + variant "text 'eOIROptronicSystem' as capitalized"; + variant "text 'environmentalSensingSystems' as capitalized"; + variant "text 'longRangeIdentificationTracking' as capitalized"; + variant "text 'maritimeMovingTargetIdentification' as capitalized"; + variant "text 'maritimeRadar' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'nonTraditionalSources' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'sighting' as capitalized"; + variant "text 'signalInterceptionSystemsCOMINT' as capitalized"; + variant "text 'signalInterceptionSystemsELINT' as capitalized"; + variant "text 'syntheticApertureRadar' as capitalized"; + variant "text 'underwaterSensor' as capitalized"; + variant "text 'vesselMonitoringSystem' as capitalized"; +}; + + +/* This enumeration defines how the placement of an object to a location has been determined. The location of an object can be observed, declared, estimated or simulated. */ +/* observation. DESCRIPTION: The location of the object is observed */ +/* declaration. DESCRIPTION: The location of the object is declared */ +/* estimation. DESCRIPTION: The location of the object is estimated */ +/* simulation. DESCRIPTION: The location of the object is simulated */ +/* correlation. DESCRIPTION: The location of the object has been correlated */ +/* other. DESCRIPTION: Any other type not mentioned above */ +/* non-specified. DESCRIPTION: Type not specified */ +type enumerated SourceType +{ + correlation, + declaration, + estimation, + nonSpecified, + observation, + other, + simulation +} +with { + variant "text 'correlation' as capitalized"; + variant "text 'declaration' as capitalized"; + variant "text 'estimation' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'observation' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'simulation' as capitalized"; +}; + + +/* The Vehicle is a sub-class of Object and is used to determine types of physical moving objects related to maritime. The class Vehicle inherits the attributes and relationships of Object. Vehicle has three sub-classes: Vessel, Aircraft and LandVehicle. */ +type record Vehicle +{ + record of ColourType colour_list, + record of XSD.String externalMarkings_list, + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + record of XSD.String name_list, + record of record { + Risk risk optional + } involvedRiskRel_list, + record of record { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } locationRel_list, + record of record { + Event_derivations event optional, + ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedAgentRel_list, + XSD.Double maximumSpeed optional, + record of XSD.String nationality_list, + XSD.Int totalPersonsOnBoard optional, + record { + OperationalAsset operationalAsset optional + } correspondentAssetRel optional, + record of record { + Vehicle_derivations vehicle optional + } vehiclesRel_list, + record { + Cargo cargo optional + } cargoRel optional +} +with { + variant "abstract"; + variant (colour_list) "untagged"; + variant (colour_list[-]) "name as 'Colour'"; + variant (externalMarkings_list) "untagged"; + variant (externalMarkings_list[-]) "name as 'ExternalMarkings'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (name_list) "untagged"; + variant (name_list[-]) "name as 'Name'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].cOG) "name as capitalized"; + variant (locationRel_list[-].heading) "name as capitalized"; + variant (locationRel_list[-].metadata_list) "untagged"; + variant (locationRel_list[-].metadata_list[-]) "name as 'Metadata'"; + variant (locationRel_list[-].periodOfTime) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (locationRel_list[-].placementPurpose) "name as capitalized"; + variant (locationRel_list[-].plannedOperations_list) "untagged"; + variant (locationRel_list[-].plannedOperations_list[-]) "name as 'PlannedOperations'"; + variant (locationRel_list[-].plannedWorks) "name as capitalized"; + variant (locationRel_list[-].sensorType) "name as capitalized"; + variant (locationRel_list[-].sOG) "name as capitalized"; + variant (locationRel_list[-].specialSecurityMeasures) "name as capitalized"; + variant (locationRel_list[-].speed) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].objectRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].duty) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedAgentRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (maximumSpeed) "name as capitalized"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (totalPersonsOnBoard) "name as capitalized"; + variant (correspondentAssetRel) "name as capitalized"; + variant (correspondentAssetRel.operationalAsset) "name as capitalized"; + variant (vehiclesRel_list) "untagged"; + variant (vehiclesRel_list[-]) "name as 'VehiclesRel'"; + variant (vehiclesRel_list[-].vehicle) "name as capitalized"; + variant (cargoRel) "name as capitalized"; + variant (cargoRel.cargo) "name as capitalized"; +}; + + +/* The Vehicle is a sub-class of Object and is used to determine types of physical moving objects related to maritime. The class Vehicle inherits the attributes and relationships of Object. Vehicle has three sub-classes: Vessel, Aircraft and LandVehicle. */ +type union Vehicle_derivations +{ + Vehicle vehicle, + Vehicle aircraft, + Vehicle_derivations landVehicle, + /* The class Vessel is a sub-class of the class Vehicle. A vessel refers to a ship or a boat. Vessel has the same associations and relationships than its parent-classes Vehicle and Object. Thus it can have relationship with Document, Risk, Event, Location, and Agent. It can also be associated with OperationalAsset. */ + Vessel vessel +} +with { + variant "useType"; + variant (vehicle) "name as capitalized"; + variant (vehicle) "abstract"; + variant (aircraft) "name as capitalized"; + variant (landVehicle) "name as capitalized"; + variant (vessel) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/object/' prefix 'object'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_operationalasset.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_operationalasset.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..0da49bce1c4c456bd6ffc2391158d5e29256bbf4 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_operationalasset.ttcn @@ -0,0 +1,292 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_operationalasset.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - OperationalAssetType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/operationalasset/" */ +// - OperationalAsset.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/operationalasset/" */ +// - OperationalCapabilityType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/operationalasset/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//done + +module http_www_cise_eu_datamodel_v1_entity_operationalasset { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +/* This enumeration presents the possible types of operational assets. */ +/* aircraft. DESCRIPTION: An aircraft is a machine that is able to fly by gaining support from the air, or, in general, the atmosphere of a planet. It counters the force of gravity by using either static lift or by using the dynamic lift of an airfoil, or in a few cases the downward thrust from jet engines. */ +/* helicopter. DESCRIPTION: A helicopter is a type of rotorcraft in which lift and thrust are supplied by rotors */ +/* patrol boat. DESCRIPTION: Operated by navies, coast guards and police. Function */ +/* – defense of coastal waters, rivers and estuaries, borders security and law enforcement. May have an anti-surface role */ +/* UAV. DESCRIPTION: An unmanned aerial vehicle (UAV), also known as a drone, is an aircraft without a human pilot on board */ +/* submarine. DESCRIPTION: A submarine is a watercraft capable of independent operation underwater */ +/* frigate. DESCRIPTION: Smaller than destroyers, one or two missions. Protect naval groups and merchant ships. Anti-submarine warfare. Fleet air defense. Anti-surface warships */ +/* speed boat. DESCRIPTION: A motorboat, speedboat, or powerboat is a boat which is powered by an engine */ +/* drone. DESCRIPTION: Drone is the popular term for an unmanned aircraft. It is still a UAV however a drone is flown by software with pre-programmed behavior save for additional commands by the operators */ +/* tank. DESCRIPTION: A tank is a tracked, armoured fighting vehicle designed for front-line combat which combines operational mobility and tactical offensive and defensive capabilities */ +/* truck. DESCRIPTION: A truck (US, CA and AU) or lorry (UK and Ireland) is a motor vehicle designed to transport cargo. Also military use. */ +/* Four-wheel drive. DESCRIPTION: Four-wheel drive, All-wheel drive, AWD, 4WD, or 4 */ +/* ×4 is a four-wheeled vehicle with a drivetrain that allows all four wheels to receive torque from the engine */ +/* carrier. DESCRIPTION: Vehicle for transport */ +/* ambulance. DESCRIPTION: Ambulance */ +/* motorcycle. DESCRIPTION: Motorcycle */ +/* artillery vehicle. DESCRIPTION: Vehicle artillery equipped with an own propel system to move towards its target */ +/* desert patrol vehicle. DESCRIPTION: The Desert Patrol Vehicle (DPV), formerly called the Fast Attack Vehicle (FAV), is a high-speed, lightly armored sandrail-like vehicle first used in combat during the Gulf War in 1991 */ +/* tractor. DESCRIPTION: A tractor is an engineering vehicle specifically designed to deliver a high tractive effort (or torque) at slow speeds */ +/* wrecker. DESCRIPTION: A vehicle used to tow away broken-down cars */ +/* trailer. DESCRIPTION: A trailer is generally an unpowered vehicle pulled by a powered vehicle */ +/* humvee. DESCRIPTION: The High Mobility Multipurpose Wheeled Vehicle (HMMWV), commonly known as the Humvee, is a four-wheel drive military automobile produced by AM General */ +/* firetrack. DESCRIPTION: Vehicle used for Firefighting */ +/* van. DESCRIPTION: A van is a kind of vehicle used for transporting goods or people */ +/* UUV. DESCRIPTION: Unmanned underwater vehicles (UUV), sometimes known as underwater drones, are any vehicles that are able to operate underwater without a human occupant. These vehicles may be divided into two categories, Remotely operated underwater vehicles (ROVs) and Autonomous underwater vehicles (AUVs) */ +/* ROV. DESCRIPTION: ROV controlled by a remote human operato */ +/* USV. DESCRIPTION: USV operate independently of direct human input */ +/* sea platform. DESCRIPTION: Platform that stand on the sea for different purposes */ +/* aeroplane. DESCRIPTION: Aeroplane */ +/* destroyer. DESCRIPTION: Fast warships providing multi-mission offensive and defensive capability, independently or in fleet support */ +/* cruiser. DESCRIPTION: Multi-mission warships capable of engaging multiple simultaneous targets and employed in force support or independent action */ +/* aircraft carrier. DESCRIPTION: An aircraft carrier is a warship with a full-length flight deck and facilities for carrying, arming, deploying and recovering aircraft, acting as a seagoing airbase */ +/* corvette. DESCRIPTION: Small frigates. Protect naval and merchant ships. Anti-submarine warfare. Fleet defence (anti-aircraft mission) */ +/* auxiliary ships. DESCRIPTION: Re-supply Ship. Replenishment at Sea */ +/* landing ships. DESCRIPTION: Smaller then assault ships */ +/* assault ships. DESCRIPTION: Air Cushioned Vehicles */ +/* mine warfare ships. DESCRIPTION: Mine Warfare Ships */ +/* strategic fixed assets. DESCRIPTION: Strategic/fixed assets */ +/* ballons. DESCRIPTION: Ballons */ +/* other. DESCRIPTION: Other */ +type enumerated OperationalAssetType +{ + aeroplane, + aircraft, + aircraftCarrier, + ambulance, + artilleryVehicle, + assaultShips, + auxiliaryShips, + ballons, + carrier, + corvette, + cruiser, + desertPatrolVehicle, + destroyer, + drone, + firetrack, + fourWheelDrive, + frigate, + helicopter, + humvee, + landingShips, + mineWarfareShips, + motorcycle, + other, + patrolBoat, + rOV, + seaPlatform, + speedBoat, + strategicFixedAssets, + submarine, + tank, + tractor, + trailer, + truck, + uAV, + uSV, + uUV, + van, + wrecker +} +with { + variant "text 'aeroplane' as capitalized"; + variant "text 'aircraft' as capitalized"; + variant "text 'aircraftCarrier' as capitalized"; + variant "text 'ambulance' as capitalized"; + variant "text 'artilleryVehicle' as capitalized"; + variant "text 'assaultShips' as 'AssaultShips '"; + variant "text 'auxiliaryShips' as capitalized"; + variant "text 'ballons' as capitalized"; + variant "text 'carrier' as capitalized"; + variant "text 'corvette' as capitalized"; + variant "text 'cruiser' as capitalized"; + variant "text 'desertPatrolVehicle' as capitalized"; + variant "text 'destroyer' as capitalized"; + variant "text 'drone' as capitalized"; + variant "text 'firetrack' as capitalized"; + variant "text 'fourWheelDrive' as capitalized"; + variant "text 'frigate' as capitalized"; + variant "text 'helicopter' as capitalized"; + variant "text 'humvee' as capitalized"; + variant "text 'landingShips' as capitalized"; + variant "text 'mineWarfareShips' as 'MineWarfareShips '"; + variant "text 'motorcycle' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'patrolBoat' as capitalized"; + variant "text 'rOV' as capitalized"; + variant "text 'seaPlatform' as capitalized"; + variant "text 'speedBoat' as capitalized"; + variant "text 'strategicFixedAssets' as capitalized"; + variant "text 'submarine' as capitalized"; + variant "text 'tank' as capitalized"; + variant "text 'tractor' as capitalized"; + variant "text 'trailer' as capitalized"; + variant "text 'truck' as capitalized"; + variant "text 'uAV' as capitalized"; + variant "text 'uSV' as capitalized"; + variant "text 'uUV' as capitalized"; + variant "text 'van' as capitalized"; + variant "text 'wrecker' as capitalized"; +}; + + +/* An Operational Asset is an Object (in particular means of observation or transportation, but also including associated sensors, means of communication and means of intervention such as deterrence or neutralization of threats, fire fighting, pollution containment etc.) enabling operational Actions (most often at sea or on sea shores) of the Agents mandated by public Organizations in charge of Maritime Safety and Security. */ +type record OperationalAsset +{ + Period availabilityPeriod optional, + UniqueIdentifier identifier optional, + XSD.Int maxPassengers optional, + XSD.Double maxSpeed optional, + record of Metadata metadata_list, + OperationalAssetType operationalAssetType optional, + http_www_cise_eu_datamodel_v1_entity_operationalasset.OperationalCapabilityType operationalCapability optional, + XSD.Double range optional, + XSD.Time readinessState optional, + record { + Vehicle_derivations vehicle optional + } correspondentVehicleRel optional +} +with { + variant (availabilityPeriod) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (maxPassengers) "name as capitalized"; + variant (maxSpeed) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (operationalAssetType) "name as capitalized"; + variant (operationalCapability) "name as capitalized"; + variant (range) "name as capitalized"; + variant (readinessState) "name as capitalized"; + variant (correspondentVehicleRel) "name as capitalized"; + variant (correspondentVehicleRel.vehicle) "name as capitalized"; +}; + + +/* This enumeration presents the possible types of operational capabilities. */ +/* search and rescue. DESCRIPTION: Search for and provision of aid to people who are in distress or imminent danger */ +/* oil pollution. DESCRIPTION: Pollution due to release of a liquid petroleum hydrocarbon into the environment, especially marine areas, due to human activity */ +/* telecommunications TLC. DESCRIPTION: Can be accommodated within any of the listed OperationalCapability. It is the transmission of signals over long distances */ +/* patrolling. DESCRIPTION: The act of moving about an area especially by an authorized and trained person or group, for purposes of observation, inspection, or security */ +/* piracy attack. DESCRIPTION: Act of robbery or criminal violence at sea. The term can include acts committed on land, in the air, or in other major bodies of water or on a shore. It does not normally include crimes committed against persons traveling on the same vessel as the perpetrator (e.g. one passenger stealing from others on the same vessel). The term has been used throughout history to refer to raids across land borders by non-state agents. */ +/* illegal migration. DESCRIPTION: Refers to the migration of people across national borders in a way that violates the immigration laws of the destined country. In concrete detection of Cayucos, mother ships and border monitoring */ +/* counter drug smuggling. DESCRIPTION: Refers to a global illicit trade involving the cultivation, manufacture, distribution and sale of substances which are subject to drug prohibition laws */ +/* counter illegal fishing. DESCRIPTION: Illegal fishing is the fishing which takes place where vessels operate in violation of the fishery laws. It normally applies to the fisheries which are under the jurisdiction of the coastal state regulated by the regional organizations. */ +/* firefighting. DESCRIPTION: Attempting to control and extinguish fires */ +/* coordination. DESCRIPTION: Operating principle. Command and control that involves multiple, diverse, networked teams that can involve national and coalition partners and non-military agencies, challenging the commander to deal with options along various dimensions. */ +/* simulation. DESCRIPTION: Operating principle. Imitation of the operation of a real-world process or system over time. The act of simulating something first requires that a model be developed; this model represents the key characteristics or behaviors/functions of the selected physical or abstract system or process. The model represents the system itself, whereas the simulation represents the operation of the system over time */ +/* mobility. DESCRIPTION: Operating principle. It allows disposing of the necessary means in order to allow strategic deployment and high mobility of assets and personnel required for the operations. */ +/* training. DESCRIPTION: Operating principle. In general, training is the acquisition of knowledge, skills, and competencies as a result of the teaching of vocational or practical skills and knowledge that relate to specific useful competencies. */ +/* maintenance. DESCRIPTION: Operating principle. Operating principle. In general, all actions which have the objective of retaining or restoring an item in or to a state in which it can perform its required function. The actions include the combination of all technical and corresponding administrative, managerial, and supervision actions */ +/* sustainability. DESCRIPTION: Operating principle. This capability is oriented to guarantee the sustainability of the assets deployed during a long period of time. */ +/* intelligence surveillance reconnaissance. DESCRIPTION: Fall within the ISTAR concept, which is fundamentally obtaining information and intelligence to support the planning and conduct of operations. It is a practice that links several battlefield functions together to assist a combat force in employing its sensors and managing the information they gather. */ +/* C2 W command and control warfare. DESCRIPTION: Electronic Warfare encompasses all that is command and control capability, also PSYOPS (includes deception- simulation) */ +/* other. DESCRIPTION: Other not included above\n-Source */ +/* non-specified. DESCRIPTION: Non-specified */ +type enumerated OperationalCapabilityType +{ + c2WCommandAndControlWarfare, + coordination, + counterDrugSmuggling, + counterIllegalFishing, + firefighting, + illegalMigration, + intelligenceSurveillanceReconnaissance, + maintenance, + mobility, + nonSpecified, + oilPollution, + other, + patrolling, + piracyAttack, + searchAndRescue, + simulation, + sustainability, + telecommunicationsTLC, + training +} +with { + variant "text 'c2WCommandAndControlWarfare' as capitalized"; + variant "text 'coordination' as capitalized"; + variant "text 'counterDrugSmuggling' as capitalized"; + variant "text 'counterIllegalFishing' as capitalized"; + variant "text 'firefighting' as capitalized"; + variant "text 'illegalMigration' as capitalized"; + variant "text 'intelligenceSurveillanceReconnaissance' as capitalized"; + variant "text 'maintenance' as capitalized"; + variant "text 'mobility' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'oilPollution' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'patrolling' as capitalized"; + variant "text 'piracyAttack' as capitalized"; + variant "text 'searchAndRescue' as capitalized"; + variant "text 'simulation' as capitalized"; + variant "text 'sustainability' as capitalized"; + variant "text 'telecommunicationsTLC' as capitalized"; + variant "text 'training' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/operationalasset/' prefix 'operationalasset'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_organization.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_organization.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..2fc63cba51d0b67df32459c3f3f01e6b34959b37 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_organization.ttcn @@ -0,0 +1,772 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_organization.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - Organization.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - PortOrganization.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - FormalOrganization.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - OrganizationalCollaboration.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - OrganizationalUnit.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - OrganizationClassificationType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - OrganizationPurposeType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +// - OrganizationRoleType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/organization/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + +//DONE +module http_www_cise_eu_datamodel_v1_entity_organization { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_period all; + +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_event all; + + + + +/* The class Organization is a sub-class of an abstract class Agent. Organization represents a structured and legally recognized association of humans and material resources for some common purpose or reason for existence which goes beyond the set of people belonging to it. An organization may itself be involved as actor or target in the various events and activities. Organization can have the same associations and relationships than the parent-class Agent. Thus it can have relationship with other agents, objects and locations or it can be related to risks in different roles. Organization has four sub-classes: OrganizationalUnit, PortOrganization, FormalOrganization and OrganizationalCollaboration. */ +type record Organization +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + XSD.String alternativeName optional, + XSD.String identificationNumber optional, + XSD.String legalName optional, + OrganizationClassificationType organizationClassification optional, + record of OrganizationPurposeType organizationPurpose_list, + http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType organizationRole optional +} +with { + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (alternativeName) "name as capitalized"; + variant (identificationNumber) "name as capitalized"; + variant (legalName) "name as capitalized"; + variant (organizationClassification) "name as capitalized"; + variant (organizationPurpose_list) "untagged"; + variant (organizationPurpose_list[-]) "name as 'OrganizationPurpose'"; + variant (organizationRole) "name as capitalized"; +}; + + +/* The class Organization is a sub-class of an abstract class Agent. Organization represents a structured and legally recognized association of humans and material resources for some common purpose or reason for existence which goes beyond the set of people belonging to it. An organization may itself be involved as actor or target in the various events and activities. Organization can have the same associations and relationships than the parent-class Agent. Thus it can have relationship with other agents, objects and locations or it can be related to risks in different roles. Organization has four sub-classes: OrganizationalUnit, PortOrganization, FormalOrganization and OrganizationalCollaboration. */ +type union Organization_derivations +{ + Organization organization, + /* A particular sub-class of organization FormalOrganization can be used to indicate organizations that are recognized in the world at large, in particular in legal jurisdictions, with associated rights and responsibilities. Examples include a corporation, charity, government or church. */ + FormalOrganization formalOrganization, + /* The sub-class OrganizationalCollaboration is defined to describe a collaboration between two or more Organizations such as a project. OrganizationalCollaboration meets the criteria for being an Organization in that it has an identity and defined purpose independent of its particular members but is neither a formally recognized legal entity nor a sub-unit within some larger organization. Might typically have a shorter lifetime than the Organizations within it, but not necessarily. */ + OrganizationalCollaboration organizationalCollaboration, + /* In some cases it is useful to refer to departments or organizational units such as the IT department which only have meaning within the context of the containing organization and would not be regarded as a legal entity in its own right. This situation is supported by a subclass of Organization called OrganizationalUnit. */ + OrganizationalUnit organizationalUnit, + /* A particular sub-class of organization has been defined to be used when modelling IMO recognized ports. PortOrganization carries some additional attributes that carry information relevant only to ports. Subclass of Organization. */ + PortOrganization portOrganization +} +with { + variant "useType"; + variant (organization) "name as capitalized"; + variant (formalOrganization) "name as capitalized"; + variant (organizationalCollaboration) "name as capitalized"; + variant (organizationalUnit) "name as capitalized"; + variant (portOrganization) "name as capitalized"; +}; + +/* +type Organization_derivations Organization +with { + variant "element"; +}; +*/ + +/* A particular sub-class of organization has been defined to be used when modelling IMO recognized ports. PortOrganization carries some additional attributes that carry information relevant only to ports. Subclass of Organization. */ +type record PortOrganization +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + XSD.String alternativeName optional, + XSD.String identificationNumber optional, + XSD.String legalName optional, + OrganizationClassificationType organizationClassification optional, + record of OrganizationPurposeType organizationPurpose_list, + http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType organizationRole optional, + XSD.String iMOCompanyIdentificationNumber optional +} +with { + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (alternativeName) "name as capitalized"; + variant (identificationNumber) "name as capitalized"; + variant (legalName) "name as capitalized"; + variant (organizationClassification) "name as capitalized"; + variant (organizationPurpose_list) "untagged"; + variant (organizationPurpose_list[-]) "name as 'OrganizationPurpose'"; + variant (organizationRole) "name as capitalized"; + variant (iMOCompanyIdentificationNumber) "name as capitalized"; +}; + +/* +type Organization_derivations Organization +with { + variant "element"; +}; +*/ + +/* A particular sub-class of organization FormalOrganization can be used to indicate organizations that are recognized in the world at large, in particular in legal jurisdictions, with associated rights and responsibilities. Examples include a corporation, charity, government or church. */ +type record FormalOrganization +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + XSD.String alternativeName optional, + XSD.String identificationNumber optional, + XSD.String legalName optional, + OrganizationClassificationType organizationClassification optional, + record of OrganizationPurposeType organizationPurpose_list, + http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType organizationRole optional, + XSD.String formalOrganizationName optional +} +with { + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (alternativeName) "name as capitalized"; + variant (identificationNumber) "name as capitalized"; + variant (legalName) "name as capitalized"; + variant (organizationClassification) "name as capitalized"; + variant (organizationPurpose_list) "untagged"; + variant (organizationPurpose_list[-]) "name as 'OrganizationPurpose'"; + variant (organizationRole) "name as capitalized"; + variant (formalOrganizationName) "name as capitalized"; +}; + +/* +type Organization_derivations Organization +with { + variant "element"; +};*/ + + +/* The sub-class OrganizationalCollaboration is defined to describe a collaboration between two or more Organizations such as a project. OrganizationalCollaboration meets the criteria for being an Organization in that it has an identity and defined purpose independent of its particular members but is neither a formally recognized legal entity nor a sub-unit within some larger organization. Might typically have a shorter lifetime than the Organizations within it, but not necessarily. */ +type record OrganizationalCollaboration +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + XSD.String alternativeName optional, + XSD.String identificationNumber optional, + XSD.String legalName optional, + OrganizationClassificationType organizationClassification optional, + record of OrganizationPurposeType organizationPurpose_list, + http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType organizationRole optional, + record of record { + Organization_derivations organization optional + } participantRel_list +} +with { + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (alternativeName) "name as capitalized"; + variant (identificationNumber) "name as capitalized"; + variant (legalName) "name as capitalized"; + variant (organizationClassification) "name as capitalized"; + variant (organizationPurpose_list) "untagged"; + variant (organizationPurpose_list[-]) "name as 'OrganizationPurpose'"; + variant (organizationRole) "name as capitalized"; + variant (participantRel_list) "untagged"; + variant (participantRel_list[-]) "name as 'ParticipantRel'"; + variant (participantRel_list[-].organization) "name as capitalized"; +}; + +/* +type Organization_derivations Organization +with { + variant "element"; +}; +*/ + +/* In some cases it is useful to refer to departments or organizational units such as the IT department which only have meaning within the context of the containing organization and would not be regarded as a legal entity in its own right. This situation is supported by a subclass of Organization called OrganizationalUnit. */ +type record OrganizationalUnit +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + XSD.String alternativeName optional, + XSD.String identificationNumber optional, + XSD.String legalName optional, + OrganizationClassificationType organizationClassification optional, + record of OrganizationPurposeType organizationPurpose_list, + http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType organizationRole optional, + XSD.String unitIdentifier optional +} +with { + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (alternativeName) "name as capitalized"; + variant (identificationNumber) "name as capitalized"; + variant (legalName) "name as capitalized"; + variant (organizationClassification) "name as capitalized"; + variant (organizationPurpose_list) "untagged"; + variant (organizationPurpose_list[-]) "name as 'OrganizationPurpose'"; + variant (organizationRole) "name as capitalized"; + variant (unitIdentifier) "name as capitalized"; +}; + + +/* This enumeration presents the formal classification (status) of organization. */ +/* governmental. DESCRIPTION: Governmental organization. */ +/* european. DESCRIPTION: European agency. */ +/* member state. DESCRIPTION: Representing the government of a member state. */ +/* non-governmental. DESCRIPTION: International organization, independent of governments. */ +/* criminal. DESCRIPTION: Company involved in organized crime. */ +/* private. DESCRIPTION: Private sector company. */ +/* inter governmental. DESCRIPTION: International organization between governments. */ +/* other. DESCRIPTION: Any other not mentioned before */ +/* non-specified. DESCRIPTION: Not declared */ +type enumerated OrganizationClassificationType +{ + criminal, + european, + governmental, + interGovernmental, + memberState, + nonGovernmental, + nonSpecified, + other, + private_ +} +with { + variant "text 'criminal' as capitalized"; + variant "text 'european' as capitalized"; + variant "text 'governmental' as capitalized"; + variant "text 'interGovernmental' as capitalized"; + variant "text 'memberState' as capitalized"; + variant "text 'nonGovernmental' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'private_' as 'Private'"; +}; + + +/* This enumeration presents the general purpose of the organization. */ +/* general law enforcement. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring of compliance with applicable legislation in sea areas, where there is policing competence; support to enforcement and/or response operations */ +/* customs. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring of compliance with customs regulations on the import, export and movement of goods; support of enforcement operations\n• Early warning/identification of criminal trafficking of goods (narcotics, weapons, etc.); support of response operations */ +/* marine environment. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring of compliance with regulations on the protection of the marine environment; support of enforcement operations\n• Early warning/identification of incidents/accidents that may have an environmental impact; support of pollution response operations */ +/* maritime safety and security. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring of compliance with regulations on the safety and prevention of pollution caused by ships (construction, equipment, crew/passengers, cargo); support of enforcement operations\n• Monitoring of compliance with regulations on the safety of navigation (vessel traffic safety); support of enforcement operations\n• Monitoring of compliance with regulations on the security of ships; support of enforcement operations\n• Supporting safe and efficient flow of vessel traffic; vessel traffic management\n• Early warning/identification of ships/persons in distress; support of response operations (search and rescue, salvage, place of refuge)\n• Early warning/identification of maritime security threats, within the scope of SOLAS Chapter XI-2; support of response operations\n• Early warning/identification of threats/acts of piracy or armed robbery; support of response operations */ +/* defence. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring in support of general Defence tasks, such as: exercising national sovereignty at sea; combating terrorism and other hostile activities outside the EU; other Common Security and Defence Policy tasks, as defined in Articles 42 and 43 TEU. */ +/* fisheries control. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring of compliance with regulations on fisheries; support of enforcement operations\n• Early warning/identification of illegal fisheries or fish landings; support of response operations */ +/* border control. DESCRIPTION: Authorities responsible for:\n */ +/* • Monitoring of compliance with regulations on immigration and border crossing; support of enforcement operations\n• Early warning/identification of cases of illegal migration or trafficking in human beings; support of response operations */ +/* profitable. DESCRIPTION: Not authority. Private or public organization/company which is expected to make profit. */ +/* non-profitable. DESCRIPTION: Nor authority. Private or public organization which is not expected to make profit. */ +/* other. DESCRIPTION: Any other not mentioned before */ +/* non-specified. DESCRIPTION: Not declared */ +type enumerated OrganizationPurposeType +{ + borderControl, + customs, + defence, + fisheriesControl, + generalLawEnforcement, + marineEnvironment, + maritimeSafetyAndSecurity, + nonProfitable, + nonSpecified, + other, + profitable +} +with { + variant "text 'borderControl' as capitalized"; + variant "text 'customs' as capitalized"; + variant "text 'defence' as capitalized"; + variant "text 'fisheriesControl' as capitalized"; + variant "text 'generalLawEnforcement' as capitalized"; + variant "text 'marineEnvironment' as capitalized"; + variant "text 'maritimeSafetyAndSecurity' as capitalized"; + variant "text 'nonProfitable' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'profitable' as capitalized"; +}; + + +/* port authority. DESCRIPTION: SSN::Port authority. Port Authority means the competent authority or body designated by Member States for each port to receive and pass on information reported pursuant to the directive. */ +/* coastal station. DESCRIPTION: SSN::Coastal station. Coastal Station means any of the following, designated by Member States pursuant to the directive:\n */ +/* • A vessel traffic service (VTS)\n• A shore-based installation responsible for a mandatory reporting system approved (adopted) by the IMO\n• A body responsible for coordinating search and rescue operations or operations to tackle pollution at sea */ +/* port state control. DESCRIPTION: SSN::Port state control. The competent authority for inspecting the foreign ships in national ports to verify that the condition of the ship and its equipment comply with the requirements of international regulations and that the ship is manned and operated in compliance with these rules. */ +/* national competent authority. DESCRIPTION: SSN::National competent authority. Physical entity designated by Member States in charge of handling and exchanging the SafeSeaNet messages related to the maritime safety and the traffic monitoring directive. The single point of contact within the Member State is designated as NCA in the framework of SafeSeaNet. */ +/* inspection authority. DESCRIPTION: SSN::Incident::Inspection authority. Competent authority for incident inspections. */ +/* other. DESCRIPTION: Any other not mentioned before */ +/* non-specified. DESCRIPTION: Not declared */ +type enumerated OrganizationRoleType +{ + coastalStation, + inspectionAuthority, + nationalCompetentAuthority, + nonSpecified, + other, + portAuthority, + portStateControl +} +with { + variant "text 'coastalStation' as capitalized"; + variant "text 'inspectionAuthority' as capitalized"; + variant "text 'nationalCompetentAuthority' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'portAuthority' as capitalized"; + variant "text 'portStateControl' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/organization/' prefix 'organization'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_period.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_period.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..2551fec84afded5d0b3043065dd43c06a90d1ff8 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_period.ttcn @@ -0,0 +1,65 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_period.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - Period.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/period/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_entity_period { + + +import from XSD all; + + +/* The class Period is used to define a time interval which can be expressed by:||

    ||
  • only a duration (i.e. one month),
  • ||
  • a duration and a start (resp. end) date [ex.: a period of ten days starting (resp. ending) on December 10th, 2002], in this case the period is assumed to start (resp. end) on December 10th at 0:00 (resp. 23:59).
  • ||
  • a duration and a start (resp. end) time [ex.: a period of ten days starting (resp. ending) at 10am],
  • ||
  • a duration and start (resp. end) date and time (ex.: a period of ten days starting (resp. ending) on December 10th, 2002, 10am),
  • ||
  • a start Date and an end Date (ex.: December 3rd, 2002 & January 24th 2010),
  • ||
  • a start Time and an end Time (ex.: 9am and 10pm),
  • ||
  • a start date and start time following by an end date and end time (ex.: December 3rd, 2002 at 10pm and January 24th, 2010 at 9am).
  • ||
*/ +type record Period +{ + XSD.Duration duration optional, + XSD.Date endDate optional, + XSD.Time endTime optional, + XSD.Date startDate optional, + XSD.Time startTime optional +} +with { + variant (duration) "name as capitalized"; + variant (endDate) "name as capitalized"; + variant (endTime) "name as capitalized"; + variant (startDate) "name as capitalized"; + variant (startTime) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/period/' prefix 'period'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_person.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_person.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..88af5812625dffc5512e9e5a850a4162b4c21d0e --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_person.ttcn @@ -0,0 +1,247 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_person.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - GenderType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/person/" */ +// - PersonIdentificationType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/person/" */ +// - PersonIdentifier.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/person/" */ +// - Person.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/person/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// +//DONE + +module http_www_cise_eu_datamodel_v1_entity_person { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_object all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_event all; + + + + +/* The gender of an individual. */ +/* female. DESCRIPTION: Female */ +/* male. DESCRIPTION: Male */ +/* other. DESCRIPTION: Other gender, not male neither female */ +/* unknown. DESCRIPTION: Unknown */ +/* not applicable. DESCRIPTION: Not Applicable */ +type enumerated GenderType +{ + female, + male, + notApplicable, + other, + unknown +} +with { + variant "text 'female' as capitalized"; + variant "text 'male' as capitalized"; + variant "text 'notApplicable' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'unknown' as capitalized"; +}; + + +/* identity card. DESCRIPTION: Identity Card */ +/* social security card. DESCRIPTION: Social Security Card */ +/* passport. DESCRIPTION: Passport */ +/* fiscal document. DESCRIPTION: Fiscal Document */ +/* VISA. DESCRIPTION: Visa International Service Association Card */ +/* crew master book. DESCRIPTION: Crew Master Book */ +/* other. DESCRIPTION: Other value not included in the list */ +/* non-specified. DESCRIPTION: Not Specified */ +type enumerated PersonIdentificationType +{ + crewMasterBook, + fiscalDocument, + identityCard, + nonSpecified, + other, + passport, + socialSecurityCard, + vISA +} +with { + variant "text 'crewMasterBook' as capitalized"; + variant "text 'fiscalDocument' as capitalized"; + variant "text 'identityCard' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'passport' as capitalized"; + variant "text 'socialSecurityCard' as capitalized"; + variant "text 'vISA' as capitalized"; +}; + + +/* The PersonIdentifier class allows the identification of the Person by means of a document of given type and related id number, according to the different countries policy. */ +type record PersonIdentifier +{ + PersonIdentificationType identifierType optional, + XSD.String identifierValue optional +} +with { + variant (identifierType) "name as capitalized"; + variant (identifierValue) "name as capitalized"; +}; + + +/* The Person Class is a sub class of the more general 'Agent' class that encompasses organizations, legal entities, groups etc. - any entity that is able to carry out actions. The data type properties of the Person class do not have any cardinality restrictions and as such all are optional. However, guidance is provided for the usage of each property in the following sections. */ +type record Person +{ + XSD.String contactInformation optional, + UniqueIdentifier identifier optional, + XSD.Boolean isOfInterest optional, + XSD.Boolean isSuspect optional, + record of Metadata metadata_list, + record of XSD.String nationality_list, + record of record { + Location_derivations location optional, + AgentRoleInLocationType agentRole optional, + Period involvementPeriod optional + } locationRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInAgentType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional + } involvedWithRel_list, + record of record { + Object_derivations object_ optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedObjectRel_list, + record of record { + Risk risk optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedRiskRel_list, + record of record { + Event_derivations event optional, + http_www_cise_eu_datamodel_v1_entity_event.AgentRoleInEventType agentRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + XSD.String alternativeName optional, + XSD.Date birthDate optional, + XSD.String birthName optional, + XSD.DateTime dateOfDeath optional, + XSD.String familyName optional, + XSD.String fullName optional, + GenderType gender optional, + XSD.String givenName optional, + XSD.String patronymicName optional, + record of PersonIdentifier personIdentifiers_list +} +with { + variant (contactInformation) "name as capitalized"; + variant (identifier) "name as capitalized"; + variant (isOfInterest) "name as capitalized"; + //variant (isOfInterest) "text 'true' as '1'"; + //variant (isOfInterest) "text 'false' as '0'"; + variant (isSuspect) "name as capitalized"; + //variant (isSuspect) "text 'true' as '1'"; + //variant (isSuspect) "text 'false' as '0'"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].agentRole) "name as capitalized"; + variant (locationRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedWithRel_list) "untagged"; + variant (involvedWithRel_list[-]) "name as 'InvolvedWithRel'"; + variant (involvedWithRel_list[-].agent) "name as capitalized"; + variant (involvedWithRel_list[-].agentRole) "name as capitalized"; + variant (involvedWithRel_list[-].duty) "name as capitalized"; + variant (involvedWithRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (involvedObjectRel_list[-].agentRole) "name as capitalized"; + variant (involvedObjectRel_list[-].duty) "name as capitalized"; + variant (involvedObjectRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedObjectRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedObjectRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (involvedRiskRel_list[-].agentRole) "name as capitalized"; + variant (involvedRiskRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].agentRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (alternativeName) "name as capitalized"; + variant (birthDate) "name as capitalized"; + variant (birthName) "name as capitalized"; + variant (dateOfDeath) "name as capitalized"; + variant (familyName) "name as capitalized"; + variant (fullName) "name as capitalized"; + variant (gender) "name as capitalized"; + variant (givenName) "name as capitalized"; + variant (patronymicName) "name as capitalized"; + variant (personIdentifiers_list) "untagged"; + variant (personIdentifiers_list[-]) "name as 'PersonIdentifiers'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/person/' prefix 'person'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_risk.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_risk.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e3a1189a6c03b5e5e05631886c11a1c0ce2856b6 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_risk.ttcn @@ -0,0 +1,272 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_risk.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RiskLevelType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/risk/" */ +// - RiskProbabilityType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/risk/" */ +// - RiskSeverityType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/risk/" */ +// - RiskType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/risk/" */ +// - Risk.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/risk/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_entity_risk { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity all; + + +import from http_www_cise_eu_datamodel_v1_entity_agent all; + + +import from http_www_cise_eu_datamodel_v1_entity_period all; + + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + +import from http_www_cise_eu_datamodel_v1_entity_location all; + + +import from http_www_cise_eu_datamodel_v1_entity_metadata all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +import from http_www_cise_eu_datamodel_v1_entity_event all; + + +import from http_www_cise_eu_datamodel_v1_entity_document all; + + +/* The risk level is defined regarding the impact of the risk */ +/* ’s occurrence. It is a combination of the two previous data: risk probability and risk severity. A risk which occurs frequently and has a critical severity will have a high risk level. Respectively, a low probability risk with negligible severity will have a low risk level. This enumeration presents the possible risk levels. */ +/* high. DESCRIPTION: A high level risk occurs frequently and has important consequences */ +/* medium. DESCRIPTION: Medium level risks have medium impact on maritime activities */ +/* low. DESCRIPTION: A low level risk has a low impact on maritime activities (improbable or rare risk, risk with negligible severity) */ +/* other. DESCRIPTION: Risk level not included above */ +/* non-specified. DESCRIPTION: Risk level non-specified */ +type enumerated RiskLevelType +{ + high, + low, + medium, + nonSpecified, + other +} +with { + variant "text 'high' as capitalized"; + variant "text 'low' as capitalized"; + variant "text 'medium' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* frequent. DESCRIPTION: The risk occurs frequently */ +/* probable. DESCRIPTION: The risk is probable */ +/* occasional. DESCRIPTION: The risk could occur on some occasions */ +/* rare. DESCRIPTION: The occurrence of the risk is rare */ +/* improbable. DESCRIPTION: The risk is improbable */ +/* other. DESCRIPTION: Risk Probability not included above */ +/* non-specified. DESCRIPTION: Risk Probability non-specified */ +type enumerated RiskProbabilityType +{ + frequent, + improbable, + nonSpecified, + occasional, + other, + probable, + rare +} +with { + variant "text 'frequent' as capitalized"; + variant "text 'improbable' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'occasional' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'probable' as capitalized"; + variant "text 'rare' as capitalized"; +}; + + +/* This enumeration presents the different severities which can be assigned to a risk. */ +/* catastrophic. DESCRIPTION: A major catastrophic event is the consequence of the risk (death of people, major pollution */ +/* …) */ +/* critical. DESCRIPTION: The occurrence of the risk leads to major consequences affecting maritime activities (maritime traffic blocked */ +/* …) */ +/* marginal. DESCRIPTION: The risk */ +/* ’s consequences are marginal. The risk as no impact on maritime activities, people or cargo. */ +/* negligible. DESCRIPTION: The risk */ +/* ’s consequences are negligible. */ +/* other. DESCRIPTION: Risk severity not included above */ +/* non-specified. DESCRIPTION: Risk severity non-specified */ +type enumerated RiskSeverityType +{ + catastrophic, + critical, + marginal, + negligible, + nonSpecified, + other +} +with { + variant "text 'catastrophic' as capitalized"; + variant "text 'critical' as capitalized"; + variant "text 'marginal' as capitalized"; + variant "text 'negligible' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the possible types of Risks. */ +/* accident. DESCRIPTION: Accident */ +/* illegal immigration. DESCRIPTION: Illegal Immigration */ +/* drug trafficking. DESCRIPTION: Drug Trafficking */ +/* collision. DESCRIPTION: Collision */ +/* human trafficking. DESCRIPTION: Human Trafficking */ +/* smuggling. DESCRIPTION: Smuggling */ +/* illegal fishing. DESCRIPTION: Illegal Fishing */ +/* weapons trafficking. DESCRIPTION: Weapons Trafficking */ +/* fire. DESCRIPTION: Fire */ +/* pollution. DESCRIPTION: Pollution */ +/* other. DESCRIPTION: Risk type not included above */ +/* non-specified. DESCRIPTION: Risk type non-specified */ +type enumerated RiskType +{ + accident, + collision, + drugTrafficking, + fire, + humanTrafficking, + illegalFishing, + illegalImmigration, + nonSpecified, + other, + pollution, + smuggling, + weaponsTrafficking +} +with { + variant "text 'accident' as capitalized"; + variant "text 'collision' as capitalized"; + variant "text 'drugTrafficking' as capitalized"; + variant "text 'fire' as capitalized"; + variant "text 'humanTrafficking' as capitalized"; + variant "text 'illegalFishing' as capitalized"; + variant "text 'illegalImmigration' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'pollution' as capitalized"; + variant "text 'smuggling' as capitalized"; + variant "text 'weaponsTrafficking' as capitalized"; +}; + + +/* The class Risk is used to represent a more or less probable situation involving exposure to danger concerning the maritime domain. The notion of risk is usually very subjective and, in a first step, we decided to keep the definition of the class simple in order to ease its adoption. Further work could be used to detail the risk definition and introduce metrics regarding probability and severity. */ +type record Risk +{ + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + Period occurrencePeriod optional, + RiskLevelType riskLevel optional, + RiskProbabilityType riskProbability optional, + RiskSeverityType riskSeverity optional, + http_www_cise_eu_datamodel_v1_entity_risk.RiskType riskType optional, + record of record { + Object_derivations object_ optional + } involvedObjectRel_list, + record of record { + Location_derivations location optional + } locationRel_list, + record of record { + Event_derivations event optional + } impliedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInRiskType agentRole optional, + Period involvementPeriod optional + } involvedAgentRel_list +} +with { + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (occurrencePeriod) "name as capitalized"; + variant (riskLevel) "name as capitalized"; + variant (riskProbability) "name as capitalized"; + variant (riskSeverity) "name as capitalized"; + variant (riskType) "name as capitalized"; + variant (involvedObjectRel_list) "untagged"; + variant (involvedObjectRel_list[-]) "name as 'InvolvedObjectRel'"; + variant (involvedObjectRel_list[-].object_) "name as 'Object'"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (impliedEventRel_list) "untagged"; + variant (impliedEventRel_list[-]) "name as 'ImpliedEventRel'"; + variant (impliedEventRel_list[-].event) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/risk/' prefix 'risk'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_uniqueidentifier.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_uniqueidentifier.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4279c71597b9da609b690f61f9297d388e83714d --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_uniqueidentifier.ttcn @@ -0,0 +1,111 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_uniqueidentifier.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - CorrelationType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/uniqueidentifier/" */ +// - UniqueIdentifier.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/uniqueidentifier/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_entity_uniqueidentifier { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_organization all; + + +import from http_www_cise_eu_datamodel_v1_relationship all; + + +/* This enumeration presents the possible types of processes used to perform the objects correlation. */ +/* manual. DESCRIPTION: Correlation performed by an operator */ +/* automatic. DESCRIPTION: Correlation performed automatically by a system */ +/* other. DESCRIPTION: Correlation performed by any other process not listed here */ +/* non-specified. DESCRIPTION: The correlation process is not declared */ +type enumerated CorrelationType +{ + automatic, + manual, + nonSpecified, + other +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/uniqueidentifier/' prefix 'uniqueidentifier'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "text 'automatic' as capitalized"; + variant "text 'manual' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* xs:include schemaLocation="UniqueIdentifier.xsd"/ */ + + +/* The Unique Identifier is a fundamental entity of the overall data model of the information sharing environment, since it will allow, as it name implies, to uniquely identify each and every single data object exchanged through the network. With this identifier it will also be possible for the legacy systems to keep trace of the relationships between their data objects and those from the information sharing environment. It will be possible to understand who and when is publishing each and every data object in the network. */ +type record UniqueIdentifier +{ + Organization_derivations generatedBy optional, + XSD.DateTime generatedIn optional, + XSD.String uUID optional, + record of record { + UniqueIdentifier uniqueIdentifier optional, + CorrelationType correlationType optional, + XSD.DateTime correlatedIn optional, + Organization_derivations correlatedBy optional + } correlatedWithRel_list +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/uniqueidentifier/' prefix 'uniqueidentifier'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant (generatedBy) "name as capitalized"; + variant (generatedIn) "name as capitalized"; + variant (uUID) "name as capitalized"; + variant (correlatedWithRel_list) "untagged"; + variant (correlatedWithRel_list[-]) "name as 'correlatedWithRel'"; + variant (correlatedWithRel_list[-].uniqueIdentifier) "name as capitalized"; + variant (correlatedWithRel_list[-].correlationType) "name as capitalized"; + variant (correlatedWithRel_list[-].correlatedIn) "name as capitalized"; + variant (correlatedWithRel_list[-].correlatedBy) "name as capitalized"; +}; + + +} +/*with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/uniqueidentifier/' prefix 'uniqueidentifier'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +}*/ diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_vessel.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_vessel.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..711c7aa9251ea0997bf85d48601abbd4a3055600 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_entity_vessel.ttcn @@ -0,0 +1,566 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_entity_vessel.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - SanitaryMeasureType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - VesselType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - Vessel.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - ShipConfigurationType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - NavigationalStatusType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - ConditionOfTheCargoAndBallastType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - FishingGearType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - HullMaterialType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - INFClassType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +// - ISPSSecurityLevelType.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/entity/vessel/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_entity_vessel { + + +import from XSD all; + + +import from http_www_cise_eu_datamodel_v1_entity_object all; + +import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; +import from http_www_cise_eu_datamodel_v1_entity_metadata all; +import from http_www_cise_eu_datamodel_v1_entity_risk all; +import from http_www_cise_eu_datamodel_v1_entity_location all; +import from http_www_cise_eu_datamodel_v1_entity_event all; +import from http_www_cise_eu_datamodel_v1_entity_period all; +import from http_www_cise_eu_datamodel_v1_entity_agent all; +import from http_www_cise_eu_datamodel_v1_entity_document all; +import from http_www_cise_eu_datamodel_v1_entity_cargo all; +import from http_www_cise_eu_datamodel_v1_entity_operationalasset all; + + +/* This enumeration presents the list of sanitary measure a vessel can be the object of. */ +/* quarantine. DESCRIPTION: Quarantine */ +/* isolation. DESCRIPTION: Isolation */ +/* disinfection. DESCRIPTION: Disinfection */ +/* decontamination. DESCRIPTION: Decontamination */ +/* other. DESCRIPTION: Any other sanitary measure not mentioned above */ +/* non-specified. DESCRIPTION: Sanitary measure not specified */ +type enumerated SanitaryMeasureType +{ + decontamination, + disinfection, + isolation, + nonSpecified, + other, + quarantine +} +with { + variant "text 'decontamination' as capitalized"; + variant "text 'disinfection' as capitalized"; + variant "text 'isolation' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'quarantine' as capitalized"; +}; + + +/* This enumeration presents the different types of Vessel. This list is limited to general type of vessel. It could be detailed in further modeling activities. */ +/* passenger ship. DESCRIPTION: Passenger ship */ +/* fishing vessel. DESCRIPTION: Fishing vessel */ +/* nuclear ship. DESCRIPTION: Nuclear ship */ +/* bulk carrier. DESCRIPTION: Bulk carrier */ +/* oil tanker. DESCRIPTION: Oil tanker */ +/* general cargo ship. DESCRIPTION: General cargo ship */ +/* high speed craft. DESCRIPTION: High-speed craft */ +/* mobile off shore drilling unit. DESCRIPTION: Mobile off-shore drilling unit */ +/* special purpose ship. DESCRIPTION: Special purpose ship */ +/* other. DESCRIPTION: Any other certainty not mentioned above */ +/* non-specified. DESCRIPTION: Certainty not specified */ +type enumerated VesselType +{ + bulkCarrier, + fishingVessel, + generalCargoShip, + highSpeedCraft, + mobileOffShoreDrillingUnit, + nonSpecified, + nuclearShip, + oilTanker, + other, + passengerShip, + specialPurposeShip +} +with { + variant "text 'bulkCarrier' as capitalized"; + variant "text 'fishingVessel' as capitalized"; + variant "text 'generalCargoShip' as capitalized"; + variant "text 'highSpeedCraft' as capitalized"; + variant "text 'mobileOffShoreDrillingUnit' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'nuclearShip' as capitalized"; + variant "text 'oilTanker' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'passengerShip' as capitalized"; + variant "text 'specialPurposeShip' as capitalized"; +}; + + +/* The class Vessel is a sub-class of the class Vehicle. A vessel refers to a ship or a boat. Vessel has the same associations and relationships than its parent-classes Vehicle and Object. Thus it can have relationship with Document, Risk, Event, Location, and Agent. It can also be associated with OperationalAsset. */ +type record Vessel +{ + record of ColourType colour_list, + record of XSD.String externalMarkings_list, + UniqueIdentifier identifier optional, + record of Metadata metadata_list, + record of XSD.String name_list, + record of record { + Risk risk optional + } involvedRiskRel_list, + record of record { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } locationRel_list, + record of record { + Event_derivations event optional, + ObjectRoleInEventType objectRole optional, + Period involvementPeriod optional + } involvedEventRel_list, + record of record { + Document_derivations document optional + } documentRel_list, + record of record { + Agent_derivations agent optional, + AgentRoleInObjectType agentRole optional, + DutyType duty optional, + Period involvementPeriod optional, + XSD.Boolean transitPassenger optional + } involvedAgentRel_list, + XSD.Double maximumSpeed optional, + record of XSD.String nationality_list, + XSD.Int totalPersonsOnBoard optional, + record { + OperationalAsset operationalAsset optional + } correspondentAssetRel optional, + record of record { + Vehicle_derivations vehicle optional + } vehiclesRel_list, + record { + Cargo cargo optional + } cargoRel optional, + XSD.String arrangement optional, + XSD.Int beam optional, + XSD.Int breadth optional, + XSD.String callSign optional, + ConditionOfTheCargoAndBallastType conditionOfTheCargoAndBallast optional, + XSD.Int containerCapacity optional, + XSD.Int deadweight optional, + XSD.Double depth optional, + XSD.Double designSpeed optional, + XSD.Double draught optional, + FishingGearType fishingGear optional, + XSD.Double grossTonnage optional, + HullMaterialType hullMaterial optional, + XSD.Long iMONumber optional, + INFClassType iNFShipClass optional, + XSD.String iNMARSATNumber optional, + XSD.String iRNumber optional, + http_www_cise_eu_datamodel_v1_entity_vessel.ISPSSecurityLevelType iSPSSSecurityLevel optional, + XSD.Boolean isBanned optional, + XSD.Boolean isFishing optional, + XSD.Double lOA optional, + XSD.Double length_ optional, + XSD.Int lengthenedYear optional, + XSD.Long mMSI optional, + NavigationalStatusType navigationalStatus optional, + XSD.Double netTonnage optional, + XSD.String regionalIdentification optional, + XSD.Date registryDate optional, + XSD.String registryNumber optional, + XSD.Double segregatedBallastVolume optional, + ShipConfigurationType shipConfiguration optional, + record of VesselType shipType_list, + XSD.String uVI optional, + SanitaryMeasureType underSanitaryMeasure optional, + XSD.Int yearBuilt optional +} +with { + variant (colour_list) "untagged"; + variant (colour_list[-]) "name as 'Colour'"; + variant (externalMarkings_list) "untagged"; + variant (externalMarkings_list[-]) "name as 'ExternalMarkings'"; + variant (identifier) "name as capitalized"; + variant (metadata_list) "untagged"; + variant (metadata_list[-]) "name as 'Metadata'"; + variant (name_list) "untagged"; + variant (name_list[-]) "name as 'Name'"; + variant (involvedRiskRel_list) "untagged"; + variant (involvedRiskRel_list[-]) "name as 'InvolvedRiskRel'"; + variant (involvedRiskRel_list[-].risk) "name as capitalized"; + variant (locationRel_list) "untagged"; + variant (locationRel_list[-]) "name as 'LocationRel'"; + variant (locationRel_list[-].location) "name as capitalized"; + variant (locationRel_list[-].cOG) "name as capitalized"; + variant (locationRel_list[-].heading) "name as capitalized"; + variant (locationRel_list[-].metadata_list) "untagged"; + variant (locationRel_list[-].metadata_list[-]) "name as 'Metadata'"; + variant (locationRel_list[-].periodOfTime) "name as capitalized"; + variant (locationRel_list[-].sourceType) "name as capitalized"; + variant (locationRel_list[-].placementPurpose) "name as capitalized"; + variant (locationRel_list[-].plannedOperations_list) "untagged"; + variant (locationRel_list[-].plannedOperations_list[-]) "name as 'PlannedOperations'"; + variant (locationRel_list[-].plannedWorks) "name as capitalized"; + variant (locationRel_list[-].sensorType) "name as capitalized"; + variant (locationRel_list[-].sOG) "name as capitalized"; + variant (locationRel_list[-].specialSecurityMeasures) "name as capitalized"; + variant (locationRel_list[-].speed) "name as capitalized"; + variant (locationRel_list[-].locationRole) "name as capitalized"; + variant (involvedEventRel_list) "untagged"; + variant (involvedEventRel_list[-]) "name as 'InvolvedEventRel'"; + variant (involvedEventRel_list[-].event) "name as capitalized"; + variant (involvedEventRel_list[-].objectRole) "name as capitalized"; + variant (involvedEventRel_list[-].involvementPeriod) "name as capitalized"; + variant (documentRel_list) "untagged"; + variant (documentRel_list[-]) "name as 'DocumentRel'"; + variant (documentRel_list[-].document) "name as capitalized"; + variant (involvedAgentRel_list) "untagged"; + variant (involvedAgentRel_list[-]) "name as 'InvolvedAgentRel'"; + variant (involvedAgentRel_list[-].agent) "name as capitalized"; + variant (involvedAgentRel_list[-].agentRole) "name as capitalized"; + variant (involvedAgentRel_list[-].duty) "name as capitalized"; + variant (involvedAgentRel_list[-].involvementPeriod) "name as capitalized"; + variant (involvedAgentRel_list[-].transitPassenger) "name as capitalized"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'true' as '1'"; + //variant (involvedAgentRel_list[-].transitPassenger) "text 'false' as '0'"; + variant (maximumSpeed) "name as capitalized"; + variant (nationality_list) "untagged"; + variant (nationality_list[-]) "name as 'Nationality'"; + variant (totalPersonsOnBoard) "name as capitalized"; + variant (correspondentAssetRel) "name as capitalized"; + variant (correspondentAssetRel.operationalAsset) "name as capitalized"; + variant (vehiclesRel_list) "untagged"; + variant (vehiclesRel_list[-]) "name as 'VehiclesRel'"; + variant (vehiclesRel_list[-].vehicle) "name as capitalized"; + variant (cargoRel) "name as capitalized"; + variant (cargoRel.cargo) "name as capitalized"; + variant (arrangement) "name as capitalized"; + variant (beam) "name as capitalized"; + variant (breadth) "name as capitalized"; + variant (callSign) "name as capitalized"; + variant (conditionOfTheCargoAndBallast) "name as capitalized"; + variant (containerCapacity) "name as capitalized"; + variant (deadweight) "name as capitalized"; + variant (depth) "name as capitalized"; + variant (designSpeed) "name as capitalized"; + variant (draught) "name as capitalized"; + variant (fishingGear) "name as capitalized"; + variant (grossTonnage) "name as capitalized"; + variant (hullMaterial) "name as capitalized"; + variant (iMONumber) "name as capitalized"; + variant (iNFShipClass) "name as capitalized"; + variant (iNMARSATNumber) "name as capitalized"; + variant (iRNumber) "name as capitalized"; + variant (iSPSSSecurityLevel) "name as capitalized"; + variant (isBanned) "name as capitalized"; + //variant (isBanned) "text 'true' as '1'"; + //variant (isBanned) "text 'false' as '0'"; + variant (isFishing) "name as capitalized"; + //variant (isFishing) "text 'true' as '1'"; + //variant (isFishing) "text 'false' as '0'"; + variant (lOA) "name as capitalized"; + variant (length_) "name as 'Length'"; + variant (lengthenedYear) "name as capitalized"; + variant (mMSI) "name as capitalized"; + variant (navigationalStatus) "name as capitalized"; + variant (netTonnage) "name as capitalized"; + variant (regionalIdentification) "name as capitalized"; + variant (registryDate) "name as capitalized"; + variant (registryNumber) "name as capitalized"; + variant (segregatedBallastVolume) "name as capitalized"; + variant (shipConfiguration) "name as capitalized"; + variant (shipType_list) "untagged"; + variant (shipType_list[-]) "name as 'ShipType'"; + variant (uVI) "name as capitalized"; + variant (underSanitaryMeasure) "name as capitalized"; + variant (yearBuilt) "name as capitalized"; +}; + + +/* This enumeration presents the list of ship configuration types. */ +/* Single hull tanker. DESCRIPTION: Single hull tanker */ +/* Single hull with segregatted ballast tanks. DESCRIPTION: Single hull with segregated ballast tanks */ +/* Double hull tanker. DESCRIPTION: Double hull tanker */ +/* other. DESCRIPTION: Any other ship configuration type not mentioned above */ +/* non-specified. DESCRIPTION: Ship configuration type not specified */ +type enumerated ShipConfigurationType +{ + doubleHullTanker, + nonSpecified, + other, + singleHullTanker, + singleHullWithSegregattedBallastTanks +} +with { + variant "text 'doubleHullTanker' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'singleHullTanker' as capitalized"; + variant "text 'singleHullWithSegregattedBallastTanks' as capitalized"; +}; + + +/* This enumeration presents the different types of navigational statuses in accordance with the inter VTS exchange format. */ +/* under way using engine. DESCRIPTION: Under way using engine */ +/* at anchor. DESCRIPTION: At anchor */ +/* not under command. DESCRIPTION: Not under command */ +/* restricted manoeuvrability. DESCRIPTION: Restricted manoeuvrability */ +/* constrained by her draught. DESCRIPTION: Constrained by her draught */ +/* moored. DESCRIPTION: Moored */ +/* aground. DESCRIPTION: Aground */ +/* engaged in fishing. DESCRIPTION: Engaged in fishing */ +/* under way sailing. DESCRIPTION: Under way sailing */ +/* engaged in fishing other than trawling. DESCRIPTION: Engaged in fishing other than trawling */ +/* air cushion vessel in non-displamenet mode or WIG craft taking off landing or in flight. DESCRIPTION: Air-cushion vessel in non-displacement mode or WIG craft taking off, landing or in flight */ +/* power driven vessel towing astern. DESCRIPTION: Power driven vessel towing astern */ +/* power driven vessel towig ahead or pushing alongside. DESCRIPTION: Power driven vessel towing ahead or pushing alongside */ +/* in distress or requiring assistance. DESCRIPTION: In distress or requiring assistance */ +/* AISSART seeking to attract attention. DESCRIPTION: AIS SART, seeking to attract attention */ +/* undefined default. DESCRIPTION: Undefined default */ +/* other. DESCRIPTION: Any other severity not mentioned above */ +/* non-specified. DESCRIPTION: Severity not specified */ +type enumerated NavigationalStatusType +{ + aISSARTSeekingToAttractAttention, + aground, + airCushionVesselInNonDisplamenetModeOrWIGCraftTakingOffLandingOrInFlight, + atAnchor, + constrainedByHerDraught, + engagedInFishing, + engagedInFishingOtherThanTrawling, + inDistressOrRequiringAssistance, + moored, + nonSpecified, + notUnderCommand, + other, + powerDrivenVesselTowigAheadOrPushingAlongside, + powerDrivenVesselTowingAstern, + restrictedManoeuvrability, + undefinedDefault, + underWaySailing, + underWayUsingEngine +} +with { + variant "text 'aISSARTSeekingToAttractAttention' as capitalized"; + variant "text 'aground' as capitalized"; + variant "text 'airCushionVesselInNonDisplamenetModeOrWIGCraftTakingOffLandingOrInFlight' as capitalized"; + variant "text 'atAnchor' as capitalized"; + variant "text 'constrainedByHerDraught' as capitalized"; + variant "text 'engagedInFishing' as capitalized"; + variant "text 'engagedInFishingOtherThanTrawling' as capitalized"; + variant "text 'inDistressOrRequiringAssistance' as capitalized"; + variant "text 'moored' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'notUnderCommand' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'powerDrivenVesselTowigAheadOrPushingAlongside' as capitalized"; + variant "text 'powerDrivenVesselTowingAstern' as capitalized"; + variant "text 'restrictedManoeuvrability' as capitalized"; + variant "text 'undefinedDefault' as capitalized"; + variant "text 'underWaySailing' as capitalized"; + variant "text 'underWayUsingEngine' as capitalized"; +}; + + +/* This enumeration presents the vessel load */ +/* ’s condition. */ +/* full. DESCRIPTION: Vessel fully loaded */ +/* empty. DESCRIPTION: Vessel empty */ +/* inerted. DESCRIPTION: Load inerted */ +/* other. DESCRIPTION: Any other condition not mentioned above */ +/* non-specified. DESCRIPTION: Condition not specified */ +type enumerated ConditionOfTheCargoAndBallastType +{ + empty, + full, + inerted, + nonSpecified, + other +} +with { + variant "text 'empty' as capitalized"; + variant "text 'full' as capitalized"; + variant "text 'inerted' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the list of fishing gears a vessel can be equipped with according to UN FAO rules. */ +/* surrounding nets. DESCRIPTION: Surrounding nets */ +/* seine nets. DESCRIPTION: Seine nets */ +/* trawl nets. DESCRIPTION: Trawl nets */ +/* dredges. DESCRIPTION: Dredges */ +/* lift nets. DESCRIPTION: Lift nets */ +/* falling nets. DESCRIPTION: Falling nets */ +/* gillnets and entangling nets. DESCRIPTION: Gillnets and entangling nets */ +/* traps. DESCRIPTION: Traps */ +/* hooks and lines. DESCRIPTION: Hooks and lines */ +/* grappling and wounding gears. DESCRIPTION: Grappling and wounding gears */ +/* stupefying devices. DESCRIPTION: Stupefying devices */ +/* other. DESCRIPTION: Any other gear not mentioned above */ +/* non-specified. DESCRIPTION: Gear not specified */ +type enumerated FishingGearType +{ + dredges, + fallingNets, + gillnetsAndEntanglingNets, + grapplingAndWoundingGears, + hooksAndLines, + liftNets, + nonSpecified, + other, + seineNets, + stupefyingDevices, + surroundingNets, + traps, + trawlNets +} +with { + variant "text 'dredges' as capitalized"; + variant "text 'fallingNets' as capitalized"; + variant "text 'gillnetsAndEntanglingNets' as capitalized"; + variant "text 'grapplingAndWoundingGears' as capitalized"; + variant "text 'hooksAndLines' as capitalized"; + variant "text 'liftNets' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'seineNets' as capitalized"; + variant "text 'stupefyingDevices' as capitalized"; + variant "text 'surroundingNets' as capitalized"; + variant "text 'traps' as capitalized"; + variant "text 'trawlNets' as capitalized"; +}; + + +/* This enumeration presents hull material types. */ +/* high strength steel. DESCRIPTION: High Strength Steel */ +/* other. DESCRIPTION: Any other type not mentioned above */ +/* non-specified. DESCRIPTION: Type not specified */ +type enumerated HullMaterialType +{ + highStrengthSteel, + nonSpecified, + other +} +with { + variant "text 'highStrengthSteel' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the list of international codes for the Safe Carriage of Packaged Irradiated Nuclear Fuel, Plutonium and High-Level Radioactive Wastes.||See http://www.imo.org/OurWork/Safety/Cargoes/Pages/IrradiatedNuclearFuel.aspx for further details. */ +/* Class INF1. DESCRIPTION: Class INF 1 ship - Ships which are certified to carry INF cargo with an aggregate activity less than 4,000 TBq (TeraBecquerel= measurement of radioactivity) */ +/* Class INF2. DESCRIPTION: Class INF 2 ship - Ships which are certified to carry irradiated nuclear fuel or high-level radioactive wastes with an aggregate activity less than 2 x 106 TBq and ships which are certified to carry plutonium with an aggregate activity less than 2 x 105 TBq. */ +/* Class INF3. DESCRIPTION: Class INF 3 ship - Ships which are certified to carry irradiated nuclear fuel or high-level radioactive wastes and ships which are certified to carry plutonium with no restriction of the maximum aggregate activity of the materials */ +/* other. DESCRIPTION: Any class not mentioned above */ +/* non-specified. DESCRIPTION: Class not specified */ +type enumerated INFClassType +{ + iNF1, + iNF2, + iNF3, + nonSpecified, + other +} +with { + variant "text 'iNF1' as capitalized"; + variant "text 'iNF2' as capitalized"; + variant "text 'iNF3' as capitalized"; + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; +}; + + +/* This enumeration presents the possible values for the security level of the port.||(This enumeration presents the three levels of the ISPS code. See http://www.imo.org/blast/mainframe.asp?topic_id=583&doc_id=2689#code for further details.) */ +/* security level1. DESCRIPTION: Normal, the level at which the ship or port facility normally operates. Security level 1 means the level for which minimum appropriate protective security measures shall be maintained at all times. */ +/* security level2. DESCRIPTION: Heightened, the level applying for as long as there is a heightened risk of a security incident. Security level 2 means the level for which appropriate additional protective security measures shall be maintained for a period of time as a result of heightened risk of a security incident. */ +/* security level3. DESCRIPTION: Exceptional, the level applying for the period of time when there is the probable or imminent risk of a security incident. Security level 3 means the level for which further specific protective security measures shall be maintained for a limited period of time when a security incident is probable or imminent, although it may not be possible to identify the specific target. */ +/* other. DESCRIPTION: Any other security level not mentioned above */ +/* non-specified. DESCRIPTION: Security level not specified */ +type enumerated ISPSSecurityLevelType +{ + nonSpecified, + other, + securityLevel1, + securityLevel2, + securityLevel3 +} +with { + variant "text 'nonSpecified' as capitalized"; + variant "text 'other' as capitalized"; + variant "text 'securityLevel1' as capitalized"; + variant "text 'securityLevel2' as capitalized"; + variant "text 'securityLevel3' as capitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/vessel/' prefix 'vessel'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_relationship.ttcn b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_relationship.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..f90c59acd9bba75ab9fd87b27df51a509fe769d6 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/http_www_cise_eu_datamodel_v1_relationship.ttcn @@ -0,0 +1,71 @@ +/******************************************************************************* +* Copyright (c) 2000-2022 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R6B +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_cise_eu_datamodel_v1_relationship.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 4 15:25:50 2022 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - Relationship.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/relationship/" */ +// - Relationship.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://www.cise.eu/datamodel/v1/relationship/" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_cise_eu_datamodel_v1_relationship { + + +import from XSD all; + + +/* Abtract class representing a relationship of the CISE data model. */ +type record Relationship +{ + +} +with { + variant "abstract"; +}; + + +/* Abtract class representing a relationship of the CISE data model. */ +type record Relationship_1 +{ + +} +with { + variant "name as 'Relationship'"; + variant "abstract"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/relationship/' prefix 'rel'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibCise/LibCdm5/module.mk b/ttcn/LibCise/LibCdm5/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..5896da77ee9079ac958b9c7149a4b3a9647302f8 --- /dev/null +++ b/ttcn/LibCise/LibCdm5/module.mk @@ -0,0 +1,24 @@ +sources := \ + http_www_cise_eu_datamodel_v1_entity_action.ttcn \ + http_www_cise_eu_datamodel_v1_entity_agent.ttcn \ + http_www_cise_eu_datamodel_v1_entity_anomaly.ttcn \ + http_www_cise_eu_datamodel_v1_entity_cargo.ttcn \ + http_www_cise_eu_datamodel_v1_entity_document.ttcn \ + http_www_cise_eu_datamodel_v1_entity_event.ttcn \ + http_www_cise_eu_datamodel_v1_entity_incident.ttcn \ + http_www_cise_eu_datamodel_v1_entity_location.ttcn \ + http_www_cise_eu_datamodel_v1_entity_metadata.ttcn \ + http_www_cise_eu_datamodel_v1_entity_movement.ttcn \ + http_www_cise_eu_datamodel_v1_entity_object.ttcn \ + http_www_cise_eu_datamodel_v1_entity_operationalasset.ttcn \ + http_www_cise_eu_datamodel_v1_entity_organization.ttcn \ + http_www_cise_eu_datamodel_v1_entity_period.ttcn \ + http_www_cise_eu_datamodel_v1_entity_person.ttcn \ + http_www_cise_eu_datamodel_v1_entity_risk.ttcn \ + http_www_cise_eu_datamodel_v1_entity.ttcn \ + http_www_cise_eu_datamodel_v1_entity_uniqueidentifier.ttcn \ + http_www_cise_eu_datamodel_v1_entity_vessel.ttcn \ + http_www_cise_eu_datamodel_v1_relationship.ttcn \ + + +modules := ../LibCdm4 diff --git a/ttcn/LibCise/LibJrcSimu/LibJrcSimu_Templates.ttcn b/ttcn/LibCise/LibJrcSimu/LibJrcSimu_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..85e8149bfb6f1e4a714de31c60f3bf5cdd701762 --- /dev/null +++ b/ttcn/LibCise/LibJrcSimu/LibJrcSimu_Templates.ttcn @@ -0,0 +1,33 @@ +module LibJrcSimu_Templates { + + // LibJson + import from Json all; + + // LibJrcSimu + import from LibJrcSimu_TypesAndValues all; + + template (omit) ProblemDetails m_problem_details( + in Json.Integer p_code, + in template (omit) Json.String p_message_ := omit, + in template (omit) Json.Integer p_status := omit, + in template (omit) Json.String p_timestamp_ := omit + ) := { + code := p_code, + message_ := p_message_, + status := p_status, + timestamp_ := p_timestamp_ + } // End of template m_problem_details + + template (present) ProblemDetails mw_problem_details( + template (present) Json.Integer p_code := ?, + template Json.String p_message_ := *, + template Json.Integer p_status := *, + template Json.String p_timestamp_ := * + ) := { + code := p_code, + message_ := p_message_, + status := p_status, + timestamp_ := p_timestamp_ + } // End of template mw_problem_details + +} // End of module LibJrcSimu_Templates diff --git a/ttcn/LibCise/LibJrcSimu/LibJrcSimu_TypesAndValues.ttcn b/ttcn/LibCise/LibJrcSimu/LibJrcSimu_TypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..3c085dc19fa791eb1c4b3fe68db70d5a77dad8b1 --- /dev/null +++ b/ttcn/LibCise/LibJrcSimu/LibJrcSimu_TypesAndValues.ttcn @@ -0,0 +1,19 @@ +module LibJrcSimu_TypesAndValues { + + // LibJson + import from Json all; + + type record ProblemDetails { + Json.Integer code, + Json.String message_ optional, + Json.Integer status optional, + Json.String timestamp_ optional + } with { + variant (timestamp_) "name as 'timestamp'"; + variant (message_) "name as 'message'"; + } // End of type ProblemDetails + +} with { + encode "JSON"; + variant ""; +} // End of module LibJrcSimu_TypesAndValues diff --git a/ttcn/LibCise/LibJrcSimu/module.mk b/ttcn/LibCise/LibJrcSimu/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..7fac6db6af04ff680c18ee5d9658bf0c6a13893b --- /dev/null +++ b/ttcn/LibCise/LibJrcSimu/module.mk @@ -0,0 +1,4 @@ +sources := \ + LibJrcSimu_TypesAndValues.ttcn \ + LibJrcSimu_Templates.ttcn + diff --git a/ttcn/LibCise/module.mk b/ttcn/LibCise/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..508813615f1a1255412c7562d495d4b5555638a9 --- /dev/null +++ b/ttcn/LibCise/module.mk @@ -0,0 +1,8 @@ +sources := \ + ttcn/LibCise_Pics.ttcn \ + ttcn/LibCise_Pixits.ttcn \ + ttcn/LibCise_Functions.ttcn \ + ttcn/LibCise_Templates.ttcn \ + ttcn/LibCise_TypesAndValues.ttcn \ + ttcn/LibCise_TestSystem.ttcn \ + diff --git a/ttcn/LibCise/ttcn/LibCise_Functions.ttcn b/ttcn/LibCise/ttcn/LibCise_Functions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..22d1724e95bc34a4b6670c1310ab86cd2801179b --- /dev/null +++ b/ttcn/LibCise/ttcn/LibCise_Functions.ttcn @@ -0,0 +1,1448 @@ +module LibCise_Functions { + + // LibCommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + import from LibHelpers_Functions all; + + // LibHttp + import from LibHttp_TypesAndValues all; + import from LibHttp_XmlMessageBodyTypes all; + import from LibHttp_JsonTemplates all; + import from LibHttp_XmlTemplates all; + import from LibHttp_Templates all; + import from LibHttp_Functions all; + import from LibHttp_TestSystem all; + + // LibSecurity + import from LibSecurity_Hash all; + import from LibSecurity_Signature all; + import from LibSecurity_Certificates all; + + // LibCise + import from LibCise_Pics all; + import from LibCise_Pixits all; + import from LibCise_Templates all; + import from LibCise_TypesAndValues all; + import from LibCise_TestSystem all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_w3_org_2000_09_xmldsig all; + + // LibCise + import from LibJrcSimu_Templates all; + + group cise_externals { + + external function fx_enc_PullRequest_1(in PullRequest_1 p) return bitstring with {extension "prototype(convert) encode(XML)"}; + + external function fx_dec_PullRequest_1(inout bitstring b, out PullRequest p) return integer with {extension "prototype(sliding) decode(XML)"}; + + external function fx_enc_PullResponse_1(in PullResponse_1 p) return bitstring with {extension "prototype(convert) encode(XML)"}; + + external function fx_dec_PullResponse_1(inout bitstring b, out PullResponse p) return integer with {extension "prototype(sliding) decode(XML)"}; + + external function fx_enc_Feedback_1(in Feedback_1 p) return bitstring with {extension "prototype(convert) encode(XML)"}; + + external function fx_dec_Feedback_1(inout bitstring b, out Feedback p) return integer with {extension "prototype(sliding) decode(XML)"}; + + } // End of group cise_externals + + group configuration_functions { + + function f_cf_01_up() runs on CiseComponent { + f_cf_01_http_up(); + + f_init_certs_db(PICS_CISE_CERTIFICATES_DB_PATH); + f_load_certificate(PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); + } // End of function f_cf_01_up + + function f_cf_01_down() runs on CiseComponent { + f_cf_01_http_down(); + } // End of function f_cf_01_down + + function f_cf_02_up() runs on CiseComponent { + f_cf_01_http_notif_up(); + + f_init_certs_db(PICS_CISE_CERTIFICATES_DB_PATH); + f_load_certificate(PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); + f_load_certificate(PICS_CISE_TS_CERTIFICATE_PAST, PICS_CISE_TS_SIGNING_PRIVATE_KEY_PAST, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); // TODO Create a specific up/down function + f_load_certificate(PICS_CISE_TS_CERTIFICATE_FUTURE, PICS_CISE_TS_SIGNING_PRIVATE_KEY_FUTURE, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); // TODO Create a specific up/down function + } // End of function f_cf_02_up + + function f_cf_02_down() runs on CiseComponent { + f_cf_01_http_notif_down(); + } // End of function f_cf_02_down + + function f_cf_03_up() runs on CiseMtc mtc CiseMtc { + // Select components + vc_cise_component_table := { { c_adapter_a, omit }, { c_adapter_b, omit } }; + + connect(self:syncPort, mtc:syncPort); + + // Create CISE components + for(var integer i := 0; i < lengthof(vc_cise_component_table); i:=i + 1) { + vc_cise_component_table[i].cise_component := CiseComponent.create(vc_cise_component_table[i].name) alive; + } + for(var integer i := 0; i < lengthof(vc_cise_component_table); i := i + 1) { + map(vc_cise_component_table[i].cise_component:httpPort, system:httpPort); + map(vc_cise_component_table[i].cise_component:httpPort_notif, system:httpPort_notif); + connect(vc_cise_component_table[i].cise_component:syncPort, self:syncPort); + } + + f_init_certs_db(PICS_CISE_CERTIFICATES_DB_PATH); + f_load_certificate(PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); + + } // End of function f_cf_03_up + + function f_cf_03_down() runs on CiseMtc { + for(var integer i := 0; i < lengthof(vc_cise_component_table); i := i + 1) { + unmap(vc_cise_component_table[i].cise_component:httpPort, system:httpPort); + unmap(vc_cise_component_table[i].cise_component:httpPort_notif, system:httpPort_notif); + disconnect(vc_cise_component_table[i].cise_component:syncPort, self:syncPort); + } + + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf_03_down + + function f_cf_04_up() runs on CiseMtc mtc CiseMtc { + // Select components + vc_cise_component_table := { { c_adapter, omit }, { c_gw_provider, omit } }; + + connect(self:syncPort, mtc:syncPort); + + // Create CISE components + for(var integer i := 0; i < lengthof(vc_cise_component_table); i:=i + 1) { + vc_cise_component_table[i].cise_component := CiseComponent.create(vc_cise_component_table[i].name) alive; + } + for(var integer i := 0; i < lengthof(vc_cise_component_table); i := i + 1) { + map(vc_cise_component_table[i].cise_component:httpPort, system:httpPort); + map(vc_cise_component_table[i].cise_component:httpPort_notif, system:httpPort_notif); + connect(vc_cise_component_table[i].cise_component:syncPort, self:syncPort); + } + + f_init_certs_db(PICS_CISE_CERTIFICATES_DB_PATH); + f_load_certificate(PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); + + } // End of function f_cf_04_up + + function f_cf_04_down() runs on CiseMtc { + for(var integer i := 0; i < lengthof(vc_cise_component_table); i := i + 1) { + unmap(vc_cise_component_table[i].cise_component:httpPort, system:httpPort); + unmap(vc_cise_component_table[i].cise_component:httpPort_notif, system:httpPort_notif); + disconnect(vc_cise_component_table[i].cise_component:syncPort, self:syncPort); + } + + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf_04_down + + function f_cf_05_up() runs on CiseComponent { + f_cf_01_http_notif_up(); + map(self:utPort, system:utPort); + + f_init_certs_db(PICS_CISE_CERTIFICATES_DB_PATH); + f_load_certificate(PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD); + + } // End of function f_cf_05_up + + function f_cf_05_down() runs on CiseComponent { + unmap(self:utPort, system:utPort); + f_cf_01_http_notif_down(); + } // End of function f_cf_05_down + + } // End of group configuration_functions + + group component_functions { + + function f_getComponent( + in charstring p_cise_component_name + ) runs on CiseMtc return CiseComponent { + var CiseComponent v_return := null; + var integer i := 0; + + for (i := 0; i < lengthof(vc_cise_component_table); i := i + 1) { + if (vc_cise_component_table[i].name == p_cise_component_name) { + if (isvalue(vc_cise_component_table[i].cise_component)) { + v_return := valueof(vc_cise_component_table[i].cise_component); + } else { + testcase.stop(__SCOPE__ & " can not handle omitted GN components"); + } + } + } // End of 'for' statement + + return v_return; + } // End of function f_getComponent + + } // End of group component_functions + + group cise_functions { + + /** + * @desc Process preamble/postamble subscriptions + */ + function f_process_subscription( + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + in template (omit) ServiceCapability_derivations p_requests := omit, + out charstring p_correlation_id, + template Acknowledgement_1.discoveredServices_list p_ack_discovery_services := ? + ) runs on CiseComponent return boolean { + // Local variables + var Headers v_headers; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + var boolean v_res_code := false; + + log(">>> f_process_subscription"); + + p_correlation_id := f_generate_uuid(); + + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + subscribe, + p_discovery_profiles, + -, -, + v_context_id, + p_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000, // ResponseTimeOut + p_requests, + p_payload_selector + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("f_process_subscription: INCONC: Signature processing failed"); + return v_res_code; + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + //f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + p_ack_discovery_services, + -, -, -, + p_correlation_id + )))))) { + tc_ac.stop; + + log("f_process_subscription: IUT successfully received synchronous Acknowledgment"); + v_res_code := true; + } + [] tc_ac.timeout { + log("f_process_subscription: Expected message not received"); + } + } // End of 'alt' statement + + log("<<< f_process_subscription: v_res_code=", v_res_code); + return v_res_code; + } // End of function f_process_subscription + + function f_process_unsubscribe( + in charstring p_correlation_id, + in template (omit) Service p_service, + in template (omit) Service p_recipient/*, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + in template (omit) ServiceCapability_derivations p_requests := omit, + template Acknowledgement_1.discoveredServices_list p_ack_discovery_services := **/ + ) runs on CiseComponent return boolean { + // Local variables + var Headers v_headers; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_message_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + //var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + var boolean v_res_code := false; + + log(">>> f_process_unsubscribe"); + + // if (ispresent(p_entity_payload)) { + // v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + // } + v_pull_request := valueof( + m_pull_request( + v_date_time, + v_message_id, + high, + p_service, + {}, + unsubscribe, + -, // p_discovery_profiles, + -, -, + v_context_id, + p_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + -, //v_payload, + -, + 1000, // ResponseTimeOut + -, //p_requests, + - //p_payload_selector + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("f_process_unsubscribe: INCONC: Signature processing failed"); + return v_res_code; + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("v_pull_request_signed_str: ", v_pull_request_signed_str); + + //f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & v_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "v_message_id*", + -, -, + success, + -, //p_ack_discovery_services, + -, -, -, + p_correlation_id + )))))) { + tc_ac.stop; + + log("f_process_unsubscribe: IUT successfully sent synchronous Acknowledgment"); + v_res_code := true; + } + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement + ))))) { + tc_ac.stop; + + log("f_process_unsubscribe: IUTsent an error Acknowledgment"); + v_res_code := true; + } + [] tc_ac.timeout { + log("f_process_unsubscribe: Expected message not received"); + } + } // End of 'alt' statement + + log("<<< f_process_unsubscribe: v_res_code=", v_res_code); + return v_res_code; + } // End of function f_process_unsubscribe + + function f_trigger_subscription( + in template (value) UtTrigger p_ut_trigger, + out PullRequest_1 p_pull_request + ) runs on CiseComponent return boolean { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var PriorityType v_priority := high; + + log(">>> f_trigger_subscription"); + + if (f_ut_trigger(valueof(p_ut_trigger)) == false) { + log("f_trigger_subscription: Upper Tester failure ***"); + return false; + } + + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + -, + -, + -, + mw_service, + -, -, + subscribe, + -, -, -, -, -, -, -, -, -, + mw_service_capability_derivations_subscriptionCapability + )))))) -> value v_request { + tc_ac.stop; + p_pull_request := v_request.request.body.xml_body.msg.pull_request; + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + p_pull_request.priority, + {}, + success + ))), + v_headers + ))); + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + } + [] httpPort_notif.receive { + tc_ac.stop; + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + log("f_trigger_subscription: IUT sends an unexpected message"); + return false; + } + [] tc_ac.timeout { + log("f_trigger_subscription: Expected message not received"); + return false; + } + } // End of 'alt' statement + + log("<<< f_trigger_subscription"); + return true; + } // End of function f_trigger_subscription + + function f_trigger_subscription_deletion( + in template (value) UtTrigger p_ut_trigger + ) runs on CiseComponent return boolean { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var PriorityType v_priority := high; + + log(">>> f_trigger_subscription_deletion"); + + if (f_ut_trigger(valueof(p_ut_trigger)) == false) { + log("f_trigger_subscription_deletion: Upper Tester failure ***"); + return false; + } + + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request( + -, + -, + -, + mw_service, + -, -, + unsubscribe + )))))) -> value v_request { + tc_ac.stop; + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_request.request.body.xml_body.msg.pull_request.priority, + {}, + success + ))), + v_headers + ))); + } + [] httpPort_notif.receive { + tc_ac.stop; + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + log("f_trigger_subscription_deletion: IUT sends an unexpected message"); + return false; + } + [] tc_ac.timeout { + log("f_trigger_subscription_deletion: Expected message not received"); + return false; + } + } // End of 'alt' statement + + log("<<< f_trigger_subscription_deletion"); + return true; + } // End of function f_trigger_subscription_deletion + + function f_trigger_pull_request( + in template (value) UtTrigger p_ut_trigger, + out PullRequest_1 p_pull_request + ) runs on CiseComponent return boolean { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + var charstring v_created_date_time := f_get_current_date_time(); + var charstring v_message_id := f_generate_uuid(); + var PriorityType v_priority := high; + + log(">>> f_trigger_pull_request"); + + if (f_ut_trigger(valueof(p_ut_trigger)) == false) { + log("f_trigger_pull_request: Upper Tester failure"); + return false; + } + + tc_ac.start; + alt { + [] httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + ?, + ?, + mw_http_message_body_xml( + mw_xml_body_pull_request( + mw_pull_request + ))))) -> value v_request { + tc_ac.stop; + p_pull_request := v_request.request.body.xml_body.msg.pull_request; + + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + p_pull_request.priority, + {}, + success + ))), + v_headers + ))); + // Message processing + f_sleep(PX_MESSAGE_PROCESSING_INTERVAL); + // Send PullResponse + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_pull_response( + m_pull_response( + v_created_date_time, + v_message_id, + v_priority, + p_pull_request.sender_, + {}, + success, + -, + -, + p_pull_request.contextID, + p_pull_request.correlationID, + false + ))), + v_headers + ))); + log("f_trigger_pull_request: IUT successfully sends PullRequest"); + } + [] httpPort_notif.receive { + tc_ac.stop; + // Send Acknowledgement + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_created_date_time, + v_message_id, + v_priority, + {}, + badRequest + ))), + v_headers + ))); + log("f_trigger_pull_request: IUT sends an unexpected message"); + return false; + } + [] tc_ac.timeout { + log("f_trigger_pull_request: Expected message not received"); + return false; + } + } // End of 'alt' statement + + log("<<< f_trigger_pull_request"); + return true; + } // End of function f_trigger_pull_request + + function f_process_pull_request_response( + in template (omit) Service p_service, + in template (omit) Service p_recipient, + in template (omit) XmlEntityPayload p_entity_payload := omit, + in template (omit) PayloadSelector p_payload_selector := omit, + in template (value) PullRequest_1.discoveryProfiles_list p_discovery_profiles := {}, + out charstring p_message_id + ) runs on CiseComponent return integer { + // Local variables + var boolean v_recv_sync_ack := true; + var boolean v_recv_response := false; + var Headers v_headers; + var HttpMessage v_request; + var charstring v_date_time := f_get_current_date_time(); + var charstring v_expected_date_time := substr(v_date_time, 0, lengthof(v_date_time) - 5); + var charstring v_correlation_id := f_generate_uuid(); + var charstring v_context_id := f_generate_uuid(); + var template (omit) CoreEntityPayload_derivations v_payload := omit; + var PullRequest_1 v_pull_request; + var octetstring v_pull_request_signed; + var charstring v_pull_request_canonicalized; + var charstring v_pull_request_signed_str; + var integer v_result; + + log(">>> f_process_pull_request_response"); + + p_message_id := f_generate_uuid(); + + if (ispresent(p_entity_payload)) { + v_payload := m_core_entity_payload_derivations_payload(p_entity_payload); + } + + v_pull_request := valueof( + m_pull_request( + v_date_time, + p_message_id, + high, + p_service, + {}, + request, + p_discovery_profiles, + -, -, + v_context_id, + v_correlation_id, + PX_CISE_REQUEST_ACK, // RequiresAck + p_recipient, + v_payload, + -, + 1000, // ResponseTimeOut + -, + p_payload_selector + )); + v_result := f_sign_pull_request(v_pull_request, PX_SECURITY_SIGN_HASH_ALG, PICS_CISE_TS_CERTIFICATE, PICS_CISE_TS_SIGNING_PRIVATE_KEY, PICS_CISE_TS_SIGNING_PRIVATE_PASSWD, v_pull_request_signed, v_pull_request_canonicalized); + if (v_result != 0) { + log("f_process_pull_request_response: Signature processing failed ***"); + return -1; + } + v_pull_request_signed_str := oct2char(v_pull_request_signed); + log("f_process_pull_request_response: v_pull_request_signed_str: ", v_pull_request_signed_str); + + //f_verify_sign_pull_request(valueof(m_xml_body_pull_request(v_pull_request, v_pull_request_signed_str)), ""/*v_pull_response_canonicalized*/); + + f_init_default_headers_list(-, -, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_PULL_REQUEST_URI & "?messageId=" & p_message_id, + v_headers, + m_http_message_body_xml( + m_xml_body_pull_request( // As the message was signed, we need to send as raw XML to prevent codec call + v_pull_request, + v_pull_request_signed_str // If raw is specified, the codec does not encode the message + ))))); + + tc_ac.start; + alt { + [v_recv_sync_ack == true] + httpPort.receive( + mw_http_response( + mw_http_response_202_accepted( + mw_http_message_body_xml( + mw_xml_body_acknowledgement( + mw_acknowledgement( + ?, + ?, //pattern "p_message_id*", + -, -, + success, + -, -, -, -, + v_correlation_id + )))))) { + tc_ac.stop; + + log("f_process_pull_request_response: IUT successfully received synchronous Acknowledgment"); + v_recv_sync_ack := false; // Repeat and ... + v_recv_response := true; // ... wait for the PullResponse + tc_ac.start; + repeat; + } + [v_recv_response == true] + httpPort_notif.receive( + mw_http_request( + mw_http_request_post( + PICS_ROOT_API & PICS_PULL_RESPONSE_URI, + -, + mw_http_message_body_xml( + mw_xml_body_pull_response( + mw_pull_response( + ?, + ?, // pattern "p_message_id*", + high, + -, -, + success, + -, -, -, + v_correlation_id + )))))) -> value v_request { + tc_ac.stop; + + if (not(f_verify_sign_pull_response(v_request.request.body.xml_body, ""/*v_pull_response_canonicalized*/))) { + log("f_process_pull_request_response: Signature not verified"); + // TODO Send error + return -1; + } else { + log("f_process_pull_request_response: IUT successfully received PullResponse"); + } + + // Send the response to finalyze the transaction + f_init_default_headers_list(-, -, v_headers); + httpPort_notif.send( + m_http_response( + m_http_response_ok( + m_http_message_body_xml( + m_xml_body_acknowledgement( + m_acknowledgement( + v_request.request.body.xml_body.msg.pull_response.creationDateTime, + v_request.request.body.xml_body.msg.pull_response.messageID, + v_request.request.body.xml_body.msg.pull_response.priority, + {}, + success + ))), + v_headers + ))); + } + [] tc_ac.timeout { + log("f_process_pull_request_response: Expected message not received"); + return -1; + } + } // End of 'alt' statement + + log("<<< f_process_pull_request_response"); + return 0; + } // End of function f_process_pull_request_response + + function f_sign_pull_request( + in PullRequest_1 p_pull_request, + in HashAlgorithm p_hash_algorithm, + in charstring p_certificate_name, + in charstring p_private_key_name, + in charstring p_private_key_passwd, + out octetstring p_signed_pull_request, + out charstring p_pull_request_canonicalized + ) return integer { + var octetstring v_encoded_pull_request; + var octetstring v_empty_signature; + var octetstring v_digest; + var octetstring v_signature; + var charstring v_x509_certificate_subject; + var charstring v_x509_certificate_pem; + var octetstring v_h := char2oct("\n"); + + // Encode the pull request + v_encoded_pull_request := bit2oct(encvalue(p_pull_request)); + log("f_sign_pull_request: v_encoded_pull_request: ", v_encoded_pull_request); + + // Encode empty signature + log("f_sign_pull_request: m_to_be_signed: ", m_to_be_signed); + v_empty_signature := bit2oct(encvalue(valueof(m_to_be_signed))); + log("f_sign_pull_request: Empty signature: ", v_empty_signature); + + // Sign the XML document (envelopped signature) + if (f_sign(v_encoded_pull_request, v_empty_signature, p_certificate_name, p_private_key_name, p_private_key_passwd, v_signature, v_digest, v_x509_certificate_subject, v_x509_certificate_pem, p_pull_request_canonicalized) == -1) { + log("f_sign_pull_request: failed to sign PullRequest"); + return -1; + } + log("f_sign_pull_request: Signature: ", v_signature); + + // Create the XML envelopped signature + if (f_xml_build_envolopped_signature(v_encoded_pull_request, v_signature, v_digest, v_x509_certificate_subject, "\n"); + + // Encode the pull response + v_encoded_pull_response := bit2oct(encvalue(p_pull_response)); + log("f_sign_pull_response: v_encoded_pull_response: ", v_encoded_pull_response); + + // Encode empty signature + log("f_sign_pull_response: m_to_be_signed: ", m_to_be_signed); + v_empty_signature := bit2oct(encvalue(valueof(m_to_be_signed))); + log("f_sign_pull_response: Empty signature: ", v_empty_signature); + + // Sign the XML document (envelopped signature) + if (f_sign(v_encoded_pull_response, v_empty_signature, p_certificate_name, p_private_key_name, p_private_key_passwd, v_signature, v_digest, v_x509_certificate_subject, v_x509_certificate_pem, p_pull_response_canonicalized) == -1) { + log("f_sign_pull_response: failed to sign PullResponse"); + return -1; + } + log("f_sign_pull_response: Signature: ", v_signature); + + // Create the XML envelopped signature + if (f_xml_build_envolopped_signature(v_encoded_pull_response, v_signature, v_digest, v_x509_certificate_subject, "\n"); + + // Encode the pull request + v_encoded_feedback := bit2oct(encvalue(p_feedback)); + log("f_sign_feedback: v_encoded_feedback: ", v_encoded_feedback); + + // Encode empty signature + log("f_sign_feedback: m_to_be_signed: ", m_to_be_signed); + v_empty_signature := bit2oct(encvalue(valueof(m_to_be_signed))); + log("f_sign_feedback: Empty signature: ", v_empty_signature); + + // Sign the XML document (envelopped signature) + if (f_sign(v_encoded_feedback, v_empty_signature, p_certificate_name, p_private_key_name, p_private_key_passwd, v_signature, v_digest, v_x509_certificate_subject, v_x509_certificate_pem, p_feedback_canonicalized) == -1) { + log("f_sign_feedback: failed to sign PullRequest"); + return -1; + } + log("f_sign_feedback: Signature: ", v_signature); + + // Create the XML envelopped signature + if (f_xml_build_envolopped_signature(v_encoded_feedback, v_signature, v_digest, v_x509_certificate_subject, "\n"); + + // Encode the pull request + v_encoded_push := bit2oct(encvalue(p_push)); + log("f_sign_push: v_encoded_push: ", v_encoded_push); + + // Encode empty signature + log("f_sign_push: m_to_be_signed: ", m_to_be_signed); + v_empty_signature := bit2oct(encvalue(valueof(m_to_be_signed))); + log("f_sign_push: Empty signature: ", v_empty_signature); + + // Sign the XML document (envelopped signature) + if (f_sign(v_encoded_push, v_empty_signature, p_certificate_name, p_private_key_name, p_private_key_passwd, v_signature, v_digest, v_x509_certificate_subject, v_x509_certificate_pem, p_push_canonicalized) == -1) { + log("f_sign_push: failed to sign PullRequest"); + return -1; + } + log("f_sign_push: Signature: ", v_signature); + + // Create the XML envelopped signature + if (f_xml_build_envolopped_signature(v_encoded_push, v_signature, v_digest, v_x509_certificate_subject, "\n"); + + // Encode the pull request + v_encoded_pull_request := bit2oct(encvalue(p_pull_request)); + log("f_sign_pull_request_bo: v_encoded_pull_request: ", v_encoded_pull_request); + + // Encode empty signature + v_to_be_signed := valueof(m_to_be_signed); + if (p_alter_signature_alg) { + v_to_be_signed.signatureMethod.algorithm := PICS_CISE_INVALID_SIGNATURE_ALGORITHM; + } + if (p_alter_signature_digest) { + v_to_be_signed.reference.digestMethod.algorithm := PICS_CISE_INVALID_DIGEST_ALGORITHM; + } + log("f_sign_pull_request_bo: v_to_be_signed: ", v_to_be_signed); + v_empty_signature := bit2oct(encvalue(valueof(v_to_be_signed))); + log("f_sign_pull_request_bo: Empty signature: ", v_empty_signature); + + // Sign the XML document (envelopped signature) + if (p_certificate_past) { + p_certificate_name := PICS_CISE_TS_CERTIFICATE_PAST; + p_private_key_name := PICS_CISE_TS_SIGNING_PRIVATE_KEY_PAST; + } else if (p_certificate_future) { + p_certificate_name := PICS_CISE_TS_CERTIFICATE_FUTURE; + p_private_key_name := PICS_CISE_TS_SIGNING_PRIVATE_KEY_FUTURE; + } + if (f_sign(v_encoded_pull_request, v_empty_signature, p_certificate_name, p_private_key_name, p_private_key_passwd, v_signature, v_digest, v_x509_certificate_subject, v_x509_certificate_pem, p_pull_request_canonicalized) == -1) { + log("f_sign_pull_request: failed to sign PullRequest"); + return -1; + } + log("f_sign_pull_request: Raw signature: ", v_signature); + + if (p_alter_signature) { + v_signature[0] := '54'O; + v_signature[1] := '4F'O; + v_signature[1] := '54'O; + v_signature[1] := '4F'O; + } + log("f_sign_pull_request: Altererd v_signature: ", v_signature); + if (p_alter_certificate) { + v_x509_certificate_pem[0] := "z"; + v_x509_certificate_pem[1] := "z"; + v_x509_certificate_pem[2] := "z"; + v_x509_certificate_pem[3] := "z"; + } + log("f_sign_pull_request: Altererd v_x509_certificate_pem: ", v_x509_certificate_pem); + if (p_alter_digest) { + v_digest[0] := '54'O; + v_digest[1] := '4F'O; + v_digest[2] := '54'O; + v_digest[3] := '4F'O; + } + log("f_sign_pull_request: Altererd v_digest: ", v_digest); + + // Create the XML envelopped signature + if (f_xml_build_envolopped_signature_bo(v_encoded_pull_request, v_signature, v_digest, v_x509_certificate_subject, " + for (i := l; i < lengthof(v_raw_message) - v_pattern_length and substr(v_raw_message, i, v_pattern_length) != v_pattern; i := i + 1) {}; + log("f_verify_sign_pull_request: i: ", i); + log("f_verify_sign_pull_request: v_raw_message[i]: ", v_raw_message[i]); + // find last + v_pattern := ""; + v_pattern_length := lengthof(v_pattern); + for (j := lengthof(v_raw_message) - v_pattern_length - 1; j > l and substr(v_raw_message, j, v_pattern_length) != v_pattern; j := j - 1) {}; + log("f_verify_sign_pull_request: j: ", j); + log("f_verify_sign_pull_request: v_raw_message[j]: ", v_raw_message[j]); + v_signature := substr(v_raw_message, i, j + v_pattern_length - i); + log("f_verify_sign_pull_request: v_signature: ", v_signature); + log("f_verify_sign_pull_request: part1: ", substr(v_raw_message, l, i - l)); + log("f_verify_sign_pull_request: part2: ", substr(v_raw_message, j + v_pattern_length, lengthof(v_raw_message) - (j + v_pattern_length))); + v_message := substr(v_raw_message, l, i - l) & substr(v_raw_message, j + v_pattern_length, lengthof(v_raw_message) - (j + v_pattern_length)); + log("f_verify_sign_pull_request: v_message: ", v_message); + log("f_verify_sign_pull_request: p_debug_message: ", p_debug_message); + log("f_verify_sign_pull_request: v_message: ", char2oct(v_message)); + log("f_verify_sign_pull_request: p_debug_message: ", char2oct(p_debug_message)); + + log("f_verify_sign_pull_request: p_debug_message: ", char2oct(p_debug_message)); + // Decode signature + //v_signature := "<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.w3.org/2000/09/xmldsig#"><xsl:strip-space elements="*"/><xsl:output indent="false" method="xml" omit-xml-declaration="yes"/><xsl:template match="*[not(self::s:Signature)]"><xsl:element name="{local-name()}"><xsl:apply-templates select="*|text()"/></xsl:element></xsl:template><xsl:template match="s:Signature"/></xsl:stylesheet>/BJYqCxysmoxc+om/lia7dYNtls=VT4rwGff9QkVLwDDcd7bvi7EfoLBTfPkvTX2PCpRHiGdnGPeofqBCHK2ehv3jg+zMZA4CU55r7yYYITS553RkdqpA1qhE0PeiWJ1QvkNyc1HS05HySTJZtolOen8xUVvvWbbaye6bT/Y/I3jgoICHOU20Ln53tqr3P3NJ4CroH6OoNhO618AXKQMr/B1fSyML43xT1qgCrodQ9F5XRIORjIV9d/OOjHZnKyFr9eb33jz3vH7ZO9YVwoayWTGHHRH86aQmIuQTiVGjUPQbyfrrV7XiEKCwaT+ff7giAOVsf5tcH4juOawD9TwYMJV5EYMVw3HuyjJ7hPqkj29UqcvYA==/C=fr/DC=eucise/O=sim1-node01.node01/OU=Participants/CN=sim1-node01.node01.eucise.frMIIESTCCAzGgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UEBhMCZnIxDzANBgNVBAoMBmV1Y2lzZTEdMBsGA1UEAwwUc2lnbmluZy1jYS5ldWNpc2UuZnIwHhcNMTkwNjI2MTYxODMwWhcNMjkwNjIzMTYxODMwWjCBgDELMAkGA1UEBhMCZnIxFjAUBgoJkiaJk/IsZAEZFgZldWNpc2UxGzAZBgNVBAoMEnNpbTEtbm9kZTAxLm5vZGUwMTEVMBMGA1UECwwMUGFydGljaXBhbnRzMSUwIwYDVQQDDBxzaW0xLW5vZGUwMS5ub2RlMDEuZXVjaXNlLmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2D+YToUtk3n4qV/syEFCBCqqh3X40IX7L6zFrjr4t9Xvq7N0bk9TajGpHenHF9vSRYzQqfPV9dry+5cOHgdzVByzj1qV04SeQUaPu3azLuOsY/HLNKSf5onkb4bLfU7gXw5Od5BzFMw+5JgMFqpIEjujFDeS0ukz4KFmzWX6InUZb30afTXNyBsJ+hVvccmtggdr9pwkBr7pI3odKhblaC5+5BXvyJ1+5lCV0fNb9xHV8BzFMfzLo7PGojD0KuyAUleBEajLMMSwJ8nqn7HfudtFHiwjYMo/Kwm6TiS8lF6ZBnuzazmSqOOGAK2r1kcFFa/P5l06/P2Ths3DeExymQIDAQABo4IBDTCCAQkwCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAwQAYJYIZIAYb4QgENBDMWMVNlcnZlciBjZXJ0aWZpY2F0ZSBnZW5lcmF0ZWQgZm9yIEpSQyBDSVNFIFRlc3RiZWQwHQYDVR0OBBYEFKQYaWGsbBguNIkkIPqzGk6A7/FuMGMGA1UdIwRcMFqAFBMp/arPO6r5kPoUeLL6z7AcQoi/oT6kPDA6MQswCQYDVQQGEwJmcjEPMA0GA1UECgwGZXVjaXNlMRowGAYDVQQDDBFyb290LWNhLmV1Y2lzZS5mcoICEAAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAXcg1cv7whV2DFC/hKsQeGw7gx5cMrYM0H3v6huyeJy1mqdSY6rFus1mV4PmwrfzKORoQAGHrRGcGWCanjUqc0vmfKZFh8p4IDoF+9BkKBmJT/QvtulPPyrS9cRaW3qK7y1XIDAADKU3l8TpTei4XpFwJCN4Waqp9U+PPqhLao6YvSj/5HdI7OKsPbAdvRfPAwz9L6GLheK++E2GGZyxmgOPGlVg7dyOjtbuJNCRyQvXrNrIT0s+F47EpJYcEQD8gxzXzCFGm9Rf5kqRfWv1Sa7KItjCMdl3wOMMKzAOLTEfqIEHqilreOjGyV8gtAGDAdlBub291m0ftocEztgRqH"; + var bitstring v_dec := oct2bit(unichar2oct(v_signature)); + var Signature v_sign; + var integer v_result := decvalue/*fx_dec_xmldsig*/(v_dec, v_sign); + log("f_verify_sign_pull_request: v_result: ", v_result); + if (v_result != 0) { + log("f_verify_sign_pull_request: failed to decode Signature"); + return false; + } + log("f_verify_sign_pull_request: v_sign", v_sign); + + // Verify signature + return f_do_sign_verify(v_message, + v_empty_signature, + v_sign.signedInfo.canonicalizationMethod.algorithm, + v_sign.signedInfo.signatureMethod.algorithm, + v_sign.signedInfo.reference.digestMethod.algorithm, + v_sign.signedInfo.reference.digestValue, + v_sign.signatureValue, + v_sign.keyInfo.x509Data.x509SubjectName, + v_sign.keyInfo.x509Data.x509Certificate, + p_debug_message + ); + } // End of function f_verify_sign_pull_request + + function f_verify_sign_pull_response( + in XmlBody p_xml_body, + in charstring p_debug_message + ) return boolean { + // Extract signature + var octetstring v_empty_signature; + var charstring v_pattern := " + for (i := l; i < lengthof(v_raw_message) - v_pattern_length and substr(v_raw_message, i, v_pattern_length) != v_pattern; i := i + 1) {}; + log("f_verify_sign_pull_response: i: ", i); + log("f_verify_sign_pull_response: v_raw_message[i]: ", v_raw_message[i]); + // find last + v_pattern := ""; + v_pattern_length := lengthof(v_pattern); + for (j := lengthof(v_raw_message) - v_pattern_length - 1; j > l and substr(v_raw_message, j, v_pattern_length) != v_pattern; j := j - 1) {}; + log("f_verify_sign_pull_response: j: ", j); + log("f_verify_sign_pull_response: v_raw_message[j]: ", v_raw_message[j]); + v_signature := substr(v_raw_message, i, j + v_pattern_length - i); + log("f_verify_sign_pull_response: p_xml_body.msg.pull_response.elem: ", p_xml_body.msg.pull_response.elem); + log("f_verify_sign_pull_response: v_signature: ", v_signature); + log("f_verify_sign_pull_response: part1: ", substr(v_raw_message, l, i - l)); + log("f_verify_sign_pull_response: part2: ", substr(v_raw_message, j + v_pattern_length, lengthof(v_raw_message) - (j + v_pattern_length))); + v_message := substr(v_raw_message, l, i - l) & substr(v_raw_message, j + v_pattern_length, lengthof(v_raw_message) - (j + v_pattern_length)); + log("f_verify_sign_pull_response: v_message: ", v_message); + log("f_verify_sign_pull_response: p_debug_message: ", p_debug_message); + log("f_verify_sign_pull_response: v_message: ", char2oct(v_message)); + log("f_verify_sign_pull_response: p_debug_message: ", char2oct(p_debug_message)); + + log("f_verify_sign_pull_response: p_debug_message: ", char2oct(p_debug_message)); + // Decode signature + //v_signature := "<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.w3.org/2000/09/xmldsig#"><xsl:strip-space elements="*"/><xsl:output indent="false" method="xml" omit-xml-declaration="yes"/><xsl:template match="*[not(self::s:Signature)]"><xsl:element name="{local-name()}"><xsl:apply-templates select="*|text()"/></xsl:element></xsl:template><xsl:template match="s:Signature"/></xsl:stylesheet>/BJYqCxysmoxc+om/lia7dYNtls=VT4rwGff9QkVLwDDcd7bvi7EfoLBTfPkvTX2PCpRHiGdnGPeofqBCHK2ehv3jg+zMZA4CU55r7yYYITS553RkdqpA1qhE0PeiWJ1QvkNyc1HS05HySTJZtolOen8xUVvvWbbaye6bT/Y/I3jgoICHOU20Ln53tqr3P3NJ4CroH6OoNhO618AXKQMr/B1fSyML43xT1qgCrodQ9F5XRIORjIV9d/OOjHZnKyFr9eb33jz3vH7ZO9YVwoayWTGHHRH86aQmIuQTiVGjUPQbyfrrV7XiEKCwaT+ff7giAOVsf5tcH4juOawD9TwYMJV5EYMVw3HuyjJ7hPqkj29UqcvYA==/C=fr/DC=eucise/O=sim1-node01.node01/OU=Participants/CN=sim1-node01.node01.eucise.frMIIESTCCAzGgAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UEBhMCZnIxDzANBgNVBAoMBmV1Y2lzZTEdMBsGA1UEAwwUc2lnbmluZy1jYS5ldWNpc2UuZnIwHhcNMTkwNjI2MTYxODMwWhcNMjkwNjIzMTYxODMwWjCBgDELMAkGA1UEBhMCZnIxFjAUBgoJkiaJk/IsZAEZFgZldWNpc2UxGzAZBgNVBAoMEnNpbTEtbm9kZTAxLm5vZGUwMTEVMBMGA1UECwwMUGFydGljaXBhbnRzMSUwIwYDVQQDDBxzaW0xLW5vZGUwMS5ub2RlMDEuZXVjaXNlLmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2D+YToUtk3n4qV/syEFCBCqqh3X40IX7L6zFrjr4t9Xvq7N0bk9TajGpHenHF9vSRYzQqfPV9dry+5cOHgdzVByzj1qV04SeQUaPu3azLuOsY/HLNKSf5onkb4bLfU7gXw5Od5BzFMw+5JgMFqpIEjujFDeS0ukz4KFmzWX6InUZb30afTXNyBsJ+hVvccmtggdr9pwkBr7pI3odKhblaC5+5BXvyJ1+5lCV0fNb9xHV8BzFMfzLo7PGojD0KuyAUleBEajLMMSwJ8nqn7HfudtFHiwjYMo/Kwm6TiS8lF6ZBnuzazmSqOOGAK2r1kcFFa/P5l06/P2Ths3DeExymQIDAQABo4IBDTCCAQkwCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAwQAYJYIZIAYb4QgENBDMWMVNlcnZlciBjZXJ0aWZpY2F0ZSBnZW5lcmF0ZWQgZm9yIEpSQyBDSVNFIFRlc3RiZWQwHQYDVR0OBBYEFKQYaWGsbBguNIkkIPqzGk6A7/FuMGMGA1UdIwRcMFqAFBMp/arPO6r5kPoUeLL6z7AcQoi/oT6kPDA6MQswCQYDVQQGEwJmcjEPMA0GA1UECgwGZXVjaXNlMRowGAYDVQQDDBFyb290LWNhLmV1Y2lzZS5mcoICEAAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAXcg1cv7whV2DFC/hKsQeGw7gx5cMrYM0H3v6huyeJy1mqdSY6rFus1mV4PmwrfzKORoQAGHrRGcGWCanjUqc0vmfKZFh8p4IDoF+9BkKBmJT/QvtulPPyrS9cRaW3qK7y1XIDAADKU3l8TpTei4XpFwJCN4Waqp9U+PPqhLao6YvSj/5HdI7OKsPbAdvRfPAwz9L6GLheK++E2GGZyxmgOPGlVg7dyOjtbuJNCRyQvXrNrIT0s+F47EpJYcEQD8gxzXzCFGm9Rf5kqRfWv1Sa7KItjCMdl3wOMMKzAOLTEfqIEHqilreOjGyV8gtAGDAdlBub291m0ftocEztgRqH"; + var bitstring v_dec := oct2bit(unichar2oct(v_signature)); + var Signature v_sign; + var integer v_result := decvalue/*fx_dec_xmldsig*/(v_dec, v_sign); + log("f_verify_sign_pull_response: v_result: ", v_result); + if (v_result != 0) { + log("f_verify_sign_pull_response: failed to decode Signature"); + return false; + } + log("f_verify_sign_pull_response: v_sign", v_sign); + + // Verify signature + return f_do_sign_verify(v_message, + v_empty_signature, + v_sign.signedInfo.canonicalizationMethod.algorithm, + v_sign.signedInfo.signatureMethod.algorithm, + v_sign.signedInfo.reference.digestMethod.algorithm, + v_sign.signedInfo.reference.digestValue, + v_sign.signatureValue, + v_sign.keyInfo.x509Data.x509SubjectName, + v_sign.keyInfo.x509Data.x509Certificate, + p_debug_message + ); + } // End of function f_verify_sign_pull_response + + function f_xml_build_envolopped_signature( + in octetstring p_encoded_message, + in octetstring p_base64_signature, + in octetstring p_base64_digest, + in charstring p_x509_certificate_subject, + in charstring p_before_node, + in charstring p_x509_certificate_pem, + out octetstring p_signed_message + ) return integer { + var Signature v_xml_signature; + var octetstring v_signature; + var octetstring v_pattern := char2oct(p_before_node); + var integer v_pattern_length := lengthof(v_pattern); + var octetstring v_p2; + var integer i; + + // Add the signature node in the encoded message. Don't use XSLT!! + v_xml_signature := valueof( + m_signature( + p_base64_signature, + p_base64_digest, + p_x509_certificate_subject, + p_x509_certificate_pem + )); + log("f_xml_build_envolopped_signature: v_xml_signature: ", v_xml_signature); + + // Encode signature + v_signature := bit2oct(encvalue(v_xml_signature)); + //v_signature := fx_enc_xmldsig(v_xml_signature); + log("f_xml_build_envolopped_signature: v_signature (1): ", v_signature); + // Remove latest \n + for (i := lengthof(v_signature) - 1; i > 0 and v_signature[i] == '0A'O; i := i - 1) {}; + v_signature := substr(v_signature, 0, i + 1); + log("f_xml_build_envolopped_signature: v_signature (2): ", v_signature); + + // find last < + for (i := lengthof(p_encoded_message) - v_pattern_length - 1; i > v_pattern_length and substr(p_encoded_message, i, v_pattern_length) != v_pattern; i := i - 1) {}; + log("f_xml_build_envolopped_signature: i: ", i); + log("f_xml_build_envolopped_signature: p_encoded_message[i]: ", p_encoded_message[i]); + p_signed_message := substr(p_encoded_message, 0, i); + v_p2 := substr(p_encoded_message, i, lengthof(p_encoded_message) - i); + log("f_xml_build_envolopped_signature: p_signed_message: ", p_signed_message); + log("f_xml_build_envolopped_signature: v_p2: ", v_p2); + p_signed_message := p_signed_message & v_signature & v_p2; + + log("<<< f_xml_build_envolopped_signature: p_signed_message: ", p_signed_message); + return 0; + } + + function f_xml_build_envolopped_signature_bo( + in octetstring p_encoded_message, + in octetstring p_base64_signature, + in octetstring p_base64_digest, + in charstring p_x509_certificate_subject, + in charstring p_before_node, + in charstring p_x509_certificate_pem, + in boolean p_alter_signature_alg := false, + in boolean p_alter_signature_digest := false, + out octetstring p_signed_message + ) return integer { + var Signature v_xml_signature; + var octetstring v_signature; + var octetstring v_pattern := char2oct(p_before_node); + var integer v_pattern_length := lengthof(v_pattern); + var octetstring v_p2; + var integer i; + + // Add the signature node in the encoded message. Don't use XSLT!! + v_xml_signature := valueof( + m_signature( + p_base64_signature, + p_base64_digest, + p_x509_certificate_subject, + p_x509_certificate_pem + )); + log("f_xml_build_envolopped_signature_bo: v_xml_signature: ", v_xml_signature); + if (p_alter_signature_alg) { + v_xml_signature.signedInfo.signatureMethod.algorithm := PICS_CISE_INVALID_SIGNATURE_ALGORITHM; + } + if (p_alter_signature_digest) { + v_xml_signature.signedInfo.reference.digestMethod.algorithm := PICS_CISE_INVALID_DIGEST_ALGORITHM; + } + log("f_xml_build_envolopped_signature_bo: Altered v_xml_signature: ", v_xml_signature); + + // Encode signature + v_signature := bit2oct(encvalue(v_xml_signature)); + //v_signature := fx_enc_xmldsig(v_xml_signature); + log("f_xml_build_envolopped_signature_bo: v_signature (1): ", v_signature); + // Remove latest \n + for (i := lengthof(v_signature) - 1; i > 0 and v_signature[i] == '0A'O; i := i - 1) {}; + v_signature := substr(v_signature, 0, i + 1); + log("f_xml_build_envolopped_signature_bo: v_signature (2): ", v_signature); + + // find last < + for (i := lengthof(p_encoded_message) - v_pattern_length - 1; i > v_pattern_length and substr(p_encoded_message, i, v_pattern_length) != v_pattern; i := i - 1) {}; + log("f_xml_build_envolopped_signature_bo: i: ", i); + log("f_xml_build_envolopped_signature_bo: p_encoded_message[i]: ", p_encoded_message[i]); + p_signed_message := substr(p_encoded_message, 0, i); + v_p2 := substr(p_encoded_message, i, lengthof(p_encoded_message) - i); + log("f_xml_build_envolopped_signature_bo: p_signed_message: ", p_signed_message); + log("f_xml_build_envolopped_signature_bo: v_p2: ", v_p2); + p_signed_message := p_signed_message & v_signature & v_p2; + + log("<<< f_xml_build_envolopped_signature_bo: p_signed_message: ", p_signed_message); + return 0; + } + + /** + * @desc Generate a new UUID + * @return The UUID in string format on success, a null string otherwise + */ + function f_generate_uuid() return charstring { + return fx_generate_uuid(); + } + + function f_get_current_date_time(in integer p_shift_time := 0) return charstring { + return fx_get_current_date_time(p_shift_time); + } + + } // End of group cise_functions + + group upper_tester { + + function f_ut_trigger( + in UtTrigger p_ut_trigger + ) runs on CiseComponent return boolean { + // Local variables + var Headers v_headers; + var charstring_list v_headers_to_set := { "X-Message-Id", "X-Context-Id", "Correlation-Id", "X-Creation-Date-Time", "X-Priority", "X-Sender-Id", "X-Recipient-Id", "X-Message-Type", c_header_host }; + var charstring_list v_headers_value := { p_ut_trigger.message_id, p_ut_trigger.context_id, p_ut_trigger.correlation_id, p_ut_trigger.creation_date_time, p_ut_trigger.priority, p_ut_trigger.sender_id, p_ut_trigger.recipient_id, p_ut_trigger.message_type, PICS_HEADER_HOST_UT }; + var boolean v_result := true; + + f_init_default_headers_list("application/json", -, v_headers); + f_set_headers_list(v_headers_to_set, v_headers_value, v_headers); + utPort.send( + m_http_request( + m_http_request_post( + PICS_ROOT_API & PICS_CISE_ADAPTOR_URI, + v_headers, + m_http_message_body_json( + m_json_body_ut_trigger( + p_ut_trigger.desc + + ))))); + tc_ac.start; + alt { + [] utPort.receive( + mw_http_response( + mw_http_response_201_created_no_body + )) { + tc_ac.stop; + log("f_ut_trigger: INFO: UtTrigger response received"); + } + [] utPort.receive { + tc_ac.stop; + log("f_ut_trigger: FAIL: UtTrigger any response received"); + v_result := false; + } + [] tc_ac.timeout { + log("f_ut_trigger: FAIL: UtTrigger response not received"); + v_result := false; + } + } // End of 'alt' statement + + return v_result; + } // End of function f_ut_trigger + + altstep a_default_ut_responses() runs on CiseComponent { + [] utPort.receive { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Unexpected XML response ***"); + } + } // End of altstep a_default_ut_responses + + function f_priorityType2char(in PriorityType p_priority) return charstring { + var charstring v_return := ""; + + select(p_priority) { + case (PriorityType: high) { v_return := "High"; } + case (PriorityType: low) { v_return := "Low"; } + case (PriorityType: medium) { v_return := "Medium"; } + } + + return v_return; + } // End of function f_priorityType2char + + } // End of group upper_tester + +} // End of module LibCise_Functions \ No newline at end of file diff --git a/ttcn/LibCise/ttcn/LibCise_Pics.ttcn b/ttcn/LibCise/ttcn/LibCise_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..bc0c9a10a139b3148d8b6292242619ec420fab11 --- /dev/null +++ b/ttcn/LibCise/ttcn/LibCise_Pics.ttcn @@ -0,0 +1,214 @@ +module LibCise_Pics { + + /** + * @desc Set to true if the IUT is acting as a CISE node + * @see CDM-0012 Table A1/1 + */ + modulepar boolean PICS_IUT_CDM_NODE_EI_NA := true; + + /** + * @desc Set to true if the IUT is acting as a CISE node + * @see CDM-0012 Table A1/1 + */ + modulepar boolean PICS_IUT_CDM_NODE_EI_NN := true; + + /** + * @desc Set to true if the IUT is acting as a CISE adaptor + * @see CDM-0012 Table A1/2 + */ + modulepar boolean PICS_IUT_CDM_ADAPTOR := false; + + /** + * @desc Set to true if the IUT supports PullRequest message + * @see CDM-0012 Table A2/1.1 + */ + modulepar boolean PICS_CDM_PULL := true; + + /** + * @desc Set to true if the IUT supports PullRequest message + * @see CDM-0012 Table A2/1.2 + */ + modulepar boolean PICS_CDM_PUSH := true; + + /** + * @desc Set to true if the IUT supports PullRequest message + * @see CDM-0012 Table A2/1.3 + */ + modulepar boolean PICS_CDM_SUBSCRIBE := true; + + /** + * @desc Set to true if the IUT supports PullRequest message + * @see CDM-0012 Table A2/1.4 + */ + modulepar boolean PICS_CDM_ACKNOWLEDGEMENT := true; + + /** + * @desc Set to true if the IUT supports PullRequest message + * @see CDM-0012 Table A2/1.5 + */ + modulepar boolean PICS_CDM_FEEDBACK := true; + + /** + * @desc Set to true if the IUT provides Vessel service + * @see CDM-0012 Table A3/2.11 + */ + modulepar boolean PICS_CDM_VESSEL_SERVICE := true; + + /** + * @desc Set to true if the IUT provides Action service + * @see CDM-0012 Table A3/2.1 + */ + modulepar boolean PICS_CDM_ACTION_SERVICE := true; + + /** + * @desc Set to true if the IUT provides Anomaly service + * @see CDM-0012 Table A3/2.2 + */ + modulepar boolean PICS_CDM_ANOMALY_SERVICE := true; + + /** + * @desc Set to true if the IUT provides CertificateDocument service + * @see CDM-0012 Table A3/2.3 + */ + modulepar boolean PICS_CDM_CERTIFICATE_DOCUMENT_SERVICE := true; + + /** + * @desc Set to true if the IUT provides Incident service + * @see CDM-0012 Table A3/2.4 + */ + modulepar boolean PICS_CDM_INCIDENT_SERVICE := true; + + /** + * @desc Set to true if the IUT provides IrregularMigrationIncidentService service + * @see CDM-0012 Table A3/2.5 + */ + modulepar boolean PICS_CDM_IRREGULAR_MIGRATION_INCIDENT_SERVICE := true; + + /** + * @desc Set to true if the IUT provides LawInfringementIncidentService service + * @see CDM-0012 Table A3/2.6 + */ + modulepar boolean PICS_CDM_LAW_INFRINGEMENT_INCIDENT_SERVICE := true; + + /** + * @desc Set to true if the IUT provides meteo oceanographic condition service + * @see CDM-0012 Table A3/2.7 + */ + modulepar boolean PICS_CDM_METEO_SERVICE := true; + + /** + * @desc Set to true if the IUT provides organization service + * @see CDM-0012 Table A3/2.8 + */ + modulepar boolean PICS_CDM_ORGANIZATION_SERVICE := true; + + /** + * @desc Set to true if the IUT provides Risk service + * @see CDM-0012 Table A3/2.9 + */ + modulepar boolean PICS_CDM_RISK_SERVICE := true; + + /** + * @desc Set to true if the IUT provides Cargo service + * @see CDM-0012 Table A3/2.10 + */ + modulepar boolean PICS_CDM_CARGO_SERVICE := true; + + /** + * @desc CISE root API URL + */ + modulepar charstring PICS_ROOT_API := "/"; + + /** + * @desc URL for HTTP PullRequest request + */ + modulepar charstring PICS_CISE_PULL_REQUEST_URI := "api/ui/messages"; + + /** + * @desc URL to send HTTP PullResponse request to peer + */ + modulepar charstring PICS_PULL_RESPONSE_URI := "api/messages"; + + modulepar charstring PICS_PUSH_REQUEST_URI := "api/subscribes"; + + modulepar charstring PICS_PUSH_URI := "api/notify"; + + modulepar charstring PICS_FEEDBACK_URI := "api/feedback"; + + modulepar charstring PICS_CISE_ADAPTOR_URI := "api/v1/messages"; + + /** + * @desc Certificate storage path + */ + modulepar charstring PICS_CISE_CERTIFICATES_DB_PATH := ""; + + /** + * @desc Full path name of the certificate to be used the Test System + */ + modulepar charstring PICS_CISE_TS_CERTIFICATE := "cert.pem"; + + /** + * @desc Full path name of the certificate's signing private key to be used the Test System + */ + modulepar charstring PICS_CISE_TS_SIGNING_PRIVATE_KEY := "privkey.pem"; + + /** + * @desc The password to decrypte the private key in pkcs#8 format. Empty if no encryption + */ + modulepar charstring PICS_CISE_TS_SIGNING_PRIVATE_PASSWD := ""; + + /** + * @desc Full path name of the certificate to be used the IUT + */ + modulepar charstring PICS_CISE_TS_CERTIFICATE_PAST := "cise_expired.crt"; + + /** + * @desc Full path name of the certificate's signing private key to be used the IUT + */ + modulepar charstring PICS_CISE_TS_SIGNING_PRIVATE_KEY_PAST := "cise_expired.key"; + + /** + * @desc Full path name of the certificate to be used the IUT + */ + modulepar charstring PICS_CISE_TS_CERTIFICATE_FUTURE := "cert_future.crt"; + + /** + * @desc Full path name of the certificate's signing private key to be used the IUT + */ + modulepar charstring PICS_CISE_TS_SIGNING_PRIVATE_KEY_FUTURE := "cert_future.key"; + + /** + * @desc Full path name of the certificate to be used the IUT + */ + modulepar charstring PICS_CISE_IUT_CERTIFICATE := "cert.pem"; + + /** + * @desc Full path name of the certificate's signing private key to be used the IUT + */ + modulepar charstring PICS_CISE_IUT_SIGNING_PRIVATE_KEY := "ciseadaptor5.key"; + + modulepar charstring PICS_CISE_CANONICALIZATION_ALGORITHM := "http://www.w3.org/2001/10/xml-exc-c14n#"; + + modulepar charstring PICS_CISE_DIGEST_ALGORITHM := "http://www.w3.org/2000/09/xmldsig#sha1"; + + modulepar charstring PICS_CISE_INVALID_DIGEST_ALGORITHM := "http://www.w3.org/2000/09/xmldsig#sha512"; + + modulepar charstring PICS_CISE_SIGNATURE_ALGORITHM := "http://www.w3.org/2000/09/xmldsig#rsa-sha1"; + + modulepar charstring PICS_CISE_INVALID_SIGNATURE_ALGORITHM := "http://www.w3.org/2000/09/xmldsig#rsa-sha256"; + + modulepar charstring PICS_CISE_TRANSFORM_ALGORITHM := "http://www.w3.org/TR/1999/REC-xslt-19991116"; + + modulepar charstring PICS_CISE_TRANSFORM_TYPE_ALGORITHM := "http://www.w3.org/2000/09/xmldsig#enveloped-signature"; + + modulepar charstring PICS_CISE_TRANSFORM_XSLT_STYLESHEET := "\n\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t"; + + modulepar charstring PICS_HEADER_HOST_UT := "127.0.0.1"; + + /** + * @desc Set to true if the IUT is acting as a peer CISE adaptor + * @see Not documented + */ + modulepar boolean PICS_IUT_CDM_CISE_SIMU_EI_NA := false; + +} // End of module LibCise_Pics diff --git a/ttcn/LibCise/ttcn/LibCise_Pixits.ttcn b/ttcn/LibCise/ttcn/LibCise_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c0b8f0ab86df8082b3b8b84126eabe7a3dac8b54 --- /dev/null +++ b/ttcn/LibCise/ttcn/LibCise_Pixits.ttcn @@ -0,0 +1,377 @@ +module LibCise_Pixits { + + // XSD + import from XSD all; + + // LibSecurity + import from LibSecurity_Hash all; + + // LibCDM + import from http_www_cise_eu_servicemodel_v1_authority all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_cise_eu_datamodel_v1_entity_document all; + import from http_www_cise_eu_datamodel_v1_entity_action all; + import from http_www_cise_eu_datamodel_v1_entity_anomaly all; + import from http_www_cise_eu_datamodel_v1_entity_organization all; + import from http_www_cise_eu_datamodel_v1_entity_incident all; + import from http_www_cise_eu_datamodel_v1_entity_vessel all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_location all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_period all; + import from http_www_cise_eu_datamodel_v1_entity_person all; + import from http_www_cise_eu_datamodel_v1_entity_agent all; + import from http_www_cise_eu_datamodel_v1_entity_event all; + import from http_www_cise_eu_datamodel_v1_entity_risk all; + import from http_www_cise_eu_datamodel_v1_entity_movement all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + /** + * @desc The hash algorithnm to use for signature + */ + modulepar HashAlgorithm PX_SECURITY_SIGN_HASH_ALG := e_sha1; + + /** + * @desc Is requestAck required? + */ + modulepar XSD.Boolean PX_CISE_REQUEST_ACK := true; + + modulepar XSD.String PX_CISE_SENDER_SERVICE_ID := "de.sim2-node01.vessel.pull.consumer"; + + modulepar XSD.String PX_CISE_UNKNOWN_SENDER_SERVICE_ID := "unknown.consumer"; + + modulepar XSD.String PX_CISE_RECIPIENT_SERVICE_ID := "de.sim1-node01.vessel.pull.provider"; + + modulepar XSD.String PX_CISE_UNKNOWN_RECIPIENT_SERVICE_ID := "unknown.provider"; + + modulepar XSD.String PX_CISE_DISCOVERY_PROFILE_SERVICE_ID := "rc.lsA.service1A1.vessel.pull.provider"; + + modulepar CountryType PX_COUNTRY_TYPE := fR; + + modulepar DataFreshnessType PX_DATA_FRESHNESS_TYPE := realTime; + + modulepar SeaBasinType PX_CISE_SEA_BASSIN := northSea; + + modulepar ServiceRoleType PX_CISE_CONSUMER := consumer; + + modulepar ServiceRoleType PX_CISE_PROVIDER := provider; + + modulepar XSD.Duration PX_SUBSCRIPTION_REFRESH_RATE := "P0Y0M0DT0H1M0S"; + + group vessel { + + modulepar XSD.Long PX_VESSEL_IMO_NUMBER := 7710525; + + modulepar XSD.Long PX_VESSEL_UNKNOWN_IMO_NUMBER := 666; + + modulepar DataFreshnessType PX_VESSEL_DATA_FRESHNESS := realTime; + + modulepar XSD.String PX_VESSEL_POS_LATITUDE := "81.0"; + + modulepar XSD.String PX_VESSEL_POS_LONGITUDE := "171.0"; + + modulepar XSD.String PX_VESSEL_INVALID_POS_LATITUDE := "171.0"; + + modulepar XSD.String PX_VESSEL_INVALID_POS_LONGITUDE := "81.0"; + + modulepar VesselType PX_VESSEL_TYPE := fishingVessel; + + modulepar XSD.Double PX_VESSEL_NET_TONNAGE := 30000.0; + + modulepar XSD.String PX_PAYLOAD_SELECTOR_CONDITION_1 := "//Vessel[1]/NetTonnage"; + + modulepar XSD.String PX_PAYLOAD_SELECTOR_CONDITION_2 := "//Vessel[1]/MaximumSpeed"; + + } + + group agent { + + modulepar XSD.String PX_AGENT_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar AgentRoleInEventType PX_AGENT_AGENT_ROLE := nonSpecified; + + modulepar XSD.String PX_AGENT_CONTACT := "BEGIN:VCARD \nVERSION:3.0 \nPRODID:ez-vcard 0.10.5 \nFN:AgentPerson \nEMAIL:Person@Person \nTEL:321234 \nEND:VCARD "; + + } + + group organization { + + modulepar XSD.String PX_ORGANIZATION_LEGAL_NAME := "A1"; + + modulepar XSD.String PX_INVALID_ORGANIZATION_LEGAL_NAME := "CAFEDECA"; + + modulepar XSD.String PX_ORGANIZATION_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar XSD.String PX_ORGANIZATION_COUNTRY := "FR"; + + modulepar XSD.String PX_ORGANIZATION_CONTACT := "BEGIN:VCARD \nVERSION:3.0 \nPRODID:ez-vcard 0.10.5 \nFN:AgentPerson \nEMAIL:Person@Person \nTEL:321234 \nEND:VCARD "; + + } + + group action_ { + + modulepar XSD.String PX_ACTION_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar NatureType PX_ACTION_NATURE_TYPE := observed; + + modulepar ActionStatusType PX_ACTION_ACTION_STATUS := inProgress; + + modulepar ActionType PX_ACTION_ACTION_TYPE := rescue; + + modulepar http_www_cise_eu_datamodel_v1_entity_action.MissionType PX_ACTION_MISSION := nonSpecified; + + modulepar ActionPriorityType PX_ACTION_PRIORITY := high; + + } + + group anomaly { + + modulepar XSD.String PX_ANOMALY_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar NatureType PX_ANOMALY_NATURE_TYPE := observed; + + modulepar AnomalyType PX_ANOMALY_TYPE := nonSpecified; + + } + + group period { + + modulepar XSD.Date PX_PERIOD_START_DATE := "2023-09-01+01:00"; + + modulepar XSD.Date PX_PERIOD_END_DATE := "2023-09-01+01:00"; + + } + + group documents { + + modulepar XSD.String PX_CERTIFICATE_DOCUMENT_SUBJECT_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar XSD.String PX_CERTIFICATE_DOCUMENT_SUBJECT := "Tonnage Certificate"; + + modulepar XSD.String PX_CERTIFICATE_DOCUMENT_TITLE := "Tonnage Certificate"; + + modulepar XSD.String PX_CERTIFICATE_DOCUMENT_VERSION := "V1.0.1"; + + modulepar XSD.String PX_CERTIFICATE_DOCUMENT_CONTENT := "R3Jvc3MgdG9ubmFnZSBpcyBhIHRoZSBtZWFzdXJlIG9mIHRoZSBvdmVyYWxsIHNpemUgb2YgYSBzaGlwLiBJdCBpcyBkZXJpdmVkIGZyb20gYSBmb3JtdWxhIHRoYXQgbXVsdGlwbGllcyB0aGUgaW50ZXJuYWwgdm9sdW1lIG9mIGEgc2hpcCBpbiBjdWJpYyBtZXRyZXMgYnkgYSBjb25zdGFudCAoSykgY29udGFpbmVkIGluIGEgdGFibGUgaW4gdGhlIHRvbm5hZ2UgY29udmVudGlvbi4gTmV0IHRvbm5hZ2UgaXMgdGhlIG1lYXN1cmUgb2YgdGhlIHVzZWZ1bCBjYXBhY2l0eSBvZiBhIHNoaXAgZGV0ZXJtaW5lZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIENvbnZlbnRpb24uIEl0IGlzIGFsc28gZGVyaXZlZCBmcm9tIG11bHRpcGx5aW5nIHRoZSBpbnRlcm5hbCB2b2x1bWUgYnkgdGhlIGNvbnN0YW50IEssIGJ1dCB0aGVuIG11bHRpcGxpZXMgaXQgYnkgdGhlIHNxdWFyZSBvZiA0IHggIHNoaXBzIHN1bW1lciBtb3VsZGVkIHN1bW1lciBkcmFmdC8zIHggbW91bGRlZCBkZXB0aC4gIEFuIGFkZGl0aW9uYWwgZmFjdG9yIGlzIHVzZWQgZm9yIHBhc3NlbmdlciBzaGlwcy4="; // https://www.base64encode.org/ + + modulepar XSD.Base64Binary PX_CERTIFICATE_DOCUMENT_B64_CONTENT := // https://www.rapidtables.com/convert/number/ascii-to-hex.html + '52334A7663334D6764473975626D466E5A534270637942684948526F5A5342745A57467A64584A6C4947396D4948526F5A534276646D56795957787349484E70656D5567623259675953427A61476C774C69424A644342706379426B5A584A70646D566B49475A79623230675953426D62334A74645778684948526F595851676258567364476C7762476C6C6379423061475567615735305A584A7559577767646D39736457316C4947396D4947456763326870634342706269426A64574A70597942745A5852795A584D67596E6B675953426A6232357A644746756443416F53796B675932397564474670626D566B49476C75494745676447466962475567615734676447686C49485276626D35685A32556759323975646D567564476C7662693467546D563049485276626D35685A32556761584D676447686C4947316C59584E31636D5567623259676447686C4948567A5A575A316243426A5958426859326C30655342765A69426849484E6F615841675A4756305A584A746157356C5A4342706269426859324E76636D5268626D4E6C49486470644767676447686C49454E76626E5A6C626E52706232347549456C3049476C7A49474673633238675A47567961585A6C5A43426D636D39744947313162485270634778356157356E4948526F5A534270626E526C636D3568624342326232783162575567596E6B676447686C49474E76626E4E30595735304945737349474A3164434230614756754947313162485270634778705A584D6761585167596E6B676447686C49484E78645746795A5342765A6941304948676749484E6F6158427A49484E316257316C63694274623356735A47566B49484E316257316C6369426B636D466D6443387A49486767625739316247526C5A43426B5A58423061433467494546754947466B5A476C3061573975595777675A6D466A6447397949476C7A4948567A5A5751675A6D39794948426863334E6C626D646C6369427A61476C776379343D'O; // https://www.base64encode.org/ + + modulepar XSD.HexBinary PX_CERTIFICATE_DOCUMENT_B64_CONTENT_HASH := 'a285b793c3ee5c65c178f397a33a2a2856c722cd886fc8cd3054975833623cec'O; // https://emn178.github.io/online-tools/sha256.html + modulepar XSD.HexBinary PX_CERTIFICATE_DOCUMENT_B64_INVALID_HASH := 'cafedecac3ee5c65c178f397a33a2a2856c722cd886fc8cd3054975833623cec'O; // https://emn178.github.io/online-tools/sha256.html + + modulepar CertificateDocumentType PX_CERTIFICATE_DOCUMENT_TYPE := tonnageCertificate; + + } + + group incident { + + modulepar XSD.String PX_INCIDENT_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar NatureType PX_INCIDENT_NATURE_TYPE := observed; + + modulepar CertaintyType PX_INCIDENT_CERTAINTY := likely; + + modulepar XSD.Int PX_INCIDENT_DEATHS_ON_BOARD := 0; + + modulepar XSD.Boolean PX_INCIDENT_DISEASES_ON_BOARD := false; + + modulepar XSD.Boolean PX_INCIDENT_INFECTION_ON_BOARD := true; + + modulepar XSD.Int PX_INCIDENT_NUMBER_OF_IILL_PERSONS := 5; + + modulepar UrgencyType PX_INCIDENT_RESPONSE_URGENCY := future; + + modulepar http_www_cise_eu_datamodel_v1_entity_incident.SeverityType PX_INCIDENT_SEVERITY := severe + + modulepar XSD.Boolean PX_INCIDENT_SICK_ANIMAL_ON_BOARD := true; + + modulepar NatureType PX_IRREGULAR_MIGRATION_INCIDENT_NATURE_TYPE := observed; + + modulepar IrregularMigrationIncidentType PX_IRREGULAR_MIGRATION_INCIDENT_TYPE := irregularBorderEntry; + + modulepar NatureType PX_LAW_INFRINGEMENT_INCIDENT_NATURE_TYPE := observed; + + modulepar LawInfringementIncidentType PX_LAW_INFRINGEMENT_INCIDENT_TYPE := lawInfringementByVessels; + + } + + group m_meteo_oceanographic_condition { + + modulepar XSD.Double PX_METEO_AIR_TEMP := 21.0; + modulepar XSD.Int PX_METEO_CLOUD_CEILING := 1; + modulepar CloudCoverType PX_METEO_CLOUD_COVER := clearSky; + modulepar XSD.Int PX_METEO_PRECIPITATION := 0; + modulepar XSD.Double PX_METEO_SALINITY := 5.9; + modulepar SeaConditionType PX_METEO_SEA_CONDITION := calm_rippled; + modulepar XSD.Double PX_METEO_SEA_LEVEL_PRESSURE := 1.0; + modulepar SourceType PX_METEO_SOURCE_TYPE := observation; + modulepar XSD.Double PX_METEO_TIDAL_CURRENT_DIRECTION; + modulepar XSD.Double PX_METEO_TIDAL_CURRENT_SPEED; + modulepar TidesType PX_METEO_TIDES := low; + modulepar XSD.Double PX_METEO_VISIBILITY; + modulepar XSD.Double PX_METEO_WATER_TEMPERATURE := 10.9; + modulepar XSD.Double PX_METEO_WAVE_DIRECTION; + modulepar XSD.Double PX_METEO_WAVE_HEIGHT; + modulepar http_www_cise_eu_datamodel_v1_entity_location.WeatherConditionType PX_METEO_WEATHER_CONDITION + := hUM; + modulepar XSD.Double PX_METEO_windCurrentDirection; + modulepar XSD.Double PX_METEO_windCurrentSpeed; + } + + group risk { + + modulepar XSD.String PX_RISK_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar RiskLevelType PX_RISK_LEVEL := medium; + + modulepar RiskProbabilityType PX_RISK_PROBABILITY := probable; + + modulepar RiskSeverityType PX_RISK_SEVERITY := negligible; + + modulepar http_www_cise_eu_datamodel_v1_entity_risk.RiskType PX_RISK_TYPE + := illegalFishing; + } + + group cargo { + + modulepar XSD.String PX_CARGO_NAME := "CargoName"; + + modulepar XSD.String PX_CARGO_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar XSD.String PX_CARGO_POS_LATITUDE := "81.0"; + + modulepar XSD.String PX_CARGO_POS_LONGITUDE := "171.0"; + + modulepar CargoType PX_CARGO_TYPE := largeFreightContainers; + + } + + group metatdata { + + modulepar XSD.String PX_METADATA_ABSTRACT := "Metatdata abstract"; + + modulepar XSD.String PX_METADATA_COMMENTS := "Metatdata comments"; + + modulepar XSD.String PX_METADATA_DESCRIPTION := "Metatdata description"; + + modulepar XSD.String PX_METADATA_DESIGNATION := "Metatdata designation"; + + modulepar FileMediaType PX_METADATA_FILE_MEDIA_TYPE := x_worldx_3dmf; + + modulepar XSD.AnyURI PX_METADATA_FILE_SCHEMA := ""; + + modulepar XSD.AnyURI PX_METADATA_FILE_URI := ""; + + modulepar InformationReliabilityLevelType PX_METADATA_INFORMATION_RELIABILITY_LEVEL + := nonSpecified; + + modulepar InformationSecurityClassificationType PX_METADATA_INFORMATION_SECURITY_CLASSIFICATION + := nonClassified; + + modulepar http_www_cise_eu_datamodel_v1_entity_metadata.InformationSensitivityDegreeType PX_METADATA_INFORMATIONSENSITIVITYDEGREE + := nonSpecified; + + modulepar XSD.String PX_METADATA_LANGUAGE := "UK"; + + } + + group event { + + modulepar XSD.String PX_EVENT_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + } + + group pollution_incident { + + modulepar XSD.String PX_POLLUTION_INCIDENT_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar NatureType PX_POLLUTION_INCIDENT_NATURE_TYPE := observed; + + modulepar CertaintyType PX_POLLUTION_INCIDENT_CERTAINTY := likely; + + modulepar XSD.Int PX_POLLUTION_INCIDENT_DEATHS_ON_BOARD := 0; + + modulepar XSD.Boolean PX_POLLUTION_INCIDENT_DISEASES_ON_BOARD := false; + + modulepar XSD.Boolean PX_POLLUTION_INCIDENT_INFECTION_ON_BOARD := true; + + modulepar XSD.Int PX_POLLUTION_INCIDENT_NUMBER_OF_IILL_PERSONS := 10; + + modulepar UrgencyType PX_POLLUTION_INCIDENT_RESPONSE_URGENCY := immediate; + + modulepar http_www_cise_eu_datamodel_v1_entity_incident.SeverityType PX_POLLUTION_INCIDENT_SEVERITY + := severe; + + modulepar XSD.Boolean PX_POLLUTION_INCIDENT_SICKANIMAL_ON_BOARD := false; + + modulepar MaritimeSafetyIncidentType PX_POLLUTION_INCIDENT_MARITIME_SAFETY_INCIDENT_TYPE := flooding; + + modulepar XSD.String PX_POLLUTION_INCIDENT_AREA_COVER_PERCENTAGE := "80"; + + modulepar XSD.String PX_POLLUTION_INCIDENT_CHARACTERISTICS := ""; + + modulepar XSD.Int PX_POLLUTION_INCIDENT_DRIFT_COURSE := 0; + + modulepar XSD.Double PX_POLLUTION_INCIDENT_drift_Speed := 0.0; + + modulepar PollutionType PX_POLLUTION_INCIDENT_POLLUTION_TYPE := oTH; + + modulepar XSD.Double PX_POLLUTION_INCIDENT_QUANTITY := 10.0; + + } + + group movement { + + modulepar XSD.String PX_MOVEMENT_UUID := "787aa3e9b91b-5bc2-0cf5-80a8-183a716b8d59"; + + modulepar NatureType PX_MOVEMENT_NATURE_TYPE := estimated; + + modulepar CertaintyType PX_MOVEMENT_CERTAINTY := likely; + + modulepar MovementType PX_MOVEMENT_TYPE := voyage; + + modulepar XSD.String PX_MOVEMENT_PURPOSE := "Manoevre"; + + modulepar XSD.String PX_MOVEMENT_VOYAGE_NUMBER := "150"; + + } + + group upper_tester { + + modulepar charstring PX_UT_VESSEL_TYPE := "Organization"; + + modulepar charstring PX_UT_VESSEL_IDINTIFICATION_NUMBER := "inovaworks"; + + modulepar charstring PX_UT_VESSEL_IDINTIFIER_UUID := "com.inovaworks"; + + modulepar charstring PX_UT_ACTION_TYPE := "Organization"; + + modulepar charstring PX_UT_ACTION_IDINTIFICATION_NUMBER := "inovaworks"; + + modulepar charstring PX_UT_ACTION_IDINTIFIER_UUID := "com.inovaworks"; + + modulepar charstring PX_UT_ANOMALY_TYPE := "Organization"; + + modulepar charstring PX_UT_ANOMALY_IDINTIFICATION_NUMBER := "inovaworks"; + + modulepar charstring PX_UT_ANOMALY_IDINTIFIER_UUID := "com.inovaworks"; + + modulepar float PX_MESSAGE_PROCESSING_INTERVAL := 2.0; + + modulepar InformationSecurityLevelType PX_INFORMATION_SECURITY_LEVEL := nonClassified; + + modulepar InformationSensitivityType PX_INFORMATION_SENSITIVITY := green; + + modulepar boolean PX_IS_PERSONAL_DATA := false; + + modulepar PurposeType PX_PURPOSE := nonSpecified; + } + + /*modulepar XSD.String PX_CISE_VESSEL_DOCUMENT_PDF := "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo/v8AdwBrAGgAdABtAGwAdABvAHAAZABmACAAMAAuADEAMgAuADQpCi9Qcm9kdWNlciAo/v8AUQB0ACAANQAuADkALgA1KQovQ3JlYXRpb25EYXRlIChEOjIwMTkxMjAyMTkwMzE4KzAxJzAwJykKPj4KZW5kb2JqCjIgMCBvYmoKPDwKL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9UeXBlIC9FeHRHU3RhdGUKL1NBIHRydWUKL1NNIDAuMDIKL2NhIDEuMAovQ0EgMS4wCi9BSVMgZmFsc2UKL1NNYXNrIC9Ob25lPj4KZW5kb2JqCjUgMCBvYmoKWy9QYXR0ZXJuIC9EZXZpY2VSR0JdCmVuZG9iago2IDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMyAwIFIKL0NvbnRlbnRzIDEwIDAgUgovUmVzb3VyY2VzIDEyIDAgUgovQW5ub3RzIDEzIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUgODQyXQo+PgplbmRvYmoKMTIgMCBvYmoKPDwKL0NvbG9yU3BhY2UgPDwKL1BDU3AgNSAwIFIKL0NTcCAvRGV2aWNlUkdCCi9DU3BnIC9EZXZpY2VHcmF5Cj4+Ci9FeHRHU3RhdGUgPDwKL0dTYSA0IDAgUgo+PgovUGF0dGVybiA8PAo+PgovRm9udCA8PAovRjcgNyAwIFIKL0Y4IDggMCBSCi9GOSA5IDAgUgo+PgovWE9iamVjdCA8PAo+Pgo+PgplbmRvYmoKMTMgMCBvYmoKWyBdCmVuZG9iagoxMCAwIG9iago8PAovTGVuZ3RoIDExIDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJztXUuP5LYRvutX6GzAWpEUJREIDOw8NkCABFjsAD4EOQRjO4aRNbLxIX8/Uks9rdfHbn5botS97QHcK1Eii8V6sapYevfnT/9M//VH+u7x03/S1/738VOSZ5XNu//S9u/74Q2Xp5XV6evn5Ev6JfmYfGz+3/5+SY7ddC/98fp78q4bIOnufHr8W6LS/zX/+kuq0782v7+lf/9HnqY/9d20D31OrDVZO5JSzeW/h5d1XWVWqzzXzf18etk+/Gvy43fp7w0seVY392tXNKAeRp9cN+B/Fbin2arD3/D1i0Zvf0rXvKpyl/735+SXFgdygOcN4PoA+BvQvgV6eEnefahSo9OXX1LVLXr38/I5qdPvbZW+/JT+qV2GH9KX3xLdrIkzLVG0j3Qt+tBSZ7XLSz1qMd07KjPF5J0CtliitxK+Ux1anl8aFH8tjlQJcKTyeowkpTJblHUD4xRJRdaBPp+WyrOyUuN3Cthiid5K+I4YkmqApMq9Uc0cW0sQddgyRzTO5lefbuBOCkgVmMaY3jD1naPLpQniqdfTqWOQHIHZ96LoCgAWYwm/80Bg9pGYBkYkRhfubUa8GCSM8ydR4pUd5/nQYjOj9KQFz3RGKfhRTLwfLu8EQq/yTnaaI/iX9DZb0tkNiHulYK8B4wWwIMHhCust3BukAg+GY7Eg7E0ZYjUwLRXIElBQd6sS6W61uoZuzZjWCOyGq6ERgRkcLwazgAG0CwW+wgPHXbclRGIIYG9Y/FF8tbKNdSMamsC5ImiVsuVE0SUr/zzLD3vzQICxM1P8jIGLpRozQUISeqaOIYDjeJQ2w8l7FpYPCALPKmDDliH0WKb1ba72yiaNLY/DPULiwovBbFkZdYTtZcaCwb4hordv2EpQT0sUChzDxqaqdtkB0taX3V67hlOMqm2RGpOVtmz+pZu7+viUGV29JiZvPZuqsNXwvnbDntqr0zivyeG6zrSqm/fSYQ91ORzndNWMM4Bm8JQd9WTH4/yaPHy3Ep8WLaO6EpJVJB/JDpTZbfkfPGbw5Va2xzOBoRdVe4z97VlJxiUca2+AxxGR9YwtHQAS46V5nnTiWTi8PNfN0Ntbtng+oj4lz2rIBlICQh+YqLBX68PahnOrkLXG02Gc/LIYFlUKOkeqWitEMRrHvLE0wPs0PFOMUUw6mAcDxDgRoNQiIvkKZKZniwVxrwti8xXgBcdMybCrrC0iGnPeDvnbyz3ZED3j+IhlcMpaGAFefSwOMEgEujymDUNmeOoYatwbbmFcp8xenI86r20XFcX5tZWNJF+BQowWniOiSpT4mcn+gCQVxjcsyj0YS2oWLds+ULiflKFYTihZhyYmN8xgxEw99OCWBC/2k+tSjfzkujQLfnJdFgP/9eBq5Ccf3Ndu2NPhSo385LrMF/zk2tbDcU5XIz/58Ck76smOx1nZT67Len98c6tKbeVU42n3unt0KZaNYcRUEMt7gqHGEMjmQUwROddyeBGmHOEBgEl9wwNjN2VA2ETCtJl7bQigPVTAxHGhtqO8NYysIfTgnA6JeLvu1LnLqkb1jKex//zUoGinKNtKcsLaO0inz4Mm6wOYYRqLGOYsC+PK2NzrH21/E4D8r9l1njeORM7qSLj4tw8syiwXdkYEYInJyZJNBYzFCIwRy9hc+J0AlmCQwnjNRZiScf7LetIYfRVLoezQt1bEMDSMekt+3d7YI/YUsnnauoKkg4NBTOoXw+vrOKK/xiQg/ArYCvPITCbBWTaPh5npNG3sVrRerA0JIw0YvrqqjQ+hp3QtpUiqVBfgEIU5+Zz7c6HVnPPcG092E5siSRXZ1KHRq9Kllg7l5VHBzJDkMqNrtUQfSxB0kr+tG9K9dMk7TxC2bmmrzNXTd1ZPzGsWo1D2uPaRPEX3whdCkY0Qxy4j7CJZ9J5pMPsQ2d6IHb/uhYA+Np1mCg8X6vew5QGOg1NGGZcX9gEEGCeMOmQMGll+lQhAXuB9DmBKJvawvXuMsOk0nimTbcBYlRJOHCb3SOZ0OkOqTLZGAPGKnk44a8WubB4Zd3bCwoE0JlWRQSwTe40VS5lRG+OhhgvmmaDohjX0wG9R6azH6+fuumg2EoUZJzIVlT0+ZUZXo0SmwX3thj0drvTpncO1ynKTl+NEpqJ0w3FOV6NEpuFTdtSTHY+zciJTUR0ZVT9dbt3PxClj7z3D9ccUKLa18+yzrVETq2G+z+65c2Ff2jOWqlGxyKXdNNzL4nE8veG9Od7p4302Hkch7PTybumdvixmOSWd4R084vxt7KGIUdfCVkeXzPau/euqV4Xt5IDuRZ3JnogS4wyVjXYxpmes0/eE7scSHps9Jr+cuhhzJCADUWJLTB2Fk7WlGdNMtAyl8C6McdbFOpa11W5Z1htJ+RyZssLnk2NvTL4Kb1+ZkL1o8b31qyM05leZ6/OoYKpaiOSp31gC5d3BsrD8TJUTKm+C8TgHlIjCa0vkQMhWl5alYhwxwlEmvIPDJUtCIh7MBJmCNTEcv1V+vtIj43uU1Vs7smNuTEvc6tZrHpZkDo5tlWUckvKwl2LWAnLKpcosySmjq37YocDqx62yyi2nxCy1rH5UyViV9elSc1j3pF5CwlIBJX0wwzP1HWLFqGVNvM1rhNwz2VbPZFuu3kB+Ic0h68yq8Yo2FFrlZpSMOYhkTD4w52mxPf/2EafZui20nOIVXcRp0FKhll5OlAtyAo+jENTHoNdCC5wPNdMaQu0gDjB2mHcw1JJkBzcF06rSQV+06ckBC5+yLQJSLRHKkkLBZevwh/k6QllI8cW99Yu+NB8Fe8PzcWeszaDePBA8wBaIg37jvO6+si6Orj6cb035x2Pl195163a6NZbjP1Z0zGP2Me46BqNMkAWzwGxzTaQ9y7m3PJrMqbczON+OJntE7+D5KLiACteU+TY0mSvNXZPdNdm+NRn1JYizzu7r1Fs7qKwWi+WuKbwZJZylchP9nKfIkRHm4PNt0MXaUZCATC7R8q5UBJSplc5/C2VP9Yx3EOhnik5CHFAlE26do4VzJXeYRLY5H93N8PWXRbZgmWyC9LnjGGvbX9adJ6oAvR6Qf7PjT6KGWI9YdGFvJZEYEGICzBiaSAbdb+LKPo2RHaaFbC8qN9tqyZ5e2KqELnOw0GMwyX7sjP/M99oqzb0dub6XjtqlDRegWgIKixB5ypTrceXcve29UQGqbM9nSWJ9oBlzAHP4kTklttnnBZkjKpEqA8nmCkT7pvKeY1axzCBit8IICOo7xaJbUywkqRMaIm6vCP4IdGygPXFqijFfLZ0JONey5skGlZkOmSNYLYSohC0GtlSwpYYt+ASFI2B7D1seiN4eCRw8Eb1hHDzDFnwm5QNq6XXBUgvszdMCe8MQ4JkqBgcYo3C1GajV6gJE13kv60bcWcYQXPZi8bS94DrByggugjFkhZCCeFRwPgqOo7C4xe8wghiLAIwdLIj5w3RhuMYQYGqWpRC82lg8Yapi6A0LyLvSuyu9S5SelPnFyAOMUcxzGKPYAMT8A6WlZ+Uw3vD6EHTgkb2YdjBGMcVD3u7rmK9snpRvJ8T2b56cYCXME49qxi13MX4X4xvvXdozeNX1OD8GsDJ7CDwLvKCyFi+GDWoEhYk6hgx3zl4NeQxgvTXyEJW6HhNsUOCv+Uu/eBfmtKKgjPvH9GPyf29SPy5lbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjI3NjIKZW5kb2JqCjE0IDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMyAwIFIKL0NvbnRlbnRzIDE2IDAgUgovUmVzb3VyY2VzIDE4IDAgUgovQW5ub3RzIDE5IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUgODQyXQo+PgplbmRvYmoKMTggMCBvYmoKPDwKL0NvbG9yU3BhY2UgPDwKL1BDU3AgNSAwIFIKL0NTcCAvRGV2aWNlUkdCCi9DU3BnIC9EZXZpY2VHcmF5Cj4+Ci9FeHRHU3RhdGUgPDwKL0dTYSA0IDAgUgo+PgovUGF0dGVybiA8PAo+PgovRm9udCA8PAovRjggOCAwIFIKL0Y5IDkgMCBSCi9GNyA3IDAgUgovRjE1IDE1IDAgUgo+PgovWE9iamVjdCA8PAo+Pgo+PgplbmRvYmoKMTkgMCBvYmoKWyBdCmVuZG9iagoxNiAwIG9iago8PAovTGVuZ3RoIDE3IDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJztXUuPpMgRvtev4LzSMvkgE1KyLG1191iyZEujaWkPlg/WrNerlWfl8R78903xqCKBL4HoSAqqmZamGxLyEe+IjEg+/OnzP5J//Z58ePr8n+RL8/vp80mkuRH1v+Ty8333hhNJblTy5evpW/Lt9On0qfz/26nton7h9y+/nT7UnZ/qO5+f/nqSyf/Kv/6cqOQv5e9fk7/9XSTJT00Xl4e+nozR6WUUKcvLf3cviyJPjZJCqPK+6F9eHv7l9ON3yW/lXERalPcLl5XTrEb3rr/vvFou4k0Tv61bVj/d1xfOQyRSCpdYJ+s//vvP088X0MRYjyjXo6r1XNcSwuD59fThY5FIm7z+nMiaIupfr19PRfm3VEXy+lPyhxJT+R+T119POjWZLS40c3mobvmhainSwgmrvJaibrndyOCjrmrJ0kzXBHlreYLvPMMWCXtTcBmG0BuctdSwN7yeepyX15I23oZSl0g9hlIpSoKSphzWw62sB87T3PWAIhVsOaMWvmUgypS6SHOhZW8ZATxhSsH08FK1mPQyzlyKHBA8JmvMNXBg+bHXvcTdQ1joukWK1ObysuQZU5J4shjmC5ifwnq63z3GyhTHrcXZY+NgZGOYY3DhFoLca8TCsvUQ1ERgnAGS8cBn2H2fa0hYH3Ri1wG1fOaSpnlAzyuR+SAfEw+YVOvZuzS3pjf7DLU0sBgDdTEheG2qqpnNmkFDkDJrX5oxg8BKX+A4boIpx1b6BOGWQ3qAdCehkmtEydisKRA9w5ZnuJ5zbJugomLTjqcsnCNFlQ3EEEWtY4GBB8YqE77TsJyUrfy5tWBCtIjpG0IcEwd4BrA3LBqlqN/RLc/NgQ6GKMV2G0h4LMcphtKAhqCmXKKwFlAmpiUMrX16ZdAUCMCgb62qPmQDVgqGH4VQ8IoJkNWY4xaQKsHNCBiCEAkkoPQRF7DPH8aPz1zWDOtpPQH9+Ea4LfLwRXSdbZRNRV7I8WXM8ikxg0GFElA1FA8VW12O0XJ3yObRKvdJtVxXHRsZU8i1MTSnpWGJsZaPhBbbiEhV9GH+fDVXnB4TUCMtDTbGentp7FlkuY/1hleKx5EI1o0qG3unwY8amkUZbMEzwL1hWOdrWOE6l5MGJ0mjYCNhQZgA24wL9OHgBp4atkWwgmSNV5EcHoo9RrEVseU031Kj0JIyyEkKLJ1iJNw9wPiO3EEKRFlN90AUj0IhFOd/gRCjcOWGJUZjyC4D5ECWwIEpWy3MUagFy5i/rhnK7ZBhb5Fhsa0tZ6Z1GoY5Nk/eL6sf0ZQ3RlMIiitAiAQVHWCFyGqQNYIQkEc4GEnRLLzOw1pagZBBEQi6P09wZcRwni7yVFfjegK9AdeicF6gBSbsKAHfeVreQkomKmALnFtgHAi3QLCTEDrFcFOwNwVnQHmnwULMEK0p+atiCJ802WKbIdsm0+14uol2mVT0o4QUmbKVVL9ZO3oEJzkgGgmGBG8SG0l54qgdbsErxQYsS8IqYd+YRJEs8dBHyz8jhO+YMwww3BZkGGCbcIEnT+E0zDWD7nljGKz2MUn243Eomwa8XjIhkk3SS5TEGda0a+zbB7x+3vVM4Se21WMcVEe8+SS8OzaYSXgzj+aLOZVD5Xb/iOIZzSAgUyJrBVZrbgMgfoLvYEBSbFBe+5gj5515C3kBdbFmDCqcCr6HuhNek4bXAaXUPWFOw9u1b9l4wqFt7BmwCEICQ68UEXGtbYD3FpmjrNjqogQZCOVBpFwNXqfy0bwJFk+R11XA4wy8ZvwohhIl7MWaujVexwXqz7VJpNEqreK9ydfmOkvLLq1ItE5Lni9Mpi53TfOU9q6+nLS47CmU3kTeva9ct6f6Sl3fqa9liVJZuMTrQbnuONercpzubG5PGa8n44/zy+n8XSQpmV3EpNGtmNTYCoUWJbZCA0L3jttHzqWmZkJv6cf20bF9FH4ngAWMU1z3TxhHYFg7AqwxTjEdwPVMzmCBLDfWl+WmGJPlxpOxxo3L8uv9Slpfe6qvrC/LjRmT5UZ74+hxWX57yng9GX+c6LLc6km5rBsTUbXi94ZEGANohMZYyx1luRSlzlRNSUxn6YcsP2T51mU5BduUub0LbcIdObCilSVYWAZ8SZZi5bVSKHh3bSnR3fkbNwFfkqMMMhAIwYEdvDmHCxwoke4t15DvKt0HkygvK+DeKBuGlAwajvAuhfKZq/VYUncePWS2WsIyy0lvlK2WAZ4oAfo97r2sUxtvs2ssrKlMz9K8LoruI5+rYry1TTVQxGNV2ZSq+SZ4aVtYzxgncAqAhCvF48CWW2B1sB5c63+GM/i4inXslO9hLUoNiF1pE2ObK2IMo7geJ+ZBNuBpYW9Tx8a+FC61VVL52GTvWTpOyfXizXGl7P1hJqHoKd4MtQW2FeXA2EH3lNx0DL+BscBiKhJ8I5IHhFdMOReP19fjcKeXpEfz2sK8cgIfL0noje/w0pDydvlVefMmxSxI9XqMI6uWiJTIaXasqY08x2KwJu2RHNUFNuN8z3Vw0uEGomJHJdjbgoiUU0Axbhdwz/0rf1YKDZF8voOxdsZYU3ZmbMvG2WlWIBzuQjnCihSBZC1l4QwaqgzAXIms9z0RmQ/tsaYlS8ER6CMt18QGV2S9EFfNYLZNRBngaWycM2xpD5XXqhfqbANzujlsYiDmls1tCgZxeUOJ62EEGh/OhGmJktbOm/HM4nXiFpaP1KyVYM+rtHd5an4AlbwFgSvV/wWwsOHqO5XB3u5uvN2fRlc7ypMi1iiOe9yasNUqN7ec5cGSOfZ+E55WqStU8nrSUpS6wphnp7nWaPWWEUgjxpuNL/CdHL4T/QSuvEjbQbsLZN672sHHDmOb0pSYGWUfikPnBDahWT7VuE/xuuFI0mo5h4NMq4V1p0paV6dv1LVKSubicgKgX6tU3lXNU9q78mqVOveV6/ZUXV3HqWqVyus8NbZXq1Tetd1xrlderVL3KeP1ZPxxGGqV4Cd5KjWa98QzJdllrCWDLbhMAhYcTH7yZ1n5Am7BBUi4IISt6E5Jp31Cvnw0aUjIziMwZ8cJ+Xq/ItVrT/WV9gnZyTFCdsIbR4wT8u0p4/Vk/HGiE/L1nInVDCnKl6YxWzwvZzIZPzHu8rlqO2P2Uy0x7WnZ5q76kzVwSnY5/wfKvjAZYImKZ/ADgRBhb1E+k85UYkfRKgrrG0IJpCAICkkpXoXM8Qb8RGZ6Vaj9MH1nshSmx8tYiawDcyOQ9RrfRwyRTq6y/ZBOZ7IE0sGmBpYtAWTjgmjcG6EonFRaTCFrzD4EQ4zECpQCfEIRNclvoMAAQxT7QYRZS7YihqCgyHZkWHYmu30dExtxpk3yUXhdMc4iiPmBYnuLyncXiLmHorRZjQMJSUdBElWwt0AL9DwU1EsqOsIqQsy3Uao1T4LcJksgHUo4S0IyIAXHCG5mQP1BosJzC5hBMHoSiAZRYI0xh6M0WITgqBPveS2E9SgYiOA1xHiDsQGI4hOkcMBjXb9sWcv9YYA5C+JUYRcHww1T/FrQYUsPhdZHbtKiPRCzoyii27iVFi3a/OHDoihENk349Ja4aSV1vrPwl7GutI64wLxIZZPDFx1P8Vvur0QpuxNTEQMuY4rVgwqoFtZYT0DBU2BAiQ9hE53ixxIUPCkWh8ehUBUl8ko5jhO7KYTYYgBzFA5mNX8CcMO9YcePwKcBM5gQmw/wKY7CsLp3ARpdxeIrVFR9t5qVc1sGZkZMVC+xJ2tVaurTu+LDfJsth5VzWDlrWjk4qEiYdUDDs+YwToqoLWoQbadxuwMNclvGzjItcpG2ednRsbE3DUIJtB56Ytt6gm7gLWtZy3Ni1XuBsDrB6xZYix56z8zYxN2B3rstg2D+PE5M2em2ajQ+brnk3VbQcujKQ1ceuvLQlVhX2mIatzvQlbdl3D3jAZcHPY5OlipLXfV50Lk0dH+9d3iP29aIx17qsZdKpFGK5qVgYTVraiW5Q/pQIk71o6QYEz7MGaWSJ7adVew8F+oxWyqsd9CaZtopaWxhy79L6yZzJV9ZD9X4qTl0M2OAipakQZaXVmll9QqfqqZ4r7/SHgFHMhOzojkVdowFYtqnxqYyu1R1+AOv6xzEXKAzaXPw4UzhQvlmMcUgolQrYJVCMTEJoS8F1TdzS/Qsda3y5hhNnzBWiSY4EV9aRwJbN5rQWcaWowmbzKe6fPlMm+bLZ9Ho4YgmHNGENaMJR87S4bFvgrcPj30tj93Jh83X2nPLzj32DlVt32MfsMBaHntn4Mf02GcJl8Njf38ee4cw1vHY9UPkynWWwesa4nemXMOYiDO3w/tjYzC6xx6wj6EoURvObgvYx3jWlIOD8DvYu6PAbSsMtUlsH7GWbR9DxJs3wRyjuvsBRRToxDeITJE1+s1Xbx2DqPxJvgVHuE0NHOb/Kfl0+j+HDK9yZW5kc3RyZWFtCmVuZG9iagoxNyAwIG9iagozMzI0CmVuZG9iagoyMCAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDMgMCBSCi9Db250ZW50cyAyMiAwIFIKL1Jlc291cmNlcyAyNCAwIFIKL0Fubm90cyAyNSAwIFIKL01lZGlhQm94IFswIDAgNTk1IDg0Ml0KPj4KZW5kb2JqCjI0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDw8Ci9QQ1NwIDUgMCBSCi9DU3AgL0RldmljZVJHQgovQ1NwZyAvRGV2aWNlR3JheQo+PgovRXh0R1N0YXRlIDw8Ci9HU2EgNCAwIFIKPj4KL1BhdHRlcm4gPDwKPj4KL0ZvbnQgPDwKL0Y3IDcgMCBSCi9GOCA4IDAgUgovRjkgOSAwIFIKL0YyMSAyMSAwIFIKPj4KL1hPYmplY3QgPDwKPj4KPj4KZW5kb2JqCjI1IDAgb2JqClsgXQplbmRvYmoKMjIgMCBvYmoKPDwKL0xlbmd0aCAyMyAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7V1br9u4EX73r9DzAlFEUtQFKArkXFKgwBYIEqAPRR+KbLeLRbNoug/9+5UtWbYsfbT5eUhJPsoBco4s8zYznDuH7//0+R/Jv35P3j9//k/ytfv9/HmXpaXN2n/J/ufd+Qd1lpRWJ1+/7b4n33efdp+a/7/vjl20DX7/+tvufdv5rv3k8/Nfdir5X/PXnxOd/Nj8/jX529+zJPmp62L/pW87a026H0Wp5vHf549VVaZWqyzTzefZ5eP+y7/s/vpD8lszlyytms+rOm+meRh98PxOlaVNs1w3a2kWcdfET+tWh5/z5p7zyBKtVZUUddOPyurkv//c/bwHTYj1ZM169GE9/VpcGHz6snv/sUxUnXz5OVEtRbS/vnzbVck7rfPmz5+SPzSY+vjH5MuvO5WlttC2pZ/uTXF4Y1NdqYs3ZdumSKs627fq3+gMtVF520altjZ72jz19nx4U6am7eysjUJtHL3VcD1wnOz18KZITTvpm2CAx2kh+vqlIYX7MFglqoAYrPIjzNs51mlZ2Av4mcOb6oimsznqwxuT2ryohvDr2pw+aJGQp7kph8BRGr1xdF/CN89wsnAGIsvoMDm1QAw/YrKq3RvKHMns1CYn8GQJcFWXQPkAO4HdM1jvNvJUb3gGr93WG29KDC6ISgcgCRgsek8w5MxAFM8A94ZXit9A/GjbC4G2kezudxDGw++wWHTHjFMQVEzwEge7xrPGxITb4Ll5UDGDSrzlGHaAx3mRJCZqV/KkGViLM1l1nawxbjEsGPh58C5MOlgy4t5GdC5LS09wi39cnJLo2HqYQPAbjCesjYzIYHZ1S+eEEhILYbgNVh8xFWNUYrgxNgKj1snyZI9NzwBydsKg9IcRUEYfYH0FaoA+48XCPuYpq0T2GJCEpu5YOsGC79D7Qys9Rl9HKaNjM24ULCEvUarqKMApj8DBfj3hHRfLKJ99l555jS/mpixs02JBZWlRqmGbEr1xzAD25mAYWJA8uqxehQxdvhG7tk3yBFkIhhshSRZtVuB9JAoDSmDAcRz7lTFSPKI7eKvJhhEYpYpBMkYY4xsRVPNDqz91cRxv5IdgfJyynkxms8RyZDO+mBGI8VeZycq6H0ZEjKeEMXj7iqlInofvjNC6PfyVjtnLsjAMCywpCexTSQ6b3N3k7k2sxEFDcGCHfwVvbcaFxbCQEZ4Yg0M2IjXiXZjKZPdTJI3d4PVgDI6AQugR+nbrXEVJTcs1wy8ipSnMn6BDORkYS0GWA88e36fgJrv5CVnj8IcyqhOe9ewMcLNnVmrPjM0KQml0JKC9nITOHbn7xiY6tyY9uBGTb91zQzmlLbLEmLQxDCqb6/2nRfctM3j6ujNZanKjcluef67r857aJ9O3aZ91mhWqqpNhD9lgnOw0zmA2/bfsoCc7HOeX3dMPgYRyfpDKxSoYwlXvvYOhMirE/MlpGBajzT364J4oyOwCQ7/crv1KKMoGxyKuacw3uVxwbC+E1nuhxLu4ZlkOuWZZT3HNasDNqmyaa/afH/hi31P7VA65ZllMcc0yPx+nf7rgmqdv2UFPdjhOcK7ZH7NZQAYgk83nwWkfLJDpbxffBAtGqGH0yLpcsYI6khzYySzr52Tkq+yhp02aPZQ0s5kaSDObmQlpZrNzKXN6Gkqz0+d7eXXqqX1SA2nWTHtKmtXVuTTrny6k2elbdtCTHY4TWprZ03GDzQbYbIAlcM1NSG9CehPSqxTS0nEjmx+lU6xo/13cZ4ttrT2yDg8GyiwdLwMP7EFUTPiIOTA6e+BvfrFB1YiQ1ZYZRiGSts+EtpavGwiIsjpRZtLSKnSaHdA0kGmq1e7KtKynI3MTbzqsT7UpQ0vkvDapbpWK82U48ITZAaNae8Q8RQXvSNDLnfsqXcpPrYcQnjqAoZBa1MF+SmGqIISLK2Jiapwn+KbFV9HRzJhU/ZganhsBgwwfXMmJ9cAZOHqrr3CqiXEY6DjGEUv9QlRc1mnVTqgh58LURx1bIRvFQRgMMXWmVn5sdAtQrqWf4LkFBGTebP38AMohIDXiC1exPqVkX8s2maJIvCsx5YfY4wHFnlJ7oNcK6lDEOU3KoImUJe1IxieOo189sBkQc9pkaTufPQaL8rht5iqPGAR+Uj46j2Uwap1HbhuxA8a+GFkbVbQi4Bs6txvpcLsj+oPhhl0usmasaAU4h0PPI2KEfZqEbY+JifEUUCUpTVxJctIFmLNhBHU59gQT1/Iwlx+NJeKUZ2Y9HoCUrTYrmo7NINnBh2ZH8lYxb5Gc3QcoDAsRjd1I1qaMJZdKZa+jh5FLa9D3Cd2QsvYuiZg6fzUKDN4TSsbKnGiZqM02ISEqYnLLqoYipacZvUVWDDJHz4KX7Du4C0vbs2Im+0ok5h8LC7LKyAqLXkeT77k5yrRYtU9WiI2tBPkmrAOoP1uVzIepNL3Iux+GnL6PVW3qg5f6QJW4xjn1jM/kGXKqWFWVZQWVR9I7czhBhD8w1USw2fxCYB3KJ9PhSR8b3UApXYaWl4SMVT/fYF0AynUMnU6RDW2OVaq+vuSNn4ry02iysrZDYgpvFW005AMu/QFxDMxLusw2v3EYRy/jCVtwycG3Y6lRVdQYDWx51t0KDJiTwN1M0UVXN5Y1mCiPhESQ7w3dkkacOX471sn8sF6bfTRk232E4eEzHQOV3pAtNhIrzWsp/tXNDAtnyj98LE94gbLZE3hPhDtc6nSJ1eoetk1lncS6XRxc0/gocTLHFn+o89bRlJ7ymM7v8F0s8GahwJET2VJasvXrGZqV5T4YLR4n0d6OQrZC9hMst3hzOa/U5Xw1kzeaxOpDXtSpJSZa7pH2LsIa8cVmsZypImnb84tKxopl+LjIiScJlWadPJmR65TWuJRIlBTc1myixpIX9Sn9hcg0Y66f3CrLOlcq64/C4zDZgwxEV3kWfCsa4dzbgkUjBPicVoDRWZunRlfNkoeMrqsxZtOsNkOga2gtGEgQ0MbBheQcbeIG9eo+qOcw1Zi4FaMaMRQvcfv1om83iKXxi/gF77l+AAMnVrFhRlKJ0N+DuCzD7sVFeze96/5FY/Cn00KMquEREmcuIotFxLI66IO6smMFl3sHpc+uwcFR0YQLStchlN9VXiXhiJXHukpizUVGzwh/9opmK0CLkO625GJkq+QCPkW8GLnLaBiMavPWvJAB77CweZXWxxLkJzYX5A6LqTbB+bityrQddcjHNx0xiI5oGs646YirlA5UjvHS7vaMpBGek/mSXZDbBasOfrtdsLoUnhNcKJWb44I7SOHhXRZNpbiHmh0gYDydGAQLqVxvMquuU1msWtwhABmMzzI0y1iSTEYNY2cTRxHmjraGzCLIs8bmPFzRONwlJVAFIKxHjpEp6DCVyl8gybyGZiF5YbpciSFw1uwpeRS9aMlsbgElWq7ttGiCt7whYz9wxdnApU1l1ePZucECjrWs4HAqVSET18F4vX2ystndfDHIkC53k3eO8CEHgS73DLvcFXrTYdCrjWMcA998CA2uIcOt+0xQHG3Ay8BRDQgux5scjoPfrHLWjt4+wjexyJmZdR5ct27YoDZtWO2MaCO5u5Quhxt3c3fdOM6DubvWEzKIpbGfbQ2RhOot+HOJyS34szYnhyzVEUkSscTiKaFa9CpJBwP2SMH3uKKLz5aOxmZt7OrdCzDsY9Wr2O5B9RIKS9uDQv6W+apfzHZ1SODDcR6OWiY6uKarwRyTZQovYx4TWfsva4TsBd3VGquoMsYX4/5lok8iJ1cZmcBU4MWnEZj0XKJw+nx167Dqy9iJTFF3D/tGzJgok33dgTFLqRpOonU1UvtaMXw2E9WrpJfFCl7Qm85tWkCw2fRQFSEbI2GiN53BNjWadcesVXEE7aUiHZBZHyBb6simg8jhF+bA1tX7jG9J13FwEia0LqJJMUd3mKj4kiPpCySqJaeoyCYhbobwffYNpgcRaxprkQ+SRoP1vlXW1Fq1cy20vlIXGz+SdW2ZCpFbtIqegcvEerA5D88jTotkKgPE4pUblDZ1cglCzoGwEfAxzcrSOXHzzPyAXLW2sLLbSmUU5vkrW1/bAoGVOKMDW0mzX/kmnG8CL3/GW1znkixL1izzKdOBvxrYC88cv7pdbXDwv0jEu4aTEeO44VkEs/lJvjsZ0YmDqYaDZQcO9mPzu+din5JPu/8DIri8DWVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKMzE0NAplbmRvYmoKMjYgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgovQ29udGVudHMgMjggMCBSCi9SZXNvdXJjZXMgMzAgMCBSCi9Bbm5vdHMgMzEgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCj4+CmVuZG9iagozMCAwIG9iago8PAovQ29sb3JTcGFjZSA8PAovUENTcCA1IDAgUgovQ1NwIC9EZXZpY2VSR0IKL0NTcGcgL0RldmljZUdyYXkKPj4KL0V4dEdTdGF0ZSA8PAovR1NhIDQgMCBSCj4+Ci9QYXR0ZXJuIDw8Cj4+Ci9Gb250IDw8Ci9GOCA4IDAgUgovRjkgOSAwIFIKL0Y3IDcgMCBSCi9GMTUgMTUgMCBSCi9GMjcgMjcgMCBSCj4+Ci9YT2JqZWN0IDw8Cj4+Cj4+CmVuZG9iagozMSAwIG9iagpbIF0KZW5kb2JqCjI4IDAgb2JqCjw8Ci9MZW5ndGggMjkgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO1dW6/cthF+31+h5wKmedUFCALYx3GBAilg+AB9KPpQOE2LoA7q5qF/v7rtRZv9KOkTdaFWOUCOz3IlDofD+WaGw+HbP37+e/LP35K3L5//k3xpf798PkmROdn8l1Q/b24/KGSSOZ18+Xr6lnw7fTp9Kv//7XR+RfPAb19+Pb1tXn5qPvn88ueTSv5X/utPiU5+LH//kvz1bzJJfmpfUX3p68k5I6pelCr//Pftn3meCaeVlLr8XN7/WX35X6e//CH5taRFirz8PC9sSWbde+fvNzpNtXCpKcdSDmIS4ddxq/rn9vGRdMjEGJ0laVG+R8ki+e8/Tj9XrJljPLIcj67HcxmLbwbfv57efswTlSavPyeqkYjm1+vXU568Mdbq5PWn5Dspjfk+ef3lpJyQhalkpvpS3aKallzkhUz1bYvUdYsRzqZ55xmZwZYX+DZVt1hhTSOz15YCtXhoY/rBVL9Db1NqfIuHb454Gx4P04+Gb4M8kD/ULU4Ype/mRzZSZc5N12csfBucbc94MG1wpB6+5c0zQ4hlXv8+pNAyE6YYdn0gaMPTjykw98zH8gDXq/p4/xJMY1he4BmEi2RhxffDa4lN0yClSJR5BCnWdEGlVVqZyIr7CdKw5f34Fgnf1nJ93NssfGah8agC0oZbgs0uMhics6Jwlfh2JnmMHiXWmke/QTjwgDIBYutDlfoQam6zRBXIGExt3p24Um9nsmbH/YiVLO3WrkZXzTPpA/7BZ1pdlQkDOPvomYYXSgl3b6im8Bn8to+wxbXyoPM77FIZQdt71IL7wVRrA2cB09a2pGfxuj5jIdUEbS1Hw8gqdFzSwnT7e7Se0h7DQVmhVXd1agkRt+FSIbLUPUTc9Pyy3+mhB8943lb0IPuDfjy6C/MA94M56iB30h7H5dFIP8AWPB5Mdd/bZrR7KonMzLk/Ixfpz7puf49sghRaGC+oxUAbx0Abpw0ejKIAv81jzRH96HeQB9A2xBaggS3UM5A2DefHYxt+hM9ACdHBLAuvrKYLr41CTlgbxkE+YvnDMgvXE6bA47Xg8UDaPBKDKQg7njxoP9hvwv4Z5tsHgm94PFjjEj6qh6N4rQeVgyfCCcxRyDespamVheWAoA1HClofYdQqUVDiPRTYJXR9LqfYQViKMc89qwWvPUxbWHzA0sVIJF5HWAcTMkTxOk59itce5gGebYajOFLJcDRs5JWYbczRDcw2XvWYB4R145lTrLcxbUvJzjL4oCf5AmHxgZkNQptR3iOmGo8U29tBbWfPemXwLkpvhLJcCX/VI6OEVe3hGx4pseY88sZQfXhXgb2rwPGEsBYrv9saCAnDYvGEPe+5sdi4/lkn5hYjFKWDGbTp84JDyQOhfxQR4fJgPs6OIN7m8WAIjdEbixhHNRHrX2w8QdcP3oegIg1ErKh3FubWTOmkKBKxY0BF5bH+xvzD80ToOY91iJ8hEH59n8MT2yVs9MOiDG5RhvUJGanCnjnj4zJygFcWYfdQ+YiM9R525hZaWQyqMZ4sZddvJZY3TpNjzMJ8W8YayC/abJF8hbyYYn1ovKeAtQDhvzI7pNROObamsO7C42GoZiwWPHOE1asXkbtCyQly5/EaCOtAw1nH8m3SRbikp6xOikt4xBDTPFacW4RLdlmdWTjXq2MOZPbGn3bmTeI4V5RaJ48iInGsPW6HFmcLY7ljohhhvSPCklnfc3uemAiebY9cEz7CpuMoS8UDjniNTycu4afbsp8IMDJwBISRyKD5Jp6ddEbPEVnPS8UWPXxb1sMNRfVSmnYpXs/hJ4/jwfNk8xMz5+mH8Pw8ORbMrnvQ/OTN7GnMjbhqUizs8BaPSA1pW1AjDZvzh+UAW1HL2MHmWGHTVlhYG92TcYe9ekwBboHyrTGvcV4LkfHiWf0ER/FeSeDowfoezLL75aM0+pYzL7Fca0ibxh4Z8QxeJdRpL6IfJvecog1TEHPsa24svq91Mcr+0Zh6wi/yrDDi5CjlmTHxJWY8QfP8PVYHjhmG3QEJe44bIxRz1orJwllqfsLu0h27Zxzm45Ey64eJSTEYiWUHnzFnMsVwxI7RsHvboWIknjn9GfbcLp9lOLc9krl982+UzxHpmmBGyvh3UVqSONryRBJ/+GqEblTTakcRsSLP3lLQuCkVRWLsLGYfD48U21lMfXWGB8t6I3PLtx6wovcmqxgRsd3NxC8Yzzko8noiq8w6Cpq5t1gFg+O8/Tzn7UfJm8F86/Oc59aAkyqOHBowVg3I1KdkrF5PhDBoHlPUGnDuNe4OK2eI5HvkjtnvCOvZhtVM2DIi9i483CF0SdQr+QlsmTip3mntrbmRIz2swwM5DosyOhyaWy9Mqsey2LmypznXetRR92EKVUmHybZg+LbVuvBWT6p9s/4dURuokrRUtWcGW4izo3FWfPTU+g9aDYA6IRpl9ffFzs8SJ7TWv3so7E0V1DmisPlzDN/WzxwOuutNnYfhIwFzI/ulXltYu9ETx4jSzvJ4gM92M+q8t1VbnRbn/oLek9x6JaPufVbv0Ns8d18XiGp8k7aCd0XHf4v0RRSE1MbpwqpyuoVyaZ7q6l5mKWz1WZbarCMoQ77fL38jO+2tNGdMPkWnz5Hr3+VyNTRT6Hqo1ZC1s0X5jrTLW/itISt6QAc1H5UDjHRWZHktZ12OmkdSY6pJki7Py3/XkyeLvCIirXuVWX4nNf3fHyA14zqtR6szn9g42w9YTIgPP4ONeQwkTFEX/AxOZ8HPYNcAj5Q4Iu0xXJi0YTwezGvGEcT9MC4iU3SH2RLGc8oY8wyvmQNO2NUh+vE4QUTJY0/YDNOGJYTZLnqoqu1FO0rhWgWqK4yoPrOmVI9dVd3//QGqelyn/QCfDZDB9NHoYzdvtBGuqK3MDhuO/QSvX4g9LCaaj/tZ/0yReiD0MVibpa8ljK7sze7y3q8KK1k1UIUxLfFJgClE43DLLnfsHiXApqLI62jBI1HYGWZ1PcnrYJnqY30n7+KT+9yJ81g63Nml5ivMOQ41UAXOUl6sCY5ujjkVLFip54SF6VCyL210w25mx6gvPh+5Nrrhzv610e9W3t1gdR1eLNl7F228crw72P7vDxjsuE69g1VSiXYH4Haws1SZ25nKqBVzdg4OU5V4sHZhKun1VXqOT++kWrhGLXd4vU+9U8tT8awA3AlhXdnAHNdmNuRUrCGS7hK5is8ul0hWbe81e9zD1grOENcw9mZwTsbtDYObY06lP5wcHD/as/64smEpWJ6QABWfzslyobI6LNcVuV3qnHpZ6Vn9750txU7M9so6Q9i0vTdvBdq0Zu5WoG6hC3qvsmekuLI4k0dP5INTdXaY+u5BTyVSJy3wKbRY/S6dGSGLdiPiRvntUsHrXLYJkgM1/dMZldc0vwP9RqLfhXUY/ZiaBnHed+E5g4LzHcLWHGWi9gz2ELZOvGihpLi6Az05wdGjhcqFU65FiwGa8enQ4povfaDFSLS4sM6DFkxlOeasF5G1xmQIMuncDCrh2o2Uzc/fkRdqpEvdPYElhDlRupQnCVuiRVkjrdDnQP+Nkt0lyhqlhczaxM8hiGJgWMNz6TRsaZF5yyg7PNf9QNk7lM3udMGBsgfKjvckmTtjscEfKyppq0RzuLirlHaJStoWIpOmRaUBGvjpUGnJ4ws7Q6UL6459si3sk8Xpk+F7VT2WBj4qio8ME/FajKW4vuL6vMahOA93Vr8rLFp7wmRWWHeG2J2fezG5Fm3JlmHY+Wz2RDrvuZc92xNX1h32xBbsiSPvZrm8Gw/VQc/8b+AeP0JGMVSsP3MG1+pbfZVEa1NZp4Wt69Z1IXWXNpVNZVujb6D9MJ9Nta9CaNZcE71vzvNtldhrHh+T9oRdSOa6e6YyWtAKX1QFNlwzDbcQjq+n1hxTYwz3g6uP4TpemG9MhTzcT9CrvT0hGGy8b5jXCodgsDGFDT1sYjDPYOOQSJzw8LovSXTTyviaJhcBclyKGDPIoaEOxsfjPfJA4ANTYRAf6qfqFYalGmva1TUTFSLALdjqYArSMVeQYO4wadj4bTgkRWz5a2b94ItGwq7T1SvPeqwBZjUyiSRY72x45tb3ATzhJabK78v2oTe/3FMZFHoZtcbkvfYW3R01lRQob1mcsWji8RD1VploKUXB+mXNgwL5BkzK1ZW+xqt+/aLvB/Adwa+53J4tmwVWqlnMgsCWPnPtGFMEnfFTV/dCPOMhAHZ9nyawD80kAYaFg6DRHCaOSak1hgJGGTNGYJTgz+xreAx75s4ZrN8igdH9ZJTV6KuyWfTX016bdsvRmxSM8if55r1/sfmkoleV9Mqa3h/L3xeaPyWfTv8HSrdqeWVuZHN0cmVhbQplbmRvYmoKMjkgMCBvYmoKMzI2MwplbmRvYmoKMzIgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgovQ29udGVudHMgMzMgMCBSCi9SZXNvdXJjZXMgMzUgMCBSCi9Bbm5vdHMgMzYgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCj4+CmVuZG9iagozNSAwIG9iago8PAovQ29sb3JTcGFjZSA8PAovUENTcCA1IDAgUgovQ1NwIC9EZXZpY2VSR0IKL0NTcGcgL0RldmljZUdyYXkKPj4KL0V4dEdTdGF0ZSA8PAovR1NhIDQgMCBSCj4+Ci9QYXR0ZXJuIDw8Cj4+Ci9Gb250IDw8Ci9GNyA3IDAgUgovRjggOCAwIFIKL0Y5IDkgMCBSCi9GMTUgMTUgMCBSCi9GMjcgMjcgMCBSCj4+Ci9YT2JqZWN0IDw8Cj4+Cj4+CmVuZG9iagozNiAwIG9iagpbIF0KZW5kb2JqCjMzIDAgb2JqCjw8Ci9MZW5ndGggMzQgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO1dW6/buBF+96/Qc4EovOoCFAU2J0mBAlsgSIA+FH0ost0Wi2bRdB/69yvJsiX6+KPkz5Qs0ewBmj2HtkQOZ765cDjz9o+f/57987fs7cvn/2Rf+39fPh9EXlpx/F/W/rwZ/6EWWWlV9vXb4Xv2/fDp8Kn5/++H0yOOX/jt66+Ht8eHH45/+fzy54PM/tf8158ylf3Y/PtL9te/iSz7qX9E+6FvB2t13r5FyubXf49/raoyt0oKoZq/i8tf2w//6/CX32W/NnMRedX8vapNM83u7c7vb7S1IheVadbSLOKuiQ/rlt3P+Os3zkNkxugiK+rmOVLU2X//cfi5Jc0S6xHNelS3nvNafDv47svh7ccyk3X25edMHjni+M+Xb4cqe2NlWWVffsp+3+7UH7IvvxykzkuhpbLdh7oR2Y/I3Na65abziHgPRz4eR0RuC2WFmPM0absRm6tKut8RNXqagN/xzPodHPnQjRS5Pj5s9DQT8ml41p6VwvcoAWlQwKcVcAZw5/DcPDPA1CFmgHdBlnDWeE8hdeQHOGu8Py/dSJnrWnRDM6jjoaiGc8Mr7UeKvDpOYQ7dpjjxw5cGyO7DnyqTBcIfpeRpJi+ndRWlrMrR7MWRFtXwh6Nom9zo8kKwjgutThQQc77zoSfBazF9QU+TCj4Nfod5Tw8U10aqS6LAhygDJwuJouyZY0zh7IbUcErMMvC2vNr1mth1THP8tOPe6tPK5yyjVzY3LVD+AL9TEOSC66E2DM/aQMaw8DtnoL0U7QHMXgk9ngF8Gt45KU7Gjb6EuYdTVEA+8HAI5l7IO9TT5ounhyjMAksohO8JEr8LumGvkInhO4wyeOkMzhH8jTfs8dLi0bwMM+ER+DSsGu/QHEubWcZOUwkraWwHvR9mf55ebmoh60I0rmVrpJpS2Kpq/N1ctn8zWmrXuZ3x+Wma3PjSjmJ11vz1OsWMMaWLqGVe1pe7WlxbfWO7W1WbNg6SS1tUhSob6rcTbP5WNjO7WP3052es/raXelev9NlLGJOhh7JrZHh3+0jP9te+o+B3KjiC5/aReA8c6WH22ndeQj7N8576dupgGnjmBt8j5BWmbzlN16rjvJYDlT2K42UUC3xqDuTNeEHH1tICvm5sxVx3bq4r3jpaCCv0XAhjRvbHAbrOO4fhiGwDdUyMHGCKvK46I+kaK0Sms6zJy2MAy10sRv/3hM6qd8r3lc1Pa3GoEyXy1Toviy40OhMCe//kNuMBj7wb2fObI06nFsp6SbVwvyqJDI0GcmNkYeywj1Gg0UCdJ0CjS8m7WGzzqboSDXmb/+7Yr/3Vobi72OnPz1jsbS/1LlYK2R9KOYtV0NdTkO8nvxMZn3TAXNsnBUw35HAmg8etx84u1ubJrY/SrTeij7e6IhSlOmlhwkq5ni22Bw5w3PoRdeJ361+xQmR6wTGkR4tNbv0rQ3pEnSiRzzGk50Dgs7n1Vs0+sEpufQA0Gsid3PrXaKTiPl5x0ehS8mJ264fFhnXr+5TbC9Lpst+ni1UU5610STf9+Rmku+2lHekaoniQ2Z5z7DEgYGJCJ9hDTKz78Lk7djQt4bZOAdy1kR+Ip+H1YGcbU6ckdB1eD6QbXqlnPfg9OOCAOSQs3XAGCH4PpiimG/E0rIQ964H8poLOLUkwtx5MHax6PBTFdMNzw3yAXdDHcwhGChxMhPrHgyGYopgPGDwwE4Hb3l/bpllQmkXMAgY+PZ4KJLEHBhin/PHCERQ+KUXOmAXMDDBE4bkRYByYBhi8GH7DdGOMmdjUAQZjTDe8c5ii+GkYd4Luj0eJYRrgU0HmaSuZ/HjWHu4lzjI9pgTe07DoMmVKbNosqM+TJcwCDwNi8cReLxYbbBXiEbyVeG6M2KwEn4qIjCv8HgwqjAispOI9NIgsMjP2KOI502gRpxDFJHp4oij4+AMraiYV590V+u/hYKRQuT2eGzm0jvNgpOMnpaZlM8oTQiePbSCDR6xw+I0J2e01h8sVkYF9ohSRsrUZm227YBIsKxpbIFBja6jHlGMCb404HX7oKuHHmAxrqWVPNCu+vNGyymVfP8RhuSgxpxMra+aKFTMSmSg6SaUD6TRh01LBdeIExfMeOGvF3I/H4VZ8KIEBBK8UUkdhX5kJmWG/lzDcPH4vPq3CdMNPY+aGqQOfpvfqd6lS56LuM6VH4BclwKtK9NVZZiL90xmVZQAd96Tar7zAgtucUow5GA+xTmBi4sQhk+c7MEaJV+rRI0TlGiqtmNE9hK2zX20hRT64A6WIW1vIKrfS9tpiBjI+nbaoiqQtSG1xJp1HWxAI5jlNIFDcU0uMqEzGpCQwWkmHzdZkrtFhj5VZadDwN6X9sDbHenEtTxKO7FbLamH6SuMuyEapZbVUuSj7gnNzNIqGYQ0Fj781HOk184a1bClmHxQmLetq2YF0ScsmLcvOzeOb413ABv9etZIyMu87ZjigFKVWUqbuO/zMROCn00py9vFz0koXWulMuueJFHrOr4gZeIoJMJFCIqMzrH+l8Heehjr71YvjQ6URLMapF6sq7zdung7ArK0h+2ho8ilsjo4qI2yPbJ3G1CmzhNWYOmWWjN7z8MySfUYxMRR5rC1oontu8BAnnFj/aswHD6c1PrzyUGetUp1QiezW0tClyY09OaU67lwdXam879I1T3c+nQduA1gNT2pP2AssSPbEQ+2JlKkaOmZNzTpoGW9sOXk4EUcu8EqZcwjIIVhVPH7nsFv8eCnZrU1lrMqNalWDq1KjtKlMIXJ1St+bYz88nU1VpIw21qYqtpPRxlhBlB7BEXCiPyeu3rBbdJWmyvWpDv9IuKJE14ZQuTSng4AZSPJs+cJllUoeOGQI3C0Y4xRjBT7TNWenUvmITaPEqU4U6xXTN/bAAa4tM1An/vY4r1ghMux1GlKMFpva47xqSDGiTpTI58L8DAj0JL8wne2YCiVTwZgN23uVXDTjIXngLraNyI1PUolSv0xs3JMbRrC6qHaKrlKZvD6d2I72J0p0lVrl5enEdo7se2KI2P/dfAyx0g/CtidFvTO5NXGDg8mz9pyCYKOAOX3dq03pot4gDk+AepeyH1uTs3Eb4WGxBmd7QWNYR+lZdwrALHqIlBTAhQIYyB32mgv2/cKmxfBlnq+JFU7wTKb/qtdChMrrU2LBiEejVIJOXaBX+BeZEnTqAg2L7ZuqRbaznUIrFq1AkBTahUIbyM3kMRC38gzT8gwrp936LbLM5Sk8PNqFKCHbddJmSLjn7h22OZwGg1sjQYdt5aIHoQnbLrCtnD5/Y8xrqlz7XpvIO63GRxSNE6dEnesueWautDKd4ohzPk/S9TXGiqNLe1Xf04417AiOLVFdz4L2HKPuESzRjWzLTfxqeU98ZgMj+HIwcf2GKb/ItATEuaVMB19P6ZKwXXLxSrFRQDRZZAQXX5xSeNZh+yhDKPTMIGybc9w3lV/ppsFLnaNc+wQvpooTvtpDGF0Km1YYBvDN1wRrvvcwLb4JF9YzA8xV+EpDAmMOjPEMiHsF+HY2tpnDjnjWg0tF4duymNYMdXAcdAmVeNN7PPg2clG3qmDNOSaZFOwWFOxKKhGXKPIIB9PQnchL9FzOF9sXKFvtW6CIHuaMrYSvZVId0YO6mvgQRuGV2u2zZlXfwZp46Rg1PQjIIDo2KbB5gGeAGZ0JeTIzwKxJCCEjNlQUn6EOEXXzlORjZs3E/Ygi/56dw/sTlqsweDGWChPkD4oHGIxxUrdn1thdYApX4vU4lXK3qA6a2do71AEuLBzYVH48eDFVyzC0MzBNnFl5mJY5NmHiV49XVYRbEja2RqUqr6VcVgJwDw0wGDNRHcwHWBrX5etNqwMl73Fc12ImDIWY+JhlmBAhpg4BRFRJzNh8DRx4JoIEk7ccQln6eKWYOoTFKhnPhTBMPLTGPErwNeNvjTNc48nZ7FBXl6c1bqWc7f5SNcfJryOKxpmq2XGN1dOIEmWe87jG25gMTO9c4hwy7DXC3QrcuJ7R612IUeCKeq7AMSORCem4zNuYdPgIPem+EEUVx7SOUhTHdzLmyeTWr0ZZUdknRQlXlZ/J4LkLEraFFdMOkinkGgeyDGwaJbK0otigS1LynJIfkQ7nMQZV/x6BuxYs2IPAOVb1iKJRCpyDLrMkD6K/IVo4MQ2hNHNCzBxXMC2cwooQU0cHFz5gLv2t1UybiczjYAPRlJJqF820amQuQTDXI6Y4fsPGeKMDkwVAWgAD6bZiAdwWTmAqJTB9APdaamtcgnG821FaJ+MSjPeiQrJbkt2S7Jb92y23KZqgfACK6DQ/Fwqi+ZmjDC6+OGkXqfKMgFO5DUfrbpGZOAHD0ZRwXh5jB0zVfFtwgYXK7fEg210g1i1EYW0nM3mRZTiu/axlpJE0kkbSSBpJI2kkjaSRNJJG0kgaSSNpJI2kkTSSRtJIGkkjaSSNpJE0MjWy4AFXqduDrfp07c3gG9rEzXZcZw03ADXwVNZTsI6Ym1mctNKKPgnaIfHye9oec2txulGEq73iuoW4YJle/OTYScUbluERkk0egHeboE43TQzu/DBVhhF/Z7VNUDPudeGCB0xyDa6BiZ+2FiYT3V08yUJE9z3PDIjb3lTbWuK+uedpOLcFt5Aj0qI8dcmZpD6Mq0xSHy5qw8yNqCHg6StPVArwJPURrbOYq4/U1Wki3c/g9WDq4PRSoqKdDjri2TlsZuGdIwxKJuueqWbBSPA21XVnbJjTxbN9Gxtm+v5c4NvThP3IQOKk6eJpez2+8TBUyMNtr69//sa219Mv9fs/o+64o23V2EJYCS8xWuGOImExtqfBw5KgtS0naa7k0nLvJEEPU1oraoC3xxCdOHBbFzw3D8ND7MMRGqpwFIFjhnCacC8QXHxZ41Y9WLAIijJmp8fRwgYP4U4xdzw8bijB15734O9gZ4Z5D+E8e2SBMRTxrPGdImw74N1eq1gblh+mrzHuAISxirluGrYFDNPnB6+HiUFO7dyCqtcWda7PJre9uNey9HmDLvW0NCbsTdj7XNhLIB/ebWzD4uBGWPT3jDBeOrbfcLiDCSji9+yZ3xYOPhlhTjPBbTTTSBpJI2nkMSNLI6A6a1GcDwP1q8Ytre3Ss3fC78MymLNxHJzCwTZPJy0cm2TOHeF3mLMwPGvP07BpgYNteAaPD5Pip0FzxDM3ZgaL+6vK1HnZiLSy14RjaUfZ6OIOUzY5yqEdZTVVdP3aCJ4b072OKbCEOQSXwGHyhZidY86qifJGlCuIG3RhPYfXg3cBf4fYbar4U9CDbk8gY8M8ik2wLXMiPiRjCofdkbxw7T1hG9QGrV35yOB70dgUx7c6Kn4tm8KqXcvp9WQZp0jmuSToZYoM+tSMxJg5L/Cnw2g7HLkMm4ArZ3q6yxEJjNh884g20dQUm0jMCGPyBa5OiWfAVKwjknk9QsL38LhtBJv+mNbMWQ9TnXKfBjHmAyZbCD7NXCtp/EppLKNtTFnl5pTeNQDeIveRroEKtkuCCodHcIkDsF3r5Jt8G6b88wp1S23ZV/x0mHYt26yoTnyApQRnrxIHu4xdjyXLk8yHY4WYQ6BHFjbE7gHjhFXxYdW60b2lj50qs4hMrH3sdF5GOnZKx07+9TDHTp46AHClnvUQPJoOcLZwgOOZG5ZtHGl4vF/MZBMGVc7M07Cq8mSVYloT9UewnFJ0Y+JxYbP8MCIRRRb6lS7aHkLntT0dq18q/6XdrHatk6byulIS3d3POj+3/xjIbTADM1c4MCTgUDP29ZgrHJh9MJBhEwHDFVZBeISpjBD2ig1zBoqjDnjniLiUJ6DMGDYP98XHrbm3Bwetp2rl6aBzEU/1tt1PrmRyJYO7kh4nEx/QMBWomGwdvKeMBiHaPXqia3g9jK5kqi89PN+OuhK1T+dvl3lWYV1JqkMv437em/+0OUuiEG0qjmonPDYpHMdxc5M+Op36nHfFXJ3dcFtTzwneVJ3AbsOan+y716U//qXdNNlsmug27cfm3/PGfco+Hf4P24yhRGVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKNDUxNAplbmRvYmoKMzcgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgovQ29udGVudHMgMzggMCBSCi9SZXNvdXJjZXMgNDAgMCBSCi9Bbm5vdHMgNDEgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCj4+CmVuZG9iago0MCAwIG9iago8PAovQ29sb3JTcGFjZSA8PAovUENTcCA1IDAgUgovQ1NwIC9EZXZpY2VSR0IKL0NTcGcgL0RldmljZUdyYXkKPj4KL0V4dEdTdGF0ZSA8PAovR1NhIDQgMCBSCj4+Ci9QYXR0ZXJuIDw8Cj4+Ci9Gb250IDw8Ci9GNyA3IDAgUgovRjggOCAwIFIKL0Y5IDkgMCBSCj4+Ci9YT2JqZWN0IDw8Cj4+Cj4+CmVuZG9iago0MSAwIG9iagpbIF0KZW5kb2JqCjM4IDAgb2JqCjw8Ci9MZW5ndGggMzkgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2dS4/cuBHH7/0pdF7AsvjSA1gssB7bAQJsAMMD5BDkEHizWSziRZw95OtHj261OK0fe7pGLbF76AE8o2azWGQVq/5VpMi3f/r8j+xff2RvHz7/J/uy//3weVfklSuGf1n382b6QVNkldPZl6+7b9m33afdp/b/b7sDiaHCH19+370diO+GTz4//GWnsv+1f/0509lP7e/fsr/9vciyn/ckui993Tln8q4VpdrHf08f67rKnVZFodvPi6eP3Zd/3f31u+z3lpcir9vP68a2bPate89vrDVVXhauUF0nXsT4sd+q/5lWv5CPInPOuqxsWjqqaLL//nP3Szc01+hP0fZH9/0Z+xKS4LvH3duPVWZ09vhLpgaNGH49ft3V2ZtSG5s9/px93wqq+CF7/G2nW7E1ptOZ7ktDiepLVJM7W9Zt0bFED3VsXjdFqSclhetL6kPBpOTDQK3IS+vX4XaYmnrAOu+wpERq3A5Tk/T0A1JrhpIqr2rlU+N2FEmu0FjHDHVUbuyTOhZLmAOmhmNdVH3Jh8d2orxMv+tMlajftdu3pwdOmrwq3RNOfjwzsjYfelWcaNecpjC1QRrmIPSTsZgreS/graESZZDaw+XtqEFTlDq1Cw7rlOOcqJRfp6KSAAdIjcd6b+eUyU0/wZ7VjsaxHmayOxB7jlZJOFhLpvuZXD+nG6zoPCj1U/ISHk+IMCc8fSQN8wQ+GTYmwoODLGksEVkbAQfL2iGRxeX+nPNL9XNYsmcc1UVmW70/OrcXwFTTokqjWp564l+HZ13krv3QZcbkrSurndXdp2r/LeM9fdmZonPKyrpq+rluppT6p7GdL7vhucq1qpXNPArKTdsZn9p2ptwcv+U8Ss5v59fdu++u5Pxt5/2NPnh/w9qDmq2fP6n1B5ygqHH64xwACmmC1b4mWDunCdaTkHXzmjB+3st6pDQ8aV8TrJrTBNNM2xmfnmjC8VvOo+T8dq6uCbY5by0WdSMBjXu+Xpnmcr0y7LFZF1F/zbtLtbQsfS0t6zktLT3tKZt5LR0/7/VwpDQ8lb6Wlm5OS0vjtWPmtfT4LedRcn47V9fSypzXUo5eBbgyIHjGHAI1khhI5mBeKZeOHa0y5y3Duah8DrF/vC7GZmE7CtgCHcR2Tt3jImiL67BBFYhnr3bXViF3UCFOP4gCOAmEZ2jN0li2HUkQK+FgkcCXFZHJc7brggBx2bApJapmBl+QHQoMFw+KxMwJTPE03HwWSLO1D9JsPQfSbD0FaccnH6QdP+9g2JHS8OSDNFvPgTRbG6+deZA2+ZbzKDm/nWuDNNuY8/MkvpREABa8f8oSN3wCXfCrgdzsSf6ObTyPMJtaHlC2EJI8IXPAdVgvJBwwtZMh5oFk8uZCq+JaYU+tilN6xqo4NZ3txyffqhw/7+zGkdLwVHhWxRXNjFVxRTVtZ3zyrcrkW86j5Px2rm1VnKpuwGMHIgjmQOLleaauFBgbXNwKTBi2myfzkWPop9Y4YEhXWrAKjLkEJJ+zgRcYHGN9g2PKOYNjPENgqnmDM37em5SR0vBkfYPTkp8xOEZ57ah5g3P8lvMoOb+dqxscq5LBec5UYuNxAUySzIbN46bXs8B/HQi8zhL2Aims0A6xshhTWHt1ON2bdBDtaclh/l5Sh3cTHdRhps5+H5g+jPVzYMG+PzO7sHDnlgR+7CU4185H7A/vHcNxC+xeY665DssH+yPZJbfyDj5/ST5vv9LUhWl0+7dtf6nWTZft36WubF/kL9g/4/vn5+CFjfYztMm6xYjZGeqcK/1xaUXWzIfLVy/ZLwqkkk1LblM+96aJMfO2rBRewMGAXuK0q5Ve264+xKtLEt4kXG8/BgEONudtLfls39NlpbCWJnKJfb+q5GK2q3UdjfVceOwj5tp+WAclcDtr2ZQIZBqzFNbSxEWpsfVcWA+it55lYV+imYtKJWpsEzOCuUn53GYOKWarFgFiuU8bqePx0cvq7PYx1r2NQdQIc/Mx2F4Tt894nOUgZkvo1PnREoyjwjpGYYnGEgHmYGoFl0iwzaLjZj/iiDZIDUt0IZAcR4YWxxpLRHV+vFymusaSCqkJdMfhiO53MsxRw5IXaFXMNqU+rIvwXGd5GZQ+j7AIxQk0U6Ne8KzRPJ+wp0xNMmuY6wA1gX2wzAHOGsslKG2mxv0JUHt3ueQs56FwDKxARxV7KrT5CvvDtph9i8J5qnBuB/wr84bUAn6PZzD3h6mh5w2U8JoNzyxJT7k/qNcSaoERZcu3OdcSlBOBhrC1FCAwK5CpYov0ahCYUzGjqbLqX5bstndOYdVerSNlujIds81hDVejr1Q8a9jasNdBaiL7sCwGZK4FqI2xjIgaoym20oKeilCbwOYHesoxFUubsxVch3EjUnOsIYwOGU0xAjs3SyI1KqZUua27vfuecbkBS1ipcT0WPSTPQYW+k5G5aK7zHGT7zbEBc83zlmcNx27MG3PANkVAjeuwtHkMJFmEwOgIPEhApuxFWa85Z472LoBkuR2OuhnJMi5mafOICiJoic0PxC2MCgRZbUkWOIByBGiKV1VYcpKSAGZie8DzVMfskLrsbGXGMUnZ2ZSdDWLp1bKzzBti3AA1CQeSFWHWN8bfLFOcc4E8miDTqiVRN+sbowKBH184o8slkhysINerJbnRO5OpESDxgHy4PzwGktUNrsOogCWHVpmxZkByrAeSTBfHAojAvMMxo0M5pa32JwN4cOcWcgW2PKsXgRnAs0YwnyQ2JaDnnKti/4p1AhaK989wFCSIw3h0ROthXIettERDWKaMg9lbL8pbwLewhgikLRpr9hOb23yR35NgM5aCpJ2IPTzzFneOvI/uq+q8vBYt4TXcwHosx7yLZhGW3ecb8DqSlRjOHEtsF/swnmmch2ZrI+GANYRzLDyj2QpwRpetGstn0R1JgTosbfZuApkGfKXEJ3NPl50lnC95NV4nkF9gxBKxpbi3jICeHksaJyo4Hkm+1juaLH1e1+EcEtdhjLHse6qbowLJbqlXhDF43Jb1lRLeWHIJGSVklJDRNZARjw5nPBOaikDa8aOpuhjvilwrx8I7DgTIaPtTju4OTa30Tk8gPyyxq4v2J+B5Od+d8E/CPwn/rIp/JOcvxGzFEv5ZHf+Mt6Yn/JPwzxkPIvBugX0f2+dyEmJJiCUhlisglsA+xJu0IQmXrI5LjjfWJVyScMnrwiV8IpHgXfDbHB2ObANvjkZ9y4wxLt9fbTZj3iJlut/JXrvDPsSEixMuTrg44eKEizfDxdXau7/SnvCEixMujmV07h0XPzVvkTI94OL6sHck4eKEixMuTrg44eKtcHEz3gKUTkJKJyH1HNzbSUgcbaWTkKI+NWfh8+PZH/EYCO4R4JO+Az1lnyw4WyHw1hefxyDYqSbSRLawkrexmNqiJ2EHdIepMZ5jDZGcgBw1xiiLOjeuGc4sbp5eORgp0z0wcqsvpL+ahGEE00nyqqTgYJoAbJS8XiAI9wKXBQi28SWQEznIkejOomBKksaIwB5wgCk49irwCmPEByeKkiKC9I/IhjDYZb1eVHduIJVTpmOvXiVi4RktOMgu+f7k+5Pv31sk9rwCPQhcpbDoYQgSjCE6NlewVJJQweqoYLwnKi3wpAWenoN7W+ARSC5dRBxc3EgXEUdwpa9kiSlwFZvkaDZB3C/x/ctmRQL5kkURi8QeiC6nkGzSlMQpki2fdcz4p3QuV7YotfOAUNyLT90WybIYL8wUbacTbOQSHUiyefbPSq5DFFylGbjEUXDRaMAOcU8Fl4EHDoblEskLAIKLEgMYHbWXo4TAxSYSJMEza6UxYHxqsaesIayjkksp16oTuN6aI1mmJqgT9wsAdecn0kWW0zopuk/RfdB6pug+RfdneEvRfYruhfYgRfdbRfcTIHQL0f3xikuW5EqbxQMRtCBOZl2SxONcwqOTIugUQYcxYIqgl46gA1KIP4Iu9WHepgg6RdDBWXNvEfSyL0CmCDpF0GekvVIEvdYh/hJqdxojXubN2J+yReKcBNt4ySEYKnrEUh0WshXO6FSSSlJJKtmoJGLrqcaL61K8l+K9FO+9IN4TvBkbwF2Sg94Eh/fxuxzLIub05luwp5JomCMAtomLvqtmeWUWSxzbN8yEB96RTUf7LHy0z7IyZT93VtqRYqayKvLK2P4Anwl4uoFVVnW8ou82r6aVXMXNs4ZtMe8WZz2XWAGJLRYg5O0PKhcdSSrgjVHb3hJGOj37OMyVZ2V8bwfYr6UXAQ4knphnp+BYYMkb7XHnZFXV5M603qaYU+tImR48ZHVY++ZTP3hPxFo7RgKojvWc39dh9Cgouc0j5wMnPUnOqGBss+wx6FyyPYKR2PyYsSfrAa+G8rjxe3XsjzheElzeznGzlqDszT3ijV5TL3j3U4J/Ape9LHr5wfT0l/Yn+zb11v3P1B8Pn3RuXrVuvujd/E/t79HVf8o+7f4PhtH5M2VuZHN0cmVhbQplbmRvYmoKMzkgMCBvYmoKMzM1OQplbmRvYmoKNDIgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgovQ29udGVudHMgNDMgMCBSCi9SZXNvdXJjZXMgNDUgMCBSCi9Bbm5vdHMgNDYgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCj4+CmVuZG9iago0NSAwIG9iago8PAovQ29sb3JTcGFjZSA8PAovUENTcCA1IDAgUgovQ1NwIC9EZXZpY2VSR0IKL0NTcGcgL0RldmljZUdyYXkKPj4KL0V4dEdTdGF0ZSA8PAovR1NhIDQgMCBSCj4+Ci9QYXR0ZXJuIDw8Cj4+Ci9Gb250IDw8Ci9GOCA4IDAgUgovRjcgNyAwIFIKL0Y5IDkgMCBSCj4+Ci9YT2JqZWN0IDw8Cj4+Cj4+CmVuZG9iago0NiAwIG9iagpbIF0KZW5kb2JqCjQzIDAgb2JqCjw8Ci9MZW5ndGggNDQgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO1b227bRhB951fscwGvd3a5N6AoEMt2gQItYFhAH4o8BHaTIIiDOHnI75ciKVEkdVbkmNSlsQ3EFkc7e+bsXDfy5e/378SH7+Jycf9VPNQ/F/eZkt6q6kusvi+2H0QlvNXi4Sl7Fs/ZXXZX/PucrVVUC74/fMkuK+VZ9eR+8VdG4kfx2x9Ciz+Ln5/EP2+VEI+1itWbnjJrjVztQlS8/Lz9MgQvrSaldPFcdV+u3vwx+/sX8aXAomQonoeYFzDL3VuvL6zRVpJ2ilZGvAh4YzeV39vLR+JQwjmbCxdJGGvEt3+z9ytm5jBHFebo0pyNKakDvFpml7dBkBPL94Iqh6h+LJ+yIC6c80YsH8WvBSr3m1h+yqL0zjptS/epJOpNKQkyRNWRUCnJZW4qJ2skupQYaXMXfGuNhdpMJWkeRKg+h0o83BhLsBkQARmIYDGeLn3dNR0beDv4rVQdKSnpPK1MbtaErpKb8oGVhvTgk3QQIz44TPU1g1CMAK/B/sdBgLX1KMZEYvW9kOBE3HAlBiohnARGhC1Gz2EYQsJgiaAEBzQjPbByJk5QOMTxPsM9k2U6TlB4Y6wNr4EhTqrKbmads4bs0wtK7ClQfWJjDik46xzK7062Vt8siy5qxuYn+tfiM03xOU/Hv2KkVUwk9maOpdPmV6wNN36Ya9wlaAaCnq9y+gecxzGko7f9CWz4WDgV/1AdGXR0up4qoXthNEroQW+m2crdyEsfqI3EI4m249dgLmpP0UaqaFpBoivONUmTtyV1YI3j/BZii1BSnS3p9bEP4ICjLcFOvSauc0g3Ke+S4FYQ73N1iEYi+Lxj146Re3g1HTFrJd7KaLvqqBmXJ3BB5GSdKabYRGc2YortPcDQYB+R6AkY5eIn6n4OVYBhuFKAEstw654zYbC48vdu/jhKpuWc0aYc6nKGNaaPoJjThp9lyCWSC5ZAbBQPUZGj0/tDHHffmIvjhxyncJyy341oaXqTYu8BJgdLMOguNFZ/dPxZknO/x7m0+4mvH3pKpr2+wQ3mtJ7CKNoTX/BxfJWmqihRkNlVUXLKpSo9tFVabBXAxUQcd48+OyQ1+aMkdVeyS/IGSq7gPmr8PoQthQgSlnqGtgDXYN4IaoPnk2AUaksg2MfbjE5btkHB7eUv4Xd4DeTP5lDbguF32FdxhGHPx6d+O3dTSopk/bma7WNhfR4C50hcTXGdGFH/cBGAG1N3opqu/085vtexXTd2HbqbG4kuzqi+/N2GlMhlYW5IJspyCupAqrk4ycSbWAPTK+GUgrFxCiPmgFNicFLDEog6cXKTpbtkDOb25GKwgXQzvnOq3W3ORtPJGMq82wYLozMRg9hA3MgwCnEinmbvy0svc3RyXtZAOgMva8BiL8PZB48m2HS4j4YtYmIfPGZgP8eZEXOAszZjZEjkZlw3cKxjZ8K8YXYYQyWnciVGVLwGexVmFNsDtU07FB1/TK8/fzEus2Pf2dcPzT3Wqs38dCo5v4F0Mt39FktbXGw0y1zVX/D31t+gDHj/fnNGbjq8jDXGWrPD2B6N8/Bv882nY1r8v14Hvl4HJudVjqUvqFH/s0ygrZe2WtPKBPnxMkFZpvT6fwpOp0w1kHCvgMHeHHQ02QLLuJ5KDKaMyxTOOHMGw/lEI5DGt/4MbQavmfSa0uCmeI5xswybKf7oWtxl/wF+nSI/ZW5kc3RyZWFtCmVuZG9iago0NCAwIG9iagoxMjczCmVuZG9iago0NyAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9RVkJBQUErTGliZXJhdGlvbk1vbm8tQm9sZAovRmxhZ3MgNCAKL0ZvbnRCQm94IFstNDgxLjkzMzU5MyAtMzc2LjQ2NDg0MyA2OTYuNzc3MzQzIDk4OC4yODEyNTAgXQovSXRhbGljQW5nbGUgMCAKL0FzY2VudCA4MzIuNTE5NTMxIAovRGVzY2VudCAtMzAwLjI5Mjk2OCAKL0NhcEhlaWdodCA4MzIuNTE5NTMxIAovU3RlbVYgMTAwLjA5NzY1NiAKL0ZvbnRGaWxlMiA0OCAwIFIKPj4gZW5kb2JqCjQ4IDAgb2JqCjw8Ci9MZW5ndGgxIDM2NjQgCi9MZW5ndGggNTEgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nJ1XXWwcRx3/z+6ev+K4vZK0EKXtXIvzIXzrj9RJCI1KbOercuq0zgcgBB3vzt1uvLd72t27sw2i9AGKRPuA1D6UN95ohaq+07oPIHghyktb8UR5gpciVRBURGOX38zO2Y5jjMStZvc3M/+v+X+NjhgR9dEPySaamx+dYL9990msvIzxfD1arr1dfvkfwB8TsYFACt+3n/498L+wdjzAQu/TayUiawzzLweNfOmLzPkZ5lcw3xclnqBf0h3MA8wHG2KpCV2PYp5jzmPRkFdee/UW5q8S7fk12c5N6x2CvNLPS8eg5eHiawuqWQ/0laze3n7LKlmO82ca+PzrtPQ5pCj7afzM/DRx4uuPl8rr0N3zhlV/nth7H31K5JwqnVXaaIgsegHSXrQ+wWl7iY6VK2W7Uq68YFsvrmPT+mTtfitZfwCwDb7vlf5A/bSXaLiyvzIJusnK8GRlv32Aic8+Yz9d/5P1tfW/si+trq5aq6u/uXVL2fIS+C47c/QwUaV86PChxx/r7dlf1vBw5cGHHnzo2PETx0845bJ9kg0f/k54+imIYLbNBu2Sw5yvXru6xC5bi69MTX3jmy+tvWNfuH7yxMi+Z+cf/f7JE4yti7Vn4Sz2IV6fOqeLU8CwMlPjQ1ZZ/4hV2Pj6LXtQvYmxGfa6/RPrFRVdBtvZjIWV27eN3zD8Xwzy79735D9VEtzz63qBUc/GGlPeXXsdOx/fGf73irNSRGDLr+TcpB9gtDB+7NxkH2BMq3ygMfJoiX6kOUr0CPxM3Qhu+z3C4o31a/SWwYzuY8MGW+Swpwy26QDr2uHQPvaewSUaYn83uIe+YB01uJdW7GMG99E++48G99OQs8fgAZb1WgbvoYN9bxs8SG7/VwzeS5P9vzN4iA4MTMAS5vRj9ittlcIMZykZbFEfmzTYpifYjMEOHWGvGVyig+x9g3vokMUM7qXb1mmD++iI/ZbB/XTQ/pvBA9ZfnAMG76GTfW2DB+nbfTcN3ks3+r9l8BA90X+HZiikOkaOsUKSfNSKTwJzAeRRQk1aplRTBVjldASrR/GdQETHMTidB1WC/Qj8nKaBU3Cpt9ByE4rJpQG9s7u0CaDnjBUXNPcI0EXwe5BAM2E9zMMV6XNf5IJ7SXM5DetBzo94R/nE2PgYP58k9Ujy6SRtJqnIwyR2B6a3k03w5yDigshH+MXYg9xZGLQAtVsN5nRJfxNshwuyEMYvJTEWprAawUiaSiK8z1AG+ySIfS2EUxXjfwg9k3ky9mXKq/we+buz8k392zh5Yc81zZptME7Ad2N4XCC6JtNM0U+4Y2PuxM66upqqO2lSiqqFop3tDKGa6/TJ9Y5ySgPflBaxllBt1yBz0Emdkhl2pJ75WqqSfRUU85rqsuZUTs+1tlhTXdlB4xw01sDv6fTsUnpatkrzQnICHJjw3aCWTtIMlIqve7ZMJeEWn4cZFzxPhS8bIl3kSe3uxOKprIdZLlMshjG/6s67/LLIZZxzEfv8ygbjXK0WelIvejLNBYiTPEBu3GilYeaHntKWuTtl2s7VtpldWyqB4Dnlsbb2wyVNruZZwTKfy7bkl0Sey0wRT4EgM84vAqt0tXRexVhXQevAZcpBgcZCB97XIlWFx4Z7ATXPd1XODa8wCRTr9GubE7WNNpUKNf3OtN4YOjiw0KHh2loVtto2K7gOrdCJUiRnA7u5pvWwHuFZNt2uAV8WWhdMP+vo7hhsnF9xFb5/Bt9O5TGdjnf7pkjzmqlDpVXJTfWZNj1a1dFU55HaSoWE7r4L4Ii03sKuQCez0KkoTWrm2vqu13xzSqW7qVeqdFZbq3quNJ69jl49u6PEwntbSynTpd/WftyUHWtrfb2WbHhaUUVGU3HiSN8JixtRqukMLbzpa2nV/+LvmvZNbrQm2iIfTxH3IsMS8LZ0FIvyL/I/v8dzQvs3MXxN7ChdhS2NopynRIbyRDFPJ60sjOUI7wShF/COyLgvs7AeY3thmd9dHhy7Ag0gjpM2iqsNtlTWUpkFYVznmYgznsk0rBkRPA9ErtpFQ+Zp6IkoWsbt1WiCdQHXVSfMA6U/DVGxz8jOm27XGvSUGho2DxvNNGlrQ6uZl0oZQ5/wxUIYhTlkBSIVHjoN2k3oZbqToIHwpoirZ1tp0pQw9vr52U1CmFd0oSyJ2jLT1LGUfqa6mI+jRmCC4ihJFtWRakkKM/08qG6xu5bEOVgTjr8GODsclnithupv6Dl51zjhpQn2mpHIIaWh+ligq79Jp2gUT0c/ru4BW7ubZ3qbazJlFIx53jw1OtrpdFxhWpyHDufCqNH/X6xKlqZO662tK9UJomQ2kDi7qs6Xm9IkS5q5Qd6IisuxUNvtoq0tfbtbT/O4+Gb1JdU0XeCcyX++TYLqgNtv9nEYOK6uJNij0rile76K5fzFWT7XRJqcQ4y4IRjh3dt/3B3f7q6iF4WY5/rgma4kVzurjv05WDa74QYkYdjMMzcLIzdJ66Nz57D3H3JxCnxlbmRzdHJlYW0KZW5kb2JqCjUxIDAgb2JqCjE4NzgKZW5kb2JqCjQ5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0Jhc2VGb250IC9MaWJlcmF0aW9uTW9uby1Cb2xkCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSWRlbnRpdHkpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDQ3IDAgUgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9EVyA1OTUgPj4KZW5kb2JqCjUwIDAgb2JqCjw8IC9MZW5ndGggMzkyID4+CnN0cmVhbQovQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW4KMTIgZGljdCBiZWdpbgpiZWdpbmNtYXAKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4gZGVmCi9DTWFwTmFtZSAvQWRvYmUtSWRlbnRpdHktVUNTIGRlZgovQ01hcFR5cGUgMiBkZWYKMSBiZWdpbmNvZGVzcGFjZXJhbmdlCjwwMDAwPiA8RkZGRj4KZW5kY29kZXNwYWNlcmFuZ2UKMiBiZWdpbmJmcmFuZ2UKPDAwMDA+IDwwMDAwPiA8MDAwMD4KPDAwMDE+IDwwMDA0PiBbPDAwNjk+IDwwMDZFPiA8MDAzQT4gPDAwMkQ+IF0KZW5kYmZyYW5nZQplbmRjbWFwCkNNYXBOYW1lIGN1cnJlbnRkaWN0IC9DTWFwIGRlZmluZXJlc291cmNlIHBvcAplbmQKZW5kCmVuZHN0cmVhbQplbmRvYmoKMTUgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvTGliZXJhdGlvbk1vbm8tQm9sZAovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbNDkgMCBSXQovVG9Vbmljb2RlIDUwIDAgUj4+CmVuZG9iago1MiAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9RQUNBQUErVGVYR3lyZUhlcm9zLUJvbGQKL0ZsYWdzIDQgCi9Gb250QkJveCBbLTUzMSAtMzA3IDEzNTkgMTEyNSBdCi9JdGFsaWNBbmdsZSAwIAovQXNjZW50IDExMjUgCi9EZXNjZW50IC0zMDcgCi9DYXBIZWlnaHQgMTEyNSAKL1N0ZW1WIDY5IAovRm9udEZpbGUyIDUzIDAgUgo+PiBlbmRvYmoKNTMgMCBvYmoKPDwKL0xlbmd0aDEgNTUzNiAKL0xlbmd0aCA1NiAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnichTh5eBPXne83M5KBEPAlOYTDIx8yxkgyliX5AGyMje/7xICxbEmWTxlJxhbGmKPhDBBKwQ4hwaRcNjQhhGQh57JtFtKGZoHwefm6+7UO6/ajX8ryR0tajMb7e6PxkXb325Fn5vfe+93Xe2MChJAZZDthCSks1cU1Pz17Hmdexbu2ocVj+8/3jg8i/B0hLy6yW80W68VsHSFzZuOc0Y4T8s/9TuA4HccR9lZ311Dm7AM4tuO4v8VRb049vAIlzMUhKWg1d7WTaJKE4yIc823mVuvnK1gVjtsJkWsJy2iYT4iMzGb2M1WIket7Qw3JACoBFfVdPCF7yLSrPLeyACf5MY71H19MbnFW0PMEjtI1ZgHzQCThCJDq8T/IumWPCcoElVwepWaijIEmozJEpcYrSi6XM4rgQKVSH2c0GmXdwn3/i4ev/gLgl9e2ng6HyNm2cw+2DXivbFj/3rM39//XWTMIh/cAgOzpX2EmQO+hHV/syQBouil8+8EHwrc37Rn7bqHUHSjtquw+9bEqQBUAV4XbsvvPYnAlbfz3Mn/Ux4QY8VSDKKqHyWg0KafpJA+RK3Ecgg+lQi4PD1NHqYIRNola+us2Hm94VOpImQ+w1/PjswyEQnH/v+/dc+9ILoDWctp5J685LZQ59epbl0G4XzYweuS1kVOlcKPyRxtTFZo54Zrk6PJ6gE7n5qtdKwBWbh5qWbtr4ypldECYNmXpxtpeT9f13hRY4XkPNX6bEE5AW17w2TLx44Tnw8yvvAaWG/sSCOzCuwQI2siQfWjbJdlTtN5Psp/eF4QRCBdGuJKxd7hhCBVGkHc3ZkE/ZyHhFA9ND5P7iU+5n4HSxYtemQLk/cz1c/aTKUtONsQWN6ULDyHUVpNVCtKLnXP6faawrKAMAk0l+8beYfqtLoD8NG/oFITpQc4QImtCi3iyFOUa0P1q8YoyBoghEQ2MUyr8xCAEBWM8wsUZpawpYhEw3AvqlQlhzw2WY/XPfwt6qK3bwAE3M3guo9CVpwoHwbWyNNsUmLCsZNsRW8yCgI0QWHG0dTk8i2GKKta/ZchJ0L3Mhehz40LglZcyqUaa8cecHv3Ak6iJvKBZoKAxFzPTpKLjKLmoXqQKJ+KUnD5z9z97PJ++kpG+65PODWd2184TRmctScyM0pcuVzHMqDAsZL3YUru+kyGHRgbKAAr6Huzf8/Wh7OiS7tJFMfNfAHh5ZUvx584t0EW1SBTSuGrUIojGA2OmmK6F0mgKCJhQIgpV0iuVXLUwYrttHexJT/EMNTe8oYeI1Kp4U3UtQG21qXWnkCb3P/MBQFnfnW3b7rxeCnnV3nfZkfyucg2AZudbb+zUwWUURTrH/8SVcSUoWcwX6nC5CYFgUa6CKxNGmA3l+usgjHz+vmNgBVfitVsqF8EtZsg7/9pNKC0+4qs65inqP5dqrw6fzCJ9nJJ5Om+WdUCLKRj6XLGYTYFwBra0P8AcyXsuIz5argZpA6cyUSSmhakI4GrgxuX2geWUHrqbrzGj/3QTqqoHaI7VdTDMF94K5LFw/Cljl1nIPJpVUrQMAXpDOPIJV+jRGqxfxq5YNGdhpMLv1Clh5ODB/Yc1xV9yLMCs+Vo1k/YZRAvDn3k37epg5MgxGfMiGrXCDgyGeHVUJOYq1kKcr1OEi9ERk1Qm9gkpPzAz4oxcdGuLcCw5hlmb/xULwUx6z7uO5sHNKyBQX1sAFYYY2FQfl5cQPkP4gxxmeB/9DbLm1OwNa5wbGaZJgGOV+8wG0Jv3lOmLVxlCmgIjlPqlALMXJmk+/Ih2Bez5srR/7AqyNOEr72XhNuiZItl97x1Gh0l/zluN2ZWFMT44mV3qH+S42Nci6TAcp+ONYjvkDkLOwa92bP/yUHb2oV9t33brcD5WvDqjNrHzVYjIqE3ufJVRHXhwFHte/tF7ew588+NcyD1yZ39BT5UGrpwu2FYZC8z7qOss7DIqzK7ZdA9gWfoHqqAglVwlDF84J4xcuCwMQwKo3zsL0VzJ82esnN5j77Czn/+Z1oUBbR1AW/0oJyRFYlUQqwqSDXifC5e8f4IkC6Or+1Do/jlt8qAR7uG2lkUpO7GiaH8LJmETNk8k1jSj/aYKqh9SPBebG/v0NNP0fY31F7ZmCt9CZF1T205aVMa2nUx099cnKmDdujN/e8IUr8tjil+/253v2QHwM1pQzGW0mHbgC9P2H+y90v6zBjNKgxpN7Ie4s6ipu6fviOzEfshphMcLaosdWwBCDOvSK2rmQeDM7O7Bhp5/+SXArRtbLee35UNvZRkM/jS3d0M8QE2LZaA9GSD3P4RR4bvhrMSmn1A/JKDUZShVTfc9sePSGuNZbGRod5yCRt7Pj+57vo5nkitDWNoE1AbUzmSiaCZumXoBwOhvhdR5EMzN02Ubz0Ho8vJ4V2m3B/Qbtqy53gcvKsKhozW3GAKT1tYtiAgJnhPOL49hbINDIOxYkhQe4IjRKWbNCJ5r2PyT4q7CyDeXZr4ED7bthqSVi5ZqAwK5GX4z/Wg/WIhq70APhtDKCzeo6f5j8MVPoaDFrApgdgxBYWCMYknG4hdfO/DGGxDK9nzWWg7AMsMMA7DvwO7Pnu9ie5BboLCSK8AMVEoZCNRiP7k6SoFpoBSNKxAejP5Z+AWchPk5eQGqlxfpXs5sr8xYiAn5GzZyrFcevToPzx0zh2UygAC9pZD6dQ3mVxn6NYokYI7Sji01BallI2PRt+IBgh4m9DgFVHaYL+dMdBLb65NVxzdYzm9dndJ5vkFXlJMVDZGp1fGldn+sjNW9V13PvsoU/gLqhvb48vUAGyqM8evS1ZFc55B5HVSc/Gb7zq+xDOeGJUSfiS9eEboqNcOJLf7NfmYwv7MXYra//ubuWIDY6h7Umfa09ejZYBLpy87pOofEocaT24zaIHWC9cKI8ZjNMrQtY4XnYrvtmFHaaFJVvo0GW83jkkIof/3u1q7bJyshO6uXCZe2mYotBSd+pAPmCsr2oOwTouyIafVIO5dBSvkf1iOKPgEpXT9rsR8XKzLuOFZkTxZWZERds2OHWJHxVasimPkdd89sgMISJvBZTG9WdsHR2wfyt2DFvjvQh3ucrmoLzSkP7jF1Us8EbCNixzQBVye0gkf4SDhORThhBnMZ3hZK2GXYS5p6hHm+eubKkPIl3+6EHpPUDoj3FS8ejrgyMJh3FTSdSqZsQpOL4/Iz5wMzWnu4NnbtWiYcG3G/tigRJefkm7zr0RsleDZ+gmfRIPHUoWbUEVFyzncexh0kwhgYKeUOBiJ+IllkT6DhU+H7n54Tvv+43vIxzDr3Nsz4tAFbfnJr37qavtakpNa+mpq+lkRmZBAW3O0ApvOu8MfTg8Lov23a9GtQnu+4titjzSufdLZ/tDsHIHvvp9Q3u/DxIcRMdqwPkWGMcB+1PImZ7Y+2zyYKMWbS8YzGKlgeJZ7LZP7w/SNvKx7Fem1nN6cKv97soT7wbObkv3tMj13B6Tuvm50OgBvtyPGt8XGZCznO8XFk8AhOz3d40kCTAyMRjJC5oKYq5+GQ9zqTOfhtXuVGVEc4K3wHwbCO+e4SRLasLcXwlK63Q9QlQQnsfaBWYFflsrDOpQjTSqc7DZclHAa7cOHKVeECvl+Dqk8+xi0iUrgCBd7feO9BlXABqZeN/559iHoFiaevALH/mQwq3w5pNLIPUYmKwsoiEG6nbb3YNPpXOMkljt2srIR1dk/PpgtObLwjvt7F5aAW8oluo+JyhDu/+2/hDh7TNdhQhtnosXfopxL47msPNuo3zl3+l6nvremXsFLej6d5oPykC2k4q3CbkBdSx254bfLjIqfpl5pZMS7IbpIqJpH0yipICt4DTOK4gOM9fguJB9fe5lwkhntITHh3sAtJL757mSEyH+cTcX0fjtfIE8kMhPUUh9LiWjreJgnPH+fT8U7EuxPHnfjegzRFiLsDZZ5A2pM4H4q3Du/5onbJJIucJh/h72uYBaVwHO7BUyaYMTIbmUvMFyzDhrEpbDe7l/05t4BbzTm4L2V+sjWyetkh2TeyEfksuUleId8iPyz5UE0SMa8mPPr3VxD54+T8o0kcwPx7JMEMfqt+L8EsWUDGJJgjQRAiwTKSBEskWE4CwCLBfqQYOnwwDQvyYQl+jeDoLvyrBAN5ie2XYIbMYC9LMEsS2GsSzJEw9okEy4ibC5Rg+bR5P4zZbgn2Jwtki30wykWeqx3tHmdjg93Nx8XGGpfSZyJvczj5MmsVn+lxWnlrl9va5mp0tLn4Og+fpuVzzPXNjk5XcyNvbrPwOdp8LV/g6MTJRn6xo42vs9rNLTbeYRNZdLisThff4HR0tLuitXyZvdHFdzqczTy+ndYWq9lltfAdbRark3fbrXxmeWkZv8bR5ubzGutRrJXXaHjeZbXydre7PUmnc3c0aB3OBp0NcVy6Fh+SS0fpNGsKC8o0edmrMwpKM7TuLrdoh8XqNje2uLST9mRZnQ5XmqPFEqeNjY1Ppv+USMZFuiYuaejaD7F5OlWBhqAXeB9ZUakE2B3uekfbZn6ZNlYbn5jcam62Otw2bUtjHa5rl8UnGPT/wL1ItBvtt1GzHaLlU4FwWevdVBDVnq5QU3m302yxtprRcWa329lY1yGitDnc6AGXlqwmDtKOe5WTNJIGYidu/CqNI7H4M+L38gSciJANMZ34LiNWUoXvTJHKipCVdCGdlbQRF3JxiG+e1OE6T9KIFp85xEzqSTOudeJaM2LxONNGLOKaluSLWAXiug+TYiwWeVFOVtTMTFpQBx7nbNO06EB+VtSDSmzAtwNn2nEULXIsQ7pGca1T1L4ZId+Yat6Ct1mkt4icqD5W0UY30llFG8tJKXLhyRpRF+qdPORQL1lLcTT44/FHR3RMfehGHZLwO06HUAfqpRWlN+DYJvHB/oTyp3OiMxPyNCivEP1BoTySjVHKwFEpPrVI2yXqMREPqrMb7WhEfi5c93lmIjpZokUOXEnDZwtixyEOjWk89sVykksqkXPy/0mlmaT7/zEqpEg0SnGbLqkItf/hjB2x3Gg/xd2Ma8vENS2uJeJqK1rUjPwojg1nqa/qJHot4sbjGdhA9Mh3Koq+qNomY+iYFsn/Lc8pTT1CE/pOeHSCxjYZczfOm0VPU718eWQW4+wU9eqYxqVN1NkX2al4TK+XKd+R/wFtmkPUZW5kc3RyZWFtCmVuZG9iago1NiAwIG9iagozODkwCmVuZG9iago1NCAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9CYXNlRm9udCAvVGVYR3lyZUhlcm9zLUJvbGQKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChJZGVudGl0eSkgL1N1cHBsZW1lbnQgMCA+PgovRm9udERlc2NyaXB0b3IgNTIgMCBSCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL1cgWzAgWzI3OCA3MTYgMjc2IDY2MiA2NjIgMjc2IDI3NiA4ODIgNzE2IDU1MiA2MDYgNjA2IDM4NiA2MDYgMzMwIDU1MiA3MTYgNjA2IDc3MiA3MTYgNjA2IDI3NiA1NTIgNTUyIDMzMCA1NTIgNjA2IDYwNiA2MDYgNTUyIDYwNiA3NzIgMjc2IDY2MiA3MTYgNTUyIDU1MiA1NTIgXQpdCj4+CmVuZG9iago1NSAwIG9iago8PCAvTGVuZ3RoIDYyMyA+PgpzdHJlYW0KL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luCjEyIGRpY3QgYmVnaW4KYmVnaW5jbWFwCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+IGRlZgovQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWYKL0NNYXBUeXBlIDIgZGVmCjEgYmVnaW5jb2Rlc3BhY2VyYW5nZQo8MDAwMD4gPEZGRkY+CmVuZGNvZGVzcGFjZXJhbmdlCjIgYmVnaW5iZnJhbmdlCjwwMDAwPiA8MDAwMD4gPDAwMDA+CjwwMDAxPiA8MDAyNT4gWzwwMDQzPiA8MDA0OT4gPDAwNTM+IDwwMDQ1PiA8MDAwOT4gPDAwNjk+IDwwMDZEPiA8MDA1Mj4gPDAwNjU+IDwwMDcxPiA8MDA3NT4gPDAwNzI+IDwwMDZFPiA8MDA3ND4gPDAwNzM+IDwwMDQ4PiA8MDA2Rj4gPDAwNzc+IDwwMDQxPiA8MDA3MD4gPDAwNkM+IDwwMDYzPiA8MDA2MT4gPDAwNjY+IDwwMDc5PiA8MDA2Nz4gPDAwNjQ+IDwwMDYyPiA8MDA2Qj4gPDAwNjg+IDwwMDRGPiA8MDAyRT4gPDAwNTA+IDwwMDQ0PiA8MDA3OD4gPDAwNEE+IDwwMDc2PiBdCmVuZGJmcmFuZ2UKZW5kY21hcApDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AKZW5kCmVuZAplbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvVGVYR3lyZUhlcm9zLUJvbGQKL0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzU0IDAgUl0KL1RvVW5pY29kZSA1NSAwIFI+PgplbmRvYmoKNTcgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvUUZDQUFBK0xpYmVyYXRpb25Nb25vLUl0YWxpYwovRmxhZ3MgNCAKL0ZvbnRCQm94IFstOTQuMjM4MjgxMiAtMzAwLjI5Mjk2OCA3MDQuNTg5ODQzIDgzMi41MTk1MzEgXQovSXRhbGljQW5nbGUgMCAKL0FzY2VudCA4MzIuNTE5NTMxIAovRGVzY2VudCAtMzAwLjI5Mjk2OCAKL0NhcEhlaWdodCA4MzIuNTE5NTMxIAovU3RlbVYgNDEuMDE1NjI1MCAKL0ZvbnRGaWxlMiA1OCAwIFIKPj4gZW5kb2JqCjU4IDAgb2JqCjw8Ci9MZW5ndGgxIDEwOTgwIAovTGVuZ3RoIDYxIDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzFenl4G9d179yZAUDs+zpYBvu+DjaS4AKSIAmK4i5qjUWIhEhK3EzCWrxEkZcormSltpvaqdXYeX52IttxnH5y3LTe6vYljSu3bl03W/vsNn1t6jhN85y0z5YI9cwAIKnFydfmj4f5Lu6di7uce87vbJfEEIZhTdinMALDhsejiQ/po0vQcwbK1OzC8YO3DX3/PWi/j2G2h+fKpZkZTdGCYfTd0Jeegw6xGP0jvL8I7665xcqxD5/WtcL7u/D+5sLydOm7//pmO4bZn4P3Q4ulYytYC7u2wwzv9FJpsWzcFxqD9xwQ8SRGkG+g38R4GMb7HR6DWZGFq0eIEnYQVzXxcAEpxHGekCQfw/CvdmLHLmH1Tzw/3o0hzH4JJ/+5+kncwz+Pz05h2KPvfAfDyBZegd0NfsexHgzDZ3g74LQCDGOUdqXbrrT34HTVhR6uzvF2fPR0D/kGjAP6yO/BPAqzYRgi7AI74VSzxZlhoNjVDMEWBvrtauIHJxGprf6fLy09Uf3c40uPf1v79yd/pkWCLy99CR3+0tKX3tKud96FDp0k8tU/XqjOsTuhhxdQ20KtVZ1bqP4xaoNdm2HXF2BXHeaFXfkC7nHCtsie0Ou4RyNIpzxej9NJMLpMmn3IZ5WhcH+xdOC26j/PvIL46OLi6HA6SRnR63zU23/232erY/nOaMRqJr62Y3Aol3O51qu8gk7v87e09oXiNsv+RHz9J0iv8biZBHDpJaDiBDmEhYEG2MrrqNEhgNOzGya9nhQDpGg10Meka0SwHXrypkg82TZRHGhu9fgV0xc+IxWQCOFPEzh8Ezyf35eIt+fGM5mkn/htAfzmcDa3Dg3tqpL4S4PbB3Nmo05pop1O2kZTbUzc5dCoEckDQeHYypX3yU8ATRassIUzDi9LnyeVzKiAiAZNdSLZx1kfyT56TY2FmUSdb0UqnR7cXjqwuqe/GE8aKVX6kYf/5ZsHSiT/WyIeiRRKq80XYLpaWuOM22MQEzykUtBWvzfamWth4l4vbv3s3OFCn91p0MWjA8UDw1NIf99phPbu+4NQJJZMhoLe/hiwXSpBam08MTZ+a8IfcA3GE1arRIY0qkR8HKCPkOTKv5EMbwILwgugi+HQBgRrgeCGkDOCLWeG86YzaiShnrr5WAY9R1VHTuAI97jHvKGg3+dymEx6lycUTqZSZ3oKOOLdRTxzFpmq/3R2vSIViUXNFIV4BI8U8Hn3CgRNgiaSl4gdVmnUevxRIIHj9Qzwug3D1HXxZhrwE6S3AIKv59e6GZal+uukcqct3zk+NnXTVGmgPxox6NBrKJU+MtmRD0cttFqDkExqMUfD+cPjo54X9eFovmvH5PTy0FA8odXj1scXDuc7AcVGUyDckuuW7UklEWVh0oNDM/uH2yJxm12hTCWXJD1tHZGo2WKhUkx/785R9gRgoUg57yImxDA3MBPUFQr+ILrdfDlgRk/+S/UdCr199uxZ8rmzgK3ilR+TaTjvKDYP4xN1ZnvhGBmW0Q0MeRucrz2ZTB1nzgY7vFt0QcspDCdCd6IxYxOLWmAc8ZFMKZfpnA6Xe6fLg0CCfE8gGE/k2oqf7uwSalPJ/t7J8cn3JSQoUSS6NxEI2O0Gk+IbOq+rtXlkeOGpyQmESHKPUKVcvzhW6E7EaKtY9Uo22xxPuDwyHvK4lnFEroB8kce9Xa4EfvmDZqtCidrblnzxQ73dPo9ShpOtBr1Os8PlEjSpNXZnQtmZTvo8ei3qLtypNxiN1UiIDmj1AtoWi7a2pHaTOL/JYAhHt1nU7S4Xy+8R4PcAcDAFll69oXzXGg54Uoym3scaDiZR11gCv3RKhKQyvcFu9+Yy2UjU4ZTfeuEJfhOfT/LIpwgCvnkk0X3TJ+7+zECR4PHP4C80++MOm1bdJEA6fSDU1jG6fh8x7vC4nHaDvomn01NWs019UzaTa7/bYrM71qM1O/JP5OuAjDBIG3Nv6pPKzSKcaYgXlLAhK6en3ocaKpnYwMB1dobQF/bsO/aFbdsMS+gzxweKVhwUDVQNH73wiyYeCIIg0DM4gUjo41d9Yj4/Gi73tLZEI06HkTU6crnZ6guk80zaF7DZnz0UiU2MPT11B55CwVCJ1GlMRr1OiB6/pPa6XFarVt9EqpQmo8VMoYVcPBE4kkwbDKnkxMSxRCjg6YyGLJRMAvxhmNFxDL+yXt1J7iNHsDxW2rSiXn5dXBvGclNemavkxT26DUfEWlrPFvxz3LnKwnYbfP7W9rEdi9lowu2hKCkPHAErSv748x8JmvggUhz/KusbCD5JOnzecCiVbJ9obfa4lArEb/pfOoSC4fnWTDYW8/qNGrncYg740v3ZtN9rMeOO22fntm0LhBASC/WgSAwuV+oMZqu5uptHeD1uq1mnFRIqjdFktRmTHrfJIBEhpDMEw23tQ0wmm1sdX2huVmmiiR2Tp+Z6wSxRFrEMWahsZpSzI98FXFcBLaxlZv1/xt4QPLNhED11BDS4ILAL8AdeuPBC9SMK8Xlqj6u1ZWJszez3+H1Oh8ascri8IDt1FwNORW+S4ejHFPHM5Qkw0caZYm80rNUCPwDvxP0EfBCBRGKTORLdJjrLUrQEtrlAbsOmr/eC3oZoNgGaqhPXeDbNF1MfqxUkN+lvyK/xaDXEfyh8/k4wy/P7+wcSjNlCPIG0apcjFmlpYRJ+H0UJCYCX15/MtGWT6UDQaOJLfe621vGR8nBXVyxGUU9yftQf+YWV0KidjngMNLIlHqVtKLU91+4P6fQyCW1NJbbbsjaHQkXyhQKd2mGLK2Rek1GlkktVcpXCbPR7W010sbXZ7wXDJJXb6HiioAlZzEoFn/+QUurWGRRKsUwmV2nMlmCoiwJd94D0DJwXkG71A94MI8DPNXzBI9U/otAHj7r/1A3+gLCe/atXX2X5DB/yd8GijdcsGgf0X2nPGsC46kW7ZUZjEQI9dY+IjY3UmoAdgh2LVq84cr5h7j5XN3e4xqSnbR53dJfTgXDKYgbj6I7t9PsQKRCd+fLGCvlMs+1W/NlMIEC3GHXgLyOxzq7R9S9uWkO+WmekzBYwGg6zSSmPxWYiHqfJIJNGotPeSLR5Pbo5fWLyyfX7gAOnwCveSbawMSkitoRPG+jatJF6ZwNXDRPi5HNgU6O/uacJ5yGxiFXPeGc2EwnabYpbn3+CNYZwVgSmHY4K+u9yAyGZbO8DhYL8DNmyPuay0saQ2apSC5r02lCgo20MX7v8FafLY3fqDQJSr7OAomtjbq/RLJWj1uZP5YbwvwS6QTN4dqA7CZJzEjXgb4ht06w3zqCuYT29eaj7LzKs5vGQUqlQKBU//TPq94w4zmokj69VQY/ke38URSQiCJwnk8rlMqnwB8+h71BOB+3yeJy0w2WrhuEEXzQEQtEYhCZhP8hBg75c3al1uB3+iDUcjkVCARO+n/VIa8DnXYC0Fmy4ptMbcWoj9NNvYSqnxZ7rtFgjEDTMgcDO4rKu1aiVDweRS23WcLAtnYgHfLRV8zmTz59rGx6bnSoOMBD3Io01lxsZ/sQnpmYHitGwXqslqyeiyXSc8QV1eD9EJiqVjfYH0H/QVps5F2ccTi54E+u1tNUVDoejTo/OgEz6RGyg/8DY1COHD+U7LWZkpOKJ3r7JfXMG9Fegsm5Pe76kVitU/Ym41SKTwNkH4Ox7G94Y4fUjbvghZ/paqDGNWFQjqOvTpvepRVVbIUp2Zz918qXK4JAZ5/GbeHySj54FuDXxIeb9xYUx6CMFJNm9/6ZbHhoaRG9x+hSJl7qaWyIxl4uL+JWcx0l2pJIQfdlwR/Uf77sPhYIHTJRFp1coScCm1epyecmfVHdbzBYdpZuPRdCOyWduOpFNxAJHs2lwvqnxyduYYMjZE46aLGKJXpdMjHP+pQLW/A95e7DuuuT5m77zBuH0r/Q9aIeE34RQvv1MezYTjfg99AOBdKa7MDZx8ObR8WTaaDLYWponxpYXf2OmvzcaoYyyC02seQ6Gc7t7+1IZtw8/35VpZh4ZGUcGg9fLMOl8X76HSdtou609t3PH4sInnzx5YvdkNExZwtFcez4fCQWdDq3W4ezqmS6zZ4LIgvwC5LBieGETmbrdRbNExlr9k9dRznr521aUe736J7zCuUsfnDtHSmGWDzhxHjixfI1fy1xrdbaA+8aebUuI0uCPdwtG9Nf4OL2G7FOGIsWB2bl73ltZRa8q5S5Ha3ayv70tEbPbpOCAzZZItKW1JRQIef2Q7FFSOeRUkL319+7dXV4bHorF9Frea7hUZrVF4t0jza1uLwRmEM8jg87vSyVzvX292YzLgdDqZG9/MmW27Nv7VXc2FLHZVSo2BYqEOyRikQSGGPVKhVwskyjleq3F7PMmICvTThW6w0FIhZFaB4rbPmznHK9MChmq2eL1hsUisTBqtal1UrlCo9U7QG3GvMBT9jbhb2qSYBqigNKM+MRD1nXfGH7Ouj6zh0BWEER1z+9UmXOsPRqGGPEURBhDWIWVxZbY4qrA92pbn/Fs/sDBcyNcZDaCSvhSb0YkN1LbusFDz+ztzAdCGh16CSXi+0CP/F6rGXSNz+c34ZTLE4m1tPaf6x9AqIkvMfp9HW2A6ZWBookghaDbfD7+NJhriC+Fgi+GT5x8R4EUarPV6wv2JDO+gJXWQtyNZBKT0eNKJLMZWN9T3YU0ENck4jnjNp9fqfC6c7lJo8NudXj8bi/kTCo0MvRoNJvpuHP2YF/B406mSgbaaqE0alKo1VusYPovf/OHqxXizeHufoYBLyeFwCieGBpZaY0lvK0+v8EkFCO9NhYbGmSz/iTwOQG2z81yucECvbPOny0MbXAQl1s5ogHsLyfdHqNJKkOIpqLhnq7du1ZfPrpnX747GMJVj5zaNTY+Cs/E6Mjw6OjE2N7Tj/7mHbdVbl5auPno8s1rleO3sXoK/pG0ADoMgA5Q0EYysGF/2GuIpBm98C0qne0uFAe6LMXBbT3d2Yz7yfdQyXw/se53uI0muRL9llJBWwOBxKXB++FcpwBEz6Age5/I3pChUy0/bkHB6tvsnl7Y8zOg5V3snulrn9TWZKqRTGcaOeK1j13g1Uc62np7Bvr7CvkOJuF0iPkKlRkoYZbGJ10XDOFgd+euHYd//+BBRJAytyeZ7swX+gp97R3JlAN/y3xLf74D8tlkIp6IJuJMIms1he20XisWoZa2I0o4LBO3mlFx4LRWrdH1t3U0NydTMDYWi8UTyQfgrB3oTeIsvsKeFWXsAtRhw2M29OZjj8FZf6u6k3gQ5LvlJm/ToW3asA0XzmaPa5ZQNN+9a/fqq0f27enpCkOyLpUZTV5f8lXG46YgYEOCJlxz/+2fXKssLK8cuXm5snbr8dMPf3rXBCfyydGhkeGRsYldfcVtLL//DGIhVsaCjfxFQPT86OUfVQtWMmklz1/aSZ4/d66RwReBWh+81Jwt07jJ0NSi1+uTerTy/DaxRCYmuvftPXl62zbpmedvlMXzLlZvZeJMBFJx1NZ+qqUTos0bJe9AxbNAxb9B7KbjYrdGbLYZnSEGP/D2O6/fBVk1lxuJFHKlQqWQoN/9NgRcnXor7XCCemtpm91OW/X4axi68lPQs/8La0IOZ7/KszQsGqx6o412NWeyLbmuriEnZbGaVAaDcnh0ZICqfvTqGbAxQgGfRKRaYdAZdCp07OUDQyPpZrMVR02nCIS3ttwZJ6Prn6S8YDxsdJOItnpckLLiJ1leL0LU832QyhZkeB0bal+LddhULLMZaZMMFYv39k2Vjk/198cSehNCmqdeeUJM8pj4sbE28E0Ws+bxl9F795YO5NrNFqRS+NztbTsH9xOLl7/CBIKOg+EoWLhIsNg3R/SyVNzF3TVfZL2DHbHSBF1lECL81Q8eGrqA6AsX8Pxb6z9Fk+iDA9Vl3sXLJVxaja4/BOqNjhPbyUWYy92iIwir2UJ86+zEu+ufv2/8XWI7fmL9JH4CRoI1IHqA+9xI1h4QDZswXrcLhLxhHe4GihDwhcf6K9b83I34r/wIfwz806WdHEp3wwiWc8KNO3nwazg2hf9P2/q++VfAsd0GqK6qvrD+Q/Bp7Azelfd5Co5STA/H45G7f+/S0xreux/RoBpXfnjl5zw7bxR+9WFFbAn7DdgZGOHevGz/+CBMfbW92rgA2ZAaSmwE579ylRuuULmffPrBy/8jFvDTNpUCSdQOF5si5RLBkJVWqCSQTccizZmOXqmgSSJTa4wus1VnVKikEos5ZbNQep1GJUGv1earJBqH8/rp4ND6JJQlzk41XD2VV2wSiY2mQKAz0VXqzPv8MEdCUaFgR7xzOt/pdSvl1ec6ww69TiaF2FMkMVKQeOeCBYCfRGSmQoF89WFuhVAH0/nxK4S6KSO60XRWfn8N2vu3IL+d8LLJPcgst9rQDRfSSMsZu2AjL9jI+LS6LfIg6nEHexcwlQ2HbbRCifMKEO2pNXZ7IBQyMalkCJJVaUFqt8XCrS15JKTeDjucRpNCKeqRQDzhD0cDLrvdZJTLEY738CDgc9oH3qaqO5UKqyUUTCnUCg3aL5VJxDEn51fwe8GDW0yhYDuagpDQ79VqT4skOr3bk6o+2RyJ2p06vRAXqjQmi9MTlknk0uoTWpVGngeenAZugK8mfwT4TzZuJdKZhjEmNoPhDft8dXIL8Cc6z4sgWhQBDQajSfvhvaNcpovzcMiJhE1CsfD8Y4j/kz3sXStJ6GBrtRwZ/r76ETED7AgnEtlkJM64qwPo63Kt2qgzGQyZXCwZTqaYy+d4hare4Pa5Q/FIyO31mNB7H/0h2N8fVyeJn4MEIbslMpzB3bhcbASD3DV744LE6czYE3Xda1jCWjTPv0aiXi319t5EXNMjspp9nmg47LLZuYAEQu8eEkcIOZzFtykkXOnqZO8dC9CvUdttIX/UlGJSQRC6pCCz2SG6z3VWd54OBw+jvS3RsNMBsgIpKC2UxxkVyyDO2qPRKJV5C3W6rf2wUqVWVx+TSaSimN2p1Qsl6F6I/U2A3o7qF3syWZ9fq0csdgHA5ArYPiEb7SDW+YK1ClBEYf0ERQyaLn8D/wvqXsJz+t7L3z/Njh+HHOi3Qbq919/tZTbu9hqXAtdbH/DvYBEbCTIHdDKriSYGts2Ub1sZhDRFp0d/gLMJRyxSLLS3xaJOuxxCJps9FusI+yC3sVqp514k7Ob1e1YyQ4Mze/t6EzGTEb1Ynphs63A4TcZoqD3Xp/W7vGYbRMR6jd/X2jxgscT9PptVqUACoVQGmMG/e391pxu02mAKgm8vhuBAV94FbvysZrvt9gY7SNOlb5qJ6rreSrxGXUZE6bOk6dzpS//A3tSD5t9NDmAp1uqjhoO+QV7RuIy75u80KkgktrLpmoSjkczgd+QTcafDaJDjZBMPkgeS+CrJJg8iseSnz09C0sHjNeEutzccTWY62Zv99B23o6dFPFKuZK/qmUIyDTmFVSsh+SgaLrc0Qz7h9ZIDiFVssNhGC2UyqBSkSA0GOJboupRGLxitZspiYbw+IwXgmhh/auoOZPzs2fV346GAqzsatpglEqMpmR4eW2yOJfyVbLNGnYhP7mBRwt4XPVe7M3BfczGUue56l0uBtx5dz996gwdCIKr+ZKqjs7dv6PDQEMMYTMhgz2bGR5cW7p3p641GTEbJ15XNrUt7Cn1MCrKO2g1D593RUNDloih5vvoDG3rnHgNF6fRgB50OiDomDx+6/ck7T+zeGQ4jsOrhXHtPdrE953B290yXT+YzzfHHhkeFAqlIJhGikcdq961Qvvdh6O/2y3O/YP8h4drPlXerk+CrL8I4/kYnzOGfX/88IOv9Kx1XAjy6dnO75ZMk38C6yTeuXIGagpKF8iKUZfINJK7VmBlKP5Th2vuVy1B/B8oiFHd97qehHICyBqVYr6egeOtrDsF67F4M1OxYD9TtUD8I5fX62l+Btf61vu6d8Pux+ti7oOyCQsLv/wD1W1D00H4Paj+UcWi/U6d1Dc6kgWcYewD7WzSAHkAf4CJIdzHiBKknp8h/52l4n+P9jF/kf0vQJ/ia4GLTkab7hQXhPcKvCV8ReUUp0VHRGdFfiD4Ud4nvET8u/n3xn4vfEf8/iUDyXel+6TdkadmQ7CXZ2/KS/GKNv+BrTrMRWf3t2o8ZTW70T2Gv1dsIk6PuehvH+KhUbxMQaj5Tb5OYDl2ut3mYDI/X23xMiy/U2wLsVuJYvd2EaUhLvS3EZORIvS0G+X2+3pZgEZ6m3pZiy3xnvS3D2gVK2B2RYH2wVzlK2DbCrMhZb+OYBI3X2wTWhebqbRILoT+vt3mYGVfX23wsgHfW2wLs5/id9XYT5iM+qLeFQFui3hYDTvbX2xJsH/n1eluK/W9ed70tw27nPwiavYytYMexVWwem8XmsApGQ3w6jfmhTmAxeDLQGsPK2AzU/VgJRoSgxUaw01gEWnlsAR56ywpr3FsZ6jLUR7i57MhBmNWFFWC1PDYB7WFsCHrnufElKBUYXYKxZWwR6lXsMPQtYwd/6f5Y9/LK8dX52bkK7Zv204lYLEOPlWfo/lIlRBeXpiN0fmGB5gas0avltfLqkfJMhB4sdhXG8hPF4SF6fo0u0ZXV0kx5sbR6mF4+ePV8DMiexw5wR2E3nweSloCA7Vy9DD/PHyivlirzy0v09uUl6CjCqBKwZJ7980CxUlqYhzoPp5yGRZa4863CAmGOI79safrqpfJr0+WlmfIqHaav2ZNu7PJfWu/jFpnkFljbmB4HNrMwiLCh4GR5dY2dEY/EMpHkjXds7Bf+uP3Y7cK/nOZfDxU1/M1yq1S4tWsj57m1d8CIcW7UCDeTlUqF222JGzVxgx2HYceD3DnKW0ZOc2uzZ6ytvAztubp8D2G3cDqxBiPZeY2zrbGo3cL7X4E/AO3s/FqlvAqd80v0jsh4hB4pVcpLFbq0NENPbEwcPnhwfrrMdU6XVyslGLxcmQO4HLpldX5tZn6a3W0tciMoskZgFczA8lVC2ARc9/LqynKNXAw4x3LsCMeH7dzwCqfr3JTxSvlImd5eqlTKa+zgOe5n9h/xovAc5Z4ITLqagun6/hGutQgjsblKZaUlGj169GikVCdjGqiITC8vRv/7y1bA0q1wWChzAJ+FsTWwR7g1FwGrv3TryvGV8kx5bX52CfQgMldZXKgBuLbtWh1mt2zhbQ0QH6fqvVxdM5kLV63Dwpmt2bmN467VD3yQ26cmrRX4XgawlTmIRbjeWY4p8wDceWhtpY+F6Wy971pqGrRcfR6AKvBgDdB3C4cFgNRW89O7vASGdaE2JkSvlcs0y781YODB8gyAZmV1+VB5uhJZXp2NHp0/PB+trTe/NBvdXIZdpb4P9v/3tL8u8dh/AjSyNN5lbmRzdHJlYW0KZW5kb2JqCjYxIDAgb2JqCjcwNDAKZW5kb2JqCjU5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0Jhc2VGb250IC9MaWJlcmF0aW9uTW9uby1JdGFsaWMKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChJZGVudGl0eSkgL1N1cHBsZW1lbnQgMCA+PgovRm9udERlc2NyaXB0b3IgNTcgMCBSCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0RXIDU5NSA+PgplbmRvYmoKNjAgMCBvYmoKPDwgL0xlbmd0aCA3MjEgPj4Kc3RyZWFtCi9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgoxMiBkaWN0IGJlZ2luCmJlZ2luY21hcAovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWYKL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmCi9DTWFwVHlwZSAyIGRlZgoxIGJlZ2luY29kZXNwYWNlcmFuZ2UKPDAwMDA+IDxGRkZGPgplbmRjb2Rlc3BhY2VyYW5nZQoyIGJlZ2luYmZyYW5nZQo8MDAwMD4gPDAwMDA+IDwwMDAwPgo8MDAwMT4gPDAwMzM+IFs8MDAwOT4gPDAwMjM+IDwwMDUwPiA8MDA3Mj4gPDAwNkY+IDwwMDc0PiA8MDA2Mz4gPDAwNkM+IDwwMDYxPiA8MDA2RT4gPDAwNjQ+IDwwMDcwPiA8MDA2Nj4gPDAwNzM+IDwwMDY5PiA8MDA2RD4gPDAwNzU+IDwwMDc3PiA8MDA2NT4gPDAwNjI+IDwwMDQzPiA8MDA0OT4gPDAwNTM+IDwwMDQ1PiA8MDA2Nz4gPDAwMjg+IDwwMDMxPiA8MDAyRT4gPDAwMzI+IDwwMDJEPiA8MDAyOT4gPDAwNTQ+IDwwMDY4PiA8MDA3Nj4gPDAwNzk+IDwwMDU1PiA8MDA2Qj4gPDAwMjI+IDwwMDNBPiA8MDA0Qz4gPDAwNDY+IDwwMDJGPiA8MDAyNT4gPDAwN0I+IDwwMDREPiA8MDA3RD4gPDAwN0E+IDwwMDM1PiA8MDA1QT4gPDAwNzE+IDwwMDQ3PiBdCmVuZGJmcmFuZ2UKZW5kY21hcApDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AKZW5kCmVuZAplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0xpYmVyYXRpb25Nb25vLUl0YWxpYwovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbNTkgMCBSXQovVG9Vbmljb2RlIDYwIDAgUj4+CmVuZG9iago2MiAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9RS0NBQUErVGVYR3lyZUhlcm9zLUl0YWxpYwovRmxhZ3MgNCAKL0ZvbnRCQm94IFstNTQ5IC0yODQgMTM3NSAxMTI2IF0KL0l0YWxpY0FuZ2xlIDAgCi9Bc2NlbnQgMTEyNiAKL0Rlc2NlbnQgLTI4NCAKL0NhcEhlaWdodCAxMTI2IAovU3RlbVYgNTAgCi9Gb250RmlsZTIgNjMgMCBSCj4+IGVuZG9iago2MyAwIG9iago8PAovTGVuZ3RoMSAzMzkyIAovTGVuZ3RoIDY2IDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJyNVntsE/cd//7uznYISUjjJA4kgTOOHWiwndiOTUICDY+EvENikky84sTnR/y4zHchSSkDymtlQGlhq0QRhVZNGYoqpnaUMTQK3cTaaUMtihiom4bY1DH1jwppDyXE2fd3dkLYOmm/891939/v5/v93fmAAEAK7AUWoLXDauu/+PYRlBzFs8cfHvHpLw/mIf01gMoZEDxeP6l3AqiLUOYMoCClXlOI/FbkiwIReXjNMmY58nuRrwqLfZ6U11MzkL+GPB/xDA9AFrQj/yXlo56I8PPQx58j/wTPtcAyOnICVJDGHGG6p7+BRnqHBrIdbKQSPVCVWDzAYZizNjd2tQABfpJjM6eXwa85HynggZykOiaNuae4cEAIh2BrVeOQBkAMhDWQ5wzP6YnWnlI7PvUX96+mPviaaJlN7s9V45PruWv0nCihdwwzjRi4O+irgVQAPfratXotqyfcndv/ePL+b54wG11N8WJyWDU+UUJuxNcwPcxF9INurPsT9FsGdgCjyVTucDmdLofJZCp2KoRBT0Pl5urUao0aV446V2dnKWXQU7kqK1uXrtWR9AKr4Xi4iFz9ZKotfvPGK+RRX4iQFE12dgoiU32VSlZ0HeiOF0fJ3UOiNWuloWht4IeLeYe5JK/5zN6286cnSpj9pKUxf7W+uavMoNOVLOaG6oa32BiGbMOGQDlOgcFK5yndwZ+dELuauRx/Eofx+M2PCEPi97A1Lu5TbMvVyVr08SFEL/qwio+d8X6MpdEWoO7F6fvqLNUExU30Gr0CzmAyuRxZiDsXl85eXm6ijVAnly4bpfZc2hedXfV46jUjuZW2MPTG5b7xL4j3yr9OtRzwrmSvkrrD14f910ZPDO+o0ZPWk5/taj6yb39D6gib/Z5TOC9Vk0d3T5O8P+xjSEn7cIsuzffecA0hZrd09NzYh93H7p9qJNm29tWXKOpMnCvdE/NxqhS0lk7WpWXPxh+QW3+cun9lLH5zrPvLR8wviBRfy/bidM99ODWGk904/YCr5tqgWEFIpzoLJjFIBY2NojEg8qWmcpPTZdQ7nQp8HDdXyKVnEFLVf7x9/b6dXqNptXmhq/+NHVtGv9+7cMz5lm/XQYZLYfZMjWbV98ovRPYQHMFX+Q27Suq/t8NFyJLKTTb7nmNHV286Hqm2bjvo7vEfOpD3fMGpdd91WwhzSF6Qj4VNX4zXcO1cGeQkd71Wqa5YbSrW5Oa6cp0urv1yfOn2Kz/ozykqKinILDLpF5kLw+/WcGVPrrM1k7dG9c/nzcM9pj6dhrdwDJ+GC/EmrgGx54IJoz7F7aLdw6iIMUuRIOxiRwIx10Bs2/a3V0j9bTnG0fj1sd2Wo5H99852fYAtONElvUyqIq91SnuZG1tOBlYSstjVUDI2kc/UbeskRPyMpErhGz/qPPRS5NOzWwlzEiegn/4TZ8Qq1kAbTs+F2dQuk0tLOzyzsTR2p9OubDa1RjM7GrzkzOw02gQ6JDaxQdXKmGgI9ptFGZmqVoawuzmOxWdh24HW308VjhW+EjO3VulpQ9QLSxvL/a8KzUXtbvLmsbKe3v4qhnQ2zsvINpwxzt8Y3ru+u4ecfKeuq8J2kCVMddo8pkmry5if4thcjRF+crFnO9EWWQvSFxn5kvxMdn5Wnj7X8fp3XnqZpC6psi1ZbcH0KUzupbLOF4rImpodId289LR0xF6MT95C1QV88jQAdq2BJQaN/c7DsYfk8bh5nCubvK26cAf3N9qxOuxRJt2j2JKlypRYO3bJxTw25hRmmjt2bjWceTg2ZPztefbM+wxLdBtCFyZvM+af/oz+PyTPXZce3N2xoOrv9A/jPxfuhxp8s06gnXpWiD6cL/5nwEdr8szU8pT1SqS5awFTPR3XHCOMqnP6quoWdOJpZyrAq66AEXxZZ3AS1HIYnamYjnPS9CjyS8gtMOKr1ahEWAyV8Cr8GD4iqaSY7CLv4vFXxse8yLypZFsAm7BXyWr+a2nhb7PyR7M2BDKQS9AM4vlnkmYx21SS5iCH5CdpFVSS0iStBi3pT9Ia2ER2J2gCShwWCEffrl+Q3yVpAnnsuSTNQBp7JUmzUMX+MklzYOIgSatA5kxJWj1HroG3udNJOhMKVFUJGvNizHXiwEgs6A/IvK201LmCXit4nxjj3UI3XzcSE3hhWBaiUlCMSnzvCL/Wwjd4+kLikBQK8p6ol2+wNFv4FnEIhUF+mRjle4WAJ+zjRZ8SYlASYhLvj4mDA9JyC+8OBCV+SIyFeLzHhLDgkQQvPxj1CjFeDgh83eYON18rRmW+KdiHaQXebOZ5SRD4gCwPVFqt8qDfIsb8Vh/aSNZwwkiyUj9zbWuL29xUv25DS8cGizwsKzi8guwJhiXLLJ6NQkyU6mUP+tospaWOVfQTYRWqqVZRmhPaZz34hLAT4WAv+IRrW0eSCIhynxjdyZdZSi2OilURT0gQZZ8lHOxFvaXMsbLc/i0Z2hT82AcfhS8qHXg6EEnok2kqioJqKGRejnm8QsSDDfTIcizYO6iYREUZOyFZYB2IMAAjEIMg+CEAMn7d2KAUDyesmKUrkPKhZQzvbhDwO4SHOsVLQEqAYfQTIAoSRhGVOw+9qOdhLVjw2gAe6IMQ6oZQF0IrHiVR8Co6CzQrVi2KPmFJLZYpsWgkASvzQBhr4FHmm1PFIMYTsA6a0Y93ESUDyC1XIrrRL6johpTqQ0gleFp5GE+P4u9VItF6BAWjjH6CgnEzdGAUHmqVWmh3mjBCXxIttTHjweNBOcrTHspYQyVY8ZAxrh9rodn9yPuScSSkw89EopKZfGbM14r9oFQT1OOUNiDXgVcL+g4rdczMg9YsI44gxpNQn+jMzHQ2KohE1NQrVomcNrSjc3XAKszYCF0YfdX/9DQ/4/v/WXUmpxJMznBuxjZE8qwkgFYyelHbnagrU3QW1FWgNoJRQxiP2vhQSjP0Jv0taOuAlfi9ace4TyeamLBvdp7inKl+256nPn1IzdQ7090ZH9/s/GWUe5Su07oSe8qjzDym1DU4J0pUqTkx5aezmfvsPO0f/BtcP+mEZW5kc3RyZWFtCmVuZG9iago2NiAwIG9iagoyMjk4CmVuZG9iago2NCAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9CYXNlRm9udCAvVGVYR3lyZUhlcm9zLUl0YWxpYwovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKElkZW50aXR5KSAvU3VwcGxlbWVudCAwID4+Ci9Gb250RGVzY3JpcHRvciA2MiAwIFIKL0NJRFRvR0lETWFwIC9JZGVudGl0eQovVyBbMCBbMjc4IDkzNiA2NjIgNzE2IDcxNiAyNzYgNzcyIDQ5NiA1NTIgNDk2IDI3NiA1NTIgNTUyIDIyMCAzMzAgXQpdCj4+CmVuZG9iago2NSAwIG9iago8PCAvTGVuZ3RoIDQ2MiA+PgpzdHJlYW0KL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luCjEyIGRpY3QgYmVnaW4KYmVnaW5jbWFwCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+IGRlZgovQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWYKL0NNYXBUeXBlIDIgZGVmCjEgYmVnaW5jb2Rlc3BhY2VyYW5nZQo8MDAwMD4gPEZGRkY+CmVuZGNvZGVzcGFjZXJhbmdlCjIgYmVnaW5iZnJhbmdlCjwwMDAwPiA8MDAwMD4gPDAwMDA+CjwwMDAxPiA8MDAwRT4gWzwwMDU3PiA8MDA0MT4gPDAwNTI+IDwwMDRFPiA8MDA0OT4gPDAwNDc+IDwwMDZCPiA8MDA2NT4gPDAwNzk+IDwwMDA5PiA8MDA3MD4gPDAwNjE+IDwwMDY5PiA8MDA3Mj4gXQplbmRiZnJhbmdlCmVuZGNtYXAKQ01hcE5hbWUgY3VycmVudGRpY3QgL0NNYXAgZGVmaW5lcmVzb3VyY2UgcG9wCmVuZAplbmQKZW5kc3RyZWFtCmVuZG9iagoyMSAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTAKL0Jhc2VGb250IC9UZVhHeXJlSGVyb3MtSXRhbGljCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFs2NCAwIFJdCi9Ub1VuaWNvZGUgNjUgMCBSPj4KZW5kb2JqCjY3IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1FQQ0FBQStUZVhHeXJlSGVyb3MtUmVndWxhcgovRmxhZ3MgNCAKL0ZvbnRCQm94IFstNTI5IC0yODQgMTM1MyAxMTQ4IF0KL0l0YWxpY0FuZ2xlIDAgCi9Bc2NlbnQgMTE0OCAKL0Rlc2NlbnQgLTI4NCAKL0NhcEhlaWdodCAxMTQ4IAovU3RlbVYgNTAgCi9Gb250RmlsZTIgNjggMCBSCj4+IGVuZG9iago2OCAwIG9iago8PAovTGVuZ3RoMSA3Mzc2IAovTGVuZ3RoIDcxIDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJyNOAlYU1fW99z3XgKtVVkSnLHOBCNExLCIhAIqsqrsKAKtooAkIZAQJEFAtGgtouKGTgG3jqVqMaLVKbb9nRa1Tmv7O+o4yjgtf6ft1BmntdP6d7GOkMec+xIodvp/3/+Sm3eXc849+z03BAghHmQd4QjJWhQ6o/xo5yGc2YqtyGiuN7zt+WU/9r8gxOdcmb641FC4QEeIbzfO6cpwQn7KYwKOb+F4SpnFXifEKi8TovDA8bdm64rids3+5TgexPEaS3FdFYknCYQo63Csqiy26H/e51yM4w5CZDrCUSXsJAIZQ7fQAoRIc71hGZkBMTjGJdejIqSZjHoWp+VnkrlENcBz44emknf5NfC4isButkbH0PclFJ5Q0oDUsoUulFZOiL+X2ssnUq2AaMf5Pj584Cp/va8PAUjK0EdcN59NQnEwM1CjCQyM0umilEq/iMBAjQwfhUyJIz+lUiGTqWWBOKtWKqOUOp2O6259/pBpOUB9ucHC93DvnlnebomGydkbig7mZ9HmlbFPJgTJe4TrN0pftM8B7armQI3fgujUfID83OePAYTm1S+IK0rVKTXKOdEZi2C8NmvOmZcpaPMakP+8oU/4+XwOCSFxhARE4u6TAyO9cP9AmTxCp4tArhRKmUzOmMQfhVIZMYNxzl7AJpHbyEAdioMC8fPHjZdpQ+HyO29/4tHt2VBnbwCYnTxjycqUUL/C5fBfR4y988fOi/GfMFMUIXKJbY7BAg2bEgqipyn59RwEB9G87W0Ah18vWgaL0rW6IG9hjNfYcR5Tt5Y898LC9LkxPnJYHVsYr4aMgoV5vp6PPTruUabfHYRwf0P9+jEbBDL1TZbJI9VeEV4zdS5Fe3F/g/CCp9NrjyY97wjKNCfoV1EuOMGcPg30lT0DV2l2TlNRBNCqYufP0MRkpZjAhyJFXxKIG0gkZW6SaJgZSFWymxrn3VsolXwoxNU7yq3HZu1zJPy6zHi0Pv4UhORUJ7f8GoKyLCkp1TlaOrb5RnsWQMmyzgdeNC43A9Jbr2ws3F0eBVfPLttjiQWItrQzmVrwJ1LoY3HE/AoiHULfg2C2Ejf0CXcNefsFDtQymUbiwe1NbnfyZRZC57nW7bfBvHM/7Nte/ox3t8/RXxVUnnw6IaHhpPX8X2HlehuFK+f++310LuuFXeEA2e19TRuutKbBDbbPpKGvqYdQQJTIQaRMIwuM8opADeBHEeHlyzyAeviHR02Fkycdra0mw6SEHZ4AQU/Qsy2gEd9vGbyXmydDXaYOfcz7Ir/jyOMuXaJ1ZJy3t5/SrUY5Tkk65H0h4Y1/VPe8ATD4j6pXGhNOQXD99tYXAF5obT1Ix2/5019oRr/4v+KXYj9AWuvV5uVtBwCuv/NWH6V/Ynazoj+HotZ8ydRhu6ErIM8RkZLPDtttMq5EMsv5jVjuqMnaGePYM+ullaZja3DnkIW25BRLVpBkOjuaLuCZyzvTIP9JGvkgeO/yp3L29q0ubLPERFvalhZ2WKIoxFp+xXhYiDxMlOwzXeJB87BZkIkoZjbGgibAVyb314140ERQKB7Pc7RXn16XlNDYU71k7yvq7oBtxqSVi8OAFgE4j/DhOeb4uIrsELhtOxibYKyiaLY/Ptv0h9a08O1HypfBtCc3FXaAB5dSszgEIGxxJeMpcuhj7t6wXpg/PcSSUhel4B7Wi8QPd88RdbS83FE/N67+eKXlcJI3BGdZEhfYFwYHL7TPS7JmTRP6nH05uQCZrVcaN//5VxnwVOnz1HfZc6aoqIr25YVtphiAGJdHY5TSVtTLeObZo2I0ELejrYpJ4xa1zNvvgMlZTdz+E5QDc81bGJjap5qXhiG2L8b4p3w4kTGvB/xGcJ+eE6+Jn5yH+t/y4YN7OcPAVYRrxczPvC3IlQuYrzEHU0+W/TgljOrKfGF/m+7JjPkBYS2GitqUyfsdgclLdMuN4AhMWaorNAAXsHMveGvipi/OSkwMa0fGOqMN6dMBrEbnpOH+Sr1zEtN2rBjPfYY8BJIZmFUxXnD/0dpGdbMhhhTL89KMjnNlE4kh7rMD8Z16Y1d9fHz9C0UlddnTIXhhzYKyreNPjD3SUbT2tD36BO3YtGMfwIGWlo6T3Pp9hYWwqOPGM+uu7MqAlAUR881thcEAi0r2rQ2GOTvuUt+3rrnj5ANmiwBkc7zQz2IbItWRuqgZSr9IiUuFgoV3hBcd/xtY5amYNCl4Qt2zO3Y4uCMtXWYA2CYI0Gh/tWXwKe7IcO79FD1r4qjcK3OFnNeII2H+/RTCChoyo5fnpE1xODQZ5kRt1mw1cMGJ5rRpoAhKDqVRD4LdaRgmzsyaiYkYSPHQB0K58IBMduW6hzx0Bst4U5gbU4XMG9XIC+W/855buq2w+lRjYlzD8crjF9QXtOJfvzs2dGwx5B8bPEwnU/+K/Ybw7AN/2bb988NPwotH7zkBGj8UPz50WPzsD9WAe2K9AS2jMm9L73DmLRn6gL+P3MxwxXUAnuPDLhQROBLlVBDwIMfAZqxGqZnNpRODvw+HO8Qtm6poaH5Dxm/Ow2lI3f7e+jW/a5kPEAi2rRvfPFfxvGkmnF504P2mbR/szoS9W84H61XGvKjilCCA/bssx2rjAOJrj5SKX6WVBNTmrWmG8MINOc++s34uxK06hDy+Tgh/G7l/lGVtf6/hxt8e3MlpB69z6QPfdVHSBR92MZkoOYPwdxF+DFG4pPJHw/m7M6UakTEt3aVffuhsPwt9SzuqZr9DOzaLNti2uYP/5fVPKBqtflbVfsPazVgYbWZa+g3+NBOX/lg11NznqoKaMAf1YwRPcOnVnfixNxwVLAv1O2CafaOxBhyhBY3ZMSX5GRo+3Hkyd+MODLUV9PZgX5IlQwPK0DTdEaS5H2u4YOTe020r5nUgBPcMfnOlh+OFvoFY/u0HwfyZgRQmqxqhoxFaTh5BeJZDfPx9OH8fIdr57T3nF5cO0Ll7rohT7jF7w3kxjhbRLoYnSYScu6o8lMlnWK6+Pm6pSzqkzb2HMEzv4MpQgJ7MvSdug7JzIj4XwCg2vQVeMIYGU5nYAE3Or50fwn6xlOEHYc64jvjew/lNzs4IjcKVnrnrr4s3xX++CuXxyjmRAZE/06mf2q7FtPcmlzhwyREdDo/tHTsGyu1ISYtShrs9YBQnQrjzLty/JTaK62/DV867t2EvdFCR3nS+SlOdQU5Krc5WxslezKB+kkegTpECcwgk4CXzE78XM8UU8X4PdL0Lh1BLXwi+qN1PByaxxnCx1ueTEFdweZ/ai09y/qK3S9CiswGpxVV+FGdSkogCnhdToeZ/xBiH4wiU016widFcBZqg85DzjORR4nXYjB71GEqGmo/A4ELnUWAJuvlmw2OPh6orzP73+gJ084J8ILOZYSDvggO1OYZpk+PYF43tEyFgZf7Ha5f734Qnzl19/4JLgZISr3Kpg68iJgYF3yv5CGZGfwUTnu8dsMAXvYK2q+vBdUHL6LeJmTQXoRTuKsOVkdxJHnORH81NNs2bMmWeKXllZkO+VpvfkClmWu58/681q+9/f8dquDMo1jUMkYHPS5EaLtEx0unsrlnUSm+ln1RzR7DigI6B0ILV6VXN5ikAU+aXJValry4IpeNXi4N3DB+J2+43rEGi5tLPB0Sk9hTmzG7MUlrJfgp/xU+c7MP5isfcyfhlPuYndDtb4SLMW+swrLu4ad6ClnN1ua3WNK8LyrKDNxqPi/deW77i9MCetgFLKOf7UpDhUF1cXufHWzbdOrwE7xmLa+ZXYdkCsPoD8cOXToh/v2SBlavfZto6MdQvBKF8GPngjnx2yYkcjn2WbYSgsxDZdnrxVr3ubObuGxs33GjPgYv82IGvM2obAabm1C9iA9ur6xKT1p9GQkN3h27SFFeeZqFMU1aKE6vQKSmrd8QE7p5Uv0+V9lT8uN7x8vrJeqdj9svl5mMN8XNqHWbrC7NGlzsLEiuzpokJwlc7cp8EyGn/U9Ozl1sXQG6+8zXuD8t2uwqeJe3lWPDEWjpQas1QP1eG/PmNSM2Kvkh04BGhubJe+MWsXJ3F1qsz7Skt3ocXgEY+b+BuYWPGZNjybF790l1GXXTlPqbFa5iKLgrdUu7yklxNju5JL9b6RWSuN0C80J1rjPF/dP3APUxFJI1VoQitJmF4k5XunVKdGfhQNYpO5vcDN6NKcT8ft5U0buXwE9eu1aWHKADm2g4WFR+smeOjzXhi7RpIfuYVS3nP+vl3aLPN3gzQbLdvpBEwvaElsbIevcGavGn1dNhb+/IsVXzywsjc7cZovOQYt+dGLEyJ9591YpUBL65z7J30rhHB601lDZQ2lDtt8WUWAI31mXVmDVCLQbr5oGBdGNWeUnaRwhMUXJfTQNcOfkTznU+3cXz7c4PiXoTFekRIRe17DOdTDGQh9ZaYJ6beoXFnsW4NojcHa1jyI3SoX4yX7vGPES/EQ2spZRqWe/Hgdt/oIS4jaOwEn53P+fV9JIwfiMhIkWE1y8FKmQoPACnryq2urOnOuWqWdSPk1j7xn2L3ZfG0eLsPGq9BJhRcw4MpiX+DNUyflwYi0WN7cV+GP4lomHTMTC5b4UE8cior5XKZ0o/zleEYR0rBOlGt8ATqrc2MXVMF9LN+Z9ZZuPN0PVA6QTFhR5sYAZczq8pCvabHl6YteXrxrImxxxrPXwY8tTes39yUsi6ED352LUKri5GHTIzTu5g5fBgPEEhZdeXOEHyEborOW/MTQSPcBWOv+P2hTvH+WYPhLHi+eAg83zT0Qsa2t2rqL2xLTWu5UFf3u5Z0er0HNDftAPYb4ocvnxJvXTKD9TIoHJv6D+TmPv9Ry5a/vbQUYOnRfzD/7cQ8PIj68MZbY9Cw/0bNDJR0IdUnnNJdn8h9JLakPjrq4IZtpSaIrT5kcnbSztJO25wh2Llf3AEr9++EePBP0CeKoXAtUZ/gD46Nx6PCXrTlbEanfBA8x7aPfmNbDf3QUO00RRWmBFIKQSlLme8hP0LSf55dQpJzDy36zjmht/dbOparoUXOMfRbVO8j3zopw3MgnsaNhzj+Ep6/l6A56yS9vRxBR2ygTYjQ5SxgtUa+O25/iXE7/M+D3Nt7pMZUS/Uu9fb70WXWZQ68QSau6iz+8yp6+MDyp/16xqWUtyxcd74pAb76l/FE47zXMaOVzZ5rzg7GO3/ShufgQumR2gS8X8Mj8DhAdVnB1pJIKH9P7H9TdIidkNx4alnyyoXB2sX2eZtqsQY9yHiMRtsESZnoMen+4KUG6aDU+AMfdLPJaab6nh4xGs+SpZ3ciUHrWfEQ9miD63+NSN6fu8T0AVKF4D5j/cWGrawm2gpntkKTe4B7FaA+xgrHcS92V6GCjHqN947QeXPjqcbVn+HNjwUx8Iuv7t75+7evtbbt2Nm6q3UXPUO/ARA3i7vFHWILQBXUi78X/0LxAIVgmAq/FD8h7L9KbFeGfvvK8nGzvmN/XP74YZkB4/oBwslGJhGHXyPeIijEwNvOe3KLRGn0M5vOHhJp9JAIF0k9T0gSbyO52LZhs+LcZp7BRJOJOJ6PzYItG1sEdSAMId4yB9mB42iEUTM84SIpwv4lIY8UYXsV2+s4PolrG3BtL479pTG6GTYNjoORRgeud+K4hq0h3CP8pyQI99iNLV0WTQpwrhv5/JLtjXAB+L6KLZXxhzR+BheH3pdvI8EI9wbCp+PcQaldJF0Il4ctiu9GebDvlt2HFJEL5AvQQgxUwi54lz5Cc2kbPU3f4x7llnLruZPc59z3/AK+mN/Ct/Hn+Jv8N4IgBGC+Lhc2Ce3CK8Lvhc+EQZlalirbLeuV/V4+Vq6TZ8hfk1+W3/IQPAI8jB7HPb7z9PIM8mzw3ON5yvNjyQKzSTyrBlwW+o/Hh3w+Mv/ZCAyQsThy9SlWfd+7+xxGoOju86NgBBIDk9x9GfGFfHdfTnKgwtUHItHhCPB4UsEf4Q13H8gEbru7T8lYvEC7+hyZw/W4+zyZyn3t7gvEzv/c3ZeNmpejTYfpjCePC2GuPu6LNBOtVfXVJmOZXTUjLEw3nf1GqwzWalWuvkA1r75ar9LX2fWVNpO10qYqqVclhKhSi1dUWGttFSZVcWWpKjUkI0SVaa3FSZNqqrVSVaIvKzYbVFaDRKLGpq+2qYzV1poqW1CIKrfMZFPVWqsrVPiu1pv1xTZ9qaqmslRfrbKX6VXzFi/KVaVYK+2qdNMK3Fav0mpVKpteryqz26tiQkPtNcYQa7Ux1IAwtlCzC8gWyvC0KVmZudr0BYnJmYuSQ+x1dkmOUr292GS2hYzIM19fbbUt1BtrzMXVM0LCwmbGsv/vY3GdLUurWvdyHvKOgqtcYNmL3J0yq32FtXKVKjwkLGRmdKyluEJvtRtCzKYSXA8Jn/lEZMRPUcuWpEWpDUxYqyTvD+q36VfY2V6MZ7bCBFTZq4tL9ZZiVFex3V5tKqmRQCqtdpTbFkISiZVUkXpSTUzESMqInajIDDwJwoiOTB/pR2PPgJDV+M4lelKA73kSlh57elKHeHpSSWxIxSq9VaQE11UkgYTgbyopJitIBa7V4loFQqlwppKUSmshJEOCypTWXZAMYqpEi1HSI2fFxIw8qHDOMIqLGqSnRz7YjkZ8W3GmCkdBEsVcxDNJa7US9xXYc40Z52ZsxRJ+qUSJ8aOXZLQjnl6ScTFZhFRUJEXihWknHSmscEvLYLT4UeGHjdiY6dCOPMSQUPzYka4ReWG7G3FscNOxYd/8ECU2M7yfFvfLQn2wXjpZgFZKxtEi/A1B3DqJj2F7MJ7tKIcJ6dlw3aWZYevMlySy4spC7BmRGzPCVqNdQyTLziSxuGcayUf6sf8nrvZH2P9fuDy3bUxuS47eNRvleXimDKHsqBEGuwrXwqW1EFyLxlULUqxAegzGgLNMeyVu/BCEnUmeIJEkAun+YFeXnQ0jVrWOsu1PeT7DWYG9YX6HdTyMYxjxAjvOF0u6t0iSVkgebZfmGV81o6hUSjy7bP2DhUZH0A8aJP8G5Cl0R2VuZHN0cmVhbQplbmRvYmoKNzEgMCBvYmoKNTI3MgplbmRvYmoKNjkgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQmFzZUZvbnQgL1RlWEd5cmVIZXJvcy1SZWd1bGFyCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSWRlbnRpdHkpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDY3IDAgUgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9XIFswIFsyNzggMjc2IDIyMCA0OTYgNTUyIDU1MiA1NTIgMjIwIDQ5NiAyNzYgNTUyIDU1MiA1NTIgNTUyIDMzMCA0OTYgODI2IDU1MiAyNzYgNTUyIDcxNiAyNzYgNjYyIDY2MiA2NjIgMjc2IDU1MiA3MTYgNjYyIDI3NiA0OTYgNDk2IDY2MiA4MjYgNTUyIDQ5NiAyNzYgNzE2IDYwNiAzMzAgMzMwIDc3MiA3MTYgMjc2IDU1MiA0OTYgNTUyIDU1MiA0OTYgNjYyIDIyMCA5MzYgNzE2IDc3MiA2NjIgNjYyIDcxNiA1NTIgNTUyIDU3OSA1NTIgXQpdCj4+CmVuZG9iago3MCAwIG9iago8PCAvTGVuZ3RoIDc4NCA+PgpzdHJlYW0KL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luCjEyIGRpY3QgYmVnaW4KYmVnaW5jbWFwCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+IGRlZgovQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWYKL0NNYXBUeXBlIDIgZGVmCjEgYmVnaW5jb2Rlc3BhY2VyYW5nZQo8MDAwMD4gPEZGRkY+CmVuZGNvZGVzcGFjZXJhbmdlCjIgYmVnaW5iZnJhbmdlCjwwMDAwPiA8MDAwMD4gPDAwMDA+CjwwMDAxPiA8MDAzQz4gWzwwMDA5PiA8MDA2OT4gPDAwNzM+IDwwMDYxPiA8MDA2RT4gPDAwNzA+IDwwMDZDPiA8MDA2Mz4gPDAwNzQ+IDwwMDZGPiA8MDA2Mj4gPDAwNjU+IDwwMDY0PiA8MDA3Mj4gPDAwNzY+IDwwMDZEPiA8MDA2Nz4gPDAwNjY+IDwwMDY4PiA8MDA0Mz4gPDAwNDk+IDwwMDUzPiA8MDA0NT4gPDAwNTA+IDwwMDJFPiA8MDA3NT4gPDAwNEU+IDwwMDQxPiA8MDAzQT4gPDAwNzg+IDwwMDc5PiA8MDA1OD4gPDAwNEQ+IDwwMDRDPiA8MDA2Qj4gPDAwMkM+IDwwMDc3PiA8MDA1ND4gPDAwMjg+IDwwMDI5PiA8MDA0Nz4gPDAwNTU+IDwwMDJGPiA8MDA3MT4gPDAwNEE+IDwwMDMxPiA8MDAzOD4gPDAwN0E+IDwwMDU5PiA8MDA2QT4gPDAwNTc+IDwwMDUyPiA8MDA0Rj4gPDAwNDI+IDwwMDRCPiA8MDA0OD4gPDAwMzY+IDwwMDM0PiA8MDAyQj4gPDAwMzA+IF0KZW5kYmZyYW5nZQplbmRjbWFwCkNNYXBOYW1lIGN1cnJlbnRkaWN0IC9DTWFwIGRlZmluZXJlc291cmNlIHBvcAplbmQKZW5kCmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTAKL0Jhc2VGb250IC9UZVhHeXJlSGVyb3MtUmVndWxhcgovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbNjkgMCBSXQovVG9Vbmljb2RlIDcwIDAgUj4+CmVuZG9iago3MiAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9RVUNBQUErTGliZXJhdGlvbk1vbm8KL0ZsYWdzIDQgCi9Gb250QkJveCBbLTI0LjQxNDA2MjUgLTMwMC4yOTI5NjggNjA4Ljg4NjcxOCA4MzIuNTE5NTMxIF0KL0l0YWxpY0FuZ2xlIDAgCi9Bc2NlbnQgODMyLjUxOTUzMSAKL0Rlc2NlbnQgLTMwMC4yOTI5NjggCi9DYXBIZWlnaHQgODMyLjUxOTUzMSAKL1N0ZW1WIDQxLjAxNTYyNTAgCi9Gb250RmlsZTIgNzMgMCBSCj4+IGVuZG9iago3MyAwIG9iago8PAovTGVuZ3RoMSAxNDQ4OCAKL0xlbmd0aCA3NiAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnicxXt3fBzVve+cmVmtyhZtme299160q5V2V9KqWl2WbLnK0qq4SLa0trExxjY2YAwG0xyIqSEQgwMkgRAnmH4TnOCEhMfNfSQvJOHemwIkJIQEsDW+v9kiywJyP+/dP96Oj+bs7Cm/8zvfXz1jDGEYVo7twwgM6+73Bj7R7ayBJzdCWT+xedf4jqMdb0D9PQxzvTKZHRkbfbtNjWHuJ+FZZBIeVLXjZ+H77+G7aXJL7oovUREFhnk4GIYGNs+Mjvxp7yenMcy7Hn4/tWXkiq3YSux5DPPB75huemRLVrVX9RZ8dwERGzGCPIduwVgYxrqbFYQR1IU7MYKN48JyFs4mK3CchZPk/Rj+RAq74jxW/PjT/Y1YCtOfx8nf0XtxS9lJfAKmvO/tn2MYGWdlmNkwhOFYE4bhY6zlsFo2hgUFeoFZL9A34TrahL5ET7KWf/pYE3kOWj5y8T3SRHZgQ0BFGTt/GQ1WS/6KSqT5KxiIRvJXqPhD8Ypa4FmxjZRdfGg0UGVSyeKLNCGVNlrT2z+5rr2zJm62Cu/jKOVWU8Afiwf8JhMlQnKl05Wob07XJ/0BjQ6hTRvPdmcykbDFxHuwXCLVG+0Oz0dISlmtkUg61dwYj1pMKNyZqLe7JFIeR6cJBzq1NVpDtZAsq2BLRAat36/TUBSfJ66m4FvQ33Vbfx9CXL5W5w9kxC61SlBdVnbcq1SLxBx+tUAsMRgjNcC3m4GPWdZrWAXGxTCzntKHgW9hvTUcpPA/oD0XHOhh+kX04auvHj16lNAc/dkLLwDjsFHoNUZ2Yf0YpheESowosFMqMApCYUv+Coql+YsKFhgaCQaAQ5d9YS6mx6VBKAEuKivj8iip1iBXiMQVVegkjuN3QMG5QqFCbjR4V7gcYlwgFatVJpO3zuFQyLmV6GvFXo1mK/54dzhk0PK5coXHl2ronX+A6DdYTEa9TFpeJpLIlSq1yGoyqBQCvs835rEYFTIeVyJ1e1vaxua9C70HBr42fxOG0AeArl8gJyNLekFQgD54FznpNwHAWMPFOXIv6xXgRBbbAawRF5jApozhxZCSCgrLW4ymUBFlwOqloLIKFuEJiUtjFAFLoRIwBUVOkntV6prY0Mod+36+a7fh0UqZxGqORbvK2SwWiQK+gNNttqjUPAHSaeM1PV1r9mXbW4NBnZZ6vEoo1uqd7ng8VhMOupwGrUh44UmxyGTweiIt/oBaw+XhD8lkNnsoHE9FQzazlEJ7OlJpj0+lIR94gL1m1dfMEbdXbxRRJPoDIhCOOHwuJVQrLMaAL9mXiNutYhF54ACLklrtsdpleq/dCmjks+hBHl8glqrUNnskgkeiBrNExq/monuIaqFcaTBa5w8l7TaFXFjNp+0kn6dW2W0M9t4rIrYK9gKxATqwH0GEiFvpWw8+9RT6xRt0G/ox+nADPcN67cIIzqW988dh+7AbLv4HKYd+TqwDkM7IfZnVIqg25xEJgI0yBQYrk5blQVvaq2iJ/9GiWgiXsFrcDmJtoKd314/WrkPXX9HfE8Bx4MFTUACup5g6c83/hs/VaXzepkwkZDGKhUKx0RwKZ9Jen1ZXLXh8o8eHbrwByfEwcrpGSIlYIZdKKtBXzgNITRoNJS0nhQKFXK1Sos3buntCYakCyWTh0MDAFXM9XT4fRSFYRLC3H/jzV+APBbLpBmYxdC4WyyJsgiVsLUgi84WkvMFw3UBjk9sLwz9VxmaXV1SUPcYuLwMckQRLqdO47LWx/mg04iDuZLNJZDDGaru6VtAkfiZaGwsH7Ta5TKvTGfVGVV3QbzKIRYhksUF+utDrxF58KyM/KKynUBfuQ6/fD8oe+xY9RDaQPVgdtuaSRraWFQk1iqX57aAW65Qi8Qs6JVpUI+wliqikl0vqnGxAIrHH275sS40/4HTpjBJWfnOeho16orhPpFynsdsC/uSWZe1ej1h0msNVaXyB1tpQ2GyVSJFYaDKFQ5nWgF+j4nFww56JyY4OhwuhqgqpxGgI4nyBRKbSqOiVLMJqMWtUEqqCEIrlCo1WHrKYFTJOJbLZW9snJveMdXVFQmqVUOwNLB+8LtfZ4w2IKbWyJtrbC7s4C3ZqJaAVOCYFeM8S4W9e+ImY9etPdYwMNADXDpNxwDKmX2zFwqXlRqFPaZNLbBIF8RctVrsvUJvoMqo0WpFMJuhqyfiEtOMFVF4pqObzOZUEwams5gn4nAvPbejqicRUGhyVXwdiXRs/4Ce983uVVrvZqtWVV+o0FhOIMr4f6PkWYE4OmIv+9/ZAAqL12b2jBMRYtVClsdm9tcECq5+CbXmUkSJEyPRalyMcauxLp1xOqQR/pjsc0Gk4HInU4apL9s7fdEm5syRSpUalFXmsZpUctMmCTgcqn7v4AfEJawAzYpgoHBSBl0DpQdwlQUmRGGoRL8OC5x6NX4GepHuQy77B6rLbrUaDTGowOl3BYOTB3l7i1FGkoP/z6Hyux2xBLIJFsstYh0Fo2OUkK9N4B34fo3WuvvgueT1wpg1bB1onUJzEWnI5SjqEeRC2FMmIhpewkG1dZDEpUJoSc8lFCRdbMDpLQnby+XyeUWc0B00WiZTDIcrUeiA4Fm+7r7sH2S3pZH/vwHtcnlJtd0YDNodKLRSznq1QKwP+zo5NPxgfo6j5t/rq6+w2EN3naiIxp1ulRm7nDEjGVlgW4nHUSrstErY7VZpqARpcfnxjc6PNIuDhZG2j16NR8bnscpFYbwwIUpGQzSKl1qx7kvb02OxlOq3PWxsPryTxsnKZzO3t6PcHGCxfC9hZnfdAFvkf+K+Lvsfb6E3wPMgnjwIv9wMv24CXUgZnJUtrLOqKKF5AE7FEO1PiJVqgTW+sTw6v3jY9NFyXNBgR2nfVH/62c8ezlNRsC4VT6WiNxU5JZRK7NRyKpWIRuw0Qp7l5clOmRW9ERn1LZtPUzUh60xF05Eb6d1f19wb8wCwR5Q/09e/e2werEonFwoC/v49Z3WlGMmB14AcD4Bial0J/ifdTFJnTTxPwkem0DlskmO5rSHncMgl6eqmMsF6jdwf9Qc9n4P5ZGWGoWQvUbAG9kbedCNYezP8jHqKfp8+8hO6j536AXMhxlp5DD6Fn6SbchfPoVeir83+b/xnTH/xt8jroL4H+xs9RMSiI/+hNuvuHiMOuLK+qrGCzWVVwr6osR+KzZHw+JdXoDEaNjqJ0Wr1ep5HiL8Got8GoLhgVEBAMIz1jIPTUbfjJ+auJZfOD+E8OE5Yjhy+8dYSh4AZo25G34hgCxkHjcGiJN0lZlnCT0lN401P0pwhkPeDv7Z5V2a12m8kgAWVutRtNogZ/QKvjCxB6lzh1YQAEWz7W1ux1g1XFCYJkEceYvQDfprJKofJ4OyqPMpQwaKwBNMZgZy1LtpS9ePrFZkhadjlqDyCXs6V5eHjdSNeyWNRo4L0gSKa3D8YTBhNDj4BvMiRig5tbmoXPVRiMNbHuntEb1o7EE0olrvnK5k3plFKO5AqHO55o5K0Kh5TqYGRZ11i2qydao1KHQ9Ocprqkxwsy7HJ0tk+OMxrpIFiWZqA7gDUyFrdIXEkFShebk1LMs4i7wJNiC7a+yGfUgMQiizke7Yh63RaTQs65V6DVh8LLOidyw6vrk4AUUD1NDSuH1h9YPRyLKeS02esPOl0qDYG3VsiVZqs/gP4x2NwaDCvViFclpXQak9vt9hotEpnJ1NK8eeNNX960MZ1SqxyOjs6pTVfL0M8gtjFb6tMja5NJi1lQzezIx/gF4n+xfoTx4ItZypKyCcIaNUdZRBC/D5W76f88vfPOEzvP0L93oyrO9eRDEwfbPm1F+EWs9eO2azchO8Odo2BZNRAftmFTDHcWRYYLUWHY+M94FCy59UFwQChm9xmpFy31TcSX8x2fWNWYYWJBzneq49E1NV63XiuqRrhYpbU5ojUt462tHq9YiiAm9Hk6l01vXd7nIRiHBSzzY3je5dy4ySCTWe3+UKjJx8AZPjpNwNcQCgXsVoWMXoEYtz7gT8g7bHZBtdWcSAy+BLYcFLlQr2tqzI5df2BivCVjAcd0RKbTqJXgt1dQUrXGZLFc+P47szni9a093QGfVCKR+gNdPVu3d3V7vCIxQ5OvaxmzA9sAWztYw1ia0c9LgumlyPqM3LKXyC2Ki0VOR0NqTTLoZ2IGyX0QKsRrl3WN3zQ+2ZDR6nXaxobs2JGxzmU1UatZ8bVqucJk8QZqVybTNrtIjJ88ODbe3GI0AVusYLPTLemmYESrC/rXrDqw/96H91+9ctDrVqrd3kR9Ou1xOSGUpwzGhqbRLIOEHFpBDhHvFTIKIkYpQckR71xQE+8QK26/ncZuv51ZM/whN7IymIzRXvpSjGYNl9bNuBn3oGfEXn9dqrmloa2tOVnn9ykeRiPHiHm7wSxXgKTfLqjWaRyOwPllx/JWA3SLFjQiY+cESxgZvixGYdwqQKBxiV4JC9AWTqVK7nIkk+GAxSQWPV2ISB4tgIVQaHU2RyjcvCqVdjhEYtDNfT2hiFbP5Ukp6FTXh89d+LrRZNEbpTI2KZWowamlfGarXMXlw4Z73e0tWfynwKdCbAy05vnERMdEIUJ+Nx8jE/xSpHwI1tScx8YG7MAl+13y9cML4bBlCT5K/v5CaF18ULL01i+w9FHRUkOwNCBoVqnjtcOr91y1cnU8oVIzNj/oj9Z6vExQplbVRAf6pmcHB2qiSmW1QKvzeOsS4JpBCPwrLo9JrLS1gKQBy6oqNapQsGd5KKBWVrDBrnJ5oKxrl/dEagzGakaPVxsN8VhvXyxiNPC5aPdAa3s4wiR+dJpIqL21v7k2xuQwKkkuGHxHwB9pTAFG1CqkUvt8yVRj2B9wODS6KrJKrnQ4o3E85HHYtBphNULVQg2oCI/FZjcYJVKpxGSw28zzx91up9nASKrR5PZ4Ev6g2SKmKAgnwwHYiz0gp92wF1osxWTOlmbCFvaiyOmFtMQSTkeL2ivMCgcpshuZrQ1NK4fHJ1cMpxrMFou5oWF45aax4RUNDRbztyH4stqisdbOWK0FpJMS2a2xmvbmeI0dvER6xbv4V14+eG1vv8FkMvT3XHvo5deuPdTbrdMipNV19x669rV7N21MJhVyhOTKZHJq071fnpxKpcFeILUynZqa/PIVn3yCoYvnL5rIn148yMRNbJBXFvmvv1y/HiTqKKCvDqTUvCjKLK02L1CXQ0cQJOuQShNPDK/elRsaitWq1M+DZdJpwqGe0i4+h/54eGRDoh6sq1KeiK1bcx2x5cLXNzQ1O93gAYo8zraWSaIZNEkWuD0O3FbmvZalvLZcgjlRXeCxAC+QQo5DiN3QuHb9FfvWrU+ltTpkNKRTI2uv+sfBg2e7e46f6OpCPd13faW9DT/5+IFrVgw73V7PqhUHDzxy6sD+weUuJzr1OP0o4h08gNCBg/Rf6b/ecMONRxjfJe9FZbAQI7GFTFSBLMJIXEpRFVJ3TIZFtNjNAz+WOMnEZbiwmlct5D50+OEydnlZBbuCLRTh+P3vn67gVHKqeFxuJZdTcfo3xFgwHHIHAjUhD8CQbkff5lMiuUQhk0UTvpA7FA5eOMHK0FKZ2WZ2+T0us9WiQH/89HvAOfiQrwGdbEwBlBJ6gnE60RI0sgk9WXnD/LnDryD6f6OP5v/C4/IruewKksWuqORweJzj6CdoL32Alfn0e8R3zTaI41RyLkepMhitVjO9EvjxIMzjgHkoxi9e8MqDaAEfRNP8xwQLnED06K/wahZEQsQpcqPLZXW6rRduZ2XOH7V6LQF/kFifp/vBfI4qgwkx/aJIBSKbkkCV3AGYBGSIzNrsHZ1bth6hj6LoPVfu6u9zOV5QqWviywe373rwjckJ/MmTV+8fWuF0szIgZL19e646dd36dfUJter8h+jaQxhCy+kh4krwi/WXLO+lDFbJPQ0WOYYLKJHb2dw48tzqxozTTeX9Crcz07j6uZFGBr4ULjyya/dcbmbbjq0zm3Nze/ccu+WqK3Pbpjdv2zmzbS6360qYBhH0HfjThawoEkE8AaiooM/CwzvnNzIW9Fsgcw2ljBvCi9bJKGZSM0CGMRTNXwx/xYyvVMgKLI7hlnpLlzI5Y+NncssHvfn8AI4eB6v2FI6T3sGB7S9vGDnN52v1Hl9DYyhssjCyaDGFQ+mkz6fTCqtxA/3vN90EfvcGhVItkVYLyHIppdFAKEC+T69Uq9QSpWTK50E33Ej/dmsvRFEKGXh14f7BK3d293h8IqAlFOjvhfX3AM+3l3hexKIxcnmScCHXRmynJE5XY2bVC+szGZcTHGn4msmsf2FVppH5iouP7dk7l9s8s3XHtpnc3O5dR66/cldubtvMzm2bp7flrryK4ehNoEmSoElqsBVfcH5RUsnRpQ7BIm+rhD7rEvaWEpxkklE7DWvX7+hLpYNBk0lySpWIr26rq3XZFVKcMlncvlA0OrKsKxJVaXTaRO3KoZl3d1/xilBstIQizelQGIIqsbDaZAiHMv5w0GFTyfHnv3HddatWe7yMLYxFe5Sr7S4IQQ0NDRtGDnjNFpmCy4Pouj4xOJCdGBxIJPT6hx95oq0hFfRrVEgiszlitZmGWK3DJVcw9lQf9DOeEkgs+R3wPhhNVtJdC6qspLckVElzFR+UBEIUJD597ebySghSKyorKyqrKm7/0TPfXEOUkWySRVZy4HH5dS8eYFVVwG+IRZbBh8g+iX6uNBp04BYbdQaTlnaD9/SAzOHy+iDUctsN4G6hr9FDlMFssHs0brfP43Io8HWwfxGg9gjoBSVYXgwRego0mogpxnAQih7oYUoQnutFxIONiKT/Y8X0IH3HwPTA2d80/gWxV06vQJtWTK94Yz6VQRsbiTT98mZ6kjnjQl/ajOo2F2r05Gb6ZVQH/PkhzIhgRoj4RUy6q5hh+SERpV9BiQtnUYJ+hZU5cf7DEydILrTvBoRNAsKyi/SW4XPOxsKXzMTCtdRtuHScsQRol52WTWp19en1o4f+eOAa02mOTOawAwZaE3GXQyZDWkMo3NDUGAiGPF6bXQNumcmUTA4uz8719zLxsvjZKkpqMPuDjT2RiN7A5SvlXld9IhOtiYaDbqdBJxahWYgsQ2GVevWqJ8w1Lo9WLxTyuGqVx51sdjnVKiGYMD6XEinlVnPQ37Q+0+h2Qi8kktjsifpufcBuUyp5XFQtUKmtVneCgSpfIGAOLygmGROtwYoWZEOBz4W8YqE8SByft+En5scI2IQT9PDddPAEtL4FWieAywkmZiglTxYfLSxN/C3kSUt6Jh+AU7eAj9Hf29/b1ABOPGUw+QLxiMfHOIJl36nQaWPR3p5NUwN9iZhO63Q1NPX1d3aBG4G/sX19f297a0NDOtnU0J5guAA2k6/ROj1xQUdTY17kZDKPN9O8Yl13b2tbKp1KJ9PNtzIrhUCP3Je3yaUMDIX/y3N0hgyRJ88PkSdPnMCKFnAdtBIz2dYFTaVnOiyygUX7l1c668DfStQPr95N/+559NqetWvq63TaF/r6v/J3ure+1m4Ri4hvLF/WlUiYTPM02EGVJhRp61i7pyE1/z6Sii3mYKA4710wrxQzMbbcyExYCjBLvENESA+bU0QycYa+9U/Po99eMbyiLq5VgZvqcKbSq9AtH9Ov0x8gWV88atIL+Hhy/kVWRq7wBZoyQ/V19cGw2cKff4w49zbtEIuMercbePM+zL4MZmcxKGBw8P7z+P3gHQzlebKdHiSawF6YMTuGsZYo6HzufrEWjpbOYYkmZDDHa7u6lztsDrNVq5dJwFwZ7RZ7NODLHyfTU3jHq6+qpts7PcxREIsoKytnV9wIU5AsgoV4zNGTp4n4l/zxLcJeAioZX7iC2UEGp8AjCu3HH5pf/TxxJXmSFt47/w7AlYnuKKKT+Hb+HILZb1CpTCFuPGr7NU3dZP810YlfPb8fvxpDC75awyJNvNhLu0wjX8L8gk4uLP6SXn59kpU/eipnC6tF1YVaObnx9TfObGGzyTKSxRcwz6CUbXliCytfLSuHWJrIp+LLJs+ga0QKuVal12oynZ3NGq1epZErRPRVrMyFMw119f5YsKlJpdNo1GqlFN1Mb5MqIcrV6FRNGbBLwUB9XYRoZCLXB4uIN2ABJgO62J9bKpalI9vLsR0WXfL3SrAj9zmczS1r103QNnRi++pV6aRRXy3QG0GVLW9IuZ0yCf3njs473/5NbyxmMgmqewsn2d0XUGVbss7rhkhoz2RLq9srplgZkdhir0suj/mDNodKy61QqR3uaAy3bfS66fVIwGeS9oH5R5IupwZUGW3gVKpVXg8jzVuLkWBd4Uz0iyKTz2Q1KXwJUslOs8cXr23MdF07OpZqgFhFp02nsmOHRzs7aqIWs+wxS6ZlejiZtNqrhWiw/+s+h82oU0h59C/Q24dkSqVEyueHQ2vW7L/67ocPXL1yyO1mXpNwJ+qbarbUJwzGxqbR7H76wxtuRBVsbiWPU4F67s+f69JDpIJsx4LM2wgLGenPScMZBYwnHIouPnMRVEcj6AusVMnU4YKGYMBu0WlkeDHj9kQhiVJMqSg0OpvDH0r9aO26DetxESgQsyUYSTX5Amodl8/jajU+XyYOqt0K1q4dVXIkUoPJI1crFTJhNVkpEhuMvkDD+Qh6Rq5RKdXqoNUmV4IzdNMRJEGyW47O/3pHT7fXw7w2oghFuvu2bOrqDYWVSrEo4B9cDnu4D/awoyB5X/xOSwmKS45H2EbGLSAWWW2yAyLuZHLNut0zff2xmN7I/XYlJTIZgv625ljMbmVywPlA3gO6yCBXSZ70Evr5Q2pfa+vo1MBAbVyvRc9mBwaZwxVF3hq3UHaTVaWFbZeK7bbaWHttOGhhXiRgV3B5QrEI/7dj9JBZCaG9Vh+NdXUzuGwDmbumoKP0+tKhAHnN+e8TgXkp8dKFHxMjN5OKE0fO/5Zp/Q49SJpBS7VcytlGBaVtXTCwghKg9dSlk5YSHxbewcifCILWVaUjEauViY0kMqvVHwgGA36rVSZBpfdyUMWb4ExQVEUVOAuU3mBz2pwOm0ELG4Xs1tVv0kPQ0m6riTahdSB5SgWPix9mTtAULmc9Wt9cE7VbKeoIgwezJUw/HPN49WC5K3DGpTG6vXH6q5uc7vypxyNgOf5QWJ8ozOAyLPhMumzhEAn8yIVT1ZLDVTrZpASltNsjb65iTvkMWofN5bDZ9QYRVVkllmj17jdRRSoasVqklExis0JQG/QHrDaJjJJawB1J0UNH3M5NaFXc6zYapFQVzpx8672eGBoOw65KOJVHACDgFjXT99c7XQo1h4cO41yeQul0JekHmqI1NjtwFeKnuyF+OgOrYpfsEOzx3biRPoZm6CH29iOfPHAE5PtOQHfrF8U8Cy/RfN7JC7Xoh8+8HLA0pGwFhyJWOzA4vWfV6rp6dSHVsm71ztZkfTgIontKnajvbU8kHA6J1L9yRW5dT1dNVKN5Rig0mUPh5oA/YLPLFWKR1RwONabCQZOROULNDgzVpQxGr2dw+Z5ddz15+PrVq/wexOfrjZGabi3sAKPXRkb3r4KAU6uriXf3bGoEXNikkmqhVu8PpFpTaX9AqZZKGMEBnvGAZ/4izwpHpQLEA34dA74NHSlbd+RjJr/z5MV3ibdAetSL8qxLvfgw05l4S670BzuWjTw2PmH4XiVFqVUWk30iEqLPoo/QQ9me/ppajQ6tXPGiNu32arRcfmvzEaLiBOyLi/538qtAyR3Ymc/LIIbzyja8WNleFiMszvwHo0FiUWpxQVdZPn/PFmJc6RcMXrJYrMWudFnhjPyyAYoX+VUQYKs1FmvVgoMAcsAo9rJq5k0Ok8WedLrkqkoOp1Iq0WsdIBA1dp1GSvG4lSxdbhQcLbKMICCCsOm1cgmPg+Qqf6itff0Va9bVp3V6jQq88N7xeAjCEYfN0uLyBiI1yWTbvuxEc6vZ6nD0du+YO35gdH06pdPSG5DBFLdo9XKlSMzlsctRGcnnSCU6q8mgUckkPBz8Oebc58NjO3YtH/T5ytlioUbjQmzm5QOStBlMSiW4QHptNNSSaV/WAc58IsZEUly+RKbVmY7TLBB2k0WtE4cFQlBT7a3Z0d37tm3t7/P7GptmcydOfOOuPXtXDPsDgDUOgwfDkEVvlDOjxqJTE7ff9u3Xv/XkNfvb21C8dix7zcEdUzURidRk9Qej8XgilgiGTRZGaTLvFLQ1rwAPTKVQyAAvE8WcWCXzpmEhckDgJFMI6YmTT83P4lf+4Fn6FpqD/oaS9IsoeSOx+8L1R4nGeSZ5hN0Lvd35eGIBa5SxFMYz7od7/fIhJuv8LCyKOWvcMK8lbia/e8Nttx+/6557773nvnvuuuvWY9ceAxn6O3it/1p4t4bxZvFTRUcWW7Clw9jKJfGvZYn0LLwbCpF7CU2hog9hXYLvz5xckB1aXaJ+xfDcNSuH47UqdcV32RDAmGrC7dd3LUMGYzBcWx8Y3xCoiXjdEIk1NB3Y2dbOebrSbqtP9HSv3DE4EIko5Ey2JRJr60vWOe1gTGdXt7SDqlAye9/c2C6o8Xh1EOom63c3etxKOacSnUC8KrXS7UxtTMRRXf00b02myeuWSlRqry+VbqsJhB0urY5PVmg0TncojCFcRA/hp4ucgngGFz3MKOaP8zZpDjg1XPiNhYKIeOjCT75JhAuvKCHYZYx8KZ8BXfymQIExKIif/T7NPotS1Xwul8vj8Dh8ngDVnwXHfLfbF7D7PW6fLeD3Etcuys0y7ywI9Pn3/fKnTJvm//7883jl8/jM/DFWZv6HeOTT7zERy3r6DkJYOo9iqM7nJj94lz6UT08WDqTOX5tPUiImSiRPFkbPvwphLLwWgY+jznN0J/rlOfoG+sg59Eu68xzRhKP5PfNJvG7+ZfxF/CD0zmF3k0Pko1gZY5cRQDl/QPgwMYzXnkMP3k3fSh+7C7u8XTSMUJhpNwzt3rn7LjSDpu+m157LR1BQcn/ecXodP/ER8/L20s/F8+Dn/BR4jpiRih/oU3ZyHqYh37v444t/Il8vxGKLPsvJc1gjlIehHIWygTyH/gz3NHnu4kW4vwvlMJS/wPNOuH8TyrbC7/n6GShXQzkEZT+U70BZA4V5o/rWYl/m+UEo/yjOsRXKHJTbCu3z8zG/Xwlzfgr3m6Bkoewr0vBAoSCgFeGFeVE33G+EIoYShnIWSlex7c1QOi71w96DkoPyIvQTLxpza5E+hv5WKL8t8AHdBfc74c6F+xNQnFDGodwDzz4qtMeFcJ+FUlGkbR3cjcV1zQFfxdgJ7BnkRQkwlR/hAvwQ/hP8l8QksZN4nhSSy8j/Q/6VtYx1G+tbrF+x/lYWK7uDjbNN7JfL7eV15RPlZ8p/WnG8kqysruyqPF75bpW2qqVqX9V3q37IiXPmOBe4/dwbuQ/xUrwh3tO8V/kkv5Hfx7+Tf4r/YrWn+kT1vGCv4PeCi8IZ4VvC90U50XWi0+Kfij+gJJSJeow6Tb1KvS9hSVSSWkm3ZEMeEcux5xhZLSDmMx8VGlx4vh57qVhHGB81Fus4xkajxTqBKdADxToJbX5ZrLMwHl5ZrJdBPVqss7HdRKJYL8fExG+K9QqMR4qL9SpMRa4p1jmYh/y3Yp2LzbB+V6zzsPqyN2F2REJcgL2Qp4SpI0yDjMU6jvFQf7FOYCG0qVgnoc2zxToL1vtesV6GqXB5sc7G/oY3F+vlmI14plivwFTE34v1KqyGLM3FwVaTu4t1LvYrFrtY52F7yoawRmwG24rtwmaxKbB+k6AFdJgNG8XscA9gPriiUOvDstgY3FuxEWjhglobNg2tPFBLY5vh0i0aYS7/LQv3LNx35PsyLZdBrwYsA6OlsQGod2Nd8HQq334ESg5aj0DbLLYF7rPYJng2g43/0/mxxpmtu2anJiZzOtuoXRfw+aK6vuyYrnUk59K1TY96dOnNm3X5BnO62excdnZHdsyjW9bWkOlLD7R1d+mm5nQjutzsyFh2y8jsJt3M+OX9MSB7CtuQXwoz+RSQNA0EdObvM/Dz1Ibs7EhuamZa1zkzDQ8YYiew7cAUZhFYX3Zi++YRqKRhoaPw23R+ibMwhjvPlH86enpuNDs9lp3VuXWfmej/lrDBfNu5hZZ+4B+zvx7mZGIwOzvHNPV7fFFP6PMH/5yh/xkl/7OdLWBoIj9KLj92oeVUfuzl0KI/36on35Nhay4/23S+1cDnzNgNM45Df2YTLrUczY+dg++FkWegPlncoI2wjbN5Csby/Uprm2OQt4i//w2GAHgTU3O57Cw8nJrWLff0e3Q9I7nsdE43Mj2mG1jo2D0+PjWazT8czc7mRqDxTG4Sdn/j9tmpubGpUWa2Oc/nYYkR5FkQ5ZnLNuESfhpnZrfOFMjFgHO5/P8FyebxwjTP5eU136U/l92R1XWO5HLZOabxZP7nrVgc88K1M395oNPlFIwW5/fka1ugJTaZy22Ne707d+70jBTJGAUqPKMzW7z/78PmQFttzWMhm8fyBLQt4NqTH3MLCN4/nTq3a2t2LDs3NTENkPdM5rZsLgC4MO1cEWbbF/G2AIgvktXm/L2g9jZfNg4DZ+bO9C0td6644PH8PIXd2gp/ZwBs2TzEPPmnE3mmTAFwp6C2mD4GphPFZ0upKdFy+XoAqsCDOUDf9jwWAFKLtUnzzDQox82FNi7dXDarY/g3Bwwcz44BaLbOzmzMjuY8M7MT3p1Tm6a8hfGmpie8l4ZhRinOg/3/Xe3/lHjsvwCLhHh/ZW5kc3RyZWFtCmVuZG9iago3NiAwIG9iago5NTc1CmVuZG9iago3NCAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9CYXNlRm9udCAvTGliZXJhdGlvbk1vbm8KL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChJZGVudGl0eSkgL1N1cHBsZW1lbnQgMCA+PgovRm9udERlc2NyaXB0b3IgNzIgMCBSCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0RXIDU5NSA+PgplbmRvYmoKNzUgMCBvYmoKPDwgL0xlbmd0aCA5NTIgPj4Kc3RyZWFtCi9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgoxMiBkaWN0IGJlZ2luCmJlZ2luY21hcAovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWYKL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmCi9DTWFwVHlwZSAyIGRlZgoxIGJlZ2luY29kZXNwYWNlcmFuZ2UKPDAwMDA+IDxGRkZGPgplbmRjb2Rlc3BhY2VyYW5nZQoyIGJlZ2luYmZyYW5nZQo8MDAwMD4gPDAwMDA+IDwwMDAwPgo8MDAwMT4gPDAwNTQ+IFs8MDA3Mz4gPDAwNjk+IDwwMDZEPiA8MDAyRT4gPDAwMjQ+IDwwMDA5PiA8MDA2Qj4gPDAwNjQ+IDwwMDcyPiA8MDAyRD4gPDAwNzA+IDwwMDJGPiA8MDA3OT4gPDAwNkU+IDwwMDc0PiA8MDA2MT4gPDAwNkM+IDwwMDZGPiA8MDA2OD4gPDAwNzg+IDwwMDc2PiA8MDA3QT4gPDAwNjY+IDwwMDYzPiA8MDA2NT4gPDAwMkE+IDwwMDY3PiA8MDA0Mz4gPDAwM0Q+IDwwMDMxPiA8MDA3NT4gPDAwM0E+IDwwMDM4PiA8MDAzMD4gPDAwNUY+IDwwMDU1PiA8MDA0Rj4gPDAwNEQ+IDwwMDQxPiA8MDA0RT4gPDAwNDQ+IDwwMDI4PiA8MDAyQz4gPDAwNjI+IDwwMDI5PiA8MDAzOT4gPDAwNzc+IDwwMDIzPiA8MDA0OT4gPDAwNTM+IDwwMDQ1PiA8MDAzMj4gPDAwNTQ+IDwwMDUwPiA8MDA1Mj4gPDAwNEM+IDwwMDZBPiA8MDA0Nj4gPDAwMjI+IDwwMDU3PiA8MDA0Mj4gPDAwNDc+IDwwMDcxPiA8MDAzNT4gPDAwNUE+IDwwMDdCPiA8MDA3RD4gPDAwNUI+IDwwMDM2PiA8MDA1RD4gPDAwNEE+IDwwMDQwPiA8MDAzND4gPDAwMzc+IDwwMDI3PiA8MDAzMz4gPDAwN0M+IDwwMDVDPiA8MDA1Nj4gPDAwNDg+IDwwMDNCPiA8MDA1OD4gPDAwM0M+IDwwMDNFPiBdCmVuZGJmcmFuZ2UKZW5kY21hcApDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AKZW5kCmVuZAplbmRzdHJlYW0KZW5kb2JqCjkgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvTGliZXJhdGlvbk1vbm8KL0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzc0IDAgUl0KL1RvVW5pY29kZSA3NSAwIFI+PgplbmRvYmoKMyAwIG9iago8PAovVHlwZSAvUGFnZXMKL0tpZHMgClsKNiAwIFIKMTQgMCBSCjIwIDAgUgoyNiAwIFIKMzIgMCBSCjM3IDAgUgo0MiAwIFIKXQovQ291bnQgNwovUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUNdCj4+CmVuZG9iagp4cmVmCjAgNzcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAxNjMgMDAwMDAgbiAKMDAwMDA2Mzk2MCAwMDAwMCBuIAowMDAwMDAwMjEyIDAwMDAwIG4gCjAwMDAwMDAzMDcgMDAwMDAgbiAKMDAwMDAwMDM0NCAwMDAwMCBuIAowMDAwMDMzMzQzIDAwMDAwIG4gCjAwMDAwNTI1MDkgMDAwMDAgbiAKMDAwMDA2MzgyMCAwMDAwMCBuIAowMDAwMDAwNjcxIDAwMDAwIG4gCjAwMDAwMDM1MDggMDAwMDAgbiAKMDAwMDAwMDQ2NSAwMDAwMCBuIAowMDAwMDAwNjUxIDAwMDAwIG4gCjAwMDAwMDM1MjkgMDAwMDAgbiAKMDAwMDAyNzkzOSAwMDAwMCBuIAowMDAwMDAzODY5IDAwMDAwIG4gCjAwMDAwMDcyNjggMDAwMDAgbiAKMDAwMDAwMzY1MSAwMDAwMCBuIAowMDAwMDAzODQ5IDAwMDAwIG4gCjAwMDAwMDcyODkgMDAwMDAgbiAKMDAwMDA0NTQ2NCAwMDAwMCBuIAowMDAwMDA3NjI5IDAwMDAwIG4gCjAwMDAwMTA4NDggMDAwMDAgbiAKMDAwMDAwNzQxMSAwMDAwMCBuIAowMDAwMDA3NjA5IDAwMDAwIG4gCjAwMDAwMTA4NjkgMDAwMDAgbiAKMDAwMDA0MTg5OSAwMDAwMCBuIAowMDAwMDExMjIxIDAwMDAwIG4gCjAwMDAwMTQ1NTkgMDAwMDAgbiAKMDAwMDAxMDk5MSAwMDAwMCBuIAowMDAwMDExMjAxIDAwMDAwIG4gCjAwMDAwMTQ1ODAgMDAwMDAgbiAKMDAwMDAxNDkzMiAwMDAwMCBuIAowMDAwMDE5NTIxIDAwMDAwIG4gCjAwMDAwMTQ3MDIgMDAwMDAgbiAKMDAwMDAxNDkxMiAwMDAwMCBuIAowMDAwMDE5NTQyIDAwMDAwIG4gCjAwMDAwMTk4NzAgMDAwMDAgbiAKMDAwMDAyMzMwNCAwMDAwMCBuIAowMDAwMDE5NjY0IDAwMDAwIG4gCjAwMDAwMTk4NTAgMDAwMDAgbiAKMDAwMDAyMzMyNSAwMDAwMCBuIAowMDAwMDIzNjUzIDAwMDAwIG4gCjAwMDAwMjUwMDEgMDAwMDAgbiAKMDAwMDAyMzQ0NyAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjUwMjIgMDAwMDAgbiAKMDAwMDAyNTI5MSAwMDAwMCBuIAowMDAwMDI3MjgwIDAwMDAwIG4gCjAwMDAwMjc0OTYgMDAwMDAgbiAKMDAwMDAyNzI1OSAwMDAwMCBuIAowMDAwMDI4MDg1IDAwMDAwIG4gCjAwMDAwMjgyOTkgMDAwMDAgbiAKMDAwMDAzMjMwMCAwMDAwMCBuIAowMDAwMDMyNjY5IDAwMDAwIG4gCjAwMDAwMzIyNzkgMDAwMDAgbiAKMDAwMDAzMzQ4NiAwMDAwMCBuIAowMDAwMDMzNzU3IDAwMDAwIG4gCjAwMDAwNDA5MDkgMDAwMDAgbiAKMDAwMDA0MTEyNyAwMDAwMCBuIAowMDAwMDQwODg4IDAwMDAwIG4gCjAwMDAwNDIwNDcgMDAwMDAgbiAKMDAwMDA0MjI2MyAwMDAwMCBuIAowMDAwMDQ0NjcyIDAwMDAwIG4gCjAwMDAwNDQ5NTEgMDAwMDAgbiAKMDAwMDA0NDY1MSAwMDAwMCBuIAowMDAwMDQ1NjEwIDAwMDAwIG4gCjAwMDAwNDU4MjcgMDAwMDAgbiAKMDAwMDA1MTIxMCAwMDAwMCBuIAowMDAwMDUxNjc0IDAwMDAwIG4gCjAwMDAwNTExODkgMDAwMDAgbiAKMDAwMDA1MjY1NSAwMDAwMCBuIAowMDAwMDUyOTE5IDAwMDAwIG4gCjAwMDAwNjI2MDYgMDAwMDAgbiAKMDAwMDA2MjgxNyAwMDAwMCBuIAowMDAwMDYyNTg1IDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgNzcKL0luZm8gMSAwIFIKL1Jvb3QgMiAwIFIKPj4Kc3RhcnR4cmVmCjY0MTAwCiUlRU9GCg==";*/ + +} // End of module LibCise_Pixits diff --git a/ttcn/LibCise/ttcn/LibCise_Templates.ttcn b/ttcn/LibCise/ttcn/LibCise_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..2c8c473b7f69c1507da86a2b6ec9357ad7629d3b --- /dev/null +++ b/ttcn/LibCise/ttcn/LibCise_Templates.ttcn @@ -0,0 +1,3329 @@ +module LibCise_Templates { + + // XSD + import from XSD all; + + // LibCise + import from LibCise_Pics all; + + // LibCDM + import from http_www_cise_eu_servicemodel_v1_authority all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_cise_eu_datamodel_v1_entity_document all; + import from http_www_cise_eu_datamodel_v1_entity_action all; + import from http_www_cise_eu_datamodel_v1_entity_anomaly all; + import from http_www_cise_eu_datamodel_v1_entity_organization all; + import from http_www_cise_eu_datamodel_v1_entity_incident all; + import from http_www_cise_eu_datamodel_v1_entity_vessel all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_location all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_period all; + import from http_www_cise_eu_datamodel_v1_entity_person all; + import from http_www_cise_eu_datamodel_v1_entity_agent all; + import from http_www_cise_eu_datamodel_v1_entity_event all; + import from http_www_cise_eu_datamodel_v1_entity_risk all; + import from http_www_cise_eu_datamodel_v1_entity_movement all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + // Signature + import from http_www_w3_org_2000_09_xmldsig all; + + // Lib/LibCise + import from LibCise_TypesAndValues all; + import from LibCise_Pixits all; + + group commons { + + // template (omit) InvolvedAgentRel m_involved_agent_rel( + // in template (omit) Agent_derivations p_agent := omit, + // in template (omit) AgentRoleInEventType p_agentRole := omit, + // in template (omit) Period p_involvementPeriod := omit + // ) := { + // agent := p_agent, + // agentRole := p_agentRole, + // involvementPeriod := p_involvementPeriod + // } // End of template m_involved_agent_rel + + // template InvolvedAgentRel mw_involved_agent_rel( + // template Agent_derivations p_agent := *, + // template AgentRoleInEventType p_agentRole := *, + // template Period p_involvementPeriod := * + // ) := { + // agent := p_agent, + // agentRole := p_agentRole, + // involvementPeriod := p_involvementPeriod + // } // End of template mw_involved_agent_rel + + // template (omit) LocationRel m_location_rel( + // in template (omit) Location_derivations p_location := omit, + // in template (omit) Period p_dateTime := omit, + // in template (omit) EventAreaType p_eventArea := omit, + // in template (omit) LocationRoleInEventType p_locationRole := omit, + // in template (omit) SourceType p_sourceType := omit + // ) := { + // location := p_location, + // dateTime := p_dateTime, + // eventArea := p_eventArea, + // locationRole := p_locationRole, + // sourceType := p_sourceType + // } // End of template m_location_rel + + // template LocationRel mw_location_rel( + // template Location_derivations p_location := *, + // template Period p_dateTime := *, + // template EventAreaType p_eventArea := *, + // template LocationRoleInEventType p_locationRole := *, + // template SourceType p_sourceType := * + // ) := { + // location := p_location, + // dateTime := p_dateTime, + // eventArea := p_eventArea, + // locationRole := p_locationRole, + // sourceType := p_sourceType + // } // End of template mw_location_rel + + // template (value) InvolvedEventRelItem m_involved_event_rel_item( + // in template (value) Event_derivations p_event, + // in template (value) ObjectRoleInEventType p_objectRole, + // in template (value) Period p_involvementPeriod := m_period + // ) := { + // event := p_event, + // objectRole := p_objectRole, + // involvementPeriod := p_involvementPeriod + // } // End of template m_involved_event_rel_item + + // template (present) InvolvedEventRelItem mw_involved_event_rel_item( + // template (present) Event_derivations p_event := ?, + // template (present) ObjectRoleInEventType p_objectRole := ?, + // template (present) Period p_involvementPeriod := ? + // ) := { + // event := p_event, + // objectRole := p_objectRole, + // involvementPeriod := p_involvementPeriod + // } // End of template mw_involved_event_rel_item + + // template (value) DocumentRelItem m_document_rel( + // in template (value) Document p_document + // ) := { + // document := p_document + // } // End of template m_docm_document_relumentRel + + // template (present) DocumentRelItem mw_document_rel( + // template (present) Document p_document := ? + // ) := { + // document := p_document + // } // End of template mw_document_rel + + group derivations { + + template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations m_string_derivations_string( + in template (value) XSD.String p_string + ) := { + string := p_string + } // End of template m_string_derivations_string + + template (present) http_www_cise_eu_servicemodel_v1_message.String_derivations mw_string_derivations_string( + template (present) XSD.String p_string := ? + ) := { + string := p_string + } // End of template mw_string_derivation_string + + template (value) Agent_derivations m_agent_derivations_agent( + in template (value) Agent p_agent + ) := { + agent := p_agent + } // End of template m_agent_derivations_agent + + template (present) Agent_derivations mw_agent_derivations_agent( + template (present) Agent p_agent := ? + ) := { + agent := p_agent + } // End of template mw_agent_derivations_agent + + template (value) Agent_derivations m_agent_derivations_formal_organization( + in template (value) FormalOrganization p_formal_organization + ) := { + formalOrganization := p_formal_organization + } // End of template m_agent_derivations_formal_organization + + template (present) Agent_derivations mw_agent_derivations_formal_organization( + template (present) FormalOrganization p_formal_organization := ? + ) := { + formalOrganization := p_formal_organization + } // End of template mw_agent_derivation_formals_organization + + template (value) Agent_derivations m_agent_derivations_organization( + in template (value) Organization p_organization + ) := { + organization := p_organization + } // End of template m_agent_derivations_organization + + template (present) Agent_derivations mw_agent_derivations_organization( + template (present) Organization p_organization := ? + ) := { + organization := p_organization + } // End of template mw_agent_derivations_organization + + template (value) Agent_derivations m_agent_derivations_organization_collaboration( + in template (value) OrganizationalCollaboration p_organization_collaboration + ) := { + organizationalCollaboration := p_organization_collaboration + } // End of template m_agent_derivations_organization_collaboration + + template (present) Agent_derivations mw_agent_derivations_organization_collaboration( + template (present) OrganizationalCollaboration p_organization_collaboration := ? + ) := { + organizationalCollaboration := p_organization_collaboration + } // End of template mw_agent_derivations_organization + + template (value) Agent_derivations m_agent_derivations_organizational_unit( + in template (value) OrganizationalUnit p_organizational_unit + ) := { + organizationalUnit := p_organizational_unit + } // End of template m_agent_derivations_organizational_unit + + template (present) Agent_derivations mw_agent_derivations_organizational_unit( + template (present) OrganizationalUnit p_organizational_unit := ? + ) := { + organizationalUnit := p_organizational_unit + } // End of template mw_agent_derivations_organizational_unit + + template (value) Agent_derivations m_person_derivations_person( + in template (value) Person p_person + ) := { + person := p_person + } // End of template m_person_derivations_person + + template (present) Agent_derivations mw_person_derivations_person( + template (present) Person p_person := ? + ) := { + person := p_person + } // End of template mw_person_derivations_person + + template (value) Agent_derivations m_agent_derivations_port_organization( + in template (value) PortOrganization p_port_organization + ) := { + portOrganization := p_port_organization + } // End of template m_agent_derivations_port_organization + + template (present) Agent_derivations mw_agent_derivations_port_organization( + template (present) PortOrganization p_port_organization := ? + ) := { + portOrganization := p_port_organization + } // End of template mw_agent_derivation_ports_organization + + template (value) Location_derivations m_location_derivations_location( + in template (value) Location p_location + ) := { + location := p_location + } // End of template m_location_derivations_location + + template (present) Location_derivations mw_location_derivations_location( + template (present) Location p_location := ? + ) := { + location := p_location + } // End of template mw_location_derivations_location + + template (value) Location_derivations m_location_derivations_port_facility_location( + in template (value) PortFacilityLocation p_port_facility_location + ) := { + portFacilityLocation := p_port_facility_location + } // End of template m_location_derivations_port_facility_location + + template (present) Location_derivations mw_location_derivations_port_facility_location( + template (present) PortFacilityLocation p_port_facility_location := ? + ) := { + portFacilityLocation := p_port_facility_location + } // End of template mw_location_derivations_port_facility_location + + template (value) Location_derivations m_location_derivations_port_location( + in template (value) PortLocation p_port_location + ) := { + portLocation := p_port_location + } // End of template m_location_derivations_port_location + + template (present) Location_derivations mw_location_derivations_port_location( + template (present) PortLocation p_port_location := ? + ) := { + portLocation := p_port_location + } // End of template mw_location_derivations_port_location + + template (value) Location_derivations m_location_derivations_named_location( + in template (value) NamedLocation p_named_location + ) := { + namedLocation := p_named_location + } // End of template m_location_derivations_named_location + + template (present) Location_derivations mw_location_derivations_named_location( + template (present) NamedLocation p_named_location := ? + ) := { + namedLocation := p_named_location + } // End of template mw_location_derivations_named_location + + template (value) Event_derivations m_event_derivations_action( + in template (value) Action p_action + ) := { + action_ := p_action + } // End of template m_event_derivations_action + + template (present) Event_derivations mw_event_derivations_action( + template (present) Action p_action := ? + ) := { + action_ := p_action + } // End of template mw_event_derivations_action + + template (value) Event_derivations m_event_derivations_anomaly( + in template (value) Anomaly p_anomaly + ) := { + anomaly := p_anomaly + } // End of template m_event_derivations_anomaly + + template (present) Event_derivations mw_event_derivations_anomaly( + template (present) Anomaly p_anomaly := ? + ) := { + anomaly := p_anomaly + } // End of template mw_event_derivations_anomaly + + template (value) Event_derivations m_event_derivations_crisisIncident( + in template (value) CrisisIncident p_crisisIncident + ) := { + crisisIncident := p_crisisIncident + } // End of template m_event_derivations_crisisIncident + + template (present) Event_derivations mw_event_derivations_crisisIncident( + template (present) CrisisIncident p_crisisIncident := ? + ) := { + crisisIncident := p_crisisIncident + } // End of template mw_event_derivations_crisisIncident + + template (value) Event_derivations m_event_derivations_incident( + in template (value) Incident p_incident + ) := { + incident := p_incident + } // End of template m_event_derivations_incident + + template (present) Event_derivations mw_event_derivations_incident( + template (present) Incident p_incident := ? + ) := { + incident := p_incident + } // End of template mw_event_derivations_incident + + template (value) Event_derivations m_event_derivations_irregularMigrationIncident( + in template (value) IrregularMigrationIncident p_irregularMigrationIncident + ) := { + irregularMigrationIncident := p_irregularMigrationIncident + } // End of template m_event_derivations_irregularMigrationIncident + + template (present) Event_derivations mw_event_derivations_irregularMigrationIncident( + template (present) IrregularMigrationIncident p_irregularMigrationIncident := ? + ) := { + irregularMigrationIncident := p_irregularMigrationIncident + } // End of template mw_event_derivations_irregularMigrationIncident + + template (value) Event_derivations m_event_derivations_lawInfringementIncident( + in template (value) LawInfringementIncident p_lawInfringementIncident + ) := { + lawInfringementIncident := p_lawInfringementIncident + } // End of template m_event_derivations_lawInfringementIncident + + template (present) Event_derivations mw_event_derivations_lawInfringementIncident( + template (present) LawInfringementIncident p_lawInfringementIncident := ? + ) := { + lawInfringementIncident := p_lawInfringementIncident + } // End of template mw_event_derivations_lawInfringementIncident + + template (value) Event_derivations m_event_derivations_maritimeSafetyIncident( + in template (value) MaritimeSafetyIncident p_maritimeSafetyIncident + ) := { + maritimeSafetyIncident := p_maritimeSafetyIncident + } // End of template m_event_derivations_maritimeSafetyIncident + + template (present) Event_derivations mw_event_derivations_maritimeSafetyIncident( + template (present) MaritimeSafetyIncident p_maritimeSafetyIncident := ? + ) := { + maritimeSafetyIncident := p_maritimeSafetyIncident + } // End of template mw_event_derivations_maritimeSafetyIncident + + template (value) Event_derivations m_event_derivations_movement( + in template (value) Movement p_movement + ) := { + movement := p_movement + } // End of template m_event_derivations_movement + + template (present) Event_derivations mw_event_derivations_movement( + template (present) Movement p_movement := ? + ) := { + movement := p_movement + } // End of template mw_event_derivations_movement + + template (value) Event_derivations m_event_derivations_pollutionIncident( + in template (value) PollutionIncident p_pollutionIncident + ) := { + pollutionIncident := p_pollutionIncident + } // End of template m_event_derivations_pollutionIncident + + template (present) Event_derivations mw_event_derivations_pollutionIncident( + template (present) PollutionIncident p_pollutionIncident := ? + ) := { + pollutionIncident := p_pollutionIncident + } // End of template mw_event_derivations_pollutionIncident + + template (value) Object_derivations m_object_derivations_aircraft( + in template (value) Vehicle p_aircraft + ) := { + aircraft := p_aircraft + } // End of template m_object_derivations_aircraft + + template (present) Object_derivations mw_object_derivations_aircraft( + template (present) Vehicle p_aircraft := ? + ) := { + aircraft := p_aircraft + } // End of template mw_object_derivations_aircraft + + template (value) Object_derivations m_object_derivations_cargo( + in template (value) Cargo p_cargo + ) := { + cargo := p_cargo + } // End of template m_object_derivations_cargo + + template (present) Object_derivations mw_object_derivations_cargo( + template (present) Cargo p_cargo := ? + ) := { + cargo := p_cargo + } // End of template mw_object_derivations_cargo + + template (value) Object_derivations m_object_derivations_cargoUnit( + in template (value) Object p_cargoUnit + ) := { + cargoUnit := p_cargoUnit + } // End of template m_object_derivations_cargoUnit + + template (present) Object_derivations mw_object_derivations_cargoUnit( + template (present) Object p_cargoUnit := ? + ) := { + cargoUnit := p_cargoUnit + } // End of template mw_object_derivations_cargoUnit + + template (value) Object_derivations m_object_derivations_catch( + in template (value) Catch p_catch + ) := { + catch_ := p_catch + } // End of template m_object_derivations_catch + + template (present) Object_derivations mw_object_derivations_catch( + template (present) Catch p_catch := ? + ) := { + catch_ := p_catch + } // End of template mw_object_derivations_catch + + template (value) Object_derivations m_object_derivations_containmentUnit( + in template (value) ContainmentUnit p_containmentUnit + ) := { + containmentUnit := p_containmentUnit + } // End of template m_object_derivations_containmentUnit + + template (present) Object_derivations mw_object_derivations_containmentUnit( + template (present) ContainmentUnit p_containmentUnit := ? + ) := { + containmentUnit := p_containmentUnit + } // End of template mw_object_derivations_containmentUnit + + template (value) Object_derivations m_object_derivations_landVehicle( + in template (value) Vehicle_derivations p_landVehicle + ) := { + landVehicle := p_landVehicle + } // End of template m_object_derivations_landVehicle + + template (present) Object_derivations mw_object_derivations_landVehicle( + template (present) Vehicle_derivations p_landVehicle := ? + ) := { + landVehicle := p_landVehicle + } // End of template mw_object_derivations_landVehicle + + template (value) Object_derivations m_object_derivations_vehicle( + in template (value) Vehicle p_vehicle + ) := { + vehicle := p_vehicle + } // End of template m_object_derivations_vehicle + + template (present) Object_derivations mw_object_derivations_vehicle( + template (present) Vehicle p_vehicle := ? + ) := { + vehicle := p_vehicle + } // End of template mw_object_derivations_vehicle + + template (value) Object_derivations m_object_derivations_vessel( + in template (value) Vessel p_vessel + ) := { + vessel := p_vessel + } // End of template m_object_derivations_vessel + + template (present) Object_derivations mw_object_derivations_vessel( + template (present) Vessel p_vessel := ? + ) := { + vessel := p_vessel + } // End of template mw_object_derivations_vessel + + template (value) Vehicle_derivations m_vehicle_derivations_aircraft( + in template (value) Vehicle p_aircraft + ) := { + aircraft := p_aircraft + } // End of template m_vehicle_derivations_aircraft + + template (present) Vehicle_derivations mw_vehicle_derivations_aircraft( + template (present) Vehicle p_aircraft := ? + ) := { + aircraft := p_aircraft + } // End of template mw_vehicle_derivations_aircraft + + template (value) Vehicle_derivations m_vehicle_derivations_landVehicle( + in template (value) Vehicle_derivations p_landVehicle + ) := { + landVehicle := p_landVehicle + } // End of template m_vehicle_derivations_landVehicle + + template (present) Vehicle_derivations mw_vehicle_derivations_landVehicle( + template (present) Vehicle_derivations p_landVehicle := ? + ) := { + landVehicle := p_landVehicle + } // End of template mw_vehicle_derivations_landVehicle + + template (value) Vehicle_derivations m_vehicle_derivations_vessel( + in template (value) Vessel p_vessel + ) := { + vessel := p_vessel + } // End of template m_vehicle_derivations_vessel + + template (present) Vehicle_derivations mw_vehicle_derivations_vessel( + template (present) Vessel p_vessel := ? + ) := { + vessel := p_vessel + } // End of template mw_vehicle_derivations_vessel + + template (value) ServiceCapability_derivations m_service_capability_derivations_serviceCapability( + in template (value) ServiceCapability p_serviceCapability + ) := { + serviceCapability := p_serviceCapability + } // End of template m_service_capability_derivations_serviceCapability + + template (present) ServiceCapability_derivations mw_service_capability_derivations_serviceCapability( + template (present) ServiceCapability p_serviceCapability := ? + ) := { + serviceCapability := p_serviceCapability + } // End of template mw_service_capability_derivations_serviceCapability + + template (value) ServiceCapability_derivations m_service_capability_derivations_subscriptionCapability( + in template (value) SubscriptionCapability p_subscriptionCapability + ) := { + subscriptionCapability := p_subscriptionCapability + } // End of template m_service_capability_derivations_subscriptionCapability + + template (present) ServiceCapability_derivations mw_service_capability_derivations_subscriptionCapability( + template (present) SubscriptionCapability p_subscriptionCapability := ? + ) := { + subscriptionCapability := p_subscriptionCapability + } // End of template mw_service_capability_derivations_subscriptionCapability + + } // End of group derivations + + } // End of group commons + + group vessels { + + template (omit) Vessel m_vessel( + in template (omit) XSD.Long p_iMONumber := omit, + in template (value) Vessel.colour_list p_colour_list := {}, + in template (value) Vessel.externalMarkings_list p_externalMarkings_list := {}, + in template (value) Vessel.metadata_list p_metadata_list := {}, + in template (value) Vessel.name_list p_name_list := {}, + in template (value) Vessel.locationRel_list p_locationRel_list := {}, + in template (value) Vessel.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) Vessel.documentRel_list p_documentRel_list := {}, + in template (value) Vessel.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (value) Vessel.vehiclesRel_list p_vehiclesRel_list := {}, + in template (value) Vessel.shipType_list p_shipType_list := {}, + in template (value) Vessel.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) Vessel.nationality_list p_nationality_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.Double p_maximumSpeed := omit, + in template (omit) XSD.Int p_totalPersonsOnBoard := omit, + in template (omit) Vessel.correspondentAssetRel p_correspondentAssetRel := omit, + in template (omit) Vessel.cargoRel p_cargoRel := omit, + in template (omit) XSD.String p_arrangement := omit, + in template (omit) XSD.Int p_beam := omit, + in template (omit) XSD.Int p_breadth := omit, + in template (omit) XSD.String p_callSign := omit, + in template (omit) ConditionOfTheCargoAndBallastType p_conditionOfTheCargoAndBallast := omit, + in template (omit) XSD.Int p_containerCapacity := omit, + in template (omit) XSD.Int p_deadweight := omit, + in template (omit) XSD.Double p_depth := omit, + in template (omit) XSD.Double p_designSpeed := omit, + in template (omit) XSD.Double p_draught := omit, + in template (omit) FishingGearType p_fishingGear := omit, + in template (omit) XSD.Double p_grossTonnage := omit, + in template (omit) HullMaterialType p_hullMaterial := omit, + in template (omit) INFClassType p_iNFShipClass := omit, + in template (omit) XSD.String p_iNMARSATNumber := omit, + in template (omit) XSD.String p_iRNumber := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_vessel.ISPSSecurityLevelType p_iSPSSSecurityLevel := omit, + in template (omit) XSD.Boolean p_isBanned := omit, + in template (omit) XSD.Boolean p_isFishing := omit, + in template (omit) XSD.Double p_lOA := omit, + in template (omit) XSD.Double p_length_ := omit, + in template (omit) XSD.Int p_lengthenedYear := omit, + in template (omit) XSD.Long p_mMSI := omit, + in template (omit) NavigationalStatusType p_navigationalStatus := omit, + in template (omit) XSD.Double p_netTonnage := omit, + in template (omit) XSD.String p_regionalIdentification := omit, + in template (omit) XSD.Date p_registryDate := omit, + in template (omit) XSD.String p_registryNumber := omit, + in template (omit) XSD.Double p_segregatedBallastVolume := omit, + in template (omit) ShipConfigurationType p_shipConfiguration := omit, + in template (omit) XSD.String p_uVI := omit, + in template (omit) SanitaryMeasureType p_underSanitaryMeasure := omit, + in template (omit) XSD.Int p_yearBuilt := omit + ) := { + colour_list := p_colour_list, + externalMarkings_list := p_externalMarkings_list, + identifier := p_identifier, + metadata_list := p_metadata_list, + name_list := p_name_list, + involvedRiskRel_list := p_involvedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedEventRel_list := p_involvedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + maximumSpeed := p_maximumSpeed, + nationality_list := p_nationality_list, + totalPersonsOnBoard := p_totalPersonsOnBoard, + correspondentAssetRel := p_correspondentAssetRel, + vehiclesRel_list := p_vehiclesRel_list, + cargoRel := p_cargoRel, + arrangement := p_arrangement, + beam := p_beam, + breadth := p_breadth, + callSign := p_callSign, + conditionOfTheCargoAndBallast := p_conditionOfTheCargoAndBallast, + containerCapacity := p_containerCapacity, + deadweight := p_deadweight, + depth := p_depth, + designSpeed := p_designSpeed, + draught := p_draught, + fishingGear := p_fishingGear, + grossTonnage := p_grossTonnage, + hullMaterial := p_hullMaterial, + iMONumber := p_iMONumber, + iNFShipClass := p_iNFShipClass, + iNMARSATNumber := p_iNMARSATNumber, + iRNumber := p_iRNumber, + iSPSSSecurityLevel := p_iSPSSSecurityLevel, + isBanned := p_isBanned, + isFishing := p_isFishing, + lOA := p_lOA, + length_ := p_length_, + lengthenedYear := p_lengthenedYear, + mMSI := p_mMSI, + navigationalStatus := p_navigationalStatus, + netTonnage := p_netTonnage, + regionalIdentification := p_regionalIdentification, + registryDate := p_registryDate, + registryNumber := p_registryNumber, + segregatedBallastVolume := p_segregatedBallastVolume, + shipConfiguration := p_shipConfiguration, + shipType_list := p_shipType_list, + uVI := p_uVI, + underSanitaryMeasure := p_underSanitaryMeasure, + yearBuilt := p_yearBuilt + } // End of template m_vessel + + template (present) Vessel mw_vessel( + template (present) Vessel.colour_list p_colour_list := ?, + template (present) Vessel.externalMarkings_list p_externalMarkings_list := ?, + template (present) Vessel.metadata_list p_metadata_list := ?, + template (present) Vessel.name_list p_name_list := ?, + template (present) Vessel.locationRel_list p_locationRel_list := ?, + template (present) Vessel.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) Vessel.documentRel_list p_documentRel_list := ?, + template (present) Vessel.involvedAgentRel_list p_involvedAgentRel_list := ?, + template (present) Vessel.vehiclesRel_list p_vehiclesRel_list := ?, + template (present) Vessel.shipType_list p_shipType_list := ?, + template (present) Vessel.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) Vessel.nationality_list p_nationality_list := ?, + template UniqueIdentifier p_identifier := *, + template XSD.Double p_maximumSpeed := *, + template XSD.Int p_totalPersonsOnBoard := *, + template Vessel.correspondentAssetRel p_correspondentAssetRel := *, + template Vessel.cargoRel p_cargoRel := *, + template XSD.String p_arrangement := *, + template XSD.Int p_beam := *, + template XSD.Int p_breadth := *, + template XSD.String p_callSign := *, + template ConditionOfTheCargoAndBallastType p_conditionOfTheCargoAndBallast := *, + template XSD.Int p_containerCapacity := *, + template XSD.Int p_deadweight := *, + template XSD.Double p_depth := *, + template XSD.Double p_designSpeed := *, + template XSD.Double p_draught := *, + template FishingGearType p_fishingGear := *, + template XSD.Double p_grossTonnage := *, + template HullMaterialType p_hullMaterial := *, + template XSD.Long p_iMONumber := *, + template INFClassType p_iNFShipClass := *, + template XSD.String p_iNMARSATNumber := *, + template XSD.String p_iRNumber := *, + template http_www_cise_eu_datamodel_v1_entity_vessel.ISPSSecurityLevelType p_iSPSSSecurityLevel := *, + template XSD.Boolean p_isBanned := *, + template XSD.Boolean p_isFishing := *, + template XSD.Double p_lOA := *, + template XSD.Double p_length_ := *, + template XSD.Int p_lengthenedYear := *, + template XSD.Long p_mMSI := *, + template NavigationalStatusType p_navigationalStatus := *, + template XSD.Double p_netTonnage := *, + template XSD.String p_regionalIdentification := *, + template XSD.Date p_registryDate := *, + template XSD.String p_registryNumber := *, + template XSD.Double p_segregatedBallastVolume := *, + template ShipConfigurationType p_shipConfiguration := *, + template XSD.String p_uVI := *, + template SanitaryMeasureType p_underSanitaryMeasure := *, + template XSD.Int p_yearBuilt := * + ) := { + colour_list := p_colour_list, + externalMarkings_list := p_externalMarkings_list, + identifier := p_identifier, + metadata_list := p_metadata_list, + name_list := p_name_list, + involvedRiskRel_list := p_involvedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedEventRel_list := p_involvedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + maximumSpeed := p_maximumSpeed, + nationality_list := p_nationality_list, + totalPersonsOnBoard := p_totalPersonsOnBoard, + correspondentAssetRel := p_correspondentAssetRel, + vehiclesRel_list := p_vehiclesRel_list, + cargoRel := p_cargoRel, + arrangement := p_arrangement, + beam := p_beam, + breadth := p_breadth, + callSign := p_callSign, + conditionOfTheCargoAndBallast := p_conditionOfTheCargoAndBallast, + containerCapacity := p_containerCapacity, + deadweight := p_deadweight, + depth := p_depth, + designSpeed := p_designSpeed, + draught := p_draught, + fishingGear := p_fishingGear, + grossTonnage := p_grossTonnage, + hullMaterial := p_hullMaterial, + iMONumber := p_iMONumber, + iNFShipClass := p_iNFShipClass, + iNMARSATNumber := p_iNMARSATNumber, + iRNumber := p_iRNumber, + iSPSSSecurityLevel := p_iSPSSSecurityLevel, + isBanned := p_isBanned, + isFishing := p_isFishing, + lOA := p_lOA, + length_ := p_length_, + lengthenedYear := p_lengthenedYear, + mMSI := p_mMSI, + navigationalStatus := p_navigationalStatus, + netTonnage := p_netTonnage, + regionalIdentification := p_regionalIdentification, + registryDate := p_registryDate, + registryNumber := p_registryNumber, + segregatedBallastVolume := p_segregatedBallastVolume, + shipConfiguration := p_shipConfiguration, + shipType_list := p_shipType_list, + uVI := p_uVI, + underSanitaryMeasure := p_underSanitaryMeasure, + yearBuilt := p_yearBuilt + } // End of template mw_vessel + + template (omit) VesselLocationRelItem m_vessel_locationRel( + in template (value) VesselLocationRelItem.metadata_list p_metadata_list, + in template (value) VesselLocationRelItem.plannedOperations_list p_plannedOperations_list, + in template (omit) Location_derivations p_location := omit, + in template (omit) XSD.Double p_cOG := omit, + in template (omit) XSD.Double p_heading := omit, + in template (omit) Period p_periodOfTime := omit, + in template (omit) SourceType p_sourceType := omit, + in template (omit) PlacementPurposeType p_placementPurpose := omit, + in template (omit) PlannedWorksType p_plannedWorks := omit, + in template (omit) SensorType p_sensorType := omit, + in template (omit) XSD.Double p_sOG := omit, + in template (omit) XSD.String p_specialSecurityMeasures := omit, + in template (omit) XSD.Double p_speed := omit, + in template (omit) LocationRoleType p_locationRole := omit + ) := { + location := p_location, + cOG := p_cOG, + heading := p_heading, + metadata_list := p_metadata_list, + periodOfTime := p_periodOfTime, + sourceType := p_sourceType, + placementPurpose := p_placementPurpose, + plannedOperations_list := p_plannedOperations_list, + plannedWorks := p_plannedWorks, + sensorType := p_sensorType, + sOG := p_sOG, + specialSecurityMeasures := p_specialSecurityMeasures, + speed := p_speed, + locationRole := p_locationRole + } // End of template m_vessel_locationRel + + template (present) VesselLocationRelItem mw_vessel_locationRel( + template (present) VesselLocationRelItem.metadata_list p_metadata_list := ?, + template (present) VesselLocationRelItem.plannedOperations_list p_plannedOperations_list := ?, + template Location_derivations p_location := *, + template XSD.Double p_cOG := *, + template XSD.Double p_heading := *, + template Period p_periodOfTime := *, + template SourceType p_sourceType := *, + template PlacementPurposeType p_placementPurpose := *, + template PlannedWorksType p_plannedWorks := *, + template SensorType p_sensorType := *, + template XSD.Double p_sOG := *, + template XSD.String p_specialSecurityMeasures := *, + template XSD.Double p_speed := *, + template LocationRoleType p_locationRole := * + ) := { + location := p_location, + cOG := p_cOG, + heading := p_heading, + metadata_list := p_metadata_list, + periodOfTime := p_periodOfTime, + sourceType := p_sourceType, + placementPurpose := p_placementPurpose, + plannedOperations_list := p_plannedOperations_list, + plannedWorks := p_plannedWorks, + sensorType := p_sensorType, + sOG := p_sOG, + specialSecurityMeasures := p_specialSecurityMeasures, + speed := p_speed, + locationRole := p_locationRole + } // End of template mw_vessel_locationRel + + } // End of group vessels + + group action_ { + + template (omit) Action m_action( + in template (value) Action.metadata_list p_metadata_list := {}, + in template (value) Action.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Action.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) Action.locationRel_list p_locationRel_list := {}, + in template (value) Action.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Action.documentRel_list p_documentRel_list := {}, + in template (value) Action.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) ActionStatusType p_actionStatus := omit, + in template (omit) ActionType p_actionType := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_action.MissionType p_mission := omit, + in template (omit) ActionPriorityType p_priority := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + actionStatus := p_actionStatus, + actionType := p_actionType, + mission := p_mission, + priority := p_priority + } // End of template m_action + + template (present) Action mw_action( + template (present) Action.metadata_list p_metadata_list := ?, + template (present) Action.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Action.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) Action.locationRel_list p_locationRel_list := ?, + template (present) Action.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Action.documentRel_list p_documentRel_list := ?, + template (present) Action.involvedAgentRel_list p_involvedAgentRel_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template ActionStatusType p_actionStatus := *, + template ActionType p_actionType := *, + template http_www_cise_eu_datamodel_v1_entity_action.MissionType p_mission := *, + template ActionPriorityType p_priority := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + actionStatus := p_actionStatus, + actionType := p_actionType, + mission := p_mission, + priority := p_priority + } // End of template mw_action + + } // End of group action_ + + group anomaly { + + template (omit) Anomaly m_anomaly( + in template (value) Anomaly.metadata_list p_metadata_list := {}, + in template (value) Anomaly.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Anomaly.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) Anomaly.locationRel_list p_locationRel_list := {}, + in template (value) Anomaly.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Anomaly.documentRel_list p_documentRel_list := {}, + in template (value) Anomaly.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) AnomalyType p_anomalyType := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + anomalyType := p_anomalyType + } // End of template m_anomaly + + template (present) Anomaly mw_anomaly( + template (present) Anomaly.metadata_list p_metadata_list := ?, + template (present) Anomaly.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Anomaly.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) Anomaly.locationRel_list p_locationRel_list := ?, + template (present) Anomaly.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Anomaly.documentRel_list p_documentRel_list := ?, + template (present) Anomaly.involvedAgentRel_list p_involvedAgentRel_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template AnomalyType p_anomalyType := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + anomalyType := p_anomalyType + } // End of template mw_anomaly + + } // End of group anomaly + + group documents { + + template (omit) CertificateDocument m_certificate_document( + in template (value) CertificateDocument.metadata_list p_metadata_list := {}, + in template (value) CertificateDocument.locationRel_list p_locationRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.String p_subject := omit, + in template (omit) XSD.String p_title := omit, + in template (omit) XSD.String p_version := omit, + in template (omit) XSD.Base64Binary p_content := omit, + in template (omit) XSD.HexBinary p_hash := omit, + in template (omit) XSD.AnyURI p_referenceURI := omit, + in template (omit) CertificateDocumentType p_documentType := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + subject := p_subject, + title := p_title, + version := p_version, + locationRel_list := p_locationRel_list, + content := p_content, + hash := p_hash, + referenceURI := p_referenceURI, + documentType := p_documentType + } // End of template m_certificate_document + + template (present) CertificateDocument mw_certificate_document( + template (present) CertificateDocument.metadata_list p_metadata_list := ?, + template (present) CertificateDocument.locationRel_list p_locationRel_list := ?, + template UniqueIdentifier p_identifier := *, + template XSD.String p_subject := *, + template XSD.String p_title := *, + template XSD.String p_version := *, + template XSD.Base64Binary p_content := *, + template XSD.HexBinary p_hash := *, + template XSD.AnyURI p_referenceURI := *, + template CertificateDocumentType p_documentType := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + subject := p_subject, + title := p_title, + version := p_version, + locationRel_list := p_locationRel_list, + content := p_content, + hash := p_hash, + referenceURI := p_referenceURI, + documentType := p_documentType + } // End of template mw_certificate_document + + } // End of group documents + + group incident { + + template (omit) Incident m_incident( + in template (value) Incident.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Incident.metadata_list p_metadata_list := {}, + in template (value) Incident.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) Incident.locationRel_list p_locationRel_list := {}, + in template (value) Incident.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Incident.documentRel_list p_documentRel_list := {}, + in template (value) Incident.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (value) Incident.instructions_list p_instructions_list := {}, + in template (value) Incident.responseType_list p_responseType_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) CertaintyType p_certainty := omit, + in template (omit) XSD.Int p_deathsOnBoard := omit, + in template (omit) XSD.Boolean p_diseasesOnBoard := omit, + in template (omit) XSD.Boolean p_infectionOnBoard := omit, + in template (omit) XSD.Int p_numberOfIIllPersons := omit, + in template (omit) UrgencyType p_responseUrgency := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := omit, + in template (omit) XSD.Boolean p_sickAnimalOnBoard := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard + } // End of template m_incident + + template (present) Incident mw_incident( + template (present) Incident.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Incident.metadata_list p_metadata_list := ?, + template (present) Incident.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) Incident.locationRel_list p_locationRel_list := ?, + template (present) Incident.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Incident.documentRel_list p_documentRel_list := ?, + template (present) Incident.involvedAgentRel_list p_involvedAgentRel_list := ?, + template (present) Incident.instructions_list p_instructions_list := ?, + template (present) Incident.responseType_list p_responseType_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template CertaintyType p_certainty := *, + template XSD.Int p_deathsOnBoard := *, + template XSD.Boolean p_diseasesOnBoard := *, + template XSD.Boolean p_infectionOnBoard := *, + template XSD.Int p_numberOfIIllPersons := *, + template UrgencyType p_responseUrgency := *, + template http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := *, + template XSD.Boolean p_sickAnimalOnBoard := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard + } // End of template mw_incident + + template (omit) IrregularMigrationIncident m_irregular_migration_incident( + in template (value) IrregularMigrationIncident.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) IrregularMigrationIncident.metadata_list p_metadata_list := {}, + in template (value) IrregularMigrationIncident.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) IrregularMigrationIncident.locationRel_list p_locationRel_list := {}, + in template (value) IrregularMigrationIncident.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) IrregularMigrationIncident.documentRel_list p_documentRel_list := {}, + in template (value) IrregularMigrationIncident.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (value) IrregularMigrationIncident.instructions_list p_instructions_list := {}, + in template (value) IrregularMigrationIncident.responseType_list p_responseType_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) CertaintyType p_certainty := omit, + in template (omit) XSD.Int p_deathsOnBoard := omit, + in template (omit) XSD.Boolean p_diseasesOnBoard := omit, + in template (omit) XSD.Boolean p_infectionOnBoard := omit, + in template (omit) XSD.Int p_numberOfIIllPersons := omit, + in template (omit) UrgencyType p_responseUrgency := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := omit, + in template (omit) XSD.Boolean p_sickAnimalOnBoard := omit, + in template (omit) IrregularMigrationIncidentType p_irregularMigrationIncidentType := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard, + irregularMigrationIncidentType := p_irregularMigrationIncidentType + } // End of template m_irregular_migration_incident + + template (present) IrregularMigrationIncident mw_irregular_migration_incident( + template (present) IrregularMigrationIncident.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) IrregularMigrationIncident.metadata_list p_metadata_list := ?, + template (present) IrregularMigrationIncident.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) IrregularMigrationIncident.locationRel_list p_locationRel_list := ?, + template (present) IrregularMigrationIncident.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) IrregularMigrationIncident.documentRel_list p_documentRel_list := ?, + template (present) IrregularMigrationIncident.involvedAgentRel_list p_involvedAgentRel_list := ?, + template (present) IrregularMigrationIncident.instructions_list p_instructions_list := ?, + template (present) IrregularMigrationIncident.responseType_list p_responseType_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template CertaintyType p_certainty := *, + template XSD.Int p_deathsOnBoard := *, + template XSD.Boolean p_diseasesOnBoard := *, + template XSD.Boolean p_infectionOnBoard := *, + template XSD.Int p_numberOfIIllPersons := *, + template UrgencyType p_responseUrgency := *, + template http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := *, + template XSD.Boolean p_sickAnimalOnBoard := *, + template IrregularMigrationIncidentType p_irregularMigrationIncidentType := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard, + irregularMigrationIncidentType := p_irregularMigrationIncidentType + } // End of template mw_irregular_migration_incident + + template (omit) LawInfringementIncident m_law_infringement_incident( + in template (value) LawInfringementIncident.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) LawInfringementIncident.metadata_list p_metadata_list := {}, + in template (value) LawInfringementIncident.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) LawInfringementIncident.locationRel_list p_locationRel_list := {}, + in template (value) LawInfringementIncident.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) LawInfringementIncident.documentRel_list p_documentRel_list := {}, + in template (value) LawInfringementIncident.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (value) LawInfringementIncident.instructions_list p_instructions_list := {}, + in template (value) LawInfringementIncident.responseType_list p_responseType_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) CertaintyType p_certainty := omit, + in template (omit) XSD.Int p_deathsOnBoard := omit, + in template (omit) XSD.Boolean p_diseasesOnBoard := omit, + in template (omit) XSD.Boolean p_infectionOnBoard := omit, + in template (omit) XSD.Int p_numberOfIIllPersons := omit, + in template (omit) UrgencyType p_responseUrgency := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := omit, + in template (omit) XSD.Boolean p_sickAnimalOnBoard := omit, + in template (omit) LawInfringementIncidentType p_lawInfringementIncidentType := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard, + lawInfringementIncidentType := p_lawInfringementIncidentType + } // End of template m_law_infringement_incident + + template (present) LawInfringementIncident mw_law_infringement_incident( + template (present) LawInfringementIncident.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) LawInfringementIncident.metadata_list p_metadata_list := ?, + template (present) LawInfringementIncident.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) LawInfringementIncident.locationRel_list p_locationRel_list := ?, + template (present) LawInfringementIncident.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) LawInfringementIncident.documentRel_list p_documentRel_list := ?, + template (present) LawInfringementIncident.involvedAgentRel_list p_involvedAgentRel_list := ?, + template (present) LawInfringementIncident.instructions_list p_instructions_list := ?, + template (present) LawInfringementIncident.responseType_list p_responseType_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template CertaintyType p_certainty := *, + template XSD.Int p_deathsOnBoard := *, + template XSD.Boolean p_diseasesOnBoard := *, + template XSD.Boolean p_infectionOnBoard := *, + template XSD.Int p_numberOfIIllPersons := *, + template UrgencyType p_responseUrgency := *, + template http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := *, + template XSD.Boolean p_sickAnimalOnBoard := *, + template LawInfringementIncidentType p_lawInfringementIncidentType := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard, + lawInfringementIncidentType := p_lawInfringementIncidentType + } // End of template mw_law_infringement_incident + + } // End of group incident + + group meteo { + + template (omit) MeteoOceanographicCondition m_meteo_oceanographic_condition( + in template (omit) MeteoOceanographicCondition.locationRel p_locationRel := omit, + in template (omit) XSD.Double p_airTemperature := omit, + in template (omit) XSD.Int p_cloudCeiling := omit, + in template (omit) CloudCoverType p_cloudCover := omit, + in template (omit) XSD.Int p_precipitation := omit, + in template (omit) Period p_referencePeriod := omit, + in template (omit) XSD.Double p_salinity := omit, + in template (omit) SeaConditionType p_seaCondition := omit, + in template (omit) XSD.Double p_seaLevelPressure := omit, + in template (omit) SourceType p_sourceType := omit, + in template (omit) XSD.Double p_tidalCurrentDirection := omit, + in template (omit) XSD.Double p_tidalCurrentSpeed := omit, + in template (omit) TidesType p_tides := omit, + in template (omit) XSD.Double p_visibility := omit, + in template (omit) XSD.Double p_waterTemperature := omit, + in template (omit) XSD.Double p_waveDirection := omit, + in template (omit) XSD.Double p_waveHeight := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_location.WeatherConditionType p_weatherCondition := omit, + in template (omit) XSD.Double p_windCurrentDirection := omit, + in template (omit) XSD.Double p_windCurrentSpeed := omit + ) := { + airTemperature := p_airTemperature, + cloudCeiling := p_cloudCeiling, + cloudCover := p_cloudCover, + precipitation := p_precipitation, + referencePeriod := p_referencePeriod, + salinity := p_salinity, + seaCondition := p_seaCondition, + seaLevelPressure := p_seaLevelPressure, + sourceType := p_sourceType, + tidalCurrentDirection := p_tidalCurrentDirection, + tidalCurrentSpeed := p_tidalCurrentSpeed, + tides := p_tides, + visibility := p_visibility, + waterTemperature := p_waterTemperature, + waveDirection := p_waveDirection, + waveHeight := p_waveHeight, + weatherCondition := p_weatherCondition, + windCurrentDirection := p_windCurrentDirection, + windCurrentSpeed := p_windCurrentSpeed, + locationRel := p_locationRel + } // End of template m_meteo_oceanographic_condition + + template (present) MeteoOceanographicCondition mw_meteo_oceanographic_condition( + template XSD.Double p_airTemperature := *, + template XSD.Int p_cloudCeiling := *, + template CloudCoverType p_cloudCover := *, + template XSD.Int p_precipitation := *, + template Period p_referencePeriod := *, + template XSD.Double p_salinity := *, + template SeaConditionType p_seaCondition := *, + template XSD.Double p_seaLevelPressure := *, + template SourceType p_sourceType := *, + template XSD.Double p_tidalCurrentDirection := *, + template XSD.Double p_tidalCurrentSpeed := *, + template TidesType p_tides := *, + template XSD.Double p_visibility := *, + template XSD.Double p_waterTemperature := *, + template XSD.Double p_waveDirection := *, + template XSD.Double p_waveHeight := *, + template http_www_cise_eu_datamodel_v1_entity_location.WeatherConditionType p_weatherCondition := *, + template XSD.Double p_windCurrentDirection := *, + template XSD.Double p_windCurrentSpeed := *, + template MeteoOceanographicCondition.locationRel p_locationRel := * + ) := { + airTemperature := p_airTemperature, + cloudCeiling := p_cloudCeiling, + cloudCover := p_cloudCover, + precipitation := p_precipitation, + referencePeriod := p_referencePeriod, + salinity := p_salinity, + seaCondition := p_seaCondition, + seaLevelPressure := p_seaLevelPressure, + sourceType := p_sourceType, + tidalCurrentDirection := p_tidalCurrentDirection, + tidalCurrentSpeed := p_tidalCurrentSpeed, + tides := p_tides, + visibility := p_visibility, + waterTemperature := p_waterTemperature, + waveDirection := p_waveDirection, + waveHeight := p_waveHeight, + weatherCondition := p_weatherCondition, + windCurrentDirection := p_windCurrentDirection, + windCurrentSpeed := p_windCurrentSpeed, + locationRel := p_locationRel + } // End of template mw_meteo_oceanographic_condition + + } // End of group meteo + + group organization { + + template (omit) Organization m_organization( + in template (value) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + in template (value) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + in template (value) Organization.metadata_list p_metadata_list := {}, + in template (value) Organization.nationality_list p_nationality_list := {}, + in template (value) Organization.locationRel_list p_locationRel_list := {}, + in template (value) Organization.documentRel_list p_documentRel_list := {}, + in template (value) Organization.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Organization.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Organization.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) Organization.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) Organization.organizationPurpose_list p_organizationPurpose_list := {}, + in template (omit) XSD.String p_contactInformation := omit, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit, + in template (omit) XSD.String p_alternativeName := omit, + in template (omit) OrganizationClassificationType p_organizationClassification := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole + } // End of template m_organization + + template (present) Organization mw_organization( + template (present) Organization.metadata_list p_metadata_list := ?, + template (present) Organization.nationality_list p_nationality_list := ?, + template (present) Organization.locationRel_list p_locationRel_list := ?, + template (present) Organization.documentRel_list p_documentRel_list := ?, + template (present) Organization.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Organization.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Organization.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) Organization.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) Organization.organizationPurpose_list p_organizationPurpose_list := ?, + template XSD.String p_contactInformation := *, + template UniqueIdentifier p_identifier := *, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := *, + template XSD.String p_alternativeName := *, + template XSD.String p_identificationNumber := *, + template XSD.String p_legalName := *, + template OrganizationClassificationType p_organizationClassification := *, + template http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole + } // End of template mw_organization + + } // End of group organization + + group risk { + + template (omit) Risk m_risk( + in template (omit) UniqueIdentifier p_identifier := omit, + in template (value) Risk.metadata_list p_metadata_list := {}, + in template (value) Risk.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Risk.locationRel_list p_locationRel_list := {}, + in template (value) Risk.impliedEventRel_list p_impliedEventRel_list := {}, + in template (value) Risk.documentRel_list p_documentRel_list := {}, + in template (value) Risk.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) RiskLevelType p_riskLevel := omit, + in template (omit) RiskProbabilityType p_riskProbability := omit, + in template (omit) RiskSeverityType p_riskSeverity := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_risk.RiskType p_riskType := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + occurrencePeriod := p_occurrencePeriod, + riskLevel := p_riskLevel, + riskProbability := p_riskProbability, + riskSeverity := p_riskSeverity, + riskType := p_riskType, + involvedObjectRel_list := p_involvedObjectRel_list, + locationRel_list := p_locationRel_list, + impliedEventRel_list := p_impliedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list + } // End of template m_risk + + template (present) Risk mw_risk( + template UniqueIdentifier p_identifier := *, + template (present) Risk.metadata_list p_metadata_list := ?, + template (present) Risk.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Risk.locationRel_list p_locationRel_list := ?, + template (present) Risk.impliedEventRel_list p_impliedEventRel_list := ?, + template (present) Risk.documentRel_list p_documentRel_list := ?, + template (present) Risk.involvedAgentRel_list p_involvedAgentRel_list := ?, + template Period p_occurrencePeriod := *, + template RiskLevelType p_riskLevel := *, + template RiskProbabilityType p_riskProbability := *, + template RiskSeverityType p_riskSeverity := *, + template http_www_cise_eu_datamodel_v1_entity_risk.RiskType p_riskType := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + occurrencePeriod := p_occurrencePeriod, + riskLevel := p_riskLevel, + riskProbability := p_riskProbability, + riskSeverity := p_riskSeverity, + riskType := p_riskType, + involvedObjectRel_list := p_involvedObjectRel_list, + locationRel_list := p_locationRel_list, + impliedEventRel_list := p_impliedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list + } // End of template mw_risk + + } // End of group risk + + group cargos { + + template (omit) Cargo m_cargo( + in template (value) Cargo.colour_list p_colour_list := {}, + in template (value) Cargo.externalMarkings_list p_externalMarkings_list := {}, + in template (value) Cargo.metadata_list p_metadata_list := {}, + in template (value) Cargo.name_list p_name_list := {}, + in template (value) Cargo.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) Cargo.locationRel_list p_locationRel_list := {}, + in template (value) Cargo.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) Cargo.documentRel_list p_documentRel_list := {}, + in template (value) Cargo.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (value) Cargo.containedCargoUnitRel_list p_containedCargoUnitRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) CargoType p_cargoType := omit + ) := { + colour_list := p_colour_list, + externalMarkings_list := p_externalMarkings_list, + identifier := p_identifier, + metadata_list := p_metadata_list, + name_list := p_name_list, + involvedRiskRel_list := p_involvedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedEventRel_list := p_involvedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + cargoType := p_cargoType, + containedCargoUnitRel_list := p_containedCargoUnitRel_list + } // End of template m_cargo + + template (present) Cargo mw_cargo( + template (present) Cargo.colour_list p_colour_list := ?, + template (present) Cargo.externalMarkings_list p_externalMarkings_list := ?, + template (present) Cargo.metadata_list p_metadata_list := ?, + template (present) Cargo.name_list p_name_list := ?, + template (present) Cargo.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) Cargo.locationRel_list p_locationRel_list := ?, + template (present) Cargo.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) Cargo.documentRel_list p_documentRel_list := ?, + template (present) Cargo.involvedAgentRel_list p_involvedAgentRel_list := ?, + template (present) Cargo.containedCargoUnitRel_list p_containedCargoUnitRel_list := ?, + template UniqueIdentifier p_identifier := *, + template CargoType p_cargoType := * + ) := { + colour_list := p_colour_list, + externalMarkings_list := p_externalMarkings_list, + identifier := p_identifier, + metadata_list := p_metadata_list, + name_list := p_name_list, + involvedRiskRel_list := p_involvedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedEventRel_list := p_involvedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + cargoType := p_cargoType, + containedCargoUnitRel_list := p_containedCargoUnitRel_list + } // End of template mw_cargo + + } // End of group cargos + + group miscellaneous { + + template (omit) UniqueIdentifier m_unique_identifier( + in template (value) UniqueIdentifier.correlatedWithRel_list p_correlatedWithRel_list:= {}, + in template (omit) Organization_derivations p_generatedBy := omit, + in template (omit) XSD.DateTime p_generatedIn := omit, + in template (omit) XSD.String p_uUID := omit + ) := { + generatedBy := p_generatedBy, + generatedIn := p_generatedIn, + uUID := p_uUID, + correlatedWithRel_list := p_correlatedWithRel_list + } // End of template m_unique_identifier + + template (present) UniqueIdentifier mw_unique_identifier( + template (present) UniqueIdentifier.correlatedWithRel_list p_correlatedWithRel_list := ?, + template Organization_derivations p_generatedBy := *, + template XSD.DateTime p_generatedIn := *, + template XSD.String p_uUID := * + ) := { + generatedBy := p_generatedBy, + generatedIn := p_generatedIn, + uUID := p_uUID, + correlatedWithRel_list := p_correlatedWithRel_list + } // End of template mw_unique_identifier + + template (omit) Metadata m_metatdata( + in template (omit) XSD.String p_abstract := omit, + in template (omit) XSD.String p_comments := omit, + in template (omit) XSD.DateTime p_creationDate := omit, + in template (omit) Agent_derivations p_creator := omit, + in template (omit) XSD.String p_description := omit, + in template (omit) XSD.String p_designation := omit, + in template (omit) FileMediaType p_fileMediaType := omit, + in template (omit) XSD.AnyURI p_fileSchema := omit, + in template (omit) XSD.AnyURI p_fileURI := omit, + in template (omit) InformationReliabilityLevelType p_informationReliabilityLevel := omit, + in template (omit) InformationSecurityClassificationType p_informationSecurityClassification := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_metadata.InformationSensitivityDegreeType p_informationSensitivityDegree := omit, + in template (omit) XSD.String p_language_ := omit, + in template (omit) XSD.DateTime p_publicationDate := omit, + in template (omit) Agent_derivations p_publisher := omit, + in template (omit) Period p_validityPeriod := omit + ) := { + abstract := p_abstract, + comments := p_comments, + creationDate := p_creationDate, + creator := p_creator, + description := p_description, + designation := p_designation, + fileMediaType := p_fileMediaType, + fileSchema := p_fileSchema, + fileURI := p_fileURI, + informationReliabilityLevel := p_informationReliabilityLevel, + informationSecurityClassification := p_informationSecurityClassification, + informationSensitivityDegree := p_informationSensitivityDegree, + language_ := p_language_, + publicationDate := p_publicationDate, + publisher := p_publisher, + validityPeriod := p_validityPeriod + } // End of template m_metatdata + + template Metadata mw_metatdata( + template XSD.String p_abstract := *, + template XSD.String p_comments := *, + template XSD.DateTime p_creationDate := *, + template Agent_derivations p_creator := *, + template XSD.String p_description := *, + template XSD.String p_designation := *, + template FileMediaType p_fileMediaType := *, + template XSD.AnyURI p_fileSchema := *, + template XSD.AnyURI p_fileURI := *, + template InformationReliabilityLevelType p_informationReliabilityLevel := *, + template InformationSecurityClassificationType p_informationSecurityClassification := *, + template http_www_cise_eu_datamodel_v1_entity_metadata.InformationSensitivityDegreeType p_informationSensitivityDegree := *, + template XSD.String p_language_ := *, + template XSD.DateTime p_publicationDate := *, + template Agent_derivations p_publisher := *, + template Period p_validityPeriod := * + ) := { + abstract := p_abstract, + comments := p_comments, + creationDate := p_creationDate, + creator := p_creator, + description := p_description, + designation := p_designation, + fileMediaType := p_fileMediaType, + fileSchema := p_fileSchema, + fileURI := p_fileURI, + informationReliabilityLevel := p_informationReliabilityLevel, + informationSecurityClassification := p_informationSecurityClassification, + informationSensitivityDegree := p_informationSensitivityDegree, + language_ := p_language_, + publicationDate := p_publicationDate, + publisher := p_publisher, + validityPeriod := p_validityPeriod + } // End of template mw_metatdata + + template (omit) Agent m_agent( + in XSD.String p_contactInformation := PX_AGENT_CONTACT, + in template (value) UniqueIdentifier p_identifier, + in template (value) Agent.metadata_list p_metadata_list := {}, + in template (value) Agent.nationality_list p_nationality_list := {}, + in template (value) Agent.locationRel_list p_locationRel_list := {}, + in template (value) Agent.documentRel_list p_documentRel_list := {}, + in template (value) Agent.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Agent.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Agent.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) Agent.involvedEventRel_list p_involvedEventRel_list := {}, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list + } // End of template m_agent + + template (present) Agent mw_agent( + template (present) Agent.metadata_list p_metadata_list := ?, + template (present) Agent.nationality_list p_nationality_list := ?, + template (present) Agent.locationRel_list p_locationRel_list := ?, + template (present) Agent.documentRel_list p_documentRel_list := ?, + template (present) Agent.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Agent.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Agent.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) Agent.involvedEventRel_list p_involvedEventRel_list := ?, + template XSD.String p_contactInformation := *, + template UniqueIdentifier p_identifier := *, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list + } // End of template mw_agent + + template (omit) Person m_person( + in XSD.String p_contactInformation := PX_AGENT_CONTACT, + in template (value) UniqueIdentifier p_identifier, + in template (value) Person.metadata_list p_metadata_list := {}, + in template (value) Person.nationality_list p_nationality_list := {}, + in template (value) Person.locationRel_list p_locationRel_list := {}, + in template (value) Person.documentRel_list p_documentRel_list := {}, + in template (value) Person.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Person.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Person.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) Person.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) Person.personIdentifiers_list p_personIdentifiers_list := {}, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit, + in template (omit) XSD.String p_alternativeName := omit, + in template (omit) XSD.Date p_birthDate := omit, + in template (omit) XSD.String p_birthName := omit, + in template (omit) XSD.DateTime p_dateOfDeath := omit, + in template (omit) XSD.String p_familyName := omit, + in template (omit) XSD.String p_fullName := omit, + in template (omit) GenderType p_gender := omit, + in template (omit) XSD.String p_givenName := omit, + in template (omit) XSD.String p_patronymicName := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + birthDate := p_birthDate, + birthName := p_birthName, + dateOfDeath := p_dateOfDeath, + familyName := p_familyName, + fullName := p_fullName, + gender := p_gender, + givenName := p_givenName, + patronymicName := p_patronymicName, + personIdentifiers_list := p_personIdentifiers_list + } // End of template m_person + + template (present) Person mw_person( + XSD.String p_contactInformation := PX_AGENT_CONTACT, + template (present) UniqueIdentifier p_identifier := ?, + template (present) Person.metadata_list p_metadata_list := ?, + template (present) Person.nationality_list p_nationality_list := ?, + template (present) Person.locationRel_list p_locationRel_list := ?, + template (present) Person.documentRel_list p_documentRel_list := ?, + template (present) Person.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Person.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Person.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) Person.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) Person.personIdentifiers_list p_personIdentifiers_list := ?, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := *, + template XSD.String p_alternativeName := *, + template XSD.Date p_birthDate := *, + template XSD.String p_birthName := *, + template XSD.DateTime p_dateOfDeath := *, + template XSD.String p_familyName := *, + template XSD.String p_fullName := *, + template GenderType p_gender := *, + template XSD.String p_givenName := *, + template XSD.String p_patronymicName := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + birthDate := p_birthDate, + birthName := p_birthName, + dateOfDeath := p_dateOfDeath, + familyName := p_familyName, + fullName := p_fullName, + gender := p_gender, + givenName := p_givenName, + patronymicName := p_patronymicName, + personIdentifiers_list := p_personIdentifiers_list + } // End of template mw_person + + template (omit) FormalOrganization m_formal_organization( + in template (value) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + in template (value) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + in template (value) FormalOrganization.metadata_list p_metadata_list := {}, + in template (value) FormalOrganization.nationality_list p_nationality_list := {}, + in template (value) FormalOrganization.locationRel_list p_locationRel_list := {}, + in template (value) FormalOrganization.documentRel_list p_documentRel_list := {}, + in template (value) FormalOrganization.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) FormalOrganization.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) FormalOrganization.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) FormalOrganization.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) FormalOrganization.organizationPurpose_list p_organizationPurpose_list := {}, + in template (omit) XSD.String p_contactInformation := omit, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit, + in template (omit) XSD.String p_alternativeName := omit, + in template (omit) OrganizationClassificationType p_organizationClassification := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := omit, + in template (omit) XSD.String p_formalOrganizationName := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + formalOrganizationName := p_formalOrganizationName + } // End of template m_formal_organization + + template (present) FormalOrganization mw_formal_organization( + template (present) FormalOrganization.metadata_list p_metadata_list := ?, + template (present) FormalOrganization.nationality_list p_nationality_list := ?, + template (present) FormalOrganization.locationRel_list p_locationRel_list := ?, + template (present) FormalOrganization.documentRel_list p_documentRel_list := ?, + template (present) FormalOrganization.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) FormalOrganization.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) FormalOrganization.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) FormalOrganization.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) FormalOrganization.organizationPurpose_list p_organizationPurpose_list := ?, + template XSD.String p_contactInformation := *, + template UniqueIdentifier p_identifier := *, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := *, + template XSD.String p_alternativeName := *, + template XSD.String p_identificationNumber := *, + template XSD.String p_legalName := *, + template OrganizationClassificationType p_organizationClassification := *, + template http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := *, + template XSD.String p_formalOrganizationName := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + formalOrganizationName := p_formalOrganizationName + } // End of template mw_formal_organization + + template (omit) PortOrganization m_port_organization( + in template (value) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + in template (value) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + in template (value) PortOrganization.metadata_list p_metadata_list := {}, + in template (value) PortOrganization.nationality_list p_nationality_list := {}, + in template (value) PortOrganization.locationRel_list p_locationRel_list := {}, + in template (value) PortOrganization.documentRel_list p_documentRel_list := {}, + in template (value) PortOrganization.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) PortOrganization.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) PortOrganization.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) PortOrganization.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) PortOrganization.organizationPurpose_list p_organizationPurpose_list := {}, + in template (omit) XSD.String p_contactInformation := omit, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit, + in template (omit) XSD.String p_alternativeName := omit, + in template (omit) OrganizationClassificationType p_organizationClassification := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := omit, + in template (omit) XSD.String p_iMOCompanyIdentificationNumber := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + iMOCompanyIdentificationNumber := p_iMOCompanyIdentificationNumber + } // End of template m_port_organization + + template (present) PortOrganization mw_port_organization( + template (present) PortOrganization.metadata_list p_metadata_list := ?, + template (present) PortOrganization.nationality_list p_nationality_list := ?, + template (present) PortOrganization.locationRel_list p_locationRel_list := ?, + template (present) PortOrganization.documentRel_list p_documentRel_list := ?, + template (present) PortOrganization.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) PortOrganization.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) PortOrganization.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) PortOrganization.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) PortOrganization.organizationPurpose_list p_organizationPurpose_list := ?, + template XSD.String p_contactInformation := *, + template UniqueIdentifier p_identifier := *, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := *, + template XSD.String p_alternativeName := *, + template XSD.String p_identificationNumber := *, + template XSD.String p_legalName := *, + template OrganizationClassificationType p_organizationClassification := *, + template http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := *, + template XSD.String p_iMOCompanyIdentificationNumber := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + iMOCompanyIdentificationNumber := p_iMOCompanyIdentificationNumber + } // End of template mw_port_organization + + template (omit) OrganizationalCollaboration m_organizational_collaboration( + in template (value) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + in template (value) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + in template (value) OrganizationalCollaboration.metadata_list p_metadata_list := {}, + in template (value) OrganizationalCollaboration.nationality_list p_nationality_list := {}, + in template (value) OrganizationalCollaboration.locationRel_list p_locationRel_list := {}, + in template (value) OrganizationalCollaboration.documentRel_list p_documentRel_list := {}, + in template (value) OrganizationalCollaboration.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) OrganizationalCollaboration.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) OrganizationalCollaboration.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) OrganizationalCollaboration.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) OrganizationalCollaboration.organizationPurpose_list p_organizationPurpose_list := {}, + in template (value) OrganizationalCollaboration.participantRel_list p_participantRel_list := {}, + in template (omit) XSD.String p_contactInformation := omit, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit, + in template (omit) XSD.String p_alternativeName := omit, + in template (omit) OrganizationClassificationType p_organizationClassification := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + participantRel_list := p_participantRel_list + } // End of template m_organizational_collaboration + + template (present) OrganizationalCollaboration mw_organizational_collaboration( + template (present) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + template (present) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + template (present) OrganizationalCollaboration.metadata_list p_metadata_list := ?, + template (present) OrganizationalCollaboration.nationality_list p_nationality_list := ?, + template (present) OrganizationalCollaboration.locationRel_list p_locationRel_list := ?, + template (present) OrganizationalCollaboration.documentRel_list p_documentRel_list := ?, + template (present) OrganizationalCollaboration.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) OrganizationalCollaboration.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) OrganizationalCollaboration.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) OrganizationalCollaboration.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) OrganizationalCollaboration.organizationPurpose_list p_organizationPurpose_list := ?, + template (present) OrganizationalCollaboration.participantRel_list p_participantRel_list := ?, + template XSD.String p_contactInformation := *, + template UniqueIdentifier p_identifier := *, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := *, + template XSD.String p_alternativeName := *, + template OrganizationClassificationType p_organizationClassification := *, + template http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + participantRel_list := p_participantRel_list + } // End of template mw_organizational_collaboration + + template (omit) OrganizationalUnit m_organizational_unit( + in template (value) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + in template (value) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + in template (value) OrganizationalUnit.metadata_list p_metadata_list := {}, + in template (value) OrganizationalUnit.nationality_list p_nationality_list := {}, + in template (value) OrganizationalUnit.locationRel_list p_locationRel_list := {}, + in template (value) OrganizationalUnit.documentRel_list p_documentRel_list := {}, + in template (value) OrganizationalUnit.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) OrganizationalUnit.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) OrganizationalUnit.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) OrganizationalUnit.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) OrganizationalUnit.organizationPurpose_list p_organizationPurpose_list := {}, + in template (omit) XSD.String p_contactInformation := omit, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) XSD.Boolean p_isOfInterest := omit, + in template (omit) XSD.Boolean p_isSuspect := omit, + in template (omit) XSD.String p_alternativeName := omit, + in template (omit) OrganizationClassificationType p_organizationClassification := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := omit, + in template (omit) XSD.String p_unitIdentifier := omit + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + unitIdentifier := p_unitIdentifier + } // End of template m_organizational_unit + + template (present) OrganizationalUnit mw_organizational_unit( + template (present) XSD.String p_legalName := PX_ORGANIZATION_LEGAL_NAME, + template (present) XSD.String p_identificationNumber := PX_ORGANIZATION_UUID, + template (present) OrganizationalUnit.metadata_list p_metadata_list := ?, + template (present) OrganizationalUnit.nationality_list p_nationality_list := ?, + template (present) OrganizationalUnit.locationRel_list p_locationRel_list := ?, + template (present) OrganizationalUnit.documentRel_list p_documentRel_list := ?, + template (present) OrganizationalUnit.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) OrganizationalUnit.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) OrganizationalUnit.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) OrganizationalUnit.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) OrganizationalUnit.organizationPurpose_list p_organizationPurpose_list := ?, + template XSD.String p_contactInformation := *, + template UniqueIdentifier p_identifier := *, + template XSD.Boolean p_isOfInterest := *, + template XSD.Boolean p_isSuspect := *, + template XSD.String p_alternativeName := *, + template OrganizationClassificationType p_organizationClassification := *, + template http_www_cise_eu_datamodel_v1_entity_organization.OrganizationRoleType p_organizationRole := *, + template XSD.String p_unitIdentifier := * + ) := { + contactInformation := p_contactInformation, + identifier := p_identifier, + isOfInterest := p_isOfInterest, + isSuspect := p_isSuspect, + metadata_list := p_metadata_list, + nationality_list := p_nationality_list, + locationRel_list := p_locationRel_list, + documentRel_list := p_documentRel_list, + involvedWithRel_list := p_involvedWithRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + involvedRiskRel_list := p_involvedRiskRel_list, + involvedEventRel_list := p_involvedEventRel_list, + alternativeName := p_alternativeName, + identificationNumber := p_identificationNumber, + legalName := p_legalName, + organizationClassification := p_organizationClassification, + organizationPurpose_list := p_organizationPurpose_list, + organizationRole := p_organizationRole, + unitIdentifier := p_unitIdentifier + } // End of template mw_organizational_unit + + template (omit) Period m_period( + in template (omit) XSD.Duration p_duration := omit, + in template (omit) XSD.Date p_endDate := PX_PERIOD_END_DATE, + in template (omit) XSD.Time p_endTime := omit, + in template (omit) XSD.Date p_startDate := PX_PERIOD_START_DATE, + in template (omit) XSD.Time p_startTime := omit + ) := { + duration := p_duration, + endDate := p_endDate, + endTime := p_endTime, + startDate := p_startDate, + startTime := p_startTime + } // End of template m_period + + template Period mw_period( + template XSD.Duration p_duration := *, + template XSD.Date p_endDate := *, + template XSD.Time p_endTime := *, + template XSD.Date p_startDate := *, + template XSD.Time p_startTime := * + ) := { + duration := p_duration, + endDate := p_endDate, + endTime := p_endTime, + startDate := p_startDate, + startTime := p_startTime + } // End of template mw_period + + template (omit) Location m_location( + in template (value) Location.geometry_list p_geometry_list, + in template (value) Location.locationZone_list p_locationZone_list := {}, + in template (value) Location.metadata_list p_metadata_list := {}, + in template (omit) LocationQualitativeAccuracyType p_locationQualitativeAccuracy := omit, + in template (omit) OperationalPurposeType p_operationalPurpose := omit + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose + } // End of template m_location + + template (present) Location mw_location( + template (present) Location.geometry_list p_geometry_list := ?, + template (present) Location.locationZone_list p_locationZone_list := ?, + template (present) Location.metadata_list p_metadata_list := ?, + template LocationQualitativeAccuracyType p_locationQualitativeAccuracy := *, + template OperationalPurposeType p_operationalPurpose := * + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose + } // End of template mw_location + + /*template (present) Cargo.locationRel_list mw_cargo_location( + template (present) Cargo.locationRel_list.metadata_list p_metadata_list := ?, + template (present) Cargo.locationRel_list.plannedOperations_list p_plannedOperations_list := ?, + template Location_derivations p_location := *, + template XSD.Double p_cOG := *, + template XSD.Double p_heading := *, + template Period p_periodOfTime := *, + template SourceType p_sourceType := *, + template PlacementPurposeType p_placementPurpose := *, + template PlannedWorksType p_plannedWorks := *, + template SensorType p_sensorType := *, + template XSD.Double p_sOG := *, + template XSD.String p_specialSecurityMeasures := *, + template XSD.Double p_speed := *, + template LocationRoleType p_locationRole := * + ) := { + location := p_location, + cOG := p_cOG, + heading := p_heading, + metadata_list := p_metadata_list, + periodOfTime := p_periodOfTime, + sourceType := p_sourceType, + placementPurpose := p_placementPurpose, + plannedOperations_list := p_plannedOperations_list, + plannedWorks := p_plannedWorks, + sensorType := p_sensorType, + sOG := p_sOG, + specialSecurityMeasures := p_specialSecurityMeasures, + speed := p_speed, + locationRole := p_locationRole + } // End of template m_cargo_location + + template (omit) Cargo.locationRel_list m_cargo_location( + in template (value) Cargo.locationRel_list.metadata_list p_metadata_list := {}, + in template (value) Cargo.locationRel_list.plannedOperations_list p_plannedOperations_list := {}, + in template (omit) Location_derivations p_location := omit, + in template (omit) XSD.Double p_cOG := omit, + in template (omit) XSD.Double p_heading := omit, + in template (omit) Period p_periodOfTime := omit, + in template (omit) SourceType p_sourceType := omit, + in template (omit) PlacementPurposeType p_placementPurpose := omit, + in template (omit) PlannedWorksType p_plannedWorks := omit, + in template (omit) SensorType p_sensorType := omit, + in template (omit) XSD.Double p_sOG := omit, + in template (omit) XSD.String p_specialSecurityMeasures := omit, + in template (omit) XSD.Double p_speed := omit, + in template (omit) LocationRoleType p_locationRole := omit + ) := { + location := p_location, + cOG := p_cOG, + heading := p_heading, + metadata_list := p_metadata_list, + periodOfTime := p_periodOfTime, + sourceType := p_sourceType, + placementPurpose := p_placementPurpose, + plannedOperations_list := p_plannedOperations_list, + plannedWorks := p_plannedWorks, + sensorType := p_sensorType, + sOG := p_sOG, + specialSecurityMeasures := p_specialSecurityMeasures, + speed := p_speed, + locationRole := p_locationRole + } // End of template mw_cargo_location +*/ + + template (omit) NamedLocation m_named_location( + in template (value) NamedLocation.geometry_list p_geometry_list := {}, + in template (value) NamedLocation.locationZone_list p_locationZone_list := {}, + in template (value) NamedLocation.metadata_list p_metadata_list := {}, + in template (value) NamedLocation.geographicName_list p_geographicName_list := {}, + in template (omit) LocationQualitativeAccuracyType p_locationQualitativeAccuracy := omit, + in template (omit) OperationalPurposeType p_operationalPurpose := omit, + in template (omit) XSD.AnyURI p_geographicIdentifier := omit + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose, + geographicIdentifier := p_geographicIdentifier, + geographicName_list := p_geographicName_list + } // End of template m_named_location + + template (present) NamedLocation mw_named_location( + template (present) NamedLocation.geometry_list p_geometry_list := ?, + template (present) NamedLocation.locationZone_list p_locationZone_list := ?, + template (present) NamedLocation.metadata_list p_metadata_list := ?, + template (present) NamedLocation.geographicName_list p_geographicName_list := ?, + template LocationQualitativeAccuracyType p_locationQualitativeAccuracy := *, + template OperationalPurposeType p_operationalPurpose := *, + template XSD.AnyURI p_geographicIdentifier := * + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose, + geographicIdentifier := p_geographicIdentifier, + geographicName_list := p_geographicName_list + } // End of template mw_named_location + + template (omit) PortFacilityLocation m_port_facility_location( + in template (value) NamedLocation.geometry_list p_geometry_list := {}, + in template (value) NamedLocation.locationZone_list p_locationZone_list := {}, + in template (value) NamedLocation.metadata_list p_metadata_list := {}, + in template (omit) LocationQualitativeAccuracyType p_locationQualitativeAccuracy := omit, + in template (omit) OperationalPurposeType p_operationalPurpose := omit, + in template (omit) XSD.String p_portFacilityName := omit, + in template (omit) XSD.String p_portFacilityNumber := omit, + in template (omit) ISPSSecurityLevelType p_portSecurityLevel := omit + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose, + portFacilityName := p_portFacilityName, + portFacilityNumber := p_portFacilityNumber, + portSecurityLevel := p_portSecurityLevel + } // End of template m_port_facility_location + + template (present) PortFacilityLocation mw_port_facility_location( + template (present) NamedLocation.geometry_list p_geometry_list := ?, + template (present) NamedLocation.locationZone_list p_locationZone_list := ?, + template (present) NamedLocation.metadata_list p_metadata_list := ?, + template LocationQualitativeAccuracyType p_locationQualitativeAccuracy := *, + template OperationalPurposeType p_operationalPurpose := *, + template XSD.String p_portFacilityName := *, + template XSD.String p_portFacilityNumber := *, + template ISPSSecurityLevelType p_portSecurityLevel := * + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose, + portFacilityName := p_portFacilityName, + portFacilityNumber := p_portFacilityNumber, + portSecurityLevel := p_portSecurityLevel + } // End of template mw_port_facility_location + + template (omit) PortLocation m_port_location( + in template (value) NamedLocation.geometry_list p_geometry_list := {}, + in template (value) NamedLocation.locationZone_list p_locationZone_list := {}, + in template (value) NamedLocation.metadata_list p_metadata_list := {}, + in template (omit) LocationQualitativeAccuracyType p_locationQualitativeAccuracy := omit, + in template (omit) OperationalPurposeType p_operationalPurpose := omit, + in template (omit) XSD.String p_locationCode := omit, + in template (omit) XSD.String p_portName := omit, + in template (omit) ISPSSecurityLevelType p_portSecurityLevel := omit + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose, + locationCode := p_locationCode, + portName := p_portName, + portSecurityLevel := p_portSecurityLevel + } // End of template m_port_location + + template (present) PortLocation mw_port_location( + template (present) NamedLocation.geometry_list p_geometry_list := ?, + template (present) NamedLocation.locationZone_list p_locationZone_list := ?, + template (present) NamedLocation.metadata_list p_metadata_list := ?, + template LocationQualitativeAccuracyType p_locationQualitativeAccuracy := *, + template OperationalPurposeType p_operationalPurpose := *, + template XSD.String p_locationCode := *, + template XSD.String p_portName := *, + template ISPSSecurityLevelType p_portSecurityLevel := * + ) := { + geometry_list := p_geometry_list, + locationQualitativeAccuracy := p_locationQualitativeAccuracy, + locationZone_list := p_locationZone_list, + metadata_list := p_metadata_list, + operationalPurpose := p_operationalPurpose, + locationCode := p_locationCode, + portName := p_portName, + portSecurityLevel := p_portSecurityLevel + } // End of template mw_port_location + + template (omit) Object m_object( + in template (value) Object.colour_list p_colour_list := {}, + in template (value) Object.externalMarkings_list p_externalMarkings_list := {}, + in template (value) Object.metadata_list p_metadata_list := {}, + in template (value) Object.name_list p_name_list := {}, + in template (value) Object.involvedRiskRel_list p_involvedRiskRel_list := {}, + in template (value) Object.locationRel_list p_locationRel_list := {}, + in template (value) Object.involvedEventRel_list p_involvedEventRel_list := {}, + in template (value) Object.documentRel_list p_documentRel_list := {}, + in template (value) Object.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit + ) := { + colour_list := p_colour_list, + externalMarkings_list := p_externalMarkings_list, + identifier := p_identifier, + metadata_list := p_metadata_list, + name_list := p_name_list, + involvedRiskRel_list := p_involvedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedEventRel_list := p_involvedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list + } // End of template m_object + + template (present) Object mw_object( + template (present) Object.colour_list p_colour_list := ?, + template (present) Object.externalMarkings_list p_externalMarkings_list := ?, + template (present) Object.metadata_list p_metadata_list := ?, + template (present) Object.name_list p_name_list := ?, + template (present) Object.involvedRiskRel_list p_involvedRiskRel_list := ?, + template (present) Object.locationRel_list p_locationRel_list := ?, + template (present) Object.involvedEventRel_list p_involvedEventRel_list := ?, + template (present) Object.documentRel_list p_documentRel_list := ?, + template (present) Object.involvedAgentRel_list p_involvedAgentRel_list := ?, + template UniqueIdentifier p_identifier := * + ) := { + colour_list := p_colour_list, + externalMarkings_list := p_externalMarkings_list, + identifier := p_identifier, + metadata_list := p_metadata_list, + name_list := p_name_list, + involvedRiskRel_list := p_involvedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedEventRel_list := p_involvedEventRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list + } // End of template mw_object + + template (omit) Event m_event( + in template (value) Event.metadata_list p_metadata_list := {}, + in template (value) Event.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Event.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) Event.locationRel_list p_locationRel_list := {}, + in template (value) Event.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Event.documentRel_list p_documentRel_list := {}, + in template (value) Event.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list + } // End of template m_event + + template (present) Event mw_event( + template (present) Event.metadata_list p_metadata_list := ?, + template (present) Event.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Event.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) Event.locationRel_list p_locationRel_list := ?, + template (present) Event.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Event.documentRel_list p_documentRel_list := ?, + template (present) Event.involvedAgentRel_list p_involvedAgentRel_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list + } // End of template mw_event + + template (omit) PollutionIncident m_pollution_incident( + in template (value) PollutionIncident.metadata_list p_metadata_list := {}, + in template (value) PollutionIncident.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) PollutionIncident.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) PollutionIncident.locationRel_list p_locationRel_list := {}, + in template (value) PollutionIncident.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) PollutionIncident.documentRel_list p_documentRel_list := {}, + in template (value) PollutionIncident.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (value) PollutionIncident.instructions_list p_instructions_list := {}, + in template (value) PollutionIncident.responseType_list p_responseType_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) CertaintyType p_certainty := omit, + in template (omit) XSD.Int p_deathsOnBoard := omit, + in template (omit) XSD.Boolean p_diseasesOnBoard := omit, + in template (omit) XSD.Boolean p_infectionOnBoard := omit, + in template (omit) XSD.Int p_numberOfIIllPersons := omit, + in template (omit) UrgencyType p_responseUrgency := omit, + in template (omit) http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := omit, + in template (omit) XSD.Boolean p_sickAnimalOnBoard := omit, + in template (omit) MaritimeSafetyIncidentType p_maritimeSafetyIncidentType := omit, + in template (omit) XSD.String p_areaCoverPercentage := omit, + in template (omit) XSD.String p_characteristics := omit, + in template (omit) XSD.Int p_driftCourse := omit, + in template (omit) XSD.Double p_driftSpeed := omit, + in template (omit) PollutionType p_pollutionType := omit, + in template (omit) XSD.Double p_quantity := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard, + maritimeSafetyIncidentType := p_maritimeSafetyIncidentType, + areaCoverPercentage := p_areaCoverPercentage, + characteristics := p_characteristics, + driftCourse := p_driftCourse, + driftSpeed := p_driftSpeed, + pollutionType := p_pollutionType, + quantity := p_quantity + } // End of template m_pollution_incident + + template (present) PollutionIncident mw_pollution_incident( + template (present) PollutionIncident.metadata_list p_metadata_list := ?, + template (present) PollutionIncident.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) PollutionIncident.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) PollutionIncident.locationRel_list p_locationRel_list := ?, + template (present) PollutionIncident.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) PollutionIncident.documentRel_list p_documentRel_list := ?, + template (present) PollutionIncident.involvedAgentRel_list p_involvedAgentRel_list := ?, + template (present) PollutionIncident.instructions_list p_instructions_list := ?, + template (present) PollutionIncident.responseType_list p_responseType_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template CertaintyType p_certainty := *, + template XSD.Int p_deathsOnBoard := *, + template XSD.Boolean p_diseasesOnBoard := *, + template XSD.Boolean p_infectionOnBoard := *, + template XSD.Int p_numberOfIIllPersons := *, + template UrgencyType p_responseUrgency := *, + template http_www_cise_eu_datamodel_v1_entity_incident.SeverityType p_severity := *, + template XSD.Boolean p_sickAnimalOnBoard := *, + template MaritimeSafetyIncidentType p_maritimeSafetyIncidentType := *, + template XSD.String p_areaCoverPercentage := *, + template XSD.String p_characteristics := *, + template XSD.Int p_driftCourse := *, + template XSD.Double p_driftSpeed := *, + template PollutionType p_pollutionType := *, + template XSD.Double p_quantity := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + certainty := p_certainty, + deathsOnBoard := p_deathsOnBoard, + diseasesOnBoard := p_diseasesOnBoard, + infectionOnBoard := p_infectionOnBoard, + instructions_list := p_instructions_list, + numberOfIIllPersons := p_numberOfIIllPersons, + responseType_list := p_responseType_list, + responseUrgency := p_responseUrgency, + severity := p_severity, + sickAnimalOnBoard := p_sickAnimalOnBoard, + maritimeSafetyIncidentType := p_maritimeSafetyIncidentType, + areaCoverPercentage := p_areaCoverPercentage, + characteristics := p_characteristics, + driftCourse := p_driftCourse, + driftSpeed := p_driftSpeed, + pollutionType := p_pollutionType, + quantity := p_quantity + } // End of template mw_pollution_incident + + template (omit) Movement m_movement( + in template (value) Movement.metadata_list p_metadata_list := {}, + in template (value) Movement.involvedWithRel_list p_involvedWithRel_list := {}, + in template (value) Movement.impliedRiskRel_list p_impliedRiskRel_list := {}, + in template (value) Movement.locationRel_list p_locationRel_list := {}, + in template (value) Movement.involvedObjectRel_list p_involvedObjectRel_list := {}, + in template (value) Movement.documentRel_list p_documentRel_list := {}, + in template (value) Movement.involvedAgentRel_list p_involvedAgentRel_list := {}, + in template (omit) UniqueIdentifier p_identifier := omit, + in template (omit) NatureType p_natureType := omit, + in template (omit) Period p_occurrencePeriod := omit, + in template (omit) MovementType p_movementType := omit, + in template (omit) XSD.String p_purpose := omit, + in template (omit) XSD.String p_voyageNumber := omit + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + movementType := p_movementType, + purpose := p_purpose, + voyageNumber := p_voyageNumber + } // End of template m_movement + + template (present) Movement mw_movement( + template (present) Movement.metadata_list p_metadata_list := ?, + template (present) Movement.involvedWithRel_list p_involvedWithRel_list := ?, + template (present) Movement.impliedRiskRel_list p_impliedRiskRel_list := ?, + template (present) Movement.locationRel_list p_locationRel_list := ?, + template (present) Movement.involvedObjectRel_list p_involvedObjectRel_list := ?, + template (present) Movement.documentRel_list p_documentRel_list := ?, + template (present) Movement.involvedAgentRel_list p_involvedAgentRel_list := ?, + template UniqueIdentifier p_identifier := *, + template NatureType p_natureType := *, + template Period p_occurrencePeriod := *, + template MovementType p_movementType := *, + template XSD.String p_purpose := *, + template XSD.String p_voyageNumber := * + ) := { + identifier := p_identifier, + metadata_list := p_metadata_list, + natureType := p_natureType, + occurrencePeriod := p_occurrencePeriod, + involvedWithRel_list := p_involvedWithRel_list, + impliedRiskRel_list := p_impliedRiskRel_list, + locationRel_list := p_locationRel_list, + involvedObjectRel_list := p_involvedObjectRel_list, + documentRel_list := p_documentRel_list, + involvedAgentRel_list := p_involvedAgentRel_list, + movementType := p_movementType, + purpose := p_purpose, + voyageNumber := p_voyageNumber + } // End of template mw_movement + + template (omit) Geometry m_geometry( + in XSD.String p_latitude := PX_VESSEL_POS_LATITUDE, + in XSD.String p_longitude := PX_VESSEL_POS_LONGITUDE, + in template (omit) XSD.String p_altitude := omit, + in template (omit) XSD.String p_wKT := omit, + in template (omit) XSD.String p_xMLGeometry := omit + ) := { + altitude := p_altitude, + latitude := p_latitude, + longitude := p_longitude, + wKT := p_wKT, + xMLGeometry := p_xMLGeometry + } // End of template m_geometry + + template (present) Geometry mw_geometry( + template (present) XSD.String p_latitude := ?, + template (present) XSD.String p_longitude := ?, + template XSD.String p_altitude := *, + template XSD.String p_wKT := *, + template XSD.String p_xMLGeometry := * + ) := { + altitude := p_altitude, + latitude := p_latitude, + longitude := p_longitude, + wKT := p_wKT, + xMLGeometry := p_xMLGeometry + } // End of template mw_geometry + + // template (omit) CorrelatedWithRel m_correlated_with_rel( + // in template (omit) UniqueIdentifier p_uniqueIdentifier := omit, + // in template (omit) CorrelationType p_correlationType := omit, + // in template (omit) XSD.DateTime p_correlatedIn := omit, + // in template (omit) Organization_derivations p_correlatedBy := omit + // ) := { + // uniqueIdentifier := p_uniqueIdentifier, + // correlationType := p_correlationType, + // correlatedIn := p_correlatedIn, + // correlatedBy := p_correlatedBy + // } // End of template m_correlated_with_rel + + // template (present) CorrelatedWithRel mw_correlated_with_rel( + // template (present) UniqueIdentifier p_uniqueIdentifier := ?, + // template CorrelationType p_correlationType := *, + // template XSD.DateTime p_correlatedIn := */*, + // template Organization_derivations p_correlatedBy := **/ + // ) := { + // uniqueIdentifier := p_uniqueIdentifier, + // correlationType := p_correlationType, + // correlatedIn := p_correlatedIn/*, + // correlatedBy := p_correlatedBy*/ + // } // End of template mw_correlated_with_rel + + template (value) SelectorCondition m_selector_condition( + in template (value) http_www_cise_eu_servicemodel_v1_message.String_derivations p_selector, + in template (value) ConditionOperatorType p_operator := gREATER_THAN + ) := { + selector := p_selector, + operator := p_operator + } // End of template m_selector_condition + + template (present) SelectorCondition mw_selector_condition( + template (present) http_www_cise_eu_servicemodel_v1_message.String_derivations p_selector := ?, + template (present) ConditionOperatorType p_operator := ? + ) := { + selector := p_selector, + operator := p_operator + } // End of template mw_selector_condition + + template (omit) ServiceCapability m_service_capability( + in template (value) XSD.Int p_expectedResponseTime, + in template (omit) XSD.Int p_maxEntitiesPerMsg := omit, + in template (omit) XSD.Int p_maxNumberOfRequests := omit, + in template (omit) QueryByExampleType p_queryByExampleType := omit + ) := { + expectedResponseTime := p_expectedResponseTime, + maxEntitiesPerMsg := p_maxEntitiesPerMsg, + maxNumberOfRequests := p_maxNumberOfRequests, + queryByExampleType := p_queryByExampleType + } // End of template m_service_capability + + template ServiceCapability mw_service_capability( + template XSD.Int p_expectedResponseTime := *, + template XSD.Int p_maxEntitiesPerMsg := *, + template XSD.Int p_maxNumberOfRequests := *, + template QueryByExampleType p_queryByExampleType := * + ) := { + expectedResponseTime := p_expectedResponseTime, + maxEntitiesPerMsg := p_maxEntitiesPerMsg, + maxNumberOfRequests := p_maxNumberOfRequests, + queryByExampleType := p_queryByExampleType + } // End of template mw_service_capability + + template (omit) SubscriptionCapability m_subscription_capability( + in template (value) XSD.DateTime p_subscriptionEnd, + in template (value) XSD.Duration p_refreshRate, + in template (omit) XSD.Int p_expectedResponseTime := omit, + in template (omit) XSD.Int p_maxEntitiesPerMsg := omit, + in template (omit) XSD.Int p_maxNumberOfRequests := omit, + in template (omit) QueryByExampleType p_queryByExampleType := omit, + in template (omit) XSD.Duration p_maxFrequency := omit + ) := { + expectedResponseTime := p_expectedResponseTime, + maxEntitiesPerMsg := p_maxEntitiesPerMsg, + maxNumberOfRequests := p_maxNumberOfRequests, + queryByExampleType := p_queryByExampleType, + maxFrequency := p_maxFrequency, + refreshRate := p_refreshRate, + subscriptionEnd := p_subscriptionEnd + } // End of template m_subscription_capability + + template (present) SubscriptionCapability mw_subscription_capability( + template (present) XSD.DateTime p_subscriptionEnd := ?, + template (present) XSD.Duration p_refreshRate := ?, + template XSD.Int p_expectedResponseTime := *, + template XSD.Int p_maxEntitiesPerMsg := *, + template XSD.Int p_maxNumberOfRequests := *, + template QueryByExampleType p_queryByExampleType := *, + template XSD.Duration p_maxFrequency := * + ) := { + expectedResponseTime := p_expectedResponseTime, + maxEntitiesPerMsg := p_maxEntitiesPerMsg, + maxNumberOfRequests := p_maxNumberOfRequests, + queryByExampleType := p_queryByExampleType, + maxFrequency := p_maxFrequency, + refreshRate := p_refreshRate, + subscriptionEnd := p_subscriptionEnd + } // End of template mw_subscription_capability + + } // End of group miscellaneous + + group security { + + template (value) Signature m_signature( + in octetstring p_signature_value, + in octetstring p_digest_value, + in template (value) charstring p_x509_subject_name, + in template (value) charstring p_x509_certificate, + in template (value) charstring p_uri := "", + in template (value) charstring p_canonicalization_algorithm := PICS_CISE_CANONICALIZATION_ALGORITHM, + in template (value) charstring p_digest_algorithm := PICS_CISE_DIGEST_ALGORITHM, + in template (value) charstring p_signature_algorithm := PICS_CISE_SIGNATURE_ALGORITHM, + in template (value) charstring p_transform_algorithm := PICS_CISE_TRANSFORM_ALGORITHM, + in template (value) charstring p_transform_type_algorithm := PICS_CISE_TRANSFORM_TYPE_ALGORITHM, + in template (value) charstring p_transform_path := PICS_CISE_TRANSFORM_XSLT_STYLESHEET + ) := { + signedInfo := { + canonicalizationMethod := { algorithm := p_canonicalization_algorithm }, + signatureMethod := { algorithm := p_signature_algorithm }, + reference := { + uRI := p_uri, + transforms := { + { + algorithm := p_transform_algorithm, + path := p_transform_path + }, + { + algorithm := p_transform_type_algorithm, + path := "" + } + }, + digestMethod := { algorithm := p_digest_algorithm }, + digestValue := oct2unichar(p_digest_value) + } + }, + signatureValue := oct2unichar(p_signature_value), + keyInfo := { + x509Data := { + x509SubjectName := p_x509_subject_name, + x509Certificate := p_x509_certificate + } + } + } // End of template m_signature + + template (value) Signature.signedInfo m_to_be_signed( + in template (value) charstring p_uri := "", + in template (value) charstring p_canonicalization_algorithm := PICS_CISE_CANONICALIZATION_ALGORITHM, + in template (value) charstring p_digest_algorithm := PICS_CISE_DIGEST_ALGORITHM, + in template (value) charstring p_signature_algorithm := PICS_CISE_SIGNATURE_ALGORITHM, + in template (value) charstring p_transform_algorithm := PICS_CISE_TRANSFORM_ALGORITHM, + in template (value) charstring p_transform_type_algorithm := PICS_CISE_TRANSFORM_TYPE_ALGORITHM, + in template (value) charstring p_transform_path := PICS_CISE_TRANSFORM_XSLT_STYLESHEET + ) := { + canonicalizationMethod := { algorithm := p_canonicalization_algorithm }, + signatureMethod := { algorithm := p_signature_algorithm }, + reference := { + uRI := p_uri, + transforms := { + { + algorithm := p_transform_algorithm, + path := p_transform_path + }, + { + algorithm := p_transform_type_algorithm, + path := "" + } + }, + digestMethod := { algorithm := p_digest_algorithm }, + digestValue := oct2unichar(''O) + } + } // End of template m_to_be_signed + + template (present) Signature mw_signature( + template (present) charstring p_signature_value := ?, + template (present) charstring p_digest_value := ?, + template (present) charstring p_x509_subject_name := ?, + template (present) charstring p_x509_certificate := ?, + template (present) charstring p_uri := "", + template (present) charstring p_canonicalization_algorithm := PICS_CISE_CANONICALIZATION_ALGORITHM, + template (present) charstring p_digest_algorithm := PICS_CISE_DIGEST_ALGORITHM, + template (present) charstring p_signature_algorithm := PICS_CISE_SIGNATURE_ALGORITHM, + template (present) charstring p_transform_algorithm := PICS_CISE_TRANSFORM_ALGORITHM, + in template (value) charstring p_transform_type_algorithm := PICS_CISE_TRANSFORM_TYPE_ALGORITHM, + template (present) charstring p_transform_path := ? + ) := { + signedInfo := { + canonicalizationMethod := { algorithm := p_canonicalization_algorithm }, + signatureMethod := { algorithm := p_signature_algorithm }, + reference := { + uRI := p_uri, + transforms := { + { + algorithm := p_transform_algorithm, + path := p_transform_path + }, + { + algorithm := p_transform_type_algorithm, + path := "" + } + }, + digestMethod := { algorithm := p_digest_algorithm }, + digestValue := p_digest_value + } + }, + signatureValue := p_signature_value, + keyInfo := { + x509Data := { + x509SubjectName := p_x509_subject_name, + x509Certificate := p_x509_certificate + } + } + } // End of template mw_signature + + } // End of group security + + group upper_tester { + + template (value) UtTrigger m_ut_trigger( + in charstring p_message_id, + in charstring p_context_id, + in charstring p_correlation_id, + in charstring p_creation_date_time, + in charstring p_priority, + in charstring p_sender_id, + in charstring p_recipient_id, + in charstring p_message_type, + in template (value) UtDescription p_desc + ) := { + message_id := p_message_id, + context_id := p_context_id, + correlation_id := p_correlation_id, + creation_date_time := p_creation_date_time, + priority := p_priority, + sender_id := p_sender_id, + recipient_id := p_recipient_id, + message_type := p_message_type, + desc := p_desc + } // End of template m_ut_trigger + + template (value) UtDescription m_ut_description_abstract( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE) + ) := { + type_ := VesselService, + identifier := { + generatedBy := { + type_ := p_type, + identificationNumber := p_identificationNumber, + identifier := { + uuid := p_identifier_uuid + } + }, + uuid := p_uuid + }, + senderSea := p_senderSea, + senderRole := p_senderRole, + informationSecurityLevel := p_informationSecurityLevel, + informationSensitivity := p_informationSensitivity, + isPersonalData := p_isPersonalData, + purpose := p_purpose, + content := omit + } // End of template m_ut_description_abstract + + template (value) UtDescription m_ut_description_vessel( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) VesselContent p_vessel := m_ut_vessel + ) modifies m_ut_description_abstract := { + type_ := VesselService, + content := { + vessel := p_vessel + } + } // End of template m_ut_description_vessel + + template (value) VesselContent m_ut_vessel( + in integer p_imoNumber := PX_VESSEL_IMO_NUMBER, + in integer p_type := enum2int(PX_VESSEL_TYPE) + ) := { + imoNumber := p_imoNumber, + type_ := p_type + } // End of template m_ut_vessel + + template (value) UtDescription m_ut_description_action( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) ActionContent p_action := m_ut_action + ) modifies m_ut_description_abstract := { + type_ := Action, + content := { + action_ := p_action + } + } // End of template m_ut_description_action + + template (value) ActionContent m_ut_action( + in integer p_natureType := enum2int(PX_ACTION_NATURE_TYPE), + in integer p_statusType := enum2int(PX_ACTION_ACTION_STATUS), + in integer p_actionType := enum2int(PX_ACTION_ACTION_TYPE), + in integer p_missionType := enum2int(PX_ACTION_MISSION), + in integer p_priorityType := enum2int(PX_ACTION_PRIORITY) + ) := { + natureType := p_natureType, + statusType := p_statusType, + actionType := p_actionType, + missionType := p_missionType, + priorityType := p_priorityType + } // End of template m_ut_action + + template (value) UtDescription m_ut_description_anomaly( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) AnomalyContent p_anomaly := m_ut_anomaly + ) modifies m_ut_description_abstract := { + type_ := Anomaly, + content := { + anomaly := p_anomaly + } + } // End of template m_ut_description_anomaly + + template (value) AnomalyContent m_ut_anomaly( + in universal charstring p_uuid := PX_ANOMALY_UUID, + in integer p_natureType := enum2int(PX_ACTION_NATURE_TYPE), + in integer p_anomalyType := enum2int(PX_ANOMALY_TYPE) + ) := { + uuid := p_uuid, + natureType := p_natureType, + anomalyType := p_anomalyType + } // End of template m_ut_anomaly + + template (value) UtDescription m_ut_description_certificate_document_type( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) CertifificateDocumentTypeContent p_certificate_document_type := m_ut_certificate_document_type + ) modifies m_ut_description_abstract := { + type_ := CertificateDocumentType, + content := { + certificate_document_type := p_certificate_document_type + } + } // End of template m_ut_description_certificate_document_type + + template (value) CertifificateDocumentTypeContent m_ut_certificate_document_type( + in universal charstring p_uuid := PX_CERTIFICATE_DOCUMENT_SUBJECT_UUID, + in universal charstring p_subject := PX_CERTIFICATE_DOCUMENT_SUBJECT, + in universal charstring p_title := PX_CERTIFICATE_DOCUMENT_TITLE, + in universal charstring p_version := PX_CERTIFICATE_DOCUMENT_VERSION, + in universal charstring p_content := PX_CERTIFICATE_DOCUMENT_CONTENT + ) := { + uuid := p_uuid, + subject := p_subject, + title := p_title, + version := p_version, + content := p_content + } // End of template m_ut_certificate_document_type + + template (value) UtDescription m_ut_description_incident( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) IncidentContent p_incident := m_ut_incident + ) modifies m_ut_description_abstract := { + type_ := Incident, + content := { + incident := p_incident + } + } // End of template m_ut_description_incident + + template (value) IncidentContent m_ut_incident( + in universal charstring p_uuid := PX_INCIDENT_UUID, + in integer p_natureType := enum2int(PX_INCIDENT_NATURE_TYPE), + in integer p_severity := enum2int(PX_INCIDENT_SEVERITY), + in universal charstring p_latitude := PX_VESSEL_POS_LATITUDE, + in universal charstring p_longitude := PX_VESSEL_POS_LONGITUDE + ) := { + uuid := p_uuid, + natureType := p_natureType, + severity := p_severity, + latitude := p_latitude, + longitude := p_longitude + } // End of template m_ut_incidenty + + template (value) UtDescription m_ut_description_irregular_migration_incident( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) IrregularMigrationIncidentContent p_irregular_migration_incident := m_ut_irregular_migration_incident + ) modifies m_ut_description_abstract := { + type_ := IrregularMigrationIncident, + content := { + irregular_migration_incident := p_irregular_migration_incident + } + } // End of template m_ut_description_irregular_migration_incident + + template (value) IrregularMigrationIncidentContent m_ut_irregular_migration_incident( + in universal charstring p_uuid := PX_INCIDENT_UUID, + in integer p_natureType := enum2int(PX_IRREGULAR_MIGRATION_INCIDENT_NATURE_TYPE), + in integer p_severity := enum2int(PX_INCIDENT_SEVERITY), + in integer p_irregular_migration_incident_type := enum2int(PX_IRREGULAR_MIGRATION_INCIDENT_TYPE), + in universal charstring p_latitude := PX_VESSEL_POS_LATITUDE, + in universal charstring p_longitude := PX_VESSEL_POS_LONGITUDE + ) := { + uuid := p_uuid, + natureType := p_natureType, + severity := p_severity, + irregular_migration_incident_type := p_irregular_migration_incident_type, + latitude := p_latitude, + longitude := p_longitude + } // End of template m_ut_irregular_migration_incident + + template (value) UtDescription m_ut_description_law_infringement_incident( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) LawInfringementIncidentContent p_law_infringement_incident := m_ut_law_infringement_incident + ) modifies m_ut_description_abstract := { + type_ := LawInfringementIncident, + content := { + law_infringement_incident := p_law_infringement_incident + } + } // End of template m_ut_description_law_infringement_incident + + template (value) LawInfringementIncidentContent m_ut_law_infringement_incident( + in universal charstring p_uuid := PX_INCIDENT_UUID, + in integer p_natureType := enum2int(PX_IRREGULAR_MIGRATION_INCIDENT_NATURE_TYPE), + in integer p_severity := enum2int(PX_INCIDENT_SEVERITY), + in integer p_law_infringement_incident_type := enum2int(PX_LAW_INFRINGEMENT_INCIDENT_NATURE_TYPE), + in universal charstring p_latitude := PX_VESSEL_POS_LATITUDE, + in universal charstring p_longitude := PX_VESSEL_POS_LONGITUDE, + in universal charstring p_agent := PX_AGENT_UUID + ) := { + uuid := p_uuid, + natureType := p_natureType, + severity := p_severity, + law_infringement_incident_type := p_law_infringement_incident_type, + latitude := p_latitude, + longitude := p_longitude + } // End of template m_ut_law_infringement_incident + + template (value) UtDescription m_ut_description_meteo_oceanographic_condition( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) MeteoOceanographicConditionContent p_meteo_oceanographic_condition := m_ut_meteo_oceanographic_condition + ) modifies m_ut_description_abstract := { + type_ := MeteoOceanographicCondition, + content := { + meteo_oceanographic_condition := p_meteo_oceanographic_condition + } + } // End of template m_ut_description_meteo_oceanographic_condition + + template (value) MeteoOceanographicConditionContent m_ut_meteo_oceanographic_condition( + in float p_meteo_air_temp := PX_METEO_AIR_TEMP, + in integer p_meteo_cloud_ceiling := PX_METEO_CLOUD_CEILING, + in integer p_meteo_cloud_cover := enum2int(PX_METEO_CLOUD_COVER), + in integer p_meteo_precipitation := PX_METEO_PRECIPITATION, + in float p_meteo_salinity := PX_METEO_SALINITY, + in integer p_meteo_sea_condition := enum2int(PX_METEO_SEA_CONDITION), + in float p_meteo_sea_level_pressure := PX_METEO_SEA_LEVEL_PRESSURE, + in integer p_meteo_source_type := enum2int(PX_METEO_SOURCE_TYPE) + ) := { + meteo_air_temp := p_meteo_air_temp, + meteo_cloud_ceiling := p_meteo_cloud_ceiling, + meteo_cloud_cover := p_meteo_cloud_cover, + meteo_precipitation := p_meteo_precipitation, + meteo_salinity := p_meteo_salinity, + meteo_sea_condition := p_meteo_sea_condition, + meteo_sea_level_pressure := p_meteo_sea_level_pressure, + meteo_source_type := p_meteo_source_type + } // End of template m_ut_meteo_oceanographic_condition + + template (value) UtDescription m_ut_description_organization( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) OrganizationContent p_organization := m_ut_organization + ) modifies m_ut_description_abstract := { + type_ := Organization, + content := { + organization := p_organization + } + } // End of template m_ut_description_organization + + template (value) OrganizationContent m_ut_organization( + in universal charstring p_country := PX_ORGANIZATION_COUNTRY, + in universal charstring p_legal_name := PX_ORGANIZATION_LEGAL_NAME, + in universal charstring p_uuid := PX_ORGANIZATION_UUID, + in integer p_agent_role := enum2int(PX_AGENT_AGENT_ROLE), + in universal charstring p_latitude := PX_VESSEL_POS_LATITUDE, + in universal charstring p_longitude := PX_VESSEL_POS_LONGITUDE + ) := { + country := p_country, + legal_name := p_legal_name, + uuid := p_uuid, + agent_role := p_agent_role, + latitude := p_latitude, + longitude := p_longitude + } // End of template m_ut_organization + + template (value) UtDescription m_ut_description_risk( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) RiskContent p_risk := m_ut_risk + ) modifies m_ut_description_abstract := { + type_ := Risk, + content := { + risk := p_risk + } + } // End of template m_ut_description_risk + + template (value) RiskContent m_ut_risk( + in universal charstring p_uuid := PX_RISK_UUID, + in integer p_risk_level := enum2int(PX_RISK_LEVEL), + in integer p_risk_probability := enum2int(PX_RISK_PROBABILITY), + in integer p_risk_severity := enum2int(PX_RISK_SEVERITY), + in universal charstring p_latitude := PX_VESSEL_POS_LATITUDE, + in universal charstring p_longitude := PX_VESSEL_POS_LONGITUDE + ) := { + uuid := p_uuid, + risk_level := p_risk_level, + risk_probability := p_risk_probability, + risk_severity := p_risk_severity, + latitude := p_latitude, + longitude := p_longitude + } // End of template m_ut_risk + + template (value) UtDescription m_ut_description_cargo( + in charstring p_type, + in charstring p_identificationNumber, + in charstring p_identifier_uuid, + in charstring p_uuid, + in integer p_senderSea := enum2int(PX_CISE_SEA_BASSIN), + in integer p_senderRole := enum2int(PX_CISE_CONSUMER), + in integer p_informationSecurityLevel := enum2int(PX_INFORMATION_SECURITY_LEVEL), + in integer p_informationSensitivity := enum2int(PX_INFORMATION_SENSITIVITY), + in boolean p_isPersonalData := PX_IS_PERSONAL_DATA, + in integer p_purpose := enum2int(PX_PURPOSE), + in template (value) CargoContent p_cargo := m_ut_cargo + ) modifies m_ut_description_abstract := { + type_ := Cargo, + content := { + cargo := p_cargo + } + } // End of template m_ut_description_cargo + + template (value) CargoContent m_ut_cargo( + in universal charstring p_uuid := PX_CARGO_UUID, + in universal charstring p_cargo_name := PX_CARGO_NAME, + in integer p_cargo_type := enum2int(PX_CARGO_TYPE), + in universal charstring p_latitude := PX_VESSEL_POS_LATITUDE, + in universal charstring p_longitude := PX_VESSEL_POS_LONGITUDE + ) := { + uuid := p_uuid, + cargo_name := p_cargo_name, + cargo_type := p_cargo_type, + latitude := p_latitude, + longitude := p_longitude + } // End of template m_ut_cargo + + } // End of group upper_tester + +} // End of module LibCise_Templates \ No newline at end of file diff --git a/ttcn/LibCise/ttcn/LibCise_TestSystem.ttcn b/ttcn/LibCise/ttcn/LibCise_TestSystem.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..6a1dced906b89f779f09ecefa699ae13d6270307 --- /dev/null +++ b/ttcn/LibCise/ttcn/LibCise_TestSystem.ttcn @@ -0,0 +1,44 @@ +module LibCise_TestSystem { + + // LibCommon + import from LibCommon_Time all; + import from LibCommon_Sync all; + + // LibHttp + import from LibHttp_TestSystem all; + + type component CiseMtc extends ServerSyncComp { + // timers + timer tc_wait := PX_TWAIT; + timer tc_ac := PX_TAC; + timer tc_noac := PX_TNOAC; + + var CiseComponentTable vc_cise_component_table := {}; + } // End of component CiseMtc + + type component CiseComponent extends HttpComponent, SelfSyncComp { + port HttpPort utPort; + } // End of component CiseComponent + + type component CiseTestAdapter extends HttpTestAdapter { + port HttpPort utPort; + } // End of component CiseTestAdapter + + group multicast { + + const charstring c_adapter_a := "CISEAdapter1"; + const charstring c_adapter_b := "CISEAdapter2"; + + const charstring c_adapter := "CISEAdapter"; + const charstring c_gw_provider := "GWProvider"; + + type record CiseComponentEntry { + charstring name, + CiseComponent cise_component optional + } + + type record of CiseComponentEntry CiseComponentTable; + + } // End of group multicast + +} // End of module LibCise_TestSystem \ No newline at end of file diff --git a/ttcn/LibCise/ttcn/LibCise_TypesAndValues.ttcn b/ttcn/LibCise/ttcn/LibCise_TypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..906059513baeb4506dc02fa7d0ce8dba42019db1 --- /dev/null +++ b/ttcn/LibCise/ttcn/LibCise_TypesAndValues.ttcn @@ -0,0 +1,391 @@ +module LibCise_TypesAndValues { + + // XSD + import from XSD all; + + // JSON + import from Json all; + + // LibCise + import from http_www_cise_eu_servicemodel_v1_authority all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_cise_eu_datamodel_v1_entity_document all; + import from http_www_cise_eu_datamodel_v1_entity_action all; + import from http_www_cise_eu_datamodel_v1_entity_organization all; + import from http_www_cise_eu_datamodel_v1_entity_vessel all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_location all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_period all; + import from http_www_cise_eu_datamodel_v1_entity_agent all; + import from http_www_cise_eu_datamodel_v1_entity_event all; + import from http_www_cise_eu_datamodel_v1_entity_risk all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + + // Signature + import from http_www_w3_org_2000_09_xmldsig all; + + // group commons { + + // type record InvolvedAgentRel { + // Agent_derivations agent optional, + // AgentRoleInEventType agentRole optional, + // Period involvementPeriod optional + // } + + // type record LocationRel { + // Location_derivations location optional, + // Period dateTime optional, + // EventAreaType eventArea optional, + // LocationRoleInEventType locationRole optional, + // SourceType sourceType optional + // } + + // type record DocumentRelItem { + // Document document optional + // } // End of type DocumentRelItem + + // type record ImpliedRiskRel { + // Risk risk optional + // } + + // type record InvolvedAgentRelItem { + // Agent_derivations agent optional, + // AgentRoleInObjectType agentRole optional, + // DutyType duty optional, + // Period involvementPeriod optional, + // XSD.Boolean transitPassenger optional + // } // End of type Vessel_InvolvedAgentRelItem + + // type record InvolvedEventRelItem { + // Event_derivations event optional, + // ObjectRoleInEventType objectRole optional, + // Period involvementPeriod optional + // } // End of type InvolvedEventRelItem + + // type record CorrelatedWithRel { + // UniqueIdentifier uniqueIdentifier optional, + // CorrelationType correlationType optional, + // XSD.DateTime correlatedIn optional, + // Organization_derivations correlatedBy optional + // } // End of type + + // } with { + // encode "XML"; + // variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + // } // End of group commons + + group vessels_types { + + type record VesselLocationRelItem { + Location_derivations location optional, + XSD.Double cOG optional, + XSD.Double heading optional, + record of Metadata metadata_list, + Period periodOfTime optional, + SourceType sourceType optional, + PlacementPurposeType placementPurpose optional, + record of PlannedOperationsType plannedOperations_list, + PlannedWorksType plannedWorks optional, + SensorType sensorType optional, + XSD.Double sOG optional, + XSD.String specialSecurityMeasures optional, + XSD.Double speed optional, + LocationRoleType locationRole optional + } // End of type VesselLocationRelItem + + } with { + encode "XML"; + variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/vessel/' prefix 'vessel'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + } // End of group vessels_types + + // group cargos_types { + + // type record of Metadata Metadata_list; + + // type record of PlannedOperationsType PlannedOperations_list; + + // } with { + // encode "XML"; + // variant "namespace as 'http://www.cise.eu/datamodel/v1/entity/period/' prefix 'period'"; + // variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + // } // End of group cargos_types + + group utPrimitives { + + group json_encoded { + + type enumerated Type { + VesselService, + Action, + Anomaly, + CertificateDocumentType, + Incident, + IrregularMigrationIncident, + LawInfringementIncident, + MeteoOceanographicCondition, + Organization, + Risk, + Cargo + } + + type record GeneratedBy { + Json.String type_, + Json.String identificationNumber, + record { + Json.String uuid + } identifier + } with { + variant (type_) "name as 'type'"; + variant (identificationNumber) "name as 'IdentificationNumber'"; + variant (identifier) "name as 'Identifier'"; + variant (identifier.uuid) "name as 'UUID'"; + } + + type record Identifier { + GeneratedBy generatedBy, + Json.String uuid + } with { + variant (generatedBy) "name as 'GeneratedBy'"; + variant (uuid) "name as 'UUID'"; + } + + type record UtDescription { + Type type_, + Identifier identifier, + integer senderSea, + integer senderRole, + integer informationSecurityLevel, + integer informationSensitivity, + boolean isPersonalData, + integer purpose, + MessageContent content optional + } with { + variant (type_) "name as 'Type'"; + variant (identifier) "name as capitalized"; + variant (senderSea) "name as capitalized"; + variant (senderRole) "name as capitalized"; + variant (informationSecurityLevel) "name as capitalized"; + variant (informationSensitivity) "name as capitalized"; + variant (isPersonalData) "name as capitalized"; + variant (purpose) "name as capitalized"; + variant (content) "name as capitalized"; + } + + type union MessageContent { + VesselContent vessel, + ActionContent action_, + AnomalyContent anomaly, + CertifificateDocumentTypeContent certificate_document_type, + IncidentContent incident, + IrregularMigrationIncidentContent irregular_migration_incident, + LawInfringementIncidentContent law_infringement_incident, + MeteoOceanographicConditionContent meteo_oceanographic_condition, + OrganizationContent organization, + RiskContent risk, + CargoContent cargo + } with { + variant "useType"; + variant (vessel) "name as capitalized"; + variant (action_) "name as 'Action'"; + variant (anomaly) "name as capitalized"; + variant (certificate_document_type) "name as 'CertifificateDocumentType'"; + variant (incident) "name as capitalized"; + variant (irregular_migration_incident) "name as 'IrregularMigrationIncident'"; + variant (law_infringement_incident) "name as 'LawInfringementIncident'"; + variant (meteo_oceanographic_condition) "name as 'MeteoOceanographicCondition'"; + variant (organization) "name as capitalized"; + variant (risk) "name as capitalized"; + variant (cargo) "name as capitalized"; + } + + type record VesselContent { + integer imoNumber, + integer type_ + } with { + variant (imoNumber) "name as capitalized"; + variant (type_) "name as 'Type'"; + } + + type record VesselDiscoveryContent { + integer imoNumber, + integer type_ + } with { + variant (imoNumber) "name as capitalized"; + variant (type_) "name as 'Type'"; + } + + type record ActionContent { + integer natureType, + integer statusType, + integer actionType, + integer missionType, + integer priorityType + } with { + variant (natureType) "name as capitalized"; + variant (statusType) "name as capitalized"; + variant (actionType) "name as capitalized"; + variant (missionType) "name as capitalized"; + variant (priorityType) "name as capitalized"; + } + + type record AnomalyContent { + universal charstring uuid, + integer natureType, + integer anomalyType + } with { + variant (uuid) "name as capitalized"; + variant (natureType) "name as capitalized"; + variant (anomalyType) "name as capitalized"; + } + + type record CertifificateDocumentTypeContent { + universal charstring uuid, + universal charstring subject, + universal charstring title, + universal charstring version, + universal charstring content + } with { + variant (uuid) "name as capitalized"; + variant (subject) "name as capitalized"; + variant (title) "name as capitalized"; + variant (version) "name as capitalized"; + variant (content) "name as capitalized"; + } + + type record IncidentContent { + universal charstring uuid, + integer natureType, + integer severity, + universal charstring latitude, + universal charstring longitude + } with { + variant (uuid) "name as capitalized"; + variant (natureType) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + } + + type record IrregularMigrationIncidentContent { + universal charstring uuid, + integer natureType, + integer severity, + integer irregular_migration_incident_type, + universal charstring latitude, + universal charstring longitude + } with { + variant (uuid) "name as capitalized"; + variant (natureType) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (irregular_migration_incident_type) "name as 'IrregularMigrationIncident'"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + } + + type record LawInfringementIncidentContent { + universal charstring uuid, + integer natureType, + integer severity, + integer law_infringement_incident_type, + universal charstring latitude, + universal charstring longitude + } with { + variant (uuid) "name as capitalized"; + variant (natureType) "name as capitalized"; + variant (severity) "name as capitalized"; + variant (law_infringement_incident_type) "name as 'LawInfringementIncident'"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + } + + type record MeteoOceanographicConditionContent { + float meteo_air_temp, + integer meteo_cloud_ceiling, + integer meteo_cloud_cover, + integer meteo_precipitation, + float meteo_salinity, + integer meteo_sea_condition, + float meteo_sea_level_pressure, + integer meteo_source_type + } with { + variant (meteo_air_temp) "name as capitalized"; + variant (meteo_cloud_ceiling) "name as capitalized"; + variant (meteo_cloud_cover) "name as capitalized"; + variant (meteo_precipitation) "name as capitalized"; + variant (meteo_salinity) "name as capitalized"; + variant (meteo_sea_condition) "name as capitalized"; + variant (meteo_sea_level_pressure) "name as capitalized"; + variant (meteo_source_type) "name as capitalized"; + } + + type record OrganizationContent { + universal charstring country, + universal charstring legal_name, + universal charstring uuid, + integer agent_role, + universal charstring latitude, + universal charstring longitude + } with { + variant (country) "name as capitalized"; + variant (legal_name) "name as 'LegalName'"; + variant (uuid) "name as capitalized"; + variant (agent_role) "name as 'AgentRole'"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + } + + type record RiskContent { + universal charstring uuid, + integer risk_level, + integer risk_probability, + integer risk_severity, + universal charstring latitude, + universal charstring longitude + } with { + variant (uuid) "name as capitalized"; + variant (risk_level) "name as 'RiskLevel'"; + variant (risk_probability) "name as 'RiskProbability'"; + variant (risk_severity) "name as 'RiskSeverity'"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + } + + type record CargoContent { + universal charstring uuid, + universal charstring cargo_name, + integer cargo_type, + universal charstring latitude, + universal charstring longitude + } with { + variant (uuid) "name as capitalized"; + variant (cargo_name) "name as 'CargoName'"; + variant (cargo_type) "name as 'CargoType'"; + variant (latitude) "name as capitalized"; + variant (longitude) "name as capitalized"; + } + + type record UtTrigger { + charstring message_id, + charstring context_id, + charstring correlation_id, + charstring creation_date_time, + charstring priority, + charstring sender_id, + charstring recipient_id, + charstring message_type, + UtDescription desc + } // End of type UtTrigger + + } with { + encode "JSON"; + } // End of group json_encoded + + } // End of group utPrimitives + +} // End of module LibCise_TypesAndValues diff --git a/ttcn/LibCommon b/ttcn/LibCommon new file mode 160000 index 0000000000000000000000000000000000000000..21bad7c51917d19bebdff5b36983e22922421976 --- /dev/null +++ b/ttcn/LibCommon @@ -0,0 +1 @@ +Subproject commit 21bad7c51917d19bebdff5b36983e22922421976 diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk new file mode 100755 index 0000000000000000000000000000000000000000..9b0b530e68349c8056d17bf0cfc676adf70adcb8 --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk @@ -0,0 +1,2 @@ +sources := module/src/Abstract_Socket.cc +includes := module/src \ No newline at end of file diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/Abstract_Socket_CNL113384.tpd b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/Abstract_Socket_CNL113384.tpd new file mode 100644 index 0000000000000000000000000000000000000000..5b05592ed70013a8ba19f5b596965ad71b82536a --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/Abstract_Socket_CNL113384.tpd @@ -0,0 +1,61 @@ + + + + Abstract_Socket_CNL113384 + + + + + SSL + + + + + true + bin/Abstract_Socket_CNL113384 + + + bin + + + + + + + true + true + bin_ssl/Abstract_Socket_CNL113384 + + AS_USE_SSL + + + [OPENSSL_DIR]/include + + + ssl + + + [OPENSSL_DIR]/lib + + + + bin_ssl + + + + + diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/LICENSE b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..3534f2ff9d512c471aab17543d08c32a1110b32d --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/LICENSE @@ -0,0 +1,277 @@ +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. \ No newline at end of file diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/README.md b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c2c938449e2b95c61aaed7e1d80c23f430d5f246 --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/README.md @@ -0,0 +1,9 @@ +# titan.TestPorts.Common_Components.Abstract_Socket + +Main project page: + +https://projects.eclipse.org/projects/tools.titan + +The source code of the TTCN-3 compiler and executor: + +https://github.com/eclipse/titan.core diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.adoc b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e3d359dc91f8a332076f95a9c4fc63e77f513dda --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.adoc @@ -0,0 +1,1125 @@ +--- +Author: Gábor Szalai +Version: 1551-CNL 113 384, Rev. A +Date: 2015-01-20 + +--- += Abstract Socket Test Port for TTCN-3 Toolset with TITAN, Description +:author: Gábor Szalai +:revnumber: 1551-CNL 113 384, Rev. A +:revdate: 2015-01-20 +:toc: + +== About This Document + +=== How to Read This Document + +This is the User Guide for the Abstract Socket test port. The Abstract Socket test port is developed for the TTCN-3 Toolset. + +=== Presumed Knowledge + +To use this protocol module the knowledge of the TTCN-3 language <<_1, [1]>> is essential. + += Functionality + +== System Requirements +In order to use the Abstract Socket test port the following system requirements must be satisfied: + +* Platform: any platform supported by TITAN RTE and OpenSSL +* TITAN TTCN-3 Test Executor version R8A (1.8.pl0) or higher installed. + +NOTE: This Abstract Socket version is not compatible with TITAN releases earlier than R8A. + +If SSL is used, the same OpenSSL must be installed as used in TITAN. For an OpenSSL installation guide see <<_3, [3]>>. + +== Fundamental Concepts + +The test port establishes connection between the TTCN-3 test executor and SUT and transmits/receives messages. The transport channel can be TCP or SSL. The connect and listen operations can be initiated from the test suite using the `use_connection_ASPs` test port parameter. + +=== Module Structure + +The Abstract Socket common component is implemented in the following files: + +* __Abstract_Socket.hh__ +* __Abstract_Socket.cc__ + +== Start Procedure + +=== Connection ASPs + +When choosing to use connection ASPs, the Abstract Socket is able to open a server listening port (acting like a server) or client connections at the same time. + +=== Server Mode + +When the test port is mapped by TITAN RTE, the server creates a TCP socket and starts listening on it. Depending on the transport channel specified in the runtime configuration file, it will accept either TCP or SSL connections. + +=== Client Mode + +When the test port is mapped by TITAN RTE, the client creates a TCP socket and tries to connect to the server. If the transport channel is SSL, the client starts an SSL handshake after the TCP connection is established. If the SSL handshake is successful, the SSL connection is established and the `map` operation is finished. + +The SSL handshake may fail due to several reasons (e.g. no shared ciphers, verification failure, etc.). + +[[sending-receiving-messages]] +== Sending/Receiving Messages + +Only basic octetstring sending and receiving is handled by the Abstract Socket. This functionality probably must be extended in order to build a test port for the desired protocol. First the TTCN-3 mapping of the target protocol messages must be elaborated and then the message processing functions can be developed. + +== Logging + +The type of information that will be logged can be categorized into two groups. The first one consists of information that shows the flow of the internal execution of the test port, e.g. important events, which function that is currently executing etc. The second group deals with presenting valuable data, e.g. presenting the content of a PDU. The logging printouts will be directed to the RTE log file. The user is able to decide whether logging is to take place or not by setting appropriate configuration data. + +== Error Handling + +Erroneous behavior detected during runtime is directed into the RTE log file. The following two types of messages are taken care of: + +* Errors: information about errors detected is provided. If an error occurs the execution of the test case will stop immediately. The test ports will be unmapped. +* Warnings: information about warnings detected is provided. The execution continues after the warning is shown. + +== Closing Down + +The connection can be shut down either performing the `unmap` operation on the port or if connection ASPs are used with the appropriate ASP. + +== IPv6 Support + +It is possible to select the address family used for server socket and client connections in the configuration file or during runtime. The following address families are supported: IPv4, IPv6 and UNSPEC. + +== SSL Functionality + +The Abstract Socket can use SSL or TCP as the transport channel. The same version of OpenSSL library must be used as in TITAN. + +The supported SSL/TLS versions are determined by the used OpenSSL library. It is possible to disable a specific TLS/SSL version in the run time configuration file. + +=== Compilation + +The usage of SSL and even the compilation of the SSL related code parts are optional. This is because SSL related code parts cannot be compiled without the OpenSSL installed. + +The compilation of SSL related code parts can be disabled by not defining the `AS_USE_SSL` macro in the _Makefile_ during the compilation. If the macro is defined in the _Makefile_, the SSL code parts are compiled to the executable test code. The usage of the SSL then can be enabled/disabled in the runtime configuration file. Naturally, the test port parameter will be ignored if the `AS_USE_SSL` macro is not defined during compilation. + +=== Authentication + +The Abstract Socket provides both server side and client side authentication. When authenticating the other side, a certificate is requested and the own trusted certificate authorities’ list is sent. The received certificate is verified whether it is a valid certificate or not (the public and private keys are matching). No further authentication is performed (e.g. whether hostname is present in the certificate). The verification can be enabled/disabled in the runtime configuration file. + +In server mode the test port will always send its certificate and trusted certificate authorities’ list to its clients. If verification is enabled in the runtime configuration file, the server will request for a client’s certificate. In this case, if the client does not send a valid certificate or does not send a certificate at all, the connection will be refused. If the verification is disabled, the connection will never be refused due to verification failure. + +In client mode the test port will send its certificate to the server on the server’s request. If verification is enabled in the runtime configuration file, the client will send its own trusted certificate authorities’ list to the server and will verify the server’s certificate as well. If the server’s certificate is not valid, the SSL connection will not be established. If verification is disabled, the connection will never be refused due to verification failure. + +The own certificate(s), the own private key file, the optional password protecting the own private key file and the trusted certificate authorities’ list file can be specified in the runtime configuration file. + +The test port will check the consistency between its own private key and the public key (based on the own certificate) automatically. If the check fails, a warning is issued and execution continues. + +=== Other Features + +The usage of SSL session resumption can be enabled/disabled in the runtime configuration file. + +The allowed ciphering suites can be restricted in the runtime configuration file, see. + +The SSL re-handshaking requests are accepted and processed, however re-handshaking cannot be initiated from the test port. + +=== Limitations + +* SSL re-handshaking cannot be initiated from the test port. +* The own certificate file(s), the own private key file and the trusted certificate authorities’ list file must be in PEM format. Other formats are not supported. + += The Test Port + +== Overview + +The Abstract Socket is a common component that can serve as a basis for test ports that need TCP connections with or without SSL on the top. The TCP socket can be used either with blocking or non-blocking socket. The Abstract Socket implements basic sending, receiving and socket handling routines, furthermore it supports the development of test ports that can work as a client or as a server. By extending the Abstract Socket component with additional functionality the desired test port can be built. + +See the functioning of the Abstract Socket below: + +image:images/Abstract socket.png[alt] + +== Installation + +Since the Abstract Socket test port is used as a part of the TTCN-3 test environment this requires TTCN-3 Test Executor to be installed before any operation of the Abstract Socket test port. + +The compilation of SSL related code parts can be disabled by not defining the `AS_USE_SSL` macro in the _Makefile_ during the compilation. + +When building the executable test suite the libraries compiled for the OpenSSL toolkit (if the `AS_USE_SSL` macro is defined) should also be linked into the executable along with the TTCN-3 Test Executor, i.e. the OpenSSL libraries should be added to the __Makefile__ generated by the TITAN executor (see example in section <>). To compile the source files you will also need the OpenSSL developer toolkit which contains the header files used by the source. If Share Objects (_.so_) are used in the OpenSSL toolkit, to run the executable, the path of the OpenSSL libraries must be added to the `LD_LIBRARY_PATH` environment variable. + +NOTE: If you are using the test port on Solaris, you have to set the `PLATFORM` macro to the proper value. It shall be `_SOLARIS_` in case of Solaris 6 (SunOS 5.6) and `_SOLARIS8_` in case of Solaris 8 (SunOS 5.8). + +== Configuration + +The executable test program behavior is determined via the run-time configuration file. This is a simple text file, which contains various sections (for example, `[TESTPORT_PARAMETERS]`) after each other. The usual suffix of configuration files is _.cfg._ For further information on the configuration file see <<_2, [2]>>. + +The listed port parameters (<>) are managed by default by the Abstract Socket. They have to be defined only in the TTCN configuration files. Though, if Abstract Socket's parameter handling is not appropriate for your application, you can ignore it completely and handle the variables directly from your port. It is recommended to implement your own test port parameter name passing functions so that your test port will not depend on the test port parameter names in the Abstract Socket. + +[[Abstract_Socket_Test_Port_Parameters_in_the_Test_Port_Configuration_File]] +=== Abstract Socket Test Port Parameters in the Test Port Configuration File + +In the `[TESTPORT_PARAMETERS]` section the following parameters can be set for the Abstract Socket based test port. The parameter names are case-sensitive; the parameter values are not case-sensitive (i.e. `_"YES"_`, `_"yes"_`, `_"Yes"_` values are identical). + +[[abstract-socket-test-port-parameters-in-the-test-port-configuration-file-if-the-transport-channel-is-tcp-ip]] +==== Abstract Socket Test Port Parameters in the Test Port Configuration File if the Transport Channel is TCP/IP + +* `use_connection_ASPs` ++ +The parameter is optional, and can be used to specify whether the Abstract Socket is controlled by connection ASPs. The default value is `_"no"_`. ++ +If the value is `_"yes"_`, the functionalities of the Abstract Socket have to be controlled by calling its `open_client_connection`, `open_listen_port`, `remove_client`, `remove_all_clients` and `close_listen_port` functions. The Abstract Socket will not create any connection or listening port when calling the `map_user` function. Using this parameter, more than one connection can be opened in client mode operation. The Abstract Socket will call the `listen_port_opened`, `client_connection_opened`, `peer_connected` and `peer_disconnected` functions of the test port implementing it when corresponding events happen. This allows test ports and TTCN code to directly handle TCP connection initiations and events. + +* `server_mode` ++ +The parameter is optional, and can be used to specify whether the test port shall act as a server or a client. If the value is `_"yes"_`, the test port will act as a server. If the value is `_"no"_`, the test port will act as a client. The default value is `_"no"_` . The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_` because the `open_listen_port` initiates the listening on a server port. + +* `socket_debugging` ++ +The parameter is optional, and can be used to enable debug logging related to the transport channel (TCP socket and SSL operations) in the test port. The default value is `_"no"_`. + +* `halt_on_connection_reset` ++ +The parameter is optional, and can be used to specify whether the test port shall stop on errors occurred during connection setup (including connection refusing), sending and receiving, disconnection (including the detection of the disconnection). The value `_"yes"_` means the test port will stop, the value `_"no"_` means that it will not stop on such errors. The default value is `_"no"_` in server mode and `_"yes"_` in client mode. ++ +The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_`, because the `peer_disconnected` function of the test port is called on the event. + +* `nagling` ++ +The parameter is optional, and can be used to specify whether concatenation occurs on TCP layer. If value is `_"yes"_`, concatenation is enabled. If value is `_"no"_`, it is disabled. ++ +NOTE: The `nagling` setting is valid only for the outgoing messages. The `nagling` for the incoming messages shall be set by the sending party. The default value is `_"no"_`. + +* `remote_address` ++ +The parameter can be used to specify the server's IP address. Mandatory in client mode and not used in server mode. ++ +The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_`, because the `open_client_connection` function receives the remote and optionally the local address. + +* `remote_port` ++ +The parameter can be used to specify the server's listening port. Mandatory in client mode and not used in server mode. ++ +The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_`, because the `open_client_connection` function receives the remote and optionally the local address. + +* `local_port` ++ +The parameter can be used to specify the port where the server is listening for connections. Mandatory in server mode and optional in client mode. ++ +The parameter serves as a default if `use_connection_ASPs` is set to `_"yes"_`. + +* `ai_family` ++ +The parameter can be used to specify the address family to use when opening listening ports or creating client connections. If its value is set to `_"IPv4"_` or `_"AF_INET"_` only IPv4 addresses are used. If it is set to `_"IPv6"_` or `_"AF_INET6"_` only IPv6 connections are allowed. The values `_`"UNSPEC"`_` and `"AF_UNSPEC"` can be used if the address family is not specified. The `_"UNSPEC"_` value allows using IPv4 and IPv6 addresses at the same time. The selection is made automatically depending on the actual value of the local and remote addresses. ++ +This parameter is optional. The default value is `_"AF_UNSPEC"_`. + +* `server_backlog` ++ +The parameter can be used to specify the number of allowed pending (queued) connection requests on the port the server listens. It is optional in server mode and not used in client mode. The default value is `_"1"_`. + +* `TCP_reconnect_attempts` ++ +This parameter can be used to specify the maximum number of times the connection is attempted to be established in TCP reconnect mode. The default value is `_"5"_`. ++ +The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_`, because the `peer_disconnected` function is called when the event happens, and it’s up to the test port or TTCN code how to continue. + +* `TCP_reconnect_delay` ++ +This parameter can be used to specify the time (in seconds) the test port waits between to TCP reconnection attempt. The default value is `_"1"_`. ++ +The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_`, because the `peer_disconnected` function is called when the event happens, and it’s up to the test port or TTCN code how to continue. + +* `client_TCP_reconnect` ++ +If the test port is in client mode and the connection was interrupted by the other side, it tries to reconnect again. The default value is ``no''. ++ +The parameter has no meaning if `use_connection_ASPs` is set to `_"yes"_`, because the `peer_disconnected` function is called when the event happens, and it’s up to the test port or TTCN code how to continue. + +* `use_non_blocking_socket` ++ +This parameter can be used to specify whether the Test Port shall use blocking or non-blocking TCP socket. Using this parameter, the `send` TTCN-3 operation will block until the data is sent, but an algorithm is implemented to avoid TCP deadlock. ++ +The parameter is optional, the default value is `_"no"_`. + +==== Additional Abstract Socket Test Port Parameters in the Test Port Configuration File if the Transport Channel is SSL + +These parameters available only if `AS_USE_SSL` macro is defined during compilation. + +* `ssl_use_ssl` ++ +The parameter is optional, and can be used to specify whether to use SSL on the top of the TCP connection or not. The default value is `_"no"_`. + +* `ssl_verify_certificate` ++ +The parameter is optional, and can be used to tell the test port whether to check the certificate of the other side. If it is defined `_"yes"_`, the test port will query and check the certificate. If the certificate is not valid (i.e. the public and private keys do not match), it will exit with a corresponding error message. If it is defined `_"no"_`, the test port will not check the validity of the certificate. The default value is `_"no"_`. + +* `ssl_use_session_resumption` ++ +The parameter is optional, and can be used to specify whether to use/support SSL session resumptions or not. The default value is `_"yes"_`. + +* `ssl_certificate_chain_file` ++ +It specifies a PEM encoded file’s path on the file system containing the certificate chain. Mandatory in server mode and optional in client mode. Note that the server may require client authentication. In this case no connection can be established without a client certificate. + +* `ssl_private_key_file` ++ +It specifies a PEM encoded file’s path on the file system containing the server’s RSA private key. Mandatory in server mode and optional in client mode. + +* `ssl_private_key_password` ++ +The parameter is optional, and can be used to specify the password protecting the private key file. If not defined, the SSL toolkit will ask for it. + +* `ssl_trustedCAlist_file` ++ +It specifies a PEM encoded file’s path on the file system containing the certificates of the trusted CA authorities to use. Mandatory in server mode, and mandatory in client mode if `ssl_verify_certificate="yes"`. + +* `ssl_allowed_ciphers_list` ++ +The parameter is optional, and can be used to specify the allowed cipher list. The value is passed directly to the SSL toolkit. + +* `ssl_disable_SSLv2` + +`ssl_disable_SSLv3` + +`ssl_disable_TLSv1` + +`ssl_disable_TLSv1_1` + +`ssl_disable_TLSv1_2` ++ +The usage of a specific SSL/TLS version can be disabled by setting the parameter to `_"yes"_`. Please note that the available SSL/TLS versions are depends of the used OpenSSL library. + +== The `AbstractSocket` API + +In the derived test port the following functions can be used: + +[[map-unmap-the-test-port]] +=== Map/Unmap the Test Port + +In the `user_map` and `user_unmap` functions of the derived test port these functions should be called: + +[source] +---- +void map_user(); + +void unmap_user(); +---- + +=== Setting Test Port Parameters + +[source] +---- +bool parameter_set(const char __parameter_name, const char __parameter_value); +---- + +Call this function in the `set_parameter` function of the derived test port to set the test port parameters of AbstractSocket. + +=== Open a Listening Port + +To open a server socket call the following function: + +[source] +---- +int open_listen_port(const char* localHostname, const char* localService); +---- + +This function supports both IPv4 and IPv6 addresses. The parameter `localHostname` should specify the local hostname. It can be the name of the host or an IP address. The parameter `localService` should be a string containing the port number. One of the two parameters can be `_NULL_`, meaning `_ANY_` for that parameter. The address family used is specified either by the `ai_family_name()` testport parameter or set by the function `set_ai_family(int)`. + +The following function only supports IPv4: + +`int open_listen_port(const struct sockaddr_in & localAddr);` + +NOTE: This function is deprecated. It is kept for compatibility with previous versions of test ports that use `AbstractSocket` + +After calling the `open_listen_port` function, the function virtual void `listen_port_opened(int port_number)` is called automatically with the listening port number, or `_-1_` if the opening of the listening port failed. This function can be overridden in the derived test port to implement specific behavior depending on the listen result. This can, for example, call `incoming_message` to generate an incoming `ListenResult` message in the test port. + +Subsequent calls of the function `open_listen_port` results in closing the previous listening port and opening a new one. This means that only one server port is supported by `AbstractSocket`. + +When a client connects to the listening port the following functions are called to notify the derived test port about the new client connection: + +[source] +---- +virtual void peer_connected(int client_id, const char * host, const int port) +virtual void peer_connected(int client_id, sockaddr_in& remote_addr); +---- + +Only one of these functions should be overridden in the derived test port. Note, that the second is obsolete. It is kept for backward compatibility only. + +Similar functions for client disconnects: + +[source] +---- +virtual void peer_disconnected(int client_id); +virtual void peer_half_closed(int client_id); +---- + +The `client_id` parameter specifies which client has disconnected/half closed. The `peer_half_closed` function is called when the client closes the socket for writing, while `peer_disconnected` is called when the client is disconnected. Both functions can be overridden in the derived test port. + +=== Close the Listening Port + +`void close_listen_port()` + +This function closes the listening port. + +=== Open a Client Connection + +[source] +---- +int open_client_connection(const char* remoteHostname, const char* remoteService, const char* localHostname, const char* localService); +---- + +This function creates an IPv4 or IPv6 connection from the local address `localHostname/localService` to the remote address `remoteHostname/remoteService`. + +If `localHostname` or `localService` is `_NULL_`, it will be assigned automatically. + +The parameters for the remote address cannot be `_NULL_`. The local or remote service parameters should be numbers in string format, while the addresses should be names or IP addresses in IPv4 or IPv6 format. + +The `open_client_connection` function above makes the following function obsolete: + +[source] +---- +int open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr) +---- + +It is kept for backward compatibility for derived test ports that were not adapted to the IPv6 supporting function. + +After calling the `open_client_connection` function, AbstractSocket calls automatically the function `virtual void client_connection_opened(int client_id)` to inform the test port about the result. The `client_id` parameter is set to the id of the client, or `_-1_` if the connection could not be established to the remote address. This function can be overridden in the derived test port. + +=== Send Message + +[source] + +void send_outgoing(const unsigned char* message_buffer, int length, int client_id = -1); + +With this function a message can be sent to the specified client. + +==== To Receive a Message + +When a message is received, the following function is called automatically: + +[source] +---- +virtual void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1) +---- + +This function must be overridden in the derived test port. To generate an incoming TTCN3 message, the test port shall call the `incoming_message` function of the Titan API within this function. + +In order that this function could be called automatically, the derived test port shall define these functions: + +[source] +---- +virtual void Handler_Install(const fd_set* read_fds, const fd_set* write_fds, const fd_set* error_fds, double call_interval); +virtual void Handler_Uninstall(); +---- + +In `Handler_Install` the `Install_Handler` Titan API function is called. + +Also in the `Event_Handler` Titan API function, the function + +[source] +---- +void Handle_Event(const fd_set *read_fds, const fd_set __write_fds, const fd_set __error_fds, double time_since_last_call) +---- +is called. + +=== Close a Client Connection + +[source] +---- +virtual void remove_client(int client_id); +virtual void remove_all_clients(); +---- + +The first closes the connection for a given client the second function closes the connection of all clients. + +=== Test Port Parameter Names + +The default AbstractSocket test port parameter names can be redefined in the derived test port by overriding the appropriate function below: + +[source] +---- +virtual const char* local_port_name(); +virtual const char* remote_address_name(); +virtual const char* local_address_name(); +virtual const char* remote_port_name(); +virtual const char* ai_family_name(); +virtual const char* use_connection_ASPs_name(); +virtual const char* halt_on_connection_reset_name(); +virtual const char* client_TCP_reconnect_name(); +virtual const char* TCP_reconnect_attempts_name(); +virtual const char* TCP_reconnect_delay_name(); +virtual const char* server_mode_name(); +virtual const char* socket_debugging_name(); +virtual const char* nagling_name(); +virtual const char* use_non_blocking_socket_name(); +virtual const char* server_backlog_name(); +virtual const char* ssl_disable_SSLv2(); +virtual const char* ssl_disable_SSLv3(); +virtual const char* ssl_disable_TLSv1(); +virtual const char* ssl_disable_TLSv1_1(); +virtual const char* ssl_disable_TLSv1_2(); +---- + +=== Parameter Accessor Functions + +The following functions can be use to get/set the AbstractSocket parameters: + +[source] +---- +bool get_nagling() const +bool get_use_non_blocking_socket() const +bool get_server_mode() const +bool get_socket_debugging() const +bool get_halt_on_connection_reset() const +bool get_use_connection_ASPs() const +bool get_handle_half_close() const +int set_non_block_mode(int fd, bool enable_nonblock); +bool increase_send_buffer(int fd, int &old_size, int& new_size); +const char* get_local_host_name() +const unsigned int get_local_port_number() +const char* get_remote_host_name() +const unsigned int get_remote_port_number() +const int& get_ai_family() const +void set_ai_family(int parameter_value) +bool get_ttcn_buffer_usercontrol() const +void set_nagling(bool parameter_value) +void set_server_mode(bool parameter_value) +void set_handle_half_close(bool parameter_value) +void set_socket_debugging(bool parameter_value) +void set_halt_on_connection_reset(bool parameter_value) +void set_ttcn_buffer_usercontrol(bool parameter_value) +---- + +=== Logging Functions + +The following functions log a given message in different ways: + +[source] +---- +void log_debug(const char *fmt, …) const +void log_warning(const char *fmt, …) const +void log_error(const char *fmt, …) const +void log_hex(const char __prompt, const unsigned char __msg, size_t length) const; +---- + +=== Error Reporting + +[source] +---- +virtual void report_error(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); +---- + +This function is called automatically if an error occurs during send operation in `AbstractSocket`. This function can be overridden in the derived test port to override the default error reporting behavior of `AbstractSocket`, which is calling the `log_error` function. This function can also be called by the derived test port to initiate the error reporting mechanism. + += Tips and Tricks + +== Usage + +In order to build a test port based on `Abstract_Socket` the following steps must be completed: + +1. Deriving the test port class (see <>) +2. Implementation of the logger functions if needed (see <>) +3. Function translations (see <>) +4. Installing the handlers (see <>) +5. Final steps (see <>) + +These steps are discussed in detail in the following subsections. + +[[deriving_the_test_port_class]] +=== Deriving the Test Port Class + +Inherit your test port class beside the test port base also from the `Abstract_Socket` class, if you do not want to use SSL at all. If you plan to use SSL, inherit the test port from the `SSL_Socket` class. In case your SSL implementation is just optional, you have to make sure that it is possible to disable SSL related code parts at compile time. In the AS if the `AS_USE_SSL` macro is defined, then SSL is enabled, otherwise disabled. + +Example: + +[source] +---- +#ifdef AS_USE_SSL +class myport__PT : public SSL_Socket, public myport__PT_BASE { +#else +class myport__PT : public Abstract_Socket, public myport__PT_BASE { +#endif +---- + +[[implementation_of_the_logger_functions]] +=== Implementation of the Logger Functions + +Implement the `log_debug`, `log_error`, `log_warning` and `log_hex` virtual functions if you need other implementation than the default. (they can be empty implementations if logging is not needed) + +[width="100%",cols="20%,80%",options="header",] +|=============================================================== +|Function |Description +|`log_debug` |does the debug-logging +|`log_hex` |does the logging of the message content in hex format +|`log_warning` |does the logging of warning messages +|`log_error` |is expecting the test port to stop with a TTCN_ERROR +|=============================================================== + +You can use the logger functions implemented in the AS. In this case you have to call the AS constructor with your test port type and name. In this way the AS will log messages acting like your test port. + +[[function_translations]] +=== Function Translations + +Translate the port's functions to the socket's functions. By translating we mean a function call with unchanged parameters like this: + +[source] +---- +void myport__PT::set_parameter(const char *parameter_name, + const char* parameter_value) { + parameter_set(parameter_name ,parameter_value); +} +---- + +The list of functions to be translated: + +[cols=",",options="header",] +|==================================== +|Port functions: |Socket functions: +|`set_parameter` |`parameter_set` +|`Handle_Fd_Event` |`Handle_Socket_Event` +|`Handle_Timeout` |`Handle_Timeout_Event` +|`user_map` |`map_user` +|`user_unmap` |`unmap_user` +|==================================== + +If you might need other functions also to be performed during `map`, `unmap` or `set_parameter`, you can add them right after the socket's function calls. + +Example: + +[source] +---- +void myport__PT::set_parameter(const char *parameter_name, + const char *parameter_value) + { + parameter_set(parameter_name ,parameter_value); + if(strcmp(parameter_name,"dallas_addr") == 0){ + destHostId = getHostId(parameter_value); + destAddr.sin_family = AF_INET; + destAddr.sin_addr.s_addr = htonl(destHostId); + return; + } + } +---- + +The translation of the `outgoing_send` to `send_outgoing` function needs some parameter formatting since the `outgoing_send` has parameters inherited from your TTCN-3 structures, while `Abstract_Socket`'s `outgoing_send` has parameters as ``(char* message, int messageLength, int client_id)``. + +The same applies for the incoming function calls where you have to write your own `message_incoming` to `incoming_message` translation. + +Example: + +[source] +---- +void myport__PT::outgoing_send(const TTCN3__Structure& send_par) +{ + if(send_par.client__id().ispresent()) { + send_outgoing((char*)(const unsigned char*)send_par.data(), + send_par.data().lengthof(), send_par.client__id()()); + } else { + send_outgoing((char*)(const unsigned char*)send_par.data(), + send_par.data().lengthof()); + } +} +---- + +[[functions_for_manipulating_the_set_of_events_for_which_the_port_waits]] +=== Functions for Manipulating the Set of Events for Which the Port Waits + +Add the following (virtual) member functions to your port (class definition) unchanged: + +[source] +---- +void Add_Fd_Read_Handler(int fd) { Handler_Add_Fd_Read(fd); } +void Add_Fd_Write_Handler(int fd) { Handler_Add_Fd_Write(fd); } +void Remove_Fd_Read_Handler(int fd) { Handler_Remove_Fd_Read(fd); } +void Remove_Fd_Write_Handler(int fd) { Handler_Remove_Fd_Write(fd); } +void Remove_Fd_All_Handlers(int fd) { Handler_Remove_Fd(fd); } +void Handler_Uninstall() { Uninstall_Handler(); } +void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, + boolean call_anyway = TRUE, boolean is_periodic = TRUE) { + Handler_Set_Timer(call_interval, is_timeout, call_anyway, is_periodic); +} +---- + +NOTE: These member functions are required and used by Abstract Socket. They are defined in Abstract Socket as virtual and are to be overridden in the descendant Test Port class. They are implemented in the (Test Port) class definition only for the sake of simplicity.) + +[[final_steps]] +=== Final Steps + +Finally, the function definitions must be added to the header file accordingly. Then, you are ready to go ahead and develop your test port. + +[[using-ttcn-buffer-in-test-ports]] +== Using `TTCN_Buffer` in Test Ports + +The Abstract Socket uses a `TTCN_Buffer` <<_2, [2]>> to store incoming message portions. If the test port also would like to store incoming messages, here is a description how to do that: + +The test port can access the `TTCN_Buffer` with `get_buffer`() and can operate on it. If the test port uses the buffer to store data, it must set the `ttcn_buffer_usercontrol` variable to `_true_`, so that the AS will not clear the buffer content. + +In this case the test port can use the buffer in the following ways: + +* `get_buffer`() to fetch the `TTCN_Buffer` associated with the client +* Optionally modify content; or wait for complete TLV +* Once a message portion is sent to the TTCN-3 test suite, cut the sent message from the buffer because the AS will not do that. In case the test port simply passed the message to the test suite and uses no storage of it (e.g. TCP Test Port), it can leave `ttcn_buffer_usercontrol` in false (which is the default value) so that the AS will take care of buffer cleanups. + +== Using SSL on Top of a TCP Connection + +SSL can be used on top of the TCP connection. The authentication mode can be configured via a test port parameter. + +=== Server Mode + +In server mode, first a TCP socket is created. The server starts to listen on this port (upon the `user_map`() operation or in case of connection ASPs, calling the `open_listen_port`() operation). Once a TCP connect request is received, the TCP connection is set up. After this the SSL handshake begins. The SSL is mapped to the file descriptor of the TCP socket. The BIO, which is an I/O abstraction that hides many of the underlying I/O details from an application, is automatically created by OpenSSL inheriting the characteristics of the socket (non-blocking mode). The BIO is completely transparent. The server always sends its certificate to the client. If configured so, the server will request the certificate of the client and check if it is a valid certificate. If not, the SSL connection is refused. If configured not to verify the certificate, the server will not request it from the client and the SSL connection is accepted. If usage of the SSL session resumption is enabled and the client refers to a previous SSL session, the server will accept it, unless it is not found in the SSL context cache. Once the connection is negotiated, data can be sent/received. The SSL connection is shut down using an `unmap`() operation. The shutdown process does not follow the standard: the server simply shuts down and does not expect any acknowledgement from the client. + +Clients connected to the server are distinguished with their file descriptor numbers. When a message is received, the file descriptor number is also passed, so the client can be identified. + +=== Client Mode + +In client mode, first a TCP connection is requested to the server (upon the `user_map`() operation or in case of connection ASPs, calling the `open_client_connection`() operation). Once it is accepted, the SSL endpoint is created. If configured so, the client tries to use the SSL session Id from the previous connection, if available (e.g. it is not the first connection). If no SSL session Id is available, or the server does not accept it, a full handshake is performed. If configured so, the certificate of the server is verified. If the verification fails, the SSL connection is interrupted by the client. If no verification required, the received certificate is still verified, however the result does not affect the connection even though it failed. + +=== Authentication Flow + +In summary, the authentication is done according to this flow: + +* ssl handshake begins (new client tries to connect) +* `virtual int ssl_verify_certificates_at_handshake(int preverify_ok, X509_STORE_CTX *ssl_ctx)` is called. During this handshake you can perform additional authentication. +* If the connection is accepted, the SSL handshake is finished and SSL is established. Now the function virtual `bool ssl_verify_certificates`() is called where you may perform other authentication if you want. + +`ssl_verify_certificates`() is a virtual function. It is called after the SSL connection is up. Test ports may use it to check other peer's certificate and do actions. If the return value is 0, then the SSL connection is closed. In case of client mode, the test port exits with an error (`*verification_error*`). In server mode the test port just removes client data, but keeps running. + +== Adapting Derived Test Ports to Support IPv6 + +Derived test ports should be updated in the following way to support IPv4 and IPv6: + +All calls of functions + +[source] +---- +const struct sockaddr_in & get_remote_addr() +const struct sockaddr_in & get_local_addr() +---- + +should be removed. They can be replaced by calling these functions: + +[source] +---- +virtual const char* local_port_name(); +virtual const char* local_address_name(); +virtual const char* remote_port_name(); +virtual const char* remote_address_name(); +---- + +The function `int open_listen_port(const struct sockaddr_in & localAddr);` does not support IPv6. The function below should be used instead: + +`int open_listen_port(const char* localHostname, const char* localServicename);` + +The same has to be done for the `open_client_connection` function. Replace any call of the function + +[source] +int open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr) + + +with the function: + +[source] +---- +int open_client_connection(const char* remoteHostname, const char* remoteService, const char* localHostname, const char* localService); +---- + +If the following callback function is overridden in the derived test port: + +[source] +---- +virtual void peer_connected(int client_id, sockaddr_in& remote_addr); +---- + +it should be removed and the following function should be overridden instead: + +[source] +---- +virtual void peer_connected(int client_id, const char * host, const int port) +---- + +The following function should not be used: + +`void get_host_id(const char* hostName, struct sockaddr_in *addr)` + +The socket API function `getaddrinfo` should be used instead. + += Error Messages + +== Error Messages In Case TCP Connections Are Used + +`*Parameter value not recognized for parameter *` + +The specified `` in the runtime configuration file is not recognized for the parameter . + +`*Invalid input as TCP_reconnect_attempts counter given: *` + +The specified `` in the runtime configuration file must be a positive whole number. + +`*TCP_reconnect_attempts must be greater than 0, is given*` + +The specified `` for `TCP_reconnect_attempts` in the runtime configuration file must be greater than `_0_`. + +`*Invalid input as TCP_reconnect_delay given: *` + +The specified `` for the `TCP_reconnect_delay` parameter in the runtime configuration file must be a whole number not less than `_0_`. + +`*TCP_reconnect_delay must not be less than 0, is given*` + +The specified `` for the `TCP_reconnect_delay` parameter in the runtime configuration file must be a whole number not less than `_0_`. + +`*Invalid input as port number given: *` + +The specified `` in the runtime configuration file is cannot be interpreted as a valid port number (e.g. string is given). + +`*Port number must be between 0 and 65535, is given*` + +The specified `` in the runtime configuration file is cannot be interpreted as a valid port number. Port numbers must be in the range 0..65535. + +`*Invalid input as server backlog given: *` + +The specified `` in the runtime configuration file is cannot be interpreted as a valid server backlog number (e.g. string is given). + +`*Cannot accept connection at port*` + +Connection could not be accepted on TCP socket. + +`*Error when reading the received TCP PDU*` + +System error occurred during reading from the TCP socket. + +`*Cannot open socket*` + +Creation of the listener socket failed. + +`*Setsockopt failed*` + +Setting of socket options failed. + +`*Cannot bind to port*` + +Binding of a socket to a port failed. + +`*Cannot listen at port*` + +Listen on the listener socket failed. + +`*getsockname() system call failed on the server socket*` + +The query of the listening port number failed. + +`*AbstractSocket: getnameinfo: *` + +The `getnameinfo` function returned an error. + +`*getaddrinfo: for host service *` + +The `getaddrinfo` function returned an error. + +`*Malformed message: invalid length: . The length should be at least .*` + +The message received contains invalid length information. + +`*Already tried times, giving up*` + +The deadlock counter exceeds the hard coded limit when trying to connect to a server in client mode. When connecting on a socket, sometimes it is unsuccessful. The next try usually solves the problem and the connection will be successfully accepted. The test port retries to connect as a workaround. The number of tries however limited to avoid hanging the test port. + +Different operating systems behave in a different way. This problem is rare on Solaris, Unix and Linux systems, but much more often on Cygwin. + +`*Cannot connect to server*` + +Connection to a server on TCP failed. + +`*Connection was interrupted by the other side*` + +The TCP or SSL connection was refused by the other peer, or broken. + +`*Client Id not specified although not only 1 client exists*` + +It should never show up. + +`*There is no connection alive, use the `ASP_TCP_Connect' before sending anything.*` + +An attempt was made by the test port to send data before setting up any connection. The `open_client_connection` function has to be called before sending any data. + +`*Send system call failed: There is no client connected to the TCP server*` + +A send operation is performed to a non-existing client. + +`*Send system call failed: bytes were sent instead of *` + +The send operation failed. + +`* is not defined in the configuration file*` + +The test port parameter is not defined in the runtime configuration file, although its presence is mandatory (or conditional and the condition is true). + +`*The host name is not valid in the configuration file*` + +The host name specified in the configuration file could not be resolved. + +`*Number of clients<>0 but cannot get first client, programming error*` + +It should never show up. + +`*Index exceeds length of peer list*` + +It should never show up. + +`*Abstract_Socket::get_peer: Client does not exist*` + +It should never show up. + +`*Invalid Client Id is given: *` + +It should never show up. + +`*Peer does not exist*` + +It should never show up. + +`*Set blocking mode failed.*` + +Test port could not set socket option: `O_NONBLOCK` + +== Additional Error Messages In Case SSL Connections Are Used + +Apart from the previously mentioned error messages, the following messages are used in case SSL is used: + +`*No SSL CTX found, SSL not initialized*` + +It should never show up. + +`*Creation of SSL object failed*` + +Creation of the SSL object is failed. + +`*Binding of SSL object to socket failed*` + +The SSL object could not be bound to the TCP socket. + +`*SSL error occurred*` + +A general SSL error occurred. Check the test port logs to see previous error messages showing the real problem. + +`* is not defined in the configuration file although =yes*` + +[source] +: ssl_trustedCAlist_file_name(), : ssl_verifycertificate_name() + +`*No SSL data available for client *` + +It should never show up. + +`*Could not read from /dev/urandom*` + +The read operation on the installed random device is failed. + +`*Could not read from /dev/random*` + +The read operation on the installed random device is failed. + +`*Could not seed the Pseudo Random Number Generator with enough data*` + +As no random devices found, a workaround is used to seed the SSL PRNG. The seeding failed. + +`*SSL method creation failed*` + +The creation of the SSL method object failed. + +`*SSL context creation failed*` + +The creation of the SSL context object failed. + +`*Can't read certificate file*` + +The specified certificate file could not be read. + +`*Can't read key file*` + +The specified private key file could not be read. + +`*Can't read trustedCAlist file*` + +The specified certificate of the trusted CAs file could not be read. + +`*Cipher list restriction failed for *` + +The specified cipher restriction list could not be set. + +`*Activation of SSL session resumption failed on server*` + +The activation of the SSL session resumption on the server failed. + +`*Unknown SSL error code *` + +It should never show up. + += Warning Messages + +== Warning Messages In Case TCP Connections Are Used + +`*Error when reading the received TCP PDU*` + +The received TCP PDU cannot be read. + +`*connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again.*` + +When connecting on a socket, sometimes it is unsuccessful. The next try usually solves the problem and the connection will be successfully accepted. The test port retries to connect as a workaround. The number of tries however limited to avoid hanging the test port. + +Different operating systems behave in a different way. This problem is rare on Solaris, Unix and Linux systems, but much more often on Cygwin. + +`*Connect() returned error code , trying to connect again (TCP reconnect mode)*` + +When connecting on a socket, sometimes it is unsuccessful and the given error code was returned. The next try usually solves the problem and the connection will be successfully accepted. The test port retries to connect as a workaround. + +`*TCP connection was interrupted by the other side, trying to reconnect again.*` + +The TCP or SSL connection was refused by the other peer, or it was broken. The test port tries to reconnect again. + +`*TCP reconnect successfully finished.*` + +This warning message is given if the reconnection was successful. + +`*Parameter has no meaning if use_connection_ASPs is used.*` + +There is no effect of setting this parameter when `use_connection_ASPs` is set to `_"yes"_`. + +`*Abstract_Socket::remove_client: is the server listening port, can not be removed!*` + +The `client_id` given in the `remove_client` function is currently used as the server’s listening port, it can not be removed. To close the server listening port, use the `close_listen_port` function. + +`*Client has not been removed, programming error*` + +It should never show up. + +`*Sending data on file descriptor .The sending operation would block execution. The size of the outgoing buffer was increased from to bytes.*` + +When the Abstract Socket is used with non-blocking socket, if the sending operation would block, first the size of the sending buffer is increased. This is the first step to avoid TCP deadlock. In the second step the Test Port will try to receive some data. + +`*Sending data on file descriptor .The sending operation would block execution and it is not possible to further increase the size of the outgoing buffer. Trying to process incoming data to avoid deadlock.*` + +When the Abstract Socket is used with non-blocking socket, if the sending operation would block, and the size of the outgoing buffer cannot be increased, the Test Port tries to receive some data to avoid deadlock. + +`*System call fcntl(F_GETFL) failed on file descriptor %d.*` + +`*System call fcntl(F_SETFL) failed on file descriptor %d.*` + +`*Setsockopt failed when trying to open the listen port: *` + +The `setsockopt` function failed. + +`*Cannot bind to port when trying to open the listen port: *` + +The bind system call failed. + +`*Cannot listen at port when trying to open the listen port: *` + +The listen system call failed. + +`*getsockname() system call failed on the server socket when trying to open the listen port: *` + +The getsockname system call failed. + +`*getaddrinfo: for host service *` + +The getaddrinfo system call failed. + +`*getnameinfo() system call failed on the server socket when trying to open the listen port: *` + +The getnameinfo system call failed. + +`*Cannot open socket when trying to open client connection: *` + +The socket system call failed. + +`*Setsockopt failed when trying to open client connection: *` + +The setsockopt system call failed. + +`*Cannot bind to port when trying to open client connection: *` + +The bind system call failed. + +`*Already tried times, giving up when trying to open client connection: *` + +The deadlock counter exceeds the hard coded limit when trying to connect to a server in client mode. When connecting on a socket, sometimes it is unsuccessful. The next try usually solves the problem and the connection will be successfully accepted. The test port retries to connect as a workaround. The number of tries however limited to avoid hanging the test port. + +Different operating systems behave in a different way. This problem is rare on Solaris, Unix and Linux systems, but much more often on Cygwin. + +[[warning_messages_in_case_SSL_connections_are_used]] +== Warning Messages In Case SSL Connections Are Used + +`*Warning: race condition while setting current client object pointer.*` + +The current client object pointer is already set. + +`*Connection from client is refused*` + +The connection from a client is refused in the server. + +`*Connection to server is refused*` + +The connection from the client is refused by the server. + +`*Server did not send a session ID*` + +The SSL server did not send a session ID. + +`*Verification failed*` + +The verification of the other side is failed. The connection will be shut down. + +`*SSL object not found for client *` + +It should never show up. + +`*SSL_Socket::receive_message_on_fd: SSL connection was interrupted by the other side*` + +The TLS/SSL connection has been closed. If the protocol version is SSL 3.0 or TLS 1.0, this warning appears only if a closure alert has occurred in the protocol, i.e. if the connection has been closed cleanly. Note that in this case it does not necessarily indicate that the underlying transport has been closed. + +`*Other side does not have certificate*` + +The other side of the SSL connection does not have a certificate. + +`*Solaris patches to provide random generation devices are not installed*` + +Solaris patches to provide random generation devices are not installed. A workaround will be used to seed the PRNG. + +`*Private key does not match the certificate public key*` + +The private key specified for the test port does not match with the public key. + += Terminology + +*Sockets:* + +The socket is a method for communication between a client program and a server program in a network. A socket is defined as "the endpoint in a connection". Sockets are created and used with a set of programming requests or "function calls" sometimes called the sockets application programming interface (API). The most common socket API is the Berkeley UNIX C language interface for sockets. Sockets can also be used for communication between processes within the same computer. + +*Blocking and non-blocking sockets:* + +Using a blocking socket, some socket operations (send, receive, connect, accept) will block until the operation is finished or an error occurs. Using a non-blocking socket, these operations will never block but return with an error and set `errno` to the appropriate value. + +*OpenSSL:* + +The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and open source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. For more information on the OpenSSL project see <<_3, [3]>> + += Abbreviations + +AS:: Abstract Socket + +ASP:: Abstract Service Primitive + +IPv4:: Internet Protocol version 4 + +IPv6:: Internet Protocol version 6 + +PEM:: Privacy Enhanced Mail + +RTE:: Run-Time Environment + +SSL:: Secure Sockets Layer + +SUT:: System Under Test + +TCP:: Transmission Control Protocol + +TLS:: Transport Layer Security + +TTCN-3:: Testing and Test Control Notation version 3 + += References + +[[_1]] +[1] ETSI ES 201 873-1 (2002) + +The Testing and Test Control Notation version 3. Part 1: Core Language + +[[_2]] +[2] User Guide for TITAN TTCN–3 Test Executor + +[[_3]] +[3] OpenSSL toolkit + + http://www.openssl.org diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.pdf b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d34138f4441545ce0db1c76eb49b886cd783eed6 --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.pdf @@ -0,0 +1,25084 @@ +%PDF-1.3 +%ÿÿÿÿ +1 0 obj +<< /Title (Abstract Socket Test Port for TTCN-3 Toolset with TITAN, Description) +/Author +/Creator (Asciidoctor PDF 1.5.0.alpha.16, based on Prawn 2.2.2) +/Producer +/ModDate (D:20180803135149+02'00') +/CreationDate (D:20180803135149+02'00') +>> +endobj +2 0 obj +<< /Type /Catalog +/Pages 3 0 R +/Names 16 0 R +/Outlines 290 0 R +/PageLabels 353 0 R +/PageMode /UseOutlines +/OpenAction [7 0 R /FitH 842.89] +/ViewerPreferences << /DisplayDocTitle true +>> +>> +endobj +3 0 obj +<< /Type /Pages +/Count 31 +/Kids [7 0 R 10 0 R 12 0 R 14 0 R 32 0 R 40 0 R 47 0 R 56 0 R 64 0 R 68 0 R 70 0 R 73 0 R 78 0 R 81 0 R 87 0 R 92 0 R 95 0 R 109 0 R 113 0 R 117 0 R 123 0 R 129 0 R 132 0 R 137 0 R 139 0 R 142 0 R 144 0 R 148 0 R 150 0 R 153 0 R 158 0 R] +>> +endobj +4 0 obj +<< /Length 2 +>> +stream +q + +endstream +endobj +5 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 4 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +>> +>> +endobj +6 0 obj +<< /Length 834 +>> +stream +q +/DeviceRGB cs +0.6 0.6 0.6 scn +/DeviceRGB CS +0.6 0.6 0.6 SCN + +BT +84.6338 361.6965 Td +/F1.0 27 Tf +[<4162737472> 20.0195 <61637420536f636b> 20.0195 <65742054> 29.7852 <65737420506f727420666f72205454> 20.0195 <434e2d33>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6 0.6 0.6 scn +0.6 0.6 0.6 SCN + +BT +139.9568 327.6765 Td +/F1.0 27 Tf +[<54> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e2c204465736372697074696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.0941 0.0941 0.0941 scn +0.0941 0.0941 0.0941 SCN + +BT +469.014 293.2049 Td +/F1.0 13 Tf +<4787626f7220537a616c6169> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +323.2733 263.3914 Td +/F1.0 10.5 Tf +[<56> 60.0586 <657273696f6e20313535312d434e4c20313133203338342c20526576> 69.8242 <2e20412c20323031352d30312d3230>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q + +endstream +endobj +7 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 6 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +>> +>> +>> +endobj +8 0 obj +<< /Type /Font +/BaseFont /3a0e86+NotoSerif +/Subtype /TrueType +/FontDescriptor 355 0 R +/FirstChar 32 +/LastChar 255 +/Widths 357 0 R +/ToUnicode 356 0 R +>> +endobj +9 0 obj +<< /Length 27952 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 782.394 Td +/F2.0 22 Tf +[<54> 29.7852 <61626c65206f6620436f6e74656e7473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 751.856 Td +/F1.0 10.5 Tf +<41626f7574205468697320446f63756d656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +161.0311 751.856 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 751.856 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 751.856 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 733.376 Td +/F1.0 10.5 Tf +<486f7720746f2052656164205468697320446f63756d656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +203.7871 733.376 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 733.376 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 733.376 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 714.896 Td +/F1.0 10.5 Tf +<50726573756d6564204b6e6f776c65646765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +171.7201 714.896 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 714.896 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 714.896 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 696.416 Td +/F1.0 10.5 Tf +<46756e6374696f6e616c697479> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +118.2751 696.416 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 696.416 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 696.416 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 677.936 Td +/F1.0 10.5 Tf +[<53> 20.0195 <797374656d20526571756972656d656e7473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +171.7201 677.936 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 677.936 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 677.936 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 659.456 Td +/F1.0 10.5 Tf +<46756e64616d656e74616c20436f6e6365707473> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +177.0646 659.456 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 659.456 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 659.456 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 640.976 Td +/F1.0 10.5 Tf +<4d6f64756c6520537472756374757265> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +161.0311 640.976 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 640.976 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 640.976 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 622.496 Td +/F1.0 10.5 Tf +<53746172742050726f636564757265> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +139.6531 622.496 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 622.496 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 622.496 Td +/F1.0 10.5 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 604.016 Td +/F1.0 10.5 Tf +<436f6e6e656374696f6e2041535073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +161.0311 604.016 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 604.016 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 604.016 Td +/F1.0 10.5 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 585.536 Td +/F1.0 10.5 Tf +<536572766572204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +139.6531 585.536 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 585.536 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 585.536 Td +/F1.0 10.5 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 567.056 Td +/F1.0 10.5 Tf +<436c69656e74204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +134.3086 567.056 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 567.056 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 567.056 Td +/F1.0 10.5 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 548.576 Td +/F1.0 10.5 Tf +<53656e64696e672f526563656976696e67204d65737361676573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +203.7871 548.576 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 548.576 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 548.576 Td +/F1.0 10.5 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 530.096 Td +/F1.0 10.5 Tf +<4c6f6767696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +102.2416 530.096 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 530.096 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 530.096 Td +/F1.0 10.5 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 511.616 Td +/F1.0 10.5 Tf +<4572726f722048616e646c696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +139.6531 511.616 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 511.616 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 511.616 Td +/F1.0 10.5 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 493.136 Td +/F1.0 10.5 Tf +<436c6f73696e6720446f776e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +128.9641 493.136 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 493.136 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 493.136 Td +/F1.0 10.5 Tf +<33> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 474.656 Td +/F1.0 10.5 Tf +<4950763620537570706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +128.9641 474.656 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 474.656 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 474.656 Td +/F1.0 10.5 Tf +<33> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 456.176 Td +/F1.0 10.5 Tf +<53534c2046756e6374696f6e616c697479> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +150.3421 456.176 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 456.176 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 456.176 Td +/F1.0 10.5 Tf +<33> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 437.696 Td +/F1.0 10.5 Tf +<436f6d70696c6174696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +134.3086 437.696 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 437.696 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 437.696 Td +/F1.0 10.5 Tf +<33> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 419.216 Td +/F1.0 10.5 Tf +[<41> 20.0195 <757468656e7469636174696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +150.3421 419.216 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 419.216 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 419.216 Td +/F1.0 10.5 Tf +<33> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 400.736 Td +/F1.0 10.5 Tf +[<4f746865722046> 40.0391 <65617475726573>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +150.3421 400.736 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 400.736 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 400.736 Td +/F1.0 10.5 Tf +<34> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 382.256 Td +/F1.0 10.5 Tf +<4c696d69746174696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +134.3086 382.256 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 382.256 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 382.256 Td +/F1.0 10.5 Tf +<34> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 363.776 Td +/F1.0 10.5 Tf +[<5468652054> 29.7852 <65737420506f7274>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +118.2751 363.776 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 363.776 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 363.776 Td +/F1.0 10.5 Tf +<34> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 345.296 Td +/F1.0 10.5 Tf +<4f76657276696577> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +112.9306 345.296 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 345.296 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 345.296 Td +/F1.0 10.5 Tf +<34> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 326.816 Td +/F1.0 10.5 Tf +<496e7374616c6c6174696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +118.2751 326.816 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 326.816 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 326.816 Td +/F1.0 10.5 Tf +<35> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 308.336 Td +/F1.0 10.5 Tf +[<436f6e6669677572> 20.0195 <6174696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +134.3086 308.336 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 308.336 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 308.336 Td +/F1.0 10.5 Tf +<35> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 289.856 Td +/F1.0 10.5 Tf +[<4162737472> 20.0195 <61637420536f636b> 20.0195 <65742054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652054> 29.7852 <65737420506f727420436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +433.6006 289.856 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 289.856 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 289.856 Td +/F1.0 10.5 Tf +<36> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 271.376 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +81.66 271.376 Td +/F3.0 10.5 Tf +<4162737472616374536f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +155.16 271.376 Td +/F1.0 10.5 Tf +<20415049> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +177.0646 271.376 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 271.376 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 271.376 Td +/F1.0 10.5 Tf +<39> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 252.896 Td +/F1.0 10.5 Tf +[<4d61702f556e6d6170207468652054> 29.7852 <65737420506f7274>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +203.7871 252.896 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 252.896 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 252.896 Td +/F1.0 10.5 Tf +<39> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 234.416 Td +/F1.0 10.5 Tf +[<53657474696e672054> 29.7852 <65737420506f727420506172> 20.0195 <616d6574657273>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +214.4761 234.416 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +540.4906 234.416 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.1705 234.416 Td +/F1.0 10.5 Tf +<39> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 215.936 Td +/F1.0 10.5 Tf +<4f70656e2061204c697374656e696e6720506f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +181.8841 215.936 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 215.936 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 215.936 Td +/F1.0 10.5 Tf +<3130> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 197.456 Td +/F1.0 10.5 Tf +<436c6f736520746865204c697374656e696e6720506f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +192.5731 197.456 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 197.456 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 197.456 Td +/F1.0 10.5 Tf +<3131> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 178.976 Td +/F1.0 10.5 Tf +<4f70656e206120436c69656e7420436f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +203.2621 178.976 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 178.976 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 178.976 Td +/F1.0 10.5 Tf +<3131> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 160.496 Td +/F1.0 10.5 Tf +<53656e64204d657373616765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +144.4726 160.496 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 160.496 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 160.496 Td +/F1.0 10.5 Tf +<3131> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 142.016 Td +/F1.0 10.5 Tf +<436c6f7365206120436c69656e7420436f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +203.2621 142.016 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 142.016 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 142.016 Td +/F1.0 10.5 Tf +<3132> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 123.536 Td +/F1.0 10.5 Tf +[<54> 29.7852 <65737420506f727420506172> 20.0195 <616d65746572204e616d6573>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +213.9511 123.536 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 123.536 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 123.536 Td +/F1.0 10.5 Tf +<3132> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 105.056 Td +/F1.0 10.5 Tf +[<506172> 20.0195 <616d657465722041> 20.0195 <63636573736f722046756e6374696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +224.6401 105.056 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 105.056 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 105.056 Td +/F1.0 10.5 Tf +<3133> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 86.576 Td +/F1.0 10.5 Tf +<4c6f6767696e672046756e6374696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +165.8506 86.576 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 86.576 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 86.576 Td +/F1.0 10.5 Tf +<3134> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 68.096 Td +/F1.0 10.5 Tf +<4572726f72205265706f7274696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +155.1616 68.096 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 68.096 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 68.096 Td +/F1.0 10.5 Tf +<3134> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q + +endstream +endobj +10 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 9 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +>> +>> +/Annots [164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R] +>> +endobj +11 0 obj +<< /Length 15934 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 794.676 Td +/F1.0 10.5 Tf +<5469707320616e6420547269636b73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +128.4391 794.676 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 794.676 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 794.676 Td +/F1.0 10.5 Tf +<3134> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 776.196 Td +/F1.0 10.5 Tf +<5573616765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +91.0276 776.196 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 776.196 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 776.196 Td +/F1.0 10.5 Tf +<3134> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 757.716 Td +/F1.0 10.5 Tf +[<4465726976696e67207468652054> 29.7852 <65737420506f727420436c617373>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +213.9511 757.716 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 757.716 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 757.716 Td +/F1.0 10.5 Tf +<3134> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 739.236 Td +/F1.0 10.5 Tf +<496d706c656d656e746174696f6e206f6620746865204c6f676765722046756e6374696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +278.0851 739.236 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 739.236 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 739.236 Td +/F1.0 10.5 Tf +<3135> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 720.756 Td +/F1.0 10.5 Tf +[<46756e6374696f6e205472> 20.0195 <616e736c6174696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +187.2286 720.756 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 720.756 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 720.756 Td +/F1.0 10.5 Tf +<3135> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 702.276 Td +/F1.0 10.5 Tf +[<46756e6374696f6e7320666f72204d616e6970756c6174696e672074686520536574206f66204576656e747320666f722057686963682074686520506f72742057> 49.8047 <61697473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +422.3866 702.276 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 702.276 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 702.276 Td +/F1.0 10.5 Tf +<3136> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 683.796 Td +/F1.0 10.5 Tf +<46696e616c205374657073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +128.4391 683.796 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 683.796 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 683.796 Td +/F1.0 10.5 Tf +<3137> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 665.316 Td +/F1.0 10.5 Tf +<5573696e6720> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +90.984 665.316 Td +/F3.0 10.5 Tf +<5454434e5f427566666572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +148.734 665.316 Td +/F1.0 10.5 Tf +[<20696e2054> 29.7852 <65737420506f727473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +213.9511 665.316 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 665.316 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 665.316 Td +/F1.0 10.5 Tf +<3137> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 646.836 Td +/F1.0 10.5 Tf +[<5573696e672053534c206f6e2054> 29.7852 <6f70206f6620612054> 20.0195 <435020436f6e6e656374696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +251.3626 646.836 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 646.836 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 646.836 Td +/F1.0 10.5 Tf +<3137> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 628.356 Td +/F1.0 10.5 Tf +<536572766572204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +139.1281 628.356 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 628.356 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 628.356 Td +/F1.0 10.5 Tf +<3138> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 609.876 Td +/F1.0 10.5 Tf +<436c69656e74204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +133.7836 609.876 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 609.876 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 609.876 Td +/F1.0 10.5 Tf +<3138> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +72.24 591.396 Td +/F1.0 10.5 Tf +[<41> 20.0195 <757468656e7469636174696f6e20466c6f77>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +176.5396 591.396 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 591.396 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 591.396 Td +/F1.0 10.5 Tf +<3138> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 572.916 Td +/F1.0 10.5 Tf +[<41> 20.0195 <64617074696e6720446572697665642054> 29.7852 <65737420506f72747320746f20537570706f72742049507636>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +283.4296 572.916 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 572.916 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 572.916 Td +/F1.0 10.5 Tf +<3139> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 554.436 Td +/F1.0 10.5 Tf +<4572726f72204d65737361676573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +128.4391 554.436 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 554.436 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 554.436 Td +/F1.0 10.5 Tf +<3230> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 535.956 Td +/F1.0 10.5 Tf +[<4572726f72204d6573736167657320496e20436173652054> 20.0195 <435020436f6e6e656374696f6e73204172652055736564>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +310.1521 535.956 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 535.956 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 535.956 Td +/F1.0 10.5 Tf +<3230> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 517.476 Td +/F1.0 10.5 Tf +[<41> 20.0195 <64646974696f6e616c204572726f72204d6573736167657320496e20436173652053534c20436f6e6e656374696f6e73204172652055736564>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +368.9416 517.476 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 517.476 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 517.476 Td +/F1.0 10.5 Tf +<3232> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 498.996 Td +/F1.0 10.5 Tf +[<57> 49.8047 <61726e696e67204d65737361676573>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +144.4726 498.996 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 498.996 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 498.996 Td +/F1.0 10.5 Tf +<3234> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 480.516 Td +/F1.0 10.5 Tf +[<57> 49.8047 <61726e696e67204d6573736167657320496e20436173652054> 20.0195 <435020436f6e6e656374696f6e73204172652055736564>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +331.5301 480.516 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 480.516 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 480.516 Td +/F1.0 10.5 Tf +<3234> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.24 462.036 Td +/F1.0 10.5 Tf +[<57> 49.8047 <61726e696e67204d6573736167657320496e20436173652053534c20436f6e6e656374696f6e73204172652055736564>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +326.1856 462.036 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 462.036 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 462.036 Td +/F1.0 10.5 Tf +<3236> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 443.556 Td +/F1.0 10.5 Tf +[<54> 29.7852 <65726d696e6f6c6f6779>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +112.4056 443.556 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 443.556 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 443.556 Td +/F1.0 10.5 Tf +<3237> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 425.076 Td +/F1.0 10.5 Tf +<416262726576696174696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +123.0946 425.076 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 425.076 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 425.076 Td +/F1.0 10.5 Tf +<3237> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 406.596 Td +/F1.0 10.5 Tf +<5265666572656e636573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6627 0.6627 0.6627 scn +0.6627 0.6627 0.6627 SCN + +BT +107.0611 406.596 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +BT +534.6211 406.596 Td +/F1.0 2.625 Tf + Tj +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.301 406.596 Td +/F1.0 10.5 Tf +<3238> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q + +endstream +endobj +12 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 11 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +>> +>> +/Annots [242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R] +>> +endobj +13 0 obj +<< /Length 6942 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 782.394 Td +/F2.0 22 Tf +<41626f7574205468697320446f63756d656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 741.146 Td +/F2.0 18 Tf +<486f7720746f2052656164205468697320446f63756d656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.032 Tw + +BT +48.24 713.126 Td +/F1.0 10.5 Tf +[<5468697320697320746865205573657220477569646520666f7220746865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574207465737420706f72742e20546865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574207465737420706f727420697320646576656c6f706564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 697.346 Td +/F1.0 10.5 Tf +[<666f7220746865205454> 20.0195 <434e2d332054> 29.7852 <6f6f6c7365742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 657.506 Td +/F2.0 18 Tf +<50726573756d6564204b6e6f776c65646765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 629.486 Td +/F1.0 10.5 Tf +[<54> 29.7852 <6f2075736520746869732070726f746f636f6c206d6f64756c6520746865206b6e6f776c65646765206f6620746865205454> 20.0195 <434e2d33206c616e677561676520>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +383.4546 629.486 Td +/F1.0 10.5 Tf +<5b315d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +396.8631 629.486 Td +/F1.0 10.5 Tf +<20697320657373656e7469616c2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 580.034 Td +/F2.0 27 Tf +<46756e6374696f6e616c697479> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 533.054 Td +/F2.0 22 Tf +[<53> 20.0195 <797374656d20526571756972656d656e7473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 503.866 Td +/F1.0 10.5 Tf +[<496e206f7264657220746f2075736520746865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574207465737420706f72742074686520666f6c6c6f77696e672073797374656d20726571756972656d656e7473206d757374206265207361746973666965643a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 476.086 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 476.086 Td +/F1.0 10.5 Tf +[<506c6174666f726d3a20616e> 20.0195 <7920706c6174666f726d20737570706f727465642062> 20.0195 <7920544954> 60.0586 <414e2052> 20.0195 <544520616e64204f70656e53534c>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 454.306 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 454.306 Td +/F1.0 10.5 Tf +[<544954> 60.0586 <414e205454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f722076657273696f6e205238412028312e382e706c3029206f722068696768657220696e7374616c6c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.5 w +0.9333 0.9333 0.9333 SCN +102.4695 438.49 m +102.4695 414.71 l +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.3451 422.526 Td +/F2.0 10.5 Tf +[<4e4f> 20.0195 <5445>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +114.4695 422.526 Td +/F1.0 10.5 Tf +[<54686973204162737472> 20.0195 <61637420536f636b> 20.0195 <65742076657273696f6e206973206e6f7420636f6d70617469626c65207769746820544954> 60.0586 <414e2072656c6561736573206561726c696572207468616e205238412e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9943 Tw + +BT +48.24 390.746 Td +/F1.0 10.5 Tf +[<49662053534c20697320757365642c207468652073616d65204f70656e53534c206d75737420626520696e7374616c6c6564206173207573656420696e20544954> 60.0586 <414e2e2046> 40.0391 <6f7220616e204f70656e53534c20696e7374616c6c6174696f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 374.966 Td +/F1.0 10.5 Tf +<67756964652073656520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +97.359 374.966 Td +/F1.0 10.5 Tf +<5b335d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +110.7675 374.966 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 330.854 Td +/F2.0 22 Tf +<46756e64616d656e74616c20436f6e6365707473> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.9998 Tw + +BT +48.24 301.666 Td +/F1.0 10.5 Tf +[<546865207465737420706f72742065737461626c697368657320636f6e6e656374696f6e206265747765656e20746865205454> 20.0195 <434e2d332074657374206578656375746f7220616e642053555420616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.4205 Tw + +BT +48.24 285.886 Td +/F1.0 10.5 Tf +[<7472> 20.0195 <616e736d6974732f7265636569766573206d657373616765732e20546865207472> 20.0195 <616e73706f7274206368616e6e656c2063616e2062652054> 20.0195 <4350206f722053534c2e2054686520636f6e6e65637420616e64206c697374656e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 270.106 Td +/F1.0 10.5 Tf +[<6f706572> 20.0195 <6174696f6e732063616e20626520696e697469617465642066726f6d207468652074657374207375697465207573696e672074686520>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +326.5528 270.106 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +426.3028 270.106 Td +/F1.0 10.5 Tf +[<207465737420706f727420706172> 20.0195 <616d657465722e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 230.266 Td +/F2.0 18 Tf +<4d6f64756c6520537472756374757265> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 202.246 Td +/F1.0 10.5 Tf +[<546865204162737472> 20.0195 <61637420536f636b> 20.0195 <657420636f6d6d6f6e20636f6d706f6e656e7420697320696d706c656d656e74656420696e2074686520666f6c6c6f77696e672066696c65733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 174.466 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 174.466 Td +/F4.0 10.5 Tf +[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6868>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 152.686 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 152.686 Td +/F4.0 10.5 Tf +[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6363>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 108.574 Td +/F2.0 22 Tf +<53746172742050726f636564757265> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.388 Td +/F1.0 9 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +14 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 13 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F4.0 29 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +/Annots [22 0 R 25 0 R] +>> +endobj +15 0 obj +[14 0 R /XYZ 0 841.89 null] +endobj +16 0 obj +<< /Type /Names +/Dests 17 0 R +>> +endobj +17 0 obj +<< /Kids [49 0 R 135 0 R 50 0 R 84 0 R 115 0 R] +>> +endobj +18 0 obj +[14 0 R /XYZ 0 841.89 null] +endobj +19 0 obj +<< /Type /Font +/BaseFont /ace878+NotoSerif-Bold +/Subtype /TrueType +/FontDescriptor 359 0 R +/FirstChar 32 +/LastChar 255 +/Widths 361 0 R +/ToUnicode 360 0 R +>> +endobj +20 0 obj +[14 0 R /XYZ 0 765.17 null] +endobj +21 0 obj +[14 0 R /XYZ 0 681.53 null] +endobj +22 0 obj +<< /Border [0 0 0] +/Dest (_1) +/Subtype /Link +/Rect [383.4546 626.42 396.8631 640.7] +/Type /Annot +>> +endobj +23 0 obj +[14 0 R /XYZ 0 613.67 null] +endobj +24 0 obj +[14 0 R /XYZ 0 561.35 null] +endobj +25 0 obj +<< /Border [0 0 0] +/Dest (_3) +/Subtype /Link +/Rect [97.359 371.9 110.7675 386.18] +/Type /Annot +>> +endobj +26 0 obj +[14 0 R /XYZ 0 359.15 null] +endobj +27 0 obj +<< /Type /Font +/BaseFont /121353+mplus1mn-regular +/Subtype /TrueType +/FontDescriptor 363 0 R +/FirstChar 32 +/LastChar 255 +/Widths 365 0 R +/ToUnicode 364 0 R +>> +endobj +28 0 obj +[14 0 R /XYZ 0 254.29 null] +endobj +29 0 obj +<< /Type /Font +/BaseFont /91a4c8+NotoSerif-Italic +/Subtype /TrueType +/FontDescriptor 367 0 R +/FirstChar 32 +/LastChar 255 +/Widths 369 0 R +/ToUnicode 368 0 R +>> +endobj +30 0 obj +[14 0 R /XYZ 0 136.87 null] +endobj +31 0 obj +<< /Length 9168 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 786.666 Td +/F2.0 18 Tf +<436f6e6e656374696f6e2041535073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9875 Tw + +BT +48.24 758.646 Td +/F1.0 10.5 Tf +[<5768656e2063686f6f73696e6720746f2075736520636f6e6e656374696f6e20415350732c20746865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742069732061626c6520746f206f70656e206120736572766572206c697374656e696e6720706f7274>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 742.866 Td +/F1.0 10.5 Tf +[<28616374696e67206c696b> 20.0195 <6520612073657276657229206f7220636c69656e7420636f6e6e656374696f6e73206174207468652073616d652074696d652e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 703.026 Td +/F2.0 18 Tf +<536572766572204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4287 Tw + +BT +48.24 675.006 Td +/F1.0 10.5 Tf +[<5768656e20746865207465737420706f7274206973206d61707065642062> 20.0195 <7920544954> 60.0586 <414e2052> 20.0195 <54452c2074686520736572766572206372656174657320612054> 20.0195 <435020736f636b> 20.0195 <657420616e6420737461727473206c697374656e696e67206f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7526 Tw + +BT +48.24 659.226 Td +/F1.0 10.5 Tf +[<69742e20446570656e64696e67206f6e20746865207472> 20.0195 <616e73706f7274206368616e6e656c2073706563696669656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c2069742077696c6c20616363657074>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 643.446 Td +/F1.0 10.5 Tf +[<6569746865722054> 20.0195 <4350206f722053534c20636f6e6e656374696f6e732e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 603.606 Td +/F2.0 18 Tf +<436c69656e74204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6167 Tw + +BT +48.24 575.586 Td +/F1.0 10.5 Tf +[<5768656e20746865207465737420706f7274206973206d61707065642062> 20.0195 <7920544954> 60.0586 <414e2052> 20.0195 <54452c2074686520636c69656e74206372656174657320612054> 20.0195 <435020736f636b> 20.0195 <657420616e6420747269657320746f20636f6e6e65637420746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.0954 Tw + +BT +48.24 559.806 Td +/F1.0 10.5 Tf +[<746865207365727665722e20496620746865207472> 20.0195 <616e73706f7274206368616e6e656c2069732053534c2c2074686520636c69656e742073746172747320616e2053534c2068616e647368616b> 20.0195 <65206166746572207468652054> 20.0195 <4350>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5443 Tw + +BT +48.24 544.026 Td +/F1.0 10.5 Tf +[<636f6e6e656374696f6e2069732065737461626c69736865642e204966207468652053534c2068616e647368616b> 20.0195 <65206973207375636365737366756c2c207468652053534c20636f6e6e656374696f6e2069732065737461626c697368656420616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 528.246 Td +/F1.0 10.5 Tf +<74686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.93 528.246 Td +/F3.0 10.5 Tf +<6d6170> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +82.68 528.246 Td +/F1.0 10.5 Tf +[<206f706572> 20.0195 <6174696f6e2069732066696e69736865642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 500.466 Td +/F1.0 10.5 Tf +[<5468652053534c2068616e647368616b> 20.0195 <65206d61> 20.0195 <79206661696c2064756520746f207365766572> 20.0195 <616c20726561736f6e732028652e672eca6e6f2073686172656420636970686572732c20766572696669636174696f6e206661696c7572652c206574632e292e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 456.354 Td +/F2.0 22 Tf +<53656e64696e672f526563656976696e67204d65737361676573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.2518 Tw + +BT +48.24 427.166 Td +/F1.0 10.5 Tf +[<4f6e6c79206261736963206f63746574737472696e672073656e64696e6720616e6420726563656976696e672069732068616e646c65642062> 20.0195 <7920746865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742e20546869732066756e6374696f6e616c697479>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.04 Tw + +BT +48.24 411.386 Td +/F1.0 10.5 Tf +[<70726f6261626c79206d75737420626520657874656e64656420696e206f7264657220746f206275696c642061207465737420706f727420666f722074686520646573697265642070726f746f636f6c2e20466972737420746865205454> 20.0195 <434e2d33>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.372 Tw + +BT +48.24 395.606 Td +/F1.0 10.5 Tf +[<6d617070696e67206f6620746865207461726765742070726f746f636f6c206d65737361676573206d75737420626520656c61626f72> 20.0195 <6174656420616e64207468656e20746865206d6573736167652070726f63657373696e67>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 379.826 Td +/F1.0 10.5 Tf +<66756e6374696f6e732063616e20626520646576656c6f7065642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 335.714 Td +/F2.0 22 Tf +<4c6f6767696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.4687 Tw + +BT +48.24 306.526 Td +/F1.0 10.5 Tf +<5468652074797065206f6620696e666f726d6174696f6e20746861742077696c6c206265206c6f676765642063616e2062652063617465676f72697a656420696e746f2074776f2067726f7570732e20546865206669727374206f6e65> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4086 Tw + +BT +48.24 290.746 Td +/F1.0 10.5 Tf +<636f6e7369737473206f6620696e666f726d6174696f6e20746861742073686f77732074686520666c6f77206f662074686520696e7465726e616c20657865637574696f6e206f6620746865207465737420706f72742c20652e672eca696d706f7274616e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.2202 Tw + +BT +48.24 274.966 Td +/F1.0 10.5 Tf +<6576656e74732c2077686963682066756e6374696f6e20746861742069732063757272656e746c7920657865637574696e67206574632e20546865207365636f6e642067726f7570206465616c7320776974682070726573656e74696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1305 Tw + +BT +48.24 259.186 Td +/F1.0 10.5 Tf +[<76616c7561626c6520646174612c20652e672eca70726573656e74696e672074686520636f6e74656e74206f662061205044552e20546865206c6f6767696e67207072696e746f7574732077696c6c20626520646972656374656420746f207468652052> 20.0195 <5445>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4973 Tw + +BT +48.24 243.406 Td +/F1.0 10.5 Tf +[<6c6f672066696c652e2054686520757365722069732061626c6520746f206465636964652077686574686572206c6f6767696e6720697320746f2074616b> 20.0195 <6520706c616365206f72206e6f742062> 20.0195 <792073657474696e6720617070726f707269617465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 227.626 Td +/F1.0 10.5 Tf +[<636f6e6669677572> 20.0195 <6174696f6e20646174612e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 183.514 Td +/F2.0 22 Tf +<4572726f722048616e646c696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6416 Tw + +BT +48.24 154.326 Td +/F1.0 10.5 Tf +[<4572726f6e656f7573206265686176696f7220646574656374656420647572696e672072756e74696d6520697320646972656374656420696e746f207468652052> 20.0195 <5445206c6f672066696c652e2054686520666f6c6c6f77696e672074776f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 138.546 Td +/F1.0 10.5 Tf +[<7479706573206f66206d65737361676573206172652074616b> 20.0195 <656e2063617265206f663a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 110.766 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.2851 Tw + +BT +66.24 110.766 Td +/F1.0 10.5 Tf +<4572726f72733a20696e666f726d6174696f6e2061626f7574206572726f72732064657465637465642069732070726f76696465642e20496620616e206572726f72206f63637572732074686520657865637574696f6e206f6620746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 94.986 Td +/F1.0 10.5 Tf +[<7465737420636173652077696c6c2073746f7020696d6d6564696174656c79> 89.8438 <2e20546865207465737420706f7274732077696c6c20626520756e6d61707065642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 73.206 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7095 Tw + +BT +66.24 73.206 Td +/F1.0 10.5 Tf +[<57> 49.8047 <61726e696e67733a20696e666f726d6174696f6e2061626f7574207761726e696e67732064657465637465642069732070726f76696465642e2054686520657865637574696f6e20636f6e74696e75657320616674657220746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 57.426 Td +/F1.0 10.5 Tf +<7761726e696e672069732073686f776e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +32 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 31 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +33 0 obj +[32 0 R /XYZ 0 841.89 null] +endobj +34 0 obj +[32 0 R /XYZ 0 727.05 null] +endobj +35 0 obj +[32 0 R /XYZ 0 627.63 null] +endobj +36 0 obj +[32 0 R /XYZ 0 484.65 null] +endobj +37 0 obj +[32 0 R /XYZ 0 364.01 null] +endobj +38 0 obj +[32 0 R /XYZ 0 211.81 null] +endobj +39 0 obj +<< /Length 10742 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 782.394 Td +/F2.0 22 Tf +<436c6f73696e6720446f776e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.8316 Tw + +BT +48.24 753.206 Td +/F1.0 10.5 Tf +<54686520636f6e6e656374696f6e2063616e206265207368757420646f776e2065697468657220706572666f726d696e672074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +3.8316 Tw + +BT +364.6918 753.206 Td +/F3.0 10.5 Tf +<756e6d6170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.8316 Tw + +BT +390.9418 753.206 Td +/F1.0 10.5 Tf +[<206f706572> 20.0195 <6174696f6e206f6e2074686520706f7274206f72206966>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 737.426 Td +/F1.0 10.5 Tf +[<636f6e6e656374696f6e204153507320617265207573656420776974682074686520617070726f70726961746520415350> 120.1172 <2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 693.314 Td +/F2.0 22 Tf +<4950763620537570706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.4693 Tw + +BT +48.24 664.126 Td +/F1.0 10.5 Tf +[<497420697320706f737369626c6520746f2073656c6563742074686520616464726573732066616d696c79207573656420666f722073657276657220736f636b> 20.0195 <657420616e6420636c69656e7420636f6e6e656374696f6e7320696e20746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7381 Tw + +BT +48.24 648.346 Td +/F1.0 10.5 Tf +[<636f6e6669677572> 20.0195 <6174696f6e2066696c65206f7220647572696e672072756e74696d652e2054686520666f6c6c6f77696e6720616464726573732066616d696c6965732061726520737570706f727465643a20495076342c204950763620616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 632.566 Td +/F1.0 10.5 Tf +<554e535045432e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 588.454 Td +/F2.0 22 Tf +<53534c2046756e6374696f6e616c697479> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6622 Tw + +BT +48.24 559.266 Td +/F1.0 10.5 Tf +[<546865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742063616e207573652053534c206f722054> 20.0195 <435020617320746865207472> 20.0195 <616e73706f7274206368616e6e656c2e205468652073616d652076657273696f6e206f66204f70656e53534c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 543.486 Td +/F1.0 10.5 Tf +[<6c696272> 20.0195 <617279206d757374206265207573656420617320696e20544954> 60.0586 <414e2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.5602 Tw + +BT +48.24 515.706 Td +/F1.0 10.5 Tf +[<54686520737570706f727465642053534c2f544c532076657273696f6e73206172652064657465726d696e65642062> 20.0195 <79207468652075736564204f70656e53534c206c696272> 20.0195 <617279> 89.8438 <2e20497420697320706f737369626c6520746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 499.926 Td +/F1.0 10.5 Tf +[<64697361626c65206120737065636966696320544c532f53534c2076657273696f6e20696e207468652072756e2074696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 460.086 Td +/F2.0 18 Tf +<436f6d70696c6174696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.3605 Tw + +BT +48.24 432.066 Td +/F1.0 10.5 Tf +<546865207573616765206f662053534c20616e64206576656e2074686520636f6d70696c6174696f6e206f66207468652053534c2072656c6174656420636f646520706172747320617265206f7074696f6e616c2e2054686973206973> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 416.286 Td +/F1.0 10.5 Tf +<626563617573652053534c2072656c6174656420636f64652070617274732063616e6e6f7420626520636f6d70696c656420776974686f757420746865204f70656e53534c20696e7374616c6c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6975 Tw + +BT +48.24 388.506 Td +/F1.0 10.5 Tf +[<54686520636f6d70696c6174696f6e206f662053534c2072656c6174656420636f64652070617274732063616e2062652064697361626c65642062> 20.0195 <79206e6f7420646566696e696e672074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.6975 Tw + +BT +445.6011 388.506 Td +/F3.0 10.5 Tf +<41535f5553455f53534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6975 Tw + +BT +498.1011 388.506 Td +/F1.0 10.5 Tf +<206d6163726f20696e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6354 Tw + +BT +48.24 372.726 Td +/F1.0 10.5 Tf +<74686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6354 Tw + +BT +67.5654 372.726 Td +/F4.0 10.5 Tf +[<4d616b> 20.0195 <6566696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6354 Tw + +BT +109.3027 372.726 Td +/F1.0 10.5 Tf +<20647572696e672074686520636f6d70696c6174696f6e2e20496620746865206d6163726f20697320646566696e656420696e2074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6354 Tw + +BT +386.531 372.726 Td +/F4.0 10.5 Tf +[<4d616b> 20.0195 <6566696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6354 Tw + +BT +428.2683 372.726 Td +/F1.0 10.5 Tf +<2c207468652053534c20636f646520706172747320617265> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9115 Tw + +BT +48.24 356.946 Td +/F1.0 10.5 Tf +<636f6d70696c656420746f207468652065786563757461626c65207465737420636f64652e20546865207573616765206f66207468652053534c207468656e2063616e20626520656e61626c65642f64697361626c656420696e20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.5868 Tw + +BT +48.24 341.166 Td +/F1.0 10.5 Tf +[<72756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652e204e61747572> 20.0195 <616c6c79> 89.8438 <2c20746865207465737420706f727420706172> 20.0195 <616d657465722077696c6c2062652069676e6f7265642069662074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.5868 Tw + +BT +494.54 341.166 Td +/F3.0 10.5 Tf +<41535f5553455f53534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.5868 Tw + +BT +547.04 341.166 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 325.386 Td +/F1.0 10.5 Tf +<6d6163726f206973206e6f7420646566696e656420647572696e6720636f6d70696c6174696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 285.546 Td +/F2.0 18 Tf +[<41> 20.0195 <757468656e7469636174696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7515 Tw + +BT +48.24 257.526 Td +/F1.0 10.5 Tf +[<546865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742070726f766964657320626f746820736572766572207369646520616e6420636c69656e7420736964652061757468656e7469636174696f6e2e205768656e2061757468656e7469636174696e67>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6115 Tw + +BT +48.24 241.746 Td +/F1.0 10.5 Tf +<746865206f7468657220736964652c20612063657274696669636174652069732072657175657374656420616e6420746865206f776e207472757374656420636572746966696361746520617574686f726974696573d5206c6973742069732073656e742e20546865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0653 Tw + +BT +48.24 225.966 Td +/F1.0 10.5 Tf +[<7265636569766564206365727469666963617465206973207665726966696564207768657468657220697420697320612076616c6964206365727469666963617465206f72206e6f742028746865207075626c696320616e642070726976617465206b> 20.0195 <65797320617265>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.9449 Tw + +BT +48.24 210.186 Td +/F1.0 10.5 Tf +<6d61746368696e67292e204e6f20667572746865722061757468656e7469636174696f6e20697320706572666f726d65642028652e672eca7768657468657220686f73746e616d652069732070726573656e7420696e20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 194.406 Td +/F1.0 10.5 Tf +[<6365727469666963617465292e2054686520766572696669636174696f6e2063616e20626520656e61626c65642f64697361626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2079 Tw + +BT +48.24 166.626 Td +/F1.0 10.5 Tf +[<496e20736572766572206d6f646520746865207465737420706f72742077696c6c20616c7761> 20.0195 <79732073656e642069747320636572746966696361746520616e64207472757374656420636572746966696361746520617574686f726974696573d5206c69737420746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9488 Tw + +BT +48.24 150.846 Td +/F1.0 10.5 Tf +[<69747320636c69656e74732e20496620766572696669636174696f6e20697320656e61626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c20746865207365727665722077696c6c207265717565737420666f722061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.8549 Tw + +BT +48.24 135.066 Td +/F1.0 10.5 Tf +<636c69656e74d5732063657274696669636174652e20496e207468697320636173652c2069662074686520636c69656e7420646f6573206e6f742073656e6420612076616c6964206365727469666963617465206f7220646f6573206e6f742073656e642061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0064 Tw + +BT +48.24 119.286 Td +/F1.0 10.5 Tf +<636572746966696361746520617420616c6c2c2074686520636f6e6e656374696f6e2077696c6c20626520726566757365642e2049662074686520766572696669636174696f6e2069732064697361626c65642c2074686520636f6e6e656374696f6e2077696c6c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 103.506 Td +/F1.0 10.5 Tf +<6e6576657220626520726566757365642064756520746f20766572696669636174696f6e206661696c7572652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.0851 Tw + +BT +48.24 75.726 Td +/F1.0 10.5 Tf +[<496e20636c69656e74206d6f646520746865207465737420706f72742077696c6c2073656e642069747320636572746966696361746520746f2074686520736572766572206f6e2074686520736572766572> -29.7852 ] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2083 Tw + +BT +48.24 59.946 Td +/F1.0 10.5 Tf +[<766572696669636174696f6e20697320656e61626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c2074686520636c69656e742077696c6c2073656e6420697473206f776e2074727573746564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.388 Td +/F1.0 9 Tf +<33> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +40 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 39 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F4.0 29 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +41 0 obj +[40 0 R /XYZ 0 841.89 null] +endobj +42 0 obj +[40 0 R /XYZ 0 721.61 null] +endobj +43 0 obj +[40 0 R /XYZ 0 616.75 null] +endobj +44 0 obj +[40 0 R /XYZ 0 484.11 null] +endobj +45 0 obj +[40 0 R /XYZ 0 309.57 null] +endobj +46 0 obj +<< /Length 7462 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +0.2134 Tw + +BT +48.24 794.676 Td +/F1.0 10.5 Tf +[<636572746966696361746520617574686f726974696573d5206c69737420746f207468652073657276657220616e642077696c6c207665726966792074686520736572766572> -29.7852 -29.7852 ] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6497 Tw + +BT +48.24 778.896 Td +/F1.0 10.5 Tf +<6365727469666963617465206973206e6f742076616c69642c207468652053534c20636f6e6e656374696f6e2077696c6c206e6f742062652065737461626c69736865642e20496620766572696669636174696f6e2069732064697361626c65642c20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 763.116 Td +/F1.0 10.5 Tf +<636f6e6e656374696f6e2077696c6c206e6576657220626520726566757365642064756520746f20766572696669636174696f6e206661696c7572652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0041 Tw + +BT +48.24 735.336 Td +/F1.0 10.5 Tf +[<546865206f776e2063657274696669636174652873292c20746865206f776e2070726976617465206b> 20.0195 <65792066696c652c20746865206f7074696f6e616c2070617373776f72642070726f74656374696e6720746865206f776e2070726976617465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3485 Tw + +BT +48.24 719.556 Td +/F1.0 10.5 Tf +[<6b> 20.0195 <65792066696c6520616e6420746865207472757374656420636572746966696361746520617574686f726974696573d5206c6973742066696c652063616e2062652073706563696669656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 703.776 Td +/F1.0 10.5 Tf +<66696c652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8244 Tw + +BT +48.24 675.996 Td +/F1.0 10.5 Tf +[<546865207465737420706f72742077696c6c20636865636b2074686520636f6e73697374656e6379206265747765656e20697473206f776e2070726976617465206b> 20.0195 <657920616e6420746865207075626c6963206b> 20.0195 <657920286261736564206f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 660.216 Td +/F1.0 10.5 Tf +[<746865206f776e20636572746966696361746529206175746f6d61746963616c6c79> 89.8438 <2e2049662074686520636865636b206661696c732c2061207761726e696e672069732069737375656420616e6420657865637574696f6e20636f6e74696e7565732e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 620.376 Td +/F2.0 18 Tf +[<4f746865722046> 40.0391 <65617475726573>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 592.356 Td +/F1.0 10.5 Tf +[<546865207573616765206f662053534c2073657373696f6e20726573756d7074696f6e2063616e20626520656e61626c65642f64697361626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 564.576 Td +/F1.0 10.5 Tf +[<54686520616c6c6f77656420636970686572696e67207375697465732063616e206265207265737472696374656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c207365652e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8923 Tw + +BT +48.24 536.796 Td +/F1.0 10.5 Tf +<5468652053534c2072652d68616e647368616b696e672072657175657374732061726520616363657074656420616e642070726f6365737365642c20686f77657665722072652d68616e647368616b696e672063616e6e6f74206265> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 521.016 Td +/F1.0 10.5 Tf +<696e697469617465642066726f6d20746865207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 481.176 Td +/F2.0 18 Tf +<4c696d69746174696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 453.156 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 453.156 Td +/F1.0 10.5 Tf +<53534c2072652d68616e647368616b696e672063616e6e6f7420626520696e697469617465642066726f6d20746865207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 431.376 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0829 Tw + +BT +66.24 431.376 Td +/F1.0 10.5 Tf +[<546865206f776e2063657274696669636174652066696c652873292c20746865206f776e2070726976617465206b> 20.0195 <65792066696c6520616e6420746865207472757374656420636572746966696361746520617574686f726974696573d5206c6973742066696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 415.596 Td +/F1.0 10.5 Tf +<6d75737420626520696e2050454d20666f726d61742e204f7468657220666f726d61747320617265206e6f7420737570706f727465642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 366.144 Td +/F2.0 27 Tf +[<5468652054> 29.7852 <65737420506f7274>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 319.164 Td +/F2.0 22 Tf +<4f76657276696577> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8055 Tw + +BT +48.24 289.976 Td +/F1.0 10.5 Tf +[<546865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574206973206120636f6d6d6f6e20636f6d706f6e656e7420746861742063616e207365727665206173206120626173697320666f72207465737420706f7274732074686174206e6565642054> 20.0195 <4350>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4859 Tw + +BT +48.24 274.196 Td +/F1.0 10.5 Tf +[<636f6e6e656374696f6e732077697468206f7220776974686f75742053534c206f6e2074686520746f702e205468652054> 20.0195 <435020736f636b> 20.0195 <65742063616e206265207573656420656974686572207769746820626c6f636b696e67206f72>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7511 Tw + +BT +48.24 258.416 Td +/F1.0 10.5 Tf +[<6e6f6e2d626c6f636b696e6720736f636b> 20.0195 <65742e20546865204162737472> 20.0195 <61637420536f636b> 20.0195 <657420696d706c656d656e74732062617369632073656e64696e672c20726563656976696e6720616e6420736f636b> 20.0195 <65742068616e646c696e67>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3834 Tw + +BT +48.24 242.636 Td +/F1.0 10.5 Tf +<726f7574696e65732c20667572746865726d6f726520697420737570706f7274732074686520646576656c6f706d656e74206f66207465737420706f72747320746861742063616e20776f726b206173206120636c69656e74206f722061732061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.1198 Tw + +BT +48.24 226.856 Td +/F1.0 10.5 Tf +[<7365727665722e2042> 20.0195 <7920657874656e64696e6720746865204162737472> 20.0195 <61637420536f636b> 20.0195 <657420636f6d706f6e656e742077697468206164646974696f6e616c2066756e6374696f6e616c6974792074686520646573697265642074657374>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 211.076 Td +/F1.0 10.5 Tf +<706f72742063616e206265206275696c742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 183.296 Td +/F1.0 10.5 Tf +[<536565207468652066756e6374696f6e696e67206f6620746865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742062656c6f773a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +1.7537 Tc + +0.0 Tc + +1.7537 Tc + +0.0 Tc +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<34> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +47 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 46 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F2.0 19 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +48 0 obj +[47 0 R /XYZ 0 644.4 null] +endobj +49 0 obj +<< /Limits [(Abstract_Socket_Test_Port_Parameters_in_the_Test_Port_Configuration_File) (_close_a_client_connection)] +/Names [(Abstract_Socket_Test_Port_Parameters_in_the_Test_Port_Configuration_File) 65 0 R (_1) 160 0 R (_2) 161 0 R (_3) 162 0 R (__anchor-top) 15 0 R (_abbreviations) 156 0 R (_about_this_document) 18 0 R (_adapting_derived_test_ports_to_support_ipv6) 130 0 R (_additional_abstract_socket_test_port_parameters_in_the_test_port_configuration_file_if_the_transport_channel_is_ssl) 71 0 R (_additional_error_messages_in_case_ssl_connections_are_used) 140 0 R (_authentication) 45 0 R (_authentication_flow) 126 0 R (_client_mode) 35 0 R (_client_mode_2) 125 0 R (_close_a_client_connection) 89 0 R] +>> +endobj +50 0 obj +<< /Limits [(_how_to_read_this_document) (_overview)] +/Names [(_how_to_read_this_document) 20 0 R (_installation) 57 0 R (_ipv6_support) 42 0 R (_limitations) 51 0 R (_logging) 37 0 R (_logging_functions) 96 0 R (_module_structure) 28 0 R (_open_a_client_connection) 83 0 R (_open_a_listening_port) 79 0 R (_other_features) 48 0 R (_overview) 53 0 R] +>> +endobj +51 0 obj +[47 0 R /XYZ 0 505.2 null] +endobj +52 0 obj +[47 0 R /XYZ 0 399.78 null] +endobj +53 0 obj +[47 0 R /XYZ 0 347.46 null] +endobj +54 0 obj +<< /Type /XObject +/Subtype /Image +/Height 245 +/Width 379 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 4940 +/Filter [/FlateDecode] +/DecodeParms [<< /Predictor 15 +/Colors 3 +/BitsPerComponent 8 +/Columns 379 +>>] +>> +stream +xœí­®ôȵ†û„ 1z’ç +2äÜ€Ùh4 + l…Œ¢ ˜ €¨#DiPíc»ÚåU?î.·«W•ÝÏ£-}Ýîrýíw½ßª²wûò Å¥tàÀq@ôÀq@ôÀq@ôÀq@ôÀq@ô¨Åq.PŽÒ¿|x#jQº/3šÔ¢6t_ +f4©Emè¾Ì€òà”ÓÄòÛS¦³ØE˜ã,ÅWÝïò޲©ÔúÒË|.ò§ùìñ½}=yãÍ!—œ†’§ìŽšÔ¢¶—;Žk)‚9›èÛ%bWçæIŽã&]ËjÎäDþÒÌknû8KƒN%Kûö#¿¡­‰ŽšÔ¢¶W;ÎÕ_8Y–õË’ÝÉqVs¥HJå³Tsù™o+öµ=2¿XßéNÇMjQ[ùG”úCû³U¯¸s¹Èwœ•kZó"îN22Ûc¢ãìÚÏÁq@“ZÔörlj&'£Ûx{´ËÊ)žã|¬oå9ÎzŠÔŽvã¶ù“’ãì±4©Em9'H<¼ƒî~ÊlÁU¡9†Wg=©pšs–qžÅgnT¼ÿ15ÎÕŽã­^•Àq@“ZÔ¶G÷ò2P³\^ŽnmˆÃm/ö@œ85·Ø8Žãœ—ØY}Ó¸çßÊ‹kUÝ”ÒÌõøûÅ·›‰D ¢Wy8hR‹ÚÐ})˜yФµ¡ûR0ó I-jC÷¥`æA“ZÔ†îKÁ̃&µ¨ Ý—‚™MjQº/3šÔ¢6t_ +f4©Emè¾̼¨-Ä-@ +ÄIp€ˆ“ °<H„ ÉŽA²¶`Ò!HöÂu€tˆ½à8é!»àö€M»Àq6Axä£H8ÉŽq’ â$8@ +ÄIp€ˆ“<à8)'yÀqR Nò€ã¤@œäÇH8ÉŽq’ â$8@ +ÄIp€ˆ“<à8)'ÏÃ㟶BxìÇØá± `„Ç^°€tˆ½à8é!{ÁnÒ!H2€ã$BdÇH„ Évq’ …Zâdíþ]P ô/ÞˆZÔ†îKÁ̃&µ¨ Ý—‚™MjQº/3šÔ¢6t_ +f4©Emè¾Ì™J$Ç Ó§9Ù9œ•ZÔV¿ãÈÌÃÍ?¤»Ì‹«èª*ê9÷G4©EmÕ;ŽÝ<§EVPÖšâû8înlNVà´ôâ«U8hR‹ÚtGî¦Dg,`~æBÁ̲²òÇ_t»>®¹ÏÍ÷ÝkoÈÁq@“ZÔ¦¦{»8âØ¹ ïfáýw8c®%rŸïS}a NšFžß…c7¾v÷ÇMjQº/3šÔ¢6t_ +f4©Emè¾ÌžgK·p0ìuœk×vW'm™Bñ¶ÅaÖ+G¼dg^nM+.ñÆe8?~V#ºá¬Ü,˶‹ß§u[‘ùYvjl»²"§g²Y¯99º¶›–2½;`Ǿ½Èçf(ôi¬A ªmÙΧÝ>L™XÑ‘T˹¼±ã\* ô,ìtœ›áó˜ö5¬¢ì‘[xL‘f?âu­`:£J6¤泖ÌÞB$"p‡·sADë¢~óóádް‡C0MÛ3EsýÒ±¥âù€9æÌ±³|‰tu®{iÑë˜13ý8!OòÄνÙ`9U‰^™âc/ÞÉ>Ç[ÖrZ÷ÿɦëÖÌáqgO`üH8ÎLJ›"É\¯-·R:Óg~¦ÿÿ]Ú«Yáø] úðx}0|7}~uçœ ¿1Cö­°eBÞÌLYU#ަO¬ìMâbº*Ñ+S|ìÅ; Ùå8A*?¥ÛgE¹sõkŽãì…m[-6‰8ÎRÐvf“ã¬ßšãÈÉÛä8AVᬆ¤kÈ’±Î_;7QJžØ5]§*Ñ+S|ìÅ; yÚqFav®ÚŒP½3[+G¤ÄÃ­Š¹È½çN[+›»×îâÕ¹×Îl§¦o|÷rœø +#¾;ºGŽãdO‘Ë|Órji$:9kwæ{±•‡ë|sHU¢W¦øØ‹w@ò¤ã 2Üf”êìÁ ‚ì£Gœp5‘çlZÊÀŠãÌ2ï7Èš?ü¸ºvÝüúâ÷GX€Í„ÚÞüˆÓï:Ž;Ñ\0|¿š‘{ŽZŽÓÕÆÝ;r'Ç”· 5ô°[úÛˆDæÑÄ.õ$N]¢W¦øØ‹w@òŒãÄ–Ño÷ô²\jº_l²˜8˦‹w–¬Y^» /F]bý÷.3M&KÊvû„‘.®žÂÅhp‚kændûèìÚØ}÷Z•h%ÚºØOšØù’cªáÔ%zeнx$ùÿÊ!X]¬®7J¡ÛŸÃW¼É&™Mw%Ö%zeнx$8ΫÉ4ü;—ó +À_9l øØ‹w@’Ýqú%ÕŸÞÚ¾Óéû“uøË-E…Ù²œºQ•è•I»½,;îÄùKæ‘Õ[bå‚yGôàÛ*@ƒwÒ£±‹› æþø}}Û4¸à\ŠÄqÞYHÆ~ й6wœN$=ÎýVŽ`yg!=»YR›Ÿ1ÇqoT=ä­ 8hðÎBzöâÉqÄh—÷b)Á6žyÐÇã:Srœ°Ýå™—ûS¹ò׫JHÊ\* ô,Åqz”î3¹ï‡âÿ·?:%ú Ç<´ŒH»â)t9O<Ô.+Õ +s ǹvíí+|Á„âm™cœ@~YÑáã½ó G÷žv8Õe~\búp*1½uÞ¾&Ûœ3KÅÛ½,ym%2Lyòü…qrXËç"#+i9•éœ{®á8£ÛÌßñ*-GÄ¿I~úå9¹Ë¢GºÁd=¶øUâµâ2|ЇX´LŽ[/¢ÎÆ|ÁÛì­-(®´ë,ƒbÃÎäÚgו[³+h9uéœ{®Žà8ÓÚÅý.FóN.7&/i[±·"> ¿Ö„´¿¿‘º~qôÙÏn¯AqçÉ®±üF¶ëö7¦ße÷ü òfN îåT!¤#`k¥;ò*à8‘…’ø_®=œÅм¨ì†›½ØÔÇÂ79úXj¹®9Ž—ŠxpmSGf?âªÙ2ê~%›ÁqŽŽS|ä‘*Ï1îÿçï>ÍG„ønã«›Y9˥⻎{ÐG/·–¢W°Ä×ó‹mç9õVUî0E+²¤YÔM‰^0 +VUÇ@þ·Zº//¡vljßÀv‹XŠóÂ¥s×¾ãLÅnåmjàlÑ>rœÈƒ>L »;ºbÓ-ý´éPл{φ){aú< e®jÞ!_ +Ì#gç¸v¼D¾tw^BÍŽc#cȸÏ[Yf¹—pæ«;¸nã.ÑæDɾíġ赪•}8]u‚Këò¢ÒìS~W;¹dŠíÌ,Xq¼íhyWÇ«'ü}–îQ~jvœ÷&ç2h¹›°)¡%Ï­Â¥oÅ™@Héœ{®pœ€øªmY&©& ×å£ç(½œºñŽBz–sÏŽ ¤tÎ=W8h€Ò9÷\á8 BŽ $0à8 BJçÜs…ã€)sÏŽ ¤tÎ=W8h€Ò9÷\á8 BŽ $0> +stream +q + +1.7537 Tc + +0.0 Tc + +1.7537 Tc + +0.0 Tc +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +1.7537 Tc + +q +284.25 0.0 0.0 183.75 48.24 622.14 cm +/I1 Do +Q + +BT +48.24 625.206 Td +ET + + +0.0 Tc +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 581.094 Td +/F2.0 22 Tf +<496e7374616c6c6174696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.2902 Tw + +BT +48.24 551.906 Td +/F1.0 10.5 Tf +[<53696e636520746865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574207465737420706f7274206973207573656420617320612070617274206f6620746865205454> 20.0195 <434e2d33207465737420656e7669726f6e6d656e742074686973207265717569726573>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 536.126 Td +/F1.0 10.5 Tf +[<5454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f7220746f20626520696e7374616c6c6564206265666f726520616e> 20.0195 <79206f706572> 20.0195 <6174696f6e206f6620746865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574207465737420706f72742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6975 Tw + +BT +48.24 508.346 Td +/F1.0 10.5 Tf +[<54686520636f6d70696c6174696f6e206f662053534c2072656c6174656420636f64652070617274732063616e2062652064697361626c65642062> 20.0195 <79206e6f7420646566696e696e672074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.6975 Tw + +BT +445.6011 508.346 Td +/F3.0 10.5 Tf +<41535f5553455f53534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6975 Tw + +BT +498.1011 508.346 Td +/F1.0 10.5 Tf +<206d6163726f20696e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 492.566 Td +/F1.0 10.5 Tf +<74686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.93 492.566 Td +/F4.0 10.5 Tf +[<4d616b> 20.0195 <6566696c65>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +108.6673 492.566 Td +/F1.0 10.5 Tf +<20647572696e672074686520636f6d70696c6174696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.7126 Tw + +BT +48.24 464.786 Td +/F1.0 10.5 Tf +[<5768656e206275696c64696e67207468652065786563757461626c65207465737420737569746520746865206c696272> 20.0195 <617269657320636f6d70696c656420666f7220746865204f70656e53534c20746f6f6c6b69742028696620746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.9293 Tw + +BT +48.24 449.006 Td +/F3.0 10.5 Tf +<41535f5553455f53534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9293 Tw + +BT +100.74 449.006 Td +/F1.0 10.5 Tf +[<206d6163726f20697320646566696e6564292073686f756c6420616c736f206265206c696e6b> 20.0195 <656420696e746f207468652065786563757461626c6520616c6f6e67207769746820746865205454> 20.0195 <434e2d332054> 29.7852 <657374>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2678 Tw + +BT +48.24 433.226 Td +/F1.0 10.5 Tf +[<4578656375746f722c20692e652eca746865204f70656e53534c206c696272> 20.0195 <61726965732073686f756c6420626520616464656420746f2074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2678 Tw + +BT +371.7029 433.226 Td +/F4.0 10.5 Tf +[<4d616b> 20.0195 <6566696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2678 Tw + +BT +413.4402 433.226 Td +/F1.0 10.5 Tf +[<2067656e6572> 20.0195 <617465642062> 20.0195 <792074686520544954> 60.0586 <414e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4908 Tw + +BT +48.24 417.446 Td +/F1.0 10.5 Tf +<6578656375746f722028736565206578616d706c6520696e2073656374696f6e20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +0.4908 Tw + +BT +216.0478 417.446 Td +/F1.0 10.5 Tf +[<57> 49.8047 <61726e696e67204d6573736167657320696e20636173652053534c20436f6e6e656374696f6e73204172652055736564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4908 Tw + +BT +482.3947 417.446 Td +/F1.0 10.5 Tf +[<292e2054> 29.7852 <6f20636f6d70696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.1968 Tw + +BT +48.24 401.666 Td +/F1.0 10.5 Tf +<74686520736f757263652066696c657320796f752077696c6c20616c736f206e65656420746865204f70656e53534c20646576656c6f70657220746f6f6c6b697420776869636820636f6e7461696e7320746865206865616465722066696c6573> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3557 Tw + +BT +48.24 385.886 Td +/F1.0 10.5 Tf +[<757365642062> 20.0195 <792074686520736f757263652e204966205368617265204f626a656374732028>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3557 Tw + +BT +233.9022 385.886 Td +/F4.0 10.5 Tf +<2e736f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3557 Tw + +BT +247.4157 385.886 Td +/F1.0 10.5 Tf +<2920617265207573656420696e20746865204f70656e53534c20746f6f6c6b69742c20746f2072756e207468652065786563757461626c652c20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 370.106 Td +/F1.0 10.5 Tf +[<70617468206f6620746865204f70656e53534c206c696272> 20.0195 <6172696573206d75737420626520616464656420746f2074686520>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +304.5238 370.106 Td +/F3.0 10.5 Tf +<4c445f4c4942524152595f50415448> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +383.2738 370.106 Td +/F1.0 10.5 Tf +<20656e7669726f6e6d656e74207661726961626c652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.5 w +0.9333 0.9333 0.9333 SCN +102.4695 354.29 m +102.4695 298.95 l +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.3451 322.546 Td +/F2.0 10.5 Tf +[<4e4f> 20.0195 <5445>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0422 Tw + +BT +114.4695 338.326 Td +/F1.0 10.5 Tf +<496620796f7520617265207573696e6720746865207465737420706f7274206f6e20536f6c617269732c20796f75206861766520746f207365742074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.0422 Tw + +BT +424.047 338.326 Td +/F3.0 10.5 Tf +<504c4154464f524d> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0422 Tw + +BT +466.047 338.326 Td +/F1.0 10.5 Tf +<206d6163726f20746f20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2581 Tw + +BT +114.4695 322.546 Td +/F1.0 10.5 Tf +<70726f7065722076616c75652e204974207368616c6c20626520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2581 Tw + +BT +237.3396 322.546 Td +/F5.0 10.5 Tf +<534f4c41524953> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2581 Tw + +BT +274.0896 322.546 Td +/F1.0 10.5 Tf +<20696e2063617365206f6620536f6c617269732036202853756e4f5320352e362920616e6420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2581 Tw + +BT +455.5428 322.546 Td +/F5.0 10.5 Tf +<534f4c4152495338> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2581 Tw + +BT +497.5428 322.546 Td +/F1.0 10.5 Tf +<20696e2063617365> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +114.4695 306.766 Td +/F1.0 10.5 Tf +<6f6620536f6c617269732038202853756e4f5320352e38292e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 258.654 Td +/F2.0 22 Tf +[<436f6e6669677572> 20.0195 <6174696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.2614 Tw + +BT +48.24 229.466 Td +/F1.0 10.5 Tf +[<5468652065786563757461626c6520746573742070726f6772> 20.0195 <616d206265686176696f722069732064657465726d696e656420766961207468652072756e2d74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652e20546869732069732061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9451 Tw + +BT +48.24 213.686 Td +/F1.0 10.5 Tf +<73696d706c6520746578742066696c652c20776869636820636f6e7461696e7320766172696f75732073656374696f6e732028666f72206578616d706c652c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9451 Tw + +BT +376.4517 213.686 Td +/F3.0 10.5 Tf +<5b54455354504f52545f504152414d45544552535d> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9451 Tw + +BT +486.7017 213.686 Td +/F1.0 10.5 Tf +<292061667465722065616368> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0496 Tw + +BT +48.24 197.906 Td +/F1.0 10.5 Tf +[<6f746865722e2054686520757375616c20737566666978206f6620636f6e6669677572> 20.0195 <6174696f6e2066696c657320697320>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0496 Tw + +BT +281.348 197.906 Td +/F4.0 10.5 Tf +<2e6366672e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0496 Tw + +BT +300.8675 197.906 Td +/F1.0 10.5 Tf +[<2046> 40.0391 <6f72206675727468657220696e666f726d6174696f6e206f6e2074686520636f6e6669677572> 20.0195 <6174696f6e2066696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 182.126 Td +/F1.0 10.5 Tf +<73656520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +66.93 182.126 Td +/F1.0 10.5 Tf +<5b325d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +80.3385 182.126 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1061 Tw + +BT +48.24 154.346 Td +/F1.0 10.5 Tf +[<546865206c697374656420706f727420706172> 20.0195 <616d65746572732028>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +0.1061 Tw + +BT +187.6001 154.346 Td +/F1.0 10.5 Tf +[<4162737472> 20.0195 <61637420536f636b> 20.0195 <65742054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652054> 29.7852 <65737420506f727420436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1061 Tw + +BT +543.407 154.346 Td +/F1.0 10.5 Tf +<29> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.5246 Tw + +BT +48.24 138.566 Td +/F1.0 10.5 Tf +[<617265206d616e616765642062> 20.0195 <792064656661756c742062> 20.0195 <7920746865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742e2054686579206861766520746f20626520646566696e6564206f6e6c7920696e20746865205454> 20.0195 <434e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0894 Tw + +BT +48.24 122.786 Td +/F1.0 10.5 Tf +[<636f6e6669677572> 20.0195 <6174696f6e2066696c65732e2054686f7567682c206966204162737472> 20.0195 <61637420536f636b> 20.0195 <6574d57320706172> 20.0195 <616d657465722068616e646c696e67206973206e6f7420617070726f70726961746520666f7220796f7572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7407 Tw + +BT +48.24 107.006 Td +/F1.0 10.5 Tf +<6170706c69636174696f6e2c20796f752063616e2069676e6f726520697420636f6d706c6574656c7920616e642068616e646c6520746865207661726961626c6573206469726563746c792066726f6d20796f757220706f72742e204974206973> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1341 Tw + +BT +48.24 91.226 Td +/F1.0 10.5 Tf +[<7265636f6d6d656e64656420746f20696d706c656d656e7420796f7572206f776e207465737420706f727420706172> 20.0195 <616d65746572206e616d652070617373696e672066756e6374696f6e7320736f207468617420796f75722074657374>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 75.446 Td +/F1.0 10.5 Tf +[<706f72742077696c6c206e6f7420646570656e64206f6e20746865207465737420706f727420706172> 20.0195 <616d65746572206e616d657320696e20746865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.388 Td +/F1.0 9 Tf +<35> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +56 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 55 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/XObject << /I1 54 0 R +/Stamp1 288 0 R +>> +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F4.0 29 0 R +/F5.0 59 0 R +>> +>> +/Annots [58 0 R 61 0 R 62 0 R] +>> +endobj +57 0 obj +[56 0 R /XYZ 0 609.39 null] +endobj +58 0 obj +<< /Border [0 0 0] +/Dest (warning_messages_in_case_SSL_connections_are_used) +/Subtype /Link +/Rect [216.0478 414.38 482.3947 428.66] +/Type /Annot +>> +endobj +59 0 obj +<< /Type /Font +/BaseFont /79e08b+mplus1mn-italic +/Subtype /TrueType +/FontDescriptor 371 0 R +/FirstChar 32 +/LastChar 255 +/Widths 373 0 R +/ToUnicode 372 0 R +>> +endobj +60 0 obj +[56 0 R /XYZ 0 286.95 null] +endobj +61 0 obj +<< /Border [0 0 0] +/Dest (_2) +/Subtype /Link +/Rect [66.93 179.06 80.3385 193.34] +/Type /Annot +>> +endobj +62 0 obj +<< /Border [0 0 0] +/Dest (Abstract_Socket_Test_Port_Parameters_in_the_Test_Port_Configuration_File) +/Subtype /Link +/Rect [187.6001 151.28 543.407 165.56] +/Type /Annot +>> +endobj +63 0 obj +<< /Length 18449 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 786.666 Td +/F2.0 18 Tf +[<4162737472> 20.0195 <61637420536f636b> 20.0195 <65742054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652054> 29.7852 <65737420506f7274>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 762.186 Td +/F2.0 18 Tf +[<436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6694 Tw + +BT +48.24 734.166 Td +/F1.0 10.5 Tf +<496e2074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.6694 Tw + +BT +83.6142 734.166 Td +/F3.0 10.5 Tf +<5b54455354504f52545f504152414d45544552535d> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6694 Tw + +BT +193.8642 734.166 Td +/F1.0 10.5 Tf +[<2073656374696f6e2074686520666f6c6c6f77696e6720706172> 20.0195 <616d65746572732063616e2062652073657420666f7220746865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2056 Tw + +BT +48.24 718.386 Td +/F1.0 10.5 Tf +[<6261736564207465737420706f72742e2054686520706172> 20.0195 <616d65746572206e616d65732061726520636173652d73656e7369746976653b2074686520706172> 20.0195 <616d657465722076616c75657320617265206e6f7420636173652d>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 702.606 Td +/F1.0 10.5 Tf +<73656e7369746976652028692e652e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +115.482 702.606 Td +/F5.0 10.5 Tf +<2259455322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +141.732 702.606 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +147.0765 702.606 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +173.3265 702.606 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +178.671 702.606 Td +/F5.0 10.5 Tf +<2259657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +204.921 702.606 Td +/F1.0 10.5 Tf +<2076616c75657320617265206964656e746963616c292e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 668.106 Td +/F2.0 13 Tf +[<4162737472> 20.0195 <61637420536f636b> 20.0195 <65742054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652054> 29.7852 <65737420506f727420436f6e6669677572> 20.0195 <6174696f6e2046696c65206966>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 650.426 Td +/F2.0 13 Tf +[<746865205472> 20.0195 <616e73706f7274204368616e6e656c2069732054> 20.0195 <43502f4950>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 623.866 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 626.05 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5016 Tw + +BT +66.24 599.866 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207768657468657220746865204162737472> 20.0195 <61637420536f636b> 20.0195 <657420697320636f6e74726f6c6c6564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 584.086 Td +/F1.0 10.5 Tf +[<62> 20.0195 <7920636f6e6e656374696f6e20415350732e205468652064656661756c742076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +269.3938 584.086 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +290.3938 584.086 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2202 Tw + +BT +66.24 556.306 Td +/F1.0 10.5 Tf +<4966207468652076616c756520697320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2202 Tw + +BT +137.2924 556.306 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2202 Tw + +BT +163.5424 556.306 Td +/F1.0 10.5 Tf +[<2c207468652066756e6374696f6e616c6974696573206f6620746865204162737472> 20.0195 <61637420536f636b> 20.0195 <6574206861766520746f20626520636f6e74726f6c6c65642062> 20.0195 <792063616c6c696e6720697473>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +20.1717 Tw + +BT +66.24 540.526 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +20.1717 Tw + +BT +181.74 540.526 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +20.1717 Tw + +BT +207.2563 540.526 Td +/F3.0 10.5 Tf +<6f70656e5f6c697374656e5f706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +20.1717 Tw + +BT +291.2563 540.526 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +20.1717 Tw + +BT +316.7725 540.526 Td +/F3.0 10.5 Tf +<72656d6f76655f636c69656e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +20.1717 Tw + +BT +385.0225 540.526 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +20.1717 Tw + +BT +410.5388 540.526 Td +/F3.0 10.5 Tf +<72656d6f76655f616c6c5f636c69656e7473> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +20.1717 Tw + +BT +505.0388 540.526 Td +/F1.0 10.5 Tf +<20616e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.088 Tw + +BT +66.24 524.746 Td +/F3.0 10.5 Tf +<636c6f73655f6c697374656e5f706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.088 Tw + +BT +155.49 524.746 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e732e20546865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742077696c6c206e6f742063726561746520616e> 20.0195 <7920636f6e6e656374696f6e206f72206c697374656e696e6720706f7274>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9914 Tw + +BT +66.24 508.966 Td +/F1.0 10.5 Tf +<7768656e2063616c6c696e672074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9914 Tw + +BT +157.7786 508.966 Td +/F3.0 10.5 Tf +<6d61705f75736572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9914 Tw + +BT +199.7786 508.966 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2e205573696e67207468697320706172> 20.0195 <616d657465722c206d6f7265207468616e206f6e6520636f6e6e656374696f6e2063616e206265>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.9536 Tw + +BT +66.24 493.186 Td +/F1.0 10.5 Tf +[<6f70656e656420696e20636c69656e74206d6f6465206f706572> 20.0195 <6174696f6e2e20546865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742077696c6c2063616c6c2074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.9536 Tw + +BT +449.915 493.186 Td +/F3.0 10.5 Tf +<6c697374656e5f706f72745f6f70656e6564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.9536 Tw + +BT +544.415 493.186 Td +/F1.0 10.5 Tf +<2c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.5865 Tw + +BT +66.24 477.406 Td +/F3.0 10.5 Tf +<636c69656e745f636f6e6e656374696f6e5f6f70656e6564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.5865 Tw + +BT +192.24 477.406 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.5865 Tw + +BT +202.171 477.406 Td +/F3.0 10.5 Tf +<706565725f636f6e6e6563746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.5865 Tw + +BT +275.671 477.406 Td +/F1.0 10.5 Tf +<20616e6420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.5865 Tw + +BT +309.393 477.406 Td +/F3.0 10.5 Tf +<706565725f646973636f6e6e6563746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.5865 Tw + +BT +398.643 477.406 Td +/F1.0 10.5 Tf +<2066756e6374696f6e73206f6620746865207465737420706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3694 Tw + +BT +66.24 461.626 Td +/F1.0 10.5 Tf +[<696d706c656d656e74696e67206974207768656e20636f72726573706f6e64696e67206576656e74732068617070656e2e205468697320616c6c6f7773207465737420706f72747320616e64205454> 20.0195 <434e20636f646520746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 445.846 Td +/F1.0 10.5 Tf +[<6469726563746c792068616e646c652054> 20.0195 <435020636f6e6e656374696f6e20696e6974696174696f6e7320616e64206576656e74732e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 418.066 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 420.25 Td +/F3.0 10.5 Tf +<7365727665725f6d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.373 Tw + +BT +66.24 394.066 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207768657468657220746865207465737420706f7274207368616c6c20616374206173206120736572766572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2308 Tw + +BT +66.24 378.286 Td +/F1.0 10.5 Tf +<6f72206120636c69656e742e204966207468652076616c756520697320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2308 Tw + +BT +193.5718 378.286 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2308 Tw + +BT +219.8218 378.286 Td +/F1.0 10.5 Tf +<2c20746865207465737420706f72742077696c6c206163742061732061207365727665722e204966207468652076616c756520697320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2308 Tw + +BT +459.7122 378.286 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2308 Tw + +BT +480.7122 378.286 Td +/F1.0 10.5 Tf +<2c20746865207465737420706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +5.6539 Tw + +BT +66.24 362.506 Td +/F1.0 10.5 Tf +<77696c6c20616374206173206120636c69656e742e205468652064656661756c742076616c756520697320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +5.6539 Tw + +BT +312.0158 362.506 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +5.6539 Tw + +BT +333.0158 362.506 Td +/F1.0 10.5 Tf +[<202e2054686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e67206966>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.6508 Tw + +BT +66.24 346.726 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.6508 Tw + +BT +165.99 346.726 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.6508 Tw + +BT +219.3597 346.726 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.6508 Tw + +BT +245.6097 346.726 Td +/F1.0 10.5 Tf +<20626563617573652074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.6508 Tw + +BT +317.822 346.726 Td +/F3.0 10.5 Tf +<6f70656e5f6c697374656e5f706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.6508 Tw + +BT +401.822 346.726 Td +/F1.0 10.5 Tf +<20696e6974696174657320746865206c697374656e696e67206f6e2061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 330.946 Td +/F1.0 10.5 Tf +<73657276657220706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 303.166 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 305.35 Td +/F3.0 10.5 Tf +<736f636b65745f646562756767696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6769 Tw + +BT +66.24 279.166 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f20656e61626c65206465627567206c6f6767696e672072656c6174656420746f20746865207472> 20.0195 <616e73706f7274>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 263.386 Td +/F1.0 10.5 Tf +[<6368616e6e656c202854> 20.0195 <435020736f636b> 20.0195 <657420616e642053534c206f706572> 20.0195 <6174696f6e732920696e20746865207465737420706f72742e205468652064656661756c742076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +449.6574 263.386 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +470.6574 263.386 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 235.606 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 237.79 Td +/F3.0 10.5 Tf +<68616c745f6f6e5f636f6e6e656374696f6e5f7265736574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4512 Tw + +BT +66.24 211.606 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207768657468657220746865207465737420706f7274207368616c6c2073746f70206f6e206572726f7273>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.6674 Tw + +BT +66.24 195.826 Td +/F1.0 10.5 Tf +<6f6363757272656420647572696e6720636f6e6e656374696f6e2073657475702028696e636c7564696e6720636f6e6e656374696f6e207265667573696e67292c2073656e64696e6720616e6420726563656976696e672c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9639 Tw + +BT +66.24 180.046 Td +/F1.0 10.5 Tf +<646973636f6e6e656374696f6e2028696e636c7564696e672074686520646574656374696f6e206f662074686520646973636f6e6e656374696f6e292e205468652076616c756520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9639 Tw + +BT +440.0858 180.046 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9639 Tw + +BT +466.3358 180.046 Td +/F1.0 10.5 Tf +<206d65616e73207468652074657374> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2169 Tw + +BT +66.24 164.266 Td +/F1.0 10.5 Tf +<706f72742077696c6c2073746f702c207468652076616c756520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2169 Tw + +BT +187.9905 164.266 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2169 Tw + +BT +208.9905 164.266 Td +/F1.0 10.5 Tf +<206d65616e7320746861742069742077696c6c206e6f742073746f70206f6e2073756368206572726f72732e205468652064656661756c742076616c756520697320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2169 Tw + +BT +526.04 164.266 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2169 Tw + +BT +547.04 164.266 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 148.486 Td +/F1.0 10.5 Tf +<696e20736572766572206d6f646520616e6420> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +166.3155 148.486 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +192.5655 148.486 Td +/F1.0 10.5 Tf +<20696e20636c69656e74206d6f64652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +66.24 120.706 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e6720696620>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +274.7251 120.706 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +374.4751 120.706 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +443.4969 120.706 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +469.7469 120.706 Td +/F1.0 10.5 Tf +<2c206265636175736520746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 104.926 Td +/F3.0 10.5 Tf +<706565725f646973636f6e6e6563746564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +155.49 104.926 Td +/F1.0 10.5 Tf +<2066756e6374696f6e206f6620746865207465737420706f72742069732063616c6c6564206f6e20746865206576656e742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 77.146 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 79.33 Td +/F3.0 10.5 Tf +<6e61676c696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7149 Tw + +BT +66.24 53.146 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207768657468657220636f6e636174656e6174696f6e206f6363757273206f6e2054> 20.0195 <4350>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<36> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +64 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 63 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F5.0 59 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +65 0 obj +[64 0 R /XYZ 0 841.89 null] +endobj +66 0 obj +[64 0 R /XYZ 0 686.79 null] +endobj +67 0 obj +<< /Length 16555 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +66.24 794.676 Td +/F1.0 10.5 Tf +[<6c61> 20.0195 <7965722e2049662076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +148.4968 794.676 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +174.7468 794.676 Td +/F1.0 10.5 Tf +<2c20636f6e636174656e6174696f6e20697320656e61626c65642e2049662076616c756520697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +361.4053 794.676 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +382.4053 794.676 Td +/F1.0 10.5 Tf +<2c2069742069732064697361626c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.5 w +0.9333 0.9333 0.9333 SCN +120.4695 778.86 m +120.4695 739.3 l +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +78.3451 755.006 Td +/F2.0 10.5 Tf +[<4e4f> 20.0195 <5445>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9668 Tw + +BT +132.4695 762.896 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.9668 Tw + +BT +154.8563 762.896 Td +/F3.0 10.5 Tf +<6e61676c696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9668 Tw + +BT +191.6063 762.896 Td +/F1.0 10.5 Tf +<2073657474696e672069732076616c6964206f6e6c7920666f7220746865206f7574676f696e67206d657373616765732e2054686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.9668 Tw + +BT +460.0683 762.896 Td +/F3.0 10.5 Tf +<6e61676c696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9668 Tw + +BT +496.8183 762.896 Td +/F1.0 10.5 Tf +<20666f7220746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +132.4695 747.116 Td +/F1.0 10.5 Tf +[<696e636f6d696e67206d65737361676573207368616c6c206265207365742062> 20.0195 <79207468652073656e64696e67207061727479> 89.8438 <2e205468652064656661756c742076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +497.4299 747.116 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +518.4299 747.116 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 715.336 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 717.52 Td +/F3.0 10.5 Tf +<72656d6f74655f61646472657373> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2065 Tw + +BT +66.24 691.336 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465722063616e206265207573656420746f20737065636966792074686520736572766572> -29.7852 ] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 675.556 Td +/F1.0 10.5 Tf +<7573656420696e20736572766572206d6f64652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +66.24 647.776 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e6720696620>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +274.7251 647.776 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +374.4751 647.776 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +443.4969 647.776 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +469.7469 647.776 Td +/F1.0 10.5 Tf +<2c206265636175736520746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 631.996 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +181.74 631.996 Td +/F1.0 10.5 Tf +<2066756e6374696f6e207265636569766573207468652072656d6f746520616e64206f7074696f6e616c6c7920746865206c6f63616c20616464726573732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 604.216 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 606.4 Td +/F3.0 10.5 Tf +<72656d6f74655f706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4814 Tw + +BT +66.24 580.216 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465722063616e206265207573656420746f20737065636966792074686520736572766572> -29.7852 ] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 564.436 Td +/F1.0 10.5 Tf +<6e6f74207573656420696e20736572766572206d6f64652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +66.24 536.656 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e6720696620>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +274.7251 536.656 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +374.4751 536.656 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +443.4969 536.656 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +469.7469 536.656 Td +/F1.0 10.5 Tf +<2c206265636175736520746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 520.876 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +181.74 520.876 Td +/F1.0 10.5 Tf +<2066756e6374696f6e207265636569766573207468652072656d6f746520616e64206f7074696f6e616c6c7920746865206c6f63616c20616464726573732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 493.096 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 495.28 Td +/F3.0 10.5 Tf +<6c6f63616c5f706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6334 Tw + +BT +66.24 469.096 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465722063616e206265207573656420746f20737065636966792074686520706f72742077686572652074686520736572766572206973206c697374656e696e6720666f7220636f6e6e656374696f6e732e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 453.316 Td +/F1.0 10.5 Tf +<4d616e6461746f727920696e20736572766572206d6f646520616e64206f7074696f6e616c20696e20636c69656e74206d6f64652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 425.536 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465722073657276657320617320612064656661756c7420696620>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +247.6693 425.536 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +347.4193 425.536 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +390.1858 425.536 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +416.4358 425.536 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 397.756 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 399.94 Td +/F3.0 10.5 Tf +<61695f66616d696c79> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.316 Tw + +BT +66.24 373.756 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465722063616e206265207573656420746f20737065636966792074686520616464726573732066616d696c7920746f20757365207768656e206f70656e696e67206c697374656e696e6720706f727473206f72>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0646 Tw + +BT +66.24 357.976 Td +/F1.0 10.5 Tf +<6372656174696e6720636c69656e7420636f6e6e656374696f6e732e204966206974732076616c75652069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.0646 Tw + +BT +301.9481 357.976 Td +/F5.0 10.5 Tf +<224950763422> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0646 Tw + +BT +333.4481 357.976 Td +/F1.0 10.5 Tf +<206f7220> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.0646 Tw + +BT +350.0204 357.976 Td +/F5.0 10.5 Tf +<2241465f494e455422> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0646 Tw + +BT +397.2704 357.976 Td +/F1.0 10.5 Tf +<206f6e6c792049507634206164647265737365732061726520757365642e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.631 Tw + +BT +66.24 342.196 Td +/F1.0 10.5 Tf +<49662069742069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.631 Tw + +BT +129.6543 342.196 Td +/F5.0 10.5 Tf +<224950763622> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.631 Tw + +BT +161.1543 342.196 Td +/F1.0 10.5 Tf +<206f7220> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.631 Tw + +BT +178.8593 342.196 Td +/F5.0 10.5 Tf +<2241465f494e45543622> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.631 Tw + +BT +231.3593 342.196 Td +/F1.0 10.5 Tf +<206f6e6c79204950763620636f6e6e656374696f6e732061726520616c6c6f7765642e205468652076616c75657320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.631 Tw + +BT +472.0795 342.196 Td +/F5.0 10.5 Tf +<6022554e535045432260> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.631 Tw + +BT +524.5795 342.196 Td +/F1.0 10.5 Tf +<20616e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.0174 Tw + +BT +66.24 326.416 Td +/F3.0 10.5 Tf +<2241465f554e5350454322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0174 Tw + +BT +123.99 326.416 Td +/F1.0 10.5 Tf +<2063616e20626520757365642069662074686520616464726573732066616d696c79206973206e6f74207370656369666965642e2054686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.0174 Tw + +BT +406.9102 326.416 Td +/F5.0 10.5 Tf +<22554e5350454322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0174 Tw + +BT +448.9102 326.416 Td +/F1.0 10.5 Tf +<2076616c756520616c6c6f7773207573696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0689 Tw + +BT +66.24 310.636 Td +/F1.0 10.5 Tf +<4950763420616e64204950763620616464726573736573206174207468652073616d652074696d652e205468652073656c656374696f6e206973206d616465206175746f6d61746963616c6c7920646570656e64696e67206f6e20746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 294.856 Td +/F1.0 10.5 Tf +<61637475616c2076616c7565206f6620746865206c6f63616c20616e642072656d6f7465206164647265737365732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 267.076 Td +/F1.0 10.5 Tf +[<5468697320706172> 20.0195 <616d65746572206973206f7074696f6e616c2e205468652064656661756c742076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +303.8968 267.076 Td +/F5.0 10.5 Tf +<2241465f554e5350454322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +361.6468 267.076 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 239.296 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 241.48 Td +/F3.0 10.5 Tf +<7365727665725f6261636b6c6f67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.2175 Tw + +BT +66.24 215.296 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465722063616e206265207573656420746f207370656369667920746865206e756d626572206f6620616c6c6f7765642070656e64696e6720287175657565642920636f6e6e656374696f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1006 Tw + +BT +66.24 199.516 Td +/F1.0 10.5 Tf +<7265717565737473206f6e2074686520706f72742074686520736572766572206c697374656e732e204974206973206f7074696f6e616c20696e20736572766572206d6f646520616e64206e6f74207573656420696e20636c69656e74206d6f64652e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 183.736 Td +/F1.0 10.5 Tf +<5468652064656661756c742076616c756520697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +166.851 183.736 Td +/F5.0 10.5 Tf +<223122> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +182.601 183.736 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 155.956 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 158.14 Td +/F3.0 10.5 Tf +<5443505f7265636f6e6e6563745f617474656d707473> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2749 Tw + +BT +66.24 131.956 Td +/F1.0 10.5 Tf +[<5468697320706172> 20.0195 <616d657465722063616e206265207573656420746f207370656369667920746865206d6178696d756d206e756d626572206f662074696d65732074686520636f6e6e656374696f6e206973>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 116.176 Td +/F1.0 10.5 Tf +[<617474656d7074656420746f2062652065737461626c697368656420696e2054> 20.0195 <4350207265636f6e6e656374206d6f64652e205468652064656661756c742076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +427.4398 116.176 Td +/F5.0 10.5 Tf +<223522> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +443.1898 116.176 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +66.24 88.396 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e6720696620>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +274.7251 88.396 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +374.4751 88.396 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +443.4969 88.396 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +469.7469 88.396 Td +/F1.0 10.5 Tf +<2c206265636175736520746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1027 Tw + +BT +66.24 72.616 Td +/F3.0 10.5 Tf +<706565725f646973636f6e6e6563746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1027 Tw + +BT +155.49 72.616 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2069732063616c6c6564207768656e20746865206576656e742068617070656e732c20616e64206974d57320757020746f20746865207465737420706f7274206f72205454> 20.0195 <434e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 56.836 Td +/F1.0 10.5 Tf +<636f646520686f7720746f20636f6e74696e75652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.388 Td +/F1.0 9 Tf +<37> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +68 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 67 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F5.0 59 0 R +/F2.0 19 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +69 0 obj +<< /Length 13835 +>> +stream +q + +-0.5 Tc +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +56.8805 793.926 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 796.11 Td +/F3.0 10.5 Tf +<5443505f7265636f6e6e6563745f64656c6179> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8156 Tw + +BT +66.24 769.926 Td +/F1.0 10.5 Tf +[<5468697320706172> 20.0195 <616d657465722063616e206265207573656420746f2073706563696679207468652074696d652028696e207365636f6e64732920746865207465737420706f7274207761697473206265747765656e20746f2054> 20.0195 <4350>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 754.146 Td +/F1.0 10.5 Tf +<7265636f6e6e656374696f6e20617474656d70742e205468652064656661756c742076616c756520697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +279.8625 754.146 Td +/F5.0 10.5 Tf +<223122> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +295.6125 754.146 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +66.24 726.366 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e6720696620>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +274.7251 726.366 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +374.4751 726.366 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +443.4969 726.366 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +469.7469 726.366 Td +/F1.0 10.5 Tf +<2c206265636175736520746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1027 Tw + +BT +66.24 710.586 Td +/F3.0 10.5 Tf +<706565725f646973636f6e6e6563746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1027 Tw + +BT +155.49 710.586 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2069732063616c6c6564207768656e20746865206576656e742068617070656e732c20616e64206974d57320757020746f20746865207465737420706f7274206f72205454> 20.0195 <434e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 694.806 Td +/F1.0 10.5 Tf +<636f646520686f7720746f20636f6e74696e75652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 667.026 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 669.21 Td +/F3.0 10.5 Tf +<636c69656e745f5443505f7265636f6e6e656374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3739 Tw + +BT +66.24 643.026 Td +/F1.0 10.5 Tf +[<496620746865207465737420706f727420697320696e20636c69656e74206d6f646520616e642074686520636f6e6e656374696f6e2077617320696e7465727275707465642062> 20.0195 <7920746865206f7468657220736964652c20697420747269657320746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 627.246 Td +/F1.0 10.5 Tf +<7265636f6e6e65637420616761696e2e205468652064656661756c742076616c75652069732060606e6f27272e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +66.24 599.466 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d6574657220686173206e6f206d65616e696e6720696620>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +274.7251 599.466 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +374.4751 599.466 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +6.5638 Tw + +BT +443.4969 599.466 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.5638 Tw + +BT +469.7469 599.466 Td +/F1.0 10.5 Tf +<2c206265636175736520746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1027 Tw + +BT +66.24 583.686 Td +/F3.0 10.5 Tf +<706565725f646973636f6e6e6563746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1027 Tw + +BT +155.49 583.686 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2069732063616c6c6564207768656e20746865206576656e742068617070656e732c20616e64206974d57320757020746f20746865207465737420706f7274206f72205454> 20.0195 <434e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 567.906 Td +/F1.0 10.5 Tf +<636f646520686f7720746f20636f6e74696e75652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 540.126 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 542.31 Td +/F3.0 10.5 Tf +<7573655f6e6f6e5f626c6f636b696e675f736f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5441 Tw + +BT +66.24 516.126 Td +/F1.0 10.5 Tf +[<5468697320706172> 20.0195 <616d657465722063616e206265207573656420746f20737065636966792077686574686572207468652054> 29.7852 <65737420506f7274207368616c6c2075736520626c6f636b696e67206f72206e6f6e2d626c6f636b696e67>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3068 Tw + +BT +66.24 500.346 Td +/F1.0 10.5 Tf +[<54> 20.0195 <435020736f636b> 20.0195 <65742e205573696e67207468697320706172> 20.0195 <616d657465722c2074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.3068 Tw + +BT +255.033 500.346 Td +/F3.0 10.5 Tf +<73656e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3068 Tw + +BT +276.033 500.346 Td +/F1.0 10.5 Tf +[<205454> 20.0195 <434e2d33206f706572> 20.0195 <6174696f6e2077696c6c20626c6f636b20756e74696c2074686520646174612069732073656e742c20627574>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 484.566 Td +/F1.0 10.5 Tf +[<616e20616c676f726974686d20697320696d706c656d656e74656420746f2061766f69642054> 20.0195 <435020646561646c6f636b2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 456.786 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c207468652064656661756c742076616c756520697320>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +298.6993 456.786 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +319.6993 456.786 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 416.286 Td +/F2.0 13 Tf +[<41> 20.0195 <64646974696f6e616c204162737472> 20.0195 <61637420536f636b> 20.0195 <65742054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652054> 29.7852 <65737420506f7274>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 398.606 Td +/F2.0 13 Tf +[<436f6e6669677572> 20.0195 <6174696f6e2046696c6520696620746865205472> 20.0195 <616e73706f7274204368616e6e656c2069732053534c>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 372.046 Td +/F1.0 10.5 Tf +[<546865736520706172> 20.0195 <616d657465727320617661696c61626c65206f6e6c7920696620>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +223.3168 372.046 Td +/F3.0 10.5 Tf +<41535f5553455f53534c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +275.8168 372.046 Td +/F1.0 10.5 Tf +<206d6163726f20697320646566696e656420647572696e6720636f6d70696c6174696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 344.266 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 346.45 Td +/F3.0 10.5 Tf +<73736c5f7573655f73736c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5944 Tw + +BT +66.24 320.266 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207768657468657220746f207573652053534c206f6e2074686520746f70206f66207468652054> 20.0195 <4350>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 304.486 Td +/F1.0 10.5 Tf +<636f6e6e656374696f6e206f72206e6f742e205468652064656661756c742076616c756520697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +260.595 304.486 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +281.595 304.486 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 276.706 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 278.89 Td +/F3.0 10.5 Tf +<73736c5f7665726966795f6365727469666963617465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.642 Tw + +BT +66.24 252.706 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2074656c6c20746865207465737420706f7274207768657468657220746f20636865636b20746865206365727469666963617465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.042 Tw + +BT +66.24 236.926 Td +/F1.0 10.5 Tf +<6f6620746865206f7468657220736964652e20496620697420697320646566696e656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.042 Tw + +BT +232.9368 236.926 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.042 Tw + +BT +259.1868 236.926 Td +/F1.0 10.5 Tf +<2c20746865207465737420706f72742077696c6c20717565727920616e6420636865636b207468652063657274696669636174652e20496620746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2606 Tw + +BT +66.24 221.146 Td +/F1.0 10.5 Tf +[<6365727469666963617465206973206e6f742076616c69642028692e652eca746865207075626c696320616e642070726976617465206b> 20.0195 <65797320646f206e6f74206d61746368292c2069742077696c6c206578697420776974682061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.403 Tw + +BT +66.24 205.366 Td +/F1.0 10.5 Tf +<636f72726573706f6e64696e67206572726f72206d6573736167652e20496620697420697320646566696e656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.403 Tw + +BT +293.3095 205.366 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.403 Tw + +BT +314.3095 205.366 Td +/F1.0 10.5 Tf +<2c20746865207465737420706f72742077696c6c206e6f7420636865636b207468652076616c6964697479206f6620746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 189.586 Td +/F1.0 10.5 Tf +<63657274696669636174652e205468652064656661756c742076616c756520697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +222.5745 189.586 Td +/F5.0 10.5 Tf +<226e6f22> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +243.5745 189.586 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 161.806 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 163.99 Td +/F3.0 10.5 Tf +<73736c5f7573655f73657373696f6e5f726573756d7074696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.6276 Tw + +BT +66.24 137.806 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207768657468657220746f207573652f737570706f72742053534c2073657373696f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 122.026 Td +/F1.0 10.5 Tf +<726573756d7074696f6e73206f72206e6f742e205468652064656661756c742076616c756520697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +268.0815 122.026 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +294.3315 122.026 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 94.246 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 96.43 Td +/F3.0 10.5 Tf +<73736c5f63657274696669636174655f636861696e5f66696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.2569 Tw + +BT +66.24 70.246 Td +/F1.0 10.5 Tf +<49742073706563696669657320612050454d20656e636f6465642066696c65d5732070617468206f6e207468652066696c652073797374656d20636f6e7461696e696e672074686520636572746966696361746520636861696e2e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4658 Tw + +BT +66.24 54.466 Td +/F1.0 10.5 Tf +[<4d616e6461746f727920696e20736572766572206d6f646520616e64206f7074696f6e616c20696e20636c69656e74206d6f64652e204e6f746520746861742074686520736572766572206d61> 20.0195 <79207265717569726520636c69656e74>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<38> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +70 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 69 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +/F5.0 59 0 R +/F2.0 19 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +71 0 obj +[70 0 R /XYZ 0 434.97 null] +endobj +72 0 obj +<< /Length 9906 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +66.24 794.676 Td +/F1.0 10.5 Tf +<61757468656e7469636174696f6e2e20496e20746869732063617365206e6f20636f6e6e656374696f6e2063616e2062652065737461626c697368656420776974686f7574206120636c69656e742063657274696669636174652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 766.896 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 769.08 Td +/F3.0 10.5 Tf +<73736c5f707269766174655f6b65795f66696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4033 Tw + +BT +66.24 742.896 Td +/F1.0 10.5 Tf +[<49742073706563696669657320612050454d20656e636f6465642066696c65d5732070617468206f6e207468652066696c652073797374656d20636f6e7461696e696e672074686520736572766572> -29.7852 20.0195 <412070726976617465206b> 20.0195 <6579> 89.8438 <2e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 727.116 Td +/F1.0 10.5 Tf +<4d616e6461746f727920696e20736572766572206d6f646520616e64206f7074696f6e616c20696e20636c69656e74206d6f64652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 699.336 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 701.52 Td +/F3.0 10.5 Tf +<73736c5f707269766174655f6b65795f70617373776f7264> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9265 Tw + +BT +66.24 675.336 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f2073706563696679207468652070617373776f72642070726f74656374696e67207468652070726976617465206b> 20.0195 <6579>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 659.556 Td +/F1.0 10.5 Tf +<66696c652e204966206e6f7420646566696e65642c207468652053534c20746f6f6c6b69742077696c6c2061736b20666f722069742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 631.776 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 633.96 Td +/F3.0 10.5 Tf +<73736c5f7472757374656443416c6973745f66696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2628 Tw + +BT +66.24 607.776 Td +/F1.0 10.5 Tf +<49742073706563696669657320612050454d20656e636f6465642066696c65d5732070617468206f6e207468652066696c652073797374656d20636f6e7461696e696e672074686520636572746966696361746573206f66207468652074727573746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +5.4992 Tw + +BT +66.24 591.996 Td +/F1.0 10.5 Tf +<434120617574686f72697469657320746f207573652e204d616e6461746f727920696e20736572766572206d6f64652c20616e64206d616e6461746f727920696e20636c69656e74206d6f6465206966> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 576.216 Td +/F3.0 10.5 Tf +<73736c5f7665726966795f63657274696669636174653d2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +213.24 576.216 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 548.436 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 550.62 Td +/F3.0 10.5 Tf +<73736c5f616c6c6f7765645f636970686572735f6c697374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.0022 Tw + +BT +66.24 524.436 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d65746572206973206f7074696f6e616c2c20616e642063616e206265207573656420746f20737065636966792074686520616c6c6f77656420636970686572206c6973742e205468652076616c756520697320706173736564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 508.656 Td +/F1.0 10.5 Tf +<6469726563746c7920746f207468652053534c20746f6f6c6b69742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 480.876 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 480.876 Td +/F3.0 10.5 Tf +<73736c5f64697361626c655f53534c7632> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 465.096 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 465.096 Td +/F3.0 10.5 Tf +<73736c5f64697361626c655f53534c7633> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 449.316 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 449.316 Td +/F3.0 10.5 Tf +<73736c5f64697361626c655f544c537631> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 433.536 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 433.536 Td +/F3.0 10.5 Tf +<73736c5f64697361626c655f544c5376315f31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 417.756 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 417.756 Td +/F3.0 10.5 Tf +<73736c5f64697361626c655f544c5376315f32> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1716 Tw + +BT +66.24 389.976 Td +/F1.0 10.5 Tf +[<546865207573616765206f6620612073706563696669632053534c2f544c532076657273696f6e2063616e2062652064697361626c65642062> 20.0195 <792073657474696e672074686520706172> 20.0195 <616d6574657220746f20>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1716 Tw + +BT +483.8054 389.976 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1716 Tw + +BT +510.0554 389.976 Td +/F1.0 10.5 Tf +<2e20506c65617365> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 374.196 Td +/F1.0 10.5 Tf +[<6e6f746520746861742074686520617661696c61626c652053534c2f544c532076657273696f6e732061726520646570656e6473206f66207468652075736564204f70656e53534c206c696272> 20.0195 <617279> 89.8438 <2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 324.084 Td +/F2.0 22 Tf +<54686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +95.474 324.084 Td +/F3.0 22 Tf +<4162737472616374536f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +249.474 324.084 Td +/F2.0 22 Tf +<20415049> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 294.896 Td +/F1.0 10.5 Tf +<496e207468652064657269766564207465737420706f72742074686520666f6c6c6f77696e672066756e6374696f6e732063616e20626520757365643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 255.056 Td +/F2.0 18 Tf +[<4d61702f556e6d6170207468652054> 29.7852 <65737420506f7274>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 227.036 Td +/F1.0 10.5 Tf +<496e2074686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +80.2755 227.036 Td +/F3.0 10.5 Tf +<757365725f6d6170> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +122.2755 227.036 Td +/F1.0 10.5 Tf +<20616e6420> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +146.8245 227.036 Td +/F3.0 10.5 Tf +<757365725f756e6d6170> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +199.3245 227.036 Td +/F1.0 10.5 Tf +<2066756e6374696f6e73206f66207468652064657269766564207465737420706f72742074686573652066756e6374696f6e732073686f756c642062652063616c6c65643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 211.22 m +543.04 211.22 l +545.2491 211.22 547.04 209.4291 547.04 207.22 c +547.04 149.0 l +547.04 146.7909 545.2491 145.0 543.04 145.0 c +52.24 145.0 l +50.0309 145.0 48.24 146.7909 48.24 149.0 c +48.24 207.22 l +48.24 209.4291 50.0309 211.22 52.24 211.22 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 211.22 m +543.04 211.22 l +545.2491 211.22 547.04 209.4291 547.04 207.22 c +547.04 149.0 l +547.04 146.7909 545.2491 145.0 543.04 145.0 c +52.24 145.0 l +50.0309 145.0 48.24 146.7909 48.24 149.0 c +48.24 207.22 l +48.24 209.4291 50.0309 211.22 52.24 211.22 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 188.395 Td +/F3.0 11 Tf +<766f6964206d61705f7573657228293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 158.915 Td +/F3.0 11 Tf +<766f696420756e6d61705f7573657228293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 108.976 Td +/F2.0 18 Tf +[<53657474696e672054> 29.7852 <65737420506f727420506172> 20.0195 <616d6574657273>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 92.92 m +543.04 92.92 l +545.2491 92.92 547.04 91.1291 547.04 88.92 c +547.04 60.18 l +547.04 57.9709 545.2491 56.18 543.04 56.18 c +52.24 56.18 l +50.0309 56.18 48.24 57.9709 48.24 60.18 c +48.24 88.92 l +48.24 91.1291 50.0309 92.92 52.24 92.92 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 92.92 m +543.04 92.92 l +545.2491 92.92 547.04 91.1291 547.04 88.92 c +547.04 60.18 l +547.04 57.9709 545.2491 56.18 543.04 56.18 c +52.24 56.18 l +50.0309 56.18 48.24 57.9709 48.24 60.18 c +48.24 88.92 l +48.24 91.1291 50.0309 92.92 52.24 92.92 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 70.095 Td +/F3.0 11 Tf +<626f6f6c20706172616d657465725f73657428636f6e73742063686172205f5f706172616d657465725f6e616d652c20636f6e73742063686172205f5f706172616d657465725f76616c7565293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.388 Td +/F1.0 9 Tf +<39> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +73 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 72 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +/F5.0 59 0 R +/F2.0 19 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +74 0 obj +[73 0 R /XYZ 0 352.38 null] +endobj +75 0 obj +[73 0 R /XYZ 0 279.08 null] +endobj +76 0 obj +[73 0 R /XYZ 0 133.0 null] +endobj +77 0 obj +<< /Length 14771 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +3.5652 Tw + +BT +48.24 793.926 Td +/F1.0 10.5 Tf +<43616c6c20746869732066756e6374696f6e20696e2074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +3.5652 Tw + +BT +185.3883 793.926 Td +/F3.0 10.5 Tf +<7365745f706172616d65746572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.5652 Tw + +BT +253.6383 793.926 Td +/F1.0 10.5 Tf +<2066756e6374696f6e206f66207468652064657269766564207465737420706f727420746f2073657420746865207465737420706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 778.146 Td +/F1.0 10.5 Tf +[<706172> 20.0195 <616d6574657273206f66204162737472> 20.0195 <616374536f636b> 20.0195 <65742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 738.306 Td +/F2.0 18 Tf +<4f70656e2061204c697374656e696e6720506f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 710.286 Td +/F1.0 10.5 Tf +[<54> 29.7852 <6f206f70656e20612073657276657220736f636b> 20.0195 <65742063616c6c2074686520666f6c6c6f77696e672066756e6374696f6e3a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 694.47 m +543.04 694.47 l +545.2491 694.47 547.04 692.6791 547.04 690.47 c +547.04 661.73 l +547.04 659.5209 545.2491 657.73 543.04 657.73 c +52.24 657.73 l +50.0309 657.73 48.24 659.5209 48.24 661.73 c +48.24 690.47 l +48.24 692.6791 50.0309 694.47 52.24 694.47 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 694.47 m +543.04 694.47 l +545.2491 694.47 547.04 692.6791 547.04 690.47 c +547.04 661.73 l +547.04 659.5209 545.2491 657.73 543.04 657.73 c +52.24 657.73 l +50.0309 657.73 48.24 659.5209 48.24 661.73 c +48.24 690.47 l +48.24 692.6791 50.0309 694.47 52.24 694.47 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 671.645 Td +/F3.0 11 Tf +<696e74206f70656e5f6c697374656e5f706f727428636f6e737420636861722a206c6f63616c486f73746e616d652c20636f6e737420636861722a206c6f63616c53657276696365293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0253 Tw + +BT +48.24 633.766 Td +/F1.0 10.5 Tf +[<546869732066756e6374696f6e20737570706f72747320626f7468204950763420616e642049507636206164647265737365732e2054686520706172> 20.0195 <616d6574657220>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.0253 Tw + +BT +402.3994 633.766 Td +/F3.0 10.5 Tf +<6c6f63616c486f73746e616d65> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0253 Tw + +BT +470.6494 633.766 Td +/F1.0 10.5 Tf +<2073686f756c642073706563696679> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3266 Tw + +BT +48.24 617.986 Td +/F1.0 10.5 Tf +[<746865206c6f63616c20686f73746e616d652e2049742063616e20626520746865206e616d65206f662074686520686f7374206f7220616e20495020616464726573732e2054686520706172> 20.0195 <616d6574657220>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.3266 Tw + +BT +484.04 617.986 Td +/F3.0 10.5 Tf +<6c6f63616c53657276696365> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3266 Tw + +BT +547.04 617.986 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1462 Tw + +BT +48.24 602.206 Td +/F1.0 10.5 Tf +[<73686f756c64206265206120737472696e6720636f6e7461696e696e672074686520706f7274206e756d6265722e204f6e65206f66207468652074776f20706172> 20.0195 <616d65746572732063616e20626520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1462 Tw + +BT +457.9595 602.206 Td +/F5.0 10.5 Tf +<4e554c4c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1462 Tw + +BT +478.9595 602.206 Td +/F1.0 10.5 Tf +<2c206d65616e696e6720> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1462 Tw + +BT +531.29 602.206 Td +/F5.0 10.5 Tf +<414e59> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0393 Tw + +BT +48.24 586.426 Td +/F1.0 10.5 Tf +[<666f72207468617420706172> 20.0195 <616d657465722e2054686520616464726573732066616d696c79207573656420697320737065636966696564206569746865722062> 20.0195 <792074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.0393 Tw + +BT +419.3997 586.426 Td +/F3.0 10.5 Tf +<61695f66616d696c795f6e616d652829> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0393 Tw + +BT +503.3997 586.426 Td +/F1.0 10.5 Tf +<2074657374706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 570.646 Td +/F1.0 10.5 Tf +[<706172> 20.0195 <616d65746572206f72207365742062> 20.0195 <79207468652066756e6374696f6e20>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +212.8376 570.646 Td +/F3.0 10.5 Tf +<7365745f61695f66616d696c7928696e7429> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +307.3376 570.646 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 542.866 Td +/F1.0 10.5 Tf +<54686520666f6c6c6f77696e672066756e6374696f6e206f6e6c7920737570706f72747320495076343a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 517.27 Td +/F3.0 10.5 Tf +<696e74206f70656e5f6c697374656e5f706f727428636f6e73742073747275637420736f636b616464725f696e2026206c6f63616c41646472293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.5 w +0.9333 0.9333 0.9333 SCN +102.4695 503.05 m +102.4695 463.49 l +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.3451 479.196 Td +/F2.0 10.5 Tf +[<4e4f> 20.0195 <5445>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6899 Tw + +BT +114.4695 487.086 Td +/F1.0 10.5 Tf +[<546869732066756e6374696f6e20697320646570726563617465642e204974206973206b> 20.0195 <65707420666f7220636f6d7061746962696c69747920776974682070726576696f75732076657273696f6e73206f66>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +114.4695 471.306 Td +/F1.0 10.5 Tf +<7465737420706f72747320746861742075736520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +205.9245 471.306 Td +/F3.0 10.5 Tf +<4162737472616374536f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.5416 Tw + +BT +48.24 439.526 Td +/F1.0 10.5 Tf +<41667465722063616c6c696e672074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.5416 Tw + +BT +144.8777 439.526 Td +/F3.0 10.5 Tf +<6f70656e5f6c697374656e5f706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.5416 Tw + +BT +228.8777 439.526 Td +/F1.0 10.5 Tf +<2066756e6374696f6e2c207468652066756e6374696f6e207669727475616c20766f696420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.5416 Tw + +BT +431.54 439.526 Td +/F3.0 10.5 Tf +<6c697374656e5f706f72745f6f70656e656428696e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.09 Tw + +BT +48.24 423.746 Td +/F3.0 10.5 Tf +<706f72745f6e756d62657229> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.09 Tw + +BT +111.24 423.746 Td +/F1.0 10.5 Tf +<2069732063616c6c6564206175746f6d61746963616c6c79207769746820746865206c697374656e696e6720706f7274206e756d6265722c206f7220> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.09 Tw + +BT +422.7383 423.746 Td +/F5.0 10.5 Tf +<2d31> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.09 Tw + +BT +433.2383 423.746 Td +/F1.0 10.5 Tf +<20696620746865206f70656e696e67206f6620746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4982 Tw + +BT +48.24 407.966 Td +/F1.0 10.5 Tf +<6c697374656e696e6720706f7274206661696c65642e20546869732066756e6374696f6e2063616e206265206f76657272696464656e20696e207468652064657269766564207465737420706f727420746f20696d706c656d656e74207370656369666963> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4061 Tw + +BT +48.24 392.186 Td +/F1.0 10.5 Tf +<6265686176696f7220646570656e64696e67206f6e20746865206c697374656e20726573756c742e20546869732063616e2c20666f72206578616d706c652cca63616c6c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.4061 Tw + +BT +387.6289 392.186 Td +/F3.0 10.5 Tf +<696e636f6d696e675f6d657373616765> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4061 Tw + +BT +471.6289 392.186 Td +/F1.0 10.5 Tf +[<20746f2067656e6572> 20.0195 <61746520616e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 376.406 Td +/F1.0 10.5 Tf +<696e636f6d696e6720> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +97.989 376.406 Td +/F3.0 10.5 Tf +<4c697374656e526573756c74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +160.989 376.406 Td +/F1.0 10.5 Tf +<206d65737361676520696e20746865207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6548 Tw + +BT +48.24 348.626 Td +/F1.0 10.5 Tf +<53756273657175656e742063616c6c73206f66207468652066756e6374696f6e20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.6548 Tw + +BT +214.0017 348.626 Td +/F3.0 10.5 Tf +<6f70656e5f6c697374656e5f706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6548 Tw + +BT +298.0017 348.626 Td +/F1.0 10.5 Tf +<20726573756c747320696e20636c6f73696e67207468652070726576696f7573206c697374656e696e6720706f727420616e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 332.846 Td +/F1.0 10.5 Tf +[<6f70656e696e672061206e6577206f6e652e2054686973206d65616e732074686174206f6e6c79206f6e652073657276657220706f727420697320737570706f727465642062> 20.0195 <7920>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +414.2173 332.846 Td +/F3.0 10.5 Tf +<4162737472616374536f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +487.7173 332.846 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4448 Tw + +BT +48.24 305.066 Td +/F1.0 10.5 Tf +<5768656e206120636c69656e7420636f6e6e6563747320746f20746865206c697374656e696e6720706f72742074686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420746f206e6f74696679207468652064657269766564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 289.286 Td +/F1.0 10.5 Tf +<7465737420706f72742061626f757420746865206e657720636c69656e7420636f6e6e656374696f6e3a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 273.47 m +543.04 273.47 l +545.2491 273.47 547.04 271.6791 547.04 269.47 c +547.04 225.99 l +547.04 223.7809 545.2491 221.99 543.04 221.99 c +52.24 221.99 l +50.0309 221.99 48.24 223.7809 48.24 225.99 c +48.24 269.47 l +48.24 271.6791 50.0309 273.47 52.24 273.47 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 273.47 m +543.04 273.47 l +545.2491 273.47 547.04 271.6791 547.04 269.47 c +547.04 225.99 l +547.04 223.7809 545.2491 221.99 543.04 221.99 c +52.24 221.99 l +50.0309 221.99 48.24 223.7809 48.24 225.99 c +48.24 269.47 l +48.24 271.6791 50.0309 273.47 52.24 273.47 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 250.645 Td +/F3.0 11 Tf +<7669727475616c20766f696420706565725f636f6e6e656374656428696e7420636c69656e745f69642c20636f6e73742063686172202a20686f73742c20636f6e737420696e7420706f727429> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 235.905 Td +/F3.0 11 Tf +<7669727475616c20766f696420706565725f636f6e6e656374656428696e7420636c69656e745f69642c20736f636b616464725f696e262072656d6f74655f61646472293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8263 Tw + +BT +48.24 198.026 Td +/F1.0 10.5 Tf +<4f6e6c79206f6e65206f662074686573652066756e6374696f6e732073686f756c64206265206f76657272696464656e20696e207468652064657269766564207465737420706f72742e204e6f74652c207468617420746865207365636f6e64206973> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 182.246 Td +/F1.0 10.5 Tf +[<6f62736f6c6574652e204974206973206b> 20.0195 <65707420666f72206261636b7761726420636f6d7061746962696c697479206f6e6c79> 89.8438 <2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 154.466 Td +/F1.0 10.5 Tf +<53696d696c61722066756e6374696f6e7320666f7220636c69656e7420646973636f6e6e656374733a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 138.65 m +543.04 138.65 l +545.2491 138.65 547.04 136.8591 547.04 134.65 c +547.04 91.17 l +547.04 88.9609 545.2491 87.17 543.04 87.17 c +52.24 87.17 l +50.0309 87.17 48.24 88.9609 48.24 91.17 c +48.24 134.65 l +48.24 136.8591 50.0309 138.65 52.24 138.65 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 138.65 m +543.04 138.65 l +545.2491 138.65 547.04 136.8591 547.04 134.65 c +547.04 91.17 l +547.04 88.9609 545.2491 87.17 543.04 87.17 c +52.24 87.17 l +50.0309 87.17 48.24 88.9609 48.24 91.17 c +48.24 134.65 l +48.24 136.8591 50.0309 138.65 52.24 138.65 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 115.825 Td +/F3.0 11 Tf +<7669727475616c20766f696420706565725f646973636f6e6e656374656428696e7420636c69656e745f6964293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 101.085 Td +/F3.0 11 Tf +<7669727475616c20766f696420706565725f68616c665f636c6f73656428696e7420636c69656e745f6964293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.886 Tw + +BT +48.24 63.206 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.886 Tw + +BT +70.546 63.206 Td +/F3.0 10.5 Tf +<636c69656e745f6964> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.886 Tw + +BT +117.796 63.206 Td +/F1.0 10.5 Tf +[<20706172> 20.0195 <616d657465722073706563696669657320776869636820636c69656e742068617320646973636f6e6e65637465642f68616c6620636c6f7365642e2054686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.886 Tw + +BT +463.04 63.206 Td +/F3.0 10.5 Tf +<706565725f68616c665f636c6f736564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.886 Tw + +BT +547.04 63.206 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3130> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +78 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 77 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +/F2.0 19 0 R +/F5.0 59 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +79 0 obj +[78 0 R /XYZ 0 762.33 null] +endobj +80 0 obj +<< /Length 11453 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +1.6303 Tw + +BT +48.24 794.676 Td +/F1.0 10.5 Tf +[<66756e6374696f6e2069732063616c6c6564207768656e2074686520636c69656e7420636c6f7365732074686520736f636b> 20.0195 <657420666f722077726974696e672c207768696c6520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.6303 Tw + +BT +411.3743 794.676 Td +/F3.0 10.5 Tf +<706565725f646973636f6e6e6563746564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6303 Tw + +BT +500.6243 794.676 Td +/F1.0 10.5 Tf +<2069732063616c6c6564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 778.896 Td +/F1.0 10.5 Tf +<7768656e2074686520636c69656e7420697320646973636f6e6e65637465642e20426f74682066756e6374696f6e732063616e206265206f76657272696464656e20696e207468652064657269766564207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 739.056 Td +/F2.0 18 Tf +<436c6f736520746865204c697374656e696e6720506f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 713.22 Td +/F3.0 10.5 Tf +<766f696420636c6f73655f6c697374656e5f706f72742829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 687.036 Td +/F1.0 10.5 Tf +<546869732066756e6374696f6e20636c6f73657320746865206c697374656e696e6720706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 647.196 Td +/F2.0 18 Tf +<4f70656e206120436c69656e7420436f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 631.14 m +543.04 631.14 l +545.2491 631.14 547.04 629.3491 547.04 627.14 c +547.04 583.66 l +547.04 581.4509 545.2491 579.66 543.04 579.66 c +52.24 579.66 l +50.0309 579.66 48.24 581.4509 48.24 583.66 c +48.24 627.14 l +48.24 629.3491 50.0309 631.14 52.24 631.14 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 631.14 m +543.04 631.14 l +545.2491 631.14 547.04 629.3491 547.04 627.14 c +547.04 583.66 l +547.04 581.4509 545.2491 579.66 543.04 579.66 c +52.24 579.66 l +50.0309 579.66 48.24 581.4509 48.24 583.66 c +48.24 627.14 l +48.24 629.3491 50.0309 631.14 52.24 631.14 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 608.315 Td +/F3.0 11 Tf +<696e74206f70656e5f636c69656e745f636f6e6e656374696f6e28636f6e737420636861722a2072656d6f7465486f73746e616d652c20636f6e737420636861722a2072656d6f7465536572766963652c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 593.575 Td +/F3.0 11 Tf +<636f6e737420636861722a206c6f63616c486f73746e616d652c20636f6e737420636861722a206c6f63616c53657276696365293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3227 Tw + +BT +48.24 555.696 Td +/F1.0 10.5 Tf +<546869732066756e6374696f6e206372656174657320616e2049507634206f72204950763620636f6e6e656374696f6e2066726f6d20746865206c6f63616c206164647265737320> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.3227 Tw + +BT +410.54 555.696 Td +/F3.0 10.5 Tf +<6c6f63616c486f73746e616d652f6c6f63616c53657276696365> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3227 Tw + +BT +547.04 555.696 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 539.916 Td +/F1.0 10.5 Tf +<746f207468652072656d6f7465206164647265737320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +159.498 539.916 Td +/F3.0 10.5 Tf +<72656d6f7465486f73746e616d652f72656d6f746553657276696365> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +306.498 539.916 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 512.136 Td +/F1.0 10.5 Tf +<496620> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +58.6875 512.136 Td +/F3.0 10.5 Tf +<6c6f63616c486f73746e616d65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +126.9375 512.136 Td +/F1.0 10.5 Tf +<206f7220> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +143.3805 512.136 Td +/F3.0 10.5 Tf +<6c6f63616c53657276696365> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +206.3805 512.136 Td +/F1.0 10.5 Tf +<20697320> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +219.9045 512.136 Td +/F5.0 10.5 Tf +<4e554c4c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +240.9045 512.136 Td +/F1.0 10.5 Tf +[<2c2069742077696c6c2062652061737369676e6564206175746f6d61746963616c6c79> 89.8438 <2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9131 Tw + +BT +48.24 484.356 Td +/F1.0 10.5 Tf +[<54686520706172> 20.0195 <616d657465727320666f72207468652072656d6f746520616464726573732063616e6e6f7420626520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9131 Tw + +BT +313.4236 484.356 Td +/F5.0 10.5 Tf +<4e554c4c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9131 Tw + +BT +334.4236 484.356 Td +/F1.0 10.5 Tf +[<2e20546865206c6f63616c206f722072656d6f7465207365727669636520706172> 20.0195 <616d6574657273>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8503 Tw + +BT +48.24 468.576 Td +/F1.0 10.5 Tf +<73686f756c64206265206e756d6265727320696e20737472696e6720666f726d61742c207768696c6520746865206164647265737365732073686f756c64206265206e616d6573206f722049502061646472657373657320696e2049507634> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 452.796 Td +/F1.0 10.5 Tf +<6f72204950763620666f726d61742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 425.016 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +69.66 425.016 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +185.16 425.016 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2061626f7665206d616b> 20.0195 <65732074686520666f6c6c6f77696e672066756e6374696f6e206f62736f6c6574653a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 409.2 m +543.04 409.2 l +545.2491 409.2 547.04 407.4091 547.04 405.2 c +547.04 361.72 l +547.04 359.5109 545.2491 357.72 543.04 357.72 c +52.24 357.72 l +50.0309 357.72 48.24 359.5109 48.24 361.72 c +48.24 405.2 l +48.24 407.4091 50.0309 409.2 52.24 409.2 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 409.2 m +543.04 409.2 l +545.2491 409.2 547.04 407.4091 547.04 405.2 c +547.04 361.72 l +547.04 359.5109 545.2491 357.72 543.04 357.72 c +52.24 357.72 l +50.0309 357.72 48.24 359.5109 48.24 361.72 c +48.24 405.2 l +48.24 407.4091 50.0309 409.2 52.24 409.2 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 386.375 Td +/F3.0 11 Tf +<696e74206f70656e5f636c69656e745f636f6e6e656374696f6e28636f6e73742073747275637420736f636b616464725f696e2026206e65775f72656d6f74655f616464722c20636f6e737420737472756374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 371.635 Td +/F3.0 11 Tf +<736f636b616464725f696e2026206e65775f6c6f63616c5f6164647229> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.4779 Tw + +BT +48.24 333.756 Td +/F1.0 10.5 Tf +[<4974206973206b> 20.0195 <65707420666f72206261636b7761726420636f6d7061746962696c69747920666f722064657269766564207465737420706f72747320746861742077657265206e6f74206164617074656420746f207468652049507636>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 317.976 Td +/F1.0 10.5 Tf +<737570706f7274696e672066756e6374696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7521 Tw + +BT +48.24 290.196 Td +/F1.0 10.5 Tf +<41667465722063616c6c696e672074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.7521 Tw + +BT +136.5093 290.196 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7521 Tw + +BT +252.0093 290.196 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2c204162737472> 20.0195 <616374536f636b> 20.0195 <65742063616c6c73206175746f6d61746963616c6c79207468652066756e6374696f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5712 Tw + +BT +48.24 274.416 Td +/F3.0 10.5 Tf +<7669727475616c20766f696420636c69656e745f636f6e6e656374696f6e5f6f70656e656428696e7420636c69656e745f696429> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5712 Tw + +BT +322.9535 274.416 Td +/F1.0 10.5 Tf +<20746f20696e666f726d20746865207465737420706f72742061626f75742074686520726573756c742e20546865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5586 Tw + +BT +48.24 258.636 Td +/F3.0 10.5 Tf +<636c69656e745f6964> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5586 Tw + +BT +95.49 258.636 Td +/F1.0 10.5 Tf +[<20706172> 20.0195 <616d657465722069732073657420746f20746865206964206f662074686520636c69656e742c206f7220>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5586 Tw + +BT +309.3453 258.636 Td +/F5.0 10.5 Tf +<2d31> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5586 Tw + +BT +319.8453 258.636 Td +/F1.0 10.5 Tf +<2069662074686520636f6e6e656374696f6e20636f756c64206e6f742062652065737461626c697368656420746f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 242.856 Td +/F1.0 10.5 Tf +<7468652072656d6f746520616464726573732e20546869732066756e6374696f6e2063616e206265206f76657272696464656e20696e207468652064657269766564207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 203.016 Td +/F2.0 18 Tf +<53656e64204d657373616765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 186.96 m +543.04 186.96 l +545.2491 186.96 547.04 185.1691 547.04 182.96 c +547.04 139.48 l +547.04 137.2709 545.2491 135.48 543.04 135.48 c +52.24 135.48 l +50.0309 135.48 48.24 137.2709 48.24 139.48 c +48.24 182.96 l +48.24 185.1691 50.0309 186.96 52.24 186.96 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 186.96 m +543.04 186.96 l +545.2491 186.96 547.04 185.1691 547.04 182.96 c +547.04 139.48 l +547.04 137.2709 545.2491 135.48 543.04 135.48 c +52.24 135.48 l +50.0309 135.48 48.24 137.2709 48.24 139.48 c +48.24 182.96 l +48.24 185.1691 50.0309 186.96 52.24 186.96 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 164.135 Td +/F3.0 11 Tf +<766f69642073656e645f6f7574676f696e6728636f6e737420756e7369676e656420636861722a206d6573736167655f6275666665722c20696e74206c656e6774682c20696e7420636c69656e745f6964203d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 149.395 Td +/F3.0 11 Tf +<2d31293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 111.516 Td +/F1.0 10.5 Tf +<5769746820746869732066756e6374696f6e2061206d6573736167652063616e2062652073656e7420746f207468652073706563696669656420636c69656e742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3131> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +81 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 80 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +/F2.0 19 0 R +/F5.0 59 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +82 0 obj +[81 0 R /XYZ 0 763.08 null] +endobj +83 0 obj +[81 0 R /XYZ 0 671.22 null] +endobj +84 0 obj +<< /Limits [(_parameter_accessor_functions) (_the_abstractsocket_api)] +/Names [(_parameter_accessor_functions) 93 0 R (_presumed_knowledge) 21 0 R (_references) 159 0 R (_send_message) 85 0 R (_server_mode) 34 0 R (_server_mode_2) 124 0 R (_setting_test_port_parameters) 76 0 R (_ssl_functionality) 43 0 R (_start_procedure) 30 0 R (_system_requirements) 24 0 R (_terminology) 154 0 R (_test_port_parameter_names) 90 0 R (_the_abstractsocket_api) 74 0 R] +>> +endobj +85 0 obj +[81 0 R /XYZ 0 227.04 null] +endobj +86 0 obj +<< /Length 8865 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 792.006 Td +/F2.0 13 Tf +[<54> 29.7852 <6f20526563656976652061204d657373616765>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 765.446 Td +/F1.0 10.5 Tf +<5768656e2061206d6573736167652069732072656365697665642c2074686520666f6c6c6f77696e672066756e6374696f6e2069732063616c6c6564206175746f6d61746963616c6c793a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 749.63 m +543.04 749.63 l +545.2491 749.63 547.04 747.8391 547.04 745.63 c +547.04 702.15 l +547.04 699.9409 545.2491 698.15 543.04 698.15 c +52.24 698.15 l +50.0309 698.15 48.24 699.9409 48.24 702.15 c +48.24 745.63 l +48.24 747.8391 50.0309 749.63 52.24 749.63 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 749.63 m +543.04 749.63 l +545.2491 749.63 547.04 747.8391 547.04 745.63 c +547.04 702.15 l +547.04 699.9409 545.2491 698.15 543.04 698.15 c +52.24 698.15 l +50.0309 698.15 48.24 699.9409 48.24 702.15 c +48.24 745.63 l +48.24 747.8391 50.0309 749.63 52.24 749.63 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 726.805 Td +/F3.0 11 Tf +<7669727475616c20766f6964206d6573736167655f696e636f6d696e6728636f6e737420756e7369676e656420636861722a206d6573736167655f6275666665722c20696e74206c656e6774682c20696e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 712.065 Td +/F3.0 11 Tf +<636c69656e745f6964203d202d3129> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1243 Tw + +BT +48.24 674.186 Td +/F1.0 10.5 Tf +[<546869732066756e6374696f6e206d757374206265206f76657272696464656e20696e207468652064657269766564207465737420706f72742e2054> 29.7852 <6f2067656e6572> 20.0195 <61746520616e20696e636f6d696e67205454> 20.0195 <434e33206d6573736167652c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 658.406 Td +/F1.0 10.5 Tf +<746865207465737420706f7274207368616c6c2063616c6c2074686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +176.76 658.406 Td +/F3.0 10.5 Tf +<696e636f6d696e675f6d657373616765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +260.76 658.406 Td +/F1.0 10.5 Tf +<2066756e6374696f6e206f662074686520546974616e204150492077697468696e20746869732066756e6374696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.5936 Tw + +BT +48.24 630.626 Td +/F1.0 10.5 Tf +[<496e206f72646572207468617420746869732066756e6374696f6e20636f756c642062652063616c6c6564206175746f6d61746963616c6c79> 89.8438 <2c207468652064657269766564207465737420706f7274207368616c6c20646566696e65207468657365>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 614.846 Td +/F1.0 10.5 Tf +<66756e6374696f6e733a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 599.03 m +543.04 599.03 l +545.2491 599.03 547.04 597.2391 547.04 595.03 c +547.04 536.81 l +547.04 534.6009 545.2491 532.81 543.04 532.81 c +52.24 532.81 l +50.0309 532.81 48.24 534.6009 48.24 536.81 c +48.24 595.03 l +48.24 597.2391 50.0309 599.03 52.24 599.03 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 599.03 m +543.04 599.03 l +545.2491 599.03 547.04 597.2391 547.04 595.03 c +547.04 536.81 l +547.04 534.6009 545.2491 532.81 543.04 532.81 c +52.24 532.81 l +50.0309 532.81 48.24 534.6009 48.24 536.81 c +48.24 595.03 l +48.24 597.2391 50.0309 599.03 52.24 599.03 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 576.205 Td +/F3.0 11 Tf +<7669727475616c20766f69642048616e646c65725f496e7374616c6c28636f6e73742066645f7365742a20726561645f6664732c20636f6e73742066645f7365742a2077726974655f6664732c20636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 561.465 Td +/F3.0 11 Tf +<66645f7365742a206572726f725f6664732c20646f75626c652063616c6c5f696e74657276616c293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 546.725 Td +/F3.0 11 Tf +<7669727475616c20766f69642048616e646c65725f556e696e7374616c6c28293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 508.846 Td +/F1.0 10.5 Tf +<496e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +61.5855 508.846 Td +/F3.0 10.5 Tf +<48616e646c65725f496e7374616c6c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +140.3355 508.846 Td +/F1.0 10.5 Tf +<2074686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +161.745 508.846 Td +/F3.0 10.5 Tf +<496e7374616c6c5f48616e646c6572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +240.495 508.846 Td +/F1.0 10.5 Tf +<20546974616e204150492066756e6374696f6e2069732063616c6c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 481.066 Td +/F1.0 10.5 Tf +<416c736f20696e2074686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +103.9425 481.066 Td +/F3.0 10.5 Tf +<4576656e745f48616e646c6572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +172.1925 481.066 Td +/F1.0 10.5 Tf +<20546974616e204150492066756e6374696f6e2c207468652066756e6374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 465.25 m +543.04 465.25 l +545.2491 465.25 547.04 463.4591 547.04 461.25 c +547.04 417.77 l +547.04 415.5609 545.2491 413.77 543.04 413.77 c +52.24 413.77 l +50.0309 413.77 48.24 415.5609 48.24 417.77 c +48.24 461.25 l +48.24 463.4591 50.0309 465.25 52.24 465.25 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 465.25 m +543.04 465.25 l +545.2491 465.25 547.04 463.4591 547.04 461.25 c +547.04 417.77 l +547.04 415.5609 545.2491 413.77 543.04 413.77 c +52.24 413.77 l +50.0309 413.77 48.24 415.5609 48.24 417.77 c +48.24 461.25 l +48.24 463.4591 50.0309 465.25 52.24 465.25 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 442.425 Td +/F3.0 11 Tf +<766f69642048616e646c655f4576656e7428636f6e73742066645f736574202a726561645f6664732c20636f6e73742066645f736574205f5f77726974655f6664732c20636f6e73742066645f736574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 427.685 Td +/F3.0 11 Tf +<5f5f6572726f725f6664732c20646f75626c652074696d655f73696e63655f6c6173745f63616c6c29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 389.806 Td +/F1.0 10.5 Tf +<69732063616c6c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 349.966 Td +/F2.0 18 Tf +<436c6f7365206120436c69656e7420436f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 333.91 m +543.04 333.91 l +545.2491 333.91 547.04 332.1191 547.04 329.91 c +547.04 286.43 l +547.04 284.2209 545.2491 282.43 543.04 282.43 c +52.24 282.43 l +50.0309 282.43 48.24 284.2209 48.24 286.43 c +48.24 329.91 l +48.24 332.1191 50.0309 333.91 52.24 333.91 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 333.91 m +543.04 333.91 l +545.2491 333.91 547.04 332.1191 547.04 329.91 c +547.04 286.43 l +547.04 284.2209 545.2491 282.43 543.04 282.43 c +52.24 282.43 l +50.0309 282.43 48.24 284.2209 48.24 286.43 c +48.24 329.91 l +48.24 332.1191 50.0309 333.91 52.24 333.91 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 311.085 Td +/F3.0 11 Tf +<7669727475616c20766f69642072656d6f76655f636c69656e7428696e7420636c69656e745f6964293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 296.345 Td +/F3.0 11 Tf +<7669727475616c20766f69642072656d6f76655f616c6c5f636c69656e747328293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4062 Tw + +BT +48.24 258.466 Td +/F1.0 10.5 Tf +<54686520666972737420636c6f7365732074686520636f6e6e656374696f6e20666f72206120676976656e20636c69656e7420746865207365636f6e642066756e6374696f6e20636c6f7365732074686520636f6e6e656374696f6e206f6620616c6c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 242.686 Td +/F1.0 10.5 Tf +<636c69656e74732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 202.846 Td +/F2.0 18 Tf +[<54> 29.7852 <65737420506f727420506172> 20.0195 <616d65746572204e616d6573>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7461 Tw + +BT +48.24 174.826 Td +/F1.0 10.5 Tf +[<5468652064656661756c74204162737472> 20.0195 <616374536f636b> 20.0195 <6574207465737420706f727420706172> 20.0195 <616d65746572206e616d65732063616e206265207265646566696e656420696e207468652064657269766564207465737420706f72742062> 20.0195 <79>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 159.046 Td +/F1.0 10.5 Tf +<6f766572726964696e672074686520617070726f7072696174652066756e6374696f6e2062656c6f773a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3132> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +87 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 86 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +88 0 obj +[87 0 R /XYZ 0 841.89 null] +endobj +89 0 obj +[87 0 R /XYZ 0 373.99 null] +endobj +90 0 obj +[87 0 R /XYZ 0 226.87 null] +endobj +91 0 obj +<< /Length 9880 +>> +stream +q +q +/DeviceRGB cs +0.9608 0.9608 0.9608 scn +52.24 805.89 m +543.04 805.89 l +545.2491 805.89 547.04 804.0991 547.04 801.89 c +547.04 493.09 l +547.04 490.8809 545.2491 489.09 543.04 489.09 c +52.24 489.09 l +50.0309 489.09 48.24 490.8809 48.24 493.09 c +48.24 801.89 l +48.24 804.0991 50.0309 805.89 52.24 805.89 c +h +f +/DeviceRGB CS +0.8 0.8 0.8 SCN +0.75 w +52.24 805.89 m +543.04 805.89 l +545.2491 805.89 547.04 804.0991 547.04 801.89 c +547.04 493.09 l +547.04 490.8809 545.2491 489.09 543.04 489.09 c +52.24 489.09 l +50.0309 489.09 48.24 490.8809 48.24 493.09 c +48.24 801.89 l +48.24 804.0991 50.0309 805.89 52.24 805.89 c +h +S +Q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +59.24 783.065 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a206c6f63616c5f706f72745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 768.325 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2072656d6f74655f616464726573735f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 753.585 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a206c6f63616c5f616464726573735f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 738.845 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2072656d6f74655f706f72745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 724.105 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2061695f66616d696c795f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 709.365 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a207573655f636f6e6e656374696f6e5f415350735f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 694.625 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2068616c745f6f6e5f636f6e6e656374696f6e5f72657365745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 679.885 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a20636c69656e745f5443505f7265636f6e6e6563745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 665.145 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a205443505f7265636f6e6e6563745f617474656d7074735f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 650.405 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a205443505f7265636f6e6e6563745f64656c61795f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 635.665 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a207365727665725f6d6f64655f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 620.925 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a20736f636b65745f646562756767696e675f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 606.185 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a206e61676c696e675f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 591.445 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a207573655f6e6f6e5f626c6f636b696e675f736f636b65745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 576.705 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a207365727665725f6261636b6c6f675f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 561.965 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2073736c5f64697361626c655f53534c763228293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 547.225 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2073736c5f64697361626c655f53534c763328293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 532.485 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2073736c5f64697361626c655f544c53763128293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 517.745 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2073736c5f64697361626c655f544c5376315f3128293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 503.005 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2073736c5f64697361626c655f544c5376315f3228293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 453.066 Td +/F2.0 18 Tf +[<506172> 20.0195 <616d657465722041> 20.0195 <63636573736f722046756e6374696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 425.046 Td +/F1.0 10.5 Tf +[<54686520666f6c6c6f77696e672066756e6374696f6e732063616e2062652075736520746f206765742f73657420746865204162737472> 20.0195 <616374536f636b> 20.0195 <657420706172> 20.0195 <616d65746572733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 409.23 m +543.04 409.23 l +545.2491 409.23 547.04 407.4391 547.04 405.23 c +547.04 66.95 l +547.04 64.7409 545.2491 62.95 543.04 62.95 c +52.24 62.95 l +50.0309 62.95 48.24 64.7409 48.24 66.95 c +48.24 405.23 l +48.24 407.4391 50.0309 409.23 52.24 409.23 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 409.23 m +543.04 409.23 l +545.2491 409.23 547.04 407.4391 547.04 405.23 c +547.04 66.95 l +547.04 64.7409 545.2491 62.95 543.04 62.95 c +52.24 62.95 l +50.0309 62.95 48.24 64.7409 48.24 66.95 c +48.24 405.23 l +48.24 407.4391 50.0309 409.23 52.24 409.23 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 386.405 Td +/F3.0 11 Tf +<626f6f6c206765745f6e61676c696e67282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 371.665 Td +/F3.0 11 Tf +<626f6f6c206765745f7573655f6e6f6e5f626c6f636b696e675f736f636b6574282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 356.925 Td +/F3.0 11 Tf +<626f6f6c206765745f7365727665725f6d6f6465282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 342.185 Td +/F3.0 11 Tf +<626f6f6c206765745f736f636b65745f646562756767696e67282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 327.445 Td +/F3.0 11 Tf +<626f6f6c206765745f68616c745f6f6e5f636f6e6e656374696f6e5f7265736574282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 312.705 Td +/F3.0 11 Tf +<626f6f6c206765745f7573655f636f6e6e656374696f6e5f41535073282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 297.965 Td +/F3.0 11 Tf +<626f6f6c206765745f68616e646c655f68616c665f636c6f7365282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 283.225 Td +/F3.0 11 Tf +<696e74207365745f6e6f6e5f626c6f636b5f6d6f646528696e742066642c20626f6f6c20656e61626c655f6e6f6e626c6f636b293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 268.485 Td +/F3.0 11 Tf +<626f6f6c20696e6372656173655f73656e645f62756666657228696e742066642c20696e7420266f6c645f73697a652c20696e7426206e65775f73697a65293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 253.745 Td +/F3.0 11 Tf +<636f6e737420636861722a206765745f6c6f63616c5f686f73745f6e616d652829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 239.005 Td +/F3.0 11 Tf +<636f6e737420756e7369676e656420696e74206765745f6c6f63616c5f706f72745f6e756d6265722829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 224.265 Td +/F3.0 11 Tf +<636f6e737420636861722a206765745f72656d6f74655f686f73745f6e616d652829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 209.525 Td +/F3.0 11 Tf +<636f6e737420756e7369676e656420696e74206765745f72656d6f74655f706f72745f6e756d6265722829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 194.785 Td +/F3.0 11 Tf +<636f6e737420696e7426206765745f61695f66616d696c79282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 180.045 Td +/F3.0 11 Tf +<766f6964207365745f61695f66616d696c7928696e7420706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 165.305 Td +/F3.0 11 Tf +<626f6f6c206765745f7474636e5f6275666665725f75736572636f6e74726f6c282920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 150.565 Td +/F3.0 11 Tf +<766f6964207365745f6e61676c696e6728626f6f6c20706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 135.825 Td +/F3.0 11 Tf +<766f6964207365745f7365727665725f6d6f646528626f6f6c20706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 121.085 Td +/F3.0 11 Tf +<766f6964207365745f68616e646c655f68616c665f636c6f736528626f6f6c20706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 106.345 Td +/F3.0 11 Tf +<766f6964207365745f736f636b65745f646562756767696e6728626f6f6c20706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 91.605 Td +/F3.0 11 Tf +<766f6964207365745f68616c745f6f6e5f636f6e6e656374696f6e5f726573657428626f6f6c20706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 76.865 Td +/F3.0 11 Tf +<766f6964207365745f7474636e5f6275666665725f75736572636f6e74726f6c28626f6f6c20706172616d657465725f76616c756529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3133> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +92 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 91 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F3.0 27 0 R +/F2.0 19 0 R +/F1.0 8 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +93 0 obj +[92 0 R /XYZ 0 477.09 null] +endobj +94 0 obj +<< /Length 12747 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 786.666 Td +/F2.0 18 Tf +<4c6f6767696e672046756e6374696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 758.646 Td +/F1.0 10.5 Tf +[<54686520666f6c6c6f77696e672066756e6374696f6e73206c6f67206120676976656e206d65737361676520696e20646966666572656e74207761> 20.0195 <79733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 742.83 m +543.04 742.83 l +545.2491 742.83 547.04 741.0391 547.04 738.83 c +547.04 665.87 l +547.04 663.6609 545.2491 661.87 543.04 661.87 c +52.24 661.87 l +50.0309 661.87 48.24 663.6609 48.24 665.87 c +48.24 738.83 l +48.24 741.0391 50.0309 742.83 52.24 742.83 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 742.83 m +543.04 742.83 l +545.2491 742.83 547.04 741.0391 547.04 738.83 c +547.04 665.87 l +547.04 663.6609 545.2491 661.87 543.04 661.87 c +52.24 661.87 l +50.0309 661.87 48.24 663.6609 48.24 665.87 c +48.24 738.83 l +48.24 741.0391 50.0309 742.83 52.24 742.83 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 720.005 Td +/F3.0 11 Tf +<766f6964206c6f675f646562756728636f6e73742063686172202a666d742c20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +235.24 720.005 Td +/F6.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +246.24 720.005 Td +/F3.0 11 Tf +<2920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 705.265 Td +/F3.0 11 Tf +<766f6964206c6f675f7761726e696e6728636f6e73742063686172202a666d742c20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +246.24 705.265 Td +/F6.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +257.24 705.265 Td +/F3.0 11 Tf +<2920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 690.525 Td +/F3.0 11 Tf +<766f6964206c6f675f6572726f7228636f6e73742063686172202a666d742c20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +235.24 690.525 Td +/F6.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +246.24 690.525 Td +/F3.0 11 Tf +<2920636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 675.785 Td +/F3.0 11 Tf +<766f6964206c6f675f68657828636f6e73742063686172205f5f70726f6d70742c20636f6e737420756e7369676e65642063686172205f5f6d73672c2073697a655f74206c656e6774682920636f6e73743b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 625.846 Td +/F2.0 18 Tf +<4572726f72205265706f7274696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 609.79 m +543.04 609.79 l +545.2491 609.79 547.04 607.9991 547.04 605.79 c +547.04 562.31 l +547.04 560.1009 545.2491 558.31 543.04 558.31 c +52.24 558.31 l +50.0309 558.31 48.24 560.1009 48.24 562.31 c +48.24 605.79 l +48.24 607.9991 50.0309 609.79 52.24 609.79 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 609.79 m +543.04 609.79 l +545.2491 609.79 547.04 607.9991 547.04 605.79 c +547.04 562.31 l +547.04 560.1009 545.2491 558.31 543.04 558.31 c +52.24 558.31 l +50.0309 558.31 48.24 560.1009 48.24 562.31 c +48.24 605.79 l +48.24 607.9991 50.0309 609.79 52.24 609.79 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 586.965 Td +/F3.0 11 Tf +<7669727475616c20766f6964207265706f72745f6572726f7228696e7420636c69656e745f69642c20696e74206d73675f6c656e6774682c20696e742073656e745f6c656e6774682c20636f6e7374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 572.225 Td +/F3.0 11 Tf +<756e7369676e656420636861722a206d73672c20636f6e737420636861722a206572726f725f74657874293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7049 Tw + +BT +48.24 534.346 Td +/F1.0 10.5 Tf +[<546869732066756e6374696f6e2069732063616c6c6564206175746f6d61746963616c6c7920696620616e206572726f72206f636375727320647572696e672073656e64206f706572> 20.0195 <6174696f6e20696e20>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.7049 Tw + +BT +470.915 534.346 Td +/F3.0 10.5 Tf +<4162737472616374536f636b6574> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7049 Tw + +BT +544.415 534.346 Td +/F1.0 10.5 Tf +<2e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7792 Tw + +BT +48.24 518.566 Td +/F1.0 10.5 Tf +<546869732066756e6374696f6e2063616e206265206f76657272696464656e20696e207468652064657269766564207465737420706f727420746f206f76657272696465207468652064656661756c74206572726f72207265706f7274696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4386 Tw + +BT +48.24 502.786 Td +/F1.0 10.5 Tf +<6265686176696f72206f6620> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.4386 Tw + +BT +109.5341 502.786 Td +/F3.0 10.5 Tf +<4162737472616374536f636b6574> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4386 Tw + +BT +183.0341 502.786 Td +/F1.0 10.5 Tf +<2c2077686963682069732063616c6c696e672074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.4386 Tw + +BT +289.723 502.786 Td +/F3.0 10.5 Tf +<6c6f675f6572726f72> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4386 Tw + +BT +336.973 502.786 Td +/F1.0 10.5 Tf +<2066756e6374696f6e2e20546869732066756e6374696f6e2063616e20616c736f2062652063616c6c6564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 487.006 Td +/F1.0 10.5 Tf +[<62> 20.0195 <79207468652064657269766564207465737420706f727420746f20696e69746961746520746865206572726f72207265706f7274696e67206d656368616e69736d2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 437.554 Td +/F2.0 27 Tf +<5469707320616e6420547269636b73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 390.574 Td +/F2.0 22 Tf +<5573616765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 361.386 Td +/F1.0 10.5 Tf +<496e206f7264657220746f206275696c642061207465737420706f7274206261736564206f6e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +233.9745 361.386 Td +/F3.0 10.5 Tf +<41627374726163745f536f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +312.7245 361.386 Td +/F1.0 10.5 Tf +<2074686520666f6c6c6f77696e67207374657073206d75737420626520636f6d706c657465643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +52.6765 333.606 Td +/F1.0 10.5 Tf +<312e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 333.606 Td +/F1.0 10.5 Tf +<4465726976696e6720746865207465737420706f727420636c617373202873656520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +224.202 333.606 Td +/F1.0 10.5 Tf +[<4465726976696e67207468652054> 29.7852 <65737420506f727420436c617373>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +360.7148 333.606 Td +/F1.0 10.5 Tf +<29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +52.6765 311.826 Td +/F1.0 10.5 Tf +<322e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 311.826 Td +/F1.0 10.5 Tf +<496d706c656d656e746174696f6e206f6620746865206c6f676765722066756e6374696f6e73206966206e6565646564202873656520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +336.3315 311.826 Td +/F1.0 10.5 Tf +<496d706c656d656e746174696f6e206f6620746865204c6f676765722046756e6374696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +537.816 311.826 Td +/F1.0 10.5 Tf +<29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +52.6765 290.046 Td +/F1.0 10.5 Tf +<332e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 290.046 Td +/F1.0 10.5 Tf +[<46756e6374696f6e207472> 20.0195 <616e736c6174696f6e73202873656520>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +198.2668 290.046 Td +/F1.0 10.5 Tf +[<46756e6374696f6e205472> 20.0195 <616e736c6174696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +307.9811 290.046 Td +/F1.0 10.5 Tf +<29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +52.6765 268.266 Td +/F1.0 10.5 Tf +<342e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7629 Tw + +BT +66.24 268.266 Td +/F1.0 10.5 Tf +<496e7374616c6c696e67207468652068616e646c657273202873656520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +1.7629 Tw + +BT +211.3034 268.266 Td +/F1.0 10.5 Tf +<46756e6374696f6e7320666f72204d616e6970756c6174696e672074686520536574206f66204576656e747320666f722057686963682074686520506f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +66.24 252.486 Td +/F1.0 10.5 Tf +[<57> 49.8047 <61697473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +94.3821 252.486 Td +/F1.0 10.5 Tf +<29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +52.6765 230.706 Td +/F1.0 10.5 Tf +<352e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 230.706 Td +/F1.0 10.5 Tf +<46696e616c207374657073202873656520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +144.6855 230.706 Td +/F1.0 10.5 Tf +<46696e616c205374657073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +199.0545 230.706 Td +/F1.0 10.5 Tf +<29> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 202.926 Td +/F1.0 10.5 Tf +<5468657365207374657073206172652064697363757373656420696e2064657461696c20696e2074686520666f6c6c6f77696e672073756273656374696f6e732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 163.086 Td +/F2.0 18 Tf +[<4465726976696e67207468652054> 29.7852 <65737420506f727420436c617373>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0264 Tw + +BT +48.24 135.066 Td +/F1.0 10.5 Tf +<496e686572697420796f7572207465737420706f727420636c6173732062657369646520746865207465737420706f7274206261736520616c736f2066726f6d2074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.0264 Tw + +BT +388.532 135.066 Td +/F3.0 10.5 Tf +<41627374726163745f536f636b6574> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0264 Tw + +BT +467.282 135.066 Td +/F1.0 10.5 Tf +<20636c6173732c20696620796f7520646f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7049 Tw + +BT +48.24 119.286 Td +/F1.0 10.5 Tf +<6e6f742077616e7420746f207573652053534c20617420616c6c2e20496620796f7520706c616e20746f207573652053534c2c20696e686572697420746865207465737420706f72742066726f6d2074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.7049 Tw + +BT +450.6472 119.286 Td +/F3.0 10.5 Tf +<53534c5f536f636b6574> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7049 Tw + +BT +503.1472 119.286 Td +/F1.0 10.5 Tf +<20636c6173732e20496e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9214 Tw + +BT +48.24 103.506 Td +/F1.0 10.5 Tf +[<6361736520796f75722053534c20696d706c656d656e746174696f6e206973206a757374206f7074696f6e616c2c20796f75206861766520746f206d616b> 20.0195 <652073757265207468617420697420697320706f737369626c6520746f2064697361626c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.5492 Tw + +BT +48.24 87.726 Td +/F1.0 10.5 Tf +<53534c2072656c6174656420636f646520706172747320617420636f6d70696c652074696d652e20496e207468652041532069662074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.5492 Tw + +BT +339.3578 87.726 Td +/F3.0 10.5 Tf +<41535f5553455f53534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.5492 Tw + +BT +391.8578 87.726 Td +/F1.0 10.5 Tf +<206d6163726f20697320646566696e65642c207468656e2053534c206973> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 71.946 Td +/F1.0 10.5 Tf +<656e61626c65642c206f74686572776973652064697361626c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3134> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +95 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 94 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F6.0 97 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +/Annots [101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R] +>> +endobj +96 0 obj +[95 0 R /XYZ 0 841.89 null] +endobj +97 0 obj +<< /Type /Font +/BaseFont /781c87+mplus-1p-regular +/Subtype /TrueType +/FontDescriptor 375 0 R +/FirstChar 32 +/LastChar 255 +/Widths 377 0 R +/ToUnicode 376 0 R +>> +endobj +98 0 obj +[95 0 R /XYZ 0 649.87 null] +endobj +99 0 obj +[95 0 R /XYZ 0 471.19 null] +endobj +100 0 obj +[95 0 R /XYZ 0 418.87 null] +endobj +101 0 obj +<< /Border [0 0 0] +/Dest (deriving_the_test_port_class) +/Subtype /Link +/Rect [224.202 330.54 360.7148 344.82] +/Type /Annot +>> +endobj +102 0 obj +<< /Border [0 0 0] +/Dest (implementation_of_the_logger_functions) +/Subtype /Link +/Rect [336.3315 308.76 537.816 323.04] +/Type /Annot +>> +endobj +103 0 obj +<< /Border [0 0 0] +/Dest (function_translations) +/Subtype /Link +/Rect [198.2668 286.98 307.9811 301.26] +/Type /Annot +>> +endobj +104 0 obj +<< /Border [0 0 0] +/Dest (functions_for_manipulating_the_set_of_events_for_which_the_port_waits) +/Subtype /Link +/Rect [211.3034 265.2 547.04 279.48] +/Type /Annot +>> +endobj +105 0 obj +<< /Border [0 0 0] +/Dest (functions_for_manipulating_the_set_of_events_for_which_the_port_waits) +/Subtype /Link +/Rect [66.24 249.42 94.3821 263.7] +/Type /Annot +>> +endobj +106 0 obj +<< /Border [0 0 0] +/Dest (final_steps) +/Subtype /Link +/Rect [144.6855 227.64 199.0545 241.92] +/Type /Annot +>> +endobj +107 0 obj +[95 0 R /XYZ 0 187.11 null] +endobj +108 0 obj +<< /Length 19936 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 794.676 Td +/F1.0 10.5 Tf +<4578616d706c653a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 778.86 m +543.04 778.86 l +545.2491 778.86 547.04 777.0691 547.04 774.86 c +547.04 687.16 l +547.04 684.9509 545.2491 683.16 543.04 683.16 c +52.24 683.16 l +50.0309 683.16 48.24 684.9509 48.24 687.16 c +48.24 774.86 l +48.24 777.0691 50.0309 778.86 52.24 778.86 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 778.86 m +543.04 778.86 l +545.2491 778.86 547.04 777.0691 547.04 774.86 c +547.04 687.16 l +547.04 684.9509 545.2491 683.16 543.04 683.16 c +52.24 683.16 l +50.0309 683.16 48.24 684.9509 48.24 687.16 c +48.24 774.86 l +48.24 777.0691 50.0309 778.86 52.24 778.86 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 756.035 Td +/F3.0 11 Tf +<2369666465662041535f5553455f53534c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 741.295 Td +/F3.0 11 Tf +<636c617373206d79706f72745f5f5054203a207075626c69632053534c5f536f636b65742c207075626c6963206d79706f72745f5f50545f42415345207b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 726.555 Td +/F3.0 11 Tf +<23656c7365> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 711.815 Td +/F3.0 11 Tf +<636c617373206d79706f72745f5f5054203a207075626c69632041627374726163745f536f636b65742c207075626c6963206d79706f72745f5f50545f42415345207b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 697.075 Td +/F3.0 11 Tf +<23656e646966> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 647.136 Td +/F2.0 18 Tf +<496d706c656d656e746174696f6e206f6620746865204c6f676765722046756e6374696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9598 Tw + +BT +48.24 619.116 Td +/F1.0 10.5 Tf +<496d706c656d656e742074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9598 Tw + +BT +128.6416 619.116 Td +/F3.0 10.5 Tf +<6c6f675f6465627567> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9598 Tw + +BT +175.8916 619.116 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9598 Tw + +BT +183.1959 619.116 Td +/F3.0 10.5 Tf +<6c6f675f6572726f72> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9598 Tw + +BT +230.4459 619.116 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9598 Tw + +BT +237.7502 619.116 Td +/F3.0 10.5 Tf +<6c6f675f7761726e696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9598 Tw + +BT +295.5002 619.116 Td +/F1.0 10.5 Tf +<20616e6420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.9598 Tw + +BT +323.9688 619.116 Td +/F3.0 10.5 Tf +<6c6f675f686578> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.9598 Tw + +BT +360.7188 619.116 Td +/F1.0 10.5 Tf +<207669727475616c2066756e6374696f6e7320696620796f75206e656564206f74686572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 603.336 Td +/F1.0 10.5 Tf +<696d706c656d656e746174696f6e207468616e207468652064656661756c742e2028746865792063616e20626520656d70747920696d706c656d656e746174696f6e73206966206c6f6767696e67206973206e6f74206e656564656429> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 567.24 99.76 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +148.0 567.24 399.04 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 546.96 99.76 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +148.0 546.96 399.04 20.28 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +48.24 526.68 99.76 20.28 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +148.0 526.68 399.04 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 506.4 99.76 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +148.0 506.4 399.04 20.28 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +48.24 486.12 99.76 20.28 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +148.0 486.12 399.04 20.28 re +f +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 587.52 m +148.0 587.52 l +S +[] 0 d +1.25 w +0.8667 0.8667 0.8667 SCN +48.24 567.24 m +148.0 567.24 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 587.77 m +48.24 566.615 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 587.77 m +148.0 566.615 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +51.24 573.306 Td +/F2.0 10.5 Tf +<46756e6374696f6e> Tj +ET + +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 587.52 m +547.04 587.52 l +S +[] 0 d +1.25 w +0.8667 0.8667 0.8667 SCN +148.0 567.24 m +547.04 567.24 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 587.77 m +148.0 566.615 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 587.77 m +547.04 566.615 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +151.0 573.306 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.0 0.0 0.0 scn +1.25 w +0.8667 0.8667 0.8667 SCN +48.24 567.24 m +148.0 567.24 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 546.96 m +148.0 546.96 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 567.865 m +48.24 546.71 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 567.865 m +148.0 546.71 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 555.21 Td +/F3.0 10.5 Tf +<6c6f675f6465627567> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +1.25 w +0.8667 0.8667 0.8667 SCN +148.0 567.24 m +547.04 567.24 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 546.96 m +547.04 546.96 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 567.865 m +148.0 546.71 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 567.865 m +547.04 546.71 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +151.0 553.026 Td +/F1.0 10.5 Tf +<646f6573207468652064656275672d6c6f6767696e67> Tj +ET + +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 546.96 m +148.0 546.96 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 526.68 m +148.0 526.68 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 547.21 m +48.24 526.43 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 547.21 m +148.0 526.43 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 534.93 Td +/F3.0 10.5 Tf +<6c6f675f686578> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 546.96 m +547.04 546.96 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 526.68 m +547.04 526.68 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 547.21 m +148.0 526.43 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 547.21 m +547.04 526.43 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +151.0 532.746 Td +/F1.0 10.5 Tf +<646f657320746865206c6f6767696e67206f6620746865206d65737361676520636f6e74656e7420696e2068657820666f726d6174> Tj +ET + +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 526.68 m +148.0 526.68 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 506.4 m +148.0 506.4 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 526.93 m +48.24 506.15 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 526.93 m +148.0 506.15 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 514.65 Td +/F3.0 10.5 Tf +<6c6f675f7761726e696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 526.68 m +547.04 526.68 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 506.4 m +547.04 506.4 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 526.93 m +148.0 506.15 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 526.93 m +547.04 506.15 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +151.0 512.466 Td +/F1.0 10.5 Tf +<646f657320746865206c6f6767696e67206f66207761726e696e67206d65737361676573> Tj +ET + +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 506.4 m +148.0 506.4 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 486.12 m +148.0 486.12 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 506.65 m +48.24 485.87 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 506.65 m +148.0 485.87 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 494.37 Td +/F3.0 10.5 Tf +<6c6f675f6572726f72> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 506.4 m +547.04 506.4 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 486.12 m +547.04 486.12 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +148.0 506.65 m +148.0 485.87 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 506.65 m +547.04 485.87 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +151.0 492.186 Td +/F1.0 10.5 Tf +[<697320657870656374696e6720746865207465737420706f727420746f2073746f7020776974682061205454> 20.0195 <434e5f455252> 20.0195 <4f52>] TJ +ET + +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.4445 Tw + +BT +48.24 462.156 Td +/F1.0 10.5 Tf +[<59> 69.8242 <6f752063616e2075736520746865206c6f676765722066756e6374696f6e7320696d706c656d656e74656420696e207468652041532e20496e2074686973206361736520796f75206861766520746f2063616c6c20746865204153>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1842 Tw + +BT +48.24 446.376 Td +/F1.0 10.5 Tf +[<636f6e7374727563746f72207769746820796f7572207465737420706f7274207479706520616e64206e616d652e20496e2074686973207761> 20.0195 <79207468652041532077696c6c206c6f67206d6573736167657320616374696e67206c696b> 20.0195 <6520796f7572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 430.596 Td +/F1.0 10.5 Tf +<7465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 390.756 Td +/F2.0 18 Tf +[<46756e6374696f6e205472> 20.0195 <616e736c6174696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4647 Tw + +BT +48.24 362.736 Td +/F1.0 10.5 Tf +[<5472> 20.0195 <616e736c6174652074686520706f7274d5732066756e6374696f6e7320746f2074686520736f636b> 20.0195 <6574d5732066756e6374696f6e732e2042> 20.0195 <79207472> 20.0195 <616e736c6174696e67207765206d65616e20612066756e6374696f6e2063616c6c2077697468>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 346.956 Td +/F1.0 10.5 Tf +[<756e6368616e67656420706172> 20.0195 <616d6574657273206c696b> 20.0195 <6520746869733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 331.14 m +543.04 331.14 l +545.2491 331.14 547.04 329.3491 547.04 327.14 c +547.04 254.18 l +547.04 251.9709 545.2491 250.18 543.04 250.18 c +52.24 250.18 l +50.0309 250.18 48.24 251.9709 48.24 254.18 c +48.24 327.14 l +48.24 329.3491 50.0309 331.14 52.24 331.14 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 331.14 m +543.04 331.14 l +545.2491 331.14 547.04 329.3491 547.04 327.14 c +547.04 254.18 l +547.04 251.9709 545.2491 250.18 543.04 250.18 c +52.24 250.18 l +50.0309 250.18 48.24 251.9709 48.24 254.18 c +48.24 327.14 l +48.24 329.3491 50.0309 331.14 52.24 331.14 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 308.315 Td +/F3.0 11 Tf +<766f6964206d79706f72745f5f50543a3a7365745f706172616d6574657228636f6e73742063686172202a706172616d657465725f6e616d652c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 293.575 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 278.835 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 264.095 Td +/F3.0 11 Tf +<7d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 226.216 Td +/F1.0 10.5 Tf +[<546865206c697374206f662066756e6374696f6e7320746f206265207472> 20.0195 <616e736c617465643a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 190.12 249.4 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +297.64 190.12 249.4 20.28 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 172.675 249.4 17.445 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +297.64 172.675 249.4 17.445 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +48.24 155.23 249.4 17.445 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +297.64 155.23 249.4 17.445 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 137.785 249.4 17.445 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +297.64 137.785 249.4 17.445 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +48.24 120.34 249.4 17.445 re +f +0.0 0.0 0.0 scn +0.9765 0.9765 0.9765 scn +297.64 120.34 249.4 17.445 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +48.24 102.895 249.4 17.445 re +f +0.0 0.0 0.0 scn +1.0 1.0 1.0 scn +297.64 102.895 249.4 17.445 re +f +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 210.4 m +297.64 210.4 l +S +[] 0 d +1.25 w +0.8667 0.8667 0.8667 SCN +48.24 190.12 m +297.64 190.12 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 210.65 m +48.24 189.495 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 210.65 m +297.64 189.495 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +51.24 196.186 Td +/F2.0 10.5 Tf +<506f72742066756e6374696f6e733a> Tj +ET + +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 210.4 m +547.04 210.4 l +S +[] 0 d +1.25 w +0.8667 0.8667 0.8667 SCN +297.64 190.12 m +547.04 190.12 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 210.65 m +297.64 189.495 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 210.65 m +547.04 189.495 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn + +BT +300.64 196.186 Td +/F2.0 10.5 Tf +[<536f636b> 20.0195 <65742066756e6374696f6e733a>] TJ +ET + +0.0 0.0 0.0 scn +1.25 w +0.8667 0.8667 0.8667 SCN +48.24 190.12 m +297.64 190.12 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 172.675 m +297.64 172.675 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 190.745 m +48.24 172.425 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 190.745 m +297.64 172.425 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 178.09 Td +/F3.0 10.5 Tf +<7365745f706172616d65746572> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +1.25 w +0.8667 0.8667 0.8667 SCN +297.64 190.12 m +547.04 190.12 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 172.675 m +547.04 172.675 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 190.745 m +297.64 172.425 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 190.745 m +547.04 172.425 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +300.64 178.09 Td +/F3.0 10.5 Tf +<706172616d657465725f736574> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 172.675 m +297.64 172.675 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 155.23 m +297.64 155.23 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 172.925 m +48.24 154.98 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 172.925 m +297.64 154.98 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 160.645 Td +/F3.0 10.5 Tf +<48616e646c655f46645f4576656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 172.675 m +547.04 172.675 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 155.23 m +547.04 155.23 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 172.925 m +297.64 154.98 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 172.925 m +547.04 154.98 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +300.64 160.645 Td +/F3.0 10.5 Tf +<48616e646c655f536f636b65745f4576656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 155.23 m +297.64 155.23 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 137.785 m +297.64 137.785 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 155.48 m +48.24 137.535 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 155.48 m +297.64 137.535 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 143.2 Td +/F3.0 10.5 Tf +<48616e646c655f54696d656f7574> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 155.23 m +547.04 155.23 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 137.785 m +547.04 137.785 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 155.48 m +297.64 137.535 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 155.48 m +547.04 137.535 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +300.64 143.2 Td +/F3.0 10.5 Tf +<48616e646c655f54696d656f75745f4576656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 137.785 m +297.64 137.785 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 120.34 m +297.64 120.34 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 138.035 m +48.24 120.09 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 138.035 m +297.64 120.09 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 125.755 Td +/F3.0 10.5 Tf +<757365725f6d6170> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 137.785 m +547.04 137.785 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 120.34 m +547.04 120.34 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 138.035 m +297.64 120.09 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 138.035 m +547.04 120.09 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +300.64 125.755 Td +/F3.0 10.5 Tf +<6d61705f75736572> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 120.34 m +297.64 120.34 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 102.895 m +297.64 102.895 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +48.24 120.59 m +48.24 102.645 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 120.59 m +297.64 102.645 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +51.24 108.31 Td +/F3.0 10.5 Tf +<757365725f756e6d6170> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 120.34 m +547.04 120.34 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 102.895 m +547.04 102.895 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +297.64 120.59 m +297.64 102.645 l +S +[] 0 d +0.5 w +0.8667 0.8667 0.8667 SCN +547.04 120.59 m +547.04 102.645 l +S +[] 0 d +1 w +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +300.64 108.31 Td +/F3.0 10.5 Tf +<756e6d61705f75736572> Tj +ET + +0.0 0.0 0.0 SCN +0.2 0.2 0.2 scn +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5478 Tw + +BT +48.24 78.931 Td +/F1.0 10.5 Tf +<496620796f75206d69676874206e656564206f746865722066756e6374696f6e7320616c736f20746f20626520706572666f726d656420647572696e6720> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5478 Tw + +BT +367.7224 78.931 Td +/F3.0 10.5 Tf +<6d6170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5478 Tw + +BT +383.4724 78.931 Td +/F1.0 10.5 Tf +<2c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5478 Tw + +BT +389.3648 78.931 Td +/F3.0 10.5 Tf +<756e6d6170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5478 Tw + +BT +415.6148 78.931 Td +/F1.0 10.5 Tf +<206f7220> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5478 Tw + +BT +433.1534 78.931 Td +/F3.0 10.5 Tf +<7365745f706172616d65746572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5478 Tw + +BT +501.4034 78.931 Td +/F1.0 10.5 Tf +<2c20796f752063616e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 63.151 Td +/F1.0 10.5 Tf +[<616464207468656d2072696768742061667465722074686520736f636b> 20.0195 <6574d5732066756e6374696f6e2063616c6c732e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3135> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +109 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 108 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +/F2.0 19 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +110 0 obj +[109 0 R /XYZ 0 671.16 null] +endobj +111 0 obj +[109 0 R /XYZ 0 414.78 null] +endobj +112 0 obj +<< /Length 9550 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 793.926 Td +/F1.0 10.5 Tf +<4578616d706c653a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 778.11 m +543.04 778.11 l +545.2491 778.11 547.04 776.3191 547.04 774.11 c +547.04 597.97 l +547.04 595.7609 545.2491 593.97 543.04 593.97 c +52.24 593.97 l +50.0309 593.97 48.24 595.7609 48.24 597.97 c +48.24 774.11 l +48.24 776.3191 50.0309 778.11 52.24 778.11 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 778.11 m +543.04 778.11 l +545.2491 778.11 547.04 776.3191 547.04 774.11 c +547.04 597.97 l +547.04 595.7609 545.2491 593.97 543.04 593.97 c +52.24 593.97 l +50.0309 593.97 48.24 595.7609 48.24 597.97 c +48.24 774.11 l +48.24 776.3191 50.0309 778.11 52.24 778.11 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 755.285 Td +/F3.0 11 Tf +<766f6964206d79706f72745f5f50543a3a7365745f706172616d6574657228636f6e73742063686172202a706172616d657465725f6e616d652c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 740.545 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 725.805 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 711.065 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 696.325 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 681.585 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 666.845 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 652.105 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 637.365 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 622.625 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 607.885 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6989 Tw + +BT +48.24 570.006 Td +/F1.0 10.5 Tf +[<546865207472> 20.0195 <616e736c6174696f6e206f662074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.6989 Tw + +BT +165.3904 570.006 Td +/F3.0 10.5 Tf +<6f7574676f696e675f73656e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6989 Tw + +BT +233.6404 570.006 Td +/F1.0 10.5 Tf +<20746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.6989 Tw + +BT +252.2317 570.006 Td +/F3.0 10.5 Tf +<73656e645f6f7574676f696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6989 Tw + +BT +320.4817 570.006 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e206e6565647320736f6d6520706172> 20.0195 <616d6574657220666f726d617474696e67>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +7.4527 Tw + +BT +48.24 554.226 Td +/F1.0 10.5 Tf +<73696e63652074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +7.4527 Tw + +BT +110.1959 554.226 Td +/F3.0 10.5 Tf +<6f7574676f696e675f73656e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +7.4527 Tw + +BT +178.4459 554.226 Td +/F1.0 10.5 Tf +[<2068617320706172> 20.0195 <616d657465727320696e686572697465642066726f6d20796f7572205454> 20.0195 <434e2d3320737472756374757265732c207768696c65>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.1356 Tw + +BT +48.24 538.446 Td +/F3.0 10.5 Tf +<41627374726163745f536f636b6574> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.1356 Tw + +BT +126.99 538.446 Td +/F6.0 10.5 Tf + Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.1356 Tw + +BT +130.014 538.446 Td +/F3.0 10.5 Tf +<7320606f7574676f696e675f73656e64> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.1356 Tw + +BT +218.1496 538.446 Td +/F1.0 10.5 Tf +[<2068617320706172> 20.0195 <616d657465727320617320>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.1356 Tw + +BT +330.9977 538.446 Td +/F3.0 10.5 Tf +<28636861722a206d6573736167652c20696e74206d6573736167654c656e6774682c20696e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 522.666 Td +/F3.0 10.5 Tf +<636c69656e745f696429> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +100.74 522.666 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +5.7831 Tw + +BT +48.24 494.886 Td +/F1.0 10.5 Tf +<5468652073616d65206170706c69657320666f722074686520696e636f6d696e672066756e6374696f6e2063616c6c7320776865726520796f75206861766520746f20777269746520796f7572206f776e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 479.106 Td +/F3.0 10.5 Tf +<6d6573736167655f696e636f6d696e67> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +132.24 479.106 Td +/F1.0 10.5 Tf +<20746f20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +147.4335 479.106 Td +/F3.0 10.5 Tf +<696e636f6d696e675f6d657373616765> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +231.4335 479.106 Td +/F1.0 10.5 Tf +[<207472> 20.0195 <616e736c6174696f6e2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 451.326 Td +/F1.0 10.5 Tf +<4578616d706c653a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 435.51 m +543.04 435.51 l +545.2491 435.51 547.04 433.7191 547.04 431.51 c +547.04 270.11 l +547.04 267.9009 545.2491 266.11 543.04 266.11 c +52.24 266.11 l +50.0309 266.11 48.24 267.9009 48.24 270.11 c +48.24 431.51 l +48.24 433.7191 50.0309 435.51 52.24 435.51 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 435.51 m +543.04 435.51 l +545.2491 435.51 547.04 433.7191 547.04 431.51 c +547.04 270.11 l +547.04 267.9009 545.2491 266.11 543.04 266.11 c +52.24 266.11 l +50.0309 266.11 48.24 267.9009 48.24 270.11 c +48.24 431.51 l +48.24 433.7191 50.0309 435.51 52.24 435.51 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 412.685 Td +/F3.0 11 Tf +<766f6964206d79706f72745f5f50543a3a6f7574676f696e675f73656e6428636f6e7374205454434e335f5f537472756374757265262073656e645f70617229> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 397.945 Td +/F3.0 11 Tf +<7b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 383.205 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 368.465 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 353.725 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 338.985 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 324.245 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 309.505 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 294.765 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 280.025 Td +/F3.0 11 Tf +<7d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 230.086 Td +/F2.0 18 Tf +<46756e6374696f6e7320666f72204d616e6970756c6174696e672074686520536574206f66204576656e747320666f72> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 205.606 Td +/F2.0 18 Tf +[<57686963682074686520506f72742057> 49.8047 <61697473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 177.586 Td +/F1.0 10.5 Tf +[<41> 20.0195 <64642074686520666f6c6c6f77696e6720287669727475616c29206d656d6265722066756e6374696f6e7320746f20796f757220706f72742028636c61737320646566696e6974696f6e2920756e6368616e6765643a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3136> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +113 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 112 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F3.0 27 0 R +/F6.0 97 0 R +/F2.0 19 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +114 0 obj +[113 0 R /XYZ 0 254.11 null] +endobj +115 0 obj +<< /Limits [(_the_test_port) (warning_messages_in_case_SSL_connections_are_used)] +/Names [(_the_test_port) 52 0 R (_tips_and_tricks) 99 0 R (_to_receive_a_message) 88 0 R (_usage) 100 0 R (_using_ssl_on_top_of_a_tcp_connection) 121 0 R (_warning_messages) 145 0 R (_warning_messages_in_case_tcp_connections_are_used) 146 0 R (abstract-socket-test-port-parameters-in-the-test-port-configuration-file-if-the-transport-channel-is-tcp-ip) 66 0 R (deriving_the_test_port_class) 107 0 R (final_steps) 118 0 R (function_translations) 111 0 R (functions_for_manipulating_the_set_of_events_for_which_the_port_waits) 114 0 R (implementation_of_the_logger_functions) 110 0 R (map-unmap-the-test-port) 75 0 R (sending-receiving-messages) 36 0 R (using-ttcn-buffer-in-test-ports) 119 0 R (warning_messages_in_case_SSL_connections_are_used) 151 0 R] +>> +endobj +116 0 obj +<< /Length 12325 +>> +stream +q +q +/DeviceRGB cs +0.9608 0.9608 0.9608 scn +52.24 805.89 m +543.04 805.89 l +545.2491 805.89 547.04 804.0991 547.04 801.89 c +547.04 640.49 l +547.04 638.2809 545.2491 636.49 543.04 636.49 c +52.24 636.49 l +50.0309 636.49 48.24 638.2809 48.24 640.49 c +48.24 801.89 l +48.24 804.0991 50.0309 805.89 52.24 805.89 c +h +f +/DeviceRGB CS +0.8 0.8 0.8 SCN +0.75 w +52.24 805.89 m +543.04 805.89 l +545.2491 805.89 547.04 804.0991 547.04 801.89 c +547.04 640.49 l +547.04 638.2809 545.2491 636.49 543.04 636.49 c +52.24 636.49 l +50.0309 636.49 48.24 638.2809 48.24 640.49 c +48.24 801.89 l +48.24 804.0991 50.0309 805.89 52.24 805.89 c +h +S +Q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +59.24 783.065 Td +/F3.0 11 Tf +<766f6964204164645f46645f526561645f48616e646c657228696e7420666429207b2048616e646c65725f4164645f46645f52656164286664293b207d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 768.325 Td +/F3.0 11 Tf +<766f6964204164645f46645f57726974655f48616e646c657228696e7420666429207b2048616e646c65725f4164645f46645f5772697465286664293b207d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 753.585 Td +/F3.0 11 Tf +<766f69642052656d6f76655f46645f526561645f48616e646c657228696e7420666429207b2048616e646c65725f52656d6f76655f46645f52656164286664293b207d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 738.845 Td +/F3.0 11 Tf +<766f69642052656d6f76655f46645f57726974655f48616e646c657228696e7420666429207b2048616e646c65725f52656d6f76655f46645f5772697465286664293b207d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 724.105 Td +/F3.0 11 Tf +<766f69642052656d6f76655f46645f416c6c5f48616e646c65727328696e7420666429207b2048616e646c65725f52656d6f76655f4664286664293b207d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 709.365 Td +/F3.0 11 Tf +<766f69642048616e646c65725f556e696e7374616c6c2829207b20556e696e7374616c6c5f48616e646c657228293b207d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 694.625 Td +/F3.0 11 Tf +<766f69642054696d65725f5365745f48616e646c657228646f75626c652063616c6c5f696e74657276616c2c20626f6f6c65616e2069735f74696d656f7574203d20545255452c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 679.885 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 665.145 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 650.405 Td +/F3.0 11 Tf +<7d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.5 w +0.9333 0.9333 0.9333 SCN +102.4695 624.49 m +102.4695 553.37 l +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +60.3451 584.856 Td +/F2.0 10.5 Tf +[<4e4f> 20.0195 <5445>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.5694 Tw + +BT +114.4695 608.526 Td +/F1.0 10.5 Tf +[<5468657365206d656d6265722066756e6374696f6e732061726520726571756972656420616e6420757365642062> 20.0195 <79204162737472> 20.0195 <61637420536f636b> 20.0195 <65742e205468657920617265>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6658 Tw + +BT +114.4695 592.746 Td +/F1.0 10.5 Tf +[<646566696e656420696e204162737472> 20.0195 <61637420536f636b> 20.0195 <6574206173207669727475616c20616e642061726520746f206265206f76657272696464656e20696e207468652064657363656e64616e74>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4769 Tw + +BT +114.4695 576.966 Td +/F1.0 10.5 Tf +[<54> 29.7852 <65737420506f727420636c6173732e20546865792061726520696d706c656d656e74656420696e20746865202854> 29.7852 <65737420506f72742920636c61737320646566696e6974696f6e206f6e6c7920666f7220746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +114.4695 561.186 Td +/F1.0 10.5 Tf +[<73616b> 20.0195 <65206f662073696d706c6963697479> 89.8438 <2e29>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 517.346 Td +/F2.0 18 Tf +<46696e616c205374657073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8102 Tw + +BT +48.24 489.326 Td +/F1.0 10.5 Tf +[<46696e616c6c79> 89.8438 <2c207468652066756e6374696f6e20646566696e6974696f6e73206d75737420626520616464656420746f20746865206865616465722066696c65206163636f7264696e676c79> 89.8438 <2e205468656e2c20796f7520617265207265616479>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 473.546 Td +/F1.0 10.5 Tf +<746f20676f20616865616420616e6420646576656c6f7020796f7572207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 429.434 Td +/F2.0 22 Tf +<5573696e6720> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +115.802 429.434 Td +/F3.0 22 Tf +<5454434e5f427566666572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +236.802 429.434 Td +/F2.0 22 Tf +[<20696e2054> 29.7852 <65737420506f727473>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.79 Tw + +BT +48.24 400.246 Td +/F1.0 10.5 Tf +[<546865204162737472> 20.0195 <61637420536f636b> 20.0195 <65742075736573206120>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.79 Tw + +BT +186.0646 400.246 Td +/F3.0 10.5 Tf +<5454434e5f427566666572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.79 Tw + +BT +243.8146 400.246 Td +/F1.0 10.5 Tf +<20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +0.79 Tw + +BT +247.3241 400.246 Td +/F1.0 10.5 Tf +<5b325d> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.79 Tw + +BT +260.7326 400.246 Td +/F1.0 10.5 Tf +<20746f2073746f726520696e636f6d696e67206d65737361676520706f7274696f6e732e20496620746865207465737420706f727420616c736f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 384.466 Td +/F1.0 10.5 Tf +[<776f756c64206c696b> 20.0195 <6520746f2073746f726520696e636f6d696e67206d657373616765732c20686572652069732061206465736372697074696f6e20686f7720746f20646f20746861743a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2799 Tw + +BT +48.24 356.686 Td +/F1.0 10.5 Tf +<546865207465737420706f72742063616e206163636573732074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2799 Tw + +BT +188.9497 356.686 Td +/F3.0 10.5 Tf +<5454434e5f427566666572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2799 Tw + +BT +246.6997 356.686 Td +/F1.0 10.5 Tf +<207769746820> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.2799 Tw + +BT +275.4415 356.686 Td +/F3.0 10.5 Tf +<6765745f627566666572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2799 Tw + +BT +327.9415 356.686 Td +/F1.0 10.5 Tf +[<282920616e642063616e206f706572> 20.0195 <617465206f6e2069742e20496620746865207465737420706f72742075736573>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5545 Tw + +BT +48.24 340.906 Td +/F1.0 10.5 Tf +<7468652062756666657220746f2073746f726520646174612c206974206d757374207365742074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5545 Tw + +BT +246.5145 340.906 Td +/F3.0 10.5 Tf +<7474636e5f6275666665725f75736572636f6e74726f6c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5545 Tw + +BT +367.2645 340.906 Td +/F1.0 10.5 Tf +<207661726961626c6520746f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5545 Tw + +BT +428.3265 340.906 Td +/F5.0 10.5 Tf +<74727565> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5545 Tw + +BT +449.3265 340.906 Td +/F1.0 10.5 Tf +<2c20736f2074686174207468652041532077696c6c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 325.126 Td +/F1.0 10.5 Tf +<6e6f7420636c656172207468652062756666657220636f6e74656e742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 297.346 Td +/F1.0 10.5 Tf +[<496e2074686973206361736520746865207465737420706f72742063616e20757365207468652062756666657220696e2074686520666f6c6c6f77696e67207761> 20.0195 <79733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 269.566 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +66.24 269.566 Td +/F3.0 10.5 Tf +<6765745f627566666572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +118.74 269.566 Td +/F1.0 10.5 Tf +<282920746f2066657463682074686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +187.62 269.566 Td +/F3.0 10.5 Tf +<5454434e5f427566666572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +245.37 269.566 Td +/F1.0 10.5 Tf +<206173736f63696174656420776974682074686520636c69656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 247.786 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 247.786 Td +/F1.0 10.5 Tf +[<4f7074696f6e616c6c79206d6f6469667920636f6e74656e743b206f72207761697420666f7220636f6d706c65746520544c> 49.8047 <56>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 226.006 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.2893 Tw + +BT +66.24 226.006 Td +/F1.0 10.5 Tf +[<4f6e63652061206d65737361676520706f7274696f6e2069732073656e7420746f20746865205454> 20.0195 <434e2d3320746573742073756974652c20637574207468652073656e74206d6573736167652066726f6d2074686520627566666572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4943 Tw + +BT +66.24 210.226 Td +/F1.0 10.5 Tf +<62656361757365207468652041532077696c6c206e6f7420646f20746861742e20496e206361736520746865207465737420706f72742073696d706c792070617373656420746865206d65737361676520746f207468652074657374207375697465> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.234 Tw + +BT +66.24 194.446 Td +/F1.0 10.5 Tf +[<616e642075736573206e6f2073746f72> 20.0195 <616765206f662069742028652e672eca54> 20.0195 <43502054> 29.7852 <65737420506f7274292c2069742063616e206c6561766520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.234 Tw + +BT +349.421 194.446 Td +/F3.0 10.5 Tf +<7474636e5f6275666665725f75736572636f6e74726f6c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.234 Tw + +BT +470.171 194.446 Td +/F1.0 10.5 Tf +<20696e2066616c736520287768696368> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 178.666 Td +/F1.0 10.5 Tf +[<6973207468652064656661756c742076616c75652920736f2074686174207468652041532077696c6c2074616b> 20.0195 <652063617265206f662062756666657220636c65616e7570732e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 134.554 Td +/F2.0 22 Tf +[<5573696e672053534c206f6e2054> 29.7852 <6f70206f6620612054> 20.0195 <435020436f6e6e656374696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1766 Tw + +BT +48.24 105.366 Td +/F1.0 10.5 Tf +[<53534c2063616e2062652075736564206f6e20746f70206f66207468652054> 20.0195 <435020636f6e6e656374696f6e2e205468652061757468656e7469636174696f6e206d6f64652063616e20626520636f6e666967757265642076696120612074657374>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 89.586 Td +/F1.0 10.5 Tf +[<706f727420706172> 20.0195 <616d657465722e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3137> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +117 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 116 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F3.0 27 0 R +/F2.0 19 0 R +/F1.0 8 0 R +/F5.0 59 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +/Annots [120 0 R] +>> +endobj +118 0 obj +[117 0 R /XYZ 0 541.37 null] +endobj +119 0 obj +[117 0 R /XYZ 0 457.73 null] +endobj +120 0 obj +<< /Border [0 0 0] +/Dest (_2) +/Subtype /Link +/Rect [247.3241 397.18 260.7326 411.46] +/Type /Annot +>> +endobj +121 0 obj +[117 0 R /XYZ 0 162.85 null] +endobj +122 0 obj +<< /Length 13988 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 786.666 Td +/F2.0 18 Tf +<536572766572204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1326 Tw + +BT +48.24 758.646 Td +/F1.0 10.5 Tf +[<496e20736572766572206d6f64652c20666972737420612054> 20.0195 <435020736f636b> 20.0195 <657420697320637265617465642e20546865207365727665722073746172747320746f206c697374656e206f6e207468697320706f7274202875706f6e20746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.3173 Tw + +BT +48.24 742.866 Td +/F3.0 10.5 Tf +<757365725f6d6170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3173 Tw + +BT +90.24 742.866 Td +/F1.0 10.5 Tf +[<2829206f706572> 20.0195 <6174696f6e206f7220696e2063617365206f6620636f6e6e656374696f6e20415350732c2063616c6c696e672074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.3173 Tw + +BT +360.5324 742.866 Td +/F3.0 10.5 Tf +<6f70656e5f6c697374656e5f706f7274> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3173 Tw + +BT +444.5324 742.866 Td +/F1.0 10.5 Tf +[<2829206f706572> 20.0195 <6174696f6e292e204f6e63652061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6174 Tw + +BT +48.24 727.086 Td +/F1.0 10.5 Tf +[<54> 20.0195 <435020636f6e6e65637420726571756573742069732072656365697665642c207468652054> 20.0195 <435020636f6e6e656374696f6e206973207365742075702e2041667465722074686973207468652053534c2068616e647368616b> 20.0195 <6520626567696e732e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3796 Tw + +BT +48.24 711.306 Td +/F1.0 10.5 Tf +[<5468652053534c206973206d617070656420746f207468652066696c652064657363726970746f72206f66207468652054> 20.0195 <435020736f636b> 20.0195 <65742e205468652042494f2c20776869636820697320616e20492f4f206162737472> 20.0195 <616374696f6e2074686174>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6741 Tw + +BT +48.24 695.526 Td +/F1.0 10.5 Tf +[<6869646573206d616e> 20.0195 <79206f662074686520756e6465726c79696e6720492f4f2064657461696c732066726f6d20616e206170706c69636174696f6e2c206973206175746f6d61746963616c6c7920637265617465642062> 20.0195 <79204f70656e53534c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3726 Tw + +BT +48.24 679.746 Td +/F1.0 10.5 Tf +[<696e6865726974696e67207468652063686172> 20.0195 <6163746572697374696373206f662074686520736f636b> 20.0195 <657420286e6f6e2d626c6f636b696e67206d6f6465292e205468652042494f20697320636f6d706c6574656c79207472> 20.0195 <616e73706172656e742e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7048 Tw + +BT +48.24 663.966 Td +/F1.0 10.5 Tf +[<5468652073657276657220616c7761> 20.0195 <79732073656e64732069747320636572746966696361746520746f2074686520636c69656e742e20496620636f6e6669677572656420736f2c20746865207365727665722077696c6c207265717565737420746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8587 Tw + +BT +48.24 648.186 Td +/F1.0 10.5 Tf +<6365727469666963617465206f662074686520636c69656e7420616e6420636865636b20696620697420697320612076616c69642063657274696669636174652e204966206e6f742c207468652053534c20636f6e6e656374696f6e20697320726566757365642e204966> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3686 Tw + +BT +48.24 632.406 Td +/F1.0 10.5 Tf +<636f6e66696775726564206e6f7420746f20766572696679207468652063657274696669636174652c20746865207365727665722077696c6c206e6f7420726571756573742069742066726f6d2074686520636c69656e7420616e64207468652053534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6836 Tw + +BT +48.24 616.626 Td +/F1.0 10.5 Tf +<636f6e6e656374696f6e2069732061636365707465642e204966207573616765206f66207468652053534c2073657373696f6e20726573756d7074696f6e20697320656e61626c656420616e642074686520636c69656e742072656665727320746f2061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5616 Tw + +BT +48.24 600.846 Td +/F1.0 10.5 Tf +<70726576696f75732053534c2073657373696f6e2c20746865207365727665722077696c6c206163636570742069742c20756e6c657373206974206973206e6f7420666f756e6420696e207468652053534c20636f6e746578742063616368652e204f6e6365> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.795 Tw + +BT +48.24 585.066 Td +/F1.0 10.5 Tf +<74686520636f6e6e656374696f6e206973206e65676f7469617465642c20646174612063616e2062652073656e742f72656365697665642e205468652053534c20636f6e6e656374696f6e206973207368757420646f776e207573696e6720616e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.2702 Tw + +BT +48.24 569.286 Td +/F3.0 10.5 Tf +<756e6d6170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.2702 Tw + +BT +74.49 569.286 Td +/F1.0 10.5 Tf +[<2829206f706572> 20.0195 <6174696f6e2e205468652073687574646f776e2070726f6365737320646f6573206e6f7420666f6c6c6f7720746865207374616e646172643a20746865207365727665722073696d706c79207368757473>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 553.506 Td +/F1.0 10.5 Tf +[<646f776e20616e6420646f6573206e6f742065787065637420616e> 20.0195 <792061636b6e6f776c656467656d656e742066726f6d2074686520636c69656e742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.9681 Tw + +BT +48.24 525.726 Td +/F1.0 10.5 Tf +<436c69656e747320636f6e6e656374656420746f2074686520736572766572206172652064697374696e6775697368656420776974682074686569722066696c652064657363726970746f72206e756d626572732e205768656e2061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 509.946 Td +/F1.0 10.5 Tf +<6d6573736167652069732072656365697665642c207468652066696c652064657363726970746f72206e756d62657220697320616c736f207061737365642c20736f2074686520636c69656e742063616e206265206964656e7469666965642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 470.106 Td +/F2.0 18 Tf +<436c69656e74204d6f6465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1444 Tw + +BT +48.24 442.086 Td +/F1.0 10.5 Tf +[<496e20636c69656e74206d6f64652c20666972737420612054> 20.0195 <435020636f6e6e656374696f6e2069732072657175657374656420746f2074686520736572766572202875706f6e2074686520>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1444 Tw + +BT +419.431 442.086 Td +/F3.0 10.5 Tf +<757365725f6d6170> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1444 Tw + +BT +461.431 442.086 Td +/F1.0 10.5 Tf +[<2829206f706572> 20.0195 <6174696f6e206f7220696e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1412 Tw + +BT +48.24 426.306 Td +/F1.0 10.5 Tf +<63617365206f6620636f6e6e656374696f6e20415350732c2063616c6c696e672074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1412 Tw + +BT +228.3115 426.306 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1412 Tw + +BT +343.8115 426.306 Td +/F1.0 10.5 Tf +[<2829206f706572> 20.0195 <6174696f6e292e204f6e63652069742069732061636365707465642c207468652053534c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.5224 Tw + +BT +48.24 410.526 Td +/F1.0 10.5 Tf +<656e64706f696e7420697320637265617465642e20496620636f6e6669677572656420736f2c2074686520636c69656e7420747269657320746f20757365207468652053534c2073657373696f6e2049642066726f6d207468652070726576696f7573> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.2135 Tw + +BT +48.24 394.746 Td +/F1.0 10.5 Tf +<636f6e6e656374696f6e2c20696620617661696c61626c652028652e672eca6974206973206e6f742074686520666972737420636f6e6e656374696f6e292e204966206e6f2053534c2073657373696f6e20496420697320617661696c61626c652c206f7220746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0185 Tw + +BT +48.24 378.966 Td +/F1.0 10.5 Tf +[<73657276657220646f6573206e6f74206163636570742069742c20612066756c6c2068616e647368616b> 20.0195 <6520697320706572666f726d65642e20496620636f6e6669677572656420736f2c20746865206365727469666963617465206f6620746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0631 Tw + +BT +48.24 363.186 Td +/F1.0 10.5 Tf +[<7365727665722069732076657269666965642e2049662074686520766572696669636174696f6e206661696c732c207468652053534c20636f6e6e656374696f6e20697320696e7465727275707465642062> 20.0195 <792074686520636c69656e742e204966206e6f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4371 Tw + +BT +48.24 347.406 Td +/F1.0 10.5 Tf +<766572696669636174696f6e2072657175697265642c20746865207265636569766564206365727469666963617465206973207374696c6c2076657269666965642c20686f77657665722074686520726573756c7420646f6573206e6f742061666665637420746865> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 331.626 Td +/F1.0 10.5 Tf +<636f6e6e656374696f6e206576656e2074686f756768206974206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 291.786 Td +/F2.0 18 Tf +[<41> 20.0195 <757468656e7469636174696f6e20466c6f77>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 263.766 Td +/F1.0 10.5 Tf +[<496e2073756d6d617279> 89.8438 <2c207468652061757468656e7469636174696f6e20697320646f6e65206163636f7264696e6720746f207468697320666c6f773a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 235.986 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 235.986 Td +/F1.0 10.5 Tf +[<73736c2068616e647368616b> 20.0195 <6520626567696e7320286e657720636c69656e7420747269657320746f20636f6e6e65637429>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 214.206 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.61 Tw + +BT +66.24 214.206 Td +/F3.0 10.5 Tf +<7669727475616c20696e742073736c5f7665726966795f6365727469666963617465735f61745f68616e647368616b6528696e74207072657665726966795f6f6b2c20583530395f53544f52455f435458202a73736c5f63747829> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.61 Tw + +BT +547.04 214.206 Td +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 198.426 Td +/F1.0 10.5 Tf +[<69732063616c6c65642e20447572696e6720746869732068616e647368616b> 20.0195 <6520796f752063616e20706572666f726d206164646974696f6e616c2061757468656e7469636174696f6e2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 176.646 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.6971 Tw + +BT +66.24 176.646 Td +/F1.0 10.5 Tf +[<49662074686520636f6e6e656374696f6e2069732061636365707465642c207468652053534c2068616e647368616b> 20.0195 <652069732066696e697368656420616e642053534c2069732065737461626c69736865642e204e6f7720746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.7308 Tw + +BT +66.24 160.866 Td +/F1.0 10.5 Tf +<66756e6374696f6e207669727475616c20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +4.7308 Tw + +BT +157.3705 160.866 Td +/F3.0 10.5 Tf +<626f6f6c2073736c5f7665726966795f636572746966696361746573> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.7308 Tw + +BT +309.1013 160.866 Td +/F1.0 10.5 Tf +[<28292069732063616c6c656420776865726520796f75206d61> 20.0195 <7920706572666f726d206f74686572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 145.086 Td +/F1.0 10.5 Tf +<61757468656e7469636174696f6e20696620796f752077616e742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5779 Tw + +BT +48.24 117.306 Td +/F3.0 10.5 Tf +<73736c5f7665726966795f636572746966696361746573> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5779 Tw + +BT +168.99 117.306 Td +/F1.0 10.5 Tf +[<28292069732061207669727475616c2066756e6374696f6e2e2049742069732063616c6c6564206166746572207468652053534c20636f6e6e656374696f6e2069732075702e2054> 29.7852 <65737420706f727473>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.496 Tw + +BT +48.24 101.526 Td +/F1.0 10.5 Tf +[<6d61> 20.0195 <792075736520697420746f20636865636b206f746865722070656572> -29.7852 ] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1331 Tw + +BT +48.24 85.746 Td +/F1.0 10.5 Tf +<636f6e6e656374696f6e20697320636c6f7365642e20496e2063617365206f6620636c69656e74206d6f64652c20746865207465737420706f7274206578697473207769746820616e206572726f722028> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.1331 Tw + +BT +432.8034 85.746 Td +/F7.0 10.5 Tf +<766572696669636174696f6e5f6572726f72> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1331 Tw + +BT +527.3034 85.746 Td +/F1.0 10.5 Tf +<292e20496e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 69.966 Td +/F1.0 10.5 Tf +[<736572766572206d6f646520746865207465737420706f7274206a7573742072656d6f76657320636c69656e7420646174612c20627574206b> 20.0195 <656570732072756e6e696e672e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3138> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +123 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 122 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F7.0 127 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +124 0 obj +[123 0 R /XYZ 0 841.89 null] +endobj +125 0 obj +[123 0 R /XYZ 0 494.13 null] +endobj +126 0 obj +[123 0 R /XYZ 0 315.81 null] +endobj +127 0 obj +<< /Type /Font +/BaseFont /d420e1+mplus1mn-bold +/Subtype /TrueType +/FontDescriptor 379 0 R +/FirstChar 32 +/LastChar 255 +/Widths 381 0 R +/ToUnicode 380 0 R +>> +endobj +128 0 obj +<< /Length 10422 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 782.394 Td +/F2.0 22 Tf +[<41> 20.0195 <64617074696e6720446572697665642054> 29.7852 <65737420506f72747320746f20537570706f72742049507636>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 753.206 Td +/F1.0 10.5 Tf +[<44657269766564207465737420706f7274732073686f756c64206265207570646174656420696e2074686520666f6c6c6f77696e67207761> 20.0195 <7920746f20737570706f7274204950763420616e6420495076363a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 725.426 Td +/F1.0 10.5 Tf +<416c6c2063616c6c73206f662066756e6374696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 709.61 m +543.04 709.61 l +545.2491 709.61 547.04 707.8191 547.04 705.61 c +547.04 662.13 l +547.04 659.9209 545.2491 658.13 543.04 658.13 c +52.24 658.13 l +50.0309 658.13 48.24 659.9209 48.24 662.13 c +48.24 705.61 l +48.24 707.8191 50.0309 709.61 52.24 709.61 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 709.61 m +543.04 709.61 l +545.2491 709.61 547.04 707.8191 547.04 705.61 c +547.04 662.13 l +547.04 659.9209 545.2491 658.13 543.04 658.13 c +52.24 658.13 l +50.0309 658.13 48.24 659.9209 48.24 662.13 c +48.24 705.61 l +48.24 707.8191 50.0309 709.61 52.24 709.61 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 686.785 Td +/F3.0 11 Tf +<636f6e73742073747275637420736f636b616464725f696e2026206765745f72656d6f74655f616464722829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 672.045 Td +/F3.0 11 Tf +<636f6e73742073747275637420736f636b616464725f696e2026206765745f6c6f63616c5f616464722829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 634.166 Td +/F1.0 10.5 Tf +[<73686f756c642062652072656d6f7665642e20546865792063616e206265207265706c616365642062> 20.0195 <792063616c6c696e672074686573652066756e6374696f6e733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 618.35 m +543.04 618.35 l +545.2491 618.35 547.04 616.5591 547.04 614.35 c +547.04 541.39 l +547.04 539.1809 545.2491 537.39 543.04 537.39 c +52.24 537.39 l +50.0309 537.39 48.24 539.1809 48.24 541.39 c +48.24 614.35 l +48.24 616.5591 50.0309 618.35 52.24 618.35 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 618.35 m +543.04 618.35 l +545.2491 618.35 547.04 616.5591 547.04 614.35 c +547.04 541.39 l +547.04 539.1809 545.2491 537.39 543.04 537.39 c +52.24 537.39 l +50.0309 537.39 48.24 539.1809 48.24 541.39 c +48.24 614.35 l +48.24 616.5591 50.0309 618.35 52.24 618.35 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 595.525 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a206c6f63616c5f706f72745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 580.785 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a206c6f63616c5f616464726573735f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 566.045 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2072656d6f74655f706f72745f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 551.305 Td +/F3.0 11 Tf +<7669727475616c20636f6e737420636861722a2072656d6f74655f616464726573735f6e616d6528293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7796 Tw + +BT +48.24 513.426 Td +/F1.0 10.5 Tf +<5468652066756e6374696f6e20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.7796 Tw + +BT +116.2853 513.426 Td +/F3.0 10.5 Tf +<696e74206f70656e5f6c697374656e5f706f727428636f6e73742073747275637420736f636b616464725f696e2026206c6f63616c41646472293b> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7796 Tw + +BT +429.9335 513.426 Td +/F1.0 10.5 Tf +<20646f6573206e6f7420737570706f727420495076362e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 497.646 Td +/F1.0 10.5 Tf +<5468652066756e6374696f6e2062656c6f772073686f756c64206265207573656420696e73746561643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 472.05 Td +/F3.0 10.5 Tf +<696e74206f70656e5f6c697374656e5f706f727428636f6e737420636861722a206c6f63616c486f73746e616d652c20636f6e737420636861722a206c6f63616c536572766963656e616d65293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 445.866 Td +/F1.0 10.5 Tf +<5468652073616d652068617320746f20626520646f6e6520666f722074686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +209.6985 445.866 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +325.1985 445.866 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2e205265706c61636520616e> 20.0195 <792063616c6c206f66207468652066756e6374696f6e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 430.05 m +543.04 430.05 l +545.2491 430.05 547.04 428.2591 547.04 426.05 c +547.04 382.57 l +547.04 380.3609 545.2491 378.57 543.04 378.57 c +52.24 378.57 l +50.0309 378.57 48.24 380.3609 48.24 382.57 c +48.24 426.05 l +48.24 428.2591 50.0309 430.05 52.24 430.05 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 430.05 m +543.04 430.05 l +545.2491 430.05 547.04 428.2591 547.04 426.05 c +547.04 382.57 l +547.04 380.3609 545.2491 378.57 543.04 378.57 c +52.24 378.57 l +50.0309 378.57 48.24 380.3609 48.24 382.57 c +48.24 426.05 l +48.24 428.2591 50.0309 430.05 52.24 430.05 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 407.225 Td +/F3.0 11 Tf +<696e74206f70656e5f636c69656e745f636f6e6e656374696f6e28636f6e73742073747275637420736f636b616464725f696e2026206e65775f72656d6f74655f616464722c20636f6e737420737472756374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 392.485 Td +/F3.0 11 Tf +<736f636b616464725f696e2026206e65775f6c6f63616c5f6164647229> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 354.606 Td +/F1.0 10.5 Tf +<77697468207468652066756e6374696f6e3a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 338.79 m +543.04 338.79 l +545.2491 338.79 547.04 336.9991 547.04 334.79 c +547.04 291.31 l +547.04 289.1009 545.2491 287.31 543.04 287.31 c +52.24 287.31 l +50.0309 287.31 48.24 289.1009 48.24 291.31 c +48.24 334.79 l +48.24 336.9991 50.0309 338.79 52.24 338.79 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 338.79 m +543.04 338.79 l +545.2491 338.79 547.04 336.9991 547.04 334.79 c +547.04 291.31 l +547.04 289.1009 545.2491 287.31 543.04 287.31 c +52.24 287.31 l +50.0309 287.31 48.24 289.1009 48.24 291.31 c +48.24 334.79 l +48.24 336.9991 50.0309 338.79 52.24 338.79 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 315.965 Td +/F3.0 11 Tf +<696e74206f70656e5f636c69656e745f636f6e6e656374696f6e28636f6e737420636861722a2072656d6f7465486f73746e616d652c20636f6e737420636861722a2072656d6f7465536572766963652c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 301.225 Td +/F3.0 11 Tf +<636f6e737420636861722a206c6f63616c486f73746e616d652c20636f6e737420636861722a206c6f63616c53657276696365293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 263.346 Td +/F1.0 10.5 Tf +<49662074686520666f6c6c6f77696e672063616c6c6261636b2066756e6374696f6e206973206f76657272696464656e20696e207468652064657269766564207465737420706f72743a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 247.53 m +543.04 247.53 l +545.2491 247.53 547.04 245.7391 547.04 243.53 c +547.04 214.79 l +547.04 212.5809 545.2491 210.79 543.04 210.79 c +52.24 210.79 l +50.0309 210.79 48.24 212.5809 48.24 214.79 c +48.24 243.53 l +48.24 245.7391 50.0309 247.53 52.24 247.53 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 247.53 m +543.04 247.53 l +545.2491 247.53 547.04 245.7391 547.04 243.53 c +547.04 214.79 l +547.04 212.5809 545.2491 210.79 543.04 210.79 c +52.24 210.79 l +50.0309 210.79 48.24 212.5809 48.24 214.79 c +48.24 243.53 l +48.24 245.7391 50.0309 247.53 52.24 247.53 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 224.705 Td +/F3.0 11 Tf +<7669727475616c20766f696420706565725f636f6e6e656374656428696e7420636c69656e745f69642c20736f636b616464725f696e262072656d6f74655f61646472293b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 186.826 Td +/F1.0 10.5 Tf +<69742073686f756c642062652072656d6f76656420616e642074686520666f6c6c6f77696e672066756e6374696f6e2073686f756c64206265206f76657272696464656e20696e73746561643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 171.01 m +543.04 171.01 l +545.2491 171.01 547.04 169.2191 547.04 167.01 c +547.04 138.27 l +547.04 136.0609 545.2491 134.27 543.04 134.27 c +52.24 134.27 l +50.0309 134.27 48.24 136.0609 48.24 138.27 c +48.24 167.01 l +48.24 169.2191 50.0309 171.01 52.24 171.01 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 171.01 m +543.04 171.01 l +545.2491 171.01 547.04 169.2191 547.04 167.01 c +547.04 138.27 l +547.04 136.0609 545.2491 134.27 543.04 134.27 c +52.24 134.27 l +50.0309 134.27 48.24 136.0609 48.24 138.27 c +48.24 167.01 l +48.24 169.2191 50.0309 171.01 52.24 171.01 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 148.185 Td +/F3.0 11 Tf +<7669727475616c20766f696420706565725f636f6e6e656374656428696e7420636c69656e745f69642c20636f6e73742063686172202a20686f73742c20636f6e737420696e7420706f727429> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 110.306 Td +/F1.0 10.5 Tf +<54686520666f6c6c6f77696e672066756e6374696f6e2073686f756c64206e6f7420626520757365643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 84.71 Td +/F3.0 10.5 Tf +<766f6964206765745f686f73745f696428636f6e737420636861722a20686f73744e616d652c2073747275637420736f636b616464725f696e202a6164647229> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 58.526 Td +/F1.0 10.5 Tf +[<54686520736f636b> 20.0195 <6574204150492066756e6374696f6e20>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +168.9583 58.526 Td +/F3.0 10.5 Tf +<67657461646472696e666f> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +226.7083 58.526 Td +/F1.0 10.5 Tf +<2073686f756c64206265207573656420696e73746561642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3139> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +129 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 128 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +130 0 obj +[129 0 R /XYZ 0 841.89 null] +endobj +131 0 obj +<< /Length 11030 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 777.054 Td +/F2.0 27 Tf +<4572726f72204d65737361676573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 730.074 Td +/F2.0 22 Tf +[<4572726f72204d6573736167657320496e20436173652054> 20.0195 <435020436f6e6e656374696f6e7320417265>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 700.154 Td +/F2.0 22 Tf +<55736564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 673.15 Td +/F7.0 10.5 Tf +<506172616d657465722076616c7565203c76616c75653e206e6f74207265636f676e697a656420666f7220706172616d65746572203c6e616d653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 646.966 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +116.9625 646.966 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +153.7125 646.966 Td +/F1.0 10.5 Tf +[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c65206973206e6f74207265636f676e697a656420666f722074686520706172> 20.0195 <616d65746572203c6e616d653e2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 621.37 Td +/F7.0 10.5 Tf +<496e76616c696420696e707574206173205443505f7265636f6e6e6563745f617474656d70747320636f756e74657220676976656e3a203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 595.186 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +116.9625 595.186 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +153.7125 595.186 Td +/F1.0 10.5 Tf +[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c65206d757374206265206120706f7369746976652077686f6c65206e756d6265722e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 569.59 Td +/F7.0 10.5 Tf +<5443505f7265636f6e6e6563745f617474656d707473206d7573742062652067726561746572207468616e20302c203c76616c75653e20697320676976656e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9291 Tw + +BT +48.24 543.406 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.9291 Tw + +BT +118.8206 543.406 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9291 Tw + +BT +155.5706 543.406 Td +/F1.0 10.5 Tf +<20666f7220> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.9291 Tw + +BT +177.7462 543.406 Td +/F3.0 10.5 Tf +<5443505f7265636f6e6e6563745f617474656d707473> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9291 Tw + +BT +293.2462 543.406 Td +/F1.0 10.5 Tf +[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c65206d7573742062652067726561746572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 527.626 Td +/F1.0 10.5 Tf +<7468616e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +73.986 527.626 Td +/F5.0 10.5 Tf +<30> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +79.236 527.626 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 502.03 Td +/F7.0 10.5 Tf +<496e76616c696420696e707574206173205443505f7265636f6e6e6563745f64656c617920676976656e3a203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5493 Tw + +BT +48.24 475.846 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5493 Tw + +BT +118.0612 475.846 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5493 Tw + +BT +154.8112 475.846 Td +/F1.0 10.5 Tf +<20666f722074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5493 Tw + +BT +195.4666 475.846 Td +/F3.0 10.5 Tf +<5443505f7265636f6e6e6563745f64656c6179> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5493 Tw + +BT +295.2166 475.846 Td +/F1.0 10.5 Tf +[<20706172> 20.0195 <616d6574657220696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c65206d757374>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 460.066 Td +/F1.0 10.5 Tf +<626520612077686f6c65206e756d626572206e6f74206c657373207468616e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +214.098 460.066 Td +/F5.0 10.5 Tf +<30> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +219.348 460.066 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 434.47 Td +/F7.0 10.5 Tf +<5443505f7265636f6e6e6563745f64656c6179206d757374206e6f74206265206c657373207468616e20302c203c76616c75653e20697320676976656e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5493 Tw + +BT +48.24 408.286 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5493 Tw + +BT +118.0612 408.286 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5493 Tw + +BT +154.8112 408.286 Td +/F1.0 10.5 Tf +<20666f722074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.5493 Tw + +BT +195.4666 408.286 Td +/F3.0 10.5 Tf +<5443505f7265636f6e6e6563745f64656c6179> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5493 Tw + +BT +295.2166 408.286 Td +/F1.0 10.5 Tf +[<20706172> 20.0195 <616d6574657220696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c65206d757374>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 392.506 Td +/F1.0 10.5 Tf +<626520612077686f6c65206e756d626572206e6f74206c657373207468616e20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +214.098 392.506 Td +/F5.0 10.5 Tf +<30> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +219.348 392.506 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 366.91 Td +/F7.0 10.5 Tf +<496e76616c696420696e70757420617320706f7274206e756d62657220676976656e3a203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1642 Tw + +BT +48.24 340.726 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.1642 Tw + +BT +121.291 340.726 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1642 Tw + +BT +158.041 340.726 Td +/F1.0 10.5 Tf +[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652069732063616e6e6f7420626520696e74657270726574656420617320612076616c696420706f7274>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 324.946 Td +/F1.0 10.5 Tf +<6e756d6265722028652e672eca737472696e6720697320676976656e292e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 299.35 Td +/F7.0 10.5 Tf +<506f7274206e756d626572206d757374206265206265747765656e203020616e642036353533352c203c76616c75653e20697320676976656e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1642 Tw + +BT +48.24 273.166 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.1642 Tw + +BT +121.291 273.166 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.1642 Tw + +BT +158.041 273.166 Td +/F1.0 10.5 Tf +[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652069732063616e6e6f7420626520696e74657270726574656420617320612076616c696420706f7274>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 257.386 Td +/F1.0 10.5 Tf +[<6e756d6265722e20506f7274206e756d62657273206d75737420626520696e207468652072> 20.0195 <616e676520302e2e36353533352e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 231.79 Td +/F7.0 10.5 Tf +<496e76616c696420696e70757420617320736572766572206261636b6c6f6720676976656e3a203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4439 Tw + +BT +48.24 205.606 Td +/F1.0 10.5 Tf +<5468652073706563696669656420> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.4439 Tw + +BT +119.8504 205.606 Td +/F3.0 10.5 Tf +<3c76616c75653e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4439 Tw + +BT +156.6004 205.606 Td +/F1.0 10.5 Tf +[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652069732063616e6e6f7420626520696e74657270726574656420617320612076616c696420736572766572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 189.826 Td +/F1.0 10.5 Tf +<6261636b6c6f67206e756d6265722028652e672eca737472696e6720697320676976656e292e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 164.23 Td +/F7.0 10.5 Tf +<43616e6e6f742061636365707420636f6e6e656374696f6e20617420706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 138.046 Td +/F1.0 10.5 Tf +[<436f6e6e656374696f6e20636f756c64206e6f74206265206163636570746564206f6e2054> 20.0195 <435020736f636b> 20.0195 <65742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 112.45 Td +/F7.0 10.5 Tf +<4572726f72207768656e2072656164696e67207468652072656365697665642054435020504455> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 86.266 Td +/F1.0 10.5 Tf +[<53> 20.0195 <797374656d206572726f72206f6363757272656420647572696e672072656164696e672066726f6d207468652054> 20.0195 <435020736f636b> 20.0195 <65742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 60.67 Td +/F7.0 10.5 Tf +<43616e6e6f74206f70656e20736f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3230> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +132 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 131 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F7.0 127 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F5.0 59 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +133 0 obj +[132 0 R /XYZ 0 841.89 null] +endobj +134 0 obj +[132 0 R /XYZ 0 758.37 null] +endobj +135 0 obj +<< /Limits [(_close_the_listening_port) (_fundamental_concepts)] +/Names [(_close_the_listening_port) 82 0 R (_closing_down) 41 0 R (_compilation) 44 0 R (_configuration) 60 0 R (_connection_asps) 33 0 R (_error_handling) 38 0 R (_error_messages) 133 0 R (_error_messages_in_case_tcp_connections_are_used) 134 0 R (_error_reporting) 98 0 R (_functionality) 23 0 R (_fundamental_concepts) 26 0 R] +>> +endobj +136 0 obj +<< /Length 8000 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 793.926 Td +/F1.0 10.5 Tf +[<4372656174696f6e206f6620746865206c697374656e657220736f636b> 20.0195 <6574206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 768.33 Td +/F7.0 10.5 Tf +<536574736f636b6f7074206661696c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 742.146 Td +/F1.0 10.5 Tf +[<53657474696e67206f6620736f636b> 20.0195 <6574206f7074696f6e73206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 716.55 Td +/F7.0 10.5 Tf +<43616e6e6f742062696e6420746f20706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 690.366 Td +/F1.0 10.5 Tf +[<42696e64696e67206f66206120736f636b> 20.0195 <657420746f206120706f7274206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 664.77 Td +/F7.0 10.5 Tf +<43616e6e6f74206c697374656e20617420706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 638.586 Td +/F1.0 10.5 Tf +[<4c697374656e206f6e20746865206c697374656e657220736f636b> 20.0195 <6574206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 612.99 Td +/F7.0 10.5 Tf +<676574736f636b6e616d6528292073797374656d2063616c6c206661696c6564206f6e207468652073657276657220736f636b6574> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 586.806 Td +/F1.0 10.5 Tf +<546865207175657279206f6620746865206c697374656e696e6720706f7274206e756d626572206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 561.21 Td +/F7.0 10.5 Tf +<4162737472616374536f636b65743a206765746e616d65696e666f3a203c6572726f723e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 535.026 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +69.66 535.026 Td +/F3.0 10.5 Tf +<6765746e616d65696e666f> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +127.41 535.026 Td +/F1.0 10.5 Tf +<2066756e6374696f6e2072657475726e656420616e206572726f722e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 509.43 Td +/F7.0 10.5 Tf +<67657461646472696e666f3a203c6572726f72746578743e20666f7220686f7374203c686f73743e2073657276696365203c736572766963653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 483.246 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +69.66 483.246 Td +/F3.0 10.5 Tf +<67657461646472696e666f> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +127.41 483.246 Td +/F1.0 10.5 Tf +<2066756e6374696f6e2072657475726e656420616e206572726f722e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 457.65 Td +/F7.0 10.5 Tf +<4d616c666f726d6564206d6573736167653a20696e76616c6964206c656e6774683a203c6c656e6774683e2e20546865206c656e6774682073686f756c64206265206174206c65617374203c6c656e6768743e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 431.466 Td +/F1.0 10.5 Tf +<546865206d65737361676520726563656976656420636f6e7461696e7320696e76616c6964206c656e67746820696e666f726d6174696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 405.87 Td +/F7.0 10.5 Tf +<416c7265616479207472696564203c76616c75653e2074696d65732c20676976696e67207570> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.7015 Tw + +BT +48.24 379.686 Td +/F1.0 10.5 Tf +<54686520646561646c6f636b20636f756e746572206578636565647320746865206861726420636f646564206c696d6974207768656e20747279696e6720746f20636f6e6e65637420746f20612073657276657220696e20636c69656e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0722 Tw + +BT +48.24 363.906 Td +/F1.0 10.5 Tf +[<6d6f64652e205768656e20636f6e6e656374696e67206f6e206120736f636b> 20.0195 <65742c20736f6d6574696d657320697420697320756e7375636365737366756c2e20546865206e6578742074727920757375616c6c7920736f6c76657320746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0942 Tw + +BT +48.24 348.126 Td +/F1.0 10.5 Tf +<70726f626c656d20616e642074686520636f6e6e656374696f6e2077696c6c206265207375636365737366756c6c792061636365707465642e20546865207465737420706f7274207265747269657320746f20636f6e6e6563742061732061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 332.346 Td +/F1.0 10.5 Tf +<776f726b61726f756e642e20546865206e756d626572206f6620747269657320686f7765766572206c696d6974656420746f2061766f69642068616e67696e6720746865207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3914 Tw + +BT +48.24 304.566 Td +/F1.0 10.5 Tf +[<446966666572656e74206f706572> 20.0195 <6174696e672073797374656d732062656861766520696e206120646966666572656e74207761> 20.0195 <79> 89.8438 <2e20546869732070726f626c656d2069732072> 20.0195 <617265206f6e20536f6c617269732c20556e697820616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 288.786 Td +/F1.0 10.5 Tf +<4c696e75782073797374656d732c20627574206d756368206d6f7265206f6674656e206f6e2043796777696e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 263.19 Td +/F7.0 10.5 Tf +<43616e6e6f7420636f6e6e65637420746f20736572766572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 237.006 Td +/F1.0 10.5 Tf +[<436f6e6e656374696f6e20746f206120736572766572206f6e2054> 20.0195 <4350206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 211.41 Td +/F7.0 10.5 Tf +<436f6e6e656374696f6e2077617320696e74657272757074656420627920746865206f746865722073696465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 185.226 Td +/F1.0 10.5 Tf +[<5468652054> 20.0195 <4350206f722053534c20636f6e6e656374696f6e2077617320726566757365642062> 20.0195 <7920746865206f7468657220706565722c206f722062726f6b> 20.0195 <656e2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 159.63 Td +/F7.0 10.5 Tf +<436c69656e74204964206e6f742073706563696669656420616c74686f756768206e6f74206f6e6c79203120636c69656e7420657869737473> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 133.446 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 107.85 Td +/F7.0 10.5 Tf +<5468657265206973206e6f20636f6e6e656374696f6e20616c6976652c207573652074686520604153505f5443505f436f6e6e65637427206265666f72652073656e64696e6720616e797468696e672e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.6289 Tw + +BT +48.24 81.666 Td +/F1.0 10.5 Tf +[<416e20617474656d707420776173206d6164652062> 20.0195 <7920746865207465737420706f727420746f2073656e642064617461206265666f72652073657474696e6720757020616e> 20.0195 <7920636f6e6e656374696f6e2e20546865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 65.886 Td +/F3.0 10.5 Tf +<6f70656e5f636c69656e745f636f6e6e656374696f6e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +163.74 65.886 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2068617320746f2062652063616c6c6564206265666f72652073656e64696e6720616e> 20.0195 <7920646174612e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3231> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +137 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 136 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F7.0 127 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +138 0 obj +<< /Length 6355 +>> +stream +q +/DeviceRGB cs +0.6941 0.1294 0.2745 scn +/DeviceRGB CS +0.6941 0.1294 0.2745 SCN + +BT +48.24 796.86 Td +/F7.0 10.5 Tf +<53656e642073797374656d2063616c6c206661696c65643a205468657265206973206e6f20636c69656e7420636f6e6e656374656420746f207468652054435020736572766572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 770.676 Td +/F1.0 10.5 Tf +[<412073656e64206f706572> 20.0195 <6174696f6e20697320706572666f726d656420746f2061206e6f6e2d6578697374696e6720636c69656e742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 745.08 Td +/F7.0 10.5 Tf +<53656e642073797374656d2063616c6c206661696c65643a203c76616c75653e20627974657320776572652073656e7420696e7374656164206f66203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 718.896 Td +/F1.0 10.5 Tf +[<5468652073656e64206f706572> 20.0195 <6174696f6e206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 693.3 Td +/F7.0 10.5 Tf +<3c6e616d653e206973206e6f7420646566696e656420696e2074686520636f6e66696775726174696f6e2066696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.6864 Tw + +BT +48.24 667.116 Td +/F1.0 10.5 Tf +[<546865207465737420706f727420706172> 20.0195 <616d65746572203c6e616d653e206973206e6f7420646566696e656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c20616c74686f75676820697473>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 651.336 Td +/F1.0 10.5 Tf +<70726573656e6365206973206d616e6461746f727920286f7220636f6e646974696f6e616c20616e642074686520636f6e646974696f6e2069732074727565292e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 625.74 Td +/F7.0 10.5 Tf +<54686520686f7374206e616d65203c6e616d653e206973206e6f742076616c696420696e2074686520636f6e66696775726174696f6e2066696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 599.556 Td +/F1.0 10.5 Tf +[<54686520686f7374206e616d652073706563696669656420696e2074686520636f6e6669677572> 20.0195 <6174696f6e2066696c6520636f756c64206e6f74206265207265736f6c7665642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 573.96 Td +/F7.0 10.5 Tf +<4e756d626572206f6620636c69656e74733c3e30206275742063616e6e6f742067657420666972737420636c69656e742c2070726f6772616d6d696e67206572726f72> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 547.776 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 522.18 Td +/F7.0 10.5 Tf +<496e646578203c76616c75653e2065786365656473206c656e677468206f662070656572206c697374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 495.996 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 470.4 Td +/F7.0 10.5 Tf +<41627374726163745f536f636b65743a3a6765745f706565723a20436c69656e74203c76616c75653e20646f6573206e6f74206578697374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 444.216 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 418.62 Td +/F7.0 10.5 Tf +<496e76616c696420436c69656e7420496420697320676976656e3a203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 392.436 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 366.84 Td +/F7.0 10.5 Tf +<50656572203c76616c75653e20646f6573206e6f74206578697374> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 340.656 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 315.06 Td +/F7.0 10.5 Tf +<53657420626c6f636b696e67206d6f6465206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 288.876 Td +/F1.0 10.5 Tf +[<54> 29.7852 <65737420706f727420636f756c64206e6f742073657420736f636b> 20.0195 <6574206f7074696f6e3a20>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +233.2941 288.876 Td +/F3.0 10.5 Tf +<4f5f4e4f4e424c4f434b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 244.764 Td +/F2.0 22 Tf +[<41> 20.0195 <64646974696f6e616c204572726f72204d6573736167657320496e20436173652053534c>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 214.844 Td +/F2.0 22 Tf +<436f6e6e656374696f6e73204172652055736564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6193 Tw + +BT +48.24 185.656 Td +/F1.0 10.5 Tf +<41706172742066726f6d207468652070726576696f75736c79206d656e74696f6e6564206572726f72206d657373616765732c2074686520666f6c6c6f77696e67206d6573736167657320617265207573656420696e20636173652053534c> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 169.876 Td +/F1.0 10.5 Tf +<697320757365643a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 144.28 Td +/F7.0 10.5 Tf +<4e6f2053534c2043545820666f756e642c2053534c206e6f7420696e697469616c697a6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 118.096 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 92.5 Td +/F7.0 10.5 Tf +<4372656174696f6e206f662053534c206f626a656374206661696c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 66.316 Td +/F1.0 10.5 Tf +<4372656174696f6e206f66207468652053534c206f626a656374206973206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3232> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +139 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 138 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F7.0 127 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F2.0 19 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +140 0 obj +[139 0 R /XYZ 0 273.06 null] +endobj +141 0 obj +<< /Length 7793 +>> +stream +q +/DeviceRGB cs +0.6941 0.1294 0.2745 scn +/DeviceRGB CS +0.6941 0.1294 0.2745 SCN + +BT +48.24 796.86 Td +/F7.0 10.5 Tf +<42696e64696e67206f662053534c206f626a65637420746f20736f636b6574206661696c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 770.676 Td +/F1.0 10.5 Tf +[<5468652053534c206f626a65637420636f756c64206e6f7420626520626f756e6420746f207468652054> 20.0195 <435020736f636b> 20.0195 <65742e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 745.08 Td +/F7.0 10.5 Tf +<53534c206572726f72206f63637572726564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7782 Tw + +BT +48.24 718.896 Td +/F1.0 10.5 Tf +[<412067656e6572> 20.0195 <616c2053534c206572726f72206f636375727265642e20436865636b20746865207465737420706f7274206c6f677320746f207365652070726576696f7573206572726f72206d657373616765732073686f77696e6720746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 703.116 Td +/F1.0 10.5 Tf +<7265616c2070726f626c656d2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 677.52 Td +/F7.0 10.5 Tf +<3c6e616d653e206973206e6f7420646566696e656420696e2074686520636f6e66696775726174696f6e2066696c6520616c74686f756768203c76616c75653e3d796573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.9608 0.9608 0.9608 scn +52.24 663.3 m +543.04 663.3 l +545.2491 663.3 547.04 661.5091 547.04 659.3 c +547.04 630.56 l +547.04 628.3509 545.2491 626.56 543.04 626.56 c +52.24 626.56 l +50.0309 626.56 48.24 628.3509 48.24 630.56 c +48.24 659.3 l +48.24 661.5091 50.0309 663.3 52.24 663.3 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 663.3 m +543.04 663.3 l +545.2491 663.3 547.04 661.5091 547.04 659.3 c +547.04 630.56 l +547.04 628.3509 545.2491 626.56 543.04 626.56 c +52.24 626.56 l +50.0309 626.56 48.24 628.3509 48.24 630.56 c +48.24 659.3 l +48.24 661.5091 50.0309 663.3 52.24 663.3 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 640.475 Td +/F3.0 11 Tf +<3c6e616d653e3a2073736c5f7472757374656443416c6973745f66696c655f6e616d6528292c203c76616c75653e3a2073736c5f76657269667963657274696669636174655f6e616d652829> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 604.78 Td +/F7.0 10.5 Tf +<4e6f2053534c206461746120617661696c61626c6520666f7220636c69656e74203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 578.596 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 553.0 Td +/F7.0 10.5 Tf +<436f756c64206e6f7420726561642066726f6d202f6465762f7572616e646f6d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 526.816 Td +/F1.0 10.5 Tf +[<5468652072656164206f706572> 20.0195 <6174696f6e206f6e2074686520696e7374616c6c65642072> 20.0195 <616e646f6d20646576696365206973206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 501.22 Td +/F7.0 10.5 Tf +<436f756c64206e6f7420726561642066726f6d202f6465762f72616e646f6d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 475.036 Td +/F1.0 10.5 Tf +[<5468652072656164206f706572> 20.0195 <6174696f6e206f6e2074686520696e7374616c6c65642072> 20.0195 <616e646f6d20646576696365206973206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 449.44 Td +/F7.0 10.5 Tf +<436f756c64206e6f742073656564207468652050736575646f2052616e646f6d204e756d6265722047656e657261746f72207769746820656e6f7567682064617461> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 423.256 Td +/F1.0 10.5 Tf +[<4173206e6f2072> 20.0195 <616e646f6d206465766963657320666f756e642c206120776f726b61726f756e64206973207573656420746f2073656564207468652053534c2050524e472e205468652073656564696e67206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 397.66 Td +/F7.0 10.5 Tf +<53534c206d6574686f64206372656174696f6e206661696c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 371.476 Td +/F1.0 10.5 Tf +<546865206372656174696f6e206f66207468652053534c206d6574686f64206f626a656374206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 345.88 Td +/F7.0 10.5 Tf +<53534c20636f6e74657874206372656174696f6e206661696c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 319.696 Td +/F1.0 10.5 Tf +<546865206372656174696f6e206f66207468652053534c20636f6e74657874206f626a656374206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 294.1 Td +/F7.0 10.5 Tf +<43616e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +63.99 294.1 Td +/F6.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +67.014 294.1 Td +/F7.0 10.5 Tf +<7420726561642063657274696669636174652066696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 267.916 Td +/F1.0 10.5 Tf +<546865207370656369666965642063657274696669636174652066696c6520636f756c64206e6f7420626520726561642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 242.32 Td +/F7.0 10.5 Tf +<43616e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +63.99 242.32 Td +/F6.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +67.014 242.32 Td +/F7.0 10.5 Tf +<742072656164206b65792066696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 216.136 Td +/F1.0 10.5 Tf +[<546865207370656369666965642070726976617465206b> 20.0195 <65792066696c6520636f756c64206e6f7420626520726561642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 190.54 Td +/F7.0 10.5 Tf +<43616e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +63.99 190.54 Td +/F6.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +67.014 190.54 Td +/F7.0 10.5 Tf +<742072656164207472757374656443416c6973742066696c65> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 164.356 Td +/F1.0 10.5 Tf +<54686520737065636966696564206365727469666963617465206f66207468652074727573746564204341732066696c6520636f756c64206e6f7420626520726561642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 138.76 Td +/F7.0 10.5 Tf +<436970686572206c697374207265737472696374696f6e206661696c656420666f72203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 112.576 Td +/F1.0 10.5 Tf +<5468652073706563696669656420636970686572207265737472696374696f6e206c69737420636f756c64206e6f74206265207365742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 86.98 Td +/F7.0 10.5 Tf +<41637469766174696f6e206f662053534c2073657373696f6e20726573756d7074696f6e206661696c6564206f6e20736572766572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 60.796 Td +/F1.0 10.5 Tf +<5468652061637469766174696f6e206f66207468652053534c2073657373696f6e20726573756d7074696f6e206f6e2074686520736572766572206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3233> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +142 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 141 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F7.0 127 0 R +/F1.0 8 0 R +/F3.0 27 0 R +/F6.0 97 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +143 0 obj +<< /Length 9230 +>> +stream +q +/DeviceRGB cs +0.6941 0.1294 0.2745 scn +/DeviceRGB CS +0.6941 0.1294 0.2745 SCN + +BT +48.24 796.11 Td +/F7.0 10.5 Tf +<556e6b6e6f776e2053534c206572726f7220636f6465203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 769.926 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 720.474 Td +/F2.0 27 Tf +[<57> 49.8047 <61726e696e67204d65737361676573>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 673.494 Td +/F2.0 22 Tf +[<57> 49.8047 <61726e696e67204d6573736167657320496e20436173652054> 20.0195 <435020436f6e6e656374696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 643.574 Td +/F2.0 22 Tf +<4172652055736564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 616.57 Td +/F7.0 10.5 Tf +<4572726f72207768656e2072656164696e67207468652072656365697665642054435020504455> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 590.386 Td +/F1.0 10.5 Tf +[<5468652072656365697665642054> 20.0195 <4350205044552063616e6e6f7420626520726561642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +2.4269 Tw + +BT +48.24 564.79 Td +/F7.0 10.5 Tf +<636f6e6e65637428292072657475726e6564206572726f7220636f6465204541444452494e5553452e205065726861707320746869732069732061206b65726e656c206275672e20547279696e6720746f20636f6e6e656374> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 551.845 Td +/F7.0 10.5 Tf +<616761696e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.2714 Tw + +BT +48.24 525.661 Td +/F1.0 10.5 Tf +[<5768656e20636f6e6e656374696e67206f6e206120736f636b> 20.0195 <65742c20736f6d6574696d657320697420697320756e7375636365737366756c2e20546865206e6578742074727920757375616c6c7920736f6c766573207468652070726f626c656d>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5668 Tw + +BT +48.24 509.881 Td +/F1.0 10.5 Tf +<616e642074686520636f6e6e656374696f6e2077696c6c206265207375636365737366756c6c792061636365707465642e20546865207465737420706f7274207265747269657320746f20636f6e6e656374206173206120776f726b61726f756e642e> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 494.101 Td +/F1.0 10.5 Tf +<546865206e756d626572206f6620747269657320686f7765766572206c696d6974656420746f2061766f69642068616e67696e6720746865207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3914 Tw + +BT +48.24 466.321 Td +/F1.0 10.5 Tf +[<446966666572656e74206f706572> 20.0195 <6174696e672073797374656d732062656861766520696e206120646966666572656e74207761> 20.0195 <79> 89.8438 <2e20546869732070726f626c656d2069732072> 20.0195 <617265206f6e20536f6c617269732c20556e697820616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 450.541 Td +/F1.0 10.5 Tf +<4c696e75782073797374656d732c20627574206d756368206d6f7265206f6674656e206f6e2043796777696e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 424.945 Td +/F7.0 10.5 Tf +<436f6e6e65637428292072657475726e6564206572726f7220636f6465203c76616c75653e2c20747279696e6720746f20636f6e6e65637420616761696e2028544350207265636f6e6e656374206d6f646529> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5521 Tw + +BT +48.24 398.761 Td +/F1.0 10.5 Tf +[<5768656e20636f6e6e656374696e67206f6e206120736f636b> 20.0195 <65742c20736f6d6574696d657320697420697320756e7375636365737366756c20616e642074686520676976656e206572726f7220636f6465207761732072657475726e65642e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.8496 Tw + +BT +48.24 382.981 Td +/F1.0 10.5 Tf +<546865206e6578742074727920757375616c6c7920736f6c766573207468652070726f626c656d20616e642074686520636f6e6e656374696f6e2077696c6c206265207375636365737366756c6c792061636365707465642e205468652074657374> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 367.201 Td +/F1.0 10.5 Tf +<706f7274207265747269657320746f20636f6e6e656374206173206120776f726b61726f756e642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 341.605 Td +/F7.0 10.5 Tf +<54435020636f6e6e656374696f6e2077617320696e74657272757074656420627920746865206f7468657220736964652c20747279696e6720746f207265636f6e6e65637420616761696e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.1251 Tw + +BT +48.24 315.421 Td +/F1.0 10.5 Tf +[<5468652054> 20.0195 <4350206f722053534c20636f6e6e656374696f6e2077617320726566757365642062> 20.0195 <7920746865206f7468657220706565722c206f72206974207761732062726f6b> 20.0195 <656e2e20546865207465737420706f727420747269657320746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 299.641 Td +/F1.0 10.5 Tf +<7265636f6e6e65637420616761696e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 274.045 Td +/F7.0 10.5 Tf +<544350207265636f6e6e656374207375636365737366756c6c792066696e69736865642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 247.861 Td +/F1.0 10.5 Tf +<54686973207761726e696e67206d65737361676520697320676976656e20696620746865207265636f6e6e656374696f6e20776173207375636365737366756c2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 222.265 Td +/F7.0 10.5 Tf +<506172616d65746572203c6e616d653e20686173206e6f206d65616e696e67206966207573655f636f6e6e656374696f6e5f4153507320697320757365642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 196.081 Td +/F1.0 10.5 Tf +[<5468657265206973206e6f20656666656374206f662073657474696e67207468697320706172> 20.0195 <616d65746572207768656e20>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +293.4778 196.081 Td +/F3.0 10.5 Tf +<7573655f636f6e6e656374696f6e5f41535073> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +393.2278 196.081 Td +/F1.0 10.5 Tf +<2069732073657420746f20> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +435.9943 196.081 Td +/F5.0 10.5 Tf +<2279657322> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +462.2443 196.081 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 170.485 Td +/F7.0 10.5 Tf +<41627374726163745f536f636b65743a3a72656d6f76655f636c69656e743a203c76616c75653e2069732074686520736572766572206c697374656e696e6720706f72742c2063616e206e6f742062652072656d6f76656421> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6111 Tw + +BT +48.24 144.301 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.6111 Tw + +BT +70.2711 144.301 Td +/F3.0 10.5 Tf +<636c69656e745f6964> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6111 Tw + +BT +117.5211 144.301 Td +/F1.0 10.5 Tf +<20676976656e20696e2074686520> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.6111 Tw + +BT +184.4039 144.301 Td +/F3.0 10.5 Tf +<72656d6f76655f636c69656e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.6111 Tw + +BT +252.6539 144.301 Td +/F1.0 10.5 Tf +[<2066756e6374696f6e2069732063757272656e746c7920757365642061732074686520736572766572> -29.7852 ] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 128.521 Td +/F1.0 10.5 Tf +[<63616e206e6f742062652072656d6f7665642e2054> 29.7852 <6f20636c6f73652074686520736572766572206c697374656e696e6720706f72742c207573652074686520>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +359.4413 128.521 Td +/F3.0 10.5 Tf +<636c6f73655f6c697374656e5f706f7274> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +448.6913 128.521 Td +/F1.0 10.5 Tf +<2066756e6374696f6e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 102.925 Td +/F7.0 10.5 Tf +<436c69656e74203c76616c75653e20686173206e6f74206265656e2072656d6f7665642c2070726f6772616d6d696e67206572726f72> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 76.741 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.8792 Tw + +BT +48.24 51.145 Td +/F7.0 10.5 Tf +<53656e64696e672064617461206f6e2066696c652064657363726970746f72203c76616c75653e2e5468652073656e64696e67206f7065726174696f6e20776f756c6420626c6f636b20657865637574696f6e2e205468652073697a65> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3234> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +144 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 143 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F7.0 127 0 R +/F1.0 8 0 R +/F2.0 19 0 R +/F3.0 27 0 R +/F5.0 59 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +145 0 obj +[144 0 R /XYZ 0 754.11 null] +endobj +146 0 obj +[144 0 R /XYZ 0 701.79 null] +endobj +147 0 obj +<< /Length 8421 +>> +stream +q +/DeviceRGB cs +0.6941 0.1294 0.2745 scn +/DeviceRGB CS +0.6941 0.1294 0.2745 SCN + +BT +48.24 796.86 Td +/F7.0 10.5 Tf +<6f6620746865206f7574676f696e67206275666665722077617320696e637265617365642066726f6d203c6f6c645f76616c75653e20746f203c6e65775f76616c75653e2062797465732e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0536 Tw + +BT +48.24 770.676 Td +/F1.0 10.5 Tf +[<5768656e20746865204162737472> 20.0195 <61637420536f636b> 20.0195 <657420697320757365642077697468206e6f6e2d626c6f636b696e6720736f636b> 20.0195 <65742c206966207468652073656e64696e67206f706572> 20.0195 <6174696f6e20776f756c6420626c6f636b2c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9731 Tw + +BT +48.24 754.896 Td +/F1.0 10.5 Tf +[<6669727374207468652073697a65206f66207468652073656e64696e672062756666657220697320696e637265617365642e205468697320697320746865206669727374207374657020746f2061766f69642054> 20.0195 <435020646561646c6f636b2e20496e20746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 739.116 Td +/F1.0 10.5 Tf +[<7365636f6e642073746570207468652054> 29.7852 <65737420506f72742077696c6c2074727920746f207265636569766520736f6d6520646174612e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +0.8115 Tw + +BT +48.24 713.52 Td +/F7.0 10.5 Tf +<53656e64696e672064617461206f6e2066696c652064657363726970746f72203c76616c75653e2e5468652073656e64696e67206f7065726174696f6e20776f756c6420626c6f636b20657865637574696f6e20616e64206974206973> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.1286 Tw + +BT +48.24 700.575 Td +/F7.0 10.5 Tf +<6e6f7420706f737369626c6520746f206675727468657220696e637265617365207468652073697a65206f6620746865206f7574676f696e67206275666665722e20547279696e6720746f2070726f6365737320696e636f6d696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 687.63 Td +/F7.0 10.5 Tf +<6461746120746f2061766f696420646561646c6f636b2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0536 Tw + +BT +48.24 661.446 Td +/F1.0 10.5 Tf +[<5768656e20746865204162737472> 20.0195 <61637420536f636b> 20.0195 <657420697320757365642077697468206e6f6e2d626c6f636b696e6720736f636b> 20.0195 <65742c206966207468652073656e64696e67206f706572> 20.0195 <6174696f6e20776f756c6420626c6f636b2c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7353 Tw + +BT +48.24 645.666 Td +/F1.0 10.5 Tf +[<616e64207468652073697a65206f6620746865206f7574676f696e67206275666665722063616e6e6f7420626520696e637265617365642c207468652054> 29.7852 <65737420506f727420747269657320746f207265636569766520736f6d65206461746120746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 629.886 Td +/F1.0 10.5 Tf +<61766f696420646561646c6f636b2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 604.29 Td +/F7.0 10.5 Tf +<53797374656d2063616c6c2066636e746c28465f474554464c29206661696c6564206f6e2066696c652064657363726970746f722025642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 580.29 Td +/F7.0 10.5 Tf +<53797374656d2063616c6c2066636e746c28465f534554464c29206661696c6564206f6e2066696c652064657363726970746f722025642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 556.29 Td +/F7.0 10.5 Tf +<536574736f636b6f7074206661696c6564207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c706f72743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 530.106 Td +/F1.0 10.5 Tf +<54686520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +69.66 530.106 Td +/F3.0 10.5 Tf +<736574736f636b6f7074> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +122.16 530.106 Td +/F1.0 10.5 Tf +<2066756e6374696f6e206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 504.51 Td +/F7.0 10.5 Tf +<43616e6e6f742062696e6420746f20706f7274207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c706f72743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 478.326 Td +/F1.0 10.5 Tf +<5468652062696e642073797374656d2063616c6c206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 452.73 Td +/F7.0 10.5 Tf +<43616e6e6f74206c697374656e20617420706f7274207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c706f72743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 426.546 Td +/F1.0 10.5 Tf +<546865206c697374656e2073797374656d2063616c6c206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.8786 Tw + +BT +48.24 400.95 Td +/F7.0 10.5 Tf +<676574736f636b6e616d6528292073797374656d2063616c6c206661696c6564206f6e207468652073657276657220736f636b6574207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 388.005 Td +/F7.0 10.5 Tf +<3c706f72743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 361.821 Td +/F1.0 10.5 Tf +<54686520676574736f636b6e616d652073797374656d2063616c6c206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 336.225 Td +/F7.0 10.5 Tf +<67657461646472696e666f3a203c6572726f72746578723e20666f7220686f7374203c686f73743e2073657276696365203c736572766963653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 310.041 Td +/F1.0 10.5 Tf +<5468652067657461646472696e666f2073797374656d2063616c6c206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +1.8786 Tw + +BT +48.24 284.445 Td +/F7.0 10.5 Tf +<6765746e616d65696e666f28292073797374656d2063616c6c206661696c6564206f6e207468652073657276657220736f636b6574207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 271.5 Td +/F7.0 10.5 Tf +<3c706f72743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 245.316 Td +/F1.0 10.5 Tf +<546865206765746e616d65696e666f2073797374656d2063616c6c206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 219.72 Td +/F7.0 10.5 Tf +<43616e6e6f74206f70656e20736f636b6574207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c6572726f72746578743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 193.536 Td +/F1.0 10.5 Tf +[<54686520736f636b> 20.0195 <65742073797374656d2063616c6c206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 167.94 Td +/F7.0 10.5 Tf +<536574736f636b6f7074206661696c6564207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c6572726f726d6573736167653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 141.756 Td +/F1.0 10.5 Tf +[<54686520736574736f636b> 20.0195 <6f70742073797374656d2063616c6c206661696c65642e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 116.16 Td +/F7.0 10.5 Tf +<43616e6e6f742062696e6420746f20706f7274207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c6572726f72746578743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 89.976 Td +/F1.0 10.5 Tf +<5468652062696e642073797374656d2063616c6c206661696c65642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 64.38 Td +/F7.0 10.5 Tf +<416c7265616479207472696564203c6e3e2074696d65732c20676976696e67207570207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c6572726f72746578743e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3235> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +148 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 147 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F7.0 127 0 R +/F1.0 8 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +>> +endobj +149 0 obj +<< /Length 7665 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +1.7015 Tw + +BT +48.24 794.676 Td +/F1.0 10.5 Tf +<54686520646561646c6f636b20636f756e746572206578636565647320746865206861726420636f646564206c696d6974207768656e20747279696e6720746f20636f6e6e65637420746f20612073657276657220696e20636c69656e74> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.0722 Tw + +BT +48.24 778.896 Td +/F1.0 10.5 Tf +[<6d6f64652e205768656e20636f6e6e656374696e67206f6e206120736f636b> 20.0195 <65742c20736f6d6574696d657320697420697320756e7375636365737366756c2e20546865206e6578742074727920757375616c6c7920736f6c76657320746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.0942 Tw + +BT +48.24 763.116 Td +/F1.0 10.5 Tf +<70726f626c656d20616e642074686520636f6e6e656374696f6e2077696c6c206265207375636365737366756c6c792061636365707465642e20546865207465737420706f7274207265747269657320746f20636f6e6e6563742061732061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 747.336 Td +/F1.0 10.5 Tf +<776f726b61726f756e642e20546865206e756d626572206f6620747269657320686f7765766572206c696d6974656420746f2061766f69642068616e67696e6720746865207465737420706f72742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.3914 Tw + +BT +48.24 719.556 Td +/F1.0 10.5 Tf +[<446966666572656e74206f706572> 20.0195 <6174696e672073797374656d732062656861766520696e206120646966666572656e74207761> 20.0195 <79> 89.8438 <2e20546869732070726f626c656d2069732072> 20.0195 <617265206f6e20536f6c617269732c20556e697820616e64>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 703.776 Td +/F1.0 10.5 Tf +<4c696e75782073797374656d732c20627574206d756368206d6f7265206f6674656e206f6e2043796777696e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 659.664 Td +/F2.0 22 Tf +[<57> 49.8047 <61726e696e67204d6573736167657320496e20436173652053534c20436f6e6e656374696f6e73>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 629.744 Td +/F2.0 22 Tf +<4172652055736564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 602.74 Td +/F7.0 10.5 Tf +<5761726e696e673a207261636520636f6e646974696f6e207768696c652073657474696e672063757272656e7420636c69656e74206f626a65637420706f696e7465722e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 576.556 Td +/F1.0 10.5 Tf +<5468652063757272656e7420636c69656e74206f626a65637420706f696e74657220697320616c7265616479207365742e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 550.96 Td +/F7.0 10.5 Tf +<436f6e6e656374696f6e2066726f6d20636c69656e74203c76616c75653e2069732072656675736564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 524.776 Td +/F1.0 10.5 Tf +<54686520636f6e6e656374696f6e2066726f6d206120636c69656e74206973207265667573656420696e20746865207365727665722e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 499.18 Td +/F7.0 10.5 Tf +<436f6e6e656374696f6e20746f207365727665722069732072656675736564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 472.996 Td +/F1.0 10.5 Tf +[<54686520636f6e6e656374696f6e2066726f6d2074686520636c69656e7420697320726566757365642062> 20.0195 <7920746865207365727665722e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 447.4 Td +/F7.0 10.5 Tf +<53657276657220646964206e6f742073656e6420612073657373696f6e204944> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 421.216 Td +/F1.0 10.5 Tf +<5468652053534c2073657276657220646964206e6f742073656e6420612073657373696f6e2049442e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 395.62 Td +/F7.0 10.5 Tf +<566572696669636174696f6e206661696c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 369.436 Td +/F1.0 10.5 Tf +<54686520766572696669636174696f6e206f6620746865206f746865722073696465206973206661696c65642e2054686520636f6e6e656374696f6e2077696c6c206265207368757420646f776e2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 343.84 Td +/F7.0 10.5 Tf +<53534c206f626a656374206e6f7420666f756e6420666f7220636c69656e74203c76616c75653e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 317.656 Td +/F1.0 10.5 Tf +<49742073686f756c64206e657665722073686f772075702e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 292.06 Td +/F7.0 10.5 Tf +<53534c5f536f636b65743a3a726563656976655f6d6573736167655f6f6e5f66643a2053534c20636f6e6e656374696f6e2077617320696e74657272757074656420627920746865206f746865722073696465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.7244 Tw + +BT +48.24 265.876 Td +/F1.0 10.5 Tf +<54686520544c532f53534c20636f6e6e656374696f6e20686173206265656e20636c6f7365642e204966207468652070726f746f636f6c2076657273696f6e2069732053534c20332e30206f7220544c5320312e302c2074686973207761726e696e67> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.1929 Tw + +BT +48.24 250.096 Td +/F1.0 10.5 Tf +<61707065617273206f6e6c79206966206120636c6f7375726520616c65727420686173206f6363757272656420696e207468652070726f746f636f6c2c20692e652eca69662074686520636f6e6e656374696f6e20686173206265656e20636c6f736564> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.1041 Tw + +BT +48.24 234.316 Td +/F1.0 10.5 Tf +[<636c65616e6c79> 89.8438 <2e204e6f7465207468617420696e2074686973206361736520697420646f6573206e6f74206e65636573736172696c7920696e64696361746520746861742074686520756e6465726c79696e67207472> 20.0195 <616e73706f727420686173206265656e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 218.536 Td +/F1.0 10.5 Tf +<636c6f7365642e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 192.94 Td +/F7.0 10.5 Tf +<4f74686572207369646520646f6573206e6f742068617665206365727469666963617465> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 166.756 Td +/F1.0 10.5 Tf +<546865206f746865722073696465206f66207468652053534c20636f6e6e656374696f6e20646f6573206e6f74206861766520612063657274696669636174652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 141.16 Td +/F7.0 10.5 Tf +<536f6c61726973207061746368657320746f2070726f766964652072616e646f6d2067656e65726174696f6e206465766963657320617265206e6f7420696e7374616c6c6564> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.3944 Tw + +BT +48.24 114.976 Td +/F1.0 10.5 Tf +[<536f6c61726973207061746368657320746f2070726f766964652072> 20.0195 <616e646f6d2067656e6572> 20.0195 <6174696f6e206465766963657320617265206e6f7420696e7374616c6c65642e204120776f726b61726f756e642077696c6c2062652075736564>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 99.196 Td +/F1.0 10.5 Tf +<746f2073656564207468652050524e472e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +48.24 73.6 Td +/F7.0 10.5 Tf +<50726976617465206b657920646f6573206e6f74206d6174636820746865206365727469666963617465207075626c6963206b6579> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3236> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +150 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 149 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F2.0 19 0 R +/F7.0 127 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +>> +endobj +151 0 obj +[150 0 R /XYZ 0 687.96 null] +endobj +152 0 obj +<< /Length 7686 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 794.676 Td +/F1.0 10.5 Tf +[<5468652070726976617465206b> 20.0195 <65792073706563696669656420666f7220746865207465737420706f727420646f6573206e6f74206d61746368207769746820746865207075626c6963206b> 20.0195 <6579> 89.8438 <2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 745.224 Td +/F2.0 27 Tf +[<54> 29.7852 <65726d696e6f6c6f6779>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 714.576 Td +/F2.0 10.5 Tf +[<536f636b> 20.0195 <6574733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4108 Tw + +BT +48.24 698.796 Td +/F1.0 10.5 Tf +[<54686520736f636b> 20.0195 <65742069732061206d6574686f6420666f7220636f6d6d756e69636174696f6e206265747765656e206120636c69656e742070726f6772> 20.0195 <616d20616e642061207365727665722070726f6772> 20.0195 <616d20696e2061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.4106 Tw + +BT +48.24 683.016 Td +/F1.0 10.5 Tf +[<6e6574776f726b2e204120736f636b> 20.0195 <657420697320646566696e6564206173202274686520656e64706f696e7420696e206120636f6e6e656374696f6e> 40.0391 <222e20536f636b> 20.0195 <65747320617265206372656174656420616e64207573656420776974682061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +5.2202 Tw + +BT +48.24 667.236 Td +/F1.0 10.5 Tf +[<736574206f662070726f6772> 20.0195 <616d6d696e67207265717565737473206f72202266756e6374696f6e2063616c6c732220736f6d6574696d65732063616c6c65642074686520736f636b> 20.0195 <657473206170706c69636174696f6e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.0739 Tw + +BT +48.24 651.456 Td +/F1.0 10.5 Tf +[<70726f6772> 20.0195 <616d6d696e6720696e746572666163652028415049292e20546865206d6f737420636f6d6d6f6e20736f636b> 20.0195 <65742041504920697320746865204265726b> 20.0195 <656c657920554e49582043206c616e6775616765>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.658 Tw + +BT +48.24 635.676 Td +/F1.0 10.5 Tf +[<696e7465726661636520666f7220736f636b> 20.0195 <6574732e20536f636b> 20.0195 <6574732063616e20616c736f206265207573656420666f7220636f6d6d756e69636174696f6e206265747765656e2070726f6365737365732077697468696e20746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 619.896 Td +/F1.0 10.5 Tf +<73616d6520636f6d70757465722e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 592.116 Td +/F2.0 10.5 Tf +[<426c6f636b696e6720616e64206e6f6e2d626c6f636b696e6720736f636b> 20.0195 <6574733a>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.5219 Tw + +BT +48.24 576.336 Td +/F1.0 10.5 Tf +[<5573696e67206120626c6f636b696e6720736f636b> 20.0195 <65742c20736f6d6520736f636b> 20.0195 <6574206f706572> 20.0195 <6174696f6e73202873656e642c20726563656976652c20636f6e6e6563742c20616363657074292077696c6c20626c6f636b20756e74696c20746865>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.1886 Tw + +BT +48.24 560.556 Td +/F1.0 10.5 Tf +[<6f706572> 20.0195 <6174696f6e2069732066696e6973686564206f7220616e206572726f72206f63637572732e205573696e672061206e6f6e2d626c6f636b696e6720736f636b> 20.0195 <65742c207468657365206f706572> 20.0195 <6174696f6e732077696c6c206e65766572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 544.776 Td +/F1.0 10.5 Tf +<626c6f636b206275742072657475726e207769746820616e206572726f7220616e642073657420> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.6941 0.1294 0.2745 scn +0.6941 0.1294 0.2745 SCN + +BT +241.5555 544.776 Td +/F3.0 10.5 Tf +<6572726e6f> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +267.8055 544.776 Td +/F1.0 10.5 Tf +<20746f2074686520617070726f7072696174652076616c75652e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 516.996 Td +/F2.0 10.5 Tf +<4f70656e53534c3a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.9081 Tw + +BT +48.24 501.216 Td +/F1.0 10.5 Tf +[<546865204f70656e53534c2050726f6a656374206973206120636f6c6c61626f72> 20.0195 <6174697665206566666f727420746f20646576656c6f70206120726f627573742c20636f6d6d65726369616c2d6772> 20.0195 <6164652c2066756c6c2d66656174757265642c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.4408 Tw + +BT +48.24 485.436 Td +/F1.0 10.5 Tf +[<616e64206f70656e20736f7572636520746f6f6c6b697420696d706c656d656e74696e67207468652053656375726520536f636b> 20.0195 <657473204c61> 20.0195 <796572202853534c2076322f76332920616e64205472> 20.0195 <616e73706f7274204c61> 20.0195 <796572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.2266 Tw + +BT +48.24 469.656 Td +/F1.0 10.5 Tf +[<53656375726974792028544c53207631292070726f746f636f6c732061732077656c6c20617320612066756c6c2d737472656e6774682067656e6572> 20.0195 <616c20707572706f73652063727970746f6772> 20.0195 <617068> 20.0195 <79206c696272> 20.0195 <617279> 89.8438 <2e2046> 40.0391 <6f72>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 453.876 Td +/F1.0 10.5 Tf +<6d6f726520696e666f726d6174696f6e206f6e20746865204f70656e53534c2070726f6a6563742073656520> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +278.8935 453.876 Td +/F1.0 10.5 Tf +<5b335d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 404.424 Td +/F2.0 27 Tf +<416262726576696174696f6e73> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 373.776 Td +/F2.0 10.5 Tf +<4153> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 354.996 Td +/F1.0 10.5 Tf +[<4162737472> 20.0195 <61637420536f636b> 20.0195 <6574>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 327.216 Td +/F2.0 10.5 Tf +<415350> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 308.436 Td +/F1.0 10.5 Tf +[<4162737472> 20.0195 <6163742053657276696365205072696d6974697665>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 280.656 Td +/F2.0 10.5 Tf +<49507634> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 261.876 Td +/F1.0 10.5 Tf +<496e7465726e65742050726f746f636f6c2076657273696f6e2034> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 234.096 Td +/F2.0 10.5 Tf +<49507636> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 215.316 Td +/F1.0 10.5 Tf +<496e7465726e65742050726f746f636f6c2076657273696f6e2036> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 187.536 Td +/F2.0 10.5 Tf +<50454d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 168.756 Td +/F1.0 10.5 Tf +<5072697661637920456e68616e636564204d61696c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 140.976 Td +/F2.0 10.5 Tf +[<52> 20.0195 <5445>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 122.196 Td +/F1.0 10.5 Tf +<52756e2d54696d6520456e7669726f6e6d656e74> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 94.416 Td +/F2.0 10.5 Tf +<53534c> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 75.636 Td +/F1.0 10.5 Tf +[<53656375726520536f636b> 20.0195 <657473204c61> 20.0195 <796572>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +535.978 14.388 Td +/F1.0 9 Tf +<3237> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +153 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 152 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +/F2.0 19 0 R +/F3.0 27 0 R +>> +/XObject << /Stamp1 288 0 R +>> +>> +/Annots [155 0 R] +>> +endobj +154 0 obj +[153 0 R /XYZ 0 778.86 null] +endobj +155 0 obj +<< /Border [0 0 0] +/Dest (_3) +/Subtype /Link +/Rect [278.8935 450.81 292.302 465.09] +/Type /Annot +>> +endobj +156 0 obj +[153 0 R /XYZ 0 438.06 null] +endobj +157 0 obj +<< /Length 2665 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +48.24 793.926 Td +/F2.0 10.5 Tf +<535554> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 775.146 Td +/F1.0 10.5 Tf +[<53> 20.0195 <797374656d20556e6465722054> 29.7852 <657374>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 747.366 Td +/F2.0 10.5 Tf +[<54> 20.0195 <4350>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 728.586 Td +/F1.0 10.5 Tf +[<5472> 20.0195 <616e736d697373696f6e20436f6e74726f6c2050726f746f636f6c>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 700.806 Td +/F2.0 10.5 Tf +<544c53> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 682.026 Td +/F1.0 10.5 Tf +[<5472> 20.0195 <616e73706f7274204c61> 20.0195 <796572205365637572697479>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 654.246 Td +/F2.0 10.5 Tf +[<5454> 20.0195 <434e2d33>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +63.24 635.466 Td +/F1.0 10.5 Tf +[<54> 29.7852 <657374696e6720616e642054> 29.7852 <65737420436f6e74726f6c204e6f746174696f6e2076657273696f6e2033>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 586.014 Td +/F2.0 27 Tf +<5265666572656e636573> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 555.366 Td +/F1.0 10.5 Tf +<5b315d204554534920455320323031203837332d3120283230303229> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 539.586 Td +/F1.0 10.5 Tf +[<5468652054> 29.7852 <657374696e6720616e642054> 29.7852 <65737420436f6e74726f6c204e6f746174696f6e2076657273696f6e20332e205061727420313a20436f7265204c616e6775616765>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 511.806 Td +/F1.0 10.5 Tf +[<5b325d205573657220477569646520666f7220544954> 60.0586 <414e205454> 20.0195 <434ed0332054> 29.7852 <657374204578656375746f72>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 484.026 Td +/F1.0 10.5 Tf +<5b335d204f70656e53534c20746f6f6c6b6974> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 468.246 Td +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2588 0.5451 0.7922 scn +0.2588 0.5451 0.7922 SCN + +BT +48.24 468.246 Td +/F1.0 10.5 Tf +[<687474703a2f2f777777> 69.8242 <2e6f70656e73736c2e6f7267>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp2 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3238> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +158 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 157 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 19 0 R +/F1.0 8 0 R +>> +/XObject << /Stamp2 289 0 R +>> +>> +/Annots [163 0 R] +>> +endobj +159 0 obj +[158 0 R /XYZ 0 619.65 null] +endobj +160 0 obj +[158 0 R /XYZ 0 567.33 null] +endobj +161 0 obj +[158 0 R /XYZ 0 523.77 null] +endobj +162 0 obj +[158 0 R /XYZ 0 495.99 null] +endobj +163 0 obj +<< /Border [0 0 0] +/A << /Type /Action +/S /URI +/URI (http://www.openssl.org) +>> +/Subtype /Link +/Rect [48.24 465.18 163.6788 479.46] +/Type /Annot +>> +endobj +164 0 obj +<< /Border [0 0 0] +/Dest (_about_this_document) +/Subtype /Link +/Rect [48.24 748.79 156.6105 763.07] +/Type /Annot +>> +endobj +165 0 obj +<< /Border [0 0 0] +/Dest (_about_this_document) +/Subtype /Link +/Rect [541.1705 748.79 547.04 763.07] +/Type /Annot +>> +endobj +166 0 obj +<< /Border [0 0 0] +/Dest (_how_to_read_this_document) +/Subtype /Link +/Rect [60.24 730.31 201.801 744.59] +/Type /Annot +>> +endobj +167 0 obj +<< /Border [0 0 0] +/Dest (_how_to_read_this_document) +/Subtype /Link +/Rect [541.1705 730.31 547.04 744.59] +/Type /Annot +>> +endobj +168 0 obj +<< /Border [0 0 0] +/Dest (_presumed_knowledge) +/Subtype /Link +/Rect [60.24 711.83 169.02 726.11] +/Type /Annot +>> +endobj +169 0 obj +<< /Border [0 0 0] +/Dest (_presumed_knowledge) +/Subtype /Link +/Rect [541.1705 711.83 547.04 726.11] +/Type /Annot +>> +endobj +170 0 obj +<< /Border [0 0 0] +/Dest (_functionality) +/Subtype /Link +/Rect [48.24 693.35 115.02 707.63] +/Type /Annot +>> +endobj +171 0 obj +<< /Border [0 0 0] +/Dest (_functionality) +/Subtype /Link +/Rect [541.1705 693.35 547.04 707.63] +/Type /Annot +>> +endobj +172 0 obj +<< /Border [0 0 0] +/Dest (_system_requirements) +/Subtype /Link +/Rect [60.24 674.87 168.5683 689.15] +/Type /Annot +>> +endobj +173 0 obj +<< /Border [0 0 0] +/Dest (_system_requirements) +/Subtype /Link +/Rect [541.1705 674.87 547.04 689.15] +/Type /Annot +>> +endobj +174 0 obj +<< /Border [0 0 0] +/Dest (_fundamental_concepts) +/Subtype /Link +/Rect [60.24 656.39 174.984 670.67] +/Type /Annot +>> +endobj +175 0 obj +<< /Border [0 0 0] +/Dest (_fundamental_concepts) +/Subtype /Link +/Rect [541.1705 656.39 547.04 670.67] +/Type /Annot +>> +endobj +176 0 obj +<< /Border [0 0 0] +/Dest (_module_structure) +/Subtype /Link +/Rect [72.24 637.91 159.9045 652.19] +/Type /Annot +>> +endobj +177 0 obj +<< /Border [0 0 0] +/Dest (_module_structure) +/Subtype /Link +/Rect [541.1705 637.91 547.04 652.19] +/Type /Annot +>> +endobj +178 0 obj +<< /Border [0 0 0] +/Dest (_start_procedure) +/Subtype /Link +/Rect [60.24 619.43 138.6855 633.71] +/Type /Annot +>> +endobj +179 0 obj +<< /Border [0 0 0] +/Dest (_start_procedure) +/Subtype /Link +/Rect [541.1705 619.43 547.04 633.71] +/Type /Annot +>> +endobj +180 0 obj +<< /Border [0 0 0] +/Dest (_connection_asps) +/Subtype /Link +/Rect [72.24 600.95 155.841 615.23] +/Type /Annot +>> +endobj +181 0 obj +<< /Border [0 0 0] +/Dest (_connection_asps) +/Subtype /Link +/Rect [541.1705 600.95 547.04 615.23] +/Type /Annot +>> +endobj +182 0 obj +<< /Border [0 0 0] +/Dest (_server_mode) +/Subtype /Link +/Rect [72.24 582.47 135.8175 596.75] +/Type /Annot +>> +endobj +183 0 obj +<< /Border [0 0 0] +/Dest (_server_mode) +/Subtype /Link +/Rect [541.1705 582.47 547.04 596.75] +/Type /Annot +>> +endobj +184 0 obj +<< /Border [0 0 0] +/Dest (_client_mode) +/Subtype /Link +/Rect [72.24 563.99 132.0375 578.27] +/Type /Annot +>> +endobj +185 0 obj +<< /Border [0 0 0] +/Dest (_client_mode) +/Subtype /Link +/Rect [541.1705 563.99 547.04 578.27] +/Type /Annot +>> +endobj +186 0 obj +<< /Border [0 0 0] +/Dest (sending-receiving-messages) +/Subtype /Link +/Rect [60.24 545.51 201.591 559.79] +/Type /Annot +>> +endobj +187 0 obj +<< /Border [0 0 0] +/Dest (sending-receiving-messages) +/Subtype /Link +/Rect [541.1705 545.51 547.04 559.79] +/Type /Annot +>> +endobj +188 0 obj +<< /Border [0 0 0] +/Dest (_logging) +/Subtype /Link +/Rect [60.24 527.03 99.909 541.31] +/Type /Annot +>> +endobj +189 0 obj +<< /Border [0 0 0] +/Dest (_logging) +/Subtype /Link +/Rect [541.1705 527.03 547.04 541.31] +/Type /Annot +>> +endobj +190 0 obj +<< /Border [0 0 0] +/Dest (_error_handling) +/Subtype /Link +/Rect [60.24 508.55 136.848 522.83] +/Type /Annot +>> +endobj +191 0 obj +<< /Border [0 0 0] +/Dest (_error_handling) +/Subtype /Link +/Rect [541.1705 508.55 547.04 522.83] +/Type /Annot +>> +endobj +192 0 obj +<< /Border [0 0 0] +/Dest (_closing_down) +/Subtype /Link +/Rect [60.24 490.07 128.721 504.35] +/Type /Annot +>> +endobj +193 0 obj +<< /Border [0 0 0] +/Dest (_closing_down) +/Subtype /Link +/Rect [541.1705 490.07 547.04 504.35] +/Type /Annot +>> +endobj +194 0 obj +<< /Border [0 0 0] +/Dest (_ipv6_support) +/Subtype /Link +/Rect [60.24 471.59 125.0355 485.87] +/Type /Annot +>> +endobj +195 0 obj +<< /Border [0 0 0] +/Dest (_ipv6_support) +/Subtype /Link +/Rect [541.1705 471.59 547.04 485.87] +/Type /Annot +>> +endobj +196 0 obj +<< /Border [0 0 0] +/Dest (_ssl_functionality) +/Subtype /Link +/Rect [60.24 453.11 147.684 467.39] +/Type /Annot +>> +endobj +197 0 obj +<< /Border [0 0 0] +/Dest (_ssl_functionality) +/Subtype /Link +/Rect [541.1705 453.11 547.04 467.39] +/Type /Annot +>> +endobj +198 0 obj +<< /Border [0 0 0] +/Dest (_compilation) +/Subtype /Link +/Rect [72.24 434.63 133.4655 448.91] +/Type /Annot +>> +endobj +199 0 obj +<< /Border [0 0 0] +/Dest (_compilation) +/Subtype /Link +/Rect [541.1705 434.63 547.04 448.91] +/Type /Annot +>> +endobj +200 0 obj +<< /Border [0 0 0] +/Dest (_authentication) +/Subtype /Link +/Rect [72.24 416.15 146.8213 430.43] +/Type /Annot +>> +endobj +201 0 obj +<< /Border [0 0 0] +/Dest (_authentication) +/Subtype /Link +/Rect [541.1705 416.15 547.04 430.43] +/Type /Annot +>> +endobj +202 0 obj +<< /Border [0 0 0] +/Dest (_other_features) +/Subtype /Link +/Rect [72.24 397.67 146.6006 411.95] +/Type /Annot +>> +endobj +203 0 obj +<< /Border [0 0 0] +/Dest (_other_features) +/Subtype /Link +/Rect [541.1705 397.67 547.04 411.95] +/Type /Annot +>> +endobj +204 0 obj +<< /Border [0 0 0] +/Dest (_limitations) +/Subtype /Link +/Rect [72.24 379.19 129.6015 393.47] +/Type /Annot +>> +endobj +205 0 obj +<< /Border [0 0 0] +/Dest (_limitations) +/Subtype /Link +/Rect [541.1705 379.19 547.04 393.47] +/Type /Annot +>> +endobj +206 0 obj +<< /Border [0 0 0] +/Dest (_the_test_port) +/Subtype /Link +/Rect [48.24 360.71 113.5838 374.99] +/Type /Annot +>> +endobj +207 0 obj +<< /Border [0 0 0] +/Dest (_the_test_port) +/Subtype /Link +/Rect [541.1705 360.71 547.04 374.99] +/Type /Annot +>> +endobj +208 0 obj +<< /Border [0 0 0] +/Dest (_overview) +/Subtype /Link +/Rect [60.24 342.23 108.7605 356.51] +/Type /Annot +>> +endobj +209 0 obj +<< /Border [0 0 0] +/Dest (_overview) +/Subtype /Link +/Rect [541.1705 342.23 547.04 356.51] +/Type /Annot +>> +endobj +210 0 obj +<< /Border [0 0 0] +/Dest (_installation) +/Subtype /Link +/Rect [60.24 323.75 117.486 338.03] +/Type /Annot +>> +endobj +211 0 obj +<< /Border [0 0 0] +/Dest (_installation) +/Subtype /Link +/Rect [541.1705 323.75 547.04 338.03] +/Type /Annot +>> +endobj +212 0 obj +<< /Border [0 0 0] +/Dest (_configuration) +/Subtype /Link +/Rect [60.24 305.27 129.5503 319.55] +/Type /Annot +>> +endobj +213 0 obj +<< /Border [0 0 0] +/Dest (_configuration) +/Subtype /Link +/Rect [541.1705 305.27 547.04 319.55] +/Type /Annot +>> +endobj +214 0 obj +<< /Border [0 0 0] +/Dest (Abstract_Socket_Test_Port_Parameters_in_the_Test_Port_Configuration_File) +/Subtype /Link +/Rect [72.24 286.79 426.9862 301.07] +/Type /Annot +>> +endobj +215 0 obj +<< /Border [0 0 0] +/Dest (Abstract_Socket_Test_Port_Parameters_in_the_Test_Port_Configuration_File) +/Subtype /Link +/Rect [541.1705 286.79 547.04 301.07] +/Type /Annot +>> +endobj +216 0 obj +<< /Border [0 0 0] +/Dest (_the_abstractsocket_api) +/Subtype /Link +/Rect [60.24 268.31 81.66 282.59] +/Type /Annot +>> +endobj +217 0 obj +<< /Border [0 0 0] +/Dest (_the_abstractsocket_api) +/Subtype /Link +/Rect [81.66 269.906 155.16 280.406] +/Type /Annot +>> +endobj +218 0 obj +<< /Border [0 0 0] +/Dest (_the_abstractsocket_api) +/Subtype /Link +/Rect [155.16 268.31 175.4775 282.59] +/Type /Annot +>> +endobj +219 0 obj +<< /Border [0 0 0] +/Dest (_the_abstractsocket_api) +/Subtype /Link +/Rect [541.1705 268.31 547.04 282.59] +/Type /Annot +>> +endobj +220 0 obj +<< /Border [0 0 0] +/Dest (map-unmap-the-test-port) +/Subtype /Link +/Rect [72.24 249.83 199.3133 264.11] +/Type /Annot +>> +endobj +221 0 obj +<< /Border [0 0 0] +/Dest (map-unmap-the-test-port) +/Subtype /Link +/Rect [541.1705 249.83 547.04 264.11] +/Type /Annot +>> +endobj +222 0 obj +<< /Border [0 0 0] +/Dest (_setting_test_port_parameters) +/Subtype /Link +/Rect [72.24 231.35 213.4881 245.63] +/Type /Annot +>> +endobj +223 0 obj +<< /Border [0 0 0] +/Dest (_setting_test_port_parameters) +/Subtype /Link +/Rect [541.1705 231.35 547.04 245.63] +/Type /Annot +>> +endobj +224 0 obj +<< /Border [0 0 0] +/Dest (_open_a_listening_port) +/Subtype /Link +/Rect [72.24 212.87 180.4425 227.15] +/Type /Annot +>> +endobj +225 0 obj +<< /Border [0 0 0] +/Dest (_open_a_listening_port) +/Subtype /Link +/Rect [535.301 212.87 547.04 227.15] +/Type /Annot +>> +endobj +226 0 obj +<< /Border [0 0 0] +/Dest (_close_the_listening_port) +/Subtype /Link +/Rect [72.24 194.39 189.9975 208.67] +/Type /Annot +>> +endobj +227 0 obj +<< /Border [0 0 0] +/Dest (_close_the_listening_port) +/Subtype /Link +/Rect [535.301 194.39 547.04 208.67] +/Type /Annot +>> +endobj +228 0 obj +<< /Border [0 0 0] +/Dest (_open_a_client_connection) +/Subtype /Link +/Rect [72.24 175.91 198.744 190.19] +/Type /Annot +>> +endobj +229 0 obj +<< /Border [0 0 0] +/Dest (_open_a_client_connection) +/Subtype /Link +/Rect [535.301 175.91 547.04 190.19] +/Type /Annot +>> +endobj +230 0 obj +<< /Border [0 0 0] +/Dest (_send_message) +/Subtype /Link +/Rect [72.24 157.43 141.582 171.71] +/Type /Annot +>> +endobj +231 0 obj +<< /Border [0 0 0] +/Dest (_send_message) +/Subtype /Link +/Rect [535.301 157.43 547.04 171.71] +/Type /Annot +>> +endobj +232 0 obj +<< /Border [0 0 0] +/Dest (_close_a_client_connection) +/Subtype /Link +/Rect [72.24 138.95 198.2295 153.23] +/Type /Annot +>> +endobj +233 0 obj +<< /Border [0 0 0] +/Dest (_close_a_client_connection) +/Subtype /Link +/Rect [535.301 138.95 547.04 153.23] +/Type /Annot +>> +endobj +234 0 obj +<< /Border [0 0 0] +/Dest (_test_port_parameter_names) +/Subtype /Link +/Rect [72.24 120.47 208.4481 134.75] +/Type /Annot +>> +endobj +235 0 obj +<< /Border [0 0 0] +/Dest (_test_port_parameter_names) +/Subtype /Link +/Rect [535.301 120.47 547.04 134.75] +/Type /Annot +>> +endobj +236 0 obj +<< /Border [0 0 0] +/Dest (_parameter_accessor_functions) +/Subtype /Link +/Rect [72.24 101.99 223.3556 116.27] +/Type /Annot +>> +endobj +237 0 obj +<< /Border [0 0 0] +/Dest (_parameter_accessor_functions) +/Subtype /Link +/Rect [535.301 101.99 547.04 116.27] +/Type /Annot +>> +endobj +238 0 obj +<< /Border [0 0 0] +/Dest (_logging_functions) +/Subtype /Link +/Rect [72.24 83.51 164.0205 97.79] +/Type /Annot +>> +endobj +239 0 obj +<< /Border [0 0 0] +/Dest (_logging_functions) +/Subtype /Link +/Rect [535.301 83.51 547.04 97.79] +/Type /Annot +>> +endobj +240 0 obj +<< /Border [0 0 0] +/Dest (_error_reporting) +/Subtype /Link +/Rect [72.24 65.03 151.7985 79.31] +/Type /Annot +>> +endobj +241 0 obj +<< /Border [0 0 0] +/Dest (_error_reporting) +/Subtype /Link +/Rect [535.301 65.03 547.04 79.31] +/Type /Annot +>> +endobj +242 0 obj +<< /Border [0 0 0] +/Dest (_tips_and_tricks) +/Subtype /Link +/Rect [48.24 791.61 124.491 805.89] +/Type /Annot +>> +endobj +243 0 obj +<< /Border [0 0 0] +/Dest (_tips_and_tricks) +/Subtype /Link +/Rect [535.301 791.61 547.04 805.89] +/Type /Annot +>> +endobj +244 0 obj +<< /Border [0 0 0] +/Dest (_usage) +/Subtype /Link +/Rect [60.24 773.13 89.661 787.41] +/Type /Annot +>> +endobj +245 0 obj +<< /Border [0 0 0] +/Dest (_usage) +/Subtype /Link +/Rect [535.301 773.13 547.04 787.41] +/Type /Annot +>> +endobj +246 0 obj +<< /Border [0 0 0] +/Dest (deriving_the_test_port_class) +/Subtype /Link +/Rect [72.24 754.65 208.7528 768.93] +/Type /Annot +>> +endobj +247 0 obj +<< /Border [0 0 0] +/Dest (deriving_the_test_port_class) +/Subtype /Link +/Rect [535.301 754.65 547.04 768.93] +/Type /Annot +>> +endobj +248 0 obj +<< /Border [0 0 0] +/Dest (implementation_of_the_logger_functions) +/Subtype /Link +/Rect [72.24 736.17 273.7245 750.45] +/Type /Annot +>> +endobj +249 0 obj +<< /Border [0 0 0] +/Dest (implementation_of_the_logger_functions) +/Subtype /Link +/Rect [535.301 736.17 547.04 750.45] +/Type /Annot +>> +endobj +250 0 obj +<< /Border [0 0 0] +/Dest (function_translations) +/Subtype /Link +/Rect [72.24 717.69 181.9543 731.97] +/Type /Annot +>> +endobj +251 0 obj +<< /Border [0 0 0] +/Dest (function_translations) +/Subtype /Link +/Rect [535.301 717.69 547.04 731.97] +/Type /Annot +>> +endobj +252 0 obj +<< /Border [0 0 0] +/Dest (functions_for_manipulating_the_set_of_events_for_which_the_port_waits) +/Subtype /Link +/Rect [72.24 699.21 421.2096 713.49] +/Type /Annot +>> +endobj +253 0 obj +<< /Border [0 0 0] +/Dest (functions_for_manipulating_the_set_of_events_for_which_the_port_waits) +/Subtype /Link +/Rect [535.301 699.21 547.04 713.49] +/Type /Annot +>> +endobj +254 0 obj +<< /Border [0 0 0] +/Dest (final_steps) +/Subtype /Link +/Rect [72.24 680.73 126.609 695.01] +/Type /Annot +>> +endobj +255 0 obj +<< /Border [0 0 0] +/Dest (final_steps) +/Subtype /Link +/Rect [535.301 680.73 547.04 695.01] +/Type /Annot +>> +endobj +256 0 obj +<< /Border [0 0 0] +/Dest (using-ttcn-buffer-in-test-ports) +/Subtype /Link +/Rect [60.24 662.25 90.984 676.53] +/Type /Annot +>> +endobj +257 0 obj +<< /Border [0 0 0] +/Dest (using-ttcn-buffer-in-test-ports) +/Subtype /Link +/Rect [90.984 663.846 148.734 674.346] +/Type /Annot +>> +endobj +258 0 obj +<< /Border [0 0 0] +/Dest (using-ttcn-buffer-in-test-ports) +/Subtype /Link +/Rect [148.734 662.25 212.9543 676.53] +/Type /Annot +>> +endobj +259 0 obj +<< /Border [0 0 0] +/Dest (using-ttcn-buffer-in-test-ports) +/Subtype /Link +/Rect [535.301 662.25 547.04 676.53] +/Type /Annot +>> +endobj +260 0 obj +<< /Border [0 0 0] +/Dest (_using_ssl_on_top_of_a_tcp_connection) +/Subtype /Link +/Rect [60.24 643.77 248.2131 658.05] +/Type /Annot +>> +endobj +261 0 obj +<< /Border [0 0 0] +/Dest (_using_ssl_on_top_of_a_tcp_connection) +/Subtype /Link +/Rect [535.301 643.77 547.04 658.05] +/Type /Annot +>> +endobj +262 0 obj +<< /Border [0 0 0] +/Dest (_server_mode_2) +/Subtype /Link +/Rect [72.24 625.29 135.8175 639.57] +/Type /Annot +>> +endobj +263 0 obj +<< /Border [0 0 0] +/Dest (_server_mode_2) +/Subtype /Link +/Rect [535.301 625.29 547.04 639.57] +/Type /Annot +>> +endobj +264 0 obj +<< /Border [0 0 0] +/Dest (_client_mode_2) +/Subtype /Link +/Rect [72.24 606.81 132.0375 621.09] +/Type /Annot +>> +endobj +265 0 obj +<< /Border [0 0 0] +/Dest (_client_mode_2) +/Subtype /Link +/Rect [535.301 606.81 547.04 621.09] +/Type /Annot +>> +endobj +266 0 obj +<< /Border [0 0 0] +/Dest (_authentication_flow) +/Subtype /Link +/Rect [72.24 588.33 174.0793 602.61] +/Type /Annot +>> +endobj +267 0 obj +<< /Border [0 0 0] +/Dest (_authentication_flow) +/Subtype /Link +/Rect [535.301 588.33 547.04 602.61] +/Type /Annot +>> +endobj +268 0 obj +<< /Border [0 0 0] +/Dest (_adapting_derived_test_ports_to_support_ipv6) +/Subtype /Link +/Rect [60.24 569.85 279.4401 584.13] +/Type /Annot +>> +endobj +269 0 obj +<< /Border [0 0 0] +/Dest (_adapting_derived_test_ports_to_support_ipv6) +/Subtype /Link +/Rect [535.301 569.85 547.04 584.13] +/Type /Annot +>> +endobj +270 0 obj +<< /Border [0 0 0] +/Dest (_error_messages) +/Subtype /Link +/Rect [48.24 551.37 125.226 565.65] +/Type /Annot +>> +endobj +271 0 obj +<< /Border [0 0 0] +/Dest (_error_messages) +/Subtype /Link +/Rect [535.301 551.37 547.04 565.65] +/Type /Annot +>> +endobj +272 0 obj +<< /Border [0 0 0] +/Dest (_error_messages_in_case_tcp_connections_are_used) +/Subtype /Link +/Rect [60.24 532.89 309.5623 547.17] +/Type /Annot +>> +endobj +273 0 obj +<< /Border [0 0 0] +/Dest (_error_messages_in_case_tcp_connections_are_used) +/Subtype /Link +/Rect [535.301 532.89 547.04 547.17] +/Type /Annot +>> +endobj +274 0 obj +<< /Border [0 0 0] +/Dest (_additional_error_messages_in_case_ssl_connections_are_used) +/Subtype /Link +/Rect [60.24 514.41 363.6793 528.69] +/Type /Annot +>> +endobj +275 0 obj +<< /Border [0 0 0] +/Dest (_additional_error_messages_in_case_ssl_connections_are_used) +/Subtype /Link +/Rect [535.301 514.41 547.04 528.69] +/Type /Annot +>> +endobj +276 0 obj +<< /Border [0 0 0] +/Dest (_warning_messages) +/Subtype /Link +/Rect [48.24 495.93 141.6396 510.21] +/Type /Annot +>> +endobj +277 0 obj +<< /Border [0 0 0] +/Dest (_warning_messages) +/Subtype /Link +/Rect [535.301 495.93 547.04 510.21] +/Type /Annot +>> +endobj +278 0 obj +<< /Border [0 0 0] +/Dest (_warning_messages_in_case_tcp_connections_are_used) +/Subtype /Link +/Rect [60.24 477.45 325.9758 491.73] +/Type /Annot +>> +endobj +279 0 obj +<< /Border [0 0 0] +/Dest (_warning_messages_in_case_tcp_connections_are_used) +/Subtype /Link +/Rect [535.301 477.45 547.04 491.73] +/Type /Annot +>> +endobj +280 0 obj +<< /Border [0 0 0] +/Dest (warning_messages_in_case_SSL_connections_are_used) +/Subtype /Link +/Rect [60.24 458.97 324.9261 473.25] +/Type /Annot +>> +endobj +281 0 obj +<< /Border [0 0 0] +/Dest (warning_messages_in_case_SSL_connections_are_used) +/Subtype /Link +/Rect [535.301 458.97 547.04 473.25] +/Type /Annot +>> +endobj +282 0 obj +<< /Border [0 0 0] +/Dest (_terminology) +/Subtype /Link +/Rect [48.24 440.49 111.8933 454.77] +/Type /Annot +>> +endobj +283 0 obj +<< /Border [0 0 0] +/Dest (_terminology) +/Subtype /Link +/Rect [535.301 440.49 547.04 454.77] +/Type /Annot +>> +endobj +284 0 obj +<< /Border [0 0 0] +/Dest (_abbreviations) +/Subtype /Link +/Rect [48.24 422.01 119.0205 436.29] +/Type /Annot +>> +endobj +285 0 obj +<< /Border [0 0 0] +/Dest (_abbreviations) +/Subtype /Link +/Rect [535.301 422.01 547.04 436.29] +/Type /Annot +>> +endobj +286 0 obj +<< /Border [0 0 0] +/Dest (_references) +/Subtype /Link +/Rect [48.24 403.53 103.0815 417.81] +/Type /Annot +>> +endobj +287 0 obj +<< /Border [0 0 0] +/Dest (_references) +/Subtype /Link +/Rect [535.301 403.53 547.04 417.81] +/Type /Annot +>> +endobj +288 0 obj +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 162 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +0.25 w +/DeviceRGB CS +0.8667 0.8667 0.8667 SCN +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream +endobj +289 0 obj +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 162 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +0.25 w +/DeviceRGB CS +0.8667 0.8667 0.8667 SCN +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream +endobj +290 0 obj +<< /Type /Outlines +/Count 62 +/First 291 0 R +/Last 352 0 R +>> +endobj +291 0 obj +<< /Title +/Parent 290 0 R +/Count 0 +/Next 292 0 R +/Dest [7 0 R /XYZ 0 841.89 null] +>> +endobj +292 0 obj +<< /Title +/Parent 290 0 R +/Count 0 +/Next 293 0 R +/Prev 291 0 R +/Dest [10 0 R /XYZ 0 841.89 null] +>> +endobj +293 0 obj +<< /Title +/Parent 290 0 R +/Count 2 +/First 294 0 R +/Last 295 0 R +/Next 296 0 R +/Prev 292 0 R +/Dest [14 0 R /XYZ 0 841.89 null] +>> +endobj +294 0 obj +<< /Title +/Parent 293 0 R +/Count 0 +/Next 295 0 R +/Dest [14 0 R /XYZ 0 765.17 null] +>> +endobj +295 0 obj +<< /Title +/Parent 293 0 R +/Count 0 +/Prev 294 0 R +/Dest [14 0 R /XYZ 0 681.53 null] +>> +endobj +296 0 obj +<< /Title +/Parent 290 0 R +/Count 17 +/First 297 0 R +/Last 309 0 R +/Next 314 0 R +/Prev 293 0 R +/Dest [14 0 R /XYZ 0 613.67 null] +>> +endobj +297 0 obj +<< /Title +/Parent 296 0 R +/Count 0 +/Next 298 0 R +/Dest [14 0 R /XYZ 0 561.35 null] +>> +endobj +298 0 obj +<< /Title +/Parent 296 0 R +/Count 1 +/First 299 0 R +/Last 299 0 R +/Next 300 0 R +/Prev 297 0 R +/Dest [14 0 R /XYZ 0 359.15 null] +>> +endobj +299 0 obj +<< /Title +/Parent 298 0 R +/Count 0 +/Dest [14 0 R /XYZ 0 254.29 null] +>> +endobj +300 0 obj +<< /Title +/Parent 296 0 R +/Count 3 +/First 301 0 R +/Last 303 0 R +/Next 304 0 R +/Prev 298 0 R +/Dest [14 0 R /XYZ 0 136.87 null] +>> +endobj +301 0 obj +<< /Title +/Parent 300 0 R +/Count 0 +/Next 302 0 R +/Dest [32 0 R /XYZ 0 841.89 null] +>> +endobj +302 0 obj +<< /Title +/Parent 300 0 R +/Count 0 +/Next 303 0 R +/Prev 301 0 R +/Dest [32 0 R /XYZ 0 727.05 null] +>> +endobj +303 0 obj +<< /Title +/Parent 300 0 R +/Count 0 +/Prev 302 0 R +/Dest [32 0 R /XYZ 0 627.63 null] +>> +endobj +304 0 obj +<< /Title +/Parent 296 0 R +/Count 0 +/Next 305 0 R +/Prev 300 0 R +/Dest [32 0 R /XYZ 0 484.65 null] +>> +endobj +305 0 obj +<< /Title +/Parent 296 0 R +/Count 0 +/Next 306 0 R +/Prev 304 0 R +/Dest [32 0 R /XYZ 0 364.01 null] +>> +endobj +306 0 obj +<< /Title +/Parent 296 0 R +/Count 0 +/Next 307 0 R +/Prev 305 0 R +/Dest [32 0 R /XYZ 0 211.81 null] +>> +endobj +307 0 obj +<< /Title +/Parent 296 0 R +/Count 0 +/Next 308 0 R +/Prev 306 0 R +/Dest [40 0 R /XYZ 0 841.89 null] +>> +endobj +308 0 obj +<< /Title +/Parent 296 0 R +/Count 0 +/Next 309 0 R +/Prev 307 0 R +/Dest [40 0 R /XYZ 0 721.61 null] +>> +endobj +309 0 obj +<< /Title +/Parent 296 0 R +/Count 4 +/First 310 0 R +/Last 313 0 R +/Prev 308 0 R +/Dest [40 0 R /XYZ 0 616.75 null] +>> +endobj +310 0 obj +<< /Title +/Parent 309 0 R +/Count 0 +/Next 311 0 R +/Dest [40 0 R /XYZ 0 484.11 null] +>> +endobj +311 0 obj +<< /Title +/Parent 309 0 R +/Count 0 +/Next 312 0 R +/Prev 310 0 R +/Dest [40 0 R /XYZ 0 309.57 null] +>> +endobj +312 0 obj +<< /Title +/Parent 309 0 R +/Count 0 +/Next 313 0 R +/Prev 311 0 R +/Dest [47 0 R /XYZ 0 644.4 null] +>> +endobj +313 0 obj +<< /Title +/Parent 309 0 R +/Count 0 +/Prev 312 0 R +/Dest [47 0 R /XYZ 0 505.2 null] +>> +endobj +314 0 obj +<< /Title +/Parent 290 0 R +/Count 16 +/First 315 0 R +/Last 319 0 R +/Next 331 0 R +/Prev 296 0 R +/Dest [47 0 R /XYZ 0 399.78 null] +>> +endobj +315 0 obj +<< /Title +/Parent 314 0 R +/Count 0 +/Next 316 0 R +/Dest [47 0 R /XYZ 0 347.46 null] +>> +endobj +316 0 obj +<< /Title +/Parent 314 0 R +/Count 0 +/Next 317 0 R +/Prev 315 0 R +/Dest [56 0 R /XYZ 0 609.39 null] +>> +endobj +317 0 obj +<< /Title +/Parent 314 0 R +/Count 1 +/First 318 0 R +/Last 318 0 R +/Next 319 0 R +/Prev 316 0 R +/Dest [56 0 R /XYZ 0 286.95 null] +>> +endobj +318 0 obj +<< /Title +/Parent 317 0 R +/Count 0 +/Dest [64 0 R /XYZ 0 841.89 null] +>> +endobj +319 0 obj +<< /Title +/Parent 314 0 R +/Count 11 +/First 320 0 R +/Last 330 0 R +/Prev 317 0 R +/Dest [73 0 R /XYZ 0 352.38 null] +>> +endobj +320 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 321 0 R +/Dest [73 0 R /XYZ 0 279.08 null] +>> +endobj +321 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 322 0 R +/Prev 320 0 R +/Dest [73 0 R /XYZ 0 133.0 null] +>> +endobj +322 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 323 0 R +/Prev 321 0 R +/Dest [78 0 R /XYZ 0 762.33 null] +>> +endobj +323 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 324 0 R +/Prev 322 0 R +/Dest [81 0 R /XYZ 0 763.08 null] +>> +endobj +324 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 325 0 R +/Prev 323 0 R +/Dest [81 0 R /XYZ 0 671.22 null] +>> +endobj +325 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 326 0 R +/Prev 324 0 R +/Dest [81 0 R /XYZ 0 227.04 null] +>> +endobj +326 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 327 0 R +/Prev 325 0 R +/Dest [87 0 R /XYZ 0 373.99 null] +>> +endobj +327 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 328 0 R +/Prev 326 0 R +/Dest [87 0 R /XYZ 0 226.87 null] +>> +endobj +328 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 329 0 R +/Prev 327 0 R +/Dest [92 0 R /XYZ 0 477.09 null] +>> +endobj +329 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Next 330 0 R +/Prev 328 0 R +/Dest [95 0 R /XYZ 0 841.89 null] +>> +endobj +330 0 obj +<< /Title +/Parent 319 0 R +/Count 0 +/Prev 329 0 R +/Dest [95 0 R /XYZ 0 649.87 null] +>> +endobj +331 0 obj +<< /Title +/Parent 290 0 R +/Count 12 +/First 332 0 R +/Last 343 0 R +/Next 344 0 R +/Prev 314 0 R +/Dest [95 0 R /XYZ 0 471.19 null] +>> +endobj +332 0 obj +<< /Title +/Parent 331 0 R +/Count 5 +/First 333 0 R +/Last 337 0 R +/Next 338 0 R +/Dest [95 0 R /XYZ 0 418.87 null] +>> +endobj +333 0 obj +<< /Title +/Parent 332 0 R +/Count 0 +/Next 334 0 R +/Dest [95 0 R /XYZ 0 187.11 null] +>> +endobj +334 0 obj +<< /Title +/Parent 332 0 R +/Count 0 +/Next 335 0 R +/Prev 333 0 R +/Dest [109 0 R /XYZ 0 671.16 null] +>> +endobj +335 0 obj +<< /Title +/Parent 332 0 R +/Count 0 +/Next 336 0 R +/Prev 334 0 R +/Dest [109 0 R /XYZ 0 414.78 null] +>> +endobj +336 0 obj +<< /Title +/Parent 332 0 R +/Count 0 +/Next 337 0 R +/Prev 335 0 R +/Dest [113 0 R /XYZ 0 254.11 null] +>> +endobj +337 0 obj +<< /Title +/Parent 332 0 R +/Count 0 +/Prev 336 0 R +/Dest [117 0 R /XYZ 0 541.37 null] +>> +endobj +338 0 obj +<< /Title +/Parent 331 0 R +/Count 0 +/Next 339 0 R +/Prev 332 0 R +/Dest [117 0 R /XYZ 0 457.73 null] +>> +endobj +339 0 obj +<< /Title +/Parent 331 0 R +/Count 3 +/First 340 0 R +/Last 342 0 R +/Next 343 0 R +/Prev 338 0 R +/Dest [117 0 R /XYZ 0 162.85 null] +>> +endobj +340 0 obj +<< /Title +/Parent 339 0 R +/Count 0 +/Next 341 0 R +/Dest [123 0 R /XYZ 0 841.89 null] +>> +endobj +341 0 obj +<< /Title +/Parent 339 0 R +/Count 0 +/Next 342 0 R +/Prev 340 0 R +/Dest [123 0 R /XYZ 0 494.13 null] +>> +endobj +342 0 obj +<< /Title +/Parent 339 0 R +/Count 0 +/Prev 341 0 R +/Dest [123 0 R /XYZ 0 315.81 null] +>> +endobj +343 0 obj +<< /Title +/Parent 331 0 R +/Count 0 +/Prev 339 0 R +/Dest [129 0 R /XYZ 0 841.89 null] +>> +endobj +344 0 obj +<< /Title +/Parent 290 0 R +/Count 2 +/First 345 0 R +/Last 346 0 R +/Next 347 0 R +/Prev 331 0 R +/Dest [132 0 R /XYZ 0 841.89 null] +>> +endobj +345 0 obj +<< /Title +/Parent 344 0 R +/Count 0 +/Next 346 0 R +/Dest [132 0 R /XYZ 0 758.37 null] +>> +endobj +346 0 obj +<< /Title +/Parent 344 0 R +/Count 0 +/Prev 345 0 R +/Dest [139 0 R /XYZ 0 273.06 null] +>> +endobj +347 0 obj +<< /Title +/Parent 290 0 R +/Count 2 +/First 348 0 R +/Last 349 0 R +/Next 350 0 R +/Prev 344 0 R +/Dest [144 0 R /XYZ 0 754.11 null] +>> +endobj +348 0 obj +<< /Title +/Parent 347 0 R +/Count 0 +/Next 349 0 R +/Dest [144 0 R /XYZ 0 701.79 null] +>> +endobj +349 0 obj +<< /Title +/Parent 347 0 R +/Count 0 +/Prev 348 0 R +/Dest [150 0 R /XYZ 0 687.96 null] +>> +endobj +350 0 obj +<< /Title +/Parent 290 0 R +/Count 0 +/Next 351 0 R +/Prev 347 0 R +/Dest [153 0 R /XYZ 0 778.86 null] +>> +endobj +351 0 obj +<< /Title +/Parent 290 0 R +/Count 0 +/Next 352 0 R +/Prev 350 0 R +/Dest [153 0 R /XYZ 0 438.06 null] +>> +endobj +352 0 obj +<< /Title +/Parent 290 0 R +/Count 0 +/Prev 351 0 R +/Dest [158 0 R /XYZ 0 619.65 null] +>> +endobj +353 0 obj +<< /Nums [0 << /P (i) +>> 1 << /P (ii) +>> 2 << /P (iii) +>> 3 << /P (1) +>> 4 << /P (2) +>> 5 << /P (3) +>> 6 << /P (4) +>> 7 << /P (5) +>> 8 << /P (6) +>> 9 << /P (7) +>> 10 << /P (8) +>> 11 << /P (9) +>> 12 << /P (10) +>> 13 << /P (11) +>> 14 << /P (12) +>> 15 << /P (13) +>> 16 << /P (14) +>> 17 << /P (15) +>> 18 << /P (16) +>> 19 << /P (17) +>> 20 << /P (18) +>> 21 << /P (19) +>> 22 << /P (20) +>> 23 << /P (21) +>> 24 << /P (22) +>> 25 << /P (23) +>> 26 << /P (24) +>> 27 << /P (25) +>> 28 << /P (26) +>> 29 << /P (27) +>> 30 << /P (28) +>>] +>> +endobj +354 0 obj +<< /Length1 13108 +/Length 8295 +/Filter [/FlateDecode] +>> +stream +xœz X[eºÿ÷s² @Y !@I€°/e+[ÃZJØ)K(‹-ÅZ;µV¬UgÔªµ·vlåv´Óq¼µUǿόuÿïØqª×¿Ó;«Ë­þgz½>-œÞ÷œçääûÎ9ïûûÞý{sF qÐDï˜"&ßtfÎ „Ń£³Ñ%føþBÆwG½þ{~úà)„LÂ=§‡Æ¦w '®§åÃ=5CCýþØw¹ÇJ¿®'ùwM < +c ‡4››¬Y_½ùÀNÿ_wO¦¦‹$ö#”‘ã_ûÇúßê›nñ"BÈõ‰|'kÊ‚1rƒ¡(øÊEÿð#‚9‘!.!ˆŒŠÆÄŠÄ©,ÉŠOP(“Tj ÒêôɆdL5¥¥g˜-È +2É̲g;œ®œÜ"!©×¥€6 +°]ÌÝXvq^ï1+å…•9O]PÑdx¿ÂâÑ÷ùê<•m«ËQ{2ùrƒÃ°ýfº-O-ð1´‡€ö`mVfe ¬ú@•Ô:°—\^ Ä艕„}RU‚}³³¼%Kl(´)íýGzýGGs©™Êû:ÚFïS¤¹Túø|hÛ‘{ËÝÛÊ YÍãž(µÝèî¯2e¶ÝÅ®u'Èš}¾„«òc„Æ3J´½ÑBêµ$k´+Þ±,³ F6gd4NV8jÝ’ÌbâŒÀÇ'#ãMzʨžéè}þ®Š’½çg&kM.(V{¶öéøvÕùѱ|!q™~Û§– hodœsôäèЙ¹cþ&]naFKÃÊeè6t›†òªŽ ½dÆ¡¼Tp‚«Ü$ƒ[·8Ù)Ä#GG&x*·du=1’çÞqrxà…½•Iy­;´ûö6›êk%¥³©UENa,ïóŒOíá ÑïЗeÆ$qÞ豞їöUny«áeáþœäü:“»0«¥È°tZ¦M—}ÿþÂç_ùþ F†³ ?9ÈP€ku1X/ÑÊ0>€ÿ°ôçñ0xòQšÏ‰À“î%Q¬M k3¢\&£HõZȵvJ.˜ҌQÈZ^¶l&p{É.kódI^O¹1kû÷îè>2èL­ðÖìiÏ,¿ûÜÄÔ 3nüAÉXmZŠo¾×?©/¶W[Qn[¾¥yÕb¨ +´”k´µc…÷ x]ûjKŠÔÉÝ%þ'·»ò‡¿kªìsg·5mNÏ^˜.ª6Qk{Eº¡¨Ýáj­,Ð$y6µsÔЭÉEVoƪÄ&ú¬8!‡¹ŸKEJ¼¤Ë†¦ã²kûÍsÏâÜÕζÇFÜù;N½pw…2·mîDoËTIbŠ\hr×Ü›ÕTh©å~÷ØNU~[;¶ále–Qž=tl(pá@uýizñ¥‘KçžxÔY…š”l¾ÆmVXiÎ×RrWþëÿÖ¼«FÏâ]€\pšjÆëõÙ@´n¼°>;ü£lAN­Nh…B­“åÙyîEà)Gégºulñ‹·e>úúzÖçB²ò6@WÉëÔÄer#–E`Ù2°TOœ%ÎWâ+óô!ú¡ùu÷¹n=@œ]ª'Wçñ<3O+ÙõÀçİd63ðC[‰b.lÇ*24ç´bÒ‚B’GjññºAI™•Ž2ªÒtj ~ëþUT‚.C¥\ºd‹à7žÒ8DÝd¡é/—Ž+ô‹Biñè„ 0µÔõÓ–]5:Õ¦]ío?ؾ«R­«™m™§*ˆêb~TÞÖ½ o]dc0ù™Ù¥Šðýà¦_S1ÙXG]Ê€¦d{Uu¿W¬Ç œ +åÕeµ‡¹9+E }PKÜá§íJ[QJBnGÉô3ÛÐwwTOµ–(DqŽÑ…É'ÿú/õÍÏ~Éy[ïmÎÔ: R[WµuËÉÏÎÿñd{’­@™¢66§CQ÷½,}kœÕ%ÈÃä#2,×/Úµòb¼3±0q:›nüëÒá0éLÿêùö%Çî—w{þþ÷—ˆOÓÿÿÿ † Âÿ +ýÅâ‡M'>ygââ›ñŒ }-_ðBÃjY±†q('‰´2-þÊ,³(8ÂáÍs +Ç¢dêÅlPòô" }_£Å ¢Vú¨/"Ñe&¯±i‘>ÚÊÜ¿ôQß2ßnàˬ–¡, +ÏÀëXW ÉdàÒ¥ý,SvÁA¦ñæR§~él]̾,Ë/ÙK&_‡tÍyt rÖ%§0Êt&Û7ÔºÓµÌ^ÆNŠ„˜t¼HÿÏ÷}ÿ†£~0ù½9*{Yj"Äão½<íÜýãÜtŸò“²Sâß—®ªw½uíTóÍÌ}OON>Ý›‘Ñû/““'úÍk÷ƒ²7GF.†ï??åóú-Çsê¬_l·YA(ê¤/Ë…\M~uaÎZ°ïõ;=¹ßú÷'ö1ãÒÏÆ¶ÞÓld’Ý¡ðµ»Çû:Nï«¥X§$Ž[æýLµ½‚ƒS8ØllsýÆJÑPllËÇìž"nR÷œÏ£§?}ŽUƇ12YÙáuÒó/çãC7}ÂÔÊ<|‰ng…›ÌÅ·çÚóÅÖÔú]õS›´`/=°'úÄç&>w<¡m€ /Ò¹áÁZ¬×ñ¾'³k+Hmñ@åýOiªfÛ·=Øe)ÙuÊßù`½¥Jîl-ro-Ôiªw·µîÉ®¸çiZõH¡·¦ðŽvç=9¾M%cÛØ½Í­÷oËJ)l2—ضn²h=>‡gkuI²¡±Ïf¦(glÛªqôL¹Fˆ .v+Â&®tL\a Úº´ßʈëM³Ç(¡"!iíc2—4ÅkùéÇ«þDí`³&eJÖÔ`ÇÇ—#$—Û£ë†AWHš}ã@yxH³wì©nÛ·Åœ#ع¢½¯Iíïï!•«þ³xµmO]²mËL9i ›½‹‰©;SãÛÌ2Y¾°•ˆ“KTXîÅ. SW§¬âab€.T0&a·z=ü«ê Ql†î?ù‚’R+þ»Q•®W‰èVêº&-äaµCu¹4Øñ|UÕB7q(Á"rX}¾(½7ëf‹AŒŸé³å Ädƒ Sr-S}„ÄñQÇ0J2 cŒ‰/‘|.‡Ápݨ2'«bè…óô‹ôODÏ tÀ› xÜ×QŒIyszq~àÕŠª“½Ä®(•JÁâÒyí7 ¨¹›Öâß±õ‡Uõ?ê%Á˜ rsæš`Ïni(Ÿ+u°÷H,$×ÔòØ‚WÕ˾C-úŠ()5ž‹ß«2-™IÛfÍõFÅÒ{‘»9B¥ìí?DˆcE¥\:>Úà²Z±~Á°Õ¢$Ò¹z‹B@ +$¢ ?–'r by4ÇçêsÒèæ¥gò3}¾ÒÈ8U†—Óg£µÉ†X}’Ï£s¦âOƒ.GÄÆEEJ•ÉJú26ê½ßúÖÆ…µyWk—UÑ3˜C²' ðzÛ"\Î: }@¤Ò¦*„½&Q/å%D=žœ%ŠPj“Åû¥¢Bw>¾gLMWЧ!7él¬çàýÄw’LŠ(°Tq|tR^}­`Îçôi>Õ$˜Í€Þà±,}—>LQ]¢oG¸R$‚½˜hmz¼„Þ¦ æ>]}ƒ,Žnœ_éÇÕÀ³Òгk£§¨†-8™òªÿŒ¾Á>É©dŸüêψ‘ý!yî–éab­CKž[,$ß ?œ…!ž§®r®EÃ@o!rR^gên¯’|›nËŠ£®$6µ6(eº††š$&¾ÀÆDu!!9±4.ØÀâ I Û†KY œËáÞ¨_î 8 ˜Í/Í [¼ý)û[f*Õ_¹7™„[Úòúï­éz Ë*TeBqð©F¤É¯ì(,Ùbûë§ÏE¥VcS÷¶ÔªíE \J_ÐI<¢Ío´åU8ª¬q†æƒ=Kÿ•ž£úΦWf'æšOçqç\[K €×xgAvfTܲÙHÏ[—†DR.˳›O8lCÆ ¦f]Ûõ»»kÝqÑÉôùXVä ¬Xá>}GšÍn­q$•ú-èeôT`äÔDnîij£c'G¡žÝ ³i9?m☽CpÃH”œ¹³¬lî_ý…{ +;;b%Ùîm¥Éß~vÛƒúiFË·¤÷]~üÔ‡÷æ$dovTäÙ|E†ŒÑsóïÿ¶¾ *5Q_žì“_ê"+¯‚Õl³ªÃ +¹=ÅhÁžå ‚Ã;±Ò8*ŠŽˆ~6Ž/w%ãt˜E’Å^dz´©~¤Ä5ÚPÒíI¼ã*+›óÖjV*,K.+#¥Z|š½v£#(©@^Þij#ïÿ.ˆ—¼ +râ3’Â:.OËv k¬˜š„µ*2lgMØ'ç"ñ{ñÙ[ ì.úìýÞããî%aªØäè¨Ê 2Ú’_\x±áÞî웋Õ¿s«±Î;÷òl×Äw‡2ãSí‰Ü…º"?•ñMHÐä~® e‚´VÓ²ÃÞå[Ö` n<íÄÙ¥ƒì¦éÕW³ºîm®/Q%˜=†hu¶1õôGL"÷…ªNäè| ;S–’­ILOŠQ»-‰º’ž¢Yÿb\éƒXi)å æQ E»C–βåòVZ +„‘ óŒJWšN¬¿²MIgXkRòƒ0HgœBôwfg¤ãRŽh…)‘£)Ò¤z³¥ãÐV&Añ¥ÉÊX‰ÎªükçÝ †¢{/úí»ivYªFZXžQfM°u?ì7Tz2cbR³Ü:µY³x"> nü¡fÒQgÿyzCAÊΖެ² Is_ïJgLEÅË¢£¢ÓgZköu90&± ^•"OP‰8–†Å­ö:Îo/LˆP¥9µž¶4qAC·½ížìHI|t¬Q'J2ÞŒ7×åh ÅN«G/ŒI«!»÷ïVyý%÷ßs0˜3 Pk}öŸ®ÏµA¹&¾‰– ?¨Øš¥+ëム󖃶ø´<ˆmÇâ>oáVй!¤ßå¨àMô(TI¯XýO ÓÁ½ ñ“’¡Jƒµe®š®gªÚ`m…ÀÏìv\k†ÊCɺÖbÕrùÌÅãÁ=Ï+ bMZB|šZ"Q§Å'¤iÄlj#æ‹À·øt°Nä&ÛTQQ*[2œ££U°¹ ný…–âç€S‘a»µX#©õÜññüÑÇÚ´1.Ÿ[Í‚øŽXŸÎðfÏbªêæÂý/Yü†–o’»Y ¸æ6ÞAýœÞùÁ:ly{Aòdn/‚* ÛÍsyÄ9,r —q“Ú¦šËÓ/=κ]kiÓ‚L;~³b¾žx„iôù"M›KqÑÄ…à#Lu‹Ÿ$¶¤Ù8Þ“¦QÄø|}A{‚ªšèfuõ5šr,óU`ö·9ÅÒ«á”o\*‚¡• {pĺ– lSÊ]Ëçísƒí^º¢Ôç¥ÉYóÄEJº´v‹-«½Ö#©+Úluwú,!Û•ÛÝ…-Nyذ¤#'>Ì”‰½¬êr7™ ëTØ™ómöœÙ<î¥ Â&œ»ŠW œ]'õ¬3çÖù Ë-K”‹«•MÅæ¶Ì†½mV9€æÑO1þW¾-/ák@ßv ¶`~4¶f7†cƒ?—SÍm¿øšÿû³ÀÙ¹¢¿_c>—ª’‘ÚÚíÅIªbö¬"ŒôGôŸË|ïaH0ñe‡/?<ùÂL~þÌ ““g¦òò¦Î0ü”×gŸ„ùõs}a²ZÏÄÁÎ4 oèË#^ZWœà}+e ìþÖ»‚ÈV«òƒõu +]³œ¤‰)9‰ÿ¦Ù•l2RÛY¡^9¬ì`-a-Ù¨œ­Fƒµ#d§ë¶õ¦F^_a\\zª”,¿n/2 ¸RÄ6ý˜BcibM™AKY|g™,k}±q‚½vóƒà¬«6Û,…d»k€|¿þ†  ã‚2¤ +¡'YúwÕ(ÝF4ÍÓ^:1&³TfÛòSòÍj Ÿ¹–nŽo[<úº +Ó(ÛR^Ñéï6Ò¯¯øH'Ô=ÅT'SÕ®Ô‡a–±¾…‘²¾ƒñBížV›ÒhÇeoñºšsUòÜžªÍ35)®[6MÔ¤ÔVléȆ ¥´aº:9oûcR¥«Áiri¢]&ef™)ÅeËÒè‹jü%壛RTö²”œ’ÁÉøŒüdc®Íœ¨+®ë)¬ßÕ +x·>#žá”3}[T­²¾¡T‚ìí2¶6Š#Ô¯&:-Ó_7Q©?fhÓéÓc»p}}K+ŸÛΊàh«v·gUú”áÍ‹3KuÃ=@ß +~ù'ªŠ­ÃÖW­á1wÆ(«úUˆzÕÍY wùÌAd™MÞRŠÙZAÎüˆ ù y•¦KÏÃøSVEK&BØZvWá›{¥ɇøu °Xƒï¤¬´HÆBnïU0==Ÿ@ +¯‡Ï?˜ ¥xy’Zøˆ ¢¤4¿œÀþjFÿèUúå(¦§A^÷ùlv‘^NïIni®VÄÕÖðCLÓ"ô«Ùâò ó«Y÷€‡Ù±QlÐ1Ñ“Æ º!Èä¯.E)ã¥nDªz€YR&Äçª ½*†þêÔuýÿž¡¯³Ð¸ø†Òãäv â$±°AÉÑ—©Ò¥ï¶4U)ìõâ*…›…¥÷ÚÏï\<ÄêóÁÆÛ&§OZ[jвÍb„ÅË ŽþJ¦†™\ÛÆ°2ÛÐojcÄ©1˜).°{Ö,õo°ÙÜ¢\ú\0Ç«âçŠÆ +òʸt¼Ä“•¥ÂM›·X”Ÿma$Èn—'’ç rr‰Ù&ú/ôH°}!WghÎÿ,J£Ó³Í‹(•=×ánGŽÏ!Š‹’™4çŸÔ{Cöqð¬‡yã!$}!p²¿¢n¤0uQ¸LëJLÿ<¹°¼iûýâ¡#c›èB…6Äÿ×ëáEª•q7Ò¨˜âRUA³8Õ{d¤<-Öï}ÄGîÕ˜‚eKzDßÔP©0ï«Z¶#À æLžœòà{#¡7€´Ë=G&Î'[ÕžÀ'X|h¤ßHÍÖÊ" Ÿ”-™I´x´Vú¥Fr¿,Íkâc}óâ^Xþ­[ÁW+Ö!;B±j¬Ê¥Ÿ%öQó¾Öú +²ÏTÙ——ÓS•–VÕ““×Wi"®4O–©Te“ÍÍ;ÊUªòL¯L ˆžå^%¸ù%ÅϲSø0ç³üO½sÆ¡¾æ¥3ŒRWHi¨oÞa‡`ÆÓãƒòLkzì’ªöm¦:êzRMCƒN¦lhmJ\~³/%CŸ@GÐ)ô&úw,Æ…ø>ü ‘JÜAü‚ø#ÙH>Gþ‘J¦r¨°÷Ï8YœqÎsœÿäfs侯‹çUñŽòÞç+ø]ü#øÞˆû"~!H|GðI$?2%2;².r!ŠˆòF‰úm´"úua¬°^ø ðÏ1Q1wÇü2–;ûK‘X´]tTô{qªø>ñ’RÉ„äNÉ1øNòkÉ'|¦Ä‘‚ÖKÑ þ š!.²G11‡ìpÞK0¿4Ì¢N8Â1ÇN8ôpì€c³pt1׈*´G|?ÀœS­Ü¨ŽúÍpÞó"çÓWá¶¢:â ø~48ÏÛ‡ê¸J¦¨Ëp.€ùv õd⼆Ԝ„øÝHÌ©D±tëKâ*ºG yæÖ—Ôq†£í ®#U‡¬)2!+1pë/Ô ð})y¡\Ž åRÇÙû•Ì3äETJCÄ;ÈÏX©gŸû'DP'€:€ø”ù>ÄŸP#7ŠÁ²þ™¾5ÿðÒi„Ít ]ñUèM×Õ¿&v¦ ½€bÑkˆ³î:cŠú? Wç(|«‚gò×hÿ@D$‡ 8AP¿‡mY!Úu žcˆ©Ø¼¹"}+ˆ˜hÕ üôGïÊ*7Bšå—iÁ'ÐÀ†ï¢6±ïXp G¢(¨yc‘‰Á?™÷@™×mãQRÀ'%!äv-X¸¥ #Ji(v¨¡7oQx»9‘ êú\ˆ}nØÃyc1*ªª j +ˆð›ÀCªQ ªEuh3ªG ¨P4£-ZP+jCí¨u¢­hĽˆ^F‡y3ãÃ6[lQîY‘£•E)¦bê‚QpžÉ'‡CóVòxhž@<ô|hž@B œ'amo„æIÀýahžB,ÍSHе¡yŠÁŽÐ<©pihž‹bW°ñO†îá¡Rühhždøw¡y>JÃÿš@Rb™WJ%ÒCó°á¦Ð¼uß +ÍG"ñûÐ|$Ê'è•·¬Ud^h> +å“­¡ùhd! ÍG£NòÇ¡y!J£T¡y!j¦*K³“ÃCÓš,[f–¦"í×lïµhŠFG5Ì¥)McÿTÿäý}PmÞ,šu ¢!4 f—2 (<ÿƒhõÃhG½`.(jGá_ª_~jŠõùhÝŸ}ÈR˜hšú'‡ÀXpWîjbïFýƒ3£þIö±A4ýh²60˜žÈcþÁáñAYF¥(Œ³”fuÓ<6ôÆáSƒÌplÀ뛑øú'§†ãšL‹-[33–Ì\˜‚K ; Ã"Ɇo3hÈî·õç8ÓŠ,A–ôð”Æ¯™žô÷õù'G4pɇ±få‡c8øAHýì&ÑÌÀË¿Fè·É…%üå±þñÒþ©áÁqÍt¿lƒ§KY 2:g!ö­±Rÿ´_33>4<> ¢Ðß§é™Õ¬í #[ +M³kœ2C,”é A¬cÁÌiP°×l¦o#0CÓÓyVko ¯ß2ÈŠØÒ³NXHÀÊšâ4<ŸÑÄ + °T,@cU¦v~ ®OÀ1Ò5DyçΖ±Ð²XÒSÓ3}Ãu”w²ÿ ²õ*í)˜›î`C5ýýãS ±™ñ¾þIÍôP¿¦hÂß §Ð• ͲfYl[‡J?Ð +Iˆ‘ck“Œ†Xé??Ü­}&fÖÛpcÃakô³,ÉAëhÅ”µfSIY]S™™A±ñzýa\-@ydj©†sŸ‚™0¼Èuàdeà”,wü­ <›òî¾°-&ÿ¿‰H>Æ~scáwËgÈÅ(â+~mCÿ ²@ýê +endstream +endobj +355 0 obj +<< /Type /FontDescriptor +/FontName /3a0e86+NotoSerif +/FontFile2 354 0 R +/FontBBox [-212 -250 1246 1047] +/Flags 6 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +356 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +357 0 obj +[259 1000 408 1000 1000 1000 1000 220 346 346 1000 1000 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 286 559 1000 559 1000 1000 705 653 613 727 623 589 713 792 367 1000 700 623 937 763 742 604 1000 655 543 612 716 674 1046 660 625 1000 359 1000 359 1000 458 577 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 511 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 562 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +358 0 obj +<< /Length1 9744 +/Length 6315 +/Filter [/FlateDecode] +>> +stream +xœ½Z{xו¿wf$˲-[²¶dËz˲¬‡%[²dËòCÆOüF0ÆÂ–X²ü$a Éæ„yÑPB I³h6¥M·ßn’MÒ6Ù„¤””Ð|Û¥_ZÚ¯e»ÙìaÏŒd°’ô¯µ¿ñÌ=sçžßýsÏ9wÆ#„øÈŽ8h¼?ç·Èc y!,Šlœx~x®ÿ!ÅÑH¬?ô솧fÊŽNßù·šäAûh¿=< [¹GR€¶.ºs5âihŸ¶ªµÓæøÛŸ÷< í Ý7›šæTq~‹P^)´·…¢áW»ÿ÷´A7 †~ðl!=ÓßF ^„Rá’‹¾õ/lˆ„¿1&Åe¼d~Jj¤£ ¡(S,ARYV6’ß|F‘“«ÌS©5Z¤ÓŒù¦s¡Åj³£¢o×ýÿôƒ‘¿NÔ™Ùe–¨%NB‚_?>~Ýà-\1sOfÄÎýûñO÷^#’úçÆJÁù + ÄÑX‰’â +Â)VNG\[ 3.‰_´!ÑØ%! ˆ$%ÉœðÕéçF9v¿V_½¶Ô±f™ÉÔ¾qù=Û«×Wª‚]îZƒàòL>?}isµ½k²¦âÞ µßyKœXe7–›ÄUë«Õ9™î²õuù÷˜Ûb5ãw»VO–¯êu­«Ë/ ÞÕV;ÝS+K)꺻{Ë C…Ìœ¤#vp^AYH Óä2,Q³`}X]‚ÕB§»Ü2 «É- +K…F>çðh}ÅÜψZœ{ŽF\¿ÐaM¥¯àãxË»7òó¼ö-[ȟ̶lÇ\ý~_VתÖLÚÍê쮊€«BT:¤ +rž ­ÆŠ&Q¾)úH Ë’Óá‰}塺®ÄU»²xíã£Þò;NÍL¾ºµ±n߯ô?4ʽk©Ê’±œ +- k}í¶Ö5œŽú‡~vŸ@!MóF Œýó}õ/bîžÇ†ï6øÛ ó¼…rko³}î´0G+ÚÿË+¿{êØ“qŽöÜø3¾Dõ LdDȽÀp–.iï‘[*´ŸU¡°ú4Ú +‹|i{¿ÍoÈÈ0ømÖ +ƒPh¨ ;o +üŒÀÏêäÁšå‚]LÌJÅI‚Ŧqc5V’7›@Š “VÒV"Õø§e°Î[7³ÂFLÿz.Ò%3æ…¹FiÄ:l˜[ÿ` ¯\‘åí­ÛÕR¿Î“¥(ï«m¤ªá†b_ä_sgÓÏߊ&ç’çLΜ”ÈË×7+k"-M±zÝ¥`Ù²^o6»v'n\ápÁçlÿ•8n0ñ6—n¡·±Kè&›fzjå™ÖÈéûOÓ_œì^} +'ŸØøÒ´W]ÕW!- V†¶µë +×Ú£-]¦IuÈÍëÚŠ#obéóǰøÍ1}åJ‡¡Ê®p†;œOÿîÀO÷70¶ex; ¼É‘žaàRZõb¾”TÄÉ€K!#æœîù!ý—Ìõe†œŒŒ\ƒ4H}§½ÚO;vfjäð¨‹øâ8ýùÛ±8Ÿ˜ŠäÉ‘U§è/O`=V^_¶òèçLŒ‚µþ%è­z5ŒëÇNr‰âL­Ñеj¡Z¢†õ0¯P•ÉÉx8ýz[PjÈÍÈÈ1È‚ÔoŸW×iùYGÓGoò²‹òÉO ‹s’#ôöPS6£„Nf®Lt¹9´p¡/ßÒMiùüV?ýcf\aN¾ôž9q\-3c*Ƨ|ýíõsg7Ñ!FM4®ò2;Wz{\· tÕ 4?ôר’°&†»‹Ûñ¾ä¾nFëÜ烴{ÎÇbæ$Aâu¸“#$d ¢nâõ „½£—YÞñÏiWk…dñkzï¼ugV›_”Í‹¢?Ä,`ÎCÈy[ŒqLž¸éþA­ÔÈ\¥qµä †¶²×h~lÎ%r® ™Ü£2‘49< \QFœô‘›ÔEj±Ÿ04Õ/ÓÑWñ¥»Ô«áµl\Ui7fÒWÖ0¶ +&xŠ{'@ÌÏRÕZOQ¡D#ß°An¯Î§ÏÏ=k‡På‹ó +JTø|}ì+†Œ°tiæñ³þúµÜ¨.Ƈ“#‚·Ô·‰ÔSéq~>d½2’,/2]?¹fåA6 ÅÇO€ñ]·ükñíéHÆ‹ B«ŠTtÿNºUb,Õ¥ÒÔ‚ù·à.¼Œ¨ ‹ Å˲詴ëbêÊ,÷+“žÕ’Ù‰ÏZâæ‹û²°AšV $¼„ êäìg£$8÷ù-—ÅoÆ}WÆz+5<ûÐGŠY‚”ÜbÿzÄ(&^~Ây7žóâ1jA¬dÂÓ‚ê†ÑÏùdÍ)úÆs/Ñ×_ ÿ sNÃøäšë2tm]×·µC¯ïx`]ß¶.qñyú÷oF JÊ^xKÞýwúßßù™®®g.ï‡sgç3—ãy—±ÿE6vØãÙÅü5L@ì^_¨‹•{/[&RæK¶@¹3gþ`g`®×Ѽ¡&OQ¶®¶¢z^¸o9}†]Ž )Ÿ8Lû ÷õtlj5Îcáœ,väƒ`Irc‹¸Ìù5EIí<ΰ< ÿ¸-` N··ÿU^TTœË«éÙ1Ô¤úï™»qbªn';§¼/[è'¯ý¨ýîÞ* ÝSè7eF¦z~Ž°è‰«†¦‰¦–Hm^Ü·}Pc5B¾«½}=j´’ +Ð…YO¯F‰Ü‡ÎÄlƪNKA㯼·ZS°âÞàèþÕÆæmg"GG‹óüëü²âÎ2S£[•ÓtÿðÈuæ–GÞw :Jê­âî­«,šòv[q{­_W¸6rwSï/“uV¹¹Ei–½Îjnnh(0¯ÚÜÔÿ½Õ,v1`ÖÇs†~±½ŒéX›Éæ)ÒŒI?kYˆ=Œ•Z+Œ™”à¡j–¿#Ê4VX^½åìTXïÒ܃wÓS÷h\z1«K ~~t•@#±¾ãuÜmâð"«s.t3ë©lËkÛ¶}øÈr& t¯±kÌÜ6¾,0¶¼ ƒµu§‘]ÚŸ ô9ÇOÝM¦ßZk³Ÿgêò´“-¤–•&¶Y¼€©!&RË*Hw&¿oÂIÂÚdU ¬„+Ke™LWìÆÔ9¬åÉÅžH"KI\Ò°R£ÒªËЯ}N§/ÐôŽd¹Ö¢T/Ú*|i¼)ÙR%P‹°€s|öª½u³B¿º¸ÿ8U•§à•F"©Ú +çõ ùo³~ꢪ ›‰ØÂªÚh\³6¨®ž*'£7ëûÔ ?³n¥ñÍD’€Ì\²÷™_%F­€d9/†xθ'>XZ^XçTôøºÒWŒ%ª´‡vÖL=¹2òÝQWZŽ]ãï7‹4åÞÀÌJÇ]>Γ;qQw·>*?È%ÕÞ.ânuY»½¢©´Í!Ówlí›û¢ ŠÙÝ&_~f~ç–ÏNâN8ƒÀ«¼ga_gž¯bÙE¬MZe„bn7Éß™àÄj‰oI¨³î ‡Ëú–—I3=ôfAni¡B^X¦æáÏ8$E +÷O<9â¢)_›],¶wøÂ«W¦G?Ú]Ã$ÆÃQ¾²ÔFi K”ü}D4XlÍÝ5;ÏcsøÐ†ð¡Q÷Çïœ}õ×¾WÈ+À­eÁºþÊ"fO”¸DÏīۗo?³¡ÿ‰ÁYÙP[šÒi´¹“÷–¬möˆ²³¬¡ÇÄÞm:öé6ÚÛjQûíÊ’¾z³yøÄýïÿG¶Å§MwæÛªLÀU/¬1peCU·Vç-ûÅÑÈœXž><Ÿ¨¤ G­Ï±ùÀ„SžLYÙò¾ò§FÝî û½k›¼Ea’Ä +K¹&ÿqî _{‘X\Ôîs6X$+gm¥J~ôpAµ-»fç¯ö¸°»6Û\®ó8$…FeòDS΋\›˜çÌ94¬ gTpÆCÌ~“›¤f·”·ðæb5³¹Τ,e}Á0¯}Ù÷½µ-¸ï_6ÅNßU="µý•%«Ü"·}àqòÒ G[î +ZgÓš÷žÝ¶÷ãGüwù‡‘¡}V†3å²ÂÖrc3È äE®‘Ù{Ì×1Úç-Óqç-8nÇF‹ÔiÎ}å•¢¡§#ý´¨·ÜÃÏ2æfëd|,§/çšÒ>6ªïìj^÷èKfr©j+³½µ¢¬70¾k®8Q ’ˆ¢ÅÔõêDëÑÆ„‡³¹‰7¬¿ àRZ†onea™ºÜñ4Áž\N‡Tߨ³kÚÅ$@¹¤ &jOAš4']hL‘èEƒO¦h4y¼4…$­Äüåàµ~ÿ¥'®þñáí9®¹Â^“oYîVý¤a‹Uh*®4êÝúÌÙ­›7¾|´£óOy•%šéW>Ì0M v™ò]j¥•™U™•4EÀ“• ËïïsaLâ$‰\%Ò¨Ìm3 @‹{ß®±™”•Å«ÓxKl² OÛ`ÅËoéå"“Fš©*¸vmEûp¸ª8Eã#ïs­¬Ð¨ý«ÜžµÕzC —]oƒ8jðwÈúìnaa ø5ñ\ÛÈÕB£ßâ ˜Dƒ[ÃÛIi½æ¬ÜB§4+Dyµ-+í­w¯´ +5ÅZ.q¤zh™¾x唟Þd.ÎeR—²ÔJ™Š¼ýR~ÑZè­V'[û¦õv¬6æNâ×õTŒ™KÞI‹a&ÀŸTØüzm¥=7×^©ÕûmŠx\Z®¹Xš57ÃyÌXª +µ¥FC©N$Ò•^›cnŒÁ=Ï® ždÀ“xŠ×@I’o` Wàùý7c%.ÃYîøcmù¯t$tg-€C$ Äí$¨ºí÷â ×XQ_×àÇy¾c r¼‡%jö÷9 jc>V,éòÜ¡¡Î5ûé í-qœÀ“eAw[VʾJ‘¯}š˜2Œe‚ýà ˆ+ßî2Ö-¤²%Þm=oë-£KÃÅ'|ÖU&ëEy kæ}FÃ¥= «í³øˆ`®‡ñtüö5ÌßDy`¯­m´ŒŽÎû;7ŽæVú÷ÎíÛ\~ñ$¾Å߉^öú‘%@±|;àJgß(d 5Æáú—îH¨íô_è¿m~cGNǼͯïh˜“ÉœeeíN){îpH }‰þmÝÃíÅj,_öðù½ÑcãÏø±èØ÷ÆÜî±ï±ïH!~þŒêEõiæm§˜F­T¦Ä¹xž&ÌÉùÂÚÉx–DïÌà}úd)¤¾²ÁCÜ®‘'f)„ÄGr˜°n™ §‡V­ +û:˜Z¡¾—u¿úxî˯¶Ëkvôèó»jV5Ù,† jwÜ#1ýÞÙw>v +o84ìdp÷ÒbŽp»Ð2à*ñN— ç.÷W¶{ñö³%å<›DŸ^SnQ0‰Š‰·i­·ÿà·{ô©r¨yd™&|ˆ§ñÙr˜´­Ÿ3­\9”HÜ´8 +µYÁcÉJ£YRäÕ–›³kv}t`ÿ¯vÖdÛª â¥ÏõÓLêŽrN½wöÝs®‘ï ÆgðC*ƒZÏ|#XúR1±¦nåO*ž87×ÅÕz dqŸ{ÚÄÛkÖø7M>xW²Ì˜«+ÖÉÒ(©¡DY;¦&:,nerô°µÖ*[ÑÞ;\PY Õyꪳè§-îœäùýùà¨ú;öS€Ç°d7…/Äõ[ŒeÕ +•·ÝQ²¼(+Ûªï¼g¥Å?}¤?ô`0?4¾f•ÚgQdû#]©NkÙä1±®²ÛéðiR*ë R£3GSb³dçVuŽÖvüC{¾ÚÐÖÖNd¨l*u±Íž›åk W­ØÖSxÍ€WÌ©GJæ}§Ë-IØ +h¹ÜN [iH‰ûóTî†WíxKÁÁêá<Þ ˜K_óïKámå‰Òùêå›W{FŠ5Õ;è]sÛÖãv):PK525M¢ü3,Š¥ÎÛWr§…ŸWß±Æ~øûš=…ßJו[Šê,’¬|—’‹ÏJt¥p_I•6õÍ÷ð/,¥ªÔèÜxõ†&“¹}ªï°+’¢³G-NyR4±O¢.sbï–kØJjîˆp|ó„›'ê‚I¢ÎSŠèóôUúdJ®Ñ©!6óôiÜÙz>G$J'wòÓ,Ú2üy‘ŸWV4{†Ü ;LX^jU¶]HßUõ@qV¥ÏÁÇßÉñäh²7®!Äýp0_3•ÎE:ç7l)·Ý°ÁvÂIþõíli—“œ–‘ºš—RS+ÀçäÊB2ƒþòâoþp‰þ[Š\S¨äÝŠ +_ +·™/ÊH£¸Éyò³”îhãAnu”°Y^.,¶G£©Z¿cöuâø\79¡*ÈâG£Z§Ð.£¿Ð·4VËÑf¢.þ= âÚÀ]Å|ùa@ +È$²_âLƑЅûPm u$ÏfPeèZZ[õºÊºàäãaíècÃ5ÙôžT¥&_FÔ—× +¸"£^“–.NãDª@@n§`+ÚRG5FZyð—ç>ìl¬Þ,º£¸o[;¹5W#âlŠæY„¶ts8Ü«3úf‰ÄiÓóð>¾"GžlÓFç¿Ô PºÆ|Àá+„ƒ#ŽŸ’¥ä ù&ù  Þä¤r8¯q¾äVsp¯%µ%íMú=¯€·!™—Ü“üTòŸùRþü÷Sø)ƒ)o§¦¦¤HýUšäát£ ®Î¸ÿ%òpw#YíKp”!OÒÓ k£Mp ;ýN"ôs®!5oŒý ÔÃ)BZÊúàÜKíC}d52R›Å "-qi9²ø9é?‘ d&êwÐׄô·!ù;ä#}È ÷J¨ à‘n\£ŽÄíÌÛ=w!þfº™náO-þ ?Vâ@'Pzq–Ü' MqʈŸÀÄ9ÈÀŒ•ñ3ù>ÄW D¤ðŠCõDܨDwÞ€çLÌÃu­­uH…øô8Þn¢[…ð3—Îì9¯@h‚öçÆ ¼íwYbö1H„¤H†²Q.Ò!=2ÀÎ*ô˜¡æµB$b¾$;•@ÆsCåâET ¹¯Õ£ÔˆšP3jA­¨ µ£¨ÚºÐ +D+Q7Z…V£VS.^sþ6V+¦˜ Ð -œøFÌG»ræ]Õã 9(ôý„œù~÷RBN" úaBN¢ 9…ÒqnBN!%.LÈ9 oLÈ9 _•s‘ß‘¸NB¼+Ñ' ð‰„œ}®&ä°Û%’òd$&Šòd”OÔ&ä|d#¢ 9õO%ä)HI\KÈSP9™uó?”dWBž +òÉ„< YÉ yê! PUš Pµ¾&6¾irdhxZå°9Tu±ØP$¬jë·ªª"UskJÕž +On XQ Š¡q´ M¢4„†Ñ4¸‹#ah6¿C(‚ÂÐj@c¨A-¿*0òüSSl+ ç0Œµþ kKl:¦ê OŽ ‚[Ä W zu²=FÐ`u,2_ FX‹Mo¤ÑÐÐÈØÊ¢ºõ°Ší¹zޱ£lÄq¼vì£ù3äVÄŸâ1š7Ÿ¶þPå$ +endstream +endobj +359 0 obj +<< /Type /FontDescriptor +/FontName /ace878+NotoSerif-Bold +/FontFile2 358 0 R +/FontBBox [-212 -250 1306 1058] +/Flags 6 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +360 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +361 0 obj +[259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 310 1000 288 1000 1000 1000 559 559 1000 559 1000 1000 1000 304 1000 1000 1000 1000 1000 1000 752 671 667 767 652 621 1000 818 400 1000 733 653 952 788 787 638 1000 707 585 652 747 1000 1066 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 1000 636 352 985 666 612 645 647 522 487 404 666 605 855 1000 579 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +362 0 obj +<< /Length1 7188 +/Length 4926 +/Filter [/FlateDecode] +>> +stream +xœY t”U–~ïU¥ª !ImYH(ªò'•@ª²T¥²T*•¤²T–¢R •Å@H…,f3 DdTÄHš˜ƒt+´2(b Œg”CÓŽ=ÑAÚF†¡mtÇ9}ÔÁHþÌ}ÿÿ£íLÏ™ÊyÿÛî»÷¾{¿{ßûÿ ŒZ„²P:ØÞ×6¸õãIF®"„½÷¯‹{)þ)hßBHÑ;ÐÞ¶?ðìI„w€f_WßÈØä êBÊI 1tuu´É6¯Rùä¾¶±AÜZ¡úÚÚºL“½òý½©ÅÐoq|j ô[ ¦¿­¯ã£¬A(&!Q<° †'>¿¡x;Ì[‡:CMWAúë;û¢Nf†þA„HGûú-®«C(QóP0¢ûãÚX‚þî#"BHŒÂ$R$[°0…ßœ“­S‡AÉÇ›8Ò\®K.dzx¾ÉóTZ€©%ÅRÄQUb–róž'?Èÿ3(¦Ã²W,$ ¥YÉ|GVŠ<“å?< ²SÎKä + ‹âÜvþØYŠäHøâ¬9Ð’*ç=*UkðþÉ_[Ò½Eùé‰8íc¯Çã}·Àš[]¾ÿ—NG©5?œÍ»ª"o«Nø#Ix‡6C1 Gf,\ÜDC¾Ró¥i ò)Ö6±šs +Ç6o)\Ad“â=ûØß--ÿí¹Sÿ¨¢{¤x~ø„SNT[žÓS"(ó”JWäY¶ªU§Âù[wº‹‹Ým)Ï™ØòÂ#áìµ^¦Ê½:AÃÀ^ÔZ\f…Ø’ëÔG¾øâ[ê1²ïs'û'¹âÚÕ- @)g€Š'üØùÅ'¸Ý DŸ;é>óáqJà)7ÃÃýíºì÷_ö’+ìØ0£Ç½ì$Ðpqý<ý2°ºœ€"x?{ft;GG]¤Áåšy‘Òzàñ>ÐFÐSšEàbÊÛ|€¼wÏ_®ßóGâ÷ãÝ€´ç]ì> Ä(kh\†qúÀþNÁÞÀû].ªFx Ï_DÜåMQƒ‡ImCQzÓú+ÈÊÖ4?™dsðù™^؆Ÿ¥ÂÈ-ðçG•Qr›þèr–x½$kæH»µž?7Áç9¼EѬ-IÒG+LÖh}’$z×Õ`ðjðÉ……; +ÉõÃìšÃ‡ñÁ™ïÅ->ÊâÖSP¼F@f@‚ÏÎëRrš'ðúF–¦ù=ÞÑ^_iezbbº§³[ï c¿$Týc 5áìÙp/åçæö)Q"ÇòãR̤fàtÌóÅB“â³…öÌ%… y +«9 xÌ^Îj©|2=‘Ä®Ž'ÉÁK—‹²Á¶Tì?8ªçqïΑ¥ô§Ù*–¦.!5rS8Åq¤­Ð=à·¹´¢eÄTк²£µ¶ÊMž+°˜\1Ù÷6œ6ú +6ÙÊ—ß[U¿Zã5ðùAnàÎ9ð\xïxšìÔtñ:ðgÙz_C´T\^¦ ÜòV‹?ǾÂì]Ø$ú™›µEN/QÌ\ òk).þ“LJ‘Y¹×å-$Ù5žq{=þŒƒøÒÌÛäY€7ËpúÛt½ gaý¢y˜ˆ‰Ìß“¾†É©–>Ò˜šl‚<˜Ä>Ã>†³ÙÅp;šÍÂZp]÷pýqÿñ&JÅ–³Áa +hwÁ]dÝ4ïÒ@¦1´ã…¦§É¹;ŸØEOP~ý@ÓÅÓ(¹P3Ëû§§_ çìw†ì" 'Ó4ggÒ{A,XÓ„wï²Ûa|;QàVÑrG˜kN nu7å¥ÅŽ_LyéQ@>)|VËR=¨cÔÒ.iGÊZ›»¾Ñ%¯¨ñùjºÊ|ºUU9™É*ͪš“ñEËtŚʑ¢¼‚lkyàý&¹ ˜¹‹y³šÇü]È¿¹®³µÌ—™Ñ¶ÖwŸ=%93¿‹woÑ+·TÛ&ÞÓ±¿ˆj›»ì=çåaN'>GÓ<¼ß¥*­®)Ya±çõŽ~\’ƒ׋:;»º‹ây ÃÅt²qû½ ¾N)&›X§TË`XÊ‹3“Sì÷îYÛ–‘é+k]×™…ûuï ´]˜Ø¦º5£×lEs¼N€N +(£÷Nyg7•4ÅLõ|\\Z˜ï©t} 67ößÿ$Zm·Ý\­päĶMR•ãpå\ž<Ÿ5àç¹ðb’"ñL‘ÁÈ=cŽš CŠžIŸœôá×îÕž…Å‹¢­®4[‰_ÎçÙÅÛp2&P4˜¬xN­X¹J"R™ù}K6wm0fý¾»¿®üù¨ñS\ÅŸ:;Q*4ûÈF›²ñIüÝï–â&i3šÓïØîs4ÉPŒH¤4wr>Å'j–Ùó¢}¾®Ú*ìgb窼8%ÛHnNkšA/8R±›Üæï#”c75vûwŽtÙÌm|Î7N–—{O¹‰Ò{·’I¥!·áóŸ~ºúŸï<‘M³½y“Üd þ,Ü5¨í¸|’ÂÙÊbÆKÇ?ÿÈá ¿r yq© VÑÉù¬ËÜ­©q8¿ÉñNu¢NUCÞ5ö%ˬ•f¼;5AÎÎU_1ññ–jvPÈ•ÜY¢ ¹ÆÌçtõã}¾ò{îóyÍÎì$üYZE»wåe&ð~2~κŸž)9p¦¨ž:×Þ~®}|“ÕºÉJ[ÙO¶nÅö7M7ššnp±• ±¥€ØRÓ»/• 1Û\l=ãó4uuWgß{€ôUrAóàOnUM¿ÁN,åtïçîè +.ÿ¨yCàC÷ßë{‚(Š–²5øš‰ß£—»×*øó€?æß”t,èL³t–·7ûËj]¶åyÍ•ÍÕ5øƒ­>*±|—GS̤¥§ä‹ËrKÊUE±wïûÇén”Ôó‚›úÒbþ¯ãÇ5Y™éV¿+ôá¯ìµ\ý¢â…Eõx¹ã4OއŒËý|$Ï6¼ +qo×PÅ“V¾–^5†˜»¹^Fm`ã +ÈÖþ©àTƒî ·‰Œ·O•ýÜ™²»¢ªˆd•»×9I¹×íK âCÜã6>Æú@`ËgžŒ?SlôLI¥]*­×¿gOSéiس'€­Ù;싱‹é:#øú}X'£Ø¦Bm"3¼lm¬¿UWóÊÊ~¼&ñSÌ¢»qshé½F§q¯]J ãÅþÛ·Ù£·a/v=q8ð8áãÎ#p¶¤Ð»¤ }aWƒé +ðÜ;´¬Ü˜f%¿7¦é¦êŠÒt£ÅbL/­¨69ti8Ÿ¨J +&ÊõÖ²Ú)W^~žkª¶Ìª/Ÿ((A‚oFð ^ÎÀw™ÇÜÈ1ÿA  gÿ¬ #ÎÿŸ©æ¾ˆÄ@DnGûÐ1t]EŸ¡oá=;Wáü,~O“’D줊¬!É1r‘ÜEŠ’D¹"¯¨G´Q´_t\tQ4-^.n÷ŠÇÅ/ŠÿEü‘øV ‹ Ó„U… …M…½v]"“äHü’ÉvɤäŒäªdZª‘š¤k¥KJOJ?Þ’Id™O¶C¶Ctvý5W†¡¤AÑ@Ù ¥Ê2(SBûu(YPò¡ÔAñB)‚Ò$Œ†² ŠMèÓ90FûõPV óMÂ\Péä{„¶{¯((&ŽÊèúÛ¾¡¶ Å#¬£uÏ<]ç䘄¹þysa\%ð0þdŽb‰ÍìÔ$â>YÁÿä‹—‡ñÀ;ˆDøÑÀÝ æ(0þï¦w2NÞ€þ.¾Æ×P6&²$$q¿Ù‡ég¿Åy¸wÓ0ÐkD`D:ýÚ(ÞJÈjÐ1îëKà$ZŠ´ðÞš ñ G©( -Cô‹cÊDY(¸›‘Y!cØQ.ʃ·3håBŨ•ºËýúX òªP ª…¨_‰|¨Þ Ð*@`›fÔ‚îA­h ÆÒÑþ¢,ÐNÉ]3%qÚb1ýV=~ƒöë„q {èÆéýsL'(mÆEh9šÆEÈ~+Œ‹Q$ÆÅ(Ç ãah¶ãah1v ã‹[„v8Òáa&¹ð¤0$ø’0"ðU®-çÚs8‘#)àˆ§‘ƒß 4Ð& ŠïêîìIk_¦5eeçhÁãîÚÖë«­,-öƒÐ º ¡nÔ‰ºÐx§ü£¯Pßä@«¼¥?Ô‚õý`w-xÀ½JðN1òÏì¾~*õ¡~_GçhoÛuÓQ0jrô¸†:;´¦Œ,m®–_¦âiaÀd5šŒTK5GõW‡N PH ÑÎõÐ|)… àd„§qn?–ö¿qhèîè×fgdY쀰˜ë p¤ÙœdÏ6eÃ9Þ7Ø;: œ箑‘ÁÜÌLnظ¶<œ1<0:ÔÞ±Žn=£g³ñØ<П + ‚ØQ`òÛÃÐÉí Ý]3dÀ­rðoí=¿=·Ã[åÇ=>ï ùoÍX•ÿ Jçóϧ<ýC=»XtCDÿ·!›Ë§ðì#!<> +endobj +364 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +365 0 obj +[500 1000 500 500 1000 1000 500 1000 500 500 500 1000 500 500 500 500 500 500 500 500 1000 500 1000 1000 1000 500 500 500 500 500 500 1000 1000 500 500 500 500 500 500 1000 500 500 1000 500 500 500 500 500 500 1000 500 500 500 500 1000 500 500 500 1000 500 1000 500 1000 500 500 500 500 500 500 500 500 500 500 500 1000 500 500 500 500 500 500 1000 500 500 500 500 500 500 500 500 500 500 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +366 0 obj +<< /Length1 4412 +/Length 2871 +/Filter [/FlateDecode] +>> +stream +xœµV{XTe¿sÎÌpQ.3”$œaRd™'ñŠÜ ÅG"< 3ÊÌfÃX3µT¤b7}ì²t7b»hjÙ…Ö'+ÖJÛ"Û\Ÿ4£ÍK›ë–k)‡}Ï™ƒ¢ñ<=ý±3Ϲ|¿ïû~ïý;/ƒtP€×îæ¼úùF3"=DÝÐØR?õµ†|@ÕÓÈÛ9­A]Úˆk&;ݕ啾†nÃÛB§ÓÁEÝ£ŒÂñ·8žàæVz! þ…Æà˜-)3f\|g³ ÇSp¼ÄËûT4õ)Ž7ã¸Èùã?ØëÃñçÊ)HWõŸ'‹¢œŸ†Q_ä#Jø?òKˆñNKwf¢¥*BÃÂÇŒ…ˆH´,Z­ù­bÿ¿?–¡sd ƒP€¸$‹yš)#F«|¥­pv[aÔê|Ûê‚Eâ:j¨ š§ØãanS)c´3ˆJg5eL³“&È#‹ÙHè䥊֑mw¦øÒ£etеhÕ×µ?,cV|ôà'QéŒ.+‘26%‡È©#9†"›mzóö¥±sÓl6çä›ȇ_,å÷ $‡Ž`þœCÙiA‰¢'#UÐL³˜S‰U§!:•> ¥'™íjåâ¼èÓƒZÏ{¡§@__q$ßÉÇ/P‘>͸Z[dHg¼Æ–5—Éûù¤bü¥wR#Jm¶‚,úB²¦Ôv©‰é°ÝZpY+DŸE eÜŠƒp3€F‹ò-æä±˜'˜2bc´zs2ê£K 1ZFŸ”Œ~íyæŽç¸ÇŸj#cv~ºÛǯz¤¬ûñáëÁ/ÜNzíݲŠ[GÍûw½|´•Û²róæå‹ÛìÕûV<ùt[þ¢ ò„ctâMÌ5¢³êhæò¼qt¯p¬3±uÚÆTÃ8˜ˆ³zJ”ºŒ8«It†)çÔc€5¨%ŽÕVêìØÎ³«7‘BorTÎÛœY9±sK×}ÆÆ¿[S|±{¼LÆ‘¯ŠÌƒÞv›Ó2sUwu¢HÈ>ó1ì+ÀŠrS”Zˆƒ$«JOäHÐJ•I-º•HJA'©-f”¬ê¯šG"ÕѲ¶6ƶõøªB— tÆÌæv~»ÆÛo™Á\,¿a‰M0Û{ÈÄ7ö'…ñO’w/ôµsm¥$[ ¿•öJïfÉÀ(Sm‰ùË»þA*IHûcö²ò¢Žþ»ŒM.íøêCz½å³KÝë„ò…ÓRŽK¼‘÷FÑ–ë™™T’”¢‰‰q ñ wwÏþ¤Wk˜/ +´»Ï¬@åGˆj培@Ý”)œ&}ió}?NZz@9 X1ZtÑ'¥Xc¥TÖϡԺ`¡ŒHb¢}ÓoùàõÌYSªÝ—vdߘ±dÖÚuÝÎ[Ënˆ?I÷_Žÿï@tuD÷!úŸE©^—å®ëm½{-žJC¯ +Z¦yRÁY(K*p‘Y…@/š¤M$ Ú§c£ÍÓ¬b®Š7@;e3c´š”¤LeÐë¸Ö†–é7ÏJ„OŒê]ïÙÂqáG!k×õ·5uÅgk…³Íí+Û{/²s)ѽò&3þê¶"ãÜêá3#Ï“tº·Ÿ„{NHÿÝœŠÌìÿLâ7œÚ¸ã̽;f’¯l约õb¬+1¿v`~M¿)¢î‘äj:£žsÈ´`bÑ#SéþøèDK|ÁŒ‚‰ë‹)Æ„jß¿YO/ ÓÜ¥&- '¤ÑD{2«ëüUµÆ™OuõÞO[³[„¾‡`ÎWª1ïÝÑ#åEÛÐYªT‡g¤­+§¤$j¤.Ò1¤'ýÙ·øs…»Ô„ß”˜3£bâ– ÅÕ†ÕjEœ7«¤)¯P8fôt.ËÉS^õ Y©‹±m=Ïô¡­¢‘ɪS%EM¬I•”œB´RQ{¶Þ¡&4+þöÚë%kÔÝ]Öuûʯšç™J«×ÎN´Ùz»…e=¶’{Hþraé°]ƒ—å=„vÕ¡¼X<ÇF·åš¬ýN¶¡¨&íÙ±÷+Þ²]zêÁÛDÝmÜ Z=+q‰\;̬pˆAj¹îÅâÑ`åGI%IíÛ}XØ)œ{í0¹­ä¹¾÷Ÿýˆ©þâ#á{!ÿø{DKö^:OøŒ<„o¤:¯ÄîCÎ8È1>èiÓl"N,­é7Íïíó$)KScJ»–î -OÏ +›hët=gþ¾÷žöGD>ÖwSÉ"ßð=\æTñ,>ʧIG95À-®ZV¿ì·o?¼·ð–;ùcÕMŽ£/m}ŽŽohµÏÏYbôÞºoõÒy¹mío:Ìy¬]ÿ¼·´MÒ¿ýû³"OÔbðôÅê¶fhL*“Jt7åÔoÜø¥võ#š÷›ª-o¼Øz£»l{qí÷ók¨¥$ñróà«Ë3½Ãßk-”Âvø ¾&,ž:ëÉäµzz—è ôz9ýý@ˆ”¶`Q<5Ô®Z3t„©„ºg(y*˜6°ÒPAŸ‡ +jÖ£èUæ TR<´1íÒó!fο•ô0Qç¡]l~BÚw`o•7xa°;ôÔ‰qñÓJ ’~}N#ö>×¶K4Žæ$¹g@±]]I>éÃPOÎS@…+(FÁ„RÌql7æÂÊ!Ü7IÜœ_R’ûÄ¡ !íT äO_b_Àa_€Ý!ΣÁC?àUõ£ö:Z¼¢±{IÇ^pä@.äABÜ +ŰJз‹À‹¥ÕãIíŒA ì‘ GDîÂÐ3Aœ ûV§@ ÏË8…½æË2N£ì7eœFÉ'dœh2IÆH"™2®€HR%ã +H Ëd\ qä>ù]…ë»ä5*È!ûe<b(¥Œ‡Àd*^ÆCAKåÊx(ÜLÝ.ãa`¤ÖÈxTS/Éx8$Ð23é)W:èÚ)ãc_/ãcÁ@ï—ñ±PEŸ“ñ˜ÌËx”3˳yo‹ÏÕà °éS3Ø|žoht°…»ÍjldKÅ)?[êð;|ËuȼÐ>pA8!€!ÏÀPNÅ; ù8Ë#Þ‚ì`À·,DñYze—_9ðé@®åx¯Ã>À³eŸ«Ó€ÇU<®*“V¸ ¾0À5ºìÈÙ\`ŸÏ{ø@‹õus .O›Æ^¥`åõó‘Å#±µ æA½ÜÈЀ ¼³ØÎ²£É“V^‘õKâ_Ýbsøü.ÞÃN5¤›Ùf'¦´¸ÌS¢F,úÌ€ž3ã[38§OåÌö[RE1’”´ I¬ËÏrlÀÇÕ9ÜœoË׌Ó=\’[9¼(ˆC—:$S}° 1^ÒoÔý‘ñ¯{îúí9¿«ÁÜ{”Ý9R¼Å ðH*:ËÃ8¶Ùãty˜_2ƒ£Ž­ma¯ÐÖ ÍÁMÉÆf¤qJª‚ésc¡ų£(S7š2Î@À›i4Úù:‡¡Ar±Áλ^#*崀 àþL<{Œh8/±ãªO îÆy/^96F™yÅŠ·l–Dí4×¹øë˜WH²\«õUn?bÍ(S©Øewxüè±fOÃÇœ6ËËÙñ!ÏLa‡1ÃŽ',f&ry¤Ò«“ýX'¥¦è§ä,”ÇáºàèÚ=S¹>•3ÄTa#'i`à} ÆÆ ~cqavÜ4Q‹ÑíåFH5 ³}j ÖÒé~DŠ1ñ²ñ»±+/ËW’.p$lÖî3a55‘3¤ÂC¤#Ÿù|ø9xA€ÐS!µø=þýiMæ +endstream +endobj +367 0 obj +<< /Type /FontDescriptor +/FontName /91a4c8+NotoSerif-Italic +/FontFile2 366 0 R +/FontBBox [-254 -250 1238 1047] +/Flags 70 +/StemV 0 +/ItalicAngle -12.0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +368 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +369 0 obj +[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 705 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 937 1000 1000 1000 1000 1000 543 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 458 1000 579 562 486 1000 493 317 556 599 304 1000 568 304 1000 1000 574 1000 1000 467 463 368 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +370 0 obj +<< /Length1 4388 +/Length 3021 +/Filter [/FlateDecode] +>> +stream +xœ½kP\åõ;ßå°/ Ùîra ìØ' Ëky…@»„<XX—<¢IAcCºFÖ:Ñ1j˜Ž5mnÒŒ%ÑfÒŒÓv¬Î¨µé4¦£É8™V§uäÒóÝ»`tú£¿ºÌùç;ïs¾s?BÖ’bKžï N>4àuÄÜ ÔC£ûöÄûqý! dt¢?˜[•“LH"î‰7<6so]ïšJBÖ”âþh8 +&ÜCÿˆû+¸Ï Þ; [ˆ÷7qÏ·uÙJ›ßé$$)÷]“Ó3\6w÷½¸Ž….¦Ô¿o†‡ÖØBT™xŽv Ì?y qäøÁ·KJ‡vÆÆÅ£ïÑ_"YC’’YÄH +IMSµF«C|º|šÁÔ’u+Äëõ„lؘ•Íbø_tÿ_~”£ æ’ GâÑ_;'p`®X³éç\²ô ÄHß0Z ã +G i‰ÆiÐC&¤šLìŒ#Þå/à—ô&JQôTmKO‹Ë1¦éÁ(ä¤P6# ì¶*êÈ?y©»ûRwùͬ­ÍF­.ÍÏædzóŒ4ræ <)=õéëçªJpþC«¬» ½Î¬4¨òãn» +’é…_Ûé‹0d^2¢/›æ*ÒÄTBòT§3Øu‚Npœ`½i==é6$”þNI{8Ó+¯˜àß²ü>´ÿ4ò¢í€1pÙmé:mœ“ïL·Û\Nº/h püã$jªðùB»j<5•MU›ó‹×ÂFzVºmŸ}`˜/ÎëØ°À˜ßm(Wĸ¬#ù(9'âíU°"Üèt°M†ÎÈald%q(ÈqTÆÐŒ&“Ï×åßÝUÒÝPátvoØ”§)¯ô4ÆÆUÑ‹E ÷X¦çf_zŒ"ýR8­°«:¼û®þ©nÌGê]D½Xm˜/Yc¼ŽL­Ëí´NÅ56=#N§µÛœŽ¯}=ž²‡÷6Ö–yvnŸ÷lþÁ–ÒcDèÍ@[ÕîuÔý“½ýý{†ôt]°ª- ]0ÞWQ=_µ£¼ð؉Ë>g¡§×ä\%bר5B¾¯ÁºÊzµæUWÙ²ºßõQz}Éxë¨á19þUhï3h¯–EI•f·¹u •ÃÅÂ#8áB¹Û½åæì„§Ün ‹Ò%élvñz˜»´˜qù$»Òûʸδ‚AeÐEž‘>–!Iº‚5tVú¼P:gB:Æ3åI”y°\T‚̱üå—Np)ÄG¢´8Wäk Hiלv•0æ¹9é½¹9zÝ´4g2Ñ‘viÏ m,ÒÊf<ÉÒtz;Ó ¤ÏO)²ì*Œ‘ +q‚ª½ü#j+ýˆE'B÷-"rLmŸ«ŸTÌ(!x¥´Y”Ý'+¨ñš¹ðºÁF¯Í”žn²)“öÝ={ÞÝC/êëÞX¨×+Ó’ÿe8ñòËRX–éG® Ì5L¦FµZè±rác Ø-8V`îÙî ˜!鮃ÃQ륿~šØ +ú/î‹—> ïhÆey>”÷&ÊÓ(O¹B©ž B¾L 4«WÉWÛp÷Ø!(Í®tnÖ”»·;ž°¿Ão.@a}Ò#7Þ¯sJgàþ¦®ö¥{·G{ŒÕH«Ù,øî%Í—‹Z¾Q³Ùëö n îìjØÚé©/o lÝëkmi¦kJË[ùâÁŽž=EβF¯g{náPsKO¶=_és8,*½FÎ3þUÀÜ)Ç)–àíô,£QúÝuÖi4*m:jÇ ÊwKu òh¥ {æðŸ×룆¥?ýþ 5!ß&9Fr½éóΡtnïÓôi×¢uJÁ„Ô#½ 8-Ûâ^> ¿Y~‰õÜ ì¹n82o4"þ$5B+WÈê Œùöô Ènu6˜+©ñ¾# óJo¯CÏP5Q³¯°lÄX^¹Zñ+`Ç!Ëþ ½[[<õ ž7z7áw²Ú]ë¡ê¹HJìT8ˬ‡”c|6Ùݫćåù4ÊM]É2ú gU%øý¡6[YSe±>ÉkÞ)ýÆêÜzÉÎìQz’ãšúíBms9Œ9qÚ§®îÚuu×ìãÕÕWSõ!é£C‡`½ôhø«pø+Ô¹u¾ óbîãåÚ„ï³?üܤÍpÓªØÖƒ:N!]6óË@émwÖÉj™m©m¬»§¸zWÓÎÎm[ëºêv4tSµÎ”0Ú5ú&OM#oÉ Z]ÚuÞ²ª:&ŸÅôzžàw^cwÚu¬chÓ£1Åä uã¶Ë—óÊJòÌÖöŠq¸}ùrôÛjÓZsRUÔ)ñ“{]ÂJí 3ÖŽÂþ ³ÖcµÕõîÞJ¤Gj™ð¶¤ÉkôÃÔj]&°(µ#pwÿˆu<ëy©óàý¥¯ð”ÕL.üW «tnnä ú¸sÙÑ!"e3¼²´áSøBy¤“\Ò‰}ðA"’¡ê`“p^ƒ÷@¢FÚE#ôºHߦ7è§ÜzÎÅuraîw‰»Æýƒ=Þ¸[hÙmr =&^„.„M}Û*²ªzFÚl~_t_•Ãd¸N"ÔEÏÙÙ>„žïáÜìÁc—®f‘l×O8ù—#crä7®rK!ýŽ·Àm8ÎNÑë×pL™áCR4!‘&Å&RÊQÿ!¡Ë# KÿD5cl5ñ<ŠY#-s½Ë3¤'Æžûà/QMòoù0±ý×·XB,IÃî©Å~œ‰wV™1bÇ( fRDJÏNœÄ…~–b-ÔZÒH¶ãmܯ£nìæ"_P¬«K«îäȯ3ˆÁ~Cê¢Þ3gã0ã +ð=<ÅSÄßÅSÄßÅshE$ŠçðÛu>Š!kFñ1d=¤Fñ±ˆ/ˆâcïŠâãH:´G×IÄ+6$‘X¨˜Ü?5<žÙÔ_ÀÛŠK<Ʀ#äÀU+1áè%mdÖu®Û1Fm¤™Ô#'Ê,R•12Þ4î'M(-ˆ‘&ýÞ‰ñïÄÔPˆ·Y‹ùr^ááG™q¸µ¹,6 3µLqäcóZ’-±¢-<)_µEÖ‚óèªÕÊ© siÁѲb}TOÔ ï2ßa^Whjzxbœ/±;K1÷!Ô=2a‰¬ßIJÝe¡âÒ>ÓØäèì4е ËbÃ33“åEE2Ö2ˆŽN[§'f§úCƒÌaëȤlà †¹‹®µO¢ÖYT`Á’QÜFÓ¸žEÅý¨~pÕ}+Az9Ãò×ráìé=©Ÿ“rÿôõKO};/¯çnq½Xg +wc–(ÂäELh÷Ÿx$pÎgòÄ´@‹¨õáâ``£gêõD-þã!³H4-ba»_lÞ‰°%ý•7àßAcÍ´ˆ`毋É&‹HÍ->½0XDÎ<œÉ‹žvë XÄ3c5†þ¿éß +è‘ο¤ÿ$  b¬É/z÷äƒ@åÅš×ööXÄ8ó¹8ŠÚù£½½z‘ ˜xó¹\åYE%˜Õ*¾¬È"&šùy¦äuË\^“À‹1Æf‘´û#¡Hg‹R½ÁÐGäOÙ1…këÒôi”˜dæß•ÝI6óEb<„çop„÷ó}ŠF·–iFÕ|„oˆxƒB„²: =H‰þ1„è ± ò¤Èš*¯e zþZÀLMhÍŽ¨m™,Õ,ð×¢ÊÞßÒ¡7ˆðGС&!"𑦈d + ›,bKƒíV1ØBý="l‚#{ïô„±jÌèDd…­y@ˆÄ‹|»¿BO´æ_xjj e1 ëQñ?}~¡­jô8Pƒ‘÷øüçñ¦Ôöלpù~q]hÊ.YD,Æ ëÙ¹ØðÕf ûÿÝÙµ +endstream +endobj +371 0 obj +<< /Type /FontDescriptor +/FontName /79e08b+mplus1mn-italic +/FontFile2 370 0 R +/FontBBox [0 -230 1000 860] +/Flags 4 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 860 +/Descent -140 +/CapHeight 860 +/XHeight 0 +>> +endobj +372 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +373 0 obj +[1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 500 500 1000 1000 500 500 500 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 1000 500 500 1000 1000 500 1000 1000 500 1000 500 500 500 1000 500 500 500 500 1000 1000 1000 500 1000 1000 1000 1000 1000 500 500 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 500 500 1000 1000 500 500 500 500 500 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +374 0 obj +<< /Length1 2328 +/Length 1338 +/Filter [/FlateDecode] +>> +stream +xœÝU_lSUÿνý7ö‡®8©$çî"zo»vü™b³AÉ6aµ˽d*¥»ÝÛõ¦íƒ` ÆHnÀ˜ â!øàƒÆœ¡‰<å7ãƒÆˆñA‚F  „ÍïÜž-›ÑD_m{Ïù~¿óýù}_Ï: Ðà…K¹bÖBÖ#ó- fó¡åi´ï"÷l¡”ËBlv#L«ÇwáÄ{7LLXÙº‹äâ4âMÅìq›Äá:â*b:8K$OÜ?ø<â»T©B'ü„øÄ[¦³EëöÅ— r+>*¦ xÞ:àëÂóvÙ²Ùï<óÙˆ£y{¼¸öÃØ;ˆ/a+w¬J}sÒC€ºž7áC€÷‡ÚÐôÁÿçEVØÒŠ”á8i—mò>Z~¨ÇT;:×)â‘C/,âÒ~Ö}ñJ)©îÉúC‹_Ýuo¬¯O–<ùð>Èw0íÌK!Å•y:®ÁaïùŹG{¼'Wi­) îz Ö ýŸõ+š"ä6yo$HŽô1⳵܂8‘>©Þ+I’,Iþ`ÍâÔþGq!x B)$‘¼-.Vá°§“$„ȧß?X9©ÅW!ñ³x>Âu‘–å´×4{êpß‹ˆˆo ò‚'°*‚—pªç/áxŒ¼$ìzPÈiáS=ämÁÁK~|ÖŸ]»Ùµÿ>Íà' §š$¯ðávKoÉž-OŽOT·ä¶ÒDG|;ÅɦÑtf°_ï0ôB l˜…2LÂ8L@¶@{¤8ÛˆÃv´@ø„ƒ0 Ch§±óAè‡}?Œ9ã6-[ã3…lY8Ç1)Ť&d¡œ™•dª4]M•ÊãMD;h7]• qb§žÐ¹r,_‚i”Ç÷2&°\‰QI¡{YäßÔç Ø :®úRcÿRöˆU®L–¦i<Ú±£ F𨌗dÒUø‚е«+žëÚ)Ú…™Š·u‘w¢Zµ»c±Çf+ÑJi¦œ³ò¼éè”펼Še»!†ï"Z,]AyÑqkTОÁÊ9¬Ÿ_ž@¦ÀvûX¡ÙZjmõ4V#÷‘¦¯Ï·¼÷âÚÝ÷!¾øæòÈÒ¾8·pË{ÒÓ‰0°ô·w•,¾ÆÈ9`´1OÈæ|Ê14XkWÌÌ5LÖ` 1h`ÛÒë?f2PŸiÃccér§Lú#-Ñ6Þd IÚ@ÆØ§šŠÎdm²²dÓ&My4ª¨Ê ã»ðçfýŒGá_Ͱª0oÄ`©c¦{`š˜Ï«5ŽÖ™O›o'g°:=3:f€iüÚü&—J.S-ÔLŸŠé¬N£§x‘똆2ùÉ>•2Ïæ~iñœ,åFWXQ̰ã¢L ñ‚kjê‚á ‚ë5ú¥ÛNƒFcÌ¡t¿šÊNQƒŽ­¥à~¼2–¦Ý爐ªCÕ-§òä,‰žØ'XÒâcšÜJ{n´)J˜Þpp Ô‡j mŠë¶VSé Q\¥ÆÀPXaÄ4l¨OuTêô9j–ÔBø¦³ ÿB¨»™7ÀÐ_pø¦f§Ž¬ì„‡¶hØ„ó:[ÿ˜êøM»Ã×ð¤Uû’$ÙÓC®ñ.»+w>dð5c¨GQ½Úƨ=8ùdƸ‚·¹7×s…P‚£9ö¸õÄR­uCç‚‹Îÿ'lŸî€tSú iàOÒ°¶‹ +endstream +endobj +375 0 obj +<< /Type /FontDescriptor +/FontName /781c87+mplus-1p-regular +/FontFile2 374 0 R +/FontBBox [-109 -288 1403 1075] +/Flags 4 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 860 +/Descent -140 +/CapHeight 860 +/XHeight 0 +>> +endobj +376 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +377 0 obj +[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 288 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +378 0 obj +<< /Length1 6468 +/Length 4546 +/Filter [/FlateDecode] +>> +stream +xœ½XyTTWš¿ß­¢ +¡vA_Õƒ¤Š¥VD €‚²‹Uˆ K(JãÞ¶±ÕfÐ1=Ì´Ñ´c2š“T´Ç1™¶Û¶s:=v:“8¶I3™´“m2vŽ'É1NxÌwß{štNŸÓÿ p—wßwßz¿û=Bæ“|EŽöŽt‡K´6Š+ïºáÍýÅ)ËöáüSBlã½Ý[…MÕ„hSfÏàÈĦ]ïi +ñù¤‰ vG?B?&Dw +ß§to +CbÝ[øÌ54ç9–l¼2ŽÏˆGÚ£ãªÇUÿFˆ1ÉñP÷HðƒŸ˜‡ÏøžnB¸¾ØÔê'Ä4ˆï=á±`8r'Ç€ÏGñ9·?<0’ð“¼øŒø4Ø»q‚ƒº¨fB’P&‡ ÓOœƒŠüÕ`º+ˆ2 +iÕ$z^L, D£Õ¡`£iAbYHHrJjÚ"™-|z†UÚž™•½8ÇfÏÍË/p8]n·,)ZZ\RúPYù_gþÿóCÉYÔ³”ΠžjTÈ©àÕn§ñì>Í fÔÿ==Í袈aî ¸F¯#],Ñ“dÂã>#¸••Áäð¸¨<ê,V—Ça2Py„‹B–äšL¹¦Kbÿë]µµ»jçÄž.lŸ#íÙÙ}øïˆÃìNßaŸï0tˆúë4\ƒ +Eò¥;}0­E'\!Ì›¡¹ <® „ňÆëTi5 xkèbð¿^_yEøX¸õÊ+Œ¶ i÷H´ Qó­&Ói‚=÷‰˜Ø¤Ý;·:ÉIÔš,à=|£+[ÿdή¿üÈãVá{”ɉÖ:uôäIq={î]øhK2x€ß?ï†r:󕀌qÕ6¼ˆ6Œ%F²ãÞ‘šx°ä‚Æ“ ¹À[âÁhXNG)¸]™ÿ<Õ’—׺¥ÏÇZSÌ™‰ ±Yi8(èõòÂ'ÊËO@Ú áÈ^Ìçî7Ÿpdã°ÄÆd©ÁneA¯:µ™j·×©½KO½4J7ÀºžþY+£)By^Ey8´ŸÃd4¨Øñ–L·Éép»¬9àv:‹üñl¯vzœ£A%c#¦Ay½ŽýAM­ÿ88¶ª¢²|©Çš•i^Ut÷¥¤w…Óº¬•mM•Y°[ŒU&ïk(o"IGT‹J„5‰¸¹h°R4Ü£U!㫌d–FÑ‚¥í¾uÁªf›£«¡¢ØÓ›—•aϵeÓým[rB»¦7þ`çÑWk ])³?_l/«lê­ù½„\*i¾|6ÐÓ +l/=ñİçäIa zˆƒÄÀ9ZÏ( ÊeÌpgÀ9á_¡RØ{àÖyz¾ïãÐÇÒYó’Çà<¼~ÏlŒÂæ…="é¤ÏwÝçã¨1/J˜z7‚º3ÜÅ"U%Übh}穈ÇòØMÑDZèe½SÏgòjvJâ^ØõÂdÆ© ÏÔrJgf­.àY]MX –¢ ßD& Í„d0k%ï¨i fn×¢÷]oÞlóÕ·þ¾ÔU´jxÙŠl“yÛ™Ôå…R—ß3Ð_Ζ´Í‡ØÁªê +á‹hð– D3ìÈçEä£gžÒjœ¯ÝÄ& Œ¼Û +¶ÇŽ:—.©š½W[üp<ƃú»EIð]1}pX)ÙË…ï"F 1¡%,j­;zC<Èb›.' IMÕ+Ï…;ڪ맷Ðýófßž·óù'· +·~p²’Éø4íZÝ)´W,‹I£ÓÈkF³Ö §n_¿~[8ôÑ·Z…/W#‰Hï—éç= çõõ™™0´ˆ´Çð-å|]ŒK•v¨­–w;µLc—GŒJ(ðÕ×Tš“wü±¾ãÞÞ½åÅåtú;O>µ/T­B?Û.œ6µ'J|±{F’3Ï B™™¬ðŒp*ŒœÃáÕÔ¶zõì1¯awi1WéEuþý ôùvQ `–ƒ÷qšÀtPˆ¿z§øËC-é*¢Ú^ëîZ¼Ýú0Jáâì1ñçÁÛRŽ(–ñY„iq›ÅQðÚâ‰ÃŠõáÃ,ºnSݬÛmÑgih‹«h 5ó<±¨4x+h(Ëq¥Àò +<›<ø—q¨³  “utÿVáìÖ­P3{}ùqXx|ùòãÂã «y¿)úÎÄœ!†€WÌ$hÐS\jN4¦—o˜4ñšWo +Á§Í5ÑÂoÕ«nŠºGß2ŒKùC´‹ÉTœÀ´øÌ\Àˆ—°¢ä&¸†ìÔ‡&в²2ÃÍ«®e®*+.±$Ò˜¿µS~í—½VámÄ^ÿyqõò‡¢™­äü޹¤„ÉüAFeÈ™,O±€€ëê +ÇÚÞé^Y×î(Ìqô7¯ï4ОWnK†s¸õ×ùƒå^wAibÞP]{_šx¦°{]ÊéLbà?‡è£³Û飫W³|$Ê ú[i±ºÑ]ì^G^]»!«'k$¦c˜¦ÌÞ­+ôÖÓèÙëÃߌÄö²¢pêgÇFŸÞõôĆ>º<3;Åèb°»%á'ƒHN)¬“<õÜ4£¯|—C±t/¾ÙßÁAM7ÌZá–`ÏŠUôé V™Ò~…^ŠIÅ;hÇøôÍ8L˜Æ¼ ‰Â!aÒ…÷`úÅœ„×ç^`÷ëÔ݇ž¬®fu0¢XÌÎðVv¯t­+{r1ž:Âò.Úä ÕI·.»éØÁ´¢#–‚äm·GÏß?¸wCu¾µ=oÞ’²È]Ý8’R]îʳpT׸Q¸ÄùÛÖh—f¤·q‡+'o>‹«rñü߯|ÌâT N<Š, Ô_-¼>4Ö½2dwt® åØ\‹RÓÝ.PþÝV޾{Ç´ãà@«E83¿Ü¿—£¼Ì'˜+ˆfÅf)ŽÆi +ËjÊÜK––mØv«ºjÆëÖ¥ú’öíx“Ë.ê}[:?˜“d¨L1¥üdezê"—-ÇulM§ÃZÙ=6´|>ÔYZ†Ú.Üaº3›Åm•òq>â]@¹4 ÏËêQ$x «3œ¬„Q‹*-)ª®]vãòºN*|x‹“\Ûû¾Êäæ$šòýÑ\½¯²BÊs˱‹àyaÙÝé–%«‚RAJ¶üòPe«×nÉY´0ö±ÇFBðYQcœ/^ã*æš„µð´$—cn!æ(Ñb]Š‘áð”ÀƒÌ«5¨§¬ûøàhvÞ…á-þêçGºr¸”äbï–ö¦™ûþF“`Ûq¾|q”ªêEù°L‡óh?-Ž,jx­äNvoxÀÒTóð"{5òR]k·ð ”5d ƒôö½4I.–›[è]ŒKV¡:™B^¬ º>ݳa7ž¼»ð/¯mßNäÚf!t m Á éöИQVr|ò½Ï…÷Ûý†Ý©p¨I0 _µ´ÐWÄ’ŒWEPcÀ. +­®¾õÖw‡BÏÒè{Â?¤·…êË"½»3Ò9Ïìv‚}Ï{¾hj¢ßo’ü‚Áƒµ¾ŽYSÏl(VYßÐ^ ¥ K8›w•7¨1$Ç÷iŒ ã×Ã'Ö¤¤%ÍX«L1Ä õp0Ùˆ!_ß%:–;ôßÂ,® niÎòd¦†àæâš!¼{ÝY&¡Ù& ãî ܧf;u“Fe±jtøµaÅ¯ŽƒW¯ ²Û‡ìT·S¸¾s'¤gffØ2—Ž5£=`|PCà¡_ ùú¹‘ÊÙºœG/äe‡ê;Æ×Ã…Xá¹çZ*Ü1Ü orÛQö±Љ¹×(ZÁ§&Gž¢ºæT¡ÞwÉ1-Ö½:VSƒÏšx¨þÒ€5ÁúH8üŠß$¦MMX(=øb6`uÖI&È9DŽã×ó'D´Á8 +gá¼w©ÖÓô=F/ÑkôS…F‘¥¨WlTW\UÜT*•‰ÊBe›²G9¦<¦¼¤¼eŠ*ê‰:õbÔkQ×¢îªbT•OVýPõ¬jFõ•:QmS¯Rªw¨ŸÀþ&Jý™ØÎb3`; s#é¶Û)lÙØØj°a«—Ç—äu/¶blqØJ±Ù±¹d:?6[£Œi’iÓdÚ"ùÙ.c±÷1جòZHÆ/—iÙZ>¶å2}¹Œ[$Ͻ² 3KæÑ#ÓßÇaë 2“ÝûDé.vfÑ.ð­ÿnTˆ+ÄÆ*1Ë6v«Þ§øŒþ”½¥S82-pžGc±Q¥êk„Î ­˜er:¶±.‡ãðŒÇsŠŽ¹ Ò®tBY™~ü‡wdNâÏÜ£ø}ø—~*Äo1%Fi aÿUJÀ;F‡u©¥K$IXŸ.Bt3~çf`Å”‰§.›,F=òH>)@L'qæòB²«Ú¥ˆ· oÓJREV eVâ×-YEêð‹§㵉øH3i%md5~ÓH;YC:ÈZQ’òêsXD©@‰·¢Yäu *Ò/¯Ê:,¯S”“¼NQ“mòºeÝ-¯+ó òº5“ו31òz™œ¼E‚]^WaL¬ç±Ä kdšXRÛ–†7­œÈêÍæù.=RÕPßÒÌ5új*—µ EFI˜l&cd= ƒxf³H/ÊÆ¡ý˜]8«#9ØW¡•êI ÚˆCkùð©m¹Œ´ fÁHH¦* #$T1:܇ÖE+ôU†&ªFÇ‚œ#7Ÿ+â$jn$Ø·~rŸ»ÃÎdC£$„°q … ŠB䢺û&Gð} +=‰3é½mÇÞ~_t™•(ÍŸo–ek ޝ q¹ùîBt|ùŽ#æ¨HT òv“Â>—#?X3žG@{NL„‹òòÄ5{?ê8ž;>:9Öìgºæ…E[N m‹0óo9N"¼ãDRtŒã|Ùö"óþŠç’!¤g^…øßï9ò\WBñç$G:Ãÿqï¹}=Î-TÜTt môýótæ¾ý¤6Ýèà@àå*UŽßÑj#NvR#ªœ bÈ!$Bl¢¯,nôGj6"„(_ûKâÚöw%úÜD{lÜL$.Ç¡¶ZŸ¿’˜í…m}")kDز€=¢´±­fÞ¼Åÿ_É¿ $#6ùɼ9•ãTm ˆ/Ä‹²Íïh·GT¶—-°¹sû::’#aÔ¶—ÓÅ¥²KÑ6–[’g̳qۓ׆‹(2Vò\Di­‰FÿTpª›c“Âd³9<%>ù¤'Æ0F’N“¬1#b¬»,ªgãò"j4ǭૺ‡8?××#A0ºùŒ3²æ¦¸SUÝü7Å‹ìx)CJÔ-DÊ‚ì÷Ä‹œJ®&šÍÉÜÕ)4nZ‰Ò´Ê²™E²Ï]•™óœ¿¶9Ù€ +ZÉOñÜÔÊ)¾›m¶°ÁÑ07èPn-S€MtßR`Š |÷кoj¶êm¨ÄÔ^f¶š>~JáýÅÉðÁv†”AYEÔžÓ`8Š=#nõ³Þçç{Pz¾"à+Ðòe>ÿi<&Ëz+N8D¸ÞHR0å>/£-‚«hìì,ϧc:ŒÆªÚL7ÿ»Ï +endstream +endobj +379 0 obj +<< /Type /FontDescriptor +/FontName /d420e1+mplus1mn-bold +/FontFile2 378 0 R +/FontBBox [0 -230 1000 860] +/Flags 4 +/StemV 0 +/ItalicAngle 0.0 +/Ascent 860 +/Descent -140 +/CapHeight 860 +/XHeight 0 +>> +endobj +380 0 obj +<< /Length 1286 +/Filter [/FlateDecode] +>> +stream +xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ + ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýíòåVû¾ô—Óygì¾êýë+þÖ×|ݶ“Ÿßßîýõé<.û‡‡Ýá÷í÷ûí}ÿáÇv)ý‡Ýá×[ë·ÓùeÿáÏOÏÛëç/×ë_ýµŸïûãîñqßúØú9_ɯ}à´Omûütÿ¸óϼ_ûÞòÚLL½´þv͵ßòù¥ïŽÇLJ1wýÜþó‘9ç)eÔÏù6=nÿ·ÒP•–Òªt”N¥§ô*eP)£ÊD™T.”‹Ê•rU™)³ÊBYTVʪ²Q6•²«”[¢ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^ƒ×Èkðy ^#¯Ákä5x¼¯‘×à5ò¼F^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‹×ÊkñZy-^+¯Åkåµx­¼¯•×âµòZ¼V^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^‡×Éëð:y^'¯Ãëäux¼¯“×áuò:¼N^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^^×Ëëñzy=^/¯Çëåõx½¼¯—×ãõòz¼^Þ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞ€7ÈðyÞ oÀä xƒ¼o7à ò¼AÞˆ7ÊñFy#Þ(oÄ»ýÕnóuWùß.I•$’$*I$IT’H’¨$‘$QI"I¢’D’D%‰$‰JI•$’$*I$IT’H’¨$‰$III’’$’$%I$Iê|›äMx“¼ o’7áMò&¼IÞ„7É›ð&yÞ$o›äMx“¼ o’7áMò.xy¼U†oÕÄ ÞªÙ¼M¼MÈoÓl ÞÎx;ãâí +¿àíJ¼àíê·31ÞÎÄx;ãí +¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçΜñJ¼Y³e¼Y†Œ7+|œÆx‹ oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ– -ã­Œ‹·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x ¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9J­ñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã {HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî; ¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…> ¼M†ÁBi2 .Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ?¾=¶×/·ÛöÄίÕõ~:÷o?$®—«ÎÒÿ¿ç†óO +endstream +endobj +381 0 obj +[500 500 1000 1000 1000 500 1000 500 500 500 1000 1000 500 1000 500 500 500 500 1000 500 1000 500 500 1000 1000 1000 500 1000 500 500 500 1000 1000 500 500 500 500 500 500 500 1000 500 1000 1000 500 500 500 500 500 1000 500 500 500 500 500 500 500 1000 1000 1000 1000 1000 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 1000 500 500 500 500 500 500 500 500 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +endobj +xref +0 382 +0000000000 65535 f +0000000015 00000 n +0000000381 00000 n +0000000585 00000 n +0000000867 00000 n +0000000918 00000 n +0000001190 00000 n +0000002075 00000 n +0000002371 00000 n +0000002538 00000 n +0000030543 00000 n +0000031500 00000 n +0000047488 00000 n +0000048177 00000 n +0000055172 00000 n +0000055564 00000 n +0000055608 00000 n +0000055657 00000 n +0000055724 00000 n +0000055768 00000 n +0000055941 00000 n +0000055985 00000 n +0000056029 00000 n +0000056145 00000 n +0000056189 00000 n +0000056233 00000 n +0000056347 00000 n +0000056391 00000 n +0000056566 00000 n +0000056610 00000 n +0000056785 00000 n +0000056829 00000 n +0000066050 00000 n +0000066405 00000 n +0000066449 00000 n +0000066493 00000 n +0000066537 00000 n +0000066581 00000 n +0000066625 00000 n +0000066669 00000 n +0000077465 00000 n +0000077833 00000 n +0000077877 00000 n +0000077921 00000 n +0000077965 00000 n +0000078009 00000 n +0000078053 00000 n +0000085568 00000 n +0000085910 00000 n +0000085953 00000 n +0000086686 00000 n +0000087056 00000 n +0000087099 00000 n +0000087143 00000 n +0000087187 00000 n +0000092378 00000 n +0000104537 00000 n +0000104960 00000 n +0000105004 00000 n +0000105168 00000 n +0000105342 00000 n +0000105386 00000 n +0000105499 00000 n +0000105685 00000 n +0000124188 00000 n +0000124556 00000 n +0000124600 00000 n +0000124644 00000 n +0000141253 00000 n +0000141621 00000 n +0000155510 00000 n +0000155878 00000 n +0000155922 00000 n +0000165881 00000 n +0000166249 00000 n +0000166293 00000 n +0000166337 00000 n +0000166380 00000 n +0000181205 00000 n +0000181573 00000 n +0000181617 00000 n +0000193124 00000 n +0000193492 00000 n +0000193536 00000 n +0000193580 00000 n +0000194054 00000 n +0000194098 00000 n +0000203016 00000 n +0000203371 00000 n +0000203415 00000 n +0000203459 00000 n +0000203503 00000 n +0000213436 00000 n +0000213791 00000 n +0000213835 00000 n +0000226636 00000 n +0000227062 00000 n +0000227106 00000 n +0000227281 00000 n +0000227325 00000 n +0000227369 00000 n +0000227414 00000 n +0000227557 00000 n +0000227710 00000 n +0000227847 00000 n +0000228029 00000 n +0000228209 00000 n +0000228336 00000 n +0000228381 00000 n +0000248372 00000 n +0000248729 00000 n +0000248775 00000 n +0000248821 00000 n +0000258425 00000 n +0000258795 00000 n +0000258841 00000 n +0000259697 00000 n +0000272077 00000 n +0000272465 00000 n +0000272511 00000 n +0000272557 00000 n +0000272675 00000 n +0000272721 00000 n +0000286764 00000 n +0000287135 00000 n +0000287181 00000 n +0000287227 00000 n +0000287273 00000 n +0000287446 00000 n +0000297923 00000 n +0000298280 00000 n +0000298326 00000 n +0000309411 00000 n +0000309795 00000 n +0000309841 00000 n +0000309887 00000 n +0000310302 00000 n +0000318356 00000 n +0000318714 00000 n +0000325123 00000 n +0000325494 00000 n +0000325540 00000 n +0000333387 00000 n +0000333758 00000 n +0000343042 00000 n +0000343426 00000 n +0000343472 00000 n +0000343518 00000 n +0000351993 00000 n +0000352351 00000 n +0000360070 00000 n +0000360428 00000 n +0000360474 00000 n +0000368214 00000 n +0000368589 00000 n +0000368635 00000 n +0000368752 00000 n +0000368798 00000 n +0000371517 00000 n +0000371879 00000 n +0000371925 00000 n +0000371971 00000 n +0000372017 00000 n +0000372063 00000 n +0000372228 00000 n +0000372361 00000 n +0000372495 00000 n +0000372633 00000 n +0000372773 00000 n +0000372903 00000 n +0000373036 00000 n +0000373161 00000 n +0000373289 00000 n +0000373422 00000 n +0000373556 00000 n +0000373689 00000 n +0000373824 00000 n +0000373954 00000 n +0000374085 00000 n +0000374214 00000 n +0000374344 00000 n +0000374472 00000 n +0000374602 00000 n +0000374727 00000 n +0000374853 00000 n +0000374978 00000 n +0000375104 00000 n +0000375242 00000 n +0000375382 00000 n +0000375501 00000 n +0000375623 00000 n +0000375750 00000 n +0000375879 00000 n +0000376004 00000 n +0000376131 00000 n +0000376257 00000 n +0000376384 00000 n +0000376514 00000 n +0000376646 00000 n +0000376771 00000 n +0000376897 00000 n +0000377025 00000 n +0000377154 00000 n +0000377282 00000 n +0000377411 00000 n +0000377536 00000 n +0000377662 00000 n +0000377789 00000 n +0000377917 00000 n +0000378039 00000 n +0000378162 00000 n +0000378287 00000 n +0000378414 00000 n +0000378541 00000 n +0000378669 00000 n +0000378854 00000 n +0000379040 00000 n +0000379173 00000 n +0000379309 00000 n +0000379446 00000 n +0000379583 00000 n +0000379719 00000 n +0000379856 00000 n +0000379998 00000 n +0000380141 00000 n +0000380276 00000 n +0000380411 00000 n +0000380549 00000 n +0000380687 00000 n +0000380824 00000 n +0000380962 00000 n +0000381087 00000 n +0000381213 00000 n +0000381352 00000 n +0000381491 00000 n +0000381630 00000 n +0000381769 00000 n +0000381911 00000 n +0000382053 00000 n +0000382182 00000 n +0000382311 00000 n +0000382438 00000 n +0000382565 00000 n +0000382693 00000 n +0000382822 00000 n +0000382939 00000 n +0000383058 00000 n +0000383199 00000 n +0000383340 00000 n +0000383491 00000 n +0000383642 00000 n +0000383776 00000 n +0000383910 00000 n +0000384092 00000 n +0000384274 00000 n +0000384397 00000 n +0000384521 00000 n +0000384663 00000 n +0000384809 00000 n +0000384955 00000 n +0000385099 00000 n +0000385249 00000 n +0000385399 00000 n +0000385526 00000 n +0000385653 00000 n +0000385780 00000 n +0000385907 00000 n +0000386040 00000 n +0000386173 00000 n +0000386330 00000 n +0000386487 00000 n +0000386614 00000 n +0000386742 00000 n +0000386903 00000 n +0000387064 00000 n +0000387236 00000 n +0000387408 00000 n +0000387538 00000 n +0000387668 00000 n +0000387831 00000 n +0000387994 00000 n +0000388156 00000 n +0000388318 00000 n +0000388443 00000 n +0000388568 00000 n +0000388695 00000 n +0000388822 00000 n +0000388946 00000 n +0000389070 00000 n +0000389341 00000 n +0000389612 00000 n +0000389690 00000 n +0000390071 00000 n +0000390263 00000 n +0000390492 00000 n +0000390702 00000 n +0000390884 00000 n +0000391090 00000 n +0000391276 00000 n +0000391509 00000 n +0000391669 00000 n +0000391882 00000 n +0000392052 00000 n +0000392220 00000 n +0000392374 00000 n +0000392602 00000 n +0000392754 00000 n +0000392934 00000 n +0000393106 00000 n +0000393278 00000 n +0000393485 00000 n +0000393639 00000 n +0000393819 00000 n +0000393998 00000 n +0000394151 00000 n +0000394357 00000 n +0000394499 00000 n +0000394671 00000 n +0000394876 00000 n +0000395260 00000 n +0000395488 00000 n +0000395690 00000 n +0000395925 00000 n +0000396133 00000 n +0000396353 00000 n +0000396573 00000 n +0000396745 00000 n +0000396969 00000 n +0000397193 00000 n +0000397429 00000 n +0000397621 00000 n +0000397791 00000 n +0000398005 00000 n +0000398164 00000 n +0000398386 00000 n +0000398663 00000 n +0000398872 00000 n +0000399273 00000 n +0000399428 00000 n +0000399677 00000 n +0000399975 00000 n +0000400130 00000 n +0000400299 00000 n +0000400486 00000 n +0000400769 00000 n +0000400979 00000 n +0000401278 00000 n +0000401621 00000 n +0000401839 00000 n +0000402146 00000 n +0000402453 00000 n +0000402622 00000 n +0000402799 00000 n +0000402950 00000 n +0000403489 00000 n +0000411876 00000 n +0000412092 00000 n +0000413455 00000 n +0000414514 00000 n +0000420920 00000 n +0000421141 00000 n +0000422504 00000 n +0000423595 00000 n +0000428612 00000 n +0000428826 00000 n +0000430189 00000 n +0000431254 00000 n +0000434216 00000 n +0000434442 00000 n +0000435805 00000 n +0000436925 00000 n +0000440037 00000 n +0000440250 00000 n +0000441613 00000 n +0000442719 00000 n +0000444148 00000 n +0000444366 00000 n +0000445729 00000 n +0000446867 00000 n +0000451504 00000 n +0000451715 00000 n +0000453078 00000 n +trailer +<< /Size 382 +/Root 2 0 R +/Info 1 0 R +>> +startxref +454152 +%%EOF diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_PRI.doc b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_PRI.doc new file mode 100644 index 0000000000000000000000000000000000000000..c03c6eecc4ba9b02ca29734c9029be87a83712f2 Binary files /dev/null and b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_PRI.doc differ diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/change.log b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/change.log new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images/Abstract socket.png b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images/Abstract socket.png new file mode 100644 index 0000000000000000000000000000000000000000..d862a0e0c83fbc824c812ea63bf9ef0a7d1052f1 Binary files /dev/null and b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images/Abstract socket.png differ diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.cc b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.cc new file mode 100644 index 0000000000000000000000000000000000000000..a35731691baab70ef0b985afa4028602add42d12 --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.cc @@ -0,0 +1,2822 @@ +/****************************************************************************** +* Copyright (c) 2000-2019 Ericsson Telecom AB +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +* +* Contributors: +* Zoltan Bibo - initial implementation and initial documentation +* Gergely Futo +* Oliver Ferenc Czerman +* Balasko Jeno +* Zoltan Bibo +* Eduard Czimbalmos +* Kulcsár Endre +* Gabor Szalai +* Jozsef Gyurusi +* Csöndes Tibor +* Zoltan Jasz +******************************************************************************/ +// +// File: Abstract_Socket.cc +// Description: Abstract_Socket implementation file +// Rev: R9B +// Prodnr: CNL 113 384 +// + +#include "Abstract_Socket.hh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined SOLARIS8 +# include +#endif + + +#define AS_TCP_CHUNCK_SIZE 4096 * 2 +#define AS_SSL_CHUNCK_SIZE 16384 +// Used for the 'address already in use' bug workaround +#define AS_DEADLOCK_COUNTER 16 +// character buffer length to store temporary SSL informations, 256 is usually enough +#define SSL_CHARBUF_LENGTH 256 +// number of bytes to read from the random devices +#define SSL_PRNG_LENGTH 1024 + +#ifndef NI_MAXHOST +#define NI_MAXHOST 1024 +#endif +#ifndef NI_MAXSERV +#define NI_MAXSERV 32 +#endif + +/******************************** + ** PacketHeaderDescr + ** used for fragmentation and concatenation + ** of fixed format messages + *********************************/ + +unsigned long PacketHeaderDescr::Get_Message_Length(const unsigned char* buff) const +{ + unsigned long m_length = 0; + for (unsigned long i = 0; i < nr_bytes_in_length; i++) { + unsigned long shift_count = + byte_order == Header_MSB ? nr_bytes_in_length - 1 - i : i; + m_length |= buff[length_offset + i] << (8 * shift_count); + } + m_length *= length_multiplier; + if (value_offset < 0 && (long)m_length < -value_offset) return 0; + else return m_length + value_offset; +} + + +//////////////////////////////////////////////////////////////////////// +///// Default log functions +//////////////////////////////////////////////////////////////////////// +void Abstract_Socket::log_debug(const char *fmt, ...) const +{ + if (socket_debugging) { + TTCN_Logger::begin_event(TTCN_DEBUG); + if (test_port_type != NULL && test_port_name != NULL) + TTCN_Logger::log_event("%s test port (%s): ", test_port_type, + test_port_name); + else TTCN_Logger::log_event_str("Abstract socket: "); + va_list args; + va_start(args, fmt); + TTCN_Logger::log_event_va_list(fmt, args); + va_end(args); + TTCN_Logger::end_event(); + } +} + +void Abstract_Socket::log_warning(const char *fmt, ...) const +{ + TTCN_Logger::begin_event(TTCN_WARNING); + if (test_port_type != NULL && test_port_name != NULL) + TTCN_Logger::log_event("%s test port (%s): warning: ", test_port_type, + test_port_name); + else TTCN_Logger::log_event_str("Abstract socket: warning: "); + va_list args; + va_start(args, fmt); + TTCN_Logger::log_event_va_list(fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + + +void Abstract_Socket::log_error(const char *fmt, ...) const +{ + va_list args; + va_start(args, fmt); + char *error_str = mprintf_va_list(fmt, args); + va_end(args); + try { + if (test_port_type != NULL && test_port_name != NULL) + TTCN_error("%s test port (%s): '%s'", test_port_type, test_port_name, + error_str); + else TTCN_error("Abstract socket: '%s'", error_str); + } catch (...) { + Free(error_str); + throw; + } + Free(error_str); +} + +void Abstract_Socket::log_hex(const char *prompt, const unsigned char *msg, + size_t length) const +{ + if (socket_debugging) { + TTCN_Logger::begin_event(TTCN_DEBUG); + if (test_port_type != NULL && test_port_name != NULL) + TTCN_Logger::log_event("%s test port (%s): ", test_port_type, + test_port_name); + else TTCN_Logger::log_event_str("Abstract socket: "); + if (prompt != NULL) TTCN_Logger::log_event_str(prompt); + TTCN_Logger::log_event("Size: %lu, Msg:", (unsigned long)length); + for (size_t i = 0; i < length; i++) TTCN_Logger::log_event(" %02x", msg[i]); + TTCN_Logger::end_event(); + } +} + + +/******************************** + ** Abstract_Socket + ** abstract base type for TCP socket handling + *********************************/ + +Abstract_Socket::Abstract_Socket() { + server_mode=false; + socket_debugging=false; + nagling=false; + use_non_blocking_socket=false; + halt_on_connection_reset=true; + halt_on_connection_reset_set=false; + client_TCP_reconnect=false; + TCP_reconnect_attempts=5; + TCP_reconnect_delay=1; + listen_fd=-1; + memset(&remoteAddr, 0, sizeof(remoteAddr)); + memset(&localAddr, 0, sizeof(localAddr)); + server_backlog=1; + peer_list_length=0; + local_host_name = NULL; + local_port_number = 0; + remote_host_name = NULL; + remote_port_number = 0; + ai_family = AF_UNSPEC; // default: Auto + test_port_type=NULL; + test_port_name=NULL; + ttcn_buffer_usercontrol=false; + use_connection_ASPs=false; + handle_half_close = false; + peer_list_root = NULL; +} + +Abstract_Socket::Abstract_Socket(const char *tp_type, const char *tp_name) { + server_mode=false; + socket_debugging=false; + nagling=false; + use_non_blocking_socket=false; + halt_on_connection_reset=true; + halt_on_connection_reset_set=false; + client_TCP_reconnect=false; + TCP_reconnect_attempts=5; + TCP_reconnect_delay=1; + listen_fd=-1; + memset(&remoteAddr, 0, sizeof(remoteAddr)); + memset(&localAddr, 0, sizeof(localAddr)); + server_backlog=1; + peer_list_length=0; + local_host_name = NULL; + local_port_number = 0; + remote_host_name = NULL; + remote_port_number = 0; + ai_family = AF_UNSPEC; // default: Auto + test_port_type=tp_type; + test_port_name=tp_name; + ttcn_buffer_usercontrol=false; + use_connection_ASPs=false; + handle_half_close = false; + peer_list_root = NULL; +} + +Abstract_Socket::~Abstract_Socket() { + peer_list_reset_peer(); + Free(local_host_name); + Free(remote_host_name); +} + +bool Abstract_Socket::parameter_set(const char *parameter_name, + const char *parameter_value) +{ + log_debug("entering Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + + if (strcmp(parameter_name, socket_debugging_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) socket_debugging = true; + else if (strcasecmp(parameter_value,"no")==0) socket_debugging = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, socket_debugging_name()); + } else if (strcmp(parameter_name, server_mode_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) server_mode = true; + else if (strcasecmp(parameter_value,"no")==0) server_mode = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, server_mode_name()); + } else if (strcmp(parameter_name, use_connection_ASPs_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) use_connection_ASPs = true; + else if (strcasecmp(parameter_value,"no")==0) use_connection_ASPs = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, use_connection_ASPs_name()); + } else if (strcmp(parameter_name, halt_on_connection_reset_name()) == 0) { + halt_on_connection_reset_set=true; + if (strcasecmp(parameter_value,"yes")==0) halt_on_connection_reset = true; + else if (strcasecmp(parameter_value,"no")==0) halt_on_connection_reset = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, halt_on_connection_reset_name()); + } else if (strcmp(parameter_name, client_TCP_reconnect_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) client_TCP_reconnect = true; + else if (strcasecmp(parameter_value,"no")==0) client_TCP_reconnect = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, client_TCP_reconnect_name()); + } else if (strcmp(parameter_name, TCP_reconnect_attempts_name()) == 0) { + if (sscanf(parameter_value, "%d", &TCP_reconnect_attempts)!=1) log_error("Invalid input as TCP_reconnect_attempts counter given: '%s'", parameter_value); + if (TCP_reconnect_attempts<=0) log_error("TCP_reconnect_attempts must be greater than 0, %d is given", TCP_reconnect_attempts); + } else if (strcmp(parameter_name, TCP_reconnect_delay_name()) == 0) { + if (sscanf(parameter_value, "%d", &TCP_reconnect_delay)!=1) log_error("Invalid input as TCP_reconnect_delay given: '%s'", parameter_value); + if (TCP_reconnect_delay<0) log_error("TCP_reconnect_delay must not be less than 0, %d is given", TCP_reconnect_delay); + } else if(strcmp(parameter_name, remote_address_name()) == 0){ + Free(remote_host_name); + remote_host_name = mcopystr(parameter_value); + } else if(strcmp(parameter_name, local_address_name()) == 0){ // only for backward compatibility + Free(local_host_name); + local_host_name = mcopystr(parameter_value); + } else if(strcmp(parameter_name, remote_port_name()) == 0){ + int a; + if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: '%s'", parameter_value); + if (a>65535 || a<0){ log_error("Port number must be between 0 and 65535, %d is given", remote_port_number);} + else {remote_port_number=a;} + } else if(strcmp(parameter_name, ai_family_name()) == 0){ + if (strcasecmp(parameter_value,"IPv6")==0 || strcasecmp(parameter_value,"AF_INET6")==0) ai_family = AF_INET6; + else if (strcasecmp(parameter_value,"IPv4")==0 || strcasecmp(parameter_value,"AF_INET")==0) ai_family = AF_INET; + else if (strcasecmp(parameter_value,"UNSPEC")==0 || strcasecmp(parameter_value,"AF_UNSPEC")==0) ai_family = AF_UNSPEC; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ai_family_name()); + } else if(strcmp(parameter_name, local_port_name()) == 0){ + int a; + if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: '%s'", parameter_value); + if (a>65535 || a<0) {log_error("Port number must be between 0 and 65535, %d is given", local_port_number);} + else {local_port_number=a;} + } else if (strcmp(parameter_name, nagling_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) nagling = true; + else if (strcasecmp(parameter_value,"no")==0) nagling = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, nagling_name()); + } else if (strcmp(parameter_name, use_non_blocking_socket_name()) == 0){ + if (strcasecmp(parameter_value, "yes") == 0) use_non_blocking_socket = true; + else if (strcasecmp(parameter_value, "no") == 0) use_non_blocking_socket = false; + } else if (strcmp(parameter_name, server_backlog_name()) == 0) { + if (sscanf(parameter_value, "%d", &server_backlog)!=1) log_error("Invalid input as server backlog given: '%s'", parameter_value); + } else { + log_debug("leaving Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return false; + } + + log_debug("leaving Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return true; +} + +void Abstract_Socket::Handle_Socket_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) +{ + log_debug("entering Abstract_Socket::Handle_Socket_Event(): fd: %d%s%s%s", fd, + is_readable ? " readable" : "", is_writable ? " writable" : "", is_error ? " error" : ""); + + if (fd != listen_fd /* on server the connection requests are handled after the user messages */ + && peer_list_root[fd] != NULL && (is_readable || is_writable) + && get_peer(fd)->reading_state != STATE_DONT_RECEIVE) { + log_debug("receiving data"); + int messageLength = receive_message_on_fd(fd); + if (messageLength == 0) { // peer disconnected + as_client_struct * client_data = get_peer(fd); + log_debug("Abstract_Socket::Handle_Socket_Event(). Client %d closed connection.", fd); + switch (client_data->reading_state) { + case STATE_BLOCK_FOR_SENDING: + log_debug("Abstract_Socket::Handle_Socket_Event(): state is STATE_BLOCK_FOR_SENDING, don't close connection."); + Remove_Fd_Read_Handler(fd); + client_data->reading_state = STATE_DONT_CLOSE; + log_debug("Abstract_Socket::Handle_Socket_Event(): setting socket state to STATE_DONT_CLOSE"); + break; + case STATE_DONT_CLOSE: + log_debug("Abstract_Socket::Handle_Socket_Event(): state is STATE_DONT_CLOSE, don't close connection."); + break; + default: + if((client_data->tcp_state == CLOSE_WAIT) || (client_data->tcp_state == FIN_WAIT)) { + remove_client(fd); + peer_disconnected(fd); + } else { + if(shutdown(fd, SHUT_RD) != 0) { + if(errno == ENOTCONN) { + errno = 0; + } else { + log_error("shutdown(SHUT_RD) system call failed"); + } + } + client_data->tcp_state = CLOSE_WAIT; + Remove_Fd_Read_Handler(fd); + peer_half_closed(fd); + } + } // switch (client_data->reading_state) + } else if (messageLength > 0) { + as_client_struct *client_data=get_peer(fd); + if (socket_debugging) { + struct sockaddr_storage clientAddr = client_data->clientAddr; +#ifdef WIN32 + log_debug("Message received from address %s:%d", inet_ntoa(((struct sockaddr_in*)&clientAddr)->sin_addr), ntohs(((struct sockaddr_in *)&clientAddr)->sin_port)); +#else + char hname[NI_MAXHOST]; + char sname[NI_MAXSERV]; +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + clientAddrlen = client_data->clientAddrlen; + int error = getnameinfo((struct sockaddr *)&clientAddr, clientAddrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) log_error("AbstractSocket: getnameinfo 2: '%s'\n", gai_strerror(error)); + log_debug("Message received from address (addr) %s/%s", hname, sname); +#endif + } + log_hex("Message received, buffer content: ", get_buffer(fd)->get_data(), get_buffer(fd)->get_len()); + handle_message(fd); + } /* else if (messageLength == -2) => + used in case of SSL: means that reading would bloc. + in this case I stop receiving message on the file descriptor */ + } // if ... (not new connection request) + + if (fd == listen_fd && is_readable) { + // new connection request arrived + log_debug("waiting for accept"); + // receiving new connection on the TCP server + struct sockaddr_storage clientAddr; + +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + clientAddrlen = sizeof(clientAddr); +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + int newclient_fd = accept(listen_fd, (struct sockaddr *) &clientAddr, (socklen_t*)&clientAddrlen); +#else + int newclient_fd = accept(listen_fd, (struct sockaddr *) &clientAddr, (int*)&clientAddrlen); +#endif + if(newclient_fd < 0) log_error("Cannot accept connection at port"); + + as_client_struct *client_data=peer_list_add_peer(newclient_fd); + Add_Fd_Read_Handler(newclient_fd); // Done here - as in case of error: remove_client expects the handler as added + log_debug("Abstract_Socket::Handle_Socket_Event(). Handler set to other fd %d", newclient_fd); + client_data->fd_buff = new TTCN_Buffer; + client_data->clientAddr = clientAddr; + client_data->clientAddrlen = clientAddrlen; + client_data->tcp_state = ESTABLISHED; + client_data->reading_state = STATE_NORMAL; + if (add_user_data(newclient_fd)) { + char hname[NI_MAXHOST]; + int clientPort = 0; +#ifdef WIN32 + clientPort=ntohs(((struct sockaddr_in *)&clientAddr)->sin_port); + char* tmp=inet_ntoa(((struct sockaddr_in*)&clientAddr)->sin_addr); + strcpy(hname,tmp); +#else + int error; + char sname[NI_MAXSERV]; + error = getnameinfo((struct sockaddr *)&clientAddr, clientAddrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) { + log_error("AbstractSocket: getnameinfo: '%s'\n", + gai_strerror(error)); + } + clientPort = atoi(sname); +#endif + log_debug("Client %d connected from address %s/%d", newclient_fd, hname, clientPort); + peer_connected(newclient_fd, hname, clientPort); + peer_connected(newclient_fd, *((struct sockaddr_in *)&clientAddr)); /* calling deprecated function also */ + log_debug("Handle_Socket_Event updated with client %d ", newclient_fd); + + if (set_non_block_mode(newclient_fd, use_non_blocking_socket) < 0) { + log_error("Set blocking mode failed."); + } + + } else { + remove_client(newclient_fd); + peer_disconnected(newclient_fd); + } + } // if (fd == listen_fd && is_readable) + + log_debug("leaving Abstract_Socket::Handle_Socket_Event()"); +} + +int Abstract_Socket::receive_message_on_fd(int client_id) +{ + as_client_struct * client_data = get_peer(client_id); + TTCN_Buffer* recv_tb = client_data->fd_buff; + unsigned char *end_ptr; + size_t end_len=AS_TCP_CHUNCK_SIZE; + recv_tb->get_end(end_ptr, end_len); + int messageLength = recv(client_id, (char *)end_ptr, end_len, 0); + log_debug("========> receive_message_on_fd errno: '%d', '%s'", errno, strerror(errno)); + if (messageLength==0) return messageLength; // peer disconnected + else if (messageLength < 0) { + log_warning("Error when reading the received TCP PDU: '%s'", strerror(errno)); + errno = 0; + return 0; + } + recv_tb->increase_length(messageLength); + return messageLength; +} + +int Abstract_Socket::send_message_on_fd(int client_id, const unsigned char* send_par, int message_length) +{ + get_peer(client_id); + return send(client_id, (const char *)send_par, message_length, 0); +} + + +//Tthe EAGAIN errno value set by the send operation means that +//the sending operation would block. +//First I try to increase the length of the sending buffer (increase_send_buffer()). +//If the outgoing buffer cannot be increased, the block_for_sending function will +//be called. This function will block until the file descriptor given as its argument +//is ready to write. While the block for sending operation calls the Event_Handler, +//states must be used to indicate that the Event_Handler is called when the +//execution is blocking. +//STATE_BLOCK_FOR_SENDING: the block for sending operation has been called +//STATE_DONT_CLOSE: if the other side close the connection before the block_for_sending +// operation returns, in the Event_Handler the connection +// must not be closed and the block_for_sending must return before we can +// close the connection. This state means that the other side closed the connection +// during the block_for_sending operation +//STATE_NORMAL: normal state +int Abstract_Socket::send_message_on_nonblocking_fd(int client_id, + const unsigned char* send_par, + int length){ + + log_debug("entering Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)", client_id); + as_client_struct * client_data = get_peer(client_id); + int sent_len = 0; + while(sent_len < length){ + int ret; + log_debug("Abstract_Socket::send_message_on_nonblocking_fd(id: %d): new iteration", client_id); + if (client_data->reading_state == STATE_DONT_CLOSE){ + goto client_closed_connection; + } else ret = send(client_id, send_par + sent_len, length - sent_len, 0); + + if (ret > 0) sent_len+=ret; + else{ + switch(errno){ + case EINTR:{ //signal: do nothing, try again + errno = 0; + break; + } + case EPIPE:{ //client closed connection + goto client_closed_connection; + } + case EAGAIN:{ // the output buffer is full: + //try to increase it if possible + errno = 0; + int old_bufsize, new_bufsize; + + if (increase_send_buffer( + client_id, old_bufsize, new_bufsize)) { + log_warning("Sending data on on file descriptor %d", + client_id); + log_warning("The sending operation would" + "block execution. The size of the " + "outgoing buffer was increased from %d to " + "%d bytes.",old_bufsize, + new_bufsize); + } else { + log_warning("Sending data on file descriptor %d", + client_id); + log_warning("The sending operation would block " + "execution and it is not possible to " + "further increase the size of the " + "outgoing buffer. Trying to process incoming" + "data to avoid deadlock."); + log_debug("Abstract_Socket::" + "send_message_on_nonblocking_fd():" + " setting socket state to " + "STATE_BLOCK_FOR_SENDING"); + client_data->reading_state = STATE_BLOCK_FOR_SENDING; + TTCN_Snapshot::block_for_sending(client_id); + } + break; + } + default:{ + log_debug("Abstract_Socket::" + "send_message_on_nonblocking_fd(): " + "setting socket state to STATE_NORMAL"); + client_data->reading_state = STATE_NORMAL; + log_debug("leaving Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)" + " with error", client_id); + return -1; + } + } //end of switch + }//end of else + } //end of while + + log_debug("Abstract_Socket::send_message_on_nonblocking_fd():" + "setting socket state to STATE_NORMAL"); + client_data->reading_state = STATE_NORMAL; + log_debug("leaving Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)", client_id); + return sent_len; + +client_closed_connection: + log_debug("Abstract_Socket::send_message_on_nonblocking_fd(): setting socket state to STATE_NORMAL"); + client_data->reading_state = STATE_NORMAL; + log_debug("leaving Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)", client_id); + errno = EPIPE; + return -1; +} + +const PacketHeaderDescr* Abstract_Socket::Get_Header_Descriptor() const +{ + return NULL; +} + +void Abstract_Socket::peer_connected(int /*client_id*/, sockaddr_in& /*remote_addr*/) +{ +} + +void Abstract_Socket::handle_message(int client_id) +{ + const PacketHeaderDescr* head_descr = Get_Header_Descriptor(); + as_client_struct * client_data = get_peer(client_id); + TTCN_Buffer *recv_tb = client_data->fd_buff; + + if(!head_descr){ + message_incoming(recv_tb->get_data(), recv_tb->get_len(), client_id); + if (!ttcn_buffer_usercontrol) recv_tb->clear(); + } else { + recv_tb->rewind(); + unsigned long valid_header_length = head_descr->Get_Valid_Header_Length(); + while (recv_tb->get_len() > 0) { + if ((unsigned long)recv_tb->get_len() < valid_header_length) { + // this is a message without a valid header + // recv_tb->handle_fragment(); + return; + } + unsigned long message_length = + head_descr->Get_Message_Length(recv_tb->get_data()); + if (message_length < valid_header_length) { + // this is a message with a malformed length + log_error("Malformed message: invalid length: %lu. The length should " + "be at least %lu.", message_length, valid_header_length); + } + if((unsigned long)recv_tb->get_len() < message_length){ + // this is a fragmented message with a valid header + // recv_tb->handle_fragment(); + return; + } + // this a valid message + message_incoming(recv_tb->get_data(), message_length, client_id); + if (!ttcn_buffer_usercontrol) { + recv_tb->set_pos(message_length); + recv_tb->cut(); + } + } + } + log_debug("leaving Abstract_Socket::handle_message()"); +} + +void Abstract_Socket::map_user() +{ + log_debug("entering Abstract_Socket::map_user()"); +#if defined SOLARIS8 + sigignore(SIGPIPE); +#endif + if(!use_connection_ASPs) + { + // If halt_on_connection_reset is not set explicitly + // set it to the default value: true on clients, false on servers + if (!halt_on_connection_reset_set) { + if (local_port_number != 0) halt_on_connection_reset=false; + else halt_on_connection_reset=true; + } + } + + all_mandatory_configparameters_present(); + + char remotePort[6]; + char localPort[6]; + sprintf(localPort, "%u", local_port_number); + sprintf(remotePort, "%u", remote_port_number); + + if(!use_connection_ASPs) + { + if(server_mode) { + //open_listen_port(localAddr); + open_listen_port(local_host_name,(char*)&localPort); + } else { + //open_client_connection(remoteAddr, localAddr); + open_client_connection(remote_host_name,(char*)&remotePort,local_host_name,(char*)&localPort); + } + } + + log_debug("leaving Abstract_Socket::map_user()"); +} + +int Abstract_Socket::open_listen_port(const struct sockaddr_in & new_local_addr) +{ +#ifndef WIN32 + log_debug("**** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_listen_port(const struct sockaddr_in & new_local_addr)." + " USE Abstract_Socket::open_listen_port(const char* localHostname, const char* localServicename) INSTEAD! ****"); +#endif + log_debug("Local address: '%s':%d", inet_ntoa(new_local_addr.sin_addr), ntohs(new_local_addr.sin_port)); + + close_listen_port(); + + listen_fd = socket(AF_INET, SOCK_STREAM, 0); + if(listen_fd<0) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot open socket"); + } + + if(!nagling) { + int on = 1; + setsockopt(listen_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + int val = 1; + if(setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Setsockopt failed"); + } + + int rc = 0; + + log_debug("Bind to port..."); + rc = bind(listen_fd, (const struct sockaddr *)&new_local_addr, sizeof(new_local_addr)); + if(rc<0) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Cannot bind to port when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot bind to port"); + } + log_debug("Bind successful on server."); + + rc = listen(listen_fd, server_backlog); + if(rc<0) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Cannot listen at port when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot listen at port"); + } + + // to avoid dead-locks and make possible + // handling of multiple clients "accept" is placed in the Event_Handler + +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + addr_len = sizeof(new_local_addr); + if (getsockname(listen_fd, (struct sockaddr*)&new_local_addr, &addr_len)) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getsockname() system call failed on the server socket when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } + log_debug("Listen successful on server port %d", ntohs(new_local_addr.sin_port)); + + Add_Fd_Read_Handler(listen_fd); // Done here - after all error checks: as closed fd should not be left added + log_debug("Abstract_Socket::open_listen_port(): Handler set to socket fd %d", listen_fd); + + //localAddr = new_local_addr; + + if(use_connection_ASPs) + listen_port_opened(ntohs(new_local_addr.sin_port)); + + return new_local_addr.sin_port; +} + +int Abstract_Socket::open_listen_port(const char* localHostname, const char* localServicename) { + log_debug("Local address: '%s'/%s", (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + +#ifdef WIN32 + struct sockaddr_in new_local_addr; + memset(&new_local_addr, 0, sizeof(new_local_addr)); + if(localHostname!=NULL){ + get_host_id(localHostname,&new_local_addr); + } + if(localServicename!=NULL){ + new_local_addr.sin_port=htons(atoi(localServicename)); + } + return open_listen_port(new_local_addr); +#else + close_listen_port(); + + struct addrinfo *aip; + struct addrinfo hints; + int sock_opt; + int error; + + /* Set up a socket to listen for connections. */ + bzero(&hints, sizeof (hints)); + hints.ai_flags = /*AI_ALL|*/AI_ADDRCONFIG|AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family; + + error = getaddrinfo(localHostname, localServicename, &hints, &aip); + if (error != 0) { + if(use_connection_ASPs) + { + log_warning("getaddrinfo: '%s' for host %s service %s", gai_strerror(error), + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + listen_port_opened(-1); + return -1; + } + else log_error("getaddrinfo: '%s' for host %s service %s", gai_strerror(error), + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + } + + struct addrinfo *res; + if (socket_debugging) { + /* count the returned addresses: */ + int counter = 0; + for (res = aip; res != NULL; res = res->ai_next,++counter) {}; + log_debug("Number of local addresses: %d\n", counter); + } + + + for (res = aip; res != NULL; res = res->ai_next) { + listen_fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); + log_debug("Waiting for connection via: '%s'\n", + ((res->ai_family==AF_INET)?"IPv4": + ((res->ai_family==AF_INET6)?"IPv6":"unknown"))); + if (listen_fd == -1) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Cannot open socket"); + } + + /* Tell the system to allow local addresses to be reused. */ + sock_opt = 1; + if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, (void *)&sock_opt, + sizeof (sock_opt)) == -1) { + + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Setsockopt failed"); + } + + if(!nagling) { + int on = 1; + setsockopt(listen_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + + log_debug("Bind to port..."); + if (bind(listen_fd, res->ai_addr, res->ai_addrlen) == -1) { + error = errno; // save it for the warning message + close(listen_fd); + listen_fd = -1; + log_debug("Cannot bind to port when trying to open the listen port: '%s'", strerror(errno)); + errno = 0; + continue; + } + log_debug("Bind successful on server."); + break; + } + if (res==NULL) { + if(use_connection_ASPs) + { + log_warning("Cannot bind to port when trying to open the listen port: '%s'", strerror(error)); + listen_port_opened(-1); + error = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Cannot bind to port"); + } + + if (listen(listen_fd, server_backlog) == -1) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Cannot listen at port when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Cannot listen at port"); + } + + + // to avoid dead-locks and make possible + // handling of multiple clients "accept" is placed in Handle_Socket_Event + + // to determine the local address: + if (getsockname(listen_fd, res->ai_addr, &res->ai_addrlen)) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getsockname() system call failed on the server socket when trying to open the listen port: '%s'", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } + char hname[NI_MAXHOST]; + char sname[NI_MAXSERV]; +/* error = getnameinfo(res->ai_addr, res->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICSERV); + if (error) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the server socket when trying to open the listen port: '%s'", gai_strerror(error)); + listen_port_opened(-1); + freeaddrinfo(aip); + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } else { + log_debug("Listening on (name): '%s'/%s\n", + hname, sname); + }*/ + error = getnameinfo(res->ai_addr, res->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the server socket when trying to open the listen port: '%s'", gai_strerror(error)); + listen_port_opened(-1); + freeaddrinfo(aip); + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } else { + log_debug("Listening on (addr): '%s'/%s\n", + hname, sname); + } + + Add_Fd_Read_Handler(listen_fd); // Done here - after all error checks: as closed fd should not be left added + log_debug("Abstract_Socket::open_listen_port(): Handler set to socket fd %d", listen_fd); + + log_debug("new_local_addr Addr family: '%s'\n", + ((res->ai_addr->sa_family==AF_INET)?"IPv4": + ((res->ai_addr->sa_family==AF_INET6)?"IPv6":"unknown")) + ); + + + int listenPort = atoi(sname); + if(use_connection_ASPs) + listen_port_opened(listenPort); + + freeaddrinfo(aip); + return listenPort; +#endif +} + +void Abstract_Socket::listen_port_opened(int /*port_number*/) +{ + // Intentionally blank +} + +void Abstract_Socket::close_listen_port() +{ + // close current listening port if it is alive + if(listen_fd != -1) + { + Remove_Fd_Read_Handler(listen_fd); + close(listen_fd); + log_debug("Closed listening port of fd: %d", listen_fd); + listen_fd = -1; + } +} + +int Abstract_Socket::get_socket_fd() const{ + if(server_mode) return listen_fd; + if(peer_list_get_nr_of_peers()==0) return -1; + return peer_list_get_first_peer(); +} + +int Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr) +{ +#ifdef WIN32 + log_debug("**** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr)." + " USE open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) INSTEAD! ****"); +#endif + log_debug("Remote address: '%s':%d", inet_ntoa(new_remote_addr.sin_addr), ntohs(new_remote_addr.sin_port)); + + int deadlock_counter = AS_DEADLOCK_COUNTER; + int TCP_reconnect_counter = TCP_reconnect_attempts; + + // workaround for the 'address already used' bug + // used also when TCP reconnect is used + as_start_connecting: + + int socket_fd = socket(AF_INET, SOCK_STREAM, 0); + if(socket_fd<0) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot open socket."); + } + + if(!nagling) { + int on = 1; + setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + + int rc; + + // when using client mode there is no separate file_desriptor for listening and target + log_debug("Connecting to server from address %s:%d", inet_ntoa(new_local_addr.sin_addr), ntohs(new_local_addr.sin_port)); + if (new_local_addr.sin_port != ntohs(0)) { // specific port to use + int val = 1; + if(setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Setsockopt failed."); + } + rc = bind(socket_fd, (const struct sockaddr *)&new_local_addr, sizeof(new_local_addr)); + if(rc<0) { + if(use_connection_ASPs) + { + log_warning("Cannot bind to port when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot bind to port."); + } + log_debug("Bind successful on client."); + } + rc = connect(socket_fd, (const struct sockaddr *)&new_remote_addr, sizeof(new_remote_addr)); + + if(rc<0){ + if (errno == EADDRINUSE) { + log_warning("connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again."); + close(socket_fd); + errno = 0; + deadlock_counter--; + if (deadlock_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: '%s'", AS_DEADLOCK_COUNTER, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Already tried %d times, giving up", AS_DEADLOCK_COUNTER); + } + goto as_start_connecting; + } else if (client_TCP_reconnect && errno != 0) { + log_warning("connect() returned error code %d, trying to connect again (TCP reconnect mode).", errno); + close(socket_fd); + errno = 0; + TCP_reconnect_counter--; + if (TCP_reconnect_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: '%s'", TCP_reconnect_attempts, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Already tried %d times, giving up", TCP_reconnect_attempts); + } + sleep(TCP_reconnect_delay); + goto as_start_connecting; + } + + if(use_connection_ASPs) + { + log_warning("Cannot connect to server when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot connect to server"); + } + + // Non-blocking mode is set before updating bookkeping to handle the error case properly. + if (set_non_block_mode(socket_fd, use_non_blocking_socket) < 0){ + close(socket_fd); + if (use_connection_ASPs){ + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Set blocking mode failed."); + } + + as_client_struct * client_data=peer_list_add_peer(socket_fd); + Add_Fd_Read_Handler(socket_fd); // Done here - as in case of error: remove_client expects the handler as added + log_debug("Abstract_Socket::open_client_connection(). Handler set to socket fd %d", socket_fd); + client_data->fd_buff = new TTCN_Buffer; +// client_data->clientAddr = *(struct sockaddr_storage*)&new_remote_addr; + memset(&client_data->clientAddr,0,sizeof(client_data->clientAddr)); + memcpy(&client_data->clientAddr,&new_remote_addr,sizeof(new_remote_addr)); + client_data->clientAddrlen = sizeof(new_remote_addr); + client_data->tcp_state = ESTABLISHED; + client_data->reading_state = STATE_NORMAL; + if (!add_user_data(socket_fd)) { + remove_client(socket_fd); + peer_disconnected(socket_fd); + return -1; + } + + +// localAddr = new_local_addr; +// remoteAddr = new_remote_addr; + + client_connection_opened(socket_fd); + + return socket_fd; +} + +int Abstract_Socket::open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) { + log_debug("Abstract_Socket::open_client_connection(remoteAddr: '%s'/%s, localAddr: '%s'/%s) called", + remoteHostname,remoteServicename, + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); +#ifdef WIN32 + struct sockaddr_in new_local_addr; + struct sockaddr_in new_remote_addr; + memset(&new_local_addr, 0, sizeof(new_local_addr)); + memset(&new_local_addr, 0, sizeof(new_remote_addr)); + if(localHostname!=NULL){ + get_host_id(localHostname,&new_local_addr); + } + if(localServicename!=NULL){ + new_local_addr.sin_port=htons(atoi(localServicename)); + } + if(remoteHostname!=NULL){ + get_host_id(remoteHostname,&new_remote_addr); + } + if(remoteServicename!=NULL){ + new_remote_addr.sin_port=htons(atoi(remoteServicename)); + } + return open_client_connection(new_remote_addr,new_local_addr); +#else + + int deadlock_counter = AS_DEADLOCK_COUNTER; + int TCP_reconnect_counter = TCP_reconnect_attempts; + + + struct addrinfo *res, *aip; + struct addrinfo hints; + int socket_fd = -1; + int error; + + /* Get host address. Any type of address will do. */ + bzero(&hints, sizeof (hints)); + hints.ai_flags = AI_ADDRCONFIG; /* |AI_ALL*/ + if (localHostname!=NULL || localServicename!=NULL) { /* use specific local address */ + hints.ai_flags |= AI_PASSIVE; + } + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family; + + error = getaddrinfo(remoteHostname, remoteServicename, &hints, &res); + if (error != 0) { + if(use_connection_ASPs) + { + log_warning("getaddrinfo: '%s' for host %s service %s", + gai_strerror(error), remoteHostname, remoteServicename); + client_connection_opened(-1); + return -1; + } + else { log_error("getaddrinfo: '%s' for host %s service %s", + gai_strerror(error), remoteHostname, remoteServicename); + } + } + + if (socket_debugging) { + /* count the returned addresses: */ + int counter = 0; + for (aip = res; aip != NULL; aip = aip->ai_next,++counter) {}; + log_debug("Number of remote addresses: %d\n", counter); + } + + // workaround for the 'address already used' bug + // used also when TCP reconnect is used + as_start_connecting: + + /* Try all returned addresses until one works */ + for (aip = res; aip != NULL; aip = aip->ai_next) { + /* + * Open socket. The address type depends on what + * getaddrinfo() gave us. + */ + socket_fd = socket(aip->ai_family, aip->ai_socktype, + aip->ai_protocol); + if (socket_fd == -1) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + freeaddrinfo(res); + return -1; + } + else { + freeaddrinfo(res); + log_error("Cannot open socket."); + } + } + + log_debug("Using address family for socket %d: '%s'",socket_fd, + ((aip->ai_family==AF_INET)?"IPv4": + ((aip->ai_family==AF_INET6)?"IPv6":"unknown")) + ); + + + if(!nagling) { + int on = 1; + setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + + // when using client mode there is no separate file_descriptor for listening and target + log_debug("Connecting to server from address %s/%s", + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + if (localHostname!=NULL || localServicename!=NULL) { // specific localaddress/port to use + int val = 1; + if(setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Setsockopt failed."); + } + + // determine the local address: + struct addrinfo *localAddrinfo; + /* Get host address. Any type of address will do. */ + bzero(&hints, sizeof (hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family;//aip->ai_family; // NOTE: On solaris 10 if is set to aip->ai_family, getaddrinfo will crash for IPv4-mapped addresses! + + error = getaddrinfo(localHostname, localServicename, &hints, &localAddrinfo); + if (error != 0) { + if(use_connection_ASPs) + { + log_warning("getaddrinfo: '%s' for host %s service %s", + gai_strerror(error), (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + client_connection_opened(-1); + return -1; + } + else { log_error("getaddrinfo: '%s' for host %s service %s", + gai_strerror(error), (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + } + } + + if (socket_debugging) { + /* count the returned addresses: */ + int counter = 0; + for (struct addrinfo* aip2 = localAddrinfo; aip2 != NULL; aip2 = aip2->ai_next,++counter) {}; + log_debug("Number of local addresses: %d\n", counter); + } + + /* Try all returned addresses until one works */ + struct addrinfo* aip2; + for (aip2 = localAddrinfo; aip2 != NULL; aip2 = aip2->ai_next) { + log_debug("Using address family for bind: '%s'", + ((aip2->ai_family==AF_INET)?"IPv4": + ((aip2->ai_family==AF_INET6)?"IPv6":"unknown")) + ); + + if(bind(socket_fd, aip2->ai_addr, aip2->ai_addrlen)<0) { +/* if(use_connection_ASPs) // the if else branches are the same + {*/ + log_debug("Cannot bind to port when trying to open client connection: '%s'", strerror(errno)); + //client_connection_opened(-1); + //freeaddrinfo(localAddrinfo); + errno = 0; + continue; //aip2 cycle + //return -1; +/* } + else { + //freeaddrinfo(localAddrinfo); + //log_error("Cannot bind to port."); + log_debug("Cannot bind to port when trying to open client connection: '%s'", strerror(errno)); + errno = 0; + continue; //aip2 cycle + }*/ + } + log_debug("Bind successful on client."); + freeaddrinfo(localAddrinfo); + break; + } + if (aip2==NULL) { + log_debug("Bind failed for all local addresses."); + freeaddrinfo(localAddrinfo); + continue; // aip cycle + } + } + + /* Connect to the host. */ + if (connect(socket_fd, aip->ai_addr, aip->ai_addrlen) == -1) { + if (errno == EADDRINUSE) { + log_warning("connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again."); + close(socket_fd); + socket_fd = -1; + errno = 0; + deadlock_counter--; + if (deadlock_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: '%s'", AS_DEADLOCK_COUNTER, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Already tried %d times, giving up", AS_DEADLOCK_COUNTER); + } + goto as_start_connecting; + } else if (client_TCP_reconnect && errno != 0) { + log_warning("connect() returned error code %d (%s), trying to connect again (TCP reconnect mode).", errno, strerror(errno)); + close(socket_fd); + socket_fd = -1; + errno = 0; + if (aip->ai_next==NULL) { /* Last address is tried and there is still an error */ + TCP_reconnect_counter--; + if (TCP_reconnect_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: '%s'", TCP_reconnect_attempts, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else { log_error("Already tried %d times, giving up", TCP_reconnect_attempts); } + } + } + sleep(TCP_reconnect_delay); + goto as_start_connecting; + } else { + log_debug("Cannot connect to server: '%s'", strerror(errno)); + (void) close(socket_fd); + socket_fd = -1; + } + + if (aip->ai_next==NULL) { + if(use_connection_ASPs) + { + log_warning("Cannot connect to server when trying to open client connection: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot connect to server"); + } + continue; //aip cycle + } + + // to determine the local address: + if (getsockname(socket_fd, aip->ai_addr, &aip->ai_addrlen)) { + close(socket_fd); + if(use_connection_ASPs) { + log_warning("getsockname() system call failed on the client socket when trying to connect to server: '%s'", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("getsockname() system call failed on the client socket when trying to connect to server: '%s'", strerror(errno)); + } + char hname[NI_MAXHOST]; + char sname[NI_MAXSERV]; +/* error = getnameinfo(aip->ai_addr, aip->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICSERV); + if (error) { + close(socket_fd); + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: '%s'", gai_strerror(error)); + client_connection_opened(-1); + return -1; + } + else log_error("getnameinfo() system call failed on the client socket when trying to connect to server: '%s'", gai_strerror(error)); + } else { + log_debug("Connection established (name): '%s'/%s -> %s/%s\n", + hname, sname, + remoteHostname, remoteServicename); + }*/ + error = getnameinfo(aip->ai_addr, aip->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) { +/* close(socket_fd); + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: '%s'", gai_strerror(error)); +// client_connection_opened(-1); +// return -1; + } + else*/ + log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: '%s'", gai_strerror(error)); + } else { + log_debug("Connection established (addr): '%s'/%s -> %s/%s\n", + hname, sname, + remoteHostname, remoteServicename); + } + + log_debug( + "connected to: host %s service %s via address family %s\n", + remoteHostname, remoteServicename, + ((aip->ai_family==AF_INET)?"IPv4": + ((aip->ai_family==AF_INET6)?"IPv6":"unknown"))); + break; + } + if (aip==NULL) { + if(use_connection_ASPs) + { + log_warning("Cannot connect to server"); + client_connection_opened(-1); + freeaddrinfo(res); + return -1; + } + else log_error("Cannot connect to server"); + } + + // Non-blocking mode is set before updating bookkeping to handle the error case properly. + if (set_non_block_mode(socket_fd, use_non_blocking_socket) < 0) { + freeaddrinfo(res); + close(socket_fd); + if (use_connection_ASPs){ + log_warning("Set blocking mode failed."); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Set blocking mode failed."); + } + + as_client_struct * client_data=peer_list_add_peer(socket_fd); + Add_Fd_Read_Handler(socket_fd); // Done here - as in case of error: remove_client expects the handler as added + log_debug("Abstract_Socket::open_client_connection(). Handler set to socket fd %d", socket_fd); + client_data->fd_buff = new TTCN_Buffer; +// client_data->clientAddr = *(struct sockaddr_storage*)aip->ai_addr; + memset(&client_data->clientAddr,0,sizeof(client_data->clientAddr)); + memcpy(&client_data->clientAddr,aip->ai_addr,sizeof(*aip->ai_addr)); + client_data->clientAddrlen = aip->ai_addrlen; + client_data->tcp_state = ESTABLISHED; + client_data->reading_state = STATE_NORMAL; + + freeaddrinfo(res); + + if (!add_user_data(socket_fd)) { + remove_client(socket_fd); + peer_disconnected(socket_fd); + return -1; + } + + client_connection_opened(socket_fd); + + return socket_fd; +#endif +} + + +void Abstract_Socket::client_connection_opened(int /*client_id*/) +{ + // Intentionally blank +} + +void Abstract_Socket::unmap_user() +{ + log_debug("entering Abstract_Socket::unmap_user()"); + remove_all_clients(); + close_listen_port(); + Handler_Uninstall(); // For robustness only + log_debug("leaving Abstract_Socket::unmap_user()"); +} + +void Abstract_Socket::peer_disconnected(int /*fd*/) +{ + // virtual peer_disconnected() needs to be overriden in test ports! + if(!use_connection_ASPs) { + if (halt_on_connection_reset) + log_error("Connection was interrupted by the other side."); + if (client_TCP_reconnect){ + log_warning("TCP connection was interrupted by the other side, trying to reconnect again..."); + unmap_user(); + map_user(); + log_warning("TCP reconnect successfuly finished"); + } + } +} + +void Abstract_Socket::peer_half_closed(int fd) +{ + log_debug("Entering Abstract_Socket::peer_half_closed()"); + remove_client(fd); + peer_disconnected(fd); + log_debug("Leaving Abstract_Socket::peer_half_closed()"); +} + +void Abstract_Socket::send_shutdown(int client_id) +{ + log_debug("entering Abstract_Socket::send_shutdown()"); + int dest_fd = client_id; + + if (dest_fd == -1) { + if(peer_list_get_nr_of_peers() > 1) + log_error("Client Id not specified altough not only 1 client exists"); + else if(peer_list_get_nr_of_peers() == 0) + log_error("There is no connection alive, connect before sending anything."); + dest_fd = peer_list_get_first_peer(); + } + as_client_struct * client_data = get_peer(dest_fd); + if(client_data->tcp_state != ESTABLISHED) + log_error("TCP state of client nr %i does not allow to shut down its connection for writing!", dest_fd); + + if(shutdown(dest_fd, SHUT_WR) != 0) + { + if(errno == ENOTCONN) + { + remove_client(dest_fd); + peer_disconnected(dest_fd); + errno = 0; + } + else + log_error("shutdown() system call failed"); + } + else client_data->tcp_state = FIN_WAIT; + + // dest_fd is not removed from readfds, data can be received + + log_debug("leaving Abstract_Socket::send_shutdown()"); +} + +void Abstract_Socket::send_outgoing(const unsigned char* send_par, int length, int client_id) +{ + log_debug("entering Abstract_Socket::send_outgoing()"); + log_hex("Sending data: ", send_par, length); + int dest_fd; + int nrOfBytesSent; + + dest_fd = client_id; + if (dest_fd == -1) { + if(peer_list_get_nr_of_peers() > 1) + log_error("Client Id not specified altough not only 1 client exists"); + else if(peer_list_get_nr_of_peers() == 0) + log_error("There is no connection alive, use a Connect ASP before sending anything."); + dest_fd = peer_list_get_first_peer(); + } + as_client_struct * client_data = get_peer(dest_fd,true); + if(!client_data || ((client_data->tcp_state != ESTABLISHED) && (client_data->tcp_state != CLOSE_WAIT))){ + char *error_text=mprintf("client nr %i has no established connection", dest_fd); + report_error(client_id,length,-2,send_par,error_text); + Free(error_text); + log_debug("leaving Abstract_Socket::send_outgoing()"); + return; + } + + nrOfBytesSent = use_non_blocking_socket ? send_message_on_nonblocking_fd(dest_fd, send_par, length) : + send_message_on_fd(dest_fd, send_par, length); + + if (nrOfBytesSent == -1){ + log_debug("Client %d closed connection. Error: %d %s", client_id, errno, strerror(errno)); + report_unsent(dest_fd,length,nrOfBytesSent,send_par,"Client closed the connection"); + + if(client_data->tcp_state == CLOSE_WAIT){ + log_debug("Client %d waiting for close ASP.", client_id); + } else { + errno = 0; + log_debug("Client %d closed connection", client_id); + client_data->tcp_state = CLOSE_WAIT; + Remove_Fd_Read_Handler(dest_fd); + peer_half_closed(dest_fd); + } + }else if (nrOfBytesSent != length) { + char *error_text=mprintf("Send system call failed: %d bytes were sent instead of %d", nrOfBytesSent, length); + report_error(client_id,length,nrOfBytesSent,send_par,error_text); + Free(error_text); + } else { + log_debug("Nr of bytes sent = %d", nrOfBytesSent); + } + log_debug("leaving Abstract_Socket::send_outgoing()"); +} + +void Abstract_Socket::report_error(int /*client_id*/, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* error_text) +{ + log_error("%s",error_text); +} + +void Abstract_Socket::report_unsent(int /*client_id*/, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* error_text) +{ + log_debug("%s",error_text); +} + +void Abstract_Socket::all_mandatory_configparameters_present() +{ + if(!use_connection_ASPs) + { + if(server_mode) { + if(local_port_number == 0) { + log_error("%s is not defined in the configuration file", local_port_name()); + } + } + else { // client mode + if (remote_host_name == NULL) { + log_error("%s is not defined in the configuration file", remote_address_name()); + } + if(remote_port_number == 0){ + log_error("%s is not defined in the configuration file", remote_port_name()); + } + } + } + user_all_mandatory_configparameters_present(); +} + + +void Abstract_Socket::get_host_id(const char* hostName, struct sockaddr_in *addr) +{ + log_debug("Abstract_Socket::get_host_id called"); + unsigned int port = addr->sin_port; + memset(addr, 0, sizeof(*addr)); + addr->sin_family = AF_INET; + addr->sin_port = port; + struct hostent *hptr; + if(strcmp("localhost", hostName) != 0) + { + hptr = gethostbyname(hostName); + if (hptr != NULL) memcpy(&addr->sin_addr, hptr->h_addr_list[0], hptr->h_length); + else log_error("The host name %s is not valid in the configuration file.", hostName); + log_debug("The address set to %s[%s]", hptr->h_name, inet_ntoa(addr->sin_addr)); + } + else + { + addr->sin_addr.s_addr = htonl(INADDR_ANY); + log_debug("The address set to [%s]", inet_ntoa(addr->sin_addr)); + } +} + +void Abstract_Socket::remove_client(int fd) +{ + log_debug("entering Abstract_Socket::remove_client(%d)", fd); + if(fd != listen_fd) { + get_peer(fd); // check if client exists, log_error && fail if not + // TODO FIXME: remove the Add_Fd_Read_Handler(fd); if TITAN is fixed + Add_Fd_Read_Handler(fd); + Remove_Fd_All_Handlers(fd); + remove_user_data(fd); + delete get_peer(fd)->fd_buff; + peer_list_remove_peer(fd); + close(fd); + log_debug("Removed client %d.", fd); + } + else log_warning("Abstract_Socket::remove_client: %d is the server listening port, can not be removed!", fd); + log_debug("leaving Abstract_Socket::remove_client(%d)", fd); +} + +void Abstract_Socket::remove_all_clients() +{ + log_debug("entering Abstract_Socket::remove_all_clients"); + for(int i = 0; peer_list_root != NULL && i < peer_list_length; i++) + { + if(i != listen_fd && peer_list_root[i] != NULL) + remove_client(i); + } + // check if no stucked data + while (peer_list_get_nr_of_peers()) { + int client_id = peer_list_get_first_peer(); + if (client_id >= 0) log_warning("Client %d has not been removed, programming error", client_id); + else log_error("Number of clients<>0 but cannot get first client, programming error"); + peer_list_remove_peer(client_id); + } + + log_debug("leaving Abstract_Socket::remove_all_clients"); +} + +int Abstract_Socket::set_non_block_mode(int fd, bool enable_nonblock){ + + int flags = fcntl(fd, F_GETFL); + if (flags < 0) { + log_warning("System call fcntl(F_GETFL) failed on file " + "descriptor %d.", fd); + return -1; + } + + if (enable_nonblock) flags |= O_NONBLOCK; + else flags &= ~O_NONBLOCK; + + if (fcntl(fd, F_SETFL, flags) == -1) { + log_warning("System call fcntl(F_SETFL) failed on file " + "descriptor %d.", fd); + return -1; + } + return 0; + +} + +bool Abstract_Socket::increase_send_buffer(int fd, + int &old_size, int& new_size) +{ + int set_size; +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + optlen = sizeof(old_size); + // obtaining the current buffer size first + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&old_size, &optlen)) + goto getsockopt_failure; + if (old_size <= 0) { + log_warning("System call getsockopt(SO_SNDBUF) " + "returned invalid buffer size (%d) on file descriptor %d.", + old_size, fd); + return false; + } + // trying to double the buffer size + set_size = 2 * old_size; + if (set_size > old_size) { + if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char*)&set_size, + sizeof(set_size))) { + // the operation failed + switch (errno) { + case ENOMEM: + case ENOBUFS: + errno = 0; + break; + default: + // other error codes indicate a fatal error + goto setsockopt_failure; + } + } else { + // the operation was successful + goto success; + } + } + // trying to perform a binary search to determine the maximum buffer size + set_size = old_size; + for (int size_step = old_size / 2; size_step > 0; size_step /= 2) { + int tried_size = set_size + size_step; + if (tried_size > set_size) { + if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char*)&tried_size, + sizeof(tried_size))) { + // the operation failed + switch (errno) { + case ENOMEM: + case ENOBUFS: + errno = 0; + break; + default: + // other error codes indicate a fatal error + goto setsockopt_failure; + } + } else { + // the operation was successful + set_size = tried_size; + } + } + } + if (set_size <= old_size) return false; +success: + // querying the new effective buffer size (it might be smaller + // than set_size but should not be smaller than old_size) + optlen = sizeof(new_size); + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&new_size, + &optlen)) goto getsockopt_failure; + if (new_size > old_size) return true; + else { + if (new_size < old_size) + log_warning("System call getsockopt(SO_SNDBUF) returned unexpected buffer size " + "(%d, after increasing it from %d to %d) on file descriptor %d.", + new_size, old_size, set_size, fd); + return false; + } +getsockopt_failure: + log_warning("System call getsockopt(SO_SNDBUF) failed on file " + "descriptor %d. (%s)", fd, strerror(errno)); + return false; +setsockopt_failure: + log_warning("System call setsockopt(SO_SNDBUF) failed on file " + "descriptor %d. (%s)", fd, strerror(errno)); + return false; +} + + +const char* Abstract_Socket::local_port_name() { return "serverPort";} +const char* Abstract_Socket::remote_address_name() { return "destIPAddr";} +const char* Abstract_Socket::local_address_name() { return "serverIPAddr";} +const char* Abstract_Socket::remote_port_name() { return "destPort";} +const char* Abstract_Socket::ai_family_name() { return "ai_family";} +const char* Abstract_Socket::use_connection_ASPs_name() { return "use_connection_ASPs";} +const char* Abstract_Socket::halt_on_connection_reset_name(){ return "halt_on_connection_reset";} +const char* Abstract_Socket::client_TCP_reconnect_name() { return "client_TCP_reconnect";} +const char* Abstract_Socket::TCP_reconnect_attempts_name() { return "TCP_reconnect_attempts";} +const char* Abstract_Socket::TCP_reconnect_delay_name() { return "TCP_reconnect_delay";} +const char* Abstract_Socket::server_mode_name() { return "server_mode";} +const char* Abstract_Socket::socket_debugging_name() { return "socket_debugging";} +const char* Abstract_Socket::nagling_name() { return "nagling";} +const char* Abstract_Socket::use_non_blocking_socket_name() { return "use_non_blocking_socket";} +const char* Abstract_Socket::server_backlog_name() { return "server_backlog";} +bool Abstract_Socket::add_user_data(int) {return true;} +bool Abstract_Socket::remove_user_data(int) {return true;} +bool Abstract_Socket::user_all_mandatory_configparameters_present() { return true; } + + + +//////////////////////////////////////////////////////////////////////// +///// Peer handling functions +//////////////////////////////////////////////////////////////////////// + +void Abstract_Socket::peer_list_reset_peer() { + log_debug("Abstract_Socket::peer_list_reset_peer: Resetting peer array"); + for (int i = 0; i < peer_list_length; i++) + if (peer_list_root[i] != NULL) { + delete peer_list_root[i]; + peer_list_root[i] = NULL; + } + + peer_list_resize_list(-1); + log_debug("Abstract_Socket::peer_list_reset_peer: New length is %d", peer_list_length); +} + +void Abstract_Socket::peer_list_resize_list(int client_id) { + int new_length=client_id; + if (new_length<0) new_length = peer_list_get_last_peer(); + new_length++; // index starts from 0 + log_debug("Abstract_Socket::peer_list_resize_list: Resizing to %d", new_length); + peer_list_root = (as_client_struct **)Realloc(peer_list_root, new_length*sizeof(as_client_struct *)); + + // initialize new entries + for (int i = peer_list_length; i < new_length; i++) + peer_list_root[i] = NULL; + + peer_list_length = new_length; + log_debug("Abstract_Socket::peer_list_resize_list: New length is %d", peer_list_length); +} + +int Abstract_Socket::peer_list_get_first_peer() const { + log_debug("Abstract_Socket::peer_list_get_first_peer: Finding first peer of the peer array"); + for (int i = 0; i < peer_list_length; i++) { + if (peer_list_root[i] != NULL) { + log_debug("Abstract_Socket::peer_list_get_first_peer: First peer is %d", i); + return i; + } + } + log_debug("Abstract_Socket::peer_list_get_first_peer: No active peer found"); + return -1; // this indicates an empty list +} + +int Abstract_Socket::peer_list_get_last_peer() const +{ + log_debug("Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array"); + if (peer_list_length==0) { + log_debug("Abstract_Socket::peer_list_get_last_peer: No active peer found"); + return -1; + } + for (int i = peer_list_length - 1; i >= 0; i--) { + if (peer_list_root[i] != NULL) { + log_debug("Abstract_Socket::peer_list_get_last_peer: Last peer is %u", i); + return i; + } + } + log_debug("Abstract_Socket::peer_list_get_last_peer: No active peer found"); + return -1; // this indicates an empty list +} + +int Abstract_Socket::peer_list_get_nr_of_peers() const +{ + int nr=0; + for (int i = 0; i < peer_list_length; i++) + if (peer_list_root[i] != NULL) nr++; + log_debug("Abstract_Socket::peer_list_get_nr_of_peers: Number of active peers = %d", nr); + return nr; +} + +Abstract_Socket::as_client_struct *Abstract_Socket::get_peer (int client_id, bool no_error) const +{ + if (client_id >= peer_list_length){ + if(no_error) return NULL; + else log_error ("Index %d exceeds length of peer list.", client_id); + } + if (peer_list_root[client_id]==NULL){ + if(no_error) return NULL; + else log_error("Abstract_Socket::get_peer: Client %d does not exist", client_id); + } + return peer_list_root[client_id]; +} + +Abstract_Socket::as_client_struct * Abstract_Socket::peer_list_add_peer (int client_id) { + log_debug("Abstract_Socket::peer_list_add_peer: Adding client %d to peer list", client_id); + if (client_id<0) log_error("Invalid Client Id is given: %d.", client_id); + if (client_id>peer_list_get_last_peer()) peer_list_resize_list(client_id); + peer_list_root[client_id] = new as_client_struct; + peer_list_root[client_id]->user_data = NULL; + peer_list_root[client_id]->fd_buff = NULL; + peer_list_root[client_id]->tcp_state = CLOSED; + peer_list_root[client_id]->reading_state = STATE_NORMAL; + return peer_list_root[client_id]; +} + +void Abstract_Socket::peer_list_remove_peer (int client_id) { + + log_debug("Abstract_Socket::peer_list_remove_peer: Removing client %d from peer list", client_id); + if (client_id >= peer_list_length || client_id<0) log_error("Invalid Client Id is given: %d.", client_id); + if (peer_list_root[client_id] == NULL) log_error("Peer %d does not exist.", client_id); + + delete peer_list_root[client_id]; + peer_list_root[client_id] = NULL; + + peer_list_resize_list(-1); +} + + + +#ifdef AS_USE_SSL +/* + * Server mode + When the mode is server, first a TCP socket is created. The server starts + to listen on this port. Once a TCP connect request is received, the TCP + connection is setup. After this the SSL handshake begins. + The SSL is mapped to the file descriptor of the TCP socket. The BIO is + automatically created by OpenSSL inheriting the characteristics of the + socket (non-blocking mode). The BIO is completely transparent. + The server always sends its certificate to the client. If configured so, + the server will request the certificate of the client and check if it is + a valid certificate. If not, the SSL connection is refused. + If configured not to verify the certificate, the server will not request + it from the client and the SSL connection is accepted. + If usage of the SSL ssl_session resumption is enabled and + the client refers to a previous ssl_session, the server will accept it, + unless it is not found in the SSL context cache. + Once the connection is negotiated, data can be sent/received. + The SSL connection is shutted down on an unmap() operation. The shutdown + process does not follow the standard. The server simply shuts down and + does not expect any acknowledgement from the client. + Clients connected to the server are distinguished with their file + descriptor numbers. When a message is received, the file descriptor + number is also passed, so the client can be identified. + * Client mode + When the mode is client, first a TCP connection is requested to the + server. Once accepted, the SSL endpoint is created. + If configured so, the client tries to use the ssl_session Id from the + previous connection, if available (e.g. not the first connection). + If no ssl_session Id is available or the server does not accept it, + a full handshake if performed. + If configured so, the certificate of the server is verified. + If the verification fails, the SSL connection is interrupted by the + client. If no verification required, the received certificate is + still verified, however the result does not affect the connection + (might fail). + * ssl_verify_certificates() is a virtual function. It is called after + SSL connection is up. Testports may use it to check other peer's + certificate and do actions. If the return value is 0, then the + SSL connection is closed. In case of a client, the test port + exits with an error (verification_error). The server just removes + client data, but keeps running. + If ssl_verifiycertificate == "yes", then accept connections only + where certificate is valid + Further checks can be done using SSL_Socket::ssl_verify_certificates() + after the SSL connection is established with the following function call + sequence: + + remove_client(dest_fd); + peer_disconnected(dest_fd); + +*/ + + +// ssl_session ID context of the server +static unsigned char ssl_server_context_name[] = "McHalls&EduardWasHere"; +const unsigned char * SSL_Socket::ssl_server_auth_session_id_context = ssl_server_context_name; +// Password pointer +void *SSL_Socket::ssl_current_client = NULL; + + +SSL_Socket::SSL_Socket() +{ + ssl_use_ssl=false; + ssl_initialized=false; + ssl_key_file=NULL; + ssl_certificate_file=NULL; + ssl_trustedCAlist_file=NULL; + ssl_cipher_list=NULL; + ssl_verify_certificate=false; + ssl_use_session_resumption=true; + ssl_session=NULL; + ssl_password=NULL; + test_port_type=NULL; + test_port_name=NULL; + ssl_ctx = NULL; + ssl_current_ssl = NULL; + SSLv2=true; + SSLv3=true; + TLSv1=true; + TLSv1_1=true; + TLSv1_2=true; +} + +SSL_Socket::SSL_Socket(const char *tp_type, const char *tp_name) +{ + ssl_use_ssl=false; + ssl_initialized=false; + ssl_key_file=NULL; + ssl_certificate_file=NULL; + ssl_trustedCAlist_file=NULL; + ssl_cipher_list=NULL; + ssl_verify_certificate=false; + ssl_use_session_resumption=true; + ssl_session=NULL; + ssl_password=NULL; + test_port_type=tp_type; + test_port_name=tp_name; + ssl_ctx = NULL; + ssl_current_ssl = NULL; + SSLv2=true; + SSLv3=true; + TLSv1=true; + TLSv1_1=true; + TLSv1_2=true; +} + +SSL_Socket::~SSL_Socket() +{ + // now SSL context can be removed + if (ssl_use_ssl && ssl_ctx!=NULL) { + SSL_CTX_free(ssl_ctx); + } + delete [] ssl_key_file; + delete [] ssl_certificate_file; + delete [] ssl_trustedCAlist_file; + delete [] ssl_cipher_list; + delete [] ssl_password; +} + + +bool SSL_Socket::parameter_set(const char *parameter_name, + const char *parameter_value) +{ + log_debug("entering SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + + if(strcmp(parameter_name, ssl_use_ssl_name()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) ssl_use_ssl = true; + else if(strcasecmp(parameter_value, "no") == 0) ssl_use_ssl = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_use_ssl_name()); + } else if(strcmp(parameter_name, ssl_use_session_resumption_name()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) ssl_use_session_resumption = true; + else if(strcasecmp(parameter_value, "no") == 0) ssl_use_session_resumption = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_use_session_resumption_name()); + } else if(strcmp(parameter_name, ssl_private_key_file_name()) == 0) { + delete [] ssl_key_file; + ssl_key_file=new char[strlen(parameter_value)+1]; + strcpy(ssl_key_file, parameter_value); + } else if(strcmp(parameter_name, ssl_trustedCAlist_file_name()) == 0) { + delete [] ssl_trustedCAlist_file; + ssl_trustedCAlist_file=new char[strlen(parameter_value)+1]; + strcpy(ssl_trustedCAlist_file, parameter_value); + } else if(strcmp(parameter_name, ssl_certificate_file_name()) == 0) { + delete [] ssl_certificate_file; + ssl_certificate_file=new char[strlen(parameter_value)+1]; + strcpy(ssl_certificate_file, parameter_value); + } else if(strcmp(parameter_name, ssl_cipher_list_name()) == 0) { + delete [] ssl_cipher_list; + ssl_cipher_list=new char[strlen(parameter_value)+1]; + strcpy(ssl_cipher_list, parameter_value); + } else if(strcmp(parameter_name, ssl_password_name()) == 0) { + ssl_password=new char[strlen(parameter_value)+1]; + strcpy(ssl_password, parameter_value); + } else if(strcmp(parameter_name, ssl_verifycertificate_name()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) ssl_verify_certificate = true; + else if(strcasecmp(parameter_value, "no") == 0) ssl_verify_certificate = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_verifycertificate_name()); + } else if(strcasecmp(parameter_name, ssl_disable_SSLv2()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) SSLv2= false; + else if(strcasecmp(parameter_value, "no") == 0) SSLv2 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_SSLv2()); + } else if(strcasecmp(parameter_name, ssl_disable_SSLv3()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) SSLv2 = false; + else if(strcasecmp(parameter_value, "no") == 0) SSLv2 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_SSLv3()); + } else if(strcasecmp(parameter_name, ssl_disable_TLSv1()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) TLSv1= false; + else if(strcasecmp(parameter_value, "no") == 0) TLSv1 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1()); + } else if(strcasecmp(parameter_name, ssl_disable_TLSv1_1()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) TLSv1_1 = false; + else if(strcasecmp(parameter_value, "no") == 0) TLSv1_1 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1_1()); + } else if(strcasecmp(parameter_name, ssl_disable_TLSv1_2()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) TLSv1_2 = false; + else if(strcasecmp(parameter_value, "no") == 0) TLSv1_2 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1_2()); + } else { + log_debug("leaving SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return Abstract_Socket::parameter_set(parameter_name, parameter_value); + } + log_debug("leaving SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return true; +} + + +bool SSL_Socket::add_user_data(int client_id) { + + log_debug("entering SSL_Socket::add_user_data()"); + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::add_user_data()"); + return Abstract_Socket::add_user_data(client_id); + } + + ssl_init_SSL(); + + log_debug("Create a new SSL object"); + if (ssl_ctx==NULL) + log_error("No SSL CTX found, SSL not initialized"); + ssl_current_ssl=SSL_new(ssl_ctx); + + if (ssl_current_ssl==NULL) + log_error("Creation of SSL object failed"); +#ifdef SSL_OP_NO_SSLv2 + if(!SSLv2){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_SSLv2); + } +#endif +#ifdef SSL_OP_NO_SSLv3 + if(!SSLv3){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_SSLv3); + } +#endif +#ifdef SSL_OP_NO_TLSv1 + if(!TLSv1){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1); + } +#endif +#ifdef SSL_OP_NO_TLSv1_1 + if(!TLSv1_1){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1_1); + } +#endif +#ifdef SSL_OP_NO_TLSv1_2 + if(!TLSv1_2){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1_2); + } +#endif + + set_user_data(client_id, ssl_current_ssl); + log_debug("New client added with key '%d'", client_id); + log_debug("Binding SSL to the socket"); + if (SSL_set_fd(ssl_current_ssl, client_id)!=1) + log_error("Binding of SSL object to socket failed"); + + // Conext change for SSL objects may come here in the + // future. + + if (Abstract_Socket::get_server_mode()) { + log_debug("Accept SSL connection request"); + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + if (ssl_getresult(SSL_accept(ssl_current_ssl))!=SSL_ERROR_NONE) { + log_warning("Connection from client %d is refused", client_id); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::add_user_data()"); + return false; + } + ssl_current_client=NULL; + + } else { + if (ssl_use_session_resumption && ssl_session!=NULL) { + log_debug("Try to use ssl_session resumption"); + if (ssl_getresult(SSL_set_session(ssl_current_ssl, ssl_session))!=SSL_ERROR_NONE) + log_error("SSL error occured"); + } + + log_debug("Connect to server"); + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + // + + while(true) + { + int res = ssl_getresult(SSL_connect(ssl_current_ssl)); + switch (res) { + case SSL_ERROR_NONE: break; + case SSL_ERROR_WANT_WRITE: + ssl_current_client = NULL; + TTCN_Snapshot::block_for_sending(client_id); + continue; + case SSL_ERROR_WANT_READ: + for(;;) { + pollfd pollClientFd = { client_id, POLLIN, 0 }; + int nEvents = poll(&pollClientFd, 1, 0); + if (nEvents == 1 && (pollClientFd.revents & (POLLIN | POLLHUP)) != 0) + break; + if(nEvents < 0 && errno != EINTR) + log_error("System call poll() failed on file descriptor %d", client_id); + } + continue; + default: + log_warning("Connection to server is refused"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::add_user_data()"); + return false; + } + break; + } //while + + + ssl_current_client=NULL; + if (ssl_use_session_resumption) { + log_debug("Connected, get new ssl_session"); + ssl_session=SSL_get1_session(ssl_current_ssl); + if (ssl_session==NULL) + log_warning("Server did not send a session ID"); + } + } + + if (ssl_use_session_resumption) { + if (SSL_session_reused(ssl_current_ssl)) log_debug("Session was reused"); + else log_debug("Session was not reused"); + } + + if (!ssl_verify_certificates()) { // remove client + log_warning("Verification failed"); + log_debug("leaving SSL_Socket::add_user_data()"); + return false; + + } + log_debug("leaving SSL_Socket::add_user_data()"); + return true; +} + + +bool SSL_Socket::remove_user_data(int client_id) { + + log_debug("entering SSL_Socket::remove_user_data()"); + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::remove_user_data()"); + return Abstract_Socket::remove_user_data(client_id); + } + ssl_current_ssl = (SSL*)get_user_data(client_id); + if (ssl_current_ssl!=NULL) { + SSL_shutdown(ssl_current_ssl); + SSL_free(ssl_current_ssl); + } else + log_warning("SSL object not found for client %d", client_id); + log_debug("leaving SSL_Socket::remove_user_data()"); + return true; +} + + + +bool SSL_Socket::user_all_mandatory_configparameters_present() { + if (!ssl_use_ssl) { return true; } + if (Abstract_Socket::get_server_mode()) { + if (ssl_certificate_file==NULL) + log_error("%s is not defined in the configuration file", ssl_certificate_file_name()); + if (ssl_trustedCAlist_file==NULL) + log_error("%s is not defined in the configuration file", ssl_trustedCAlist_file_name()); + if (ssl_key_file==NULL) + log_error("%s is not defined in the configuration file", ssl_private_key_file_name()); + } else { + if (ssl_verify_certificate && ssl_trustedCAlist_file==NULL) + log_error("%s is not defined in the configuration file altough %s=yes", ssl_trustedCAlist_file_name(), ssl_verifycertificate_name()); + } + return true; +} + + + +//STATE_WAIT_FOR_RECEIVE_CALLBACK: if the SSL_read operation would +// block because the socket is not ready for writing, +// I set the socket state to this state and add the file +// descriptor to the Event_Handler. The Event_Handler will +// wake up and call the receive_message_on_fd operation +// if the socket is ready to write. +//If the SSL_read operation would block because the socket is not ready for +//reading, I do nothing +int SSL_Socket::receive_message_on_fd(int client_id) +{ + log_debug("entering SSL_Socket::receive_message_on_fd()"); + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::receive_message_on_fd()"); + return Abstract_Socket::receive_message_on_fd(client_id); + } + + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + + as_client_struct* peer = get_peer(client_id); // check if client exists + if (peer->reading_state == STATE_WAIT_FOR_RECEIVE_CALLBACK){ + Remove_Fd_Write_Handler(client_id); + log_debug("SSL_Socket::receive_message_on_fd: setting socket state to STATE_NORMAL"); + peer->reading_state = STATE_NORMAL; + } + TTCN_Buffer* recv_tb = get_buffer(client_id); + ssl_current_ssl=(SSL*)get_user_data(client_id); + int messageLength=0; + size_t end_len=AS_SSL_CHUNCK_SIZE; + unsigned char *end_ptr; + while (messageLength<=0) { + log_debug(" one read cycle started"); + recv_tb->get_end(end_ptr, end_len); + messageLength = SSL_read(ssl_current_ssl, end_ptr, end_len); + if (messageLength <= 0) { + int res=ssl_getresult(messageLength); + switch (res) { + case SSL_ERROR_ZERO_RETURN: + log_debug("SSL_Socket::receive_message_on_fd: SSL connection was interrupted by the other side"); + SSL_set_quiet_shutdown(ssl_current_ssl, 1); + log_debug("SSL_ERROR_ZERO_RETURN is received, setting SSL SHUTDOWN mode to QUIET"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd() with SSL_ERROR_ZERO_RETURN"); + return 0; + case SSL_ERROR_WANT_WRITE://writing would block + if (get_use_non_blocking_socket()){ + Add_Fd_Write_Handler(client_id); + log_debug("SSL_Socket::receive_message_on_fd: setting socket state to STATE_WAIT_FOR_RECEIVE_CALLBACK"); + peer->reading_state = STATE_WAIT_FOR_RECEIVE_CALLBACK; + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd()"); + return -2; + } + case SSL_ERROR_WANT_READ: //reading would block, continue processing data + if (get_use_non_blocking_socket()){ + log_debug("SSL_Socket::receive_message_on_fd: reading would block, leaving SSL_Socket::receive_message_on_fd()"); + ssl_current_client = NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd()"); + return -2; + } + log_debug("repeat the read operation to finish the pending SSL handshake"); + break; + default: + log_error("SSL error occured"); + } + } else { + recv_tb->increase_length(messageLength); + } + } + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd() with number of bytes read: %d", messageLength); + return messageLength; +} + + +int SSL_Socket::send_message_on_fd(int client_id, const unsigned char* send_par, int message_length) +{ + log_debug("entering SSL_Socket::send_message_on_fd()"); + + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::send_message_on_fd()"); + return Abstract_Socket::send_message_on_fd(client_id, send_par, message_length); + } + + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + + get_peer(client_id); // check if client exists + ssl_current_ssl=(SSL*)get_user_data(client_id); + if (ssl_current_ssl==NULL) { log_error("No SSL data available for client %d", client_id); } + log_debug("Client ID = %d", client_id); + while (true) { + log_debug(" one write cycle started"); + + int res = ssl_getresult(SSL_write(ssl_current_ssl, send_par, message_length)); + switch (res) { + case SSL_ERROR_NONE: + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_fd()"); + return message_length; + case SSL_ERROR_WANT_WRITE: + case SSL_ERROR_WANT_READ: + log_debug("repeat the write operation to finish the pending SSL handshake"); + break; + case SSL_ERROR_ZERO_RETURN: + log_warning("SSL_Socket::send_message_on_fd: SSL connection was interrupted by the other side"); + SSL_set_quiet_shutdown(ssl_current_ssl, 1); + log_debug("SSL_ERROR_ZERO_RETURN is received, setting SSL SHUTDOWN mode to QUIET"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_fd()"); + return -1; + default: + log_debug("SSL error occured"); + return -1; + } + } + // avoid compiler warnings + return 0; +} + +//If the socket is not ready for writing, the same mechanism is used +//as described at the Abstract_Socket class +//If the socket is not ready for reading, I block the execution using +//the take_new operation while the socket is not ready for reading. +//While this operation will call the Event_Handler, +//I indicate with the STATE_DONT_RECEIVE state that from the Event_Handler the receive_message_on_fd +//operation must not be called for this socket. +int SSL_Socket::send_message_on_nonblocking_fd(int client_id, const unsigned char* send_par, int message_length){ + log_debug("entering SSL_Socket::send_message_on_nonblocking_fd()"); + + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); + return Abstract_Socket::send_message_on_nonblocking_fd(client_id, send_par, message_length); + } + + as_client_struct* peer; + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + + get_peer(client_id); + ssl_current_ssl=(SSL*)get_user_data(client_id); + if (ssl_current_ssl==NULL) { log_error("No SSL data available for client %d", client_id); } + log_debug("Client ID = %d", client_id); + while (true) { + int res; + peer = get_peer(client_id); // check if client exists + log_debug(" one write cycle started"); + ssl_current_ssl = (SSL*)get_user_data(client_id); + if (peer -> reading_state == STATE_DONT_CLOSE){ + goto client_closed_connection; + }else res = ssl_getresult(SSL_write(ssl_current_ssl, send_par, message_length)); + + switch (res) { + case SSL_ERROR_NONE: + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_NORMAL"); + peer -> reading_state = STATE_NORMAL; + return message_length; + case SSL_ERROR_WANT_WRITE: + if (peer == NULL){ + log_error("SSL_Socket::send_message_on_nonblocking_fd, Client ID %d does not exist.", client_id); + } + int old_bufsize, new_bufsize; + if (increase_send_buffer(client_id, old_bufsize, new_bufsize)) { + log_debug("Sending data on on file descriptor %d",client_id); + log_debug("The sending operation would block execution. The " + "size of the outgoing buffer was increased from %d to " + "%d bytes.",old_bufsize, + new_bufsize); + } else { + log_warning("Sending data on file descriptor %d", client_id); + log_warning("The sending operation would block execution and it " + "is not possible to further increase the size of the " + "outgoing buffer. Trying to process incoming data to " + "avoid deadlock."); + ssl_current_client=NULL; + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_BLOCK_FOR_SENDING"); + peer->reading_state = STATE_BLOCK_FOR_SENDING; + TTCN_Snapshot::block_for_sending(client_id); + } + peer = get_peer(client_id); // check if client exists + if (peer == NULL){ + log_error("SSL_Socket::send_message_on_nonblocking_fd, Client ID %d does not exist.", client_id); + } + break; + case SSL_ERROR_WANT_READ: + //receiving buffer is probably empty thus reading would block execution + log_debug("SSL_write cannot read data from socket %d. Trying to process data to avoid deadlock.", client_id); + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_DONT_RECEIVE"); + peer -> reading_state = STATE_DONT_RECEIVE; //don't call receive_message_on_fd() to this socket + for (;;) { + TTCN_Snapshot::take_new(TRUE); + pollfd pollClientFd = { client_id, POLLIN, 0 }; + int nEvents = poll(&pollClientFd, 1, 0); + if (nEvents == 1 && (pollClientFd.revents & (POLLIN | POLLHUP)) != 0) + break; + if (nEvents < 0 && errno != EINTR) + log_error("System call poll() failed on file descriptor %d", client_id); + } + log_debug("Deadlock resolved"); + break; + case SSL_ERROR_ZERO_RETURN: + goto client_closed_connection; + default: + log_warning("SSL error occured"); + return -1; + } + } + +client_closed_connection: + log_warning("SSL_Socket::send_message_on_nonblocking_fd: SSL connection was interrupted by the other side"); + SSL_set_quiet_shutdown(ssl_current_ssl, 1); + log_debug("Setting SSL SHUTDOWN mode to QUIET"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_NORMAL"); + peer -> reading_state = STATE_NORMAL; + errno = EPIPE; + return -1; + +} + +bool SSL_Socket::ssl_verify_certificates() +{ + char str[SSL_CHARBUF_LENGTH]; + + log_debug("entering SSL_Socket::ssl_verify_certificates()"); + + ssl_log_SSL_info(); + + // Get the other side's certificate + log_debug("Check certificate of the other party"); + X509 *cert = SSL_get_peer_certificate (ssl_current_ssl); + if (cert != NULL) { + + { + log_debug("Certificate information:"); + X509_NAME_oneline (X509_get_subject_name (cert), str, SSL_CHARBUF_LENGTH); + log_debug(" subject: '%s'", str); + } + + // We could do all sorts of certificate verification stuff here before + // deallocating the certificate. + + // Just a basic check that the certificate is valid + // Other checks (e.g. Name in certificate vs. hostname) shall be + // done on application level + if (ssl_verify_certificate) + log_debug("Verification state is: '%s'", X509_verify_cert_error_string(SSL_get_verify_result(ssl_current_ssl))); + X509_free (cert); + + } else + log_warning("Other side does not have certificate."); + + log_debug("leaving SSL_Socket::ssl_verify_certificates()"); + return true; +} + + + +// Data set/get functions +char * SSL_Socket::get_ssl_password() const {return ssl_password;} +void SSL_Socket::set_ssl_use_ssl(bool par) {ssl_use_ssl=par;} +void SSL_Socket::set_ssl_verifycertificate(bool par) {ssl_verify_certificate=par;} +void SSL_Socket::set_ssl_use_session_resumption(bool par) {ssl_use_session_resumption=par;} +void SSL_Socket::set_ssl_key_file(char * par) { + delete [] ssl_key_file; + ssl_key_file=par; +} +void SSL_Socket::set_ssl_certificate_file(char * par) { + delete [] ssl_certificate_file; + ssl_certificate_file=par; +} +void SSL_Socket::set_ssl_trustedCAlist_file(char * par) { + delete [] ssl_trustedCAlist_file; + ssl_trustedCAlist_file=par; +} +void SSL_Socket::set_ssl_cipher_list(char * par) { + delete [] ssl_cipher_list; + ssl_cipher_list=par; +} +void SSL_Socket::set_ssl_server_auth_session_id_context(const unsigned char * par) { + ssl_server_auth_session_id_context=par; +} + +// Default parameter names +const char* SSL_Socket::ssl_use_ssl_name() { return "ssl_use_ssl";} +const char* SSL_Socket::ssl_use_session_resumption_name() { return "ssl_use_session_resumption";} +const char* SSL_Socket::ssl_private_key_file_name() { return "ssl_private_key_file";} +const char* SSL_Socket::ssl_trustedCAlist_file_name() { return "ssl_trustedCAlist_file";} +const char* SSL_Socket::ssl_certificate_file_name() { return "ssl_certificate_chain_file";} +const char* SSL_Socket::ssl_password_name() { return "ssl_private_key_password";} +const char* SSL_Socket::ssl_cipher_list_name() { return "ssl_allowed_ciphers_list";} +const char* SSL_Socket::ssl_verifycertificate_name() { return "ssl_verify_certificate";} +const char* SSL_Socket::ssl_disable_SSLv2() { return "ssl_disable_SSLv2";} +const char* SSL_Socket::ssl_disable_SSLv3() { return "ssl_disable_SSLv3";} +const char* SSL_Socket::ssl_disable_TLSv1() { return "ssl_disable_TLSv1";} +const char* SSL_Socket::ssl_disable_TLSv1_1() { return "ssl_disable_TLSv1_1";} +const char* SSL_Socket::ssl_disable_TLSv1_2() { return "ssl_disable_TLSv1_2";} + + +void SSL_Socket::ssl_actions_to_seed_PRNG() { + struct stat randstat; + + if(RAND_status()) { + log_debug("PRNG already initialized, no action needed"); + return; + } + log_debug("Seeding PRND"); + // OpenSSL tries to use random devives automatically + // these would not be necessary + if (!stat("/dev/urandom", &randstat)) { + log_debug("Using installed random device /dev/urandom for seeding the PRNG with %d bytes.", SSL_PRNG_LENGTH); + if (RAND_load_file("/dev/urandom", SSL_PRNG_LENGTH)!=SSL_PRNG_LENGTH) + log_error("Could not read from /dev/urandom"); + } else if (!stat("/dev/random", &randstat)) { + log_debug("Using installed random device /dev/random for seeding the PRNG with %d bytes.", SSL_PRNG_LENGTH); + if (RAND_load_file("/dev/random", SSL_PRNG_LENGTH)!=SSL_PRNG_LENGTH) + log_error("Could not read from /dev/random"); + } else { + /* Neither /dev/random nor /dev/urandom are present, so add + entropy to the SSL PRNG a hard way. */ + log_warning("Solaris patches to provide random generation devices are not installed.\nSee http://www.openssl.org/support/faq.html \"Why do I get a \"PRNG not seeded\" error message?\"\nA workaround will be used."); + for (int i = 0; i < 10000 && !RAND_status(); ++i) { + char buf[4]; + struct timeval tv; + gettimeofday(&tv, 0); + buf[0] = tv.tv_usec & 0xF; + buf[2] = (tv.tv_usec & 0xF0) >> 4; + buf[3] = (tv.tv_usec & 0xF00) >> 8; + buf[1] = (tv.tv_usec & 0xF000) >> 12; + RAND_add(buf, sizeof buf, 0.1); + } + return; + } + + if(!RAND_status()) { + log_error("Could not seed the Pseudo Random Number Generator with enough data."); + } else { + log_debug("PRNG successfully initialized."); + } +} + + +void SSL_Socket::ssl_init_SSL() +{ + if (ssl_initialized) { + log_debug("SSL already initialized, no action needed"); + return; + } + + { + log_debug("Init SSL started"); + log_debug("Using %s (%lx)", SSLeay_version(SSLEAY_VERSION), OPENSSL_VERSION_NUMBER); + } + + SSL_library_init(); // initialize library + SSL_load_error_strings(); // readable error messages + + // Create SSL method: both server and client understanding SSLv2, SSLv3, TLSv1 +// ssl_method = SSLv23_method(); +// if (ssl_method==NULL) +// log_error("SSL method creation failed."); + // Create context + ssl_ctx = SSL_CTX_new (SSLv23_method()); + if (ssl_ctx==NULL) + log_error("SSL context creation failed."); + + // valid for all SSL objects created from this context afterwards + if(ssl_certificate_file!=NULL) { + log_debug("Loading certificate file"); + if(SSL_CTX_use_certificate_chain_file(ssl_ctx, ssl_certificate_file)!=1) + log_error("Can't read certificate file "); + } + + // valid for all SSL objects created from this context afterwards + if(ssl_key_file!=NULL) { + log_debug("Loading key file"); + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + if(ssl_password!=NULL) + SSL_CTX_set_default_passwd_cb(ssl_ctx, ssl_password_cb); + if(SSL_CTX_use_PrivateKey_file(ssl_ctx, ssl_key_file, SSL_FILETYPE_PEM)!=1) + log_error("Can't read key file "); + ssl_current_client=NULL; + } + + if (ssl_trustedCAlist_file!=NULL) { + log_debug("Loading trusted CA list file"); + if (SSL_CTX_load_verify_locations(ssl_ctx, ssl_trustedCAlist_file, NULL)!=1) + log_error("Can't read trustedCAlist file "); + } + + if (ssl_certificate_file!=NULL && ssl_key_file!=NULL) { + log_debug("Check for consistency between private and public keys"); + if (SSL_CTX_check_private_key(ssl_ctx)!=1) + log_warning("Private key does not match the certificate public key"); + } + + // check the other side's certificates + if (ssl_verify_certificate) { + log_debug("Setting verification behaviour: verification required and do not allow to continue on failure.."); + SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, ssl_verify_callback); + } else { + log_debug("Setting verification behaviour: verification not required and do allow to continue on failure.."); + SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, ssl_verify_callback); + } + + if (ssl_cipher_list!=NULL) { + log_debug("Setting ssl_cipher list restrictions"); + if (SSL_CTX_set_cipher_list(ssl_ctx, ssl_cipher_list)!=1) + log_error("Cipher list restriction failed for %s", ssl_cipher_list); + } + + ssl_actions_to_seed_PRNG(); + + if (Abstract_Socket::get_server_mode() && ssl_use_session_resumption) { + log_debug("Prepare server for ssl_session resumption"); + + log_debug("Context is: '%s'; length = %lu", ssl_server_auth_session_id_context, (unsigned long)strlen((const char*)ssl_server_auth_session_id_context)); + if (SSL_CTX_set_session_id_context(ssl_ctx, ssl_server_auth_session_id_context, strlen((const char*)ssl_server_auth_session_id_context))!=1) + log_error("Activation of SSL ssl_session resumption failed on server"); + } + + ssl_initialized=true; + + log_debug("Init SSL successfully finished"); +} + + +void SSL_Socket::ssl_log_SSL_info() +{ + char str[SSL_CHARBUF_LENGTH]; + + log_debug("Check SSL description"); + const SSL_CIPHER *ssl_cipher=SSL_get_current_cipher(ssl_current_ssl); + if (ssl_cipher!=NULL) { + SSL_CIPHER_description(SSL_get_current_cipher(ssl_current_ssl), str, SSL_CHARBUF_LENGTH); + { + log_debug("SSL description:"); + log_debug("%s", str); + } + } +} + + + +// Log the SSL error and flush the error queue +// Can be used after the followings: +// SSL_connect(), SSL_accept(), SSL_do_handshake(), +// SSL_read(), SSL_peek(), or SSL_write() +int SSL_Socket::ssl_getresult(int res) +{ + int err = SSL_get_error(ssl_current_ssl, res); + + log_debug("SSL operation result:"); + + switch(err) { + case SSL_ERROR_NONE: + log_debug("SSL_ERROR_NONE"); + break; + case SSL_ERROR_ZERO_RETURN: + log_debug("SSL_ERROR_ZERO_RETURN"); + break; + case SSL_ERROR_WANT_READ: + log_debug("SSL_ERROR_WANT_READ"); + break; + case SSL_ERROR_WANT_WRITE: + log_debug("SSL_ERROR_WANT_WRITE"); + break; + case SSL_ERROR_WANT_CONNECT: + log_debug("SSL_ERROR_WANT_CONNECT"); + break; + case SSL_ERROR_WANT_ACCEPT: + log_debug("SSL_ERROR_WANT_ACCEPT"); + break; + case SSL_ERROR_WANT_X509_LOOKUP: + log_debug("SSL_ERROR_WANT_X509_LOOKUP"); + break; + case SSL_ERROR_SYSCALL: + log_debug("SSL_ERROR_SYSCALL"); + log_debug("EOF was observed that violates the protocol, peer disconnected; treated as a normal disconnect"); + return SSL_ERROR_ZERO_RETURN; + break; + case SSL_ERROR_SSL: + log_debug("SSL_ERROR_SSL"); + break; + default: + log_error("Unknown SSL error code: %d", err); + } + // get the copy of the error string in readable format + unsigned long e=ERR_get_error(); + while (e) { + log_debug("SSL error queue content:"); + log_debug(" Library: %s", ERR_lib_error_string(e)); + log_debug(" Function: '%s'", ERR_func_error_string(e)); + log_debug(" Reason: %s", ERR_reason_error_string(e)); + e=ERR_get_error(); + } + //It does the same but more simple: + // ERR_print_errors_fp(stderr); + return err; +} + +int SSL_Socket::ssl_verify_certificates_at_handshake(int /*preverify_ok*/, X509_STORE_CTX */*ssl_ctx*/) { + // don't care by default + return -1; +} + +// Callback function used by OpenSSL. +// Called when a password is needed to decrypt the private key file. +// NOTE: not thread safe +int SSL_Socket::ssl_password_cb(char *buf, int num, int /*rwflag*/,void */*userdata*/) { + + if (ssl_current_client!=NULL) { + char *ssl_client_password; + ssl_client_password=((SSL_Socket *)ssl_current_client)->get_ssl_password(); + if(ssl_client_password==NULL) return 0; + const char* pass = (const char*) ssl_client_password; + int pass_len = strlen(pass) + 1; + if (num < pass_len) return 0; + + strcpy(buf, pass); + return(strlen(pass)); + } else { // go on with no password set + fprintf(stderr, "Warning: no current SSL object found but ssl_password_cb is called, programming error\n"); + return 0; + } +} + +// Callback function used by OpenSSL. +// Called during SSL handshake with a pre-verification status. +int SSL_Socket::ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ssl_ctx) +{ + SSL *ssl_pointer; + SSL_CTX *ctx_pointer; + int user_result; + + ssl_pointer = (SSL *)X509_STORE_CTX_get_ex_data(ssl_ctx, SSL_get_ex_data_X509_STORE_CTX_idx()); + ctx_pointer = SSL_get_SSL_CTX(ssl_pointer); + + if (ssl_current_client!=NULL) { + // if ssl_verifiycertificate == "no", then always accept connections + if(((SSL_Socket *)ssl_current_client)->ssl_verify_certificate) { + user_result=((SSL_Socket *)ssl_current_client)->ssl_verify_certificates_at_handshake(preverify_ok, ssl_ctx); + if (user_result>=0) return user_result; + } else { + return 1; + } + } else { // go on with default authentication + fprintf(stderr, "Warning: no current SSL object found but ssl_verify_callback is called, programming error\n"); + } + + // if ssl_verifiycertificate == "no", then always accept connections + if (SSL_CTX_get_verify_mode(ctx_pointer) == SSL_VERIFY_NONE) + return 1; + // if ssl_verifiycertificate == "yes", then accept connections only if the + // certificate is valid + else if (SSL_CTX_get_verify_mode(ctx_pointer) & SSL_VERIFY_PEER) { + return preverify_ok; + } + // something went wrong + else + return 0; +} + +#endif diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.grp b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.grp new file mode 100644 index 0000000000000000000000000000000000000000..bd7791173ba5c111b7f956b16e80fbc80ee3b80f --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.grp @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.hh b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.hh new file mode 100644 index 0000000000000000000000000000000000000000..7de8446c0bb381b290314e418868e2db3310781f --- /dev/null +++ b/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.hh @@ -0,0 +1,414 @@ +/****************************************************************************** +* Copyright (c) 2000-2019 Ericsson Telecom AB +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +* +* Contributors: +* Zoltan Bibo - initial implementation and initial documentation +* Gergely Futo +* Oliver Ferenc Czerman +* Balasko Jeno +* Zoltan Bibo +* Eduard Czimbalmos +* Kulcsár Endre +* Gabor Szalai +* Jozsef Gyurusi +* Csöndes Tibor +* Zoltan Jasz +******************************************************************************/ +// +// File: Abstract_Socket.hh +// Description: Abstract_Socket header file +// Rev: R9B +// Prodnr: CNL 113 384 +// + + +#ifndef Abstract_Socket_HH +#define Abstract_Socket_HH + +#ifdef AS_USE_SSL +#include +#include +#include +#endif + +#include +#include +#include + +// to support systems not supporting IPv6 define AF_INET6 to some dummy value: +#ifndef AF_INET6 +#define AF_INET6 (-255) +#endif + +class PacketHeaderDescr { +public: + // Byte order in the header + enum HeaderByteOrder{ Header_MSB, Header_LSB }; +private: + unsigned long length_offset; + unsigned long nr_bytes_in_length; + HeaderByteOrder byte_order; + long value_offset; + unsigned long length_multiplier; +public: + PacketHeaderDescr(unsigned long p_length_offset, + unsigned long p_nr_bytes_in_length, HeaderByteOrder p_byte_order, + long p_value_offset = 0, unsigned long p_length_multiplier = 1) + : length_offset(p_length_offset), nr_bytes_in_length(p_nr_bytes_in_length), + byte_order(p_byte_order), value_offset(p_value_offset), + length_multiplier(p_length_multiplier) { } + + // returns the message length + unsigned long Get_Message_Length(const unsigned char* buffer_pointer) const; + // returns the number of bytes needed to have a valid message length + inline unsigned long Get_Valid_Header_Length() const + { return length_offset + nr_bytes_in_length; } +}; + +class Abstract_Socket +{ +protected: + enum TCP_STATES {CLOSED, LISTEN, ESTABLISHED, CLOSE_WAIT, FIN_WAIT}; + enum READING_STATES {STATE_DONT_RECEIVE, STATE_WAIT_FOR_RECEIVE_CALLBACK, STATE_BLOCK_FOR_SENDING, STATE_DONT_CLOSE, STATE_NORMAL}; + // client data + struct as_client_struct { + void *user_data; // pointer to any additional data needed by the user + TTCN_Buffer *fd_buff; // pointer to the data buffer + struct sockaddr_storage clientAddr;// client address +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + clientAddrlen; + TCP_STATES tcp_state; // TCP state + READING_STATES reading_state; //used when SSL_write returns SSL_ERROR_WANT_READ an we are using non-blocking socket + }; + + Abstract_Socket(); + Abstract_Socket(const char *testport_type, const char *testport_name); + virtual ~Abstract_Socket(); + + // Shall be called from set_parameter() + bool parameter_set(const char *parameter_name, const char *parameter_value); + // Shall be called from user_map() + void map_user(); + // Shall be called from user_unmap() + void unmap_user(); + + // puts the IP address in the addr + void get_host_id(const char* hostName, struct sockaddr_in *addr); /* This function should not be used! Use getaddrinfo instead! */ + + // Closes the current listening port and opens the specified one + int open_listen_port(const struct sockaddr_in & localAddr); /* This function should be removed! Deprecated by: */ + int open_listen_port(const char* localHostname, const char* localServicename); + // Closes the current listening port + void close_listen_port(); + + virtual void listen_port_opened(int port_number); + + // Opens a new client connection + int open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr); /* This function should be removed! Deprecated by: */ + int open_client_connection(const char* remoteHostname, const char* remoteService, const char* localHostname, const char* localService); + + virtual void client_connection_opened(int client_id); + + // Shall be called from Handle_Fd_Event() + void Handle_Socket_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); + // Shall be called from Handle_Timeout() - for possible future development + void Handle_Timeout_Event(double /*time_since_last_call*/) {}; + + // Shall be called from outgoing_send() + void send_outgoing(const unsigned char* message_buffer, int length, int client_id = -1); + void send_shutdown(int client_id = -1); + + // Access to private variables + bool get_nagling() const {return nagling;} + bool get_use_non_blocking_socket() const {return use_non_blocking_socket;}; + bool get_server_mode() const {return server_mode;} + bool get_socket_debugging() const {return socket_debugging;} + bool get_halt_on_connection_reset() const {return halt_on_connection_reset;} + bool get_use_connection_ASPs() const {return use_connection_ASPs;} + bool get_handle_half_close() const {return handle_half_close;} + int get_socket_fd() const; + int get_listen_fd() const {return listen_fd;} + + //set non-blocking mode + int set_non_block_mode(int fd, bool enable_nonblock); + + //increase buffer size + bool increase_send_buffer(int fd, int &old_size, int& new_size); + + const char* get_local_host_name(){return local_host_name; }; + unsigned int get_local_port_number(){return local_port_number; }; + const char* get_remote_host_name(){return remote_host_name; }; + unsigned int get_remote_port_number(){return remote_port_number; }; + const struct sockaddr_in & get_remote_addr() {return remoteAddr; }; /* FIXME: This function is deprecated and should be removed! */ + const struct sockaddr_in & get_local_addr() {return localAddr; }; /* FIXME: This function is deprecated and should be removed! */ + const int& get_ai_family() const {return ai_family;} + void set_ai_family(int parameter_value) {ai_family=parameter_value;} + bool get_ttcn_buffer_usercontrol() const {return ttcn_buffer_usercontrol; } + void set_nagling(bool parameter_value) {nagling=parameter_value;} + void set_server_mode(bool parameter_value) {server_mode=parameter_value;} + void set_handle_half_close(bool parameter_value) {handle_half_close=parameter_value;} + void set_socket_debugging(bool parameter_value) {socket_debugging=parameter_value;} + void set_halt_on_connection_reset(bool parameter_value) {halt_on_connection_reset=parameter_value;} + void set_ttcn_buffer_usercontrol(bool parameter_value) {ttcn_buffer_usercontrol=parameter_value;} + const char *test_port_type; + const char *test_port_name; + + // Called when a message is received + virtual void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1) = 0; + + virtual void Add_Fd_Read_Handler(int fd) = 0; + virtual void Add_Fd_Write_Handler(int fd) = 0; + virtual void Remove_Fd_Read_Handler(int fd) = 0; + virtual void Remove_Fd_Write_Handler(int fd) = 0; + virtual void Remove_Fd_All_Handlers(int fd) = 0; + virtual void Handler_Uninstall() = 0; + virtual void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, + boolean call_anyway = TRUE, boolean is_periodic = TRUE) = 0; // unused - for possible future development + virtual const PacketHeaderDescr* Get_Header_Descriptor() const; + + // Logging functions + void log_debug(const char *fmt, ...) const + __attribute__ ((__format__ (__printf__, 2, 3))); + void log_warning(const char *fmt, ...) const + __attribute__ ((__format__ (__printf__, 2, 3))); + void log_error(const char *fmt, ...) const + __attribute__ ((__format__ (__printf__, 2, 3), __noreturn__)); + void log_hex(const char *prompt, const unsigned char *msg, size_t length) const; + + // Called when a message is to be received (an event detected) + virtual int receive_message_on_fd(int client_id); + // Called when a message is to be sent + virtual int send_message_on_fd(int client_id, const unsigned char* message_buffer, int message_length); + virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char *message_buffer, int message_length); + // Called after a peer is connected + virtual void peer_connected(int client_id, sockaddr_in& remote_addr); /* This function should be removed! deprecated by: */ + virtual void peer_connected(int /*client_id*/, const char * /*host*/, const int /*port*/) {}; + // Called after a peer is disconnected + virtual void peer_disconnected(int client_id); + // Called when a peer shut down its fd for writing + virtual void peer_half_closed(int client_id); + // Called after a send error + virtual void report_error(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); + // Called after a unsent message + virtual void report_unsent(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); + + // Test port parameters + virtual const char* local_port_name(); + virtual const char* remote_address_name(); + virtual const char* local_address_name(); + virtual const char* remote_port_name(); + virtual const char* ai_family_name(); + virtual const char* use_connection_ASPs_name(); + virtual const char* halt_on_connection_reset_name(); + virtual const char* client_TCP_reconnect_name(); + virtual const char* TCP_reconnect_attempts_name(); + virtual const char* TCP_reconnect_delay_name(); + virtual const char* server_mode_name(); + virtual const char* socket_debugging_name(); + virtual const char* nagling_name(); + virtual const char* use_non_blocking_socket_name(); + virtual const char* server_backlog_name(); + + // Fetch/Set user data pointer + void* get_user_data(int client_id) {return get_peer(client_id)->user_data;} + void set_user_data(int client_id, void *uptr) {get_peer(client_id)->user_data = uptr;} + // Called after a TCP connection is established + virtual bool add_user_data(int client_id); + // Called before the TCP connection is drop down + virtual bool remove_user_data(int client_id); + // Called when a client shall be removed + virtual void remove_client(int client_id); + // Called when all clients shall be removed + virtual void remove_all_clients(); + // Called at the beginning of map() to check mandatory parameter presence + virtual bool user_all_mandatory_configparameters_present(); + TTCN_Buffer *get_buffer(int client_id) {return get_peer(client_id)->fd_buff; } + + // Client data management functions + // add peer to the list + as_client_struct *peer_list_add_peer(int client_id); + // remove peer from list + void peer_list_remove_peer(int client_id); + // remove all peers from list + void peer_list_reset_peer(); + // returns back the structure of the peer + as_client_struct *get_peer(int client_id, bool no_error=false) const; + // length of the list + int peer_list_get_length() const { return peer_list_length; } + // number of peers in the list + int peer_list_get_nr_of_peers() const; + // fd of the last peer in the list + int peer_list_get_last_peer() const; + // fd of the first peer in the list + int peer_list_get_first_peer() const; + + +private: + void handle_message(int client_id = -1); + void all_mandatory_configparameters_present(); + bool halt_on_connection_reset_set; + bool halt_on_connection_reset; + bool client_TCP_reconnect; + int TCP_reconnect_attempts; + int TCP_reconnect_delay; + bool server_mode; + bool use_connection_ASPs; + bool handle_half_close; + bool socket_debugging; + bool nagling; + bool use_non_blocking_socket; + bool ttcn_buffer_usercontrol; + char* local_host_name; + unsigned int local_port_number; + char* remote_host_name; + unsigned int remote_port_number; + int ai_family; // address family to use + // remoteAddr and localAddr is filled when map_user is called + struct sockaddr_in remoteAddr; /* FIXME: not used! should be removed */ + struct sockaddr_in localAddr; /* FIXME: not used! should be removed */ + int server_backlog; + int deadlock_counter; + int listen_fd; + int peer_list_length; + + // Client data management functions + as_client_struct **peer_list_root; + void peer_list_resize_list(int client_id); +}; + + + +#ifdef AS_USE_SSL + +class SSL_Socket: public Abstract_Socket +{ + +protected: + SSL_Socket(); + SSL_Socket(const char *tp_type, const char *tp_name); + virtual ~SSL_Socket(); + + bool parameter_set(const char * parameter_name, const char * parameter_value); + // Called after a TCP connection is established (client side or server accepted a connection). + // It will create a new SSL conenction on the top of the TCP connection. + virtual bool add_user_data(int client_id); + // Called after a TCP connection is closed. + // It will delete the SSL conenction. + virtual bool remove_user_data(int client_id); + // Called from all_mandatory_configparameters_present() function + // during map() operation to check mandatory parameter presents. + virtual bool user_all_mandatory_configparameters_present(); + // Called after an SSL connection is established (handshake finished) for further + // authentication. Shall return 'true' if verification + // is OK, otherwise 'false'. If return value was 'true', the connection is kept, otherwise + // the connection will be shutted down. + virtual bool ssl_verify_certificates(); + // Call during SSL handshake (and rehandshake as well) by OpenSSL + // Return values: + // ==1: user authentication is passed, go on with handshake + // ==0: user authentication failed, refuse the connection to the other peer + // <0 : user don't care, go on with default basic checks + virtual int ssl_verify_certificates_at_handshake(int preverify_ok, X509_STORE_CTX *ssl_ctx); + // Called to receive from the socket if data is available (select()). + // Shall return with 0 if the peer is disconnected or with the number of bytes read. + // If error occured, execution shall stop in the function by calling log_error() + virtual int receive_message_on_fd(int client_id); + // Called to send a message on the socket. + // Shall return with 0 if the peer is disconnected or with the number of bytes written. + // If error occured, execution shall stop in the function by calling log_error() + virtual int send_message_on_fd(int client_id, const unsigned char * message_buffer, int length_of_message); + virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); + + // The following members can be called to fetch the current values + bool get_ssl_use_ssl() const {return ssl_use_ssl;} + bool get_ssl_verifycertificate() const {return ssl_verify_certificate;} + bool get_ssl_use_session_resumption() const {return ssl_use_session_resumption;} + bool get_ssl_initialized() const {return ssl_initialized;} + char * get_ssl_key_file() const {return ssl_key_file;} + char * get_ssl_certificate_file() const {return ssl_certificate_file;} + char * get_ssl_trustedCAlist_file() const {return ssl_trustedCAlist_file;} + char * get_ssl_cipher_list() const {return ssl_cipher_list;} + char * get_ssl_password() const; + const unsigned char * get_ssl_server_auth_session_id_context() const {return ssl_server_auth_session_id_context;} +// const SSL_METHOD * get_current_ssl_method() const {return ssl_method;} +// const SSL_CIPHER * get_current_ssl_cipher() const {return ssl_cipher;} + SSL_SESSION* get_current_ssl_session() const {return ssl_session;} + SSL_CTX * get_current_ssl_ctx() const {return ssl_ctx;} + SSL * get_current_ssl() const {return ssl_current_ssl;} + + // The following members can be called to set the current values + // NOTE that in case the parameter_value is a char *pointer, the old character + // array is deleted by these functions automatically. + void set_ssl_use_ssl(bool parameter_value); + void set_ssl_verifycertificate(bool parameter_value); + void set_ssl_use_session_resumption(bool parameter_value); + void set_ssl_key_file(char * parameter_value); + void set_ssl_certificate_file(char * parameter_value); + void set_ssl_trustedCAlist_file(char * parameter_value); + void set_ssl_cipher_list(char * parameter_value); + void set_ssl_server_auth_session_id_context(const unsigned char * parameter_value); + + // The following members can be called to fetch the default test port parameter names + virtual const char* ssl_use_ssl_name(); + virtual const char* ssl_use_session_resumption_name(); + virtual const char* ssl_private_key_file_name(); + virtual const char* ssl_trustedCAlist_file_name(); + virtual const char* ssl_certificate_file_name(); + virtual const char* ssl_password_name(); + virtual const char* ssl_cipher_list_name(); + virtual const char* ssl_verifycertificate_name(); + virtual const char* ssl_disable_SSLv2(); + virtual const char* ssl_disable_SSLv3(); + virtual const char* ssl_disable_TLSv1(); + virtual const char* ssl_disable_TLSv1_1(); + virtual const char* ssl_disable_TLSv1_2(); + +private: + bool ssl_verify_certificate; // verify other part's certificate or not + bool ssl_use_ssl; // whether to use SSL + bool ssl_initialized; // whether SSL already initialized or not + bool ssl_use_session_resumption; // use SSL sessions or not + + bool SSLv2; + bool SSLv3; + bool TLSv1; + bool TLSv1_1; + bool TLSv1_2; + + + char *ssl_key_file; // private key file + char *ssl_certificate_file; // own certificate file + char *ssl_trustedCAlist_file; // trusted CA list file + char *ssl_cipher_list; // ssl_cipher list restriction to apply + char *ssl_password; // password to decode the private key + static const unsigned char * ssl_server_auth_session_id_context; + +// const SSL_METHOD *ssl_method; // SSL context method + SSL_CTX *ssl_ctx; // SSL context +// const SSL_CIPHER *ssl_cipher; // used SSL ssl_cipher + SSL_SESSION *ssl_session; // SSL ssl_session + SSL *ssl_current_ssl; // currently used SSL object + static void *ssl_current_client; // current SSL object, used only during authentication + + void ssl_actions_to_seed_PRNG(); // Seed the PRNG with enough random data + void ssl_init_SSL(); // Initialize SSL libraries and create the SSL context + void ssl_log_SSL_info(); // Log the currently used SSL setting (debug) + int ssl_getresult(int result_code); // Fetch and log the SSL error code from I/O operation result codes + // Callback function to pass the password to OpenSSL. Called by OpenSSL + // during SSL handshake. + static int ssl_password_cb(char * password_buffer, int length_of_password, int rw_flag, void * user_data); + // Callback function to perform authentication during SSL handshake. Called by OpenSSL. + // NOTE: for further authentication, use ssl_verify_certificates(). + static int ssl_verify_callback(int preverify_status, X509_STORE_CTX * ssl_context); +}; +#endif + +#endif diff --git a/ttcn/patch_lib_common_titan/module.mk b/ttcn/patch_lib_common_titan/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..e1db11ae22d9e0bd76456cf9373f335916871fee --- /dev/null +++ b/ttcn/patch_lib_common_titan/module.mk @@ -0,0 +1,8 @@ +sources := \ + ../patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn \ + ../patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn \ + ../patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn \ + ../patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn \ + ttcn/LibCommon_TextStrings.ttcn \ + ttcn/LibCommon_Time.ttcn \ + ttcn/LibCommon_VerdictControl.ttcn diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8ae5f859cfc20f83233a6a500d67ebc45abb7d80 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_AbstractData.ttcn @@ -0,0 +1,137 @@ +/** + * @author ETSI + * @version $URL$ + * $Id$ + * @desc A collection of functions for abstract data types which may be + * useful in the implementation of any TTCN-3 test suite. + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ + module LibCommon_AbstractData { + + import from LibCommon_BasicTypesAndValues all; + + group stringStack { + + type record StringStack { + UInt stackSize, + StringItems stringItems + } + + type record of charstring StringItems; + + /** + * @desc Constant which can be used to initialize a + * string stack. A string stack can be intialized by + * assigning this value in the variable declariation. + * An alternative is to call the initlialization function. + * @see LibCommon_AbstractData.f_initStringStack + * @remark Note that an initlialized stack stack is not + * necessarily the same as an empty string stack. + * An empty tring stack as 0 zero elements but may + * have a non empty list of (empty) items. + */ + const StringStack c_initStringStack := { 0, {} } + + /** + * @desc The invocation of this function will initialize + * a string stack to an empty string stack. + * An alternative is to initlialize a stack using a + * constant value. + * @see LibCommon_AbstractData.c_initStringStack + * @param p_stack String stack to be initialized. + */ + function f_initStringStack ( inout StringStack p_stack ) { + p_stack := c_initStringStack + } + + /** + * @desc This function checks if a string stack is empty. + * @param p_stack String stack to be checked. + * @return true if empty, false if not empty + */ + function f_isStringStackEmpty ( inout StringStack p_stack ) + return boolean { + if ( p_stack.stackSize == 0 ) {return true} + else {return false} + } + + /** + * @desc This function checks if a given string is on the + * string stack. + * @param p_stack String stack where the string item + * is to be looked for. + * @param p_item String to be checked for. + * @return true if found, false if not found + */ + function f_isItemOnStringStack ( inout StringStack p_stack, + in charstring p_item ) + return boolean { + var integer i; + for (i := 0; i < p_stack.stackSize; i := i+1 ) { + if ( p_stack.stringItems[i] == p_item ) { + return true; + } + } + return false; + } + + /** + * @desc This function checks if a given string is on the + * string stack. + * @param p_stack String stack where the string item + * is to be looked for. + * @param p_item String item on top of the stack. + * @return false if stack is empty, true otherwise + */ + function f_peekStringStackTop ( inout StringStack p_stack, + out charstring p_item) + return boolean { + if (p_stack.stackSize == 0) { + p_item := "f_peekTopStringStack: String stack is empty!"; + return false; + } + p_item := valueof(p_stack.stringItems[p_stack.stackSize-1]); + return true; + } + + + /** + * @desc This function puts a string to the top of a + * string stack. + * @param p_stack String stack to which the string item + * is to be added. + * @param p_item String to be added. + */ + function f_pushStringStack ( inout StringStack p_stack, + in charstring p_item ) { + p_stack.stringItems[p_stack.stackSize] := p_item; + p_stack.stackSize := p_stack.stackSize + 1; + } + + /** + * @desc This function removes the string from the top of a + * string stack. If the stack is empty nothing is done + * @param p_stack String stack from which the top string item + * is to be removed. + */ + function f_popStringStack ( inout StringStack p_stack ) { + if ( p_stack.stackSize > 0 ) { + p_stack.stackSize := p_stack.stackSize-1; + // "delete" top stack item to be safe + // Note: due to record of index the "old top" is size-1! + p_stack.stringItems[p_stack.stackSize] := ""; + } + } + + } // end group stringStack + +} // end module LibCommon_AbstractData diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9b5477d98b422df6a9051cfd7b589269cf553be3 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_BasicTypesAndValues.ttcn @@ -0,0 +1,247 @@ +/** + * @author ETSI + * @version $URL$ + * $Id$ + * @desc A collection of basic type and value definitions which may be + * useful in the implementation of any TTCN-3 test suite.

+ * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ + module LibCommon_BasicTypesAndValues { + + /** + * @remark Number in subtype name always indicates encoding length + * in _bits_ + */ + group unsignedIntegerDefintions { + + const integer c_uInt1Max := 1; + const integer c_uInt2Max := 3; + const integer c_uInt3Max := 7; + const integer c_uInt4Max := 15; + const integer c_uInt5Max := 31; + const integer c_uInt6Max := 63; + const integer c_uInt7Max := 127; + const integer c_uInt8Max := 255; + const integer c_uInt9Max := 511; + const integer c_uInt10Max := 1023; + const integer c_uInt11Max := 2047; + const integer c_uInt12Max := 4095; + const integer c_uInt13Max := 8191; + const integer c_uInt14Max := 16383; + const integer c_uInt15Max := 32767; + const integer c_uInt16Max := 65535; + const integer c_uInt17Max := 131071; + const integer c_uInt18Max := 262143; + const integer c_uInt19Max := 524287; + const integer c_uInt20Max := 1048575; + const integer c_uInt21Max := 2097151; + const integer c_uInt22Max := 4194303; + const integer c_uInt23Max := 8388607; + const integer c_uInt24Max := 16777215; + const integer c_uInt25Max := 33554431; + const integer c_uInt26Max := 67108863; + const integer c_uInt27Max := 134217727; + const integer c_uInt28Max := 268435456; + const integer c_uInt29Max := 536870911; + const integer c_uInt30Max := 1073741823; + const integer c_uInt31Max := 2147483647; + const integer c_uInt32Max := 4294967295; + const integer c_uInt36Max := 68719476735; + const integer c_uInt48Max := 281474976710655; + const integer c_uInt52Max := 4503599627370495; + const integer c_uInt64Max := 18446744073709551615; + + type integer UInt (0 .. infinity); + type integer UInt1 (0 .. c_uInt1Max) with {variant "unsigned 1 bit"}; + type integer UInt2 (0 .. c_uInt2Max) with {variant "unsigned 2 bit"}; + type integer UInt3 (0 .. c_uInt3Max) with {variant "unsigned 3 bit"}; + type integer UInt4 (0 .. c_uInt4Max) with {variant "unsigned 4 bit"}; + type integer UInt5 (0 .. c_uInt5Max) with {variant "unsigned 5 bit"}; + type integer UInt6 (0 .. c_uInt6Max) with {variant "unsigned 6 bit"}; + type integer UInt7 (0 .. c_uInt7Max) with {variant "unsigned 7 bit"}; + type integer UInt8 (0 .. c_uInt8Max) with {variant "unsigned 8 bit"}; + type integer UInt9 (0 .. c_uInt9Max) with {variant "unsigned 9 bit"}; + type integer UInt10 (0 .. c_uInt10Max) with {variant "unsigned 10 bit"}; + type integer UInt11 (0 .. c_uInt11Max) with {variant "unsigned 11 bit"}; + type integer UInt12 (0 .. c_uInt12Max) with {variant "unsigned 12 bit"}; + type integer UInt13 (0 .. c_uInt13Max) with {variant "unsigned 13 bit"}; + type integer UInt14 (0 .. c_uInt14Max) with {variant "unsigned 14 bit"}; + type integer UInt15 (0 .. c_uInt15Max) with {variant "unsigned 15 bit"}; + type integer UInt16 (0 .. c_uInt16Max) with {variant "unsigned 16 bit"}; + type integer UInt17 (0 .. c_uInt17Max) with {variant "unsigned 17 bit"}; + type integer UInt18 (0 .. c_uInt18Max) with {variant "unsigned 18 bit"}; + type integer UInt19 (0 .. c_uInt19Max) with {variant "unsigned 19 bit"}; + type integer UInt20 (0 .. c_uInt20Max) with {variant "unsigned 20 bit"}; + type integer UInt21 (0 .. c_uInt21Max) with {variant "unsigned 21 bit"}; + type integer UInt22 (0 .. c_uInt22Max) with {variant "unsigned 22 bit"}; + type integer UInt23 (0 .. c_uInt23Max) with {variant "unsigned 23 bit"}; + type integer UInt24 (0 .. c_uInt24Max) with {variant "unsigned 24 bit"}; + type integer UInt25 (0 .. c_uInt25Max) with {variant "unsigned 25 bit"}; + type integer UInt26 (0 .. c_uInt26Max) with {variant "unsigned 26 bit"}; + type integer UInt27 (0 .. c_uInt27Max) with {variant "unsigned 27 bit"}; + type integer UInt28 (0 .. c_uInt28Max) with {variant "unsigned 28 bit"}; + type integer UInt29 (0 .. c_uInt29Max) with {variant "unsigned 29 bit"}; + type integer UInt30 (0 .. c_uInt30Max) with {variant "unsigned 30 bit"}; + type integer UInt31 (0 .. c_uInt31Max) with {variant "unsigned 31 bit"}; + type integer UInt32 (0 .. c_uInt32Max) with {variant "unsigned 32 bit"}; + type integer UInt36 (0 .. c_uInt36Max) with {variant "unsigned 36 bit"}; + type integer UInt48 (0 .. c_uInt48Max) with {variant "unsigned 48 bit"}; + type integer UInt52 (0 .. c_uInt52Max) with {variant "unsigned 52 bit"}; + type integer UInt64 (0 .. c_uInt64Max) with {variant "unsigned 64 bit"}; + + } // end group unsignedIntegerDefintions + + /** + * @remark Number in subtype name always indicates encoding length + * in _bits_ + */ + group signedIntegerDefintions { + + const integer c_int1Min := -1; + const integer c_int1Max := 0; + const integer c_int2Min := -2; + const integer c_int2Max := 1; + const integer c_int3Min := -4; + const integer c_int3Max := 3; + const integer c_int4Min := -8; + const integer c_int4Max := 7; + const integer c_int5Min := -16; + const integer c_int5Max := 15; + const integer c_int6Min := -32; + const integer c_int6Max := 31; + const integer c_int7Min := -64; + const integer c_int7Max := 63; + const integer c_int8Min := -128; + const integer c_int8Max := 127; + const integer c_int9Min := -256; + const integer c_int9Max := 255; + const integer c_int10Min := -512; + const integer c_int10Max := 511; + const integer c_int11Min := -1024; + const integer c_int11Max := 1023; + const integer c_int12Min := -2048; + const integer c_int12Max := 2047; + const integer c_int13Min := -4096; + const integer c_int13Max := 4095; + const integer c_int14Min := -8192; + const integer c_int14Max := 8191; + const integer c_int15Min := -16384; + const integer c_int15Max := 16383; + const integer c_int16Min := -32768; + const integer c_int16Max := 32767; + const integer c_int17Min := -65536; + const integer c_int17Max := 65535; + const integer c_int18Min := -131072; + const integer c_int18Max := 131071; + const integer c_int19Min := -262144; + const integer c_int19Max := 262143; + const integer c_int20Min := -524288; + const integer c_int20Max := 524287; + const integer c_int21Min := -1048576; + const integer c_int21Max := 1048575; + const integer c_int22Min := -2097152; + const integer c_int22Max := 2097151; + const integer c_int23Min := -4194304; + const integer c_int23Max := 4194303; + const integer c_int24Min := -8388608; + const integer c_int24Max := 8388607; + const integer c_int25Min := -16777216; + const integer c_int25Max := 16777215; + const integer c_int26Min := -33554432; + const integer c_int26Max := 33554431; + const integer c_int27Min := -67108864; + const integer c_int27Max := 67108863; + const integer c_int28Min := -134217728; + const integer c_int28Max := 134217727; + const integer c_int29Min := -268435456; + const integer c_int29Max := 268435456; + const integer c_int30Min := -536870912; + const integer c_int30Max := 536870911; + const integer c_int31Min := -1073741824; + const integer c_int31Max := 1073741823; + const integer c_int32Min := -2147483648; + const integer c_int32Max := 2147483647; + + type integer Int; + type integer Int1 (c_int1Min .. c_int1Max) with { variant "1 bit"}; + type integer Int2 (c_int2Min .. c_int2Max) with { variant "2 bit"}; + type integer Int3 (c_int3Min .. c_int3Max) with { variant "3 bit"}; + type integer Int4 (c_int4Min .. c_int4Max) with { variant "4 bit"}; + type integer Int5 (c_int5Min .. c_int5Max) with { variant "5 bit"}; + type integer Int6 (c_int6Min .. c_int6Max) with { variant "6 bit"}; + type integer Int7 (c_int7Min .. c_int7Max) with { variant "7 bit"}; + type integer Int8 (c_int8Min .. c_int8Max) with { variant "8 bit"}; + type integer Int9 (c_int9Min .. c_int9Max) with { variant "9 bit"}; + type integer Int10 (c_int10Min .. c_int10Max) with { variant "10 bit"}; + type integer Int11 (c_int11Min .. c_int11Max) with { variant "11 bit"}; + type integer Int12 (c_int12Min .. c_int12Max) with { variant "12 bit"}; + type integer Int13 (c_int13Min .. c_int13Max) with { variant "13 bit"}; + type integer Int14 (c_int14Min .. c_int14Max) with { variant "14 bit"}; + type integer Int15 (c_int15Min .. c_int15Max) with { variant "15 bit"}; + type integer Int16 (c_int16Min .. c_int16Max) with { variant "16 bit"}; + type integer Int17 (c_int17Min .. c_int17Max) with { variant "17 bit"}; + type integer Int18 (c_int18Min .. c_int18Max) with { variant "18 bit"}; + type integer Int19 (c_int19Min .. c_int19Max) with { variant "19 bit"}; + type integer Int20 (c_int20Min .. c_int20Max) with { variant "20 bit"}; + type integer Int21 (c_int21Min .. c_int21Max) with { variant "21 bit"}; + type integer Int22 (c_int22Min .. c_int22Max) with { variant "22 bit"}; + type integer Int23 (c_int23Min .. c_int23Max) with { variant "23 bit"}; + type integer Int24 (c_int24Min .. c_int24Max) with { variant "24 bit"}; + type integer Int25 (c_int25Min .. c_int25Max) with { variant "25 bit"}; + type integer Int26 (c_int26Min .. c_int26Max) with { variant "26 bit"}; + type integer Int27 (c_int27Min .. c_int27Max) with { variant "27 bit"}; + type integer Int28 (c_int28Min .. c_int28Max) with { variant "28 bit"}; + type integer Int29 (c_int29Min .. c_int29Max) with { variant "29 bit"}; + type integer Int30 (c_int30Min .. c_int30Max) with { variant "30 bit"}; + type integer Int31 (c_int31Min .. c_int31Max) with { variant "31 bit"}; + type integer Int32 (c_int32Min .. c_int32Max) with { variant "32 bit"}; + + } // end group signedIntegerDefintions + + group zeroedIntegers { + + const UInt1 c_uInt1Zero := 0; + const UInt2 c_uInt2Zero := 0; + const UInt3 c_uInt3Zero := 0; + const UInt4 c_uInt4Zero := 0; + const UInt5 c_uInt5Zero := 0; + const UInt6 c_uInt6Zero := 0; + const UInt7 c_uInt7Zero := 0; + const UInt8 c_uInt8Zero := 0; + const UInt10 c_uInt10Zero := 0; + const UInt12 c_uInt12Zero := 0; + const UInt14 c_uInt14Zero := 0; + const UInt16 c_uInt16Zero := 0; + const UInt24 c_uInt24Zero := 0; + const UInt32 c_uInt32Zero := 0; + const UInt48 c_uInt48Zero := 0; + + }//end group zeroedInt + + /** + * @remark Number in subtype name always indicates encoding length + * in _bits_ + */ + group booleanDefintions { + + type boolean Bool1 with { variant "1 bit" }; + type boolean Bool2 with { variant "2 bit" }; + type boolean Bool3 with { variant "3 bit" }; + type boolean Bool4 with { variant "4 bit" }; + type boolean Bool5 with { variant "5 bit" }; + type boolean Bool6 with { variant "6 bit" }; + type boolean Bool7 with { variant "7 bit" }; + type boolean Bool8 with { variant "8 bit" }; + + } // end group booleanDefintions + +} // end module LibCommon_BasicTypesAndValues diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9bfbe61a78b4cb161929cae010cf34f510d97e00 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_DataStrings.ttcn @@ -0,0 +1,168 @@ +/** + * + * @author ETSI + * @version $URL$ + * $Id$ + * @desc A collection of data string type and value definitions which + * may be useful in the implementation of any TTCN-3 test + * suite. "Data string" refers to TTCN-3 hexstring, octetstring + * and bitstring types. + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ + module LibCommon_DataStrings { + + /** + * @remark Number in name indicates string length in number of + * _bits_ + */ + group bitStringSubTypes { + + type bitstring Bit1 length(1) with {encode "length(1)"}; + type bitstring Bit2 length(2) with {encode "length(2)"}; + type bitstring Bit3 length(3) with {encode "length(3)"}; + type bitstring Bit4 length(4) with {encode "length(4)"}; + type bitstring Bit5 length(5) with {encode "length(5)"}; + type bitstring Bit6 length(6) with {encode "length(6)"}; + type bitstring Bit7 length(7) with {encode "length(7)"}; + type bitstring Bit8 length(8) with {encode "length(8)"}; + type bitstring Bit9 length(9) with {encode "length(9)"}; + type bitstring Bit10 length(10) with {encode "length(10)"}; + type bitstring Bit11 length(11) with {encode "length(11)"}; + type bitstring Bit12 length(12) with {encode "length(12)"}; + type bitstring Bit13 length(13) with {encode "length(13)"}; + type bitstring Bit14 length(14) with {encode "length(14)"}; + type bitstring Bit15 length(15) with {encode "length(15)"}; + type bitstring Bit16 length(16) with {encode "length(16)"}; + type bitstring Bit17 length(17) with {encode "length(17)"}; + type bitstring Bit18 length(18) with {encode "length(18)"}; + type bitstring Bit19 length(19) with {encode "length(19)"}; + type bitstring Bit20 length(20) with {encode "length(20)"}; + type bitstring Bit21 length(21) with {encode "length(21)"}; + type bitstring Bit22 length(22) with {encode "length(22)"}; + type bitstring Bit23 length(23) with {encode "length(23)"}; + type bitstring Bit24 length(24) with {encode "length(24)"}; + type bitstring Bit25 length(25) with {encode "length(25)"}; + type bitstring Bit26 length(26) with {encode "length(26)"}; + type bitstring Bit27 length(27) with {encode "length(27)"}; + type bitstring Bit28 length(28) with {encode "length(28)"}; + type bitstring Bit29 length(29) with {encode "length(29)"}; + type bitstring Bit30 length(30) with {encode "length(30)"}; + type bitstring Bit31 length(31) with {encode "length(31)"}; + type bitstring Bit32 length(32) with {encode "length(32)"}; + type bitstring Bit40 length(40) with {encode "length(40)"}; + + type bitstring Bit48 length(48) with {encode "length(48)"}; + type bitstring Bit64 length(64) with {encode "length(64)"}; + type bitstring Bit72 length(72) with {encode "length(72)"}; + type bitstring Bit128 length(128) with {encode "length(128)"}; + type bitstring Bit144 length(144) with {encode "length(144)"}; + type bitstring Bit256 length(256) with {encode "length(256)"}; + + } // end group bitStringSubTypes + + group zeroedBits { + + const Bit1 c_1ZeroBit := int2bit(0,1); + const Bit2 c_2ZeroBits := int2bit(0,2); + const Bit4 c_4ZeroBits := int2bit(0,4); + const Bit5 c_5ZeroBits := int2bit(0,5); + const Bit6 c_6ZeroBits := int2bit(0,6); + const Bit8 c_8ZeroBits := int2bit(0,8); + const Bit14 c_14ZeroBits := int2bit(0,14); + const Bit64 c_64ZeroBits := int2bit(0,64); + + }//end group zeroedBits + + /** + * @remark Number in name indicates string length in number of + * _octets_ + */ + group octetStringSubTypes { + + type octetstring Oct1 length(1) with {encode "length(1)"}; + type octetstring Oct2 length(2) with {encode "length(2)"}; + type octetstring Oct3 length(3) with {encode "length(3)"}; + type octetstring Oct4 length(4) with {encode "length(4)"}; + type octetstring Oct5 length(5) with {encode "length(5)"}; + type octetstring Oct6 length(6) with {encode "length(6)"}; + type octetstring Oct7 length(7) with {encode "length(7)"}; + type octetstring Oct8 length(8) with {encode "length(8)"}; + type octetstring Oct9 length(9) with {encode "length(9)"}; + type octetstring Oct10 length(10) with {encode "length(10)"}; + type octetstring Oct11 length(11) with {encode "length(11)"}; + type octetstring Oct12 length(12) with {encode "length(12)"}; + type octetstring Oct13 length(13) with {encode "length(13)"}; + type octetstring Oct14 length(14) with {encode "length(14)"}; + type octetstring Oct15 length(15) with {encode "length(15)"}; + type octetstring Oct16 length(16) with {encode "length(16)"}; + + type octetstring Oct20 length(20) with {encode "length(20)"}; + type octetstring Oct32 length(32) with {encode "length(32)"}; + type octetstring Oct48 length(48) with {encode "length(48)"}; + type octetstring Oct64 length(64) with {encode "length(64)"}; + type octetstring Oct80 length(80) with {encode "length(80)"}; + type octetstring Oct96 length(96) with {encode "length(96)"}; + type octetstring Oct128 length(128) with {encode "length(128)"}; + type octetstring Oct160 length(160) with {encode "length(160)"}; + type octetstring Oct320 length(320) with {encode "length(320)"}; + type octetstring Oct640 length(640) with {encode "length(640)"}; + type octetstring Oct1280 length(1280) with {encode "length(1280)"}; + type octetstring Oct1380 length(1380) with {encode "length(1380)"}; + + type octetstring Oct0to3 length(0..3) with {encode "length(0..3)"}; + type octetstring Oct0to8 length(0..16) with {encode "length(0..8)"}; + type octetstring Oct0to12 length(0..12) with {encode "length(0..12)"}; + type octetstring Oct0to16 length(0..16) with {encode "length(0..16)"}; + type octetstring Oct0to31 length(0..31) with {encode "length(0..31)"}; + type octetstring Oct0to20 length(0..20) with {encode "length(0..20)"}; + type octetstring Oct0to30 length(0..20) with {encode "length(0..30)"}; + type octetstring Oct0to127 length(0..127) with {encode "length(0..127)"}; + type octetstring Oct0to255 length(0..255) with {encode "length(0..255)"}; + + type octetstring Oct1to15 length(1..15) with {encode "length(1..15)"}; + type octetstring Oct1to31 length(1..31) with {encode "length(1..31)"}; + type octetstring Oct1to128 length(1..128) with {encode "length(1..128)"}; + type octetstring Oct1to254 length(1..254) with {encode "length(1..254)"}; + type octetstring Oct1to255 length(1..255) with {encode "length(1..255)"}; + + type octetstring Oct4to16 length(4..16) with {encode "length(4..16)"}; + type octetstring Oct6to15 length(6..15) with {encode "length(6..15)"}; + + } // end group octetStringSubTypes + + group zeroedBytes { + const Oct1 c_1ZeroByte := int2oct(0,1); + const Oct2 c_2ZeroBytes := int2oct(0,2); + const Oct4 c_4ZeroBytes := int2oct(0,4); + const Oct6 c_6ZeroBytes := int2oct(0,6); + const Oct8 c_8ZeroBytes := int2oct(0,8); + const Oct9 c_9ZeroBytes := int2oct(0,9); + const Oct12 c_12ZeroBytes := int2oct(0,12); + const Oct16 c_16ZeroBytes := int2oct(0,16); + const Oct20 c_20ZeroBytes := int2oct(0,20); + + const Oct80 c_80ZeroBytes := int2oct(0,80); + const Oct160 c_160ZeroBytes := int2oct(0,160); + const Oct320 c_320ZeroBytes := int2oct(0,320); + const Oct640 c_640ZeroBytes := int2oct(0,640); + const Oct1280 c_1280ZeroBytes := int2oct(0,1280); + const Oct1380 c_1380ZeroBytes := int2oct(0,1380); + const octetstring c_256ZeroBytes := int2oct(0,256); + const octetstring c_1KZeroBytes := int2oct(0,1024); + const octetstring c_4KZeroBytes := int2oct(0,4096); + const octetstring c_16KZeroBytes := int2oct(0,16384); + const octetstring c_64KZeroBytes := int2oct(0,65536); + const octetstring c_128KZeroBytes := int2oct(0,131072); + + }//end group zeroedBytes + +} // end module LibCommon_DataStrings diff --git a/ttcn/patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn b/ttcn/patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eb11aef6902e2e36bf670457b6d30362093def84 --- /dev/null +++ b/ttcn/patch_lib_common_titan/ttcn/LibCommon_Sync.ttcn @@ -0,0 +1,1360 @@ +/** + * @author ETSI + * @version $URL$ + * $Id$ + * @desc This module implements _one_ generic synchronization mechanism + * for TTCN-3 test cases with one or more test components. + * Key concept is here that one test component acts as a + * synchronization server which listens and triggers one or more + * synchronization clients. It is recomended to use the MTC always as + * the synchronization server but in theory also a PTC can act as such + * a server.

+ * This synchronization is used by calling a function on + * the server test component to wait for a desired amount of clients + * to notify the server that they have reached a specific synchronization + * point. Each client test component must call another + * function to perform this notification.

+ * In the event that a client is not able to reach a synchronization + * point the server sends out a signal to all clients to abort the + * test case. This signal is a STOP message which can be caught by + * a test component default which in turn can then run a proper + * shut down behavior based on the current state of the test + * component.

+ * Note that this synchronization mechanism can also be used + * in a special mode called "self synchronization" when a test case + * only has one test component. Here, the test component in essence + * acts as a server and client at the same time. The main benefit of + * using self synchoronization is that the same shutdown mechanisms + * can also be reused fomr the multi component test cases.

+ * This module contains a lot of TTCN-3 definitions. It has been + * structured into tree main groups to help the user to identify + * quickly relevant TTCN-3 definitions. For rookie users of this + * module basicUserRelevantDefinitions should offer all the needed + * definitions. Advanced users can consider use of definitions in + * advancedUserRelevantDefinitions. Finally, internalDefinitions + * are definitions which are required for the module to work + * properly but do not need to be used in your code. Remember that + * the main motiviation of this sychronization module is to offer + * are _simple_ user interface. Practice has shown that when writing + * actual test component behavior _only a handful_ of functions + * usually wind up being used! Also check the synchronization examples + * module for example uses of this synchronization mechanism.

+ * The invocation of the sync functions is also closely tied + * to the verdict control functions which should also be reviewed + * prior to using this module.

+ * This module has been derived from EtsiCommon_Synchronization + * which was created in ETSIs STF256/276. It has been kept + * intentionally separate to avoid conflicts with future ETSI + * test suite releases. + * @see LibCommon_Sync.basicUserRelevantDefinitions + * @see LibCommon_Sync.advancedUserRelevantDefinitions + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module LibCommon_Sync { + + //Common + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_AbstractData all; + import from LibCommon_VerdictControl all; + + group basicUserRelevantDefinitions { + + group importantSyncTypeDefinitions { + + group compTypeRelated { + + /** + * @desc This type is used to be the base of any synchronization + * behavior which is to be executed on a sync server + * component. The test component which acts as a + * sync server in a test case must NOT directly use + * this component type in its runs on clause! + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component BaseSyncComp { + port SyncPort syncPort; + timer tc_sync := PX_TSYNC_TIME_LIMIT; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is to be executed on a sync server + * component. The test component which acts as a + * sync server in a test case may - but does + * not have to - directly use this component type its + * runs on clause. + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component ServerSyncComp extends BaseSyncComp { + timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is to be executed on a sync client + * component. The test component(s) which act as a + * sync client in a test case may - but do not have + * to - directly use this component type their runs + * on clause. + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component ClientSyncComp extends BaseSyncComp { + var StringStack v_stateStack:= c_initStringStack; + var TestcaseStep vc_testcaseStep := e_preamble; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is relevant to non-concurrent test + * cases. + * Note that self synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + * Note also that this type is type compatible to the + * ClientSyncComp type so that shutdown altsteps from + * concurrent test cases can also be reused in single + * component test cases! + * @see LibCommon_Sync.ClientSyncComp + */ + type component SelfSyncComp extends ClientSyncComp { + port SyncPort syncSendPort; + } + + /** + * @desc This port type must be imported into test suites + * when defining test component types which are + * type compatible to a synchronization component + * type + * @see LibCommon_Sync.SelfSyncComp + * @see LibCommon_Sync.ServerSyncComp + * @see LibCommon_Sync.ClientSyncComp + */ + type port SyncPort message { + inout SyncCmd + } with { + extension "internal" + } + + + /** + * @desc Describes in which step of execution is the testcase + */ + type enumerated TestcaseStep { + e_preamble, + e_testBody, + e_postamble + } + + } // end compTypeRelated + + group standardSyncPointNames { + const charstring c_prDone := "preambleDone"; + const charstring c_poDone := "postambleDone"; + const charstring c_tbDone := "testBodyDone"; + const charstring c_initDone := "initDone"; + } + + } // end group importantSyncTypeDefinitions + + group syncCompTestConfiguration { + + /** + * @desc Calls self connect function if invoking + * component is the MTC or otherwise connects the client + * the server. This function allows to implement preambles + * in a way that they can be used by test components + * in both non-concurrent as well as concurrent test + * cases! + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_connect4ClientSync + * should be used instead. + * @see LibCommon_Sync.f_connect4SelfSync + * @see LibCommon_Sync.f_connect4ClientSync + */ + function f_connect4SelfOrClientSync() + runs on SelfSyncComp { + if ( self == mtc ) { + f_connect4SelfSync(); + } else { + f_connect4ClientSync(); + } + } + + /** + * @desc Calls self connect function if the invoking + * component is the MTC or otherwise disconnects the client + * from the server. This function allows to implement + * postambles in a way that they can be used in both + * non-concurrent as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_disconnect4ClientSync + * should be used instead. + * @see LibCommon_Sync.f_disconnect4SelfSync + * @see LibCommon_Sync.f_disconnect4ClientSync + */ + function f_disconnect4SelfOrClientSync() + runs on SelfSyncComp { + if ( self == mtc ) { + f_disconnect4SelfSync(); + } else { + f_disconnect4ClientSync(); + } + } + + } // end group syncCompTestConfiguration + + group syncFunctions { + + /** + * @desc Implements synchronization of 2 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync2ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(2, p_syncPointIds); + } + + /** + * @desc Implements synchronization of 3 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync3ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(3, p_syncPointIds); + } + + /** + * @desc Implements synchronization of 4 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync4ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(4, p_syncPointIds); + } + + /** + * @desc Implements synchronization of N clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_numClients number of synchronization clients + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSyncNClientsAndStop ( + in UInt p_numClients, + in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed ( + p_numClients, + valueof(p_syncPointIds[i]), + PX_TSYNC_TIME_LIMIT ); + } + f_serverWaitForAllClientsToStop(); + } + + /** + * @desc Implements synchronization of 2 clients and 1 UT from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync2ClientsUtAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(3,valueof(p_syncPointIds[i]), PX_TSYNC_TIME_LIMIT); + } + f_serverWaitForAllClientsToStop(); + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets the verdict based on the specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdict + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdict + */ + function f_selfOrClientSyncAndVerdict( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdict(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdict(p_syncPoint, p_ret); + } + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets a preamble specific verdict based on the + * specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdictPreamble + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdictPreamble + */ + function f_selfOrClientSyncAndVerdictPreamble( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdictPreamble(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdictPreamble(p_syncPoint, p_ret); + } + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets a preamble specific verdict based on the + * specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdictTestBody + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdictPreamble + */ + function f_selfOrClientSyncAndVerdictTestBody( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdictTestBody(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdictTestBody(p_syncPoint, p_ret); + } + } + + /** + * @desc Function kept for backward compatibility + * @see f_selfOrClientSyncAndVerdictPreamble + * + */ + function f_selfOrClientSyncAndVerdictPR( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + f_selfOrClientSyncAndVerdictPreamble(p_syncPoint, p_ret); + } + + } // end group syncFunctions + + group syncCompStateHandling { + + /** + * + * @desc This function updates the state (stack) of a + * sync client or self sync component. This stack is + * key in the shutdown handling of test components. + * It adds the new state name to the top of the + * sync component stack of states. + * The state will only be added in case of a current + * execution status of e_success. + * @param p_newSyncCompState Name of state which was attempted to be reached. + * @param p_ret Current behavior execution status + * @remark If the state of component changes this function must be + * _at least_ called from your test suite prior to f_selfSync + * or f_clientSync which is the only definite place for the + * shutdown default invocation! + * @see LibCommon_Sync.a_dummyShutDown + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_clientSync + */ + function f_addSyncCompState(in charstring p_newSyncCompState, + in FncRetCode p_ret) + runs on ClientSyncComp { + if ( p_ret == e_success ) { + if ( f_isItemOnStringStack(v_stateStack,p_newSyncCompState) ) { + log("**** f_addSyncCompState: WARNING: Attempt to add state which is already on sync state stack! No additition done.****"); + } else { + f_pushStringStack(v_stateStack,p_newSyncCompState); + } + } + } // end function f_addSyncCompState + + /** + * + * @desc This function returns the top state on the sync + * state stack of a sync client or self sync + * component and removes it from the stack + * This function cna be used, e.g., in a while + * statement within a postamble or shutdown + * implementation + * @param p_state State on top of the state stack. + * @return false if state stack is empty, true otherwise + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_getTopSyncCompState( out charstring p_state ) + runs on ClientSyncComp + return boolean { + if ( not f_peekStringStackTop(v_stateStack,p_state) ) { + p_state := "IDLE"; + return false; + } + f_popStringStack(v_stateStack); + return true; + } // end function f_getTopSyncCompState + + /* + * @desc This function removes the last state on the state stack + * of a sync client or self sync component. + * This stack is key in the shutdown handling of test + * components. + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_popSyncCompState() + runs on ClientSyncComp { + f_popStringStack(v_stateStack); + } // end function f_popSyncCompState + + /** + * + * @desc This function returns the top state on the sync state + * stack of a sync client or self sync component. It + * does not remove it from the stack + * This stack is key in the shutdown handling of test + * components. + * @param p_state State on top of the state stack. + * @return false if state stack is empty, true otherwise + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_peekTopSyncCompState(out charstring p_state) + runs on ClientSyncComp + return boolean { + return f_peekStringStackTop(v_stateStack,p_state); + } // end function f_peekTopSyncCompState + + /** + * @desc This function checks if the sync state stack + * of a sync client or self sync component is empty. + * This stack is key in the shutdown handling of test + * components. + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_isSyncCompStateStackEmpty() + runs on ClientSyncComp + return boolean { + return f_isStringStackEmpty(v_stateStack); + } // end function f_isSyncCompStateStackEmpty + + } // end group syncCompStateHandling + + group shutDownAltsteps { + + /** + * @desc This is an example of a shutdown altstep which can be + * used as a "template" for a interface specific shutdown + * altstep or possily as a first temporary solution in + * test case development.

+ * This altstep shall be activated as a default as the + * first statement in each test case function which drives + * an interface, i.e., in MTC behavior of single component + * and in each client behavior of multi component test + * cases.
+ * The required behavior from this altstep is to:

+ * 1) expect the STOP either via the test component + * syncPort

+ * 2) upon its arrival it should shut down the SUT + * gracefully based on the current component state

+ * The current component state should have been + * previously kept uptodate from a test suite via the + * f_addSyncCompState function. This default will then be + * (automatically) invoked either from within f_selfSync + * or f_clientSync.
+ * Note that shutdown defaults can be written as + * _interface specific_ - they do not need to be test case + * or test component specific! See another example of a + * shutdown altstep in the sync module. + * @see LibCommon_Sync.f_addSyncCompState + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_SyncExamples.a_exampleShutDown + * @remark Your application specific shutdown altstep + * implementation(s) should _not_ be defined in this + * module but as part of your test suite or application specific + * modules. + */ + altstep a_dummyShutDown() + runs on SelfSyncComp { + [] syncPort.receive(m_syncServerStop){ + var charstring v_state := ""; + tc_sync.stop; + log("**** a_dummyShutDown: Test component received STOP signal from sync server - going to IDLE state ****"); + while ( f_getTopSyncCompState(v_state) ) { + if ( v_state == "x" ) { + // then do something + } else if ( v_state == "y" ) { + // then do something else + } + } // end while + f_disconnect4SelfOrClientSync(); + // unmap/disconnect more if needed + log("**** a_dummyShutDown: -> Test component stopping itself now! ****") ; + stop ; + } + } // end altstep a_dummyShutDown + + /** + * @desc Shutdown alstep in case the sync server is requesting shutdown. + * + * @remark User shall stop the component + */ + altstep a_shutdown() + runs on BaseSyncComp { + [] syncPort.receive(m_syncServerStop){ + tc_sync.stop ; + log("**** a_shutdown: Test component received STOP signal from MTC **** "); + } + } + + } // end group shutDownAltsteps + + } // end group basicUserRelevantDefinitions + + group advancedUserRelevantDefinitions { + + group serverRelated { + + /** + * @desc Implements synchronization of "n" clients from server + * side. If a problem occurs, then server sends STOP to + * all clients. Waits for PX_TSYNC_TIME_LIMIT to let + * clients finish executing their behavior until this + * synchronization point. See f_serverSyncClientsTimed for + * overwriting this later timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync port! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @param p_noOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + */ + function f_serverSyncClients( in UInt p_noOfClients, in charstring p_syncId ) + runs on ServerSyncComp { + f_serverSyncClientsTimed(p_noOfClients,p_syncId, PX_TSYNC_TIME_LIMIT); + } + + /** + * @desc Implements synchronization of "n" clients from server + * side including intermediate synchronization. + * If a problem occurs, then server sends STOP to + * all clients. Waits for PX_TSYNC_TIME_LIMIT to let + * clients finish executing their behavior until this + * synchronization point. See f_serverSyncClientsTimed for + * overwriting this later timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync port! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @param p_noOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + */ + function f_serverSyncClientsIntermediateSync( in UInt p_noOfClients, in charstring p_syncId, in UInt p_NoOfClientIntermediate, in template (present) charstring p_syncIdIntermediate ) + runs on ServerSyncComp { + f_serverSyncClientsTimedIntermediateSync(p_noOfClients,p_syncId, p_NoOfClientIntermediate, p_syncIdIntermediate, PX_TSYNC_TIME_LIMIT); + } + + /** + * @desc Handles synchronization of clients from server side. + * If problem occurs, then server sends STOP to all clients. + * This function sets the server verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_NoOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + * @param p_execTimeLimit time limit given to all clients to finish the execution + * of their behavior up to this synchronization point + * @see LibCommon_Sync.f_connect4SelfOrClientSync + */ + function f_serverSyncClientsTimed(in UInt p_NoOfClients, + in charstring p_syncId, + float p_execTimeLimit ) + runs on ServerSyncComp { + f_serverSyncClientsTimedIntermediateSync(p_NoOfClients, p_syncId, 0, ?, p_execTimeLimit ) + } // end function f_serverSyncClientsTimed + + /** @desc Handles synchronization of clients from server side including + * intermediate synchronization. + * If problem occurs, then server sends STOP to all clients. + * This function sets the server verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_NoOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + * @param p_execTimeLimit time limit given to all clients to finish the execution + * of their behavior up to this synchronization point + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @return execution status + */ + function f_serverSyncClientsTimedIntermediateSync( in UInt p_NoOfClients, + in charstring p_syncId, in UInt p_NoOfClientIntermediate, in template (present) charstring p_syncIdIntermediate, + float p_execTimeLimit ) + runs on ServerSyncComp { + + var integer v_noOfRecvdSyncMsgs := 0, v_noOfRecvdSyncMsgsIntermediate := 0; + var boolean v_stopClients := false; + var ClientSyncCompList v_clientRefs := {}, v_clientRefsIntermediate := {}; + var ClientSyncComp v_clientRef; + + if ( p_syncId == c_prDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting PREAMBLE synchronization ... ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting TEST BODY synchronization ... ****") ; + } else if ( p_syncId == c_initDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting UPPER TESTER synchronization ... ****") ; + } else { + log("**** f_serverSyncClientsTimed: Sync server now starting handling of " & p_syncId & " synchronization point ... ****") ; + } + tc_sync.start(p_execTimeLimit) ; + alt{ + [v_noOfRecvdSyncMsgsIntermediate != p_NoOfClientIntermediate] syncPort.receive(m_syncClientReady(p_syncIdIntermediate)) -> sender v_clientRef { + if(not f_isPresentInArray(v_clientRef, v_clientRefsIntermediate)) { + v_clientRefsIntermediate[v_noOfRecvdSyncMsgsIntermediate] := v_clientRef; + v_noOfRecvdSyncMsgsIntermediate := v_noOfRecvdSyncMsgsIntermediate + 1; + if (v_noOfRecvdSyncMsgsIntermediate == p_NoOfClientIntermediate) { + f_serverSendToAllClients(v_clientRefsIntermediate, m_syncServerReady(p_syncIdIntermediate)); + } + } + repeat; + } + [] syncPort.receive(m_syncClientReady(p_syncId)) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received READY signal from a client - server will wait for all clients to reach this synchronization point ****"); + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + v_noOfRecvdSyncMsgs := v_noOfRecvdSyncMsgs + 1; + } + if ( v_noOfRecvdSyncMsgs != p_NoOfClients ) { repeat; } + } + [] syncPort.receive(m_syncClientStop) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received STOP signal from a client - server will wait for all clients to reach their next synchronization point and then stop them! ****") ; + v_stopClients := true; + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + v_noOfRecvdSyncMsgs := v_noOfRecvdSyncMsgs + 1; + } + if ( v_noOfRecvdSyncMsgs != p_NoOfClients ) { repeat; } + + } + [] syncPort.receive(m_syncClientReady(?)) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received client sync message with incorrect synchronization point id which is currently not handled - server will stop all clients! ****") ; + v_stopClients := true; + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + } + } + [] syncPort.receive(SyncCmd :? ) { + log("**** f_serverSyncClientsTimed: Sync server received (invalid) sync message from other sync server - server will stop all clients! ****") ; + v_stopClients := true; } + [] any port.receive { + // leave it to be ok to receive anything else + // in case that the user has added any non-sync ports to + // his/her server component type definition! + repeat; + } + [] tc_sync.timeout{ + log("**** f_serverSyncClientsTimed: A client is not responding within specified time limit - sync server is sending stop to all clients! ****"); + v_stopClients := true; } + } //end alt + if (v_noOfRecvdSyncMsgsIntermediate != p_NoOfClientIntermediate) { + v_stopClients := true; + } + tc_sync.stop ; + if ( v_stopClients ) { + setverdict(inconc); + // then send out STOP sync msg + f_serverSendToAllClients(v_clientRefs, m_syncServerStop); + f_serverWaitForAllClientsToShutDown(); // function will never return! + } else { + setverdict(pass); + // then send out READY sync msg + f_serverSendToAllClients(v_clientRefs, m_syncServerReady(p_syncId)); + if ( p_syncId == c_prDone ) { + log("**** f_serverSyncClientsTimed: Sync server successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_serverSyncClientsTimed: Sync server successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_serverSyncClientsTimed: Sync server successfully passed synchronization point. ****") ; + } + } + } // end function f_serverSyncClientsTimedIntermediateSync + + /** + * @desc This function is intended only for use on the sync + * server component in concurrent TTCN-3 test cases. + * It waits for all components to finish execution within + * the PX_TSYNC_TIME_LIMIT. If a timeout occurs + * the server will stop all clients. + * This function sets the server component verdict. + */ + function f_serverWaitForAllClientsToStop() + runs on ServerSyncComp { + tc_sync.start; + alt { + [] all component.done { + tc_sync.stop; + log("**** f_serverWaitForAllClientsToStop: All sync clients have finished their execution. Sync server now terminating test case. ****") ; + } + [] tc_sync.timeout { + log("**** f_serverWaitForAllClientsToStop: Not all sync clients have finshed execution within the sync time limit. Sync server will stop test case! ****") ; + stop; + } + } // end alt + setverdict(pass); + } // end function f_serverWaitForAllClientsToStop + + } // end group serverRelated + + group clientRelated { + + /** + * @desc This function creates the connection needed to + * execute client synchronization functions + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_Sync.f_clientSendStop + */ + function f_connect4ClientSync() + runs on ClientSyncComp { + connect(self:syncPort, mtc:syncPort); + }// end function f_connect4ClientSync + + /** + * @desc This function removes the connection needed + * to execute client synchronization functions + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_Sync.f_clientSendStop + */ + function f_disconnect4ClientSync() + runs on ClientSyncComp { + disconnect(self:syncPort, mtc:syncPort); + }// end function f_disconnect4ClientSync + + /** + * @desc This function combines client verdict setting with its + * synchronization for use,e.g, after or within a + * test body implementation. + * Note that such premables can _not_ be reused in non- + * concurrent test cases. This can be achieved by using + * the f_selfOrClientSyncAndVerdict function instead. + * This function sets the client component verdict. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfOrClientSyncAndVerdict + */ + function f_clientSyncAndVerdict(in charstring p_syncId, + in FncRetCode p_ret) + runs on ClientSyncComp { + if(vc_testcaseStep == e_preamble) { + f_clientSyncAndVerdictPreamble(p_syncId, p_ret); + } else if(vc_testcaseStep == e_testBody) { + f_clientSyncAndVerdictTestBody(p_syncId, p_ret); + } + else { + f_clientSyncAndVerdictPostamble(p_syncId, p_ret); + } + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use after or within a preamble + * implementation. + * Note that such preambles can _not_ be reused in non- + * concurrent test cases. + * This function sets the client component verdict. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdictPreamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + */ + function f_clientSyncAndVerdictPreamble(in charstring p_syncId , + FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdictPreamble(p_ret); + f_clientSync(p_syncId,p_ret); + vc_testcaseStep := e_testBody; + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use,e.g, after or within a + * test body implementation. + * Note that such premables can _not_ be reused in non- + * concurrent test cases. This can be achieved by using + * the f_selfOrClientSyncAndVerdict function instead. + * This function sets the client component verdict. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfOrClientSyncAndVerdict + */ + function f_clientSyncAndVerdictTestBody(in charstring p_syncId, + in FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdict(p_ret); + f_clientSync(p_syncId,p_ret); + vc_testcaseStep := e_postamble; + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use after or within a + * postamble implementation. + * Note that such prostambles can _not_ be reused in non- + * concurrent test cases. + * This function sets the client component verdict. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdictPostamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + */ + function f_clientSyncAndVerdictPostamble(in charstring p_syncId , + in FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdictPostamble(p_ret); + f_clientSync(p_syncId,p_ret); + } + + /** + * @desc This function handles synchronization of a sync client + * with the server. In case of successful execution it sends + * a READY message to the server and waits the READY back. + * The time used for waiting is defined by PX_TSYNC_TIME_LIMIT. + * In case of a non successful execution status it + * sends a STOP message to the server. + * In both cases the receipt of a STOP message or no + * response from the server it will trigger the shutdown + * default (if activated). + * This function will set only the client verdict to INCONC + * (and stop its execution) if no STOP response is received + * from the server within the PX_TSYNC_TIME_LIMIT + * or if no shutdown default is activated. In all other + * cases the client verdict is NOT set. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.a_dummyShutDown + * @see LibCommon_Sync.f_clientSendStop + * @return Updated execution status + */ + function f_clientSync( in charstring p_syncId , + in FncRetCode p_ret ) + runs on ClientSyncComp + return FncRetCode{ + + if (p_ret == e_success){ + syncPort.send(m_syncClientReady(p_syncId)); + tc_sync.start; + alt{ + [] syncPort.receive(m_syncServerReady(p_syncId)){ + tc_sync.stop ; } + [] tc_sync.timeout{ + log("**** f_clientSync: Sync client did not receive message from sync server within the specified time limit - sync client will ask sync server to stop test case! ****") ; + f_clientSendStop(); } // function will not return! + } //end alt + } //end if + else { + log("**** f_clientSync: Execution status indicates that execution of test component behavior was not successful - sync client will ask sync server to stop test case! ****") ; + f_clientSendStop(); // function will not return! + } + if ( p_syncId == c_prDone ) { + log("**** f_clientSync: Sync client successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_clientSync: Sync client successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_clientSync: Sync client successfully passed synchronization point. ****") ; + } + return e_success ; + + } // end function f_clientSync + + /** + * @desc This function can be used to request the shutdown a + * multi component test case _prior_ to reaching a + * synchronization point. It sends a STOP message to + * the sync server and awaits then the STOP from the server + * which will trigger the shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * This function will set only the client verdict to INCONC + * (and stop its execution) if no STOP response is received + * from the server within the PX_TSYNC_TIME_LIMIT + * or if no shutdown default is activated. In all other + * cases the client verdict is NOT set. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_clientSendStop() + runs on ClientSyncComp { + log("**** f_clientSendStop: Sync client requesting from server to stop test case (including itself). ****") ; + syncPort.send(m_syncClientStop) ; + tc_sync.start; + alt{ + [] tc_sync.timeout{ + log("**** f_clientSendStop: Stopping sync client without shutdown - either no shutdown default active or no stop received from server. ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // stop here if shutdown default does not stop + } + + } // end group clientRelated + + } // end group advancedUserRelevantDefinitions + + group otherSyncModuleDefinitions { + + group syncModuleparams { + /** + * + * @desc Default time limit for a sync client to reach a + * synchronization point + */ + modulepar float PX_TSYNC_TIME_LIMIT := 120.0; + + /* + * @desc Default time limit for a sync client to finish + * its execution of the shutdown default + */ + modulepar float PX_TSHUT_DOWN_TIME_LIMIT := 120.0; + } + + group otherSyncTypes { + + type record of charstring SyncPointList; + + type record of ClientSyncComp ClientSyncCompList; + + } // end group otherSyncTypes + + group otherSelfSyncRelatedDefinitions { + + /** + * @desc This function creates the connection needed to + * execute self sync functions + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_selfSyncStop + */ + function f_connect4SelfSync() + runs on SelfSyncComp { + connect(self:syncSendPort, self:syncPort); + }// end function f_connect4SelfSync + + /** + * @desc This function removes the connection needed + * to execute self sync functions + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_selfSyncStop + */ + function f_disconnect4SelfSync() + runs on SelfSyncComp { + disconnect(self:syncSendPort, self:syncPort); + }// end function f_disconnect4SelfSync + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use in the preamble / test body / postamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_selfSyncAndVerdict( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + if(vc_testcaseStep == e_preamble) { + f_selfSyncAndVerdictPreamble(p_syncId, p_ret); + } else if(vc_testcaseStep == e_testBody) { + f_selfSyncAndVerdictTestBody(p_syncId, p_ret); + } + else { + f_selfSyncAndVerdictPostamble(p_syncId, p_ret); + } + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the preamble. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdictPreamble + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictPreamble( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdictPreOrPostamble(p_ret); + f_selfSync(p_syncId,p_ret); + vc_testcaseStep := e_testBody; + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the test body. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictTestBody( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdict(p_ret); + f_selfSync(p_syncId,p_ret); + vc_testcaseStep := e_postamble; + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the postamble. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdictPostamble + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictPostamble( in charstring p_syncId , + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdictPreOrPostamble(p_ret); + f_selfSync(p_syncId,p_ret); + } + + /** + * @desc This function synchronizes a MTC with itself. In case + * of a non successful execution status it sends a STOP + * message to itself and invokes that way the + * shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * Otherwise no verdict is set. + * @remark Sync ports should be connected prior to the invocation + * of this function! + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @return Updated execution status + * @see LibCommon_Sync.f_connect4SelfSync + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_selfSync( in charstring p_syncId , + in FncRetCode p_ret ) + runs on SelfSyncComp + return FncRetCode{ + if (p_ret != e_success){ + f_selfSyncStop() ; // function will not return! + } + if ( p_syncId == c_prDone ) { + log("**** f_selfSync: Successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_selfSync: Successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_selfSync: Successfully passed synchronization point. ****") ; + } + return e_success ; + }// end function f_selfSync + + /** + * @desc This function can be used to shut down a test case _prior_ + * to reaching a synchronization point. it sends a STOP + * message to itself and invokes that way the + * shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * Otherwise no verdict is set. + * @remark Sync ports should be connected prior to the invocation + * of this function! + * @see LibCommon_Sync.f_connect4SelfSync + */ + function f_selfSyncStop() + runs on SelfSyncComp { + + log("**** f_selfSyncStop: MTC requests to stop test case (itself). ****") ; + syncSendPort.send(m_syncServerStop) ; // this MUST be _server_ for the default to catch! + tc_sync.start(PX_TSYNC_TIME_LIMIT); + alt{ + [] tc_sync.timeout{ + log("**** f_selfSyncStop: Stopping MTC without shutdown - either no shutdown default active or missing syncPort connection ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // if shutdown default is not activated or if it does not stop + } // end function f_selfSyncStop + + } // end group otherSelfSyncRelatedDefinitions + + /** + * + * @desc The sychronization protocol is conceptually based on + * named synchronization. Each synchronization point + * has it own specific synchronization message. This + * makes each synchronization unique, and allows, e.g., to + * ensure that a server synchronizes only clients which have + * reached the same synchronization point. + */ + group syncProtocolDefinition { + + type union SyncCmd { + ClientReady clientReady, + ServerReady serverReady, + ClientStop clientStop, + ServerStop serverStop + } + + type record ClientReady { + charstring syncPointId + } + + type record ServerReady { + charstring syncPointId + } + + type record ClientStop {} + + type record ServerStop {} + + } // end group syncProtocolDefinition + + group syncMessages { + template SyncCmd m_syncClientReady( template (present) charstring p_syncId ) := { + clientReady := { p_syncId } + } + + template SyncCmd m_syncServerReady( template (present) charstring p_syncId ) := { + serverReady := { p_syncId } + } + + template SyncCmd m_syncClientStop := { + clientStop := {} + } + + template SyncCmd m_syncServerStop := { + serverStop := {} + } + + } // end group syncMessages + + group otherSyncFunctions { + + /** + * @desc Makes server send a sync message to all known clients + * @param p_clientRefs List of client references to which the message is to be send + * @param p_syncCmd The actual synchronization message to be sent out + */ + function f_serverSendToAllClients( in ClientSyncCompList p_clientRefs, + in template (value) SyncCmd p_syncCmd) + runs on ServerSyncComp { + var integer i:=0; + for (i:=0; i< sizeof(p_clientRefs); i:=i+1 ){ + syncPort.send(p_syncCmd) to valueof(p_clientRefs[i]); + } + } // end function f_serverSendToAllClients + + /** + * @desc This function is intended only for use on server in concurrent + * TTCN-3 test cases. It waits for all components to shut down + * within the PX_TSHUT_DOWN_TIME_LIMIT. If a timeout occurs + * it aborts the test case (no matter how far clients got with their + * shutdown). + * This function sets the server verdict. + */ + function f_serverWaitForAllClientsToShutDown() + runs on ServerSyncComp { + + tc_shutDown.start(PX_TSHUT_DOWN_TIME_LIMIT); + alt { + [] syncPort.receive { + // clients may still try to send some sync message + } + [] all component.done { + tc_shutDown.stop; + log("**** f_serverWaitForAllClientsToShutDown: All components have properly shut down. Sync server will now terminate the test case. ****") ; + } + [] tc_shutDown.timeout { + log("**** f_serverWaitForAllClientsToShutDown: Not all clients have properly shutdown within the shut down time limit. Sync server will now terminate test case! ****") ; + } + } // end alt + // cover case that shut down default is NOT activated + setverdict(inconc); + //mtc.stop; + syncPort.send(m_syncServerStop) to self; // this MUST be _server_ for the default to catch! + tc_sync.start(PX_TSYNC_TIME_LIMIT); + alt{ + [] tc_sync.timeout{ + log("**** f_selfSyncStop: Stopping MTC without shutdown - either no shutdown default active or missing syncPort connection ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // if shutdown default is not activated or if it does not stop + } // end function f_serverWaitForAllClientsToShutDown + + function f_isPresentInArray(in ClientSyncComp p_clientRef, in ClientSyncCompList p_clientRefs) + return boolean { + var integer i; + for(i:=0; i < sizeof(p_clientRefs); i:=i+1) { + if(p_clientRefs[i] == p_clientRef) { + return true; + } + } + return false; + } + } // end group otherSyncFunctions + + } // end group otherSyncDefinitions + +} // end module LibCommon_Sync diff --git a/ttcn/patch_lib_http/module.mk b/ttcn/patch_lib_http/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..ceaa04582fa352e451df6613069cfb4a32faece4 --- /dev/null +++ b/ttcn/patch_lib_http/module.mk @@ -0,0 +1,6 @@ +sources := \ + ttcn/LibHttp_XmlMessageBodyTypes.ttcn \ + ttcn/LibHttp_XmlTemplates.ttcn \ + ttcn/LibHttp_JsonMessageBodyTypes.ttcn \ + ttcn/LibHttp_JsonTemplates.ttcn \ + diff --git a/ttcn/patch_lib_http/ttcn/LibHttp_JsonMessageBodyTypes.ttcn b/ttcn/patch_lib_http/ttcn/LibHttp_JsonMessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..37aae7bb755d0fccd32bfe372b320e6b98a17286 --- /dev/null +++ b/ttcn/patch_lib_http/ttcn/LibHttp_JsonMessageBodyTypes.ttcn @@ -0,0 +1,23 @@ +module LibHttp_JsonMessageBodyTypes { + + /** + * This file volontary contains a trivial declaration of the type JsonBody. + * In accordance with your TTCN-3 module LibHttp_JSONTypes, you have to change the JsonBody typing. + */ + // TODO Add here your custom RFCs import + import from LibCise_TypesAndValues all; + import from LibJrcSimu_TypesAndValues all; + + type union JsonBody { + // TODO Add here your custom variants + ProblemDetails problem_details, + UtDescription ut_trigger, + universal charstring raw + } with { + variant "" + } + +} with { + encode "JSON"; + variant "" +} // End of module LibHttp_JsonMessageBodyTypes diff --git a/ttcn/patch_lib_http/ttcn/LibHttp_JsonTemplates.ttcn b/ttcn/patch_lib_http/ttcn/LibHttp_JsonTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d98138b854244a7922b4e83bb43a7dc234c8de24 --- /dev/null +++ b/ttcn/patch_lib_http/ttcn/LibHttp_JsonTemplates.ttcn @@ -0,0 +1,36 @@ +module LibHttp_JsonTemplates { + + // LibHttp + import from LibHttp_JsonMessageBodyTypes all; + + // LibJrcSimu + import from LibJrcSimu_TypesAndValues all; + + // LibCise + import from LibCise_TypesAndValues all; + + template (value) JsonBody m_json_body_raw( + in template (value) charstring p_raw + ) := { + raw := p_raw + } // End of template m_json_body_raw + + template (present) JsonBody mw_json_body_raw( + template (present) charstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_json_body_raw + + template (present) JsonBody mw_body_json_problem_details( + template (present) ProblemDetails p_problem_details := ? + ) := { + problem_details := p_problem_details + } // End of template mw_body_json_problem_details + + template (value) JsonBody m_json_body_ut_trigger( + in template (value) UtDescription p_ut_trigger + ) := { + ut_trigger := p_ut_trigger + } // End of template m_json_body_ut_trigger + +} // End of module LibHttp_JsonTemplates \ No newline at end of file diff --git a/ttcn/patch_lib_http/ttcn/LibHttp_XmlMessageBodyTypes.ttcn b/ttcn/patch_lib_http/ttcn/LibHttp_XmlMessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c2eda101c1f9cfd6872f4b09622426aae7ec4370 --- /dev/null +++ b/ttcn/patch_lib_http/ttcn/LibHttp_XmlMessageBodyTypes.ttcn @@ -0,0 +1,30 @@ +module LibHttp_XmlMessageBodyTypes { + + /** + * This file volontary contains a trivial declaration of the type XmlBody. + * In accordance with your TTCN-3 module LibHttp_XMLTypes, you have to change the XmlBody typing. + */ + // TODO Add here your custom RFCs import + import from http_www_cise_eu_servicemodel_v1_message all; + + type union XmlBodyMsg { + // TODO Add here your custom variants + PullRequest pull_request, + PullResponse pull_response, + Acknowledgement acknowledgement, + Push push, + Feedback feedback, + charstring raw + } with { + variant "" + } + + type record XmlBody { + XmlBodyMsg msg, + charstring raw optional + } + +} with { + encode "XML"; + variant "" +} // End of LibHttp_XmlMessageBodyTypes diff --git a/ttcn/patch_lib_http/ttcn/LibHttp_XmlTemplates.ttcn b/ttcn/patch_lib_http/ttcn/LibHttp_XmlTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..abfb1752cafbe73a92df0ac85cef790a026daeca --- /dev/null +++ b/ttcn/patch_lib_http/ttcn/LibHttp_XmlTemplates.ttcn @@ -0,0 +1,767 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibHttp_XmlTemplates { + + // XSD + import from XSD all; + + // TODO Add here your custom RFCs import + import from http_www_cise_eu_servicemodel_v1_authority all; + import from http_www_cise_eu_servicemodel_v1_message all; + import from http_www_cise_eu_servicemodel_v1_service all; + import from http_www_cise_eu_datamodel_v1_entity_document all; + import from http_www_cise_eu_datamodel_v1_entity_action all; + import from http_www_cise_eu_datamodel_v1_entity_risk all; + import from http_www_cise_eu_datamodel_v1_entity_anomaly all; + import from http_www_cise_eu_datamodel_v1_entity_organization all; + import from http_www_cise_eu_datamodel_v1_entity_incident all; + import from http_www_cise_eu_datamodel_v1_entity_vessel all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + import from http_www_cise_eu_datamodel_v1_entity_uniqueidentifier all; + import from http_www_cise_eu_datamodel_v1_entity_object all; + import from http_www_cise_eu_datamodel_v1_entity_location all; + import from http_www_cise_eu_datamodel_v1_entity_metadata all; + import from http_www_cise_eu_datamodel_v1_entity_period all; + import from http_www_cise_eu_datamodel_v1_entity_agent all; + import from http_www_cise_eu_datamodel_v1_entity_event all; + import from http_www_cise_eu_datamodel_v1_entity_cargo all; + + // LibHttp + import from LibHttp_XmlMessageBodyTypes all; + import from LibHttp_XMLTypes all; + + template (value) XmlBody m_xml_body_raw( + in template (value) XmlBodyMsg p_msg, + in template (value) charstring p_raw + ) := { + msg := p_msg, + raw := p_raw + } // End of template m_xml_body_raw + + template (present) XmlBody mw_xml_body_raw( + template (present) XmlBodyMsg p_msg := ?, + template (present) charstring p_raw := ? + ) := { + msg := p_msg, + raw := p_raw + } // End of template mw_xml_body_raw + + group pull_request { + + template (omit) XmlBody m_xml_body_pull_request( + in template (value) PullRequest p_pull_request, + in template (omit) charstring p_raw := omit + ) := { + msg := { pull_request := p_pull_request }, + raw := p_raw + } // End of template m_xml_body_pull_request + + template (present) XmlBody mw_xml_body_pull_request( + template (present) PullRequest p_pull_request := ? + ) := { + msg := { pull_request := p_pull_request }, + raw := ? + } // End of template mw_xml_body_pull_request + + template (present) XmlBody mw_xml_body_pull_request_unsec( + template (present) PullRequest p_pull_request := ? + ) := { + msg := { pull_request := p_pull_request }, + raw := omit + } // End of template mw_xml_body_pull_request_unsec + + template (omit) PullRequest m_pull_request( + in template (value) XSD.DateTime p_creationDateTime, + in template (value) XSD.String p_messageID, + in template (value) PriorityType p_priority, + in template (value) Service_1 p_sender_, + in template (value) PullRequest.ccRecipients_list p_ccRecipients_list, + in template (value) PullType p_pullType, + in template (value) PullRequest.discoveryProfiles_list p_discoveryProfiles_list := {}, + in template (omit) XSD.String p_elem := omit, + in template (omit) XSD.Boolean p_incomingMessage := omit, + in template (omit) XSD.String p_contextID := omit, + in template (omit) XSD.String p_correlationID := omit, + in template (omit) XSD.Boolean p_requiresAck := omit, + in template (omit) Service_1 p_recipient := omit, + in template (omit) CoreEntityPayload_derivations p_payload := omit, + in template (omit) ReliabilityProfile_1 p_reliability := omit, + in template (omit) XSD.Int p_responseTimeOut := omit, + in template (omit) ServiceCapability_derivations p_requests := omit, + in template (omit) PayloadSelector p_payloadSelector := omit + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + pullType := p_pullType, + responseTimeOut := p_responseTimeOut, + requests := p_requests, + discoveryProfiles_list := p_discoveryProfiles_list, + payloadSelector := p_payloadSelector + } // End of template m_pull_request + + template (present) PullRequest mw_pull_request( + template (present) XSD.DateTime p_creationDateTime := ?, + template (present) XSD.String p_messageID := ?, + template (present) PriorityType p_priority := ?, + template (present) Service_1 p_sender_ := ?, + template (present) PullRequest.ccRecipients_list p_ccRecipients_list := ?, + template (present) XSD.String p_elem := ?, + template (present) PullType p_pullType := ?, + template (present) PullRequest.discoveryProfiles_list p_discoveryProfiles_list := ?, + template XSD.Boolean p_incomingMessage := *, + template XSD.String p_contextID := *, + template XSD.String p_correlationID := *, + template XSD.Boolean p_requiresAck := *, + template Service_1 p_recipient := *, + template CoreEntityPayload_derivations p_payload := *, + template ReliabilityProfile_1 p_reliability := *, + template XSD.Int p_responseTimeOut := *, + template ServiceCapability_derivations p_requests := *, + template PayloadSelector p_payloadSelector := * + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + pullType := p_pullType, + responseTimeOut := p_responseTimeOut, + requests := p_requests, + discoveryProfiles_list := p_discoveryProfiles_list, + payloadSelector := p_payloadSelector + } // End of template mw_pull_request + + } // End of group pull_request + + group pull_response { + + template (value) XmlBody m_xml_body_pull_response( + in template (value) PullResponse p_pull_response, + in template (omit) charstring p_raw := omit + ) := { + msg := { pull_response := p_pull_response }, + raw := p_raw + } // End of template m_xml_body_pull_response + + template (present) XmlBody mw_xml_body_pull_response( + template (present) PullResponse p_pull_response := ? + ) := { + msg := { pull_response := p_pull_response }, + raw := ? + } // End of template mw_xml_body_pull_response + + template (present) XmlBody mw_xml_body_pull_response_unsec( + template (present) PullResponse p_pull_response := ? + ) := { + msg := { pull_response := p_pull_response }, + raw := omit + } // End of template mw_xml_body_pull_response_unsec + + template (omit) PullResponse m_pull_response( + in template (value) XSD.DateTime p_creationDateTime, + in template (value) XSD.String p_messageID, + in template (value) PriorityType p_priority, + in template (value) Service_1 p_sender_, + in template (value) PullResponse.ccRecipients_list p_ccRecipients_list, + in template (value) ResponseCodeType p_resultCode := success, + in template (omit) XSD.String p_elem := omit, + in template (omit) XSD.Boolean p_incomingMessage := omit, + in template (omit) XSD.String p_contextID := omit, + in template (omit) XSD.String p_correlationID := omit, + in template (omit) XSD.Boolean p_requiresAck := omit, + in template (omit) Service_1 p_recipient := omit, + in template (omit) CoreEntityPayload_derivations p_payload := omit, + in template (omit) ReliabilityProfile_1 p_reliability := omit, + in template (omit) http_www_cise_eu_servicemodel_v1_message.String_derivations p_errorDetail := omit, + in template (omit) ServiceCapability_derivations p_fulfils := omit + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + errorDetail := p_errorDetail, + resultCode := p_resultCode, + fulfils := p_fulfils + } // End of template m_pull_response + + template (present) PullResponse mw_pull_response( + template (present) XSD.DateTime p_creationDateTime := ?, + template (present) XSD.String p_messageID := ?, + template (present) PriorityType p_priority := ?, + template (present) Service_1 p_sender_ := ?, + template (present) PullResponse.ccRecipients_list p_ccRecipients_list := ?, + template (present) ResponseCodeType p_resultCode := success, + template XSD.String p_elem := *, + template XSD.Boolean p_incomingMessage := *, + template XSD.String p_contextID := *, + template XSD.String p_correlationID := *, + template XSD.Boolean p_requiresAck := *, + template Service_1 p_recipient := *, + template CoreEntityPayload_derivations p_payload := *, + template ReliabilityProfile_1 p_reliability := *, + template http_www_cise_eu_servicemodel_v1_message.String_derivations p_errorDetail := *, + template ServiceCapability_derivations p_fulfils := * + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + errorDetail := p_errorDetail, + resultCode := p_resultCode, + fulfils := p_fulfils + } // End of template mw_pull_response + + } // End of group pull_response + + group acknowledgement { + + template (value) XmlBody m_xml_body_acknowledgement( + in template (value) Acknowledgement p_acknowledgement + ) := { + msg := { acknowledgement := p_acknowledgement }, + raw := omit + } // End of template m_xml_body_acknowledgement + + template (present) XmlBody mw_xml_body_acknowledgement( + template (present) Acknowledgement p_acknowledgement := ? + ) := { + msg := { acknowledgement := p_acknowledgement }, + raw := ? + } // End of template mw_xml_body_acknowledgement + + template (present) XmlBody mw_xml_body_acknowledgement_unsec( + template (present) Acknowledgement p_acknowledgement := ? + ) := { + msg := { acknowledgement := p_acknowledgement }, + raw := omit + } // End of template mw_xml_body_acknowledgement_unsec + + template (omit) Acknowledgement m_acknowledgement( + in template (value) XSD.DateTime p_creationDateTime, + in template (value) XSD.String p_messageID, + in template (value) PriorityType p_priority, + in template (value) Acknowledgement.ccRecipients_list p_ccRecipients_list, + in template (value) AcknowledgementType p_AckCode, + in template (value) Acknowledgement.discoveredServices_list p_discoveredServices_list := {}, + in template (omit) Acknowledgement.detailString p_detailString := omit, + in template (omit) XSD.Boolean p_incomingMessage := omit, + in template (omit) XSD.String p_contextID := omit, + in template (omit) XSD.String p_correlationID := omit, + in template (omit) XSD.Boolean p_requiresAck := omit, + in template (omit) Service_1 p_sender_ := omit, + in template (omit) Service_1 p_recipient := omit, + in template (omit) CoreEntityPayload_derivations p_payload := omit, + in template (omit) ReliabilityProfile_1 p_reliability := omit, + in template (omit) Acknowledgement.ackDetail p_ackDetail := omit, + in template (omit) XSD.String p_elem := omit + ) := { + detailString := p_detailString, + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + AckCode := p_AckCode, + ackDetail := p_ackDetail, + discoveredServices_list := p_discoveredServices_list, + elem := p_elem + } // End of template m_acknowledgement + + template (present) Acknowledgement mw_acknowledgement( + template (present) XSD.DateTime p_creationDateTime := ?, + template (present) XSD.String p_messageID := ?, + template (present) PriorityType p_priority := ?, + template (present) Acknowledgement.ccRecipients_list p_ccRecipients_list := ?, + template (present) AcknowledgementType p_AckCode := ?, + template (present) Acknowledgement.discoveredServices_list p_discoveredServices_list := {}, // TODO + template Acknowledgement.detailString p_detailString := *, + template XSD.Boolean p_incomingMessage := *, + template XSD.String p_contextID := *, + template XSD.String p_correlationID := *, + template XSD.Boolean p_requiresAck := *, + template Service_1 p_sender_ := *, + template Service_1 p_recipient := *, + template CoreEntityPayload_derivations p_payload := *, + template ReliabilityProfile_1 p_reliability := *, + template Acknowledgement.ackDetail p_ackDetail := *, + template XSD.String p_elem := * + ) := { + detailString := p_detailString, + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + AckCode := p_AckCode, + ackDetail := p_ackDetail, + discoveredServices_list := p_discoveredServices_list, + elem := p_elem + } // End of template mw_acknowledgement + + } // End of group acknowledgement + + group push { + + template (value) XmlBody m_xml_body_push( + in template (value) Push p_push, + in template (omit) charstring p_raw := omit + ) := { + msg := { push := p_push }, + raw := p_raw + } // End of template m_xml_body_push + + template (present) XmlBody mw_xml_body_push( + template (present) Push p_push := ? + ) := { + msg := { push := p_push }, + raw := ? + } // End of template mw_xml_body_push + + template (present) XmlBody mw_xml_body_push_unsec( + template (present) Push p_push := ? + ) := { + msg := { push := p_push }, + raw := omit + } // End of template mw_xml_body_push_unsec + + template (omit) Push m_push( + in template (value) XSD.DateTime p_creationDateTime, + in template (value) XSD.String p_messageID, + in template (value) PriorityType p_priority, + in template (value) Service_1 p_sender_, + in template (value) Push.ccRecipients_list p_ccRecipients_list, + in template (value) Push.discoveryProfiles_list p_discoveryProfiles_list, + in template (omit) XSD.Boolean p_incomingMessage := omit, + in template (omit) XSD.String p_contextID := omit, + in template (omit) XSD.String p_correlationID := omit, + in template (omit) XSD.Boolean p_requiresAck := omit, + in template (omit) Service_1 p_recipient := omit, + in template (omit) CoreEntityPayload_derivations p_payload := omit, + in template (omit) ReliabilityProfile_1 p_reliability := omit, + in template (omit) XSD.String p_elem := omit + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + discoveryProfiles_list := p_discoveryProfiles_list + } // End of template m_push + + template (present) Push mw_push( + template (present) XSD.DateTime p_creationDateTime := ?, + template (present) XSD.String p_messageID := ?, + template (present) PriorityType p_priority := ?, + template (present) Service_1 p_sender_ := ?, + template (present) Push.ccRecipients_list p_ccRecipients_list := ?, + template (present) Push.discoveryProfiles_list p_discoveryProfiles_list := ?, + template XSD.Boolean p_incomingMessage := *, + template XSD.String p_contextID := *, + template XSD.String p_correlationID := *, + template XSD.Boolean p_requiresAck := *, + template Service_1 p_recipient := *, + template CoreEntityPayload_derivations p_payload := *, + template ReliabilityProfile_1 p_reliability := *, + template XSD.String p_elem := * + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + discoveryProfiles_list := p_discoveryProfiles_list + } // End of template mw_push + + } // End of group push + + group feedback { + + template (value) XmlBody m_xml_body_feedback( + in template (value) Feedback p_feedback, + in template (omit) charstring p_raw := omit + ) := { + msg := { feedback := p_feedback }, + raw := p_raw + } // End of template m_xml_body_feedback + + template (present) XmlBody mw_xml_body_feedback( + template (present) Feedback p_feedback := ? + ) := { + msg := { feedback := p_feedback }, + raw := ? + } // End of template mw_xml_body_feedback + + template (present) XmlBody mw_xml_body_feedback_unsec( + template (present) Feedback p_feedback := ? + ) := { + msg := { feedback := p_feedback }, + raw := omit + } // End of template mw_xml_body_feedback_unsec + + template (omit) Feedback m_feedback( + in template (value) XSD.DateTime p_creationDateTime, + in template (value) XSD.String p_messageID, + in template (value) PriorityType p_priority, + in template (value) Service_1 p_sender_, + in template (value) Feedback.ccRecipients_list p_ccRecipients_list, + in template (value) FeedbackType p_feedbackType, + in template (value) http_www_cise_eu_servicemodel_v1_message.String_derivations p_refMessageID, + in template (omit) XSD.Boolean p_incomingMessage := omit, + in template (omit) XSD.String p_contextID := omit, + in template (omit) XSD.String p_correlationID := omit, + in template (omit) XSD.Boolean p_requiresAck := omit, + in template (omit) Service_1 p_recipient := omit, + in template (omit) CoreEntityPayload_derivations p_payload := omit, + in template (omit) ReliabilityProfile_1 p_reliability := omit, + in template (omit) XSD.String p_elem := omit, + in template (omit) http_www_cise_eu_servicemodel_v1_message.String_derivations p_reason := omit + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + feedbackType := p_feedbackType, + reason := p_reason, + refMessageID := p_refMessageID + } // End of template m_feedback + + template (present) Feedback mw_feedback( + template (present) XSD.DateTime p_creationDateTime := ?, + template (present) XSD.String p_messageID := ?, + template (present) PriorityType p_priority := ?, + template (present) Service_1 p_sender_ := ?, + template (present) Feedback.ccRecipients_list p_ccRecipients_list := ?, + template (present) FeedbackType p_feedbackType := ?, + template (present) http_www_cise_eu_servicemodel_v1_message.String_derivations p_refMessageID := ?, + template XSD.Boolean p_incomingMessage := *, + template XSD.String p_contextID := *, + template XSD.String p_correlationID := *, + template XSD.Boolean p_requiresAck := *, + template Service_1 p_recipient := *, + template CoreEntityPayload_derivations p_payload := *, + template ReliabilityProfile_1 p_reliability := *, + template XSD.String p_elem := *, + template http_www_cise_eu_servicemodel_v1_message.String_derivations p_reason := * + ) := { + incomingMessage := p_incomingMessage, + contextID := p_contextID, + correlationID := p_correlationID, + creationDateTime := p_creationDateTime, + messageID := p_messageID, + priority := p_priority, + requiresAck := p_requiresAck, + sender_ := p_sender_, + recipient := p_recipient, + payload := p_payload, + reliability := p_reliability, + ccRecipients_list := p_ccRecipients_list, + elem := p_elem, + feedbackType := p_feedbackType, + reason := p_reason, + refMessageID := p_refMessageID + } // End of template mw_feedback + + } // End of group Feedback + + group service { + + template (omit) Service m_service( + in template (value) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID, + in template (value) ServiceOperationType p_serviceOperation, + in template (omit) DataFreshnessType p_dataFreshness := omit, + in template (omit) SeaBasinType p_seaBasin := omit, + in template (omit) ServiceRoleType p_serviceRole := consumer, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceType p_serviceType := omit, + in template (omit) Participant_1 p_participant := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) := { + dataFreshness := p_dataFreshness, + seaBasin := p_seaBasin, + serviceID := p_serviceID, + serviceOperation := p_serviceOperation, + serviceRole := p_serviceRole, + serviceStatus := p_serviceStatus, + serviceType := p_serviceType, + participant := p_participant, + serviceCapability := p_serviceCapability + } // End of template m_service + + template (present) Service mw_service( + template (present) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := ?, + template (present) ServiceOperationType p_serviceOperation := ?, + template DataFreshnessType p_dataFreshness := *, + template SeaBasinType p_seaBasin := *, + template ServiceRoleType p_serviceRole := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceType p_serviceType := *, + template Participant_1 p_participant := *, + template ServiceCapability_derivations p_serviceCapability := * + ) := { + dataFreshness := p_dataFreshness, + seaBasin := p_seaBasin, + serviceID := p_serviceID, + serviceOperation := p_serviceOperation, + serviceRole := p_serviceRole, + serviceStatus := p_serviceStatus, + serviceType := p_serviceType, + participant := p_participant, + serviceCapability := p_serviceCapability + } // End of template mw_service + + } // End of group service + + group service_profile { + + template (omit) ServiceProfile_1 m_service_profile( + in template (omit) CommunityType p_community := omit, + in template (omit) CountryType p_country := omit, + in template (omit) DataFreshnessType p_dataFreshness := omit, + in template (omit) FunctionType p_function_ := omit, + in template (omit) SeaBasinType p_seaBasin := omit, + in template (omit) http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := omit, + in template (omit) ServiceOperationType p_serviceOperation := omit, + in template (omit) ServiceRoleType p_serviceRole := omit, + in template (omit) ServiceType p_serviceType := omit, + in template (omit) ServiceStatusType p_serviceStatus := omit, + in template (omit) ServiceCapability_derivations p_serviceCapability := omit + ) := { + community := p_community, + country := p_country, + dataFreshness := p_dataFreshness, + function_ := p_function_, + seaBasin := p_seaBasin, + serviceID := p_serviceID, + serviceOperation := p_serviceOperation, + serviceRole := p_serviceRole, + serviceType := p_serviceType, + serviceStatus := p_serviceStatus, + serviceCapability := p_serviceCapability + } // End of template m_service_profile + + template ServiceProfile_1 mw_service_profile( + template CommunityType p_community := *, + template CountryType p_country := *, + template DataFreshnessType p_dataFreshness := *, + template FunctionType p_function_ := *, + template SeaBasinType p_seaBasin := *, + template http_www_cise_eu_servicemodel_v1_service.String_derivations p_serviceID := *, + template ServiceOperationType p_serviceOperation := *, + template ServiceRoleType p_serviceRole := *, + template ServiceType p_serviceType := *, + template ServiceStatusType p_serviceStatus := *, + template ServiceCapability_derivations p_serviceCapability := * + ) := { + community := p_community, + country := p_country, + dataFreshness := p_dataFreshness, + function_ := p_function_, + seaBasin := p_seaBasin, + serviceID := p_serviceID, + serviceOperation := p_serviceOperation, + serviceRole := p_serviceRole, + serviceType := p_serviceType, + serviceStatus := p_serviceStatus, + serviceCapability := p_serviceCapability + } // End of template mw_service_profile + + } // End of group service_profile + + group core_entity_payload_derivations { + + template (value) CoreEntityPayload_derivations m_core_entity_payload_derivations_payload( + in template (value) XmlEntityPayload p_xmlEntityPayload + ) := { + xmlEntityPayload := p_xmlEntityPayload + } // End of template m_core_entity_payload_derivations_payload + + template (present) CoreEntityPayload_derivations mw_core_entity_payload_derivations_payload( + template (present) XmlEntityPayload p_xmlEntityPayload := ? + ) := { + xmlEntityPayload := p_xmlEntityPayload + } // End of template mw_core_entity_payload_derivations_payload + + template (omit) XmlEntityPayload m_entity_payload( + in template (value) InformationSecurityLevelType p_informationSecurityLevel, + in template (value) InformationSensitivityType p_informationSensitivity, + in template (value) PurposeType p_purpose, + in template (value) XmlEntityPayload.elem_list p_elem_list := {}, + in template (omit) XSD.Boolean p_isPersonalData := omit, + in template (omit) XSD.DateTime p_retentionPeriod := omit, + in template (omit) XSD.Boolean p_ensureEncryption := omit, + in template (omit) Vessel p_vessel := omit, + in template (omit) Action p_action := omit, + in template (omit) Anomaly p_anomaly := omit, + in template (omit) CertificateDocument p_certificate_document := omit, + in template (omit) Incident p_incident := omit, + in template (omit) IrregularMigrationIncident p_irregular_migration_incident := omit, + in template (omit) LawInfringementIncident p_law_infringement_incident := omit, + in template (omit) MeteoOceanographicCondition p_meteo_oceanographic_condition := omit, + in template (omit) Organization p_organization := omit, + in template (omit) Risk p_risk := omit, + in template (omit) Cargo p_cargo := omit + ) := { + informationSecurityLevel := p_informationSecurityLevel, + informationSensitivity := p_informationSensitivity, + isPersonalData := p_isPersonalData, + purpose := p_purpose, + retentionPeriod := p_retentionPeriod, + ensureEncryption := p_ensureEncryption, + vessel := p_vessel, + action_ := p_action, + anomaly := p_anomaly, + certificateDocument := p_certificate_document, + incident := p_incident, + irregularMigrationIncident := p_irregular_migration_incident, + lawInfringementIncident := p_law_infringement_incident, + meteoOceanographicCondition := p_meteo_oceanographic_condition, + organization := p_organization, + risk := p_risk, + cargo := p_cargo, + elem_list := p_elem_list + } // End of template m_entity_payload + + template (present) XmlEntityPayload mw_entity_payload( + template (present) InformationSecurityLevelType p_informationSecurityLevel := ?, + template (present) InformationSensitivityType p_informationSensitivity := ?, + template (present) PurposeType p_purpose := ?, + template (present) XmlEntityPayload.elem_list p_elem_list := ?, + template XSD.Boolean p_isPersonalData := *, + template XSD.DateTime p_retentionPeriod := *, + template XSD.Boolean p_ensureEncryption := *, + template Vessel p_vessel := *, + template Action p_action := *, + template Anomaly p_anomaly := *, + template CertificateDocument p_certificate_document := *, + template Incident p_incident := *, + template IrregularMigrationIncident p_irregular_migration_incident := *, + template LawInfringementIncident p_law_infringement_incident := *, + template MeteoOceanographicCondition p_meteo_oceanographic_condition := *, + template Organization p_organization := *, + template Risk p_risk := *, + template Cargo p_cargo := * + ) := { + informationSecurityLevel := p_informationSecurityLevel, + informationSensitivity := p_informationSensitivity, + isPersonalData := p_isPersonalData, + purpose := p_purpose, + retentionPeriod := p_retentionPeriod, + ensureEncryption := p_ensureEncryption, + vessel := p_vessel, + action_ := p_action, + anomaly := p_anomaly, + certificateDocument := p_certificate_document, + incident := p_incident, + irregularMigrationIncident := p_irregular_migration_incident, + lawInfringementIncident := p_law_infringement_incident, + meteoOceanographicCondition := p_meteo_oceanographic_condition, + organization := p_organization, + risk := p_risk, + cargo := p_cargo, + elem_list := p_elem_list + } // End of template mw_entity_payload + + } // End of group core_entity_payload_derivations + + group payload_selector { + + template (value) PayloadSelector m_payload_selector( + in template (value) PayloadSelector.selectors_list p_selectors_list + ) := { + selectors_list := p_selectors_list + } // End of template m_payload_selector + + template (present) PayloadSelector mw_payload_selector( + template (present) PayloadSelector.selectors_list p_selectors_list := ? + ) := { + selectors_list := p_selectors_list + } // End of template mw_payload_selector + + + } // End of group payload_selector + +} // End of module LibHttp_XmlTemplates diff --git a/virtualization/docker-dev/Dockerfile b/virtualization/docker-dev/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..25a29cf1f99d2d82995f8e2c2dd56dd3a7c0d28e --- /dev/null +++ b/virtualization/docker-dev/Dockerfile @@ -0,0 +1,25 @@ +FROM stfubuntu:20.04 + +LABEL ETSI cise_devel +LABEL description="cise_devel Docker Image" + +ENV TERM=linux \ + HOME=/home/etsi \ + HOSTNAME=docker-titan-cise_devel + +COPY home /home/etsi + +RUN cd /home/etsi \ + && chown -R etsi:etsi . \ + && ls ./etc/init.d/*.sh | while read S; do chmod 0750 "$S" || exit 1; done + +USER etsi + +RUN cd ${HOME} \ + && export PATH=$HOME/bin:$PATH \ + && ls ${HOME}/etc/init.d/*.sh | while read S; do /bin/bash -c "$S" || exit 1; done \ + && rm -fr ${HOME}/etc + +CMD ["/bin/bash"] + +# That's all Floks diff --git a/virtualization/docker-dev/Dockerfile.stfubuntu b/virtualization/docker-dev/Dockerfile.stfubuntu new file mode 100644 index 0000000000000000000000000000000000000000..57104b32c25c617cc528782108249f4f6c2c6bd0 --- /dev/null +++ b/virtualization/docker-dev/Dockerfile.stfubuntu @@ -0,0 +1,107 @@ +FROM ubuntu:20.04 + +MAINTAINER ETSI STF + +LABEL description="STF Docker Ubuntu image" + +ENV TERM=linux \ + HOSTNAME=docker-STF + +RUN echo "docker-STF-dev" > /etc/hostname \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ + && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ + && ( echo "oracle-java17-installer shared/accepted-oracle-license-v1-3 boolean true" | debconf-set-selections -v ) \ + && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ + autoconf \ + bison \ + build-essential \ + cmake \ + curl \ + dos2unix \ + doxygen \ + emacs \ + expect \ + flex \ + g++-8 \ + gcc-8 \ + gdb \ + git-core \ + gnutls-bin \ + graphviz \ + iputils-ping \ + libedit2 \ + libedit-dev \ + libffi-dev \ + libglib2.0-dev \ + libgcrypt-dev \ + libjsoncpp-dev \ + libncurses5-dev \ + libpcap-dev \ + libqt5svg5-dev \ + libreadline-dev \ + libssl-dev \ + libtool-bin \ + libtool \ + libwireshark-dev \ + libxml2-dev \ + libxml2-utils \ + libyaml-dev \ + lsof \ + net-tools \ + ntp \ + oracle-java17-installer \ + oracle-java17-set-default \ + openssh-server \ + pkg-config \ + python3-dev \ + python3-pip \ + python3-setuptools \ + qt5-default \ + qtmultimedia5-dev \ + subversion \ + sudo \ + sshpass \ + tcpdump \ + texlive-font-utils \ + texlive-latex-base \ + texlive-latex-extra \ + tshark \ + tzdata \ + valgrind \ + vim \ + vsftpd \ + xutils-dev \ + tree \ + unzip \ + wget \ + xsltproc \ + && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ + && pip3 install --upgrade setuptools pip \ + && useradd --create-home --shell /bin/bash etsi \ + && echo "etsi:etsi" | chpasswd \ + && adduser etsi sudo \ + && echo "" >> /etc/profile \ + && echo 'export HOME=/home/etsi' >> /etc/profile \ + && echo 'export LD_LIBRARY_PATH=${HOME}/lib:$LD_LIBRARY_PATH' >> /etc/profile \ + && echo 'export PATH=${HOME}/bin:$PATH' >> /etc/profile \ + && echo 'cd ${HOME}' >> /etc/profile \ + && echo ". ./devenv.bash" >> /etc/profile \ + && cd /home/etsi \ + && echo "" >> ./.profile \ + && echo 'export HOME=/home/etsi' >> ./.profile \ + && echo 'export LD_LIBRARY_PATH=${HOME}/lib:$LD_LIBRARY_PATH' >> ./.profile \ + && echo 'export PATH=${HOME}/bin:$PATH' >> ./.profile \ + && echo 'cd ${HOME}' >> ./.profile \ + && echo ". ./devenv.bash" >> ./.profile \ + && mkdir -p bin lib include tmp frameworks docs man dev \ + && chown -R etsi:etsi * + +EXPOSE 22 + +CMD ["/bin/bash"] + +# That's all Floks diff --git a/virtualization/docker-dev/README.md b/virtualization/docker-dev/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2709ae654c5e501f795e31b325161638adc02ad9 --- /dev/null +++ b/virtualization/docker-dev/README.md @@ -0,0 +1,99 @@ +# HOWTO build docker images + +## General imformation + +Pre-requisites on your host machine: + +- Install [Docker](https://docs.docker.com/install/) + +#### From Windows host: + +- Install [Virtualbox](https://www.virtualbox.org/manual/ch01.html) +- Install any X Server. For example [VcXsrv](https://sourceforge.net/projects/vcxsrv/) + +#### From Mac host: + +- Install [Virtualbox](https://www.virtualbox.org/manual/ch01.html) +- Install [XQuartz](https://www.xquartz.org) + +#### From Linux host: + +- No other requirements + +## Build docker image + +For Windows host, rename ```build.cmd.a``` and ```run.cmd.a``` to ```build.cmd``` and ```run.cmd``` respectivelly. + +Special scrips ```build.sh``` (or ```build.cmd```) can be executed to automatically build all necessary images. + +There are several build stages: + +1. Build STF Ubuntu 18.04 image +2. Install Titan from Github +3. Install Eclipse and Titan Eclipse plugin into ~/frameworks/titan +4. Install asn1c into ~/frameworks/asn1c +5. Checkout STF569 sources from ETSI svn repository using default credentials +6. Build ASN.1 recoder library +7. Build certificate generation tool + +## Import and build MEC project + +### Run Docker image + +#### From Windows host: + +1. Authorize Docker container to interact with the XServer: +Go to the X Server installation directory and add the Docker container ip address to the file ```X0.hosts```: +``` +localhost +inet6:localhost +192.168.99.100 +``` + +Execute ```run.cmd``` or launch a command line window and run the command + +```docker run -it --net=host -e DISPLAY=192.168.99.1:0 cise_devel:latest``` + +NOTE: Modify the IP address in the command for the address of 'VirtualBox Hot-Only Network'. + +#### From Linux host: + +Execute ```run.sh``` or launch a command line window and run the command + +```sh +docker run -it --net=host -e DISPLAY=$DISPLAY \ +-v /tmp/.X11-unix:/tmp/.X11-unix cise_devel:latest +``` + +### Import eclipse project + +1. Whithin the docker container, on the linux command prompt type: + + ```eclipse -data ~/dev/Workspace``` + + Eclipse IDE shall be shown on the hosts Screen. + Possible problems: + - eclipse not found: check the PATH environment variable. It shall contain $HOME/bin path. Otherwise add it: + ```export PATH=$HOME/bin:$PATH``` + +2. Run "File -> Import" and import the ```~/dev/cise_devel/cise_devel.tpd``` file. + + This can take a time, be patient. + **Do not run build in eclipse**, we don't have enough time. + +### Build the project + +```cd ~/Workspace/cise_devel/bin``` + +```make``` + +Possible problems: + - Error in AbstractSocket build: Build it explicitly: + ```cd ~/Workspace/Abstract_Socket_CNL113384/bin_ssl && make``` + +### Execute tests +1. Launch eclipse: ```eclipse -data ~/dev/Workspace``` +2. Select configuration from the /etc/folder: + - AtsCise.cfg - Default MEC test suite. +3. Right-click on the configuration file and select **Run As -> TITAN Parallel launcher** + diff --git a/virtualization/docker-dev/build.sh b/virtualization/docker-dev/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..f42852c174ef121bbaa2121fc38c7e0f0d0f7041 --- /dev/null +++ b/virtualization/docker-dev/build.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright ETSI 2018-2022 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +set -e +set -vx + +# Force removing stfubuntu docker image +if [ "$1" == "--force-stfubuntu" ]; then + if [ -n `docker images -q stfubuntu` ]; then + docker rmi --force `docker images -q stfubuntu` || exit 1 + fi +fi +# Check and build stfubuntu image +if [ -z `docker images -q stfubuntu` ]; then + docker build --no-cache --tag stfubuntu:20.04 -f Dockerfile.stfubuntu --force-rm . || exit 1 +fi + +docker build --no-cache --tag cise_devel --force-rm . || ( echo "Docker build failed: $?"; exit 1 ) + +docker images +docker inspect cise_devel:latest || ( echo "Docker inspect failed: $?"; exit 1 ) + +# That's all Floks +exit 0 diff --git a/virtualization/docker-dev/home/etc/init.d/10-titan.sh b/virtualization/docker-dev/home/etc/init.d/10-titan.sh new file mode 100755 index 0000000000000000000000000000000000000000..71aad17db6c2c9c726b87b567e2dc3b072e54cf0 --- /dev/null +++ b/virtualization/docker-dev/home/etc/init.d/10-titan.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +#set -e +set -vx + +echo -e "*****************************\n* Install titan\n*****************************\n" +SRC_DIR=${HOME}/frameworks/titan/titan.core +export TTCN3_DIR=$HOME/frameworks/titan/Install + +[ -f /usr/bin/java ] && export JAVA_HOME=`readlink -f /usr/bin/java | sed "s:bin/java::"` +TITAN_REPO=`cat ${HOME}/etc/titan_repos.txt | grep 'titan\.core\.git' | head -n 1` +export PATH=$PATH:$TTCN3_DIR/bin + +mkdir -p "$SRC_DIR" +cd "$SRC_DIR/.." || exit 1 + +# Install titan core +git clone --progress "$TITAN_REPO" || exit 1 + +cd titan.core || exit 1 +cat >Makefile.personal <> $HOME/.bashrc +echo "export PATH=\$PATH:\$TTCN3_DIR/bin" >> $HOME/.bashrc + +# Install other repos +cd $SRC_DIR/.. || exit 1 +cat ${HOME}/etc/titan_repos.txt | grep -v -e '^\s*#' -e 'titan\.core' | while read REPO; do + [ -z $ $REPO ] && continue + WS=`echo $REPO | sed -e 's|.*/||g' -e 's|\.git||g'` + if git clone --progress "${REPO}" "${WS}"; then + [ -f "$WS/Makefile" ] && make -C "$WS" + fi +done + +cd $HOME diff --git a/virtualization/docker-dev/home/etc/init.d/40-cise.sh b/virtualization/docker-dev/home/etc/init.d/40-cise.sh new file mode 100755 index 0000000000000000000000000000000000000000..55fc811a97e8d3ff3e2c72cf2e5cde4bb8f5556c --- /dev/null +++ b/virtualization/docker-dev/home/etc/init.d/40-cise.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +#set -e +set -vx + +echo -e "*****************************\n* Checkout cise_devel sources\n*****************************\n" +mkdir -p ${HOME}/dev && cd ${HOME}/dev || exit 1 + +git clone --recurse-submodules --branch stf637 --single-branch https://forge.etsi.org/rep/cdm/cise-data-model cise_devel || exit 1 +cd ${HOME}/dev/cise_devel/titan-test-system-framework +git checkout devel || exit 1 + +echo -e "*****************************\n* Set up environment\n*****************************\n" +cd ${HOME} +ln -sf ${HOME}/dev/cise_devel/scripts/devenv.bash.ubuntu ${HOME}/devenv.bash || exit 1 +. ${HOME}/devenv.bash + +echo -e "*****************************\n* Apply patched \n*****************************\n" +cd ${HOME}/dev/cise_devel +cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ || exit 1 +cp ./ttcn/patch_lib_common_titan/ttcn/*.ttcn ./ttcn/LibCommon/ttcn || exit 1 + +cd ./titan-test-system-framework/ttcn/LibHttp/ +ln -sf module_cise.mk module.mk || exit 1 + +echo -e "*****************************\n* Build CISE test suite\n*****************************\n" +cd ${HOME}/dev/cise_devel +export ATS=AtsCise +make || exit 1 +rm -fr ./build || exit 1 + +cd ./etc/AtsCise +ln -sf AtsCise_Cnit.cf_ AtsCise.cfg || exit 1 + +echo -e "*****************************\n* Change sudo in command line\n*****************************\n" +cd ${HOME}/dev/cise_devel/scripts +sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_mtc.bash || exit 1 +sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_ptcs.bash || exit 1 + +cd ${HOME}/dev/cise_devel diff --git a/virtualization/docker-dev/home/etc/init.d/50-doxygen.sh b/virtualization/docker-dev/home/etc/init.d/50-doxygen.sh new file mode 100755 index 0000000000000000000000000000000000000000..e402423f9850a22a734103493f3cf2cf2c849a57 --- /dev/null +++ b/virtualization/docker-dev/home/etc/init.d/50-doxygen.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +#set -e +set -vx + +echo -e "*****************************\n* Build docs \n*****************************\n" +. ${HOME}/devenv.bash +cd ${HOME}/dev/cise_devel/docs || exit 1 +doxygen ./o2.cfg || exit 1 + +# Generate PDF file +cd ${HOME}/dev/cise_devel/docs/AtsCiseDocs/latex +make && mv refman.pdf ${HOME}/docs/etsi_cise_help.pdf || exit 1 + +cd ${HOME} + +exit 0 diff --git a/virtualization/docker-dev/home/etc/titan_repos.txt b/virtualization/docker-dev/home/etc/titan_repos.txt new file mode 100644 index 0000000000000000000000000000000000000000..8842f4e0283928a94ebbbd37aff6b25fe27c2279 --- /dev/null +++ b/virtualization/docker-dev/home/etc/titan_repos.txt @@ -0,0 +1,56 @@ +https://gitlab.eclipse.org/eclipse/titan/titan.core.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Abstract_Socket.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.HTTPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LANL2asp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PCAPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PIPEasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SCTPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SIPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SQLasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TCPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TELNETasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UDPasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.COMMON.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCPv6.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DIAMETER_ProtocolModule_Generator.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DNS.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMPv6.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTSP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SNMP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.TCP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.UDP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.XMPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.misc.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPasp_RFC4511.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Socket-API.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SSHCLIENTasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.STDINOUTmsg.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SUNRPCasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UNIX_DOMAIN_SOCKETasp.git +https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.IPL4asp.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.FrameRelay.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.H248_v2.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IMAP_4rev1.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICAP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IKEv2.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IPsec.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IUA.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.JSON_v07_2006.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.L2TP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.M3UA.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MIME.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MSRP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.PPP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ProtoBuff.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RADIUS_ProtocolModule_Generator.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SRTP.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.WebSocket.git +https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.HTTP2.0.git +https://gitlab.eclipse.org/eclipse/titan/titan.Libraries.TCCUsefulFunctions.git diff --git a/virtualization/docker-dev/run.sh b/virtualization/docker-dev/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..82957bbfc588128ced708e8146c248f725eca798 --- /dev/null +++ b/virtualization/docker-dev/run.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -e +set -vx + +docker run --interactive --tty --rm --publish 2222:22 --env DISPLAY=$DISPLAY --volume /tmp/.X11-unix:/tmp/.X11-unix --cap-add=NET_RAW --cap-add=NET_ADMIN cise_devel:latest /bin/bash -c "export ATS=AtsCise && cd ~ && . ./devenv.bash && sed --in-place 's/sbxpl1eil4/sbxrsvoat/g' ~/dev/cise_devel/etc/AtsCise/AtsCise.cfg && cd ~/dev/cise_devel/scripts && ./run_all.bash" +#docker run --interactive --tty --rm --publish 2222:22 --env DISPLAY=$DISPLAY --volume /tmp/.X11-unix:/tmp/.X11-unix --cap-add=NET_RAW --cap-add=NET_ADMIN cise_devel:latest + +# That's all Floks +exit 0 diff --git a/virtualization/docker/Dockerfile b/virtualization/docker/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..b0b6189f3c0fefe093bae75c5d89edfb73563c93 --- /dev/null +++ b/virtualization/docker/Dockerfile @@ -0,0 +1,49 @@ +FROM alpine:3.16 + +# Install dependencies +RUN apk update && \ + apk add --no-cache sudo make git g++ diffutils expect openssl-dev libxml2-dev libxml2-utils libxslt-dev libtool ncurses-dev jsoncpp-dev readline-dev flex bison perl libexecinfo-dev bash libedit libedit-dev lksctp-tools lksctp-tools-dev libpcap-dev + +# Create user and sudouser +RUN \ + addgroup -g 1001 etsi && \ + adduser -S -D -u 1001 -G etsi -h /home/etsi -s /bin/bash etsi && \ + echo "etsi:etsi" | chpasswd && \ + echo "etsi ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers || exit 1 +USER etsi + +# Setup Hosts file at the boot time +RUN \ + echo 'sudo sh -c "cp /etc/hosts /etc/append && (echo \"127.0.1.1 $HOSTNAME\"; cat /etc/append) > /etc/hosts"' >> /home/etsi/.bashrc \ + echo 'sh' >> /home/etsi/.bashrc || exit 1 + +# Clone Titan +WORKDIR /home/etsi +RUN mkdir -p frameworks dev tmp && cd frameworks && git clone https://gitlab.eclipse.org/eclipse/titan/titan.core.git || exit 1 +WORKDIR /home/etsi/frameworks/titan.core/ + +# Setup ENV variables +ENV TTCN3_DIR=/home/etsi/frameworks/titan.core/Install +ENV PATH=$TTCN3_DIR/bin:$PATH \ + LD_LIBRARY_PATH=$TTCN3_DIR/lib:$LD_LIBRARY_PATH + +# Set flags +RUN \ + echo "ALPINE_LINUX=yes" > Makefile.personal && \ + echo "TTCN3_DIR=$TTCN3_DIR" >> Makefile.personal && \ + echo "JNI=no" >> Makefile.personal && \ + echo "GUI=no" >> Makefile.personal && \ + echo "DEBUG=no" >> Makefile.personal || exit 1 + +# Build Titan +RUN \ + sed --in-place 's/LINUX_LIBS := -lxml2/LINUX_LIBS := -lxml2 -lpthread/g' ./core/Makefile && \ + make install && make clean || exit 1 + +WORKDIR /home/etsi/dev + +ENV ATS=AtsCise + +EXPOSE 30181/tcp + +ENTRYPOINT /home/etsi/dev/cise-data-model/virtualization/docker/docker-entrypoint.sh diff --git a/virtualization/docker/docker-entrypoint.sh b/virtualization/docker/docker-entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..c4e29d53e89ad59e17b2d2132f2c9ab366822f6f --- /dev/null +++ b/virtualization/docker/docker-entrypoint.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +#set +vx +set -euo pipefail + +usage() { + echo "No command specified. Available commands:" + for i in $(echo $commands | sed "s/,/ /g") + do + echo " $i" + done + echo "For build,clean,list,modulepar,rebuild,build-run and run" + echo "e.g. ./virtualization/docker/docker-run.sh run # To execute test suite" +} + +cli="${GEN_DIR}/bin/AtsCise" + +commands="help,build,clean,ip,list,modulepar,ping,rebuild,build-run,run,version" + +if [ $# == 0 ]; then + echo "No command specified. Available commands:" + for i in $(echo $commands | sed "s/,/ /g") + do + echo " $i" + done + exit 1 +fi + +case "$1" in + build) + cd ${GEN_DIR} && make + ;; + clean) + cd ${GEN_DIR} && make clean + ;; + ip) + ip address + ;; + list) + ${cli} -l + ;; + modulepar) + ${cli} -p + ;; + ping) + sudo ping $2 + ;; + rebuild) + cd ${GEN_DIR} && rm -fr ./bin ./build ; make + ;; + build-run) + cd ${GEN_DIR}/scripts && ./run_all.bash 0 + ;; + run) + cd ${GEN_DIR}/scripts && ./run_all.bash + ;; + version) + compiler -v + ;; +esac + +exit 0 diff --git a/virtualization/docker/docker-run.sh b/virtualization/docker/docker-run.sh new file mode 100755 index 0000000000000000000000000000000000000000..78b4e05b40a0ad027017a163c2efbc85080a8511 --- /dev/null +++ b/virtualization/docker/docker-run.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -exo pipefail + +cd "$(dirname ${BASH_SOURCE})" + +PRJ=cise-data-model +docker run --rm -it \ + -w $HOME/dev/$PRJ \ + -e GEN_DIR=$HOME/dev/$PRJ \ + -e ATS=$ATS \ + -u "$(id -u):$(id -g)" \ + -v "${PWD}/../..:$HOME/dev/$PRJ" \ + -p 0.0.0.0:8888:8888 \ + --mount type=bind,source=$HOME/var,target=/home/etsi/var,readonly \ + --entrypoint $HOME/dev/$PRJ/virtualization/docker/docker-entrypoint.sh \ + alpine-cise:latest "$@" diff --git a/virtualization/vagrant/Vagrantfile b/virtualization/vagrant/Vagrantfile new file mode 100644 index 0000000000000000000000000000000000000000..86b03597a1ad00b02b0d0c17cae665e8bc792911 --- /dev/null +++ b/virtualization/vagrant/Vagrantfile @@ -0,0 +1,73 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure("2") do |config| + # The most common configuration options are documented and commented below. + # For a complete reference, please see the online documentation at + # https://docs.vagrantup.com. + + # Every Vagrant development environment requires a box. You can search for + # boxes at https://atlas.hashicorp.com/search. + config.vm.box = "bento/ubuntu-18.04" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false + + config.vm.boot_timeout = 900 + + # Use this hostname to force provisioner script to using SVN instead of external HDD + #config.vm.hostname = "vagrant-prov" + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine. In the example below, + # accessing "localhost:8080" will access port 80 on the guest machine. + # config.vm.network "forwarded_port", guest: 80, host: 8080 + + # Create a private network, which allows host-only access to the machine + # using a specific IP. + #config.vm.network "private_network", ip: "192.168.4.94" + + # Create a public network, which generally matched to bridged network. + # Bridged networks make the machine appear as another physical device on + # your network. + #config.vm.network "public_network" + + # Share an additional folder to the guest VM. The first argument is + # the path on the host to the actual folder. The second argument is + # the path on the guest to mount the folder. And the optional third + # argument is a set of non-required options. + + # Provider-specific configuration so you can fine-tune various + # backing providers for Vagrant. These expose provider-specific options. + # Example for VirtualBox: + # + config.vm.provider "virtualbox" do |vb| + # Display the VirtualBox GUI when booting the machine + #vb.gui = true + vb.customize ["modifyvm", :id, "--monitorcount", "1"] + vb.customize ["modifyvm", :id, "--vram", "12"] + # Customize the amount of memory on the VM: + vb.memory = "4096" + end + # + # View the documentation for the provider you are using for more + # information on available options. + + # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies + # such as FTP and Heroku are also available. See the documentation at + # https://docs.vagrantup.com/v2/push/atlas.html for more information. + # config.push.define "atlas" do |push| + # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" + # end + + # Enable provisioning with a shell script. Additional provisioners such as + # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the + # documentation for more information about their specific syntax and use. + config.vm.provision "shell", path: "provisioner.bash", privileged: false +end diff --git a/virtualization/vagrant/provisioner.bash b/virtualization/vagrant/provisioner.bash new file mode 100755 index 0000000000000000000000000000000000000000..b382b8462c1bbd082fa2e09c7d3781d93ba22eeb --- /dev/null +++ b/virtualization/vagrant/provisioner.bash @@ -0,0 +1,189 @@ +#!/bin/bash +# Prepare environment for the build +#set -e # Exit with non 0 if any command fails +#set -vx + +# Update system +sudo DEBIAN_FRONTEND=noninteractive apt-get update +sudo DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y +sudo DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y +sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y +sudo DEBIAN_FRONTEND=noninteractive apt-get update +sudo echo "oracle-java17-installer shared/accepted-oracle-license-v1-3 boolean true" | debconf-set-selections -v +sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libedit2 libedit-dev libncurses5-dev expect libssl-dev libgcrypt-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qttools5-dev qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y +# Install java +sudo DEBIAN_FRONTEND=noninteractive apt-get install oracle-java17-installer oracle-java17-set-default -y +# Cleanup +sudo DEBIAN_FRONTEND=noninteractive apt --fix-broken install -y +sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y +sudo DEBIAN_FRONTEND=noninteractive apt-get clean + +gcc --version +g++ --version +valgrind --version +java -version + +export HOME=/home/vagrant + +export PATH_DEV=${HOME}/dev +export HOME_FRAMEWORKS=${HOME}/frameworks +export HOME_LIB=${HOME}/lib +export HOME_BIN=${HOME}/bin +export HOME_ETC=${HOME}/etc +export HOME_INC=${HOME}/include +export HOME_TMP=${HOME}/tmp +export HOME_DOCS=${HOME}/docs +export PATH=${HOME_BIN}:${PATH} +export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${LD_LIBRARY_PATH} + +OLD_PWD=`pwd` +# Create directories +mkdir -p ${HOME_LIB} +if [ ! -d ${HOME_LIB} ] +then + exit -1 +fi +mkdir -p ${HOME_INC} +if [ ! -d ${HOME_INC} ] +then + exit -1 +fi +mkdir -p ${HOME_BIN} +if [ ! -d ${HOME_BIN} ] +then + exit -1 +fi +mkdir -p ${HOME_TMP} +if [ ! -d ${HOME_TMP} ] +then + exit -1 +fi +mkdir -p ${HOME_DOCS} +if [ ! -d ${HOME_DOCS} ] +then + exit -1 +fi +mkdir -p ${HOME_FRAMEWORKS} +if [ ! -d ${HOME_FRAMEWORKS} ] +then + exit -1 +fi +mkdir -p ${PATH_DEV} +if [ ! -d ${PATH_DEV} ] +then + exit -1 +fi + +cd /home/vagrant +echo "" >> /home/vagrant/.bashrc +echo "export LD_LIBRARY_PATH=/home/vagrant/lib:$LD_LIBRARY_PATH" >> /home/vagrant/.bashrc +echo "export PATH=/home/vagrant/bin:$PATH" >> /home/vagrant/.bashrc +echo ". ~/devenv.bash" >> /home/vagrant/.bashrc + +# Clone project +cd /home/vagrant/dev +git clone --recurse-submodules --branch stf637 --single-branch https://forge.etsi.org/rep/cdm/cise-data-model cise_devel +cd /home/vagrant/dev/cise_devel/titan-test-system-framework +git checkout devel + +# Set up environment +cd /home/vagrant/dev/cise_devel/scripts +chmod 775 *.bash devenv.bash.* +cd /home/vagrant/dev/cise_devel/virtualization/docker +chmod 775 *.sh +cd /home/vagrant/dev/cise_devel +chmod 775 ./.jenkins.sh +cd /home/vagrant +ln -sf /home/vagrant/dev/cise_devel/scripts/devenv.bash.ubuntu /home/vagrant/devenv.bash +. /home/vagrant/devenv.bash + +# Apply patch +cd /home/vagrant/dev/cise_devel +cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ +cp ./ttcn/patch_lib_common_titan/ttcn/*.ttcn ./ttcn/LibCommon/ttcn + +# Change user in cfg files +cd ${HOME}/dev/cise_devel/scripts || exit 1 +./update_user_name.sh || exit 1 + +# Install all frameworks + +# Install osip +cd ${HOME_FRAMEWORKS} +git clone git://git.savannah.gnu.org/osip.git ./osip +cd ./osip +./autogen.sh +./configure --prefix=/home/vagrant +make && make install + +# Install GoogleTest +cd ${HOME_FRAMEWORKS} +git clone https://github.com/google/googletest.git googletest +cd ${HOME_FRAMEWORKS}/googletest/ +cmake . +make CXX=g++ +sudo make install + +# Install latest LCOV +cd ${HOME_FRAMEWORKS} +mkdir -p ${HOME_FRAMEWORKS}/lcov +cd ${HOME_FRAMEWORKS}/lcov +wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.13.orig.tar.gz +tar xf lcov_1.13.orig.tar.gz +sudo make -C lcov-1.13/ install + +# Install lcov to coveralls conversion +sudo gem install coveralls-lcov + +lcov --version +#coveralls-lcov -h + +# Install eclipse +cd ${HOME}/frameworks +ECLIPSE_URL='http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2021-12/R/eclipse-cpp-2021-12-R-linux-gtk-x86_64.tar.gz' +TITAN_URL='https://www.eclipse.org/downloads/download.php?file=/titan/TITAN_Designer_and_Executor_plugin-8.1.0.zip' +wget --progress=dot:mega $ECLIPSE_URL -Oeclipse-cpp-2021-12-R-linux-gtk-x86_64.tar.gz || exit 1 +tar -zxvf ./eclipse-cpp-2021-12-R-linux-gtk-x86_64.tar.gz || exit 1 +ln -sf ${HOME}/frameworks/eclipse/eclipse ${HOME}/bin/eclipse +rm -f ./eclipse-cpp-2021-12-R-linux-gtk-x86_64.tar.gz + +#if wget --progress=dot:mega $TITAN_URL -OTITAN_Designer_and_Executor_plugin.zip; then +# eclipse/eclipse -noSplash -application org.eclipse.equinox.p2.director \ +# -destination /home/vagrant/frameworks/eclipse \ +# -repository 'jar:file:///home/vagrant/frameworks/TITAN_Designer_and_Executor_plugin.zip' \ +# -installIU TITAN_Designer.feature.group,TITAN_Executor.feature.group,TITAN_Log_Viewer.feature.group,Titan_external_dependencies.feature.group,Titanium.feature.group,Titanium_external_dependencies.feature.group +# rm -f TITAN_Designer_and_Executor_plugin.zip +#fi + +# Build Titan +cd /home/vagrant/dev/cise_devel/scripts +./build_titan.bash +. /home/vagrant/devenv.bash + +# Build ATSs +cd /home/vagrant/dev/cise_devel/titan-test-system-framework/ttcn/LibHttp/ +ln -sf module_cise.mk module.mk + +cd /home/vagrant/dev/cise_devel +export ATS=AtsCise +make + +# Change user in cfg files +cd /home/vagrant/dev/cise_devel/scripts +./update_user_name.sh cise_devel + +# Update configuration file +cd /home/vagrant/dev/cise_devel/etc/AtsCise +ln -sf AtsCise_Cnit.cf_ AtsCise.cfg +cd - + +# Change sudo in command line +cd /home/vagrant/dev/cise_devel/scripts +#sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_mtc.bash +#sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_ptcs.bash + +cd ${OLD_PWD} + +sudo init 6 + +exit 0