Merge "VideoEncoderDecoderTest: Do not clear buffer-offset when reading" into mnc-dev
diff --git a/CtsTestCaseList.mk b/CtsTestCaseList.mk
index db777b5..3fc5086 100644
--- a/CtsTestCaseList.mk
+++ b/CtsTestCaseList.mk
@@ -87,6 +87,7 @@
CtsMonkeyApp \
CtsMonkeyApp2 \
CtsSimpleApp \
+ CtsSimplePreMApp \
CtsSomeAccessibilityServices \
CtsThemeDeviceApp \
TestDeviceSetup \
diff --git a/apps/CameraITS/CameraITS.pdf b/apps/CameraITS/CameraITS.pdf
index 3866930..5a511c0 100644
--- a/apps/CameraITS/CameraITS.pdf
+++ b/apps/CameraITS/CameraITS.pdf
Binary files differ
diff --git a/apps/CameraITS/pymodules/its/image.py b/apps/CameraITS/pymodules/its/image.py
index 5475a59..8e76c6f 100644
--- a/apps/CameraITS/pymodules/its/image.py
+++ b/apps/CameraITS/pymodules/its/image.py
@@ -779,6 +779,25 @@
return patches
+def compute_image_sharpness(img):
+ """Calculate the sharpness of input image.
+
+ Args:
+ img: Numpy float RGB/luma image array, with pixel values in [0,1].
+
+ Returns:
+ A sharpness estimation value based on the average of gradient magnitude.
+ Larger value means the image is sharper.
+ """
+ chans = img.shape[2]
+ assert(chans == 1 or chans == 3)
+ luma = img
+ if (chans == 3):
+ luma = 0.299 * img[:,:,0] + 0.587 * img[:,:,1] + 0.114 * img[:,:,2]
+
+ [gy, gx] = numpy.gradient(luma)
+ return numpy.average(numpy.sqrt(gy*gy + gx*gx))
+
class __UnitTest(unittest.TestCase):
"""Run a suite of unit tests on this module.
"""
diff --git a/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py b/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
new file mode 100644
index 0000000..1966d9e
--- /dev/null
+++ b/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
@@ -0,0 +1,159 @@
+# Copyright 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import its.image
+import its.caps
+import its.device
+import its.objects
+import its.target
+import math
+import matplotlib
+import matplotlib.pyplot
+import os.path
+import pylab
+
+
+def test_edge_mode(cam, edge_mode, sensitivity, exp, fd, out_surface,
+ reprocess_format=None):
+ """Return sharpness of the output image and the capture result metadata
+ for a capture request with the given edge mode, sensitivity, exposure
+ time, focus distance, output surface parameter, and reprocess format
+ (None for a regular request.)
+
+ Args:
+ cam: An open device session.
+ edge_mode: Edge mode for the request as defined in android.edge.mode
+ sensitivity: Sensitivity for the request as defined in
+ android.sensor.sensitivity
+ exp: Exposure time for the request as defined in
+ android.sensor.exposureTime.
+ fd: Focus distance for the request as defined in
+ android.lens.focusDistance
+ output_surface: Specifications of the output image format and size.
+ reprocess_format: (Optional) The reprocessing format. If not None,
+ reprocessing will be enabled.
+
+ Returns:
+ Object containing reported edge mode and the sharpness of the output
+ image, keyed by the following strings:
+ "edge_mode"
+ "sharpness"
+ """
+
+ NAME = os.path.basename(__file__).split(".")[0]
+
+ req = its.objects.manual_capture_request(sensitivity, exp)
+ req["android.lens.focusDistance"] = fd
+ req["android.edge.mode"] = edge_mode
+ if (reprocess_format != None):
+ req["android.reprocess.effectiveExposureFactor"] = 1.0
+ cap = cam.do_capture(req, out_surface, reprocess_format)
+
+ img = its.image.decompress_jpeg_to_rgb_image(cap["data"])
+ its.image.write_image(img, "%s_edge=%d_reprocess_fmt_%s.jpg" %
+ (NAME, edge_mode, reprocess_format))
+ tile = its.image.get_image_patch(img, 0.45, 0.45, 0.1, 0.1)
+
+ ret = {}
+ ret["edge_mode"] = cap["metadata"]["android.edge.mode"]
+ ret["sharpness"] = its.image.compute_image_sharpness(tile)
+
+ return ret
+
+def main():
+ """Test that the android.edge.mode param is applied when set for
+ reprocessing requests.
+
+ Capture non-reprocess images for each edge mode and calculate their
+ sharpness as a baseline.
+
+ Capture reprocessed images for each supported reprocess format and edge_mode
+ mode. Calculate the sharpness of reprocessed images and compare them against
+ the sharpess of non-reprocess images.
+ """
+
+ THRESHOLD_RELATIVE_SHARPNESS_DIFF = 0.1
+
+ with its.device.ItsSession() as cam:
+ props = cam.get_camera_properties()
+
+ its.caps.skip_unless(its.caps.read_3a(props) and
+ its.caps.per_frame_control(props) and
+ (its.caps.yuv_reprocess(props) or
+ its.caps.private_reprocess(props)))
+
+ reprocess_formats = []
+ if (its.caps.yuv_reprocess(props)):
+ reprocess_formats.append("yuv")
+ if (its.caps.private_reprocess(props)):
+ reprocess_formats.append("private")
+
+ size = its.objects.get_available_output_sizes("jpg", props)[0]
+ out_surface = {"width":size[0], "height":size[1], "format":"jpg"}
+
+ # Get proper sensitivity, exposure time, and focus distance.
+ s,e,_,_,fd = cam.do_3a(get_results=True)
+
+ # Get the sharpness for each edge mode for regular requests
+ sharpness_regular = []
+ edge_mode_reported_regular = []
+ for edge_mode in range(3):
+ ret = test_edge_mode(cam, edge_mode, s, e, fd, out_surface)
+ edge_mode_reported_regular.append(ret["edge_mode"])
+ sharpness_regular.append(ret["sharpness"])
+
+ print "Reported edge modes:", edge_mode_reported_regular
+ print "Sharpness with EE mode [0,1,2]:", sharpness_regular
+
+ # Get the sharpness for each reprocess format and edge mode for
+ # reprocess requests.
+ sharpnesses_reprocess = []
+ edge_mode_reported_reprocess = []
+
+ for reprocess_format in reprocess_formats:
+ # List of sharpness
+ sharpnesses = []
+ edge_mode_reported = []
+ for edge_mode in range(3):
+ ret = test_edge_mode(cam, edge_mode, s, e, fd, out_surface,
+ reprocess_format)
+ edge_mode_reported.append(ret["edge_mode"])
+ sharpnesses.append(ret["sharpness"])
+
+ sharpnesses_reprocess.append(sharpnesses)
+ edge_mode_reported_reprocess.append(edge_mode_reported)
+
+ print "Reported edge modes:", edge_mode_reported
+ print "Sharpness with EE mode [0,1,2] for %s reprocess:" % \
+ (reprocess_format) , sharpnesses
+
+ # Verify the results
+ assert(edge_mode_reported_regular == [0,1,2])
+ assert(sharpness_regular[1] >
+ sharpness_regular[0] * (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+ assert(sharpness_regular[2] >
+ sharpness_regular[0] * (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
+ # Verify the reprocess
+ for reprocess_format in range(len(reprocess_formats)):
+ assert(edge_mode_reported_reprocess[reprocess_format] == [0,1,2])
+ for edge_mode in range(3):
+ assert(sharpnesses_reprocess[reprocess_format][edge_mode] >=
+ (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF) *
+ sharpnesses_reprocess[reprocess_format][0] *
+ sharpness_regular[edge_mode] / sharpness_regular[0])
+
+if __name__ == '__main__':
+ main()
+
diff --git a/apps/CameraITS/tools/run_all_tests.py b/apps/CameraITS/tools/run_all_tests.py
index c065f12..254d65c 100644
--- a/apps/CameraITS/tools/run_all_tests.py
+++ b/apps/CameraITS/tools/run_all_tests.py
@@ -43,15 +43,17 @@
"test_yuv_plus_jpeg"
],
"scene2":[]
+ "scene3":[]
}
# Get all the scene0 and scene1 tests, which can be run using the same
# physical setup.
- scenes = ["scene0", "scene1", "scene2"]
+ scenes = ["scene0", "scene1", "scene2", "scene3"]
scene_req = {
"scene0" : None,
"scene1" : "A grey card covering at least the middle 30% of the scene",
"scene2" : "A picture containing human faces"
+ "scene3" : "A chart containing sharp edges like ISO 12233"
}
tests = []
for d in scenes:
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index 7f43962..142172b 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -33,6 +33,9 @@
apache-commons-math \
androidplot \
ctsverifier-opencv \
+ core-tests \
+ mockito-target \
+ mockwebserver \
LOCAL_PACKAGE_NAME := CtsVerifier
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index ac9466d..070c174 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -1089,6 +1089,22 @@
android:value="android.software.leanback" />
</activity>
+ <activity android:name=".security.KeyChainTest"
+ android:label="@string/keychain_test">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.cts.intent.category.MANUAL_TEST" />
+ </intent-filter>
+ <meta-data android:name="test_category" android:value="@string/test_category_security" />
+ <!-- KeyChain is only installed on communication-oriented devices inheriting core.mk -->
+ <meta-data android:name="test_excluded_features"
+ android:value="android.hardware.type.watch" />
+ <meta-data android:name="test_excluded_features"
+ android:value="android.hardware.type.television" />
+ <meta-data android:name="test_excluded_features"
+ android:value="android.software.leanback" />
+ </activity>
+
<activity android:name=".p2p.GoNegRequesterTestListActivity"
android:label="@string/p2p_go_neg_requester"
android:configChanges="keyboardHidden|orientation|screenSize" />
@@ -1540,6 +1556,54 @@
android:resource="@xml/mock_content_rating_systems" />
</receiver>
+ <activity android:name=".car.CarDockTestActivity"
+ android:label="@string/car_dock_test">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.cts.intent.category.MANUAL_TEST" />
+ </intent-filter>
+ <meta-data android:name="test_category" android:value="@string/test_category_car" />
+ <meta-data android:name="test_excluded_features"
+ android:value="android.hardware.type.television:android.software.leanback:android.hardware.type.watch" />
+
+ </activity>
+
+ <activity android:name=".car.CarDockActivity"
+ android:launchMode="singleTask"
+ android:autoRemoveFromRecents="true"
+ android:exported="true" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <!-- See explaination in CarDockTestActivity.java -->
+ <activity-alias android:name=".car.CarDockActivity1"
+ android:targetActivity=".car.CarDockActivity" >
+ <meta-data
+ android:name="android.dock_home"
+ android:value="true" />
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.CAR_DOCK" />
+ </intent-filter>
+ </activity-alias>
+
+ <activity-alias android:name=".car.CarDockActivity2"
+ android:targetActivity=".car.CarDockActivity"
+ android:enabled="false" >
+ <meta-data
+ android:name="android.dock_home"
+ android:value="true" />
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.CAR_DOCK" />
+ </intent-filter>
+ </activity-alias>
+
</application>
</manifest>
diff --git a/apps/CtsVerifier/create_test_certs.sh b/apps/CtsVerifier/create_test_certs.sh
new file mode 100755
index 0000000..b59974a
--- /dev/null
+++ b/apps/CtsVerifier/create_test_certs.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+#
+# Creates or overwrites 3 files in ./res/raw:
+# - cacert.der
+# - userkey.der
+# - usercert.der
+#
+
+tmpdir=$(mktemp -d './XXXXXXXX')
+trap 'rm -r ${tmpdir}; echo; exit 1' EXIT INT QUIT
+
+# CA_default defined in openssl.cnf
+CA_DIR='demoCA'
+
+SUBJECT=\
+'/C=US'\
+'/ST=CA'\
+'/L=Mountain View'\
+'/O=Android'\
+'/CN=localhost'
+PASSWORD='androidtest'
+
+echo "Creating directory '$CA_DIR'..."
+mkdir -p "$tmpdir"/"$CA_DIR"/newcerts \
+ && echo '01' > "$tmpdir"/"$CA_DIR"/serial \
+ && touch "$tmpdir"/"$CA_DIR"/index.txt
+
+echo "Generating CA certificate..."
+(cd "$tmpdir" \
+ && openssl req \
+ -new \
+ -x509 \
+ -days 3650 \
+ -extensions v3_ca \
+ -keyout 'cakey.pem' \
+ -out 'cacert.pem' \
+ -subj "$SUBJECT" \
+ -passout 'pass:'"$PASSWORD" \
+ && openssl x509 \
+ -outform DER \
+ -in 'cacert.pem' \
+ -out 'cacert.der')
+
+echo "Generating user key..."
+(cd "$tmpdir" \
+ && openssl req \
+ -newkey rsa:2048 \
+ -sha256 \
+ -keyout 'userkey.pem' \
+ -nodes \
+ -days 3650 \
+ -out 'userkey.req' \
+ -subj "$SUBJECT" \
+ && openssl pkcs8 \
+ -topk8 \
+ -outform DER \
+ -in 'userkey.pem' \
+ -out 'userkey.der' \
+ -nocrypt)
+
+echo "Generating user certificate..."
+(cd "$tmpdir" \
+ && openssl ca \
+ -out 'usercert.pem' \
+ -in 'userkey.req' \
+ -cert 'cacert.pem' \
+ -keyfile 'cakey.pem' \
+ -days 3650 \
+ -passin 'pass:'"$PASSWORD" \
+ -batch \
+ && openssl x509 \
+ -outform DER \
+ -in 'usercert.pem' \
+ -out 'usercert.der')
+
+# Copy important files to raw resources directory
+cp \
+ "$tmpdir"/cacert.der \
+ "$tmpdir"/userkey.der \
+ "$tmpdir"/usercert.der \
+ 'res/raw/'
+
+echo "Finished"
+exit
diff --git a/apps/CtsVerifier/proguard.flags b/apps/CtsVerifier/proguard.flags
index fe7eed8..5a2beb5 100644
--- a/apps/CtsVerifier/proguard.flags
+++ b/apps/CtsVerifier/proguard.flags
@@ -16,6 +16,12 @@
-keepclasseswithmembers class * extends com.android.cts.verifier.location.LocationModeTestActivity
+# keep mockito methods
+-keep class org.mockito.** { *; }
+-keep interface org.mockito.** { *; }
+-keep class com.google.dexmaker.** { *; }
+-keep interface com.google.dexmaker.** { *; }
+
-dontwarn android.hardware.Sensor
-dontwarn android.test.AndroidTestRunner
-dontwarn java.util.concurrent.ConcurrentLinkedDeque
diff --git a/apps/CtsVerifier/res/layout/car_dock_main.xml b/apps/CtsVerifier/res/layout/car_dock_main.xml
new file mode 100644
index 0000000..97f0712
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/car_dock_main.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="@string/car_dock_activity_text" />
+
+</RelativeLayout>
diff --git a/apps/CtsVerifier/res/layout/car_dock_test_main.xml b/apps/CtsVerifier/res/layout/car_dock_test_main.xml
new file mode 100644
index 0000000..c568b54
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/car_dock_test_main.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.support.wearable.view.BoxInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <LinearLayout app:layout_box="all"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical" >
+ <include layout="@layout/pass_fail_buttons" />
+ <Button
+ android:id="@+id/car_mode"
+ android:layout_height="100dp"
+ android:layout_width="500dp"
+ android:layout_gravity="center"
+ android:text="@string/car_mode_enable" />
+ </LinearLayout>
+</android.support.wearable.view.BoxInsetLayout>
diff --git a/apps/CtsVerifier/res/layout/keychain_main.xml b/apps/CtsVerifier/res/layout/keychain_main.xml
new file mode 100644
index 0000000..01eb255
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/keychain_main.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<android.support.wearable.view.BoxInsetLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:padding="10dip" >
+
+ <TextView
+ android:id="@+id/test_instruction"
+ style="@style/InstructionsFont"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0" />
+
+ <TextView
+ android:id="@+id/test_log"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_gravity="bottom"
+ android:orientation="vertical" />
+
+ <LinearLayout
+ android:id="@+id/action_buttons"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:orientation="horizontal">
+
+ <Button
+ android:id="@+id/action_reset"
+ android:text="@string/keychain_reset"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content" />
+
+ <Button
+ android:id="@+id/action_skip"
+ android:text="@string/keychain_skip"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content" />
+
+ <Button
+ android:id="@+id/action_next"
+ android:text="@string/next_button_text"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content" />
+
+ </LinearLayout>
+
+ <include
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ layout="@layout/pass_fail_buttons" />
+
+ </LinearLayout>
+</android.support.wearable.view.BoxInsetLayout>
diff --git a/apps/CtsVerifier/res/raw/cacert.der b/apps/CtsVerifier/res/raw/cacert.der
new file mode 100644
index 0000000..3934e1b
--- /dev/null
+++ b/apps/CtsVerifier/res/raw/cacert.der
Binary files differ
diff --git a/apps/CtsVerifier/res/raw/usercert.der b/apps/CtsVerifier/res/raw/usercert.der
new file mode 100644
index 0000000..cdfb8f7
--- /dev/null
+++ b/apps/CtsVerifier/res/raw/usercert.der
Binary files differ
diff --git a/apps/CtsVerifier/res/raw/userkey.der b/apps/CtsVerifier/res/raw/userkey.der
new file mode 100644
index 0000000..31f1f8c
--- /dev/null
+++ b/apps/CtsVerifier/res/raw/userkey.der
Binary files differ
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index ad41891..772fc96 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -26,6 +26,7 @@
<!-- Strings for TestListActivity -->
<string name="test_category_audio">Audio</string>
<string name="test_category_camera">Camera</string>
+ <string name="test_category_car">Car</string>
<string name="test_category_device_admin">Device Administration</string>
<string name="test_category_hardware">Hardware</string>
<string name="test_category_networking">Networking</string>
@@ -86,6 +87,15 @@
device and verify that all rows in the policy list are green. Red items indicate policy
settings that were not loaded properly.
</string>
+ <string name="car_dock_test">Car Dock Test</string>
+ <string name="car_dock_test_desc">This test ensures that car mode opens the app associated with
+ car dock when going into car mode. Click on "Enable Car Mode" to start the test. Clicking on
+ the button will either bring up a disambiguation dialog asking which app to open or
+ immediately open the CAR_DOCK application. Select the "CTS Verifier" app if the dialog pops up,
+ which open the CAR_DOCK application. In the CAR_DOCK application, press the home button, which
+ will enable the pass button if the framework correctly tries to open the CAR_DOCk app again.</string>
+ <string name="car_mode_enable">Enable Car Mode</string>
+ <string name="car_dock_activity_text">Press the Home button</string>
<string name="da_no_policy">1. Press the \"Generate Policy\" to create a random device
policy\n\n2. Press \"Apply Policy\" to put the policy into effect.\n\n3. Reboot your
device and return to this test in the CTS Verifier.
@@ -1155,6 +1165,23 @@
<string name="caboot_reboot_desc">Please reboot the device and return to this test.</string>
<string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification that the network may be monitored. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>
+ <!-- Strings for KeyChain -->
+ <string name="keychain_test">KeyChain Storage Test</string>
+ <string name="keychain_info">This test checks that credentials installed to the system can be granted, retrieved, and used to create valid HTTPS connections.</string>
+ <string name="keychain_reset">Reset</string>
+ <string name="keychain_skip">Skip</string>
+ <string name="keychain_setup_desc">The first step sets up an internal KeyStore and generates credentials to use for the remainder of the test.\n\n
+ Touch \'Next\' to begin.</string>
+ <string name="keychain_install_desc">Credentials generated. Touch \'Next\' to install them to the system keychain.\n\n
+The container for the credentials will not be protected with a password; if prompted for one, leave that field blank.\n\n
+During installation you may be prompted for a name - accept the default suggestion.\n\n
+In the case that these credentials were already installed, you may skip this step.</string>
+ <string name="keychain_https_desc">The last test involves setting up an HTTPS connection using credentials from the KeyChain.\n\n
+You should be prompted to select credentials; choose the ones you just installed in the previous step.</string>
+ <string name="keychain_reset_desc">Before marking this test as passed, touch \'Next\' to open security settings and reset the following items:\n
+ 1. Clear device credentials.\n
+ 2. Change the lock screen type to \'None\'.</string>
+
<!-- Strings for Widget -->
<string name="widget_framework_test">Widget Framework Test</string>
<string name="widget_framework_test_info">This test checks some basic features of the widget
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/car/CarDockActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/car/CarDockActivity.java
new file mode 100644
index 0000000..cdee037
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/car/CarDockActivity.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.car;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import com.android.cts.verifier.R;
+
+/**
+ * Dummy activity which notifies {@link CarDockTestActivity} that the CAR_DOCK application
+ * successfully opened.
+ */
+public class CarDockActivity extends Activity {
+ public static Runnable sOnHomePressedRunnable;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.car_dock_main);
+ Toast.makeText(this, "CAR_DOCK app started from entering car mode!",
+ Toast.LENGTH_SHORT).show();
+ }
+
+ @Override
+ /**
+ * Pressing the home button while already in this app will trigger this callback.
+ */
+ protected void onNewIntent(Intent intent) {
+ if (sOnHomePressedRunnable != null) {
+ sOnHomePressedRunnable.run();
+ sOnHomePressedRunnable = null;
+ Toast.makeText(this, "CAR_DOCK app started from home button press!",
+ Toast.LENGTH_SHORT).show();
+ }
+ finish();
+ }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/car/CarDockTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/car/CarDockTestActivity.java
new file mode 100644
index 0000000..4473a3c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/car/CarDockTestActivity.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.car;
+
+import android.app.UiModeManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.TestResult;
+
+/**
+ * Tests that CAR_DOCK mode opens the app associated with car dock when going into
+ * car mode.
+ */
+public class CarDockTestActivity extends PassFailButtons.Activity {
+
+ private static final String CAR_DOCK1 =
+ "com.android.cts.verifier.car.CarDockActivity1";
+ private static final String CAR_DOCK2 =
+ "com.android.cts.verifier.car.CarDockActivity2";
+
+ private UiModeManager mManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ View view = getLayoutInflater().inflate(R.layout.car_dock_test_main, null);
+ setContentView(view);
+ setInfoResources(R.string.car_dock_test, R.string.car_dock_test_desc, -1);
+ setPassFailButtonClickListeners();
+ getPassButton().setEnabled(false);
+ mManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
+ CarDockActivity.sOnHomePressedRunnable = new Runnable() {
+ @Override
+ public void run() {
+ TestResult.setPassedResult(CarDockTestActivity.this, getTestId(),
+ getTestDetails(), getReportLog());
+ mManager.disableCarMode(0);
+ finish();
+ }
+ };
+ Button button = (Button) view.findViewById(R.id.car_mode);
+ button.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ mManager.enableCarMode(UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME);
+ }
+ });
+ Intent i = new Intent(Intent.ACTION_MAIN, null);
+ i.addCategory(Intent.CATEGORY_CAR_DOCK);
+ i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+ Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ ActivityInfo ai = null;
+ ResolveInfo info = getPackageManager().resolveActivity(i,
+ PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_META_DATA);
+ if (info != null) {
+ ai = info.activityInfo;
+ // Check if we are the default CAR_DOCK handler
+ if (!ai.packageName.equals(getPackageName())) {
+ // Switch components to fake new CAR_DOCK install to force bringing up the
+ // disambiguation dialog.
+ PackageManager pm = getApplicationContext().getPackageManager();
+ ComponentName component1 = new ComponentName(getPackageName(), CAR_DOCK1);
+ ComponentName component2 = new ComponentName(getPackageName(), CAR_DOCK2);
+
+ if (pm.getComponentEnabledSetting(component1) ==
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
+ swapCarDockHandler(component2, component1);
+ } else {
+ swapCarDockHandler(component1, component2);
+ }
+ }
+ }
+ }
+
+ private void swapCarDockHandler(
+ ComponentName toBeDisabledComponent, ComponentName toBeEnabledComponent) {
+ PackageManager pm = getApplicationContext().getPackageManager();
+
+ pm.setComponentEnabledSetting(toBeDisabledComponent,
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+
+ pm.setComponentEnabledSetting(toBeEnabledComponent,
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ PackageManager.DONT_KILL_APP);
+ }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java
index b658e4f..07d9cc9 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java
@@ -172,7 +172,8 @@
@Override
protected void onResume() {
super.onResume();
- if (mCurrentTest.autoStart()) {
+ //To avoid NPE during onResume,before start to iterate next test order
+ if (mCurrentTest!= null && mCurrentTest.autoStart()) {
mCurrentTest.status = READY;
}
next();
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/screenpinning/ScreenPinningTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/screenpinning/ScreenPinningTestActivity.java
index 200865e..8e72ebb 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/screenpinning/ScreenPinningTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/screenpinning/ScreenPinningTestActivity.java
@@ -104,6 +104,7 @@
TextView tv = new TextView(this);
tv.setPadding(10, 10, 10, 30);
tv.setText(id);
+ mInstructions.removeAllViews();
mInstructions.addView(tv);
}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/KeyChainTest.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/KeyChainTest.java
new file mode 100644
index 0000000..ebdb4c0
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/KeyChainTest.java
@@ -0,0 +1,464 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.security;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.security.KeyChain;
+import android.security.KeyChainAliasCallback;
+import android.security.KeyChainException;
+import android.text.method.ScrollingMovementMethod;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import com.google.mockwebserver.MockResponse;
+import com.google.mockwebserver.MockWebServer;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import java.net.Socket;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.KeyStore;
+import java.security.Principal;
+import java.security.PrivateKey;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+import java.util.List;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.X509ExtendedKeyManager;
+
+import libcore.java.security.TestKeyStore;
+import libcore.javax.net.ssl.TestSSLContext;
+
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
+
+/**
+ * Simple activity based test that exercises the KeyChain API
+ */
+public class KeyChainTest extends PassFailButtons.Activity implements View.OnClickListener {
+
+ private static final String TAG = "KeyChainTest";
+
+ private static final int REQUEST_CA_INSTALL = 1;
+
+ private TextView mInstructionView;
+ private TextView mLogView;
+ private Button mResetButton;
+ private Button mSkipButton;
+ private Button mNextButton;
+
+ private List<Step> mSteps;
+ int mCurrentStep;
+
+ private KeyStore mKeyStore;
+ private static final char[] KEYSTORE_PASSWORD = "".toCharArray();
+
+ // How long to wait before giving up on the user selecting a key alias.
+ private static final int KEYCHAIN_ALIAS_TIMEOUT_MS = (int) TimeUnit.MINUTES.toMillis(5L);
+
+ @Override public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ View root = getLayoutInflater().inflate(R.layout.keychain_main, null);
+ setContentView(root);
+
+ setInfoResources(R.string.keychain_test, R.string.keychain_info, -1);
+ setPassFailButtonClickListeners();
+
+ mInstructionView = (TextView) root.findViewById(R.id.test_instruction);
+ mLogView = (TextView) root.findViewById(R.id.test_log);
+ mLogView.setMovementMethod(new ScrollingMovementMethod());
+
+ mNextButton = (Button) root.findViewById(R.id.action_next);
+ mNextButton.setOnClickListener(this);
+
+ mResetButton = (Button) root.findViewById(R.id.action_reset);
+ mResetButton.setOnClickListener(this);
+
+ mSkipButton = (Button) root.findViewById(R.id.action_skip);
+ mSkipButton.setOnClickListener(this);
+
+ resetProgress();
+ }
+
+ @Override
+ public void onClick(View v) {
+ Step step = mSteps.get(mCurrentStep);
+ if (v == mNextButton) {
+ switch (step.task.getStatus()) {
+ case PENDING: {
+ step.task.execute();
+ break;
+ }
+ case FINISHED: {
+ if (mCurrentStep + 1 < mSteps.size()) {
+ mCurrentStep += 1;
+ updateUi();
+ } else {
+ mSkipButton.setVisibility(View.INVISIBLE);
+ mNextButton.setVisibility(View.INVISIBLE);
+ }
+ break;
+ }
+ }
+ } else if (v == mSkipButton) {
+ step.task.cancel(false);
+ mCurrentStep += 1;
+ updateUi();
+ } else if (v == mResetButton) {
+ resetProgress();
+ }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch (requestCode) {
+ case REQUEST_CA_INSTALL: {
+ if (resultCode == RESULT_OK) {
+ log("CA Certificate installed successfully");
+ } else {
+ log("REQUEST_CA_INSTALL failed with result code: " + resultCode);
+ }
+ break;
+ }
+ default:
+ throw new IllegalStateException("requestCode == " + requestCode);
+ }
+ }
+
+ private void resetProgress() {
+ getPassButton().setEnabled(false);
+ mLogView.setText("");
+
+ mSteps = new ArrayList<>();
+ mSteps.add(new Step(R.string.keychain_setup_desc, false, new SetupTestKeyStoreTask()));
+ mSteps.add(new Step(R.string.keychain_install_desc, true, new InstallCredentialsTask()));
+ mSteps.add(new Step(R.string.keychain_https_desc, false, new TestHttpsRequestTask()));
+ mSteps.add(new Step(R.string.keychain_reset_desc, true, new ClearCredentialsTask()));
+ mCurrentStep = 0;
+
+ updateUi();
+ }
+
+ private void updateUi() {
+ mLogView.setText("");
+
+ if (mCurrentStep >= mSteps.size()) {
+ mSkipButton.setVisibility(View.INVISIBLE);
+ mNextButton.setVisibility(View.INVISIBLE);
+ getPassButton().setEnabled(true);
+ return;
+ }
+
+ final Step step = mSteps.get(mCurrentStep);
+ if (step.task.getStatus() == AsyncTask.Status.PENDING) {
+ mInstructionView.setText(step.instructionTextId);
+ }
+ mSkipButton.setVisibility(step.skippable ? View.VISIBLE : View.INVISIBLE);
+ mNextButton.setVisibility(View.VISIBLE);
+ }
+
+ private class SetupTestKeyStoreTask extends AsyncTask<Void, Void, Void> {
+ @Override
+ protected Void doInBackground(Void... params) {
+ final Certificate[] chain = new Certificate[2];
+ final Key privKey;
+
+ log("Reading resources");
+ Resources res = getResources();
+ ByteArrayOutputStream userKey = new ByteArrayOutputStream();
+ try {
+ InputStream is = res.openRawResource(R.raw.userkey);
+ byte[] buffer = new byte[4096];
+ for (int n; (n = is.read(buffer, 0, buffer.length)) != -1;) {
+ userKey.write(buffer, 0, n);
+ }
+ } catch (IOException e) {
+ Log.e(TAG, "Reading private key failed", e);
+ return null;
+ }
+ log("Private key length: " + userKey.size() + " bytes");
+
+ log("Setting up KeyStore");
+ try {
+ KeyFactory keyFact = KeyFactory.getInstance("RSA");
+ privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(userKey.toByteArray()));
+
+ final CertificateFactory f = CertificateFactory.getInstance("X.509");
+ chain[0] = f.generateCertificate(res.openRawResource(R.raw.usercert));
+ chain[1] = f.generateCertificate(res.openRawResource(R.raw.cacert));
+ } catch (GeneralSecurityException gse) {
+ Log.w(TAG, "Certificate generation failed", gse);
+ return null;
+ }
+
+ try {
+ // Create a PKCS12 keystore populated with key + certificate chain
+ KeyStore ks = KeyStore.getInstance("PKCS12");
+ ks.load(null, null);
+ ks.setKeyEntry("alias", privKey, KEYSTORE_PASSWORD, chain);
+ mKeyStore = ks;
+ log("KeyStore initialized");
+ } catch (Exception e) {
+ log("KeyStore initialization failed");
+ Log.e(TAG, "", e);
+ }
+ return null;
+ }
+ }
+
+ private class InstallCredentialsTask extends AsyncTask<Void, Void, Void> {
+ @Override
+ protected Void doInBackground(Void... params) {
+ try {
+ Intent intent = KeyChain.createInstallIntent();
+ intent.putExtra(KeyChain.EXTRA_NAME, TAG);
+
+ // Write keystore to byte array for installation
+ ByteArrayOutputStream pkcs12 = new ByteArrayOutputStream();
+ mKeyStore.store(pkcs12, KEYSTORE_PASSWORD);
+ if (pkcs12.size() == 0) {
+ throw new AssertionError("Credential archive is empty");
+ }
+ log("Requesting install of server's credentials");
+ intent.putExtra(KeyChain.EXTRA_PKCS12, pkcs12.toByteArray());
+ startActivityForResult(intent, REQUEST_CA_INSTALL);
+ } catch (Exception e) {
+ log("Failed to install credentials: " + e);
+ }
+ return null;
+ }
+ }
+
+ private class TestHttpsRequestTask extends AsyncTask<Void, Void, Void> {
+ @Override
+ protected Void doInBackground(Void... params) {
+ try {
+ URL url = startWebServer();
+ makeHttpsRequest(url);
+ } catch (Exception e) {
+ Log.e(TAG, "HTTPS request unsuccessful", e);
+ log("Connection failed");
+ return null;
+ }
+
+ runOnUiThread(new Runnable() {
+ @Override public void run() {
+ getPassButton().setEnabled(true);
+ }
+ });
+ return null;
+ }
+
+ /**
+ * Create a mock web server.
+ * The server authenticates itself to the client using the key pair and certificate from the
+ * PKCS#12 keystore used in this test. Client authentication uses default trust management:
+ * the server trusts only the certificates installed in the credential storage of this
+ * user/profile.
+ */
+ private URL startWebServer() throws Exception {
+ log("Starting web server");
+ String kmfAlgoritm = KeyManagerFactory.getDefaultAlgorithm();
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(kmfAlgoritm);
+ kmf.init(mKeyStore, KEYSTORE_PASSWORD);
+ SSLContext serverContext = SSLContext.getInstance("TLS");
+ serverContext.init(kmf.getKeyManagers(),
+ null /* TrustManager[] */,
+ null /* SecureRandom */);
+ SSLSocketFactory sf = serverContext.getSocketFactory();
+ SSLSocketFactory needsClientAuth = TestSSLContext.clientAuth(sf,
+ false /* Want client auth */,
+ true /* Need client auth */);
+ MockWebServer server = new MockWebServer();
+ server.useHttps(needsClientAuth, false /* tunnelProxy */);
+ server.enqueue(new MockResponse().setBody("this response comes via HTTPS"));
+ server.play();
+ return server.getUrl("/");
+ }
+
+ /**
+ * Open a new connection to the server.
+ * The client authenticates itself to the server using a private key and certificate
+ * supplied by KeyChain. Server authentication uses default trust management: the client
+ * trusts only certificates installed in the credential storage of this user/profile. This
+ * setup is expected to work because the server uses a private key whose certificate was
+ * installed earlier during this test.
+ */
+ private void makeHttpsRequest(URL url) throws Exception {
+ log("Making https request to " + url);
+ SSLContext clientContext = SSLContext.getInstance("TLS");
+ clientContext.init(new KeyManager[] { new KeyChainKeyManager() },
+ null /* TrustManager[] */,
+ null /* SecureRandom */);
+ HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
+ connection.setSSLSocketFactory(clientContext.getSocketFactory());
+ if (connection.getResponseCode() != 200) {
+ log("Connection failed. Response code: " + connection.getResponseCode());
+ throw new AssertionError();
+ }
+ log("Connection succeeded.");
+ }
+ }
+
+ private class ClearCredentialsTask extends AsyncTask<Void, Void, Void> {
+ @Override
+ protected Void doInBackground(Void... params) {
+ final Intent securitySettingsIntent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
+ startActivity(securitySettingsIntent);
+ log("Started action: " + Settings.ACTION_SECURITY_SETTINGS);
+ log("All tests complete!");
+ return null;
+ }
+ }
+
+ /**
+ * Key manager which synchronously prompts for its aliases via KeyChain
+ */
+ private class KeyChainKeyManager extends X509ExtendedKeyManager {
+ @Override
+ public String chooseClientAlias(String[] keyTypes, Principal[] issuers, Socket socket) {
+ log("KeyChainKeyManager chooseClientAlias");
+ KeyChainAliasCallback aliasCallback = Mockito.mock(KeyChainAliasCallback.class);
+ KeyChain.choosePrivateKeyAlias(KeyChainTest.this, aliasCallback,
+ keyTypes, issuers,
+ socket.getInetAddress().getHostName(), socket.getPort(),
+ null);
+
+ ArgumentCaptor<String> aliasCaptor = ArgumentCaptor.forClass(String.class);
+ Mockito.verify(aliasCallback, Mockito.timeout((int) KEYCHAIN_ALIAS_TIMEOUT_MS))
+ .alias(aliasCaptor.capture());
+
+ log("Certificate alias: \"" + aliasCaptor.getValue() + "\"");
+ return aliasCaptor.getValue();
+ }
+
+ @Override
+ public String chooseServerAlias(String keyType,
+ Principal[] issuers,
+ Socket socket) {
+ // Not a client SSLSocket callback
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public X509Certificate[] getCertificateChain(String alias) {
+ try {
+ log("KeyChainKeyManager getCertificateChain");
+ X509Certificate[] certificateChain =
+ KeyChain.getCertificateChain(KeyChainTest.this, alias);
+ if (certificateChain == null) {
+ log("Null certificate chain!");
+ return null;
+ }
+ log("Returned " + certificateChain.length + " certificates in chain");
+ for (int i = 0; i < certificateChain.length; i++) {
+ Log.d(TAG, "certificate[" + i + "]=" + certificateChain[i]);
+ }
+ return certificateChain;
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ return null;
+ } catch (KeyChainException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public String[] getClientAliases(String keyType, Principal[] issuers) {
+ // not a client SSLSocket callback
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String[] getServerAliases(String keyType, Principal[] issuers) {
+ // not a client SSLSocket callback
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public PrivateKey getPrivateKey(String alias) {
+ try {
+ log("KeyChainKeyManager.getPrivateKey(\"" + alias + "\")");
+ PrivateKey privateKey = KeyChain.getPrivateKey(KeyChainTest.this, alias);
+ Log.d(TAG, "privateKey = " + privateKey);
+ return privateKey;
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ return null;
+ } catch (KeyChainException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ /**
+ * Write a message to the log, also to a visible TextView if available.
+ */
+ private void log(final String message) {
+ Log.d(TAG, message);
+ if (mLogView != null) {
+ runOnUiThread(new Runnable() {
+ @Override public void run() {
+ mLogView.append(message + "\n");
+ }
+ });
+ }
+ }
+
+ /**
+ * Utility class to store one step per object.
+ */
+ private static class Step {
+ // Instruction message to show before running
+ int instructionTextId;
+
+ // Whether to allow a 'skip' button for this step
+ boolean skippable;
+
+ // Set of commands to run when 'next' is pressed
+ AsyncTask<Void, Void, Void> task;
+
+ public Step(int instructionTextId, boolean skippable, AsyncTask<Void, Void, Void> task) {
+ this.instructionTextId = instructionTextId;
+ this.skippable = skippable;
+ this.task = task;
+ }
+ }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/tv/TvAppVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/tv/TvAppVerifierActivity.java
index 3529237..12e9652 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/tv/TvAppVerifierActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/tv/TvAppVerifierActivity.java
@@ -63,6 +63,7 @@
protected void setButtonEnabled(View item, boolean enabled) {
View button = item.findViewById(R.id.user_action_button);
+ button.setFocusable(enabled);
button.setClickable(enabled);
button.setEnabled(enabled);
}
@@ -70,9 +71,7 @@
protected void setPassState(View item, boolean passed) {
ImageView status = (ImageView) item.findViewById(R.id.status);
status.setImageResource(passed ? R.drawable.fs_good : R.drawable.fs_error);
- View button = item.findViewById(R.id.user_action_button);
- button.setClickable(false);
- button.setEnabled(false);
+ setButtonEnabled(item, false);
status.invalidate();
}
diff --git a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
index ffbf610..465c44e 100644
--- a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
+++ b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
@@ -41,6 +41,7 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.lang.System;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Random;
@@ -67,8 +68,9 @@
private static final String VIDEO_VP8 = MediaFormat.MIMETYPE_VIDEO_VP8;
private static final String VIDEO_H263 = MediaFormat.MIMETYPE_VIDEO_H263;
private static final String VIDEO_MPEG4 = MediaFormat.MIMETYPE_VIDEO_MPEG4;
- private static final int TOTAL_FRAMES = 300;
- private static final int NUMBER_OF_REPEAT = 10;
+ private int mCurrentTestRound = 0;
+ private long[][] mEncoderFrameTimeDiff = null;
+ private long[][] mDecoderFrameTimeDiff = null;
// i frame interval for encoder
private static final int KEY_I_FRAME_INTERVAL = 5;
@@ -96,7 +98,10 @@
private class TestConfig {
public boolean mTestPixels = true;
- public boolean mTestResult = true;
+ public boolean mTestResult = false;
+ public boolean mReportFrameTime = false;
+ public int mTotalFrames = 300;
+ public int mNumberOfRepeat = 10;
}
private TestConfig mTestConfig;
@@ -346,18 +351,22 @@
private void doTestGoog(String mimeType, int w, int h) throws Exception {
mTestConfig.mTestPixels = false;
- mTestConfig.mTestResult = false;
- doTest(true /* isGoog */, mimeType, w, h, NUMBER_OF_REPEAT);
+ mTestConfig.mReportFrameTime = true;
+ mTestConfig.mTotalFrames = 3000;
+ mTestConfig.mNumberOfRepeat = 2;
+ doTest(true /* isGoog */, mimeType, w, h);
}
private void doTestOther(String mimeType, int w, int h) throws Exception {
mTestConfig.mTestPixels = false;
- doTest(false /* isGoog */, mimeType, w, h, NUMBER_OF_REPEAT);
+ mTestConfig.mTestResult = true;
+ mTestConfig.mReportFrameTime = true;
+ mTestConfig.mTotalFrames = 3000;
+ mTestConfig.mNumberOfRepeat = 2;
+ doTest(false /* isGoog */, mimeType, w, h);
}
private void doTestDefault(String mimeType, int w, int h) throws Exception {
- mTestConfig.mTestResult = false;
-
String encoderName = getEncoderName(mimeType);
if (encoderName == null) {
Log.i(TAG, "Encoder for " + mimeType + " not found");
@@ -370,7 +379,7 @@
return;
}
- doTestByName(encoderName, decoderName, mimeType, w, h, NUMBER_OF_REPEAT);
+ doTestByName(encoderName, decoderName, mimeType, w, h);
}
/**
@@ -379,9 +388,8 @@
* @param mimeType like video/avc
* @param w video width
* @param h video height
- * @param numberRepeat how many times to repeat the encoding / decoding process
*/
- private void doTest(boolean isGoog, String mimeType, int w, int h, int numberRepeat)
+ private void doTest(boolean isGoog, String mimeType, int w, int h)
throws Exception {
String[] encoderNames = getEncoderName(mimeType, isGoog);
if (encoderNames.length == 0) {
@@ -399,13 +407,13 @@
for (String encoderName: encoderNames) {
for (String decoderName: decoderNames) {
- doTestByName(encoderName, decoderName, mimeType, w, h, numberRepeat);
+ doTestByName(encoderName, decoderName, mimeType, w, h);
}
}
}
private void doTestByName(
- String encoderName, String decoderName, String mimeType, int w, int h, int numberRepeat)
+ String encoderName, String decoderName, String mimeType, int w, int h)
throws Exception {
CodecInfo infoEnc = CodecInfo.getSupportedFormatInfo(encoderName, mimeType, w, h);
if (infoEnc == null) {
@@ -424,12 +432,15 @@
", dec format " + mDstColorFormat);
initYUVPlane(w + YUV_PLANE_ADDITIONAL_LENGTH, h + YUV_PLANE_ADDITIONAL_LENGTH);
- double[] encoderFpsResults = new double[numberRepeat];
- double[] decoderFpsResults = new double[numberRepeat];
- double[] totalFpsResults = new double[numberRepeat];
- double[] decoderRmsErrorResults = new double[numberRepeat];
+ mEncoderFrameTimeDiff = new long[mTestConfig.mNumberOfRepeat][mTestConfig.mTotalFrames - 1];
+ mDecoderFrameTimeDiff = new long[mTestConfig.mNumberOfRepeat][mTestConfig.mTotalFrames - 1];
+ double[] encoderFpsResults = new double[mTestConfig.mNumberOfRepeat];
+ double[] decoderFpsResults = new double[mTestConfig.mNumberOfRepeat];
+ double[] totalFpsResults = new double[mTestConfig.mNumberOfRepeat];
+ double[] decoderRmsErrorResults = new double[mTestConfig.mNumberOfRepeat];
boolean success = true;
- for (int i = 0; i < numberRepeat && success; i++) {
+ for (int i = 0; i < mTestConfig.mNumberOfRepeat && success; i++) {
+ mCurrentTestRound = i;
MediaFormat format = new MediaFormat();
format.setString(MediaFormat.KEY_MIME, mimeType);
format.setInteger(MediaFormat.KEY_BIT_RATE, infoEnc.mBitRate);
@@ -440,7 +451,7 @@
mFrameRate = infoEnc.mFps;
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, KEY_I_FRAME_INTERVAL);
- double encodingTime = runEncoder(encoderName, format, TOTAL_FRAMES);
+ double encodingTime = runEncoder(encoderName, format, mTestConfig.mTotalFrames);
// re-initialize format for decoder
format = new MediaFormat();
format.setString(MediaFormat.KEY_MIME, mimeType);
@@ -453,9 +464,10 @@
} else {
double decodingTime = decoderResult[0];
decoderRmsErrorResults[i] = decoderResult[1];
- encoderFpsResults[i] = (double)TOTAL_FRAMES / encodingTime * 1000.0;
- decoderFpsResults[i] = (double)TOTAL_FRAMES / decodingTime * 1000.0;
- totalFpsResults[i] = (double)TOTAL_FRAMES / (encodingTime + decodingTime) * 1000.0;
+ encoderFpsResults[i] = (double)mTestConfig.mTotalFrames / encodingTime * 1000.0;
+ decoderFpsResults[i] = (double)mTestConfig.mTotalFrames / decodingTime * 1000.0;
+ totalFpsResults[i] =
+ (double)mTestConfig.mTotalFrames / (encodingTime + decodingTime) * 1000.0;
}
// clear things for re-start
@@ -477,12 +489,21 @@
Stat.getAverage(decoderFpsResults), ResultType.HIGHER_BETTER, ResultUnit.FPS);
getReportLog().printSummary("encoder decoder", Stat.getAverage(totalFpsResults),
ResultType.HIGHER_BETTER, ResultUnit.FPS);
- // make sure that rms error is not too big.
- for (int i = 0; i < numberRepeat; i++) {
+ for (int i = 0; i < mTestConfig.mNumberOfRepeat; i++) {
+ // make sure that rms error is not too big.
if (decoderRmsErrorResults[i] >= mRmsErrorMargain) {
fail("rms error is bigger than the limit "
+ decoderRmsErrorResults[i] + " vs " + mRmsErrorMargain);
}
+
+ if (mTestConfig.mReportFrameTime) {
+ getReportLog().printValue(
+ "encodertest#" + i + ": " + Arrays.toString(mEncoderFrameTimeDiff[i]),
+ 0, ResultType.NEUTRAL, ResultUnit.NONE);
+ getReportLog().printValue(
+ "decodertest#" + i + ": " + Arrays.toString(mDecoderFrameTimeDiff[i]),
+ 0, ResultType.NEUTRAL, ResultUnit.NONE);
+ }
}
if (mTestConfig.mTestResult) {
@@ -537,6 +558,7 @@
int numBytesSubmitted = 0;
int numBytesDequeued = 0;
int inFramesCount = 0;
+ long lastOutputTimeNs = 0;
long start = System.currentTimeMillis();
while (true) {
int index;
@@ -578,6 +600,13 @@
} else if (index == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
codecOutputBuffers = codec.getOutputBuffers();
} else if (index >= 0) {
+ if (lastOutputTimeNs > 0 &&
+ (info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) == 0) {
+ long diff = System.nanoTime() - lastOutputTimeNs;
+ mEncoderFrameTimeDiff[mCurrentTestRound][mEncodedOutputBuffer.size() - 1] = diff;
+ }
+ lastOutputTimeNs = System.nanoTime();
+
dequeueOutputBufferEncoder(codec, codecOutputBuffers, index, info);
numBytesDequeued += info.size;
if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
@@ -838,6 +867,7 @@
int outFrameCount = 0;
YUVValue expected = new YUVValue();
YUVValue decoded = new YUVValue();
+ long lastOutputTimeNs = 0;
long start = System.currentTimeMillis();
while (!sawOutputEOS) {
if (inputLeft > 0) {
@@ -868,6 +898,12 @@
// only do YUV compare on EOS frame if the buffer size is none-zero
if (info.size > 0) {
+ if (lastOutputTimeNs > 0) {
+ long diff = System.nanoTime() - lastOutputTimeNs;
+ mDecoderFrameTimeDiff[mCurrentTestRound][outFrameCount - 1] = diff;
+ }
+ lastOutputTimeNs = System.nanoTime();
+
if (mTestConfig.mTestPixels) {
Point origin = getOrigin(outFrameCount);
int i;
@@ -942,8 +978,9 @@
codec.stop();
codec.release();
codec = null;
- if (outFrameCount < TOTAL_FRAMES) {
- fail("Expecting " + TOTAL_FRAMES + " frames but get " + outFrameCount + " instead.");
+ if (outFrameCount < mTestConfig.mTotalFrames) {
+ fail("Expecting " + mTestConfig.mTotalFrames +
+ " frames but get " + outFrameCount + " instead.");
}
// divide by 3 as sum is done for Y, U, V.
double errorRms = Math.sqrt(totalErrorSquared / PIXEL_CHECK_PER_FRAME / outFrameCount / 3);
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index 86fe4af..c477128 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -119,22 +119,17 @@
bug: 17508787
},
{
- description: "New tests recently added for Android Enterprise. To be moved out of CTS-staging as soon as they show that they are stable",
+ description: "These tests fail on some devices.",
names: [
- "com.android.cts.devicepolicy.LauncherAppsMultiUserTest#testGetActivitiesForNonProfileFails",
- "com.android.cts.devicepolicy.LauncherAppsMultiUserTest#testNoLauncherCallbackPackageAddedSecondaryUser",
- "com.android.cts.devicepolicy.LauncherAppsProfileTest#testGetActivitiesWithProfile",
- "com.android.cts.devicepolicy.LauncherAppsProfileTest#testLauncherCallbackPackageAddedProfile",
- "com.android.cts.devicepolicy.LauncherAppsProfileTest#testLauncherCallbackPackageRemovedProfile",
- "com.android.cts.devicepolicy.LauncherAppsProfileTest#testLauncherCallbackPackageChangedProfile",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testInstallAppMainUser",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testLauncherCallbackPackageAddedMainUser",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testLauncherCallbackPackageRemovedMainUser",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testLauncherCallbackPackageChangedMainUser",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testLauncherNonExportedAppFails",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testLaunchNonExportActivityFails",
- "com.android.cts.devicepolicy.LauncherAppsSingleUserTest#testLaunchMainActivity"
- ]
+ "android.uirendering.cts.testclasses.ExactCanvasTests#testBlueRect",
+ "android.uirendering.cts.testclasses.ExactCanvasTests#testBluePaddedSquare",
+ "android.uirendering.cts.testclasses.ViewClippingTests#testSimplePaddingClip",
+ "android.uirendering.cts.testclasses.ViewClippingTests#testSimpleClipBoundsClip",
+ "android.uirendering.cts.testclasses.ViewClippingTests#testSimpleOutlineClip",
+ "android.uirendering.cts.testclasses.ViewClippingTests#testSimpleBoundsClip",
+ "android.uirendering.cts.testclasses.InfrastructureTests#testViewInitializer"
+ ],
+ bug: 17511118
},
{
description: "This test failed on devices that use effect off loading. In addition it uses hidden apis",
diff --git a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryInfoTest.java b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryInfoTest.java
index 3248caa..8ac5afb 100644
--- a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryInfoTest.java
+++ b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryInfoTest.java
@@ -34,7 +34,7 @@
}
public void testWriteToParcel() throws Exception {
- final long AVAILMEM = Process.getFreeMemory();
+ final long AVAILMEM = 1000l;
mMemory.availMem = AVAILMEM;
final long THRESHOLD = 500l;
mMemory.threshold = THRESHOLD;
@@ -59,7 +59,7 @@
}
public void testReadFromParcel() throws Exception {
- final long AVAILMEM = Process.getFreeMemory();
+ final long AVAILMEM = 1000l;
mMemory.availMem = AVAILMEM;
final long THRESHOLD = 500l;
mMemory.threshold = THRESHOLD;
diff --git a/tests/tests/app/src/android/app/cts/DownloadManagerTest.java b/tests/tests/app/src/android/app/cts/DownloadManagerTest.java
index 2c87b78..8c0381a 100644
--- a/tests/tests/app/src/android/app/cts/DownloadManagerTest.java
+++ b/tests/tests/app/src/android/app/cts/DownloadManagerTest.java
@@ -32,13 +32,9 @@
import android.text.format.DateUtils;
import android.webkit.cts.CtsTestServer;
-import com.google.android.collect.Sets;
-
import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
public class DownloadManagerTest extends AndroidTestCase {
@@ -309,7 +305,7 @@
}
private class DownloadCompleteReceiver extends BroadcastReceiver {
- private HashSet<Long> mCompleteIds = Sets.newHashSet();
+ private HashSet<Long> mCompleteIds = new HashSet<>();
public DownloadCompleteReceiver() {
}
diff --git a/tests/tests/app/src/android/app/cts/FragmentTest.java b/tests/tests/app/src/android/app/cts/FragmentTest.java
index 006f0a9..5873ee0 100644
--- a/tests/tests/app/src/android/app/cts/FragmentTest.java
+++ b/tests/tests/app/src/android/app/cts/FragmentTest.java
@@ -17,15 +17,8 @@
package android.app.cts;
import android.app.Fragment;
-import android.content.Context;
import android.test.AndroidTestCase;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
-@TestTargetClass(Fragment.class)
public class FragmentTest extends AndroidTestCase {
public static class TestFragment extends Fragment {
diff --git a/tests/tests/app/src/android/app/cts/NotificationTest.java b/tests/tests/app/src/android/app/cts/NotificationTest.java
index 614d7f2..17f433e 100644
--- a/tests/tests/app/src/android/app/cts/NotificationTest.java
+++ b/tests/tests/app/src/android/app/cts/NotificationTest.java
@@ -77,7 +77,7 @@
mNotification.tickerText = TICKER_TEXT;
final RemoteViews contentView = new RemoteViews(mContext.getPackageName(),
- com.android.internal.R.layout.status_bar_latest_event_content);
+ android.R.layout.simple_list_item_1);
mNotification.contentView = contentView;
mNotification.defaults = 0;
mNotification.flags = 0;
diff --git a/tests/tests/content/src/android/content/cts/ContextTest.java b/tests/tests/content/src/android/content/cts/ContextTest.java
index 8ee10d4..d77c1b1 100644
--- a/tests/tests/content/src/android/content/cts/ContextTest.java
+++ b/tests/tests/content/src/android/content/cts/ContextTest.java
@@ -17,16 +17,16 @@
package android.content.cts;
import com.android.cts.content.R;
-import com.android.internal.util.XmlUtils;
import org.xmlpull.v1.XmlPullParserException;
import android.content.Context;
+import android.content.cts.util.XmlUtils;
import android.content.res.ColorStateList;
-import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
import android.content.res.Resources.NotFoundException;
import android.content.res.Resources.Theme;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
import android.test.AndroidTestCase;
import android.util.AttributeSet;
import android.util.Xml;
diff --git a/tests/tests/content/src/android/content/cts/IntentTest.java b/tests/tests/content/src/android/content/cts/IntentTest.java
index 0f9a5cc..677b31f 100644
--- a/tests/tests/content/src/android/content/cts/IntentTest.java
+++ b/tests/tests/content/src/android/content/cts/IntentTest.java
@@ -16,9 +16,6 @@
package android.content.cts;
-import com.android.internal.app.ResolverActivity;
-import com.android.internal.util.XmlUtils;
-
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -26,6 +23,7 @@
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.cts.util.XmlUtils;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -38,7 +36,6 @@
import android.provider.Contacts.People;
import android.test.AndroidTestCase;
import android.util.AttributeSet;
-import android.util.Log;
import android.util.Xml;
import java.io.IOException;
diff --git a/tests/tests/content/src/android/content/cts/util/XmlUtils.java b/tests/tests/content/src/android/content/cts/util/XmlUtils.java
new file mode 100644
index 0000000..0354da8
--- /dev/null
+++ b/tests/tests/content/src/android/content/cts/util/XmlUtils.java
@@ -0,0 +1,1694 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.content.cts.util;
+
+import com.android.internal.util.FastXmlSerializer;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.util.ArrayMap;
+import android.util.Base64;
+import android.util.Xml;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ProtocolException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** {@hide} */
+public class XmlUtils {
+
+ public static void skipCurrentTag(XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ int outerDepth = parser.getDepth();
+ int type;
+ while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
+ && (type != XmlPullParser.END_TAG
+ || parser.getDepth() > outerDepth)) {
+ }
+ }
+
+ public static final int
+ convertValueToList(CharSequence value, String[] options, int defaultValue)
+ {
+ if (null != value) {
+ for (int i = 0; i < options.length; i++) {
+ if (value.equals(options[i]))
+ return i;
+ }
+ }
+
+ return defaultValue;
+ }
+
+ public static final boolean
+ convertValueToBoolean(CharSequence value, boolean defaultValue)
+ {
+ boolean result = false;
+
+ if (null == value)
+ return defaultValue;
+
+ if (value.equals("1")
+ || value.equals("true")
+ || value.equals("TRUE"))
+ result = true;
+
+ return result;
+ }
+
+ public static final int
+ convertValueToInt(CharSequence charSeq, int defaultValue)
+ {
+ if (null == charSeq)
+ return defaultValue;
+
+ String nm = charSeq.toString();
+
+ // XXX This code is copied from Integer.decode() so we don't
+ // have to instantiate an Integer!
+
+ int value;
+ int sign = 1;
+ int index = 0;
+ int len = nm.length();
+ int base = 10;
+
+ if ('-' == nm.charAt(0)) {
+ sign = -1;
+ index++;
+ }
+
+ if ('0' == nm.charAt(index)) {
+ // Quick check for a zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = nm.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) {
+ index += 2;
+ base = 16;
+ } else {
+ index++;
+ base = 8;
+ }
+ }
+ else if ('#' == nm.charAt(index))
+ {
+ index++;
+ base = 16;
+ }
+
+ return Integer.parseInt(nm.substring(index), base) * sign;
+ }
+
+ public static int convertValueToUnsignedInt(String value, int defaultValue) {
+ if (null == value) {
+ return defaultValue;
+ }
+
+ return parseUnsignedIntAttribute(value);
+ }
+
+ public static int parseUnsignedIntAttribute(CharSequence charSeq) {
+ String value = charSeq.toString();
+
+ long bits;
+ int index = 0;
+ int len = value.length();
+ int base = 10;
+
+ if ('0' == value.charAt(index)) {
+ // Quick check for zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = value.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) { // check for hex
+ index += 2;
+ base = 16;
+ } else { // check for octal
+ index++;
+ base = 8;
+ }
+ } else if ('#' == value.charAt(index)) {
+ index++;
+ base = 16;
+ }
+
+ return (int) Long.parseLong(value.substring(index), base);
+ }
+
+ /**
+ * Flatten a Map into an output stream as XML. The map can later be
+ * read back with readMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param out Where to write the XML data.
+ *
+ * @see #writeMapXml(Map, String, XmlSerializer)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ */
+ public static final void writeMapXml(Map val, OutputStream out)
+ throws XmlPullParserException, IOException {
+ XmlSerializer serializer = new FastXmlSerializer();
+ serializer.setOutput(out, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+ writeMapXml(val, null, serializer);
+ serializer.endDocument();
+ }
+
+ /**
+ * Flatten a List into an output stream as XML. The list can later be
+ * read back with readListXml().
+ *
+ * @param val The list to be flattened.
+ * @param out Where to write the XML data.
+ *
+ * @see #writeListXml(List, String, XmlSerializer)
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readListXml
+ */
+ public static final void writeListXml(List val, OutputStream out)
+ throws XmlPullParserException, IOException
+ {
+ XmlSerializer serializer = Xml.newSerializer();
+ serializer.setOutput(out, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+ writeListXml(val, null, serializer);
+ serializer.endDocument();
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the map into.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ */
+ public static final void writeMapXml(Map val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ writeMapXml(val, name, out, null);
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the map into.
+ * @param callback Method to call when an Object type is not recognized.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ *
+ * @hide
+ */
+ public static final void writeMapXml(Map val, String name, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "map");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ writeMapXml(val, out, callback);
+
+ out.endTag(null, "map");
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml(). This method presumes that the start tag and
+ * name attribute have already been written and does not write an end tag.
+ *
+ * @param val The map to be flattened.
+ * @param out XmlSerializer to write the map into.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ *
+ * @hide
+ */
+ public static final void writeMapXml(Map val, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+ if (val == null) {
+ return;
+ }
+
+ Set s = val.entrySet();
+ Iterator i = s.iterator();
+
+ while (i.hasNext()) {
+ Map.Entry e = (Map.Entry)i.next();
+ writeValueXml(e.getValue(), (String)e.getKey(), out, callback);
+ }
+ }
+
+ /**
+ * Flatten a List into an XmlSerializer. The list can later be read back
+ * with readThisListXml().
+ *
+ * @param val The list to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the list into.
+ *
+ * @see #writeListXml(List, OutputStream)
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readListXml
+ */
+ public static final void writeListXml(List val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException
+ {
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "list");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ int N = val.size();
+ int i=0;
+ while (i < N) {
+ writeValueXml(val.get(i), null, out);
+ i++;
+ }
+
+ out.endTag(null, "list");
+ }
+
+ public static final void writeSetXml(Set val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "set");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ for (Object v : val) {
+ writeValueXml(v, null, out);
+ }
+
+ out.endTag(null, "set");
+ }
+
+ /**
+ * Flatten a byte[] into an XmlSerializer. The list can later be read back
+ * with readThisByteArrayXml().
+ *
+ * @param val The byte array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ */
+ public static final void writeByteArrayXml(byte[] val, String name,
+ XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "byte-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ StringBuilder sb = new StringBuilder(val.length*2);
+ for (int i=0; i<N; i++) {
+ int b = val[i];
+ int h = b>>4;
+ sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+ h = b&0xff;
+ sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+ }
+
+ out.text(sb.toString());
+
+ out.endTag(null, "byte-array");
+ }
+
+ /**
+ * Flatten an int[] into an XmlSerializer. The list can later be read back
+ * with readThisIntArrayXml().
+ *
+ * @param val The int array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeIntArrayXml(int[] val, String name,
+ XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "int-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Integer.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "int-array");
+ }
+
+ /**
+ * Flatten a long[] into an XmlSerializer. The list can later be read back
+ * with readThisLongArrayXml().
+ *
+ * @param val The long array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeLongArrayXml(long[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "long-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Long.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "long-array");
+ }
+
+ /**
+ * Flatten a double[] into an XmlSerializer. The list can later be read back
+ * with readThisDoubleArrayXml().
+ *
+ * @param val The double array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeDoubleArrayXml(double[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "double-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Double.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "double-array");
+ }
+
+ /**
+ * Flatten a String[] into an XmlSerializer. The list can later be read back
+ * with readThisStringArrayXml().
+ *
+ * @param val The String array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeStringArrayXml(String[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "string-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", val[i]);
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "string-array");
+ }
+
+ /**
+ * Flatten a boolean[] into an XmlSerializer. The list can later be read back
+ * with readThisBooleanArrayXml().
+ *
+ * @param val The boolean array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeBooleanArrayXml(boolean[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "boolean-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Boolean.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "boolean-array");
+ }
+
+ /**
+ * Flatten an object's value into an XmlSerializer. The value can later
+ * be read back with readThisValueXml().
+ *
+ * Currently supported value types are: null, String, Integer, Long,
+ * Float, Double Boolean, Map, List.
+ *
+ * @param v The object to be flattened.
+ * @param name Name attribute to include with this value's tag, or null
+ * for none.
+ * @param out XmlSerializer to write the object into.
+ *
+ * @see #writeMapXml
+ * @see #writeListXml
+ * @see #readValueXml
+ */
+ public static final void writeValueXml(Object v, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ writeValueXml(v, name, out, null);
+ }
+
+ /**
+ * Flatten an object's value into an XmlSerializer. The value can later
+ * be read back with readThisValueXml().
+ *
+ * Currently supported value types are: null, String, Integer, Long,
+ * Float, Double Boolean, Map, List.
+ *
+ * @param v The object to be flattened.
+ * @param name Name attribute to include with this value's tag, or null
+ * for none.
+ * @param out XmlSerializer to write the object into.
+ * @param callback Handler for Object types not recognized.
+ *
+ * @see #writeMapXml
+ * @see #writeListXml
+ * @see #readValueXml
+ */
+ private static final void writeValueXml(Object v, String name, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+ String typeStr;
+ if (v == null) {
+ out.startTag(null, "null");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.endTag(null, "null");
+ return;
+ } else if (v instanceof String) {
+ out.startTag(null, "string");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.text(v.toString());
+ out.endTag(null, "string");
+ return;
+ } else if (v instanceof Integer) {
+ typeStr = "int";
+ } else if (v instanceof Long) {
+ typeStr = "long";
+ } else if (v instanceof Float) {
+ typeStr = "float";
+ } else if (v instanceof Double) {
+ typeStr = "double";
+ } else if (v instanceof Boolean) {
+ typeStr = "boolean";
+ } else if (v instanceof byte[]) {
+ writeByteArrayXml((byte[])v, name, out);
+ return;
+ } else if (v instanceof int[]) {
+ writeIntArrayXml((int[])v, name, out);
+ return;
+ } else if (v instanceof long[]) {
+ writeLongArrayXml((long[])v, name, out);
+ return;
+ } else if (v instanceof double[]) {
+ writeDoubleArrayXml((double[])v, name, out);
+ return;
+ } else if (v instanceof String[]) {
+ writeStringArrayXml((String[])v, name, out);
+ return;
+ } else if (v instanceof boolean[]) {
+ writeBooleanArrayXml((boolean[])v, name, out);
+ return;
+ } else if (v instanceof Map) {
+ writeMapXml((Map)v, name, out);
+ return;
+ } else if (v instanceof List) {
+ writeListXml((List) v, name, out);
+ return;
+ } else if (v instanceof Set) {
+ writeSetXml((Set) v, name, out);
+ return;
+ } else if (v instanceof CharSequence) {
+ // XXX This is to allow us to at least write something if
+ // we encounter styled text... but it means we will drop all
+ // of the styling information. :(
+ out.startTag(null, "string");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.text(v.toString());
+ out.endTag(null, "string");
+ return;
+ } else if (callback != null) {
+ callback.writeUnknownObject(v, name, out);
+ return;
+ } else {
+ throw new RuntimeException("writeValueXml: unable to write value " + v);
+ }
+
+ out.startTag(null, typeStr);
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.attribute(null, "value", v.toString());
+ out.endTag(null, typeStr);
+ }
+
+ /**
+ * Read a HashMap from an InputStream containing XML. The stream can
+ * previously have been written by writeMapXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return HashMap The resulting map.
+ *
+ * @see #readListXml
+ * @see #readValueXml
+ * @see #readThisMapXml
+ * #see #writeMapXml
+ */
+ @SuppressWarnings("unchecked")
+ public static final HashMap<String, ?> readMapXml(InputStream in)
+ throws XmlPullParserException, IOException
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, StandardCharsets.UTF_8.name());
+ return (HashMap<String, ?>) readValueXml(parser, new String[1]);
+ }
+
+ /**
+ * Read an ArrayList from an InputStream containing XML. The stream can
+ * previously have been written by writeListXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return ArrayList The resulting list.
+ *
+ * @see #readMapXml
+ * @see #readValueXml
+ * @see #readThisListXml
+ * @see #writeListXml
+ */
+ public static final ArrayList readListXml(InputStream in)
+ throws XmlPullParserException, IOException
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, StandardCharsets.UTF_8.name());
+ return (ArrayList)readValueXml(parser, new String[1]);
+ }
+
+
+ /**
+ * Read a HashSet from an InputStream containing XML. The stream can
+ * previously have been written by writeSetXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return HashSet The resulting set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readValueXml
+ * @see #readThisSetXml
+ * @see #writeSetXml
+ */
+ public static final HashSet readSetXml(InputStream in)
+ throws XmlPullParserException, IOException {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, null);
+ return (HashSet) readValueXml(parser, new String[1]);
+ }
+
+ /**
+ * Read a HashMap object from an XmlPullParser. The XML data could
+ * previously have been generated by writeMapXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the map.
+ *
+ * @param parser The XmlPullParser from which to read the map data.
+ * @param endTag Name of the tag that will end the map, usually "map".
+ * @param name An array of one string, used to return the name attribute
+ * of the map's tag.
+ *
+ * @return HashMap The newly generated map.
+ *
+ * @see #readMapXml
+ */
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+ return readThisMapXml(parser, endTag, name, null);
+ }
+
+ /**
+ * Read a HashMap object from an XmlPullParser. The XML data could
+ * previously have been generated by writeMapXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the map.
+ *
+ * @param parser The XmlPullParser from which to read the map data.
+ * @param endTag Name of the tag that will end the map, usually "map".
+ * @param name An array of one string, used to return the name attribute
+ * of the map's tag.
+ *
+ * @return HashMap The newly generated map.
+ *
+ * @see #readMapXml
+ * @hide
+ */
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback)
+ throws XmlPullParserException, IOException
+ {
+ HashMap<String, Object> map = new HashMap<String, Object>();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, false);
+ map.put(name[0], val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return map;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Like {@link #readThisMapXml}, but returns an ArrayMap instead of HashMap.
+ * @hide
+ */
+ public static final ArrayMap<String, ?> readThisArrayMapXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback)
+ throws XmlPullParserException, IOException
+ {
+ ArrayMap<String, Object> map = new ArrayMap<>();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, true);
+ map.put(name[0], val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return map;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read an ArrayList object from an XmlPullParser. The XML data could
+ * previously have been generated by writeListXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return HashMap The newly generated list.
+ *
+ * @see #readListXml
+ */
+ public static final ArrayList readThisListXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+ return readThisListXml(parser, endTag, name, null, false);
+ }
+
+ /**
+ * Read an ArrayList object from an XmlPullParser. The XML data could
+ * previously have been generated by writeListXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return HashMap The newly generated list.
+ *
+ * @see #readListXml
+ */
+ private static final ArrayList readThisListXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ ArrayList list = new ArrayList();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, arrayMap);
+ list.add(val);
+ //System.out.println("Adding to list: " + val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return list;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a HashSet object from an XmlPullParser. The XML data could previously
+ * have been generated by writeSetXml(). The XmlPullParser must be positioned
+ * <em>after</em> the tag that begins the set.
+ *
+ * @param parser The XmlPullParser from which to read the set data.
+ * @param endTag Name of the tag that will end the set, usually "set".
+ * @param name An array of one string, used to return the name attribute
+ * of the set's tag.
+ *
+ * @return HashSet The newly generated set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readSetXml
+ */
+ public static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+ return readThisSetXml(parser, endTag, name, null, false);
+ }
+
+ /**
+ * Read a HashSet object from an XmlPullParser. The XML data could previously
+ * have been generated by writeSetXml(). The XmlPullParser must be positioned
+ * <em>after</em> the tag that begins the set.
+ *
+ * @param parser The XmlPullParser from which to read the set data.
+ * @param endTag Name of the tag that will end the set, usually "set".
+ * @param name An array of one string, used to return the name attribute
+ * of the set's tag.
+ *
+ * @return HashSet The newly generated set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readSetXml
+ * @hide
+ */
+ private static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name,
+ ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ HashSet set = new HashSet();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, arrayMap);
+ set.add(val);
+ //System.out.println("Adding to set: " + val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return set;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read an int[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeIntArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated int[].
+ *
+ * @see #readListXml
+ */
+ public static final int[] readThisIntArrayXml(XmlPullParser parser,
+ String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException(
+ "Need num attribute in byte-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in num attribute in byte-array");
+ }
+ parser.next();
+
+ int[] array = new int[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Integer.parseInt(
+ parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException(
+ "Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException(
+ "Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: "
+ + parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a long[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeLongArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated long[].
+ *
+ * @see #readListXml
+ */
+ public static final long[] readThisLongArrayXml(XmlPullParser parser,
+ String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in long-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in long-array");
+ }
+ parser.next();
+
+ long[] array = new long[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Long.parseLong(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a double[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeDoubleArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "double-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated double[].
+ *
+ * @see #readListXml
+ */
+ public static final double[] readThisDoubleArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in double-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in double-array");
+ }
+ parser.next();
+
+ double[] array = new double[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Double.parseDouble(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a String[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeStringArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "string-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated String[].
+ *
+ * @see #readListXml
+ */
+ public static final String[] readThisStringArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in string-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in string-array");
+ }
+ parser.next();
+
+ String[] array = new String[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = parser.getAttributeValue(null, "value");
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a boolean[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeBooleanArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "string-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated boolean[].
+ *
+ * @see #readListXml
+ */
+ public static final boolean[] readThisBooleanArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in string-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in string-array");
+ }
+ parser.next();
+
+ boolean[] array = new boolean[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Boolean.valueOf(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a flattened object from an XmlPullParser. The XML data could
+ * previously have been written with writeMapXml(), writeListXml(), or
+ * writeValueXml(). The XmlPullParser must be positioned <em>at</em> the
+ * tag that defines the value.
+ *
+ * @param parser The XmlPullParser from which to read the object.
+ * @param name An array of one string, used to return the name attribute
+ * of the value's tag.
+ *
+ * @return Object The newly generated value object.
+ *
+ * @see #readMapXml
+ * @see #readListXml
+ * @see #writeValueXml
+ */
+ public static final Object readValueXml(XmlPullParser parser, String[] name)
+ throws XmlPullParserException, IOException
+ {
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ return readThisValueXml(parser, name, null, false);
+ } else if (eventType == parser.END_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected end tag at: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ throw new XmlPullParserException(
+ "Unexpected text: " + parser.getText());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Unexpected end of document");
+ }
+
+ private static final Object readThisValueXml(XmlPullParser parser, String[] name,
+ ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ final String valueName = parser.getAttributeValue(null, "name");
+ final String tagName = parser.getName();
+
+ //System.out.println("Reading this value tag: " + tagName + ", name=" + valueName);
+
+ Object res;
+
+ if (tagName.equals("null")) {
+ res = null;
+ } else if (tagName.equals("string")) {
+ String value = "";
+ int eventType;
+ while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+ if (eventType == parser.END_TAG) {
+ if (parser.getName().equals("string")) {
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + value);
+ return value;
+ }
+ throw new XmlPullParserException(
+ "Unexpected end tag in <string>: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ value += parser.getText();
+ } else if (eventType == parser.START_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected start tag in <string>: " + parser.getName());
+ }
+ }
+ throw new XmlPullParserException(
+ "Unexpected end of document in <string>");
+ } else if ((res = readThisPrimitiveValueXml(parser, tagName)) != null) {
+ // all work already done by readThisPrimitiveValueXml
+ } else if (tagName.equals("int-array")) {
+ res = readThisIntArrayXml(parser, "int-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("long-array")) {
+ res = readThisLongArrayXml(parser, "long-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("double-array")) {
+ res = readThisDoubleArrayXml(parser, "double-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("string-array")) {
+ res = readThisStringArrayXml(parser, "string-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("boolean-array")) {
+ res = readThisBooleanArrayXml(parser, "boolean-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("map")) {
+ parser.next();
+ res = arrayMap
+ ? readThisArrayMapXml(parser, "map", name, callback)
+ : readThisMapXml(parser, "map", name, callback);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("list")) {
+ parser.next();
+ res = readThisListXml(parser, "list", name, callback, arrayMap);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("set")) {
+ parser.next();
+ res = readThisSetXml(parser, "set", name, callback, arrayMap);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (callback != null) {
+ res = callback.readThisUnknownObjectXml(parser, tagName);
+ name[0] = valueName;
+ return res;
+ } else {
+ throw new XmlPullParserException("Unknown tag: " + tagName);
+ }
+
+ // Skip through to end tag.
+ int eventType;
+ while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+ if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(tagName)) {
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ }
+ throw new XmlPullParserException(
+ "Unexpected end tag in <" + tagName + ">: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ throw new XmlPullParserException(
+ "Unexpected text in <" + tagName + ">: " + parser.getName());
+ } else if (eventType == parser.START_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected start tag in <" + tagName + ">: " + parser.getName());
+ }
+ }
+ throw new XmlPullParserException(
+ "Unexpected end of document in <" + tagName + ">");
+ }
+
+ private static final Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName)
+ throws XmlPullParserException, IOException
+ {
+ try {
+ if (tagName.equals("int")) {
+ return Integer.parseInt(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("long")) {
+ return Long.valueOf(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("float")) {
+ return new Float(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("double")) {
+ return new Double(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("boolean")) {
+ return Boolean.valueOf(parser.getAttributeValue(null, "value"));
+ } else {
+ return null;
+ }
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in <" + tagName + ">");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in value attribute in <" + tagName + ">");
+ }
+ }
+
+ public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
+ {
+ int type;
+ while ((type=parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+
+ if (type != parser.START_TAG) {
+ throw new XmlPullParserException("No start tag found");
+ }
+
+ if (!parser.getName().equals(firstElementName)) {
+ throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+ ", expected " + firstElementName);
+ }
+ }
+
+ public static final void nextElement(XmlPullParser parser) throws XmlPullParserException, IOException
+ {
+ int type;
+ while ((type=parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+ }
+
+ public static boolean nextElementWithin(XmlPullParser parser, int outerDepth)
+ throws IOException, XmlPullParserException {
+ for (;;) {
+ int type = parser.next();
+ if (type == XmlPullParser.END_DOCUMENT
+ || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) {
+ return false;
+ }
+ if (type == XmlPullParser.START_TAG
+ && parser.getDepth() == outerDepth + 1) {
+ return true;
+ }
+ }
+ }
+
+ public static int readIntAttribute(XmlPullParser in, String name, int defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static int readIntAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as int");
+ }
+ }
+
+ public static void writeIntAttribute(XmlSerializer out, String name, int value)
+ throws IOException {
+ out.attribute(null, name, Integer.toString(value));
+ }
+
+ public static long readLongAttribute(XmlPullParser in, String name, long defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static long readLongAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as long");
+ }
+ }
+
+ public static void writeLongAttribute(XmlSerializer out, String name, long value)
+ throws IOException {
+ out.attribute(null, name, Long.toString(value));
+ }
+
+ public static float readFloatAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Float.parseFloat(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as long");
+ }
+ }
+
+ public static void writeFloatAttribute(XmlSerializer out, String name, float value)
+ throws IOException {
+ out.attribute(null, name, Float.toString(value));
+ }
+
+ public static boolean readBooleanAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ return Boolean.parseBoolean(value);
+ }
+
+ public static boolean readBooleanAttribute(XmlPullParser in, String name,
+ boolean defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ if (value == null) {
+ return defaultValue;
+ } else {
+ return Boolean.parseBoolean(value);
+ }
+ }
+
+ public static void writeBooleanAttribute(XmlSerializer out, String name, boolean value)
+ throws IOException {
+ out.attribute(null, name, Boolean.toString(value));
+ }
+
+ public static Uri readUriAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ return (value != null) ? Uri.parse(value) : null;
+ }
+
+ public static void writeUriAttribute(XmlSerializer out, String name, Uri value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, value.toString());
+ }
+ }
+
+ public static String readStringAttribute(XmlPullParser in, String name) {
+ return in.getAttributeValue(null, name);
+ }
+
+ public static void writeStringAttribute(XmlSerializer out, String name, String value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, value);
+ }
+ }
+
+ public static byte[] readByteArrayAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ if (value != null) {
+ return Base64.decode(value, Base64.DEFAULT);
+ } else {
+ return null;
+ }
+ }
+
+ public static void writeByteArrayAttribute(XmlSerializer out, String name, byte[] value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, Base64.encodeToString(value, Base64.DEFAULT));
+ }
+ }
+
+ public static Bitmap readBitmapAttribute(XmlPullParser in, String name) {
+ final byte[] value = readByteArrayAttribute(in, name);
+ if (value != null) {
+ return BitmapFactory.decodeByteArray(value, 0, value.length);
+ } else {
+ return null;
+ }
+ }
+
+ @Deprecated
+ public static void writeBitmapAttribute(XmlSerializer out, String name, Bitmap value)
+ throws IOException {
+ if (value != null) {
+ final ByteArrayOutputStream os = new ByteArrayOutputStream();
+ value.compress(CompressFormat.PNG, 90, os);
+ writeByteArrayAttribute(out, name, os.toByteArray());
+ }
+ }
+
+ /** @hide */
+ public interface WriteMapCallback {
+ /**
+ * Called from writeMapXml when an Object type is not recognized. The implementer
+ * must write out the entire element including start and end tags.
+ *
+ * @param v The object to be written out
+ * @param name The mapping key for v. Must be written into the "name" attribute of the
+ * start tag.
+ * @param out The XML output stream.
+ * @throws XmlPullParserException on unrecognized Object type.
+ * @throws IOException on XmlSerializer serialization errors.
+ * @hide
+ */
+ public void writeUnknownObject(Object v, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException;
+ }
+
+ /** @hide */
+ public interface ReadMapCallback {
+ /**
+ * Called from readThisMapXml when a START_TAG is not recognized. The input stream
+ * is positioned within the start tag so that attributes can be read using in.getAttribute.
+ *
+ * @param in the XML input stream
+ * @param tag the START_TAG that was not recognized.
+ * @return the Object parsed from the stream which will be put into the map.
+ * @throws XmlPullParserException if the START_TAG is not recognized.
+ * @throws IOException on XmlPullParser serialization errors.
+ * @hide
+ */
+ public Object readThisUnknownObjectXml(XmlPullParser in, String tag)
+ throws XmlPullParserException, IOException;
+ }
+}
diff --git a/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java b/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java
index 2870fee..e8d363b 100644
--- a/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java
+++ b/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java
@@ -15,14 +15,12 @@
*/
package android.content.res.cts;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import com.android.cts.content.R;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
+import android.content.cts.util.XmlUtils;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.content.res.Resources;
@@ -30,8 +28,10 @@
import android.test.AndroidTestCase;
import android.util.TypedValue;
-import com.android.cts.content.R;
-import com.android.internal.util.XmlUtils;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
public class AssetManagerTest extends AndroidTestCase{
diff --git a/tests/tests/content/src/android/content/res/cts/ResourcesTest.java b/tests/tests/content/src/android/content/res/cts/ResourcesTest.java
index 88caa6f..4e2d60a 100644
--- a/tests/tests/content/src/android/content/res/cts/ResourcesTest.java
+++ b/tests/tests/content/src/android/content/res/cts/ResourcesTest.java
@@ -17,20 +17,19 @@
package android.content.res.cts;
import com.android.cts.content.R;
-import com.android.internal.util.XmlUtils;
-
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.content.Context;
+import android.content.cts.util.XmlUtils;
import android.content.res.AssetManager;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
-import android.content.res.Resources.NotFoundException;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.test.AndroidTestCase;
diff --git a/tests/tests/content/src/android/content/res/cts/TypedArrayTest.java b/tests/tests/content/src/android/content/res/cts/TypedArrayTest.java
index cc6c5ec..346bb9b 100644
--- a/tests/tests/content/src/android/content/res/cts/TypedArrayTest.java
+++ b/tests/tests/content/src/android/content/res/cts/TypedArrayTest.java
@@ -16,10 +16,11 @@
package android.content.res.cts;
-import java.io.IOException;
+import com.android.cts.content.R;
import org.xmlpull.v1.XmlPullParserException;
+import android.content.cts.util.XmlUtils;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.test.AndroidTestCase;
@@ -27,8 +28,7 @@
import android.util.TypedValue;
import android.view.ContextThemeWrapper;
-import com.android.cts.content.R;
-import com.android.internal.util.XmlUtils;
+import java.io.IOException;
public class TypedArrayTest extends AndroidTestCase{
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java
index 7368376..ad1951c 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java
@@ -754,6 +754,10 @@
throws Exception {
final int NUM_SINGLE_SHOT_TEST = 5;
final int FRAMEDROP_TOLERANCE = 8;
+ final int FRAME_SIZE_15M = 15000000;
+ final float FRAME_DROP_TOLERENCE_FACTOR = 1.5f;
+ int kFrameDrop_Tolerence = FRAMEDROP_TOLERANCE;
+
for (int profileId : mCamcorderProfileList) {
int cameraId = Integer.valueOf(mCamera.getId());
if (!CamcorderProfile.hasProfile(cameraId, profileId) ||
@@ -789,6 +793,8 @@
videoSnapshotSz = candidateSize;
}
}
+ if (videoSnapshotSz.getWidth() * videoSnapshotSz.getHeight() > FRAME_SIZE_15M)
+ kFrameDrop_Tolerence = (int)(FRAMEDROP_TOLERANCE * FRAME_DROP_TOLERENCE_FACTOR);
/**
* Only test full res snapshot when below conditions are all true.
@@ -902,8 +908,8 @@
"Camera %d Video size %s: Number of dropped frames %d must not"
+ " be larger than %d",
cameraId, videoSz.toString(), totalDroppedFrames,
- FRAMEDROP_TOLERANCE),
- FRAMEDROP_TOLERANCE, totalDroppedFrames);
+ kFrameDrop_Tolerence),
+ kFrameDrop_Tolerence, totalDroppedFrames);
}
closeImageReader();
}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
index a078ad4..4b213fe 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
@@ -25,6 +25,7 @@
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureResult;
import android.hardware.camera2.TotalCaptureResult;
import android.hardware.camera2.CaptureFailure;
import android.hardware.camera2.params.InputConfiguration;
@@ -58,6 +59,12 @@
private static final int CONFIGURE_TIMEOUT = 5000; //ms
private static final int CAPTURE_TIMEOUT = 1000; //ms
+ // For testTriggerInteractions
+ private static final int PREVIEW_WARMUP_FRAMES = 60;
+ private static final int MAX_RESULT_STATE_CHANGE_WAIT_FRAMES = 100;
+ private static final int MAX_TRIGGER_SEQUENCE_FRAMES = 180; // 6 sec at 30 fps
+ private static final int MAX_RESULT_STATE_POSTCHANGE_WAIT_FRAMES = 10;
+
/**
* Test that a {@link CameraCaptureSession} can be configured with a {@link Surface} containing
* a dimension other than one of the supported output dimensions. The buffers produced into
@@ -347,6 +354,634 @@
}
}
+ public void testBasicTriggerSequence() throws Exception {
+
+ for (String id : mCameraIds) {
+ Log.i(TAG, String.format("Testing Camera %s", id));
+
+ openDevice(id);
+ try {
+ // Legacy devices do not support precapture trigger; don't test devices that
+ // can't focus
+ if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
+ continue;
+ }
+
+ int[] availableAfModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
+ int[] availableAeModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
+
+ for (int afMode : availableAfModes) {
+
+ if (afMode == CameraCharacteristics.CONTROL_AF_MODE_OFF ||
+ afMode == CameraCharacteristics.CONTROL_AF_MODE_EDOF) {
+ // Only test AF modes that have meaningful trigger behavior
+ continue;
+ }
+
+ for (int aeMode : availableAeModes) {
+ if (aeMode == CameraCharacteristics.CONTROL_AE_MODE_OFF) {
+ // Only test AE modes that have meaningful trigger behavior
+ continue;
+ }
+
+ SurfaceTexture preview = new SurfaceTexture(/*random int*/ 1);
+
+ CaptureRequest.Builder previewRequest =
+ prepareTriggerTestSession(preview, aeMode, afMode);
+
+ SimpleCaptureCallback captureListener =
+ new CameraTestUtils.SimpleCaptureCallback();
+
+ mCameraSession.setRepeatingRequest(previewRequest.build(), captureListener,
+ mHandler);
+
+ // Cancel triggers
+
+ cancelTriggersAndWait(previewRequest, captureListener, afMode);
+
+ //
+ // Standard sequence - AF trigger then AE trigger
+
+ if (VERBOSE) {
+ Log.v(TAG, String.format("Triggering AF"));
+ }
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_START);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE);
+
+ CaptureRequest triggerRequest = previewRequest.build();
+ mCameraSession.capture(triggerRequest, captureListener, mHandler);
+
+ CaptureResult triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+ int afState = triggerResult.get(CaptureResult.CONTROL_AF_STATE);
+ boolean focusComplete = false;
+
+ for (int i = 0;
+ i < MAX_TRIGGER_SEQUENCE_FRAMES && !focusComplete;
+ i++) {
+
+ focusComplete = verifyAfSequence(afMode, afState, focusComplete);
+
+ CaptureResult focusResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ afState = focusResult.get(CaptureResult.CONTROL_AF_STATE);
+ }
+
+ assertTrue("Focusing never completed!", focusComplete);
+
+ // Standard sequence - Part 2 AE trigger
+
+ if (VERBOSE) {
+ Log.v(TAG, String.format("Triggering AE"));
+ }
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
+
+ triggerRequest = previewRequest.build();
+ mCameraSession.capture(triggerRequest, captureListener, mHandler);
+
+ triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+
+ int aeState = triggerResult.get(CaptureResult.CONTROL_AE_STATE);
+
+ boolean precaptureComplete = false;
+
+ for (int i = 0;
+ i < MAX_TRIGGER_SEQUENCE_FRAMES && !precaptureComplete;
+ i++) {
+
+ precaptureComplete = verifyAeSequence(aeState, precaptureComplete);
+
+ CaptureResult precaptureResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ aeState = precaptureResult.get(CaptureResult.CONTROL_AE_STATE);
+ }
+
+ assertTrue("Precapture sequence never completed!", precaptureComplete);
+
+ for (int i = 0; i < MAX_RESULT_STATE_POSTCHANGE_WAIT_FRAMES; i++) {
+ CaptureResult postPrecaptureResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ aeState = postPrecaptureResult.get(CaptureResult.CONTROL_AE_STATE);
+ assertTrue("Late transition to PRECAPTURE state seen",
+ aeState != CaptureResult.CONTROL_AE_STATE_PRECAPTURE);
+ }
+
+ // Done
+
+ stopCapture(/*fast*/ false);
+ preview.release();
+ }
+
+ }
+
+ } finally {
+ closeDevice(id);
+ }
+ }
+
+ }
+
+ public void testSimultaneousTriggers() throws Exception {
+ for (String id : mCameraIds) {
+ Log.i(TAG, String.format("Testing Camera %s", id));
+
+ openDevice(id);
+ try {
+ // Legacy devices do not support precapture trigger; don't test devices that
+ // can't focus
+ if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
+ continue;
+ }
+
+ int[] availableAfModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
+ int[] availableAeModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
+
+ for (int afMode : availableAfModes) {
+
+ if (afMode == CameraCharacteristics.CONTROL_AF_MODE_OFF ||
+ afMode == CameraCharacteristics.CONTROL_AF_MODE_EDOF) {
+ // Only test AF modes that have meaningful trigger behavior
+ continue;
+ }
+
+ for (int aeMode : availableAeModes) {
+ if (aeMode == CameraCharacteristics.CONTROL_AE_MODE_OFF) {
+ // Only test AE modes that have meaningful trigger behavior
+ continue;
+ }
+
+ SurfaceTexture preview = new SurfaceTexture(/*random int*/ 1);
+
+ CaptureRequest.Builder previewRequest =
+ prepareTriggerTestSession(preview, aeMode, afMode);
+
+ SimpleCaptureCallback captureListener =
+ new CameraTestUtils.SimpleCaptureCallback();
+
+ mCameraSession.setRepeatingRequest(previewRequest.build(), captureListener,
+ mHandler);
+
+ // Cancel triggers
+
+ cancelTriggersAndWait(previewRequest, captureListener, afMode);
+
+ //
+ // Trigger AF and AE together
+
+ if (VERBOSE) {
+ Log.v(TAG, String.format("Triggering AF and AE together"));
+ }
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_START);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
+
+ CaptureRequest triggerRequest = previewRequest.build();
+ mCameraSession.capture(triggerRequest, captureListener, mHandler);
+
+ CaptureResult triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+ int aeState = triggerResult.get(CaptureResult.CONTROL_AE_STATE);
+ int afState = triggerResult.get(CaptureResult.CONTROL_AF_STATE);
+
+ boolean precaptureComplete = false;
+ boolean focusComplete = false;
+
+ for (int i = 0;
+ i < MAX_TRIGGER_SEQUENCE_FRAMES &&
+ !(focusComplete && precaptureComplete);
+ i++) {
+
+ focusComplete = verifyAfSequence(afMode, afState, focusComplete);
+ precaptureComplete = verifyAeSequence(aeState, precaptureComplete);
+
+ CaptureResult sequenceResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ afState = sequenceResult.get(CaptureResult.CONTROL_AF_STATE);
+ aeState = sequenceResult.get(CaptureResult.CONTROL_AE_STATE);
+ }
+
+ assertTrue("Precapture sequence never completed!", precaptureComplete);
+ assertTrue("Focus sequence never completed!", focusComplete);
+
+ // Done
+
+ stopCapture(/*fast*/ false);
+ preview.release();
+
+ }
+ }
+ } finally {
+ closeDevice(id);
+ }
+ }
+ }
+
+ public void testAfThenAeTrigger() throws Exception {
+ for (String id : mCameraIds) {
+ Log.i(TAG, String.format("Testing Camera %s", id));
+
+ openDevice(id);
+ try {
+ // Legacy devices do not support precapture trigger; don't test devices that
+ // can't focus
+ if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
+ continue;
+ }
+
+ int[] availableAfModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
+ int[] availableAeModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
+
+ for (int afMode : availableAfModes) {
+
+ if (afMode == CameraCharacteristics.CONTROL_AF_MODE_OFF ||
+ afMode == CameraCharacteristics.CONTROL_AF_MODE_EDOF) {
+ // Only test AF modes that have meaningful trigger behavior
+ continue;
+ }
+
+ for (int aeMode : availableAeModes) {
+ if (aeMode == CameraCharacteristics.CONTROL_AE_MODE_OFF) {
+ // Only test AE modes that have meaningful trigger behavior
+ continue;
+ }
+
+ SurfaceTexture preview = new SurfaceTexture(/*random int*/ 1);
+
+ CaptureRequest.Builder previewRequest =
+ prepareTriggerTestSession(preview, aeMode, afMode);
+
+ SimpleCaptureCallback captureListener =
+ new CameraTestUtils.SimpleCaptureCallback();
+
+ mCameraSession.setRepeatingRequest(previewRequest.build(), captureListener,
+ mHandler);
+
+ // Cancel triggers
+
+ cancelTriggersAndWait(previewRequest, captureListener, afMode);
+
+ //
+ // AF with AE a request later
+
+ if (VERBOSE) {
+ Log.v(TAG, "Trigger AF, then AE trigger on next request");
+ }
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_START);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE);
+
+ CaptureRequest triggerRequest = previewRequest.build();
+ mCameraSession.capture(triggerRequest, captureListener, mHandler);
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
+
+ CaptureRequest triggerRequest2 = previewRequest.build();
+ mCameraSession.capture(triggerRequest2, captureListener, mHandler);
+
+ CaptureResult triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+ int afState = triggerResult.get(CaptureResult.CONTROL_AF_STATE);
+
+ boolean precaptureComplete = false;
+ boolean focusComplete = false;
+
+ focusComplete = verifyAfSequence(afMode, afState, focusComplete);
+
+ triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest2, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+ afState = triggerResult.get(CaptureResult.CONTROL_AF_STATE);
+ int aeState = triggerResult.get(CaptureResult.CONTROL_AE_STATE);
+
+ for (int i = 0;
+ i < MAX_TRIGGER_SEQUENCE_FRAMES &&
+ !(focusComplete && precaptureComplete);
+ i++) {
+
+ focusComplete = verifyAfSequence(afMode, afState, focusComplete);
+ precaptureComplete = verifyAeSequence(aeState, precaptureComplete);
+
+ CaptureResult sequenceResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ afState = sequenceResult.get(CaptureResult.CONTROL_AF_STATE);
+ aeState = sequenceResult.get(CaptureResult.CONTROL_AE_STATE);
+ }
+
+ assertTrue("Precapture sequence never completed!", precaptureComplete);
+ assertTrue("Focus sequence never completed!", focusComplete);
+
+ // Done
+
+ stopCapture(/*fast*/ false);
+ preview.release();
+
+ }
+ }
+ } finally {
+ closeDevice(id);
+ }
+ }
+ }
+
+ public void testAeThenAfTrigger() throws Exception {
+ for (String id : mCameraIds) {
+ Log.i(TAG, String.format("Testing Camera %s", id));
+
+ openDevice(id);
+ try {
+ // Legacy devices do not support precapture trigger; don't test devices that
+ // can't focus
+ if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
+ continue;
+ }
+
+ int[] availableAfModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
+ int[] availableAeModes = mStaticInfo.getCharacteristics().get(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
+
+ for (int afMode : availableAfModes) {
+
+ if (afMode == CameraCharacteristics.CONTROL_AF_MODE_OFF ||
+ afMode == CameraCharacteristics.CONTROL_AF_MODE_EDOF) {
+ // Only test AF modes that have meaningful trigger behavior
+ continue;
+ }
+
+ for (int aeMode : availableAeModes) {
+ if (aeMode == CameraCharacteristics.CONTROL_AE_MODE_OFF) {
+ // Only test AE modes that have meaningful trigger behavior
+ continue;
+ }
+
+ SurfaceTexture preview = new SurfaceTexture(/*random int*/ 1);
+
+ CaptureRequest.Builder previewRequest =
+ prepareTriggerTestSession(preview, aeMode, afMode);
+
+ SimpleCaptureCallback captureListener =
+ new CameraTestUtils.SimpleCaptureCallback();
+
+ mCameraSession.setRepeatingRequest(previewRequest.build(), captureListener,
+ mHandler);
+
+ // Cancel triggers
+
+ cancelTriggersAndWait(previewRequest, captureListener, afMode);
+
+ //
+ // AE with AF a request later
+
+ if (VERBOSE) {
+ Log.v(TAG, "Trigger AE, then AF trigger on next request");
+ }
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
+
+ CaptureRequest triggerRequest = previewRequest.build();
+ mCameraSession.capture(triggerRequest, captureListener, mHandler);
+
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_START);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE);
+
+ CaptureRequest triggerRequest2 = previewRequest.build();
+ mCameraSession.capture(triggerRequest2, captureListener, mHandler);
+
+ CaptureResult triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+ int aeState = triggerResult.get(CaptureResult.CONTROL_AE_STATE);
+
+ boolean precaptureComplete = false;
+ boolean focusComplete = false;
+
+ precaptureComplete = verifyAeSequence(aeState, precaptureComplete);
+
+ triggerResult = captureListener.getCaptureResultForRequest(
+ triggerRequest2, MAX_RESULT_STATE_CHANGE_WAIT_FRAMES);
+ int afState = triggerResult.get(CaptureResult.CONTROL_AF_STATE);
+ aeState = triggerResult.get(CaptureResult.CONTROL_AE_STATE);
+
+ for (int i = 0;
+ i < MAX_TRIGGER_SEQUENCE_FRAMES &&
+ !(focusComplete && precaptureComplete);
+ i++) {
+
+ focusComplete = verifyAfSequence(afMode, afState, focusComplete);
+ precaptureComplete = verifyAeSequence(aeState, precaptureComplete);
+
+ CaptureResult sequenceResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ afState = sequenceResult.get(CaptureResult.CONTROL_AF_STATE);
+ aeState = sequenceResult.get(CaptureResult.CONTROL_AE_STATE);
+ }
+
+ assertTrue("Precapture sequence never completed!", precaptureComplete);
+ assertTrue("Focus sequence never completed!", focusComplete);
+
+ // Done
+
+ stopCapture(/*fast*/ false);
+ preview.release();
+
+ }
+ }
+ } finally {
+ closeDevice(id);
+ }
+ }
+ }
+
+ private CaptureRequest.Builder prepareTriggerTestSession(
+ SurfaceTexture preview, int aeMode, int afMode) throws Exception {
+ Log.i(TAG, String.format("Testing AE mode %s, AF mode %s",
+ StaticMetadata.AE_MODE_NAMES[aeMode],
+ StaticMetadata.AF_MODE_NAMES[afMode]));
+
+
+ Surface previewSurface = new Surface(preview);
+
+ preview.setDefaultBufferSize(640, 480);
+
+ ArrayList<Surface> sessionOutputs = new ArrayList<>();
+ sessionOutputs.add(previewSurface);
+
+ createSession(sessionOutputs);
+
+ CaptureRequest.Builder previewRequest =
+ mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
+
+ previewRequest.addTarget(previewSurface);
+
+ previewRequest.set(CaptureRequest.CONTROL_AE_MODE, aeMode);
+ previewRequest.set(CaptureRequest.CONTROL_AF_MODE, afMode);
+
+ return previewRequest;
+ }
+
+ private void cancelTriggersAndWait(CaptureRequest.Builder previewRequest,
+ SimpleCaptureCallback captureListener, int afMode) throws Exception {
+ previewRequest.set(CaptureRequest.CONTROL_AF_TRIGGER,
+ CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
+ previewRequest.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
+ CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL);
+
+ CaptureRequest triggerRequest = previewRequest.build();
+ mCameraSession.capture(triggerRequest, captureListener, mHandler);
+
+ // Wait for a few frames to initialize 3A
+
+ CaptureResult previewResult = null;
+ int afState;
+ int aeState;
+
+ for (int i = 0; i < PREVIEW_WARMUP_FRAMES; i++) {
+ previewResult = captureListener.getCaptureResult(
+ CameraTestUtils.CAPTURE_RESULT_TIMEOUT_MS);
+ if (VERBOSE) {
+ afState = previewResult.get(CaptureResult.CONTROL_AF_STATE);
+ aeState = previewResult.get(CaptureResult.CONTROL_AE_STATE);
+ Log.v(TAG, String.format("AF state: %s, AE state: %s",
+ StaticMetadata.AF_STATE_NAMES[afState],
+ StaticMetadata.AE_STATE_NAMES[aeState]));
+ }
+ }
+
+ // Verify starting states
+
+ afState = previewResult.get(CaptureResult.CONTROL_AF_STATE);
+ aeState = previewResult.get(CaptureResult.CONTROL_AE_STATE);
+
+ switch (afMode) {
+ case CaptureResult.CONTROL_AF_MODE_AUTO:
+ case CaptureResult.CONTROL_AF_MODE_MACRO:
+ assertTrue(String.format("AF state not INACTIVE, is %s",
+ StaticMetadata.AF_STATE_NAMES[afState]),
+ afState == CaptureResult.CONTROL_AF_STATE_INACTIVE);
+ break;
+ case CaptureResult.CONTROL_AF_MODE_CONTINUOUS_PICTURE:
+ case CaptureResult.CONTROL_AF_MODE_CONTINUOUS_VIDEO:
+ // After several frames, AF must no longer be in INACTIVE state
+ assertTrue(String.format("In AF mode %s, AF state not PASSIVE_SCAN" +
+ ", PASSIVE_FOCUSED, or PASSIVE_UNFOCUSED, is %s",
+ StaticMetadata.AF_MODE_NAMES[afMode],
+ StaticMetadata.AF_STATE_NAMES[afState]),
+ afState == CaptureResult.CONTROL_AF_STATE_PASSIVE_SCAN ||
+ afState == CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED ||
+ afState == CaptureResult.CONTROL_AF_STATE_PASSIVE_UNFOCUSED);
+ break;
+ default:
+ fail("unexpected af mode");
+ }
+
+ // After several frames, AE must no longer be in INACTIVE state
+ assertTrue(String.format("AE state must be SEARCHING, CONVERGED, " +
+ "or FLASH_REQUIRED, is %s", StaticMetadata.AE_STATE_NAMES[aeState]),
+ aeState == CaptureResult.CONTROL_AE_STATE_SEARCHING ||
+ aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED ||
+ aeState == CaptureResult.CONTROL_AE_STATE_FLASH_REQUIRED);
+ }
+
+ private boolean verifyAfSequence(int afMode, int afState, boolean focusComplete) {
+ if (focusComplete) {
+ assertTrue(String.format("AF Mode %s: Focus lock lost after convergence: AF state: %s",
+ StaticMetadata.AF_MODE_NAMES[afMode],
+ StaticMetadata.AF_STATE_NAMES[afState]),
+ afState == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED ||
+ afState ==CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED);
+ return focusComplete;
+ }
+ if (VERBOSE) {
+ Log.v(TAG, String.format("AF mode: %s, AF state: %s",
+ StaticMetadata.AF_MODE_NAMES[afMode],
+ StaticMetadata.AF_STATE_NAMES[afState]));
+ }
+ switch (afMode) {
+ case CaptureResult.CONTROL_AF_MODE_AUTO:
+ case CaptureResult.CONTROL_AF_MODE_MACRO:
+ assertTrue(String.format("AF mode %s: Unexpected AF state %s",
+ StaticMetadata.AF_MODE_NAMES[afMode],
+ StaticMetadata.AF_STATE_NAMES[afState]),
+ afState == CaptureResult.CONTROL_AF_STATE_ACTIVE_SCAN ||
+ afState == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED ||
+ afState == CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED);
+ focusComplete =
+ (afState != CaptureResult.CONTROL_AF_STATE_ACTIVE_SCAN);
+ break;
+ case CaptureResult.CONTROL_AF_MODE_CONTINUOUS_PICTURE:
+ assertTrue(String.format("AF mode %s: Unexpected AF state %s",
+ StaticMetadata.AF_MODE_NAMES[afMode],
+ StaticMetadata.AF_STATE_NAMES[afState]),
+ afState == CaptureResult.CONTROL_AF_STATE_PASSIVE_SCAN ||
+ afState == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED ||
+ afState == CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED);
+ focusComplete =
+ (afState != CaptureResult.CONTROL_AF_STATE_PASSIVE_SCAN);
+ break;
+ case CaptureResult.CONTROL_AF_MODE_CONTINUOUS_VIDEO:
+ assertTrue(String.format("AF mode %s: Unexpected AF state %s",
+ StaticMetadata.AF_MODE_NAMES[afMode],
+ StaticMetadata.AF_STATE_NAMES[afState]),
+ afState == CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED ||
+ afState == CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED);
+ focusComplete = true;
+ break;
+ default:
+ fail("Unexpected AF mode: " + StaticMetadata.AF_MODE_NAMES[afMode]);
+ }
+ return focusComplete;
+ }
+
+ private boolean verifyAeSequence(int aeState, boolean precaptureComplete) {
+ if (precaptureComplete) {
+ assertTrue("Precapture state seen after convergence",
+ aeState != CaptureResult.CONTROL_AE_STATE_PRECAPTURE);
+ return precaptureComplete;
+ }
+ if (VERBOSE) {
+ Log.v(TAG, String.format("AE state: %s", StaticMetadata.AE_STATE_NAMES[aeState]));
+ }
+ switch (aeState) {
+ case CaptureResult.CONTROL_AE_STATE_PRECAPTURE:
+ // scan still continuing
+ break;
+ case CaptureResult.CONTROL_AE_STATE_CONVERGED:
+ case CaptureResult.CONTROL_AE_STATE_FLASH_REQUIRED:
+ // completed
+ precaptureComplete = true;
+ break;
+ default:
+ fail(String.format("Precapture sequence transitioned to "
+ + "state %s incorrectly!", StaticMetadata.AE_STATE_NAMES[aeState]));
+ break;
+ }
+ return precaptureComplete;
+ }
+
/**
* Sanity check the configuration tables.
*/
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java b/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java
index e26cf7a..e097c18 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java
@@ -73,6 +73,46 @@
private final CheckLevel mLevel;
private final CameraErrorCollector mCollector;
+ // Index with android.control.aeMode
+ public static final String[] AE_MODE_NAMES = new String[] {
+ "AE_MODE_OFF",
+ "AE_MODE_ON",
+ "AE_MODE_ON_AUTO_FLASH",
+ "AE_MODE_ON_ALWAYS_FLASH",
+ "AE_MODE_ON_AUTO_FLASH_REDEYE"
+ };
+
+ // Index with android.control.afMode
+ public static final String[] AF_MODE_NAMES = new String[] {
+ "AF_MODE_OFF",
+ "AF_MODE_AUTO",
+ "AF_MODE_MACRO",
+ "AF_MODE_CONTINUOUS_VIDEO",
+ "AF_MODE_CONTINUOUS_PICTURE",
+ "AF_MODE_EDOF"
+ };
+
+ // Index with android.control.aeState
+ public static final String[] AE_STATE_NAMES = new String[] {
+ "AE_STATE_INACTIVE",
+ "AE_STATE_SEARCHING",
+ "AE_STATE_CONVERGED",
+ "AE_STATE_LOCKED",
+ "AE_STATE_FLASH_REQUIRED",
+ "AE_STATE_PRECAPTURE"
+ };
+
+ // Index with android.control.afState
+ public static final String[] AF_STATE_NAMES = new String[] {
+ "AF_STATE_INACTIVE",
+ "AF_STATE_PASSIVE_SCAN",
+ "AF_STATE_PASSIVE_FOCUSED",
+ "AF_STATE_ACTIVE_SCAN",
+ "AF_STATE_FOCUSED_LOCKED",
+ "AF_STATE_NOT_FOCUSED_LOCKED",
+ "AF_STATE_PASSIVE_UNFOCUSED"
+ };
+
public enum CheckLevel {
/** Only log warnings for metadata check failures. Execution continues. */
WARN,
diff --git a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
index d3f4ccd..11769ad 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
@@ -34,6 +34,7 @@
import java.security.KeyStoreException;
import java.security.PrivateKey;
import java.security.PublicKey;
+import java.security.Signature;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.interfaces.ECKey;
@@ -1919,4 +1920,64 @@
// pass on exception as it is expected
}
}
+
+ public void testKeyStore_PrivateKeyEntry_RSA_PublicKeyWorksWithCrypto()
+ throws Exception {
+ mKeyStore.load(null, null);
+ mKeyStore.setKeyEntry(TEST_ALIAS_2,
+ KeyFactory.getInstance("RSA").generatePrivate(
+ new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1)),
+ null, // no password (it's not even supported)
+ new Certificate[] {generateCertificate(FAKE_RSA_USER_1)});
+ PublicKey publicKey = mKeyStore.getCertificate(TEST_ALIAS_2).getPublicKey();
+ assertNotNull(publicKey);
+
+ Signature.getInstance("SHA256withRSA").initVerify(publicKey);
+ Signature.getInstance("NONEwithRSA").initVerify(publicKey);
+ Signature.getInstance("SHA256withRSA/PSS").initVerify(publicKey);
+
+ Cipher.getInstance("RSA/ECB/PKCS1Padding").init(Cipher.ENCRYPT_MODE, publicKey);
+ Cipher.getInstance("RSA/ECB/NoPadding").init(Cipher.ENCRYPT_MODE, publicKey);
+ Cipher.getInstance("RSA/ECB/OAEPPadding").init(Cipher.ENCRYPT_MODE, publicKey);
+ }
+
+ public void testKeyStore_PrivateKeyEntry_EC_PublicKeyWorksWithCrypto()
+ throws Exception {
+ mKeyStore.load(null, null);
+ mKeyStore.setKeyEntry(TEST_ALIAS_1,
+ KeyFactory.getInstance("EC").generatePrivate(
+ new PKCS8EncodedKeySpec(FAKE_EC_KEY_1)),
+ null, // no password (it's not even supported)
+ new Certificate[] {generateCertificate(FAKE_EC_USER_1)});
+ PublicKey publicKey = mKeyStore.getCertificate(TEST_ALIAS_1).getPublicKey();
+ assertNotNull(publicKey);
+
+ Signature.getInstance("SHA256withECDSA").initVerify(publicKey);
+ Signature.getInstance("NONEwithECDSA").initVerify(publicKey);
+ }
+
+ public void testKeyStore_TrustedCertificateEntry_RSA_PublicKeyWorksWithCrypto()
+ throws Exception {
+ mKeyStore.load(null, null);
+ mKeyStore.setCertificateEntry(TEST_ALIAS_2, generateCertificate(FAKE_RSA_USER_1));
+ PublicKey publicKey = mKeyStore.getCertificate(TEST_ALIAS_2).getPublicKey();
+ assertNotNull(publicKey);
+
+ Signature.getInstance("SHA256withRSA").initVerify(publicKey);
+ Signature.getInstance("NONEwithRSA").initVerify(publicKey);
+
+ Cipher.getInstance("RSA/ECB/PKCS1Padding").init(Cipher.ENCRYPT_MODE, publicKey);
+ Cipher.getInstance("RSA/ECB/NoPadding").init(Cipher.ENCRYPT_MODE, publicKey);
+ }
+
+ public void testKeyStore_TrustedCertificateEntry_EC_PublicKeyWorksWithCrypto()
+ throws Exception {
+ mKeyStore.load(null, null);
+ mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_EC_USER_1));
+ PublicKey publicKey = mKeyStore.getCertificate(TEST_ALIAS_1).getPublicKey();
+ assertNotNull(publicKey);
+
+ Signature.getInstance("SHA256withECDSA").initVerify(publicKey);
+ Signature.getInstance("NONEwithECDSA").initVerify(publicKey);
+ }
}
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java
index d8080a0..1195c44 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java
@@ -27,6 +27,42 @@
assertTrue("RSA must be supported", KeyChain.isKeyAlgorithmSupported("RSA"));
}
+ public void testNullPrivateKeyArgumentsFail() {
+ try {
+ KeyChain.getPrivateKey(null, null);
+ fail("NullPointerException was expected for null arguments to "
+ + "KeyChain.getPrivateKey(Context, String)");
+ } catch (NullPointerException expected) {
+ }
+ }
+
+ public void testNullPrivateKeyAliasArgumentFails() {
+ try {
+ KeyChain.getPrivateKey(this, null);
+ fail("NullPointerException was expected with null String argument to "
+ + "KeyChain.getPrivateKey(Context, String).");
+ } catch (NullPointerException expected) {
+ }
+ }
+
+ public void testNullPrivateKeyContextArgumentFails() {
+ try {
+ KeyChain.getPrivateKey(null, "");
+ fail("NullPointerException was expected with null Context argument to "
+ + "KeyChain.getPrivateKey(Context, String).");
+ } catch (NullPointerException expected) {
+ }
+ }
+
+ public void testGetPrivateKeyOnMainThreadFails() {
+ try {
+ KeyChain.getPrivateKey(this, "");
+ fail("IllegalStateException was expected for calling "
+ + "KeyChain.getPrivateKey(Context, String) on main thread");
+ } catch (IllegalStateException expected) {
+ }
+ }
+
/**
* Tests whether the required algorithms are backed by a Keymaster HAL that
* binds the key material to the specific device it was created or imported
diff --git a/tests/tests/media/src/android/media/cts/MediaSessionTest.java b/tests/tests/media/src/android/media/cts/MediaSessionTest.java
index a2dbe7d..78ad1f9 100644
--- a/tests/tests/media/src/android/media/cts/MediaSessionTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaSessionTest.java
@@ -26,7 +26,6 @@
import android.media.VolumeProvider;
import android.media.session.MediaController;
import android.media.session.MediaSession;
-import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.os.Bundle;
import android.os.Handler;
@@ -36,23 +35,40 @@
import android.test.AndroidTestCase;
import java.util.ArrayList;
+import java.util.List;
import java.util.Set;
public class MediaSessionTest extends AndroidTestCase {
// The maximum time to wait for an operation.
- private static final long TIME_OUT_MS = 5000L;
- private static final String SESSION_TAG = "test-session";
- private static final String EXTRAS_KEY = "test-key";
- private static final String EXTRAS_VALUE = "test-val";
- private static final String SESSION_EVENT = "test-session-event";
+ private static final long TIME_OUT_MS = 3000L;
+ private static final int MAX_AUDIO_INFO_CHANGED_CALLBACK_COUNT = 10;
+ private static final String TEST_SESSION_TAG = "test-session-tag";
+ private static final String TEST_KEY = "test-key";
+ private static final String TEST_VALUE = "test-val";
+ private static final String TEST_SESSION_EVENT = "test-session-event";
+ private static final int TEST_CURRENT_VOLUME = 10;
+ private static final int TEST_MAX_VOLUME = 11;
+ private static final long TEST_QUEUE_ID = 12L;
+ private static final long TEST_ACTION = 55L;
private AudioManager mAudioManager;
private Handler mHandler = new Handler(Looper.getMainLooper());
+ private Object mWaitLock = new Object();
+ private MediaControllerCallback mCallback = new MediaControllerCallback();
+ private MediaSession mSession;
@Override
protected void setUp() throws Exception {
super.setUp();
mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
+ mSession = new MediaSession(getContext(), TEST_SESSION_TAG);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ // It is OK to call release() twice.
+ mSession.release();
+ super.tearDown();
}
/**
@@ -60,22 +76,20 @@
* initialized correctly.
*/
public void testCreateSession() throws Exception {
- MediaSession session = new MediaSession(getContext(), SESSION_TAG);
- assertNotNull(session.getSessionToken());
- assertFalse("New session should not be active", session.isActive());
+ assertNotNull(mSession.getSessionToken());
+ assertFalse("New session should not be active", mSession.isActive());
// Verify by getting the controller and checking all its fields
- MediaController controller = session.getController();
+ MediaController controller = mSession.getController();
assertNotNull(controller);
- verifyNewSession(controller, SESSION_TAG);
+ verifyNewSession(controller, TEST_SESSION_TAG);
}
/**
* Tests MediaSession.Token created in the constructor of MediaSession.
*/
public void testSessionToken() throws Exception {
- MediaSession session = new MediaSession(getContext(), SESSION_TAG);
- MediaSession.Token sessionToken = session.getSessionToken();
+ MediaSession.Token sessionToken = mSession.getSessionToken();
assertNotNull(sessionToken);
assertEquals(0, sessionToken.describeContents());
@@ -94,112 +108,189 @@
* controller.
*/
public void testConfigureSession() throws Exception {
- MediaSession session = new MediaSession(getContext(), SESSION_TAG);
- MediaController controller = session.getController();
+ MediaController controller = mSession.getController();
+ controller.registerCallback(mCallback, mHandler);
- // test setExtras
- Bundle extras = new Bundle();
- extras.putString(EXTRAS_KEY, EXTRAS_VALUE);
- session.setExtras(extras);
- Bundle extrasOut = controller.getExtras();
- assertNotNull(extrasOut);
- assertEquals(EXTRAS_VALUE, extrasOut.get(EXTRAS_KEY));
+ synchronized (mWaitLock) {
+ // test setExtras
+ mCallback.resetLocked();
+ final Bundle extras = new Bundle();
+ extras.putString(TEST_KEY, TEST_VALUE);
+ mSession.setExtras(extras);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnExtraChangedCalled);
- // test setFlags
- session.setFlags(5);
- assertEquals(5, controller.getFlags());
+ Bundle extrasOut = mCallback.mExtras;
+ assertNotNull(extrasOut);
+ assertEquals(TEST_VALUE, extrasOut.get(TEST_KEY));
- // test setMetadata
- MediaMetadata metadata =
- new MediaMetadata.Builder().putString(EXTRAS_KEY, EXTRAS_VALUE).build();
- session.setMetadata(metadata);
- MediaMetadata metadataOut = controller.getMetadata();
- assertNotNull(metadataOut);
- assertEquals(EXTRAS_VALUE, metadataOut.getString(EXTRAS_KEY));
+ extrasOut = controller.getExtras();
+ assertNotNull(extrasOut);
+ assertEquals(TEST_VALUE, extrasOut.get(TEST_KEY));
- // test setPlaybackState
- PlaybackState state = new PlaybackState.Builder().setActions(55).build();
- session.setPlaybackState(state);
- PlaybackState stateOut = controller.getPlaybackState();
- assertNotNull(stateOut);
- assertEquals(55L, stateOut.getActions());
+ // test setFlags
+ mSession.setFlags(5);
+ assertEquals(5, controller.getFlags());
- // test setPlaybackToRemote, do this before testing setPlaybackToLocal
- // to ensure it switches correctly.
- try {
- session.setPlaybackToRemote(null);
- fail("Expected IAE for setPlaybackToRemote(null)");
- } catch (IllegalArgumentException e) {
- // expected
- }
- VolumeProvider vp = new VolumeProvider(VolumeProvider.VOLUME_CONTROL_FIXED, 11, 11) {};
- session.setPlaybackToRemote(vp);
- MediaController.PlaybackInfo info = controller.getPlaybackInfo();
- assertNotNull(info);
- assertEquals(MediaController.PlaybackInfo.PLAYBACK_TYPE_REMOTE, info.getPlaybackType());
- assertEquals(11, info.getMaxVolume());
- assertEquals(11, info.getCurrentVolume());
- assertEquals(VolumeProvider.VOLUME_CONTROL_FIXED, info.getVolumeControl());
+ // test setMetadata
+ mCallback.resetLocked();
+ MediaMetadata metadata =
+ new MediaMetadata.Builder().putString(TEST_KEY, TEST_VALUE).build();
+ mSession.setMetadata(metadata);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnMetadataChangedCalled);
- // test setPlaybackToLocal
- AudioAttributes attrs = new AudioAttributes.Builder().addTag(EXTRAS_VALUE).build();
- session.setPlaybackToLocal(attrs);
- info = controller.getPlaybackInfo();
- assertNotNull(info);
- assertEquals(MediaController.PlaybackInfo.PLAYBACK_TYPE_LOCAL, info.getPlaybackType());
- Set<String> tags = info.getAudioAttributes().getTags();
- assertNotNull(tags);
- assertTrue(tags.contains(EXTRAS_VALUE));
+ MediaMetadata metadataOut = mCallback.mMediaMetadata;
+ assertNotNull(metadataOut);
+ assertEquals(TEST_VALUE, metadataOut.getString(TEST_KEY));
- // test setQueue and setQueueTitle
- ArrayList<MediaSession.QueueItem> queue = new ArrayList<MediaSession.QueueItem>();
- MediaSession.QueueItem item = new MediaSession.QueueItem(new MediaDescription.Builder()
- .setMediaId(EXTRAS_VALUE).setTitle("title").build(), 11);
- queue.add(item);
- session.setQueue(queue);
- session.setQueueTitle(EXTRAS_VALUE);
+ metadataOut = controller.getMetadata();
+ assertNotNull(metadataOut);
+ assertEquals(TEST_VALUE, metadataOut.getString(TEST_KEY));
- assertEquals(EXTRAS_VALUE, controller.getQueueTitle());
- assertEquals(1, controller.getQueue().size());
- assertEquals(11, controller.getQueue().get(0).getQueueId());
- assertEquals(EXTRAS_VALUE, controller.getQueue().get(0).getDescription().getMediaId());
+ // test setPlaybackState
+ mCallback.resetLocked();
+ PlaybackState state = new PlaybackState.Builder().setActions(TEST_ACTION).build();
+ mSession.setPlaybackState(state);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnPlaybackStateChangedCalled);
- session.setQueue(null);
- session.setQueueTitle(null);
+ PlaybackState stateOut = mCallback.mPlaybackState;
+ assertNotNull(stateOut);
+ assertEquals(TEST_ACTION, stateOut.getActions());
- assertNull(controller.getQueueTitle());
- assertNull(controller.getQueue());
+ stateOut = controller.getPlaybackState();
+ assertNotNull(stateOut);
+ assertEquals(TEST_ACTION, stateOut.getActions());
- // test setSessionActivity
- Intent intent = new Intent("cts.MEDIA_SESSION_ACTION");
- PendingIntent pi = PendingIntent.getActivity(getContext(), 555, intent, 0);
- session.setSessionActivity(pi);
- assertEquals(pi, controller.getSessionActivity());
+ // test setQueue and setQueueTitle
+ mCallback.resetLocked();
+ List<MediaSession.QueueItem> queue = new ArrayList<MediaSession.QueueItem>();
+ MediaSession.QueueItem item = new MediaSession.QueueItem(new MediaDescription.Builder()
+ .setMediaId(TEST_VALUE).setTitle("title").build(), TEST_QUEUE_ID);
+ queue.add(item);
+ mSession.setQueue(queue);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnQueueChangedCalled);
- // test setActivity
- session.setActive(true);
- assertTrue(session.isActive());
- }
+ mSession.setQueueTitle(TEST_VALUE);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnQueueTitleChangedCalled);
- public void testSendSessionEvent() throws Exception {
- MediaSession session = new MediaSession(getContext(), SESSION_TAG);
- MediaController controller = new MediaController(getContext(), session.getSessionToken());
- Object lock = new Object();
- MediaControllerCallback callback = new MediaControllerCallback(lock);
- controller.registerCallback(callback, mHandler);
+ assertEquals(TEST_VALUE, mCallback.mTitle);
+ assertEquals(queue.size(), mCallback.mQueue.size());
+ assertEquals(TEST_QUEUE_ID, mCallback.mQueue.get(0).getQueueId());
+ assertEquals(TEST_VALUE, mCallback.mQueue.get(0).getDescription().getMediaId());
- Bundle extras = new Bundle();
- extras.putString(EXTRAS_KEY, EXTRAS_VALUE);
+ assertEquals(TEST_VALUE, controller.getQueueTitle());
+ assertEquals(queue.size(), controller.getQueue().size());
+ assertEquals(TEST_QUEUE_ID, controller.getQueue().get(0).getQueueId());
+ assertEquals(TEST_VALUE, controller.getQueue().get(0).getDescription().getMediaId());
- synchronized (lock) {
- session.sendSessionEvent(SESSION_EVENT, extras);
- lock.wait(TIME_OUT_MS);
- assertEquals(SESSION_EVENT, callback.mEvent);
- assertEquals(EXTRAS_VALUE, callback.mExtras.getString(EXTRAS_KEY));
+ mCallback.resetLocked();
+ mSession.setQueue(null);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnQueueChangedCalled);
+
+ mSession.setQueueTitle(null);
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnQueueTitleChangedCalled);
+
+ assertNull(mCallback.mTitle);
+ assertNull(mCallback.mQueue);
+ assertNull(controller.getQueueTitle());
+ assertNull(controller.getQueue());
+
+ // test setSessionActivity
+ Intent intent = new Intent("cts.MEDIA_SESSION_ACTION");
+ PendingIntent pi = PendingIntent.getActivity(getContext(), 555, intent, 0);
+ mSession.setSessionActivity(pi);
+ assertEquals(pi, controller.getSessionActivity());
+
+ // test setActivity
+ mSession.setActive(true);
+ assertTrue(mSession.isActive());
+
+ // test sendSessionEvent
+ mCallback.resetLocked();
+ mSession.sendSessionEvent(TEST_SESSION_EVENT, extras);
+ mWaitLock.wait(TIME_OUT_MS);
+
+ assertTrue(mCallback.mOnSessionEventCalled);
+ assertEquals(TEST_SESSION_EVENT, mCallback.mEvent);
+ assertEquals(TEST_VALUE, mCallback.mExtras.getString(TEST_KEY));
+
+ // test release
+ mCallback.resetLocked();
+ mSession.release();
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnSessionDestroyedCalled);
}
}
/**
+ * Tests for setPlaybackToLocal and setPlaybackToRemote.
+ */
+ public void testPlaybackToLocalAndRemote() throws Exception {
+ MediaController controller = mSession.getController();
+ controller.registerCallback(mCallback, mHandler);
+
+ synchronized (mWaitLock) {
+ // test setPlaybackToRemote, do this before testing setPlaybackToLocal
+ // to ensure it switches correctly.
+ mCallback.resetLocked();
+ try {
+ mSession.setPlaybackToRemote(null);
+ fail("Expected IAE for setPlaybackToRemote(null)");
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ VolumeProvider vp = new VolumeProvider(VolumeProvider.VOLUME_CONTROL_FIXED,
+ TEST_MAX_VOLUME, TEST_CURRENT_VOLUME) {};
+ mSession.setPlaybackToRemote(vp);
+
+ MediaController.PlaybackInfo info = null;
+ for (int i = 0; i < MAX_AUDIO_INFO_CHANGED_CALLBACK_COUNT; ++i) {
+ mCallback.mOnAudioInfoChangedCalled = false;
+ mWaitLock.wait(TIME_OUT_MS);
+ assertTrue(mCallback.mOnAudioInfoChangedCalled);
+ info = mCallback.mPlaybackInfo;
+ if (info != null && info.getCurrentVolume() == TEST_CURRENT_VOLUME
+ && info.getMaxVolume() == TEST_MAX_VOLUME
+ && info.getVolumeControl() == VolumeProvider.VOLUME_CONTROL_FIXED
+ && info.getPlaybackType()
+ == MediaController.PlaybackInfo.PLAYBACK_TYPE_REMOTE) {
+ break;
+ }
+ }
+ assertNotNull(info);
+ assertEquals(MediaController.PlaybackInfo.PLAYBACK_TYPE_REMOTE, info.getPlaybackType());
+ assertEquals(TEST_MAX_VOLUME, info.getMaxVolume());
+ assertEquals(TEST_CURRENT_VOLUME, info.getCurrentVolume());
+ assertEquals(VolumeProvider.VOLUME_CONTROL_FIXED, info.getVolumeControl());
+
+ info = controller.getPlaybackInfo();
+ assertNotNull(info);
+ assertEquals(MediaController.PlaybackInfo.PLAYBACK_TYPE_REMOTE, info.getPlaybackType());
+ assertEquals(TEST_MAX_VOLUME, info.getMaxVolume());
+ assertEquals(TEST_CURRENT_VOLUME, info.getCurrentVolume());
+ assertEquals(VolumeProvider.VOLUME_CONTROL_FIXED, info.getVolumeControl());
+
+ // test setPlaybackToLocal
+ AudioAttributes attrs = new AudioAttributes.Builder().addTag(TEST_VALUE).build();
+ mSession.setPlaybackToLocal(attrs);
+
+ info = controller.getPlaybackInfo();
+ assertNotNull(info);
+ assertEquals(MediaController.PlaybackInfo.PLAYBACK_TYPE_LOCAL, info.getPlaybackType());
+ Set<String> tags = info.getAudioAttributes().getTags();
+ assertNotNull(tags);
+ assertTrue(tags.contains(TEST_VALUE));
+ }
+ }
+
+
+ /**
* Verifies that a new session hasn't had any configuration bits set yet.
*
* @param controller The controller for the session
@@ -232,20 +323,110 @@
}
private class MediaControllerCallback extends MediaController.Callback {
- private Object mLock;
- private String mEvent;
- private Bundle mExtras;
+ private volatile boolean mOnPlaybackStateChangedCalled;
+ private volatile boolean mOnMetadataChangedCalled;
+ private volatile boolean mOnQueueChangedCalled;
+ private volatile boolean mOnQueueTitleChangedCalled;
+ private volatile boolean mOnExtraChangedCalled;
+ private volatile boolean mOnAudioInfoChangedCalled;
+ private volatile boolean mOnSessionDestroyedCalled;
+ private volatile boolean mOnSessionEventCalled;
- MediaControllerCallback(Object lock) {
- mLock = lock;
+ private volatile PlaybackState mPlaybackState;
+ private volatile MediaMetadata mMediaMetadata;
+ private volatile List<MediaSession.QueueItem> mQueue;
+ private volatile CharSequence mTitle;
+ private volatile String mEvent;
+ private volatile Bundle mExtras;
+ private volatile MediaController.PlaybackInfo mPlaybackInfo;
+
+ public void resetLocked() {
+ mOnPlaybackStateChangedCalled = false;
+ mOnMetadataChangedCalled = false;
+ mOnQueueChangedCalled = false;
+ mOnQueueTitleChangedCalled = false;
+ mOnExtraChangedCalled = false;
+ mOnAudioInfoChangedCalled = false;
+ mOnSessionDestroyedCalled = false;
+ mOnSessionEventCalled = false;
+
+ mPlaybackState = null;
+ mMediaMetadata = null;
+ mQueue = null;
+ mTitle = null;
+ mExtras = null;
+ mPlaybackInfo = null;
+ }
+
+ @Override
+ public void onPlaybackStateChanged(PlaybackState state) {
+ synchronized (mWaitLock) {
+ mOnPlaybackStateChangedCalled = true;
+ mPlaybackState = state;
+ mWaitLock.notify();
+ }
+ }
+
+ @Override
+ public void onMetadataChanged(MediaMetadata metadata) {
+ synchronized (mWaitLock) {
+ mOnMetadataChangedCalled = true;
+ mMediaMetadata = metadata;
+ mWaitLock.notify();
+ }
+ }
+
+ @Override
+ public void onQueueChanged(List<MediaSession.QueueItem> queue) {
+ synchronized (mWaitLock) {
+ mOnQueueChangedCalled = true;
+ mQueue = queue;
+ mWaitLock.notify();
+ }
+ }
+
+ @Override
+ public void onQueueTitleChanged(CharSequence title) {
+ synchronized (mWaitLock) {
+ mOnQueueTitleChangedCalled = true;
+ mTitle = title;
+ mWaitLock.notify();
+ }
+ }
+
+ @Override
+ public void onExtrasChanged(Bundle extras) {
+ synchronized (mWaitLock) {
+ mOnExtraChangedCalled = true;
+ mExtras = extras;
+ mWaitLock.notify();
+ }
+ }
+
+ @Override
+ public void onAudioInfoChanged(MediaController.PlaybackInfo info) {
+ synchronized (mWaitLock) {
+ mOnAudioInfoChangedCalled = true;
+ mPlaybackInfo = info;
+ mWaitLock.notify();
+ }
+ }
+
+ @Override
+ public void onSessionDestroyed() {
+ synchronized (mWaitLock) {
+ mOnSessionDestroyedCalled = true;
+ mWaitLock.notify();
+ }
}
@Override
public void onSessionEvent(String event, Bundle extras) {
- synchronized (mLock) {
+ synchronized (mWaitLock) {
+ mOnSessionEventCalled = true;
mEvent = event;
mExtras = (Bundle) extras.clone();
- mLock.notify();
+ mWaitLock.notify();
}
}
}
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index 04b8554..5ec3c45 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -29,6 +29,7 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
+import java.io.FilenameFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -357,6 +358,23 @@
assertFalse(f.canExecute());
}
+ @MediumTest
+ public void testDeviceTreeCpuCurrent() throws Exception {
+ final File f = new File("/proc/device-tree/cpus");
+ assertTrue(f.exists());
+ String[] dir = f.list(new FilenameFilter() {
+ @Override
+ public boolean accept(File pathname, String name) {
+ return (pathname.isDirectory() && name.matches("cpu@[0-9]+"));
+ }
+ });
+
+ for(String cpuDir : dir) {
+ File fCpu = new File(cpuDir + "/current");
+ assertTrue(f.canRead());
+ }
+ }
+
private static boolean isDirectoryWritable(File directory) {
File toCreate = new File(directory, "hello");
try {
diff --git a/tests/tests/permission/src/android/permission/cts/TvPermissionTest.java b/tests/tests/permission/src/android/permission/cts/TvPermissionTest.java
deleted file mode 100644
index 0c648c5..0000000
--- a/tests/tests/permission/src/android/permission/cts/TvPermissionTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.permission.cts;
-
-import android.content.ContentValues;
-import android.content.pm.PackageManager;
-import android.media.tv.TvContract;
-import android.net.Uri;
-import android.test.AndroidTestCase;
-
-/**
- * Tests for TV API related permissions.
- */
-public class TvPermissionTest extends AndroidTestCase {
- private static final String DUMMY_INPUT_ID = "dummy";
-
- private boolean mHasTvInputFramework;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mHasTvInputFramework = getContext().getPackageManager()
- .hasSystemFeature(PackageManager.FEATURE_LIVE_TV);
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- private void verifyQuery(Uri uri, final String[] projection,
- String tableName) throws Exception {
- try {
- getContext().getContentResolver().query(uri, projection, null, null, null);
- fail("Accessing " + tableName + " table should require READ_EPG_DATA permission.");
- } catch (SecurityException e) {
- // Expected exception
- }
- }
-
- public void verifyInsert(Uri uri, String tableName) throws Exception {
- try {
- ContentValues values = new ContentValues();
- getContext().getContentResolver().insert(uri, values);
- fail("Accessing " + tableName + " table should require WRITE_EPG_DATA permission.");
- } catch (SecurityException e) {
- // Expected exception
- }
- }
-
- public void verifyUpdate(Uri uri, String tableName) throws Exception {
- try {
- ContentValues values = new ContentValues();
- getContext().getContentResolver().update(uri, values, null, null);
- fail("Accessing " + tableName + " table should require WRITE_EPG_DATA permission.");
- } catch (SecurityException e) {
- // Expected exception
- }
- }
-
- public void verifyDelete(Uri uri, String tableName) throws Exception {
- try {
- getContext().getContentResolver().delete(uri, null, null);
- fail("Accessing " + tableName + " table should require WRITE_EPG_DATA permission.");
- } catch (SecurityException e) {
- // Expected exception
- }
- }
-
- public void testQueryChannels() throws Exception {
- if (!mHasTvInputFramework) return;
- final String[] projection = { TvContract.Channels._ID };
- verifyQuery(TvContract.Channels.CONTENT_URI, projection, "channels");
- }
-
- public void testInsertChannels() throws Exception {
- if (!mHasTvInputFramework) return;
- verifyInsert(TvContract.Channels.CONTENT_URI, "channels");
- }
-
- public void testUpdateChannels() throws Exception {
- if (!mHasTvInputFramework) return;
- verifyUpdate(TvContract.Channels.CONTENT_URI, "channels");
- }
-
- public void testDeleteChannels() throws Exception {
- if (!mHasTvInputFramework) return;
- verifyDelete(TvContract.Channels.CONTENT_URI, "channels");
- }
-
- public void testQueryPrograms() throws Exception {
- if (!mHasTvInputFramework) return;
- final String[] projection = { TvContract.Programs._ID };
- verifyQuery(TvContract.Programs.CONTENT_URI, projection, "programs");
- }
-
- public void testInsertPrograms() throws Exception {
- if (!mHasTvInputFramework) return;
- verifyInsert(TvContract.Programs.CONTENT_URI, "programs");
- }
-
- public void testUpdatePrograms() throws Exception {
- if (!mHasTvInputFramework) return;
- verifyUpdate(TvContract.Programs.CONTENT_URI, "programs");
- }
-
- public void testDeletePrograms() throws Exception {
- if (!mHasTvInputFramework) return;
- verifyDelete(TvContract.Programs.CONTENT_URI, "programs");
- }
-}
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java
index b4e2855..bb63792 100644
--- a/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java
+++ b/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java
@@ -16,6 +16,7 @@
package android.permission2.cts;
+import android.content.pm.PackageManager;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder.AudioSource;
@@ -37,9 +38,20 @@
*/
@SmallTest
public void testCreateAudioRecord() {
- final int bufferSize = AudioRecord.getMinBufferSize(44100,
+ int bufferSize = AudioRecord.getMinBufferSize(44100,
AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
+ if (bufferSize <= 0)
+ {
+ // getMinBufferSize() returns an invalid buffer size.
+ // That could be because there is no microphone. In that case,
+ // use this buffer size to test AudioRecord creation.
+ PackageManager packageManager = mContext.getPackageManager();
+ if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)) {
+ bufferSize = 44100;
+ }
+ }
+
// The attempt to create the AudioRecord object succeeds even if the
// app does not have permission, but the object is not usable.
// The API should probably throw SecurityException but it was not originally
diff --git a/tests/tests/renderscript/assets/BLASData.txt b/tests/tests/renderscript/assets/BLASData.txt
new file mode 100644
index 0000000..31c671f
--- /dev/null
+++ b/tests/tests/renderscript/assets/BLASData.txt
@@ -0,0 +1,1577 @@
+/* Don't edit this file! It is auto-generated by blas_gen.py. */
+
+M, N, K, KL, KU;
+10 17 16 2 1
+
+L2_sGEMV_A_mn
+0.4, 0.8, 0.6, 0.5, 0.9, 0.4, 0.2, 0.9, 0.9, 0.4, 0.5, 0.8, 0.5, 0.4, 0.9, 0.1, 0.6, 0.1, 0.6, 0.2, 0.6, 0.1, 0.3, 0.3, 0.9, 0.8, 0.4, 0.8, 0.1, 0.2, 0.1, 0.3, 0.1, 0.2, 0.2, 0.9, 0.4, 0.1, 0.9, 0.7, 0.2, 0.9, 0.2, 0.1, 0.6, 0.8, 0.3, 0.4, 0.7, 0.7, 0.4, 0.4, 0.3, 0.8, 0.1, 0.6, 0.4, 0.9, 0.8, 0.4, 0.9, 0.8, 0.2, 0.4, 0.5, 0.7, 0.3, 0.7, 0.3, 0.1, 0.7, 0.7, 0.4, 0.3, 0.6, 0.1, 0.6, 0.4, 0.8, 0.7, 0.9, 0.8, 0.1, 0.7, 0.6, 0.6, 0.6, 0.3, 0.1, 0.5, 0.9, 0.2, 0.2, 0.2, 0.3, 0.8, 0.2, 0.9, 0.8, 0.3, 0.1, 0.1, 0.1, 0.8, 0.1, 0.3, 0.8, 0.2, 0.5, 0.9, 0.7, 0.2, 0.3, 0.7, 0.1, 0.2, 0.8, 0.8, 0.4, 0.2, 0.2, 0.4, 0.2, 0.3, 0.1, 0.8, 0.2, 0.3, 0.9, 0.5, 0.3, 0.5, 0.4, 0.5, 0.6, 0.6, 0.4, 0.2, 0.2, 0.7, 0.9, 0.1, 0.8, 0.7, 0.5, 0.6, 0.8, 0.7, 0.8, 0.2, 0.4, 0.1, 0.2, 0.7, 0.7, 0.3, 0.3, 0.4, 0.8, 0.9, 0.5, 0.4, 0.5, 0.7, 0.6, 0.4, 0.1, 0.9, 0.2, 0.2,
+
+L2_sGEMV_x_n1
+0.6, 0.8, 0.7, 0.9, 0.8, 0.4, 0.6, 0.6, 0.3, 0.2, 0.1, 0.2, 0.7, 0.8, 0.5, 0.4, 0.6,
+
+L2_sGEMV_x_n2
+0.6, 0.0, 0.8, 0.0, 0.7, 0.0, 0.9, 0.0, 0.8, 0.0, 0.4, 0.0, 0.6, 0.0, 0.6, 0.0, 0.3, 0.0, 0.2, 0.0, 0.1, 0.0, 0.2, 0.0, 0.7, 0.0, 0.8, 0.0, 0.5, 0.0, 0.4, 0.0, 0.6, 0.0,
+
+L2_sGEMV_y_m1
+0.4, 0.5, 0.7, 0.2, 0.2, 0.4, 0.1, 0.8, 0.5, 0.4,
+
+L2_sGEMV_y_m2
+0.4, 0.0, 0.0, 0.5, 0.0, 0.0, 0.7, 0.0, 0.0, 0.2, 0.0, 0.0, 0.2, 0.0, 0.0, 0.4, 0.0, 0.0, 0.1, 0.0, 0.0, 0.8, 0.0, 0.0, 0.5, 0.0, 0.0, 0.4, 0.0, 0.0,
+
+L2_sGEMV_o_N
+5.77000007883, 3.59000010103, 5.2700000222, 4.98000011489, 4.88000006273, 4.30000009164, 4.31000010833, 4.32000012204, 4.90000004768, 4.76000007406,
+
+L2_sGEMV_o_N2
+5.77000007883, 0.0, 0.0, 3.59000010103, 0.0, 0.0, 5.2700000222, 0.0, 0.0, 4.98000011489, 0.0, 0.0, 4.88000006273, 0.0, 0.0, 4.30000009164, 0.0, 0.0, 4.31000010833, 0.0, 0.0, 4.32000012204, 0.0, 0.0, 4.90000004768, 0.0, 0.0, 4.76000007406, 0.0, 0.0,
+
+L2_sGEMV_o_T
+1.98000005528, 2.99000003099, 2.29000003099, 2.3299999994, 3.17000000134, 2.17000001475, 2.80000006035, 3.09999998882, 2.20000004247, 2.25000002459, 2.87000005201, 2.29000003546, 2.80000001043, 2.35000004545, 2.81999999911, 1.91000002712, 2.22000007659,
+
+L2_sGEMV_o_H
+1.98000005528, 2.99000003099, 2.29000003099, 2.3299999994, 3.17000000134, 2.17000001475, 2.80000006035, 3.09999998882, 2.20000004247, 2.25000002459, 2.87000005201, 2.29000003546, 2.80000001043, 2.35000004545, 2.81999999911, 1.91000002712, 2.22000007659,
+
+L2_dGEMV_A_mn
+0.8, 0.7, 0.9, 0.2, 0.6, 0.9, 0.4, 0.1, 0.9, 0.9, 0.6, 0.2, 0.9, 0.9, 0.1, 0.5, 0.7, 0.6, 0.5, 0.6, 0.9, 0.3, 0.6, 0.1, 0.7, 0.7, 0.6, 0.2, 0.5, 0.9, 0.6, 0.4, 0.6, 0.9, 0.4, 0.2, 0.2, 0.9, 0.3, 0.8, 0.7, 0.1, 0.1, 0.9, 0.5, 0.1, 0.6, 0.5, 0.7, 0.8, 0.4, 0.3, 0.3, 0.9, 0.4, 0.9, 0.6, 0.2, 0.7, 0.2, 0.9, 0.3, 0.7, 0.4, 0.2, 0.3, 0.8, 0.1, 0.5, 0.1, 0.7, 0.8, 0.8, 0.8, 0.1, 0.4, 0.2, 0.5, 0.3, 0.6, 0.9, 0.6, 0.2, 0.4, 0.6, 0.7, 0.7, 0.2, 0.5, 0.8, 0.2, 0.4, 0.6, 0.9, 0.1, 0.6, 0.3, 0.8, 0.2, 0.3, 0.5, 0.6, 0.8, 0.1, 0.4, 0.2, 0.4, 0.6, 0.3, 0.5, 0.7, 0.6, 0.7, 0.2, 0.7, 0.2, 0.9, 0.2, 0.7, 0.7, 0.2, 0.3, 0.1, 0.3, 0.2, 0.7, 0.5, 0.2, 0.5, 0.7, 0.4, 0.6, 0.6, 0.5, 0.1, 0.9, 0.6, 0.8, 0.2, 0.8, 0.2, 0.8, 0.3, 0.6, 0.2, 0.9, 0.7, 0.1, 0.8, 0.9, 0.6, 0.1, 0.6, 0.1, 0.2, 0.3, 0.3, 0.5, 0.1, 0.1, 0.5, 0.2, 0.3, 0.3, 0.4, 0.6, 0.4, 0.2, 0.1, 0.4,
+
+L2_dGEMV_x_n1
+0.7, 0.8, 0.7, 0.8, 0.9, 0.4, 0.2, 0.5, 0.4, 0.5, 0.2, 0.8, 0.9, 0.7, 0.4, 0.2, 0.4,
+
+L2_dGEMV_x_n2
+0.7, 0.0, 0.8, 0.0, 0.7, 0.0, 0.8, 0.0, 0.9, 0.0, 0.4, 0.0, 0.2, 0.0, 0.5, 0.0, 0.4, 0.0, 0.5, 0.0, 0.2, 0.0, 0.8, 0.0, 0.9, 0.0, 0.7, 0.0, 0.4, 0.0, 0.2, 0.0, 0.4, 0.0,
+
+L2_dGEMV_y_m1
+0.9, 0.7, 0.4, 0.1, 0.5, 0.6, 0.8, 0.9, 0.3, 0.4,
+
+L2_dGEMV_y_m2
+0.9, 0.0, 0.0, 0.7, 0.0, 0.0, 0.4, 0.0, 0.0, 0.1, 0.0, 0.0, 0.5, 0.0, 0.0, 0.6, 0.0, 0.0, 0.8, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3, 0.0, 0.0, 0.4, 0.0, 0.0,
+
+L2_dGEMV_o_N
+6.79, 6.43, 4.64, 4.91, 5.82, 5.46, 5.12, 4.91, 5.6, 3.53,
+
+L2_dGEMV_o_N2
+6.79, 0.0, 0.0, 6.43, 0.0, 0.0, 4.64, 0.0, 0.0, 4.91, 0.0, 0.0, 5.82, 0.0, 0.0, 5.46, 0.0, 0.0, 5.12, 0.0, 0.0, 4.91, 0.0, 0.0, 5.6, 0.0, 0.0, 3.53, 0.0, 0.0,
+
+L2_dGEMV_o_T
+4.19, 2.94, 3.34, 3.32, 3.59, 3.47, 2.22, 2.98, 3.28, 3.81, 3.14, 2.63, 5.13, 3.7, 2.79, 2.29, 4.2,
+
+L2_dGEMV_o_H
+4.19, 2.94, 3.34, 3.32, 3.59, 3.47, 2.22, 2.98, 3.28, 3.81, 3.14, 2.63, 5.13, 3.7, 2.79, 2.29, 4.2,
+
+L2_cGEMV_A_mn
+0.600000023842, 0.899999976158, 0.899999976158, 0.899999976158, 0.40000000596, 0.20000000298, 0.300000011921, 0.699999988079, 0.5, 0.800000011921, 0.5, 0.10000000149, 0.10000000149, 0.899999976158, 0.20000000298, 0.600000023842, 0.5, 0.800000011921, 0.5, 0.5, 0.40000000596, 0.40000000596, 0.800000011921, 0.5, 0.699999988079, 0.800000011921, 0.10000000149, 0.5, 0.40000000596, 0.5, 0.40000000596, 0.10000000149, 0.600000023842, 0.5, 0.5, 0.5, 0.300000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.800000011921, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.10000000149, 0.40000000596, 0.899999976158, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.5, 0.600000023842, 0.10000000149, 0.40000000596, 0.600000023842, 0.10000000149, 0.5, 0.800000011921, 0.5, 0.10000000149, 0.40000000596, 0.20000000298, 0.800000011921, 0.899999976158, 0.10000000149, 0.20000000298, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.600000023842, 0.800000011921, 0.800000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.899999976158, 0.600000023842, 0.300000011921, 0.5, 0.20000000298, 0.20000000298, 0.5, 0.699999988079, 0.300000011921, 0.899999976158, 0.800000011921, 0.20000000298, 0.40000000596, 0.10000000149, 0.20000000298, 0.40000000596, 0.600000023842, 0.10000000149, 0.300000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.800000011921, 0.800000011921, 0.899999976158, 0.5, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.20000000298, 0.40000000596, 0.699999988079, 0.899999976158, 0.899999976158, 0.300000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.800000011921, 0.300000011921, 0.800000011921, 0.5, 0.10000000149, 0.800000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.699999988079, 0.40000000596, 0.699999988079, 0.10000000149, 0.5, 0.300000011921, 0.800000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.300000011921, 0.5, 0.699999988079, 0.899999976158, 0.300000011921, 0.20000000298, 0.5, 0.10000000149, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.899999976158, 0.600000023842, 0.20000000298, 0.5, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.40000000596, 0.40000000596, 0.899999976158, 0.10000000149, 0.20000000298, 0.600000023842, 0.40000000596, 0.600000023842, 0.600000023842, 0.800000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.5, 0.699999988079, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.40000000596, 0.600000023842, 0.40000000596, 0.899999976158, 0.800000011921, 0.10000000149, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.699999988079, 0.699999988079, 0.20000000298, 0.600000023842, 0.20000000298, 0.300000011921, 0.800000011921, 0.5, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.40000000596, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.300000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, 0.300000011921, 0.699999988079, 0.600000023842, 0.800000011921, 0.300000011921, 0.5, 0.20000000298, 0.300000011921, 0.699999988079, 0.800000011921, 0.600000023842, 0.899999976158, 0.10000000149, 0.10000000149, 0.800000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.300000011921, 0.899999976158, 0.20000000298, 0.40000000596, 0.600000023842, 0.899999976158, 0.20000000298, 0.40000000596, 0.600000023842, 0.20000000298, 0.40000000596, 0.10000000149, 0.600000023842, 0.300000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.300000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.20000000298, 0.40000000596, 0.699999988079, 0.5, 0.20000000298, 0.899999976158, 0.600000023842, 0.20000000298, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.699999988079, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.699999988079, 0.40000000596, 0.800000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.40000000596, 0.600000023842, 0.20000000298, 0.600000023842, 0.40000000596, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.699999988079, 0.600000023842, 0.10000000149, 0.600000023842, 0.600000023842, 0.20000000298, 0.600000023842, 0.699999988079, 0.5, 0.10000000149, 0.40000000596, 0.600000023842, 0.40000000596, 0.699999988079, 0.5, 0.899999976158, 0.600000023842, 0.600000023842, 0.699999988079, 0.600000023842, 0.800000011921, 0.5, 0.10000000149, 0.800000011921, 0.10000000149, 0.699999988079, 0.20000000298, 0.800000011921, 0.10000000149, 0.800000011921, 0.5, 0.600000023842, 0.20000000298, 0.899999976158, 0.20000000298, 0.899999976158, 0.5, 0.800000011921, 0.300000011921, 0.40000000596, 0.10000000149,
+
+L2_cGEMV_x_n1
+0.5, 0.40000000596, 0.300000011921, 0.300000011921, 0.40000000596, 0.5, 0.20000000298, 0.699999988079, 0.5, 0.10000000149, 0.699999988079, 0.899999976158, 0.699999988079, 0.899999976158, 0.600000023842, 0.600000023842, 0.699999988079, 0.800000011921, 0.20000000298, 0.5, 0.5, 0.800000011921, 0.899999976158, 0.300000011921, 0.899999976158, 0.5, 0.899999976158, 0.699999988079, 0.699999988079, 0.20000000298, 0.899999976158, 0.600000023842, 0.899999976158, 0.699999988079,
+
+L2_cGEMV_x_n2
+0.5, 0.40000000596, 0.0, 0.0, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.40000000596, 0.5, 0.0, 0.0, 0.20000000298, 0.699999988079, 0.0, 0.0, 0.5, 0.10000000149, 0.0, 0.0, 0.699999988079, 0.899999976158, 0.0, 0.0, 0.699999988079, 0.899999976158, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.0, 0.0, 0.699999988079, 0.800000011921, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.5, 0.800000011921, 0.0, 0.0, 0.899999976158, 0.300000011921, 0.0, 0.0, 0.899999976158, 0.5, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0, 0.699999988079, 0.20000000298, 0.0, 0.0, 0.899999976158, 0.600000023842, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0,
+
+L2_cGEMV_y_m1
+0.699999988079, 0.300000011921, 0.20000000298, 0.40000000596, 0.699999988079, 0.699999988079, 0.20000000298, 0.600000023842, 0.40000000596, 0.40000000596, 0.800000011921, 0.800000011921, 0.300000011921, 0.5, 0.5, 0.5, 0.600000023842, 0.10000000149, 0.40000000596, 0.300000011921,
+
+L2_cGEMV_y_m2
+0.699999988079, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.300000011921, 0.0, 0.0, 0.0, 0.0,
+
+L2_cGEMV_o_N
+0.369999971539, 10.0700000311, 1.44999985248, 10.9199999611, -1.03000003666, 10.2100000301, -0.440000020564, 11.8699999484, 1.32999995992, 9.55000003353, 0.859999980181, 10.7200000505, -0.0200000840426, 10.2000000387, 0.449999946356, 10.3200000088, 2.18999997288, 9.83000009477, 4.28999994755, 10.3300000791,
+
+L2_cGEMV_o_N2
+0.369999971539, 10.0700000311, 0.0, 0.0, 0.0, 0.0, 1.44999985248, 10.9199999611, 0.0, 0.0, 0.0, 0.0, -1.03000003666, 10.2100000301, 0.0, 0.0, 0.0, 0.0, -0.440000020564, 11.8699999484, 0.0, 0.0, 0.0, 0.0, 1.32999995992, 9.55000003353, 0.0, 0.0, 0.0, 0.0, 0.859999980181, 10.7200000505, 0.0, 0.0, 0.0, 0.0, -0.0200000840426, 10.2000000387, 0.0, 0.0, 0.0, 0.0, 0.449999946356, 10.3200000088, 0.0, 0.0, 0.0, 0.0, 2.18999997288, 9.83000009477, 0.0, 0.0, 0.0, 0.0, 4.28999994755, 10.3300000791, 0.0, 0.0, 0.0, 0.0,
+
+L2_cGEMV_o_T
+0.0800000418723, 5.80000011399, -0.369999973774, 5.96000003904, 0.930000003129, 5.72000009149, -0.129999988973, 6.23000003964, 0.349999982119, 4.70000010133, 0.630000014305, 6.19000001237, 0.389999969155, 5.09000008985, 0.679999983758, 5.34000007868, 1.37000000283, 5.9000000827, 0.109999974966, 4.40000005662, 0.269999968559, 5.56000010014, 1.31999997079, 4.87000009596, 0.869999949187, 4.98000009328, -0.0100000442564, 5.00000004992, 1.29000001609, 4.30000008345, 1.37000000581, 4.20000011697, 0.869999999851, 4.86000010163,
+
+L2_cGEMV_o_H
+5.94000011817, -0.519999925345, 6.01000006139, -0.479999917448, 5.43000012383, 0.879999977052, 5.53000006795, 0.210000015199, 5.23000008881, -0.759999982417, 6.35000001639, 1.01000001743, 5.09000016585, 0.229999995679, 5.58000012234, 0.659999977946, 5.87000006393, 1.64000006601, 4.21000005543, 0.179999993443, 5.31000006065, 0.539999995232, 5.56000006437, 0.490000033975, 5.49000007793, 0.339999989271, 5.3700000371, -0.28000001803, 4.95000009388, 0.560000053942, 4.65000004545, 0.940000015348, 4.81000006512, 0.540000002682,
+
+L2_zGEMV_A_mn
+0.3, 0.7, 0.7, 0.2, 0.6, 0.4, 0.3, 0.7, 0.3, 0.7, 0.4, 0.1, 0.6, 0.7, 0.6, 0.6, 0.1, 0.5, 0.4, 0.9, 0.4, 0.5, 0.1, 0.1, 0.6, 0.9, 0.3, 0.8, 0.5, 0.3, 0.5, 0.3, 0.5, 0.4, 0.7, 0.7, 0.7, 0.6, 0.3, 0.3, 0.4, 0.5, 0.8, 0.9, 0.5, 0.4, 0.7, 0.2, 0.5, 0.8, 0.4, 0.5, 0.1, 0.2, 0.4, 0.5, 0.5, 0.1, 0.6, 0.4, 0.8, 0.4, 0.4, 0.5, 0.1, 0.6, 0.2, 0.2, 0.8, 0.8, 0.4, 0.9, 0.6, 0.9, 0.9, 0.8, 0.5, 0.1, 0.2, 0.8, 0.2, 0.5, 0.4, 0.5, 0.4, 0.6, 0.6, 0.8, 0.7, 0.6, 0.6, 0.8, 0.2, 0.8, 0.9, 0.2, 0.7, 0.3, 0.3, 0.4, 0.5, 0.6, 0.1, 0.7, 0.7, 0.6, 0.9, 0.4, 0.9, 0.2, 0.5, 0.8, 0.4, 0.6, 0.8, 0.5, 0.3, 0.3, 0.3, 0.2, 0.2, 0.8, 0.2, 0.9, 0.2, 0.5, 0.5, 0.3, 0.4, 0.5, 0.4, 0.7, 0.4, 0.6, 0.9, 0.2, 0.1, 0.9, 0.2, 0.5, 0.6, 0.8, 0.6, 0.5, 0.1, 0.6, 0.7, 0.5, 0.3, 0.1, 0.5, 0.1, 0.6, 0.4, 0.8, 0.6, 0.5, 0.4, 0.7, 0.2, 0.4, 0.6, 0.9, 0.7, 0.6, 0.3, 0.7, 0.6, 0.9, 0.2, 0.1, 0.3, 0.6, 0.5, 0.7, 0.3, 0.8, 0.4, 0.9, 0.4, 0.6, 0.2, 0.8, 0.5, 0.1, 0.8, 0.2, 0.1, 0.9, 0.8, 0.5, 0.3, 0.1, 0.8, 0.9, 0.9, 0.1, 0.8, 0.4, 0.7, 0.5, 0.9, 0.8, 0.6, 0.1, 0.8, 0.9, 0.1, 0.5, 0.4, 0.5, 0.7, 0.7, 0.7, 0.4, 0.7, 0.3, 0.6, 0.4, 0.8, 0.6, 0.7, 0.8, 0.3, 0.5, 0.6, 0.7, 0.3, 0.5, 0.3, 0.3, 0.8, 0.6, 0.8, 0.5, 0.3, 0.1, 0.6, 0.2, 0.5, 0.6, 0.9, 0.3, 0.8, 0.5, 0.7, 0.8, 0.9, 0.5, 0.5, 0.7, 0.1, 0.3, 0.4, 0.7, 0.5, 0.3, 0.1, 0.1, 0.4, 0.6, 0.6, 0.3, 0.3, 0.3, 0.7, 0.6, 0.1, 0.4, 0.8, 0.1, 0.8, 0.1, 0.8, 0.2, 0.5, 0.5, 0.8, 0.6, 0.1, 0.5, 0.7, 0.5, 0.8, 0.2, 0.5, 0.3, 0.5, 0.4, 0.3, 0.2, 0.1, 0.1, 0.6, 0.3, 0.9, 0.2, 0.1, 0.2, 0.8, 0.2, 0.2, 0.9, 0.3, 0.4, 0.9, 0.5, 0.9, 0.1, 0.5, 0.9, 0.4, 0.4, 0.1, 0.5, 0.2, 0.5, 0.8, 0.4, 0.8, 0.2, 0.9, 0.5, 0.5, 0.5, 0.7, 0.2, 0.7, 0.6, 0.6, 0.6, 0.1, 0.1, 0.2, 0.4, 0.7, 0.8, 0.3, 0.8, 0.2,
+
+L2_zGEMV_x_n1
+0.4, 0.2, 0.6, 0.2, 0.1, 0.7, 0.2, 0.8, 0.4, 0.2, 0.9, 0.6, 0.5, 0.1, 0.6, 0.8, 0.2, 0.3, 0.1, 0.2, 0.9, 0.4, 0.1, 0.7, 0.9, 0.4, 0.9, 0.8, 0.1, 0.6, 0.1, 0.9, 0.8, 0.8,
+
+L2_zGEMV_x_n2
+0.4, 0.2, 0.0, 0.0, 0.6, 0.2, 0.0, 0.0, 0.1, 0.7, 0.0, 0.0, 0.2, 0.8, 0.0, 0.0, 0.4, 0.2, 0.0, 0.0, 0.9, 0.6, 0.0, 0.0, 0.5, 0.1, 0.0, 0.0, 0.6, 0.8, 0.0, 0.0, 0.2, 0.3, 0.0, 0.0, 0.1, 0.2, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.1, 0.7, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.9, 0.8, 0.0, 0.0, 0.1, 0.6, 0.0, 0.0, 0.1, 0.9, 0.0, 0.0, 0.8, 0.8, 0.0, 0.0,
+
+L2_zGEMV_y_m1
+0.7, 0.5, 0.2, 0.6, 0.8, 0.1, 0.5, 0.1, 0.1, 0.4, 0.9, 0.3, 0.4, 0.5, 0.5, 0.2, 0.6, 0.4, 0.5, 0.3,
+
+L2_zGEMV_y_m2
+0.7, 0.5, 0.0, 0.0, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0, 0.0, 0.0, 0.8, 0.1, 0.0, 0.0, 0.0, 0.0, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0, 0.1, 0.4, 0.0, 0.0, 0.0, 0.0, 0.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.4, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.2, 0.0, 0.0, 0.0, 0.0, 0.6, 0.4, 0.0, 0.0, 0.0, 0.0, 0.5, 0.3, 0.0, 0.0, 0.0, 0.0,
+
+L2_zGEMV_o_N
+0.1, 8.39, 0.51, 8.0, -0.56, 9.56, 0.18, 8.46, 0.33, 9.43, -0.05, 8.77, -1.2, 9.11, -1.65, 7.85, -1.87, 8.4, -0.32, 8.49,
+
+L2_zGEMV_o_N2
+0.1, 8.39, 0.0, 0.0, 0.0, 0.0, 0.51, 8.0, 0.0, 0.0, 0.0, 0.0, -0.56, 9.56, 0.0, 0.0, 0.0, 0.0, 0.18, 8.46, 0.0, 0.0, 0.0, 0.0, 0.33, 9.43, 0.0, 0.0, 0.0, 0.0, -0.05, 8.77, 0.0, 0.0, 0.0, 0.0, -1.2, 9.11, 0.0, 0.0, 0.0, 0.0, -1.65, 7.85, 0.0, 0.0, 0.0, 0.0, -1.87, 8.4, 0.0, 0.0, 0.0, 0.0, -0.32, 8.49, 0.0, 0.0, 0.0, 0.0,
+
+L2_zGEMV_o_T
+-0.47, 4.69, 1.75, 4.84, 1.58, 5.41, 1.82, 5.04, 1.26, 4.92, 1.51, 5.0, 1.64, 4.4, 0.23, 5.27, 0.6, 3.83, 1.08, 4.89, 1.05, 4.49, 0.7, 5.19, 1.88, 4.88, 0.66, 5.36, 0.98, 4.58, 1.13, 5.31, 2.04, 5.12,
+
+L2_zGEMV_o_H
+4.45, -2.27, 4.83, -0.8, 5.02, -0.29, 5.08, 0.08, 5.68, -0.72, 4.91, -0.46, 4.68, -0.86, 4.41, -0.99, 3.68, -0.41, 4.34, -1.25, 4.61, -1.19, 3.44, -0.77, 5.06, -0.62, 4.96, -0.82, 4.16, -0.22, 4.41, -0.03, 5.12, -0.36,
+
+L2_sGBMV_A_mn
+0.0, 0.0, 0.3, 0.1, 0.0, 0.2, 0.1, 0.2, 0.9, 0.1, 0.3, 0.1, 0.9, 0.1, 0.3, 0.5, 0.6, 0.8, 0.3, 0.7, 0.6, 0.8, 0.9, 0.7, 0.6, 0.6, 0.3, 0.3, 0.6, 0.2, 0.8, 0.7, 0.2, 0.1, 0.8, 0.3, 0.5, 0.7, 0.4, 0.3,
+
+L2_sGBMV_x_n1
+0.2, 0.8, 0.6, 0.9, 0.1, 0.2, 0.7, 0.5, 0.1, 0.2, 0.3, 0.8, 0.1, 0.5, 0.7, 0.2, 0.9,
+
+L2_sGBMV_x_n2
+0.2, 0.0, 0.8, 0.0, 0.6, 0.0, 0.9, 0.0, 0.1, 0.0, 0.2, 0.0, 0.7, 0.0, 0.5, 0.0, 0.1, 0.0, 0.2, 0.0, 0.3, 0.0, 0.8, 0.0, 0.1, 0.0, 0.5, 0.0, 0.7, 0.0, 0.2, 0.0, 0.9, 0.0,
+
+L2_sGBMV_y_m1
+0.9, 0.8, 0.3, 0.4, 0.7, 0.7, 0.2, 0.3, 0.9, 0.8,
+
+L2_sGBMV_y_m2
+0.9, 0.0, 0.0, 0.8, 0.0, 0.0, 0.3, 0.0, 0.0, 0.4, 0.0, 0.0, 0.7, 0.0, 0.0, 0.7, 0.0, 0.0, 0.2, 0.0, 0.0, 0.3, 0.0, 0.0, 0.9, 0.0, 0.0, 0.8, 0.0, 0.0,
+
+L2_sGBMV_o_N
+1.03999998182, 1.04000002205, 0.830000025481, 1.50000000522, 1.95000000969, 1.98999997884, 0.740000023544, 1.03000002399, 1.22999998227, 1.29000002131,
+
+L2_sGBMV_o_N2
+1.03999998182, 0.0, 0.0, 1.04000002205, 0.0, 0.0, 0.830000025481, 0.0, 0.0, 1.50000000522, 0.0, 0.0, 1.95000000969, 0.0, 0.0, 1.98999997884, 0.0, 0.0, 0.740000023544, 0.0, 0.0, 1.03000002399, 0.0, 0.0, 1.22999998227, 0.0, 0.0, 1.29000002131, 0.0, 0.0,
+
+L2_sGBMV_o_T
+0.900000014901, 1.36000001073, 1.31000004649, 2.0299999927, 1.1900000146, 1.61999997973, 1.48999997586, 1.29000002131, 1.58999999672, 0.790000016093, 0.540000025034, 0.800000011921, 0.10000000149, 0.5, 0.699999988079, 0.20000000298, 0.899999976158,
+
+L2_sGBMV_o_H
+0.900000014901, 1.36000001073, 1.31000004649, 2.0299999927, 1.1900000146, 1.61999997973, 1.48999997586, 1.29000002131, 1.58999999672, 0.790000016093, 0.540000025034, 0.800000011921, 0.10000000149, 0.5, 0.699999988079, 0.20000000298, 0.899999976158,
+
+L2_dGBMV_A_mn
+0.0, 0.0, 0.5, 0.8, 0.0, 0.9, 0.1, 0.5, 0.4, 0.1, 0.4, 0.1, 0.5, 0.9, 0.9, 0.4, 0.8, 0.7, 0.7, 0.9, 0.7, 0.3, 0.5, 0.9, 0.3, 0.4, 0.3, 0.2, 0.4, 0.8, 0.3, 0.4, 0.6, 0.8, 0.4, 0.7, 0.7, 0.5, 0.3, 0.9,
+
+L2_dGBMV_x_n1
+0.9, 0.3, 0.1, 0.5, 0.5, 0.9, 0.5, 0.1, 0.7, 0.4, 0.4, 0.6, 0.8, 0.2, 0.1, 0.9, 0.9,
+
+L2_dGBMV_x_n2
+0.9, 0.0, 0.3, 0.0, 0.1, 0.0, 0.5, 0.0, 0.5, 0.0, 0.9, 0.0, 0.5, 0.0, 0.1, 0.0, 0.7, 0.0, 0.4, 0.0, 0.4, 0.0, 0.6, 0.0, 0.8, 0.0, 0.2, 0.0, 0.1, 0.0, 0.9, 0.0, 0.9, 0.0,
+
+L2_dGBMV_y_m1
+0.5, 0.1, 0.4, 0.4, 0.2, 0.5, 0.1, 0.3, 0.8, 0.7,
+
+L2_dGBMV_y_m2
+0.5, 0.0, 0.0, 0.1, 0.0, 0.0, 0.4, 0.0, 0.0, 0.4, 0.0, 0.0, 0.2, 0.0, 0.0, 0.5, 0.0, 0.0, 0.1, 0.0, 0.0, 0.3, 0.0, 0.0, 0.8, 0.0, 0.0, 0.7, 0.0, 0.0,
+
+L2_dGBMV_o_N
+1.19, 0.99, 0.88, 1.29, 1.79, 1.9, 0.78, 1.37, 1.74, 1.6,
+
+L2_dGBMV_o_N2
+1.19, 0.0, 0.0, 0.99, 0.0, 0.0, 0.88, 0.0, 0.0, 1.29, 0.0, 0.0, 1.79, 0.0, 0.0, 1.9, 0.0, 0.0, 0.78, 0.0, 0.0, 1.37, 0.0, 0.0, 1.74, 0.0, 0.0, 1.6, 0.0, 0.0,
+
+L2_dGBMV_o_T
+1.4, 0.95, 0.83, 1.39, 0.98, 1.49, 1.7, 1.34, 1.49, 1.17, 1.03, 0.6, 0.8, 0.2, 0.1, 0.9, 0.9,
+
+L2_dGBMV_o_H
+1.4, 0.95, 0.83, 1.39, 0.98, 1.49, 1.7, 1.34, 1.49, 1.17, 1.03, 0.6, 0.8, 0.2, 0.1, 0.9, 0.9,
+
+L2_cGBMV_A_mn
+0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.5, 0.40000000596, 0.10000000149, 0.0, 0.0, 0.600000023842, 0.800000011921, 0.10000000149, 0.899999976158, 0.600000023842, 0.899999976158, 0.800000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.5, 0.300000011921, 0.5, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.899999976158, 0.800000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.10000000149, 0.20000000298, 0.699999988079, 0.899999976158, 0.800000011921, 0.5, 0.899999976158, 0.10000000149, 0.699999988079, 0.899999976158, 0.40000000596, 0.10000000149, 0.20000000298, 0.5, 0.20000000298, 0.899999976158, 0.699999988079, 0.600000023842, 0.5, 0.600000023842, 0.800000011921, 0.10000000149, 0.5, 0.699999988079, 0.699999988079, 0.20000000298, 0.600000023842, 0.10000000149, 0.800000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.300000011921, 0.5, 0.20000000298, 0.5, 0.20000000298, 0.300000011921, 0.899999976158, 0.20000000298, 0.300000011921, 0.600000023842, 0.699999988079,
+
+L2_cGBMV_x_n1
+0.5, 0.600000023842, 0.5, 0.20000000298, 0.300000011921, 0.40000000596, 0.5, 0.40000000596, 0.899999976158, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.600000023842, 0.5, 0.600000023842, 0.5, 0.699999988079, 0.699999988079, 0.699999988079, 0.600000023842, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.5, 0.699999988079, 0.20000000298, 0.40000000596,
+
+L2_cGBMV_x_n2
+0.5, 0.600000023842, 0.0, 0.0, 0.5, 0.20000000298, 0.0, 0.0, 0.300000011921, 0.40000000596, 0.0, 0.0, 0.5, 0.40000000596, 0.0, 0.0, 0.899999976158, 0.800000011921, 0.0, 0.0, 0.800000011921, 0.10000000149, 0.0, 0.0, 0.699999988079, 0.40000000596, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0, 0.300000011921, 0.600000023842, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.0, 0.0, 0.699999988079, 0.600000023842, 0.0, 0.0, 0.5, 0.40000000596, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.5, 0.699999988079, 0.0, 0.0, 0.20000000298, 0.40000000596, 0.0, 0.0,
+
+L2_cGBMV_y_m1
+0.5, 0.5, 0.10000000149, 0.40000000596, 0.20000000298, 0.5, 0.300000011921, 0.20000000298, 0.800000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.5, 0.20000000298, 0.10000000149, 0.600000023842, 0.600000023842, 0.20000000298, 0.40000000596, 0.699999988079,
+
+L2_cGBMV_y_m2
+0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.5, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.699999988079, 0.0, 0.0, 0.0, 0.0,
+
+L2_cGBMV_o_N
+0.729999984503, 1.30000001267, -0.389999991506, 2.1400000459, 0.379999994934, 1.92000006765, -0.149999970198, 2.05999998614, 1.22999998525, 2.47000004008, 0.439999946803, 3.77999998301, 1.34999998584, 2.38999998555, 0.209999986142, 3.11000001818, 0.510000021905, 2.24000003844, 0.240000029504, 2.68000003517,
+
+L2_cGBMV_o_N2
+0.729999984503, 1.30000001267, 0.0, 0.0, 0.0, 0.0, -0.389999991506, 2.1400000459, 0.0, 0.0, 0.0, 0.0, 0.379999994934, 1.92000006765, 0.0, 0.0, 0.0, 0.0, -0.149999970198, 2.05999998614, 0.0, 0.0, 0.0, 0.0, 1.22999998525, 2.47000004008, 0.0, 0.0, 0.0, 0.0, 0.439999946803, 3.77999998301, 0.0, 0.0, 0.0, 0.0, 1.34999998584, 2.38999998555, 0.0, 0.0, 0.0, 0.0, 0.209999986142, 3.11000001818, 0.0, 0.0, 0.0, 0.0, 0.510000021905, 2.24000003844, 0.0, 0.0, 0.0, 0.0, 0.240000029504, 2.68000003517, 0.0, 0.0, 0.0, 0.0,
+
+L2_cGBMV_o_T
+0.399999991059, 1.96000004053, 0.150000000745, 1.04000002801, 0.209999997318, 2.28000005826, 0.499999963492, 1.94000005409, 0.589999982566, 1.82000003859, 0.129999978542, 1.49000004068, 0.469999949187, 2.1200000371, 0.849999984354, 2.27000001475, -0.129999959171, 1.69000005335, 0.730000032187, 0.980000014305, 0.350000053644, 1.20000000894, 0.699999988079, 0.699999988079, 0.699999988079, 0.600000023842, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.5, 0.699999988079, 0.20000000298, 0.40000000596,
+
+L2_cGBMV_o_H
+1.74000001311, 1.22000003338, 1.69000002429, 0.340000001192, 2.37000003487, 0.0400000019372, 2.06000004873, 0.679999991208, 2.16999999836, 0.740000025779, 2.43000006199, -0.129999964386, 2.1500000082, 0.279999992698, 2.33000001058, 0.989999984056, 1.97000004977, 0.490000026524, 1.23000004411, 0.499999988079, 1.33000002027, 0.640000010133, 0.699999988079, 0.699999988079, 0.699999988079, 0.600000023842, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.5, 0.699999988079, 0.20000000298, 0.40000000596,
+
+L2_zGBMV_A_mn
+0.0, 0.0, 0.0, 0.0, 0.3, 0.6, 0.4, 0.4, 0.0, 0.0, 0.1, 0.3, 0.5, 0.1, 0.1, 0.8, 0.7, 0.7, 0.1, 0.2, 0.4, 0.6, 0.1, 0.1, 0.9, 0.3, 0.7, 0.6, 0.8, 0.1, 0.2, 0.7, 0.7, 0.2, 0.2, 0.1, 0.6, 0.4, 0.6, 0.6, 0.5, 0.5, 0.4, 0.6, 0.3, 0.2, 0.5, 0.8, 0.5, 0.5, 0.5, 0.4, 0.9, 0.1, 0.2, 0.1, 0.7, 0.8, 0.1, 0.4, 0.7, 0.8, 0.5, 0.6, 0.3, 0.9, 0.2, 0.8, 0.9, 0.1, 0.6, 0.3, 0.4, 0.8, 0.5, 0.5, 0.1, 0.5, 0.5, 0.3,
+
+L2_zGBMV_x_n1
+0.1, 0.4, 0.6, 0.8, 0.7, 0.7, 0.6, 0.2, 0.2, 0.4, 0.1, 0.8, 0.7, 0.8, 0.7, 0.4, 0.5, 0.9, 0.1, 0.1, 0.5, 0.3, 0.9, 0.6, 0.4, 0.6, 0.7, 0.5, 0.3, 0.5, 0.9, 0.4, 0.9, 0.6,
+
+L2_zGBMV_x_n2
+0.1, 0.4, 0.0, 0.0, 0.6, 0.8, 0.0, 0.0, 0.7, 0.7, 0.0, 0.0, 0.6, 0.2, 0.0, 0.0, 0.2, 0.4, 0.0, 0.0, 0.1, 0.8, 0.0, 0.0, 0.7, 0.8, 0.0, 0.0, 0.7, 0.4, 0.0, 0.0, 0.5, 0.9, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.5, 0.3, 0.0, 0.0, 0.9, 0.6, 0.0, 0.0, 0.4, 0.6, 0.0, 0.0, 0.7, 0.5, 0.0, 0.0, 0.3, 0.5, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.9, 0.6, 0.0, 0.0,
+
+L2_zGBMV_y_m1
+0.5, 0.7, 0.7, 0.2, 0.5, 0.6, 0.8, 0.9, 0.3, 0.8, 0.1, 0.7, 0.8, 0.6, 0.7, 0.6, 0.7, 0.1, 0.1, 0.3,
+
+L2_zGBMV_y_m2
+0.5, 0.7, 0.0, 0.0, 0.0, 0.0, 0.7, 0.2, 0.0, 0.0, 0.0, 0.0, 0.5, 0.6, 0.0, 0.0, 0.0, 0.0, 0.8, 0.9, 0.0, 0.0, 0.0, 0.0, 0.3, 0.8, 0.0, 0.0, 0.0, 0.0, 0.1, 0.7, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.7, 0.6, 0.0, 0.0, 0.0, 0.0, 0.7, 0.1, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.0, 0.0, 0.0, 0.0,
+
+L2_zGBMV_o_N
+0.21, 1.44, 0.32, 1.36, 0.09, 1.93, 1.39, 3.15, 0.29, 2.39, -0.28, 2.6, 1.08, 2.28, -0.24, 3.19, 0.4, 2.56, -0.02, 2.08,
+
+L2_zGBMV_o_N2
+0.21, 1.44, 0.0, 0.0, 0.0, 0.0, 0.32, 1.36, 0.0, 0.0, 0.0, 0.0, 0.09, 1.93, 0.0, 0.0, 0.0, 0.0, 1.39, 3.15, 0.0, 0.0, 0.0, 0.0, 0.29, 2.39, 0.0, 0.0, 0.0, 0.0, -0.28, 2.6, 0.0, 0.0, 0.0, 0.0, 1.08, 2.28, 0.0, 0.0, 0.0, 0.0, -0.24, 3.19, 0.0, 0.0, 0.0, 0.0, 0.4, 2.56, 0.0, 0.0, 0.0, 0.0, -0.02, 2.08, 0.0, 0.0, 0.0, 0.0,
+
+L2_zGBMV_o_T
+-0.23, 1.91, 1.23, 2.66, 0.52, 3.55, 0.82, 1.7, -0.69, 2.78, -0.14, 3.29, 0.8, 2.85, 0.67, 2.36, 1.01, 1.98, 0.35, 0.45, 0.46, 0.48, 0.9, 0.6, 0.4, 0.6, 0.7, 0.5, 0.3, 0.5, 0.9, 0.4, 0.9, 0.6,
+
+L2_zGBMV_o_H
+1.57, 0.19, 2.61, 1.44, 2.96, 0.75, 1.98, 1.28, 2.65, 0.5, 2.54, 1.13, 2.7, 0.71, 2.39, -0.2, 2.05, 0.9, 0.71, -0.07, 0.64, 0.42, 0.9, 0.6, 0.4, 0.6, 0.7, 0.5, 0.3, 0.5, 0.9, 0.4, 0.9, 0.6,
+
+L2_cHEMV_A_nn
+0.800000011921, 0.0, 0.5, 0.800000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.600000023842, 0.5, 0.40000000596, 0.300000011921, 0.899999976158, 0.20000000298, 0.5, 0.5, 0.699999988079, 0.10000000149, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.20000000298, 0.699999988079, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, -0.800000011921, 0.899999976158, 0.0, 0.20000000298, 0.600000023842, 0.699999988079, 0.40000000596, 0.600000023842, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.40000000596, 0.5, 0.40000000596, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.699999988079, 0.10000000149, 0.40000000596, 0.699999988079, -0.800000011921, 0.20000000298, -0.600000023842, 0.5, 0.0, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.5, 0.5, 0.40000000596, 0.20000000298, 0.800000011921, 0.699999988079, 0.300000011921, 0.699999988079, 0.5, 0.5, 0.20000000298, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.40000000596, 0.20000000298, 0.300000011921, 0.40000000596, 0.5, 0.300000011921, 0.300000011921, 0.300000011921, -0.20000000298, 0.699999988079, -0.40000000596, 0.10000000149, -0.300000011921, 0.899999976158, 0.0, 0.899999976158, 0.699999988079, 0.600000023842, 0.10000000149, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.10000000149, 0.20000000298, 0.699999988079, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.899999976158, 0.800000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.10000000149, -0.800000011921, 0.600000023842, -0.10000000149, 0.800000011921, -0.899999976158, 0.899999976158, -0.699999988079, 0.40000000596, 0.0, 0.5, 0.300000011921, 0.20000000298, 0.600000023842, 0.5, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.600000023842, 0.699999988079, 0.5, 0.300000011921, 0.40000000596, 0.600000023842, 0.600000023842, -0.5, 0.20000000298, -0.40000000596, 0.699999988079, -0.699999988079, 0.600000023842, -0.10000000149, 0.5, -0.300000011921, 0.300000011921, 0.0, 0.800000011921, 0.899999976158, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.5, 0.800000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.600000023842, 0.300000011921, 0.800000011921, 0.20000000298, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.20000000298, 0.40000000596, -0.300000011921, 0.699999988079, -0.10000000149, 0.5, -0.5, 0.600000023842, -0.800000011921, 0.20000000298, -0.600000023842, 0.800000011921, -0.899999976158, 0.699999988079, 0.0, 0.300000011921, 0.20000000298, 0.5, 0.40000000596, 0.699999988079, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.300000011921, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.40000000596, 0.800000011921, 0.600000023842, 0.899999976158, -0.20000000298, 0.20000000298, -0.300000011921, 0.40000000596, -0.20000000298, 0.10000000149, -0.800000011921, 0.5, -0.899999976158, 0.600000023842, -0.5, 0.300000011921, -0.20000000298, 0.899999976158, 0.0, 0.600000023842, 0.699999988079, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.5, 0.600000023842, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.600000023842, 0.300000011921, 0.5, -0.5, 0.5, -0.300000011921, 0.800000011921, -0.699999988079, 0.10000000149, -0.300000011921, 0.10000000149, -0.800000011921, 0.300000011921, -0.600000023842, 0.5, -0.40000000596, 0.600000023842, -0.699999988079, 0.600000023842, 0.0, 0.800000011921, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.10000000149, 0.40000000596, 0.800000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.699999988079, 0.699999988079, 0.699999988079, 0.699999988079, -0.10000000149, 0.40000000596, -0.40000000596, 0.300000011921, -0.699999988079, 0.600000023842, -0.40000000596, 0.800000011921, -0.600000023842, 0.5, -0.800000011921, 0.699999988079, -0.600000023842, 0.40000000596, -0.10000000149, 0.800000011921, -0.20000000298, 0.300000011921, 0.0, 0.600000023842, 0.300000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.300000011921, 0.40000000596, 0.10000000149, 0.699999988079, 0.40000000596, 0.5, 0.300000011921, -0.600000023842, 0.800000011921, -0.800000011921, 0.5, -0.5, 0.10000000149, -0.10000000149, 0.800000011921, -0.800000011921, 0.800000011921, -0.10000000149, 0.5, -0.20000000298, 0.300000011921, -0.699999988079, 0.300000011921, -0.5, 0.600000023842, -0.300000011921, 0.20000000298, 0.0, 0.20000000298, 0.300000011921, 0.300000011921, 0.5, 0.699999988079, 0.699999988079, 0.699999988079, 0.40000000596, 0.40000000596, 0.600000023842, 0.10000000149, 0.300000011921, 0.899999976158, -0.300000011921, 0.10000000149, -0.899999976158, 0.20000000298, -0.800000011921, 0.20000000298, -0.699999988079, 0.899999976158, -0.20000000298, 0.40000000596, -0.699999988079, 0.20000000298, -0.300000011921, 0.600000023842, -0.20000000298, 0.10000000149, -0.10000000149, 0.699999988079, -0.699999988079, 0.20000000298, -0.300000011921, 0.800000011921, 0.0, 0.600000023842, 0.20000000298, 0.800000011921, 0.20000000298, 0.300000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.10000000149, 0.10000000149, -0.800000011921, 0.40000000596, -0.5, 0.899999976158, -0.899999976158, 0.5, -0.5, 0.800000011921, -0.40000000596, 0.40000000596, -0.600000023842, 0.800000011921, -0.899999976158, 0.5, -0.600000023842, 0.40000000596, -0.800000011921, 0.800000011921, -0.899999976158, 0.300000011921, -0.5, 0.600000023842, -0.20000000298, 0.300000011921, 0.0, 0.899999976158, 0.10000000149, 0.5, 0.20000000298, 0.800000011921, 0.300000011921, 0.699999988079, 0.5, 0.10000000149, -0.20000000298, 0.40000000596, -0.800000011921, 0.10000000149, -0.40000000596, 0.20000000298, -0.699999988079, 0.40000000596, -0.899999976158, 0.300000011921, -0.800000011921, 0.300000011921, -0.699999988079, 0.5, -0.40000000596, 0.899999976158, -0.10000000149, 0.899999976158, -0.10000000149, 0.699999988079, -0.699999988079, 0.800000011921, -0.20000000298, 0.899999976158, -0.10000000149, 0.800000011921, 0.0, 0.40000000596, 0.10000000149, 0.20000000298, 0.300000011921, 0.20000000298, 0.300000011921, 0.699999988079, -0.40000000596, 0.899999976158, -0.300000011921, 0.20000000298, -0.300000011921, 0.899999976158, -0.800000011921, 0.600000023842, -0.699999988079, 0.20000000298, -0.600000023842, 0.300000011921, -0.899999976158, 0.10000000149, -0.10000000149, 0.800000011921, -0.800000011921, 0.300000011921, -0.40000000596, 0.699999988079, -0.40000000596, 0.300000011921, -0.300000011921, 0.5, -0.20000000298, 0.40000000596, -0.10000000149, 0.600000023842, 0.0, 0.699999988079, 0.899999976158, 0.899999976158, 0.300000011921, 0.10000000149, -0.10000000149, 0.699999988079, -0.699999988079, 0.40000000596, -0.5, 0.20000000298, -0.10000000149, 0.5, -0.300000011921, 0.300000011921, -0.600000023842, 0.20000000298, -0.40000000596, 0.5, -0.5, 0.600000023842, -0.699999988079, 0.10000000149, -0.699999988079, 0.40000000596, -0.600000023842, 0.899999976158, -0.20000000298, 0.800000011921, -0.300000011921, 0.20000000298, -0.300000011921, 0.699999988079, -0.899999976158, 0.899999976158, 0.0, 0.300000011921, 0.40000000596, 0.10000000149, -0.40000000596, 0.10000000149, -0.40000000596, 0.300000011921, -0.300000011921, 0.699999988079, -0.899999976158, 0.40000000596, -0.600000023842, 0.699999988079, -0.20000000298, 0.800000011921, -0.600000023842, 0.600000023842, -0.300000011921, 0.699999988079, -0.699999988079, 0.40000000596, -0.5, 0.10000000149, -0.300000011921, 0.699999988079, -0.10000000149, 0.699999988079, -0.5, 0.20000000298, -0.300000011921, 0.899999976158, -0.300000011921, 0.300000011921, -0.40000000596, 0.5, 0.0,
+
+L2_cHEMV_A_nn_pu
+0.800000011921, 0.0, 0.5, 0.800000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.600000023842, 0.5, 0.40000000596, 0.300000011921, 0.899999976158, 0.20000000298, 0.5, 0.5, 0.699999988079, 0.10000000149, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.20000000298, 0.699999988079, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.40000000596, 0.899999976158, 0.0, 0.20000000298, 0.600000023842, 0.699999988079, 0.40000000596, 0.600000023842, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.40000000596, 0.5, 0.40000000596, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.699999988079, 0.10000000149, 0.40000000596, 0.5, 0.0, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.5, 0.5, 0.40000000596, 0.20000000298, 0.800000011921, 0.699999988079, 0.300000011921, 0.699999988079, 0.5, 0.5, 0.20000000298, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.40000000596, 0.20000000298, 0.300000011921, 0.40000000596, 0.5, 0.300000011921, 0.300000011921, 0.899999976158, 0.0, 0.899999976158, 0.699999988079, 0.600000023842, 0.10000000149, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.10000000149, 0.20000000298, 0.699999988079, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.899999976158, 0.800000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.40000000596, 0.0, 0.5, 0.300000011921, 0.20000000298, 0.600000023842, 0.5, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.600000023842, 0.699999988079, 0.5, 0.300000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.0, 0.800000011921, 0.899999976158, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.5, 0.800000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.600000023842, 0.300000011921, 0.800000011921, 0.20000000298, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.20000000298, 0.699999988079, 0.0, 0.300000011921, 0.20000000298, 0.5, 0.40000000596, 0.699999988079, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.300000011921, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.40000000596, 0.800000011921, 0.600000023842, 0.899999976158, 0.0, 0.600000023842, 0.699999988079, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.5, 0.600000023842, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.600000023842, 0.300000011921, 0.600000023842, 0.0, 0.800000011921, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.10000000149, 0.40000000596, 0.800000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.699999988079, 0.699999988079, 0.699999988079, 0.300000011921, 0.0, 0.600000023842, 0.300000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.300000011921, 0.40000000596, 0.10000000149, 0.699999988079, 0.40000000596, 0.5, 0.20000000298, 0.0, 0.20000000298, 0.300000011921, 0.300000011921, 0.5, 0.699999988079, 0.699999988079, 0.699999988079, 0.40000000596, 0.40000000596, 0.600000023842, 0.10000000149, 0.300000011921, 0.800000011921, 0.0, 0.600000023842, 0.20000000298, 0.800000011921, 0.20000000298, 0.300000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.10000000149, 0.300000011921, 0.0, 0.899999976158, 0.10000000149, 0.5, 0.20000000298, 0.800000011921, 0.300000011921, 0.699999988079, 0.5, 0.800000011921, 0.0, 0.40000000596, 0.10000000149, 0.20000000298, 0.300000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.0, 0.699999988079, 0.899999976158, 0.899999976158, 0.300000011921, 0.899999976158, 0.0, 0.300000011921, 0.40000000596, 0.5, 0.0,
+
+L2_cHEMV_x_n1
+0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.10000000149, 0.899999976158, 0.5, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.40000000596, 0.40000000596, 0.899999976158, 0.899999976158, 0.800000011921, 0.5, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.600000023842,
+
+L2_cHEMV_x_n2
+0.10000000149, 0.40000000596, 0.0, 0.0, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.300000011921, 0.899999976158, 0.0, 0.0, 0.600000023842, 0.800000011921, 0.0, 0.0, 0.300000011921, 0.10000000149, 0.0, 0.0, 0.300000011921, 0.10000000149, 0.0, 0.0, 0.899999976158, 0.5, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.899999976158, 0.40000000596, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.0, 0.0, 0.899999976158, 0.899999976158, 0.0, 0.0, 0.800000011921, 0.5, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.5, 0.10000000149, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.5, 0.600000023842, 0.0, 0.0,
+
+L2_cHEMV_y_n1
+0.40000000596, 0.40000000596, 0.800000011921, 0.20000000298, 0.800000011921, 0.899999976158, 0.800000011921, 0.5, 0.899999976158, 0.5, 0.40000000596, 0.20000000298, 0.20000000298, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.300000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.699999988079, 0.800000011921, 0.600000023842, 0.300000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.40000000596,
+
+L2_cHEMV_y_n2
+0.40000000596, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.5, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.5, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.5, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.0, 0.0, 0.0, 0.0,
+
+L2_cHEMV_o_N
+0.739999967664, 7.07000008181, 1.44999999404, 7.30000005662, 1.67000003487, 7.67999999344, 1.81000004649, 6.5400000377, 3.78999994904, 7.950000038, 2.99000002354, 7.19000005409, 3.60000000298, 5.52000003189, 3.57000014737, 5.01000000477, 3.89000004664, 3.95000003204, 5.54000002056, 4.05000003651, 4.24000006527, 2.67000003338, 6.51000007257, 2.03000002325, 8.07000004455, 1.22000005722, 6.97999996439, 1.13000004038, 7.23000007689, 1.47000000134, 6.52000005201, 0.600000000745, 7.33000007316, 0.609999997318,
+
+L2_cHEMV_o_N2
+0.739999967664, 7.07000008181, 0.0, 0.0, 0.0, 0.0, 1.44999999404, 7.30000005662, 0.0, 0.0, 0.0, 0.0, 1.67000003487, 7.67999999344, 0.0, 0.0, 0.0, 0.0, 1.81000004649, 6.5400000377, 0.0, 0.0, 0.0, 0.0, 3.78999994904, 7.950000038, 0.0, 0.0, 0.0, 0.0, 2.99000002354, 7.19000005409, 0.0, 0.0, 0.0, 0.0, 3.60000000298, 5.52000003189, 0.0, 0.0, 0.0, 0.0, 3.57000014737, 5.01000000477, 0.0, 0.0, 0.0, 0.0, 3.89000004664, 3.95000003204, 0.0, 0.0, 0.0, 0.0, 5.54000002056, 4.05000003651, 0.0, 0.0, 0.0, 0.0, 4.24000006527, 2.67000003338, 0.0, 0.0, 0.0, 0.0, 6.51000007257, 2.03000002325, 0.0, 0.0, 0.0, 0.0, 8.07000004455, 1.22000005722, 0.0, 0.0, 0.0, 0.0, 6.97999996439, 1.13000004038, 0.0, 0.0, 0.0, 0.0, 7.23000007689, 1.47000000134, 0.0, 0.0, 0.0, 0.0, 6.52000005201, 0.600000000745, 0.0, 0.0, 0.0, 0.0, 7.33000007316, 0.609999997318, 0.0, 0.0, 0.0, 0.0,
+
+L2_zHEMV_A_nn
+0.3, 0.0, 0.6, 0.2, 0.8, 0.4, 0.7, 0.7, 0.1, 0.3, 0.9, 0.5, 0.5, 0.3, 0.3, 0.9, 0.1, 0.7, 0.9, 0.8, 0.4, 0.8, 0.6, 0.1, 0.3, 0.8, 0.7, 0.9, 0.8, 0.6, 0.1, 0.1, 0.8, 0.1, 0.6, -0.2, 0.7, 0.0, 0.9, 0.1, 0.3, 0.7, 0.6, 0.2, 0.5, 0.3, 0.8, 0.8, 0.1, 0.2, 0.8, 0.2, 0.4, 0.9, 0.9, 0.5, 0.1, 0.4, 0.5, 0.3, 0.1, 0.3, 0.8, 0.3, 0.2, 0.1, 0.1, 0.2, 0.8, -0.4, 0.9, -0.1, 0.9, 0.0, 0.8, 0.6, 0.3, 0.2, 0.9, 0.8, 0.5, 0.4, 0.6, 0.7, 0.5, 0.6, 0.2, 0.8, 0.9, 0.8, 0.5, 0.9, 0.1, 0.5, 0.6, 0.2, 0.9, 0.6, 0.3, 0.6, 0.9, 0.8, 0.7, -0.7, 0.3, -0.7, 0.8, -0.6, 0.3, 0.0, 0.4, 0.2, 0.2, 0.5, 0.4, 0.1, 0.5, 0.5, 0.9, 0.6, 0.6, 0.8, 0.7, 0.4, 0.8, 0.1, 0.7, 0.8, 0.7, 0.3, 0.4, 0.7, 0.6, 0.1, 0.7, 0.5, 0.1, -0.3, 0.6, -0.2, 0.3, -0.2, 0.4, -0.2, 0.4, 0.0, 0.2, 0.9, 0.6, 0.2, 0.8, 0.1, 0.2, 0.8, 0.4, 0.2, 0.6, 0.8, 0.1, 0.6, 0.3, 0.6, 0.9, 0.3, 0.6, 0.2, 0.9, 0.9, 0.6, 0.3, 0.9, -0.5, 0.5, -0.3, 0.9, -0.8, 0.2, -0.5, 0.2, -0.9, 0.5, 0.0, 0.4, 0.1, 0.6, 0.8, 0.1, 0.2, 0.4, 0.6, 0.2, 0.7, 0.7, 0.7, 0.9, 0.9, 0.6, 0.7, 0.2, 0.5, 0.4, 0.5, 0.4, 0.1, 0.5, -0.3, 0.8, -0.8, 0.5, -0.4, 0.4, -0.1, 0.6, -0.2, 0.4, -0.1, 0.9, 0.0, 0.8, 0.1, 0.8, 0.1, 0.5, 0.2, 0.6, 0.9, 0.9, 0.4, 0.9, 0.4, 0.9, 0.4, 0.4, 0.9, 0.1, 0.1, 0.1, 0.2, 0.3, -0.9, 0.1, -0.2, 0.6, -0.7, 0.5, -0.5, 0.8, -0.1, 0.6, -0.8, 0.8, -0.1, 0.5, 0.0, 0.4, 0.9, 0.9, 0.4, 0.7, 0.1, 0.5, 0.3, 0.9, 0.9, 0.7, 0.5, 0.6, 0.1, 0.5, 0.1, 0.5, 0.3, 0.1, -0.7, 0.8, -0.2, 0.5, -0.6, 0.9, -0.6, 0.2, -0.8, 0.1, -0.2, 0.8, -0.1, 0.4, -0.9, 0.9, 0.0, 0.4, 0.5, 0.3, 0.8, 0.1, 0.9, 0.5, 0.8, 0.1, 0.7, 0.6, 0.3, 0.2, 0.8, 0.8, 0.1, 0.9, -0.8, 0.4, -0.9, 0.2, -0.8, 0.6, -0.8, 0.4, -0.2, 0.4, -0.6, 0.5, -0.2, 0.9, -0.4, 0.4, -0.5, 0.9, 0.0, 0.3, 0.9, 0.7, 0.2, 0.2, 0.2, 0.1, 0.9, 0.3, 0.9, 0.7, 0.5, 0.8, 0.8, 0.4, -0.8, 0.9, -0.5, 0.9, -0.8, 0.7, -0.4, 0.6, -0.8, 0.2, -0.7, 0.6, -0.9, 0.7, -0.1, 0.3, -0.8, 0.3, -0.9, 0.3, 0.0, 0.7, 0.2, 0.5, 0.2, 0.8, 0.9, 0.2, 0.6, 0.8, 0.6, 0.8, 0.8, 0.6, -0.1, 0.1, -0.4, 0.5, -0.9, 0.8, -0.1, 0.1, -0.6, 0.7, -0.7, 0.9, -0.4, 0.5, -0.3, 0.1, -0.9, 0.7, -0.2, 0.7, -0.2, 0.8, 0.0, 0.9, 0.4, 0.2, 0.9, 0.7, 0.8, 0.4, 0.9, 0.9, 0.1, 0.3, -0.8, 0.5, -0.3, 0.1, -0.5, 0.7, -0.8, 0.3, -0.6, 0.9, -0.9, 0.9, -0.4, 0.9, -0.9, 0.5, -0.8, 0.2, -0.2, 0.5, -0.2, 0.9, -0.4, 0.8, 0.0, 0.8, 0.3, 0.6, 0.8, 0.4, 0.5, 0.6, 0.1, 0.7, -0.9, 0.1, -0.3, 0.6, -0.2, 0.7, -0.3, 0.9, -0.3, 0.6, -0.7, 0.9, -0.4, 0.7, -0.5, 0.1, -0.7, 0.1, -0.9, 0.8, -0.9, 0.2, -0.9, 0.8, -0.3, 0.1, 0.0, 0.1, 0.7, 0.1, 0.1, 0.8, 0.2, 0.8, -0.6, 0.8, -0.3, 0.9, -0.6, 0.4, -0.7, 0.6, -0.2, 0.2, -0.5, 0.4, -0.9, 0.6, -0.1, 0.6, -0.3, 0.3, -0.9, 0.2, -0.6, 0.7, -0.8, 0.6, -0.8, 0.1, -0.7, 0.8, 0.0, 0.9, 0.6, 0.1, 0.4, 0.1, -0.1, 0.2, -0.1, 0.3, -0.6, 0.6, -0.1, 0.9, -0.9, 0.4, -0.5, 0.1, -0.1, 0.5, -0.1, 0.2, -0.8, 0.7, -0.5, 0.8, -0.6, 0.4, -0.9, 0.4, -0.5, 0.1, -0.1, 0.9, -0.6, 0.5, 0.0, 0.4, 0.7, 0.8, -0.1, 0.1, -0.2, 0.9, -0.8, 0.7, -0.5, 0.6, -0.3, 0.4, -0.1, 0.1, -0.2, 0.5, -0.3, 0.8, -0.1, 0.8, -0.8, 0.8, -0.8, 0.9, -0.1, 0.6, -0.1, 0.8, -0.2, 0.1, -0.4, 0.4, -0.7, 0.1, 0.0,
+
+L2_zHEMV_A_nn_pu
+0.3, 0.0, 0.6, 0.2, 0.8, 0.4, 0.7, 0.7, 0.1, 0.3, 0.9, 0.5, 0.5, 0.3, 0.3, 0.9, 0.1, 0.7, 0.9, 0.8, 0.4, 0.8, 0.6, 0.1, 0.3, 0.8, 0.7, 0.9, 0.8, 0.6, 0.1, 0.1, 0.8, 0.1, 0.7, 0.0, 0.9, 0.1, 0.3, 0.7, 0.6, 0.2, 0.5, 0.3, 0.8, 0.8, 0.1, 0.2, 0.8, 0.2, 0.4, 0.9, 0.9, 0.5, 0.1, 0.4, 0.5, 0.3, 0.1, 0.3, 0.8, 0.3, 0.2, 0.1, 0.1, 0.2, 0.9, 0.0, 0.8, 0.6, 0.3, 0.2, 0.9, 0.8, 0.5, 0.4, 0.6, 0.7, 0.5, 0.6, 0.2, 0.8, 0.9, 0.8, 0.5, 0.9, 0.1, 0.5, 0.6, 0.2, 0.9, 0.6, 0.3, 0.6, 0.9, 0.8, 0.3, 0.0, 0.4, 0.2, 0.2, 0.5, 0.4, 0.1, 0.5, 0.5, 0.9, 0.6, 0.6, 0.8, 0.7, 0.4, 0.8, 0.1, 0.7, 0.8, 0.7, 0.3, 0.4, 0.7, 0.6, 0.1, 0.7, 0.5, 0.4, 0.0, 0.2, 0.9, 0.6, 0.2, 0.8, 0.1, 0.2, 0.8, 0.4, 0.2, 0.6, 0.8, 0.1, 0.6, 0.3, 0.6, 0.9, 0.3, 0.6, 0.2, 0.9, 0.9, 0.6, 0.3, 0.5, 0.0, 0.4, 0.1, 0.6, 0.8, 0.1, 0.2, 0.4, 0.6, 0.2, 0.7, 0.7, 0.7, 0.9, 0.9, 0.6, 0.7, 0.2, 0.5, 0.4, 0.5, 0.4, 0.1, 0.9, 0.0, 0.8, 0.1, 0.8, 0.1, 0.5, 0.2, 0.6, 0.9, 0.9, 0.4, 0.9, 0.4, 0.9, 0.4, 0.4, 0.9, 0.1, 0.1, 0.1, 0.2, 0.5, 0.0, 0.4, 0.9, 0.9, 0.4, 0.7, 0.1, 0.5, 0.3, 0.9, 0.9, 0.7, 0.5, 0.6, 0.1, 0.5, 0.1, 0.5, 0.3, 0.9, 0.0, 0.4, 0.5, 0.3, 0.8, 0.1, 0.9, 0.5, 0.8, 0.1, 0.7, 0.6, 0.3, 0.2, 0.8, 0.8, 0.1, 0.9, 0.0, 0.3, 0.9, 0.7, 0.2, 0.2, 0.2, 0.1, 0.9, 0.3, 0.9, 0.7, 0.5, 0.8, 0.8, 0.3, 0.0, 0.7, 0.2, 0.5, 0.2, 0.8, 0.9, 0.2, 0.6, 0.8, 0.6, 0.8, 0.8, 0.8, 0.0, 0.9, 0.4, 0.2, 0.9, 0.7, 0.8, 0.4, 0.9, 0.9, 0.1, 0.8, 0.0, 0.8, 0.3, 0.6, 0.8, 0.4, 0.5, 0.6, 0.1, 0.1, 0.0, 0.1, 0.7, 0.1, 0.1, 0.8, 0.2, 0.8, 0.0, 0.9, 0.6, 0.1, 0.4, 0.5, 0.0, 0.4, 0.7, 0.1, 0.0,
+
+L2_zHEMV_x_n1
+0.3, 0.3, 0.8, 0.2, 0.2, 0.6, 0.6, 0.1, 0.4, 0.2, 0.1, 0.1, 0.7, 0.2, 0.5, 0.5, 0.2, 0.8, 0.3, 0.9, 0.2, 0.8, 0.8, 0.5, 0.2, 0.4, 0.6, 0.9, 0.1, 0.2, 0.2, 0.9, 0.5, 0.8,
+
+L2_zHEMV_x_n2
+0.3, 0.3, 0.0, 0.0, 0.8, 0.2, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.4, 0.2, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.7, 0.2, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.2, 0.8, 0.0, 0.0, 0.3, 0.9, 0.0, 0.0, 0.2, 0.8, 0.0, 0.0, 0.8, 0.5, 0.0, 0.0, 0.2, 0.4, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.1, 0.2, 0.0, 0.0, 0.2, 0.9, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0,
+
+L2_zHEMV_y_n1
+0.5, 0.1, 0.5, 0.4, 0.7, 0.7, 0.6, 0.1, 0.7, 0.4, 0.2, 0.2, 0.1, 0.4, 0.6, 0.5, 0.2, 0.7, 0.9, 0.4, 0.8, 0.6, 0.4, 0.5, 0.5, 0.4, 0.6, 0.9, 0.6, 0.9, 0.9, 0.2, 0.6, 0.1,
+
+L2_zHEMV_y_n2
+0.5, 0.1, 0.0, 0.0, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0, 0.0, 0.0, 0.7, 0.7, 0.0, 0.0, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.0, 0.0, 0.7, 0.4, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.1, 0.4, 0.0, 0.0, 0.0, 0.0, 0.6, 0.5, 0.0, 0.0, 0.0, 0.0, 0.2, 0.7, 0.0, 0.0, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.4, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.0, 0.0,
+
+L2_zHEMV_o_N
+-0.25, 7.31, 0.7, 6.42, 0.46, 8.58, 1.87, 6.38, 0.74, 6.16, 0.73, 5.15, 2.89, 5.43, 2.71, 5.71, 1.43, 4.43, 3.27, 4.15, 5.68, 4.32, 4.26, 4.35, 6.42, 2.64, 7.06, 1.77, 7.05, 1.92, 6.08, 1.99, 7.42, 3.38,
+
+L2_zHEMV_o_N2
+-0.25, 7.31, 0.0, 0.0, 0.0, 0.0, 0.7, 6.42, 0.0, 0.0, 0.0, 0.0, 0.46, 8.58, 0.0, 0.0, 0.0, 0.0, 1.87, 6.38, 0.0, 0.0, 0.0, 0.0, 0.74, 6.16, 0.0, 0.0, 0.0, 0.0, 0.73, 5.15, 0.0, 0.0, 0.0, 0.0, 2.89, 5.43, 0.0, 0.0, 0.0, 0.0, 2.71, 5.71, 0.0, 0.0, 0.0, 0.0, 1.43, 4.43, 0.0, 0.0, 0.0, 0.0, 3.27, 4.15, 0.0, 0.0, 0.0, 0.0, 5.68, 4.32, 0.0, 0.0, 0.0, 0.0, 4.26, 4.35, 0.0, 0.0, 0.0, 0.0, 6.42, 2.64, 0.0, 0.0, 0.0, 0.0, 7.06, 1.77, 0.0, 0.0, 0.0, 0.0, 7.05, 1.92, 0.0, 0.0, 0.0, 0.0, 6.08, 1.99, 0.0, 0.0, 0.0, 0.0, 7.42, 3.38, 0.0, 0.0, 0.0, 0.0,
+
+L2_cHBMV_A_nn
+0.5, 0.0, 0.800000011921, 0.300000011921, 0.40000000596, 0.5, 0.699999988079, 0.0, 0.699999988079, 0.699999988079, 0.699999988079, 0.899999976158, 0.5, 0.0, 0.699999988079, 0.5, 0.800000011921, 0.40000000596, 0.800000011921, 0.0, 0.899999976158, 0.20000000298, 0.699999988079, 0.600000023842, 0.5, 0.0, 0.800000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.10000000149, 0.0, 0.300000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.10000000149, 0.0, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.0, 0.10000000149, 0.899999976158, 0.40000000596, 0.899999976158, 0.300000011921, 0.0, 0.40000000596, 0.699999988079, 0.300000011921, 0.5, 0.800000011921, 0.0, 0.800000011921, 0.800000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.0, 0.40000000596, 0.40000000596, 0.40000000596, 0.699999988079, 0.800000011921, 0.0, 0.699999988079, 0.600000023842, 0.10000000149, 0.600000023842, 0.300000011921, 0.0, 0.5, 0.699999988079, 0.40000000596, 0.300000011921, 0.40000000596, 0.0, 0.5, 0.699999988079, 0.300000011921, 0.10000000149, 0.20000000298, 0.0, 0.10000000149, 0.899999976158, 0.899999976158, 0.20000000298, 0.600000023842, 0.0, 0.10000000149, 0.899999976158, 0.0, 0.0, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0,
+
+L2_cHBMV_x_n1
+0.5, 0.300000011921, 0.800000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.699999988079, 0.300000011921, 0.699999988079, 0.699999988079, 0.5, 0.600000023842, 0.699999988079, 0.600000023842, 0.699999988079, 0.40000000596, 0.800000011921, 0.5, 0.300000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.10000000149, 0.5, 0.699999988079, 0.40000000596, 0.5, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.699999988079, 0.20000000298,
+
+L2_cHBMV_x_n2
+0.5, 0.300000011921, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.0, 0.0, 0.20000000298, 0.600000023842, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0, 0.300000011921, 0.699999988079, 0.0, 0.0, 0.699999988079, 0.5, 0.0, 0.0, 0.600000023842, 0.699999988079, 0.0, 0.0, 0.600000023842, 0.699999988079, 0.0, 0.0, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.5, 0.300000011921, 0.0, 0.0, 0.40000000596, 0.600000023842, 0.0, 0.0, 0.899999976158, 0.10000000149, 0.0, 0.0, 0.5, 0.699999988079, 0.0, 0.0, 0.40000000596, 0.5, 0.0, 0.0, 0.10000000149, 0.600000023842, 0.0, 0.0, 0.800000011921, 0.40000000596, 0.0, 0.0, 0.699999988079, 0.20000000298, 0.0, 0.0,
+
+L2_cHBMV_y_n1
+0.10000000149, 0.899999976158, 0.40000000596, 0.20000000298, 0.699999988079, 0.899999976158, 0.10000000149, 0.800000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.699999988079, 0.699999988079, 0.300000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.600000023842, 0.600000023842, 0.300000011921, 0.699999988079, 0.40000000596, 0.40000000596, 0.40000000596,
+
+L2_cHBMV_y_n2
+0.10000000149, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.0, 0.0, 0.0, 0.0,
+
+L2_cHBMV_o_N
+0.680000003874, 1.87000002295, 1.17000000805, 2.35999996454, 2.15999999434, 2.33999997735, 2.40999998242, 2.63000001132, 2.32000002965, 2.59999998063, 2.07000001475, 2.64999998286, 1.57000000209, 1.00000006109, 0.980000019521, 1.84999997318, 1.51999996632, 1.27000000507, 2.89999994636, 1.57000005797, 2.31000006735, 2.09000002205, 1.96000000179, 1.61000003234, 1.93000000387, 1.20000001341, 1.48000001729, 0.84000004068, 1.89000000715, 1.60000000298, 1.79000003099, 1.37000000134, 1.47000001922, 0.36000002861,
+
+L2_cHBMV_o_N2
+0.680000003874, 1.87000002295, 0.0, 0.0, 0.0, 0.0, 1.17000000805, 2.35999996454, 0.0, 0.0, 0.0, 0.0, 2.15999999434, 2.33999997735, 0.0, 0.0, 0.0, 0.0, 2.40999998242, 2.63000001132, 0.0, 0.0, 0.0, 0.0, 2.32000002965, 2.59999998063, 0.0, 0.0, 0.0, 0.0, 2.07000001475, 2.64999998286, 0.0, 0.0, 0.0, 0.0, 1.57000000209, 1.00000006109, 0.0, 0.0, 0.0, 0.0, 0.980000019521, 1.84999997318, 0.0, 0.0, 0.0, 0.0, 1.51999996632, 1.27000000507, 0.0, 0.0, 0.0, 0.0, 2.89999994636, 1.57000005797, 0.0, 0.0, 0.0, 0.0, 2.31000006735, 2.09000002205, 0.0, 0.0, 0.0, 0.0, 1.96000000179, 1.61000003234, 0.0, 0.0, 0.0, 0.0, 1.93000000387, 1.20000001341, 0.0, 0.0, 0.0, 0.0, 1.48000001729, 0.84000004068, 0.0, 0.0, 0.0, 0.0, 1.89000000715, 1.60000000298, 0.0, 0.0, 0.0, 0.0, 1.79000003099, 1.37000000134, 0.0, 0.0, 0.0, 0.0, 1.47000001922, 0.36000002861, 0.0, 0.0, 0.0, 0.0,
+
+L2_zHBMV_A_nn
+0.3, 0.0, 0.6, 0.6, 0.5, 0.6, 0.4, 0.0, 0.3, 0.2, 0.7, 0.7, 0.1, 0.0, 0.9, 0.8, 0.8, 0.2, 0.7, 0.0, 0.8, 0.4, 0.3, 0.5, 0.6, 0.0, 0.8, 0.6, 0.3, 0.1, 0.4, 0.0, 0.3, 0.6, 0.3, 0.8, 0.2, 0.0, 0.4, 0.4, 0.8, 0.1, 0.5, 0.0, 0.3, 0.4, 0.8, 0.6, 0.8, 0.0, 0.8, 0.3, 0.2, 0.6, 0.7, 0.0, 0.5, 0.1, 0.9, 0.5, 0.5, 0.0, 0.5, 0.7, 0.5, 0.9, 0.2, 0.0, 0.9, 0.2, 0.8, 0.6, 0.4, 0.0, 0.2, 0.2, 0.1, 0.4, 0.4, 0.0, 0.9, 0.8, 0.7, 0.1, 0.7, 0.0, 0.4, 0.3, 0.7, 0.2, 0.9, 0.0, 0.1, 0.8, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0,
+
+L2_zHBMV_x_n1
+0.4, 0.2, 0.2, 0.8, 0.6, 0.4, 0.7, 0.8, 0.5, 0.8, 0.4, 0.3, 0.8, 0.2, 0.5, 0.3, 0.2, 0.6, 0.6, 0.5, 0.3, 0.6, 0.8, 0.1, 0.6, 0.8, 0.2, 0.9, 0.2, 0.5, 0.3, 0.3, 0.2, 0.7,
+
+L2_zHBMV_x_n2
+0.4, 0.2, 0.0, 0.0, 0.2, 0.8, 0.0, 0.0, 0.6, 0.4, 0.0, 0.0, 0.7, 0.8, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0, 0.4, 0.3, 0.0, 0.0, 0.8, 0.2, 0.0, 0.0, 0.5, 0.3, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0, 0.6, 0.5, 0.0, 0.0, 0.3, 0.6, 0.0, 0.0, 0.8, 0.1, 0.0, 0.0, 0.6, 0.8, 0.0, 0.0, 0.2, 0.9, 0.0, 0.0, 0.2, 0.5, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.2, 0.7, 0.0, 0.0,
+
+L2_zHBMV_y_n1
+0.2, 0.5, 0.2, 0.4, 0.2, 0.6, 0.7, 0.4, 0.5, 0.9, 0.4, 0.3, 0.6, 0.2, 0.5, 0.3, 0.6, 0.9, 0.9, 0.1, 0.3, 0.3, 0.9, 0.4, 0.5, 0.1, 0.9, 0.5, 0.6, 0.3, 0.5, 0.8, 0.5, 0.2,
+
+L2_zHBMV_y_n2
+0.2, 0.5, 0.0, 0.0, 0.0, 0.0, 0.2, 0.4, 0.0, 0.0, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0, 0.0, 0.0, 0.7, 0.4, 0.0, 0.0, 0.0, 0.0, 0.5, 0.9, 0.0, 0.0, 0.0, 0.0, 0.4, 0.3, 0.0, 0.0, 0.0, 0.0, 0.6, 0.2, 0.0, 0.0, 0.0, 0.0, 0.5, 0.3, 0.0, 0.0, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.9, 0.1, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.0, 0.0, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0, 0.9, 0.5, 0.0, 0.0, 0.0, 0.0, 0.6, 0.3, 0.0, 0.0, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0, 0.0, 0.0, 0.5, 0.2, 0.0, 0.0, 0.0, 0.0,
+
+L2_zHBMV_o_N
+0.02, 1.72, 0.67, 1.89, 1.03, 2.72, 2.8, 2.39, 2.6, 2.56, 2.08, 1.68, 1.47, 1.1, 1.51, 1.0, 1.72, 2.23, 3.0, 1.63, 1.11, 2.34, 2.42, 2.34, 1.85, 0.73, 1.92, 1.35, 2.05, 1.88, 0.69, 2.05, 1.07, 0.51,
+
+L2_zHBMV_o_N2
+0.02, 1.72, 0.0, 0.0, 0.0, 0.0, 0.67, 1.89, 0.0, 0.0, 0.0, 0.0, 1.03, 2.72, 0.0, 0.0, 0.0, 0.0, 2.8, 2.39, 0.0, 0.0, 0.0, 0.0, 2.6, 2.56, 0.0, 0.0, 0.0, 0.0, 2.08, 1.68, 0.0, 0.0, 0.0, 0.0, 1.47, 1.1, 0.0, 0.0, 0.0, 0.0, 1.51, 1.0, 0.0, 0.0, 0.0, 0.0, 1.72, 2.23, 0.0, 0.0, 0.0, 0.0, 3.0, 1.63, 0.0, 0.0, 0.0, 0.0, 1.11, 2.34, 0.0, 0.0, 0.0, 0.0, 2.42, 2.34, 0.0, 0.0, 0.0, 0.0, 1.85, 0.73, 0.0, 0.0, 0.0, 0.0, 1.92, 1.35, 0.0, 0.0, 0.0, 0.0, 2.05, 1.88, 0.0, 0.0, 0.0, 0.0, 0.69, 2.05, 0.0, 0.0, 0.0, 0.0, 1.07, 0.51, 0.0, 0.0, 0.0, 0.0,
+
+L2_sSYMV_A_nn
+0.3, 0.7, 0.4, 0.5, 0.5, 0.5, 0.9, 0.7, 0.6, 0.5, 0.6, 0.4, 0.3, 0.2, 0.2, 0.3, 0.3, 0.7, 0.9, 0.5, 0.4, 0.6, 0.1, 0.8, 0.6, 0.1, 0.7, 0.5, 0.6, 0.3, 0.9, 0.9, 0.2, 0.5, 0.4, 0.5, 0.4, 0.3, 0.2, 0.3, 0.9, 0.9, 0.4, 0.4, 0.2, 0.4, 0.5, 0.1, 0.2, 0.2, 0.4, 0.5, 0.4, 0.3, 0.7, 0.5, 0.4, 0.2, 0.6, 0.7, 0.6, 0.8, 0.2, 0.3, 0.5, 0.8, 0.3, 0.1, 0.5, 0.6, 0.2, 0.5, 0.4, 0.9, 0.2, 0.8, 0.2, 0.2, 0.2, 0.7, 0.8, 0.5, 0.6, 0.5, 0.4, 0.5, 0.1, 0.3, 0.4, 0.9, 0.7, 0.9, 0.3, 0.2, 0.1, 0.4, 0.9, 0.3, 0.3, 0.4, 0.9, 0.9, 0.9, 0.8, 0.9, 0.2, 0.2, 0.9, 0.8, 0.1, 0.9, 0.8, 0.5, 0.1, 0.4, 0.4, 0.5, 0.3, 0.3, 0.7, 0.6, 0.9, 0.6, 0.8, 0.3, 0.1, 0.3, 0.7, 0.4, 0.2, 0.7, 0.4, 0.4, 0.9, 0.4, 0.5, 0.6, 0.1, 0.4, 0.7, 0.2, 0.2, 0.9, 0.7, 0.8, 0.4, 0.7, 0.2, 0.4, 0.5, 0.4, 0.9, 0.6, 0.5, 0.7, 0.4, 0.6, 0.2, 0.1, 0.8, 0.4, 0.4, 0.2, 0.4, 0.1, 0.6, 0.4, 0.2, 0.4, 0.2, 0.6, 0.5, 0.2, 0.8, 0.2, 0.4, 0.5, 0.2, 0.7, 0.4, 0.7, 0.7, 0.1, 0.8, 0.6, 0.8, 0.9, 0.4, 0.6, 0.4, 0.2, 0.7, 0.9, 0.1, 0.7, 0.2, 0.1, 0.7, 0.1, 0.8, 0.3, 0.6, 0.4, 0.5, 0.3, 0.3, 0.5, 0.3, 0.8, 0.3, 0.4, 0.4, 0.4, 0.6, 0.1, 0.8, 0.8, 0.8, 0.2, 0.8, 0.5, 0.2, 0.9, 0.1, 0.5, 0.5, 0.3, 0.4, 0.4, 0.5, 0.4, 0.8, 0.3, 0.8, 0.5, 0.3, 0.2, 0.1, 0.2, 0.9, 0.2, 0.8, 0.6, 0.4, 0.5, 0.9, 0.4, 0.2, 0.6, 0.6, 0.2, 0.3, 0.8, 0.1, 0.1, 0.3, 0.2, 0.2, 0.3, 0.5, 0.9, 0.3, 0.4, 0.9, 0.4, 0.8, 0.4, 0.8, 0.2, 0.1, 0.4, 0.5, 0.3, 0.5, 0.4, 0.1, 0.4, 0.9, 0.3, 0.5, 0.6, 0.2, 0.9, 0.5, 0.5, 0.1, 0.1, 0.5, 0.9,
+
+L2_sSYMV_A_nn_pu
+0.3, 0.7, 0.4, 0.5, 0.5, 0.5, 0.9, 0.7, 0.6, 0.5, 0.6, 0.4, 0.3, 0.2, 0.2, 0.3, 0.3, 0.9, 0.5, 0.4, 0.6, 0.1, 0.8, 0.6, 0.1, 0.7, 0.5, 0.6, 0.3, 0.9, 0.9, 0.2, 0.5, 0.4, 0.3, 0.2, 0.3, 0.9, 0.9, 0.4, 0.4, 0.2, 0.4, 0.5, 0.1, 0.2, 0.2, 0.4, 0.7, 0.5, 0.4, 0.2, 0.6, 0.7, 0.6, 0.8, 0.2, 0.3, 0.5, 0.8, 0.3, 0.1, 0.4, 0.9, 0.2, 0.8, 0.2, 0.2, 0.2, 0.7, 0.8, 0.5, 0.6, 0.5, 0.4, 0.7, 0.9, 0.3, 0.2, 0.1, 0.4, 0.9, 0.3, 0.3, 0.4, 0.9, 0.9, 0.8, 0.1, 0.9, 0.8, 0.5, 0.1, 0.4, 0.4, 0.5, 0.3, 0.3, 0.3, 0.7, 0.4, 0.2, 0.7, 0.4, 0.4, 0.9, 0.4, 0.5, 0.8, 0.4, 0.7, 0.2, 0.4, 0.5, 0.4, 0.9, 0.6, 0.2, 0.4, 0.1, 0.6, 0.4, 0.2, 0.4, 0.2, 0.7, 0.7, 0.1, 0.8, 0.6, 0.8, 0.9, 0.1, 0.8, 0.3, 0.6, 0.4, 0.5, 0.8, 0.8, 0.2, 0.8, 0.5, 0.5, 0.3, 0.2, 0.1, 0.8, 0.1, 0.1, 0.4, 0.5, 0.9,
+
+L2_sSYMV_x_n1
+0.7, 0.3, 0.5, 0.3, 0.6, 0.4, 0.6, 0.2, 0.5, 0.9, 0.5, 0.4, 0.9, 0.6, 0.1, 0.4, 0.1,
+
+L2_sSYMV_x_n2
+0.7, 0.0, 0.3, 0.0, 0.5, 0.0, 0.3, 0.0, 0.6, 0.0, 0.4, 0.0, 0.6, 0.0, 0.2, 0.0, 0.5, 0.0, 0.9, 0.0, 0.5, 0.0, 0.4, 0.0, 0.9, 0.0, 0.6, 0.0, 0.1, 0.0, 0.4, 0.0, 0.1, 0.0,
+
+L2_sSYMV_y_n1
+0.6, 0.1, 0.2, 0.7, 0.9, 0.8, 0.6, 0.9, 0.2, 0.6, 0.3, 0.7, 0.5, 0.8, 0.9, 0.3, 0.2,
+
+L2_sSYMV_y_n2
+0.6, 0.0, 0.0, 0.1, 0.0, 0.0, 0.2, 0.0, 0.0, 0.7, 0.0, 0.0, 0.9, 0.0, 0.0, 0.8, 0.0, 0.0, 0.6, 0.0, 0.0, 0.9, 0.0, 0.0, 0.2, 0.0, 0.0, 0.6, 0.0, 0.0, 0.3, 0.0, 0.0, 0.7, 0.0, 0.0, 0.5, 0.0, 0.0, 0.8, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3, 0.0, 0.0, 0.2, 0.0, 0.0,
+
+L2_sSYMV_o_N
+4.32000009969, 4.43000005677, 3.35000003725, 4.38000006348, 4.54000002354, 4.56000005022, 5.22000002891, 4.91000001967, 4.25000004396, 3.86000010759, 4.21000008672, 4.15000002682, 4.76000011653, 4.42000007212, 4.06000007927, 4.11000005171, 3.61000003755,
+
+L2_sSYMV_o_N2
+4.32000009969, 0.0, 0.0, 4.43000005677, 0.0, 0.0, 3.35000003725, 0.0, 0.0, 4.38000006348, 0.0, 0.0, 4.54000002354, 0.0, 0.0, 4.56000005022, 0.0, 0.0, 5.22000002891, 0.0, 0.0, 4.91000001967, 0.0, 0.0, 4.25000004396, 0.0, 0.0, 3.86000010759, 0.0, 0.0, 4.21000008672, 0.0, 0.0, 4.15000002682, 0.0, 0.0, 4.76000011653, 0.0, 0.0, 4.42000007212, 0.0, 0.0, 4.06000007927, 0.0, 0.0, 4.11000005171, 0.0, 0.0, 3.61000003755, 0.0, 0.0,
+
+L2_dSYMV_A_nn
+0.9, 0.4, 0.9, 0.1, 0.5, 0.2, 0.9, 0.3, 0.5, 0.8, 0.7, 0.7, 0.2, 0.5, 0.4, 0.3, 0.1, 0.4, 0.7, 0.8, 0.8, 0.7, 0.4, 0.2, 0.9, 0.1, 0.3, 0.5, 0.6, 0.8, 0.3, 0.5, 0.5, 0.2, 0.9, 0.8, 0.6, 0.6, 0.8, 0.2, 0.3, 0.6, 0.3, 0.1, 0.8, 0.4, 0.5, 0.5, 0.2, 0.3, 0.8, 0.1, 0.8, 0.6, 0.1, 0.3, 0.7, 0.7, 0.6, 0.5, 0.9, 0.8, 0.8, 0.2, 0.8, 0.6, 0.4, 0.9, 0.5, 0.7, 0.8, 0.3, 0.4, 0.3, 0.7, 0.7, 0.8, 0.6, 0.4, 0.4, 0.8, 0.3, 0.2, 0.3, 0.9, 0.2, 0.4, 0.2, 0.7, 0.3, 0.7, 0.3, 0.7, 0.4, 0.5, 0.1, 0.5, 0.9, 0.9, 0.9, 0.9, 0.3, 0.9, 0.2, 0.3, 0.7, 0.7, 0.3, 0.6, 0.3, 0.9, 0.4, 0.1, 0.4, 0.5, 0.8, 0.4, 0.9, 0.3, 0.3, 0.9, 0.6, 0.6, 0.7, 0.7, 0.3, 0.5, 0.5, 0.3, 0.4, 0.7, 0.2, 0.3, 0.2, 0.6, 0.7, 0.5, 0.1, 0.3, 0.5, 0.8, 0.4, 0.9, 0.5, 0.5, 0.8, 0.3, 0.4, 0.3, 0.6, 0.3, 0.7, 0.4, 0.8, 0.3, 0.1, 0.9, 0.6, 0.5, 0.4, 0.3, 0.8, 0.8, 0.3, 0.6, 0.4, 0.1, 0.4, 0.7, 0.1, 0.7, 0.5, 0.8, 0.8, 0.4, 0.1, 0.1, 0.4, 0.3, 0.3, 0.3, 0.7, 0.5, 0.4, 0.8, 0.7, 0.1, 0.7, 0.6, 0.4, 0.8, 0.4, 0.5, 0.4, 0.7, 0.4, 0.6, 0.7, 0.4, 0.2, 0.2, 0.2, 0.6, 0.2, 0.2, 0.8, 0.5, 0.2, 0.8, 0.9, 0.5, 0.2, 0.3, 0.4, 0.5, 0.2, 0.4, 0.2, 0.5, 0.4, 0.7, 0.5, 0.3, 0.5, 0.8, 0.3, 0.9, 0.8, 0.3, 0.6, 0.1, 0.4, 0.2, 0.2, 0.8, 0.7, 0.8, 0.9, 0.4, 0.5, 0.2, 0.6, 0.2, 0.9, 0.4, 0.2, 0.3, 0.4, 0.8, 0.2, 0.5, 0.7, 0.5, 0.7, 0.5, 0.3, 0.5, 0.3, 0.4, 0.3, 0.9, 0.9, 0.6, 0.7, 0.7, 0.7, 0.6, 0.4, 0.8, 0.7, 0.7, 0.3, 0.1, 0.2, 0.8, 0.9, 0.9, 0.3, 0.3, 0.7, 0.4, 0.1, 0.1, 0.2, 0.7, 0.9, 0.5, 0.3, 0.8,
+
+L2_dSYMV_A_nn_pu
+0.9, 0.4, 0.9, 0.1, 0.5, 0.2, 0.9, 0.3, 0.5, 0.8, 0.7, 0.7, 0.2, 0.5, 0.4, 0.3, 0.1, 0.7, 0.8, 0.8, 0.7, 0.4, 0.2, 0.9, 0.1, 0.3, 0.5, 0.6, 0.8, 0.3, 0.5, 0.5, 0.2, 0.6, 0.6, 0.8, 0.2, 0.3, 0.6, 0.3, 0.1, 0.8, 0.4, 0.5, 0.5, 0.2, 0.3, 0.8, 0.1, 0.3, 0.7, 0.7, 0.6, 0.5, 0.9, 0.8, 0.8, 0.2, 0.8, 0.6, 0.4, 0.9, 0.4, 0.3, 0.7, 0.7, 0.8, 0.6, 0.4, 0.4, 0.8, 0.3, 0.2, 0.3, 0.9, 0.7, 0.3, 0.7, 0.4, 0.5, 0.1, 0.5, 0.9, 0.9, 0.9, 0.9, 0.3, 0.6, 0.3, 0.9, 0.4, 0.1, 0.4, 0.5, 0.8, 0.4, 0.9, 0.3, 0.5, 0.5, 0.3, 0.4, 0.7, 0.2, 0.3, 0.2, 0.6, 0.7, 0.5, 0.8, 0.3, 0.4, 0.3, 0.6, 0.3, 0.7, 0.4, 0.8, 0.3, 0.6, 0.4, 0.1, 0.4, 0.7, 0.1, 0.3, 0.7, 0.5, 0.4, 0.8, 0.7, 0.1, 0.4, 0.2, 0.2, 0.2, 0.6, 0.2, 0.4, 0.2, 0.5, 0.4, 0.7, 0.8, 0.7, 0.8, 0.9, 0.5, 0.7, 0.5, 0.7, 0.3, 0.8,
+
+L2_dSYMV_x_n1
+0.1, 0.4, 0.9, 0.2, 0.8, 0.7, 0.7, 0.8, 0.2, 0.4, 0.1, 0.6, 0.6, 0.6, 0.7, 0.2, 0.3,
+
+L2_dSYMV_x_n2
+0.1, 0.0, 0.4, 0.0, 0.9, 0.0, 0.2, 0.0, 0.8, 0.0, 0.7, 0.0, 0.7, 0.0, 0.8, 0.0, 0.2, 0.0, 0.4, 0.0, 0.1, 0.0, 0.6, 0.0, 0.6, 0.0, 0.6, 0.0, 0.7, 0.0, 0.2, 0.0, 0.3, 0.0,
+
+L2_dSYMV_y_n1
+0.7, 0.2, 0.2, 0.7, 0.9, 0.5, 0.5, 0.7, 0.3, 0.9, 0.2, 0.7, 0.3, 0.4, 0.5, 0.9, 0.8,
+
+L2_dSYMV_y_n2
+0.7, 0.0, 0.0, 0.2, 0.0, 0.0, 0.2, 0.0, 0.0, 0.7, 0.0, 0.0, 0.9, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.7, 0.0, 0.0, 0.3, 0.0, 0.0, 0.9, 0.0, 0.0, 0.2, 0.0, 0.0, 0.7, 0.0, 0.0, 0.3, 0.0, 0.0, 0.4, 0.0, 0.0, 0.5, 0.0, 0.0, 0.9, 0.0, 0.0, 0.8, 0.0, 0.0,
+
+L2_dSYMV_o_N
+4.89, 4.82, 4.2, 5.68, 5.4, 5.07, 4.43, 4.86, 4.41, 4.34, 4.03, 4.23, 4.3, 4.69, 4.05, 5.75, 5.35,
+
+L2_dSYMV_o_N2
+4.89, 0.0, 0.0, 4.82, 0.0, 0.0, 4.2, 0.0, 0.0, 5.68, 0.0, 0.0, 5.4, 0.0, 0.0, 5.07, 0.0, 0.0, 4.43, 0.0, 0.0, 4.86, 0.0, 0.0, 4.41, 0.0, 0.0, 4.34, 0.0, 0.0, 4.03, 0.0, 0.0, 4.23, 0.0, 0.0, 4.3, 0.0, 0.0, 4.69, 0.0, 0.0, 4.05, 0.0, 0.0, 5.75, 0.0, 0.0, 5.35, 0.0, 0.0,
+
+L2_sSBMV_A_nn
+0.1, 0.4, 0.4, 0.4, 0.9, 0.4, 0.7, 0.1, 0.3, 0.6, 0.3, 0.1, 0.9, 0.2, 0.1, 0.2, 0.9, 0.3, 0.7, 0.6, 0.2, 0.7, 0.1, 0.2, 0.3, 0.8, 0.5, 0.1, 0.5, 0.9, 0.7, 0.8, 0.7, 0.3, 0.5, 0.2, 0.2, 0.8, 0.8, 0.7, 0.4, 0.2, 0.1, 0.4, 0.2, 0.9, 0.2, 0.0, 0.9, 0.0, 0.0,
+
+L2_sSBMV_x_n1
+0.2, 0.1, 0.5, 0.4, 0.3, 0.8, 0.5, 0.5, 0.1, 0.3, 0.4, 0.8, 0.3, 0.6, 0.6, 0.1, 0.7,
+
+L2_sSBMV_x_n2
+0.2, 0.0, 0.1, 0.0, 0.5, 0.0, 0.4, 0.0, 0.3, 0.0, 0.8, 0.0, 0.5, 0.0, 0.5, 0.0, 0.1, 0.0, 0.3, 0.0, 0.4, 0.0, 0.8, 0.0, 0.3, 0.0, 0.6, 0.0, 0.6, 0.0, 0.1, 0.0, 0.7, 0.0,
+
+L2_sSBMV_y_n1
+0.3, 0.6, 0.6, 0.8, 0.3, 0.7, 0.6, 0.4, 0.7, 0.4, 0.2, 0.6, 0.5, 0.3, 0.2, 0.3, 0.9,
+
+L2_sSBMV_y_n2
+0.3, 0.0, 0.0, 0.6, 0.0, 0.0, 0.6, 0.0, 0.0, 0.8, 0.0, 0.0, 0.3, 0.0, 0.0, 0.7, 0.0, 0.0, 0.6, 0.0, 0.0, 0.4, 0.0, 0.0, 0.7, 0.0, 0.0, 0.4, 0.0, 0.0, 0.2, 0.0, 0.0, 0.6, 0.0, 0.0, 0.5, 0.0, 0.0, 0.3, 0.0, 0.0, 0.2, 0.0, 0.0, 0.3, 0.0, 0.0, 0.9, 0.0, 0.0,
+
+L2_sSBMV_o_N
+0.560000016689, 1.33000002027, 1.25000002757, 1.30000003651, 1.05000003353, 1.55999999136, 2.02000002369, 1.36000002861, 1.32000000805, 1.53000000611, 1.53000003293, 1.70000006258, 2.20000006109, 1.38000005305, 0.920000033379, 0.890000030249, 1.66999995589,
+
+L2_sSBMV_o_N2
+0.560000016689, 0.0, 0.0, 1.33000002027, 0.0, 0.0, 1.25000002757, 0.0, 0.0, 1.30000003651, 0.0, 0.0, 1.05000003353, 0.0, 0.0, 1.55999999136, 0.0, 0.0, 2.02000002369, 0.0, 0.0, 1.36000002861, 0.0, 0.0, 1.32000000805, 0.0, 0.0, 1.53000000611, 0.0, 0.0, 1.53000003293, 0.0, 0.0, 1.70000006258, 0.0, 0.0, 2.20000006109, 0.0, 0.0, 1.38000005305, 0.0, 0.0, 0.920000033379, 0.0, 0.0, 0.890000030249, 0.0, 0.0, 1.66999995589, 0.0, 0.0,
+
+L2_dSBMV_A_nn
+0.6, 0.9, 0.1, 0.3, 0.4, 0.6, 0.6, 0.4, 0.4, 0.1, 0.1, 0.1, 0.3, 0.7, 0.2, 0.2, 0.4, 0.3, 0.7, 0.6, 0.5, 0.1, 0.8, 0.2, 0.6, 0.1, 0.6, 0.4, 0.8, 0.7, 0.2, 0.1, 0.2, 0.7, 0.4, 0.1, 0.3, 0.3, 0.9, 0.1, 0.7, 0.5, 0.8, 0.4, 0.5, 0.3, 0.8, 0.0, 0.4, 0.0, 0.0,
+
+L2_dSBMV_x_n1
+0.8, 0.5, 0.3, 0.8, 0.2, 0.5, 0.4, 0.5, 0.3, 0.5, 0.8, 0.9, 0.1, 0.4, 0.2, 0.2, 0.6,
+
+L2_dSBMV_x_n2
+0.8, 0.0, 0.5, 0.0, 0.3, 0.0, 0.8, 0.0, 0.2, 0.0, 0.5, 0.0, 0.4, 0.0, 0.5, 0.0, 0.3, 0.0, 0.5, 0.0, 0.8, 0.0, 0.9, 0.0, 0.1, 0.0, 0.4, 0.0, 0.2, 0.0, 0.2, 0.0, 0.6, 0.0,
+
+L2_dSBMV_y_n1
+0.9, 0.8, 0.6, 0.8, 0.4, 0.3, 0.3, 0.1, 0.5, 0.4, 0.2, 0.1, 0.1, 0.4, 0.9, 0.6, 0.4,
+
+L2_dSBMV_y_n2
+0.9, 0.0, 0.0, 0.8, 0.0, 0.0, 0.6, 0.0, 0.0, 0.8, 0.0, 0.0, 0.4, 0.0, 0.0, 0.3, 0.0, 0.0, 0.3, 0.0, 0.0, 0.1, 0.0, 0.0, 0.5, 0.0, 0.0, 0.4, 0.0, 0.0, 0.2, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.0, 0.4, 0.0, 0.0, 0.9, 0.0, 0.0, 0.6, 0.0, 0.0, 0.4, 0.0, 0.0,
+
+L2_dSBMV_o_N
+1.86, 2.27, 1.46, 1.37, 1.09, 0.93, 1.27, 0.88, 1.81, 2.0, 1.05, 1.24, 0.95, 0.8, 1.81, 1.42, 0.9,
+
+L2_dSBMV_o_N2
+1.86, 0.0, 0.0, 2.27, 0.0, 0.0, 1.46, 0.0, 0.0, 1.37, 0.0, 0.0, 1.09, 0.0, 0.0, 0.93, 0.0, 0.0, 1.27, 0.0, 0.0, 0.88, 0.0, 0.0, 1.81, 0.0, 0.0, 2.0, 0.0, 0.0, 1.05, 0.0, 0.0, 1.24, 0.0, 0.0, 0.95, 0.0, 0.0, 0.8, 0.0, 0.0, 1.81, 0.0, 0.0, 1.42, 0.0, 0.0, 0.9, 0.0, 0.0,
+
+L2_sTRMV_A_nn
+0.7, 0.8, 0.7, 0.1, 0.3, 0.3, 0.5, 0.4, 0.6, 0.3, 0.8, 0.4, 0.7, 0.6, 0.7, 0.9, 0.2, 0.0, 0.1, 0.3, 0.7, 0.1, 0.7, 0.4, 0.2, 0.6, 0.4, 0.8, 0.4, 0.1, 0.8, 0.9, 0.1, 0.8, 0.0, 0.0, 0.4, 0.8, 0.7, 0.2, 0.8, 0.9, 0.8, 0.9, 0.7, 0.4, 0.8, 0.4, 0.5, 0.2, 0.6, 0.0, 0.0, 0.0, 0.7, 0.5, 0.2, 0.1, 0.9, 0.9, 0.6, 0.2, 0.7, 0.2, 0.2, 0.8, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.6, 0.2, 0.4, 0.5, 0.2, 0.9, 0.4, 0.5, 0.1, 0.1, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.5, 0.2, 0.5, 0.3, 0.8, 0.5, 0.5, 0.8, 0.6, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.6, 0.9, 0.3, 0.1, 0.6, 0.9, 0.8, 0.2, 0.1, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.5, 0.1, 0.4, 0.8, 0.6, 0.4, 0.3, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.2, 0.7, 0.5, 0.6, 0.5, 0.1, 0.3, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.8, 0.5, 0.5, 0.6, 0.1, 0.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.1, 0.7, 0.2, 0.8, 0.7, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.8, 0.6, 0.9, 0.5, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.9, 0.1, 0.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.6, 0.4, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.9, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7,
+
+L2_sTRMV_A_nn_pu
+0.7, 0.8, 0.7, 0.1, 0.3, 0.3, 0.5, 0.4, 0.6, 0.3, 0.8, 0.4, 0.7, 0.6, 0.7, 0.9, 0.2, 0.1, 0.3, 0.7, 0.1, 0.7, 0.4, 0.2, 0.6, 0.4, 0.8, 0.4, 0.1, 0.8, 0.9, 0.1, 0.8, 0.4, 0.8, 0.7, 0.2, 0.8, 0.9, 0.8, 0.9, 0.7, 0.4, 0.8, 0.4, 0.5, 0.2, 0.6, 0.7, 0.5, 0.2, 0.1, 0.9, 0.9, 0.6, 0.2, 0.7, 0.2, 0.2, 0.8, 0.8, 0.6, 0.3, 0.3, 0.6, 0.2, 0.4, 0.5, 0.2, 0.9, 0.4, 0.5, 0.1, 0.1, 0.5, 0.6, 0.5, 0.2, 0.5, 0.3, 0.8, 0.5, 0.5, 0.8, 0.6, 0.8, 0.6, 0.5, 0.6, 0.9, 0.3, 0.1, 0.6, 0.9, 0.8, 0.2, 0.1, 0.2, 0.1, 0.3, 0.5, 0.1, 0.4, 0.8, 0.6, 0.4, 0.3, 0.9, 0.6, 0.2, 0.7, 0.5, 0.6, 0.5, 0.1, 0.3, 0.9, 0.3, 0.8, 0.5, 0.5, 0.6, 0.1, 0.2, 0.3, 0.2, 0.1, 0.7, 0.2, 0.8, 0.7, 0.2, 0.2, 0.8, 0.6, 0.9, 0.5, 0.8, 0.1, 0.9, 0.1, 0.2, 0.3, 0.3, 0.6, 0.4, 0.4, 0.5, 0.9, 0.6, 0.5, 0.4, 0.7,
+
+L2_sTRMV_x_n1
+0.2, 0.7, 0.3, 0.3, 0.6, 0.1, 0.1, 0.6, 0.5, 0.5, 0.2, 0.4, 0.3, 0.1, 0.7, 0.7, 0.3,
+
+L2_sTRMV_x_n2
+0.2, 0.0, 0.7, 0.0, 0.3, 0.0, 0.3, 0.0, 0.6, 0.0, 0.1, 0.0, 0.1, 0.0, 0.6, 0.0, 0.5, 0.0, 0.5, 0.0, 0.2, 0.0, 0.4, 0.0, 0.3, 0.0, 0.1, 0.0, 0.7, 0.0, 0.7, 0.0, 0.3, 0.0,
+
+L2_sTRMV_o_UN
+3.66, 2.53, 3.52, 3.53, 1.7, 2.38, 1.89, 1.7, 1.52, 1.02, 1.42, 1.6, 0.42, 0.85, 1.16, 0.47, 0.21,
+
+L2_sTRMV_o_UN2
+3.66, 0.0, 2.53, 0.0, 3.52, 0.0, 3.53, 0.0, 1.7, 0.0, 2.38, 0.0, 1.89, 0.0, 1.7, 0.0, 1.52, 0.0, 1.02, 0.0, 1.42, 0.0, 1.6, 0.0, 0.42, 0.0, 0.85, 0.0, 1.16, 0.0, 0.47, 0.0, 0.21, 0.0,
+
+L2_sTRMV_o_UT
+0.14, 0.23, 0.47, 0.96, 0.67, 0.91, 1.11, 1.02, 1.91, 1.7, 2.05, 2.18, 2.41, 2.81, 2.6, 2.55, 3.88,
+
+L2_sTRMV_o_UH
+0.14, 0.23, 0.47, 0.96, 0.67, 0.91, 1.11, 1.02, 1.91, 1.7, 2.05, 2.18, 2.41, 2.81, 2.6, 2.55, 3.88,
+
+L2_dTRMV_A_nn
+0.2, 0.8, 0.5, 0.5, 0.5, 0.6, 0.2, 0.9, 0.8, 0.8, 0.7, 0.5, 0.7, 0.2, 0.4, 0.4, 0.7, 0.0, 0.9, 0.1, 0.3, 0.6, 0.1, 0.1, 0.2, 0.1, 0.5, 0.4, 0.9, 0.6, 0.2, 0.1, 0.4, 0.2, 0.0, 0.0, 0.1, 0.1, 0.6, 0.7, 0.3, 0.4, 0.4, 0.7, 0.5, 0.3, 0.9, 0.9, 0.9, 0.5, 0.1, 0.0, 0.0, 0.0, 0.6, 0.3, 0.4, 0.8, 0.2, 0.6, 0.8, 0.3, 0.9, 0.8, 0.2, 0.2, 0.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.3, 0.8, 0.1, 0.4, 0.4, 0.2, 0.3, 0.7, 0.7, 0.9, 0.3, 0.2, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.7, 0.6, 0.6, 0.5, 0.5, 0.9, 0.1, 0.1, 0.2, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.3, 0.6, 0.3, 0.3, 0.6, 0.2, 0.9, 0.9, 0.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.8, 0.5, 0.1, 0.9, 0.9, 0.4, 0.8, 0.8, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.5, 0.7, 0.4, 0.5, 0.5, 0.8, 0.4, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.5, 0.9, 0.3, 0.8, 0.3, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 0.4, 0.8, 0.9, 0.7, 0.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.7, 0.8, 0.9, 0.2, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.6, 0.7, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.6, 0.5, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.3, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5,
+
+L2_dTRMV_A_nn_pu
+0.2, 0.8, 0.5, 0.5, 0.5, 0.6, 0.2, 0.9, 0.8, 0.8, 0.7, 0.5, 0.7, 0.2, 0.4, 0.4, 0.7, 0.9, 0.1, 0.3, 0.6, 0.1, 0.1, 0.2, 0.1, 0.5, 0.4, 0.9, 0.6, 0.2, 0.1, 0.4, 0.2, 0.1, 0.1, 0.6, 0.7, 0.3, 0.4, 0.4, 0.7, 0.5, 0.3, 0.9, 0.9, 0.9, 0.5, 0.1, 0.6, 0.3, 0.4, 0.8, 0.2, 0.6, 0.8, 0.3, 0.9, 0.8, 0.2, 0.2, 0.3, 0.2, 0.3, 0.8, 0.1, 0.4, 0.4, 0.2, 0.3, 0.7, 0.7, 0.9, 0.3, 0.2, 0.6, 0.9, 0.9, 0.7, 0.6, 0.6, 0.5, 0.5, 0.9, 0.1, 0.1, 0.2, 0.6, 0.9, 0.3, 0.6, 0.3, 0.3, 0.6, 0.2, 0.9, 0.9, 0.7, 0.3, 0.3, 0.8, 0.5, 0.1, 0.9, 0.9, 0.4, 0.8, 0.8, 0.2, 0.3, 0.5, 0.7, 0.4, 0.5, 0.5, 0.8, 0.4, 0.8, 0.6, 0.5, 0.9, 0.3, 0.8, 0.3, 0.1, 0.1, 0.4, 0.4, 0.8, 0.9, 0.7, 0.7, 0.3, 0.5, 0.7, 0.8, 0.9, 0.2, 0.8, 0.9, 0.7, 0.6, 0.7, 0.1, 0.1, 0.6, 0.5, 0.9, 0.6, 0.3, 0.8, 0.6, 0.2, 0.5,
+
+L2_dTRMV_x_n1
+0.3, 0.8, 0.3, 0.3, 0.4, 0.5, 0.3, 0.4, 0.5, 0.1, 0.1, 0.5, 0.6, 0.4, 0.8, 0.8, 0.3,
+
+L2_dTRMV_x_n2
+0.3, 0.0, 0.8, 0.0, 0.3, 0.0, 0.3, 0.0, 0.4, 0.0, 0.5, 0.0, 0.3, 0.0, 0.4, 0.0, 0.5, 0.0, 0.1, 0.0, 0.1, 0.0, 0.5, 0.0, 0.6, 0.0, 0.4, 0.0, 0.8, 0.0, 0.8, 0.0, 0.3, 0.0,
+
+L2_dTRMV_o_UN
+4.07, 2.73, 3.42, 2.7, 2.67, 2.66, 2.9, 3.07, 2.17, 1.41, 2.29, 2.11, 1.89, 1.19, 0.96, 0.54, 0.15,
+
+L2_dTRMV_o_UN2
+4.07, 0.0, 2.73, 0.0, 3.42, 0.0, 2.7, 0.0, 2.67, 0.0, 2.66, 0.0, 2.9, 0.0, 3.07, 0.0, 2.17, 0.0, 1.41, 0.0, 2.29, 0.0, 2.11, 0.0, 1.89, 0.0, 1.19, 0.0, 0.96, 0.0, 0.54, 0.0, 0.15, 0.0,
+
+L2_dTRMV_o_UT
+0.06, 0.96, 0.26, 0.6, 1.02, 1.36, 1.23, 1.33, 1.73, 2.07, 1.71, 2.88, 3.6, 2.67, 3.32, 3.11, 3.38,
+
+L2_dTRMV_o_UH
+0.06, 0.96, 0.26, 0.6, 1.02, 1.36, 1.23, 1.33, 1.73, 2.07, 1.71, 2.88, 3.6, 2.67, 3.32, 3.11, 3.38,
+
+L2_cTRMV_A_nn
+0.10000000149, 0.5, 0.899999976158, 0.5, 0.699999988079, 0.40000000596, 0.300000011921, 0.600000023842, 0.300000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.5, 0.10000000149, 0.699999988079, 0.300000011921, 0.600000023842, 0.600000023842, 0.800000011921, 0.899999976158, 0.600000023842, 0.5, 0.300000011921, 0.699999988079, 0.40000000596, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.10000000149, 0.0, 0.0, 0.20000000298, 0.40000000596, 0.899999976158, 0.899999976158, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.20000000298, 0.20000000298, 0.5, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.20000000298, 0.600000023842, 0.699999988079, 0.300000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.40000000596, 0.300000011921, 0.5, 0.600000023842, 0.5, 0.300000011921, 0.40000000596, 0.699999988079, 0.20000000298, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.5, 0.300000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.600000023842, 0.600000023842, 0.5, 0.20000000298, 0.10000000149, 0.600000023842, 0.300000011921, 0.5, 0.699999988079, 0.5, 0.20000000298, 0.40000000596, 0.699999988079, 0.800000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.40000000596, 0.600000023842, 0.40000000596, 0.899999976158, 0.899999976158, 0.300000011921, 0.899999976158, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.300000011921, 0.5, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.800000011921, 0.600000023842, 0.899999976158, 0.20000000298, 0.300000011921, 0.5, 0.600000023842, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.10000000149, 0.40000000596, 0.5, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.5, 0.5, 0.899999976158, 0.5, 0.800000011921, 0.5, 0.899999976158, 0.800000011921, 0.600000023842, 0.10000000149, 0.10000000149, 0.899999976158, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.10000000149, 0.40000000596, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.5, 0.300000011921, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.899999976158, 0.600000023842, 0.20000000298, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.300000011921, 0.300000011921, 0.600000023842, 0.5, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.5, 0.20000000298, 0.600000023842, 0.899999976158, 0.600000023842, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.300000011921, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.300000011921, 0.600000023842, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.600000023842, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.899999976158, 0.20000000298, 0.40000000596, 0.300000011921, 0.20000000298, 0.20000000298, 0.40000000596, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.300000011921, 0.10000000149, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.10000000149, 0.10000000149, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.20000000298, 0.20000000298, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.10000000149, 0.20000000298, 0.5, 0.5, 0.10000000149, 0.300000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.40000000596, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.899999976158, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.300000011921, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.20000000298, 0.899999976158, 0.5, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.699999988079, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.10000000149,
+
+L2_cTRMV_A_nn_pu
+0.10000000149, 0.5, 0.899999976158, 0.5, 0.699999988079, 0.40000000596, 0.300000011921, 0.600000023842, 0.300000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.5, 0.10000000149, 0.699999988079, 0.300000011921, 0.600000023842, 0.600000023842, 0.800000011921, 0.899999976158, 0.600000023842, 0.5, 0.300000011921, 0.699999988079, 0.40000000596, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.10000000149, 0.20000000298, 0.40000000596, 0.899999976158, 0.899999976158, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.20000000298, 0.20000000298, 0.5, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.20000000298, 0.600000023842, 0.699999988079, 0.300000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.40000000596, 0.300000011921, 0.5, 0.600000023842, 0.5, 0.300000011921, 0.40000000596, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.300000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.600000023842, 0.600000023842, 0.5, 0.20000000298, 0.10000000149, 0.600000023842, 0.300000011921, 0.5, 0.699999988079, 0.5, 0.20000000298, 0.40000000596, 0.699999988079, 0.800000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.40000000596, 0.600000023842, 0.40000000596, 0.899999976158, 0.899999976158, 0.300000011921, 0.899999976158, 0.5, 0.800000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.300000011921, 0.5, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.800000011921, 0.600000023842, 0.899999976158, 0.20000000298, 0.300000011921, 0.5, 0.600000023842, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.10000000149, 0.40000000596, 0.5, 0.600000023842, 0.800000011921, 0.5, 0.5, 0.899999976158, 0.5, 0.800000011921, 0.5, 0.899999976158, 0.800000011921, 0.600000023842, 0.10000000149, 0.10000000149, 0.899999976158, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.10000000149, 0.40000000596, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.600000023842, 0.699999988079, 0.5, 0.300000011921, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.899999976158, 0.600000023842, 0.20000000298, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.300000011921, 0.300000011921, 0.600000023842, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.5, 0.20000000298, 0.600000023842, 0.899999976158, 0.600000023842, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.300000011921, 0.899999976158, 0.800000011921, 0.300000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.300000011921, 0.600000023842, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.600000023842, 0.600000023842, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.899999976158, 0.20000000298, 0.40000000596, 0.300000011921, 0.20000000298, 0.20000000298, 0.40000000596, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.300000011921, 0.10000000149, 0.5, 0.800000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.10000000149, 0.5, 0.10000000149, 0.10000000149, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.20000000298, 0.20000000298, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.20000000298, 0.5, 0.5, 0.10000000149, 0.300000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.40000000596, 0.699999988079, 0.40000000596, 0.40000000596, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.300000011921, 0.899999976158, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.300000011921, 0.40000000596, 0.20000000298, 0.300000011921, 0.20000000298, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.699999988079, 0.40000000596, 0.800000011921, 0.20000000298, 0.10000000149,
+
+L2_cTRMV_x_n1
+0.300000011921, 0.600000023842, 0.699999988079, 0.40000000596, 0.10000000149, 0.699999988079, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.699999988079, 0.800000011921, 0.600000023842, 0.699999988079, 0.10000000149, 0.20000000298, 0.600000023842, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.300000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.5, 0.20000000298, 0.600000023842,
+
+L2_cTRMV_x_n2
+0.300000011921, 0.600000023842, 0.0, 0.0, 0.699999988079, 0.40000000596, 0.0, 0.0, 0.10000000149, 0.699999988079, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0, 0.300000011921, 0.600000023842, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.0, 0.0, 0.699999988079, 0.800000011921, 0.0, 0.0, 0.600000023842, 0.699999988079, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.899999976158, 0.40000000596, 0.0, 0.0, 0.10000000149, 0.800000011921, 0.0, 0.0, 0.300000011921, 0.899999976158, 0.0, 0.0, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.899999976158, 0.899999976158, 0.0, 0.0, 0.10000000149, 0.5, 0.0, 0.0, 0.20000000298, 0.600000023842, 0.0, 0.0,
+
+L2_cTRMV_o_UN
+-1.51000003606, 9.79000002131, -0.990000025034, 7.61000006884, -0.829999991208, 7.85000001118, -1.33999999076, 6.02000009298, -1.3100000532, 7.02000000209, -0.920000028163, 5.94000007793, -1.58000001654, 4.44000008538, 0.730000029206, 5.39000010476, 0.379999931604, 3.89000003099, -0.239999983311, 3.80000006855, -0.570000024438, 3.39000003323, -0.929999969602, 2.51000003085, -1.49000000641, 2.55000004694, -0.590000008643, 2.71000002488, -0.840000001192, 1.08000001356, -0.740000017583, 0.520000018477, -0.0200000020862, 0.140000007153,
+
+L2_cTRMV_o_UN2
+-1.51000003606, 9.79000002131, 0.0, 0.0, -0.990000025034, 7.61000006884, 0.0, 0.0, -0.829999991208, 7.85000001118, 0.0, 0.0, -1.33999999076, 6.02000009298, 0.0, 0.0, -1.3100000532, 7.02000000209, 0.0, 0.0, -0.920000028163, 5.94000007793, 0.0, 0.0, -1.58000001654, 4.44000008538, 0.0, 0.0, 0.730000029206, 5.39000010476, 0.0, 0.0, 0.379999931604, 3.89000003099, 0.0, 0.0, -0.239999983311, 3.80000006855, 0.0, 0.0, -0.570000024438, 3.39000003323, 0.0, 0.0, -0.929999969602, 2.51000003085, 0.0, 0.0, -1.49000000641, 2.55000004694, 0.0, 0.0, -0.590000008643, 2.71000002488, 0.0, 0.0, -0.840000001192, 1.08000001356, 0.0, 0.0, -0.740000017583, 0.520000018477, 0.0, 0.0, -0.0200000020862, 0.140000007153, 0.0, 0.0,
+
+L2_cTRMV_o_UT
+-0.270000010282, 0.210000009239, -0.050000013411, 1.0500000149, 0.0799999643862, 1.90999998018, 0.269999964088, 2.12000000432, -0.590000015348, 2.34000005186, -1.11999999464, 2.38000002921, -0.620000036359, 2.81000006735, -0.739999984801, 3.56000006512, -0.500000040978, 5.01000004277, 0.659999953359, 4.66000004426, -0.290000020564, 6.07000011086, -0.819999991655, 5.09000007719, -0.679999957681, 6.59999995157, -0.600000074506, 6.39000007868, -1.20999998912, 6.10000017136, -3.29999985546, 7.79000002876, -2.48999999225, 8.90000004843,
+
+L2_cTRMV_o_UH
+0.33000001356, -0.0900000026822, 0.870000019968, 0.190000004172, 1.6999999918, 0.350000018626, 2.35000000075, 0.0600000204146, 2.37000004306, 0.0800000441074, 2.56000002265, 0.0400000339746, 2.98000006944, 0.0900000280142, 3.64000008911, 0.420000038594, 5.45999999359, 0.76999998346, 4.68000010595, 1.17999997482, 6.2900001055, 0.870000000596, 4.44000006378, 0.550000011921, 5.72000004083, 0.620000077337, 6.58000007987, 0.849999961257, 6.49000013307, 0.559999994338, 8.10000002533, -0.069999935776, 9.09000006825, 0.0200000341237,
+
+L2_zTRMV_A_nn
+0.3, 0.3, 0.6, 0.9, 0.8, 0.8, 0.8, 0.4, 0.6, 0.5, 0.3, 0.1, 0.6, 0.7, 0.1, 0.1, 0.8, 0.6, 0.1, 0.6, 0.5, 0.9, 0.5, 0.1, 0.5, 0.4, 0.8, 0.2, 0.4, 0.9, 0.7, 0.1, 0.2, 0.3, 0.0, 0.0, 0.6, 0.9, 0.8, 0.3, 0.2, 0.6, 0.1, 0.7, 0.7, 0.1, 0.7, 0.5, 0.5, 0.4, 0.8, 0.2, 0.2, 0.6, 0.2, 0.4, 0.7, 0.7, 0.1, 0.1, 0.6, 0.2, 0.6, 0.2, 0.5, 0.1, 0.8, 0.9, 0.0, 0.0, 0.0, 0.0, 0.7, 0.9, 0.7, 0.6, 0.3, 0.8, 0.9, 0.4, 0.9, 0.2, 0.1, 0.6, 0.6, 0.8, 0.6, 0.4, 0.1, 0.7, 0.1, 0.4, 0.4, 0.2, 0.3, 0.6, 0.7, 0.4, 0.5, 0.2, 0.5, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.6, 0.5, 0.3, 0.6, 0.5, 0.2, 0.8, 0.5, 0.6, 0.7, 0.9, 0.9, 0.9, 0.7, 0.2, 0.1, 0.8, 0.1, 0.6, 0.1, 0.3, 0.3, 0.9, 0.3, 0.8, 0.7, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.6, 0.9, 0.1, 0.5, 0.9, 0.4, 0.5, 0.8, 0.7, 0.8, 0.1, 0.9, 0.1, 0.2, 0.8, 0.3, 0.3, 0.1, 0.6, 0.9, 0.7, 0.1, 0.3, 0.2, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.5, 0.2, 0.5, 0.8, 0.3, 0.4, 0.6, 0.4, 0.5, 0.1, 0.5, 0.3, 0.4, 0.4, 0.3, 0.4, 0.3, 0.8, 0.1, 0.9, 0.6, 0.2, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.9, 0.1, 0.1, 0.8, 0.9, 0.1, 0.2, 0.7, 0.8, 0.4, 0.7, 0.3, 0.7, 0.9, 0.2, 0.6, 0.5, 0.6, 0.3, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.4, 0.3, 0.3, 0.8, 0.5, 0.6, 0.5, 0.4, 0.8, 0.1, 0.7, 0.6, 0.5, 0.2, 0.3, 0.4, 0.4, 0.7, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.3, 0.2, 0.8, 0.4, 0.3, 0.5, 0.8, 0.7, 0.5, 0.7, 0.1, 0.7, 0.2, 0.5, 0.8, 0.1, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.1, 0.6, 0.3, 0.2, 0.9, 0.4, 0.9, 0.6, 0.9, 0.5, 0.4, 0.7, 0.3, 0.6, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.4, 0.1, 0.6, 0.1, 0.3, 0.2, 0.5, 0.3, 0.3, 0.4, 0.8, 0.8, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.3, 0.1, 0.8, 0.6, 0.5, 0.7, 0.7, 0.2, 0.2, 0.5, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 0.8, 0.2, 0.2, 0.7, 0.1, 0.8, 0.6, 0.4, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.1, 0.3, 0.2, 0.5, 0.3, 0.9, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.2, 0.3, 0.6, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.3, 0.8, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3,
+
+L2_zTRMV_A_nn_pu
+0.3, 0.3, 0.6, 0.9, 0.8, 0.8, 0.8, 0.4, 0.6, 0.5, 0.3, 0.1, 0.6, 0.7, 0.1, 0.1, 0.8, 0.6, 0.1, 0.6, 0.5, 0.9, 0.5, 0.1, 0.5, 0.4, 0.8, 0.2, 0.4, 0.9, 0.7, 0.1, 0.2, 0.3, 0.6, 0.9, 0.8, 0.3, 0.2, 0.6, 0.1, 0.7, 0.7, 0.1, 0.7, 0.5, 0.5, 0.4, 0.8, 0.2, 0.2, 0.6, 0.2, 0.4, 0.7, 0.7, 0.1, 0.1, 0.6, 0.2, 0.6, 0.2, 0.5, 0.1, 0.8, 0.9, 0.7, 0.9, 0.7, 0.6, 0.3, 0.8, 0.9, 0.4, 0.9, 0.2, 0.1, 0.6, 0.6, 0.8, 0.6, 0.4, 0.1, 0.7, 0.1, 0.4, 0.4, 0.2, 0.3, 0.6, 0.7, 0.4, 0.5, 0.2, 0.5, 0.8, 0.5, 0.6, 0.5, 0.3, 0.6, 0.5, 0.2, 0.8, 0.5, 0.6, 0.7, 0.9, 0.9, 0.9, 0.7, 0.2, 0.1, 0.8, 0.1, 0.6, 0.1, 0.3, 0.3, 0.9, 0.3, 0.8, 0.7, 0.5, 0.2, 0.6, 0.9, 0.1, 0.5, 0.9, 0.4, 0.5, 0.8, 0.7, 0.8, 0.1, 0.9, 0.1, 0.2, 0.8, 0.3, 0.3, 0.1, 0.6, 0.9, 0.7, 0.1, 0.3, 0.2, 0.6, 0.1, 0.5, 0.2, 0.5, 0.8, 0.3, 0.4, 0.6, 0.4, 0.5, 0.1, 0.5, 0.3, 0.4, 0.4, 0.3, 0.4, 0.3, 0.8, 0.1, 0.9, 0.6, 0.2, 0.8, 0.9, 0.7, 0.9, 0.1, 0.1, 0.8, 0.9, 0.1, 0.2, 0.7, 0.8, 0.4, 0.7, 0.3, 0.7, 0.9, 0.2, 0.6, 0.5, 0.6, 0.3, 0.3, 0.3, 0.4, 0.3, 0.3, 0.8, 0.5, 0.6, 0.5, 0.4, 0.8, 0.1, 0.7, 0.6, 0.5, 0.2, 0.3, 0.4, 0.4, 0.7, 0.6, 0.7, 0.3, 0.2, 0.8, 0.4, 0.3, 0.5, 0.8, 0.7, 0.5, 0.7, 0.1, 0.7, 0.2, 0.5, 0.8, 0.1, 0.7, 0.3, 0.1, 0.6, 0.3, 0.2, 0.9, 0.4, 0.9, 0.6, 0.9, 0.5, 0.4, 0.7, 0.3, 0.6, 0.5, 0.1, 0.4, 0.1, 0.6, 0.1, 0.3, 0.2, 0.5, 0.3, 0.3, 0.4, 0.8, 0.8, 0.8, 0.5, 0.3, 0.1, 0.8, 0.6, 0.5, 0.7, 0.7, 0.2, 0.2, 0.5, 0.8, 0.4, 0.8, 0.2, 0.2, 0.7, 0.1, 0.8, 0.6, 0.4, 0.8, 0.9, 0.1, 0.3, 0.2, 0.5, 0.3, 0.9, 0.5, 0.9, 0.7, 0.2, 0.3, 0.6, 0.5, 0.8, 0.3, 0.8, 0.7, 0.1, 0.3,
+
+L2_zTRMV_x_n1
+0.6, 0.2, 0.6, 0.1, 0.2, 0.6, 0.9, 0.9, 0.5, 0.8, 0.2, 0.4, 0.2, 0.3, 0.5, 0.2, 0.2, 0.8, 0.6, 0.3, 0.8, 0.5, 0.3, 0.2, 0.5, 0.8, 0.7, 0.1, 0.7, 0.4, 0.3, 0.2, 0.5, 0.4,
+
+L2_zTRMV_x_n2
+0.6, 0.2, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0, 0.9, 0.9, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0, 0.2, 0.4, 0.0, 0.0, 0.2, 0.3, 0.0, 0.0, 0.5, 0.2, 0.0, 0.0, 0.2, 0.8, 0.0, 0.0, 0.6, 0.3, 0.0, 0.0, 0.8, 0.5, 0.0, 0.0, 0.3, 0.2, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0, 0.7, 0.1, 0.0, 0.0, 0.7, 0.4, 0.0, 0.0, 0.3, 0.2, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0,
+
+L2_zTRMV_o_UN
+0.49, 8.08, 0.49, 6.68, -0.77, 7.48, -0.67, 7.0, 0.41, 5.55, 0.24, 4.05, 0.73, 4.61, 0.44, 4.03, 0.54, 4.04, 0.61, 3.66, -0.18, 2.54, 0.03, 2.55, 0.13, 2.13, 1.09, 1.22, 0.45, 1.47, 0.3, 0.92, -0.07, 0.19,
+
+L2_zTRMV_o_UN2
+0.49, 8.08, 0.0, 0.0, 0.49, 6.68, 0.0, 0.0, -0.77, 7.48, 0.0, 0.0, -0.67, 7.0, 0.0, 0.0, 0.41, 5.55, 0.0, 0.0, 0.24, 4.05, 0.0, 0.0, 0.73, 4.61, 0.0, 0.0, 0.44, 4.03, 0.0, 0.0, 0.54, 4.04, 0.0, 0.0, 0.61, 3.66, 0.0, 0.0, -0.18, 2.54, 0.0, 0.0, 0.03, 2.55, 0.0, 0.0, 0.13, 2.13, 0.0, 0.0, 1.09, 1.22, 0.0, 0.0, 0.45, 1.47, 0.0, 0.0, 0.3, 0.92, 0.0, 0.0, -0.07, 0.19, 0.0, 0.0,
+
+L2_zTRMV_o_UT
+0.12, 0.24, 0.45, 1.26, 0.37, 1.5, 0.15, 2.31, -0.37, 2.37, 0.79, 2.77, -0.55, 3.83, -0.07, 3.04, -0.27, 4.97, 0.08, 4.94, 0.46, 4.5, -1.6, 5.04, -1.32, 5.16, 0.6, 4.97, 0.8, 7.52, 0.18, 6.53, 0.08, 8.06,
+
+L2_zTRMV_o_UH
+0.24, -0.12, 0.99, -0.9, 1.83, -0.18, 2.23, -0.21, 2.43, -0.53, 2.79, 1.17, 3.77, -0.51, 3.11, 0.06, 5.27, 0.39, 4.7, 0.44, 4.34, 0.1, 5.2, -1.98, 4.6, -0.88, 5.66, -0.43, 6.88, 0.32, 7.12, -0.11, 9.1, -1.8,
+
+L2_sTBMV_A_nn
+0.7, 0.3, 0.8, 0.3, 0.3, 0.9, 0.4, 0.1, 0.4, 0.7, 0.7, 0.2, 0.7, 0.1, 0.8, 0.6, 0.5, 0.6, 0.1, 0.2, 0.4, 0.2, 0.8, 0.7, 0.8, 0.1, 0.5, 0.1, 0.2, 0.4, 0.2, 0.2, 0.7, 0.7, 0.6, 0.7, 0.4, 0.1, 0.5, 0.4, 0.1, 0.8, 0.4, 0.4, 0.9, 0.5, 0.9, 0.0, 0.9, 0.0, 0.0,
+
+L2_sTBMV_x_n1
+0.8, 0.7, 0.1, 0.9, 0.1, 0.9, 0.3, 0.1, 0.1, 0.2, 0.3, 0.3, 0.5, 0.5, 0.7, 0.8, 0.4,
+
+L2_sTBMV_x_n2
+0.8, 0.0, 0.7, 0.0, 0.1, 0.0, 0.9, 0.0, 0.1, 0.0, 0.9, 0.0, 0.3, 0.0, 0.1, 0.0, 0.1, 0.0, 0.2, 0.0, 0.3, 0.0, 0.3, 0.0, 0.5, 0.0, 0.5, 0.0, 0.7, 0.0, 0.8, 0.0, 0.4, 0.0,
+
+L2_sTBMV_o_UN
+0.85, 1.05, 0.17, 0.88, 0.4, 0.75, 0.09, 0.24, 0.25, 0.2, 0.47, 0.86, 0.6, 0.91, 0.96, 0.76, 0.36,
+
+L2_sTBMV_o_UN2
+0.85, 0.0, 1.05, 0.0, 0.17, 0.0, 0.88, 0.0, 0.4, 0.0, 0.75, 0.0, 0.09, 0.0, 0.24, 0.0, 0.25, 0.0, 0.2, 0.0, 0.47, 0.0, 0.86, 0.0, 0.6, 0.0, 0.91, 0.0, 0.96, 0.0, 0.76, 0.0, 0.36, 0.0,
+
+L2_sTBMV_o_UT
+0.56, 0.45, 0.89, 1.27, 0.74, 0.73, 0.56, 0.62, 0.28, 0.1, 0.15, 0.35, 0.59, 0.46, 0.58, 1.08, 1.71,
+
+L2_sTBMV_o_UH
+0.56, 0.45, 0.89, 1.27, 0.74, 0.73, 0.56, 0.62, 0.28, 0.1, 0.15, 0.35, 0.59, 0.46, 0.58, 1.08, 1.71,
+
+L2_dTBMV_A_nn
+0.1, 0.4, 0.8, 0.2, 0.1, 0.1, 0.5, 0.2, 0.3, 0.8, 0.8, 0.4, 0.8, 0.6, 0.9, 0.8, 0.6, 0.4, 0.8, 0.1, 0.8, 0.3, 0.3, 0.6, 0.6, 0.3, 0.8, 0.4, 0.9, 0.3, 0.3, 0.2, 0.7, 0.3, 0.3, 0.8, 0.4, 0.5, 0.5, 0.5, 0.4, 0.4, 0.8, 0.9, 0.4, 0.2, 0.5, 0.0, 0.5, 0.0, 0.0,
+
+L2_dTBMV_x_n1
+0.1, 0.5, 0.6, 0.9, 0.3, 0.9, 0.7, 0.3, 0.1, 0.1, 0.8, 0.3, 0.7, 0.7, 0.7, 0.2, 0.1,
+
+L2_dTBMV_x_n2
+0.1, 0.0, 0.5, 0.0, 0.6, 0.0, 0.9, 0.0, 0.3, 0.0, 0.9, 0.0, 0.7, 0.0, 0.3, 0.0, 0.1, 0.0, 0.1, 0.0, 0.8, 0.0, 0.3, 0.0, 0.7, 0.0, 0.7, 0.0, 0.7, 0.0, 0.2, 0.0, 0.1, 0.0,
+
+L2_dTBMV_o_UN
+0.69, 0.25, 0.57, 1.32, 1.41, 1.26, 0.67, 0.18, 0.73, 0.85, 0.79, 0.86, 0.98, 0.71, 0.78, 0.09, 0.05,
+
+L2_dTBMV_o_UN2
+0.69, 0.0, 0.25, 0.0, 0.57, 0.0, 1.32, 0.0, 1.41, 0.0, 1.26, 0.0, 0.67, 0.0, 0.18, 0.0, 0.73, 0.0, 0.85, 0.0, 0.79, 0.0, 0.86, 0.0, 0.98, 0.0, 0.71, 0.0, 0.78, 0.0, 0.09, 0.0, 0.05, 0.0,
+
+L2_dTBMV_o_UT
+0.01, 0.14, 0.43, 0.89, 1.14, 1.26, 1.37, 0.52, 0.71, 0.25, 0.41, 0.28, 0.93, 0.94, 1.19, 0.95, 0.43,
+
+L2_dTBMV_o_UH
+0.01, 0.14, 0.43, 0.89, 1.14, 1.26, 1.37, 0.52, 0.71, 0.25, 0.41, 0.28, 0.93, 0.94, 1.19, 0.95, 0.43,
+
+L2_cTBMV_A_nn
+0.40000000596, 0.20000000298, 0.600000023842, 0.10000000149, 0.800000011921, 0.40000000596, 0.10000000149, 0.20000000298, 0.300000011921, 0.899999976158, 0.600000023842, 0.40000000596, 0.899999976158, 0.800000011921, 0.300000011921, 0.699999988079, 0.5, 0.20000000298, 0.40000000596, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.20000000298, 0.40000000596, 0.10000000149, 0.10000000149, 0.699999988079, 0.600000023842, 0.5, 0.800000011921, 0.300000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.600000023842, 0.600000023842, 0.800000011921, 0.20000000298, 0.800000011921, 0.699999988079, 0.800000011921, 0.600000023842, 0.5, 0.899999976158, 0.300000011921, 0.899999976158, 0.10000000149, 0.5, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.800000011921, 0.5, 0.20000000298, 0.699999988079, 0.40000000596, 0.300000011921, 0.899999976158, 0.10000000149, 0.5, 0.20000000298, 0.800000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.40000000596, 0.40000000596, 0.40000000596, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.600000023842, 0.899999976158, 0.600000023842, 0.800000011921, 0.699999988079, 0.899999976158, 0.5, 0.5, 0.800000011921, 0.10000000149, 0.10000000149, 0.0, 0.0, 0.600000023842, 0.300000011921, 0.0, 0.0, 0.0, 0.0,
+
+L2_cTBMV_x_n1
+0.10000000149, 0.40000000596, 0.699999988079, 0.300000011921, 0.600000023842, 0.10000000149, 0.600000023842, 0.20000000298, 0.899999976158, 0.699999988079, 0.899999976158, 0.5, 0.600000023842, 0.10000000149, 0.20000000298, 0.300000011921, 0.20000000298, 0.5, 0.5, 0.20000000298, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.10000000149, 0.10000000149, 0.40000000596, 0.800000011921, 0.5, 0.20000000298, 0.40000000596, 0.800000011921, 0.899999976158, 0.899999976158,
+
+L2_cTBMV_x_n2
+0.10000000149, 0.40000000596, 0.0, 0.0, 0.699999988079, 0.300000011921, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.600000023842, 0.20000000298, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0, 0.899999976158, 0.5, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.5, 0.20000000298, 0.0, 0.0, 0.899999976158, 0.40000000596, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.10000000149, 0.10000000149, 0.0, 0.0, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.5, 0.20000000298, 0.0, 0.0, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.899999976158, 0.899999976158, 0.0, 0.0,
+
+L2_cTBMV_o_UN
+0.790000031739, 0.750000035018, 0.380000038147, 1.1000000298, 0.810000007749, 1.58000002995, 0.330000024736, 1.69000000715, 0.340000028759, 1.40999998689, 0.689999986291, 1.0700000304, -0.179999991953, 1.27000003636, 0.429999980032, 1.02000000581, -0.180000006109, 1.35999999732, 0.289999981821, 1.17000000209, -0.420000009537, 0.839999995977, 0.139999983311, 1.32999999791, 0.119999988675, 1.26000000328, -0.820000016987, 1.92000002444, 0.449999961257, 2.65999997348, -0.440000016093, 0.900000013411, 0.270000003576, 0.810000010729,
+
+L2_cTBMV_o_UN2
+0.790000031739, 0.750000035018, 0.0, 0.0, 0.380000038147, 1.1000000298, 0.0, 0.0, 0.810000007749, 1.58000002995, 0.0, 0.0, 0.330000024736, 1.69000000715, 0.0, 0.0, 0.340000028759, 1.40999998689, 0.0, 0.0, 0.689999986291, 1.0700000304, 0.0, 0.0, -0.179999991953, 1.27000003636, 0.0, 0.0, 0.429999980032, 1.02000000581, 0.0, 0.0, -0.180000006109, 1.35999999732, 0.0, 0.0, 0.289999981821, 1.17000000209, 0.0, 0.0, -0.420000009537, 0.839999995977, 0.0, 0.0, 0.139999983311, 1.32999999791, 0.0, 0.0, 0.119999988675, 1.26000000328, 0.0, 0.0, -0.820000016987, 1.92000002444, 0.0, 0.0, 0.449999961257, 2.65999997348, 0.0, 0.0, -0.440000016093, 0.900000013411, 0.0, 0.0, 0.270000003576, 0.810000010729, 0.0, 0.0,
+
+L2_cTBMV_o_UT
+-0.0400000011921, 0.180000005364, 0.0299999986589, 0.420000014752, 0.320000003576, 1.65000001565, 0.470000032634, 1.53000003442, 0.590000012368, 0.880000018775, 0.490000028759, 1.60999999508, 0.730000033677, 1.79000002801, 0.0699999886751, 1.52000005275, 0.429999997914, 1.17000003412, 0.169999998361, 0.740000014603, -0.220000017732, 1.03999999747, -0.330000015795, 1.77999998599, 0.429999975562, 0.940000013113, -0.379999991953, 1.27999999419, -0.230000035167, 1.04000002652, -0.380000036657, 2.03000002623, 0.579999988973, 1.36000001222,
+
+L2_cTBMV_o_UH
+0.120000003576, 0.140000004172, 0.2300000076, 0.120000014752, 1.34000002503, -0.649999984354, 1.21000004128, -0.949999997765, 0.970000016242, -0.140000016093, 1.85000000969, -0.429999970347, 1.7900000295, -0.429999996424, 1.13000002921, -0.720000016987, 0.970000019968, 0.00999997273087, 0.810000004023, 0.300000007451, 1.14000000492, -0.579999994189, 1.27000002295, -0.799999986589, 1.12999998599, 0.280000012815, 1.23999999523, 0.439999998957, 1.37000001848, -0.280000018775, 2.14000005335, 0.209999992847, 1.48000000387, 0.240000002682,
+
+L2_zTBMV_A_nn
+0.6, 0.8, 0.6, 0.1, 0.1, 0.3, 0.3, 0.3, 0.1, 0.5, 0.9, 0.9, 0.7, 0.3, 0.6, 0.3, 0.1, 0.1, 0.3, 0.5, 0.1, 0.8, 0.4, 0.2, 0.3, 0.8, 0.9, 0.5, 0.8, 0.8, 0.7, 0.8, 0.6, 0.8, 0.8, 0.8, 0.5, 0.6, 0.6, 0.8, 0.3, 0.2, 0.1, 0.6, 0.8, 0.3, 0.7, 0.7, 0.8, 0.2, 0.3, 0.5, 0.5, 0.2, 0.5, 0.6, 0.5, 0.3, 0.9, 0.6, 0.5, 0.2, 0.3, 0.9, 0.1, 0.8, 0.6, 0.4, 0.8, 0.5, 0.1, 0.4, 0.5, 0.8, 0.8, 0.9, 0.3, 0.7, 0.4, 0.6, 0.6, 0.4, 0.8, 0.2, 0.7, 0.1, 0.2, 0.3, 0.2, 0.8, 0.9, 0.6, 0.9, 0.2, 0.0, 0.0, 0.9, 0.9, 0.0, 0.0, 0.0, 0.0,
+
+L2_zTBMV_x_n1
+0.1, 0.1, 0.4, 0.6, 0.8, 0.8, 0.2, 0.7, 0.6, 0.1, 0.2, 0.7, 0.3, 0.7, 0.6, 0.5, 0.7, 0.4, 0.2, 0.6, 0.3, 0.3, 0.8, 0.9, 0.2, 0.7, 0.8, 0.4, 0.3, 0.8, 0.8, 0.1, 0.7, 0.7,
+
+L2_zTBMV_x_n2
+0.1, 0.1, 0.0, 0.0, 0.4, 0.6, 0.0, 0.0, 0.8, 0.8, 0.0, 0.0, 0.2, 0.7, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.2, 0.7, 0.0, 0.0, 0.3, 0.7, 0.0, 0.0, 0.6, 0.5, 0.0, 0.0, 0.7, 0.4, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.8, 0.9, 0.0, 0.0, 0.2, 0.7, 0.0, 0.0, 0.8, 0.4, 0.0, 0.0, 0.3, 0.8, 0.0, 0.0, 0.8, 0.1, 0.0, 0.0, 0.7, 0.7, 0.0, 0.0,
+
+L2_zTBMV_o_UN
+0.0, 0.86, -0.83, 1.59, 0.28, 1.35, -0.37, 1.12, -0.39, 2.04, -0.72, 2.19, -0.18, 1.57, -0.08, 1.5, 0.33, 0.95, -0.02, 1.95, -1.02, 1.43, -0.15, 1.88, -0.65, 2.0, 0.56, 1.48, -0.16, 1.55, 1.15, 1.34, 0.0, 1.26,
+
+L2_zTBMV_o_UN2
+0.0, 0.86, 0.0, 0.0, -0.83, 1.59, 0.0, 0.0, 0.28, 1.35, 0.0, 0.0, -0.37, 1.12, 0.0, 0.0, -0.39, 2.04, 0.0, 0.0, -0.72, 2.19, 0.0, 0.0, -0.18, 1.57, 0.0, 0.0, -0.08, 1.5, 0.0, 0.0, 0.33, 0.95, 0.0, 0.0, -0.02, 1.95, 0.0, 0.0, -1.02, 1.43, 0.0, 0.0, -0.15, 1.88, 0.0, 0.0, -0.65, 2.0, 0.0, 0.0, 0.56, 1.48, 0.0, 0.0, -0.16, 1.55, 0.0, 0.0, 1.15, 1.34, 0.0, 0.0, 0.0, 1.26, 0.0, 0.0,
+
+L2_zTBMV_o_UT
+-0.02, 0.14, -0.01, 0.37, 0.04, 1.1, -0.23, 1.93, -0.44, 0.9, 0.01, 1.36, -0.31, 1.67, -1.02, 1.79, 0.76, 1.31, -0.18, 1.66, 0.28, 0.91, -0.24, 1.88, -0.48, 1.9, -0.67, 1.79, 0.02, 1.5, 1.04, 1.3, 0.12, 1.91,
+
+L2_zTBMV_o_UH
+0.14, -0.02, 0.37, 0.11, 1.18, 0.16, 2.03, 0.53, 1.0, -0.54, 1.51, 0.36, 1.81, 0.03, 1.82, 0.27, 1.5, 0.55, 1.64, -0.12, 0.92, 0.39, 1.74, 0.46, 2.02, 0.3, 1.79, -0.17, 1.48, 0.52, 1.8, -0.16, 2.7, -0.15,
+
+L2_sTRSV_A_nn
+24.0, 28.0, 28.0, 24.0, 8.0, 12.0, 20.0, 32.0, 28.0, 4.0, 24.0, 28.0, 20.0, 36.0, 12.0, 4.0, 24.0, 0.0, 4.0, 28.0, 24.0, 12.0, 4.0, 32.0, 36.0, 8.0, 36.0, 16.0, 20.0, 12.0, 8.0, 36.0, 28.0, 16.0, 0.0, 0.0, 12.0, 16.0, 12.0, 32.0, 20.0, 4.0, 32.0, 24.0, 16.0, 16.0, 28.0, 8.0, 20.0, 8.0, 20.0, 0.0, 0.0, 0.0, 36.0, 4.0, 16.0, 24.0, 12.0, 16.0, 24.0, 20.0, 12.0, 24.0, 20.0, 20.0, 36.0, 4.0, 0.0, 0.0, 0.0, 0.0, 28.0, 20.0, 20.0, 32.0, 20.0, 32.0, 8.0, 24.0, 4.0, 4.0, 24.0, 32.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 28.0, 24.0, 36.0, 8.0, 12.0, 4.0, 24.0, 12.0, 36.0, 24.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 20.0, 32.0, 20.0, 16.0, 4.0, 16.0, 16.0, 28.0, 36.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.0, 8.0, 32.0, 20.0, 20.0, 20.0, 32.0, 28.0, 12.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.0, 24.0, 28.0, 8.0, 36.0, 20.0, 36.0, 4.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 16.0, 20.0, 4.0, 28.0, 28.0, 28.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 32.0, 24.0, 16.0, 16.0, 8.0, 36.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.0, 28.0, 24.0, 20.0, 12.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 32.0, 4.0, 20.0, 24.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 8.0, 28.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.0, 28.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0,
+
+L2_sTRSV_A_nn_pu
+24.0, 28.0, 28.0, 24.0, 8.0, 12.0, 20.0, 32.0, 28.0, 4.0, 24.0, 28.0, 20.0, 36.0, 12.0, 4.0, 24.0, 4.0, 28.0, 24.0, 12.0, 4.0, 32.0, 36.0, 8.0, 36.0, 16.0, 20.0, 12.0, 8.0, 36.0, 28.0, 16.0, 12.0, 16.0, 12.0, 32.0, 20.0, 4.0, 32.0, 24.0, 16.0, 16.0, 28.0, 8.0, 20.0, 8.0, 20.0, 36.0, 4.0, 16.0, 24.0, 12.0, 16.0, 24.0, 20.0, 12.0, 24.0, 20.0, 20.0, 36.0, 4.0, 28.0, 20.0, 20.0, 32.0, 20.0, 32.0, 8.0, 24.0, 4.0, 4.0, 24.0, 32.0, 12.0, 32.0, 28.0, 24.0, 36.0, 8.0, 12.0, 4.0, 24.0, 12.0, 36.0, 24.0, 28.0, 32.0, 20.0, 32.0, 20.0, 16.0, 4.0, 16.0, 16.0, 28.0, 36.0, 12.0, 28.0, 8.0, 32.0, 20.0, 20.0, 20.0, 32.0, 28.0, 12.0, 32.0, 28.0, 24.0, 28.0, 8.0, 36.0, 20.0, 36.0, 4.0, 32.0, 24.0, 16.0, 20.0, 4.0, 28.0, 28.0, 28.0, 28.0, 20.0, 32.0, 24.0, 16.0, 16.0, 8.0, 36.0, 28.0, 28.0, 24.0, 20.0, 12.0, 12.0, 24.0, 32.0, 4.0, 20.0, 24.0, 24.0, 8.0, 28.0, 8.0, 16.0, 28.0, 32.0, 32.0, 4.0, 12.0,
+
+L2_sTRSV_x_n1
+0.2, 0.8, 0.1, 0.6, 0.5, 0.2, 0.5, 0.1, 0.6, 0.1, 0.8, 0.1, 0.9, 0.9, 0.9, 0.2, 0.9,
+
+L2_sTRSV_x_n2
+0.2, 0.0, 0.8, 0.0, 0.1, 0.0, 0.6, 0.0, 0.5, 0.0, 0.2, 0.0, 0.5, 0.0, 0.1, 0.0, 0.6, 0.0, 0.1, 0.0, 0.8, 0.0, 0.1, 0.0, 0.9, 0.0, 0.9, 0.0, 0.9, 0.0, 0.2, 0.0, 0.9, 0.0,
+
+L2_sTRSV_o_UN
+-2.40269, 2.01972, -0.194703, 0.104684, 0.0046076, -0.05174, -0.0637408, -0.0124843, 0.205715, -0.0232726, -0.0867832, 0.0777096, -0.0809462, 0.0455729, -0.0882813, -0.003125, 0.075,
+
+L2_sTRSV_o_UN2
+-2.40269, 0.0, 2.01972, 0.0, -0.194703, 0.0, 0.104684, 0.0, 0.0046076, 0.0, -0.05174, 0.0, -0.0637408, 0.0, -0.0124843, 0.0, 0.205715, 0.0, -0.0232726, 0.0, -0.0867832, 0.0, 0.0777096, 0.0, -0.0809462, 0.0, 0.0455729, 0.0, -0.0882813, 0.0, -0.003125, 0.0, 0.075, 0.0,
+
+L2_sTRSV_o_UT
+0.00833333, 0.141667, -0.341667, 0.0685185, 0.0914021, 0.235698, -0.232459, -0.309095, 0.309595, 0.159238, -0.122259, 0.139423, -0.079898, 0.0734248, -0.691031, 0.389425, 1.6854,
+
+L2_sTRSV_o_UH
+0.00833333, 0.141667, -0.341667, 0.0685185, 0.0914021, 0.235698, -0.232459, -0.309095, 0.309595, 0.159238, -0.122259, 0.139423, -0.079898, 0.0734248, -0.691031, 0.389425, 1.6854,
+
+L2_dTRSV_A_nn
+24.0, 36.0, 20.0, 28.0, 32.0, 20.0, 32.0, 16.0, 8.0, 16.0, 24.0, 20.0, 36.0, 24.0, 32.0, 12.0, 12.0, 0.0, 32.0, 36.0, 36.0, 8.0, 32.0, 28.0, 20.0, 36.0, 32.0, 24.0, 12.0, 4.0, 4.0, 32.0, 36.0, 28.0, 0.0, 0.0, 4.0, 4.0, 16.0, 16.0, 16.0, 8.0, 12.0, 24.0, 12.0, 20.0, 36.0, 20.0, 20.0, 32.0, 28.0, 0.0, 0.0, 0.0, 20.0, 36.0, 16.0, 12.0, 8.0, 4.0, 8.0, 24.0, 4.0, 24.0, 16.0, 28.0, 24.0, 16.0, 0.0, 0.0, 0.0, 0.0, 16.0, 32.0, 8.0, 20.0, 24.0, 12.0, 20.0, 24.0, 4.0, 36.0, 28.0, 12.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 16.0, 24.0, 16.0, 32.0, 24.0, 4.0, 36.0, 28.0, 8.0, 12.0, 36.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.0, 4.0, 20.0, 36.0, 28.0, 24.0, 24.0, 32.0, 28.0, 12.0, 36.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 12.0, 20.0, 24.0, 32.0, 32.0, 12.0, 24.0, 4.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 24.0, 8.0, 8.0, 16.0, 24.0, 4.0, 8.0, 36.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 32.0, 36.0, 32.0, 20.0, 12.0, 20.0, 16.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 16.0, 24.0, 36.0, 12.0, 20.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.0, 20.0, 20.0, 4.0, 36.0, 16.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 4.0, 24.0, 24.0, 16.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.0, 8.0, 20.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 8.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0,
+
+L2_dTRSV_A_nn_pu
+24.0, 36.0, 20.0, 28.0, 32.0, 20.0, 32.0, 16.0, 8.0, 16.0, 24.0, 20.0, 36.0, 24.0, 32.0, 12.0, 12.0, 32.0, 36.0, 36.0, 8.0, 32.0, 28.0, 20.0, 36.0, 32.0, 24.0, 12.0, 4.0, 4.0, 32.0, 36.0, 28.0, 4.0, 4.0, 16.0, 16.0, 16.0, 8.0, 12.0, 24.0, 12.0, 20.0, 36.0, 20.0, 20.0, 32.0, 28.0, 20.0, 36.0, 16.0, 12.0, 8.0, 4.0, 8.0, 24.0, 4.0, 24.0, 16.0, 28.0, 24.0, 16.0, 16.0, 32.0, 8.0, 20.0, 24.0, 12.0, 20.0, 24.0, 4.0, 36.0, 28.0, 12.0, 12.0, 12.0, 16.0, 24.0, 16.0, 32.0, 24.0, 4.0, 36.0, 28.0, 8.0, 12.0, 36.0, 16.0, 4.0, 20.0, 36.0, 28.0, 24.0, 24.0, 32.0, 28.0, 12.0, 36.0, 32.0, 12.0, 20.0, 24.0, 32.0, 32.0, 12.0, 24.0, 4.0, 32.0, 32.0, 24.0, 8.0, 8.0, 16.0, 24.0, 4.0, 8.0, 36.0, 32.0, 32.0, 36.0, 32.0, 20.0, 12.0, 20.0, 16.0, 4.0, 16.0, 24.0, 36.0, 12.0, 20.0, 8.0, 36.0, 20.0, 20.0, 4.0, 36.0, 16.0, 4.0, 4.0, 24.0, 24.0, 16.0, 36.0, 8.0, 20.0, 4.0, 12.0, 8.0, 20.0, 4.0, 4.0, 32.0,
+
+L2_dTRSV_x_n1
+0.7, 0.3, 0.2, 0.1, 0.9, 0.9, 0.7, 0.4, 0.8, 0.9, 0.6, 0.6, 0.7, 0.3, 0.7, 0.2, 0.2,
+
+L2_dTRSV_x_n2
+0.7, 0.0, 0.3, 0.0, 0.2, 0.0, 0.1, 0.0, 0.9, 0.0, 0.9, 0.0, 0.7, 0.0, 0.4, 0.0, 0.8, 0.0, 0.9, 0.0, 0.6, 0.0, 0.6, 0.0, 0.7, 0.0, 0.3, 0.0, 0.7, 0.0, 0.2, 0.0, 0.2, 0.0,
+
+L2_dTRSV_o_UN
+11.4385137035, -12.228712972, 6.48869547526, 3.95473442925, -2.9291273329, 1.00749782986, -0.137443033854, -0.249099392361, 0.473177083333, -0.799652777778, 0.902777777778, 0.0930555555556, -0.204166666667, -0.0208333333333, 0.01875, 0.04375, 0.00625,
+
+L2_dTRSV_o_UN2
+11.4385137035, 0.0, -12.228712972, 0.0, 6.48869547526, 0.0, 3.95473442925, 0.0, -2.9291273329, 0.0, 1.00749782986, 0.0, -0.137443033854, 0.0, -0.249099392361, 0.0, 0.473177083333, 0.0, -0.799652777778, 0.0, 0.902777777778, 0.0, 0.0930555555556, 0.0, -0.204166666667, 0.0, -0.0208333333333, 0.0, 0.01875, 0.0, 0.04375, 0.0, 0.00625, 0.0,
+
+L2_dTRSV_o_UT
+0.0291666666667, -0.0234375, 0.115104166667, -0.0166666666667, -0.06796875, 0.138888888889, -0.181076388889, -0.0510959201389, 0.11686062283, -0.0105824788411, 0.801871744792, -0.229576845522, -4.73293445728, -0.147588847596, 9.29135302634, 8.1630378001, -4.60693336769,
+
+L2_dTRSV_o_UH
+0.0291666666667, -0.0234375, 0.115104166667, -0.0166666666667, -0.06796875, 0.138888888889, -0.181076388889, -0.0510959201389, 0.11686062283, -0.0105824788411, 0.801871744792, -0.229576845522, -4.73293445728, -0.147588847596, 9.29135302634, 8.1630378001, -4.60693336769,
+
+L2_cTRSV_A_nn
+36.0, 36.0, 16.0, 8.0, 28.0, 16.0, 36.0, 16.0, 32.0, 8.0, 20.0, 36.0, 20.0, 24.0, 36.0, 16.0, 32.0, 8.0, 32.0, 16.0, 28.0, 20.0, 28.0, 24.0, 24.0, 16.0, 20.0, 16.0, 20.0, 20.0, 28.0, 4.0, 8.0, 4.0, 0.0, 0.0, 12.0, 32.0, 36.0, 8.0, 12.0, 24.0, 36.0, 36.0, 32.0, 12.0, 16.0, 20.0, 36.0, 20.0, 8.0, 4.0, 8.0, 16.0, 28.0, 24.0, 8.0, 20.0, 20.0, 4.0, 36.0, 36.0, 20.0, 32.0, 36.0, 32.0, 36.0, 20.0, 0.0, 0.0, 0.0, 0.0, 20.0, 8.0, 36.0, 28.0, 28.0, 24.0, 8.0, 8.0, 12.0, 8.0, 16.0, 8.0, 16.0, 4.0, 36.0, 32.0, 24.0, 4.0, 16.0, 4.0, 12.0, 24.0, 28.0, 24.0, 16.0, 8.0, 32.0, 20.0, 28.0, 36.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 16.0, 16.0, 36.0, 8.0, 20.0, 8.0, 20.0, 28.0, 20.0, 4.0, 12.0, 32.0, 32.0, 28.0, 16.0, 28.0, 24.0, 20.0, 16.0, 4.0, 20.0, 28.0, 12.0, 36.0, 4.0, 12.0, 16.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.0, 36.0, 32.0, 8.0, 20.0, 12.0, 24.0, 8.0, 16.0, 32.0, 20.0, 32.0, 36.0, 20.0, 20.0, 24.0, 16.0, 8.0, 16.0, 28.0, 12.0, 32.0, 32.0, 36.0, 8.0, 24.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.0, 28.0, 8.0, 8.0, 32.0, 20.0, 32.0, 8.0, 28.0, 16.0, 16.0, 36.0, 8.0, 20.0, 24.0, 8.0, 20.0, 12.0, 8.0, 16.0, 36.0, 12.0, 28.0, 16.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 28.0, 24.0, 4.0, 32.0, 28.0, 28.0, 12.0, 20.0, 36.0, 4.0, 28.0, 24.0, 24.0, 4.0, 4.0, 36.0, 20.0, 20.0, 24.0, 24.0, 36.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 12.0, 8.0, 16.0, 24.0, 20.0, 8.0, 24.0, 28.0, 16.0, 4.0, 8.0, 24.0, 8.0, 36.0, 36.0, 36.0, 24.0, 4.0, 24.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 32.0, 16.0, 36.0, 28.0, 12.0, 32.0, 32.0, 20.0, 16.0, 16.0, 8.0, 24.0, 28.0, 24.0, 24.0, 24.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 8.0, 4.0, 32.0, 28.0, 12.0, 8.0, 28.0, 8.0, 20.0, 16.0, 8.0, 16.0, 20.0, 4.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 4.0, 12.0, 28.0, 4.0, 12.0, 28.0, 24.0, 28.0, 12.0, 28.0, 8.0, 20.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 32.0, 16.0, 16.0, 4.0, 8.0, 32.0, 36.0, 12.0, 20.0, 4.0, 16.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 8.0, 20.0, 8.0, 16.0, 16.0, 8.0, 24.0, 36.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 16.0, 36.0, 28.0, 8.0, 28.0, 28.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 20.0, 32.0, 32.0, 8.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 8.0, 12.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 4.0,
+
+L2_cTRSV_A_nn_pu
+36.0, 36.0, 16.0, 8.0, 28.0, 16.0, 36.0, 16.0, 32.0, 8.0, 20.0, 36.0, 20.0, 24.0, 36.0, 16.0, 32.0, 8.0, 32.0, 16.0, 28.0, 20.0, 28.0, 24.0, 24.0, 16.0, 20.0, 16.0, 20.0, 20.0, 28.0, 4.0, 8.0, 4.0, 12.0, 32.0, 36.0, 8.0, 12.0, 24.0, 36.0, 36.0, 32.0, 12.0, 16.0, 20.0, 36.0, 20.0, 8.0, 4.0, 8.0, 16.0, 28.0, 24.0, 8.0, 20.0, 20.0, 4.0, 36.0, 36.0, 20.0, 32.0, 36.0, 32.0, 36.0, 20.0, 20.0, 8.0, 36.0, 28.0, 28.0, 24.0, 8.0, 8.0, 12.0, 8.0, 16.0, 8.0, 16.0, 4.0, 36.0, 32.0, 24.0, 4.0, 16.0, 4.0, 12.0, 24.0, 28.0, 24.0, 16.0, 8.0, 32.0, 20.0, 28.0, 36.0, 4.0, 16.0, 16.0, 36.0, 8.0, 20.0, 8.0, 20.0, 28.0, 20.0, 4.0, 12.0, 32.0, 32.0, 28.0, 16.0, 28.0, 24.0, 20.0, 16.0, 4.0, 20.0, 28.0, 12.0, 36.0, 4.0, 12.0, 16.0, 36.0, 36.0, 32.0, 8.0, 20.0, 12.0, 24.0, 8.0, 16.0, 32.0, 20.0, 32.0, 36.0, 20.0, 20.0, 24.0, 16.0, 8.0, 16.0, 28.0, 12.0, 32.0, 32.0, 36.0, 8.0, 24.0, 36.0, 28.0, 8.0, 8.0, 32.0, 20.0, 32.0, 8.0, 28.0, 16.0, 16.0, 36.0, 8.0, 20.0, 24.0, 8.0, 20.0, 12.0, 8.0, 16.0, 36.0, 12.0, 28.0, 16.0, 20.0, 28.0, 24.0, 4.0, 32.0, 28.0, 28.0, 12.0, 20.0, 36.0, 4.0, 28.0, 24.0, 24.0, 4.0, 4.0, 36.0, 20.0, 20.0, 24.0, 24.0, 36.0, 20.0, 12.0, 8.0, 16.0, 24.0, 20.0, 8.0, 24.0, 28.0, 16.0, 4.0, 8.0, 24.0, 8.0, 36.0, 36.0, 36.0, 24.0, 4.0, 24.0, 12.0, 32.0, 16.0, 36.0, 28.0, 12.0, 32.0, 32.0, 20.0, 16.0, 16.0, 8.0, 24.0, 28.0, 24.0, 24.0, 24.0, 4.0, 20.0, 8.0, 4.0, 32.0, 28.0, 12.0, 8.0, 28.0, 8.0, 20.0, 16.0, 8.0, 16.0, 20.0, 4.0, 8.0, 24.0, 4.0, 12.0, 28.0, 4.0, 12.0, 28.0, 24.0, 28.0, 12.0, 28.0, 8.0, 20.0, 8.0, 12.0, 32.0, 16.0, 16.0, 4.0, 8.0, 32.0, 36.0, 12.0, 20.0, 4.0, 16.0, 24.0, 8.0, 20.0, 8.0, 16.0, 16.0, 8.0, 24.0, 36.0, 8.0, 24.0, 16.0, 36.0, 28.0, 8.0, 28.0, 28.0, 8.0, 32.0, 20.0, 32.0, 32.0, 8.0, 12.0, 8.0, 8.0, 12.0, 12.0, 20.0, 4.0,
+
+L2_cTRSV_x_n1
+0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.699999988079, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.20000000298, 0.300000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.300000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.899999976158, 0.800000011921, 0.699999988079, 0.600000023842, 0.10000000149, 0.10000000149, 0.10000000149, 0.300000011921, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.20000000298,
+
+L2_cTRSV_x_n2
+0.800000011921, 0.800000011921, 0.0, 0.0, 0.10000000149, 0.300000011921, 0.0, 0.0, 0.600000023842, 0.699999988079, 0.0, 0.0, 0.300000011921, 0.10000000149, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.10000000149, 0.10000000149, 0.0, 0.0, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.899999976158, 0.800000011921, 0.0, 0.0, 0.699999988079, 0.600000023842, 0.0, 0.0, 0.10000000149, 0.10000000149, 0.0, 0.0, 0.10000000149, 0.300000011921, 0.0, 0.0, 0.40000000596, 0.300000011921, 0.0, 0.0, 0.699999988079, 0.899999976158, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.0, 0.0,
+
+L2_cTRSV_o_UN
+0.594933566964, -0.315019222695, -1.01289503455, -0.527617393149, -0.28430160669, 1.43833818036, 0.173852765488, -0.810668303673, -0.0911287027816, -0.107413567973, 0.0938391484999, 0.0905342581104, -0.0131405830986, 0.0756930302523, -0.0906741384626, 0.0651067764121, 0.206488087396, -0.27259336822, -0.151479130295, 0.291555146095, -0.158686981083, -0.0655027960141, 0.119051667585, -0.0182250461356, -0.0594643999837, -0.0214315033817, 0.0735765960864, -0.00521013472739, -0.0929667214656, -0.0266313723803, 0.0899038437682, -0.000480770169256, 0.00673076933107, 0.0086538462828,
+
+L2_cTRSV_o_UN2
+0.594933566964, -0.315019222695, 0.0, 0.0, -1.01289503455, -0.527617393149, 0.0, 0.0, -0.28430160669, 1.43833818036, 0.0, 0.0, 0.173852765488, -0.810668303673, 0.0, 0.0, -0.0911287027816, -0.107413567973, 0.0, 0.0, 0.0938391484999, 0.0905342581104, 0.0, 0.0, -0.0131405830986, 0.0756930302523, 0.0, 0.0, -0.0906741384626, 0.0651067764121, 0.0, 0.0, 0.206488087396, -0.27259336822, 0.0, 0.0, -0.151479130295, 0.291555146095, 0.0, 0.0, -0.158686981083, -0.0655027960141, 0.0, 0.0, 0.119051667585, -0.0182250461356, 0.0, 0.0, -0.0594643999837, -0.0214315033817, 0.0, 0.0, 0.0735765960864, -0.00521013472739, 0.0, 0.0, -0.0929667214656, -0.0266313723803, 0.0, 0.0, 0.0899038437682, -0.000480770169256, 0.0, 0.0, 0.00673076933107, 0.0086538462828, 0.0, 0.0,
+
+L2_cTRSV_o_UT
+0.0222222225534, 0.0, 0.000722983472129, 0.00825723003216, 0.00148139391917, 0.00147745634686, -0.0321927824925, 0.0121057846439, 0.0165590884117, -0.000246312854666, -0.00851089877641, -0.00377372562026, -0.00362477871118, -0.00282459746629, 0.026956984416, -0.00873253174881, -0.00990029188872, 0.0143110987186, 0.0553322087818, -0.00981568541087, 0.00107993786542, -0.0883967226031, -0.0165171394379, 0.0960778411503, -0.0103183345591, -0.110338024807, -0.0232084033053, 0.148210184476, 0.0698025092923, -0.17763135155, -0.0632964177877, 0.588402352205, 0.319569918938, -0.323324580596,
+
+L2_cTRSV_o_UH
+0.0, 0.0222222225534, 0.000722983063878, -0.00270167424073, 0.00722852194437, 0.0119325034659, 0.0428804602116, -0.0478281182381, -0.0169457796429, 0.0319569268372, 0.00276812767431, 0.00201685861762, -0.00146435426717, -0.00046826879169, -0.0325393550607, 0.0189311969316, 0.0389615566629, -0.0325025624574, -0.0369859311847, 0.0925037321174, -0.157063281758, -0.0484729195251, 0.153439961314, 0.039218306506, -0.193450545686, -0.0687363086255, 0.264967311446, 0.0513555138895, -0.300406005324, 0.00917295898706, 0.905211268549, 0.167336111703, -0.630807531883, 0.314511320045,
+
+L2_zTRSV_A_nn
+24.0, 16.0, 16.0, 20.0, 36.0, 36.0, 36.0, 4.0, 32.0, 36.0, 24.0, 24.0, 32.0, 4.0, 12.0, 36.0, 28.0, 4.0, 36.0, 32.0, 28.0, 16.0, 24.0, 36.0, 20.0, 12.0, 24.0, 12.0, 20.0, 16.0, 8.0, 8.0, 24.0, 36.0, 0.0, 0.0, 24.0, 4.0, 12.0, 16.0, 32.0, 8.0, 32.0, 4.0, 4.0, 4.0, 28.0, 36.0, 8.0, 16.0, 20.0, 36.0, 16.0, 32.0, 16.0, 4.0, 24.0, 12.0, 12.0, 36.0, 8.0, 20.0, 4.0, 36.0, 28.0, 20.0, 24.0, 24.0, 0.0, 0.0, 0.0, 0.0, 36.0, 8.0, 16.0, 4.0, 20.0, 28.0, 20.0, 24.0, 36.0, 20.0, 12.0, 4.0, 24.0, 16.0, 4.0, 24.0, 16.0, 24.0, 8.0, 32.0, 32.0, 24.0, 32.0, 32.0, 8.0, 12.0, 4.0, 12.0, 32.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 28.0, 32.0, 4.0, 12.0, 12.0, 32.0, 12.0, 4.0, 36.0, 16.0, 24.0, 24.0, 36.0, 24.0, 20.0, 4.0, 16.0, 12.0, 4.0, 8.0, 20.0, 36.0, 4.0, 8.0, 32.0, 24.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 36.0, 16.0, 4.0, 20.0, 36.0, 24.0, 20.0, 32.0, 16.0, 12.0, 8.0, 8.0, 8.0, 12.0, 24.0, 28.0, 28.0, 12.0, 12.0, 8.0, 8.0, 8.0, 32.0, 16.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.0, 32.0, 32.0, 16.0, 36.0, 32.0, 8.0, 12.0, 28.0, 4.0, 12.0, 8.0, 8.0, 12.0, 8.0, 36.0, 12.0, 32.0, 28.0, 4.0, 16.0, 12.0, 20.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.0, 36.0, 12.0, 32.0, 20.0, 4.0, 20.0, 36.0, 12.0, 12.0, 16.0, 4.0, 16.0, 8.0, 12.0, 12.0, 16.0, 8.0, 4.0, 12.0, 16.0, 24.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 36.0, 16.0, 16.0, 32.0, 12.0, 12.0, 36.0, 24.0, 8.0, 12.0, 8.0, 36.0, 4.0, 12.0, 28.0, 24.0, 8.0, 12.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.0, 4.0, 12.0, 12.0, 32.0, 32.0, 4.0, 8.0, 32.0, 8.0, 20.0, 8.0, 16.0, 4.0, 24.0, 20.0, 28.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.0, 28.0, 28.0, 16.0, 20.0, 20.0, 4.0, 32.0, 20.0, 28.0, 36.0, 24.0, 8.0, 20.0, 16.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 28.0, 28.0, 28.0, 32.0, 24.0, 24.0, 12.0, 12.0, 4.0, 4.0, 4.0, 36.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 24.0, 36.0, 12.0, 32.0, 36.0, 28.0, 28.0, 4.0, 16.0, 36.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.0, 24.0, 36.0, 32.0, 28.0, 12.0, 20.0, 28.0, 36.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.0, 28.0, 12.0, 8.0, 8.0, 12.0, 36.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 4.0, 4.0, 16.0, 32.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 32.0, 20.0, 28.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.0, 4.0,
+
+L2_zTRSV_A_nn_pu
+24.0, 16.0, 16.0, 20.0, 36.0, 36.0, 36.0, 4.0, 32.0, 36.0, 24.0, 24.0, 32.0, 4.0, 12.0, 36.0, 28.0, 4.0, 36.0, 32.0, 28.0, 16.0, 24.0, 36.0, 20.0, 12.0, 24.0, 12.0, 20.0, 16.0, 8.0, 8.0, 24.0, 36.0, 24.0, 4.0, 12.0, 16.0, 32.0, 8.0, 32.0, 4.0, 4.0, 4.0, 28.0, 36.0, 8.0, 16.0, 20.0, 36.0, 16.0, 32.0, 16.0, 4.0, 24.0, 12.0, 12.0, 36.0, 8.0, 20.0, 4.0, 36.0, 28.0, 20.0, 24.0, 24.0, 36.0, 8.0, 16.0, 4.0, 20.0, 28.0, 20.0, 24.0, 36.0, 20.0, 12.0, 4.0, 24.0, 16.0, 4.0, 24.0, 16.0, 24.0, 8.0, 32.0, 32.0, 24.0, 32.0, 32.0, 8.0, 12.0, 4.0, 12.0, 32.0, 20.0, 8.0, 28.0, 32.0, 4.0, 12.0, 12.0, 32.0, 12.0, 4.0, 36.0, 16.0, 24.0, 24.0, 36.0, 24.0, 20.0, 4.0, 16.0, 12.0, 4.0, 8.0, 20.0, 36.0, 4.0, 8.0, 32.0, 24.0, 12.0, 20.0, 36.0, 16.0, 4.0, 20.0, 36.0, 24.0, 20.0, 32.0, 16.0, 12.0, 8.0, 8.0, 8.0, 12.0, 24.0, 28.0, 28.0, 12.0, 12.0, 8.0, 8.0, 8.0, 32.0, 16.0, 20.0, 16.0, 32.0, 32.0, 16.0, 36.0, 32.0, 8.0, 12.0, 28.0, 4.0, 12.0, 8.0, 8.0, 12.0, 8.0, 36.0, 12.0, 32.0, 28.0, 4.0, 16.0, 12.0, 20.0, 12.0, 36.0, 36.0, 12.0, 32.0, 20.0, 4.0, 20.0, 36.0, 12.0, 12.0, 16.0, 4.0, 16.0, 8.0, 12.0, 12.0, 16.0, 8.0, 4.0, 12.0, 16.0, 24.0, 12.0, 36.0, 16.0, 16.0, 32.0, 12.0, 12.0, 36.0, 24.0, 8.0, 12.0, 8.0, 36.0, 4.0, 12.0, 28.0, 24.0, 8.0, 12.0, 28.0, 36.0, 4.0, 12.0, 12.0, 32.0, 32.0, 4.0, 8.0, 32.0, 8.0, 20.0, 8.0, 16.0, 4.0, 24.0, 20.0, 28.0, 20.0, 28.0, 28.0, 28.0, 16.0, 20.0, 20.0, 4.0, 32.0, 20.0, 28.0, 36.0, 24.0, 8.0, 20.0, 16.0, 28.0, 4.0, 28.0, 28.0, 28.0, 32.0, 24.0, 24.0, 12.0, 12.0, 4.0, 4.0, 4.0, 36.0, 8.0, 4.0, 24.0, 36.0, 12.0, 32.0, 36.0, 28.0, 28.0, 4.0, 16.0, 36.0, 32.0, 32.0, 24.0, 36.0, 32.0, 28.0, 12.0, 20.0, 28.0, 36.0, 12.0, 28.0, 28.0, 12.0, 8.0, 8.0, 12.0, 36.0, 32.0, 24.0, 4.0, 4.0, 16.0, 32.0, 32.0, 24.0, 32.0, 20.0, 28.0, 24.0, 4.0,
+
+L2_zTRSV_x_n1
+0.5, 0.2, 0.5, 0.5, 0.8, 0.6, 0.5, 0.4, 0.7, 0.8, 0.8, 0.6, 0.6, 0.9, 0.6, 0.7, 0.3, 0.8, 0.5, 0.7, 0.6, 0.9, 0.9, 0.3, 0.3, 0.1, 0.6, 0.3, 0.7, 0.8, 0.9, 0.2, 0.5, 0.2,
+
+L2_zTRSV_x_n2
+0.5, 0.2, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0, 0.7, 0.8, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.6, 0.7, 0.0, 0.0, 0.3, 0.8, 0.0, 0.0, 0.5, 0.7, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.9, 0.3, 0.0, 0.0, 0.3, 0.1, 0.0, 0.0, 0.6, 0.3, 0.0, 0.0, 0.7, 0.8, 0.0, 0.0, 0.9, 0.2, 0.0, 0.0, 0.5, 0.2, 0.0, 0.0,
+
+L2_zTRSV_o_UN
+-0.117782452318, -0.112026835825, 0.00381797959204, 0.00792418146995, 0.0447425590052, -0.0727856782286, -0.0733041598802, 0.0803069249097, 0.0157904572008, 0.0210530076009, 0.0108108011673, 0.062824650788, 0.0250326465768, 0.00144442830828, 0.0106845239065, -0.0334233841644, -0.0506804969493, -0.0410505909674, -0.00931030768772, 0.0289467583966, 0.060236627361, 0.00219814254409, -0.0175502974016, -0.0318983095064, -0.00268201502661, 0.0184899561724, -0.00974741730147, -0.00401925284358, -0.00567896274653, 0.00306135865595, -0.001, -0.0195, 0.0216216216216, 0.00472972972973,
+
+L2_zTRSV_o_UN2
+-0.117782452318, -0.112026835825, 0.0, 0.0, 0.00381797959204, 0.00792418146995, 0.0, 0.0, 0.0447425590052, -0.0727856782286, 0.0, 0.0, -0.0733041598802, 0.0803069249097, 0.0, 0.0, 0.0157904572008, 0.0210530076009, 0.0, 0.0, 0.0108108011673, 0.062824650788, 0.0, 0.0, 0.0250326465768, 0.00144442830828, 0.0, 0.0, 0.0106845239065, -0.0334233841644, 0.0, 0.0, -0.0506804969493, -0.0410505909674, 0.0, 0.0, -0.00931030768772, 0.0289467583966, 0.0, 0.0, 0.060236627361, 0.00219814254409, 0.0, 0.0, -0.0175502974016, -0.0318983095064, 0.0, 0.0, -0.00268201502661, 0.0184899561724, 0.0, 0.0, -0.00974741730147, -0.00401925284358, 0.0, 0.0, -0.00567896274653, 0.00306135865595, 0.0, 0.0, -0.001, -0.0195, 0.0, 0.0, 0.0216216216216, 0.00472972972973, 0.0, 0.0,
+
+L2_zTRSV_o_UT
+0.0182692307692, -0.00384615384615, 0.00662681912682, 0.00706860706861, 0.000343035343035, -0.0031340956341, 0.00448780057271, 0.013661201114, -0.0128687777037, 0.00369625975758, 0.00719757629545, -0.012641374593, 0.0108229274267, 0.0115987885563, -0.00265416786525, -0.020885148029, -0.00172173509619, 0.0113541605254, 0.00109700943918, -0.00858587046508, 0.0101682777897, 0.0186443889184, -0.0281381989712, -0.016837557351, 0.0012046368883, -0.0197832517297, 0.0268252893523, 0.0439875141638, -0.0140740190926, 0.0515215838321, 0.0289779557733, -0.027294391418, 0.00333242458548, -0.14092609678,
+
+L2_zTRSV_o_UH
+0.0105769230769, 0.0153846153846, -0.00220893970894, 0.0190228690229, -0.0118790509967, 0.00189647792589, 0.0284337742079, -0.00245699511515, -0.00849250140177, -0.0206510062739, -0.0159887222502, 0.0145098488685, 0.0130575854605, -0.00530441170702, -0.0320986394862, 0.0241269063715, -0.0106011857456, -0.00358290866981, 0.000217611862516, -0.00178943302941, 0.0323917365637, -0.0140144534922, -0.00553998052406, 0.0178351801378, -0.000818170373114, -0.0236781122664, 0.0264375795928, 0.00865952061921, -0.0685576112938, -0.0252999785684, 0.0647926233732, 0.0362570666294, -0.0759178018159, -0.0275969662468,
+
+L2_sTBSV_A_nn
+16.0, 20.0, 16.0, 20.0, 24.0, 36.0, 28.0, 8.0, 12.0, 28.0, 32.0, 24.0, 28.0, 4.0, 4.0, 4.0, 20.0, 28.0, 12.0, 4.0, 20.0, 24.0, 8.0, 32.0, 20.0, 12.0, 36.0, 24.0, 32.0, 32.0, 20.0, 8.0, 12.0, 12.0, 12.0, 8.0, 12.0, 28.0, 36.0, 4.0, 20.0, 8.0, 8.0, 24.0, 20.0, 36.0, 8.0, 0.0, 20.0, 0.0, 0.0,
+
+L2_sTBSV_x_n1
+0.2, 0.6, 0.1, 0.6, 0.2, 0.9, 0.5, 0.2, 0.2, 0.6, 0.3, 0.3, 0.1, 0.3, 0.2, 0.7, 0.7,
+
+L2_sTBSV_x_n2
+0.2, 0.0, 0.6, 0.0, 0.1, 0.0, 0.6, 0.0, 0.2, 0.0, 0.9, 0.0, 0.5, 0.0, 0.2, 0.0, 0.2, 0.0, 0.6, 0.0, 0.3, 0.0, 0.3, 0.0, 0.1, 0.0, 0.3, 0.0, 0.2, 0.0, 0.7, 0.0, 0.7, 0.0,
+
+L2_sTBSV_o_UN
+10.3602, -6.72359, -1.94319, 5.04746, 1.17748, -7.43367, -0.758667, 1.636, 0.153, -1.259, 0.340222, 0.622778, -0.957222, 0.539167, -0.0975, 0.0116667, 0.035,
+
+L2_sTBSV_o_UN2
+10.3602, 0.0, -6.72359, 0.0, -1.94319, 0.0, 5.04746, 0.0, 1.17748, 0.0, -7.43367, 0.0, -0.758667, 0.0, 1.636, 0.0, 0.153, 0.0, -1.259, 0.0, 0.340222, 0.0, 0.622778, 0.0, -0.957222, 0.0, 0.539167, 0.0, -0.0975, 0.0, 0.0116667, 0.0, 0.035, 0.0,
+
+L2_sTBSV_o_UT
+0.0125, 0.0175, -0.0185714, 0.0042347, 0.0102624, 0.189329, -0.277303, -0.166334, 0.353837, 0.0698601, -0.733682, 0.327828, 0.414188, -3.47997, 6.86108, -3.78128, -5.31357,
+
+L2_sTBSV_o_UH
+0.0125, 0.0175, -0.0185714, 0.0042347, 0.0102624, 0.189329, -0.277303, -0.166334, 0.353837, 0.0698601, -0.733682, 0.327828, 0.414188, -3.47997, 6.86108, -3.78128, -5.31357,
+
+L2_dTBSV_A_nn
+8.0, 12.0, 12.0, 36.0, 36.0, 36.0, 8.0, 28.0, 16.0, 28.0, 12.0, 12.0, 36.0, 36.0, 8.0, 32.0, 12.0, 12.0, 24.0, 32.0, 28.0, 16.0, 8.0, 8.0, 16.0, 12.0, 16.0, 16.0, 12.0, 4.0, 8.0, 20.0, 20.0, 12.0, 36.0, 32.0, 8.0, 32.0, 20.0, 36.0, 12.0, 12.0, 36.0, 8.0, 12.0, 32.0, 24.0, 0.0, 12.0, 0.0, 0.0,
+
+L2_dTBSV_x_n1
+0.6, 0.8, 0.6, 0.1, 0.8, 0.8, 0.5, 0.7, 0.3, 0.8, 0.5, 0.2, 0.3, 0.2, 0.7, 0.6, 0.3,
+
+L2_dTBSV_x_n2
+0.6, 0.0, 0.8, 0.0, 0.6, 0.0, 0.1, 0.0, 0.8, 0.0, 0.8, 0.0, 0.5, 0.0, 0.7, 0.0, 0.3, 0.0, 0.8, 0.0, 0.5, 0.0, 0.2, 0.0, 0.3, 0.0, 0.2, 0.0, 0.7, 0.0, 0.6, 0.0, 0.3, 0.0,
+
+L2_dTBSV_o_UN
+0.0315060534245, -0.036767906644, 0.0657638710277, -0.00677374216147, 0.0164721132687, 0.00766661844136, -0.00862429269547, 0.0548466435185, -0.0374324845679, 0.0152391975309, 0.0447530864198, 0.00478395061728, 0.00231481481481, 0.00185185185185, 0.0111111111111, 0.0, 0.025,
+
+L2_dTBSV_o_UN2
+0.0315060534245, 0.0, -0.036767906644, 0.0, 0.0657638710277, 0.0, -0.00677374216147, 0.0, 0.0164721132687, 0.0, 0.00766661844136, 0.0, -0.00862429269547, 0.0, 0.0548466435185, 0.0, -0.0374324845679, 0.0, 0.0152391975309, 0.0, 0.0447530864198, 0.0, 0.00478395061728, 0.0, 0.00231481481481, 0.0, 0.00185185185185, 0.0, 0.0111111111111, 0.0, 0.0, 0.0, 0.025, 0.0,
+
+L2_dTBSV_o_UT
+0.075, -0.00277777777778, -0.025, 0.0321428571429, 0.022619047619, -0.0125, 0.0195436507937, 0.0140376984127, -0.0224702380952, 0.0598338293651, 0.0176897321429, -0.0327608300265, 0.140699404762, -0.0903898442093, -0.0285919434646, 0.0597941774446, -0.0659964114247,
+
+L2_dTBSV_o_UH
+0.075, -0.00277777777778, -0.025, 0.0321428571429, 0.022619047619, -0.0125, 0.0195436507937, 0.0140376984127, -0.0224702380952, 0.0598338293651, 0.0176897321429, -0.0327608300265, 0.140699404762, -0.0903898442093, -0.0285919434646, 0.0597941774446, -0.0659964114247,
+
+L2_cTBSV_A_nn
+12.0, 28.0, 28.0, 32.0, 16.0, 20.0, 20.0, 32.0, 4.0, 16.0, 28.0, 28.0, 8.0, 28.0, 20.0, 16.0, 32.0, 28.0, 4.0, 8.0, 32.0, 4.0, 16.0, 24.0, 28.0, 8.0, 32.0, 8.0, 8.0, 20.0, 20.0, 4.0, 16.0, 12.0, 32.0, 16.0, 8.0, 16.0, 8.0, 20.0, 24.0, 28.0, 4.0, 32.0, 16.0, 32.0, 8.0, 24.0, 28.0, 28.0, 32.0, 32.0, 20.0, 24.0, 28.0, 24.0, 32.0, 24.0, 36.0, 36.0, 32.0, 32.0, 20.0, 20.0, 12.0, 8.0, 32.0, 36.0, 16.0, 16.0, 24.0, 4.0, 16.0, 8.0, 36.0, 8.0, 32.0, 32.0, 28.0, 28.0, 28.0, 20.0, 36.0, 32.0, 28.0, 8.0, 24.0, 20.0, 12.0, 20.0, 32.0, 12.0, 16.0, 16.0, 0.0, 0.0, 8.0, 36.0, 0.0, 0.0, 0.0, 0.0,
+
+L2_cTBSV_x_n1
+0.600000023842, 0.10000000149, 0.699999988079, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.600000023842, 0.800000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.40000000596, 0.40000000596, 0.600000023842, 0.5, 0.899999976158, 0.699999988079, 0.40000000596, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.800000011921, 0.300000011921, 0.699999988079, 0.300000011921,
+
+L2_cTBSV_x_n2
+0.600000023842, 0.10000000149, 0.0, 0.0, 0.699999988079, 0.10000000149, 0.0, 0.0, 0.800000011921, 0.899999976158, 0.0, 0.0, 0.800000011921, 0.600000023842, 0.0, 0.0, 0.800000011921, 0.899999976158, 0.0, 0.0, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.899999976158, 0.600000023842, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.0, 0.0, 0.800000011921, 0.699999988079, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0, 0.40000000596, 0.800000011921, 0.0, 0.0, 0.600000023842, 0.899999976158, 0.0, 0.0, 0.300000011921, 0.600000023842, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.0, 0.0, 0.699999988079, 0.300000011921, 0.0, 0.0,
+
+L2_cTBSV_o_UN
+0.198946958765, 0.117478549396, -0.0353376512917, -0.104767313443, -0.106854235755, -0.0424301939902, 0.0537191514755, 0.132192979229, 0.03795553912, -0.0104612804481, 0.00236279684018, -0.014518338199, 0.0482618685686, 0.0462148240025, -0.0010443325467, -0.00690483429921, 0.0102385856959, -0.0313526474763, 0.0127657172257, 0.0285835493187, 0.00211550689121, -0.00413774884384, -0.00088219272563, -0.0164811625734, 0.0401482120582, 0.0492327626666, 0.0183150482147, -0.0101749858294, -0.010599713923, 0.00781437695206, 0.0131385983117, 0.00680096686655, 0.0120588237748, -0.0167647054967,
+
+L2_cTBSV_o_UN2
+0.198946958765, 0.117478549396, 0.0, 0.0, -0.0353376512917, -0.104767313443, 0.0, 0.0, -0.106854235755, -0.0424301939902, 0.0, 0.0, 0.0537191514755, 0.132192979229, 0.0, 0.0, 0.03795553912, -0.0104612804481, 0.0, 0.0, 0.00236279684018, -0.014518338199, 0.0, 0.0, 0.0482618685686, 0.0462148240025, 0.0, 0.0, -0.0010443325467, -0.00690483429921, 0.0, 0.0, 0.0102385856959, -0.0313526474763, 0.0, 0.0, 0.0127657172257, 0.0285835493187, 0.0, 0.0, 0.00211550689121, -0.00413774884384, 0.0, 0.0, -0.00088219272563, -0.0164811625734, 0.0, 0.0, 0.0401482120582, 0.0492327626666, 0.0, 0.0, 0.0183150482147, -0.0101749858294, 0.0, 0.0, -0.010599713923, 0.00781437695206, 0.0, 0.0, 0.0131385983117, 0.00680096686655, 0.0, 0.0, 0.0120588237748, -0.0167647054967, 0.0, 0.0,
+
+L2_cTBSV_o_UT
+0.0107758624222, -0.0168103455277, 0.00311410265979, 0.00631053968203, 0.032587010556, -0.00425698008703, -0.00153183508691, -0.0219719620473, -0.00537692413934, 0.0312868772269, 0.0175754337602, 0.00799245167891, 0.0405093376863, -0.066211293269, -0.0208558827875, 0.0374816149145, 0.0130260264227, 0.0306344015019, 0.0277366008263, -0.0522187085669, -0.00759542985136, 0.0257206670428, 0.00081570054013, 0.0371714344833, 0.0625381443266, -0.0347489917981, -0.0186602658002, 0.0456345978187, -0.056762713099, -0.0264183776856, 0.113694688836, -0.0106486857358, -0.00394579174857, 0.0306984074336,
+
+L2_cTBSV_o_UH
+0.00474137957368, 0.0193965524628, 0.00579717127785, -0.00529349201093, -0.0226106221883, 0.0206642519306, 0.0318257100359, 0.0975223206475, 0.0166534523774, -0.116233475302, -0.135770263175, 0.16565388492, 0.202736408524, 0.103376761671, 0.116803981872, -0.0519517548223, -0.279127916407, 0.0231768208681, 0.290144026964, 0.0324505237072, -0.0578053165319, -0.0808542703641, -0.271488281928, 0.0207614697672, 0.371811030669, -0.0246061911088, -0.166638524348, -0.0532069993725, -0.275700502482, 0.329884735584, 0.403460613734, -0.36583428527, -0.101786598743, -0.0660282544249,
+
+L2_zTBSV_A_nn
+16.0, 36.0, 20.0, 28.0, 24.0, 28.0, 32.0, 36.0, 8.0, 36.0, 4.0, 32.0, 12.0, 24.0, 28.0, 4.0, 28.0, 4.0, 12.0, 4.0, 4.0, 28.0, 8.0, 24.0, 24.0, 24.0, 20.0, 4.0, 4.0, 36.0, 16.0, 32.0, 36.0, 24.0, 12.0, 12.0, 12.0, 32.0, 12.0, 16.0, 24.0, 4.0, 4.0, 20.0, 36.0, 20.0, 28.0, 12.0, 8.0, 24.0, 4.0, 36.0, 16.0, 24.0, 8.0, 20.0, 12.0, 4.0, 16.0, 16.0, 16.0, 4.0, 4.0, 36.0, 32.0, 8.0, 32.0, 24.0, 28.0, 20.0, 8.0, 28.0, 32.0, 36.0, 36.0, 12.0, 4.0, 20.0, 20.0, 4.0, 24.0, 16.0, 8.0, 12.0, 24.0, 24.0, 8.0, 36.0, 28.0, 24.0, 8.0, 12.0, 32.0, 36.0, 0.0, 0.0, 20.0, 20.0, 0.0, 0.0, 0.0, 0.0,
+
+L2_zTBSV_x_n1
+0.4, 0.9, 0.5, 0.3, 0.8, 0.4, 0.5, 0.7, 0.4, 0.7, 0.5, 0.9, 0.2, 0.3, 0.3, 0.3, 0.4, 0.5, 0.3, 0.4, 0.9, 0.1, 0.9, 0.4, 0.9, 0.1, 0.8, 0.3, 0.3, 0.1, 0.1, 0.1, 0.6, 0.6,
+
+L2_zTBSV_x_n2
+0.4, 0.9, 0.0, 0.0, 0.5, 0.3, 0.0, 0.0, 0.8, 0.4, 0.0, 0.0, 0.5, 0.7, 0.0, 0.0, 0.4, 0.7, 0.0, 0.0, 0.5, 0.9, 0.0, 0.0, 0.2, 0.3, 0.0, 0.0, 0.3, 0.3, 0.0, 0.0, 0.4, 0.5, 0.0, 0.0, 0.3, 0.4, 0.0, 0.0, 0.9, 0.1, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.9, 0.1, 0.0, 0.0, 0.8, 0.3, 0.0, 0.0, 0.3, 0.1, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.6, 0.6, 0.0, 0.0,
+
+L2_zTBSV_o_UN
+-0.0303491976507, 0.0174194805318, 0.00198090085122, -0.0263601890476, 0.0579679317513, 0.0234373289583, -0.0374976911197, -0.000551110000482, 0.0544761245615, -0.047320034403, -0.0254179925622, 0.0163230694833, 0.00384671971049, 0.0412456268004, 0.0898117521034, -0.100224851071, -0.0526903223032, -0.0142321284972, -0.00753561498054, 0.0200448147837, 0.0833845913799, 0.00426859064377, -0.00677397469904, 0.00712349520506, -0.00456335441747, -0.00156124600422, 0.0285650887574, -0.0412771203156, 0.0649358974359, 0.0396794871795, -0.0896153846154, 0.0119230769231, 0.03, 0.0,
+
+L2_zTBSV_o_UN2
+-0.0303491976507, 0.0174194805318, 0.0, 0.0, 0.00198090085122, -0.0263601890476, 0.0, 0.0, 0.0579679317513, 0.0234373289583, 0.0, 0.0, -0.0374976911197, -0.000551110000482, 0.0, 0.0, 0.0544761245615, -0.047320034403, 0.0, 0.0, -0.0254179925622, 0.0163230694833, 0.0, 0.0, 0.00384671971049, 0.0412456268004, 0.0, 0.0, 0.0898117521034, -0.100224851071, 0.0, 0.0, -0.0526903223032, -0.0142321284972, 0.0, 0.0, -0.00753561498054, 0.0200448147837, 0.0, 0.0, 0.0833845913799, 0.00426859064377, 0.0, 0.0, -0.00677397469904, 0.00712349520506, 0.0, 0.0, -0.00456335441747, -0.00156124600422, 0.0, 0.0, 0.0285650887574, -0.0412771203156, 0.0, 0.0, 0.0649358974359, 0.0396794871795, 0.0, 0.0, -0.0896153846154, 0.0119230769231, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0,
+
+L2_zTBSV_o_UT
+0.025, -1.73472347598e-18, -0.00620689655172, -0.00551724137931, -0.000229885057471, -0.00224137931034, 0.0505402298851, 0.065183908046, 0.0230890804598, -0.061096743295, 0.0193025862069, -0.0201588122605, -0.034269003569, 0.0893536136042, 0.00575986645551, -0.0822154806532, 0.0467456690144, 0.0269066507293, 0.0351707871565, 0.0173785787823, -0.000300785763599, -0.112526588686, -0.0683864158642, 0.0519193364986, 0.0969933562886, 0.00392134978096, -0.0262017626546, 0.0299591567626, -0.0220146187989, -0.0677913847312, 0.0257368831154, 0.150095331872, 0.0366549748027, -0.171808414224,
+
+L2_zTBSV_o_UH
+-0.0167525773196, 0.0185567010309, 0.0127337362247, -0.00255599004621, 0.0123960184856, 0.0218278232018, -0.00666844412845, 0.0441195639294, -0.0212142532686, -0.0305804893945, -0.0223302770865, 0.0124490460955, 0.0557413364971, 0.0381866081917, -0.0234870964854, -0.0383679305599, -0.0203951922942, 0.028563213097, -0.00669972139988, 0.0262478368596, 0.0478399123453, -0.0623068314466, 0.0251137801358, 0.0764698112914, -0.0456189069472, -0.0251444330777, 0.0121206191156, 0.0398841268684, 0.0319044363813, -0.0295576280198, -0.062839541545, 0.069665081223, 0.0554291824065, -0.059480119446,
+
+L2_sGER_A_mn
+0.7, 0.6, 0.2, 0.9, 0.8, 0.5, 0.6, 0.3, 0.2, 0.7, 0.2, 0.8, 0.9, 0.3, 0.1, 0.8, 0.4, 0.7, 0.5, 0.6, 0.3, 0.7, 0.2, 0.5, 0.1, 0.1, 0.5, 0.9, 0.8, 0.6, 0.4, 0.4, 0.8, 0.8, 0.1, 0.5, 0.4, 0.6, 0.1, 0.5, 0.3, 0.7, 0.2, 0.4, 0.2, 0.2, 0.5, 0.6, 0.2, 0.4, 0.9, 0.7, 0.2, 0.4, 0.9, 0.2, 0.4, 0.9, 0.5, 0.6, 0.9, 0.4, 0.5, 0.8, 0.6, 0.8, 0.6, 0.9, 0.6, 0.9, 0.8, 0.7, 0.6, 0.9, 0.9, 0.8, 0.5, 0.4, 0.5, 0.9, 0.7, 0.3, 0.7, 0.6, 0.8, 0.2, 0.3, 0.7, 0.3, 0.9, 0.3, 0.2, 0.6, 0.9, 0.3, 0.8, 0.8, 0.8, 0.4, 0.6, 0.7, 0.2, 0.2, 0.3, 0.1, 0.5, 0.8, 0.9, 0.4, 0.2, 0.8, 0.8, 0.2, 0.3, 0.8, 0.8, 0.8, 0.5, 0.3, 0.2, 0.8, 0.4, 0.8, 0.8, 0.7, 0.6, 0.2, 0.4, 0.9, 0.8, 0.7, 0.7, 0.6, 0.1, 0.4, 0.8, 0.3, 0.9, 0.8, 0.4, 0.5, 0.8, 0.7, 0.1, 0.4, 0.4, 0.9, 0.4, 0.7, 0.1, 0.5, 0.2, 0.3, 0.6, 0.2, 0.4, 0.4, 0.7, 0.9, 0.3, 0.6, 0.2, 0.5, 0.1, 0.8, 0.1, 0.1, 0.7, 0.2, 0.8,
+
+L2_sGER_x_m1
+0.5, 0.3, 0.3, 0.4, 0.9, 0.7, 0.4, 0.1, 0.9, 0.7,
+
+L2_sGER_x_m2
+0.5, 0.0, 0.3, 0.0, 0.3, 0.0, 0.4, 0.0, 0.9, 0.0, 0.7, 0.0, 0.4, 0.0, 0.1, 0.0, 0.9, 0.0, 0.7, 0.0,
+
+L2_sGER_y_n1
+0.6, 0.2, 0.5, 0.4, 0.3, 0.3, 0.1, 0.4, 0.7, 0.2, 0.2, 0.7, 0.1, 0.2, 0.4, 0.9, 0.2,
+
+L2_sGER_y_n2
+0.6, 0.0, 0.0, 0.2, 0.0, 0.0, 0.5, 0.0, 0.0, 0.4, 0.0, 0.0, 0.3, 0.0, 0.0, 0.3, 0.0, 0.0, 0.1, 0.0, 0.0, 0.4, 0.0, 0.0, 0.7, 0.0, 0.0, 0.2, 0.0, 0.0, 0.2, 0.0, 0.0, 0.7, 0.0, 0.0, 0.1, 0.0, 0.0, 0.2, 0.0, 0.0, 0.4, 0.0, 0.0, 0.9, 0.0, 0.0, 0.2, 0.0, 0.0,
+
+L2_sGER_o_N
+1.0, 0.700000025332, 0.45000000298, 1.09999997914, 0.950000017881, 0.65000000596, 0.650000024587, 0.500000014901, 0.54999999702, 0.799999989569, 0.30000000447, 1.15000000596, 0.949999976903, 0.400000013411, 0.30000000447, 1.25, 0.500000007451, 0.880000002384, 0.560000003278, 0.750000029802, 0.420000018477, 0.789999995232, 0.290000010133, 0.530000001639, 0.220000008047, 0.310000006258, 0.560000003278, 0.959999979436, 1.01000001669, 0.630000025481, 0.460000009239, 0.520000012517, 1.0700000155, 0.860000015199, 0.280000015795, 0.560000003278, 0.550000011921, 0.720000030398, 0.190000008643, 0.590000007153, 0.33000001356, 0.819999994636, 0.410000007749, 0.460000009239, 0.260000006258, 0.410000007749, 0.530000001639, 0.66000002712, 0.320000009537, 0.670000009537, 0.959999979436, 0.940000001192, 0.280000005364, 0.600000008941, 1.05999998093, 0.320000009537, 0.520000012517, 0.93999997735, 0.660000004768, 0.880000023246, 0.979999978542, 0.480000008345, 0.779999999404, 0.840000013113, 0.680000026226, 0.960000016689, 0.96000001967, 0.979999978542, 1.14000003099, 1.07999997407, 1.25, 1.05999998391, 0.870000027418, 1.16999997973, 0.989999975115, 1.16000000775, 1.12999997258, 0.580000003874, 0.679999997914, 1.52999994874, 0.789999987036, 0.480000009835, 1.05999998391, 1.40999998093, 0.980000009835, 0.620000012517, 0.440000011623, 1.04999998212, 0.580000011325, 1.10999998093, 0.510000016689, 0.270000002831, 0.880000023246, 1.38999995947, 0.440000011623, 0.940000011623, 1.28999999523, 0.870000011772, 0.540000005662, 0.880000023246, 1.32999996066, 0.340000002682, 0.440000016093, 0.380000014305, 0.30000000447, 0.660000004768, 0.920000018477, 1.01999998271, 0.440000007153, 0.360000007749, 1.08000001132, 0.880000014305, 0.280000005364, 0.580000011325, 0.840000013113, 0.880000014305, 0.960000016689, 0.859999995828, 0.380000014305, 0.260000006258, 0.820000012517, 0.450000006706, 0.840000013113, 0.83000001356, 0.729999989718, 0.61000002414, 0.240000004172, 0.470000005811, 0.919999976754, 0.820000012517, 0.76999998793, 0.709999988377, 0.620000024438, 0.140000002682, 0.490000004917, 0.820000012517, 0.840000019073, 1.07999997407, 1.25, 0.760000001788, 0.770000003576, 1.0700000155, 0.789999987036, 0.459999997318, 1.02999997854, 0.580000003874, 1.07999997407, 1.02999997854, 0.789999987036, 0.279999999404, 0.859999995828, 1.00999996006, 0.480000009835, 1.02000003338, 0.340000002682, 0.75, 0.680000005364, 0.909999992847, 1.10999998093, 0.370000011772, 0.880000023246, 0.689999986291, 0.639999999702, 0.240000001192, 1.28999999523, 0.170000001341, 0.240000001192, 0.979999987483, 0.829999975562, 0.940000011623,
+
+L2_dGER_A_mn
+0.9, 0.4, 0.9, 0.9, 0.2, 0.3, 0.7, 0.5, 0.6, 0.1, 0.5, 0.1, 0.9, 0.5, 0.2, 0.5, 0.4, 0.1, 0.3, 0.3, 0.9, 0.6, 0.4, 0.3, 0.8, 0.4, 0.4, 0.1, 0.6, 0.2, 0.3, 0.9, 0.5, 0.2, 0.1, 0.7, 0.8, 0.8, 0.6, 0.1, 0.9, 0.4, 0.8, 0.9, 0.3, 0.9, 0.6, 0.4, 0.3, 0.6, 0.1, 0.6, 0.4, 0.2, 0.8, 0.2, 0.3, 0.8, 0.5, 0.2, 0.7, 0.5, 0.1, 0.2, 0.4, 0.7, 0.2, 0.7, 0.8, 0.2, 0.7, 0.4, 0.8, 0.5, 0.1, 0.2, 0.3, 0.6, 0.2, 0.8, 0.9, 0.6, 0.8, 0.5, 0.1, 0.7, 0.1, 0.2, 0.9, 0.6, 0.2, 0.6, 0.5, 0.5, 0.9, 0.5, 0.3, 0.5, 0.8, 0.8, 0.7, 0.1, 0.5, 0.8, 0.7, 0.8, 0.1, 0.8, 0.5, 0.6, 0.5, 0.7, 0.1, 0.6, 0.3, 0.1, 0.5, 0.7, 0.4, 0.6, 0.9, 0.6, 0.1, 0.1, 0.6, 0.9, 0.4, 0.4, 0.6, 0.3, 0.5, 0.4, 0.4, 0.2, 0.6, 0.6, 0.3, 0.7, 0.9, 0.2, 0.9, 0.6, 0.9, 0.7, 0.7, 0.8, 0.6, 0.9, 0.7, 0.2, 0.3, 0.5, 0.5, 0.5, 0.6, 0.8, 0.9, 0.6, 0.9, 0.1, 0.8, 0.2, 0.1, 0.5, 0.9, 0.1, 0.4, 0.7, 0.5, 0.7,
+
+L2_dGER_x_m1
+0.5, 0.2, 0.1, 0.3, 0.6, 0.6, 0.1, 0.1, 0.4, 0.6,
+
+L2_dGER_x_m2
+0.5, 0.0, 0.2, 0.0, 0.1, 0.0, 0.3, 0.0, 0.6, 0.0, 0.6, 0.0, 0.1, 0.0, 0.1, 0.0, 0.4, 0.0, 0.6, 0.0,
+
+L2_dGER_y_n1
+0.1, 0.3, 0.7, 0.8, 0.1, 0.2, 0.4, 0.9, 0.4, 0.7, 0.7, 0.6, 0.6, 0.6, 0.8, 0.4, 0.2,
+
+L2_dGER_y_n2
+0.1, 0.0, 0.0, 0.3, 0.0, 0.0, 0.7, 0.0, 0.0, 0.8, 0.0, 0.0, 0.1, 0.0, 0.0, 0.2, 0.0, 0.0, 0.4, 0.0, 0.0, 0.9, 0.0, 0.0, 0.4, 0.0, 0.0, 0.7, 0.0, 0.0, 0.7, 0.0, 0.0, 0.6, 0.0, 0.0, 0.6, 0.0, 0.0, 0.6, 0.0, 0.0, 0.8, 0.0, 0.0, 0.4, 0.0, 0.0, 0.2, 0.0, 0.0,
+
+L2_dGER_o_N
+0.95, 0.55, 1.25, 1.3, 0.25, 0.4, 0.9, 0.95, 0.8, 0.45, 0.85, 0.4, 1.2, 0.8, 0.6, 0.7, 0.5, 0.12, 0.36, 0.44, 1.06, 0.62, 0.44, 0.38, 0.98, 0.48, 0.54, 0.24, 0.72, 0.32, 0.42, 1.06, 0.58, 0.24, 0.11, 0.73, 0.87, 0.88, 0.61, 0.12, 0.94, 0.49, 0.84, 0.97, 0.37, 0.96, 0.66, 0.46, 0.38, 0.64, 0.12, 0.63, 0.49, 0.41, 1.04, 0.23, 0.36, 0.92, 0.77, 0.32, 0.91, 0.71, 0.28, 0.38, 0.58, 0.94, 0.32, 0.76, 0.86, 0.38, 1.12, 0.88, 0.86, 0.62, 0.34, 0.74, 0.54, 1.02, 0.62, 1.16, 1.26, 0.96, 1.28, 0.74, 0.22, 0.76, 0.28, 0.62, 1.38, 0.66, 0.32, 0.84, 1.04, 0.74, 1.32, 0.92, 0.66, 0.86, 1.16, 1.28, 0.94, 0.22, 0.51, 0.83, 0.77, 0.88, 0.11, 0.82, 0.54, 0.69, 0.54, 0.77, 0.17, 0.66, 0.36, 0.16, 0.58, 0.74, 0.42, 0.61, 0.93, 0.67, 0.18, 0.11, 0.62, 0.94, 0.49, 0.44, 0.67, 0.37, 0.56, 0.46, 0.46, 0.28, 0.64, 0.62, 0.34, 0.82, 1.18, 0.52, 0.94, 0.68, 1.06, 1.06, 0.86, 1.08, 0.88, 1.14, 0.94, 0.44, 0.62, 0.66, 0.58, 0.56, 0.78, 1.22, 1.38, 0.66, 1.02, 0.34, 1.34, 0.44, 0.52, 0.92, 1.26, 0.46, 0.76, 1.18, 0.74, 0.82,
+
+L2_cGERU_A_mn
+0.5, 0.699999988079, 0.20000000298, 0.699999988079, 0.300000011921, 0.600000023842, 0.20000000298, 0.300000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.10000000149, 0.800000011921, 0.5, 0.40000000596, 0.899999976158, 0.899999976158, 0.699999988079, 0.20000000298, 0.699999988079, 0.899999976158, 0.600000023842, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.899999976158, 0.600000023842, 0.5, 0.5, 0.5, 0.300000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.600000023842, 0.40000000596, 0.40000000596, 0.5, 0.800000011921, 0.800000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.5, 0.899999976158, 0.699999988079, 0.300000011921, 0.10000000149, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.40000000596, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.899999976158, 0.300000011921, 0.5, 0.40000000596, 0.600000023842, 0.600000023842, 0.10000000149, 0.300000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.600000023842, 0.600000023842, 0.300000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.600000023842, 0.699999988079, 0.899999976158, 0.40000000596, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.699999988079, 0.300000011921, 0.20000000298, 0.20000000298, 0.5, 0.40000000596, 0.800000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.699999988079, 0.20000000298, 0.40000000596, 0.800000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.800000011921, 0.899999976158, 0.40000000596, 0.699999988079, 0.300000011921, 0.300000011921, 0.800000011921, 0.5, 0.800000011921, 0.40000000596, 0.5, 0.600000023842, 0.800000011921, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.5, 0.600000023842, 0.800000011921, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.699999988079, 0.800000011921, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.800000011921, 0.40000000596, 0.40000000596, 0.300000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.300000011921, 0.40000000596, 0.899999976158, 0.40000000596, 0.600000023842, 0.5, 0.800000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.10000000149, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.899999976158, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.600000023842, 0.40000000596, 0.10000000149, 0.40000000596, 0.800000011921, 0.899999976158, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.699999988079, 0.899999976158, 0.5, 0.899999976158, 0.600000023842, 0.40000000596, 0.10000000149, 0.300000011921, 0.600000023842, 0.699999988079, 0.40000000596, 0.20000000298, 0.899999976158, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.5, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.20000000298, 0.800000011921, 0.10000000149, 0.40000000596, 0.5, 0.300000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.300000011921, 0.300000011921, 0.300000011921, 0.10000000149, 0.20000000298, 0.20000000298, 0.699999988079, 0.20000000298, 0.10000000149, 0.600000023842, 0.5, 0.20000000298, 0.5, 0.600000023842, 0.899999976158, 0.40000000596, 0.899999976158, 0.699999988079, 0.300000011921, 0.300000011921, 0.300000011921, 0.20000000298, 0.5, 0.20000000298, 0.40000000596, 0.5, 0.10000000149, 0.899999976158, 0.699999988079, 0.10000000149, 0.600000023842, 0.40000000596, 0.600000023842, 0.40000000596, 0.20000000298, 0.300000011921, 0.10000000149, 0.800000011921, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.699999988079, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.5, 0.40000000596, 0.699999988079, 0.300000011921, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.5, 0.600000023842, 0.10000000149, 0.600000023842, 0.10000000149, 0.5, 0.800000011921, 0.600000023842, 0.300000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.600000023842, 0.800000011921, 0.899999976158, 0.5, 0.699999988079, 0.300000011921, 0.699999988079, 0.699999988079, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.699999988079, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.20000000298, 0.10000000149, 0.40000000596, 0.5, 0.699999988079, 0.699999988079, 0.5, 0.600000023842, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.600000023842, 0.800000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.20000000298, 0.40000000596, 0.600000023842, 0.600000023842, 0.600000023842, 0.600000023842, 0.10000000149, 0.40000000596, 0.40000000596, 0.699999988079, 0.300000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.40000000596, 0.899999976158,
+
+L2_cGERU_x_m1
+0.5, 0.800000011921, 0.699999988079, 0.5, 0.10000000149, 0.40000000596, 0.20000000298, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.40000000596, 0.5, 0.5, 0.800000011921, 0.300000011921, 0.20000000298, 0.5, 0.5, 0.20000000298,
+
+L2_cGERU_x_m2
+0.5, 0.800000011921, 0.0, 0.0, 0.699999988079, 0.5, 0.0, 0.0, 0.10000000149, 0.40000000596, 0.0, 0.0, 0.20000000298, 0.10000000149, 0.0, 0.0, 0.800000011921, 0.899999976158, 0.0, 0.0, 0.800000011921, 0.40000000596, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.5, 0.20000000298, 0.0, 0.0,
+
+L2_cGERU_y_n1
+0.10000000149, 0.300000011921, 0.10000000149, 0.5, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.600000023842, 0.5, 0.10000000149, 0.5, 0.40000000596, 0.5, 0.5, 0.699999988079, 0.10000000149, 0.5, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.40000000596, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.5, 0.20000000298, 0.300000011921, 0.20000000298, 0.300000011921,
+
+L2_cGERU_y_n2
+0.10000000149, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.5, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.5, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.5, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.5, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.0, 0.0,
+
+L2_cGERU_o_N
+0.309999987632, 0.929999996424, -0.150000002235, 1.02999999046, -0.159999985397, 1.11000002265, -0.150000002235, 0.630000014305, 0.300000011921, 1.63000000238, -0.150000002235, 0.430000003874, 0.600000008941, 1.07000000954, 0.0900000071526, 1.64999997616, 0.549999970943, 1.02999999046, -0.0900000220537, 1.65999999285, 0.719999961853, 1.38000006199, 0.629999978542, 1.11999999762, 0.469999991655, 0.640000026524, 1.10999995112, 1.47000002146, 0.40000000596, 1.23000002623, 0.359999988377, 0.61000002265, 0.759999964535, 1.11000002265, 0.819999970049, 0.860000029355, 0.220000005811, 0.800000000745, 0.290000005662, 1.38999999672, 0.620000011772, 1.09999998286, 0.370000012517, 1.34999999404, 0.319999999851, 1.29999997094, 0.729999987483, 0.850000008941, 0.10000000149, 1.43999997139, -0.0799999986589, 0.800000000745, 0.18999997884, 1.00999999434, 0.520000003576, 1.12000002742, 1.02999999344, 1.0299999994, 0.510000016689, 1.27000000358, 1.37999994278, 0.960000004768, 0.670000009537, 1.05000001192, 0.590000017583, 0.9100000301, 0.0899999952316, 0.610000018179, 0.0899999967217, 0.76999999091, 0.210000003278, 0.690000025779, 0.340000025034, 0.450000014156, 0.709999973476, 0.989999978095, -0.0399999982119, 0.990000001937, 0.509999985397, 0.789999990016, 0.339999998212, 0.610000011474, 0.370000025183, 0.96999999091, 0.709999973476, 0.490000007898, 0.350000014156, 0.460000003278, 0.0199999931455, 1.10000002831, 0.330000000149, 0.6, 0.289999988526, 0.879999997914, 0.270000004321, 0.590000000447, 0.0600000032783, 0.790000013858, 0.3, 0.910000015944, 0.500000017881, 0.710000027865, 0.889999975115, 0.769999991655, 0.170000002831, 0.510000007749, 0.770000013262, 0.76000002414, 0.0700000013411, 0.809999989867, 0.870000017732, 1.05999998093, 0.370000005811, 0.809999989867, 0.33000001356, 0.440000014603, 0.83000001356, 0.690000000447, 0.770000011772, 0.510000007749, 0.559999997318, 0.830000028461, 0.860000015199, 0.780000033677, 0.639999996722, 0.370000004321, 0.20000000298, 0.650000008196, 0.750000020117, 0.950000014156, 0.570000005811, 0.560000010729, 0.110000001043, 0.180000005364, 0.709999987632, 0.880000015795, 0.309999998808, 1.22999998823, 0.330000002384, 0.990000004917, 0.330000044107, 1.14000000268, 0.0300000202656, 0.790000016838, 0.930000014305, 1.0400000146, -0.069999973774, 0.790000016838, 0.270000027418, 1.65999997795, 0.170000039339, 1.61000001073, 0.130000014305, 1.29000001684, 0.140000019073, 2.16999996781, 0.140000022054, 1.12000003487, 0.459999997318, 1.62999996662, -0.0999999910593, 0.950000032783, 1.14999997616, 1.94999994636, 0.530000038147, 1.24000002503, 0.78999997735, 0.820000016987, 0.490000025034, 0.820000016987, 0.0599999973178, 0.680000020266, 0.680000011325, 1.33999998331, -0.0199999931455, 1.33999998927, 0.480000023246, 0.840000013113, 0.980000011325, 1.53999999523, 0.379999999404, 1.33999998331, 0.720000030398, 0.960000016689, 0.220000008047, 1.06000001371, 0.480000023246, 1.13999999523, 0.639999995232, 1.12000002146, 1.13999998927, 1.32000006318, 0.859999998808, 0.780000006855, 0.5, 1.4000000447, 1.29999997318, 0.900000020862, 1.1799999994, 1.34000000715, 0.539999998212, 0.420000016987, 0.840000010133, 0.620000027418, 0.500000018626, 1.09999998286, 0.200000006706, 0.500000003725, 0.550000019372, 0.54999999702, 0.200000006706, 0.800000000745, 0.350000023842, 1.15000003576, 0.600000012666, 0.999999988824, 0.250000014901, 0.750000014901, 0.200000017881, 0.69999999553, 3.72529029846e-09, 0.500000003725, 0.649999976158, 0.95000000298, 0.10000000149, 1.20000004768, 0.749999985099, 0.84999999404, 0.34999999404, 1.05000004172, 1.19999995828, 1.0, 0.949999988079, 1.25, 0.250000007451, 0.550000019372, 0.250000007451, 0.450000010431, 0.489999995232, 0.470000017732, 0.330000002384, 0.9300000076, 0.0500000014901, 1.51999997824, 0.629999984503, 0.53000000909, 0.930000044107, 0.980000026226, 0.530000020266, 0.83000001356, 0.370000006557, 0.820000024438, 0.290000002682, 1.51000001669, 0.629999984503, 1.12999999568, 0.819999985695, 1.2500000298, 1.0, 0.760000042021, 0.699999986589, 1.19000003695, 0.66000002265, 1.07000003338, 1.02999999046, 1.21000000477, 0.630000032187, 1.08000002027, 0.569999997616, 1.10000002831, 0.769999985695, 0.800000016391, 0.470000018477, 0.210000005513, 0.370000024438, 0.250000003725, 0.190000007153, 1.04000001311, 0.370000024438, 0.450000014156, 0.170000018477, 0.600000016391, 0.370000024438, 1.04999997839, 0.430000026226, 1.10000001639, 0.649999983609, 0.889999999702, 0.469999988675, 0.450000014156, 0.439999981821, 1.20999998689, 0.120000006557, 0.720000030398, 0.280000006855, 0.830000002384, 0.159999997318, 0.870000036359, 0.830000003874, 1.20999997944, 0.569999994636, 0.600000016391, -0.0100000032783, 0.260000006258, 0.0899999982119, 0.260000006258, 0.390000003427, 0.670000006557, 0.649999987334, 0.969999988675, 0.460000001788, 0.990000019073, 0.550000023097, 0.670000006557, 0.800000034273, 1.06999999464, 0.550000023097, 1.07000001252, 0.999999977648, 1.22999997854, 0.410000012219, 0.94999999553, 0.849999975413, 1.16999997675, 0.389999992251, 0.940000011623, 0.780000029206, 1.02000004232, 0.970000009537, 0.980000024736, 0.130000000894, 0.76000002116, 0.789999990761, 1.02999999195, 0.500000022352, 0.670000018477, 0.93999997437, 0.390000010133, 0.440000004172, 1.08999998331,
+
+L2_zGERU_A_mn
+0.1, 0.1, 0.6, 0.4, 0.9, 0.9, 0.1, 0.5, 0.4, 0.4, 0.5, 0.5, 0.5, 0.4, 0.6, 0.4, 0.3, 0.9, 0.2, 0.8, 0.3, 0.9, 0.1, 0.6, 0.7, 0.8, 0.3, 0.6, 0.7, 0.1, 0.7, 0.1, 0.7, 0.4, 0.5, 0.8, 0.7, 0.7, 0.7, 0.2, 0.1, 0.7, 0.2, 0.7, 0.7, 0.6, 0.8, 0.7, 0.2, 0.2, 0.8, 0.8, 0.6, 0.3, 0.3, 0.9, 0.8, 0.8, 0.1, 0.4, 0.8, 0.6, 0.7, 0.2, 0.2, 0.1, 0.1, 0.6, 0.7, 0.6, 0.3, 0.8, 0.5, 0.9, 0.1, 0.2, 0.6, 0.1, 0.1, 0.3, 0.7, 0.6, 0.1, 0.6, 0.8, 0.6, 0.5, 0.5, 0.6, 0.1, 0.2, 0.9, 0.5, 0.1, 0.8, 0.7, 0.6, 0.6, 0.9, 0.2, 0.7, 0.6, 0.4, 0.4, 0.3, 0.6, 0.4, 0.8, 0.6, 0.5, 0.2, 0.3, 0.1, 0.6, 0.2, 0.5, 0.6, 0.8, 0.9, 0.1, 0.1, 0.2, 0.1, 0.9, 0.9, 0.4, 0.9, 0.2, 0.4, 0.5, 0.3, 0.7, 0.6, 0.4, 0.3, 0.4, 0.1, 0.4, 0.6, 0.5, 0.9, 0.3, 0.2, 0.9, 0.6, 0.4, 0.7, 0.1, 0.2, 0.2, 0.7, 0.2, 0.9, 0.6, 0.9, 0.1, 0.9, 0.6, 0.5, 0.9, 0.1, 0.5, 0.3, 0.5, 0.4, 0.4, 0.2, 0.5, 0.4, 0.3, 0.2, 0.7, 0.1, 0.8, 0.1, 0.8, 0.9, 0.9, 0.4, 0.5, 0.1, 0.3, 0.1, 0.4, 0.2, 0.9, 0.9, 0.7, 0.2, 0.5, 0.6, 0.7, 0.8, 0.1, 0.9, 0.3, 0.8, 0.2, 0.4, 0.6, 0.3, 0.9, 0.2, 0.8, 0.4, 0.5, 0.3, 0.1, 0.5, 0.3, 0.8, 0.8, 0.2, 0.4, 0.7, 0.1, 0.2, 0.4, 0.6, 0.8, 0.8, 0.7, 0.2, 0.8, 0.6, 0.4, 0.5, 0.4, 0.4, 0.6, 0.4, 0.6, 0.3, 0.5, 0.2, 0.3, 0.2, 0.1, 0.2, 0.5, 0.5, 0.5, 0.1, 0.9, 0.1, 0.7, 0.8, 0.7, 0.9, 0.4, 0.4, 0.4, 0.1, 0.4, 0.4, 0.4, 0.7, 0.4, 0.7, 0.6, 0.9, 0.9, 0.2, 0.4, 0.4, 0.4, 0.4, 0.6, 0.8, 0.1, 0.1, 0.9, 0.6, 0.4, 0.6, 0.4, 0.8, 0.1, 0.4, 0.6, 0.1, 0.8, 0.2, 0.7, 0.4, 0.3, 0.9, 0.9, 0.1, 0.4, 0.7, 0.9, 0.7, 0.6, 0.6, 0.5, 0.8, 0.4, 0.1, 0.1, 0.7, 0.4, 0.6, 0.8, 0.7, 0.7, 0.8, 0.1, 0.7, 0.8, 0.8, 0.9, 0.8, 0.8, 0.6, 0.9, 0.1, 0.9, 0.6, 0.9, 0.2, 0.1, 0.8, 0.4, 0.5, 0.8, 0.3, 0.3, 0.7, 0.5, 0.4, 0.8, 0.4, 0.5, 0.9, 0.8, 0.4, 0.7, 0.9, 0.7,
+
+L2_zGERU_x_m1
+0.4, 0.6, 0.8, 0.7, 0.4, 0.6, 0.5, 0.8, 0.4, 0.1, 0.1, 0.2, 0.4, 0.4, 0.1, 0.4, 0.9, 0.1, 0.7, 0.7,
+
+L2_zGERU_x_m2
+0.4, 0.6, 0.0, 0.0, 0.8, 0.7, 0.0, 0.0, 0.4, 0.6, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0, 0.4, 0.1, 0.0, 0.0, 0.1, 0.2, 0.0, 0.0, 0.4, 0.4, 0.0, 0.0, 0.1, 0.4, 0.0, 0.0, 0.9, 0.1, 0.0, 0.0, 0.7, 0.7, 0.0, 0.0,
+
+L2_zGERU_y_n1
+0.4, 0.2, 0.8, 0.2, 0.9, 0.9, 0.7, 0.2, 0.6, 0.6, 0.3, 0.9, 0.8, 0.5, 0.1, 0.4, 0.8, 0.1, 0.6, 0.1, 0.6, 0.9, 0.1, 0.2, 0.6, 0.3, 0.6, 0.2, 0.3, 0.2, 0.5, 0.5, 0.6, 0.8,
+
+L2_zGERU_y_n2
+0.4, 0.2, 0.0, 0.0, 0.0, 0.0, 0.8, 0.2, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.0, 0.0, 0.0, 0.0, 0.7, 0.2, 0.0, 0.0, 0.0, 0.0, 0.6, 0.6, 0.0, 0.0, 0.0, 0.0, 0.3, 0.9, 0.0, 0.0, 0.0, 0.0, 0.8, 0.5, 0.0, 0.0, 0.0, 0.0, 0.1, 0.4, 0.0, 0.0, 0.0, 0.0, 0.8, 0.1, 0.0, 0.0, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.0, 0.0, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.0, 0.0, 0.0, 0.0, 0.6, 0.3, 0.0, 0.0, 0.0, 0.0, 0.6, 0.2, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.6, 0.8, 0.0, 0.0, 0.0, 0.0,
+
+L2_zGERU_o_N
+0.14, 0.42, 0.8, 0.96, 0.72, 1.8, 0.26, 1.0, 0.28, 1.0, 0.08, 1.04, 0.52, 1.08, 0.4, 0.62, 0.56, 1.42, 0.38, 1.2, -5.55111512313e-17, 1.62, 0.02, 0.74, 0.76, 1.28, 0.42, 1.04, 0.7, 0.36, 0.6, 0.6, 0.46, 1.08, 0.68, 1.24, 1.2, 1.42, 0.79, 1.55, 0.52, 1.35, 0.26, 1.6, 0.31, 1.53, 1.09, 1.66, 5.55111512313e-17, 0.59, 1.37, 1.44, 1.01, 0.8, 0.15, 2.04, 0.74, 1.03, 0.37, 1.06, 1.14, 1.18, 0.8, 0.57, 0.25, 0.85, 0.02, 1.66, 0.74, 0.92, 0.5, 1.36, 0.32, 1.8, 0.26, 0.7, 0.48, 0.7, -0.32, 0.84, 0.72, 1.28, -0.1, 0.82, 1.06, 1.12, 0.68, 0.9, 0.3, 0.82, 0.12, 1.04, 0.56, 0.58, 0.92, 1.14, 0.6, 0.86, 0.8, 0.7, 0.46, 1.28, 0.44, 0.82, 0.54, 1.34, 0.13, 1.97, 0.79, 1.16, 0.02, 1.08, -0.47, 1.29, 0.2, 1.39, 0.33, 1.08, 1.22, 0.79, 0.32, 0.73, -0.32, 1.83, 0.79, 0.58, 0.96, 0.83, 0.54, 1.08, 0.29, 1.04, 0.45, 1.05, -0.04, 1.28, 0.24, 0.52, 0.9, 0.66, 1.17, 0.75, 0.46, 1.05, 0.78, 0.7, 0.73, 0.49, 0.47, 0.48, 0.7, 0.37, 1.21, 0.72, 1.13, 0.2, 1.05, 1.02, 0.52, 0.99, 0.31, 0.68, 0.52, 0.64, 0.5, 0.51, 0.35, 0.75, 0.56, 0.68, 0.2, 0.8, 0.14, 0.98, 0.01, 1.07, 0.93, 1.06, 0.34, 0.68, -0.05, 0.45, 0.08, 0.61, 0.13, 0.96, 0.96, 0.87, 0.24, 0.63, 0.48, 0.91, 0.77, 0.14, 0.9, 0.45, 0.82, 0.34, 0.39, 0.68, 0.25, 1.05, 0.1, 1.0, 0.48, 0.74, 0.54, 0.5, 0.5, 1.02, 1.0, 1.16, 0.2, 0.88, 0.46, 0.58, 0.32, 0.92, 0.48, 1.0, 1.08, 1.06, 0.4, 1.08, 0.48, 1.0, 0.46, 0.52, 0.52, 0.96, 0.56, 0.92, 0.34, 0.7, 0.2, 0.7, 0.12, 0.66, 0.16, 0.68, 0.5, 0.84, -0.17, 1.35, 0.09, 1.0, 0.62, 1.0, 0.57, 0.61, 0.28, 0.77, -0.05, 0.48, 0.44, 0.73, 0.72, 0.65, 0.4, 0.93, 0.83, 0.96, 0.14, 0.67, 0.38, 0.66, 0.35, 0.74, 0.65, 0.35, -0.16, 1.22, 0.94, 0.62, 1.3, 0.66, 1.52, 1.0, 1.01, 0.85, 0.58, 1.4, 0.38, 1.54, 1.07, 0.83, 0.95, 1.27, 0.81, 0.57, 1.23, 1.05, 1.15, 1.47, 0.67, 0.69, 1.31, 0.73, 0.62, 0.34, 0.95, 0.61, 1.0, 1.3, 1.16, 1.48, 0.94, 0.52, 1.12, 1.5, 0.8, 2.16, 1.15, 1.43, 0.6, 1.74, -0.32, 1.74, 0.81, 1.81, -0.01, 0.45, 1.29, 1.03, 0.85, 1.29, 0.09, 1.35, 0.63, 0.71, 0.61, 1.43, 0.68, 1.06, 0.97, 1.15, 0.4, 1.4, 0.76, 1.68,
+
+L2_cGERC_A_mn
+0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.40000000596, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.40000000596, 0.300000011921, 0.40000000596, 0.699999988079, 0.699999988079, 0.899999976158, 0.699999988079, 0.800000011921, 0.600000023842, 0.300000011921, 0.5, 0.300000011921, 0.5, 0.300000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.699999988079, 0.899999976158, 0.600000023842, 0.699999988079, 0.5, 0.10000000149, 0.600000023842, 0.300000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.899999976158, 0.40000000596, 0.300000011921, 0.40000000596, 0.300000011921, 0.300000011921, 0.800000011921, 0.5, 0.20000000298, 0.300000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.40000000596, 0.300000011921, 0.899999976158, 0.800000011921, 0.40000000596, 0.20000000298, 0.300000011921, 0.40000000596, 0.10000000149, 0.300000011921, 0.600000023842, 0.600000023842, 0.40000000596, 0.800000011921, 0.600000023842, 0.600000023842, 0.300000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.10000000149, 0.800000011921, 0.5, 0.600000023842, 0.600000023842, 0.40000000596, 0.699999988079, 0.5, 0.5, 0.600000023842, 0.600000023842, 0.699999988079, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.899999976158, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.899999976158, 0.10000000149, 0.699999988079, 0.5, 0.20000000298, 0.899999976158, 0.5, 0.40000000596, 0.20000000298, 0.10000000149, 0.20000000298, 0.899999976158, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.40000000596, 0.40000000596, 0.800000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.10000000149, 0.5, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.699999988079, 0.10000000149, 0.40000000596, 0.300000011921, 0.5, 0.800000011921, 0.40000000596, 0.40000000596, 0.10000000149, 0.699999988079, 0.10000000149, 0.5, 0.300000011921, 0.5, 0.600000023842, 0.40000000596, 0.699999988079, 0.800000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.40000000596, 0.20000000298, 0.10000000149, 0.20000000298, 0.5, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.5, 0.800000011921, 0.20000000298, 0.40000000596, 0.10000000149, 0.10000000149, 0.600000023842, 0.899999976158, 0.10000000149, 0.800000011921, 0.899999976158, 0.5, 0.20000000298, 0.5, 0.300000011921, 0.5, 0.10000000149, 0.10000000149, 0.600000023842, 0.40000000596, 0.899999976158, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.300000011921, 0.20000000298, 0.10000000149, 0.300000011921, 0.5, 0.5, 0.899999976158, 0.600000023842, 0.300000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.20000000298, 0.899999976158, 0.699999988079, 0.899999976158, 0.5, 0.800000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.300000011921, 0.5, 0.300000011921, 0.600000023842, 0.10000000149, 0.40000000596, 0.5, 0.800000011921, 0.899999976158, 0.600000023842, 0.300000011921, 0.899999976158, 0.300000011921, 0.600000023842, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.40000000596, 0.40000000596, 0.300000011921, 0.5, 0.20000000298, 0.899999976158, 0.600000023842, 0.800000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.600000023842, 0.40000000596, 0.20000000298, 0.699999988079, 0.600000023842, 0.899999976158, 0.10000000149, 0.5, 0.899999976158, 0.600000023842, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.899999976158, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.899999976158, 0.40000000596, 0.5, 0.20000000298, 0.800000011921, 0.300000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.5, 0.899999976158, 0.699999988079, 0.10000000149, 0.5, 0.800000011921, 0.699999988079, 0.600000023842, 0.600000023842, 0.699999988079, 0.20000000298, 0.699999988079, 0.800000011921, 0.699999988079, 0.10000000149, 0.5, 0.800000011921, 0.40000000596, 0.899999976158, 0.899999976158, 0.699999988079, 0.600000023842, 0.600000023842, 0.20000000298, 0.300000011921, 0.40000000596, 0.600000023842, 0.699999988079, 0.20000000298, 0.699999988079, 0.5, 0.699999988079, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.20000000298, 0.5, 0.899999976158, 0.600000023842, 0.600000023842, 0.5, 0.699999988079, 0.40000000596, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.10000000149, 0.899999976158, 0.899999976158, 0.20000000298, 0.600000023842, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.699999988079, 0.899999976158,
+
+L2_cGERC_x_m1
+0.40000000596, 0.800000011921, 0.600000023842, 0.300000011921, 0.800000011921, 0.800000011921, 0.5, 0.699999988079, 0.600000023842, 0.10000000149, 0.300000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.800000011921, 0.20000000298, 0.600000023842, 0.600000023842, 0.40000000596, 0.800000011921,
+
+L2_cGERC_x_m2
+0.40000000596, 0.800000011921, 0.0, 0.0, 0.600000023842, 0.300000011921, 0.0, 0.0, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.5, 0.699999988079, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.300000011921, 0.20000000298, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.0, 0.0, 0.800000011921, 0.20000000298, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.0, 0.0, 0.40000000596, 0.800000011921, 0.0, 0.0,
+
+L2_cGERC_y_n1
+0.20000000298, 0.300000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.300000011921, 0.600000023842, 0.5, 0.20000000298, 0.10000000149, 0.20000000298, 0.800000011921, 0.5, 0.300000011921, 0.20000000298, 0.5, 0.20000000298, 0.20000000298, 0.300000011921, 0.699999988079, 0.5, 0.899999976158, 0.40000000596, 0.699999988079, 0.40000000596, 0.899999976158, 0.300000011921, 0.800000011921, 0.40000000596, 0.300000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.20000000298,
+
+L2_cGERC_y_n2
+0.20000000298, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.5, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.5, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.5, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.0, 0.0, 0.0, 0.0,
+
+L2_cGERC_o_N
+0.820000015497, 0.440000004172, 0.939999999702, 0.380000000894, 0.700000010431, 0.799999988079, 1.14000001907, 0.680000029206, 0.960000016689, 0.920000015497, 0.820000022948, 0.539999983311, 1.33999999225, 0.680000005364, 0.780000020266, 0.360000007749, 0.939999995232, 0.779999990463, 1.57999998152, 0.660000001788, 1.72000000656, 0.640000033975, 1.0200000155, 0.540000010133, 1.18000000834, 0.460000013709, 1.06000003755, 0.220000015497, 1.2000000298, 0.899999991059, 1.60000004768, 1.0000000298, 0.800000029802, 0.699999988079, 1.10999998987, 0.480000012815, 1.33000000238, 0.289999995232, 0.730000015795, 0.690000013113, 0.810000046492, 0.0800000053644, 0.950000020117, 0.40000000596, 1.25999999583, -0.0200000169873, 0.690000030994, 0.369999997616, 0.570000024438, 0.0600000032783, 0.980000021756, 0.439999996722, 0.590000022054, -0.0299999904633, 0.870000027418, -0.289999999702, 0.850000023842, 0.10000000298, 0.81000002861, 0.479999975562, 1.22000003934, 0.00999998688698, 0.530000023246, 0.240000004172, 1.06000004649, -0.0200000140071, 0.420000018477, 0.510000018924, 1.00000004172, 0.319999997616, 1.92000000954, 0.600000023842, 1.56000002861, 0.779999990463, 1.78000000834, 0.180000021756, 0.540000019073, 0.180000003874, 1.60000003576, 0.0199999856949, 1.24000004292, 0.760000016689, 0.960000016689, 0.459999986887, 0.820000009537, 0.5, 1.40000003576, 0.280000038147, 1.81999998569, 0.180000014305, 1.28000001431, -0.139999987781, 1.14000000268, 0.49999999404, 1.38000003219, 0.0, 0.66000002414, 0.179999997914, 1.52000005126, 0.859999980927, 0.640000013113, 0.819999973774, 0.410000007749, 0.689999981821, 1.33999997735, 0.339999992251, 1.55999996901, 0.979999966621, 1.05000001192, 0.370000012517, 0.270000002831, 0.290000001937, 1.55999997646, -0.160000004768, 0.860000010729, 0.899999976158, 0.85000000149, 0.490000023544, 0.440000004172, 0.539999998212, 1.33999997735, 0.0600000137091, 0.979999974072, 0.300000011921, 1.08999999225, 0.730000017285, 1.02999997854, -0.069999987185, 1.11000001073, 0.0100000017881, 1.01000003159, 0.930000005364, 1.12000002742, 0.860000010729, 1.08999997661, 0.069999999851, 0.650000008196, 0.339999986291, 0.890000015348, -0.250000008196, 0.670000010282, 0.609999972731, 0.510000030845, 0.159999997318, 0.430000018775, 0.459999997318, 1.00000002086, -0.0600000196695, 0.730000019521, -0.0300000120699, 0.869999995381, -0.180000009835, 0.640000007153, 0.20000000596, 0.750000014156, 0.210000015944, 0.790000016838, 0.209999981672, 1.11000002488, 0.319999979734, 0.930000035912, -0.30000000298, 0.66000002265, -0.250000021607, 0.370000016242, 0.0599999898672, 1.0400000295, 0.119999979734, 0.880000015795, 0.690000005662, 0.620000006557, 0.44999999404, 1.15000001639, 0.129999997914, 0.730000012815, 0.189999992251, 0.380000017285, 0.570000024438, 0.979999980032, 0.110000001043, 1.02000001997, 0.699999964237, 0.710000009239, 0.209999997318, 0.660000004768, 0.190000007153, 0.60000000447, 0.079999999404, 0.330000008345, 0.450000022352, 0.730000009835, 0.729999974072, 1.15999998242, 0.569999985695, 0.600000016391, 0.41000002265, 0.550000023842, 0.0199999931455, 0.280000011325, 0.290000007153, 0.86000001967, 0.479999990463, 0.969999978989, 0.56000002116, 0.430000020266, 0.800000011921, 0.45000000596, 0.769999993145, 0.470000008047, 1.10999997646, 0.970000000596, 0.979999988973, 0.570000002831, 0.840000014603, 0.680000020266, 0.799999974668, 0.490000020564, 0.390000014603, 0.690000007153, 0.260000013709, 0.700000028312, 0.120000003576, 0.670000014007, 0.450000007451, 1.17000001699, 0.869999984205, 0.890000030994, 0.280000018775, 1.24999998212, 0.240000020564, 0.900000040233, 0.730000014305, 0.370000012517, 0.860000015199, 0.940000042915, 0.520000012517, 0.480000009835, 0.290000012368, 0.720000008047, -8.94069684954e-09, 1.59999997467, 0.180000024736, 1.58000000685, 0.0399999862909, 0.680000029206, -0.0799999964237, 0.480000017285, 0.459999998808, 0.820000009537, 5.96046434431e-09, 0.860000015199, 0.0599999913573, 0.959999994338, 0.240000019073, 1.09999998212, -0.0200000020862, 0.880000012815, 0.399999980628, 1.18000002772, 0.279999985993, 0.960000009239, 0.219999991655, 0.600000008941, 0.259999986887, 0.600000020862, -0.480000014305, 1.08000000089, 0.739999965429, 1.66000000179, 0.0799999845028, 0.620000003576, 0.0599999988079, 1.10000003278, 0.240000004172, 1.04000002205, 0.899999976158, 1.12000002742, 0.859999992847, 1.56000001669, 0.760000004768, 0.280000011325, 0.560000003278, 1.4000000447, 0.33999996841, 1.08000005007, 0.720000021458, 1.12000000656, 0.0199999976158, 0.940000001192, 0.800000011921, 1.30000001192, -0.139999993742, 1.34000001907, 0.560000016689, 1.06000002861, 0.719999979734, 1.67999999642, 0.39999999404, 1.26000006437, 0.300000011921, 0.620000030398, 0.360000010729, 1.2400000608, 0.720000021458, 0.879999997914, 0.139999999702, 1.02000000358, 0.539999998212, 1.53999998629, 0.480000002384, 1.29999999702, 1.0999999851, 0.940000030994, 0.780000023246, 0.859999992847, 0.620000003576, 0.820000022948, 0.0399999982119, 0.940000016093, 1.17999997556, 1.08000003219, 0.56000002563, 0.740000007153, 0.779999990463, 1.08000001132, 0.76000002563, 1.22000000656, 0.640000033975, 1.61999997973, 0.140000011623, 1.77999997258, 0.859999989867, 0.96000002861, 0.520000027418, 0.800000023842, 0.30000000447, 1.10000004768, 1.09999999404, 0.89999999404, 0.899999976158,
+
+L2_zGERC_A_mn
+0.8, 0.6, 0.6, 0.3, 0.8, 0.6, 0.7, 0.5, 0.7, 0.2, 0.4, 0.2, 0.1, 0.2, 0.5, 0.2, 0.7, 0.1, 0.1, 0.4, 0.8, 0.3, 0.1, 0.4, 0.8, 0.2, 0.3, 0.6, 0.9, 0.9, 0.6, 0.7, 0.2, 0.5, 0.9, 0.3, 0.6, 0.9, 0.2, 0.8, 0.1, 0.7, 0.5, 0.9, 0.3, 0.5, 0.1, 0.7, 0.5, 0.1, 0.2, 0.2, 0.4, 0.8, 0.2, 0.7, 0.3, 0.1, 0.2, 0.8, 0.7, 0.4, 0.3, 0.2, 0.7, 0.8, 0.3, 0.9, 0.5, 0.2, 0.8, 0.2, 0.9, 0.8, 0.2, 0.4, 0.4, 0.9, 0.1, 0.1, 0.3, 0.5, 0.6, 0.9, 0.1, 0.3, 0.7, 0.1, 0.1, 0.6, 0.5, 0.9, 0.1, 0.3, 0.6, 0.6, 0.4, 0.9, 0.5, 0.7, 0.1, 0.1, 0.7, 0.8, 0.3, 0.7, 0.2, 0.3, 0.7, 0.5, 0.1, 0.4, 0.9, 0.6, 0.7, 0.4, 0.6, 0.1, 0.3, 0.7, 0.8, 0.8, 0.4, 0.9, 0.9, 0.3, 0.1, 0.4, 0.6, 0.1, 0.1, 0.9, 0.2, 0.4, 0.9, 0.3, 0.7, 0.9, 0.9, 0.4, 0.7, 0.8, 0.4, 0.7, 0.4, 0.2, 0.3, 0.6, 0.5, 0.9, 0.4, 0.7, 0.3, 0.5, 0.2, 0.2, 0.4, 0.8, 0.8, 0.2, 0.8, 0.9, 0.7, 0.4, 0.8, 0.2, 0.1, 0.2, 0.8, 0.2, 0.7, 0.4, 0.1, 0.2, 0.2, 0.6, 0.1, 0.2, 0.3, 0.7, 0.4, 0.7, 0.2, 0.4, 0.1, 0.2, 0.2, 0.4, 0.5, 0.5, 0.2, 0.3, 0.5, 0.3, 0.7, 0.6, 0.2, 0.3, 0.1, 0.2, 0.3, 0.9, 0.1, 0.5, 0.7, 0.1, 0.4, 0.4, 0.2, 0.1, 0.2, 0.1, 0.2, 0.2, 0.8, 0.7, 0.2, 0.8, 0.7, 0.5, 0.7, 0.6, 0.7, 0.2, 0.4, 0.5, 0.1, 0.1, 0.9, 0.3, 0.6, 0.9, 0.3, 0.2, 0.3, 0.2, 0.4, 0.5, 0.2, 0.9, 0.5, 0.3, 0.2, 0.7, 0.8, 0.2, 0.1, 0.7, 0.2, 0.4, 0.7, 0.8, 0.6, 0.1, 0.4, 0.7, 0.7, 0.1, 0.4, 0.9, 0.9, 0.1, 0.8, 0.4, 0.6, 0.6, 0.4, 0.8, 0.5, 0.3, 0.6, 0.8, 0.2, 0.1, 0.7, 0.1, 0.4, 0.7, 0.4, 0.3, 0.7, 0.8, 0.2, 0.3, 0.9, 0.5, 0.5, 0.5, 0.9, 0.2, 0.9, 0.5, 0.7, 0.3, 0.7, 0.5, 0.7, 0.2, 0.6, 0.9, 0.5, 0.9, 0.8, 0.8, 0.8, 0.6, 0.4, 0.8, 0.5, 0.7, 0.3, 0.5, 0.5, 0.8, 0.8, 0.6, 0.7, 0.3, 0.6, 0.5, 0.5, 0.7, 0.5, 0.6, 0.7, 0.6, 0.1, 0.2, 0.1, 0.5, 0.6, 0.9, 0.5, 0.2, 0.1, 0.3, 0.2, 0.4, 0.9, 0.1,
+
+L2_zGERC_x_m1
+0.9, 0.5, 0.8, 0.3, 0.5, 0.4, 0.8, 0.6, 0.9, 0.8, 0.1, 0.2, 0.9, 0.4, 0.2, 0.3, 0.6, 0.2, 0.2, 0.6,
+
+L2_zGERC_x_m2
+0.9, 0.5, 0.0, 0.0, 0.8, 0.3, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.9, 0.8, 0.0, 0.0, 0.1, 0.2, 0.0, 0.0, 0.9, 0.4, 0.0, 0.0, 0.2, 0.3, 0.0, 0.0, 0.6, 0.2, 0.0, 0.0, 0.2, 0.6, 0.0, 0.0,
+
+L2_zGERC_y_n1
+0.9, 0.7, 0.3, 0.8, 0.3, 0.2, 0.3, 0.6, 0.1, 0.4, 0.1, 0.5, 0.6, 0.6, 0.4, 0.7, 0.2, 0.4, 0.6, 0.5, 0.9, 0.1, 0.4, 0.6, 0.4, 0.8, 0.3, 0.5, 0.9, 0.5, 0.6, 0.7, 0.5, 0.7,
+
+L2_zGERC_y_n2
+0.9, 0.7, 0.0, 0.0, 0.0, 0.0, 0.3, 0.8, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.3, 0.6, 0.0, 0.0, 0.0, 0.0, 0.1, 0.4, 0.0, 0.0, 0.0, 0.0, 0.1, 0.5, 0.0, 0.0, 0.0, 0.0, 0.6, 0.6, 0.0, 0.0, 0.0, 0.0, 0.4, 0.7, 0.0, 0.0, 0.0, 0.0, 0.2, 0.4, 0.0, 0.0, 0.0, 0.0, 0.6, 0.5, 0.0, 0.0, 0.0, 0.0, 0.9, 0.1, 0.0, 0.0, 0.0, 0.0, 0.4, 0.6, 0.0, 0.0, 0.0, 0.0, 0.4, 0.8, 0.0, 0.0, 0.0, 0.0, 0.3, 0.5, 0.0, 0.0, 0.0, 0.0, 0.9, 0.5, 0.0, 0.0, 0.0, 0.0, 0.6, 0.7, 0.0, 0.0, 0.0, 0.0, 0.5, 0.7, 0.0, 0.0, 0.0, 0.0,
+
+L2_zGERC_o_N
+1.96, 0.42, 1.27, -0.27, 1.17, 0.57, 1.27, 0.11, 0.99, -0.11, 0.74, -0.2, 0.94, -0.04, 1.21, -0.23, 1.08, -0.16, 0.89, 0.25, 1.66, 0.66, 0.76, 0.06, 1.56, -0.32, 0.82, 0.3, 1.96, 0.9, 1.49, 0.37, 1.0, 0.12, 1.83, 0.01, 1.08, 0.35, 0.5, 0.73, 0.52, 0.31, 0.7, 0.61, 0.53, 0.13, 0.76, 0.4, 1.03, -0.34, 0.48, -0.06, 1.03, 0.58, 0.95, 0.89, 0.8, -0.26, 0.76, 0.28, 1.09, 0.09, 1.17, 0.07, 1.39, 0.42, 0.91, 0.49, 1.23, 0.21, 1.27, -0.08, 1.13, 0.82, 0.59, 0.22, 0.61, 0.74, 0.35, -0.11, 0.84, 0.44, 1.08, 0.71, 0.36, 0.18, 1.2, 0.09, 0.59, 0.91, 0.94, 0.76, 0.62, 0.06, 0.95, 0.47, 1.05, 1.01, 1.08, 0.59, 0.63, -0.05, 1.84, 0.78, 1.02, 0.24, 0.56, 0.32, 1.3, 0.2, 0.42, 0.14, 1.28, 0.26, 1.54, 0.28, 1.34, -0.22, 0.7, 0.5, 1.58, 0.76, 1.18, 1.36, 1.58, 0.06, 0.9, -1.11022302463e-16, 1.14, -0.12, 1.12, 1.04, 1.1, 0.2, 1.72, 0.04, 2.07, 0.99, 1.81, -0.08, 1.13, 0.86, 1.15, 0.4, 0.81, -0.08, 0.79, 0.23, 1.52, 0.84, 1.32, 0.39, 0.8, 0.3, 1.14, 0.23, 1.29, 1.43, 1.64, -0.02, 1.8, 0.5, 1.37, 0.19, 2.01, 0.47, 1.2, 0.05, 1.81, -0.03, 0.93, 0.51, 0.29, 0.18, 0.27, 0.64, 0.25, 0.2, 0.39, 0.68, 0.51, 0.67, 0.38, 0.46, 0.28, 0.21, 0.3, 0.4, 0.66, 0.57, 0.31, 0.47, 0.66, 0.32, 0.9, 0.6, 0.33, 0.31, 0.29, 0.33, 0.5, 0.95, 0.29, 0.53, 1.79, -0.17, 0.99, -0.2, 0.55, 0.04, 0.71, -0.32, 0.45, -0.12, 1.09, 0.29, 0.98, 0.5, 1.34, 0.03, 1.04, 0.32, 1.44, -0.01, 1.25, 0.77, 0.7, -0.28, 1.58, -0.26, 1.07, 0.57, 1.31, 0.11, 1.12, -0.19, 1.13, 0.07, 0.59, 1.03, 0.8, 0.23, 0.32, 0.75, 1.04, 0.17, 0.24, 0.65, 0.37, 0.33, 1.0, 0.86, 0.89, 0.08, 0.56, 0.68, 0.97, 0.18, 0.61, 1.15, 1.16, 0.1, 1.12, 0.36, 0.81, 0.59, 0.73, 0.97, 0.83, 0.34, 0.91, 0.81, 0.88, -0.14, 1.04, -0.32, 0.62, 0.64, 0.7, 0.0, 0.84, 0.58, 0.36, 0.02, 1.38, 0.26, 0.88, 0.16, 1.1, 2.77555756156e-17, 1.36, 0.32, 1.26, 0.42, 1.06, 0.22, 1.1, -0.2, 0.88, 0.66, 1.14, 0.78, 1.3, 0.5, 1.24, 0.28, 1.0, 1.2, 1.04, 0.72, 0.48, 0.64, 0.92, 0.86, 1.06, 0.58, 1.02, 0.26, 1.08, 0.74, 1.0, 0.8, 0.78, 0.64, 1.12, 0.86, 0.34, 0.72, 0.54, 0.62, 1.16, 0.98, 0.86, 0.28, 0.58, 0.74, 0.74, 0.62, 1.42, 0.26,
+
+L2_cHER_A_nn
+0.899999976158, 0.0, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.800000011921, 0.5, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.20000000298, 0.699999988079, 0.899999976158, 0.300000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.40000000596, 0.5, 0.699999988079, 0.40000000596, 0.800000011921, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.10000000149, -0.600000023842, 0.300000011921, 0.0, 0.5, 0.40000000596, 0.10000000149, 0.600000023842, 0.600000023842, 0.300000011921, 0.5, 0.5, 0.699999988079, 0.699999988079, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.899999976158, 0.699999988079, 0.800000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.600000023842, 0.899999976158, 0.300000011921, 0.40000000596, 0.20000000298, 0.40000000596, -0.20000000298, 0.5, -0.40000000596, 0.10000000149, 0.0, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.5, 0.300000011921, 0.699999988079, 0.800000011921, 0.800000011921, 0.5, 0.10000000149, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.10000000149, 0.600000023842, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.40000000596, -0.800000011921, 0.10000000149, -0.600000023842, 0.20000000298, -0.300000011921, 0.300000011921, 0.0, 0.899999976158, 0.10000000149, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.300000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.10000000149, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.800000011921, 0.600000023842, 0.699999988079, 0.10000000149, 0.800000011921, 0.5, -0.5, 0.600000023842, -0.300000011921, 0.600000023842, -0.5, 0.899999976158, -0.10000000149, 0.600000023842, 0.0, 0.800000011921, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.800000011921, 0.600000023842, 0.10000000149, 0.300000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.600000023842, 0.899999976158, 0.800000011921, 0.10000000149, 0.5, 0.10000000149, 0.10000000149, 0.10000000149, 0.899999976158, 0.40000000596, -0.10000000149, 0.5, -0.5, 0.600000023842, -0.5, 0.20000000298, -0.899999976158, 0.800000011921, -0.10000000149, 0.899999976158, 0.0, 0.5, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.5, 0.20000000298, 0.800000011921, 0.800000011921, 0.5, 0.40000000596, 0.699999988079, 0.20000000298, 0.40000000596, 0.10000000149, 0.899999976158, 0.699999988079, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.10000000149, -0.40000000596, 0.699999988079, -0.699999988079, 0.20000000298, -0.20000000298, 0.300000011921, -0.10000000149, 0.800000011921, -0.899999976158, 0.5, -0.699999988079, 0.899999976158, 0.0, 0.20000000298, 0.800000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.699999988079, 0.20000000298, 0.699999988079, 0.600000023842, 0.600000023842, 0.10000000149, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.20000000298, -0.699999988079, 0.40000000596, -0.600000023842, 0.5, -0.300000011921, 0.300000011921, -0.10000000149, 0.300000011921, -0.699999988079, 0.800000011921, -0.20000000298, 0.20000000298, -0.800000011921, 0.5, 0.0, 0.10000000149, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.10000000149, 0.300000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.600000023842, 0.10000000149, 0.40000000596, 0.800000011921, 0.600000023842, 0.899999976158, -0.300000011921, 0.300000011921, -0.40000000596, 0.699999988079, -0.800000011921, 0.699999988079, -0.300000011921, 0.10000000149, -0.40000000596, 0.800000011921, -0.5, 0.899999976158, -0.699999988079, 0.10000000149, -0.10000000149, 0.20000000298, 0.0, 0.899999976158, 0.800000011921, 0.10000000149, 0.10000000149, 0.699999988079, 0.699999988079, 0.5, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.899999976158, 0.10000000149, 0.10000000149, 0.800000011921, 0.10000000149, 0.699999988079, -0.800000011921, 0.899999976158, -0.699999988079, 0.800000011921, -0.5, 0.10000000149, -0.899999976158, 0.800000011921, -0.600000023842, 0.20000000298, -0.800000011921, 0.600000023842, -0.800000011921, 0.800000011921, -0.899999976158, 0.899999976158, -0.800000011921, 0.20000000298, 0.0, 0.600000023842, 0.5, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.5, 0.699999988079, 0.300000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.10000000149, 0.800000011921, 0.300000011921, -0.10000000149, 0.800000011921, -0.699999988079, 0.10000000149, -0.899999976158, 0.20000000298, -0.20000000298, 0.10000000149, -0.300000011921, 0.800000011921, -0.5, 0.20000000298, -0.600000023842, 0.800000011921, -0.10000000149, 0.10000000149, -0.10000000149, 0.600000023842, -0.5, 0.10000000149, 0.0, 0.40000000596, 0.600000023842, 0.699999988079, 0.800000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.300000011921, 0.899999976158, 0.899999976158, 0.5, 0.600000023842, -0.40000000596, 0.600000023842, -0.300000011921, 0.699999988079, -0.300000011921, 0.10000000149, -0.10000000149, 0.20000000298, -0.40000000596, 0.40000000596, -0.699999988079, 0.600000023842, -0.899999976158, 0.300000011921, -0.699999988079, 0.699999988079, -0.699999988079, 0.5, -0.20000000298, 0.40000000596, -0.600000023842, 0.40000000596, 0.0, 0.800000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.600000023842, 0.5, -0.699999988079, 0.899999976158, -0.300000011921, 0.600000023842, -0.899999976158, 0.10000000149, -0.20000000298, 0.899999976158, -0.600000023842, 0.20000000298, -0.40000000596, 0.699999988079, -0.20000000298, 0.800000011921, -0.300000011921, 0.5, -0.10000000149, 0.20000000298, -0.699999988079, 0.699999988079, -0.800000011921, 0.800000011921, -0.899999976158, 0.699999988079, 0.0, 0.899999976158, 0.899999976158, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, -0.800000011921, 0.10000000149, -0.699999988079, 0.40000000596, -0.40000000596, 0.5, -0.40000000596, 0.899999976158, -0.800000011921, 0.10000000149, -0.899999976158, 0.699999988079, -0.600000023842, 0.10000000149, -0.600000023842, 0.10000000149, -0.600000023842, 0.5, -0.699999988079, 0.600000023842, -0.40000000596, 0.40000000596, -0.800000011921, 0.899999976158, -0.899999976158, 0.40000000596, 0.0, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.5, -0.20000000298, 0.899999976158, -0.600000023842, 0.10000000149, -0.600000023842, 0.600000023842, -0.800000011921, 0.10000000149, -0.5, 0.699999988079, -0.800000011921, 0.600000023842, -0.10000000149, 0.899999976158, -0.600000023842, 0.600000023842, -0.899999976158, 0.300000011921, -0.899999976158, 0.600000023842, -0.699999988079, 0.600000023842, -0.800000011921, 0.899999976158, -0.699999988079, 0.300000011921, -0.10000000149, 0.600000023842, 0.0, 0.899999976158, 0.699999988079, 0.5, 0.300000011921, 0.20000000298, -0.800000011921, 0.899999976158, -0.300000011921, 0.899999976158, -0.40000000596, 0.600000023842, -0.699999988079, 0.10000000149, -0.10000000149, 0.800000011921, -0.10000000149, 0.10000000149, -0.10000000149, 0.10000000149, -0.40000000596, 0.10000000149, -0.10000000149, 0.40000000596, -0.800000011921, 0.300000011921, -0.899999976158, 0.20000000298, -0.40000000596, 0.699999988079, -0.600000023842, 0.800000011921, -0.40000000596, 0.899999976158, -0.699999988079, 0.5, 0.0, 0.699999988079, 0.300000011921, 0.600000023842, -0.899999976158, 0.40000000596, -0.20000000298, 0.20000000298, -0.5, 0.10000000149, -0.800000011921, 0.10000000149, -0.899999976158, 0.300000011921, -0.300000011921, 0.40000000596, -0.5, 0.800000011921, -0.600000023842, 0.800000011921, -0.10000000149, 0.10000000149, -0.800000011921, 0.899999976158, -0.5, 0.899999976158, -0.600000023842, 0.40000000596, -0.20000000298, 0.5, -0.10000000149, 0.5, -0.300000011921, 0.699999988079, -0.300000011921, 0.600000023842, 0.0,
+
+L2_cHER_A_nn_pu
+0.899999976158, 0.0, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.800000011921, 0.5, 0.5, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.20000000298, 0.699999988079, 0.899999976158, 0.300000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.40000000596, 0.5, 0.699999988079, 0.40000000596, 0.800000011921, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.0, 0.5, 0.40000000596, 0.10000000149, 0.600000023842, 0.600000023842, 0.300000011921, 0.5, 0.5, 0.699999988079, 0.699999988079, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.899999976158, 0.699999988079, 0.800000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.600000023842, 0.899999976158, 0.300000011921, 0.40000000596, 0.20000000298, 0.10000000149, 0.0, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.5, 0.300000011921, 0.699999988079, 0.800000011921, 0.800000011921, 0.5, 0.10000000149, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.10000000149, 0.600000023842, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.300000011921, 0.0, 0.899999976158, 0.10000000149, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.300000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.10000000149, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.800000011921, 0.600000023842, 0.699999988079, 0.10000000149, 0.800000011921, 0.600000023842, 0.0, 0.800000011921, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.800000011921, 0.600000023842, 0.10000000149, 0.300000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.600000023842, 0.899999976158, 0.800000011921, 0.10000000149, 0.5, 0.10000000149, 0.10000000149, 0.10000000149, 0.899999976158, 0.899999976158, 0.0, 0.5, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.5, 0.20000000298, 0.800000011921, 0.800000011921, 0.5, 0.40000000596, 0.699999988079, 0.20000000298, 0.40000000596, 0.10000000149, 0.899999976158, 0.699999988079, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.899999976158, 0.0, 0.20000000298, 0.800000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.699999988079, 0.20000000298, 0.699999988079, 0.600000023842, 0.600000023842, 0.10000000149, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.5, 0.0, 0.10000000149, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.10000000149, 0.300000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.600000023842, 0.10000000149, 0.40000000596, 0.800000011921, 0.600000023842, 0.20000000298, 0.0, 0.899999976158, 0.800000011921, 0.10000000149, 0.10000000149, 0.699999988079, 0.699999988079, 0.5, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.899999976158, 0.10000000149, 0.10000000149, 0.800000011921, 0.10000000149, 0.20000000298, 0.0, 0.600000023842, 0.5, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.5, 0.699999988079, 0.300000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.0, 0.40000000596, 0.600000023842, 0.699999988079, 0.800000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.300000011921, 0.899999976158, 0.899999976158, 0.5, 0.40000000596, 0.0, 0.800000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.600000023842, 0.699999988079, 0.0, 0.899999976158, 0.899999976158, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.0, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.600000023842, 0.0, 0.899999976158, 0.699999988079, 0.5, 0.300000011921, 0.5, 0.0, 0.699999988079, 0.300000011921, 0.600000023842, 0.0,
+
+L2_cHER_x_n1
+0.300000011921, 0.300000011921, 0.800000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.5, 0.10000000149, 0.800000011921, 0.300000011921, 0.20000000298, 0.20000000298, 0.40000000596, 0.10000000149, 0.800000011921, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.800000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.899999976158, 0.20000000298, 0.5, 0.899999976158, 0.699999988079,
+
+L2_cHER_x_n2
+0.300000011921, 0.300000011921, 0.0, 0.0, 0.800000011921, 0.600000023842, 0.0, 0.0, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.5, 0.10000000149, 0.0, 0.0, 0.800000011921, 0.300000011921, 0.0, 0.0, 0.20000000298, 0.20000000298, 0.0, 0.0, 0.40000000596, 0.10000000149, 0.0, 0.0, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.40000000596, 0.5, 0.0, 0.0, 0.300000011921, 0.800000011921, 0.0, 0.0, 0.600000023842, 0.40000000596, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.20000000298, 0.899999976158, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.899999976158, 0.699999988079, 0.0, 0.0,
+
+L2_cHER_o_N
+1.07999999046, 0.0, 0.520000028908, 0.66000002265, 0.880000032187, 0.20000000298, 0.610000021905, 0.950000024587, 0.6800000076, 0.620000004321, 0.730000026226, 0.250000007451, 0.220000008047, 0.40000000596, 0.350000011176, 0.789999992996, 1.38000000238, 0.300000011921, 0.970000000596, 0.770000012517, 0.630000032187, -0.0500000044703, 0.900000044703, 0.460000013709, 0.920000009537, 0.699999988079, 0.640000019073, 0.740000013113, 0.830000006855, -0.00999999731779, 0.410000012219, 0.710000009239, 1.08000003219, 0.959999974966, 0.520000028908, -0.66000002265, 1.3000000596, 0.0, 1.6200000453, 0.240000013113, 0.640000030994, 0.880000050068, 1.06000003308, 0.520000021458, 1.32000003338, 0.740000013113, 0.979999999404, 0.659999989867, 0.780000018775, 0.760000034571, 1.42000005722, 0.240000013113, 1.51999999762, 0.539999995232, 1.52000005126, 0.239999983311, 1.32000006318, 0.340000030994, 1.8799999845, 0.16000002265, 0.640000026524, 0.479999996424, 1.59999998808, 3.87430194593e-08, 1.35999999285, 0.020000012517, 1.54000000715, 0.180000011325, 0.880000032187, -0.20000000298, 1.6200000453, -0.240000013113, 1.38000003964, 0.0, 0.76000003159, 0.700000035763, 1.08000003219, 0.820000003576, 1.48000005603, 0.90000000596, 0.520000012517, 0.20000000298, 0.900000011921, 0.540000019073, 1.98000002623, 0.800000011921, 1.52000002742, 0.420000003576, 0.980000033677, 0.499999970198, 1.50000002384, 0.46000002861, 1.72000002146, 0.899999976158, 1.04000002503, 0.240000013113, 0.979999997914, 0.0400000369549, 1.45999998689, 0.160000004768, 1.47999999344, 0.659999992847, 0.610000021905, -0.950000024587, 0.640000030994, -0.880000050068, 0.76000003159, -0.700000035763, 0.670000040829, 0.0, 1.20999998838, 0.0899999989569, 0.710000030845, 0.799999964237, 0.440000019073, -4.47034842477e-09, 0.550000025332, 0.079999999404, 1.26000001669, -0.100000011921, 0.390000015348, 0.639999965429, 0.46000001967, -0.250000021607, 0.500000031292, -0.0800000083447, 0.590000010878, -0.150000006706, 0.73000001505, 0.129999995679, 0.810000029355, 0.280000005364, 0.770000031143, 0.419999976754, 0.710000008494, 0.470000001341, 0.6800000076, -0.620000004321, 1.06000003308, -0.520000021458, 1.08000003219, -0.820000003576, 1.20999998838, -0.0899999989569, 0.86000002414, 0.0, 1.23000001952, 0.0299999979138, 0.920000014007, 0.819999975264, 0.510000015199, 0.689999988526, 0.580000009835, 0.0800000023842, 1.05000001565, 0.390000025034, 0.330000009835, -0.0699999924004, 0.540000016093, 0.260000006258, 1.31999997005, 0.320000029653, 1.09999998286, 0.58000001356, 0.290000001937, 0.070000012517, 0.250000003725, -0.129999997914, 0.61999998942, 0.639999981076, 0.730000026226, -0.250000007451, 1.32000003338, -0.740000013113, 1.48000005603, -0.90000000596, 0.710000030845, -0.799999964237, 1.23000001952, -0.0299999979138, 1.63000000238, 0.0, 0.720000008047, 0.599999986589, 1.1500000231, 0.240000007153, 1.68000004411, 0.0999999940395, 0.670000018477, 0.520000012517, 1.28000003815, -0.0500000119209, 1.00000003874, 0.559999992847, 0.970000006557, 0.0500000119209, 0.490000020564, 0.58999997735, 1.12999999642, 0.140000023544, 1.11000002265, -0.240000001192, 1.23000000834, 0.0100000166893, 0.220000008047, -0.40000000596, 0.979999999404, -0.659999989867, 0.520000012517, -0.20000000298, 0.440000019073, 4.47034842477e-09, 0.920000014007, -0.819999975264, 0.720000008047, -0.599999986589, 0.979999978542, 0.0, 0.30000000596, 0.860000013709, 1.21999998569, 0.699999988079, 0.780000027716, 0.780000012815, 0.420000011027, 0.500000022352, 0.800000032783, 0.93999998033, 0.979999987483, 0.20000000298, 0.859999992847, 0.56000002563, 0.820000022948, -0.0399999952316, 0.240000004172, 0.0400000011921, 0.720000003576, 0.539999998212, 0.350000011176, -0.789999992996, 0.780000018775, -0.760000034571, 0.900000011921, -0.540000019073, 0.550000025332, -0.079999999404, 0.510000015199, -0.689999988526, 1.1500000231, -0.240000007153, 0.30000000596, -0.860000013709, 0.670000005066, 0.0, 0.500000013411, -0.140000005662, 1.01000001743, 0.73999997437, 1.00000002086, -0.190000006407, 0.580000026226, 0.599999986589, 1.15000001118, 0.090000012368, 0.270000008792, 0.430000022501, 1.0699999775, 0.26000002861, 0.230000004619, 0.220000003576, 1.2300000076, 0.410000023395, 1.38000000238, -0.300000011921, 1.42000005722, -0.240000013113, 1.98000002623, -0.800000011921, 1.26000001669, 0.100000011921, 0.580000009835, -0.0800000023842, 1.68000004411, -0.0999999940395, 1.21999998569, -0.699999988079, 0.500000013411, 0.140000005662, 1.48000004113, 0.0, 1.61999999166, 0.720000015497, 0.980000033677, -0.30000000447, 1.50000002384, 0.860000004768, 1.61999999762, 0.10000000149, 0.740000020564, 0.440000030994, 1.48000002027, 0.339999989271, 0.660000012219, -0.139999999702, 2.08000000238, 0.259999994338, 0.970000000596, -0.770000012517, 1.51999999762, -0.539999995232, 1.52000002742, -0.420000003576, 0.390000015348, -0.639999965429, 1.05000001565, -0.390000025034, 0.670000018477, -0.520000012517, 0.780000027716, -0.780000012815, 1.01000001743, -0.73999997437, 1.61999999166, -0.720000015497, 0.610000007749, 0.0, 1.12000003636, 0.329999996424, 0.940000016093, 0.340000010133, 0.829999996424, 0.769999982715, 0.870000006557, 0.649999991059, 0.830000002384, 0.639999981821, 0.730000008345, 0.700000010431, 0.809999991357, 0.970000000596, 0.630000032187, 0.0500000044703, 1.52000005126, -0.239999983311, 0.980000033677, -0.499999970198, 0.46000001967, 0.250000021607, 0.330000009835, 0.0699999924004, 1.28000003815, 0.0500000119209, 0.420000011027, -0.500000022352, 1.00000002086, 0.190000006407, 0.980000033677, 0.30000000447, 1.12000003636, -0.329999996424, 0.830000027716, 0.0, 0.900000029802, 0.960000043511, 1.46999999166, 1.15000000596, 1.09000003695, 0.490000013113, 1.38000001878, 0.589999989271, 0.76000002116, 0.909999974966, 1.72999997854, 1.00999998689, 0.900000044703, -0.460000013709, 1.32000006318, -0.340000030994, 1.50000002384, -0.46000002861, 0.500000031292, 0.0800000083447, 0.540000016093, -0.260000006258, 1.00000003874, -0.559999992847, 0.800000032783, -0.93999998033, 0.580000026226, -0.599999986589, 1.50000002384, -0.860000004768, 0.940000016093, -0.340000010133, 0.900000029802, -0.960000043511, 0.920000039339, 0.0, 1.50000002086, 0.759999966025, 0.780000023246, 0.620000006557, 1.08000002623, 0.340000007153, 0.520000012517, 0.179999996424, 1.71999998271, 0.540000010133, 0.920000009537, -0.699999988079, 1.8799999845, -0.16000002265, 1.72000002146, -0.899999976158, 0.590000010878, 0.150000006706, 1.31999997005, -0.320000029653, 0.970000006557, -0.0500000119209, 0.979999987483, -0.20000000298, 1.15000001118, -0.090000012368, 1.61999999762, -0.10000000149, 0.829999996424, -0.769999982715, 1.46999999166, -1.15000000596, 1.50000002086, -0.759999966025, 1.6799999547, 0.0, 1.45999997497, 0.759999986887, 1.66999994844, 0.210000015199, 1.18999998182, 0.390000029504, 1.51999996185, 0.339999992251, 0.640000019073, -0.740000013113, 0.640000026524, -0.479999996424, 1.04000002503, -0.240000013113, 0.73000001505, -0.129999995679, 1.09999998286, -0.58000001356, 0.490000020564, -0.58999997735, 0.859999992847, -0.56000002563, 0.270000008792, -0.430000022501, 0.740000020564, -0.440000030994, 0.870000006557, -0.649999991059, 1.09000003695, -0.490000013113, 0.780000023246, -0.620000006557, 1.45999997497, -0.759999986887, 0.740000013113, 0.0, 0.810000003278, -0.070000000596, 1.1100000152, 0.35000000149, 1.11999999762, 0.339999984801, 0.830000006855, 0.00999999731779, 1.59999998808, -3.87430194593e-08, 0.979999997914, -0.0400000369549, 0.810000029355, -0.280000005364, 0.290000001937, -0.070000012517, 1.12999999642, -0.140000023544, 0.820000022948, 0.0399999952316, 1.0699999775, -0.26000002861, 1.48000002027, -0.339999989271, 0.830000002384, -0.639999981821, 1.38000001878, -0.589999989271, 1.08000002623, -0.340000007153, 1.66999994844, -0.210000015199, 0.810000003278, 0.070000000596, 1.44999998212, 0.0, 1.38999996543, 0.779999984503, 1.3099999705, 0.969999969304, 0.410000012219, -0.710000009239, 1.35999999285, -0.020000012517, 1.45999998689, -0.160000004768, 0.770000031143, -0.419999976754, 0.250000003725, 0.129999997914, 1.11000002265, 0.240000001192, 0.240000004172, -0.0400000011921, 0.230000004619, -0.220000003576, 0.660000012219, 0.139999999702, 0.730000008345, -0.700000010431, 0.76000002116, -0.909999974966, 0.520000012517, -0.179999996424, 1.18999998182, -0.390000029504, 1.1100000152, -0.35000000149, 1.38999996543, -0.779999984503, 0.790000001192, 0.0, 1.22999998003, 0.610000000298, 1.08000003219, -0.959999974966, 1.54000000715, -0.180000011325, 1.47999999344, -0.659999992847, 0.710000008494, -0.470000001341, 0.61999998942, -0.639999981076, 1.23000000834, -0.0100000166893, 0.720000003576, -0.539999998212, 1.2300000076, -0.410000023395, 2.08000000238, -0.259999994338, 0.809999991357, -0.970000000596, 1.72999997854, -1.00999998689, 1.71999998271, -0.540000010133, 1.51999996185, -0.339999992251, 1.11999999762, -0.339999984801, 1.3099999705, -0.969999969304, 1.22999998003, -0.610000000298, 1.89999996424, 0.0,
+
+L2_cHER_o_N_pu
+1.07999999046, 0.0, 0.520000028908, 0.66000002265, 0.880000032187, 0.20000000298, 0.610000021905, 0.950000024587, 0.6800000076, 0.620000004321, 0.730000026226, 0.250000007451, 0.220000008047, 0.40000000596, 0.350000011176, 0.789999992996, 1.38000000238, 0.300000011921, 0.970000000596, 0.770000012517, 0.630000032187, -0.0500000044703, 0.900000044703, 0.460000013709, 0.920000009537, 0.699999988079, 0.640000019073, 0.740000013113, 0.830000006855, -0.00999999731779, 0.410000012219, 0.710000009239, 1.08000003219, 0.959999974966, 1.3000000596, 0.0, 1.6200000453, 0.240000013113, 0.640000030994, 0.880000050068, 1.06000003308, 0.520000021458, 1.32000003338, 0.740000013113, 0.979999999404, 0.659999989867, 0.780000018775, 0.760000034571, 1.42000005722, 0.240000013113, 1.51999999762, 0.539999995232, 1.52000005126, 0.239999983311, 1.32000006318, 0.340000030994, 1.8799999845, 0.16000002265, 0.640000026524, 0.479999996424, 1.59999998808, 3.87430194593e-08, 1.35999999285, 0.020000012517, 1.54000000715, 0.180000011325, 1.38000003964, 0.0, 0.76000003159, 0.700000035763, 1.08000003219, 0.820000003576, 1.48000005603, 0.90000000596, 0.520000012517, 0.20000000298, 0.900000011921, 0.540000019073, 1.98000002623, 0.800000011921, 1.52000002742, 0.420000003576, 0.980000033677, 0.499999970198, 1.50000002384, 0.46000002861, 1.72000002146, 0.899999976158, 1.04000002503, 0.240000013113, 0.979999997914, 0.0400000369549, 1.45999998689, 0.160000004768, 1.47999999344, 0.659999992847, 0.670000040829, 0.0, 1.20999998838, 0.0899999989569, 0.710000030845, 0.799999964237, 0.440000019073, -4.47034842477e-09, 0.550000025332, 0.079999999404, 1.26000001669, -0.100000011921, 0.390000015348, 0.639999965429, 0.46000001967, -0.250000021607, 0.500000031292, -0.0800000083447, 0.590000010878, -0.150000006706, 0.73000001505, 0.129999995679, 0.810000029355, 0.280000005364, 0.770000031143, 0.419999976754, 0.710000008494, 0.470000001341, 0.86000002414, 0.0, 1.23000001952, 0.0299999979138, 0.920000014007, 0.819999975264, 0.510000015199, 0.689999988526, 0.580000009835, 0.0800000023842, 1.05000001565, 0.390000025034, 0.330000009835, -0.0699999924004, 0.540000016093, 0.260000006258, 1.31999997005, 0.320000029653, 1.09999998286, 0.58000001356, 0.290000001937, 0.070000012517, 0.250000003725, -0.129999997914, 0.61999998942, 0.639999981076, 1.63000000238, 0.0, 0.720000008047, 0.599999986589, 1.1500000231, 0.240000007153, 1.68000004411, 0.0999999940395, 0.670000018477, 0.520000012517, 1.28000003815, -0.0500000119209, 1.00000003874, 0.559999992847, 0.970000006557, 0.0500000119209, 0.490000020564, 0.58999997735, 1.12999999642, 0.140000023544, 1.11000002265, -0.240000001192, 1.23000000834, 0.0100000166893, 0.979999978542, 0.0, 0.30000000596, 0.860000013709, 1.21999998569, 0.699999988079, 0.780000027716, 0.780000012815, 0.420000011027, 0.500000022352, 0.800000032783, 0.93999998033, 0.979999987483, 0.20000000298, 0.859999992847, 0.56000002563, 0.820000022948, -0.0399999952316, 0.240000004172, 0.0400000011921, 0.720000003576, 0.539999998212, 0.670000005066, 0.0, 0.500000013411, -0.140000005662, 1.01000001743, 0.73999997437, 1.00000002086, -0.190000006407, 0.580000026226, 0.599999986589, 1.15000001118, 0.090000012368, 0.270000008792, 0.430000022501, 1.0699999775, 0.26000002861, 0.230000004619, 0.220000003576, 1.2300000076, 0.410000023395, 1.48000004113, 0.0, 1.61999999166, 0.720000015497, 0.980000033677, -0.30000000447, 1.50000002384, 0.860000004768, 1.61999999762, 0.10000000149, 0.740000020564, 0.440000030994, 1.48000002027, 0.339999989271, 0.660000012219, -0.139999999702, 2.08000000238, 0.259999994338, 0.610000007749, 0.0, 1.12000003636, 0.329999996424, 0.940000016093, 0.340000010133, 0.829999996424, 0.769999982715, 0.870000006557, 0.649999991059, 0.830000002384, 0.639999981821, 0.730000008345, 0.700000010431, 0.809999991357, 0.970000000596, 0.830000027716, 0.0, 0.900000029802, 0.960000043511, 1.46999999166, 1.15000000596, 1.09000003695, 0.490000013113, 1.38000001878, 0.589999989271, 0.76000002116, 0.909999974966, 1.72999997854, 1.00999998689, 0.920000039339, 0.0, 1.50000002086, 0.759999966025, 0.780000023246, 0.620000006557, 1.08000002623, 0.340000007153, 0.520000012517, 0.179999996424, 1.71999998271, 0.540000010133, 1.6799999547, 0.0, 1.45999997497, 0.759999986887, 1.66999994844, 0.210000015199, 1.18999998182, 0.390000029504, 1.51999996185, 0.339999992251, 0.740000013113, 0.0, 0.810000003278, -0.070000000596, 1.1100000152, 0.35000000149, 1.11999999762, 0.339999984801, 1.44999998212, 0.0, 1.38999996543, 0.779999984503, 1.3099999705, 0.969999969304, 0.790000001192, 0.0, 1.22999998003, 0.610000000298, 1.89999996424, 0.0,
+
+L2_zHER_A_nn
+0.9, 0.0, 0.8, 0.4, 0.6, 0.1, 0.9, 0.1, 0.8, 0.9, 0.4, 0.6, 0.2, 0.8, 0.6, 0.7, 0.5, 0.2, 0.8, 0.8, 0.4, 0.1, 0.1, 0.5, 0.7, 0.5, 0.2, 0.4, 0.3, 0.9, 0.7, 0.3, 0.3, 0.2, 0.8, -0.4, 0.4, 0.0, 0.5, 0.6, 0.8, 0.2, 0.7, 0.7, 0.6, 0.8, 0.7, 0.6, 0.1, 0.7, 0.6, 0.6, 0.8, 0.2, 0.3, 0.8, 0.3, 0.5, 0.4, 0.9, 0.3, 0.3, 0.1, 0.9, 0.3, 0.5, 0.6, 0.2, 0.6, -0.1, 0.5, -0.6, 0.2, 0.0, 0.2, 0.9, 0.4, 0.1, 0.5, 0.5, 0.4, 0.7, 0.1, 0.9, 0.5, 0.2, 0.2, 0.7, 0.5, 0.2, 0.7, 0.7, 0.8, 0.5, 0.8, 0.4, 0.1, 0.6, 0.7, 0.1, 0.8, 0.8, 0.9, -0.1, 0.8, -0.2, 0.2, -0.9, 0.5, 0.0, 0.8, 0.3, 0.3, 0.4, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.4, 0.5, 0.4, 0.2, 0.7, 0.8, 0.5, 0.1, 0.4, 0.9, 0.7, 0.1, 0.2, 0.3, 0.8, 0.4, 0.8, -0.9, 0.7, -0.7, 0.4, -0.1, 0.8, -0.3, 0.6, 0.0, 0.6, 0.5, 0.8, 0.2, 0.6, 0.4, 0.3, 0.5, 0.2, 0.2, 0.5, 0.9, 0.1, 0.5, 0.2, 0.2, 0.9, 0.9, 0.5, 0.7, 0.6, 0.3, 0.3, 0.8, 0.4, -0.6, 0.6, -0.8, 0.5, -0.5, 0.3, -0.4, 0.6, -0.5, 0.7, 0.0, 0.3, 0.4, 0.4, 0.7, 0.9, 0.2, 0.3, 0.6, 0.2, 0.6, 0.9, 0.3, 0.1, 0.3, 0.7, 0.9, 0.7, 0.8, 0.9, 0.7, 0.3, 0.3, 0.2, -0.8, 0.7, -0.6, 0.4, -0.7, 0.1, -0.3, 0.8, -0.2, 0.3, -0.4, 0.3, 0.0, 0.5, 0.9, 0.2, 0.9, 0.4, 0.6, 0.2, 0.3, 0.7, 0.8, 0.5, 0.3, 0.3, 0.1, 0.5, 0.6, 0.4, 0.7, 0.8, 0.3, 0.6, -0.7, 0.1, -0.7, 0.1, -0.9, 0.6, -0.7, 0.6, -0.4, 0.4, -0.7, 0.5, -0.9, 0.8, 0.0, 0.2, 0.3, 0.5, 0.5, 0.6, 0.8, 0.2, 0.2, 0.3, 0.6, 0.8, 0.4, 0.2, 0.7, 0.5, 0.3, 0.5, 0.9, 0.5, -0.2, 0.6, -0.6, 0.5, -0.2, 0.4, -0.9, 0.3, -0.5, 0.9, -0.2, 0.2, -0.9, 0.2, -0.3, 0.5, 0.0, 0.4, 0.9, 0.8, 0.2, 0.1, 0.1, 0.6, 0.1, 0.8, 0.3, 0.9, 0.4, 0.1, 0.4, 0.8, 0.7, 0.8, -0.8, 0.8, -0.2, 0.2, -0.7, 0.4, -0.5, 0.2, -0.2, 0.3, -0.6, 0.4, -0.6, 0.5, -0.5, 0.4, -0.9, 0.3, 0.0, 0.1, 0.2, 0.8, 0.2, 0.9, 0.2, 0.8, 0.5, 0.4, 0.8, 0.4, 0.1, 0.6, 0.4, 0.4, -0.1, 0.3, -0.8, 0.5, -0.2, 0.4, -0.2, 0.5, -0.9, 0.2, -0.6, 0.2, -0.3, 0.6, -0.8, 0.8, -0.2, 0.1, -0.2, 0.1, 0.0, 0.7, 0.3, 0.8, 0.3, 0.1, 0.6, 0.8, 0.8, 0.3, 0.1, 0.1, 0.5, 0.1, -0.5, 0.3, -0.5, 0.7, -0.7, 0.7, -0.8, 0.1, -0.5, 0.9, -0.3, 0.7, -0.8, 0.2, -0.2, 0.1, -0.1, 0.8, -0.2, 0.7, -0.3, 0.1, 0.0, 0.5, 0.2, 0.6, 0.9, 0.1, 0.5, 0.9, 0.3, 0.2, 0.7, 0.7, -0.5, 0.4, -0.9, 0.8, -0.5, 0.5, -0.1, 0.2, -0.2, 0.1, -0.3, 0.5, -0.3, 0.3, -0.6, 0.6, -0.1, 0.9, -0.2, 0.8, -0.3, 0.5, -0.2, 0.4, 0.0, 0.5, 0.8, 0.7, 0.3, 0.7, 0.8, 0.4, 0.5, 0.2, -0.4, 0.3, -0.3, 0.8, -0.4, 0.4, -0.9, 0.9, -0.9, 0.7, -0.9, 0.3, -0.1, 0.8, -0.4, 0.8, -0.3, 0.8, -0.5, 0.1, -0.6, 0.6, -0.9, 0.5, -0.8, 0.8, 0.0, 0.3, 0.1, 0.4, 0.6, 0.1, 0.9, 0.3, -0.9, 0.1, -0.9, 0.1, -0.6, 0.7, -0.1, 0.5, -0.7, 0.7, -0.8, 0.5, -0.6, 0.2, -0.7, 0.9, -0.4, 0.4, -0.8, 0.8, -0.8, 0.1, -0.5, 0.7, -0.3, 0.3, -0.1, 0.4, 0.0, 0.7, 0.1, 0.2, 0.4, 0.7, -0.3, 0.3, -0.5, 0.7, -0.1, 0.2, -0.3, 0.6, -0.3, 0.9, -0.7, 0.4, -0.7, 0.5, -0.3, 0.1, -0.4, 0.4, -0.1, 0.3, -0.1, 0.9, -0.3, 0.7, -0.8, 0.4, -0.6, 0.7, -0.1, 0.3, 0.0, 0.3, 0.9, 0.3, -0.2, 0.6, -0.2, 0.8, -0.8, 0.8, -0.4, 0.3, -0.8, 0.3, -0.3, 0.8, -0.3, 0.5, -0.9, 0.8, -0.7, 0.6, -0.4, 0.1, -0.5, 0.2, -0.7, 0.4, -0.5, 0.1, -0.9, 0.2, -0.4, 0.3, -0.9, 0.1, 0.0,
+
+L2_zHER_A_nn_pu
+0.9, 0.0, 0.8, 0.4, 0.6, 0.1, 0.9, 0.1, 0.8, 0.9, 0.4, 0.6, 0.2, 0.8, 0.6, 0.7, 0.5, 0.2, 0.8, 0.8, 0.4, 0.1, 0.1, 0.5, 0.7, 0.5, 0.2, 0.4, 0.3, 0.9, 0.7, 0.3, 0.3, 0.2, 0.4, 0.0, 0.5, 0.6, 0.8, 0.2, 0.7, 0.7, 0.6, 0.8, 0.7, 0.6, 0.1, 0.7, 0.6, 0.6, 0.8, 0.2, 0.3, 0.8, 0.3, 0.5, 0.4, 0.9, 0.3, 0.3, 0.1, 0.9, 0.3, 0.5, 0.6, 0.2, 0.2, 0.0, 0.2, 0.9, 0.4, 0.1, 0.5, 0.5, 0.4, 0.7, 0.1, 0.9, 0.5, 0.2, 0.2, 0.7, 0.5, 0.2, 0.7, 0.7, 0.8, 0.5, 0.8, 0.4, 0.1, 0.6, 0.7, 0.1, 0.8, 0.8, 0.5, 0.0, 0.8, 0.3, 0.3, 0.4, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.4, 0.5, 0.4, 0.2, 0.7, 0.8, 0.5, 0.1, 0.4, 0.9, 0.7, 0.1, 0.2, 0.3, 0.8, 0.4, 0.6, 0.0, 0.6, 0.5, 0.8, 0.2, 0.6, 0.4, 0.3, 0.5, 0.2, 0.2, 0.5, 0.9, 0.1, 0.5, 0.2, 0.2, 0.9, 0.9, 0.5, 0.7, 0.6, 0.3, 0.3, 0.8, 0.7, 0.0, 0.3, 0.4, 0.4, 0.7, 0.9, 0.2, 0.3, 0.6, 0.2, 0.6, 0.9, 0.3, 0.1, 0.3, 0.7, 0.9, 0.7, 0.8, 0.9, 0.7, 0.3, 0.3, 0.3, 0.0, 0.5, 0.9, 0.2, 0.9, 0.4, 0.6, 0.2, 0.3, 0.7, 0.8, 0.5, 0.3, 0.3, 0.1, 0.5, 0.6, 0.4, 0.7, 0.8, 0.3, 0.8, 0.0, 0.2, 0.3, 0.5, 0.5, 0.6, 0.8, 0.2, 0.2, 0.3, 0.6, 0.8, 0.4, 0.2, 0.7, 0.5, 0.3, 0.5, 0.9, 0.5, 0.0, 0.4, 0.9, 0.8, 0.2, 0.1, 0.1, 0.6, 0.1, 0.8, 0.3, 0.9, 0.4, 0.1, 0.4, 0.8, 0.7, 0.3, 0.0, 0.1, 0.2, 0.8, 0.2, 0.9, 0.2, 0.8, 0.5, 0.4, 0.8, 0.4, 0.1, 0.6, 0.4, 0.1, 0.0, 0.7, 0.3, 0.8, 0.3, 0.1, 0.6, 0.8, 0.8, 0.3, 0.1, 0.1, 0.5, 0.1, 0.0, 0.5, 0.2, 0.6, 0.9, 0.1, 0.5, 0.9, 0.3, 0.2, 0.7, 0.4, 0.0, 0.5, 0.8, 0.7, 0.3, 0.7, 0.8, 0.4, 0.5, 0.8, 0.0, 0.3, 0.1, 0.4, 0.6, 0.1, 0.9, 0.4, 0.0, 0.7, 0.1, 0.2, 0.4, 0.3, 0.0, 0.3, 0.9, 0.1, 0.0,
+
+L2_zHER_x_n1
+0.4, 0.2, 0.7, 0.9, 0.7, 0.3, 0.5, 0.8, 0.9, 0.6, 0.3, 0.7, 0.6, 0.1, 0.9, 0.2, 0.3, 0.7, 0.9, 0.9, 0.2, 0.3, 0.2, 0.7, 0.8, 0.8, 0.2, 0.5, 0.5, 0.5, 0.8, 0.3, 0.9, 0.1,
+
+L2_zHER_x_n2
+0.4, 0.2, 0.0, 0.0, 0.7, 0.9, 0.0, 0.0, 0.7, 0.3, 0.0, 0.0, 0.5, 0.8, 0.0, 0.0, 0.9, 0.6, 0.0, 0.0, 0.3, 0.7, 0.0, 0.0, 0.6, 0.1, 0.0, 0.0, 0.9, 0.2, 0.0, 0.0, 0.3, 0.7, 0.0, 0.0, 0.9, 0.9, 0.0, 0.0, 0.2, 0.3, 0.0, 0.0, 0.2, 0.7, 0.0, 0.0, 0.8, 0.8, 0.0, 0.0, 0.2, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.8, 0.3, 0.0, 0.0, 0.9, 0.1, 0.0, 0.0,
+
+L2_zHER_o_N
+1.1, 0.0, 1.26, 0.18, 0.94, 0.12, 1.26, -0.12, 1.28, 0.84, 0.66, 0.38, 0.46, 0.88, 1.0, 0.8, 0.76, -0.02, 1.34, 0.62, 0.54, 0.02, 0.32, 0.26, 1.18, 0.34, 0.38, 0.24, 0.6, 0.8, 1.08, 0.34, 0.68, 0.34, 1.26, -0.18, 1.7, 0.0, 1.26, 1.02, 1.87, 0.09, 1.87, 1.09, 1.44, 0.58, 1.21, 1.07, 0.91, 1.37, 1.44, 0.38, 2.24, 0.38, 0.71, 0.77, 1.07, 0.19, 1.68, 1.06, 0.89, 0.13, 0.9, 1.0, 1.13, 1.01, 1.32, 0.94, 0.94, -0.12, 1.26, -1.02, 0.78, 0.0, 0.79, 0.49, 1.21, -0.05, 0.92, 0.1, 0.85, 0.81, 0.79, 1.03, 0.92, -0.2, 1.1, 0.34, 0.73, 0.05, 1.05, 0.27, 1.6, 0.18, 1.09, 0.11, 0.6, 0.4, 1.35, 0.13, 1.46, 1.0, 1.26, 0.12, 1.87, -0.09, 0.79, -0.49, 1.39, 0.0, 1.73, 0.72, 1.01, 0.29, 0.48, 0.73, 1.21, 1.32, 1.11, 0.79, 1.57, 0.77, 0.74, 0.21, 1.36, 0.61, 1.54, 0.34, 0.9, 0.81, 1.35, 0.25, 0.84, 0.79, 1.33, 1.07, 1.28, -0.84, 1.87, -1.09, 1.21, 0.05, 1.73, -0.72, 1.77, 0.0, 1.29, 0.05, 1.4, 0.47, 1.53, 0.76, 0.99, 0.05, 1.55, -0.07, 0.86, 0.75, 0.7, -0.01, 1.4, -0.04, 1.38, 0.57, 1.25, 0.55, 1.5, 0.51, 1.17, 1.25, 0.66, -0.38, 1.44, -0.58, 0.92, -0.1, 1.01, -0.29, 1.29, -0.05, 1.28, 0.0, 0.55, 0.79, 0.81, 1.27, 1.48, 0.2, 1.2, 0.96, 0.47, 0.65, 1.45, 0.23, 0.9, 0.62, 1.11, 0.89, 1.2, 1.0, 1.35, 1.17, 0.64, 0.9, 0.46, -0.88, 1.21, -1.07, 0.85, -0.81, 0.48, -0.73, 1.4, -0.47, 0.55, -0.79, 0.67, 0.0, 1.06, 0.87, 0.45, 0.51, 1.03, 0.15, 0.35, 0.14, 0.89, 0.4, 1.06, -0.1, 0.47, -0.18, 0.85, 0.35, 0.91, 0.6, 1.35, 0.33, 1.0, -0.8, 0.91, -1.37, 0.79, -1.03, 1.21, -1.32, 1.53, -0.76, 0.81, -1.27, 1.06, -0.87, 1.65, 0.0, 0.61, -0.27, 1.49, -0.13, 0.84, 0.57, 0.52, -0.39, 1.18, 0.04, 1.08, -0.01, 0.75, 0.35, 1.28, 0.19, 1.33, 0.99, 0.76, 0.02, 1.44, -0.38, 0.92, 0.2, 1.11, -0.79, 0.99, -0.05, 1.48, -0.2, 0.45, -0.51, 0.61, 0.27, 1.08, 0.0, 1.3, 1.26, 1.07, 0.25, 0.65, 0.03, 1.4, 0.42, 1.21, 0.29, 1.4, 0.6, 0.55, 0.87, 1.14, 1.3, 1.34, -0.62, 2.24, -0.38, 1.1, -0.34, 1.57, -0.77, 1.55, 0.07, 1.2, -0.96, 1.03, -0.15, 1.49, 0.13, 1.3, -1.26, 1.92, 0.0, 0.55, 0.11, 1.61, -0.25, 2.34, 0.2, 1.43, 0.23, 1.3, 0.8, 1.39, 0.55, 1.5, 1.12, 0.54, -0.02, 0.71, -0.77, 0.73, -0.05, 0.74, -0.21, 0.86, -0.75, 0.47, -0.65, 0.35, -0.14, 0.84, -0.57, 1.07, -0.25, 0.55, -0.11, 0.23, 0.0, 0.95, 0.22, 1.2, 0.38, 0.29, 0.56, 1.05, 0.85, 0.55, 0.28, 0.31, 0.75, 0.32, -0.26, 1.07, -0.19, 1.05, -0.27, 1.36, -0.61, 0.7, 0.01, 1.45, -0.23, 0.89, -0.4, 0.52, 0.39, 0.65, -0.03, 1.61, 0.25, 0.95, -0.22, 0.63, 0.0, 1.22, 0.6, 0.99, 0.94, 0.55, 0.75, 1.27, 0.8, 0.45, 1.31, 1.18, -0.34, 1.68, -1.06, 1.6, -0.18, 1.54, -0.34, 1.4, 0.04, 0.9, -0.62, 1.06, 0.1, 1.18, -0.04, 1.4, -0.42, 2.34, -0.2, 1.2, -0.38, 1.22, -0.6, 1.68, 0.0, 1.06, 0.56, 1.5, 0.3, 1.58, 1.2, 1.2, 1.14, 0.38, -0.24, 0.89, -0.13, 1.09, -0.11, 0.9, -0.81, 1.38, -0.57, 1.11, -0.89, 0.47, 0.18, 1.08, 0.01, 1.21, -0.29, 1.43, -0.23, 0.29, -0.56, 0.99, -0.94, 1.06, -0.56, 1.09, 0.0, 0.65, 0.25, 0.71, 0.94, 0.33, 1.33, 0.6, -0.8, 0.9, -1.0, 0.6, -0.4, 1.35, -0.25, 1.25, -0.55, 1.2, -1.0, 0.85, -0.35, 0.75, -0.35, 1.4, -0.6, 1.3, -0.8, 1.05, -0.85, 0.55, -0.75, 1.5, -0.3, 0.65, -0.25, 0.9, 0.0, 1.25, 0.35, 0.7, 0.8, 1.08, -0.34, 1.13, -1.01, 1.35, -0.13, 0.84, -0.79, 1.5, -0.51, 1.35, -1.17, 0.91, -0.6, 1.28, -0.19, 0.55, -0.87, 1.39, -0.55, 0.55, -0.28, 1.27, -0.8, 1.58, -1.2, 0.71, -0.94, 1.25, -0.35, 1.03, 0.0, 1.05, 1.09, 0.68, -0.34, 1.32, -0.94, 1.46, -1.0, 1.33, -1.07, 1.17, -1.25, 0.64, -0.9, 1.35, -0.33, 1.33, -0.99, 1.14, -1.3, 1.5, -1.12, 0.31, -0.75, 0.45, -1.31, 1.2, -1.14, 0.33, -1.33, 0.7, -0.8, 1.05, -1.09, 0.92, 0.0,
+
+L2_zHER_o_N_pu
+1.1, 0.0, 1.26, 0.18, 0.94, 0.12, 1.26, -0.12, 1.28, 0.84, 0.66, 0.38, 0.46, 0.88, 1.0, 0.8, 0.76, -0.02, 1.34, 0.62, 0.54, 0.02, 0.32, 0.26, 1.18, 0.34, 0.38, 0.24, 0.6, 0.8, 1.08, 0.34, 0.68, 0.34, 1.7, 0.0, 1.26, 1.02, 1.87, 0.09, 1.87, 1.09, 1.44, 0.58, 1.21, 1.07, 0.91, 1.37, 1.44, 0.38, 2.24, 0.38, 0.71, 0.77, 1.07, 0.19, 1.68, 1.06, 0.89, 0.13, 0.9, 1.0, 1.13, 1.01, 1.32, 0.94, 0.78, 0.0, 0.79, 0.49, 1.21, -0.05, 0.92, 0.1, 0.85, 0.81, 0.79, 1.03, 0.92, -0.2, 1.1, 0.34, 0.73, 0.05, 1.05, 0.27, 1.6, 0.18, 1.09, 0.11, 0.6, 0.4, 1.35, 0.13, 1.46, 1.0, 1.39, 0.0, 1.73, 0.72, 1.01, 0.29, 0.48, 0.73, 1.21, 1.32, 1.11, 0.79, 1.57, 0.77, 0.74, 0.21, 1.36, 0.61, 1.54, 0.34, 0.9, 0.81, 1.35, 0.25, 0.84, 0.79, 1.33, 1.07, 1.77, 0.0, 1.29, 0.05, 1.4, 0.47, 1.53, 0.76, 0.99, 0.05, 1.55, -0.07, 0.86, 0.75, 0.7, -0.01, 1.4, -0.04, 1.38, 0.57, 1.25, 0.55, 1.5, 0.51, 1.17, 1.25, 1.28, 0.0, 0.55, 0.79, 0.81, 1.27, 1.48, 0.2, 1.2, 0.96, 0.47, 0.65, 1.45, 0.23, 0.9, 0.62, 1.11, 0.89, 1.2, 1.0, 1.35, 1.17, 0.64, 0.9, 0.67, 0.0, 1.06, 0.87, 0.45, 0.51, 1.03, 0.15, 0.35, 0.14, 0.89, 0.4, 1.06, -0.1, 0.47, -0.18, 0.85, 0.35, 0.91, 0.6, 1.35, 0.33, 1.65, 0.0, 0.61, -0.27, 1.49, -0.13, 0.84, 0.57, 0.52, -0.39, 1.18, 0.04, 1.08, -0.01, 0.75, 0.35, 1.28, 0.19, 1.33, 0.99, 1.08, 0.0, 1.3, 1.26, 1.07, 0.25, 0.65, 0.03, 1.4, 0.42, 1.21, 0.29, 1.4, 0.6, 0.55, 0.87, 1.14, 1.3, 1.92, 0.0, 0.55, 0.11, 1.61, -0.25, 2.34, 0.2, 1.43, 0.23, 1.3, 0.8, 1.39, 0.55, 1.5, 1.12, 0.23, 0.0, 0.95, 0.22, 1.2, 0.38, 0.29, 0.56, 1.05, 0.85, 0.55, 0.28, 0.31, 0.75, 0.63, 0.0, 1.22, 0.6, 0.99, 0.94, 0.55, 0.75, 1.27, 0.8, 0.45, 1.31, 1.68, 0.0, 1.06, 0.56, 1.5, 0.3, 1.58, 1.2, 1.2, 1.14, 1.09, 0.0, 0.65, 0.25, 0.71, 0.94, 0.33, 1.33, 0.9, 0.0, 1.25, 0.35, 0.7, 0.8, 1.03, 0.0, 1.05, 1.09, 0.92, 0.0,
+
+L2_cHER2_A_nn
+0.699999988079, 0.0, 0.300000011921, 0.40000000596, 0.40000000596, 0.40000000596, 0.40000000596, 0.20000000298, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.899999976158, 0.699999988079, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.800000011921, 0.600000023842, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.699999988079, 0.300000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, -0.40000000596, 0.5, 0.0, 0.20000000298, 0.600000023842, 0.600000023842, 0.800000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.20000000298, 0.10000000149, 0.5, 0.800000011921, 0.800000011921, 0.800000011921, 0.20000000298, 0.20000000298, 0.10000000149, 0.899999976158, 0.600000023842, 0.300000011921, 0.600000023842, 0.800000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.10000000149, 0.10000000149, 0.899999976158, 0.40000000596, 0.40000000596, 0.40000000596, -0.40000000596, 0.20000000298, -0.600000023842, 0.5, 0.0, 0.10000000149, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.20000000298, 0.40000000596, 0.40000000596, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.5, 0.600000023842, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.20000000298, 0.10000000149, 0.800000011921, 0.699999988079, 0.300000011921, 0.40000000596, -0.20000000298, 0.600000023842, -0.800000011921, 0.10000000149, -0.899999976158, 0.800000011921, 0.0, 0.300000011921, 0.20000000298, 0.800000011921, 0.899999976158, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.10000000149, 0.899999976158, 0.40000000596, 0.800000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.10000000149, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.20000000298, 0.699999988079, 0.10000000149, 0.300000011921, 0.600000023842, -0.899999976158, 0.300000011921, -0.899999976158, 0.40000000596, -0.10000000149, 0.300000011921, -0.20000000298, 0.10000000149, 0.0, 0.899999976158, 0.20000000298, 0.10000000149, 0.600000023842, 0.5, 0.20000000298, 0.600000023842, 0.800000011921, 0.600000023842, 0.20000000298, 0.5, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.300000011921, -0.10000000149, 0.699999988079, -0.699999988079, 0.600000023842, -0.20000000298, 0.800000011921, -0.899999976158, 0.899999976158, -0.20000000298, 0.800000011921, 0.0, 0.600000023842, 0.600000023842, 0.899999976158, 0.20000000298, 0.800000011921, 0.5, 0.899999976158, 0.699999988079, 0.40000000596, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.40000000596, 0.5, 0.699999988079, 0.5, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, -0.699999988079, 0.20000000298, -0.10000000149, 0.40000000596, -0.40000000596, 0.5, -0.10000000149, 0.10000000149, -0.600000023842, 0.600000023842, -0.600000023842, 0.899999976158, 0.0, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.10000000149, 0.800000011921, 0.699999988079, 0.5, 0.699999988079, 0.10000000149, 0.800000011921, 0.600000023842, -0.5, 0.5, -0.800000011921, 0.899999976158, -0.699999988079, 0.800000011921, -0.699999988079, 0.5, -0.20000000298, 0.899999976158, -0.20000000298, 0.899999976158, -0.20000000298, 0.10000000149, 0.0, 0.40000000596, 0.699999988079, 0.699999988079, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.899999976158, 0.899999976158, 0.800000011921, 0.800000011921, 0.10000000149, 0.800000011921, 0.5, 0.600000023842, 0.699999988079, 0.40000000596, 0.800000011921, -0.40000000596, 0.800000011921, -0.800000011921, 0.800000011921, -0.300000011921, 0.699999988079, -0.899999976158, 0.600000023842, -0.800000011921, 0.800000011921, -0.5, 0.800000011921, -0.699999988079, 0.40000000596, -0.699999988079, 0.5, 0.0, 0.10000000149, 0.300000011921, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.300000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.600000023842, 0.20000000298, 0.899999976158, 0.40000000596, 0.300000011921, 0.699999988079, -0.899999976158, 0.20000000298, -0.20000000298, 0.300000011921, -0.5, 0.10000000149, -0.899999976158, 0.600000023842, -0.20000000298, 0.899999976158, -0.699999988079, 0.300000011921, -0.10000000149, 0.699999988079, -0.5, 0.10000000149, -0.300000011921, 0.899999976158, 0.0, 0.899999976158, 0.899999976158, 0.800000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.899999976158, 0.300000011921, 0.699999988079, 0.5, 0.800000011921, -0.600000023842, 0.10000000149, -0.899999976158, 0.600000023842, -0.10000000149, 0.40000000596, -0.800000011921, 0.5, -0.5, 0.40000000596, -0.899999976158, 0.5, -0.699999988079, 0.300000011921, -0.899999976158, 0.5, -0.699999988079, 0.899999976158, -0.899999976158, 0.300000011921, 0.0, 0.5, 0.20000000298, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.699999988079, -0.600000023842, 0.600000023842, -0.300000011921, 0.600000023842, -0.800000011921, 0.40000000596, -0.20000000298, 0.20000000298, -0.800000011921, 0.300000011921, -0.699999988079, 0.5, -0.40000000596, 0.40000000596, -0.800000011921, 0.20000000298, -0.10000000149, 0.800000011921, -0.899999976158, 0.5, -0.20000000298, 0.699999988079, 0.0, 0.40000000596, 0.899999976158, 0.699999988079, 0.300000011921, 0.800000011921, 0.699999988079, 0.800000011921, 0.10000000149, 0.600000023842, 0.5, 0.600000023842, -0.40000000596, 0.600000023842, -0.800000011921, 0.40000000596, -0.20000000298, 0.40000000596, -0.10000000149, 0.10000000149, -0.5, 0.10000000149, -0.40000000596, 0.5, -0.20000000298, 0.899999976158, -0.899999976158, 0.10000000149, -0.300000011921, 0.699999988079, -0.800000011921, 0.20000000298, -0.899999976158, 0.40000000596, -0.899999976158, 0.10000000149, 0.0, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.699999988079, -0.300000011921, 0.10000000149, -0.20000000298, 0.600000023842, -0.300000011921, 0.699999988079, -0.800000011921, 0.20000000298, -0.800000011921, 0.10000000149, -0.40000000596, 0.40000000596, -0.10000000149, 0.800000011921, -0.800000011921, 0.10000000149, -0.40000000596, 0.300000011921, -0.40000000596, 0.300000011921, -0.10000000149, 0.699999988079, -0.300000011921, 0.300000011921, -0.800000011921, 0.5, 0.0, 0.20000000298, 0.300000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.899999976158, -0.10000000149, 0.800000011921, -0.10000000149, 0.5, -0.20000000298, 0.40000000596, -0.10000000149, 0.10000000149, -0.20000000298, 0.5, -0.699999988079, 0.800000011921, -0.699999988079, 0.10000000149, -0.800000011921, 0.899999976158, -0.600000023842, 0.600000023842, -0.5, 0.10000000149, -0.20000000298, 0.800000011921, -0.699999988079, 0.600000023842, -0.20000000298, 0.20000000298, -0.300000011921, 0.5, 0.0, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.40000000596, -0.10000000149, 0.10000000149, -0.899999976158, 0.10000000149, -0.800000011921, 0.20000000298, -0.699999988079, 0.800000011921, -0.20000000298, 0.5, -0.600000023842, 0.5, -0.699999988079, 0.5, -0.600000023842, 0.20000000298, -0.899999976158, 0.899999976158, -0.300000011921, 0.5, -0.10000000149, 0.800000011921, -0.10000000149, 0.800000011921, -0.800000011921, 0.20000000298, -0.899999976158, 0.5, -0.300000011921, 0.300000011921, 0.0, 0.5, 0.5, 0.40000000596, -0.300000011921, 0.40000000596, -0.40000000596, 0.699999988079, -0.300000011921, 0.10000000149, -0.300000011921, 0.800000011921, -0.40000000596, 0.40000000596, -0.10000000149, 0.10000000149, -0.800000011921, 0.699999988079, -0.40000000596, 0.40000000596, -0.300000011921, 0.699999988079, -0.5, 0.899999976158, -0.300000011921, 0.600000023842, -0.5, 0.20000000298, -0.300000011921, 0.40000000596, -0.10000000149, 0.40000000596, -0.899999976158, 0.5, -0.5, 0.10000000149, 0.0,
+
+L2_cHER2_A_nn_pu
+0.699999988079, 0.0, 0.300000011921, 0.40000000596, 0.40000000596, 0.40000000596, 0.40000000596, 0.20000000298, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.899999976158, 0.699999988079, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.800000011921, 0.600000023842, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.699999988079, 0.300000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, 0.5, 0.0, 0.20000000298, 0.600000023842, 0.600000023842, 0.800000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.20000000298, 0.10000000149, 0.5, 0.800000011921, 0.800000011921, 0.800000011921, 0.20000000298, 0.20000000298, 0.10000000149, 0.899999976158, 0.600000023842, 0.300000011921, 0.600000023842, 0.800000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.10000000149, 0.10000000149, 0.899999976158, 0.40000000596, 0.40000000596, 0.5, 0.0, 0.10000000149, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.20000000298, 0.40000000596, 0.40000000596, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.5, 0.600000023842, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.20000000298, 0.10000000149, 0.800000011921, 0.699999988079, 0.300000011921, 0.800000011921, 0.0, 0.300000011921, 0.20000000298, 0.800000011921, 0.899999976158, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.10000000149, 0.899999976158, 0.40000000596, 0.800000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.10000000149, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.20000000298, 0.699999988079, 0.10000000149, 0.300000011921, 0.10000000149, 0.0, 0.899999976158, 0.20000000298, 0.10000000149, 0.600000023842, 0.5, 0.20000000298, 0.600000023842, 0.800000011921, 0.600000023842, 0.20000000298, 0.5, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.800000011921, 0.0, 0.600000023842, 0.600000023842, 0.899999976158, 0.20000000298, 0.800000011921, 0.5, 0.899999976158, 0.699999988079, 0.40000000596, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.40000000596, 0.5, 0.699999988079, 0.5, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, 0.0, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.10000000149, 0.800000011921, 0.699999988079, 0.5, 0.699999988079, 0.10000000149, 0.800000011921, 0.10000000149, 0.0, 0.40000000596, 0.699999988079, 0.699999988079, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.899999976158, 0.899999976158, 0.800000011921, 0.800000011921, 0.10000000149, 0.800000011921, 0.5, 0.600000023842, 0.699999988079, 0.40000000596, 0.5, 0.0, 0.10000000149, 0.300000011921, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.300000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.600000023842, 0.20000000298, 0.899999976158, 0.40000000596, 0.300000011921, 0.899999976158, 0.0, 0.899999976158, 0.899999976158, 0.800000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.899999976158, 0.300000011921, 0.699999988079, 0.5, 0.300000011921, 0.0, 0.5, 0.20000000298, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.699999988079, 0.0, 0.40000000596, 0.899999976158, 0.699999988079, 0.300000011921, 0.800000011921, 0.699999988079, 0.800000011921, 0.10000000149, 0.600000023842, 0.5, 0.10000000149, 0.0, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.5, 0.0, 0.20000000298, 0.300000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.5, 0.0, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.0, 0.5, 0.5, 0.10000000149, 0.0,
+
+L2_cHER2_x_n1
+0.899999976158, 0.300000011921, 0.5, 0.5, 0.300000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.300000011921, 0.5, 0.40000000596, 0.699999988079, 0.300000011921, 0.40000000596, 0.300000011921, 0.5, 0.600000023842, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.699999988079, 0.20000000298, 0.699999988079, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.20000000298, 0.699999988079, 0.600000023842, 0.800000011921, 0.5,
+
+L2_cHER2_x_n2
+0.899999976158, 0.300000011921, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.300000011921, 0.899999976158, 0.0, 0.0, 0.899999976158, 0.10000000149, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.40000000596, 0.699999988079, 0.0, 0.0, 0.300000011921, 0.40000000596, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.600000023842, 0.20000000298, 0.0, 0.0, 0.600000023842, 0.20000000298, 0.0, 0.0, 0.600000023842, 0.699999988079, 0.0, 0.0, 0.20000000298, 0.699999988079, 0.0, 0.0, 0.40000000596, 0.300000011921, 0.0, 0.0, 0.20000000298, 0.699999988079, 0.0, 0.0, 0.800000011921, 0.20000000298, 0.0, 0.0, 0.699999988079, 0.600000023842, 0.0, 0.0, 0.800000011921, 0.5, 0.0, 0.0,
+
+L2_cHER2_y_n1
+0.899999976158, 0.300000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.600000023842, 0.40000000596, 0.600000023842, 0.600000023842, 0.300000011921, 0.5, 0.899999976158, 0.10000000149, 0.5, 0.899999976158, 0.20000000298, 0.899999976158, 0.899999976158, 0.899999976158, 0.5, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.40000000596, 0.600000023842, 0.899999976158, 0.300000011921, 0.300000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.600000023842,
+
+L2_cHER2_y_n2
+0.899999976158, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.5, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.5, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.5, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.5, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.600000023842, 0.0, 0.0, 0.0, 0.0,
+
+L2_cHER2_o_N
+2.49999991655, 0.0, 1.70999999285, -0.229999978542, 1.36000001222, -0.379999935329, 1.89999997839, 0.200000026077, 1.74000005484, 0.180000002384, 1.29000002205, -0.769999945462, 2.12999994501, 0.610000004023, 1.74000002503, -0.519999932051, 1.85000002384, -0.349999931455, 2.37999995917, 0.360000039041, 2.2700000155, -0.509999885559, 1.41999999464, -0.359999930263, 1.71000004053, 0.0700000274181, 1.90000000149, -0.899999900162, 2.03999998182, -0.0199999797344, 1.63000000387, -0.889999989271, 1.81000001371, -0.329999963641, 1.70999999285, 0.229999978542, 1.80000001192, 0.0, 1.25000001937, 0.250000067055, 1.7900000146, 1.37000002816, 1.41000005245, 0.729999996424, 1.80000000298, 0.350000023842, 1.15000000969, 0.400000003725, 1.71000000477, 0.430000044107, 1.89000001758, 0.67000005424, 1.63999999523, 0.420000031888, 1.64000000864, 0.570000033379, 1.51000003457, -0.219999963343, 1.56000005245, 0.930000029206, 1.41000001073, -0.319999949932, 1.78000002921, 0.440000028014, 1.45000002086, 0.599999971688, 1.76000003159, 0.430000029206, 1.36000001222, 0.379999935329, 1.25000001937, -0.250000067055, 1.10000000894, 0.0, 1.02000000805, 1.45999997348, 1.34000003546, 0.319999994636, 1.44000002354, 0.120000003576, 0.960000017434, 1.07999995992, 2.07999994725, 0.73999997288, 1.94999998659, 0.250000010431, 1.65999998689, 1.07999995768, 1.9399999997, 0.119999993145, 1.33000001729, 0.590000005662, 1.16000002414, 0.579999999404, 1.80999999732, 0.330000017285, 1.22000002146, 0.460000001788, 1.28000000238, 0.639999983311, 1.78000001281, 0.439999995232, 1.89999997839, -0.200000026077, 1.7900000146, -1.37000002816, 1.02000000805, -1.45999997348, 1.96000002861, 0.0, 1.28000003964, -0.460000006258, 1.64000002876, 0.21999998495, 1.65999997646, -0.0200000050664, 1.72000001624, -0.239999973625, 1.41000001594, 0.230000026226, 1.43999998853, 0.300000024587, 1.58000002101, -0.139999940842, 1.03000001058, -0.569999991655, 1.34000003397, -0.220000000596, 1.73000000015, -0.289999949038, 1.26000003979, 0.0600000025332, 1.12000002593, -0.0800000321865, 1.2000000298, -0.179999996424, 1.74000005484, -0.180000002384, 1.41000005245, -0.729999996424, 1.34000003546, -0.319999994636, 1.28000003964, 0.460000006258, 1.06000005394, 0.0, 1.90000000596, 0.0200000065565, 0.84000003323, 0.960000011474, 1.58000002027, 0.0600000017881, 1.59000005037, 0.870000031888, 1.80000005066, 0.620000009537, 1.88000003219, 0.420000015497, 1.05000002235, 0.45000000447, 0.900000046194, 0.740000004172, 1.37000002146, 0.530000017285, 0.940000047386, 0.620000021458, 2.04000005931, 0.119999972284, 2.00000006855, 0.600000008941, 1.29000002205, 0.769999945462, 1.80000000298, -0.350000023842, 1.44000002354, -0.120000003576, 1.64000002876, -0.21999998495, 1.90000000596, -0.0200000065565, 1.74000001311, 0.0, 1.32000002965, 1.21999999464, 2.06999995887, 0.190000001192, 1.79000000268, 0.520000012517, 2.16999996036, 1.20999997348, 1.75999998987, 0.979999981523, 1.14000000566, 0.529999981523, 0.890000026524, 0.770000006557, 1.3799999845, 0.350000016391, 1.17000002593, 1.12999998897, 1.65000001788, 0.589999993742, 1.47000003338, 0.389999987781, 2.12999994501, -0.610000004023, 1.15000000969, -0.400000003725, 0.960000017434, -1.07999995992, 1.65999997646, 0.0200000050664, 0.84000003323, -0.960000011474, 1.32000002965, -1.21999999464, 1.51999998569, 0.0, 1.72999998227, -0.289999984056, 1.78000001878, 0.389999992251, 1.49000001907, 0.0699999991059, 1.62000000879, 0.0600000181794, 1.01000000402, -0.279999969602, 1.23000001654, 0.0900000071526, 1.19000001386, -0.539999960959, 1.75000001788, 0.629999991953, 1.56999998868, 0.0699999700487, 1.23000001356, 0.410000016689, 1.74000002503, 0.519999932051, 1.71000000477, -0.430000044107, 2.07999994725, -0.73999997288, 1.72000001624, 0.239999973625, 1.58000002027, -0.0600000017881, 2.06999995887, -0.190000001192, 1.72999998227, 0.289999984056, 1.29999998957, 0.0, 1.39000000715, 0.969999991655, 1.89999998957, 1.11999999017, 1.82999999046, 1.06999998569, 1.43999998331, 0.580000011325, 1.75, 1.28999997139, 2.15999998838, 0.66000002414, 0.920000018477, 1.48000000089, 1.85000001043, 0.78999997288, 1.9700000006, 0.889999986291, 1.85000002384, 0.349999931455, 1.89000001758, -0.67000005424, 1.94999998659, -0.250000010431, 1.41000001594, -0.230000026226, 1.59000005037, -0.870000031888, 1.79000000268, -0.520000012517, 1.78000001878, -0.389999992251, 1.39000000715, -0.969999991655, 1.10000000894, 0.0, 1.12000001103, 0.440000008643, 1.72999998897, 0.659999989867, 1.0899999848, -0.120000011027, 0.890000038445, 0.479999997914, 1.31000000179, 0.0200000035763, 1.47999999642, 1.16000000328, 1.16000002116, 0.96999991715, 1.37000001848, 0.63999997586, 2.37999995917, -0.360000039041, 1.63999999523, -0.420000031888, 1.65999998689, -1.07999995768, 1.43999998853, -0.300000024587, 1.80000005066, -0.620000009537, 2.16999996036, -1.20999997348, 1.49000001907, -0.0699999991059, 1.89999998957, -1.11999999017, 1.12000001103, -0.440000008643, 2.33999998629, 0.0, 2.54999996573, 0.370000005066, 1.82999999046, 0.189999990761, 1.77000001848, 0.769999997616, 1.65000000894, -0.469999969304, 1.74000003099, 0.919999982715, 2.34999996722, -0.0500000476837, 2.22999998748, 0.48999997735, 2.2700000155, 0.509999885559, 1.64000000864, -0.570000033379, 1.9399999997, -0.119999993145, 1.58000002101, 0.139999940842, 1.88000003219, -0.420000015497, 1.75999998987, -0.979999981523, 1.62000000879, -0.0600000181794, 1.82999999046, -1.06999998569, 1.72999998897, -0.659999989867, 2.54999996573, -0.370000005066, 2.15999998093, 0.0, 1.69999997467, -0.130000005364, 1.31000003755, 1.28999996245, 2.01999998719, -0.189999992251, 1.07000002444, 0.849999983609, 2.07000000656, 0.089999935627, 2.40999999285, 0.68999997437, 1.41999999464, 0.359999930263, 1.51000003457, 0.219999963343, 1.33000001729, -0.590000005662, 1.03000001058, 0.569999991655, 1.05000002235, -0.45000000447, 1.14000000566, -0.529999981523, 1.01000000402, 0.279999969602, 1.43999998331, -0.580000011325, 1.0899999848, 0.120000011027, 1.82999999046, -0.189999990761, 1.69999997467, 0.130000005364, 1.47999997854, 0.0, 1.03000002027, 1.37999998301, 1.83999996245, 0.500000025332, 1.33000002623, 1.20999999434, 1.84000002354, 0.309999983907, 1.51000004053, 0.959999997318, 1.71000004053, -0.0700000274181, 1.56000005245, -0.930000029206, 1.16000002414, -0.579999999404, 1.34000003397, 0.220000000596, 0.900000046194, -0.740000004172, 0.890000026524, -0.770000006557, 1.23000001654, -0.0900000071526, 1.75, -1.28999997139, 0.890000038445, -0.479999997914, 1.77000001848, -0.769999997616, 1.31000003755, -1.28999996245, 1.03000002027, -1.37999998301, 0.820000040829, 0.0, 1.21000003457, 0.280000023246, 1.37000006616, 0.370000006557, 1.78000005007, 0.459999976456, 1.22000005126, 0.20000000298, 1.90000000149, 0.899999900162, 1.41000001073, 0.319999949932, 1.80999999732, -0.330000017285, 1.73000000015, 0.289999949038, 1.37000002146, -0.530000017285, 1.3799999845, -0.350000016391, 1.19000001386, 0.539999960959, 2.15999998838, -0.66000002414, 1.31000000179, -0.0200000035763, 1.65000000894, 0.469999969304, 2.01999998719, 0.189999992251, 1.83999996245, -0.500000025332, 1.21000003457, -0.280000023246, 1.99999995828, 0.0, 1.13000003517, 1.04999999851, 1.76000001967, 1.14999991506, 1.83000003219, 0.679999974072, 2.03999998182, 0.0199999797344, 1.78000002921, -0.440000028014, 1.22000002146, -0.460000001788, 1.26000003979, -0.0600000025332, 0.940000047386, -0.620000021458, 1.17000002593, -1.12999998897, 1.75000001788, -0.629999991953, 0.920000018477, -1.48000000089, 1.47999999642, -1.16000000328, 1.74000003099, -0.919999982715, 1.07000002444, -0.849999983609, 1.33000002623, -1.20999999434, 1.37000006616, -0.370000006557, 1.13000003517, -1.04999999851, 1.10000003278, 0.0, 1.21000002861, -0.270000015497, 1.23000004113, 0.589999959469, 1.63000000387, 0.889999989271, 1.45000002086, -0.599999971688, 1.28000000238, -0.639999983311, 1.12000002593, 0.0800000321865, 2.04000005931, -0.119999972284, 1.65000001788, -0.589999993742, 1.56999998868, -0.0699999700487, 1.85000001043, -0.78999997288, 1.16000002116, -0.96999991715, 2.34999996722, 0.0500000476837, 2.07000000656, -0.089999935627, 1.84000002354, -0.309999983907, 1.78000005007, -0.459999976456, 1.76000001967, -1.14999991506, 1.21000002861, 0.270000015497, 1.54000006378, 0.0, 1.70000003874, 0.86000002116, 1.81000001371, 0.329999963641, 1.76000003159, -0.430000029206, 1.78000001281, -0.439999995232, 1.2000000298, 0.179999996424, 2.00000006855, -0.600000008941, 1.47000003338, -0.389999987781, 1.23000001356, -0.410000016689, 1.9700000006, -0.889999986291, 1.37000001848, -0.63999997586, 2.22999998748, -0.48999997735, 2.40999999285, -0.68999997437, 1.51000004053, -0.959999997318, 1.22000005126, -0.20000000298, 1.83000003219, -0.679999974072, 1.23000004113, -0.589999959469, 1.70000003874, -0.86000002116, 1.34000004441, 0.0,
+
+L2_cHER2_o_N_pu
+2.49999991655, 0.0, 1.70999999285, -0.229999978542, 1.36000001222, -0.379999935329, 1.89999997839, 0.200000026077, 1.74000005484, 0.180000002384, 1.29000002205, -0.769999945462, 2.12999994501, 0.610000004023, 1.74000002503, -0.519999932051, 1.85000002384, -0.349999931455, 2.37999995917, 0.360000039041, 2.2700000155, -0.509999885559, 1.41999999464, -0.359999930263, 1.71000004053, 0.0700000274181, 1.90000000149, -0.899999900162, 2.03999998182, -0.0199999797344, 1.63000000387, -0.889999989271, 1.81000001371, -0.329999963641, 1.80000001192, 0.0, 1.25000001937, 0.250000067055, 1.7900000146, 1.37000002816, 1.41000005245, 0.729999996424, 1.80000000298, 0.350000023842, 1.15000000969, 0.400000003725, 1.71000000477, 0.430000044107, 1.89000001758, 0.67000005424, 1.63999999523, 0.420000031888, 1.64000000864, 0.570000033379, 1.51000003457, -0.219999963343, 1.56000005245, 0.930000029206, 1.41000001073, -0.319999949932, 1.78000002921, 0.440000028014, 1.45000002086, 0.599999971688, 1.76000003159, 0.430000029206, 1.10000000894, 0.0, 1.02000000805, 1.45999997348, 1.34000003546, 0.319999994636, 1.44000002354, 0.120000003576, 0.960000017434, 1.07999995992, 2.07999994725, 0.73999997288, 1.94999998659, 0.250000010431, 1.65999998689, 1.07999995768, 1.9399999997, 0.119999993145, 1.33000001729, 0.590000005662, 1.16000002414, 0.579999999404, 1.80999999732, 0.330000017285, 1.22000002146, 0.460000001788, 1.28000000238, 0.639999983311, 1.78000001281, 0.439999995232, 1.96000002861, 0.0, 1.28000003964, -0.460000006258, 1.64000002876, 0.21999998495, 1.65999997646, -0.0200000050664, 1.72000001624, -0.239999973625, 1.41000001594, 0.230000026226, 1.43999998853, 0.300000024587, 1.58000002101, -0.139999940842, 1.03000001058, -0.569999991655, 1.34000003397, -0.220000000596, 1.73000000015, -0.289999949038, 1.26000003979, 0.0600000025332, 1.12000002593, -0.0800000321865, 1.2000000298, -0.179999996424, 1.06000005394, 0.0, 1.90000000596, 0.0200000065565, 0.84000003323, 0.960000011474, 1.58000002027, 0.0600000017881, 1.59000005037, 0.870000031888, 1.80000005066, 0.620000009537, 1.88000003219, 0.420000015497, 1.05000002235, 0.45000000447, 0.900000046194, 0.740000004172, 1.37000002146, 0.530000017285, 0.940000047386, 0.620000021458, 2.04000005931, 0.119999972284, 2.00000006855, 0.600000008941, 1.74000001311, 0.0, 1.32000002965, 1.21999999464, 2.06999995887, 0.190000001192, 1.79000000268, 0.520000012517, 2.16999996036, 1.20999997348, 1.75999998987, 0.979999981523, 1.14000000566, 0.529999981523, 0.890000026524, 0.770000006557, 1.3799999845, 0.350000016391, 1.17000002593, 1.12999998897, 1.65000001788, 0.589999993742, 1.47000003338, 0.389999987781, 1.51999998569, 0.0, 1.72999998227, -0.289999984056, 1.78000001878, 0.389999992251, 1.49000001907, 0.0699999991059, 1.62000000879, 0.0600000181794, 1.01000000402, -0.279999969602, 1.23000001654, 0.0900000071526, 1.19000001386, -0.539999960959, 1.75000001788, 0.629999991953, 1.56999998868, 0.0699999700487, 1.23000001356, 0.410000016689, 1.29999998957, 0.0, 1.39000000715, 0.969999991655, 1.89999998957, 1.11999999017, 1.82999999046, 1.06999998569, 1.43999998331, 0.580000011325, 1.75, 1.28999997139, 2.15999998838, 0.66000002414, 0.920000018477, 1.48000000089, 1.85000001043, 0.78999997288, 1.9700000006, 0.889999986291, 1.10000000894, 0.0, 1.12000001103, 0.440000008643, 1.72999998897, 0.659999989867, 1.0899999848, -0.120000011027, 0.890000038445, 0.479999997914, 1.31000000179, 0.0200000035763, 1.47999999642, 1.16000000328, 1.16000002116, 0.96999991715, 1.37000001848, 0.63999997586, 2.33999998629, 0.0, 2.54999996573, 0.370000005066, 1.82999999046, 0.189999990761, 1.77000001848, 0.769999997616, 1.65000000894, -0.469999969304, 1.74000003099, 0.919999982715, 2.34999996722, -0.0500000476837, 2.22999998748, 0.48999997735, 2.15999998093, 0.0, 1.69999997467, -0.130000005364, 1.31000003755, 1.28999996245, 2.01999998719, -0.189999992251, 1.07000002444, 0.849999983609, 2.07000000656, 0.089999935627, 2.40999999285, 0.68999997437, 1.47999997854, 0.0, 1.03000002027, 1.37999998301, 1.83999996245, 0.500000025332, 1.33000002623, 1.20999999434, 1.84000002354, 0.309999983907, 1.51000004053, 0.959999997318, 0.820000040829, 0.0, 1.21000003457, 0.280000023246, 1.37000006616, 0.370000006557, 1.78000005007, 0.459999976456, 1.22000005126, 0.20000000298, 1.99999995828, 0.0, 1.13000003517, 1.04999999851, 1.76000001967, 1.14999991506, 1.83000003219, 0.679999974072, 1.10000003278, 0.0, 1.21000002861, -0.270000015497, 1.23000004113, 0.589999959469, 1.54000006378, 0.0, 1.70000003874, 0.86000002116, 1.34000004441, 0.0,
+
+L2_zHER2_A_nn
+0.4, 0.0, 0.3, 0.1, 0.4, 0.7, 0.1, 0.2, 0.4, 0.6, 0.2, 0.7, 0.1, 0.1, 0.1, 0.3, 0.8, 0.1, 0.9, 0.5, 0.2, 0.5, 0.9, 0.8, 0.8, 0.4, 0.6, 0.3, 0.1, 0.3, 0.8, 0.7, 0.6, 0.4, 0.3, -0.1, 0.4, 0.0, 0.9, 0.1, 0.4, 0.5, 0.9, 0.3, 0.8, 0.6, 0.2, 0.1, 0.2, 0.7, 0.9, 0.6, 0.8, 0.5, 0.2, 0.2, 0.3, 0.4, 0.8, 0.9, 0.1, 0.5, 0.1, 0.8, 0.7, 0.2, 0.1, 0.1, 0.4, -0.7, 0.9, -0.1, 0.8, 0.0, 0.1, 0.6, 0.2, 0.8, 0.1, 0.5, 0.8, 0.4, 0.1, 0.3, 0.9, 0.3, 0.7, 0.4, 0.4, 0.6, 0.4, 0.5, 0.8, 0.4, 0.4, 0.4, 0.5, 0.4, 0.8, 0.5, 0.1, 0.4, 0.1, -0.2, 0.4, -0.5, 0.1, -0.6, 0.1, 0.0, 0.1, 0.8, 0.7, 0.4, 0.3, 0.8, 0.7, 0.2, 0.9, 0.1, 0.2, 0.3, 0.8, 0.1, 0.4, 0.7, 0.4, 0.8, 0.5, 0.9, 0.6, 0.4, 0.3, 0.2, 0.5, 0.6, 0.4, -0.6, 0.9, -0.3, 0.2, -0.8, 0.1, -0.8, 0.1, 0.0, 0.4, 0.3, 0.1, 0.1, 0.6, 0.9, 0.4, 0.9, 0.5, 0.1, 0.1, 0.1, 0.4, 0.4, 0.9, 0.6, 0.5, 0.4, 0.5, 0.3, 0.6, 0.8, 0.2, 0.6, 0.2, -0.7, 0.8, -0.6, 0.1, -0.5, 0.7, -0.4, 0.4, -0.3, 0.7, 0.0, 0.4, 0.6, 0.5, 0.7, 0.3, 0.9, 0.2, 0.9, 0.2, 0.5, 0.5, 0.7, 0.9, 0.1, 0.1, 0.3, 0.5, 0.2, 0.9, 0.8, 0.8, 0.5, 0.1, -0.1, 0.2, -0.1, 0.8, -0.4, 0.3, -0.8, 0.1, -0.1, 0.4, -0.6, 0.8, 0.0, 0.9, 0.7, 0.2, 0.7, 0.8, 0.2, 0.4, 0.9, 0.3, 0.9, 0.5, 0.7, 0.3, 0.7, 0.5, 0.2, 0.7, 0.6, 0.8, 0.5, 0.1, -0.3, 0.2, -0.7, 0.1, -0.3, 0.7, -0.2, 0.6, -0.9, 0.5, -0.7, 0.9, -0.7, 0.5, 0.0, 0.6, 0.2, 0.7, 0.8, 0.3, 0.7, 0.1, 0.3, 0.1, 0.6, 0.5, 0.3, 0.2, 0.5, 0.3, 0.7, 0.8, 0.8, 0.8, -0.1, 0.9, -0.6, 0.9, -0.3, 0.9, -0.1, 0.4, -0.9, 0.3, -0.9, 0.2, -0.7, 0.6, -0.2, 0.1, 0.0, 0.5, 0.3, 0.2, 0.6, 0.9, 0.9, 0.2, 0.7, 0.6, 0.2, 0.6, 0.8, 0.1, 0.9, 0.1, 0.6, 0.9, -0.5, 0.8, -0.5, 0.7, -0.4, 0.2, -0.3, 0.5, -0.1, 0.2, -0.9, 0.8, -0.2, 0.7, -0.8, 0.5, -0.3, 0.7, 0.0, 0.2, 0.2, 0.7, 0.1, 0.8, 0.9, 0.7, 0.6, 0.8, 0.1, 0.2, 0.2, 0.2, 0.1, 0.2, -0.5, 0.2, -0.2, 0.4, -0.6, 0.8, -0.1, 0.1, -0.1, 0.2, -0.5, 0.4, -0.9, 0.3, -0.7, 0.2, -0.6, 0.2, -0.2, 0.3, 0.0, 0.6, 0.8, 0.4, 0.5, 0.8, 0.4, 0.4, 0.3, 0.3, 0.9, 0.7, 0.8, 0.9, -0.8, 0.3, -0.4, 0.4, -0.5, 0.4, -0.7, 0.4, -0.4, 0.5, -0.7, 0.3, -0.9, 0.1, -0.3, 0.9, -0.9, 0.7, -0.1, 0.6, -0.8, 0.3, 0.0, 0.6, 0.4, 0.5, 0.6, 0.2, 0.6, 0.6, 0.6, 0.2, 0.1, 0.8, -0.4, 0.8, -0.9, 0.8, -0.4, 0.4, -0.8, 0.9, -0.6, 0.9, -0.1, 0.5, -0.7, 0.1, -0.6, 0.2, -0.7, 0.8, -0.9, 0.4, -0.5, 0.6, -0.4, 0.2, 0.0, 0.4, 0.4, 0.6, 0.6, 0.6, 0.1, 0.4, 0.8, 0.6, -0.3, 0.1, -0.5, 0.4, -0.4, 0.5, -0.9, 0.5, -0.4, 0.1, -0.3, 0.3, -0.7, 0.5, -0.3, 0.6, -0.2, 0.7, -0.6, 0.8, -0.4, 0.5, -0.6, 0.4, -0.4, 0.6, 0.0, 0.4, 0.7, 0.1, 0.3, 0.7, 0.8, 0.1, -0.3, 0.1, -0.8, 0.5, -0.4, 0.6, -0.4, 0.5, -0.3, 0.5, -0.2, 0.5, -0.2, 0.2, -0.5, 0.6, -0.8, 0.8, -0.1, 0.4, -0.3, 0.2, -0.6, 0.6, -0.6, 0.4, -0.7, 0.6, 0.0, 0.1, 0.6, 0.4, 0.7, 0.8, -0.7, 0.7, -0.2, 0.8, -0.5, 0.3, -0.2, 0.6, -0.8, 0.9, -0.8, 0.7, -0.6, 0.3, -0.7, 0.1, -0.9, 0.2, -0.2, 0.3, -0.9, 0.6, -0.6, 0.6, -0.1, 0.1, -0.3, 0.1, -0.6, 0.8, 0.0, 0.5, 0.6, 0.6, -0.4, 0.1, -0.1, 0.1, -0.4, 0.5, -0.6, 0.2, -0.6, 0.8, -0.5, 0.8, -0.5, 0.8, -0.8, 0.1, -0.6, 0.2, -0.1, 0.7, -0.8, 0.2, -0.1, 0.4, -0.8, 0.7, -0.8, 0.4, -0.7, 0.5, -0.6, 0.8, 0.0,
+
+L2_zHER2_A_nn_pu
+0.4, 0.0, 0.3, 0.1, 0.4, 0.7, 0.1, 0.2, 0.4, 0.6, 0.2, 0.7, 0.1, 0.1, 0.1, 0.3, 0.8, 0.1, 0.9, 0.5, 0.2, 0.5, 0.9, 0.8, 0.8, 0.4, 0.6, 0.3, 0.1, 0.3, 0.8, 0.7, 0.6, 0.4, 0.4, 0.0, 0.9, 0.1, 0.4, 0.5, 0.9, 0.3, 0.8, 0.6, 0.2, 0.1, 0.2, 0.7, 0.9, 0.6, 0.8, 0.5, 0.2, 0.2, 0.3, 0.4, 0.8, 0.9, 0.1, 0.5, 0.1, 0.8, 0.7, 0.2, 0.1, 0.1, 0.8, 0.0, 0.1, 0.6, 0.2, 0.8, 0.1, 0.5, 0.8, 0.4, 0.1, 0.3, 0.9, 0.3, 0.7, 0.4, 0.4, 0.6, 0.4, 0.5, 0.8, 0.4, 0.4, 0.4, 0.5, 0.4, 0.8, 0.5, 0.1, 0.4, 0.1, 0.0, 0.1, 0.8, 0.7, 0.4, 0.3, 0.8, 0.7, 0.2, 0.9, 0.1, 0.2, 0.3, 0.8, 0.1, 0.4, 0.7, 0.4, 0.8, 0.5, 0.9, 0.6, 0.4, 0.3, 0.2, 0.5, 0.6, 0.1, 0.0, 0.4, 0.3, 0.1, 0.1, 0.6, 0.9, 0.4, 0.9, 0.5, 0.1, 0.1, 0.1, 0.4, 0.4, 0.9, 0.6, 0.5, 0.4, 0.5, 0.3, 0.6, 0.8, 0.2, 0.6, 0.7, 0.0, 0.4, 0.6, 0.5, 0.7, 0.3, 0.9, 0.2, 0.9, 0.2, 0.5, 0.5, 0.7, 0.9, 0.1, 0.1, 0.3, 0.5, 0.2, 0.9, 0.8, 0.8, 0.5, 0.8, 0.0, 0.9, 0.7, 0.2, 0.7, 0.8, 0.2, 0.4, 0.9, 0.3, 0.9, 0.5, 0.7, 0.3, 0.7, 0.5, 0.2, 0.7, 0.6, 0.8, 0.5, 0.5, 0.0, 0.6, 0.2, 0.7, 0.8, 0.3, 0.7, 0.1, 0.3, 0.1, 0.6, 0.5, 0.3, 0.2, 0.5, 0.3, 0.7, 0.8, 0.8, 0.1, 0.0, 0.5, 0.3, 0.2, 0.6, 0.9, 0.9, 0.2, 0.7, 0.6, 0.2, 0.6, 0.8, 0.1, 0.9, 0.1, 0.6, 0.7, 0.0, 0.2, 0.2, 0.7, 0.1, 0.8, 0.9, 0.7, 0.6, 0.8, 0.1, 0.2, 0.2, 0.2, 0.1, 0.3, 0.0, 0.6, 0.8, 0.4, 0.5, 0.8, 0.4, 0.4, 0.3, 0.3, 0.9, 0.7, 0.8, 0.3, 0.0, 0.6, 0.4, 0.5, 0.6, 0.2, 0.6, 0.6, 0.6, 0.2, 0.1, 0.2, 0.0, 0.4, 0.4, 0.6, 0.6, 0.6, 0.1, 0.4, 0.8, 0.6, 0.0, 0.4, 0.7, 0.1, 0.3, 0.7, 0.8, 0.6, 0.0, 0.1, 0.6, 0.4, 0.7, 0.8, 0.0, 0.5, 0.6, 0.8, 0.0,
+
+L2_zHER2_x_n1
+0.5, 0.6, 0.6, 0.8, 0.6, 0.3, 0.1, 0.6, 0.7, 0.4, 0.5, 0.4, 0.3, 0.7, 0.3, 0.9, 0.3, 0.8, 0.1, 0.8, 0.7, 0.2, 0.1, 0.8, 0.9, 0.8, 0.4, 0.7, 0.4, 0.8, 0.9, 0.9, 0.4, 0.1,
+
+L2_zHER2_x_n2
+0.5, 0.6, 0.0, 0.0, 0.6, 0.8, 0.0, 0.0, 0.6, 0.3, 0.0, 0.0, 0.1, 0.6, 0.0, 0.0, 0.7, 0.4, 0.0, 0.0, 0.5, 0.4, 0.0, 0.0, 0.3, 0.7, 0.0, 0.0, 0.3, 0.9, 0.0, 0.0, 0.3, 0.8, 0.0, 0.0, 0.1, 0.8, 0.0, 0.0, 0.7, 0.2, 0.0, 0.0, 0.1, 0.8, 0.0, 0.0, 0.9, 0.8, 0.0, 0.0, 0.4, 0.7, 0.0, 0.0, 0.4, 0.8, 0.0, 0.0, 0.9, 0.9, 0.0, 0.0, 0.4, 0.1, 0.0, 0.0,
+
+L2_zHER2_y_n1
+0.9, 0.8, 0.9, 0.8, 0.9, 0.8, 0.9, 0.7, 0.8, 0.4, 0.7, 0.1, 0.8, 0.6, 0.4, 0.2, 0.4, 0.1, 0.9, 0.7, 0.6, 0.7, 0.7, 0.1, 0.8, 0.7, 0.8, 0.3, 0.6, 0.6, 0.8, 0.3, 0.7, 0.7,
+
+L2_zHER2_y_n2
+0.9, 0.8, 0.0, 0.0, 0.0, 0.0, 0.9, 0.8, 0.0, 0.0, 0.0, 0.0, 0.9, 0.8, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.0, 0.0, 0.0, 0.0, 0.8, 0.4, 0.0, 0.0, 0.0, 0.0, 0.7, 0.1, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.4, 0.2, 0.0, 0.0, 0.0, 0.0, 0.4, 0.1, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.0, 0.0, 0.0, 0.0, 0.6, 0.7, 0.0, 0.0, 0.0, 0.0, 0.7, 0.1, 0.0, 0.0, 0.0, 0.0, 0.8, 0.7, 0.0, 0.0, 0.0, 0.0, 0.8, 0.3, 0.0, 0.0, 0.0, 0.0, 0.6, 0.6, 0.0, 0.0, 0.0, 0.0, 0.8, 0.3, 0.0, 0.0, 0.0, 0.0, 0.7, 0.7, 0.0, 0.0, 0.0, 0.0,
+
+L2_zHER2_o_N
+2.26, 0.0, 2.41, -8.32667268469e-17, 2.11, 1.05, 1.54, -0.07, 1.99, 1.08, 1.38, 1.11, 1.69, -0.11, 1.41, -0.13, 1.97, -0.19, 2.5, 0.05, 1.71, 0.89, 2.04, 0.53, 3.07, 0.53, 2.1, 0.32, 1.76, -0.04, 2.91, 0.94, 1.81, 0.7, 2.41, 8.32667268469e-17, 2.76, 0.0, 2.86, 0.55, 2.07, 0.34, 2.65, 0.9, 2.07, 1.14, 1.99, -0.01, 1.59, 0.33, 2.13, 0.38, 2.63, 0.16, 1.91, 0.64, 1.53, 0.26, 3.29, 1.12, 1.74, 0.65, 1.94, 0.52, 2.95, 0.57, 1.52, 0.47, 2.11, -1.05, 2.86, -0.55, 2.36, 0.0, 1.42, -0.01, 1.75, 1.0, 1.32, 0.69, 2.29, -0.11, 1.39, -0.27, 2.08, -0.12, 2.18, -0.39, 1.76, 0.74, 1.58, 0.01, 2.94, 0.22, 1.89, 0.15, 2.04, -0.18, 2.9, 0.47, 1.17, 0.42, 1.54, 0.07, 2.07, -0.34, 1.42, 0.01, 1.12, 0.0, 1.33, 1.37, 1.56, 0.8, 1.5, 0.8, 1.76, -0.18, 1.83, -0.18, 1.36, 0.12, 2.05, 0.7, 1.18, 0.46, 2.27, 1.12, 1.61, 1.0, 1.94, 0.26, 2.0, 0.47, 1.42, 1.14, 1.99, -1.08, 2.65, -0.9, 1.75, -1.0, 1.33, -1.37, 1.54, 0.0, 1.49, 0.39, 1.42, -0.44, 1.56, 0.32, 1.28, 0.47, 1.81, -0.63, 1.44, -0.03, 1.33, 0.01, 2.78, 0.15, 1.78, 0.11, 1.8, -0.36, 2.36, 0.55, 1.33, 0.47, 1.38, -1.11, 2.07, -1.14, 1.32, -0.69, 1.56, -0.8, 1.49, -0.39, 1.48, 0.0, 1.32, 0.16, 1.08, 0.16, 0.83, 0.48, 1.08, 0.36, 1.29, 0.32, 1.04, 0.38, 2.29, -0.4, 0.97, 0.02, 1.4, -0.38, 2.14, 0.43, 1.72, 0.4, 1.69, 0.11, 1.99, 0.01, 2.29, 0.11, 1.5, -0.8, 1.42, 0.44, 1.32, -0.16, 2.12, 0.0, 1.94, 0.38, 1.11, 0.49, 2.12, 0.04, 1.75, 1.37, 1.14, 0.78, 2.43, 0.95, 1.49, 0.85, 1.9, 0.04, 2.41, 0.89, 1.88, 0.94, 1.41, 0.13, 1.59, -0.33, 1.39, 0.27, 1.76, 0.18, 1.56, -0.32, 1.08, -0.16, 1.94, -0.38, 1.1, 0.0, 1.09, 0.27, 1.8, 1.1, 1.43, 1.09, 0.6, 0.6, 1.49, 0.97, 1.31, 0.73, 1.24, 0.62, 1.35, 1.15, 1.82, 1.26, 1.97, 0.19, 2.13, -0.38, 2.08, 0.12, 1.83, 0.18, 1.28, -0.47, 0.83, -0.48, 1.11, -0.49, 1.09, -0.27, 0.5, 0.0, 1.45, 0.5, 1.24, 0.86, 1.31, 1.12, 1.44, 0.9, 1.31, 0.51, 1.5, 0.82, 1.03, 1.18, 1.04, 0.95, 2.5, -0.05, 2.63, -0.16, 2.18, 0.39, 1.36, -0.12, 1.81, 0.63, 1.08, -0.36, 2.12, -0.04, 1.8, -1.1, 1.45, -0.5, 2.0, 0.0, 1.59, 0.92, 1.5, -1.94289029309e-16, 2.81, 1.38, 1.87, 0.86, 2.26, 0.08, 1.96, 0.63, 1.26, 0.78, 1.71, -0.89, 1.91, -0.64, 1.76, -0.74, 2.05, -0.7, 1.44, 0.03, 1.29, -0.32, 1.75, -1.37, 1.43, -1.09, 1.24, -0.86, 1.59, -0.92, 1.42, 0.0, 1.73, 0.46, 2.2, 0.32, 2.15, 0.21, 1.74, -0.2, 2.09, 0.94, 1.64, 0.67, 2.04, -0.53, 1.53, -0.26, 1.58, -0.01, 1.18, -0.46, 1.33, -0.01, 1.04, -0.38, 1.14, -0.78, 0.6, -0.6, 1.31, -1.12, 1.5, 1.94289029309e-16, 1.73, -0.46, 0.6, 0.0, 1.95, 0.5, 1.17, 0.76, 1.1, 0.5, 1.64, 0.67, 1.12, 0.56, 3.07, -0.53, 3.29, -1.12, 2.94, -0.22, 2.27, -1.12, 2.78, -0.15, 2.29, 0.4, 2.43, -0.95, 1.49, -0.97, 1.44, -0.9, 2.81, -1.38, 2.2, -0.32, 1.95, -0.5, 2.76, 0.0, 2.17, 0.49, 2.5, 0.18, 2.91, 0.38, 1.98, 0.93, 2.1, -0.32, 1.74, -0.65, 1.89, -0.15, 1.61, -1.0, 1.78, -0.11, 0.97, -0.02, 1.49, -0.85, 1.31, -0.73, 1.31, -0.51, 1.87, -0.86, 2.15, -0.21, 1.17, -0.76, 2.17, -0.49, 1.66, 0.0, 1.62, 0.36, 1.62, 0.29, 1.82, 1.05, 1.76, 0.04, 1.94, -0.52, 2.04, 0.18, 1.94, -0.26, 1.8, 0.36, 1.4, 0.38, 1.9, -0.04, 1.24, -0.62, 1.5, -0.82, 2.26, -0.08, 1.74, 0.2, 1.1, -0.5, 2.5, -0.18, 1.62, -0.36, 2.04, 0.0, 1.74, 1.12, 1.54, 1.16, 2.91, -0.94, 2.95, -0.57, 2.9, -0.47, 2.0, -0.47, 2.36, -0.55, 2.14, -0.43, 2.41, -0.89, 1.35, -1.15, 1.03, -1.18, 1.96, -0.63, 2.09, -0.94, 1.64, -0.67, 2.91, -0.38, 1.62, -0.29, 1.74, -1.12, 2.78, 0.0, 2.11, 0.64, 1.81, -0.7, 1.52, -0.47, 1.17, -0.42, 1.42, -1.14, 1.33, -0.47, 1.72, -0.4, 1.88, -0.94, 1.82, -1.26, 1.04, -0.95, 1.26, -0.78, 1.64, -0.67, 1.12, -0.56, 1.98, -0.93, 1.82, -1.05, 1.54, -1.16, 2.11, -0.64, 1.5, 0.0,
+
+L2_zHER2_o_N_pu
+2.26, 0.0, 2.41, -8.32667268469e-17, 2.11, 1.05, 1.54, -0.07, 1.99, 1.08, 1.38, 1.11, 1.69, -0.11, 1.41, -0.13, 1.97, -0.19, 2.5, 0.05, 1.71, 0.89, 2.04, 0.53, 3.07, 0.53, 2.1, 0.32, 1.76, -0.04, 2.91, 0.94, 1.81, 0.7, 2.76, 0.0, 2.86, 0.55, 2.07, 0.34, 2.65, 0.9, 2.07, 1.14, 1.99, -0.01, 1.59, 0.33, 2.13, 0.38, 2.63, 0.16, 1.91, 0.64, 1.53, 0.26, 3.29, 1.12, 1.74, 0.65, 1.94, 0.52, 2.95, 0.57, 1.52, 0.47, 2.36, 0.0, 1.42, -0.01, 1.75, 1.0, 1.32, 0.69, 2.29, -0.11, 1.39, -0.27, 2.08, -0.12, 2.18, -0.39, 1.76, 0.74, 1.58, 0.01, 2.94, 0.22, 1.89, 0.15, 2.04, -0.18, 2.9, 0.47, 1.17, 0.42, 1.12, 0.0, 1.33, 1.37, 1.56, 0.8, 1.5, 0.8, 1.76, -0.18, 1.83, -0.18, 1.36, 0.12, 2.05, 0.7, 1.18, 0.46, 2.27, 1.12, 1.61, 1.0, 1.94, 0.26, 2.0, 0.47, 1.42, 1.14, 1.54, 0.0, 1.49, 0.39, 1.42, -0.44, 1.56, 0.32, 1.28, 0.47, 1.81, -0.63, 1.44, -0.03, 1.33, 0.01, 2.78, 0.15, 1.78, 0.11, 1.8, -0.36, 2.36, 0.55, 1.33, 0.47, 1.48, 0.0, 1.32, 0.16, 1.08, 0.16, 0.83, 0.48, 1.08, 0.36, 1.29, 0.32, 1.04, 0.38, 2.29, -0.4, 0.97, 0.02, 1.4, -0.38, 2.14, 0.43, 1.72, 0.4, 2.12, 0.0, 1.94, 0.38, 1.11, 0.49, 2.12, 0.04, 1.75, 1.37, 1.14, 0.78, 2.43, 0.95, 1.49, 0.85, 1.9, 0.04, 2.41, 0.89, 1.88, 0.94, 1.1, 0.0, 1.09, 0.27, 1.8, 1.1, 1.43, 1.09, 0.6, 0.6, 1.49, 0.97, 1.31, 0.73, 1.24, 0.62, 1.35, 1.15, 1.82, 1.26, 0.5, 0.0, 1.45, 0.5, 1.24, 0.86, 1.31, 1.12, 1.44, 0.9, 1.31, 0.51, 1.5, 0.82, 1.03, 1.18, 1.04, 0.95, 2.0, 0.0, 1.59, 0.92, 1.5, -1.94289029309e-16, 2.81, 1.38, 1.87, 0.86, 2.26, 0.08, 1.96, 0.63, 1.26, 0.78, 1.42, 0.0, 1.73, 0.46, 2.2, 0.32, 2.15, 0.21, 1.74, -0.2, 2.09, 0.94, 1.64, 0.67, 0.6, 0.0, 1.95, 0.5, 1.17, 0.76, 1.1, 0.5, 1.64, 0.67, 1.12, 0.56, 2.76, 0.0, 2.17, 0.49, 2.5, 0.18, 2.91, 0.38, 1.98, 0.93, 1.66, 0.0, 1.62, 0.36, 1.62, 0.29, 1.82, 1.05, 2.04, 0.0, 1.74, 1.12, 1.54, 1.16, 2.78, 0.0, 2.11, 0.64, 1.5, 0.0,
+
+L2_sSYR_A_nn
+0.6, 0.2, 0.3, 0.3, 0.2, 0.7, 0.8, 0.8, 0.9, 0.1, 0.7, 0.2, 0.7, 0.4, 0.4, 0.9, 0.5, 0.9, 0.1, 0.5, 0.8, 0.2, 0.8, 0.4, 0.1, 0.4, 0.3, 0.7, 0.9, 0.8, 0.9, 0.3, 0.3, 0.3, 0.4, 0.4, 0.3, 0.8, 0.4, 0.8, 0.1, 0.7, 0.7, 0.6, 0.2, 0.4, 0.3, 0.6, 0.5, 0.4, 0.6, 0.6, 0.8, 0.3, 0.4, 0.2, 0.8, 0.4, 0.7, 0.1, 0.1, 0.1, 0.3, 0.8, 0.4, 0.3, 0.8, 0.1, 0.3, 0.8, 0.8, 0.1, 0.3, 0.7, 0.4, 0.2, 0.8, 0.6, 0.1, 0.1, 0.2, 0.4, 0.7, 0.8, 0.8, 0.8, 0.4, 0.7, 0.9, 0.1, 0.3, 0.8, 0.5, 0.9, 0.6, 0.7, 0.9, 0.7, 0.4, 0.5, 0.9, 0.2, 0.2, 0.1, 0.6, 0.4, 0.4, 0.5, 0.7, 0.8, 0.4, 0.1, 0.3, 0.7, 0.8, 0.3, 0.8, 0.3, 0.7, 0.8, 0.5, 0.9, 0.3, 0.2, 0.6, 0.2, 0.6, 0.6, 0.8, 0.6, 0.3, 0.2, 0.6, 0.4, 0.1, 0.9, 0.5, 0.6, 0.5, 0.2, 0.5, 0.2, 0.5, 0.8, 0.1, 0.1, 0.6, 0.1, 0.8, 0.1, 0.4, 0.6, 0.4, 0.7, 0.6, 0.5, 0.6, 0.8, 0.7, 0.9, 0.5, 0.3, 0.2, 0.2, 0.2, 0.2, 0.9, 0.6, 0.6, 0.7, 0.9, 0.7, 0.9, 0.7, 0.9, 0.3, 0.2, 0.4, 0.5, 0.4, 0.9, 0.4, 0.2, 0.9, 0.6, 0.2, 0.2, 0.2, 0.1, 0.4, 0.1, 0.7, 0.8, 0.7, 0.3, 0.1, 0.7, 0.5, 0.7, 0.3, 0.5, 0.7, 0.4, 0.3, 0.6, 0.8, 0.6, 0.3, 0.1, 0.7, 0.5, 0.1, 0.3, 0.8, 0.5, 0.4, 0.9, 0.3, 0.6, 0.5, 0.6, 0.4, 0.1, 0.1, 0.9, 0.8, 0.8, 0.7, 0.8, 0.9, 0.7, 0.4, 0.7, 0.1, 0.8, 0.7, 0.4, 0.3, 0.1, 0.7, 0.2, 0.6, 0.8, 0.3, 0.3, 0.8, 0.4, 0.6, 0.6, 0.3, 0.9, 0.4, 0.1, 0.3, 0.5, 0.5, 0.1, 0.9, 0.1, 0.2, 0.4, 0.6, 0.6, 0.7, 0.2, 0.8, 0.7, 0.7, 0.8, 0.8, 0.3, 0.9, 0.5, 0.7, 0.5, 0.4, 0.2, 0.6, 0.2, 0.2, 0.2, 0.8, 0.7, 0.7, 0.8, 0.1, 0.1, 0.1, 0.9,
+
+L2_sSYR_A_nn_pu
+0.6, 0.2, 0.3, 0.3, 0.2, 0.7, 0.8, 0.8, 0.9, 0.1, 0.7, 0.2, 0.7, 0.4, 0.4, 0.9, 0.5, 0.1, 0.5, 0.8, 0.2, 0.8, 0.4, 0.1, 0.4, 0.3, 0.7, 0.9, 0.8, 0.9, 0.3, 0.3, 0.3, 0.3, 0.8, 0.4, 0.8, 0.1, 0.7, 0.7, 0.6, 0.2, 0.4, 0.3, 0.6, 0.5, 0.4, 0.6, 0.4, 0.2, 0.8, 0.4, 0.7, 0.1, 0.1, 0.1, 0.3, 0.8, 0.4, 0.3, 0.8, 0.1, 0.3, 0.7, 0.4, 0.2, 0.8, 0.6, 0.1, 0.1, 0.2, 0.4, 0.7, 0.8, 0.8, 0.3, 0.8, 0.5, 0.9, 0.6, 0.7, 0.9, 0.7, 0.4, 0.5, 0.9, 0.2, 0.7, 0.8, 0.4, 0.1, 0.3, 0.7, 0.8, 0.3, 0.8, 0.3, 0.7, 0.6, 0.6, 0.8, 0.6, 0.3, 0.2, 0.6, 0.4, 0.1, 0.9, 0.1, 0.1, 0.6, 0.1, 0.8, 0.1, 0.4, 0.6, 0.4, 0.2, 0.2, 0.2, 0.2, 0.9, 0.6, 0.6, 0.7, 0.9, 0.4, 0.2, 0.9, 0.6, 0.2, 0.2, 0.7, 0.3, 0.5, 0.7, 0.4, 0.3, 0.9, 0.3, 0.6, 0.5, 0.6, 0.8, 0.7, 0.4, 0.3, 0.1, 0.3, 0.5, 0.3, 0.9, 0.9,
+
+L2_sSYR_x_n1
+0.8, 0.3, 0.5, 0.6, 0.5, 0.9, 0.2, 0.2, 0.5, 0.8, 0.4, 0.5, 0.5, 0.4, 0.2, 0.3, 0.3,
+
+L2_sSYR_x_n2
+0.8, 0.0, 0.3, 0.0, 0.5, 0.0, 0.6, 0.0, 0.5, 0.0, 0.9, 0.0, 0.2, 0.0, 0.2, 0.0, 0.5, 0.0, 0.8, 0.0, 0.4, 0.0, 0.5, 0.0, 0.5, 0.0, 0.4, 0.0, 0.2, 0.0, 0.3, 0.0, 0.3, 0.0,
+
+L2_sSYR_o_N
+1.24000004292, 0.440000016093, 0.700000017881, 0.780000038147, 0.600000008941, 1.41999997973, 0.960000016689, 0.960000016689, 1.29999998212, 0.740000020564, 1.01999999762, 0.600000008941, 1.09999999404, 0.720000015497, 0.560000010729, 1.13999998927, 0.740000013113, 1.13999998927, 0.190000008643, 0.65000000596, 0.980000026226, 0.350000008941, 1.0700000155, 0.460000009239, 0.160000004768, 0.550000011921, 0.540000025034, 0.819999994636, 1.04999998212, 0.950000017881, 1.01999998271, 0.360000015199, 0.390000019073, 0.390000019073, 0.800000011921, 0.550000011921, 0.550000011921, 1.10000002384, 0.65000000596, 1.25, 0.20000000298, 0.799999989569, 0.949999988079, 1.0000000298, 0.40000000596, 0.65000000596, 0.550000011921, 0.800000026822, 0.60000000149, 0.550000011921, 0.750000029802, 1.08000005007, 0.980000026226, 0.600000023842, 0.760000034571, 0.500000014901, 1.34000001907, 0.520000012517, 0.819999994636, 0.400000013411, 0.580000027716, 0.340000014603, 0.600000023842, 1.10000002384, 0.640000019073, 0.420000018477, 0.980000026226, 0.280000015795, 0.700000017881, 0.950000017881, 1.05000001192, 0.400000013411, 0.550000011921, 1.14999997616, 0.500000007451, 0.30000000447, 1.05000001192, 1.0000000298, 0.30000000447, 0.35000000149, 0.45000000298, 0.600000008941, 0.799999989569, 0.950000017881, 0.950000017881, 1.52000000358, 0.670000009537, 1.14999997616, 1.43999998331, 0.549999989569, 1.10999996901, 0.980000009835, 0.679999997914, 1.34999996424, 1.3200000155, 1.05999998391, 1.34999996424, 1.14999997616, 0.760000001788, 0.679999997914, 1.16999997973, 0.470000006557, 0.360000007749, 0.160000004768, 0.700000025332, 0.520000012517, 0.500000007451, 0.679999997914, 0.739999989271, 0.840000013113, 0.500000007451, 0.260000006258, 0.380000014305, 0.799999989569, 0.900000013411, 0.380000014305, 0.840000013113, 0.360000015199, 0.759999991357, 0.960000016689, 0.560000003278, 0.999999977648, 0.420000018477, 0.30000000447, 0.780000021756, 0.240000004172, 0.640000025034, 0.700000025332, 0.960000016689, 0.680000026226, 0.400000013411, 0.30000000447, 0.680000026226, 0.440000007153, 0.160000004768, 0.959999979436, 0.90000000596, 0.750000029802, 0.75, 0.500000014901, 0.75, 0.649999991059, 0.60000000149, 0.900000013411, 0.35000000149, 0.500000007451, 0.800000026822, 0.35000000149, 1.05000001192, 0.30000000447, 0.500000007451, 0.750000029802, 0.550000011921, 1.34000000715, 0.840000036955, 0.90000000596, 1.08000005007, 1.20000001788, 1.41999997973, 1.05999998093, 0.660000004768, 0.700000017881, 0.840000022054, 0.520000012517, 0.600000008941, 0.600000008941, 1.21999998569, 0.76000002861, 0.840000036955, 0.940000001192, 1.21999998569, 0.819999994636, 1.09999997914, 0.940000001192, 1.09999997914, 0.660000007749, 0.280000005364, 0.480000008345, 0.70000000298, 0.720000015497, 1.05999998093, 0.600000008941, 0.40000000596, 1.05999998093, 0.680000026226, 0.320000009537, 0.320000009537, 0.600000008941, 0.250000007451, 0.65000000596, 0.400000013411, 0.949999988079, 1.25, 0.799999989569, 0.400000013411, 0.35000000149, 1.09999999404, 0.70000000298, 0.949999988079, 0.550000011921, 0.70000000298, 0.799999989569, 0.550000011921, 0.450000017881, 1.0000000298, 0.950000017881, 0.850000023842, 0.600000023842, 0.35000000149, 1.14999997616, 0.60000000149, 0.20000000298, 0.550000011921, 1.20000001788, 0.70000000298, 0.65000000596, 1.14999997616, 0.500000014901, 0.700000025332, 0.65000000596, 0.750000029802, 0.720000015497, 0.220000008047, 0.30000000447, 1.13999998927, 1.0000000149, 1.16000000775, 0.779999990463, 0.880000014305, 1.09999997914, 1.01999999762, 0.560000010729, 0.899999991059, 0.30000000447, 0.960000016689, 0.779999990463, 0.520000012517, 0.420000018477, 0.260000006258, 0.759999991357, 0.30000000447, 0.720000030398, 0.900000013411, 0.480000009835, 0.340000013113, 0.840000013113, 0.500000007451, 0.76000002861, 0.680000026226, 0.400000013411, 0.999999977648, 0.480000008345, 0.140000002682, 0.360000015199, 0.560000003278, 0.740000013113, 0.190000008643, 1.04999998212, 0.280000015795, 0.350000008941, 0.670000009537, 0.66000002712, 0.66000002712, 0.84999999404, 0.440000016093, 0.920000018477, 0.84999999404, 0.84999999404, 0.920000018477, 0.860000015199, 0.390000019073, 0.989999983311, 0.740000013113, 0.789999995232, 0.65000000596, 0.580000020266, 0.350000008941, 0.870000027418, 0.260000006258, 0.260000006258, 0.350000008941, 1.04000002503, 0.819999994636, 0.84999999404, 0.950000017881, 0.220000008047, 0.160000004768, 0.190000008643, 0.989999983311,
+
+L2_sSYR_o_N_pu
+1.24000004292, 0.440000016093, 0.700000017881, 0.780000038147, 0.600000008941, 1.41999997973, 0.960000016689, 0.960000016689, 1.29999998212, 0.740000020564, 1.01999999762, 0.600000008941, 1.09999999404, 0.720000015497, 0.560000010729, 1.13999998927, 0.740000013113, 0.190000008643, 0.65000000596, 0.980000026226, 0.350000008941, 1.0700000155, 0.460000009239, 0.160000004768, 0.550000011921, 0.540000025034, 0.819999994636, 1.04999998212, 0.950000017881, 1.01999998271, 0.360000015199, 0.390000019073, 0.390000019073, 0.550000011921, 1.10000002384, 0.65000000596, 1.25, 0.20000000298, 0.799999989569, 0.949999988079, 1.0000000298, 0.40000000596, 0.65000000596, 0.550000011921, 0.800000026822, 0.60000000149, 0.550000011921, 0.750000029802, 0.760000034571, 0.500000014901, 1.34000001907, 0.520000012517, 0.819999994636, 0.400000013411, 0.580000027716, 0.340000014603, 0.600000023842, 1.10000002384, 0.640000019073, 0.420000018477, 0.980000026226, 0.280000015795, 0.550000011921, 1.14999997616, 0.500000007451, 0.30000000447, 1.05000001192, 1.0000000298, 0.30000000447, 0.35000000149, 0.45000000298, 0.600000008941, 0.799999989569, 0.950000017881, 0.950000017881, 1.10999996901, 0.980000009835, 0.679999997914, 1.34999996424, 1.3200000155, 1.05999998391, 1.34999996424, 1.14999997616, 0.760000001788, 0.679999997914, 1.16999997973, 0.470000006557, 0.739999989271, 0.840000013113, 0.500000007451, 0.260000006258, 0.380000014305, 0.799999989569, 0.900000013411, 0.380000014305, 0.840000013113, 0.360000015199, 0.759999991357, 0.640000025034, 0.700000025332, 0.960000016689, 0.680000026226, 0.400000013411, 0.30000000447, 0.680000026226, 0.440000007153, 0.160000004768, 0.959999979436, 0.35000000149, 0.500000007451, 0.800000026822, 0.35000000149, 1.05000001192, 0.30000000447, 0.500000007451, 0.750000029802, 0.550000011921, 0.840000022054, 0.520000012517, 0.600000008941, 0.600000008941, 1.21999998569, 0.76000002861, 0.840000036955, 0.940000001192, 1.05999998093, 0.600000008941, 0.40000000596, 1.05999998093, 0.680000026226, 0.320000009537, 0.320000009537, 0.949999988079, 0.550000011921, 0.70000000298, 0.799999989569, 0.550000011921, 0.450000017881, 1.14999997616, 0.500000014901, 0.700000025332, 0.65000000596, 0.750000029802, 0.960000016689, 0.779999990463, 0.520000012517, 0.420000018477, 0.140000002682, 0.360000015199, 0.560000003278, 0.390000019073, 0.989999983311, 0.989999983311,
+
+L2_dSYR_A_nn
+0.9, 0.8, 0.3, 0.5, 0.4, 0.8, 0.1, 0.4, 0.7, 0.4, 0.4, 0.7, 0.6, 0.5, 0.2, 0.8, 0.6, 0.5, 0.7, 0.3, 0.1, 0.9, 0.5, 0.7, 0.6, 0.2, 0.1, 0.7, 0.4, 0.9, 0.8, 0.5, 0.3, 0.5, 0.3, 0.2, 0.3, 0.8, 0.3, 0.1, 0.7, 0.2, 0.4, 0.6, 0.6, 0.7, 0.4, 0.6, 0.9, 0.6, 0.1, 0.9, 0.7, 0.9, 0.9, 0.4, 0.8, 0.8, 0.6, 0.9, 0.9, 0.9, 0.3, 0.8, 0.8, 0.7, 0.2, 0.8, 0.9, 0.4, 0.3, 0.4, 0.1, 0.9, 0.6, 0.9, 0.8, 0.9, 0.8, 0.3, 0.4, 0.1, 0.2, 0.4, 0.8, 0.4, 0.9, 0.5, 0.1, 0.1, 0.5, 0.8, 0.3, 0.7, 0.6, 0.8, 0.2, 0.5, 0.7, 0.1, 0.5, 0.7, 0.7, 0.4, 0.6, 0.5, 0.6, 0.4, 0.2, 0.6, 0.3, 0.5, 0.5, 0.2, 0.9, 0.8, 0.8, 0.1, 0.9, 0.4, 0.5, 0.2, 0.5, 0.3, 0.9, 0.6, 0.9, 0.5, 0.6, 0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.1, 0.8, 0.7, 0.5, 0.5, 0.3, 0.2, 0.4, 0.1, 0.3, 0.4, 0.3, 0.2, 0.9, 0.9, 0.1, 0.5, 0.3, 0.5, 0.9, 0.7, 0.8, 0.8, 0.7, 0.2, 0.2, 0.6, 0.5, 0.2, 0.5, 0.6, 0.7, 0.5, 0.8, 0.7, 0.3, 0.5, 0.9, 0.9, 0.6, 0.9, 0.4, 0.4, 0.8, 0.6, 0.4, 0.1, 0.8, 0.3, 0.5, 0.6, 0.4, 0.4, 0.1, 0.2, 0.5, 0.1, 0.7, 0.6, 0.7, 0.8, 0.8, 0.1, 0.9, 0.2, 0.5, 0.8, 0.5, 0.1, 0.5, 0.2, 0.4, 0.8, 0.3, 0.2, 0.5, 0.4, 0.7, 0.5, 0.7, 0.1, 0.3, 0.2, 0.6, 0.4, 0.4, 0.9, 0.8, 0.4, 0.1, 0.4, 0.5, 0.9, 0.2, 0.9, 0.8, 0.1, 0.2, 0.8, 0.4, 0.7, 0.4, 0.9, 0.9, 0.7, 0.1, 0.3, 0.9, 0.1, 0.5, 0.1, 0.4, 0.8, 0.7, 0.9, 0.9, 0.4, 0.6, 0.1, 0.8, 0.3, 0.4, 0.2, 0.4, 0.5, 0.5, 0.8, 0.3, 0.6, 0.1, 0.8, 0.8, 0.2, 0.1, 0.6, 0.8, 0.3, 0.6, 0.5, 0.8, 0.6, 0.2, 0.4, 0.5, 0.3, 0.1, 0.2, 0.2, 0.2, 0.4, 0.3, 0.6, 0.5, 0.2,
+
+L2_dSYR_A_nn_pu
+0.9, 0.8, 0.3, 0.5, 0.4, 0.8, 0.1, 0.4, 0.7, 0.4, 0.4, 0.7, 0.6, 0.5, 0.2, 0.8, 0.6, 0.7, 0.3, 0.1, 0.9, 0.5, 0.7, 0.6, 0.2, 0.1, 0.7, 0.4, 0.9, 0.8, 0.5, 0.3, 0.5, 0.3, 0.8, 0.3, 0.1, 0.7, 0.2, 0.4, 0.6, 0.6, 0.7, 0.4, 0.6, 0.9, 0.6, 0.1, 0.9, 0.4, 0.8, 0.8, 0.6, 0.9, 0.9, 0.9, 0.3, 0.8, 0.8, 0.7, 0.2, 0.8, 0.1, 0.9, 0.6, 0.9, 0.8, 0.9, 0.8, 0.3, 0.4, 0.1, 0.2, 0.4, 0.8, 0.5, 0.8, 0.3, 0.7, 0.6, 0.8, 0.2, 0.5, 0.7, 0.1, 0.5, 0.7, 0.2, 0.6, 0.3, 0.5, 0.5, 0.2, 0.9, 0.8, 0.8, 0.1, 0.9, 0.9, 0.5, 0.6, 0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.1, 0.3, 0.4, 0.3, 0.2, 0.9, 0.9, 0.1, 0.5, 0.3, 0.5, 0.2, 0.5, 0.6, 0.7, 0.5, 0.8, 0.7, 0.4, 0.1, 0.8, 0.3, 0.5, 0.6, 0.4, 0.9, 0.2, 0.5, 0.8, 0.5, 0.1, 0.3, 0.2, 0.6, 0.4, 0.4, 0.4, 0.7, 0.4, 0.9, 0.6, 0.1, 0.8, 0.8, 0.3, 0.2,
+
+L2_dSYR_x_n1
+0.9, 0.7, 0.1, 0.8, 0.2, 0.9, 0.7, 0.8, 0.8, 0.4, 0.1, 0.9, 0.4, 0.3, 0.2, 0.1, 0.8,
+
+L2_dSYR_x_n2
+0.9, 0.0, 0.7, 0.0, 0.1, 0.0, 0.8, 0.0, 0.2, 0.0, 0.9, 0.0, 0.7, 0.0, 0.8, 0.0, 0.8, 0.0, 0.4, 0.0, 0.1, 0.0, 0.9, 0.0, 0.4, 0.0, 0.3, 0.0, 0.2, 0.0, 0.1, 0.0, 0.8, 0.0,
+
+L2_dSYR_o_N
+1.71, 1.43, 0.39, 1.22, 0.58, 1.61, 0.73, 1.12, 1.42, 0.76, 0.49, 1.51, 0.96, 0.77, 0.38, 0.89, 1.32, 1.13, 1.19, 0.37, 0.66, 1.04, 1.13, 1.19, 1.16, 0.76, 0.38, 0.77, 1.03, 1.18, 1.01, 0.64, 0.37, 1.06, 0.39, 0.27, 0.31, 0.88, 0.32, 0.19, 0.77, 0.28, 0.48, 0.64, 0.61, 0.79, 0.44, 0.63, 0.92, 0.61, 0.18, 1.62, 1.26, 0.98, 1.54, 0.56, 1.52, 1.36, 1.24, 1.54, 1.22, 0.98, 1.02, 1.12, 1.04, 0.86, 0.28, 1.44, 1.08, 0.54, 0.32, 0.56, 0.14, 1.08, 0.74, 1.06, 0.96, 0.98, 0.82, 0.48, 0.48, 0.16, 0.24, 0.42, 0.96, 1.21, 1.53, 0.59, 0.82, 0.28, 1.31, 1.43, 1.02, 1.42, 0.96, 0.89, 1.01, 0.86, 0.97, 0.28, 0.59, 1.42, 1.33, 0.89, 0.67, 1.06, 0.74, 1.03, 0.69, 1.16, 0.86, 0.78, 0.57, 0.83, 1.18, 1.01, 0.94, 0.17, 1.46, 1.12, 1.06, 0.28, 1.14, 0.46, 1.62, 1.16, 1.54, 1.14, 0.92, 0.68, 1.22, 0.82, 0.74, 0.66, 0.58, 0.74, 1.52, 1.26, 0.58, 1.14, 0.46, 0.92, 0.96, 0.74, 0.94, 0.72, 0.38, 0.92, 1.22, 1.14, 0.26, 0.58, 0.94, 0.86, 1.18, 0.74, 1.12, 0.88, 1.06, 0.48, 0.52, 0.92, 0.66, 0.24, 0.86, 0.76, 0.82, 0.58, 0.84, 1.02, 0.39, 0.57, 0.91, 0.98, 0.62, 0.99, 0.47, 0.48, 0.88, 0.64, 0.41, 0.19, 0.84, 0.33, 0.52, 0.61, 0.48, 1.21, 0.73, 0.29, 1.22, 0.28, 1.51, 1.23, 1.42, 1.52, 1.16, 0.19, 1.71, 0.56, 0.77, 0.98, 0.59, 0.82, 0.86, 0.48, 0.44, 1.12, 0.38, 0.56, 0.78, 0.72, 1.02, 0.66, 0.74, 0.46, 0.46, 0.32, 0.68, 0.44, 0.72, 1.17, 1.01, 0.43, 0.34, 0.46, 0.77, 1.11, 0.44, 1.14, 0.92, 0.13, 0.47, 0.92, 0.49, 0.76, 0.43, 1.14, 1.08, 0.84, 0.12, 0.46, 0.94, 0.28, 0.64, 0.26, 0.56, 0.88, 0.72, 1.08, 0.98, 0.46, 0.64, 0.12, 0.96, 0.39, 0.47, 0.21, 0.48, 0.52, 0.59, 0.87, 0.38, 0.68, 0.14, 0.81, 0.89, 0.24, 0.13, 0.62, 0.81, 0.38, 1.32, 1.06, 0.88, 1.24, 0.36, 1.12, 1.06, 0.94, 0.74, 0.52, 0.28, 0.92, 0.72, 0.54, 0.76, 0.58, 0.84,
+
+L2_dSYR_o_N_pu
+1.71, 1.43, 0.39, 1.22, 0.58, 1.61, 0.73, 1.12, 1.42, 0.76, 0.49, 1.51, 0.96, 0.77, 0.38, 0.89, 1.32, 1.19, 0.37, 0.66, 1.04, 1.13, 1.19, 1.16, 0.76, 0.38, 0.77, 1.03, 1.18, 1.01, 0.64, 0.37, 1.06, 0.31, 0.88, 0.32, 0.19, 0.77, 0.28, 0.48, 0.64, 0.61, 0.79, 0.44, 0.63, 0.92, 0.61, 0.18, 1.54, 0.56, 1.52, 1.36, 1.24, 1.54, 1.22, 0.98, 1.02, 1.12, 1.04, 0.86, 0.28, 1.44, 0.14, 1.08, 0.74, 1.06, 0.96, 0.98, 0.82, 0.48, 0.48, 0.16, 0.24, 0.42, 0.96, 1.31, 1.43, 1.02, 1.42, 0.96, 0.89, 1.01, 0.86, 0.97, 0.28, 0.59, 1.42, 0.69, 1.16, 0.86, 0.78, 0.57, 0.83, 1.18, 1.01, 0.94, 0.17, 1.46, 1.54, 1.14, 0.92, 0.68, 1.22, 0.82, 0.74, 0.66, 0.58, 0.74, 0.94, 0.72, 0.38, 0.92, 1.22, 1.14, 0.26, 0.58, 0.94, 0.66, 0.24, 0.86, 0.76, 0.82, 0.58, 0.84, 1.02, 0.41, 0.19, 0.84, 0.33, 0.52, 0.61, 0.48, 1.71, 0.56, 0.77, 0.98, 0.59, 0.82, 0.46, 0.32, 0.68, 0.44, 0.72, 0.49, 0.76, 0.43, 1.14, 0.64, 0.12, 0.96, 0.81, 0.38, 0.84,
+
+L2_sSYR2_A_nn
+0.7, 0.1, 0.5, 0.2, 0.2, 0.3, 0.3, 0.5, 0.8, 0.5, 0.6, 0.1, 0.4, 0.8, 0.9, 0.5, 0.1, 0.4, 0.8, 0.5, 0.2, 0.2, 0.4, 0.4, 0.3, 0.3, 0.4, 0.1, 0.2, 0.4, 0.4, 0.3, 0.4, 0.5, 0.8, 0.5, 0.2, 0.5, 0.9, 0.7, 0.5, 0.5, 0.8, 0.3, 0.5, 0.7, 0.8, 0.9, 0.4, 0.9, 0.6, 0.5, 0.8, 0.3, 0.3, 0.4, 0.4, 0.4, 0.1, 0.2, 0.5, 0.8, 0.1, 0.5, 0.2, 0.1, 0.9, 0.2, 0.6, 0.8, 0.3, 0.3, 0.8, 0.4, 0.5, 0.4, 0.4, 0.8, 0.1, 0.6, 0.8, 0.8, 0.1, 0.8, 0.8, 0.1, 0.2, 0.9, 0.3, 0.4, 0.2, 0.8, 0.9, 0.4, 0.6, 0.5, 0.7, 0.2, 0.5, 0.7, 0.4, 0.2, 0.6, 0.9, 0.9, 0.5, 0.8, 0.4, 0.7, 0.4, 0.7, 0.6, 0.3, 0.7, 0.7, 0.9, 0.1, 0.8, 0.5, 0.7, 0.5, 0.6, 0.3, 0.8, 0.7, 0.9, 0.9, 0.9, 0.8, 0.6, 0.9, 0.2, 0.9, 0.2, 0.4, 0.2, 0.7, 0.5, 0.9, 0.4, 0.1, 0.8, 0.7, 0.2, 0.9, 0.6, 0.9, 0.2, 0.3, 0.6, 0.8, 0.8, 0.9, 0.2, 0.7, 0.6, 0.1, 0.4, 0.9, 0.7, 0.5, 0.1, 0.1, 0.5, 0.6, 0.5, 0.4, 0.4, 0.3, 0.4, 0.9, 0.8, 0.2, 0.6, 0.8, 0.5, 0.1, 0.8, 0.7, 0.1, 0.2, 0.7, 0.9, 0.1, 0.8, 0.2, 0.9, 0.5, 0.3, 0.6, 0.2, 0.2, 0.4, 0.7, 0.5, 0.6, 0.7, 0.1, 0.7, 0.9, 0.4, 0.5, 0.4, 0.2, 0.7, 0.5, 0.7, 0.5, 0.6, 0.5, 0.1, 0.3, 0.9, 0.3, 0.4, 0.9, 0.5, 0.1, 0.8, 0.5, 0.2, 0.8, 0.6, 0.8, 0.1, 0.7, 0.6, 0.9, 0.2, 0.7, 0.7, 0.7, 0.7, 0.2, 0.8, 0.2, 0.4, 0.5, 0.1, 0.5, 0.5, 0.6, 0.2, 0.6, 0.2, 0.6, 0.6, 0.2, 0.7, 0.4, 0.3, 0.1, 0.1, 0.5, 0.4, 0.9, 0.1, 0.2, 0.7, 0.4, 0.8, 0.5, 0.7, 0.5, 0.9, 0.4, 0.8, 0.6, 0.3, 0.1, 0.6, 0.2, 0.7, 0.1, 0.8, 0.3, 0.8, 0.6, 0.1, 0.4, 0.8, 0.3, 0.2, 0.5, 0.2, 0.9, 0.9, 0.1, 0.8,
+
+L2_sSYR2_A_nn_pu
+0.7, 0.1, 0.5, 0.2, 0.2, 0.3, 0.3, 0.5, 0.8, 0.5, 0.6, 0.1, 0.4, 0.8, 0.9, 0.5, 0.1, 0.8, 0.5, 0.2, 0.2, 0.4, 0.4, 0.3, 0.3, 0.4, 0.1, 0.2, 0.4, 0.4, 0.3, 0.4, 0.5, 0.2, 0.5, 0.9, 0.7, 0.5, 0.5, 0.8, 0.3, 0.5, 0.7, 0.8, 0.9, 0.4, 0.9, 0.6, 0.3, 0.4, 0.4, 0.4, 0.1, 0.2, 0.5, 0.8, 0.1, 0.5, 0.2, 0.1, 0.9, 0.2, 0.8, 0.4, 0.5, 0.4, 0.4, 0.8, 0.1, 0.6, 0.8, 0.8, 0.1, 0.8, 0.8, 0.2, 0.8, 0.9, 0.4, 0.6, 0.5, 0.7, 0.2, 0.5, 0.7, 0.4, 0.2, 0.7, 0.4, 0.7, 0.6, 0.3, 0.7, 0.7, 0.9, 0.1, 0.8, 0.5, 0.9, 0.9, 0.8, 0.6, 0.9, 0.2, 0.9, 0.2, 0.4, 0.2, 0.9, 0.6, 0.9, 0.2, 0.3, 0.6, 0.8, 0.8, 0.9, 0.1, 0.5, 0.6, 0.5, 0.4, 0.4, 0.3, 0.4, 0.2, 0.7, 0.9, 0.1, 0.8, 0.2, 0.9, 0.7, 0.9, 0.4, 0.5, 0.4, 0.2, 0.5, 0.1, 0.8, 0.5, 0.2, 0.8, 0.2, 0.4, 0.5, 0.1, 0.5, 0.4, 0.6, 0.2, 0.8,
+
+L2_sSYR2_x_n1
+0.4, 0.4, 0.1, 0.2, 0.2, 0.9, 0.1, 0.7, 0.7, 0.6, 0.1, 0.4, 0.3, 0.6, 0.6, 0.4, 0.6,
+
+L2_sSYR2_x_n2
+0.4, 0.0, 0.4, 0.0, 0.1, 0.0, 0.2, 0.0, 0.2, 0.0, 0.9, 0.0, 0.1, 0.0, 0.7, 0.0, 0.7, 0.0, 0.6, 0.0, 0.1, 0.0, 0.4, 0.0, 0.3, 0.0, 0.6, 0.0, 0.6, 0.0, 0.4, 0.0, 0.6, 0.0,
+
+L2_sSYR2_y_n1
+0.4, 0.5, 0.8, 0.4, 0.9, 0.5, 0.5, 0.2, 0.7, 0.2, 0.8, 0.5, 0.5, 0.6, 0.1, 0.5, 0.2,
+
+L2_sSYR2_y_n2
+0.4, 0.0, 0.0, 0.5, 0.0, 0.0, 0.8, 0.0, 0.0, 0.4, 0.0, 0.0, 0.9, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.2, 0.0, 0.0, 0.7, 0.0, 0.0, 0.2, 0.0, 0.0, 0.8, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.6, 0.0, 0.0, 0.1, 0.0, 0.0, 0.5, 0.0, 0.0, 0.2, 0.0, 0.0,
+
+L2_sSYR2_o_N
+1.01999999762, 0.460000009239, 0.860000010729, 0.440000010133, 0.640000001192, 0.860000010729, 0.540000016093, 0.860000001788, 1.36000001073, 0.820000015497, 0.960000034571, 0.460000009239, 0.720000015497, 1.28000003815, 1.17999999046, 0.860000007749, 0.420000016987, 0.760000013709, 1.20000001788, 0.870000010282, 0.460000009239, 0.660000000298, 1.04999999702, 0.650000009686, 0.730000008345, 0.930000005364, 0.780000020266, 0.470000011772, 0.600000008941, 0.750000014901, 0.940000030994, 0.640000025034, 0.800000011921, 0.880000014305, 1.16000002265, 0.870000010282, 0.360000007749, 0.70000000596, 1.14999997988, 1.46999998048, 0.630000003129, 1.0799999994, 1.43000001058, 0.800000038743, 0.660000004768, 1.06999999836, 1.09000002578, 1.44000000566, 0.890000032485, 1.26999998644, 1.10000005066, 0.740000007153, 1.06000001818, 0.500000017881, 0.460000016689, 0.660000006258, 0.860000003278, 0.540000008643, 0.420000002086, 0.620000002086, 0.780000014305, 1.00000001788, 0.360000007749, 0.720000008047, 0.56000002265, 0.360000015199, 1.15999998242, 0.480000017285, 1.04000002205, 1.26000000924, 0.550000015646, 0.560000012219, 1.16000000775, 1.30999996454, 0.690000000447, 1.06999997973, 1.16999997824, 1.38000002027, 0.350000005215, 1.06000002116, 1.17000001699, 1.46000002563, 0.660000009239, 1.26000000924, 1.38000002027, 0.660000000298, 0.84999999404, 1.66999996856, 0.760000009239, 1.30999996454, 1.09999997914, 1.30000000075, 1.42999996811, 1.37999997258, 1.08000003368, 1.2699999924, 1.34999997914, 0.79999999702, 1.34000001907, 1.08999999896, 1.04999999702, 0.680000012815, 0.840000028014, 1.14999997988, 1.02999997929, 0.640000002682, 0.990000012368, 0.899999994785, 0.799999989569, 0.770000000596, 1.11999998197, 0.920000036359, 0.43000001505, 0.949999991804, 0.899999994785, 1.25999999136, 0.410000013709, 1.05000001565, 0.820000012517, 1.05999998987, 0.929999996424, 1.18000002325, 0.620000012517, 1.46999998569, 1.22999998003, 1.26999997079, 1.17999997556, 1.52999995917, 1.06000001818, 1.18000002325, 1.32999997258, 0.610000000298, 1.43999999225, 0.390000009388, 0.830000002384, 0.460000009239, 1.25999998689, 1.12999999344, 1.52999997482, 0.820000005066, 0.869999973774, 1.77999997854, 1.11999998197, 0.829999985993, 1.87999994278, 1.16000003308, 1.52999997482, 0.829999996424, 0.860000010729, 1.44000004292, 1.29000002131, 1.43000000536, 1.4599999854, 0.520000018477, 1.08000000238, 1.10000005066, 0.380000015795, 0.980000014305, 1.37999998599, 1.0200000006, 0.760000006258, 0.660000010729, 0.340000014603, 1.00000002682, 0.980000038147, 0.860000015199, 0.880000041127, 0.580000015795, 0.680000026226, 0.640000019073, 1.25999998689, 1.1700000222, 0.360000007749, 0.800000029802, 1.05000001565, 1.2699999924, 0.230000004619, 1.38000001132, 1.32999998674, 0.600000028312, 0.360000007749, 1.06999999836, 1.18999999002, 0.640000030994, 1.29000003844, 0.570000013262, 1.40000000298, 0.860000007749, 0.700000017881, 0.970000034124, 0.460000009239, 0.660000000298, 1.04999999702, 0.949999991804, 0.929999996424, 1.23000001729, 1.08000000238, 0.470000011772, 1.09999999404, 1.2499999851, 0.940000030994, 0.840000013113, 0.800000011921, 0.580000017285, 1.01999999762, 0.850000008941, 0.990000001937, 0.720000008047, 0.970000028908, 1.09999999404, 0.300000008196, 0.710000009239, 1.45999997497, 0.66000002712, 0.690000019819, 1.2499999851, 0.800000011921, 0.580000027716, 1.13000002548, 0.850000008941, 0.560000018179, 1.28000003815, 1.14000004888, 1.34000004143, 0.46000002116, 1.36000000179, 1.44000004292, 1.25999999136, 0.740000019073, 1.54000000715, 1.18000002325, 1.24000001758, 1.24000001311, 0.680000029206, 1.52000006914, 0.620000034869, 0.940000030994, 0.980000035167, 0.380000015795, 0.840000013113, 0.990000026524, 0.860000037551, 0.760000010729, 0.99000003472, 0.510000015199, 0.790000030249, 1.09000003323, 0.380000012815, 1.1900000146, 0.740000019073, 0.630000025481, 0.520000033379, 0.220000008047, 0.840000013113, 0.580000015795, 1.25999998391, 0.500000007451, 0.570000013262, 0.959999994338, 0.860000003278, 1.45000000298, 0.750000003725, 1.1299999845, 1.12999999344, 1.27999999046, 0.770000016242, 1.20000001788, 0.950000032783, 0.840000036955, 0.440000014603, 1.0000000298, 0.580000017285, 1.02000000358, 0.480000015795, 1.30000003874, 0.580000026226, 1.38000002027, 1.08000003368, 0.420000014007, 0.660000012219, 1.36000002116, 0.540000025034, 0.700000029802, 0.880000014305, 0.560000018179, 1.38000001132, 1.07999998599, 0.480000015795, 1.04000002503,
+
+L2_sSYR2_o_N_pu
+1.01999999762, 0.460000009239, 0.860000010729, 0.440000010133, 0.640000001192, 0.860000010729, 0.540000016093, 0.860000001788, 1.36000001073, 0.820000015497, 0.960000034571, 0.460000009239, 0.720000015497, 1.28000003815, 1.17999999046, 0.860000007749, 0.420000016987, 1.20000001788, 0.870000010282, 0.460000009239, 0.660000000298, 1.04999999702, 0.650000009686, 0.730000008345, 0.930000005364, 0.780000020266, 0.470000011772, 0.600000008941, 0.750000014901, 0.940000030994, 0.640000025034, 0.800000011921, 0.880000014305, 0.360000007749, 0.70000000596, 1.14999997988, 1.46999998048, 0.630000003129, 1.0799999994, 1.43000001058, 0.800000038743, 0.660000004768, 1.06999999836, 1.09000002578, 1.44000000566, 0.890000032485, 1.26999998644, 1.10000005066, 0.460000016689, 0.660000006258, 0.860000003278, 0.540000008643, 0.420000002086, 0.620000002086, 0.780000014305, 1.00000001788, 0.360000007749, 0.720000008047, 0.56000002265, 0.360000015199, 1.15999998242, 0.480000017285, 1.16000000775, 1.30999996454, 0.690000000447, 1.06999997973, 1.16999997824, 1.38000002027, 0.350000005215, 1.06000002116, 1.17000001699, 1.46000002563, 0.660000009239, 1.26000000924, 1.38000002027, 1.09999997914, 1.30000000075, 1.42999996811, 1.37999997258, 1.08000003368, 1.2699999924, 1.34999997914, 0.79999999702, 1.34000001907, 1.08999999896, 1.04999999702, 0.680000012815, 0.799999989569, 0.770000000596, 1.11999998197, 0.920000036359, 0.43000001505, 0.949999991804, 0.899999994785, 1.25999999136, 0.410000013709, 1.05000001565, 0.820000012517, 1.17999997556, 1.52999995917, 1.06000001818, 1.18000002325, 1.32999997258, 0.610000000298, 1.43999999225, 0.390000009388, 0.830000002384, 0.460000009239, 1.87999994278, 1.16000003308, 1.52999997482, 0.829999996424, 0.860000010729, 1.44000004292, 1.29000002131, 1.43000000536, 1.4599999854, 0.340000014603, 1.00000002682, 0.980000038147, 0.860000015199, 0.880000041127, 0.580000015795, 0.680000026226, 0.640000019073, 0.360000007749, 1.06999999836, 1.18999999002, 0.640000030994, 1.29000003844, 0.570000013262, 1.40000000298, 1.09999999404, 1.2499999851, 0.940000030994, 0.840000013113, 0.800000011921, 0.580000017285, 0.800000011921, 0.580000027716, 1.13000002548, 0.850000008941, 0.560000018179, 1.52000006914, 0.620000034869, 0.940000030994, 0.980000035167, 0.220000008047, 0.840000013113, 0.580000015795, 1.0000000298, 0.580000017285, 1.04000002503,
+
+L2_dSYR2_A_nn
+0.6, 0.4, 0.2, 0.3, 0.2, 0.3, 0.9, 0.5, 0.2, 0.7, 0.4, 0.6, 0.3, 0.7, 0.5, 0.4, 0.4, 0.2, 0.3, 0.3, 0.4, 0.7, 0.9, 0.8, 0.1, 0.3, 0.6, 0.3, 0.4, 0.1, 0.8, 0.3, 0.9, 0.7, 0.1, 0.2, 0.6, 0.7, 0.7, 0.6, 0.1, 0.4, 0.9, 0.8, 0.4, 0.4, 0.8, 0.3, 0.1, 0.9, 0.3, 0.6, 0.3, 0.4, 0.6, 0.9, 0.6, 0.9, 0.8, 0.3, 0.2, 0.9, 0.6, 0.3, 0.4, 0.9, 0.2, 0.1, 0.5, 0.6, 0.1, 0.4, 0.3, 0.5, 0.2, 0.2, 0.2, 0.4, 0.5, 0.5, 0.5, 0.8, 0.1, 0.5, 0.6, 0.1, 0.1, 0.1, 0.5, 0.8, 0.8, 0.7, 0.2, 0.3, 0.9, 0.7, 0.1, 0.7, 0.8, 0.6, 0.6, 0.2, 0.8, 0.3, 0.1, 0.1, 0.4, 0.8, 0.9, 0.9, 0.4, 0.9, 0.8, 0.2, 0.6, 0.5, 0.3, 0.4, 0.6, 0.1, 0.9, 0.1, 0.3, 0.5, 0.3, 0.3, 0.5, 0.7, 0.4, 0.4, 0.1, 0.6, 0.2, 0.8, 0.8, 0.1, 0.2, 0.4, 0.8, 0.6, 0.4, 0.4, 0.2, 0.5, 0.9, 0.8, 0.4, 0.9, 0.4, 0.2, 0.9, 0.9, 0.7, 0.8, 0.8, 0.6, 0.4, 0.2, 0.1, 0.3, 0.8, 0.9, 0.1, 0.9, 0.9, 0.1, 0.5, 0.2, 0.1, 0.3, 0.8, 0.3, 0.8, 0.2, 0.7, 0.9, 0.3, 0.6, 0.3, 0.8, 0.8, 0.4, 0.5, 0.8, 0.9, 0.1, 0.6, 0.1, 0.2, 0.7, 0.2, 0.1, 0.3, 0.2, 0.3, 0.3, 0.9, 0.8, 0.6, 0.1, 0.4, 0.9, 0.3, 0.2, 0.6, 0.5, 0.2, 0.9, 0.1, 0.5, 0.1, 0.7, 0.8, 0.4, 0.1, 0.6, 0.9, 0.1, 0.2, 0.9, 0.8, 0.7, 0.9, 0.6, 0.5, 0.2, 0.7, 0.4, 0.6, 0.2, 0.9, 0.1, 0.3, 0.2, 0.7, 0.2, 0.8, 0.6, 0.5, 0.6, 0.7, 0.6, 0.4, 0.8, 0.3, 0.3, 0.5, 0.9, 0.5, 0.5, 0.7, 0.9, 0.1, 0.9, 0.7, 0.4, 0.4, 0.6, 0.9, 0.2, 0.7, 0.9, 0.8, 0.5, 0.6, 0.8, 0.9, 0.1, 0.5, 0.1, 0.1, 0.8, 0.7, 0.2, 0.6, 0.4, 0.9, 0.3, 0.4, 0.6, 0.2, 0.8, 0.3, 0.1, 0.2, 0.9, 0.1, 0.1, 0.5,
+
+L2_dSYR2_A_nn_pu
+0.6, 0.4, 0.2, 0.3, 0.2, 0.3, 0.9, 0.5, 0.2, 0.7, 0.4, 0.6, 0.3, 0.7, 0.5, 0.4, 0.4, 0.3, 0.3, 0.4, 0.7, 0.9, 0.8, 0.1, 0.3, 0.6, 0.3, 0.4, 0.1, 0.8, 0.3, 0.9, 0.7, 0.6, 0.7, 0.7, 0.6, 0.1, 0.4, 0.9, 0.8, 0.4, 0.4, 0.8, 0.3, 0.1, 0.9, 0.3, 0.6, 0.9, 0.6, 0.9, 0.8, 0.3, 0.2, 0.9, 0.6, 0.3, 0.4, 0.9, 0.2, 0.1, 0.3, 0.5, 0.2, 0.2, 0.2, 0.4, 0.5, 0.5, 0.5, 0.8, 0.1, 0.5, 0.6, 0.8, 0.7, 0.2, 0.3, 0.9, 0.7, 0.1, 0.7, 0.8, 0.6, 0.6, 0.2, 0.9, 0.9, 0.4, 0.9, 0.8, 0.2, 0.6, 0.5, 0.3, 0.4, 0.6, 0.5, 0.7, 0.4, 0.4, 0.1, 0.6, 0.2, 0.8, 0.8, 0.1, 0.9, 0.8, 0.4, 0.9, 0.4, 0.2, 0.9, 0.9, 0.7, 0.1, 0.9, 0.9, 0.1, 0.5, 0.2, 0.1, 0.3, 0.8, 0.4, 0.5, 0.8, 0.9, 0.1, 0.6, 0.6, 0.1, 0.4, 0.9, 0.3, 0.2, 0.9, 0.1, 0.2, 0.9, 0.8, 0.7, 0.2, 0.8, 0.6, 0.1, 0.9, 0.7, 0.1, 0.8, 0.5,
+
+L2_dSYR2_x_n1
+0.6, 0.7, 0.1, 0.8, 0.8, 0.7, 0.3, 0.4, 0.4, 0.7, 0.1, 0.7, 0.1, 0.3, 0.4, 0.9, 0.3,
+
+L2_dSYR2_x_n2
+0.6, 0.0, 0.7, 0.0, 0.1, 0.0, 0.8, 0.0, 0.8, 0.0, 0.7, 0.0, 0.3, 0.0, 0.4, 0.0, 0.4, 0.0, 0.7, 0.0, 0.1, 0.0, 0.7, 0.0, 0.1, 0.0, 0.3, 0.0, 0.4, 0.0, 0.9, 0.0, 0.3, 0.0,
+
+L2_dSYR2_y_n1
+0.9, 0.4, 0.8, 0.5, 0.6, 0.7, 0.6, 0.2, 0.9, 0.4, 0.3, 0.1, 0.5, 0.1, 0.7, 0.7, 0.9,
+
+L2_dSYR2_y_n2
+0.9, 0.0, 0.0, 0.4, 0.0, 0.0, 0.8, 0.0, 0.0, 0.5, 0.0, 0.0, 0.6, 0.0, 0.0, 0.7, 0.0, 0.0, 0.6, 0.0, 0.0, 0.2, 0.0, 0.0, 0.9, 0.0, 0.0, 0.4, 0.0, 0.0, 0.3, 0.0, 0.0, 0.1, 0.0, 0.0, 0.5, 0.0, 0.0, 0.1, 0.0, 0.0, 0.7, 0.0, 0.0, 0.7, 0.0, 0.0, 0.9, 0.0, 0.0,
+
+L2_dSYR2_o_N
+1.68, 1.27, 0.77, 1.32, 1.28, 1.35, 1.53, 0.98, 1.1, 1.57, 0.67, 1.29, 0.69, 1.03, 1.28, 1.63, 1.21, 1.07, 0.86, 0.9, 1.07, 1.44, 1.67, 1.34, 0.4, 1.09, 1.16, 0.55, 0.75, 0.49, 0.99, 0.95, 1.75, 1.45, 0.67, 0.8, 0.76, 1.39, 1.4, 1.23, 0.4, 0.74, 1.31, 1.4, 0.51, 0.97, 0.93, 0.55, 0.49, 1.69, 0.63, 1.62, 0.97, 1.09, 1.4, 1.78, 1.51, 1.53, 1.16, 1.22, 0.87, 1.19, 1.03, 0.75, 0.63, 1.66, 1.21, 0.97, 1.58, 1.34, 0.8, 1.28, 1.26, 1.48, 0.86, 0.6, 1.16, 1.14, 0.8, 1.0, 0.96, 1.06, 0.9, 1.6, 1.5, 1.15, 0.87, 0.73, 1.41, 1.78, 1.78, 1.33, 0.62, 1.21, 1.67, 0.98, 0.66, 1.12, 1.08, 1.37, 1.72, 1.04, 1.43, 0.84, 0.4, 0.73, 1.06, 1.43, 1.26, 1.2, 0.91, 1.44, 0.95, 0.65, 0.81, 0.71, 0.75, 1.15, 1.05, 0.58, 1.2, 0.44, 0.66, 0.9, 0.72, 0.6, 0.66, 1.14, 0.7, 0.54, 0.28, 0.82, 0.3, 1.16, 1.26, 0.52, 1.1, 1.19, 1.21, 1.52, 1.36, 1.31, 0.71, 0.94, 1.62, 1.59, 0.61, 1.57, 0.69, 0.51, 1.54, 1.99, 1.33, 1.67, 1.36, 1.2, 1.07, 0.94, 0.87, 0.84, 1.1, 1.69, 0.66, 1.15, 1.25, 0.49, 0.69, 0.85, 0.95, 1.05, 1.07, 0.55, 0.91, 0.49, 1.0, 1.18, 0.45, 0.74, 0.51, 1.05, 0.86, 0.62, 0.58, 0.9, 1.09, 0.44, 0.78, 0.79, 0.55, 1.27, 0.63, 0.6, 0.86, 0.65, 0.48, 0.97, 1.25, 1.02, 0.74, 0.46, 0.5, 1.43, 0.88, 0.86, 0.99, 0.89, 0.33, 1.35, 0.56, 0.92, 0.31, 0.92, 1.09, 0.79, 0.18, 0.96, 1.0, 0.26, 0.47, 1.42, 1.04, 1.03, 1.09, 0.85, 0.73, 0.46, 0.98, 0.61, 0.7, 0.51, 1.09, 0.2, 0.4, 0.36, 0.76, 0.45, 1.1, 0.9, 1.28, 1.25, 1.09, 1.36, 1.2, 1.57, 0.75, 0.66, 1.14, 1.55, 0.69, 1.03, 0.97, 1.15, 0.66, 1.81, 1.27, 1.63, 1.25, 1.39, 1.91, 1.3, 1.82, 1.65, 1.26, 1.59, 1.45, 1.14, 1.48, 0.62, 0.8, 1.01, 1.36, 1.82, 1.51, 0.95, 0.93, 1.27, 1.8, 1.14, 0.85, 1.02, 0.83, 1.55, 0.48, 0.76, 0.44, 1.2, 0.67, 1.12, 1.04,
+
+L2_dSYR2_o_N_pu
+1.68, 1.27, 0.77, 1.32, 1.28, 1.35, 1.53, 0.98, 1.1, 1.57, 0.67, 1.29, 0.69, 1.03, 1.28, 1.63, 1.21, 0.86, 0.9, 1.07, 1.44, 1.67, 1.34, 0.4, 1.09, 1.16, 0.55, 0.75, 0.49, 0.99, 0.95, 1.75, 1.45, 0.76, 1.39, 1.4, 1.23, 0.4, 0.74, 1.31, 1.4, 0.51, 0.97, 0.93, 0.55, 0.49, 1.69, 0.63, 1.4, 1.78, 1.51, 1.53, 1.16, 1.22, 0.87, 1.19, 1.03, 0.75, 0.63, 1.66, 1.21, 0.97, 1.26, 1.48, 0.86, 0.6, 1.16, 1.14, 0.8, 1.0, 0.96, 1.06, 0.9, 1.6, 1.5, 1.78, 1.33, 0.62, 1.21, 1.67, 0.98, 0.66, 1.12, 1.08, 1.37, 1.72, 1.04, 1.26, 1.2, 0.91, 1.44, 0.95, 0.65, 0.81, 0.71, 0.75, 1.15, 1.05, 0.66, 1.14, 0.7, 0.54, 0.28, 0.82, 0.3, 1.16, 1.26, 0.52, 1.62, 1.59, 0.61, 1.57, 0.69, 0.51, 1.54, 1.99, 1.33, 0.66, 1.15, 1.25, 0.49, 0.69, 0.85, 0.95, 1.05, 0.86, 0.62, 0.58, 0.9, 1.09, 0.44, 0.78, 0.74, 0.46, 0.5, 1.43, 0.88, 0.86, 1.0, 0.26, 0.47, 1.42, 1.04, 0.76, 0.45, 1.1, 0.9, 0.66, 1.81, 1.27, 1.36, 1.82, 1.04,
+
+L3_sGEMM_A_mk
+0.4, 0.5, 0.6, 0.8, 0.9, 0.8, 0.2, 0.9, 0.6, 0.1, 0.1, 0.4, 0.5, 0.6, 0.1, 0.9, 0.9, 0.4, 0.7, 0.6, 0.5, 0.1, 0.8, 0.2, 0.9, 0.9, 0.5, 0.1, 0.4, 0.8, 0.6, 0.6, 0.5, 0.1, 0.1, 0.5, 0.7, 0.2, 0.6, 0.3, 0.2, 0.2, 0.1, 0.2, 0.3, 0.1, 0.4, 0.8, 0.2, 0.4, 0.3, 0.8, 0.3, 0.6, 0.8, 0.5, 0.6, 0.2, 0.5, 0.1, 0.5, 0.5, 0.2, 0.7, 0.8, 0.5, 0.4, 0.8, 0.6, 0.5, 0.7, 0.7, 0.5, 0.2, 0.6, 0.5, 0.6, 0.7, 0.7, 0.8, 0.9, 0.9, 0.4, 0.7, 0.3, 0.4, 0.2, 0.3, 0.4, 0.1, 0.4, 0.6, 0.7, 0.4, 0.9, 0.8, 0.3, 0.1, 0.5, 0.6, 0.4, 0.2, 0.3, 0.6, 0.8, 0.8, 0.5, 0.9, 0.2, 0.7, 0.2, 0.9, 0.9, 0.1, 0.9, 0.5, 0.1, 0.9, 0.6, 0.6, 0.7, 0.6, 0.7, 0.9, 0.9, 0.7, 0.9, 0.7, 0.2, 0.4, 0.4, 0.9, 0.3, 0.3, 0.8, 0.9, 0.9, 0.4, 0.6, 0.9, 0.6, 0.2, 0.3, 0.9, 0.6, 0.6, 0.3, 0.4, 0.1, 0.7, 0.5, 0.5, 0.4, 0.3, 0.6, 0.7, 0.3, 0.3, 0.3, 0.6,
+
+L3_sGEMM_B_kn
+0.2, 0.4, 0.6, 0.5, 0.1, 0.9, 0.1, 0.6, 0.9, 0.1, 0.2, 0.3, 0.6, 0.9, 0.1, 0.1, 0.8, 0.9, 0.4, 0.1, 0.2, 0.8, 0.6, 0.3, 0.3, 0.8, 0.5, 0.1, 0.4, 0.6, 0.9, 0.6, 0.8, 0.2, 0.2, 0.2, 0.8, 0.5, 0.2, 0.3, 0.7, 0.5, 0.2, 0.8, 0.4, 0.4, 0.1, 0.4, 0.4, 0.6, 0.6, 0.1, 0.2, 0.8, 0.5, 0.3, 0.2, 0.8, 0.2, 0.3, 0.1, 0.4, 0.2, 0.7, 0.1, 0.1, 0.5, 0.4, 0.4, 0.8, 0.9, 0.3, 0.3, 0.4, 0.4, 0.5, 0.8, 0.4, 0.1, 0.4, 0.3, 0.8, 0.2, 0.7, 0.4, 0.8, 0.4, 0.5, 0.9, 0.9, 0.4, 0.5, 0.8, 0.5, 0.4, 0.1, 0.2, 0.1, 0.5, 0.5, 0.6, 0.7, 0.1, 0.3, 0.9, 0.8, 0.7, 0.4, 0.1, 0.2, 0.3, 0.6, 0.5, 0.1, 0.2, 0.4, 0.2, 0.9, 0.1, 0.7, 0.8, 0.7, 0.6, 0.4, 0.5, 0.8, 0.1, 0.4, 0.4, 0.9, 0.4, 0.5, 0.9, 0.4, 0.6, 0.1, 0.5, 0.9, 0.1, 0.7, 0.3, 0.8, 0.4, 0.5, 0.3, 0.6, 0.3, 0.3, 0.8, 0.1, 0.6, 0.7, 0.4, 0.4, 0.2, 0.2, 0.4, 0.3, 0.1, 0.6, 0.1, 0.2, 0.4, 0.2, 0.1, 0.1, 0.7, 0.4, 0.8, 0.8, 0.3, 0.2, 0.3, 0.2, 0.3, 0.8, 0.9, 0.2, 0.2, 0.2, 0.7, 0.8, 0.3, 0.2, 0.7, 0.2, 0.8, 0.9, 0.8, 0.4, 0.2, 0.7, 0.4, 0.6, 0.7, 0.5, 0.9, 0.9, 0.9, 0.8, 0.4, 0.6, 0.4, 0.3, 0.9, 0.8, 0.8, 0.1, 0.5, 0.4, 0.3, 0.1, 0.4, 0.2, 0.3, 0.7, 0.1, 0.8, 0.2, 0.5, 0.8, 0.7, 0.9, 0.2, 0.9, 0.6, 0.5, 0.1, 0.9, 0.3, 0.4, 0.5, 0.9, 0.5, 0.4, 0.3, 0.6, 0.8, 0.4, 0.4, 0.2, 0.1, 0.4, 0.3, 0.5, 0.3, 0.1, 0.7, 0.5, 0.5, 0.8, 0.7, 0.5, 0.7, 0.8, 0.1, 0.9, 0.9, 0.8, 0.4, 0.5, 0.1, 0.1, 0.9, 0.9, 0.2, 0.5, 0.7, 0.1, 0.6, 0.8, 0.7,
+
+L3_sGEMM_C_mn
+0.6, 0.6, 0.7, 0.2, 0.5, 0.3, 0.4, 0.8, 0.7, 0.4, 0.1, 0.8, 0.9, 0.1, 0.1, 0.6, 0.7, 0.4, 0.5, 0.6, 0.3, 0.7, 0.6, 0.5, 0.7, 0.3, 0.7, 0.9, 0.9, 0.2, 0.3, 0.6, 0.9, 0.8, 0.5, 0.1, 0.5, 0.1, 0.9, 0.1, 0.1, 0.5, 0.6, 0.2, 0.6, 0.7, 0.4, 0.1, 0.5, 0.1, 0.3, 0.1, 0.6, 0.7, 0.2, 0.9, 0.8, 0.4, 0.8, 0.7, 0.7, 0.2, 0.3, 0.1, 0.6, 0.3, 0.6, 0.3, 0.3, 0.4, 0.9, 0.4, 0.2, 0.4, 0.8, 0.9, 0.9, 0.1, 0.9, 0.5, 0.6, 0.7, 0.5, 0.2, 0.2, 0.6, 0.9, 0.9, 0.1, 0.7, 0.8, 0.2, 0.3, 0.9, 0.5, 0.5, 0.6, 0.4, 0.9, 0.5, 0.9, 0.1, 0.1, 0.6, 0.1, 0.4, 0.8, 0.1, 0.9, 0.4, 0.9, 0.8, 0.3, 0.5, 0.3, 0.5, 0.7, 0.7, 0.5, 0.9, 0.5, 0.1, 0.1, 0.7, 0.4, 0.8, 0.6, 0.1, 0.9, 0.9, 0.1, 0.1, 0.2, 0.3, 0.8, 0.3, 0.4, 0.5, 0.3, 0.3, 0.2, 0.7, 0.3, 0.6, 0.5, 0.9, 0.9, 0.8, 0.3, 0.3, 0.9, 0.4, 0.1, 0.8, 0.6, 0.4, 0.8, 0.6, 0.2, 0.9, 0.5, 0.5, 0.7, 0.6, 0.7, 0.2, 0.6, 0.9, 0.2, 0.5,
+
+L3_sGEMM_o_NN
+4.71000001967, 5.75000002831, 5.74999996126, 4.77000004604, 4.3200000602, 4.22000007287, 4.13000007316, 4.1900000757, 4.9799999994, 4.41000004128, 3.18000001431, 4.44000003919, 4.80000002384, 4.34999998435, 3.32000009745, 5.71000010684, 4.94000006303, 3.91000000998, 5.11000001222, 5.18000006944, 4.89000003174, 4.23000008509, 4.93000005528, 4.14000004441, 4.05000000894, 4.12000004679, 4.86000005692, 4.11000001818, 4.56000002116, 4.27000008702, 4.73999998778, 3.95000010431, 6.35000003353, 6.00000009388, 2.44000002801, 3.13000004932, 4.00000002012, 2.80000007078, 3.11000003606, 2.52000004679, 2.12000005424, 2.24000003472, 3.39000004962, 2.77000004753, 2.46000006363, 2.77000002518, 2.95000005588, 2.80000002682, 2.34000006974, 3.40000005439, 3.07000006542, 3.24000003695, 4.50000006557, 4.84000002205, 4.20000006631, 4.30000005588, 4.20000009835, 3.53000008285, 3.31000007927, 3.8500000529, 3.98000006422, 2.96000003606, 3.26000004724, 3.2900000608, 3.80000006333, 3.10000010431, 5.08000011861, 3.99000008762, 4.62000000879, 5.73000005007, 6.25000003129, 5.16000003234, 4.4600000599, 5.07000008404, 4.9100000897, 4.52000001773, 5.36000004277, 4.5300000307, 4.77999997854, 4.85000004247, 5.23000009254, 5.58999999449, 4.17000009447, 5.77000006616, 5.38000011563, 4.65999999061, 5.48000001132, 5.23000001207, 3.7500000298, 4.47000003189, 4.96000004649, 3.70000005588, 3.4800000605, 5.06999997601, 4.50000001341, 3.63000002325, 4.56000004053, 4.81000005618, 5.39999991208, 3.89000008762, 5.65000002012, 4.87000004157, 3.69999999031, 5.33000001132, 4.2200000304, 4.57000004381, 4.1600000681, 3.78000005752, 4.6700000684, 3.4700000006, 4.35000000149, 4.98000000983, 3.81000001222, 4.26999997899, 4.2600000532, 3.97000003487, 4.11000007108, 5.48000007167, 4.8300000672, 5.97999988243, 6.22999993831, 5.69999997914, 5.36999995515, 5.43999996394, 5.44999997765, 5.65000000894, 4.90999996901, 4.47999995396, 6.13999992892, 5.42999992862, 5.0899999103, 4.87999999046, 5.50999993473, 4.64000003248, 6.80000003725, 6.64999998808, 4.52999997556, 5.63999997735, 5.36999999389, 4.75000002012, 4.27000004232, 4.91000003904, 4.63000005975, 3.52000003636, 4.40000001714, 5.45999996975, 4.95999993771, 4.78000002027, 4.74999999627, 4.32000002816, 4.67000005499, 5.86000003457, 4.38000008211, 4.35000003949, 4.40000010431, 4.08000008062, 4.40000007674, 4.10000008568, 3.81000012025, 4.14000006378, 3.32000006318, 3.91000008151, 4.20000005364, 3.58000005081, 3.94000006229, 3.61000011876, 4.20000007302, 4.01000009865, 4.3000001289, 4.3000001356,
+
+L3_sGEMM_A_km
+0.3, 0.6, 0.6, 0.1, 0.7, 0.5, 0.6, 0.8, 0.3, 0.3, 0.5, 0.3, 0.5, 0.6, 0.1, 0.7, 0.6, 0.6, 0.8, 0.2, 0.6, 0.3, 0.3, 0.3, 0.7, 0.4, 0.6, 0.4, 0.2, 0.9, 0.3, 0.2, 0.5, 0.3, 0.8, 0.4, 0.8, 0.7, 0.2, 0.1, 0.6, 0.2, 0.5, 0.5, 0.3, 0.2, 0.9, 0.5, 0.9, 0.4, 0.5, 0.7, 0.7, 0.4, 0.3, 0.4, 0.1, 0.9, 0.1, 0.9, 0.5, 0.4, 0.8, 0.1, 0.9, 0.9, 0.9, 0.6, 0.7, 0.8, 0.3, 0.6, 0.5, 0.4, 0.3, 0.8, 0.2, 0.1, 0.7, 0.6, 0.8, 0.2, 0.9, 0.2, 0.3, 0.5, 0.1, 0.9, 0.2, 0.7, 0.3, 0.7, 0.9, 0.1, 0.8, 0.7, 0.8, 0.8, 0.5, 0.2, 0.8, 0.5, 0.9, 0.8, 0.6, 0.2, 0.7, 0.7, 0.4, 0.9, 0.5, 0.9, 0.5, 0.2, 0.4, 0.7, 0.8, 0.7, 0.9, 0.8, 0.4, 0.2, 0.6, 0.6, 0.5, 0.7, 0.4, 0.2, 0.1, 0.5, 0.5, 0.3, 0.1, 0.1, 0.9, 0.3, 0.4, 0.3, 0.2, 0.4, 0.6, 0.4, 0.5, 0.7, 0.1, 0.1, 0.2, 0.5, 0.8, 0.5, 0.5, 0.9, 0.8, 0.1, 0.6, 0.7, 0.3, 0.7, 0.9, 0.6,
+
+L3_sGEMM_B_nk
+0.8, 0.8, 0.1, 0.1, 0.7, 0.3, 0.4, 0.8, 0.7, 0.1, 0.2, 0.6, 0.5, 0.7, 0.5, 0.6, 0.2, 0.4, 0.6, 0.3, 0.5, 0.2, 0.6, 0.1, 0.8, 0.8, 0.2, 0.5, 0.7, 0.9, 0.6, 0.5, 0.1, 0.9, 0.9, 0.3, 0.9, 0.2, 0.3, 0.2, 0.2, 0.2, 0.4, 0.9, 0.6, 0.9, 0.8, 0.7, 0.1, 0.5, 0.4, 0.6, 0.7, 0.7, 0.9, 0.9, 0.7, 0.4, 0.5, 0.2, 0.3, 0.6, 0.5, 0.6, 0.2, 0.5, 0.3, 0.5, 0.7, 0.4, 0.9, 0.6, 0.8, 0.1, 0.3, 0.4, 0.3, 0.3, 0.5, 0.4, 0.3, 0.6, 0.9, 0.7, 0.9, 0.9, 0.5, 0.3, 0.1, 0.6, 0.7, 0.8, 0.6, 0.6, 0.5, 0.8, 0.6, 0.6, 0.7, 0.6, 0.3, 0.6, 0.3, 0.1, 0.1, 0.1, 0.5, 0.8, 0.1, 0.1, 0.7, 0.3, 0.7, 0.6, 0.3, 0.9, 0.2, 0.9, 0.4, 0.5, 0.2, 0.8, 0.3, 0.5, 0.9, 0.6, 0.2, 0.8, 0.9, 0.8, 0.9, 0.2, 0.8, 0.6, 0.6, 0.1, 0.6, 0.4, 0.5, 0.5, 0.7, 0.4, 0.1, 0.7, 0.5, 0.5, 0.9, 0.2, 0.3, 0.3, 0.1, 0.5, 0.2, 0.7, 0.1, 0.4, 0.9, 0.4, 0.4, 0.8, 0.2, 0.9, 0.5, 0.8, 0.6, 0.3, 0.7, 0.1, 0.9, 0.2, 0.9, 0.1, 0.8, 0.6, 0.1, 0.2, 0.4, 0.3, 0.7, 0.1, 0.7, 0.3, 0.2, 0.4, 0.6, 0.3, 0.1, 0.3, 0.8, 0.3, 0.7, 0.5, 0.8, 0.7, 0.3, 0.9, 0.6, 0.4, 0.3, 0.3, 0.6, 0.4, 0.5, 0.2, 0.7, 0.2, 0.1, 0.2, 0.8, 0.9, 0.3, 0.3, 0.1, 0.4, 0.3, 0.9, 0.8, 0.3, 0.6, 0.6, 0.4, 0.3, 0.7, 0.7, 0.7, 0.6, 0.7, 0.7, 0.4, 0.3, 0.9, 0.8, 0.3, 0.8, 0.7, 0.5, 0.3, 0.1, 0.7, 0.8, 0.3, 0.4, 0.7, 0.7, 0.2, 0.8, 0.6, 0.4, 0.8, 0.2, 0.6, 0.3, 0.9, 0.7, 0.2, 0.3, 0.5, 0.4, 0.6, 0.7, 0.1, 0.9, 0.4, 0.8, 0.8, 0.9, 0.9, 0.5, 0.7, 0.1, 0.4, 0.2,
+
+L3_sGEMM_o_TT
+4.54000011742, 4.67000014588, 5.1700000371, 4.5900000824, 4.27000010267, 5.23000010967, 3.71000012323, 4.75000010133, 5.2200000982, 3.78000008211, 4.37000006169, 4.25000012591, 4.38000009179, 4.33000011861, 4.60000010058, 4.7700001362, 5.12000006691, 4.06000010759, 3.8900000459, 4.35000000149, 4.110000045, 3.75000004843, 5.29000005484, 3.69000007421, 5.06000000775, 4.30000004172, 4.19000001386, 3.69000001386, 3.76000003681, 3.11000007182, 4.450000076, 5.19000006154, 4.24000005633, 5.03000000611, 5.04000006825, 4.75000006557, 4.94000001535, 5.34999998212, 5.32000000954, 5.80000003353, 3.82000009075, 5.82000002444, 5.93000008583, 4.33000003591, 5.43999999449, 4.58000006273, 4.84000006005, 5.30000005215, 6.36000002116, 4.92000007138, 6.1099999474, 2.76000006512, 3.04000009805, 3.89000003621, 3.16000004724, 3.39000004441, 4.30000007749, 2.85000007898, 3.5700000833, 3.60000006929, 3.07000003934, 3.25000007004, 2.75000006557, 2.70000007451, 3.62000008777, 3.44000007421, 3.43000011042, 3.55000005886, 3.93000006497, 4.74000005558, 5.01999997228, 4.79000007346, 3.69000005484, 5.56000008076, 3.94000010028, 5.7900000295, 5.53000000313, 3.88000001431, 5.13000002027, 3.62000006169, 4.36000008747, 4.53000010297, 5.50000002235, 4.62000004977, 4.77000003636, 4.81000006586, 4.95999999434, 4.95999993548, 4.57999998599, 4.50000000149, 5.62000004977, 3.25000006631, 5.1700000006, 5.50999996901, 4.44999997094, 4.42999997333, 3.9000000678, 4.08000002474, 5.41999998495, 5.54999999106, 5.05000000745, 4.78999998108, 3.91000008076, 4.76000011653, 4.77000000954, 4.71000003159, 4.55000002831, 5.5900000675, 4.5300001052, 4.9600000979, 5.76000004649, 4.40000007823, 4.72000004381, 3.68000006497, 4.34000008613, 4.37000012949, 5.92000002444, 4.65000006706, 4.9500000298, 5.32000003561, 5.06000007629, 4.64999998659, 5.02000000581, 4.91000001371, 6.17000001252, 4.91000009865, 5.87000003114, 5.47000005201, 4.78000000536, 5.55999996901, 3.74000005484, 4.52000004679, 5.20000006109, 5.83000003591, 5.48000006348, 5.7799999547, 4.76000003532, 4.29000003397, 5.08999992594, 4.69999997094, 4.07999998748, 5.66999998495, 3.68000006944, 4.53000005007, 4.73000000387, 4.38999998108, 4.25999997273, 4.13000001505, 3.41000005469, 4.7300000076, 5.96999996483, 3.48000006124, 3.86000000402, 4.96000010386, 4.84000008985, 5.08999998927, 5.70000001118, 4.73000008658, 5.76999999613, 4.65000002086, 4.9400000377, 5.49000002727, 4.5300000076, 4.86999999389, 4.45000003502, 3.67000006318, 5.23000010595, 5.98000000164, 4.98000004187, 5.64999997392,
+
+L3_sGEMM_o_HH
+4.54000011742, 4.67000014588, 5.1700000371, 4.5900000824, 4.27000010267, 5.23000010967, 3.71000012323, 4.75000010133, 5.2200000982, 3.78000008211, 4.37000006169, 4.25000012591, 4.38000009179, 4.33000011861, 4.60000010058, 4.7700001362, 5.12000006691, 4.06000010759, 3.8900000459, 4.35000000149, 4.110000045, 3.75000004843, 5.29000005484, 3.69000007421, 5.06000000775, 4.30000004172, 4.19000001386, 3.69000001386, 3.76000003681, 3.11000007182, 4.450000076, 5.19000006154, 4.24000005633, 5.03000000611, 5.04000006825, 4.75000006557, 4.94000001535, 5.34999998212, 5.32000000954, 5.80000003353, 3.82000009075, 5.82000002444, 5.93000008583, 4.33000003591, 5.43999999449, 4.58000006273, 4.84000006005, 5.30000005215, 6.36000002116, 4.92000007138, 6.1099999474, 2.76000006512, 3.04000009805, 3.89000003621, 3.16000004724, 3.39000004441, 4.30000007749, 2.85000007898, 3.5700000833, 3.60000006929, 3.07000003934, 3.25000007004, 2.75000006557, 2.70000007451, 3.62000008777, 3.44000007421, 3.43000011042, 3.55000005886, 3.93000006497, 4.74000005558, 5.01999997228, 4.79000007346, 3.69000005484, 5.56000008076, 3.94000010028, 5.7900000295, 5.53000000313, 3.88000001431, 5.13000002027, 3.62000006169, 4.36000008747, 4.53000010297, 5.50000002235, 4.62000004977, 4.77000003636, 4.81000006586, 4.95999999434, 4.95999993548, 4.57999998599, 4.50000000149, 5.62000004977, 3.25000006631, 5.1700000006, 5.50999996901, 4.44999997094, 4.42999997333, 3.9000000678, 4.08000002474, 5.41999998495, 5.54999999106, 5.05000000745, 4.78999998108, 3.91000008076, 4.76000011653, 4.77000000954, 4.71000003159, 4.55000002831, 5.5900000675, 4.5300001052, 4.9600000979, 5.76000004649, 4.40000007823, 4.72000004381, 3.68000006497, 4.34000008613, 4.37000012949, 5.92000002444, 4.65000006706, 4.9500000298, 5.32000003561, 5.06000007629, 4.64999998659, 5.02000000581, 4.91000001371, 6.17000001252, 4.91000009865, 5.87000003114, 5.47000005201, 4.78000000536, 5.55999996901, 3.74000005484, 4.52000004679, 5.20000006109, 5.83000003591, 5.48000006348, 5.7799999547, 4.76000003532, 4.29000003397, 5.08999992594, 4.69999997094, 4.07999998748, 5.66999998495, 3.68000006944, 4.53000005007, 4.73000000387, 4.38999998108, 4.25999997273, 4.13000001505, 3.41000005469, 4.7300000076, 5.96999996483, 3.48000006124, 3.86000000402, 4.96000010386, 4.84000008985, 5.08999998927, 5.70000001118, 4.73000008658, 5.76999999613, 4.65000002086, 4.9400000377, 5.49000002727, 4.5300000076, 4.86999999389, 4.45000003502, 3.67000006318, 5.23000010595, 5.98000000164, 4.98000004187, 5.64999997392,
+
+L3_dGEMM_A_mk
+0.1, 0.2, 0.2, 0.9, 0.5, 0.1, 0.4, 0.1, 0.3, 0.2, 0.6, 0.5, 0.6, 0.4, 0.7, 0.9, 0.4, 0.9, 0.6, 0.8, 0.9, 0.7, 0.9, 0.5, 0.3, 0.1, 0.5, 0.6, 0.1, 0.8, 0.8, 0.3, 0.3, 0.2, 0.6, 0.6, 0.8, 0.6, 0.3, 0.2, 0.1, 0.1, 0.8, 0.7, 0.6, 0.3, 0.2, 0.2, 0.3, 0.6, 0.5, 0.8, 0.5, 0.5, 0.8, 0.7, 0.6, 0.3, 0.5, 0.2, 0.6, 0.8, 0.4, 0.1, 0.9, 0.4, 0.2, 0.2, 0.7, 0.2, 0.1, 0.1, 0.5, 0.6, 0.1, 0.6, 0.1, 0.5, 0.5, 0.6, 0.2, 0.8, 0.3, 0.1, 0.8, 0.3, 0.7, 0.4, 0.3, 0.4, 0.9, 0.2, 0.7, 0.8, 0.5, 0.8, 0.1, 0.7, 0.9, 0.5, 0.3, 0.3, 0.7, 0.8, 0.1, 0.7, 0.2, 0.5, 0.3, 0.6, 0.2, 0.7, 0.5, 0.4, 0.9, 0.1, 0.6, 0.5, 0.9, 0.7, 0.2, 0.7, 0.4, 0.1, 0.7, 0.9, 0.5, 0.6, 0.3, 0.4, 0.4, 0.8, 0.1, 0.5, 0.1, 0.8, 0.6, 0.2, 0.7, 0.7, 0.6, 0.2, 0.2, 0.2, 0.6, 0.3, 0.8, 0.9, 0.6, 0.8, 0.7, 0.9, 0.6, 0.5, 0.8, 0.6, 0.7, 0.8, 0.9, 0.6,
+
+L3_dGEMM_B_kn
+0.7, 0.1, 0.3, 0.8, 0.9, 0.7, 0.3, 0.6, 0.8, 0.9, 0.5, 0.6, 0.6, 0.4, 0.2, 0.1, 0.4, 0.6, 0.7, 0.8, 0.8, 0.1, 0.9, 0.8, 0.7, 0.4, 0.8, 0.9, 0.8, 0.9, 0.5, 0.5, 0.4, 0.1, 0.7, 0.4, 0.5, 0.2, 0.5, 0.9, 0.8, 0.5, 0.5, 0.7, 0.5, 0.1, 0.5, 0.9, 0.4, 0.7, 0.8, 0.8, 0.1, 0.7, 0.6, 0.9, 0.5, 0.4, 0.2, 0.3, 0.4, 0.2, 0.7, 0.2, 0.9, 0.3, 0.6, 0.3, 0.9, 0.9, 0.8, 0.3, 0.1, 0.5, 0.2, 0.7, 0.6, 0.8, 0.2, 0.6, 0.4, 0.3, 0.1, 0.4, 0.1, 0.7, 0.8, 0.4, 0.2, 0.4, 0.6, 0.8, 0.3, 0.7, 0.4, 0.3, 0.1, 0.6, 0.5, 0.6, 0.3, 0.3, 0.6, 0.4, 0.8, 0.5, 0.1, 0.6, 0.4, 0.1, 0.7, 0.5, 0.2, 0.1, 0.7, 0.5, 0.9, 0.7, 0.9, 0.7, 0.2, 0.1, 0.3, 0.5, 0.6, 0.4, 0.4, 0.6, 0.7, 0.8, 0.3, 0.3, 0.1, 0.4, 0.1, 0.7, 0.2, 0.8, 0.6, 0.9, 0.4, 0.6, 0.7, 0.6, 0.8, 0.2, 0.2, 0.9, 0.5, 0.3, 0.6, 0.6, 0.1, 0.5, 0.2, 0.2, 0.8, 0.9, 0.3, 0.6, 0.8, 0.2, 0.1, 0.7, 0.4, 0.1, 0.5, 0.7, 0.4, 0.7, 0.8, 0.3, 0.4, 0.9, 0.9, 0.5, 0.6, 0.9, 0.6, 0.6, 0.4, 0.7, 0.4, 0.9, 0.3, 0.5, 0.2, 0.4, 0.3, 0.1, 0.7, 0.6, 0.8, 0.6, 0.5, 0.5, 0.7, 0.3, 0.1, 0.1, 0.9, 0.9, 0.8, 0.8, 0.3, 0.1, 0.8, 0.8, 0.7, 0.3, 0.3, 0.8, 0.3, 0.5, 0.3, 0.1, 0.7, 0.7, 0.9, 0.2, 0.9, 0.1, 0.2, 0.2, 0.2, 0.7, 0.9, 0.6, 0.4, 0.4, 0.2, 0.6, 0.4, 0.2, 0.6, 0.3, 0.7, 0.4, 0.8, 0.4, 0.7, 0.1, 0.6, 0.6, 0.2, 0.2, 0.4, 0.4, 0.3, 0.9, 0.7, 0.2, 0.3, 0.8, 0.6, 0.6, 0.7, 0.6, 0.1, 0.9, 0.4, 0.8, 0.3, 0.7, 0.2, 0.3, 0.1, 0.7, 0.5, 0.6, 0.2, 0.4,
+
+L3_dGEMM_C_mn
+0.4, 0.4, 0.4, 0.3, 0.8, 0.4, 0.2, 0.3, 0.8, 0.7, 0.6, 0.7, 0.6, 0.9, 0.4, 0.3, 0.8, 0.4, 0.5, 0.9, 0.5, 0.1, 0.2, 0.5, 0.3, 0.9, 0.6, 0.7, 0.6, 0.5, 0.3, 0.1, 0.6, 0.7, 0.4, 0.5, 0.9, 0.4, 0.6, 0.9, 0.8, 0.2, 0.3, 0.1, 0.5, 0.3, 0.2, 0.6, 0.1, 0.9, 0.3, 0.6, 0.4, 0.1, 0.6, 0.6, 0.8, 0.9, 0.2, 0.3, 0.7, 0.9, 0.7, 0.7, 0.2, 0.2, 0.8, 0.8, 0.5, 0.3, 0.6, 0.3, 0.7, 0.5, 0.1, 0.2, 0.1, 0.1, 0.1, 0.4, 0.7, 0.4, 0.4, 0.3, 0.4, 0.4, 0.4, 0.3, 0.8, 0.1, 0.4, 0.4, 0.3, 0.3, 0.8, 0.4, 0.1, 0.5, 0.5, 0.7, 0.7, 0.3, 0.3, 0.6, 0.3, 0.5, 0.2, 0.9, 0.4, 0.4, 0.9, 0.4, 0.6, 0.9, 0.9, 0.2, 0.9, 0.7, 0.5, 0.3, 0.6, 0.3, 0.2, 0.6, 0.1, 0.2, 0.5, 0.2, 0.1, 0.6, 0.1, 0.7, 0.8, 0.8, 0.3, 0.5, 0.7, 0.6, 0.4, 0.9, 0.1, 0.6, 0.2, 0.1, 0.2, 0.2, 0.2, 0.7, 0.5, 0.6, 0.7, 0.6, 0.3, 0.5, 0.9, 0.1, 0.7, 0.9, 0.3, 0.4, 0.2, 0.8, 0.9, 0.1, 0.3, 0.5, 0.5, 0.2, 0.6, 0.5,
+
+L3_dGEMM_o_NN
+4.44, 3.09, 4.19, 3.56, 5.07, 4.15, 3.56, 3.42, 4.18, 3.79, 2.89, 3.71, 3.77, 4.87, 3.74, 3.69, 3.97, 6.15, 4.61, 5.81, 4.72, 4.68, 6.23, 5.28, 4.42, 5.82, 5.6, 4.49, 4.83, 4.99, 5.28, 4.32, 5.38, 4.82, 4.57, 3.22, 4.28, 3.81, 4.38, 4.89, 4.2, 3.7, 3.78, 3.84, 2.91, 2.89, 3.14, 4.78, 3.28, 4.11, 3.43, 5.32, 3.64, 4.41, 4.82, 4.97, 5.89, 5.13, 4.13, 4.57, 4.84, 4.37, 4.39, 4.58, 4.65, 4.21, 4.79, 4.7, 4.13, 3.08, 3.57, 3.56, 4.49, 4.39, 3.35, 3.49, 3.56, 3.32, 2.75, 3.44, 3.59, 3.54, 3.28, 3.19, 3.11, 5.17, 4.07, 4.77, 4.88, 4.55, 5.28, 4.76, 4.66, 4.63, 4.91, 3.94, 3.66, 4.75, 4.87, 4.75, 4.46, 4.03, 4.74, 3.61, 3.94, 3.99, 4.41, 5.69, 4.77, 3.97, 4.71, 4.2, 4.22, 3.56, 4.38, 4.49, 4.93, 4.32, 4.64, 5.33, 4.06, 4.64, 4.12, 5.42, 5.4, 4.78, 4.78, 4.78, 4.43, 4.49, 3.28, 4.99, 5.34, 5.17, 4.26, 5.2, 4.67, 3.1, 3.54, 4.82, 4.28, 4.71, 3.91, 3.63, 3.77, 3.79, 3.07, 3.68, 3.46, 4.63, 4.2, 3.7, 3.55, 7.15, 5.23, 5.55, 6.03, 7.48, 7.0, 6.13, 5.46, 6.69, 6.44, 4.58, 5.01, 5.62, 6.58, 5.58, 5.92, 6.02,
+
+L3_dGEMM_A_km
+0.4, 0.7, 0.4, 0.5, 0.8, 0.3, 0.9, 0.6, 0.5, 0.5, 0.7, 0.4, 0.6, 0.9, 0.2, 0.4, 0.1, 0.8, 0.9, 0.8, 0.8, 0.6, 0.6, 0.1, 0.5, 0.3, 0.1, 0.6, 0.5, 0.6, 0.6, 0.9, 0.2, 0.5, 0.2, 0.7, 0.2, 0.7, 0.9, 0.7, 0.3, 0.7, 0.8, 0.7, 0.4, 0.8, 0.5, 0.4, 0.5, 0.2, 0.3, 0.1, 0.7, 0.9, 0.7, 0.4, 0.5, 0.2, 0.9, 0.3, 0.1, 0.9, 0.1, 0.7, 0.3, 0.5, 0.5, 0.9, 0.9, 0.8, 0.1, 0.2, 0.4, 0.1, 0.9, 0.9, 0.1, 0.8, 0.5, 0.9, 0.6, 0.1, 0.3, 0.5, 0.3, 0.3, 0.6, 0.9, 0.8, 0.7, 0.2, 0.6, 0.1, 0.8, 0.7, 0.1, 0.5, 0.9, 0.3, 0.7, 0.9, 0.9, 0.5, 0.1, 0.4, 0.3, 0.6, 0.4, 0.4, 0.1, 0.8, 0.4, 0.1, 0.9, 0.5, 0.7, 0.5, 0.9, 0.4, 0.1, 0.5, 0.2, 0.7, 0.7, 0.4, 0.1, 0.5, 0.7, 0.9, 0.2, 0.9, 0.1, 0.4, 0.3, 0.2, 0.7, 0.9, 0.2, 0.8, 0.6, 0.5, 0.1, 0.5, 0.2, 0.8, 0.1, 0.6, 0.2, 0.7, 0.1, 0.1, 0.6, 0.7, 0.2, 0.8, 0.3, 0.3, 0.4, 0.8, 0.4,
+
+L3_dGEMM_B_nk
+0.7, 0.9, 0.2, 0.6, 0.3, 0.5, 0.1, 0.1, 0.1, 0.7, 0.3, 0.1, 0.7, 0.8, 0.8, 0.1, 0.6, 0.2, 0.2, 0.9, 0.8, 0.4, 0.2, 0.7, 0.9, 0.4, 0.2, 0.3, 0.4, 0.2, 0.1, 0.2, 0.9, 0.7, 0.5, 0.1, 0.8, 0.3, 0.2, 0.8, 0.8, 0.7, 0.9, 0.7, 0.9, 0.4, 0.9, 0.6, 0.8, 0.1, 0.4, 0.6, 0.7, 0.1, 0.8, 0.1, 0.1, 0.3, 0.3, 0.8, 0.6, 0.1, 0.9, 0.2, 0.6, 0.9, 0.7, 0.6, 0.8, 0.1, 0.7, 0.9, 0.7, 0.9, 0.7, 0.5, 0.8, 0.1, 0.9, 0.2, 0.3, 0.6, 0.6, 0.3, 0.3, 0.3, 0.2, 0.9, 0.4, 0.3, 0.3, 0.5, 0.9, 0.1, 0.3, 0.2, 0.4, 0.1, 0.6, 0.2, 0.6, 0.7, 0.1, 0.9, 0.9, 0.2, 0.8, 0.9, 0.5, 0.7, 0.8, 0.9, 0.8, 0.5, 0.9, 0.1, 0.6, 0.1, 0.1, 0.9, 0.1, 0.9, 0.2, 0.6, 0.3, 0.9, 0.8, 0.9, 0.9, 0.6, 0.5, 0.4, 0.8, 0.8, 0.7, 0.1, 0.1, 0.5, 0.4, 0.4, 0.2, 0.7, 0.7, 0.5, 0.4, 0.5, 0.6, 0.5, 0.4, 0.2, 0.5, 0.8, 0.2, 0.6, 0.4, 0.5, 0.1, 0.7, 0.3, 0.8, 0.3, 0.8, 0.4, 0.2, 0.7, 0.7, 0.2, 0.1, 0.3, 0.5, 0.1, 0.4, 0.5, 0.9, 0.2, 0.8, 0.8, 0.1, 0.8, 0.7, 0.4, 0.6, 0.7, 0.5, 0.9, 0.3, 0.7, 0.9, 0.5, 0.9, 0.2, 0.6, 0.5, 0.9, 0.8, 0.3, 0.8, 0.2, 0.8, 0.5, 0.6, 0.7, 0.1, 0.4, 0.1, 0.5, 0.1, 0.9, 0.6, 0.1, 0.1, 0.4, 0.8, 0.8, 0.9, 0.7, 0.1, 0.2, 0.7, 0.8, 0.1, 0.9, 0.6, 0.2, 0.2, 0.9, 0.6, 0.6, 0.3, 0.5, 0.3, 0.3, 0.4, 0.2, 0.1, 0.8, 0.1, 0.1, 0.2, 0.7, 0.2, 0.5, 0.2, 0.5, 0.4, 0.5, 0.4, 0.1, 0.8, 0.9, 0.9, 0.8, 0.6, 0.3, 0.1, 0.6, 0.5, 0.7, 0.7, 0.2, 0.8, 0.5, 0.2, 0.7, 0.2, 0.2, 0.8, 0.9, 0.8, 0.6, 0.1, 0.2,
+
+L3_dGEMM_o_TT
+4.12, 3.42, 5.45, 3.59, 5.61, 3.57, 4.91, 4.41, 4.75, 4.21, 4.1, 5.74, 4.23, 4.72, 3.57, 4.3, 5.26, 3.38, 3.71, 5.39, 4.24, 5.04, 2.91, 4.2, 4.13, 5.03, 4.34, 3.68, 5.21, 4.71, 4.14, 3.13, 4.49, 4.43, 3.64, 3.37, 5.68, 3.23, 4.95, 3.94, 5.2, 4.18, 4.15, 3.28, 4.09, 4.28, 3.83, 3.96, 2.91, 4.12, 4.23, 4.46, 3.94, 5.06, 4.29, 5.71, 4.09, 4.96, 4.01, 4.76, 4.12, 4.92, 5.33, 4.99, 4.28, 3.74, 5.22, 5.02, 3.9, 3.61, 6.12, 3.86, 5.83, 3.9, 5.23, 5.26, 4.37, 4.04, 3.52, 5.07, 4.74, 4.52, 3.47, 3.97, 4.34, 3.03, 3.71, 4.36, 3.7, 4.27, 3.23, 4.55, 4.07, 3.85, 4.38, 3.49, 4.49, 4.23, 4.65, 3.62, 3.8, 4.17, 3.84, 3.64, 5.23, 3.98, 4.54, 3.44, 4.86, 4.41, 5.11, 3.61, 3.95, 5.67, 4.33, 4.42, 3.2, 4.39, 4.16, 4.15, 4.95, 6.44, 4.42, 7.22, 4.4, 5.34, 5.49, 4.67, 4.66, 4.49, 5.92, 6.01, 5.15, 4.86, 5.34, 5.35, 5.6, 5.07, 6.8, 5.36, 6.57, 4.9, 6.19, 5.36, 5.78, 5.03, 5.2, 7.08, 5.95, 5.81, 5.08, 5.68, 5.42, 3.83, 4.43, 4.57, 3.48, 5.95, 3.54, 4.3, 4.47, 4.59, 4.91, 3.46, 4.92, 5.12, 4.03, 3.41, 4.12, 4.03,
+
+L3_dGEMM_o_HH
+4.12, 3.42, 5.45, 3.59, 5.61, 3.57, 4.91, 4.41, 4.75, 4.21, 4.1, 5.74, 4.23, 4.72, 3.57, 4.3, 5.26, 3.38, 3.71, 5.39, 4.24, 5.04, 2.91, 4.2, 4.13, 5.03, 4.34, 3.68, 5.21, 4.71, 4.14, 3.13, 4.49, 4.43, 3.64, 3.37, 5.68, 3.23, 4.95, 3.94, 5.2, 4.18, 4.15, 3.28, 4.09, 4.28, 3.83, 3.96, 2.91, 4.12, 4.23, 4.46, 3.94, 5.06, 4.29, 5.71, 4.09, 4.96, 4.01, 4.76, 4.12, 4.92, 5.33, 4.99, 4.28, 3.74, 5.22, 5.02, 3.9, 3.61, 6.12, 3.86, 5.83, 3.9, 5.23, 5.26, 4.37, 4.04, 3.52, 5.07, 4.74, 4.52, 3.47, 3.97, 4.34, 3.03, 3.71, 4.36, 3.7, 4.27, 3.23, 4.55, 4.07, 3.85, 4.38, 3.49, 4.49, 4.23, 4.65, 3.62, 3.8, 4.17, 3.84, 3.64, 5.23, 3.98, 4.54, 3.44, 4.86, 4.41, 5.11, 3.61, 3.95, 5.67, 4.33, 4.42, 3.2, 4.39, 4.16, 4.15, 4.95, 6.44, 4.42, 7.22, 4.4, 5.34, 5.49, 4.67, 4.66, 4.49, 5.92, 6.01, 5.15, 4.86, 5.34, 5.35, 5.6, 5.07, 6.8, 5.36, 6.57, 4.9, 6.19, 5.36, 5.78, 5.03, 5.2, 7.08, 5.95, 5.81, 5.08, 5.68, 5.42, 3.83, 4.43, 4.57, 3.48, 5.95, 3.54, 4.3, 4.47, 4.59, 4.91, 3.46, 4.92, 5.12, 4.03, 3.41, 4.12, 4.03,
+
+L3_cGEMM_A_mk
+0.5, 0.5, 0.40000000596, 0.300000011921, 0.40000000596, 0.20000000298, 0.800000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.10000000149, 0.600000023842, 0.10000000149, 0.5, 0.600000023842, 0.10000000149, 0.5, 0.899999976158, 0.899999976158, 0.899999976158, 0.5, 0.10000000149, 0.10000000149, 0.800000011921, 0.10000000149, 0.300000011921, 0.5, 0.899999976158, 0.300000011921, 0.20000000298, 0.699999988079, 0.10000000149, 0.10000000149, 0.40000000596, 0.300000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.899999976158, 0.600000023842, 0.699999988079, 0.899999976158, 0.40000000596, 0.5, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.699999988079, 0.20000000298, 0.10000000149, 0.20000000298, 0.699999988079, 0.800000011921, 0.800000011921, 0.699999988079, 0.800000011921, 0.899999976158, 0.40000000596, 0.20000000298, 0.10000000149, 0.40000000596, 0.300000011921, 0.10000000149, 0.699999988079, 0.5, 0.899999976158, 0.699999988079, 0.600000023842, 0.10000000149, 0.300000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.5, 0.800000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.800000011921, 0.40000000596, 0.40000000596, 0.20000000298, 0.899999976158, 0.300000011921, 0.20000000298, 0.800000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.600000023842, 0.300000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.600000023842, 0.10000000149, 0.699999988079, 0.800000011921, 0.5, 0.899999976158, 0.10000000149, 0.5, 0.899999976158, 0.40000000596, 0.5, 0.10000000149, 0.600000023842, 0.5, 0.899999976158, 0.800000011921, 0.20000000298, 0.20000000298, 0.10000000149, 0.10000000149, 0.300000011921, 0.800000011921, 0.300000011921, 0.40000000596, 0.20000000298, 0.800000011921, 0.20000000298, 0.600000023842, 0.699999988079, 0.600000023842, 0.10000000149, 0.300000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.899999976158, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.10000000149, 0.5, 0.40000000596, 0.699999988079, 0.40000000596, 0.300000011921, 0.800000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.699999988079, 0.899999976158, 0.800000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.20000000298, 0.40000000596, 0.600000023842, 0.40000000596, 0.20000000298, 0.699999988079, 0.300000011921, 0.600000023842, 0.5, 0.10000000149, 0.40000000596, 0.699999988079, 0.899999976158, 0.699999988079, 0.300000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.800000011921, 0.699999988079, 0.600000023842, 0.699999988079, 0.5, 0.600000023842, 0.20000000298, 0.699999988079, 0.10000000149, 0.20000000298, 0.10000000149, 0.40000000596, 0.899999976158, 0.600000023842, 0.800000011921, 0.5, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.300000011921, 0.300000011921, 0.5, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.300000011921, 0.699999988079, 0.800000011921, 0.800000011921, 0.5, 0.40000000596, 0.800000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.699999988079, 0.600000023842, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.40000000596, 0.20000000298, 0.600000023842, 0.300000011921, 0.10000000149, 0.800000011921, 0.5, 0.5, 0.899999976158, 0.300000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.5, 0.800000011921, 0.300000011921, 0.20000000298, 0.699999988079, 0.600000023842, 0.20000000298, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.10000000149, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.800000011921, 0.10000000149, 0.300000011921, 0.40000000596, 0.300000011921, 0.699999988079, 0.5, 0.20000000298, 0.5, 0.800000011921, 0.10000000149, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.899999976158, 0.899999976158, 0.699999988079, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.300000011921, 0.699999988079, 0.899999976158, 0.899999976158, 0.5, 0.800000011921, 0.300000011921, 0.300000011921, 0.10000000149, 0.699999988079, 0.5, 0.5, 0.40000000596, 0.5, 0.800000011921, 0.5, 0.40000000596, 0.40000000596, 0.800000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.300000011921, 0.5, 0.699999988079, 0.899999976158, 0.5,
+
+L3_cGEMM_B_kn
+0.699999988079, 0.800000011921, 0.5, 0.5, 0.10000000149, 0.300000011921, 0.300000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.10000000149, 0.20000000298, 0.300000011921, 0.699999988079, 0.40000000596, 0.40000000596, 0.699999988079, 0.10000000149, 0.10000000149, 0.699999988079, 0.10000000149, 0.10000000149, 0.5, 0.699999988079, 0.300000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.10000000149, 0.20000000298, 0.5, 0.20000000298, 0.300000011921, 0.300000011921, 0.899999976158, 0.800000011921, 0.699999988079, 0.300000011921, 0.800000011921, 0.899999976158, 0.10000000149, 0.10000000149, 0.899999976158, 0.5, 0.20000000298, 0.40000000596, 0.20000000298, 0.899999976158, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.20000000298, 0.20000000298, 0.300000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.800000011921, 0.899999976158, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.40000000596, 0.800000011921, 0.800000011921, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.800000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.20000000298, 0.40000000596, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.5, 0.40000000596, 0.20000000298, 0.899999976158, 0.20000000298, 0.300000011921, 0.10000000149, 0.300000011921, 0.5, 0.800000011921, 0.899999976158, 0.5, 0.20000000298, 0.20000000298, 0.40000000596, 0.20000000298, 0.40000000596, 0.600000023842, 0.300000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.699999988079, 0.300000011921, 0.40000000596, 0.600000023842, 0.20000000298, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.899999976158, 0.10000000149, 0.699999988079, 0.800000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.899999976158, 0.10000000149, 0.5, 0.899999976158, 0.40000000596, 0.40000000596, 0.899999976158, 0.899999976158, 0.20000000298, 0.10000000149, 0.899999976158, 0.20000000298, 0.300000011921, 0.699999988079, 0.800000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.800000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.300000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.40000000596, 0.5, 0.600000023842, 0.699999988079, 0.40000000596, 0.899999976158, 0.10000000149, 0.5, 0.5, 0.10000000149, 0.300000011921, 0.5, 0.40000000596, 0.300000011921, 0.699999988079, 0.699999988079, 0.20000000298, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.5, 0.40000000596, 0.20000000298, 0.600000023842, 0.20000000298, 0.10000000149, 0.300000011921, 0.5, 0.5, 0.699999988079, 0.10000000149, 0.40000000596, 0.800000011921, 0.899999976158, 0.800000011921, 0.20000000298, 0.5, 0.5, 0.5, 0.800000011921, 0.600000023842, 0.5, 0.800000011921, 0.5, 0.20000000298, 0.10000000149, 0.300000011921, 0.10000000149, 0.40000000596, 0.600000023842, 0.40000000596, 0.20000000298, 0.300000011921, 0.300000011921, 0.600000023842, 0.10000000149, 0.800000011921, 0.800000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.40000000596, 0.899999976158, 0.600000023842, 0.20000000298, 0.40000000596, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.699999988079, 0.10000000149, 0.899999976158, 0.5, 0.300000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.5, 0.40000000596, 0.20000000298, 0.5, 0.699999988079, 0.800000011921, 0.699999988079, 0.800000011921, 0.5, 0.899999976158, 0.300000011921, 0.5, 0.20000000298, 0.300000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.300000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.40000000596, 0.20000000298, 0.699999988079, 0.699999988079, 0.20000000298, 0.5, 0.300000011921, 0.10000000149, 0.40000000596, 0.800000011921, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.20000000298, 0.899999976158, 0.600000023842, 0.699999988079, 0.20000000298, 0.899999976158, 0.600000023842, 0.5, 0.300000011921, 0.300000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.300000011921, 0.20000000298, 0.800000011921, 0.10000000149, 0.300000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.10000000149, 0.899999976158, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.600000023842, 0.699999988079, 0.800000011921, 0.40000000596, 0.800000011921, 0.20000000298, 0.5, 0.20000000298, 0.10000000149, 0.5, 0.600000023842, 0.600000023842, 0.20000000298, 0.5, 0.40000000596, 0.5, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.40000000596, 0.5, 0.899999976158, 0.10000000149, 0.5, 0.800000011921, 0.5, 0.20000000298, 0.10000000149, 0.40000000596, 0.699999988079, 0.600000023842, 0.300000011921, 0.5, 0.40000000596, 0.300000011921, 0.600000023842, 0.300000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.10000000149, 0.10000000149, 0.699999988079, 0.899999976158, 0.20000000298, 0.10000000149, 0.699999988079, 0.800000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.20000000298, 0.699999988079, 0.800000011921, 0.899999976158, 0.40000000596, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.600000023842, 0.40000000596, 0.10000000149, 0.699999988079, 0.600000023842, 0.800000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.699999988079, 0.699999988079, 0.20000000298, 0.20000000298, 0.20000000298, 0.10000000149, 0.5, 0.20000000298, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.899999976158, 0.10000000149, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.40000000596, 0.20000000298, 0.800000011921, 0.800000011921, 0.40000000596, 0.300000011921, 0.5, 0.20000000298, 0.10000000149, 0.699999988079, 0.600000023842, 0.800000011921, 0.40000000596, 0.899999976158, 0.5, 0.699999988079, 0.5, 0.800000011921, 0.800000011921, 0.300000011921, 0.10000000149, 0.699999988079, 0.800000011921, 0.10000000149, 0.20000000298, 0.600000023842, 0.300000011921, 0.800000011921, 0.899999976158, 0.40000000596, 0.20000000298, 0.300000011921, 0.20000000298, 0.800000011921, 0.10000000149, 0.40000000596, 0.5, 0.600000023842, 0.300000011921, 0.899999976158, 0.20000000298, 0.5, 0.899999976158, 0.300000011921, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.5, 0.10000000149, 0.5, 0.40000000596, 0.300000011921, 0.800000011921, 0.300000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.899999976158, 0.899999976158, 0.699999988079, 0.800000011921, 0.20000000298, 0.600000023842, 0.20000000298, 0.300000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.40000000596, 0.10000000149, 0.20000000298, 0.800000011921, 0.40000000596, 0.5, 0.800000011921, 0.300000011921, 0.10000000149, 0.5, 0.300000011921, 0.300000011921, 0.20000000298, 0.300000011921, 0.699999988079, 0.20000000298, 0.600000023842, 0.600000023842, 0.20000000298, 0.20000000298, 0.10000000149, 0.300000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.40000000596, 0.699999988079, 0.800000011921, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.20000000298, 0.800000011921, 0.899999976158, 0.5, 0.300000011921, 0.5, 0.600000023842, 0.600000023842, 0.800000011921, 0.40000000596, 0.40000000596, 0.10000000149, 0.10000000149, 0.899999976158, 0.800000011921, 0.5, 0.300000011921, 0.10000000149, 0.5, 0.40000000596, 0.20000000298, 0.899999976158, 0.800000011921, 0.600000023842, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158,
+
+L3_cGEMM_C_mn
+0.699999988079, 0.800000011921, 0.600000023842, 0.800000011921, 0.20000000298, 0.300000011921, 0.40000000596, 0.699999988079, 0.5, 0.899999976158, 0.40000000596, 0.5, 0.600000023842, 0.600000023842, 0.800000011921, 0.20000000298, 0.699999988079, 0.20000000298, 0.699999988079, 0.40000000596, 0.300000011921, 0.5, 0.10000000149, 0.5, 0.40000000596, 0.600000023842, 0.800000011921, 0.40000000596, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.300000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.600000023842, 0.10000000149, 0.800000011921, 0.699999988079, 0.899999976158, 0.699999988079, 0.5, 0.5, 0.300000011921, 0.600000023842, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.10000000149, 0.40000000596, 0.40000000596, 0.20000000298, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.899999976158, 0.899999976158, 0.40000000596, 0.20000000298, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.5, 0.20000000298, 0.5, 0.899999976158, 0.10000000149, 0.5, 0.899999976158, 0.10000000149, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.5, 0.800000011921, 0.800000011921, 0.5, 0.10000000149, 0.699999988079, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.40000000596, 0.10000000149, 0.800000011921, 0.5, 0.10000000149, 0.699999988079, 0.899999976158, 0.300000011921, 0.899999976158, 0.10000000149, 0.20000000298, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.800000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.800000011921, 0.5, 0.800000011921, 0.899999976158, 0.300000011921, 0.800000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.300000011921, 0.40000000596, 0.800000011921, 0.600000023842, 0.40000000596, 0.20000000298, 0.5, 0.899999976158, 0.5, 0.300000011921, 0.699999988079, 0.899999976158, 0.699999988079, 0.300000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.800000011921, 0.899999976158, 0.5, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.600000023842, 0.899999976158, 0.600000023842, 0.5, 0.40000000596, 0.800000011921, 0.20000000298, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.699999988079, 0.300000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.20000000298, 0.10000000149, 0.300000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.699999988079, 0.800000011921, 0.5, 0.600000023842, 0.600000023842, 0.20000000298, 0.699999988079, 0.699999988079, 0.20000000298, 0.800000011921, 0.40000000596, 0.10000000149, 0.800000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.800000011921, 0.300000011921, 0.40000000596, 0.300000011921, 0.899999976158, 0.800000011921, 0.300000011921, 0.40000000596, 0.10000000149, 0.800000011921, 0.20000000298, 0.40000000596, 0.699999988079, 0.20000000298, 0.699999988079, 0.40000000596, 0.300000011921, 0.300000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.20000000298, 0.20000000298, 0.699999988079, 0.899999976158, 0.300000011921, 0.800000011921, 0.5, 0.40000000596, 0.600000023842, 0.899999976158, 0.300000011921, 0.20000000298, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.699999988079, 0.699999988079, 0.800000011921, 0.300000011921, 0.899999976158, 0.800000011921, 0.20000000298, 0.800000011921, 0.20000000298, 0.899999976158, 0.600000023842, 0.600000023842, 0.5, 0.300000011921, 0.20000000298, 0.300000011921, 0.40000000596, 0.300000011921, 0.20000000298, 0.899999976158, 0.600000023842, 0.5, 0.899999976158, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.800000011921, 0.699999988079, 0.5, 0.699999988079, 0.600000023842, 0.10000000149, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.699999988079, 0.800000011921, 0.600000023842, 0.800000011921, 0.5, 0.300000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.300000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.699999988079, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.300000011921, 0.699999988079, 0.10000000149, 0.10000000149, 0.699999988079, 0.20000000298, 0.800000011921, 0.20000000298, 0.699999988079, 0.20000000298, 0.600000023842, 0.20000000298, 0.10000000149, 0.5, 0.5, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.600000023842, 0.600000023842, 0.699999988079, 0.600000023842, 0.20000000298, 0.5, 0.10000000149, 0.20000000298, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.5, 0.40000000596, 0.40000000596, 0.300000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.699999988079, 0.10000000149, 0.899999976158, 0.5, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.699999988079, 0.899999976158, 0.699999988079,
+
+L3_cGEMM_o_NN
+0.65000000447, 6.93000006944, 0.619999984205, 7.09000004292, -0.370000001341, 5.88000005975, -0.699999899417, 7.83000014767, 1.60999999061, 8.18000006869, 0.810000075549, 7.00000005141, 1.14000006378, 7.98000015587, 1.26000003085, 5.7000001058, 0.0599999965727, 5.66000009716, 0.270000060946, 7.01000003755, 1.23999999151, 6.86000004053, -0.400000051409, 7.77000009969, 0.540000047386, 8.1199999693, 0.150000059605, 8.09000000864, 0.82999988541, 8.40000001267, -0.139999985546, 6.51000006661, -0.329999949485, 7.43000005901, 0.559999913126, 8.1400000675, 0.270000009537, 7.05999999732, -0.839999984801, 7.67999997109, -0.0400000347197, 9.4500000909, 0.250000024587, 9.26000006735, -0.160000012964, 7.92000003263, 0.159999974221, 10.0900000519, 0.160000004768, 6.94000011072, -0.829999945015, 6.81000010014, 0.0700000706315, 7.39000000715, 0.219999935776, 9.03000007167, -0.480000014305, 8.39000007048, 0.949999986589, 8.81999993652, -0.949999913573, 9.11999993876, -0.270000070632, 8.78000008285, 0.0499999679625, 7.73000001281, -0.819999955893, 9.07000001103, 1.4999999769, 9.30999993622, 1.14999997616, 6.62000007361, -0.0300000105798, 8.17000000581, 0.23000007093, 8.80000006407, 2.7600000301, 10.320000046, 0.160000064373, 8.65999998242, 1.77999996588, 10.7400000601, 2.13999994457, 7.7800000672, 0.889999983311, 7.89000001907, 0.700000053644, 7.6700000304, 1.72999997333, 8.11000003308, 0.61999998495, 7.86000010014, 1.81999999464, 8.34999999031, 0.0600000673532, 9.49000000492, 1.85999986917, 9.28000010297, 1.00999995261, 8.04000003099, 0.600000044703, 9.68000001952, 0.959999904931, 8.00000002459, 0.989999938607, 7.33000001356, -0.0100000233948, 7.18000007838, 0.49999999404, 8.00000013486, 2.02000000358, 8.31000010833, 1.7499998942, 8.03000001505, 1.70999993324, 8.84000010774, 0.949999852479, 6.18000011787, 0.910000015199, 6.50000012666, -0.399999999255, 7.04000001758, 1.59999996424, 6.77000008628, -0.0100000695884, 8.39000002876, 0.679999970347, 8.00999997944, 0.140000016838, 8.16000004947, 0.999999836832, 9.1900000377, 0.549999958277, 7.77000008032, 0.330000004619, 7.95000005364, 0.549999903142, 8.02000004753, -0.41000002414, 6.76000010014, -1.08000006273, 7.64000001684, -1.30000002757, 8.45000019744, 0.38000001654, 9.96000006437, -0.639999954253, 8.13000002548, -0.0400000220537, 9.58000011042, 0.369999916404, 7.03000012606, -0.760000035316, 6.56000008374, 0.260000012964, 8.14000003397, 0.249999967217, 8.4100001061, -2.02000002593, 8.16000005022, -0.469999979734, 7.90999995857, -1.63999994457, 8.51000011504, -0.870000130981, 9.27000010043, -0.370000122041, 8.36000008225, -0.420000030398, 9.01000014335, 1.49999993294, 6.58000013426, 1.21999993429, 7.26000010535, -0.130000039637, 7.50000008494, 0.389999991506, 7.95000019595, 1.69999997839, 8.76000019252, 0.74999999404, 7.12000005946, 1.19999998733, 9.47000014886, 1.92999992192, 6.48000012532, 0.999999966472, 6.35000010505, 0.369999996126, 7.37000009969, 2.14999990389, 7.84000009656, -0.0500000603497, 8.83000014096, 1.57999994501, 7.75000004694, 0.730000021756, 8.79000005707, 1.46999988064, 8.79000008687, 0.389999973625, 7.0100000681, 0.96999998793, 8.44000007123, 0.289999996722, 8.53000004485, -0.329999988228, 7.24000005037, -0.970000022948, 7.19000010103, -0.939999963194, 8.71000013962, 0.610000056177, 9.72000015408, -0.339999978095, 8.22000001401, 1.1000000082, 9.16000014856, 0.829999964386, 7.4800000985, 0.499999985844, 6.39000011593, 0.520000058711, 7.87000008926, 1.11999997824, 7.98000015512, -0.550000038743, 7.34000011593, -0.47999994725, 7.54000005409, -0.0399999400973, 9.50000006631, -0.0300000940263, 9.30000009537, -0.620000004321, 8.19000004515, -0.189999943823, 9.99000004068, 2.10999997869, 7.5600000301, 1.79000000492, 5.94000009656, 0.509999940693, 7.4900000824, 0.320000071377, 8.23000012606, 2.08000001878, 8.25000007898, 0.320000028908, 7.82000005573, 1.58999996543, 8.77000014067, 2.43999995351, 7.3200001429, 1.79000002652, 7.33000004858, 1.22000006616, 7.14000004441, 2.34999995232, 7.8800000985, 0.839999997467, 7.36000014782, 1.67000003487, 7.78000000983, 1.18000010446, 8.12000003785, 1.5799999696, 7.91000016943, 0.579999968857, 6.58000009403, 1.28000000238, 8.78000010148, 0.179999962896, 8.28000002176, 0.709999991357, 6.56000001818, -1.45999995336, 7.40999995634, -1.46999994919, 8.31000009045, 1.02072952757e-07, 8.71000004053, -0.55999995932, 7.40000003874, 0.439999958724, 9.16000004947, 0.390000004172, 7.26000004947, -0.909999980181, 5.82000006318, -0.0699998888373, 7.82000000134, -0.390000049621, 6.51000007108, -0.970000041574, 7.27000007883, 0.460000037551, 7.73999992594, -0.979999914467, 7.53999998331, 0.0699999216199, 9.00000004098, -1.15000003278, 6.93000001356, -0.529999943525, 8.30000004023, 2.23999984547, 8.6600000383, 0.769999961108, 8.05000007153, -4.24683084255e-08, 7.79000000343, 0.339999965429, 9.47000013545, 2.2699999328, 9.95000003353, 0.439999995977, 8.73000003889, 1.67999992266, 9.49000009283, 1.48999992147, 7.73000012234, 0.459999995083, 6.9800000836, 0.680000036657, 8.94999996126, 2.40999990046, 9.44000003919, 0.0899999326468, 9.07000008628, 0.909999981672, 9.72999992117, 0.530000026226, 9.37999994278, 1.15999993399, 9.23000010595, 1.35999988109, 8.55000000969, 1.43999995127, 10.5499999762,
+
+L3_cGEMM_A_km
+0.800000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.600000023842, 0.5, 0.300000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.800000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.40000000596, 0.40000000596, 0.300000011921, 0.800000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.40000000596, 0.40000000596, 0.699999988079, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.5, 0.600000023842, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.600000023842, 0.40000000596, 0.600000023842, 0.5, 0.800000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.10000000149, 0.600000023842, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.300000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.40000000596, 0.300000011921, 0.10000000149, 0.800000011921, 0.20000000298, 0.699999988079, 0.5, 0.5, 0.800000011921, 0.20000000298, 0.5, 0.300000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.5, 0.699999988079, 0.40000000596, 0.20000000298, 0.20000000298, 0.899999976158, 0.10000000149, 0.20000000298, 0.10000000149, 0.40000000596, 0.800000011921, 0.5, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.10000000149, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.40000000596, 0.800000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.10000000149, 0.40000000596, 0.20000000298, 0.899999976158, 0.40000000596, 0.20000000298, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.300000011921, 0.40000000596, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.10000000149, 0.699999988079, 0.600000023842, 0.899999976158, 0.600000023842, 0.40000000596, 0.10000000149, 0.5, 0.800000011921, 0.899999976158, 0.20000000298, 0.40000000596, 0.5, 0.5, 0.10000000149, 0.800000011921, 0.5, 0.300000011921, 0.10000000149, 0.40000000596, 0.5, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.600000023842, 0.5, 0.20000000298, 0.699999988079, 0.10000000149, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.699999988079, 0.899999976158, 0.20000000298, 0.10000000149, 0.10000000149, 0.10000000149, 0.300000011921, 0.5, 0.40000000596, 0.699999988079, 0.5, 0.600000023842, 0.899999976158, 0.10000000149, 0.5, 0.300000011921, 0.800000011921, 0.699999988079, 0.5, 0.10000000149, 0.5, 0.10000000149, 0.600000023842, 0.800000011921, 0.699999988079, 0.5, 0.300000011921, 0.40000000596, 0.5, 0.5, 0.40000000596, 0.40000000596, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.899999976158, 0.5, 0.20000000298, 0.20000000298, 0.40000000596, 0.40000000596, 0.300000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.600000023842, 0.5, 0.10000000149, 0.899999976158, 0.10000000149, 0.10000000149, 0.40000000596, 0.600000023842, 0.40000000596, 0.10000000149, 0.10000000149, 0.300000011921, 0.699999988079, 0.20000000298, 0.300000011921, 0.40000000596, 0.5, 0.699999988079, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.300000011921, 0.20000000298, 0.10000000149, 0.10000000149, 0.10000000149, 0.699999988079, 0.10000000149, 0.800000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.300000011921, 0.10000000149, 0.20000000298, 0.20000000298, 0.40000000596, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.5, 0.300000011921, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.20000000298, 0.600000023842, 0.600000023842, 0.20000000298, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.5, 0.800000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.20000000298, 0.5, 0.5, 0.10000000149, 0.699999988079, 0.699999988079, 0.300000011921, 0.899999976158, 0.5, 0.699999988079, 0.20000000298, 0.20000000298, 0.899999976158, 0.300000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.20000000298, 0.10000000149, 0.600000023842, 0.699999988079, 0.40000000596, 0.800000011921, 0.40000000596, 0.699999988079, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.899999976158, 0.5, 0.800000011921, 0.5, 0.40000000596, 0.300000011921, 0.40000000596, 0.300000011921, 0.699999988079, 0.20000000298, 0.600000023842, 0.300000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.5,
+
+L3_cGEMM_B_nk
+0.899999976158, 0.300000011921, 0.800000011921, 0.5, 0.699999988079, 0.20000000298, 0.699999988079, 0.600000023842, 0.5, 0.40000000596, 0.40000000596, 0.10000000149, 0.40000000596, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.800000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.20000000298, 0.10000000149, 0.40000000596, 0.800000011921, 0.40000000596, 0.20000000298, 0.899999976158, 0.800000011921, 0.699999988079, 0.300000011921, 0.300000011921, 0.600000023842, 0.10000000149, 0.899999976158, 0.10000000149, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.600000023842, 0.40000000596, 0.5, 0.699999988079, 0.10000000149, 0.800000011921, 0.10000000149, 0.5, 0.899999976158, 0.800000011921, 0.40000000596, 0.699999988079, 0.800000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.699999988079, 0.300000011921, 0.300000011921, 0.10000000149, 0.899999976158, 0.300000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.699999988079, 0.699999988079, 0.10000000149, 0.40000000596, 0.899999976158, 0.800000011921, 0.5, 0.899999976158, 0.20000000298, 0.300000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.10000000149, 0.600000023842, 0.899999976158, 0.40000000596, 0.300000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.699999988079, 0.699999988079, 0.600000023842, 0.699999988079, 0.300000011921, 0.300000011921, 0.40000000596, 0.699999988079, 0.40000000596, 0.800000011921, 0.5, 0.699999988079, 0.20000000298, 0.5, 0.300000011921, 0.10000000149, 0.5, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.899999976158, 0.300000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.800000011921, 0.899999976158, 0.5, 0.20000000298, 0.600000023842, 0.20000000298, 0.40000000596, 0.600000023842, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.20000000298, 0.699999988079, 0.40000000596, 0.10000000149, 0.899999976158, 0.20000000298, 0.300000011921, 0.10000000149, 0.300000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.10000000149, 0.899999976158, 0.300000011921, 0.300000011921, 0.899999976158, 0.40000000596, 0.5, 0.699999988079, 0.5, 0.20000000298, 0.800000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.600000023842, 0.10000000149, 0.699999988079, 0.10000000149, 0.800000011921, 0.699999988079, 0.600000023842, 0.5, 0.20000000298, 0.899999976158, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.40000000596, 0.300000011921, 0.600000023842, 0.699999988079, 0.899999976158, 0.600000023842, 0.699999988079, 0.300000011921, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.5, 0.600000023842, 0.300000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.5, 0.800000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.899999976158, 0.800000011921, 0.5, 0.20000000298, 0.20000000298, 0.600000023842, 0.10000000149, 0.800000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.699999988079, 0.800000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.899999976158, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, 0.10000000149, 0.10000000149, 0.40000000596, 0.300000011921, 0.40000000596, 0.899999976158, 0.699999988079, 0.300000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.699999988079, 0.800000011921, 0.5, 0.600000023842, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.699999988079, 0.10000000149, 0.10000000149, 0.5, 0.699999988079, 0.699999988079, 0.899999976158, 0.5, 0.5, 0.300000011921, 0.5, 0.800000011921, 0.40000000596, 0.699999988079, 0.10000000149, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.699999988079, 0.5, 0.10000000149, 0.300000011921, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.10000000149, 0.899999976158, 0.300000011921, 0.20000000298, 0.300000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.10000000149, 0.300000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.10000000149, 0.899999976158, 0.600000023842, 0.699999988079, 0.699999988079, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.40000000596, 0.600000023842, 0.5, 0.800000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.800000011921, 0.600000023842, 0.899999976158, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.899999976158, 0.899999976158, 0.10000000149, 0.10000000149, 0.20000000298, 0.20000000298, 0.899999976158, 0.699999988079, 0.5, 0.600000023842, 0.300000011921, 0.600000023842, 0.5, 0.5, 0.40000000596, 0.20000000298, 0.899999976158, 0.600000023842, 0.699999988079, 0.800000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.5, 0.600000023842, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.20000000298, 0.20000000298, 0.40000000596, 0.699999988079, 0.699999988079, 0.40000000596, 0.5, 0.40000000596, 0.5, 0.40000000596, 0.20000000298, 0.800000011921, 0.20000000298, 0.20000000298, 0.10000000149, 0.300000011921, 0.600000023842, 0.20000000298, 0.600000023842, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.5, 0.20000000298, 0.899999976158, 0.20000000298, 0.20000000298, 0.899999976158, 0.20000000298, 0.20000000298, 0.300000011921, 0.800000011921, 0.699999988079, 0.5, 0.600000023842, 0.300000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.20000000298, 0.10000000149, 0.5, 0.600000023842, 0.600000023842, 0.40000000596, 0.899999976158, 0.800000011921, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.40000000596, 0.699999988079, 0.699999988079, 0.899999976158, 0.899999976158, 0.300000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.800000011921, 0.5, 0.5, 0.600000023842, 0.40000000596, 0.40000000596, 0.300000011921, 0.300000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, 0.40000000596, 0.800000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.40000000596, 0.899999976158, 0.899999976158, 0.899999976158, 0.10000000149, 0.5, 0.5, 0.5, 0.800000011921, 0.5, 0.600000023842, 0.699999988079, 0.600000023842, 0.10000000149, 0.20000000298, 0.600000023842, 0.10000000149, 0.10000000149, 0.699999988079, 0.40000000596, 0.800000011921, 0.10000000149, 0.800000011921, 0.800000011921, 0.800000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.600000023842, 0.5, 0.800000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.699999988079, 0.300000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.5, 0.699999988079, 0.899999976158, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.10000000149, 0.10000000149, 0.5, 0.40000000596, 0.5, 0.40000000596, 0.20000000298, 0.5, 0.800000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.300000011921, 0.899999976158, 0.5, 0.300000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.20000000298, 0.20000000298, 0.20000000298, 0.600000023842, 0.5, 0.600000023842, 0.40000000596, 0.800000011921, 0.5, 0.800000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.699999988079, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.699999988079, 0.10000000149, 0.5, 0.300000011921, 0.899999976158, 0.20000000298,
+
+L3_cGEMM_o_TT
+1.10999998763, 7.23000018194, 0.730000036657, 8.33000011116, 1.51999999464, 7.18000010148, 0.180000101477, 7.57000008181, 0.409999925047, 7.25000008941, 1.04000003695, 7.38000010222, 0.969999907464, 7.45000017062, 1.14000007644, 6.20000008941, 1.27999999866, 6.71000005618, 0.840000007153, 7.65000014454, 1.47999996141, 8.46000002265, -0.150000029802, 6.28000011414, -0.0299999919534, 8.29000003546, 1.20000004247, 7.32000011683, 0.389999950528, 6.84000012562, -1.11758715615e-08, 7.43000006646, 1.16999994919, 6.94000011593, 1.05999992579, 7.97000019431, 0.299999991804, 8.5800001432, 2.35999997199, 9.17000007734, 0.519999975264, 8.35000016689, -5.66244138245e-08, 7.780000135, 1.46000002638, 8.45000017956, 0.159999826699, 8.68000019684, 0.0700000058115, 6.67000007808, 0.210000008494, 6.45000011176, 0.479999945015, 8.00000011995, 1.05999991834, 9.83000010148, 1.18999993786, 7.22000006393, 0.369999932796, 9.42000004679, 1.0799999696, 7.58000012457, 1.67999995992, 7.74000018001, 0.549999929965, 8.420000128, 1.8599998863, 7.77000010043, 1.62999999195, 8.75000013486, 1.70000005513, 8.8800000985, 4.13999994978, 8.46000003308, 0.950000119209, 8.46000009343, 0.660000001043, 7.79000013232, 2.81000007108, 8.07000009894, 1.78999995947, 8.10000014007, 1.3500001207, 7.52000007361, 1.53000004187, 7.46000004202, 1.93000000462, 8.3700001049, 3.04999994934, 9.50000000969, 1.12000001848, 7.09000005335, 1.47000001624, 9.1500000596, 1.59000002801, 8.18000008807, 3.35999999583, 6.98000010967, 1.96999997824, 7.88000007316, 2.26999994174, 7.21000011206, 1.73999996319, 8.9200001362, 2.0599999921, 10.1100000964, 2.99000000939, 9.31000005841, 0.820000053495, 9.30000014156, 0.169999957383, 8.05000014454, 3.20000002906, 9.61000010163, 1.30999992356, 10.4500001132, -0.299999946356, 7.51000005469, 3.32999996364, 8.10000004172, 1.09999997467, 9.57000013247, 1.51999995291, 10.0600000808, 0.810000000298, 8.21000005692, 0.840000036955, 10.4200000431, 1.54000005558, 9.44000008091, 2.38999999598, 8.47000010863, 1.49999996051, 9.49000006527, 1.66999990299, 8.50000009611, -0.219999939501, 7.70000009611, -0.689999907315, 8.09000008538, 0.610000035316, 8.0700000155, -1.41999994174, 6.4400001137, -0.999999996275, 6.69000006527, -0.349999892712, 7.52000016823, -1.18000001281, 7.65000012964, -1.07999991819, 5.72000005648, 0.170000026673, 6.46000008747, -1.2799999398, 8.00000010431, -1.12999999717, 8.66000001967, -0.409999948889, 6.34000002205, -2.4099998416, 8.14000004813, -0.479999860823, 7.81000010908, -0.289999999702, 6.6500001356, -0.429999991953, 7.45000005737, 0.270000008047, 7.64000008613, -0.209999975711, 7.59000010848, -0.869999946207, 9.20000005588, 0.490000054091, 8.54000002652, -1.39999990314, 7.31000013366, -0.959999977946, 7.12000013396, 0.360000068843, 7.67000010937, -1.33000001654, 8.03000014842, -0.959999895245, 6.03000009254, -0.559999919087, 7.21000002265, -0.779999961406, 7.21000009939, -0.369999981225, 8.6200000304, -0.470000012517, 7.20000009313, -1.70999990642, 8.07000005946, -0.479999937564, 7.8200000833, 0.730000006109, 6.88000014022, -0.649999976158, 7.4900000757, 0.659999969751, 7.18000005677, -0.0799999703467, 8.29000009581, 0.440000084639, 9.03000005677, 1.84000001088, 8.24999998584, -1.16999989554, 8.11000007331, -0.619999993891, 6.67000016972, 0.690000073463, 7.48000011861, -0.129999993443, 7.69000016734, -1.59999985322, 6.78000004932, 0.880000026971, 7.40000005513, 0.220000002086, 7.83000007391, 0.0099999846518, 9.1800000523, 0.130000003129, 6.66000006065, -1.20999998316, 8.7800001052, 0.410000055432, 7.76000015005, 1.36000000775, 6.95000013337, 0.380000042617, 8.32000007659, 0.659999947399, 7.09000010476, 1.81000003755, 7.50000013486, 1.96000012919, 8.67000014141, 3.60000002384, 8.90000010282, 0.790000147223, 8.16000015751, 0.410000068098, 6.8600001508, 1.91000016794, 8.35000015274, 0.500000041723, 8.50000015125, 0.940000083148, 7.2800001432, 1.40000010878, 7.88000003219, 1.0400000228, 8.73000009924, 1.76000002712, 9.89000007793, 1.3700000602, 7.41000008002, 0.300000105053, 9.35000006557, 1.34000016287, 7.33000015512, 1.85000008345, 6.61000013813, 1.40000005662, 8.52000009298, 2.1099999921, 7.36000014111, -0.059999923557, 6.69000015616, -0.369999908209, 8.19000008762, 0.840000086874, 8.43000000313, -1.63999990582, 6.99000010923, -1.21999992982, 6.71000010237, -0.429999883175, 7.80000013784, -1.06999999091, 6.670000166, -0.959999873638, 6.54000003844, 0.300000096858, 6.56000007927, -0.929999926388, 6.94000011593, -2.13999998257, 7.48000003293, 0.0200000415742, 5.57000008553, -1.20999989673, 7.3900001137, -0.249999904633, 6.17000018314, 0.0100000748038, 6.06000011355, -1.60999989226, 6.99000010476, 0.149999987334, 6.6800000672, 0.11999998793, 7.330000135, -0.720000002831, 7.44000010848, 1.44000002876, 8.26000000924, -0.489999943823, 6.78000007167, -1.16000000104, 6.37000002667, 0.230000029206, 7.91000008374, -1.34000005186, 6.38000008956, -0.239999960959, 7.2000000447, 0.280000018775, 5.9200000751, -0.310000005513, 7.80000001788, 0.0100000099838, 8.37000000358, -0.0599999727309, 6.60000000596, -1.27999997109, 8.3700000006, -0.359999961555, 6.75000010431, 0.850000023097, 6.06000008672, 0.38999997735, 7.41000002265, 1.16999992162, 7.53000000536,
+
+L3_cGEMM_o_HH
+1.10999998763, -5.6300001581, 0.730000036657, -6.73000008732, 1.51999999464, -6.58000007764, 0.180000101477, -6.17000010565, 0.409999925047, -5.45000013709, 1.04000003695, -6.38000010222, 0.969999907464, -6.25000012293, 1.14000007644, -5.80000008345, 1.27999999866, -6.31000005022, 0.840000007153, -6.85000013262, 1.47999996141, -7.46000002265, -0.150000029802, -5.28000011414, -0.0299999919534, -7.08999998778, 1.20000004247, -6.5200001049, 0.389999950528, -5.0400001733, -1.11758715615e-08, -7.23000006348, 1.16999994919, -6.14000010401, 1.05999992579, -6.37000017047, 0.299999991804, -8.38000014022, 2.35999997199, -7.77000010118, 0.519999975264, -6.95000019073, -5.66244138245e-08, -6.780000135, 1.46000002638, -7.25000013188, 0.159999826699, -6.88000024453, 0.0700000058115, -6.4700000751, 0.210000008494, -5.65000009984, 0.479999945015, -7.60000011399, 1.05999991834, -8.23000007764, 1.18999993786, -6.82000005797, 0.369999932796, -7.62000009447, 1.0799999696, -7.18000011861, 1.67999995992, -6.54000013232, 0.549999929965, -7.62000011608, 1.8599998863, -7.37000009447, 1.62999999195, -6.95000018254, 1.70000005513, -7.8800000985, 4.13999994978, -8.2600000301, 0.950000119209, -8.06000008747, 0.660000001043, -6.19000010848, 2.81000007108, -7.87000009596, 1.78999995947, -6.50000011623, 1.3500001207, -6.52000007361, 1.53000004187, -6.06000006586, 1.93000000462, -8.17000010192, 3.04999994934, -8.50000000969, 1.12000001848, -6.89000005037, 1.47000001624, -8.1500000596, 1.59000002801, -6.78000011191, 3.35999999583, -6.38000008583, 1.96999997824, -7.68000007018, 2.26999994174, -7.01000010908, 1.73999996319, -8.12000012428, 2.0599999921, -8.51000007257, 2.99000000939, -7.71000003457, 0.820000053495, -7.70000011772, 0.169999957383, -6.4500001207, 3.20000002906, -9.01000007778, 1.30999992356, -8.85000008941, -0.299999946356, -7.31000005171, 3.32999996364, -7.50000001788, 1.09999997467, -7.97000010863, 1.51999995291, -9.26000006884, 0.810000000298, -7.21000005692, 0.840000036955, -9.42000004306, 1.54000005558, -8.04000010476, 2.38999999598, -7.07000013247, 1.49999996051, -7.89000004143, 1.66999990299, -7.70000008419, -0.219999939501, -5.9000001438, -0.689999907315, -6.69000010923, 0.610000035316, -6.67000003934, -1.41999994174, -5.64000010177, -0.999999996275, -4.89000011295, -0.349999892712, -6.52000016823, -1.18000001281, -6.0500001058, -1.07999991819, -5.5200000535, 0.170000026673, -5.26000003979, -1.2799999398, -6.60000012815, -1.12999999717, -6.86000006735, -0.409999948889, -4.9400000459, -2.4099998416, -7.94000004515, -0.479999860823, -6.61000006139, -0.289999999702, -5.25000015944, -0.429999991953, -5.85000003353, 0.270000008047, -6.44000003844, -0.209999975711, -7.19000010252, -0.869999946207, -7.80000007972, 0.490000054091, -6.94000000268, -1.39999990314, -7.11000013068, -0.959999977946, -5.52000011012, 0.360000068843, -7.47000010639, -1.33000001654, -6.43000012457, -0.959999895245, -5.83000008956, -0.559999919087, -6.60999999881, -0.779999961406, -6.61000007555, -0.369999981225, -6.82000007808, -0.470000012517, -5.60000006929, -1.70999990642, -7.27000004753, -0.479999937564, -6.02000013098, 0.730000006109, -6.28000011638, -0.649999976158, -7.29000007272, 0.659999969751, -6.78000005081, -0.0799999703467, -6.89000011966, 0.440000084639, -7.63000008062, 1.84000001088, -7.649999962, -1.16999989554, -6.71000009716, -0.619999993891, -5.07000014588, 0.690000073463, -7.28000011563, -0.129999993443, -7.29000016138, -1.59999985322, -5.38000007316, 0.880000026971, -6.80000003129, 0.220000002086, -6.83000007391, 0.0099999846518, -7.98000000462, 0.130000003129, -6.06000003681, -1.20999998316, -7.58000005752, 0.410000055432, -6.16000012621, 1.36000000775, -5.55000015721, 0.380000042617, -6.72000005275, 0.659999947399, -5.29000015244, 1.81000003755, -7.1000001289, 1.96000012919, -8.27000013545, 3.60000002384, -7.70000005513, 0.790000147223, -7.16000015751, 0.410000068098, -6.46000014484, 1.91000016794, -7.55000014082, 0.500000041723, -8.10000014529, 0.940000083148, -6.08000009552, 1.40000010878, -6.08000007987, 1.0400000228, -7.33000012308, 1.76000002712, -8.89000007793, 1.3700000602, -6.01000010386, 0.300000105053, -7.95000008941, 1.34000016287, -7.13000015214, 1.85000008345, -6.41000013515, 1.40000005662, -8.32000009, 2.1099999921, -5.76000011727, -0.059999923557, -5.09000013232, -0.369999908209, -7.59000006378, 0.840000086874, -6.63000005081, -1.63999990582, -5.99000010923, -1.21999992982, -6.11000007853, -0.429999883175, -6.60000009015, -1.06999999091, -5.27000018984, -0.959999873638, -4.74000008613, 0.300000096858, -5.76000006735, -0.929999926388, -5.54000013977, -2.13999998257, -7.28000002995, 0.0200000415742, -5.17000007957, -1.20999989673, -6.99000010774, -0.249999904633, -5.77000017717, 0.0100000748038, -5.66000010759, -1.60999989226, -5.99000010476, 0.149999987334, -6.08000004336, 0.11999998793, -6.13000008732, -0.720000002831, -6.2400000608, 1.44000002876, -6.86000003308, -0.489999943823, -6.38000006571, -1.16000000104, -6.17000002369, 0.230000029206, -6.71000003606, -1.34000005186, -5.9800000836, -0.239999960959, -6.2000000447, 0.280000018775, -5.12000006318, -0.310000005513, -6.00000006557, 0.0100000099838, -6.76999997973, -0.0599999727309, -5.2000000298, -1.27999997109, -6.57000004828, -0.359999961555, -6.35000009835, 0.850000023097, -4.86000003904, 0.38999997735, -6.01000004649, 1.16999992162, -6.13000002921,
+
+L3_zGEMM_A_mk
+0.8, 0.1, 0.1, 0.7, 0.9, 0.8, 0.9, 0.6, 0.6, 0.4, 0.6, 0.2, 0.5, 0.5, 0.6, 0.6, 0.8, 0.8, 0.8, 0.7, 0.5, 0.8, 0.1, 0.1, 0.6, 0.8, 0.5, 0.3, 0.8, 0.8, 0.7, 0.1, 0.6, 0.9, 0.2, 0.5, 0.6, 0.6, 0.3, 0.7, 0.5, 0.5, 0.4, 0.4, 0.5, 0.6, 0.9, 0.9, 0.2, 0.1, 0.5, 0.5, 0.9, 0.4, 0.8, 0.3, 0.9, 0.4, 0.7, 0.1, 0.1, 0.6, 0.4, 0.3, 0.6, 0.6, 0.7, 0.3, 0.8, 0.6, 0.5, 0.9, 0.2, 0.7, 0.2, 0.2, 0.8, 0.1, 0.4, 0.1, 0.1, 0.2, 0.6, 0.9, 0.5, 0.9, 0.9, 0.7, 0.1, 0.3, 0.5, 0.4, 0.5, 0.3, 0.4, 0.3, 0.5, 0.6, 0.3, 0.2, 0.1, 0.5, 0.2, 0.9, 0.3, 0.4, 0.1, 0.2, 0.6, 0.9, 0.4, 0.7, 0.3, 0.5, 0.3, 0.6, 0.5, 0.1, 0.9, 0.3, 0.3, 0.9, 0.2, 0.4, 0.7, 0.6, 0.1, 0.9, 0.7, 0.2, 0.1, 0.9, 0.5, 0.9, 0.9, 0.2, 0.4, 0.2, 0.7, 0.8, 0.7, 0.1, 0.1, 0.8, 0.8, 0.5, 0.4, 0.1, 0.8, 0.1, 0.2, 0.2, 0.7, 0.8, 0.9, 0.7, 0.4, 0.3, 0.3, 0.5, 0.1, 0.1, 0.5, 0.2, 0.1, 0.6, 0.2, 0.6, 0.7, 0.7, 0.7, 0.8, 0.9, 0.7, 0.9, 0.2, 0.3, 0.8, 0.3, 0.7, 0.5, 0.2, 0.5, 0.4, 0.6, 0.6, 0.6, 0.1, 0.8, 0.8, 0.3, 0.5, 0.8, 0.4, 0.8, 0.6, 0.7, 0.9, 0.5, 0.1, 0.3, 0.5, 0.9, 0.3, 0.9, 0.9, 0.4, 0.6, 0.5, 0.1, 0.6, 0.7, 0.4, 0.4, 0.9, 0.6, 0.9, 0.4, 0.5, 0.2, 0.3, 0.1, 0.7, 0.9, 0.7, 0.2, 0.6, 0.5, 0.2, 0.6, 0.2, 0.4, 0.8, 0.2, 0.5, 0.7, 0.1, 0.1, 0.3, 0.5, 0.2, 0.7, 0.4, 0.5, 0.5, 0.7, 0.7, 0.1, 0.1, 0.8, 0.8, 0.8, 0.2, 0.7, 0.8, 0.6, 0.1, 0.8, 0.8, 0.4, 0.1, 0.5, 0.7, 0.7, 0.7, 0.5, 0.1, 0.2, 0.1, 0.1, 0.1, 0.4, 0.7, 0.5, 0.2, 0.7, 0.8, 0.5, 0.8, 0.9, 0.5, 0.7, 0.4, 0.6, 0.6, 0.4, 0.8, 0.2, 0.9, 0.8, 0.8, 0.1, 0.6, 0.3, 0.2, 0.1, 0.3, 0.5, 0.5, 0.2, 0.4, 0.5, 0.1, 0.2, 0.8, 0.3, 0.7, 0.8, 0.7, 0.9, 0.4, 0.7, 0.7, 0.9, 0.7, 0.9, 0.5, 0.1, 0.4, 0.2,
+
+L3_zGEMM_B_kn
+0.2, 0.8, 0.2, 0.2, 0.2, 0.2, 0.5, 0.2, 0.1, 0.1, 0.2, 0.5, 0.3, 0.8, 0.2, 0.3, 0.4, 0.4, 0.9, 0.7, 0.9, 0.7, 0.3, 0.7, 0.9, 0.4, 0.4, 0.9, 0.3, 0.9, 0.4, 0.2, 0.6, 0.3, 0.2, 0.8, 0.7, 0.3, 0.6, 0.7, 0.5, 0.5, 0.3, 0.2, 0.7, 0.7, 0.5, 0.3, 0.8, 0.8, 0.2, 0.2, 0.8, 0.2, 0.4, 0.4, 0.4, 0.1, 0.4, 0.7, 0.6, 0.2, 0.2, 0.2, 0.8, 0.8, 0.6, 0.2, 0.7, 0.9, 0.1, 0.8, 0.9, 0.3, 0.6, 0.6, 0.5, 0.7, 0.8, 0.5, 0.8, 0.9, 0.9, 0.4, 0.2, 0.4, 0.4, 0.3, 0.4, 0.1, 0.2, 0.5, 0.7, 0.1, 0.5, 0.3, 0.8, 0.4, 0.2, 0.6, 0.7, 0.8, 0.4, 0.4, 0.2, 0.3, 0.6, 0.1, 0.9, 0.9, 0.8, 0.9, 0.1, 0.4, 0.5, 0.4, 0.2, 0.2, 0.8, 0.2, 0.2, 0.4, 0.8, 0.2, 0.7, 0.1, 0.6, 0.5, 0.6, 0.5, 0.3, 0.6, 0.5, 0.6, 0.1, 0.8, 0.6, 0.3, 0.8, 0.4, 0.7, 0.4, 0.9, 0.1, 0.7, 0.6, 0.5, 0.5, 0.2, 0.7, 0.4, 0.5, 0.2, 0.6, 0.2, 0.9, 0.9, 0.7, 0.6, 0.2, 0.8, 0.2, 0.4, 0.6, 0.6, 0.5, 0.6, 0.5, 0.2, 0.4, 0.3, 0.5, 0.9, 0.3, 0.4, 0.1, 0.1, 0.5, 0.8, 0.4, 0.2, 0.4, 0.3, 0.6, 0.7, 0.4, 0.3, 0.9, 0.6, 0.6, 0.2, 0.2, 0.1, 0.7, 0.2, 0.1, 0.2, 0.7, 0.1, 0.7, 0.2, 0.6, 0.6, 0.8, 0.7, 0.7, 0.5, 0.3, 0.2, 0.7, 0.8, 0.7, 0.9, 0.8, 0.2, 0.3, 0.3, 0.8, 0.7, 0.3, 0.9, 0.9, 0.1, 0.6, 0.8, 0.6, 0.8, 0.7, 0.8, 0.4, 0.3, 0.9, 0.8, 0.9, 0.9, 0.6, 0.3, 0.9, 0.7, 0.1, 0.1, 0.2, 0.1, 0.2, 0.9, 0.3, 0.4, 0.3, 0.7, 0.1, 0.5, 0.5, 0.3, 0.6, 0.8, 0.1, 0.1, 0.9, 0.4, 0.1, 0.6, 0.6, 0.7, 0.3, 0.2, 0.7, 0.7, 0.7, 0.6, 0.1, 0.4, 0.8, 0.6, 0.3, 0.5, 0.4, 0.8, 0.1, 0.4, 0.2, 0.9, 0.4, 0.4, 0.4, 0.5, 0.4, 0.3, 0.1, 0.8, 0.7, 0.4, 0.6, 0.7, 0.9, 0.9, 0.3, 0.2, 0.4, 0.1, 0.6, 0.8, 0.6, 0.4, 0.7, 0.6, 0.6, 0.1, 0.4, 0.9, 0.4, 0.6, 0.1, 0.7, 0.6, 0.9, 0.8, 0.1, 0.4, 0.7, 0.4, 0.3, 0.8, 0.9, 0.8, 0.5, 0.2, 0.4, 0.3, 0.2, 0.4, 0.6, 0.8, 0.1, 0.8, 0.6, 0.3, 0.6, 0.1, 0.4, 0.6, 0.5, 0.8, 0.3, 0.2, 0.1, 0.7, 0.3, 0.5, 0.1, 0.3, 0.6, 0.1, 0.8, 0.1, 0.5, 0.1, 0.9, 0.7, 0.1, 0.7, 0.5, 0.6, 0.9, 0.8, 0.1, 0.4, 0.6, 0.2, 0.7, 0.3, 0.8, 0.9, 0.8, 0.4, 0.8, 0.6, 0.3, 0.6, 0.3, 0.6, 0.1, 0.7, 0.9, 0.4, 0.6, 0.3, 0.5, 0.7, 0.6, 0.1, 0.4, 0.6, 0.5, 0.4, 0.4, 0.8, 0.3, 0.6, 0.4, 0.4, 0.9, 0.2, 0.4, 0.7, 0.6, 0.1, 0.4, 0.4, 0.6, 0.6, 0.3, 0.2, 0.9, 0.8, 0.5, 0.9, 0.4, 0.4, 0.2, 0.6, 0.6, 0.6, 0.8, 0.6, 0.6, 0.8, 0.4, 0.2, 0.4, 0.4, 0.9, 0.1, 0.5, 0.1, 0.9, 0.1, 0.4, 0.7, 0.7, 0.2, 0.3, 0.6, 0.9, 0.1, 0.7, 0.6, 0.2, 0.8, 0.6, 0.3, 0.5, 0.7, 0.1, 0.1, 0.7, 0.6, 0.9, 0.8, 0.3, 0.4, 0.1, 0.7, 0.8, 0.4, 0.9, 0.2, 0.2, 0.9, 0.2, 0.6, 0.1, 0.3, 0.6, 0.8, 0.3, 0.4, 0.6, 0.6, 0.4, 0.5, 0.1, 0.3, 0.7, 0.3, 0.9, 0.6, 0.1, 0.8, 0.5, 0.1, 0.1, 0.1, 0.6, 0.8, 0.6, 0.3, 0.8, 0.2, 0.8, 0.7, 0.9, 0.4, 0.7, 0.4, 0.5, 0.9, 0.9, 0.5, 0.7, 0.8, 0.7, 0.4, 0.5, 0.8, 0.1, 0.8, 0.1, 0.7, 0.4, 0.7, 0.4, 0.3, 0.7, 0.9, 0.7, 0.4, 0.3, 0.1, 0.9, 0.5, 0.5, 0.2, 0.5, 0.7, 0.3, 0.1, 0.4, 0.1, 0.3, 0.8, 0.2, 0.5, 0.2, 0.4,
+
+L3_zGEMM_C_mn
+0.1, 0.9, 0.1, 0.6, 0.2, 0.3, 0.2, 0.6, 0.2, 0.1, 0.5, 0.5, 0.5, 0.7, 0.3, 0.2, 0.2, 0.6, 0.3, 0.5, 0.6, 0.7, 0.9, 0.9, 0.4, 0.9, 0.1, 0.1, 0.3, 0.3, 0.6, 0.9, 0.7, 0.6, 0.4, 0.6, 0.6, 0.4, 0.4, 0.5, 0.3, 0.8, 0.8, 0.5, 0.8, 0.1, 0.3, 0.6, 0.9, 0.4, 0.6, 0.6, 0.3, 0.9, 0.7, 0.6, 0.5, 0.6, 0.9, 0.1, 0.6, 0.8, 0.2, 0.1, 0.7, 0.8, 0.5, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.7, 0.7, 0.9, 0.2, 0.7, 0.5, 0.6, 0.6, 0.2, 0.8, 0.7, 0.7, 0.5, 0.4, 0.9, 0.9, 0.7, 0.9, 0.6, 0.8, 0.1, 0.4, 0.5, 0.6, 0.1, 0.9, 0.3, 0.5, 0.6, 0.1, 0.3, 0.2, 0.2, 0.6, 0.7, 0.4, 0.7, 0.7, 0.3, 0.1, 0.6, 0.3, 0.2, 0.7, 0.4, 0.9, 0.4, 0.4, 0.6, 0.3, 0.5, 0.4, 0.8, 0.7, 0.2, 0.5, 0.9, 0.6, 0.6, 0.6, 0.2, 0.5, 0.5, 0.7, 0.7, 0.8, 0.2, 0.5, 0.6, 0.8, 0.7, 0.6, 0.8, 0.6, 0.7, 0.7, 0.3, 0.5, 0.7, 0.1, 0.5, 0.1, 0.2, 0.5, 0.5, 0.9, 0.6, 0.4, 0.8, 0.3, 0.4, 0.2, 0.9, 0.7, 0.3, 0.5, 0.4, 0.8, 0.4, 0.9, 0.5, 0.6, 0.4, 0.8, 0.4, 0.4, 0.7, 0.7, 0.4, 0.4, 0.7, 0.1, 0.7, 0.1, 0.5, 0.5, 0.3, 0.3, 0.1, 0.7, 0.1, 0.4, 0.4, 0.3, 0.4, 0.6, 0.1, 0.1, 0.4, 0.6, 0.9, 0.6, 0.8, 0.6, 0.4, 0.1, 0.4, 0.4, 0.3, 0.8, 0.5, 0.2, 0.2, 0.6, 0.1, 0.6, 0.2, 0.2, 0.5, 0.4, 0.1, 0.2, 0.4, 0.4, 0.4, 0.9, 0.4, 0.5, 0.3, 0.9, 0.5, 0.7, 0.2, 0.8, 0.5, 0.7, 0.4, 0.3, 0.8, 0.7, 0.7, 0.3, 0.7, 0.4, 0.1, 0.6, 0.3, 0.3, 0.9, 0.5, 0.5, 0.7, 0.2, 0.4, 0.1, 0.6, 0.5, 0.8, 0.4, 0.3, 0.6, 0.3, 0.9, 0.2, 0.6, 0.9, 0.5, 0.1, 0.3, 0.8, 0.1, 0.4, 0.5, 0.2, 0.8, 0.3, 0.7, 0.6, 0.8, 0.9, 0.2, 0.3, 0.5, 0.7, 0.9, 0.5, 0.4, 0.1, 0.8, 0.2, 0.3, 0.2, 0.3, 0.3, 0.5, 0.1, 0.6, 0.1, 0.2, 0.1, 0.7, 0.5, 0.2, 0.5, 0.4, 0.8, 0.8, 0.8, 0.4, 0.6, 0.7, 0.7, 0.1, 0.7, 0.4, 0.1, 0.5, 0.9, 0.4, 0.8, 0.3, 0.2, 0.3, 0.2, 0.3, 0.2, 0.2, 0.1, 0.9, 0.7, 0.5, 0.6, 0.2, 0.5, 0.2, 0.7, 0.6,
+
+L3_zGEMM_o_NN
+0.77, 10.23, 1.25, 8.29, 1.15, 7.99, 1.58, 10.38, 1.75, 10.51, 0.21, 7.72, 1.79, 10.8, 1.62, 8.23, 1.02, 10.89, 0.56, 8.66, 3.2, 9.29, 2.99, 10.69, 2.5, 8.87, 0.3, 8.99, 0.63, 10.83, 1.45, 10.68, 0.02, 10.67, 1.01, 8.88, 1.26, 6.88, 0.89, 7.69, 0.92, 9.92, 1.41, 9.07, 0.95, 5.97, 0.63, 9.39, 2.5, 7.67, 1.37, 9.5, -0.64, 8.89, 2.39, 8.93, 1.61, 8.84, 2.29, 8.03, 0.4, 8.33, -0.53, 8.91, 2.12, 9.04, -0.44, 8.73, 0.63, 8.83, 0.98, 7.59, 0.28, 7.64, 1.0, 9.15, 0.74, 9.24, 0.67, 6.44, 0.87, 8.8, 2.15, 7.46, 0.84, 8.66, 0.08, 7.71, 2.09, 8.46, 1.62, 8.5, 1.94, 7.35, 0.55, 7.89, 0.36, 8.24, 1.88, 8.24, 0.07, 8.38, -0.97, 8.35, -0.93, 6.09, -1.12, 7.07, -1.27, 8.66, -0.64, 8.45, -1.28, 5.75, -1.93, 7.73, -0.11, 6.72, -0.19, 8.87, -1.51, 7.25, 0.42, 8.7, -0.07, 9.06, 0.81, 7.58, -0.92, 7.62, -2.14, 8.62, 0.53, 7.6, -2.14, 7.19, 1.64, 9.23, 1.65, 6.86, 1.01, 7.77, 1.79, 8.81, 2.23, 9.44, 0.16, 7.07, 1.05, 8.99, 1.48, 8.48, 1.54, 8.81, -0.22, 8.04, 3.33, 8.06, 3.28, 8.42, 2.01, 7.68, 0.78, 8.07, 0.13, 9.18, 1.72, 8.7, 0.1, 8.96, 1.3, 8.52, 1.47, 7.53, 0.54, 8.03, 1.19, 8.62, 0.8, 10.44, 0.07, 6.16, -0.07, 8.92, 1.39, 8.08, -0.37, 9.64, -0.41, 8.09, 1.6, 8.07, 1.97, 8.46, 1.91, 7.77, -0.18, 7.92, -0.54, 9.15, 1.26, 8.68, -1.0, 9.28, 1.6, 10.65, 1.88, 8.02, 0.83, 8.24, 1.21, 9.85, 2.62, 10.0, 0.94, 7.64, 0.96, 10.26, 2.97, 8.94, 1.48, 10.04, 1.24, 8.4, 2.65, 8.92, 1.86, 9.0, 3.3, 8.37, 1.51, 8.53, 0.9, 10.65, 2.73, 9.14, 0.91, 9.63, 0.48, 8.32, 0.62, 7.74, -0.25, 7.67, -0.35, 8.03, 0.06, 8.18, 0.1, 5.83, -0.12, 9.69, 0.93, 8.09, -0.56, 8.0, -0.2, 7.5, 1.75, 8.2, 0.9, 8.66, 0.57, 7.22, -0.22, 7.78, -1.49, 8.31, 0.38, 8.45, -1.55, 7.58, 0.76, 8.22, 0.68, 7.18, 0.08, 8.24, -0.12, 8.94, 0.96, 9.37, 0.6, 6.24, -0.02, 8.54, 1.3, 7.65, 0.13, 8.57, -0.58, 7.94, 0.95, 8.66, 1.5, 7.96, 0.31, 7.76, 0.14, 7.31, -1.16, 8.16, 1.0, 9.32, -0.63, 7.6, 0.9, 9.38, 2.12, 7.8, 1.0, 7.42, 1.17, 8.76, 1.78, 8.35, 1.14, 6.6, 0.58, 9.29, 2.4, 8.22, 0.85, 9.46, 0.34, 7.38, 1.5, 8.77, 1.66, 8.64, 1.16, 8.24, 0.79, 8.14, 0.39, 8.69, 2.01, 9.11, 1.1, 8.59,
+
+L3_zGEMM_A_km
+0.7, 0.7, 0.6, 0.5, 0.1, 0.5, 0.2, 0.4, 0.7, 0.9, 0.7, 0.1, 0.9, 0.1, 0.2, 0.4, 0.8, 0.9, 0.9, 0.4, 0.1, 0.2, 0.2, 0.8, 0.7, 0.9, 0.5, 0.7, 0.1, 0.7, 0.1, 0.2, 0.8, 0.5, 0.8, 0.4, 0.7, 0.2, 0.9, 0.7, 0.2, 0.6, 0.4, 0.6, 0.8, 0.1, 0.2, 0.7, 0.4, 0.6, 0.6, 0.6, 0.8, 0.1, 0.8, 0.5, 0.2, 0.7, 0.9, 0.9, 0.3, 0.9, 0.6, 0.3, 0.3, 0.2, 0.8, 0.5, 0.1, 0.9, 0.7, 0.1, 0.1, 0.3, 0.8, 0.7, 0.6, 0.2, 0.8, 0.4, 0.5, 0.3, 0.4, 0.2, 0.5, 0.5, 0.8, 0.4, 0.9, 0.8, 0.2, 0.3, 0.6, 0.4, 0.7, 0.7, 0.4, 0.8, 0.5, 0.9, 0.3, 0.4, 0.9, 0.3, 0.2, 0.7, 0.5, 0.1, 0.6, 0.7, 0.2, 0.2, 0.9, 0.4, 0.5, 0.1, 0.5, 0.4, 0.6, 0.8, 0.5, 0.8, 0.3, 0.2, 0.6, 0.9, 0.5, 0.8, 0.5, 0.3, 0.7, 0.2, 0.1, 0.6, 0.1, 0.7, 0.6, 0.4, 0.5, 0.9, 0.5, 0.1, 0.5, 0.8, 0.4, 0.3, 0.1, 0.7, 0.6, 0.1, 0.7, 0.4, 0.9, 0.3, 0.5, 0.3, 0.9, 0.3, 0.9, 0.1, 0.1, 0.9, 0.4, 0.1, 0.5, 0.7, 0.5, 0.2, 0.2, 0.8, 0.8, 0.7, 0.8, 0.3, 0.5, 0.3, 0.1, 0.4, 0.8, 0.9, 0.5, 0.2, 0.6, 0.9, 0.5, 0.5, 0.8, 0.8, 0.3, 0.6, 0.5, 0.9, 0.2, 0.7, 0.3, 0.8, 0.5, 0.2, 0.6, 0.2, 0.1, 0.2, 0.1, 0.8, 0.5, 0.8, 0.6, 0.3, 0.2, 0.7, 0.8, 0.9, 0.4, 0.6, 0.6, 0.5, 0.1, 0.8, 0.8, 0.7, 0.8, 0.9, 0.3, 0.9, 0.5, 0.1, 0.6, 0.7, 0.3, 0.2, 0.8, 0.6, 0.3, 0.1, 0.3, 0.6, 0.7, 0.9, 0.5, 0.9, 0.4, 0.7, 0.4, 0.4, 0.9, 0.9, 0.5, 0.6, 0.3, 0.8, 0.2, 0.1, 0.1, 0.1, 0.3, 0.2, 0.8, 0.2, 0.4, 0.9, 0.8, 0.1, 0.2, 0.8, 0.7, 0.2, 0.9, 0.4, 0.1, 0.2, 0.6, 0.4, 0.1, 0.8, 0.4, 0.2, 0.8, 0.1, 0.7, 0.8, 0.3, 0.1, 0.1, 0.9, 0.2, 0.2, 0.6, 0.3, 0.2, 0.5, 0.2, 0.4, 0.6, 0.1, 0.8, 0.6, 0.1, 0.1, 0.2, 0.9, 0.9, 0.4, 0.1, 0.4, 0.9, 0.7, 0.7, 0.5, 0.2, 0.4, 0.7, 0.7, 0.1, 0.7, 0.5, 0.1, 0.4, 0.3, 0.5, 0.6,
+
+L3_zGEMM_B_nk
+0.3, 0.9, 0.9, 0.7, 0.2, 0.6, 0.2, 0.1, 0.7, 0.1, 0.6, 0.8, 0.1, 0.3, 0.8, 0.2, 0.4, 0.7, 0.8, 0.4, 0.6, 0.8, 0.2, 0.9, 0.6, 0.8, 0.8, 0.6, 0.7, 0.4, 0.5, 0.9, 0.5, 0.6, 0.4, 0.6, 0.6, 0.2, 0.9, 0.2, 0.5, 0.9, 0.9, 0.6, 0.5, 0.9, 0.8, 0.4, 0.5, 0.8, 0.1, 0.7, 0.6, 0.5, 0.4, 0.7, 0.7, 0.5, 0.2, 0.9, 0.5, 0.3, 0.5, 0.4, 0.9, 0.9, 0.4, 0.6, 0.3, 0.9, 0.7, 0.7, 0.3, 0.3, 0.4, 0.5, 0.3, 0.6, 0.5, 0.1, 0.6, 0.8, 0.6, 0.5, 0.5, 0.4, 0.5, 0.6, 0.6, 0.4, 0.2, 0.6, 0.9, 0.2, 0.6, 0.6, 0.5, 0.1, 0.9, 0.9, 0.7, 0.6, 0.4, 0.9, 0.2, 0.5, 0.7, 0.1, 0.2, 0.5, 0.6, 0.1, 0.5, 0.8, 0.3, 0.9, 0.6, 0.1, 0.7, 0.1, 0.5, 0.1, 0.4, 0.4, 0.5, 0.4, 0.7, 0.7, 0.8, 0.1, 0.9, 0.5, 0.2, 0.2, 0.6, 0.9, 0.6, 0.9, 0.3, 0.9, 0.4, 0.6, 0.4, 0.7, 0.1, 0.5, 0.3, 0.5, 0.4, 0.6, 0.2, 0.1, 0.2, 0.4, 0.3, 0.1, 0.2, 0.5, 0.6, 0.6, 0.4, 0.6, 0.9, 0.9, 0.4, 0.8, 0.4, 0.1, 0.3, 0.4, 0.1, 0.7, 0.9, 0.3, 0.5, 0.8, 0.7, 0.3, 0.5, 0.6, 0.4, 0.9, 0.8, 0.1, 0.3, 0.6, 0.6, 0.4, 0.7, 0.4, 0.7, 0.6, 0.7, 0.2, 0.5, 0.4, 0.8, 0.6, 0.3, 0.7, 0.9, 0.3, 0.2, 0.5, 0.4, 0.5, 0.4, 0.4, 0.6, 0.7, 0.4, 0.9, 0.1, 0.6, 0.1, 0.8, 0.8, 0.8, 0.4, 0.8, 0.9, 0.3, 0.9, 0.3, 0.7, 0.7, 0.6, 0.7, 0.6, 0.3, 0.4, 0.8, 0.9, 0.1, 0.6, 0.2, 0.1, 0.5, 0.2, 0.5, 0.9, 0.9, 0.6, 0.7, 0.8, 0.8, 0.4, 0.5, 0.7, 0.7, 0.1, 0.8, 0.6, 0.2, 0.9, 0.4, 0.4, 0.9, 0.1, 0.2, 0.3, 0.1, 0.7, 0.1, 0.2, 0.7, 0.3, 0.5, 0.3, 0.7, 0.9, 0.3, 0.5, 0.6, 0.3, 0.7, 0.6, 0.5, 0.7, 0.2, 0.3, 0.6, 0.8, 0.8, 0.6, 0.1, 0.5, 0.5, 0.2, 0.6, 0.3, 0.2, 0.8, 0.2, 0.8, 0.8, 0.2, 0.9, 0.6, 0.8, 0.6, 0.6, 0.5, 0.9, 0.4, 0.6, 0.5, 0.4, 0.9, 0.4, 0.2, 0.5, 0.1, 0.2, 0.5, 0.8, 0.3, 0.3, 0.3, 0.1, 0.2, 0.5, 0.3, 0.7, 0.1, 0.4, 0.5, 0.9, 0.2, 0.7, 0.4, 0.4, 0.8, 0.6, 0.2, 0.4, 0.1, 0.1, 0.6, 0.1, 0.3, 0.2, 0.2, 0.3, 0.9, 0.2, 0.4, 0.4, 0.5, 0.5, 0.2, 0.8, 0.8, 0.3, 0.5, 0.3, 0.1, 0.7, 0.1, 0.3, 0.3, 0.6, 0.3, 0.3, 0.9, 0.5, 0.7, 0.2, 0.1, 0.3, 0.3, 0.5, 0.7, 0.8, 0.3, 0.4, 0.2, 0.1, 0.9, 0.7, 0.8, 0.3, 0.7, 0.3, 0.6, 0.3, 0.2, 0.3, 0.2, 0.2, 0.1, 0.8, 0.2, 0.8, 0.2, 0.6, 0.3, 0.3, 0.3, 0.7, 0.9, 0.8, 0.7, 0.2, 0.6, 0.1, 0.4, 0.6, 0.6, 0.1, 0.1, 0.8, 0.3, 0.1, 0.2, 0.9, 0.3, 0.6, 0.4, 0.6, 0.3, 0.7, 0.8, 0.2, 0.1, 0.7, 0.2, 0.4, 0.5, 0.3, 0.6, 0.1, 0.9, 0.6, 0.7, 0.1, 0.6, 0.9, 0.8, 0.2, 0.3, 0.4, 0.9, 0.9, 0.4, 0.6, 0.9, 0.4, 0.7, 0.5, 0.9, 0.2, 0.8, 0.8, 0.4, 0.3, 0.1, 0.6, 0.9, 0.9, 0.5, 0.1, 0.4, 0.9, 0.6, 0.7, 0.9, 0.4, 0.7, 0.2, 0.6, 0.1, 0.4, 0.2, 0.7, 0.9, 0.5, 0.4, 0.9, 0.2, 0.6, 0.6, 0.2, 0.3, 0.4, 0.8, 0.3, 0.2, 0.5, 0.6, 0.1, 0.3, 0.7, 0.2, 0.6, 0.9, 0.5, 0.3, 0.9, 0.6, 0.2, 0.5, 0.7, 0.6, 0.4, 0.8, 0.8, 0.9, 0.3, 0.9, 0.1, 0.2, 0.3, 0.6, 0.2, 0.1, 0.7, 0.5, 0.2, 0.2, 0.3, 0.2, 0.3, 0.5, 0.4, 0.9, 0.7, 0.7, 0.3, 0.5, 0.9, 0.2, 0.7, 0.4, 0.7, 0.6, 0.7, 0.8, 0.2, 0.1, 0.3, 0.5, 0.6, 0.6,
+
+L3_zGEMM_o_TT
+-0.85, 7.98, -0.76, 9.17, -0.91, 8.16, 0.27, 7.31, -0.48, 6.17, 1.1, 7.99, -0.11, 8.33, -0.39, 8.24, 0.27, 7.71, -0.86, 7.58, -0.23, 6.87, 1.88, 6.71, -0.96, 7.74, 0.95, 7.48, 1.63, 7.96, 0.66, 8.37, 0.16, 7.45, -1.79, 9.13, -0.73, 8.28, -0.93, 8.64, -0.35, 8.4, -0.7, 7.41, -1.47, 8.34, -1.77, 8.4, -0.66, 8.43, -0.48, 8.11, -1.16, 8.54, -0.72, 6.47, -0.86, 7.61, -0.51, 6.37, -0.65, 8.38, -5.55111512313e-17, 9.24, -1.92, 8.3, -0.52, 7.8, -0.15, 10.08, -0.1, 10.08, -0.19, 9.48, 1.43, 9.26, -1.04, 8.28, 0.41, 9.66, 0.85, 9.34, 0.84, 10.43, 0.07, 7.66, 0.12, 8.22, 0.45, 7.81, 1.56, 8.22, 0.18, 7.43, 1.08, 8.84, 2.61, 8.98, 0.82, 8.21, 0.65, 8.3, 0.47, 9.33, 1.66533453694e-16, 9.67, 0.64, 9.46, 0.86, 9.32, 0.38, 8.33, 0.56, 9.53, 0.2, 9.54, 1.23, 9.56, 1.4, 8.39, 0.39, 8.85, 0.07, 7.79, 1.25, 8.53, 0.19, 7.6, 2.16, 9.71, 2.67, 9.48, 0.19, 8.86, 0.59, 8.26, -1.74, 8.48, -1.11, 8.87, -1.93, 8.62, -0.86, 7.56, -1.89, 7.91, -1.68, 8.33, -1.09, 8.15, -1.39, 9.25, -1.89, 7.36, -2.2, 7.76, -1.73, 6.54, -0.03, 6.79, -1.66, 7.26, -1.91, 7.64, -0.71, 9.59, -1.22, 7.34, -0.82, 7.34, 0.55, 9.1, 1.51, 8.63, 1.38, 8.84, 1.91, 7.82, 0.45, 7.09, 1.68, 8.46, 0.43, 8.95, 0.86, 10.0, 1.44, 7.95, 1.5, 8.2, 0.59, 5.94, 1.74, 7.0, 0.6, 7.66, 2.25, 8.61, 2.86, 8.57, 0.52, 8.09, 1.82, 8.85, 1.43, 8.91, 1.16, 7.61, 0.94, 7.44, 1.69, 6.51, 0.78, 7.11, 0.71, 8.33, 1.33, 6.72, 1.75, 7.41, 0.34, 6.75, 0.58, 7.33, -0.51, 6.09, 1.12, 6.79, 0.68, 6.08, 0.98, 7.97, 3.04, 9.0, 0.93, 7.45, 1.7, 6.9, 1.66, 8.28, 0.74, 8.63, 1.07, 8.74, 1.23, 8.14, 0.12, 7.46, 1.41, 8.74, 0.77, 8.8, 1.52, 8.65, 1.3, 6.59, 0.51, 7.55, 0.01, 7.22, 1.22, 7.11, -0.14, 7.18, 1.33, 8.87, 2.3, 8.7, 0.25, 8.51, 0.56, 7.02, 0.91, 7.9, 0.71, 9.15, 0.33, 8.74, 2.08, 7.71, 1.03, 7.64, 1.63, 8.02, 0.76, 8.56, 1.15, 9.9, 1.09, 7.61, -0.25, 8.49, 0.49, 6.17, 1.22, 6.56, -0.1, 7.35, 0.99, 7.53, 2.03, 8.2, 0.5, 8.53, 0.93, 7.52, -0.66, 12.0, -0.04, 12.61, 0.03, 11.87, 1.5, 11.37, -0.14, 9.44, 0.68, 12.36, -0.75, 12.28, 1.05, 12.99, 0.68, 10.07, -0.2, 10.71, -1.21, 9.14, 0.42, 9.78, -1.09, 9.99, 0.67, 11.4, 2.42, 12.14, -0.65, 10.62, 0.35, 10.15,
+
+L3_zGEMM_o_HH
+-0.85, -6.18, -0.76, -7.97, -0.91, -7.56, 0.27, -6.11, -0.48, -5.97, 1.1, -6.99, -0.11, -6.93, -0.39, -7.84, 0.27, -6.51, -0.86, -6.58, -0.23, -5.47, 1.88, -4.91, -0.96, -5.94, 0.95, -7.28, 1.63, -7.36, 0.66, -6.57, 0.16, -6.25, -1.79, -7.93, -0.73, -7.48, -0.93, -7.64, -0.35, -6.8, -0.7, -6.41, -1.47, -8.14, -1.77, -7.2, -0.66, -7.63, -0.48, -6.91, -1.16, -6.74, -0.72, -5.27, -0.86, -6.41, -0.51, -6.17, -0.65, -6.78, -5.55111512313e-17, -9.04, -1.92, -6.7, -0.52, -7.0, -0.15, -8.88, -0.1, -8.48, -0.19, -8.08, 1.43, -7.46, -1.04, -6.88, 0.41, -8.46, 0.85, -8.94, 0.84, -9.03, 0.07, -6.66, 0.12, -6.42, 0.45, -6.41, 1.56, -7.02, 0.18, -7.23, 1.08, -7.84, 2.61, -8.78, 0.82, -7.61, 0.65, -7.1, 0.47, -8.73, 1.66533453694e-16, -9.27, 0.64, -8.06, 0.86, -7.92, 0.38, -7.73, 0.56, -8.33, 0.2, -9.14, 1.23, -8.76, 1.4, -7.59, 0.39, -7.65, 0.07, -6.79, 1.25, -6.93, 0.19, -7.2, 2.16, -7.91, 2.67, -8.28, 0.19, -8.46, 0.59, -7.26, -1.74, -7.08, -1.11, -8.47, -1.93, -7.42, -0.86, -6.16, -1.89, -6.31, -1.68, -6.93, -1.09, -7.55, -1.39, -7.85, -1.89, -6.36, -2.2, -7.36, -1.73, -5.54, -0.03, -5.59, -1.66, -5.66, -1.91, -6.84, -0.71, -7.79, -1.22, -6.74, -0.82, -6.54, 0.55, -8.3, 1.51, -7.63, 1.38, -8.04, 1.91, -7.02, 0.45, -5.69, 1.68, -7.66, 0.43, -7.55, 0.86, -8.6, 1.44, -6.95, 1.5, -7.6, 0.59, -5.74, 1.74, -6.8, 0.6, -6.86, 2.25, -7.81, 2.86, -8.37, 0.52, -7.29, 1.82, -7.05, 1.43, -7.31, 1.16, -6.81, 0.94, -6.64, 1.69, -5.91, 0.78, -6.11, 0.71, -7.93, 1.33, -6.52, 1.75, -7.01, 0.34, -5.75, 0.58, -7.13, -0.51, -5.29, 1.12, -5.99, 0.68, -5.28, 0.98, -7.37, 3.04, -8.0, 0.93, -7.05, 1.7, -5.9, 1.66, -7.48, 0.74, -7.03, 1.07, -7.34, 1.23, -6.74, 0.12, -7.26, 1.41, -8.14, 0.77, -7.0, 1.52, -7.65, 1.3, -6.19, 0.51, -7.35, 0.01, -6.22, 1.22, -6.31, -0.14, -5.98, 1.33, -7.07, 2.3, -7.5, 0.25, -7.51, 0.56, -6.42, 0.91, -7.7, 0.71, -8.15, 0.33, -7.14, 2.08, -6.31, 1.03, -6.04, 1.63, -7.62, 0.76, -7.56, 1.15, -8.1, 1.09, -6.81, -0.25, -6.89, 0.49, -5.57, 1.22, -5.96, -0.1, -6.35, 0.99, -6.33, 2.03, -7.8, 0.5, -7.13, 0.93, -7.12, -0.66, -11.2, -0.04, -11.01, 0.03, -11.07, 1.5, -9.97, -0.14, -9.24, 0.68, -11.56, -0.75, -11.28, 1.05, -12.19, 0.68, -9.47, -0.2, -10.11, -1.21, -8.54, 0.42, -9.38, -1.09, -8.19, 0.67, -10.4, 2.42, -11.74, -0.65, -10.22, 0.35, -8.95,
+
+L3_sSYMM_A_mm
+0.5, 0.6, 0.1, 0.2, 0.2, 0.2, 0.3, 0.8, 0.5, 0.9, 0.6, 0.8, 0.7, 0.9, 0.6, 0.2, 0.6, 0.2, 0.2, 0.6, 0.1, 0.7, 0.5, 0.9, 0.1, 0.8, 0.6, 0.4, 0.6, 0.6, 0.2, 0.9, 0.9, 0.7, 0.2, 0.6, 0.1, 0.9, 0.7, 0.8, 0.2, 0.6, 0.1, 0.2, 0.5, 0.5, 0.5, 0.6, 0.8, 0.4, 0.2, 0.2, 0.8, 0.6, 0.5, 0.4, 0.4, 0.2, 0.1, 0.3, 0.3, 0.6, 0.6, 0.1, 0.5, 0.4, 0.1, 0.7, 0.9, 0.2, 0.8, 0.2, 0.4, 0.9, 0.6, 0.2, 0.7, 0.2, 0.5, 0.8, 0.5, 0.2, 0.6, 0.7, 0.8, 0.1, 0.9, 0.5, 0.2, 0.3, 0.9, 0.6, 0.6, 0.8, 0.4, 0.3, 0.2, 0.8, 0.3, 0.2,
+
+L3_sSYMM_B_mn
+0.4, 0.7, 0.2, 0.9, 0.6, 0.8, 0.4, 0.9, 0.6, 0.4, 0.4, 0.5, 0.9, 0.7, 0.4, 0.7, 0.3, 0.2, 0.1, 0.8, 0.1, 0.2, 0.7, 0.9, 0.9, 0.6, 0.7, 0.7, 0.5, 0.9, 0.3, 0.5, 0.4, 0.6, 0.3, 0.9, 0.9, 0.7, 0.6, 0.4, 0.5, 0.3, 0.9, 0.5, 0.3, 0.8, 0.6, 0.4, 0.3, 0.9, 0.2, 0.5, 0.7, 0.4, 0.5, 0.7, 0.3, 0.4, 0.3, 0.3, 0.8, 0.7, 0.2, 0.3, 0.6, 0.5, 0.6, 0.4, 0.6, 0.5, 0.1, 0.1, 0.5, 0.9, 0.4, 0.6, 0.7, 0.8, 0.2, 0.6, 0.9, 0.5, 0.1, 0.5, 0.9, 0.7, 0.9, 0.5, 0.9, 0.6, 0.6, 0.5, 0.1, 0.2, 0.2, 0.5, 0.6, 0.8, 0.4, 0.7, 0.4, 0.9, 0.6, 0.3, 0.5, 0.9, 0.5, 0.2, 0.7, 0.7, 0.2, 0.2, 0.3, 0.6, 0.9, 0.1, 0.3, 0.2, 0.4, 0.3, 0.4, 0.6, 0.2, 0.7, 0.1, 0.7, 0.3, 0.4, 0.2, 0.8, 0.5, 0.6, 0.1, 0.4, 0.3, 0.5, 0.7, 0.2, 0.3, 0.3, 0.8, 0.6, 0.6, 0.4, 0.2, 0.3, 0.9, 0.4, 0.6, 0.4, 0.4, 0.6, 0.2, 0.1, 0.3, 0.3, 0.1, 0.9, 0.9, 0.3, 0.4, 0.7, 0.1, 0.2, 0.5, 0.3, 0.3, 0.3, 0.3, 0.7,
+
+L3_sSYMM_C_mn
+0.6, 0.7, 0.5, 0.3, 0.5, 0.6, 0.6, 0.4, 0.7, 0.4, 0.6, 0.5, 0.8, 0.8, 0.9, 0.6, 0.4, 0.6, 0.9, 0.8, 0.9, 0.9, 0.6, 0.8, 0.6, 0.3, 0.6, 0.4, 0.4, 0.8, 0.2, 0.3, 0.5, 0.2, 0.1, 0.2, 0.6, 0.1, 0.1, 0.7, 0.3, 0.3, 0.3, 0.6, 0.5, 0.8, 0.8, 0.8, 0.9, 0.1, 0.1, 0.4, 0.9, 0.8, 0.6, 0.4, 0.6, 0.6, 0.4, 0.7, 0.1, 0.9, 0.6, 0.9, 0.6, 0.3, 0.8, 0.1, 0.9, 0.4, 0.9, 0.5, 0.9, 0.6, 0.6, 0.5, 0.5, 0.4, 0.7, 0.4, 0.8, 0.2, 0.9, 0.2, 0.4, 0.9, 0.9, 0.3, 0.5, 0.1, 0.7, 0.3, 0.3, 0.9, 0.2, 0.6, 0.5, 0.4, 0.4, 0.7, 0.8, 0.5, 0.5, 0.6, 0.6, 0.4, 0.1, 0.7, 0.3, 0.1, 0.8, 0.8, 0.8, 0.9, 0.4, 0.3, 0.8, 0.6, 0.3, 0.8, 0.8, 0.3, 0.2, 0.5, 0.5, 0.8, 0.2, 0.1, 0.3, 0.1, 0.3, 0.8, 0.4, 0.1, 0.9, 0.6, 0.4, 0.2, 0.4, 0.9, 0.9, 0.2, 0.9, 0.3, 0.3, 0.5, 0.9, 0.2, 0.4, 0.9, 0.6, 0.4, 0.3, 0.6, 0.4, 0.3, 0.2, 0.4, 0.9, 0.2, 0.2, 0.1, 0.3, 0.7, 0.6, 0.9, 0.3, 0.2, 0.5, 0.8,
+
+L3_sSYMM_o_L
+2.17000006318, 2.40000000522, 2.42000007287, 1.85000001639, 3.25999999732, 3.07000002295, 2.99000006005, 2.63000002995, 2.80000001863, 1.89000004292, 2.8900000526, 2.64000003994, 3.57000006169, 2.25000004247, 2.57000001773, 2.45000007227, 2.62000002593, 2.78000009775, 3.61999997526, 3.37000004679, 3.39999997318, 4.03000003368, 3.65000008643, 3.67000005126, 3.52000008851, 3.16000007331, 3.27000006318, 2.90000002682, 3.16000010014, 4.41000007033, 2.40000006706, 2.3200000602, 3.27000004381, 2.88000006944, 2.46000004649, 2.82999999568, 3.30000006706, 2.65000000149, 3.36000006065, 3.37000004902, 3.26000004053, 2.60000004098, 2.55000004843, 2.78000003368, 3.39000000715, 3.42000009671, 4.14000008017, 2.71000006884, 3.22000001103, 2.59000006229, 2.80000003278, 2.72000001252, 3.83999993414, 4.00999999955, 2.96999999911, 4.14999999478, 3.75000002906, 3.95999998018, 2.98999999151, 3.71999996483, 2.58999998033, 4.24999992177, 3.68000003666, 4.58999999598, 2.75000005886, 2.80000002012, 3.8200000155, 3.07000000209, 2.96000002041, 2.20000002608, 2.86000005394, 2.2600000003, 3.56000002861, 3.03000006944, 3.17000007585, 2.6700000453, 2.36000005171, 2.1100000532, 3.15000002906, 2.64000008315, 3.90000006706, 1.68000004783, 2.64000002354, 2.12000007287, 2.76000003606, 2.54000003397, 3.11999999017, 2.1500000447, 2.43000000611, 2.34000006676, 2.62000002742, 2.17000004679, 1.92000005871, 2.86000000179, 1.96000005245, 2.21000006661, 2.5300000754, 2.82000005275, 1.88000006199, 2.08000003442, 2.80000005513, 2.38000002325, 2.47000002071, 2.64000003695, 2.77000008255, 2.1300000225, 2.76000003755, 3.13000003219, 2.8600000383, 2.18000004411, 2.96000005767, 2.65000005513, 3.33000000536, 3.26000004053, 3.48000006348, 1.90000005141, 2.51000004575, 2.89000007272, 2.43000003219, 3.14000005484, 3.48000001132, 2.36000003755, 2.80999996603, 3.92000002295, 3.5500000447, 3.37000004083, 2.94000003099, 2.67000004679, 2.61000005245, 2.5100000003, 2.90000008196, 4.20000003427, 2.63000005081, 2.02000003338, 3.56000002265, 3.16000004798, 2.58000005901, 2.6900000079, 2.51000003234, 3.30999993324, 3.78000000089, 2.59000003025, 3.41999997899, 2.79000003099, 2.68000004858, 2.7300000374, 3.0299999927, 2.7300000754, 3.72000000209, 2.72000001252, 2.22000005499, 2.77000004381, 2.6400000228, 2.70000008941, 3.16000001371, 2.74000009805, 2.64999999404, 3.4400000757, 3.5400000295, 2.97000005424, 2.82000003114, 2.68000007391, 2.7100000748, 3.46000004202, 3.15000010282, 4.35000003278, 2.4300000605, 2.2500000596, 3.2300000605, 3.18000007093,
+
+L3_sSYMM_A_nn
+0.6, 0.6, 0.5, 0.9, 0.1, 0.5, 0.1, 0.9, 0.3, 0.9, 0.7, 0.3, 0.3, 0.2, 0.6, 0.9, 0.8, 0.6, 0.7, 0.6, 0.6, 0.2, 0.1, 0.9, 0.6, 0.7, 0.4, 0.3, 0.5, 0.3, 0.3, 0.5, 0.5, 0.3, 0.5, 0.6, 0.6, 0.4, 0.1, 0.6, 0.5, 0.9, 0.6, 0.3, 0.5, 0.3, 0.9, 0.9, 0.8, 0.6, 0.4, 0.9, 0.6, 0.4, 0.1, 0.5, 0.7, 0.9, 0.1, 0.2, 0.1, 0.4, 0.3, 0.4, 0.7, 0.4, 0.4, 0.4, 0.1, 0.2, 0.1, 0.5, 0.3, 0.8, 0.7, 0.8, 0.3, 0.7, 0.2, 0.1, 0.9, 0.5, 0.7, 0.2, 0.4, 0.5, 0.1, 0.6, 0.7, 0.8, 0.4, 0.2, 0.4, 0.4, 0.1, 0.5, 0.3, 0.8, 0.2, 0.6, 0.5, 0.2, 0.1, 0.9, 0.5, 0.9, 0.7, 0.2, 0.2, 0.1, 0.9, 0.8, 0.6, 0.1, 0.4, 0.2, 0.1, 0.1, 0.5, 0.9, 0.6, 0.9, 0.1, 0.8, 0.4, 0.1, 0.3, 0.4, 0.1, 0.6, 0.9, 0.1, 0.3, 0.9, 0.1, 0.2, 0.3, 0.7, 0.6, 0.2, 0.3, 0.4, 0.9, 0.4, 0.3, 0.3, 0.4, 0.3, 0.5, 0.8, 0.3, 0.6, 0.6, 0.9, 0.4, 0.3, 0.1, 0.7, 0.1, 0.8, 0.1, 0.3, 0.4, 0.2, 0.4, 0.3, 0.7, 0.5, 0.3, 0.4, 0.7, 0.3, 0.5, 0.4, 0.2, 0.5, 0.6, 0.6, 0.4, 0.2, 0.5, 0.9, 0.7, 0.6, 0.9, 0.8, 0.3, 0.3, 0.5, 0.3, 0.3, 0.1, 0.3, 0.1, 0.9, 0.3, 0.4, 0.9, 0.1, 0.3, 0.2, 0.3, 0.8, 0.1, 0.3, 0.3, 0.9, 0.4, 0.9, 0.8, 0.4, 0.1, 0.5, 0.3, 0.7, 0.3, 0.9, 0.3, 0.9, 0.2, 0.2, 0.2, 0.3, 0.9, 0.7, 0.5, 0.2, 0.2, 0.3, 0.8, 0.7, 0.6, 0.2, 0.3, 0.1, 0.3, 0.4, 0.1, 0.6, 0.5, 0.8, 0.4, 0.7, 0.6, 0.1, 0.9, 0.3, 0.5, 0.9, 0.3, 0.9, 0.3, 0.8, 0.1, 0.8, 0.9, 0.5, 0.6, 0.4, 0.2, 0.5, 0.1, 0.1, 0.6, 0.3, 0.8, 0.8, 0.2, 0.4, 0.1, 0.9, 0.7, 0.8, 0.3, 0.4, 0.4, 0.4, 0.2, 0.5, 0.2, 0.6, 0.4, 0.3, 0.1, 0.2, 0.1, 0.8, 0.7, 0.4,
+
+L3_sSYMM_o_R
+5.96999999017, 5.26000004351, 6.28000000387, 4.44000003248, 5.25999998763, 5.00000006482, 4.84000000492, 4.32000006691, 5.17000004679, 4.01000004947, 5.88000004858, 4.32000000805, 5.53000003144, 4.58000006348, 6.29999998137, 4.98000005528, 4.0200000751, 5.46000000626, 5.24000001907, 6.21000002563, 4.74999996126, 5.52999991745, 4.45000007898, 4.33000004187, 4.34000003621, 4.70000007078, 3.98000007093, 5.42000001773, 3.90999999881, 5.53999996841, 3.91000003979, 5.73999998927, 4.48000006795, 3.63000005975, 5.05999999657, 5.04000002354, 5.7700001213, 4.07000004455, 3.81000004351, 4.86000007033, 4.85999994367, 4.66000003457, 4.76000008374, 4.27000009, 5.55000004768, 4.23000005826, 5.54000002876, 5.10000000596, 5.69000004739, 4.87000002667, 3.90000004768, 5.03000005677, 4.7200000684, 5.19000013307, 4.25000006855, 3.86000006512, 4.0400000973, 4.49000003174, 4.09000003994, 4.54000010848, 3.60000004694, 5.00000007153, 3.78000008509, 4.91999999836, 4.04000008017, 4.86000005841, 4.71000007331, 3.50000008494, 5.63000001207, 4.30000008196, 5.87000001624, 4.48000000089, 5.20999996752, 4.11000006884, 4.34000000045, 4.00000005364, 4.65000007227, 3.9900000526, 5.28000004262, 3.45000006333, 4.89000000268, 3.32000004753, 5.87999999866, 4.51000002414, 3.6900000675, 6.00999998689, 5.33000001878, 5.46000007108, 4.98000001952, 4.15000000894, 4.98000005677, 4.54999996275, 4.8000000231, 5.34000004441, 4.15000002459, 5.68000004858, 3.55000004545, 5.34000001907, 3.90000003725, 6.20000002235, 5.46000001967, 4.33000003964, 4.55000002086, 4.46000010088, 4.82000004232, 3.65000003353, 3.66999996781, 4.39000002727, 3.49999999255, 3.43000005454, 4.21000006586, 3.85000006333, 5.01000005394, 3.51000001222, 4.21999999315, 3.32000003189, 5.27000002593, 3.90000009462, 3.24000007719, 4.28000009999, 4.26000009343, 4.06000012398, 3.41000004724, 3.3900000377, 3.77000010639, 3.98000004858, 3.72000005797, 3.50000009537, 3.32000006318, 3.88000007913, 2.85000008121, 4.71000003159, 3.38000008956, 4.34000006899, 4.26000006363, 3.46000010982, 4.44000007272, 3.710000121, 4.71000011802, 4.75000002533, 4.36000006884, 3.9400001137, 3.9300000374, 4.06000005543, 3.92000014812, 3.91000005916, 5.29000007123, 3.28000005752, 4.66000006139, 3.93000006795, 5.16000008523, 4.24000005633, 3.51000010461, 3.76000006735, 3.22000006393, 3.83000010297, 3.22000002071, 3.410000045, 3.84000003174, 3.09999997616, 3.40000002384, 3.15000009537, 2.9200000453, 4.06000004575, 2.6800000754, 4.51999996483, 2.81000004798, 4.0300000374, 3.6400000295, 3.29000006825,
+
+L3_dSYMM_A_mm
+0.3, 0.5, 0.4, 0.3, 0.9, 0.9, 0.4, 0.6, 0.4, 0.8, 0.5, 0.1, 0.4, 0.7, 0.8, 0.7, 0.7, 0.5, 0.6, 0.8, 0.4, 0.4, 0.7, 0.5, 0.8, 0.6, 0.7, 0.1, 0.9, 0.1, 0.3, 0.7, 0.5, 0.8, 0.1, 0.2, 0.7, 0.2, 0.6, 0.6, 0.9, 0.8, 0.8, 0.1, 0.9, 0.2, 0.3, 0.7, 0.9, 0.3, 0.9, 0.7, 0.6, 0.2, 0.2, 0.2, 0.6, 0.7, 0.3, 0.8, 0.4, 0.7, 0.7, 0.7, 0.3, 0.6, 0.5, 0.5, 0.2, 0.5, 0.6, 0.5, 0.1, 0.2, 0.7, 0.7, 0.5, 0.3, 0.8, 0.8, 0.4, 0.6, 0.9, 0.6, 0.9, 0.3, 0.2, 0.8, 0.6, 0.9, 0.8, 0.8, 0.1, 0.6, 0.3, 0.8, 0.5, 0.8, 0.9, 0.8,
+
+L3_dSYMM_B_mn
+0.3, 0.4, 0.1, 0.9, 0.6, 0.5, 0.3, 0.3, 0.3, 0.8, 0.7, 0.1, 0.7, 0.7, 0.1, 0.3, 0.3, 0.5, 0.1, 0.1, 0.2, 0.8, 0.5, 0.2, 0.9, 0.3, 0.4, 0.5, 0.6, 0.1, 0.8, 0.7, 0.2, 0.9, 0.5, 0.9, 0.6, 0.8, 0.5, 0.3, 0.6, 0.1, 0.7, 0.5, 0.6, 0.5, 0.4, 0.6, 0.1, 0.2, 0.3, 0.6, 0.9, 0.1, 0.7, 0.3, 0.7, 0.2, 0.2, 0.4, 0.8, 0.5, 0.3, 0.1, 0.3, 0.9, 0.7, 0.9, 0.7, 0.4, 0.3, 0.5, 0.2, 0.1, 0.1, 0.9, 0.5, 0.3, 0.6, 0.5, 0.4, 0.5, 0.6, 0.9, 0.1, 0.4, 0.6, 0.9, 0.3, 0.5, 0.4, 0.7, 0.2, 0.5, 0.8, 0.1, 0.1, 0.4, 0.1, 0.3, 0.7, 0.3, 0.7, 0.1, 0.2, 0.2, 0.7, 0.7, 0.4, 0.2, 0.5, 0.8, 0.9, 0.6, 0.2, 0.6, 0.1, 0.8, 0.8, 0.5, 0.8, 0.9, 0.7, 0.6, 0.7, 0.2, 0.5, 0.9, 0.4, 0.3, 0.5, 0.1, 0.4, 0.1, 0.3, 0.7, 0.2, 0.6, 0.1, 0.2, 0.8, 0.4, 0.2, 0.9, 0.3, 0.7, 0.2, 0.9, 0.6, 0.8, 0.4, 0.9, 0.8, 0.6, 0.9, 0.9, 0.2, 0.2, 0.6, 0.3, 0.6, 0.6, 0.8, 0.3, 0.8, 0.2, 0.2, 0.9, 0.9, 0.1,
+
+L3_dSYMM_C_mn
+0.1, 0.1, 0.5, 0.3, 0.3, 0.4, 0.6, 0.6, 0.8, 0.1, 0.4, 0.3, 0.6, 0.9, 0.1, 0.7, 0.8, 0.6, 0.3, 0.7, 0.4, 0.5, 0.7, 0.7, 0.5, 0.7, 0.2, 0.7, 0.5, 0.8, 0.8, 0.6, 0.8, 0.6, 0.6, 0.2, 0.3, 0.9, 0.7, 0.2, 0.2, 0.4, 0.4, 0.9, 0.8, 0.3, 0.3, 0.5, 0.9, 0.6, 0.4, 0.6, 0.7, 0.7, 0.5, 0.7, 0.6, 0.8, 0.9, 0.7, 0.8, 0.9, 0.5, 0.1, 0.3, 0.8, 0.6, 0.1, 0.8, 0.3, 0.3, 0.2, 0.4, 0.8, 0.5, 0.9, 0.6, 0.6, 0.8, 0.2, 0.5, 0.9, 0.7, 0.6, 0.3, 0.4, 0.2, 0.2, 0.3, 0.2, 0.2, 0.2, 0.2, 0.9, 0.5, 0.4, 0.5, 0.3, 0.7, 0.6, 0.6, 0.2, 0.7, 0.5, 0.1, 0.7, 0.5, 0.8, 0.3, 0.3, 0.6, 0.6, 0.2, 0.1, 0.9, 0.5, 0.3, 0.8, 0.1, 0.6, 0.3, 0.7, 0.8, 0.8, 0.5, 0.6, 0.1, 0.3, 0.6, 0.1, 0.2, 0.2, 0.9, 0.8, 0.4, 0.7, 0.4, 0.4, 0.5, 0.8, 0.2, 0.8, 0.6, 0.9, 0.7, 0.7, 0.8, 0.9, 0.5, 0.6, 0.3, 0.2, 0.5, 0.1, 0.5, 0.4, 0.3, 0.4, 0.3, 0.3, 0.8, 0.2, 0.5, 0.6, 0.2, 0.7, 0.4, 0.5, 0.4, 0.2,
+
+L3_dSYMM_o_L
+2.95, 3.28, 3.31, 2.66, 2.92, 2.92, 2.41, 3.45, 3.68, 3.45, 2.74, 3.0, 2.31, 3.34, 2.58, 4.2, 3.23, 3.6, 3.79, 3.31, 3.06, 3.23, 3.53, 2.56, 3.19, 3.65, 4.02, 3.38, 3.34, 2.7, 3.41, 3.16, 4.72, 3.35, 3.15, 2.94, 2.04, 3.24, 3.51, 2.46, 1.93, 2.95, 2.8, 4.16, 3.36, 2.9, 2.22, 3.33, 2.93, 3.92, 3.16, 2.99, 3.35, 2.31, 2.5, 3.26, 3.13, 2.26, 3.1, 2.89, 3.94, 3.23, 3.05, 1.42, 2.78, 3.08, 3.42, 3.0, 3.56, 3.43, 2.46, 3.18, 3.7, 3.37, 2.19, 4.24, 3.49, 3.94, 3.67, 3.25, 2.71, 4.39, 2.85, 3.74, 3.25, 2.97, 3.07, 2.48, 2.86, 3.04, 2.93, 1.85, 2.64, 3.58, 3.79, 3.03, 3.11, 1.95, 3.47, 2.57, 3.27, 2.83, 3.33, 3.49, 2.35, 3.17, 3.13, 3.4, 2.06, 2.48, 3.21, 3.82, 2.63, 2.46, 2.33, 2.94, 2.52, 3.56, 2.86, 3.11, 3.05, 2.9, 2.85, 3.49, 2.93, 2.2, 3.0, 2.72, 3.98, 2.36, 2.9, 2.06, 3.48, 3.15, 3.89, 3.15, 3.58, 4.34, 3.37, 3.86, 3.16, 3.68, 2.43, 4.16, 4.01, 4.32, 3.6, 4.19, 2.4, 3.66, 3.17, 3.81, 3.44, 3.09, 4.08, 3.12, 3.07, 3.92, 3.65, 2.25, 4.11, 3.26, 4.71, 3.29, 3.37, 2.76, 3.57, 3.32, 4.24, 3.76,
+
+L3_dSYMM_A_nn
+0.1, 0.6, 0.4, 0.6, 0.1, 0.1, 0.1, 0.8, 0.2, 0.8, 0.1, 0.9, 0.4, 0.7, 0.7, 0.3, 0.6, 0.6, 0.1, 0.5, 0.3, 0.5, 0.9, 0.4, 0.6, 0.6, 0.2, 0.1, 0.7, 0.1, 0.5, 0.4, 0.8, 0.1, 0.4, 0.5, 0.7, 0.9, 0.5, 0.2, 0.1, 0.2, 0.9, 0.3, 0.4, 0.5, 0.2, 0.8, 0.6, 0.1, 0.3, 0.6, 0.3, 0.9, 0.5, 0.9, 0.1, 0.3, 0.6, 0.9, 0.4, 0.5, 0.1, 0.7, 0.1, 0.9, 0.6, 0.5, 0.1, 0.5, 0.5, 0.9, 0.9, 0.9, 0.4, 0.1, 0.7, 0.9, 0.5, 0.3, 0.1, 0.1, 0.6, 0.3, 0.4, 0.1, 0.9, 0.2, 0.1, 0.9, 0.2, 0.9, 0.2, 0.9, 0.2, 0.6, 0.7, 0.8, 0.8, 0.4, 0.8, 0.4, 0.1, 0.4, 0.1, 0.3, 0.4, 0.9, 0.4, 0.5, 0.6, 0.6, 0.4, 0.1, 0.4, 0.6, 0.3, 0.8, 0.7, 0.8, 0.6, 0.2, 0.6, 0.1, 0.2, 0.5, 0.4, 0.9, 0.8, 0.7, 0.4, 0.7, 0.7, 0.3, 0.1, 0.2, 0.2, 0.6, 0.9, 0.9, 0.7, 0.9, 0.6, 0.9, 0.4, 0.3, 0.8, 0.7, 0.8, 0.3, 0.4, 0.4, 0.4, 0.8, 0.2, 0.3, 0.4, 0.9, 0.2, 0.6, 0.8, 0.3, 0.5, 0.8, 0.4, 0.9, 0.3, 0.4, 0.8, 0.6, 0.1, 0.1, 0.4, 0.5, 0.5, 0.6, 0.4, 0.7, 0.8, 0.8, 0.4, 0.8, 0.3, 0.5, 0.4, 0.8, 0.6, 0.9, 0.7, 0.5, 0.1, 0.3, 0.7, 0.1, 0.4, 0.7, 0.4, 0.8, 0.2, 0.4, 0.4, 0.5, 0.5, 0.4, 0.4, 0.1, 0.2, 0.7, 0.1, 0.8, 0.4, 0.7, 0.8, 0.9, 0.3, 0.4, 0.6, 0.9, 0.4, 0.7, 0.9, 0.7, 0.5, 0.8, 0.1, 0.1, 0.8, 0.6, 0.7, 0.3, 0.3, 0.5, 0.4, 0.9, 0.7, 0.2, 0.8, 0.9, 0.7, 0.4, 0.6, 0.9, 0.6, 0.4, 0.3, 0.3, 0.4, 0.4, 0.4, 0.5, 0.4, 0.2, 0.7, 0.7, 0.5, 0.3, 0.8, 0.1, 0.6, 0.3, 0.8, 0.8, 0.1, 0.4, 0.8, 0.8, 0.5, 0.7, 0.8, 0.7, 0.7, 0.2, 0.6, 0.1, 0.3, 0.5, 0.4, 0.4, 0.7, 0.2, 0.4, 0.6, 0.6, 0.4, 0.9, 0.9, 0.5, 0.2, 0.7,
+
+L3_dSYMM_o_R
+3.3, 2.9, 3.91, 3.93, 4.25, 4.31, 4.16, 4.61, 5.36, 4.26, 4.15, 3.66, 4.98, 4.7, 3.7, 5.27, 4.85, 4.4, 3.86, 4.16, 4.38, 4.1, 4.65, 4.36, 3.96, 5.17, 4.63, 4.96, 4.12, 5.36, 4.99, 4.3, 4.71, 4.61, 4.07, 3.45, 4.48, 5.01, 4.92, 4.89, 3.6, 4.85, 5.37, 4.99, 4.72, 4.16, 4.49, 4.67, 4.93, 5.33, 4.47, 4.61, 4.22, 4.53, 4.83, 5.38, 4.82, 5.0, 4.98, 5.4, 5.14, 5.27, 4.85, 5.05, 4.75, 5.35, 5.72, 4.15, 4.4, 3.86, 3.74, 4.4, 3.5, 4.75, 3.77, 4.74, 5.03, 5.02, 4.78, 4.01, 4.7, 5.05, 4.61, 4.69, 3.77, 3.33, 3.39, 3.28, 4.46, 4.08, 4.13, 3.51, 3.57, 5.19, 4.36, 4.11, 3.93, 4.1, 4.76, 4.3, 4.61, 3.54, 4.03, 4.4, 3.57, 4.82, 4.74, 5.4, 4.53, 4.36, 5.3, 5.52, 4.93, 4.34, 5.91, 5.29, 4.42, 5.61, 4.52, 4.34, 4.21, 5.06, 5.37, 5.4, 4.86, 4.46, 4.17, 5.65, 4.73, 4.58, 4.43, 4.87, 5.53, 5.13, 4.63, 4.49, 5.08, 4.46, 4.15, 5.19, 4.18, 6.04, 5.03, 4.86, 5.9, 5.83, 5.91, 4.83, 5.79, 5.67, 4.53, 5.1, 4.83, 4.46, 4.9, 4.43, 5.18, 4.86, 4.94, 4.21, 5.02, 5.51, 4.99, 5.39, 4.83, 5.38, 5.31, 5.14, 5.45, 3.95,
+
+L3_cSYMM_A_mm
+0.10000000149, 0.699999988079, 0.800000011921, 0.5, 0.899999976158, 0.5, 0.40000000596, 0.699999988079, 0.300000011921, 0.600000023842, 0.5, 0.10000000149, 0.300000011921, 0.699999988079, 0.20000000298, 0.300000011921, 0.699999988079, 0.20000000298, 0.899999976158, 0.800000011921, 0.800000011921, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.40000000596, 0.600000023842, 0.600000023842, 0.600000023842, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.800000011921, 0.300000011921, 0.800000011921, 0.20000000298, 0.600000023842, 0.699999988079, 0.899999976158, 0.5, 0.10000000149, 0.40000000596, 0.40000000596, 0.800000011921, 0.10000000149, 0.699999988079, 0.20000000298, 0.600000023842, 0.600000023842, 0.20000000298, 0.600000023842, 0.10000000149, 0.600000023842, 0.5, 0.10000000149, 0.40000000596, 0.899999976158, 0.600000023842, 0.40000000596, 0.699999988079, 0.600000023842, 0.600000023842, 0.10000000149, 0.699999988079, 0.699999988079, 0.5, 0.800000011921, 0.300000011921, 0.40000000596, 0.5, 0.600000023842, 0.600000023842, 0.699999988079, 0.899999976158, 0.800000011921, 0.20000000298, 0.800000011921, 0.300000011921, 0.300000011921, 0.600000023842, 0.600000023842, 0.10000000149, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.5, 0.300000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.20000000298, 0.600000023842, 0.5, 0.5, 0.40000000596, 0.300000011921, 0.699999988079, 0.5, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.5, 0.899999976158, 0.699999988079, 0.600000023842, 0.800000011921, 0.699999988079, 0.40000000596, 0.10000000149, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.300000011921, 0.300000011921, 0.699999988079, 0.600000023842, 0.899999976158, 0.600000023842, 0.10000000149, 0.600000023842, 0.600000023842, 0.600000023842, 0.20000000298, 0.699999988079, 0.40000000596, 0.20000000298, 0.40000000596, 0.699999988079, 0.20000000298, 0.600000023842, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.300000011921, 0.800000011921, 0.300000011921, 0.600000023842, 0.5, 0.699999988079, 0.899999976158, 0.600000023842, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.20000000298, 0.20000000298, 0.899999976158, 0.899999976158, 0.5, 0.40000000596, 0.10000000149, 0.699999988079, 0.20000000298, 0.800000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.800000011921, 0.20000000298, 0.5, 0.40000000596, 0.899999976158, 0.20000000298, 0.600000023842, 0.699999988079, 0.899999976158, 0.5, 0.10000000149, 0.899999976158, 0.5, 0.5, 0.899999976158, 0.800000011921, 0.600000023842, 0.699999988079, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.300000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.699999988079, 0.40000000596,
+
+L3_cSYMM_B_mn
+0.20000000298, 0.5, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.40000000596, 0.300000011921, 0.40000000596, 0.10000000149, 0.300000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.20000000298, 0.899999976158, 0.20000000298, 0.20000000298, 0.300000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.600000023842, 0.40000000596, 0.699999988079, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.5, 0.20000000298, 0.699999988079, 0.20000000298, 0.5, 0.10000000149, 0.40000000596, 0.800000011921, 0.20000000298, 0.699999988079, 0.300000011921, 0.300000011921, 0.600000023842, 0.5, 0.300000011921, 0.800000011921, 0.20000000298, 0.899999976158, 0.800000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.40000000596, 0.699999988079, 0.300000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.800000011921, 0.5, 0.20000000298, 0.20000000298, 0.40000000596, 0.40000000596, 0.40000000596, 0.600000023842, 0.600000023842, 0.20000000298, 0.699999988079, 0.600000023842, 0.899999976158, 0.800000011921, 0.20000000298, 0.300000011921, 0.20000000298, 0.600000023842, 0.699999988079, 0.40000000596, 0.800000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.899999976158, 0.800000011921, 0.5, 0.40000000596, 0.5, 0.300000011921, 0.300000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.20000000298, 0.899999976158, 0.800000011921, 0.699999988079, 0.5, 0.600000023842, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.300000011921, 0.40000000596, 0.5, 0.800000011921, 0.5, 0.5, 0.699999988079, 0.300000011921, 0.699999988079, 0.20000000298, 0.5, 0.20000000298, 0.699999988079, 0.40000000596, 0.600000023842, 0.800000011921, 0.600000023842, 0.300000011921, 0.300000011921, 0.5, 0.300000011921, 0.40000000596, 0.5, 0.300000011921, 0.10000000149, 0.5, 0.899999976158, 0.800000011921, 0.800000011921, 0.40000000596, 0.699999988079, 0.40000000596, 0.40000000596, 0.20000000298, 0.300000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.600000023842, 0.20000000298, 0.699999988079, 0.899999976158, 0.20000000298, 0.899999976158, 0.20000000298, 0.800000011921, 0.899999976158, 0.300000011921, 0.5, 0.800000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.10000000149, 0.899999976158, 0.5, 0.699999988079, 0.300000011921, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.899999976158, 0.699999988079, 0.899999976158, 0.899999976158, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.300000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.899999976158, 0.20000000298, 0.5, 0.5, 0.899999976158, 0.800000011921, 0.10000000149, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, 0.40000000596, 0.699999988079, 0.600000023842, 0.600000023842, 0.600000023842, 0.600000023842, 0.800000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.20000000298, 0.899999976158, 0.10000000149, 0.699999988079, 0.899999976158, 0.699999988079, 0.10000000149, 0.20000000298, 0.300000011921, 0.899999976158, 0.899999976158, 0.699999988079, 0.5, 0.300000011921, 0.300000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.300000011921, 0.40000000596, 0.699999988079, 0.300000011921, 0.800000011921, 0.5, 0.899999976158, 0.300000011921, 0.5, 0.899999976158, 0.600000023842, 0.300000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.899999976158, 0.20000000298, 0.300000011921, 0.5, 0.300000011921, 0.10000000149, 0.40000000596, 0.10000000149, 0.899999976158, 0.600000023842, 0.300000011921, 0.300000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.5, 0.800000011921, 0.800000011921, 0.40000000596, 0.5, 0.899999976158, 0.20000000298, 0.10000000149, 0.40000000596, 0.699999988079, 0.899999976158, 0.20000000298, 0.10000000149, 0.800000011921, 0.600000023842, 0.40000000596, 0.40000000596, 0.600000023842, 0.10000000149, 0.899999976158, 0.699999988079, 0.20000000298, 0.10000000149, 0.40000000596, 0.699999988079, 0.899999976158, 0.699999988079, 0.10000000149, 0.899999976158, 0.800000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.5, 0.899999976158, 0.800000011921, 0.5, 0.40000000596, 0.10000000149, 0.899999976158, 0.699999988079, 0.10000000149, 0.699999988079, 0.10000000149, 0.800000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.300000011921, 0.800000011921, 0.800000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.10000000149, 0.600000023842, 0.800000011921, 0.20000000298, 0.5, 0.699999988079, 0.300000011921, 0.40000000596, 0.10000000149, 0.5, 0.800000011921, 0.600000023842, 0.800000011921,
+
+L3_cSYMM_C_mn
+0.40000000596, 0.300000011921, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.800000011921, 0.10000000149, 0.899999976158, 0.40000000596, 0.40000000596, 0.300000011921, 0.40000000596, 0.300000011921, 0.899999976158, 0.20000000298, 0.300000011921, 0.20000000298, 0.899999976158, 0.699999988079, 0.5, 0.5, 0.600000023842, 0.699999988079, 0.300000011921, 0.899999976158, 0.300000011921, 0.899999976158, 0.10000000149, 0.5, 0.300000011921, 0.600000023842, 0.5, 0.40000000596, 0.40000000596, 0.600000023842, 0.300000011921, 0.300000011921, 0.800000011921, 0.899999976158, 0.600000023842, 0.899999976158, 0.800000011921, 0.899999976158, 0.899999976158, 0.5, 0.600000023842, 0.300000011921, 0.5, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.800000011921, 0.300000011921, 0.800000011921, 0.40000000596, 0.800000011921, 0.300000011921, 0.699999988079, 0.600000023842, 0.800000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.300000011921, 0.800000011921, 0.699999988079, 0.300000011921, 0.5, 0.600000023842, 0.699999988079, 0.800000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.899999976158, 0.5, 0.10000000149, 0.5, 0.40000000596, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.10000000149, 0.300000011921, 0.10000000149, 0.300000011921, 0.40000000596, 0.300000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.899999976158, 0.800000011921, 0.5, 0.40000000596, 0.899999976158, 0.800000011921, 0.899999976158, 0.899999976158, 0.699999988079, 0.40000000596, 0.20000000298, 0.20000000298, 0.699999988079, 0.800000011921, 0.10000000149, 0.899999976158, 0.300000011921, 0.699999988079, 0.899999976158, 0.899999976158, 0.899999976158, 0.600000023842, 0.40000000596, 0.300000011921, 0.600000023842, 0.20000000298, 0.300000011921, 0.5, 0.20000000298, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.800000011921, 0.800000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.5, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.899999976158, 0.699999988079, 0.300000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.699999988079, 0.899999976158, 0.899999976158, 0.899999976158, 0.10000000149, 0.5, 0.300000011921, 0.20000000298, 0.800000011921, 0.10000000149, 0.10000000149, 0.10000000149, 0.800000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.10000000149, 0.899999976158, 0.600000023842, 0.300000011921, 0.300000011921, 0.699999988079, 0.5, 0.600000023842, 0.600000023842, 0.899999976158, 0.5, 0.800000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.40000000596, 0.899999976158, 0.5, 0.40000000596, 0.20000000298, 0.899999976158, 0.600000023842, 0.20000000298, 0.40000000596, 0.40000000596, 0.40000000596, 0.800000011921, 0.300000011921, 0.5, 0.5, 0.600000023842, 0.800000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.300000011921, 0.10000000149, 0.300000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.20000000298, 0.899999976158, 0.699999988079, 0.10000000149, 0.40000000596, 0.40000000596, 0.10000000149, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.600000023842, 0.300000011921, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.300000011921, 0.40000000596, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.899999976158, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.20000000298, 0.699999988079, 0.699999988079, 0.300000011921, 0.10000000149, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.20000000298, 0.699999988079, 0.899999976158, 0.899999976158, 0.300000011921, 0.20000000298, 0.899999976158, 0.300000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.800000011921, 0.800000011921, 0.40000000596, 0.300000011921, 0.699999988079, 0.600000023842, 0.600000023842, 0.5, 0.699999988079, 0.20000000298, 0.300000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.600000023842, 0.20000000298, 0.300000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.800000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.300000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.10000000149, 0.20000000298, 0.899999976158, 0.699999988079, 0.20000000298, 0.699999988079, 0.699999988079, 0.800000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.600000023842, 0.5, 0.600000023842, 0.800000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.20000000298, 0.20000000298, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.899999976158, 0.600000023842, 0.899999976158, 0.20000000298, 0.20000000298, 0.10000000149, 0.20000000298, 0.300000011921, 0.300000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.899999976158, 0.20000000298, 0.10000000149, 0.5, 0.300000011921,
+
+L3_cSYMM_o_L
+1.30999990419, 5.19000004366, 0.499999948591, 5.15999998689, 0.1200000453, 4.68000002474, 1.44999997541, 5.42000002369, 1.60999987885, 5.52000012428, 0.310000039041, 5.86000006139, 2.07999993533, 6.00000003502, 0.879999900311, 6.15000000298, 0.349999993294, 5.1800000158, 1.29999998137, 6.01000007182, 1.5199999395, 4.8900000228, 1.0400000608, 6.42000003487, -1.03999995053, 6.43999990135, 0.619999950677, 6.7799999845, -0.060000051707, 4.23000006795, 0.78999997437, 6.10000006482, 0.279999982268, 5.19000010103, 1.42000005871, 5.45000013337, 1.14000004664, 5.02000010043, 1.42000007659, 5.04000007719, 2.28000006348, 6.71000006065, 2.63000001431, 5.76000012845, 1.15000007898, 6.6100001359, 2.77000008777, 5.78000011861, 0.470000012517, 7.07000007659, 0.90000006333, 5.77000005051, 1.34000009432, 5.49000008911, 2.1799999778, 5.51000008821, 0.65000012964, 6.4400001286, 0.230000085086, 6.57000000879, 1.3700000453, 6.95000008196, 0.87000005275, 5.03000014842, 2.1200000453, 5.39000015095, 0.840000081658, 5.9100001955, 1.22999992639, 5.62000004306, 0.639999949783, 4.90000007376, 0.860000048727, 4.62000002444, 1.23000001356, 5.26000009194, 1.27999992192, 4.96000014037, 0.750000040978, 5.45000009164, 1.29999993891, 5.71000008002, -0.550000026077, 6.05000001043, 0.200000008941, 4.21000007406, 0.889999935627, 4.97000010118, 0.619999988675, 3.72000006616, 0.140000067502, 5.39000013977, -0.689999985546, 5.14000001758, 0.0599999600649, 5.44000007719, 0.659999951869, 4.11000010237, 1.13999993265, 5.4000000596, 0.459999954104, 6.11000013664, 2.17999993905, 6.13000004336, 1.05999997497, 5.55000004321, 0.670000031143, 5.32000001773, 1.99999998435, 7.13000006199, 1.64999992847, 6.43000009775, 0.400000078231, 7.2700000751, 2.69000000343, 6.89000005931, 0.0200000341237, 7.1700000751, 0.470000052005, 5.53000007764, 1.44000003323, 5.42000013471, 1.17000001103, 5.37000006542, 0.410000106096, 6.94000011519, -0.599999915808, 6.50999999136, 0.690000027269, 7.49000008613, 0.690000005662, 4.82000011981, 2.45999997273, 6.57000007883, 0.750000045449, 6.40000014752, 1.71999995813, 5.12000008106, 0.989999966919, 5.40000006035, 1.64000000864, 5.13000002101, 2.28999999374, 5.59000008464, 1.7899999781, 5.99000010177, 0.560000091195, 6.25000010133, 2.55999998689, 6.34000002503, 0.659999961555, 5.68000005826, 0.790000028014, 4.69000009134, 1.30000000373, 5.63000012532, 1.05999999434, 4.09000008836, 0.300000087172, 6.58000010148, 0.0400000183284, 5.69000001088, 1.05000001639, 5.93000008136, 1.59999992698, 4.67000012502, 1.40000001788, 5.08000011936, 0.749999983609, 5.80000011027, 2.49999997094, 5.60000008568, 2.24999996871, 5.1200000155, 1.25000003353, 4.54000003994, 1.90000000894, 6.58000002697, 1.98999992967, 6.17000007212, 0.570000090003, 6.11000005916, 2.25999999583, 6.33000007838, 0.790000006407, 6.01000008747, 0.940000005662, 4.88000007167, 1.83999994308, 5.9100000897, 1.21999999911, 4.50000007972, 1.46000007331, 5.92000009596, 0.789999985546, 6.32999993905, 1.85999999285, 6.37000008255, 0.770000019968, 4.25000007972, 1.99999995306, 6.24000005856, 0.829999992698, 6.79000004813, 1.10000005886, 5.10000008419, 0.460000080019, 5.43000002027, 0.900000043213, 4.33000004187, 1.4400000526, 6.16000005022, 1.38999999523, 6.08000012457, 0.690000077933, 5.79000007421, 2.37000007659, 6.59000007048, -0.249999940395, 6.98000001952, -0.359999929518, 5.01000006959, 1.2800000985, 5.92000010863, 1.06000002638, 4.96000007704, -0.339999788851, 6.10000008345, -0.319999908954, 6.72999995172, 0.830000090301, 6.96000005767, 0.550000020117, 5.01000009567, 0.890000035465, 5.87000009522, 0.410000054687, 5.81000010833, 1.4699999842, 6.19999999776, 1.08000002995, 5.84999998584, 0.600000053644, 4.60000000149, 1.17000001624, 6.08000000685, 1.65999996305, 5.81000007555, 0.200000094622, 6.33000001431, 1.50000003204, 5.55000005662, 0.259999984652, 5.85000006258, 0.450000010431, 4.89000003174, 1.15999996305, 5.85000004843, 1.43999994904, 5.01000001222, 0.220000126511, 5.6900000295, 0.0300000225008, 5.68999998853, 1.11999995664, 6.18000005677, 0.639999973625, 5.22000008404, 1.62000000507, 5.53000004932, -0.0999999657273, 5.81000004351, 1.95999995932, 5.37000004977, 1.01999998793, 4.64000002801, 1.94999997765, 4.41000002265, 1.93999999747, 5.38000002325, 2.01999995142, 6.00000008643, 0.630000069439, 5.6900000295, 3.09999997988, 5.9900000459, 1.29999993816, 6.15999993026, 0.940000058562, 5.27000000954, 1.50000003874, 5.88000002548, 2.45999995261, 4.34000004143, 1.10000012368, 6.04999999851, 0.770000010282, 6.33999987751, 0.950000022352, 6.83999995202, 1.73999995947, 4.13000007913, 2.61999994174, 5.57000001922, 1.29999999851, 5.87000005499, 1.66999994099, 5.17000006765, 1.53999996468, 5.53000004932, 1.70000002831, 5.78000004783, 1.21000000849, 6.42000002369, 1.28999995276, 6.3900001137, 0.710000070333, 5.89000009432, 2.56999992236, 6.95000009388, 0.989999945313, 7.28999997586, 1.36000002116, 6.04000000939, 0.930000059754, 7.1100000383, 1.389999955, 5.07000002965, 0.940000087619, 6.70000009462, -0.549999935925, 7.13999992445, 1.22999993905, 7.13000002921, 0.810000001788, 5.35000008941, 1.84999995232, 6.1300000605, 0.490000030249, 6.08000009254,
+
+L3_cSYMM_A_nn
+0.600000023842, 0.20000000298, 0.300000011921, 0.899999976158, 0.800000011921, 0.40000000596, 0.20000000298, 0.899999976158, 0.300000011921, 0.5, 0.899999976158, 0.20000000298, 0.300000011921, 0.5, 0.699999988079, 0.899999976158, 0.699999988079, 0.40000000596, 0.20000000298, 0.300000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.800000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.20000000298, 0.10000000149, 0.300000011921, 0.20000000298, 0.800000011921, 0.20000000298, 0.300000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.5, 0.300000011921, 0.600000023842, 0.600000023842, 0.40000000596, 0.600000023842, 0.10000000149, 0.699999988079, 0.899999976158, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.10000000149, 0.10000000149, 0.20000000298, 0.600000023842, 0.800000011921, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.300000011921, 0.600000023842, 0.40000000596, 0.800000011921, 0.899999976158, 0.600000023842, 0.40000000596, 0.899999976158, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.5, 0.800000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.40000000596, 0.600000023842, 0.800000011921, 0.699999988079, 0.699999988079, 0.20000000298, 0.20000000298, 0.800000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.300000011921, 0.10000000149, 0.5, 0.40000000596, 0.40000000596, 0.5, 0.600000023842, 0.10000000149, 0.800000011921, 0.5, 0.699999988079, 0.20000000298, 0.899999976158, 0.600000023842, 0.600000023842, 0.600000023842, 0.10000000149, 0.600000023842, 0.300000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.40000000596, 0.300000011921, 0.40000000596, 0.699999988079, 0.600000023842, 0.20000000298, 0.899999976158, 0.10000000149, 0.899999976158, 0.600000023842, 0.600000023842, 0.300000011921, 0.899999976158, 0.5, 0.40000000596, 0.899999976158, 0.10000000149, 0.10000000149, 0.300000011921, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.5, 0.40000000596, 0.600000023842, 0.699999988079, 0.40000000596, 0.600000023842, 0.40000000596, 0.40000000596, 0.300000011921, 0.899999976158, 0.5, 0.600000023842, 0.5, 0.10000000149, 0.800000011921, 0.600000023842, 0.600000023842, 0.5, 0.600000023842, 0.699999988079, 0.5, 0.5, 0.10000000149, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.899999976158, 0.699999988079, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.899999976158, 0.20000000298, 0.10000000149, 0.699999988079, 0.600000023842, 0.800000011921, 0.600000023842, 0.40000000596, 0.899999976158, 0.5, 0.899999976158, 0.5, 0.600000023842, 0.899999976158, 0.899999976158, 0.800000011921, 0.5, 0.40000000596, 0.899999976158, 0.10000000149, 0.5, 0.800000011921, 0.800000011921, 0.699999988079, 0.300000011921, 0.300000011921, 0.10000000149, 0.899999976158, 0.5, 0.5, 0.40000000596, 0.300000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.5, 0.899999976158, 0.300000011921, 0.699999988079, 0.699999988079, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.5, 0.699999988079, 0.5, 0.40000000596, 0.10000000149, 0.800000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.699999988079, 0.600000023842, 0.5, 0.20000000298, 0.699999988079, 0.40000000596, 0.699999988079, 0.699999988079, 0.899999976158, 0.40000000596, 0.600000023842, 0.20000000298, 0.20000000298, 0.699999988079, 0.600000023842, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.300000011921, 0.699999988079, 0.800000011921, 0.40000000596, 0.699999988079, 0.800000011921, 0.5, 0.800000011921, 0.10000000149, 0.20000000298, 0.20000000298, 0.20000000298, 0.20000000298, 0.600000023842, 0.600000023842, 0.5, 0.699999988079, 0.600000023842, 0.800000011921, 0.10000000149, 0.5, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.10000000149, 0.800000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.600000023842, 0.600000023842, 0.5, 0.40000000596, 0.5, 0.699999988079, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.5, 0.699999988079, 0.40000000596, 0.699999988079, 0.699999988079, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.40000000596, 0.20000000298, 0.300000011921, 0.40000000596, 0.20000000298, 0.300000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.300000011921, 0.10000000149, 0.899999976158, 0.5, 0.600000023842, 0.899999976158, 0.10000000149, 0.5, 0.40000000596, 0.5, 0.800000011921, 0.5, 0.699999988079, 0.10000000149, 0.5, 0.40000000596, 0.600000023842, 0.800000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.600000023842, 0.5, 0.10000000149, 0.20000000298, 0.899999976158, 0.600000023842, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.600000023842, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.600000023842, 0.699999988079, 0.5, 0.5, 0.800000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.40000000596, 0.600000023842, 0.10000000149, 0.5, 0.600000023842, 0.20000000298, 0.899999976158, 0.5, 0.20000000298, 0.699999988079, 0.800000011921, 0.600000023842, 0.699999988079, 0.699999988079, 0.40000000596, 0.10000000149, 0.40000000596, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.20000000298, 0.20000000298, 0.699999988079, 0.800000011921, 0.800000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.699999988079, 0.300000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.699999988079, 0.300000011921, 0.899999976158, 0.600000023842, 0.40000000596, 0.20000000298, 0.5, 0.10000000149, 0.5, 0.5, 0.40000000596, 0.699999988079, 0.300000011921, 0.300000011921, 0.300000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.899999976158, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.699999988079, 0.699999988079, 0.699999988079, 0.699999988079, 0.300000011921, 0.800000011921, 0.40000000596, 0.40000000596, 0.10000000149, 0.10000000149, 0.600000023842, 0.699999988079, 0.300000011921, 0.600000023842, 0.40000000596, 0.40000000596, 0.899999976158, 0.10000000149, 0.5, 0.20000000298, 0.10000000149, 0.899999976158, 0.40000000596, 0.699999988079, 0.600000023842, 0.5, 0.5, 0.699999988079, 0.600000023842, 0.5, 0.20000000298, 0.699999988079, 0.699999988079, 0.300000011921, 0.699999988079, 0.699999988079, 0.10000000149, 0.300000011921, 0.800000011921, 0.800000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.800000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.800000011921, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.899999976158, 0.699999988079, 0.5, 0.5, 0.600000023842, 0.5, 0.699999988079, 0.600000023842, 0.800000011921, 0.300000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.600000023842, 0.300000011921, 0.800000011921, 0.800000011921, 0.800000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.5, 0.600000023842, 0.40000000596, 0.300000011921, 0.20000000298, 0.899999976158, 0.600000023842, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.5, 0.40000000596, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.899999976158, 0.600000023842, 0.699999988079, 0.699999988079, 0.699999988079, 0.699999988079, 0.40000000596, 0.40000000596, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.899999976158, 0.5, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.5, 0.699999988079, 0.600000023842, 0.899999976158, 0.600000023842, 0.5, 0.899999976158, 0.300000011921, 0.40000000596, 0.699999988079, 0.5, 0.300000011921, 0.300000011921, 0.40000000596, 0.899999976158, 0.40000000596, 0.40000000596, 0.10000000149, 0.300000011921, 0.899999976158, 0.10000000149, 0.10000000149, 0.40000000596, 0.800000011921, 0.600000023842, 0.40000000596, 0.5, 0.600000023842, 0.800000011921, 0.300000011921,
+
+L3_cSYMM_o_R
+-0.0399998991191, 8.4100000681, -0.220000080317, 8.34000016585, 0.219999972284, 7.86000014484, 0.640000045151, 7.70000011474, 1.36999993503, 7.85000014603, 0.120000038594, 9.56999997601, -0.189999983311, 8.35000012815, 0.329999922663, 8.25000012815, -0.0699999551475, 8.37000006989, 0.35999995634, 8.42000002891, 0.459999957085, 8.54000008985, 1.42000004381, 8.81000012621, -0.170000043064, 8.47000002593, -0.210000004768, 8.78000008807, 0.689999914765, 9.50000013486, 0.569999908954, 9.65000005439, 0.230000002384, 9.24000004962, 1.33000004113, 9.36000009269, 0.869999993891, 8.69000019491, 1.79999998659, 8.72000016525, 0.870000097454, 9.24000012785, 2.49999997541, 9.4500000976, 2.95999995857, 10.7900000906, 0.390000077188, 9.9300001514, 0.629999901801, 9.15000018254, 1.17000001103, 10.3400000668, 0.250000029802, 8.74000011966, 0.809999977201, 9.37000015855, 1.67000007734, 10.510000118, 1.15999996379, 9.16000012174, 0.760000045747, 9.92000008926, 2.28999999821, 9.99000020981, 2.42999992713, 9.54000011146, 1.9800000754, 8.79000019416, 1.23000003517, 9.48000002846, 0.73999991104, 9.2000001803, 1.58999996245, 7.95000014305, 1.80999995261, 9.34000012785, 1.80999988928, 8.77000014737, 2.01999988735, 10.2500000425, -0.309999997318, 9.34000008315, 0.669999870956, 8.71000016198, 1.02999991968, 9.0900000906, 0.96999991715, 8.21000009641, 0.0299999643862, 8.8200000684, 2.54999998361, 9.15000014901, 0.579999897331, 8.40000008568, 0.319999985695, 8.76000011727, 2.3699998568, 9.81000021264, 2.45999985278, 9.05000007525, 1.90999995708, 9.3200001429, 0.240000082403, 9.76000002041, 0.0299999405444, 9.66000016347, -0.269999998361, 8.73000011116, 0.270000067651, 10.1400001584, 0.729999991208, 10.5400000697, 0.670000032634, 10.5700000431, -1.02999992639, 10.1000000924, 0.71999991864, 9.95000013486, -0.80999990195, 9.55000009611, -0.589999996722, 8.91000010908, -0.43999996841, 10.4500001043, 0.430000068694, 11.190000104, 0.250000014901, 9.14000005707, 9.68575473159e-08, 9.9100000681, 0.749999973178, 9.6600001359, 0.929999947995, 9.76000001818, 0.960000100881, 9.44000012338, -0.539999867827, 8.21000012994, -1.40000005737, 8.92000013545, 0.0699999804795, 8.9800000903, 0.239999981821, 9.27000012502, 0.339999976605, 9.55000007674, 0.450000008196, 9.46000006065, -0.709999960065, 9.45000007749, -0.450000111014, 8.71000010759, -0.499999941885, 8.34000015095, -0.570000017732, 9.47000006095, -0.610000030845, 9.00000006929, 0.40000006184, 10.4300000538, -0.219999985695, 8.30000003278, -0.0199999752641, 8.27000006095, 0.529999931604, 9.49000018224, 0.259999931753, 9.77000001699, 0.570000057966, 9.29000013828, 2.61000008151, 10.8600000107, 2.5999998942, 11.1000000201, 2.53999997959, 9.77000005051, 1.90000007451, 11.4100000264, 3.31999993652, 11.0800000329, 3.41999991864, 12.4699999589, 1.01000002712, 11.7200000006, 2.60999989823, 10.6100000808, 1.79999996796, 10.9499999784, 1.18999998555, 11.5999999687, 2.48999992818, 10.7600000279, 3.07999999717, 11.590000072, 2.17999995619, 10.1799999912, 2.38999999002, 11.2699999835, 2.92999994352, 10.8500000902, 2.63999988869, 10.9599999779, 3.03000003517, 11.3199999909, 1.61000000253, 8.91000005618, 0.0899999631941, 8.60000019893, 1.10999996603, 8.08000016481, 1.11000004724, 8.75000015199, 1.88999994904, 9.56000015303, 2.72999992639, 10.0200000669, 0.360000033826, 10.3100001203, 0.439999902844, 9.62000010639, 0.400000021607, 8.64000008464, 1.60999999657, 9.46000002787, 0.559999934733, 9.63000010297, 1.68000002623, 9.460000083, 1.12999997333, 9.24000002578, 0.980000002384, 9.27000004455, 2.12999995545, 9.36000016049, 1.61999983892, 9.54000003546, 1.45000000596, 9.06000013739, 0.200000090897, 9.7199999924, 0.180000011325, 9.29000015095, 0.41000002712, 8.0500001289, 0.380000071675, 7.99000013158, 1.10000000447, 8.46000010908, 1.35999993697, 10.4300000151, -1.51999988586, 8.94000006378, 0.0299999517202, 8.89000006452, 0.689999990016, 8.84000006378, -0.869999991655, 9.35000002682, 0.399999953061, 9.3900000608, 0.140000091344, 8.9100000599, 0.989999949038, 7.31000012994, -0.139999960959, 8.05000006706, 1.31999991193, 9.58000013202, 1.2399999401, 8.8000000447, 0.99000003919, 9.26000008747, -0.55999983564, 9.29000004217, -0.480000039637, 9.71000008896, -0.340000010133, 8.1400001055, -0.699999948591, 9.20000007972, 0.399999959767, 8.6700001429, 0.28999996841, 9.58999999374, -0.579999957681, 9.25000007749, -0.250000045449, 9.56000007108, -0.0600000070035, 9.48000003591, -0.699999991059, 9.37000001773, 0.0299999405444, 8.81000008449, 0.550000039488, 9.69000005484, 1.5899998872, 7.83000001803, -0.199999982119, 8.94000001609, 0.759999878109, 9.78000006571, 1.37999988168, 9.50999997497, 0.140000092089, 9.0700000684, 1.37000004679, 10.2200000513, 1.07000000954, 10.4300001246, 1.16000001222, 9.6400001286, 0.0600000718236, 10.8600000905, 2.04999998584, 10.1600000979, 2.15999992132, 11.0500000179, -0.619999898523, 10.6600001098, 1.81999992982, 10.5600000808, 1.4200000006, 10.8000000149, 1.0399999848, 10.8100000398, 0.630000006855, 10.7000000246, 1.60000001341, 10.6000000924, 2.11999991789, 8.09000008464, 0.810000001043, 9.87000007883, 2.27999996737, 10.7900001219, 1.73999991626, 8.69000010028, 2.02000000954, 9.82000006989,
+
+L3_zSYMM_A_mm
+0.5, 0.1, 0.9, 0.9, 0.1, 0.8, 0.1, 0.8, 0.5, 0.9, 0.4, 0.1, 0.7, 0.2, 0.7, 0.5, 0.6, 0.9, 0.5, 0.6, 0.9, 0.9, 0.5, 0.3, 0.1, 0.3, 0.9, 0.6, 0.6, 0.3, 0.2, 0.5, 0.7, 0.3, 0.4, 0.6, 0.8, 0.5, 0.5, 0.3, 0.1, 0.8, 0.1, 0.3, 0.6, 0.7, 0.3, 0.2, 0.7, 0.4, 0.5, 0.5, 0.5, 0.2, 0.8, 0.4, 0.8, 0.1, 0.7, 0.9, 0.1, 0.8, 0.9, 0.6, 0.3, 0.2, 0.5, 0.1, 0.2, 0.9, 0.8, 0.5, 0.2, 0.4, 0.1, 0.2, 0.7, 0.3, 0.8, 0.8, 0.5, 0.9, 0.6, 0.3, 0.7, 0.4, 0.2, 0.9, 0.9, 0.2, 0.7, 0.4, 0.4, 0.4, 0.3, 0.5, 0.4, 0.5, 0.7, 0.8, 0.4, 0.1, 0.2, 0.5, 0.5, 0.5, 0.8, 0.5, 0.7, 0.4, 0.1, 0.5, 0.3, 0.9, 0.7, 0.9, 0.7, 0.6, 0.6, 0.4, 0.7, 0.2, 0.7, 0.3, 0.5, 0.2, 0.2, 0.4, 0.4, 0.4, 0.3, 0.9, 0.2, 0.4, 0.4, 0.8, 0.2, 0.3, 0.4, 0.4, 0.7, 0.5, 0.4, 0.6, 0.8, 0.4, 0.1, 0.2, 0.3, 0.5, 0.7, 0.9, 0.4, 0.8, 0.5, 0.3, 0.8, 0.7, 0.7, 0.8, 0.6, 0.9, 0.8, 0.5, 0.8, 0.1, 0.7, 0.3, 0.4, 0.5, 0.7, 0.6, 0.2, 0.3, 0.8, 0.7, 0.9, 0.7, 0.9, 0.1, 0.5, 0.6, 0.5, 0.3, 0.7, 0.9, 0.8, 0.8, 0.7, 0.8, 0.6, 0.4, 0.4, 0.4, 0.7, 0.8, 0.9, 0.1, 0.1, 0.1,
+
+L3_zSYMM_B_mn
+0.3, 0.5, 0.9, 0.9, 0.6, 0.9, 0.8, 0.2, 0.5, 0.4, 0.6, 0.4, 0.6, 0.1, 0.3, 0.1, 0.7, 0.2, 0.9, 0.7, 0.5, 0.8, 0.6, 0.6, 0.1, 0.3, 0.8, 0.2, 0.4, 0.2, 0.4, 0.2, 0.3, 0.9, 0.4, 0.6, 0.8, 0.7, 0.7, 0.2, 0.5, 0.7, 0.7, 0.7, 0.6, 0.3, 0.4, 0.6, 0.7, 0.3, 0.3, 0.5, 0.4, 0.2, 0.4, 0.5, 0.3, 0.6, 0.8, 0.2, 0.6, 0.8, 0.2, 0.5, 0.8, 0.3, 0.7, 0.5, 0.8, 0.2, 0.1, 0.9, 0.7, 0.3, 0.1, 0.9, 0.4, 0.6, 0.7, 0.6, 0.9, 0.2, 0.5, 0.1, 0.4, 0.6, 0.8, 0.9, 0.4, 0.2, 0.5, 0.9, 0.4, 0.2, 0.4, 0.4, 0.4, 0.3, 0.1, 0.4, 0.2, 0.6, 0.2, 0.8, 0.8, 0.5, 0.1, 0.5, 0.6, 0.2, 0.2, 0.7, 0.6, 0.2, 0.6, 0.3, 0.5, 0.1, 0.7, 0.7, 0.8, 0.9, 0.1, 0.1, 0.1, 0.2, 0.6, 0.5, 0.3, 0.4, 0.8, 0.1, 0.4, 0.4, 0.1, 0.2, 0.4, 0.7, 0.4, 0.5, 0.4, 0.1, 0.4, 0.1, 0.5, 0.4, 0.5, 0.1, 0.4, 0.8, 0.4, 0.4, 0.5, 0.3, 0.1, 0.8, 0.4, 0.4, 0.3, 0.8, 0.8, 0.1, 0.2, 0.2, 0.5, 0.6, 0.1, 0.1, 0.9, 0.9, 0.3, 0.2, 0.3, 0.7, 0.6, 0.8, 0.3, 0.6, 0.1, 0.3, 0.7, 0.2, 0.5, 0.2, 0.8, 0.1, 0.4, 0.7, 0.5, 0.7, 0.7, 0.5, 0.6, 0.7, 0.1, 0.8, 0.3, 0.5, 0.2, 0.9, 0.9, 0.2, 0.2, 0.5, 0.8, 0.8, 0.9, 0.3, 0.3, 0.2, 0.4, 0.3, 0.6, 0.4, 0.5, 0.8, 0.5, 0.9, 0.1, 0.1, 0.9, 0.6, 0.6, 0.9, 0.6, 0.6, 0.3, 0.1, 0.5, 0.5, 0.9, 0.7, 0.8, 0.1, 0.7, 0.7, 0.6, 0.3, 0.1, 0.5, 0.9, 0.9, 0.4, 0.2, 0.8, 0.3, 0.8, 0.1, 0.6, 0.1, 0.6, 0.6, 0.7, 0.5, 0.8, 0.4, 0.9, 0.6, 0.1, 0.7, 0.1, 0.4, 0.7, 0.1, 0.5, 0.6, 0.8, 0.8, 0.1, 0.4, 0.3, 0.6, 0.5, 0.9, 0.2, 0.2, 0.8, 0.8, 0.5, 0.1, 0.9, 0.6, 0.7, 0.9, 0.6, 0.8, 0.8, 0.3, 0.4, 0.4, 0.8, 0.7, 0.3, 0.1, 0.8, 0.4, 0.2, 0.9, 0.4, 0.8, 0.6, 0.5, 0.7, 0.5, 0.4, 0.2, 0.2, 0.5, 0.7, 0.8, 0.4, 0.7, 0.8, 0.9, 0.6, 0.3, 0.3, 0.2, 0.5, 0.6, 0.9, 0.6, 0.8, 0.6, 0.1, 0.2, 0.2, 0.5, 0.7, 0.8, 0.3, 0.9, 0.1, 0.2, 0.9, 0.4, 0.6, 0.4, 0.4, 0.1,
+
+L3_zSYMM_C_mn
+0.4, 0.2, 0.2, 0.3, 0.2, 0.4, 0.4, 0.4, 0.9, 0.1, 0.5, 0.1, 0.4, 0.5, 0.1, 0.3, 0.6, 0.3, 0.9, 0.2, 0.1, 0.7, 0.7, 0.8, 0.9, 0.9, 0.5, 0.2, 0.5, 0.4, 0.9, 0.3, 0.8, 0.3, 0.5, 0.2, 0.8, 0.3, 0.2, 0.2, 0.9, 0.3, 0.4, 0.1, 0.5, 0.2, 0.6, 0.5, 0.2, 0.6, 0.2, 0.4, 0.2, 0.2, 0.9, 0.1, 0.4, 0.4, 0.8, 0.1, 0.5, 0.8, 0.8, 0.4, 0.6, 0.3, 0.8, 0.6, 0.4, 0.2, 0.3, 0.9, 0.5, 0.3, 0.2, 0.5, 0.2, 0.6, 0.3, 0.8, 0.4, 0.9, 0.4, 0.8, 0.3, 0.9, 0.3, 0.7, 0.7, 0.3, 0.6, 0.6, 0.9, 0.8, 0.1, 0.4, 0.5, 0.4, 0.2, 0.9, 0.5, 0.7, 0.4, 0.7, 0.5, 0.5, 0.9, 0.4, 0.3, 0.8, 0.4, 0.2, 0.9, 0.2, 0.2, 0.4, 0.3, 0.3, 0.1, 0.6, 0.2, 0.2, 0.9, 0.9, 0.8, 0.5, 0.2, 0.5, 0.4, 0.3, 0.4, 0.8, 0.9, 0.6, 0.2, 0.3, 0.7, 0.5, 0.7, 0.4, 0.1, 0.1, 0.4, 0.6, 0.2, 0.5, 0.6, 0.8, 0.4, 0.6, 0.7, 0.5, 0.4, 0.3, 0.4, 0.4, 0.6, 0.6, 0.8, 0.2, 0.5, 0.1, 0.7, 0.9, 0.3, 0.1, 0.7, 0.7, 0.8, 0.5, 0.7, 0.9, 0.8, 0.4, 0.7, 0.9, 0.6, 0.1, 0.6, 0.4, 0.4, 0.8, 0.3, 0.9, 0.6, 0.9, 0.8, 0.7, 0.3, 0.2, 0.5, 0.3, 0.7, 0.2, 0.8, 0.1, 0.8, 0.6, 0.8, 0.5, 0.5, 0.4, 0.8, 0.4, 0.5, 0.8, 0.1, 0.7, 0.4, 0.6, 0.5, 0.9, 0.9, 0.6, 0.5, 0.6, 0.2, 0.7, 0.8, 0.5, 0.6, 0.7, 0.7, 0.5, 0.1, 0.7, 0.2, 0.6, 0.8, 0.4, 0.8, 0.2, 0.4, 0.2, 0.5, 0.9, 0.8, 0.9, 0.9, 0.9, 0.7, 0.4, 0.3, 0.8, 0.4, 0.3, 0.9, 0.3, 0.9, 0.5, 0.8, 0.7, 0.4, 0.1, 0.1, 0.7, 0.8, 0.2, 0.5, 0.9, 0.2, 0.5, 0.9, 0.1, 0.1, 0.6, 0.2, 0.6, 0.7, 0.8, 0.5, 0.1, 0.3, 0.3, 0.7, 0.5, 0.9, 0.9, 0.4, 0.2, 0.3, 0.4, 0.7, 0.2, 0.5, 0.1, 0.2, 0.4, 0.2, 0.1, 0.1, 0.5, 0.1, 0.9, 0.3, 0.8, 0.7, 0.3, 0.5, 0.6, 0.9, 0.4, 0.6, 0.7, 0.8, 0.4, 0.3, 0.7, 0.2, 0.2, 0.2, 0.7, 0.7, 0.6, 0.5, 0.9, 0.1, 0.2, 0.9, 0.8, 0.3, 0.7, 0.2, 0.9, 0.1, 0.7, 0.5, 0.6, 0.9, 0.2, 0.9, 0.4, 0.9, 0.7, 0.4, 0.6, 0.7, 0.8, 0.9, 0.8,
+
+L3_zSYMM_o_L
+-1.2, 5.58, -0.02, 6.56, 0.46, 5.56, 0.66, 5.35, 1.0, 5.55, 1.14, 5.42, -0.26, 6.72, 1.28, 5.31, 0.68, 5.78, -0.01, 6.38, -0.03, 5.0, -0.5, 5.81, 0.88, 6.15, 0.11, 5.13, 0.73, 6.07, 1.49, 4.67, 0.57, 5.33, 0.01, 5.51, 1.48, 6.52, 0.34, 5.31, 2.42, 4.76, 1.49, 5.14, 2.0, 5.21, 1.57, 6.13, 2.06, 4.58, 1.53, 5.84, 0.51, 7.06, 0.7, 4.22, 0.36, 5.07, 1.26, 4.58, 1.09, 5.68, 2.18, 5.04, 1.78, 4.53, 0.81, 4.85, 0.3, 4.83, -0.35, 6.73, 0.69, 4.92, 0.42, 5.12, 1.25, 4.93, 1.74, 5.3, 1.39, 6.44, 2.25, 5.02, 1.17, 6.19, 0.43, 6.64, 0.23, 4.1, -0.05, 5.65, 1.18, 5.03, 0.37, 4.76, 1.66, 5.39, 0.97, 4.82, 0.27, 4.71, -0.57, 5.11, -0.14, 6.3, 1.03, 5.32, 0.53, 5.84, 0.75, 5.04, 1.96, 4.54, 0.12, 5.23, 2.04, 4.29, 0.32, 5.96, -0.31, 5.06, 0.21, 4.63, 0.07, 5.45, -0.01, 5.25, 0.17, 4.82, 0.59, 5.55, 2.27, 4.63, -0.54, 4.4, -0.12, 5.23, 0.11, 7.45, 0.03, 5.06, 0.79, 6.28, 0.58, 5.6, 1.73, 5.73, 0.97, 6.39, 2.49, 5.02, 0.74, 6.33, -0.32, 7.21, 0.41, 4.79, 0.52, 5.97, 0.3, 4.6, 0.61, 5.67, 1.05, 5.88, 1.32, 4.99, 0.89, 5.14, -0.59, 6.22, 0.57, 6.78, 0.87, 5.72, 1.15, 4.66, 1.11, 5.65, 1.09, 5.72, 0.12, 6.56, 2.06, 5.37, 1.11, 6.38, -0.26, 6.87, -0.33, 4.17, 0.15, 4.92, 0.85, 4.9, -0.07, 5.36, 1.54, 5.8, 0.32, 4.79, 0.48, 4.91, -0.23, 4.39, -0.21, 6.17, 0.54, 4.51, 0.81, 5.07, 1.41, 4.57, 1.48, 4.51, 0.26, 4.88, 1.88, 4.21, 0.6, 5.15, 0.22, 5.44, -0.41, 4.28, -0.37, 4.77, 0.61, 3.84, 0.58, 3.84, 0.07, 4.39, 0.84, 4.35, 0.48, 4.76, -0.03, 6.12, 0.1, 7.3, 0.45, 6.7, 0.52, 5.77, 1.39, 5.68, 1.74, 6.05, 0.89, 6.37, 2.18, 4.88, 0.25, 6.67, 0.5, 6.73, 0.01, 5.7, -0.25, 6.53, -0.1, 5.08, -0.31, 5.77, 0.44, 6.21, 1.29, 5.97, -0.01, 5.17, 0.07, 5.71, 1.59, 7.99, 2.04, 6.86, 2.49, 6.05, 2.0, 6.15, 2.93, 5.56, 2.07, 5.94, 3.33, 4.98, 1.98, 6.25, 1.09, 7.77, 0.1, 5.56, 0.92, 6.8, 1.63, 5.53, 0.96, 6.25, 2.36, 5.99, 2.36, 5.42, 0.76, 5.43, -0.11, 6.26, -0.12, 6.93, 1.16, 5.82, 1.53, 5.35, 1.3, 6.19, 2.02, 5.65, 1.94, 6.85, 2.44, 4.76, 0.94, 6.91, 0.06, 8.26, 0.34, 4.75, 0.42, 5.14, 1.95, 5.54, 1.26, 6.03, 1.37, 6.18, 1.6, 4.71, 0.28, 5.75,
+
+L3_zSYMM_A_nn
+0.7, 0.2, 0.1, 0.2, 0.4, 0.9, 0.8, 0.1, 0.8, 0.3, 0.1, 0.7, 0.1, 0.5, 0.6, 0.3, 0.8, 0.8, 0.2, 0.2, 0.4, 0.5, 0.3, 0.4, 0.8, 0.2, 0.1, 0.2, 0.5, 0.4, 0.2, 0.8, 0.7, 0.8, 0.1, 0.2, 0.7, 0.9, 0.2, 0.2, 0.5, 0.9, 0.8, 0.3, 0.4, 0.4, 0.1, 0.3, 0.6, 0.8, 0.5, 0.5, 0.3, 0.7, 0.1, 0.8, 0.4, 0.3, 0.5, 0.3, 0.8, 0.4, 0.1, 0.1, 0.6, 0.7, 0.5, 0.8, 0.4, 0.9, 0.2, 0.2, 0.4, 0.7, 0.8, 0.1, 0.7, 0.6, 0.3, 0.8, 0.6, 0.8, 0.9, 0.8, 0.1, 0.9, 0.4, 0.2, 0.3, 0.3, 0.4, 0.9, 0.5, 0.7, 0.2, 0.2, 0.4, 0.8, 0.4, 0.1, 0.8, 0.1, 0.8, 0.1, 0.5, 0.9, 0.8, 0.1, 0.6, 0.3, 0.4, 0.6, 0.3, 0.2, 0.7, 0.3, 0.1, 0.2, 0.2, 0.8, 0.9, 0.9, 0.8, 0.1, 0.7, 0.6, 0.3, 0.7, 0.6, 0.1, 0.5, 0.3, 0.3, 0.5, 0.1, 0.4, 0.8, 0.3, 0.8, 0.3, 0.7, 0.6, 0.4, 0.6, 0.8, 0.9, 0.5, 0.2, 0.8, 0.8, 0.6, 0.9, 0.8, 0.7, 0.5, 0.6, 0.9, 0.3, 0.9, 0.1, 0.2, 0.2, 0.1, 0.2, 0.8, 0.8, 0.7, 0.5, 0.8, 0.9, 0.1, 0.7, 0.4, 0.4, 0.3, 0.8, 0.3, 0.2, 0.5, 0.2, 0.3, 0.5, 0.9, 0.2, 0.3, 0.4, 0.7, 0.4, 0.4, 0.5, 0.6, 0.3, 0.1, 0.2, 0.9, 0.4, 0.4, 0.7, 0.9, 0.4, 0.2, 0.4, 0.4, 0.4, 0.1, 0.5, 0.1, 0.3, 0.6, 0.8, 0.7, 0.3, 0.8, 0.8, 0.9, 0.2, 0.6, 0.4, 0.2, 0.8, 0.5, 0.9, 0.5, 0.4, 0.2, 0.3, 0.7, 0.4, 0.1, 0.3, 0.7, 0.6, 0.1, 0.6, 0.3, 0.4, 0.9, 0.8, 0.6, 0.3, 0.6, 0.8, 0.9, 0.8, 0.1, 0.2, 0.6, 0.9, 0.3, 0.4, 0.2, 0.8, 0.6, 0.7, 0.4, 0.8, 0.7, 0.7, 0.4, 0.1, 0.2, 0.5, 0.7, 0.9, 0.6, 0.4, 0.8, 0.9, 0.6, 0.1, 0.8, 0.8, 0.8, 0.8, 0.5, 0.5, 0.1, 0.9, 0.2, 0.8, 0.8, 0.7, 0.7, 0.4, 0.5, 0.9, 0.4, 0.8, 0.3, 0.9, 0.2, 0.2, 0.8, 0.9, 0.5, 0.6, 0.7, 0.4, 0.3, 0.4, 0.7, 0.6, 0.7, 0.8, 0.7, 0.4, 0.2, 0.2, 0.3, 0.7, 0.4, 0.2, 0.9, 0.9, 0.5, 0.6, 0.4, 0.5, 0.5, 0.4, 0.7, 0.7, 0.2, 0.2, 0.6, 0.6, 0.2, 0.8, 0.7, 0.8, 0.5, 0.5, 0.6, 0.6, 0.8, 0.3, 0.7, 0.8, 0.2, 0.3, 0.4, 0.5, 0.1, 0.8, 0.3, 0.3, 0.8, 0.1, 0.9, 0.3, 0.6, 0.3, 0.2, 0.3, 0.4, 0.1, 0.8, 0.9, 0.2, 0.8, 0.7, 0.1, 0.1, 0.4, 0.9, 0.9, 0.3, 0.9, 0.7, 0.1, 0.8, 0.7, 0.5, 0.4, 0.3, 0.4, 0.4, 0.3, 0.4, 0.9, 0.7, 0.6, 0.9, 0.1, 0.1, 0.2, 0.7, 0.4, 0.2, 0.5, 0.5, 0.6, 0.7, 0.8, 0.1, 0.4, 0.1, 0.3, 0.5, 0.1, 0.6, 0.4, 0.2, 0.8, 0.9, 0.8, 0.7, 0.2, 0.8, 0.2, 0.5, 0.3, 0.5, 0.7, 0.3, 0.7, 0.2, 0.2, 0.9, 0.4, 0.1, 0.3, 0.7, 0.9, 0.7, 0.4, 0.5, 0.5, 0.9, 0.9, 0.5, 0.1, 0.4, 0.3, 0.7, 0.9, 0.1, 0.5, 0.7, 0.6, 0.9, 0.5, 0.1, 0.2, 0.8, 0.4, 0.2, 0.2, 0.6, 0.1, 0.1, 0.2, 0.4, 0.7, 0.7, 0.6, 0.6, 0.4, 0.3, 0.4, 0.6, 0.6, 0.3, 0.9, 0.6, 0.4, 0.7, 0.9, 0.5, 0.6, 0.3, 0.4, 0.7, 0.4, 0.8, 0.4, 0.5, 0.4, 0.1, 0.1, 0.4, 0.8, 0.5, 0.3, 0.8, 0.8, 0.9, 0.4, 0.1, 0.6, 0.8, 0.9, 0.7, 0.6, 0.8, 0.3, 0.7, 0.1, 0.2, 0.8, 0.1, 0.5, 0.3, 0.4, 0.9, 0.5, 0.5, 0.1, 0.6, 0.6, 0.2, 0.8, 0.6, 0.7, 0.4, 0.1, 0.3, 0.5, 0.7, 0.5, 0.2, 0.4, 0.3, 0.4, 0.6, 0.1, 0.7, 0.8, 0.7, 0.8, 0.8, 0.7, 0.9, 0.8, 0.7, 0.6, 0.7, 0.4, 0.5, 0.1, 0.2, 0.8, 0.9, 0.4, 0.7, 0.8, 0.5, 0.8, 0.8, 0.1, 0.1, 0.4, 0.8, 0.9, 0.4, 0.4, 0.9, 0.8, 0.8, 0.8, 0.7, 0.4, 0.2, 0.3, 0.5, 0.4, 0.7, 0.2, 0.9, 0.5, 0.8, 0.4, 0.6, 0.6, 0.9, 0.4, 0.1, 0.9,
+
+L3_zSYMM_o_R
+0.46, 7.37, 0.17, 8.33, 0.51, 8.27, 2.15, 8.81, 3.18, 10.19, 1.17, 7.06, 1.23, 8.84, 0.2, 10.17, 0.25, 10.19, 1.6, 8.58, 0.84, 8.64, 1.81, 8.67, 2.27, 10.2, 1.62, 8.05, 1.81, 8.47, 1.86, 9.98, 2.2, 9.07, 1.35, 8.04, 1.03, 8.96, 0.42, 8.5, 1.9, 8.52, 1.97, 10.4, 1.28, 7.86, 0.74, 9.35, 0.69, 10.29, -0.28, 10.65, 0.22, 9.38, 2.0, 8.74, 1.6, 8.41, 2.16, 9.18, 1.77, 9.02, 1.56, 8.91, 1.29, 9.69, 1.94, 10.71, 0.15, 7.22, -1.62, 8.13, 0.11, 8.95, 0.39, 7.78, 1.17, 10.11, 0.67, 7.64, 0.09, 9.43, -0.37, 9.76, -0.66, 9.97, -0.82, 8.7, 0.07, 7.78, 0.23, 8.41, 1.41, 8.93, 0.05, 8.49, 0.88, 8.83, -0.54, 9.7, 1.31, 9.1, 0.74, 6.88, 0.48, 7.45, 0.49, 7.26, 0.52, 8.25, 1.51, 8.64, 1.7, 6.21, -0.34, 7.13, -0.07, 9.04, -0.47, 8.59, 0.86, 7.29, 0.83, 8.15, 1.19, 7.87, 0.97, 7.8, 1.43, 6.93, 1.21, 7.6, 0.72, 8.25, 0.98, 8.67, 1.39, 6.98, 0.09, 6.66, -0.4, 7.69, 0.3, 7.58, 0.79, 9.82, 1.35, 7.06, -0.02, 7.95, -0.01, 9.17, -0.07, 8.89, -0.02, 7.35, 1.37, 6.85, 0.9, 6.41, 1.38, 7.37, 0.97, 8.03, 0.34, 7.62, 0.89, 8.68, 0.67, 8.86, -0.22, 8.64, -0.39, 7.99, -0.46, 8.57, 0.39, 7.55, 1.34, 9.73, -0.27, 8.22, -0.67, 8.5, -1.16, 9.65, -0.72, 10.0, -0.36, 8.84, -0.19, 7.9, -0.29, 7.93, 1.2, 8.6, 0.56, 8.41, 0.8, 8.31, -0.13, 9.55, 1.42, 9.04, 1.18, 8.42, 0.3, 9.03, 0.15, 9.11, 2.11, 9.85, 3.4, 10.85, 1.63, 8.78, 0.74, 9.88, 1.79, 10.65, 0.79, 11.48, 1.02, 9.41, 0.9, 10.22, 1.36, 9.46, 2.41, 10.05, 1.33, 8.85, 2.14, 8.83, 1.15, 10.71, 2.49, 11.55, 1.92, 7.59, 0.66, 8.3, 0.81, 9.11, 1.5, 8.95, 2.38, 10.99, 2.39, 7.88, 1.13, 8.75, 0.75, 10.68, -0.49, 10.43, 1.4, 8.85, 1.69, 8.86, 1.01, 8.26, 1.27, 8.91, 1.05, 8.82, 1.87, 9.14, 1.7, 9.82, 1.45, 9.8, 0.46, 8.49, 1.06, 8.75, 0.04, 10.28, 1.75, 8.96, 2.29, 11.3, 0.46, 8.43, 0.78, 9.66, -0.31, 11.26, -0.57, 11.2, 0.84, 10.12, 0.2, 9.47, 0.78, 9.84, 1.66, 9.87, 0.56, 8.8, 1.74, 10.1, 1.08, 10.09, 2.08, 11.54, 0.9, 8.67, -0.44, 8.25, -0.59, 9.61, 0.67, 8.94, 2.14, 11.61, 0.62, 7.38, 0.45, 9.1, -0.57, 10.42, -1.46, 11.11, -0.16, 9.86, 1.07, 8.53, 0.82, 8.16, 0.99, 8.92, 1.29, 8.5, 0.71, 8.93, 0.7, 9.71, 1.74, 11.15,
+
+L3_cHEMM_A_mm
+0.899999976158, 0.0, 0.10000000149, 0.300000011921, 0.899999976158, 0.5, 0.800000011921, 0.800000011921, 0.40000000596, 0.600000023842, 0.10000000149, 0.699999988079, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.600000023842, 0.899999976158, 0.800000011921, 0.300000011921, 0.10000000149, -0.300000011921, 0.10000000149, 0.0, 0.5, 0.300000011921, 0.5, 0.800000011921, 0.899999976158, 0.5, 0.699999988079, 0.5, 0.5, 0.600000023842, 0.300000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.5, 0.600000023842, 0.899999976158, -0.5, 0.5, -0.300000011921, 0.5, 0.0, 0.800000011921, 0.20000000298, 0.5, 0.699999988079, 0.5, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.300000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.10000000149, 0.800000011921, -0.800000011921, 0.5, -0.800000011921, 0.800000011921, -0.20000000298, 0.899999976158, 0.0, 0.899999976158, 0.5, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.699999988079, 0.699999988079, 0.699999988079, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, -0.600000023842, 0.899999976158, -0.5, 0.5, -0.699999988079, 0.899999976158, -0.5, 0.899999976158, 0.0, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.5, 0.899999976158, 0.10000000149, -0.699999988079, 0.699999988079, -0.5, 0.5, -0.800000011921, 0.10000000149, -0.600000023842, 0.600000023842, -0.800000011921, 0.899999976158, 0.0, 0.699999988079, 0.600000023842, 0.40000000596, 0.600000023842, 0.600000023842, 0.20000000298, 0.600000023842, 0.20000000298, 0.899999976158, -0.10000000149, 0.5, -0.600000023842, 0.899999976158, -0.699999988079, 0.10000000149, -0.10000000149, 0.20000000298, -0.40000000596, 0.699999988079, -0.600000023842, 0.600000023842, 0.0, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.699999988079, 0.300000011921, -0.699999988079, 0.300000011921, -0.20000000298, 0.300000011921, -0.300000011921, 0.699999988079, -0.699999988079, 0.800000011921, -0.10000000149, 0.40000000596, -0.600000023842, 0.899999976158, -0.300000011921, 0.20000000298, 0.0, 0.899999976158, 0.600000023842, 0.800000011921, 0.20000000298, 0.600000023842, -0.899999976158, 0.800000011921, -0.800000011921, 0.40000000596, -0.699999988079, 0.699999988079, -0.40000000596, 0.40000000596, -0.20000000298, 0.600000023842, -0.20000000298, 0.10000000149, -0.20000000298, 0.899999976158, -0.600000023842, 0.10000000149, 0.0, 0.600000023842, 0.40000000596, 0.800000011921, -0.300000011921, 0.5, -0.600000023842, 0.899999976158, -0.10000000149, 0.10000000149, -0.600000023842, 0.5, -0.899999976158, 0.600000023842, -0.20000000298, 0.899999976158, -0.699999988079, 0.800000011921, -0.20000000298, 0.600000023842, -0.40000000596, 0.600000023842, 0.0,
+
+L3_cHEMM_B_mn
+0.10000000149, 0.600000023842, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.40000000596, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.5, 0.40000000596, 0.20000000298, 0.699999988079, 0.300000011921, 0.20000000298, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.5, 0.20000000298, 0.899999976158, 0.5, 0.800000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.600000023842, 0.10000000149, 0.300000011921, 0.20000000298, 0.800000011921, 0.20000000298, 0.699999988079, 0.899999976158, 0.20000000298, 0.300000011921, 0.5, 0.40000000596, 0.600000023842, 0.20000000298, 0.600000023842, 0.600000023842, 0.300000011921, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.20000000298, 0.40000000596, 0.300000011921, 0.40000000596, 0.600000023842, 0.699999988079, 0.699999988079, 0.40000000596, 0.600000023842, 0.40000000596, 0.300000011921, 0.5, 0.5, 0.800000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.899999976158, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.300000011921, 0.40000000596, 0.5, 0.699999988079, 0.10000000149, 0.5, 0.5, 0.899999976158, 0.899999976158, 0.20000000298, 0.5, 0.20000000298, 0.699999988079, 0.20000000298, 0.20000000298, 0.20000000298, 0.699999988079, 0.10000000149, 0.899999976158, 0.699999988079, 0.40000000596, 0.5, 0.5, 0.800000011921, 0.800000011921, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.600000023842, 0.40000000596, 0.699999988079, 0.40000000596, 0.40000000596, 0.10000000149, 0.600000023842, 0.800000011921, 0.800000011921, 0.5, 0.40000000596, 0.300000011921, 0.600000023842, 0.699999988079, 0.800000011921, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.40000000596, 0.20000000298, 0.800000011921, 0.600000023842, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.699999988079, 0.699999988079, 0.10000000149, 0.5, 0.300000011921, 0.5, 0.40000000596, 0.40000000596, 0.20000000298, 0.899999976158, 0.699999988079, 0.5, 0.899999976158, 0.699999988079, 0.899999976158, 0.20000000298, 0.20000000298, 0.600000023842, 0.300000011921, 0.699999988079, 0.40000000596, 0.600000023842, 0.40000000596, 0.600000023842, 0.899999976158, 0.600000023842, 0.699999988079, 0.699999988079, 0.899999976158, 0.20000000298, 0.40000000596, 0.800000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.5, 0.899999976158, 0.600000023842, 0.10000000149, 0.5, 0.5, 0.20000000298, 0.10000000149, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.10000000149, 0.600000023842, 0.600000023842, 0.600000023842, 0.20000000298, 0.600000023842, 0.10000000149, 0.600000023842, 0.20000000298, 0.300000011921, 0.40000000596, 0.800000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.5, 0.800000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.699999988079, 0.899999976158, 0.699999988079, 0.20000000298, 0.40000000596, 0.899999976158, 0.40000000596, 0.600000023842, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.699999988079, 0.300000011921, 0.40000000596, 0.40000000596, 0.5, 0.10000000149, 0.40000000596, 0.899999976158, 0.699999988079, 0.699999988079, 0.40000000596, 0.800000011921, 0.5, 0.800000011921, 0.800000011921, 0.800000011921, 0.40000000596, 0.300000011921, 0.5, 0.10000000149, 0.899999976158, 0.600000023842, 0.40000000596, 0.800000011921, 0.800000011921, 0.600000023842, 0.300000011921, 0.40000000596, 0.40000000596, 0.699999988079, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.899999976158, 0.800000011921, 0.40000000596, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.899999976158, 0.300000011921, 0.800000011921, 0.20000000298, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.899999976158, 0.300000011921, 0.600000023842, 0.600000023842, 0.300000011921, 0.800000011921, 0.899999976158, 0.10000000149, 0.20000000298, 0.899999976158, 0.10000000149, 0.800000011921, 0.300000011921, 0.300000011921, 0.5, 0.899999976158, 0.600000023842, 0.5, 0.20000000298, 0.5, 0.300000011921, 0.600000023842, 0.40000000596, 0.20000000298, 0.800000011921, 0.5, 0.5, 0.600000023842, 0.699999988079, 0.10000000149, 0.10000000149, 0.600000023842, 0.300000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.20000000298, 0.699999988079, 0.40000000596, 0.800000011921, 0.600000023842, 0.10000000149, 0.10000000149, 0.300000011921, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.699999988079, 0.600000023842, 0.5, 0.699999988079, 0.699999988079, 0.20000000298, 0.5, 0.800000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.10000000149, 0.5, 0.699999988079, 0.40000000596, 0.699999988079, 0.5, 0.10000000149, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.40000000596,
+
+L3_cHEMM_C_mn
+0.899999976158, 0.699999988079, 0.10000000149, 0.10000000149, 0.40000000596, 0.10000000149, 0.5, 0.20000000298, 0.300000011921, 0.699999988079, 0.300000011921, 0.600000023842, 0.20000000298, 0.300000011921, 0.800000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.800000011921, 0.899999976158, 0.40000000596, 0.40000000596, 0.899999976158, 0.600000023842, 0.699999988079, 0.600000023842, 0.300000011921, 0.600000023842, 0.5, 0.800000011921, 0.20000000298, 0.5, 0.800000011921, 0.20000000298, 0.600000023842, 0.20000000298, 0.40000000596, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.20000000298, 0.899999976158, 0.800000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.5, 0.10000000149, 0.40000000596, 0.40000000596, 0.10000000149, 0.20000000298, 0.10000000149, 0.20000000298, 0.600000023842, 0.40000000596, 0.10000000149, 0.600000023842, 0.699999988079, 0.40000000596, 0.20000000298, 0.699999988079, 0.300000011921, 0.699999988079, 0.20000000298, 0.600000023842, 0.800000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.40000000596, 0.699999988079, 0.40000000596, 0.10000000149, 0.300000011921, 0.5, 0.10000000149, 0.800000011921, 0.600000023842, 0.5, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.40000000596, 0.5, 0.699999988079, 0.699999988079, 0.600000023842, 0.20000000298, 0.40000000596, 0.600000023842, 0.10000000149, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.300000011921, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.5, 0.40000000596, 0.40000000596, 0.899999976158, 0.300000011921, 0.699999988079, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.300000011921, 0.600000023842, 0.40000000596, 0.5, 0.40000000596, 0.600000023842, 0.600000023842, 0.600000023842, 0.800000011921, 0.5, 0.10000000149, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.40000000596, 0.40000000596, 0.699999988079, 0.10000000149, 0.600000023842, 0.899999976158, 0.20000000298, 0.40000000596, 0.20000000298, 0.5, 0.699999988079, 0.10000000149, 0.300000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.600000023842, 0.300000011921, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.699999988079, 0.40000000596, 0.600000023842, 0.20000000298, 0.300000011921, 0.5, 0.40000000596, 0.899999976158, 0.899999976158, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.20000000298, 0.600000023842, 0.600000023842, 0.10000000149, 0.40000000596, 0.800000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.40000000596, 0.899999976158, 0.600000023842, 0.5, 0.5, 0.800000011921, 0.10000000149, 0.20000000298, 0.600000023842, 0.600000023842, 0.300000011921, 0.40000000596, 0.300000011921, 0.300000011921, 0.800000011921, 0.40000000596, 0.5, 0.699999988079, 0.699999988079, 0.300000011921, 0.20000000298, 0.699999988079, 0.5, 0.40000000596, 0.899999976158, 0.40000000596, 0.600000023842, 0.300000011921, 0.300000011921, 0.800000011921, 0.300000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.5, 0.800000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.300000011921, 0.600000023842, 0.300000011921, 0.5, 0.20000000298, 0.5, 0.699999988079, 0.20000000298, 0.5, 0.699999988079, 0.40000000596, 0.5, 0.600000023842, 0.40000000596, 0.899999976158, 0.5, 0.10000000149, 0.20000000298, 0.699999988079, 0.10000000149, 0.800000011921, 0.5, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.899999976158, 0.5, 0.40000000596, 0.40000000596, 0.20000000298, 0.40000000596, 0.800000011921, 0.40000000596, 0.40000000596, 0.10000000149, 0.10000000149, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.40000000596, 0.40000000596, 0.20000000298, 0.20000000298, 0.899999976158, 0.699999988079, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.300000011921, 0.5, 0.600000023842, 0.600000023842, 0.699999988079, 0.5, 0.600000023842, 0.5, 0.699999988079, 0.800000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.40000000596, 0.300000011921, 0.899999976158, 0.600000023842, 0.600000023842, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.699999988079, 0.40000000596, 0.300000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.899999976158, 0.300000011921, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.20000000298, 0.600000023842, 0.800000011921, 0.800000011921, 0.5, 0.40000000596, 0.10000000149, 0.899999976158, 0.5, 0.800000011921, 0.699999988079, 0.10000000149, 0.899999976158, 0.300000011921, 0.899999976158, 0.20000000298, 0.40000000596, 0.40000000596, 0.600000023842, 0.20000000298, 0.699999988079, 0.300000011921, 0.800000011921, 0.800000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.600000023842, 0.800000011921,
+
+L3_cHEMM_o_L
+0.810000040531, 6.09999996275, 0.250000034273, 5.95000008792, 0.709999999553, 4.55000007302, 2.31999995738, 6.36000000402, -0.270000039339, 5.04000004515, 0.549999988824, 6.08000008658, 1.16999995962, 6.49000004366, 2.49999995008, 5.89000007123, 0.709999946654, 5.15000005662, 0.670000044554, 6.18000009626, 2.7399999319, 5.1500000678, -0.110000011474, 7.26999997973, 0.590000088364, 6.19000003919, 0.759999970496, 5.20000003651, 1.08999998182, 6.70000004396, 0.720000041574, 5.49000006899, 1.24000000566, 5.64000005782, 0.420000027418, 5.06000004053, 1.03999993637, 5.47000009447, 1.05999996454, 4.07000007063, 1.94999989495, 5.42000007212, -0.200000055134, 4.76000005618, 1.40999998093, 4.70000008643, 1.2699999842, 5.56000006735, 1.49999996051, 4.46000009194, 0.319999896288, 4.96000006884, 0.239999976605, 5.27000003636, 1.66999991119, 4.19000007942, 0.679999976307, 5.5900000824, 0.8400000377, 5.49000003323, 0.759999933243, 4.78000003964, 1.27999989212, 5.70000004023, 0.0199999894202, 5.41000009641, 1.38999994904, 4.17000010118, 2.17000008106, 5.45999995336, 1.76999998048, 5.11000005096, 2.04000003844, 4.39000002354, 3.71999996632, 4.83999996915, 1.0899999781, 4.56000006214, 2.06000001818, 5.18000005528, 2.53000004336, 5.41000000477, 2.87999997854, 4.15000004694, 0.799999980628, 5.05999999806, 1.12000006914, 5.61999999613, 3.66999995068, 4.76999997154, 1.91999998197, 5.6199999924, 2.10000006706, 5.5299999927, 1.57999994501, 5.27999997929, 2.55999999806, 6.04999999776, 1.55999998391, 5.14000003025, 3.08999999374, 4.38000000536, 2.26000003755, 5.01999991938, 2.08999996468, 4.04000003546, 2.9799999994, 4.26999996334, 4.50999993324, 4.84999997467, 1.04999998882, 3.300000038, 2.88999998182, 4.50000001416, 3.08999997735, 4.13000006199, 3.11999997303, 3.09000002578, 1.2599999474, 3.99000001088, 1.6900000377, 4.18000000983, 3.90999998912, 3.35999997571, 1.96999997601, 5.16999997973, 1.93000009179, 4.65999995485, 2.45999997124, 4.03000000089, 3.48999998853, 4.87000004679, 0.750000026822, 4.43000003815, 3.8199999693, 3.05000006631, 3.42000002369, 3.95999991387, 3.56999998793, 4.40000001192, 3.56000003085, 3.06000001594, 5.9099999243, 3.45000002012, 1.59000001684, 3.51000006586, 4.26000003457, 4.49999997616, 4.03000006869, 3.34000004143, 4.28000003144, 2.87000003934, 1.58999996766, 4.16000003904, 1.94000005335, 4.25000000969, 4.72999998376, 3.26999995142, 3.55000000075, 4.77000004157, 2.99000011519, 4.15999995634, 3.4499999769, 3.72999999344, 4.60999999434, 4.71000000104, 1.64000009283, 3.99000001833, 4.3900000146, 3.58999998033, 4.11000002787, 2.94000002131, 4.37000007361, 2.10000008643, 4.07000007212, 1.73000006497, 4.73000002921, 1.70000007153, 3.1300000374, 2.56000009567, 5.38000002697, 2.57000006989, 4.0000000827, 2.08000005081, 4.13000004485, 1.29000004366, 2.39000003919, 2.32000010416, 3.32000003189, 2.7800000307, 3.68000002176, 0.720000013262, 4.71000002488, 3.02000007287, 4.46000006586, 2.38999996096, 4.10999995857, 2.76999999762, 4.9700000453, 2.15000008121, 2.95000003576, 3.63000009328, 4.72000000507, 1.79999997467, 3.38000002772, 3.66999994099, 4.02000002891, 2.7799999465, 4.48000002623, 1.47999999046, 4.54999996722, 2.0899999781, 2.60000007078, 3.34999996647, 4.26999996781, 3.13999991179, 4.30000002161, 1.88999996394, 4.43999994829, 1.30999995336, 2.44000002429, 2.87000000209, 3.36000003606, 3.14999996349, 3.69999998584, 1.98999993488, 4.57999997109, 3.34999989271, 4.06000002712, 3.51999983743, 4.00000000671, 3.38999996915, 5.34000003844, 2.46000004426, 3.15000002906, 3.67999996662, 4.0800000076, 1.90999997124, 4.51999999315, 2.67999998599, 4.97000006616, 2.35000004172, 3.45000007302, 2.12999997705, 5.51999994397, 1.62000004306, 3.81000002339, 2.16000006959, 4.09000003621, 2.2400000228, 4.16000003755, 2.44000000268, 4.3400000228, 1.15000000224, 3.58000001803, 2.77000002295, 3.83000005081, 2.76999998942, 4.80000002384, 0.939999988526, 5.28000005156, 3.04000005484, 4.73000007391, 1.88000002548, 4.53999997735, 2.54000000715, 5.40000001416, 2.87000003785, 3.4200000371, 3.37000002369, 4.21000007257, 1.16000003904, 4.56000002488, 2.62999998301, 5.28000009179, 1.5499999851, 4.66000009194, 0.760000050962, 5.65000002533, 0.920000034124, 4.16000009269, 2.61000004575, 4.63000006646, 1.85999997497, 5.4700000751, 0.690000024289, 5.21000007257, -0.379999933839, 3.45000006184, 1.92000004157, 4.86000008896, 1.9300000374, 5.31000008747, 0.709999973476, 5.74000003099, 2.74000004143, 5.12000009224, 2.27999996811, 4.89000004664, 1.9200000304, 6.06000008523, 1.76000004947, 3.45000008047, 2.43999995276, 5.19000006527, 1.35000006407, 4.9300000523, 2.19999996722, 5.91000009939, 1.16000005469, 5.53000010967, 0.620000037104, 6.3400000973, 0.510000071079, 4.77000011459, 2.35000003576, 5.30000010356, 1.21999996856, 7.00000005588, 1.40999995336, 6.56000004798, 0.799999994785, 4.83000004187, 2.43000004709, 5.58000010669, 2.59000000715, 5.36000004649, 0.379999990463, 6.12000006914, 2.8700000073, 5.35000007823, 2.17999993682, 5.0200000371, 2.45000005364, 7.13000012159, 2.24000008538, 4.87000009, 2.72000000954, 5.17000010639, 1.83000003964,
+
+L3_cHEMM_A_nn
+0.800000011921, 0.0, 0.300000011921, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.800000011921, 0.899999976158, 0.10000000149, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.40000000596, 0.300000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.300000011921, -0.20000000298, 0.40000000596, 0.0, 0.10000000149, 0.699999988079, 0.600000023842, 0.5, 0.10000000149, 0.699999988079, 0.699999988079, 0.699999988079, 0.800000011921, 0.300000011921, 0.600000023842, 0.5, 0.5, 0.10000000149, 0.600000023842, 0.20000000298, 0.10000000149, 0.300000011921, 0.10000000149, 0.300000011921, 0.20000000298, 0.899999976158, 0.899999976158, 0.800000011921, 0.10000000149, 0.899999976158, 0.899999976158, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, -0.300000011921, 0.10000000149, -0.699999988079, 0.10000000149, 0.0, 0.20000000298, 0.800000011921, 0.20000000298, 0.5, 0.600000023842, 0.899999976158, 0.5, 0.40000000596, 0.300000011921, 0.5, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.300000011921, 0.20000000298, 0.699999988079, 0.300000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.20000000298, 0.40000000596, 0.40000000596, 0.10000000149, -0.10000000149, 0.600000023842, -0.5, 0.20000000298, -0.800000011921, 0.40000000596, 0.0, 0.600000023842, 0.899999976158, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.899999976158, 0.600000023842, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.300000011921, 0.5, 0.800000011921, 0.20000000298, 0.5, 0.300000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.899999976158, 0.20000000298, -0.800000011921, 0.10000000149, -0.699999988079, 0.20000000298, -0.5, 0.600000023842, -0.899999976158, 0.899999976158, 0.0, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.300000011921, 0.899999976158, 0.5, 0.899999976158, 0.10000000149, 0.10000000149, 0.600000023842, 0.40000000596, 0.40000000596, 0.300000011921, 0.800000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.600000023842, 0.600000023842, 0.899999976158, -0.10000000149, 0.699999988079, -0.699999988079, 0.600000023842, -0.899999976158, 0.10000000149, -0.40000000596, 0.800000011921, -0.300000011921, 0.20000000298, 0.0, 0.10000000149, 0.40000000596, 0.899999976158, 0.899999976158, 0.600000023842, 0.10000000149, 0.899999976158, 0.800000011921, 0.699999988079, 0.699999988079, 0.10000000149, 0.5, 0.600000023842, 0.699999988079, 0.20000000298, 0.300000011921, 0.800000011921, 0.699999988079, 0.899999976158, 0.300000011921, 0.10000000149, 0.600000023842, 0.600000023842, -0.40000000596, 0.800000011921, -0.300000011921, 0.5, -0.40000000596, 0.699999988079, -0.40000000596, 0.40000000596, -0.600000023842, 0.10000000149, -0.40000000596, 0.300000011921, 0.0, 0.5, 0.899999976158, 0.300000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.699999988079, 0.899999976158, 0.600000023842, 0.699999988079, 0.800000011921, 0.300000011921, 0.800000011921, 0.300000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.5, 0.600000023842, -0.699999988079, 0.600000023842, -0.5, 0.300000011921, -0.5, 0.899999976158, -0.600000023842, 0.20000000298, -0.600000023842, 0.899999976158, -0.899999976158, 0.5, -0.899999976158, 0.10000000149, 0.0, 0.600000023842, 0.10000000149, 0.899999976158, 0.600000023842, 0.600000023842, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.800000011921, 0.5, 0.40000000596, 0.20000000298, 0.300000011921, 0.600000023842, 0.699999988079, 0.800000011921, 0.40000000596, 0.20000000298, -0.10000000149, 0.5, -0.10000000149, 0.40000000596, -0.300000011921, 0.5, -0.10000000149, 0.20000000298, -0.600000023842, 0.600000023842, -0.10000000149, 0.300000011921, -0.899999976158, 0.600000023842, -0.10000000149, 0.5, 0.0, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.600000023842, 0.10000000149, 0.300000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.40000000596, 0.899999976158, 0.699999988079, 0.699999988079, -0.899999976158, 0.600000023842, -0.20000000298, 0.20000000298, -0.699999988079, 0.800000011921, -0.699999988079, 0.300000011921, -0.899999976158, 0.899999976158, -0.800000011921, 0.300000011921, -0.10000000149, 0.899999976158, -0.600000023842, 0.899999976158, -0.40000000596, 0.10000000149, 0.0, 0.40000000596, 0.40000000596, 0.5, 0.20000000298, 0.10000000149, 0.800000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.5, 0.800000011921, 0.40000000596, 0.300000011921, 0.800000011921, 0.40000000596, -0.300000011921, 0.10000000149, -0.300000011921, 0.800000011921, -0.899999976158, 0.300000011921, -0.5, 0.5, -0.899999976158, 0.699999988079, -0.699999988079, 0.899999976158, -0.10000000149, 0.600000023842, -0.699999988079, 0.10000000149, -0.800000011921, 0.40000000596, -0.40000000596, 0.5, 0.0, 0.600000023842, 0.300000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.300000011921, 0.40000000596, 0.699999988079, 0.10000000149, 0.10000000149, 0.5, 0.10000000149, 0.899999976158, -0.800000011921, 0.10000000149, -0.300000011921, 0.800000011921, -0.899999976158, 0.800000011921, -0.20000000298, 0.10000000149, -0.10000000149, 0.10000000149, -0.5, 0.699999988079, -0.899999976158, 0.699999988079, -0.5, 0.800000011921, -0.600000023842, 0.5, -0.20000000298, 0.600000023842, -0.300000011921, 0.300000011921, 0.0, 0.300000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.600000023842, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.300000011921, 0.800000011921, -0.800000011921, 0.20000000298, -0.899999976158, 0.300000011921, -0.20000000298, 0.5, -0.300000011921, 0.600000023842, -0.40000000596, 0.600000023842, -0.699999988079, 0.600000023842, -0.699999988079, 0.40000000596, -0.800000011921, 0.10000000149, -0.600000023842, 0.10000000149, -0.800000011921, 0.899999976158, -0.699999988079, 0.300000011921, -0.600000023842, 0.699999988079, 0.0, 0.800000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.899999976158, 0.899999976158, 0.300000011921, 0.20000000298, 0.20000000298, -0.800000011921, 0.899999976158, -0.800000011921, 0.699999988079, -0.300000011921, 0.699999988079, -0.800000011921, 0.40000000596, -0.300000011921, 0.20000000298, -0.300000011921, 0.800000011921, -0.300000011921, 0.5, -0.40000000596, 0.10000000149, -0.300000011921, 0.699999988079, -0.899999976158, 0.600000023842, -0.300000011921, 0.20000000298, -0.20000000298, 0.800000011921, -0.899999976158, 0.20000000298, 0.0, 0.800000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.899999976158, 0.10000000149, 0.600000023842, -0.40000000596, 0.10000000149, -0.899999976158, 0.10000000149, -0.699999988079, 0.20000000298, -0.800000011921, 0.800000011921, -0.699999988079, 0.800000011921, -0.699999988079, 0.800000011921, -0.300000011921, 0.20000000298, -0.300000011921, 0.600000023842, -0.800000011921, 0.10000000149, -0.5, 0.40000000596, -0.699999988079, 0.600000023842, -0.10000000149, 0.10000000149, -0.899999976158, 0.800000011921, -0.899999976158, 0.20000000298, 0.0, 0.899999976158, 0.899999976158, 0.40000000596, 0.10000000149, 0.300000011921, -0.40000000596, 0.899999976158, -0.800000011921, 0.899999976158, -0.20000000298, 0.699999988079, -0.5, 0.20000000298, -0.699999988079, 0.899999976158, -0.300000011921, 0.899999976158, -0.899999976158, 0.600000023842, -0.699999988079, 0.800000011921, -0.40000000596, 0.800000011921, -0.40000000596, 0.10000000149, -0.10000000149, 0.300000011921, -0.800000011921, 0.899999976158, -0.899999976158, 0.600000023842, -0.699999988079, 0.899999976158, -0.899999976158, 0.20000000298, 0.0, 0.699999988079, 0.5, 0.600000023842, -0.5, 0.300000011921, -0.600000023842, 0.40000000596, -0.40000000596, 0.899999976158, -0.899999976158, 0.600000023842, -0.600000023842, 0.10000000149, -0.600000023842, 0.10000000149, -0.5, 0.800000011921, -0.40000000596, 0.899999976158, -0.699999988079, 0.300000011921, -0.800000011921, 0.5, -0.10000000149, 0.899999976158, -0.300000011921, 0.300000011921, -0.20000000298, 0.899999976158, -0.10000000149, 0.40000000596, -0.10000000149, 0.699999988079, -0.5, 0.10000000149, 0.0,
+
+L3_cHEMM_o_R
+8.16000009716, 2.23000002474, 6.58000012308, -0.0399999415874, 5.98000001654, 1.53000003666, 6.95000007898, 2.47000003114, 4.79000011072, 2.96000006661, 6.45000009164, 3.30000010133, 5.32000002295, 4.01000013515, 4.62000009969, 5.73000003964, 6.0500001058, 3.81000004202, 4.17000000879, 5.63000000983, 4.00000003129, 6.59000005409, 2.91000007853, 6.57000005648, 1.92000000954, 6.70000012368, 2.22000002667, 6.7800001432, -0.579999906272, 7.20000009686, 1.2700000371, 8.41000002339, 0.819999984205, 7.68000009403, 8.58000017375, 1.49000003099, 7.55000014305, -0.0799999934435, 7.45000011623, 1.11999999538, 8.17000002444, 2.1499999769, 5.61000014484, 2.93999996543, 6.87000005648, 2.45000000969, 6.26000002638, 3.45000011772, 4.80000006855, 4.75000001788, 5.86000006586, 2.73000001058, 3.80000003353, 4.08000007018, 3.01000006065, 5.76000006288, 2.82000009298, 6.84000003397, 1.74000004068, 7.62000013843, 3.4499999173, 7.89000012189, -0.429999930114, 8.39000011444, 1.83999998257, 10.0000000082, 0.629999977797, 7.90000017136, 9.29000016063, 1.63999997288, 8.1000000596, -0.149999992549, 7.94999998137, 0.55000006482, 7.74000003025, 0.960000045747, 4.37000020102, 1.67000006989, 5.49000007644, 2.12000006542, 6.350000038, 2.62000017866, 4.52000014365, 5.37000001773, 5.87000014737, 2.69999999925, 4.20000010654, 5.01999998495, 3.91000006959, 5.84000003323, 4.16000012845, 6.13000001281, 2.96000005692, 7.04000013307, 2.38000004709, 6.92000014737, 1.09000012338, 8.02000008181, 2.31999996707, 10.109999963, 1.63999993414, 8.19000004441, 7.48000019833, 1.79000004143, 8.25000014901, 0.720000013262, 7.65000011399, 1.88999999598, 7.23000006422, 2.01000001818, 4.83000016704, 2.42000005648, 6.10000002906, 2.42000004753, 5.7900000079, 4.3600001359, 3.87000008553, 5.84000008762, 4.56000014707, 3.8700000602, 3.9000000827, 5.77000009596, 3.21000004426, 6.54000011891, 1.96000003457, 6.91000007555, 2.17999994054, 8.07000016823, 2.40999993548, 7.91000016719, -0.149999965727, 9.14000010923, 0.300000002235, 9.97000004753, 1.26999994099, 8.310000083, 9.87000009373, 2.15999999806, 8.64000004888, 0.390000077188, 7.05000005364, 0.760000094175, 8.46000005767, 3.17000008255, 6.11000015453, 1.96000004947, 7.84000000268, 4.75999996454, 7.789999955, 3.95000014752, 5.51000006139, 5.71000002712, 5.5700000155, 3.53000008807, 3.33999999076, 5.67999997258, 3.40000003055, 7.72999998376, 3.52000000283, 7.68000002697, 1.0199999395, 7.70000011176, 2.84999993667, 8.4300001052, -0.349999934435, 10.5200000215, 1.41999987617, 11.2999999575, 1.14999987483, 9.57000004977, 9.72000012353, 0.369999974519, 7.84000012338, -1.35000000522, 6.25000007823, 0.250000026077, 8.04000005782, 1.86000006661, 7.09000005856, 0.940000006407, 7.89000002205, 2.64000003844, 6.99000001162, 3.27000014439, 6.94000007123, 4.23000005901, 6.89000008091, 3.03000009552, 5.1800000754, 3.77000015035, 4.64000003621, 5.44000014573, 4.55000007302, 5.45000011995, 2.59000002578, 6.28000019833, 4.05000001565, 7.45000009984, 0.0600001947582, 7.19000013605, 2.54000002056, 9.90999999061, 1.00000003204, 8.40000014827, 8.81000017762, 0.730000108182, 8.41000012323, -0.129999913722, 8.98000008211, 0.27000011906, 8.70000007376, 1.51000004649, 7.49000013009, 1.72000008851, 8.33000003666, 3.37000008032, 8.16000003979, 2.92000019506, 5.74000015467, 4.11000013441, 5.53000020355, 3.21000007629, 5.16000003979, 4.99000008687, 2.94000006378, 6.01000007182, 3.25000009015, 6.24000011295, 3.33000000089, 6.48000020429, 3.34000000566, 7.67000015631, 1.53000005081, 8.29000011221, 1.8899999997, 9.98000003815, 1.58999992222, 8.5000001438, 10.5100000748, 2.13999994457, 9.60000006482, 0.729999978542, 7.47000002518, 2.66999993876, 8.36000001818, 3.90999990866, 6.85000009909, 3.46999990448, 7.25000002682, 5.46999987468, 7.6399998939, 5.21000004575, 6.23000007391, 7.53999997139, 6.3200001511, 4.55999992803, 4.39000006676, 7.46999989256, 2.58000008881, 7.10999994069, 3.62000004008, 7.26999997303, 1.200000076, 7.97000000358, 1.70000004545, 8.6700000222, -0.429999863803, 9.22000002369, 0.600000070035, 11.219999979, -0.100000012666, 10.1300000106, 8.0700001429, 0.409999990612, 7.52000016376, 0.0400000607967, 7.03000007167, 0.0600000829995, 6.80000014752, 2.06000001147, 6.04000012264, 2.47999995694, 6.68000003517, 3.46999994919, 7.48000005007, 2.62000011832, 5.43000007987, 4.92000001997, 5.26000013441, 3.01000005245, 4.36999998271, 5.58000000238, 2.62000009894, 4.6900000824, 3.57000008181, 5.88000007242, 2.71000000402, 6.0100001806, 3.50000002608, 6.76000016943, 2.34000002876, 7.15000008866, 2.73999998331, 9.94000005931, 1.71999996483, 8.39000013158, 8.6400001055, 1.10000004396, 8.45000004768, 0.0400000153482, 7.40000005141, 0.110000047237, 8.29000004441, 2.4900000459, 6.6800001432, 1.65000005588, 6.49999999702, 2.57000003934, 7.80999984086, 3.02000011161, 5.89000005111, 5.4700000535, 5.27000008926, 3.47000001028, 4.29999998882, 5.48000001356, 2.79999998286, 5.88000001132, 3.99000002727, 6.13000005081, 1.7199999246, 7.4400000377, 2.85999993995, 7.98000011414, 1.2900000146, 9.40000000969, 1.50999996752, 10.1799999659, 1.0599999176, 8.7100000748,
+
+L3_zHEMM_A_mm
+0.2, 0.0, 0.3, 0.5, 0.2, 0.9, 0.8, 0.2, 0.9, 0.1, 0.8, 0.3, 0.1, 0.3, 0.8, 0.9, 0.8, 0.4, 0.5, 0.1, 0.3, -0.5, 0.3, 0.0, 0.3, 0.2, 0.8, 0.9, 0.2, 0.2, 0.8, 0.9, 0.5, 0.4, 0.6, 0.9, 0.8, 0.6, 0.5, 0.9, 0.2, -0.9, 0.3, -0.2, 0.7, 0.0, 0.5, 0.8, 0.9, 0.3, 0.2, 0.1, 0.8, 0.7, 0.8, 0.9, 0.9, 0.8, 0.1, 0.6, 0.8, -0.2, 0.8, -0.9, 0.5, -0.8, 0.2, 0.0, 0.7, 0.7, 0.8, 0.6, 0.5, 0.2, 0.7, 0.6, 0.1, 0.5, 0.1, 0.2, 0.9, -0.1, 0.2, -0.2, 0.9, -0.3, 0.7, -0.7, 0.4, 0.0, 0.4, 0.7, 0.7, 0.5, 0.2, 0.4, 0.8, 0.6, 0.7, 0.4, 0.8, -0.3, 0.8, -0.9, 0.2, -0.1, 0.8, -0.6, 0.4, -0.7, 0.3, 0.0, 0.1, 0.4, 0.7, 0.2, 0.6, 0.3, 0.8, 0.8, 0.1, -0.3, 0.5, -0.4, 0.8, -0.7, 0.5, -0.2, 0.7, -0.5, 0.1, -0.4, 0.9, 0.0, 0.5, 0.2, 0.7, 0.2, 0.7, 0.1, 0.8, -0.9, 0.6, -0.9, 0.8, -0.9, 0.7, -0.6, 0.2, -0.4, 0.7, -0.2, 0.5, -0.2, 0.6, 0.0, 0.9, 0.8, 0.1, 0.6, 0.8, -0.4, 0.8, -0.6, 0.9, -0.8, 0.1, -0.5, 0.8, -0.6, 0.6, -0.3, 0.7, -0.2, 0.9, -0.8, 0.8, 0.0, 0.7, 0.4, 0.5, -0.1, 0.5, -0.9, 0.1, -0.6, 0.1, -0.2, 0.7, -0.4, 0.8, -0.8, 0.7, -0.1, 0.1, -0.6, 0.7, -0.4, 0.2, 0.0,
+
+L3_zHEMM_B_mn
+0.8, 0.9, 0.2, 0.7, 0.1, 0.8, 0.4, 0.4, 0.4, 0.7, 0.9, 0.8, 0.5, 0.2, 0.1, 0.7, 0.8, 0.5, 0.9, 0.7, 0.7, 0.5, 0.8, 0.4, 0.3, 0.3, 0.5, 0.3, 0.4, 0.9, 0.8, 0.8, 0.8, 0.2, 0.1, 0.6, 0.6, 0.3, 0.2, 0.3, 0.3, 0.4, 0.1, 0.4, 0.1, 0.5, 0.2, 0.9, 0.5, 0.4, 0.7, 0.2, 0.9, 0.4, 0.7, 0.8, 0.6, 0.8, 0.6, 0.3, 0.4, 0.5, 0.4, 0.2, 0.1, 0.8, 0.5, 0.3, 0.1, 0.2, 0.2, 0.1, 0.9, 0.6, 0.9, 0.4, 0.6, 0.5, 0.3, 0.4, 0.2, 0.2, 0.6, 0.7, 0.5, 0.6, 0.9, 0.6, 0.9, 0.8, 0.8, 0.9, 0.3, 0.6, 0.3, 0.8, 0.8, 0.8, 0.9, 0.7, 0.8, 0.5, 0.2, 0.5, 0.2, 0.3, 0.6, 0.7, 0.1, 0.3, 0.9, 0.8, 0.4, 0.4, 0.2, 0.1, 0.7, 0.5, 0.5, 0.6, 0.9, 0.4, 0.2, 0.4, 0.1, 0.6, 0.9, 0.9, 0.2, 0.9, 0.1, 0.8, 0.1, 0.4, 0.2, 0.2, 0.2, 0.7, 0.7, 0.2, 0.5, 0.2, 0.2, 0.2, 0.3, 0.7, 0.2, 0.6, 0.2, 0.7, 0.1, 0.4, 0.9, 0.9, 0.7, 0.3, 0.6, 0.6, 0.7, 0.9, 0.3, 0.6, 0.8, 0.3, 0.2, 0.6, 0.5, 0.8, 0.9, 0.7, 0.6, 0.9, 0.5, 0.4, 0.5, 0.5, 0.2, 0.4, 0.5, 0.7, 0.3, 0.7, 0.8, 0.1, 0.8, 0.4, 0.6, 0.6, 0.3, 0.4, 0.5, 0.8, 0.1, 0.4, 0.8, 0.8, 0.2, 0.9, 0.7, 0.7, 0.8, 0.9, 0.8, 0.6, 0.4, 0.3, 0.3, 0.9, 0.3, 0.9, 0.2, 0.7, 0.8, 0.9, 0.1, 0.5, 0.6, 0.6, 0.8, 0.4, 0.6, 0.9, 0.2, 0.2, 0.8, 0.8, 0.8, 0.9, 0.3, 0.5, 0.3, 0.5, 0.7, 0.3, 0.6, 0.9, 0.6, 0.5, 0.3, 0.8, 0.9, 0.1, 0.4, 0.1, 0.8, 0.1, 0.3, 0.9, 0.9, 0.4, 0.5, 0.7, 0.6, 0.7, 0.4, 0.2, 0.3, 0.7, 0.9, 0.6, 0.2, 0.8, 0.6, 0.3, 0.9, 0.1, 0.8, 0.9, 0.8, 0.6, 0.8, 0.7, 0.5, 0.7, 0.4, 0.5, 0.5, 0.6, 0.3, 0.6, 0.2, 0.8, 0.1, 0.5, 0.6, 0.3, 0.2, 0.9, 0.4, 0.2, 0.1, 0.9, 0.2, 0.5, 0.2, 0.8, 0.2, 0.2, 0.9, 0.7, 0.4, 0.7, 0.4, 0.2, 0.6, 0.1, 0.9, 0.3, 0.3, 0.5, 0.4, 0.2, 0.7, 0.2, 0.5, 0.8, 0.5, 0.2, 0.5, 0.9, 0.4, 0.6, 0.3, 0.8, 0.4, 0.6, 0.4, 0.6, 0.6, 0.3, 0.1, 0.9, 0.9, 0.3, 0.6, 0.1, 0.9, 0.8, 0.1, 0.8,
+
+L3_zHEMM_C_mn
+0.8, 0.2, 0.7, 0.7, 0.5, 0.2, 0.2, 0.7, 0.3, 0.8, 0.1, 0.2, 0.9, 0.4, 0.8, 0.1, 0.8, 0.9, 0.8, 0.7, 0.7, 0.6, 0.3, 0.6, 0.1, 0.8, 0.7, 0.1, 0.5, 0.5, 0.3, 0.2, 0.5, 0.5, 0.2, 0.3, 0.7, 0.6, 0.3, 0.1, 0.3, 0.4, 0.2, 0.3, 0.2, 0.3, 0.4, 0.3, 0.3, 0.3, 0.9, 0.2, 0.6, 0.8, 0.5, 0.1, 0.4, 0.9, 0.2, 0.8, 0.2, 0.7, 0.2, 0.2, 0.3, 0.8, 0.6, 0.1, 0.8, 0.6, 0.7, 0.7, 0.9, 0.2, 0.6, 0.5, 0.7, 0.3, 0.1, 0.6, 0.6, 0.1, 0.6, 0.5, 0.1, 0.6, 0.2, 0.9, 0.5, 0.6, 0.5, 0.5, 0.1, 0.4, 0.6, 0.4, 0.9, 0.5, 0.6, 0.9, 0.9, 0.7, 0.5, 0.6, 0.6, 0.3, 0.8, 0.6, 0.9, 0.9, 0.5, 0.7, 0.4, 0.4, 0.8, 0.7, 0.9, 0.6, 0.8, 0.8, 0.7, 0.4, 0.6, 0.9, 0.2, 0.6, 0.1, 0.2, 0.9, 0.3, 0.4, 0.6, 0.2, 0.8, 0.2, 0.8, 0.8, 0.6, 0.7, 0.5, 0.3, 0.3, 0.2, 0.7, 0.8, 0.2, 0.1, 0.1, 0.1, 0.7, 0.9, 0.5, 0.7, 0.9, 0.3, 0.1, 0.1, 0.4, 0.5, 0.2, 0.4, 0.4, 0.7, 0.8, 0.5, 0.3, 0.4, 0.8, 0.7, 0.2, 0.4, 0.5, 0.4, 0.6, 0.1, 0.2, 0.7, 0.5, 0.9, 0.5, 0.4, 0.6, 0.6, 0.8, 0.8, 0.8, 0.7, 0.2, 0.1, 0.7, 0.5, 0.9, 0.2, 0.8, 0.4, 0.9, 0.7, 0.2, 0.1, 0.7, 0.6, 0.7, 0.2, 0.3, 0.7, 0.2, 0.6, 0.8, 0.1, 0.7, 0.2, 0.6, 0.3, 0.5, 0.9, 0.9, 0.4, 0.6, 0.1, 0.8, 0.1, 0.2, 0.3, 0.1, 0.7, 0.9, 0.5, 0.7, 0.2, 0.3, 0.1, 0.1, 0.7, 0.9, 0.7, 0.5, 0.6, 0.5, 0.1, 0.4, 0.1, 0.3, 0.9, 0.3, 0.1, 0.9, 0.4, 0.5, 0.6, 0.9, 0.6, 0.6, 0.5, 0.6, 0.7, 0.4, 0.8, 0.9, 0.6, 0.4, 0.1, 0.2, 0.9, 0.1, 0.7, 0.8, 0.8, 0.9, 0.7, 0.6, 0.8, 0.1, 0.7, 0.9, 0.7, 0.1, 0.1, 0.9, 0.7, 0.6, 0.7, 0.7, 0.7, 0.8, 0.6, 0.9, 0.9, 0.6, 0.7, 0.9, 0.9, 0.1, 0.2, 0.8, 0.7, 0.5, 0.5, 0.1, 0.7, 0.2, 0.6, 0.1, 0.4, 0.1, 0.2, 0.5, 0.4, 0.1, 0.7, 0.3, 0.7, 0.6, 0.7, 0.3, 0.5, 0.7, 0.8, 0.7, 0.3, 0.2, 0.4, 0.9, 0.4, 0.6, 0.1, 0.4, 0.9, 0.7, 0.2, 0.5, 0.6, 0.6, 0.4, 0.8, 0.5, 0.2, 0.6, 0.5, 0.5, 0.3,
+
+L3_zHEMM_o_L
+0.92, 4.79, 2.32, 4.34, 1.42, 4.38, 0.9, 4.48, 0.08, 6.43, 0.48, 4.32, 1.5, 4.35, 1.04, 5.28, 2.17, 5.66, 1.48, 5.6, 0.95, 6.44, -0.59, 5.93, 0.99, 5.61, 1.94, 5.02, 0.57, 6.32, 0.88, 5.95, 2.02, 5.58, -0.11, 5.33, 1.32, 4.84, 0.8, 5.06, 0.77, 4.25, -0.91, 6.55, 0.28, 4.44, 0.72, 4.63, 0.45, 6.06, 1.06, 4.84, 0.73, 5.27, 0.36, 5.46, -0.55, 5.47, -0.32, 6.05, 0.23, 6.31, 0.19, 5.89, 0.4, 6.76, 1.05, 4.58, 1.12, 4.73, 2.17, 4.35, 2.3, 4.62, 1.73, 3.85, 0.39, 6.09, 0.92, 4.1, 1.04, 4.11, 1.29, 5.67, 1.42, 4.7, 1.36, 4.42, 1.97, 5.42, 0.7, 5.47, 0.37, 4.5, 2.04, 5.38, 1.97, 5.64, 2.07, 5.92, 2.78, 4.53, 1.38, 4.88, 2.64, 3.2, 2.77, 3.42, 2.83, 2.76, 1.38, 4.68, 2.01, 3.82, 2.63, 4.18, 2.88, 3.67, 3.32, 4.0, 3.36, 2.24, 3.79, 4.52, 2.46, 3.91, 1.95, 3.18, 3.32, 4.08, 2.36, 4.3, 2.91, 5.6, 3.01, 4.07, 2.44, 4.97, 1.82, 4.01, 2.56, 4.04, 2.03, 3.66, 2.56, 4.81, 1.66, 3.45, 1.8, 4.39, 2.77, 4.77, 3.29, 4.86, 2.86, 2.81, 2.43, 4.84, 2.87, 4.51, 2.18, 3.9, 3.32, 5.33, 2.95, 5.18, 3.04, 6.08, 3.23, 3.7, 3.72, 4.43, 2.69, 2.15, 2.69, 2.33, 3.18, 2.53, 3.39, 4.27, 3.65, 3.16, 3.1, 3.87, 3.35, 3.84, 4.04, 1.72, 3.53, 2.08, 4.04, 3.59, 3.61, 3.76, 3.25, 2.77, 4.64, 2.96, 3.46, 4.27, 4.25, 4.71, 3.2, 1.8, 3.83, 2.47, 3.48, 2.25, 3.79, 2.28, 3.32, 1.95, 4.03, 3.55, 3.79, 2.81, 3.27, 2.95, 3.72, 3.0, 4.4, 1.96, 4.01, 1.09, 5.45, 3.08, 4.9, 3.5, 3.53, 2.26, 4.6, 2.38, 4.89, 2.96, 5.53, 3.03, 4.73, 1.63, 4.01, 3.69, 3.3, 1.7, 5.28, 2.39, 3.45, 2.28, 4.51, 3.23, 4.61, 2.82, 4.08, 2.31, 4.57, 2.7, 5.59, 1.05, 5.1, 1.16, 6.0, 1.86, 4.83, 2.3, 5.11, 1.27, 5.25, 3.91, 5.86, 3.7, 6.43, 3.12, 5.55, 0.27, 6.03, 4.31, 4.94, 0.96, 4.94, 2.34, 5.2, 1.54, 6.14, 4.05, 5.51, 2.78, 5.3, 3.25, 6.18, 2.82, 6.63, 2.24, 6.61, 1.25, 7.26, 2.73, 7.51, 3.59, 5.09, 1.49, 6.86, 1.9, 7.33, 2.37, 7.56, 3.03, 6.57, 1.05, 4.98, 1.72, 3.88, 0.26, 4.15, 1.0, 3.49, 0.46, 5.02, 2.34, 4.22, 1.84, 4.39, 0.52, 4.63, 1.11, 5.0, 0.72, 4.34, 0.16, 6.25, 1.0, 5.39, 1.77, 4.48, 0.65, 5.1, 1.17, 5.22, 0.45, 5.97, 1.41, 5.36, -0.59,
+
+L3_zHEMM_A_nn
+0.7, 0.0, 0.2, 0.2, 0.1, 0.1, 0.7, 0.4, 0.1, 0.6, 0.8, 0.2, 0.8, 0.5, 0.1, 0.2, 0.2, 0.7, 0.7, 0.3, 0.9, 0.9, 0.7, 0.7, 0.4, 0.7, 0.2, 0.7, 0.3, 0.2, 0.6, 0.5, 0.5, 0.3, 0.2, -0.2, 0.2, 0.0, 0.1, 0.8, 0.4, 0.9, 0.6, 0.1, 0.9, 0.3, 0.7, 0.7, 0.1, 0.4, 0.4, 0.7, 0.5, 0.8, 0.8, 0.7, 0.9, 0.9, 0.9, 0.8, 0.1, 0.3, 0.7, 0.8, 0.1, 0.3, 0.1, 0.1, 0.1, -0.1, 0.1, -0.8, 0.7, 0.0, 0.1, 0.9, 0.7, 0.3, 0.6, 0.5, 0.5, 0.5, 0.5, 0.9, 0.7, 0.3, 0.3, 0.8, 0.3, 0.4, 0.7, 0.9, 0.4, 0.2, 0.5, 0.9, 0.8, 0.8, 0.4, 0.5, 0.5, 0.5, 0.7, -0.4, 0.4, -0.9, 0.1, -0.9, 0.6, 0.0, 0.3, 0.3, 0.3, 0.8, 0.2, 0.5, 0.5, 0.1, 0.2, 0.8, 0.4, 0.3, 0.8, 0.8, 0.8, 0.5, 0.9, 0.2, 0.3, 0.1, 0.9, 0.1, 0.1, 0.4, 0.7, 0.9, 0.1, -0.6, 0.6, -0.1, 0.7, -0.3, 0.3, -0.3, 0.4, 0.0, 0.4, 0.9, 0.5, 0.2, 0.1, 0.6, 0.1, 0.1, 0.4, 0.1, 0.6, 0.5, 0.4, 0.3, 0.3, 0.4, 0.5, 0.9, 0.2, 0.3, 0.7, 0.9, 0.3, 0.7, 0.8, -0.2, 0.9, -0.3, 0.6, -0.5, 0.3, -0.8, 0.4, -0.9, 0.7, 0.0, 0.3, 0.8, 0.5, 0.5, 0.2, 0.8, 0.2, 0.2, 0.2, 0.5, 0.4, 0.7, 0.1, 0.1, 0.6, 0.9, 0.7, 0.2, 0.1, 0.6, 0.7, 0.6, 0.8, -0.5, 0.7, -0.7, 0.5, -0.5, 0.2, -0.5, 0.5, -0.2, 0.3, -0.8, 0.1, 0.0, 0.4, 0.8, 0.2, 0.9, 0.4, 0.8, 0.8, 0.7, 0.9, 0.3, 0.2, 0.9, 0.8, 0.5, 0.8, 0.7, 0.1, 0.8, 0.2, 0.1, 0.1, -0.2, 0.1, -0.4, 0.5, -0.9, 0.5, -0.1, 0.1, -0.6, 0.5, -0.5, 0.4, -0.8, 0.5, 0.0, 0.2, 0.8, 0.2, 0.6, 0.6, 0.1, 0.8, 0.6, 0.4, 0.1, 0.1, 0.9, 0.4, 0.5, 0.6, 0.2, 0.2, 0.8, 0.2, -0.7, 0.4, -0.7, 0.7, -0.3, 0.2, -0.8, 0.1, -0.1, 0.2, -0.8, 0.2, -0.9, 0.2, -0.8, 0.4, 0.0, 0.6, 0.1, 0.9, 0.2, 0.9, 0.9, 0.9, 0.6, 0.7, 0.2, 0.8, 0.4, 0.5, 0.9, 0.2, 0.3, 0.7, -0.3, 0.5, -0.8, 0.3, -0.8, 0.4, -0.3, 0.4, -0.1, 0.2, -0.2, 0.4, -0.8, 0.2, -0.6, 0.6, -0.1, 0.9, 0.0, 0.5, 0.8, 0.5, 0.2, 0.1, 0.2, 0.2, 0.5, 0.5, 0.1, 0.9, 0.2, 0.5, 0.7, 0.9, -0.9, 0.8, -0.7, 0.3, -0.4, 0.8, -0.8, 0.6, -0.5, 0.2, -0.5, 0.8, -0.7, 0.6, -0.1, 0.9, -0.2, 0.5, -0.8, 0.8, 0.0, 0.6, 0.7, 0.3, 0.3, 0.4, 0.8, 0.2, 0.1, 0.9, 0.6, 0.4, 0.1, 0.7, -0.7, 0.9, -0.9, 0.7, -0.9, 0.8, -0.5, 0.4, -0.3, 0.4, -0.7, 0.9, -0.3, 0.8, -0.6, 0.9, -0.9, 0.5, -0.2, 0.6, -0.7, 0.5, 0.0, 0.4, 0.7, 0.9, 0.8, 0.5, 0.2, 0.3, 0.5, 0.5, 0.8, 0.4, -0.7, 0.9, -0.8, 0.4, -0.2, 0.9, -0.2, 0.3, -0.4, 0.1, -0.1, 0.2, -0.9, 0.4, -0.1, 0.9, -0.6, 0.1, -0.2, 0.3, -0.3, 0.4, -0.7, 0.7, 0.0, 0.6, 0.2, 0.7, 0.2, 0.3, 0.9, 0.3, 0.3, 0.2, -0.7, 0.1, -0.3, 0.5, -0.9, 0.3, -0.1, 0.5, -0.9, 0.6, -0.9, 0.8, -0.5, 0.1, -0.9, 0.7, -0.2, 0.2, -0.5, 0.4, -0.8, 0.9, -0.8, 0.6, -0.2, 0.8, 0.0, 0.7, 0.2, 0.5, 0.1, 0.6, 0.5, 0.3, -0.2, 0.7, -0.8, 0.8, -0.8, 0.9, -0.1, 0.2, -0.3, 0.7, -0.2, 0.8, -0.7, 0.4, -0.5, 0.8, -0.4, 0.5, -0.1, 0.2, -0.1, 0.5, -0.2, 0.7, -0.2, 0.7, -0.2, 0.3, 0.0, 0.1, 0.6, 0.2, 0.2, 0.6, -0.5, 0.1, -0.3, 0.4, -0.5, 0.1, -0.4, 0.7, -0.9, 0.1, -0.6, 0.1, -0.8, 0.6, -0.2, 0.5, -0.9, 0.9, -0.2, 0.9, -0.6, 0.3, -0.5, 0.3, -0.9, 0.5, -0.1, 0.1, -0.6, 0.8, 0.0, 0.2, 0.3, 0.5, -0.3, 0.1, -0.1, 0.5, -0.5, 0.7, -0.9, 0.3, -0.7, 0.7, -0.6, 0.2, -0.1, 0.2, -0.8, 0.2, -0.3, 0.5, -0.7, 0.4, -0.1, 0.5, -0.8, 0.3, -0.3, 0.6, -0.5, 0.2, -0.2, 0.2, -0.3, 0.9, 0.0,
+
+L3_zHEMM_o_R
+9.61, 0.42, 9.77, 0.45, 8.71, 0.16, 5.97, 1.69, 6.09, 1.54, 5.06, 2.21, 6.62, 3.08, 4.24, 1.9, 4.02, 5.47, 4.33, 5.05, 4.07, 7.78, 2.7, 8.21, 2.07, 7.05, 1.13, 8.12, 2.74, 6.56, 0.12, 8.67, 0.44, 8.15, 7.24, 1.47, 8.09, 0.51, 7.34, 0.47, 6.35, 2.35, 5.33, 1.72, 5.35, 1.54, 5.44, 1.39, 3.01, 1.79, 4.29, 3.98, 3.55, 4.61, 3.53, 6.17, 3.26, 7.36, 1.79, 5.82, -0.16, 7.54, 2.24, 5.91, -0.15, 7.55, 0.01, 6.3, 10.06, 0.51, 10.44, -0.64, 10.98, -0.37, 8.23, 2.69, 8.15, 1.09, 6.84, 2.76, 8.62, 1.91, 6.61, 2.95, 6.12, 5.37, 5.56, 5.14, 6.21, 7.02, 5.29, 8.04, 3.41, 5.84, 1.87, 9.27, 3.99, 6.7, 1.15, 9.32, 0.99, 9.19, 6.98, 1.35, 8.25, 1.06, 8.07, 2.35, 5.3, 4.04, 5.31, 2.47, 4.4, 3.91, 5.91, 3.32, 4.03, 3.77, 4.06, 6.25, 3.18, 5.02, 3.47, 7.36, 2.79, 7.68, 1.36, 6.06, 0.17, 8.47, 1.77, 7.13, -0.96, 8.19, -1.28, 7.51, 8.78, 1.5, 8.53, 1.28, 8.43, 1.7, 7.24, 3.25, 7.07, 1.12, 6.4, 1.52, 6.54, 2.73, 4.75, 2.03, 5.11, 4.8, 4.26, 4.27, 3.96, 6.69, 4.07, 6.99, 2.23, 6.14, 1.22, 8.56, 2.94, 6.45, -0.58, 7.97, 0.49, 7.0, 8.9, 1.58, 8.78, 0.96, 8.72, 1.38, 7.41, 3.55, 7.5, 1.8, 6.34, 3.11, 6.73, 3.3, 5.26, 4.09, 4.85, 6.07, 4.56, 6.28, 4.93, 8.34, 4.35, 8.45, 3.28, 7.15, 1.29, 8.53, 2.73, 7.54, -0.11, 9.51, -0.6, 7.75, 9.49, 1.1, 9.91, 1.44, 8.48, 1.73, 6.62, 2.83, 6.19, 2.51, 6.24, 3.21, 6.17, 2.83, 3.5, 4.02, 3.64, 5.32, 3.25, 5.18, 4.38, 8.29, 2.73, 9.15, 1.41, 7.38, -0.11, 9.19, 1.67, 8.35, -0.56, 8.99, -0.79, 8.09, 8.68, 0.41, 8.73, -0.25, 9.99, 0.04, 7.99, 3.16, 7.16, -0.18, 7.55, 2.59, 7.75, 3.0, 5.1, 2.99, 5.57, 5.47, 5.19, 5.53, 5.09, 6.88, 5.31, 6.91, 4.14, 4.71, 2.02, 8.6, 4.7, 6.54, 0.81, 8.86, 1.55, 7.56, 7.01, 2.47, 7.51, 1.56, 7.59, 2.58, 4.65, 4.23, 5.19, 2.4, 4.82, 3.44, 5.1, 4.85, 3.31, 3.23, 2.29, 5.93, 2.57, 4.71, 1.86, 6.72, 2.27, 6.99, 1.19, 5.34, -0.65, 6.24, 1.43, 6.32, -1.36, 6.74, -1.85, 6.5, 8.9, 0.73, 8.51, 0.41, 8.16, 0.48, 7.46, 2.93, 6.72, 1.93, 7.17, 2.5, 7.51, 2.26, 4.25, 3.39, 4.12, 5.37, 3.86, 5.27, 4.78, 7.55, 4.31, 7.69, 2.63, 6.04, 1.4, 8.77, 2.8, 6.13, 0.25, 8.31, 0.72, 7.53,
+
+L3_sSYRK_A_nk
+0.5, 0.2, 0.4, 0.6, 0.6, 0.1, 0.3, 0.2, 0.7, 0.9, 0.4, 0.4, 0.7, 0.5, 0.8, 0.9, 0.2, 0.2, 0.2, 0.8, 0.8, 0.6, 0.7, 0.5, 0.4, 0.9, 0.5, 0.3, 0.1, 0.8, 0.5, 0.3, 0.3, 0.7, 0.4, 0.2, 0.7, 0.4, 0.7, 0.6, 0.3, 0.2, 0.1, 0.3, 0.2, 0.6, 0.6, 0.7, 0.7, 0.9, 0.6, 0.1, 0.6, 0.8, 0.6, 0.4, 0.5, 0.5, 0.2, 0.8, 0.2, 0.9, 0.8, 0.8, 0.6, 0.6, 0.1, 0.1, 0.8, 0.6, 0.5, 0.5, 0.9, 0.2, 0.5, 0.1, 0.1, 0.4, 0.1, 0.8, 0.3, 0.6, 0.4, 0.9, 0.7, 0.6, 0.7, 0.9, 0.8, 0.1, 0.6, 0.7, 0.5, 0.8, 0.2, 0.6, 0.2, 0.6, 0.3, 0.1, 0.2, 0.7, 0.4, 0.5, 0.1, 0.6, 0.3, 0.7, 0.8, 0.9, 0.2, 0.6, 0.8, 0.9, 0.1, 0.3, 0.5, 0.6, 0.2, 0.6, 0.1, 0.3, 0.7, 0.4, 0.3, 0.6, 0.8, 0.9, 0.5, 0.5, 0.2, 0.1, 0.6, 0.1, 0.8, 0.1, 0.7, 0.8, 0.5, 0.8, 0.2, 0.3, 0.2, 0.9, 0.1, 0.1, 0.9, 0.5, 0.6, 0.2, 0.9, 0.1, 0.5, 0.5, 0.3, 0.6, 0.2, 0.4, 0.5, 0.5, 0.7, 0.3, 0.3, 0.3, 0.2, 0.9, 0.4, 0.9, 0.5, 0.2, 0.2, 0.8, 0.4, 0.8, 0.1, 0.5, 0.8, 0.7, 0.1, 0.3, 0.9, 0.8, 0.3, 0.2, 0.8, 0.9, 0.8, 0.1, 0.5, 0.3, 0.1, 0.2, 0.1, 0.2, 0.2, 0.5, 0.5, 0.2, 0.5, 0.1, 0.6, 0.5, 0.6, 0.9, 0.1, 0.4, 0.8, 0.4, 0.2, 0.1, 0.7, 0.8, 0.7, 0.3, 0.6, 0.4, 0.7, 0.5, 0.9, 0.6, 0.9, 0.1, 0.8, 0.5, 0.3, 0.9, 0.4, 0.8, 0.9, 0.4, 0.2, 0.6, 0.5, 0.4, 0.3, 0.3, 0.8, 0.1, 0.5, 0.7, 0.6, 0.1, 0.2, 0.4, 0.8, 0.9, 0.3, 0.6, 0.5, 0.6, 0.8, 0.9, 0.5, 0.3, 0.6, 0.2, 0.6, 0.1, 0.4, 0.3, 0.9, 0.1, 0.5, 0.6, 0.2, 0.1, 0.7, 0.7, 0.3, 0.2, 0.2, 0.9,
+
+L3_sSYRK_C_nn
+0.5, 0.8, 0.8, 0.8, 0.9, 0.8, 0.4, 0.3, 0.1, 0.7, 0.4, 0.7, 0.5, 0.2, 0.7, 0.6, 0.5, 0.8, 0.1, 0.3, 0.3, 0.8, 0.7, 0.1, 0.6, 0.7, 0.2, 0.6, 0.7, 0.7, 0.3, 0.1, 0.5, 0.6, 0.8, 0.3, 0.7, 0.9, 0.6, 0.2, 0.9, 0.3, 0.1, 0.5, 0.6, 0.5, 0.8, 0.8, 0.7, 0.5, 0.5, 0.8, 0.3, 0.9, 0.4, 0.1, 0.8, 0.1, 0.7, 0.4, 0.6, 0.1, 0.4, 0.5, 0.9, 0.2, 0.9, 0.2, 0.9, 0.8, 0.6, 0.1, 0.4, 0.2, 0.4, 0.3, 0.1, 0.1, 0.1, 0.3, 0.5, 0.9, 0.3, 0.8, 0.8, 0.8, 0.7, 0.2, 0.8, 0.2, 0.2, 0.5, 0.6, 0.5, 0.1, 0.7, 0.5, 0.4, 0.2, 0.9, 0.7, 0.9, 0.4, 0.1, 0.9, 0.1, 0.4, 0.5, 0.4, 0.3, 0.7, 0.2, 0.8, 0.5, 0.4, 0.5, 0.1, 0.2, 0.8, 0.3, 0.6, 0.3, 0.7, 0.3, 0.6, 0.3, 0.2, 0.4, 0.6, 0.4, 0.6, 0.6, 0.4, 0.3, 0.3, 0.3, 0.1, 0.7, 0.1, 0.4, 0.1, 0.5, 0.7, 0.4, 0.4, 0.1, 0.8, 0.9, 0.5, 0.4, 0.6, 0.3, 0.7, 0.7, 0.2, 0.5, 0.6, 0.1, 0.1, 0.2, 0.6, 0.1, 0.1, 0.8, 0.5, 0.9, 0.2, 0.4, 0.3, 0.7, 0.4, 0.6, 0.6, 0.1, 0.1, 0.7, 0.8, 0.4, 0.8, 0.8, 0.3, 0.2, 0.7, 0.9, 0.4, 0.2, 0.7, 0.7, 0.7, 0.5, 0.4, 0.3, 0.5, 0.5, 0.6, 0.9, 0.5, 0.2, 0.2, 0.8, 0.4, 0.8, 0.8, 0.3, 0.5, 0.7, 0.8, 0.5, 0.5, 0.4, 0.4, 0.6, 0.5, 0.9, 0.7, 0.8, 0.2, 0.1, 0.7, 0.6, 0.7, 0.2, 0.3, 0.8, 0.9, 0.9, 0.2, 0.5, 0.4, 0.4, 0.2, 0.9, 0.4, 0.1, 0.4, 0.3, 0.2, 0.2, 0.7, 0.1, 0.7, 0.2, 0.3, 0.9, 0.1, 0.3, 0.6, 0.4, 0.4, 0.8, 0.7, 0.3, 0.1, 0.5, 0.7, 0.6, 0.5, 0.5, 0.9, 0.8, 0.7, 0.2, 0.3, 0.3, 0.3, 0.2, 0.8, 0.6, 0.2, 0.5, 0.4, 0.9, 0.5, 0.6, 0.5, 0.2, 0.8, 0.9, 0.8, 0.3, 0.7, 0.7, 0.7, 0.3, 0.7, 0.2, 0.7, 0.9, 0.9,
+
+L3_sSYRK_o_N
+5.61999998122, 4.90000006035, 4.26000007182, 5.4800000605, 4.3300000076, 5.26000007406, 3.93000005007, 4.38000005677, 4.21000000626, 4.45000002906, 3.76000003383, 4.69999999404, 4.2000000596, 5.10000001937, 5.0200000222, 4.75000012144, 4.05000001714, 4.90000006035, 4.90000005066, 3.78000008509, 4.77000010043, 4.18000008881, 5.43000005156, 3.53000005752, 4.36000012919, 4.29000004664, 3.82000004157, 4.13000008509, 4.7300000225, 4.23000004336, 4.58000006124, 3.88000006199, 4.75000010952, 3.78000005901, 4.26000007182, 3.78000008509, 4.46000004202, 5.53000006348, 3.9800000903, 4.4600000748, 4.15000004917, 4.17000007957, 3.41000003532, 3.64000003025, 3.94000009209, 3.62000002816, 3.62000007287, 4.29000007272, 4.39000000343, 3.80000010952, 3.64000001609, 5.4800000605, 4.77000010043, 5.53000006348, 6.90000007302, 4.42000010043, 6.15000011325, 4.67000005201, 5.92000004381, 4.9700000751, 4.69000011072, 4.82000003561, 4.82000003859, 4.45000007004, 5.38000008285, 4.72000004455, 5.63000008211, 4.11000005916, 4.3300000076, 4.18000008881, 3.9800000903, 4.42000010043, 4.57000009447, 4.57000009671, 3.32000009671, 4.13000010148, 3.72000004157, 2.85000004023, 3.55000004172, 4.34000008315, 3.17000006095, 4.31999999017, 3.94000005633, 4.36000010461, 4.09000004217, 5.26000007406, 5.43000005156, 4.4600000748, 6.15000011325, 4.57000009671, 6.56000003308, 4.75000006482, 5.22000013545, 4.67000006467, 4.13000003293, 5.51000002712, 4.88000009328, 4.28000005454, 5.33000002697, 5.79000002503, 5.53000005603, 5.11999999613, 3.93000005007, 3.53000005752, 4.15000004917, 4.67000005201, 3.32000009671, 4.75000006482, 4.64000005782, 4.12000010341, 4.00000006929, 3.05000005737, 4.67000002444, 3.84000006154, 3.15000004023, 4.01000006437, 3.58000008732, 3.88000005081, 3.66000005394, 4.38000005677, 4.36000012919, 4.17000007957, 5.92000004381, 4.13000010148, 5.22000013545, 4.12000010341, 5.41000005245, 4.07000002146, 3.47000008479, 4.31000007182, 4.62000007361, 3.82000008628, 4.36000005618, 4.55000004098, 4.51000014335, 3.97000002742, 4.21000000626, 4.29000004664, 3.41000003532, 4.9700000751, 3.72000004157, 4.67000006467, 4.00000006929, 4.07000002146, 4.97000004381, 3.6300000523, 4.05000005439, 4.7300000076, 3.97000004977, 4.38000004485, 4.14000004217, 4.04000009954, 4.26999998122, 4.45000002906, 3.82000004157, 3.64000003025, 4.69000011072, 2.85000004023, 4.13000003293, 3.05000005737, 3.47000008479, 3.6300000523, 4.04999998808, 3.66000006586, 3.40000004396, 4.21000002414, 4.42000003487, 3.66000004351, 3.69000010103, 3.82000000432, 3.76000003383, 4.13000008509, 3.94000009209, 4.82000003561, 3.55000004172, 5.51000002712, 4.67000002444, 4.31000007182, 4.05000005439, 3.66000006586, 4.90999998242, 3.6600000383, 3.4900000295, 4.41000002787, 3.83000006273, 4.31000002339, 3.94000002056, 4.69999999404, 4.7300000225, 3.62000002816, 4.82000003859, 4.34000008315, 4.88000009328, 3.84000006154, 4.62000007361, 4.7300000076, 3.40000004396, 3.6600000383, 5.50000000149, 3.80000007153, 4.52000000134, 4.91000001296, 5.25000008494, 3.43000002846, 4.2000000596, 4.23000004336, 3.62000007287, 4.45000007004, 3.17000006095, 4.28000005454, 3.15000004023, 3.82000008628, 3.97000004977, 4.21000002414, 3.4900000295, 3.80000007153, 3.84000005037, 4.15000006482, 3.83000003293, 4.33000008807, 3.63999998629, 5.10000001937, 4.58000006124, 4.29000007272, 5.38000008285, 4.31999999017, 5.33000002697, 4.01000006437, 4.36000005618, 4.38000004485, 4.42000003487, 4.41000002787, 4.52000000134, 4.15000006482, 6.29999997914, 4.9600000383, 5.01000007108, 4.19000000119, 5.0200000222, 3.88000006199, 4.39000000343, 4.72000004455, 3.94000005633, 5.79000002503, 3.58000008732, 4.55000004098, 4.14000004217, 3.66000004351, 3.83000006273, 4.91000001296, 3.83000003293, 4.9600000383, 5.15000000298, 4.54000009358, 4.2300000076, 4.75000012144, 4.75000010952, 3.80000010952, 5.63000008211, 4.36000010461, 5.53000005603, 3.88000005081, 4.51000014335, 4.04000009954, 3.69000010103, 4.31000002339, 5.25000008494, 4.33000008807, 5.01000007108, 4.54000009358, 5.67000009447, 4.65000002906, 4.05000001714, 3.78000005901, 3.64000001609, 4.11000005916, 4.09000004217, 5.11999999613, 3.66000005394, 3.97000002742, 4.26999998122, 3.82000000432, 3.94000002056, 3.43000002846, 3.63999998629, 4.19000000119, 4.2300000076, 4.65000002906, 4.95999993771,
+
+L3_sSYRK_A_kn
+0.1, 0.5, 0.7, 0.6, 0.6, 0.1, 0.8, 0.9, 0.2, 0.1, 0.3, 0.1, 0.8, 0.8, 0.5, 0.9, 0.7, 0.9, 0.4, 0.2, 0.8, 0.9, 0.1, 0.7, 0.6, 0.2, 0.2, 0.7, 0.5, 0.5, 0.6, 0.1, 0.1, 0.6, 0.4, 0.1, 0.2, 0.5, 0.2, 0.4, 0.9, 0.6, 0.7, 0.7, 0.9, 0.6, 0.8, 0.4, 0.6, 0.4, 0.3, 0.6, 0.7, 0.3, 0.9, 0.7, 0.5, 0.7, 0.2, 0.9, 0.6, 0.7, 0.6, 0.4, 0.6, 0.2, 0.7, 0.1, 0.6, 0.4, 0.8, 0.5, 0.5, 0.6, 0.7, 0.4, 0.3, 0.8, 0.9, 0.4, 0.7, 0.1, 0.6, 0.2, 0.1, 0.9, 0.6, 0.6, 0.1, 0.1, 0.2, 0.7, 0.2, 0.5, 0.4, 0.3, 0.5, 0.3, 0.3, 0.4, 0.5, 0.4, 0.8, 0.9, 0.8, 0.1, 0.1, 0.3, 0.2, 0.8, 0.5, 0.2, 0.7, 0.3, 0.8, 0.5, 0.4, 0.2, 0.4, 0.6, 0.1, 0.6, 0.5, 0.9, 0.9, 0.1, 0.8, 0.7, 0.4, 0.6, 0.9, 0.5, 0.4, 0.3, 0.7, 0.2, 0.8, 0.5, 0.9, 0.6, 0.9, 0.5, 0.4, 0.8, 0.6, 0.9, 0.7, 0.6, 0.6, 0.4, 0.2, 0.9, 0.9, 0.2, 0.2, 0.2, 0.7, 0.5, 0.7, 0.1, 0.5, 0.7, 0.5, 0.1, 0.1, 0.7, 0.4, 0.6, 0.8, 0.4, 0.8, 0.6, 0.1, 0.6, 0.1, 0.2, 0.4, 0.9, 0.5, 0.8, 0.8, 0.3, 0.3, 0.2, 0.9, 0.5, 0.3, 0.2, 0.2, 0.6, 0.4, 0.7, 0.6, 0.4, 0.3, 0.9, 0.7, 0.3, 0.1, 0.9, 0.6, 0.8, 0.7, 0.3, 0.5, 0.8, 0.6, 0.6, 0.1, 0.2, 0.1, 0.5, 0.7, 0.9, 0.6, 0.7, 0.8, 0.2, 0.2, 0.1, 0.2, 0.1, 0.4, 0.1, 0.8, 0.6, 0.6, 0.2, 0.3, 0.7, 0.4, 0.1, 0.2, 0.6, 0.1, 0.8, 0.4, 0.8, 0.5, 0.2, 0.5, 0.9, 0.8, 0.4, 0.9, 0.2, 0.4, 0.7, 0.7, 0.7, 0.5, 0.4, 0.6, 0.8, 0.6, 0.9, 0.4, 0.9, 0.1, 0.5, 0.6, 0.9, 0.9, 0.6, 0.7, 0.4, 0.6, 0.7, 0.2, 0.6, 0.4, 0.4,
+
+L3_sSYRK_o_T
+6.69000002205, 5.09000007346, 5.66000007853, 5.19000009805, 5.27999996215, 4.40000010654, 5.22999994501, 5.54000006974, 4.93000005826, 5.84000002205, 5.87000004753, 5.250000076, 5.600000076, 3.48000009775, 4.60000008643, 4.78000005081, 4.09000005409, 5.09000007346, 4.04000004143, 4.07000007063, 3.90000009015, 3.84000002354, 3.25000005364, 3.49000001386, 4.5900000608, 4.60000000596, 4.07000004828, 4.5700000535, 3.79000006527, 4.95000006184, 2.9900000757, 3.2200000833, 3.760000007, 3.48000007689, 5.66000007853, 4.07000007063, 6.01000004947, 4.65000006035, 4.84000002503, 3.79000010177, 5.18999995351, 5.12000004083, 4.55000008047, 5.18000001058, 5.15000007302, 4.35000008792, 6.09000008538, 3.9700001049, 4.3800001134, 4.77999998972, 3.92000001848, 5.19000009805, 3.90000009015, 4.65000006035, 6.17000006169, 5.17000001028, 4.56000005767, 4.53999997735, 5.20000009909, 5.34999999702, 5.58000005975, 4.97000002369, 4.35000006184, 5.72000009447, 4.3900000824, 4.35000011623, 5.68999998108, 4.03000010967, 5.27999996215, 3.84000002354, 4.84000002503, 5.17000001028, 5.99999992251, 4.1800000158, 4.73999996319, 4.77000003338, 4.72999996364, 4.58999996319, 4.51999995515, 4.18000000834, 5.52000001103, 4.41000004426, 4.01000011951, 5.6399999617, 4.63000005528, 4.40000010654, 3.25000005364, 3.79000010177, 4.56000005767, 4.1800000158, 3.99000007868, 3.70000003204, 4.3400000973, 4.8400000295, 4.19000005782, 4.3200000371, 3.73000005752, 4.75000008717, 2.69000008166, 4.43000013724, 4.57000000432, 3.61000005543, 5.22999994501, 3.49000001386, 5.18999995351, 4.53999997735, 4.73999996319, 3.70000003204, 6.01999984711, 4.72999999791, 4.96999995217, 4.8299999398, 5.66999991715, 4.36000001073, 5.36999998868, 3.86000005767, 4.14000005782, 4.52999995917, 4.29000004441, 5.54000006974, 4.5900000608, 5.12000004083, 5.20000009909, 4.77000003338, 4.3400000973, 4.72999999791, 6.23000001132, 5.21000005096, 5.47000002667, 5.48000005752, 4.61000011727, 6.2400001055, 3.93000009403, 4.60000008643, 4.91999999091, 4.19000006825, 4.93000005826, 4.60000000596, 4.55000008047, 5.34999999702, 4.72999996364, 4.8400000295, 4.96999995217, 5.21000005096, 6.26999990821, 5.53999997139, 5.62000001401, 5.07000002444, 6.20000000745, 3.86000006288, 5.12000009447, 5.19999997094, 4.25000004619, 5.84000002205, 4.07000004828, 5.18000001058, 5.58000005975, 4.58999996319, 4.19000005782, 4.8299999398, 5.47000002667, 5.53999997139, 6.13999993265, 6.11999999464, 4.85000004023, 6.47999997407, 3.28000006646, 4.95000009015, 4.97999998301, 4.22000000879, 5.87000004753, 4.5700000535, 5.15000007302, 4.97000002369, 4.51999995515, 4.3200000371, 5.66999991715, 5.48000005752, 5.62000001401, 6.11999999464, 6.17999994576, 4.6700000602, 6.04000002578, 4.26000004575, 4.44000008538, 4.4199999924, 4.06000003457, 5.250000076, 3.79000006527, 4.35000008792, 4.35000006184, 4.18000000834, 3.73000005752, 4.36000001073, 4.61000011727, 5.07000002444, 4.85000004023, 4.6700000602, 4.34000006229, 5.03000010371, 3.04000009805, 3.82000013322, 4.41000004202, 3.11000009418, 5.600000076, 4.95000006184, 6.09000008538, 5.72000009447, 5.52000001103, 4.75000008717, 5.36999998868, 6.2400001055, 6.20000000745, 6.47999997407, 6.04000002578, 5.03000010371, 6.85000006258, 4.04000010476, 5.61000011876, 5.65000003502, 4.85000009015, 3.48000009775, 2.9900000757, 3.9700001049, 4.3900000824, 4.41000004426, 2.69000008166, 3.86000005767, 3.93000009403, 3.86000006288, 3.28000006646, 4.26000004575, 3.04000009805, 4.04000010476, 3.40000014603, 3.08000012308, 3.77000004977, 2.9100000897, 4.60000008643, 3.2200000833, 4.3800001134, 4.35000011623, 4.01000011951, 4.43000013724, 4.14000005782, 4.60000008643, 5.12000009447, 4.95000009015, 4.44000008538, 3.82000013322, 5.61000011876, 3.08000012308, 4.78000016034, 4.68000007838, 3.9600001061, 4.78000005081, 3.760000007, 4.77999998972, 5.68999998108, 5.6399999617, 4.57000000432, 4.52999995917, 4.91999999091, 5.19999997094, 4.97999998301, 4.4199999924, 4.41000004202, 5.65000003502, 3.77000004977, 4.68000007838, 5.84999992549, 4.68999998257, 4.09000005409, 3.48000007689, 3.92000001848, 4.03000010967, 4.63000005528, 3.61000005543, 4.29000004441, 4.19000006825, 4.25000004619, 4.22000000879, 4.06000003457, 3.11000009418, 4.85000009015, 2.9100000897, 3.9600001061, 4.68999998257, 4.57000003636,
+
+L3_dSYRK_A_nk
+0.9, 0.2, 0.9, 0.5, 0.4, 0.5, 0.6, 0.2, 0.9, 0.6, 0.4, 0.3, 0.6, 0.4, 0.7, 0.1, 0.4, 0.9, 0.8, 0.4, 0.6, 0.7, 0.6, 0.5, 0.5, 0.6, 0.6, 0.4, 0.7, 0.4, 0.1, 0.9, 0.7, 0.8, 0.2, 0.7, 0.1, 0.2, 0.6, 0.7, 0.7, 0.8, 0.1, 0.4, 0.6, 0.2, 0.7, 0.2, 0.5, 0.2, 0.1, 0.4, 0.6, 0.8, 0.2, 0.8, 0.4, 0.2, 0.1, 0.8, 0.7, 0.4, 0.1, 0.1, 0.1, 0.5, 0.8, 0.1, 0.1, 0.5, 0.9, 0.5, 0.3, 0.2, 0.1, 0.2, 0.4, 0.8, 0.4, 0.5, 0.5, 0.4, 0.1, 0.9, 0.5, 0.2, 0.3, 0.4, 0.6, 0.9, 0.2, 0.4, 0.1, 0.6, 0.1, 0.9, 0.1, 0.5, 0.6, 0.4, 0.3, 0.1, 0.5, 0.8, 0.7, 0.8, 0.9, 0.4, 0.1, 0.1, 0.3, 0.5, 0.4, 0.6, 0.7, 0.6, 0.3, 0.2, 0.6, 0.2, 0.7, 0.7, 0.2, 0.1, 0.7, 0.1, 0.7, 0.9, 0.2, 0.3, 0.6, 0.9, 0.5, 0.9, 0.2, 0.5, 0.4, 0.6, 0.9, 0.4, 0.9, 0.1, 0.4, 0.3, 0.8, 0.7, 0.2, 0.8, 0.5, 0.2, 0.1, 0.8, 0.7, 0.4, 0.6, 0.5, 0.8, 0.3, 0.8, 0.5, 0.4, 0.6, 0.8, 0.5, 0.3, 0.2, 0.7, 0.3, 0.4, 0.3, 0.3, 0.5, 0.3, 0.8, 0.8, 0.2, 0.9, 0.3, 0.4, 0.9, 0.1, 0.1, 0.7, 0.2, 0.2, 0.4, 0.7, 0.9, 0.3, 0.9, 0.1, 0.5, 0.4, 0.3, 0.6, 0.6, 0.3, 0.5, 0.5, 0.7, 0.9, 0.8, 0.1, 0.8, 0.6, 0.9, 0.4, 0.2, 0.8, 0.2, 0.3, 0.3, 0.4, 0.2, 0.4, 0.3, 0.1, 0.4, 0.6, 0.8, 0.6, 0.1, 0.3, 0.8, 0.2, 0.4, 0.1, 0.4, 0.6, 0.8, 0.3, 0.4, 0.8, 0.6, 0.2, 0.9, 0.4, 0.3, 0.2, 0.9, 0.7, 0.6, 0.5, 0.3, 0.3, 0.1, 0.4, 0.3, 0.1, 0.9, 0.6, 0.8, 0.2, 0.2, 0.8, 0.9, 0.4, 0.6, 0.6, 0.2, 0.8, 0.5, 0.2, 0.9, 0.3, 0.8, 0.2, 0.6, 0.6, 0.4, 0.7, 0.4,
+
+L3_dSYRK_C_nn
+0.1, 0.4, 0.5, 0.9, 0.3, 0.9, 0.1, 0.2, 0.5, 0.8, 0.8, 0.1, 0.9, 0.9, 0.4, 0.2, 0.8, 0.4, 0.6, 0.3, 0.8, 0.1, 0.3, 0.1, 0.9, 0.2, 0.6, 0.7, 0.1, 0.7, 0.9, 0.5, 0.7, 0.2, 0.5, 0.3, 0.1, 0.2, 0.5, 0.7, 0.1, 0.8, 0.8, 0.4, 0.1, 0.8, 0.9, 0.5, 0.1, 0.9, 0.2, 0.9, 0.8, 0.2, 0.8, 0.5, 0.8, 0.4, 0.6, 0.8, 0.4, 0.7, 0.3, 0.9, 0.5, 0.1, 0.3, 0.8, 0.3, 0.1, 0.5, 0.5, 0.8, 0.8, 0.9, 0.1, 0.3, 0.7, 0.2, 0.6, 0.2, 0.1, 0.6, 0.7, 0.8, 0.9, 0.3, 0.7, 0.8, 0.8, 0.4, 0.5, 0.6, 0.9, 0.8, 0.5, 0.5, 0.5, 0.4, 0.7, 0.8, 0.2, 0.1, 0.1, 0.1, 0.4, 0.9, 0.5, 0.3, 0.7, 0.8, 0.5, 0.6, 0.8, 0.2, 0.9, 0.6, 0.6, 0.7, 0.2, 0.9, 0.8, 0.6, 0.1, 0.6, 0.7, 0.7, 0.6, 0.1, 0.4, 0.8, 0.3, 0.5, 0.7, 0.9, 0.7, 0.5, 0.2, 0.8, 0.8, 0.3, 0.9, 0.8, 0.6, 0.2, 0.7, 0.1, 0.9, 0.7, 0.5, 0.1, 0.1, 0.2, 0.8, 0.6, 0.4, 0.4, 0.7, 0.8, 0.5, 0.1, 0.7, 0.4, 0.5, 0.4, 0.5, 0.9, 0.1, 0.5, 0.7, 0.8, 0.7, 0.1, 0.7, 0.2, 0.5, 0.6, 0.4, 0.1, 0.5, 0.4, 0.6, 0.5, 0.8, 0.6, 0.2, 0.4, 0.1, 0.1, 0.8, 0.3, 0.6, 0.5, 0.8, 0.8, 0.9, 0.4, 0.6, 0.2, 0.6, 0.6, 0.8, 0.4, 0.6, 0.9, 0.7, 0.9, 0.9, 0.2, 0.5, 0.2, 0.3, 0.7, 0.5, 0.5, 0.6, 0.9, 0.9, 0.3, 0.5, 0.6, 0.9, 0.9, 0.5, 0.5, 0.1, 0.4, 0.9, 0.5, 0.5, 0.9, 0.8, 0.6, 0.9, 0.2, 0.4, 0.8, 0.7, 0.4, 0.5, 0.1, 0.1, 0.6, 0.7, 0.6, 0.7, 0.1, 0.1, 0.6, 0.8, 0.3, 0.4, 0.5, 0.6, 0.7, 0.2, 0.7, 0.9, 0.3, 0.7, 0.8, 0.6, 0.9, 0.1, 0.5, 0.2, 0.4, 0.5, 0.8, 0.6, 0.5, 0.4, 0.8, 0.2, 0.2, 0.8, 0.8, 0.2, 0.7, 0.7, 0.2, 0.7, 0.4, 0.6, 0.6, 0.7, 0.7, 0.4, 0.4,
+
+L3_dSYRK_o_N
+5.26, 4.82, 4.68, 4.02, 3.57, 4.27, 3.61, 4.43, 4.69, 5.23, 4.84, 3.96, 5.56, 4.14, 3.87, 3.98, 4.85, 4.82, 6.43, 4.45, 4.31, 3.97, 4.37, 4.3, 5.52, 4.93, 5.29, 4.68, 4.21, 5.34, 4.71, 4.95, 5.06, 4.86, 4.68, 4.45, 4.89, 3.27, 3.44, 4.32, 3.65, 4.91, 4.54, 5.1, 3.76, 4.39, 5.34, 3.54, 3.58, 4.75, 4.27, 4.02, 4.31, 3.27, 4.46, 2.83, 3.51, 2.81, 3.06, 4.27, 4.03, 3.3, 3.23, 4.71, 3.2, 3.52, 2.83, 4.37, 3.57, 3.97, 3.44, 2.83, 4.42, 3.31, 3.64, 3.31, 3.13, 3.59, 3.63, 3.56, 3.83, 2.37, 3.36, 3.53, 4.03, 4.27, 4.37, 4.32, 3.51, 3.31, 4.73, 3.84, 4.24, 4.26, 4.75, 3.53, 4.29, 4.52, 3.39, 4.51, 4.46, 3.71, 3.61, 4.3, 3.65, 2.81, 3.64, 3.84, 4.53, 4.28, 4.53, 4.38, 3.76, 4.04, 3.99, 3.77, 3.93, 4.31, 4.37, 4.43, 5.52, 4.91, 3.06, 3.31, 4.24, 4.28, 5.43, 4.48, 4.41, 4.02, 4.14, 4.31, 3.7, 4.3, 4.91, 4.58, 4.69, 4.93, 4.54, 4.27, 3.13, 4.26, 4.53, 4.48, 5.41, 5.24, 3.45, 4.46, 4.92, 3.83, 3.92, 3.69, 4.34, 5.23, 5.29, 5.1, 4.03, 3.59, 4.75, 4.38, 4.41, 5.24, 6.03, 4.35, 4.44, 5.07, 4.64, 4.08, 4.77, 5.27, 4.84, 4.68, 3.76, 3.3, 3.63, 3.53, 3.76, 4.02, 3.45, 4.35, 4.52, 4.36, 4.66, 3.56, 3.58, 3.8, 4.11, 3.96, 4.21, 4.39, 3.23, 3.56, 4.29, 4.04, 4.14, 4.46, 4.44, 4.36, 5.28, 4.82, 4.19, 4.14, 4.35, 3.88, 5.56, 5.34, 5.34, 4.71, 3.83, 4.52, 3.99, 4.31, 4.92, 5.07, 4.66, 4.82, 6.42, 4.11, 4.52, 4.3, 5.13, 4.14, 4.71, 3.54, 3.2, 2.37, 3.39, 3.77, 3.7, 3.83, 4.64, 3.56, 4.19, 4.11, 3.78, 3.64, 4.58, 4.03, 3.87, 4.95, 3.58, 3.52, 3.36, 4.51, 3.93, 4.3, 3.92, 4.08, 3.58, 4.14, 4.52, 3.64, 5.07, 4.22, 4.62, 3.98, 5.06, 4.75, 2.83, 3.53, 4.46, 4.31, 4.91, 3.69, 4.77, 3.8, 4.35, 4.3, 4.58, 4.22, 5.39, 4.51, 4.85, 4.86, 4.27, 4.37, 4.03, 3.71, 4.37, 4.58, 4.34, 5.27, 4.11, 3.88, 5.13, 4.03, 4.62, 4.51, 5.36,
+
+L3_dSYRK_A_kn
+0.8, 0.5, 0.1, 0.4, 0.9, 0.5, 0.2, 0.6, 0.9, 0.2, 0.7, 0.8, 0.2, 0.2, 0.3, 0.5, 0.5, 0.9, 0.2, 0.3, 0.8, 0.6, 0.4, 0.5, 0.1, 0.6, 0.4, 0.9, 0.8, 0.4, 0.1, 0.4, 0.7, 0.9, 0.3, 0.3, 0.4, 0.8, 0.6, 0.7, 0.9, 0.6, 0.5, 0.3, 0.6, 0.9, 0.2, 0.8, 0.9, 0.2, 0.8, 0.9, 0.2, 0.7, 0.7, 0.3, 0.1, 0.3, 0.2, 0.6, 0.4, 0.5, 0.2, 0.7, 0.5, 0.3, 0.6, 0.9, 0.8, 0.3, 0.1, 0.4, 0.7, 0.7, 0.6, 0.5, 0.6, 0.9, 0.6, 0.7, 0.3, 0.3, 0.7, 0.2, 0.4, 0.3, 0.3, 0.5, 0.2, 0.7, 0.4, 0.6, 0.5, 0.2, 0.6, 0.4, 0.2, 0.7, 0.7, 0.2, 0.2, 0.2, 0.4, 0.2, 0.1, 0.3, 0.5, 0.1, 0.6, 0.3, 0.4, 0.3, 0.9, 0.7, 0.5, 0.5, 0.6, 0.9, 0.2, 0.4, 0.8, 0.1, 0.6, 0.4, 0.5, 0.5, 0.5, 0.2, 0.2, 0.6, 0.7, 0.2, 0.2, 0.1, 0.3, 0.4, 0.4, 0.4, 0.5, 0.5, 0.8, 0.8, 0.2, 0.3, 0.7, 0.3, 0.9, 0.3, 0.7, 0.1, 0.5, 0.5, 0.8, 0.4, 0.4, 0.9, 0.7, 0.8, 0.6, 0.5, 0.3, 0.2, 0.5, 0.2, 0.4, 0.9, 0.4, 0.6, 0.1, 0.9, 0.8, 0.1, 0.3, 0.7, 0.5, 0.5, 0.7, 0.6, 0.7, 0.7, 0.7, 0.9, 0.3, 0.1, 0.4, 0.3, 0.3, 0.6, 0.3, 0.1, 0.5, 0.6, 0.1, 0.5, 0.9, 0.1, 0.6, 0.8, 0.1, 0.3, 0.9, 0.5, 0.7, 0.1, 0.1, 0.2, 0.5, 0.3, 0.9, 0.5, 0.6, 0.1, 0.7, 0.8, 0.1, 0.9, 0.2, 0.8, 0.8, 0.2, 0.2, 0.7, 0.8, 0.3, 0.4, 0.3, 0.9, 0.2, 0.4, 0.8, 0.2, 0.1, 0.2, 0.6, 0.9, 0.5, 0.4, 0.6, 0.5, 0.2, 0.3, 0.3, 0.6, 0.8, 0.7, 0.4, 0.1, 0.1, 0.3, 0.9, 0.4, 0.5, 0.6, 0.6, 0.4, 0.9, 0.9, 0.1, 0.8, 0.6, 0.3, 0.3, 0.1, 0.7, 0.6, 0.8, 0.2, 0.6, 0.3, 0.4, 0.5, 0.1,
+
+L3_dSYRK_o_T
+6.38, 4.05, 3.27, 6.07, 5.68, 5.25, 4.31, 3.84, 5.52, 4.92, 6.43, 5.01, 5.08, 4.62, 4.59, 4.48, 5.39, 4.05, 3.83, 2.06, 4.12, 3.7, 3.5, 2.7, 3.28, 3.41, 3.07, 4.1, 3.04, 3.54, 3.65, 3.2, 3.22, 3.02, 3.27, 2.06, 2.73, 3.1, 3.84, 3.44, 2.72, 2.64, 3.35, 2.8, 2.61, 3.52, 3.8, 3.05, 2.79, 2.85, 3.39, 6.07, 4.12, 3.1, 5.84, 5.5, 4.85, 4.55, 3.85, 5.13, 4.13, 5.76, 4.96, 4.72, 4.02, 4.17, 3.89, 5.28, 5.68, 3.7, 3.84, 5.5, 7.32, 5.77, 5.76, 4.0, 5.27, 5.25, 5.76, 6.26, 4.55, 4.46, 5.56, 4.73, 5.45, 5.25, 3.5, 3.44, 4.85, 5.77, 5.27, 4.42, 3.78, 5.04, 4.1, 4.54, 5.21, 4.03, 3.95, 4.81, 3.76, 4.37, 4.31, 2.7, 2.72, 4.55, 5.76, 4.42, 4.83, 4.03, 4.37, 4.18, 5.02, 5.75, 3.48, 4.7, 4.76, 3.82, 4.34, 3.84, 3.28, 2.64, 3.85, 4.0, 3.78, 4.03, 4.0, 3.52, 2.92, 4.16, 4.34, 2.88, 3.65, 3.78, 3.59, 3.52, 5.52, 3.41, 3.35, 5.13, 5.27, 5.04, 4.37, 3.52, 5.24, 4.34, 4.77, 5.5, 4.19, 3.85, 4.06, 3.53, 4.26, 4.92, 3.07, 2.8, 4.13, 5.25, 4.1, 4.18, 2.92, 4.34, 4.39, 4.5, 4.28, 3.65, 4.19, 3.73, 3.24, 3.72, 6.43, 4.1, 2.61, 5.76, 5.76, 4.54, 5.02, 4.16, 4.77, 4.5, 6.73, 5.67, 4.44, 4.31, 4.84, 4.67, 4.7, 5.01, 3.04, 3.52, 4.96, 6.26, 5.21, 5.75, 4.34, 5.5, 4.28, 5.67, 6.61, 3.89, 4.28, 5.49, 4.11, 4.92, 5.08, 3.54, 3.8, 4.72, 4.55, 4.03, 3.48, 2.88, 4.19, 3.65, 4.44, 3.89, 4.9, 4.17, 3.68, 3.61, 4.4, 4.62, 3.65, 3.05, 4.02, 4.46, 3.95, 4.7, 3.65, 3.85, 4.19, 4.31, 4.28, 4.17, 4.79, 4.33, 3.86, 3.91, 4.59, 3.2, 2.79, 4.17, 5.56, 4.81, 4.76, 3.78, 4.06, 3.73, 4.84, 5.49, 3.68, 4.33, 4.98, 3.84, 4.53, 4.48, 3.22, 2.85, 3.89, 4.73, 3.76, 3.82, 3.59, 3.53, 3.24, 4.67, 4.11, 3.61, 3.86, 3.84, 4.27, 3.62, 5.39, 3.02, 3.39, 5.28, 5.45, 4.37, 4.34, 3.52, 4.26, 3.72, 4.7, 4.92, 4.4, 3.91, 4.53, 3.62, 5.43,
+
+L3_cSYRK_A_nk
+0.40000000596, 0.300000011921, 0.800000011921, 0.300000011921, 0.800000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.600000023842, 0.699999988079, 0.800000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.10000000149, 0.10000000149, 0.5, 0.899999976158, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.600000023842, 0.699999988079, 0.10000000149, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.300000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.699999988079, 0.5, 0.40000000596, 0.20000000298, 0.5, 0.40000000596, 0.10000000149, 0.899999976158, 0.800000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.699999988079, 0.899999976158, 0.800000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.699999988079, 0.899999976158, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.600000023842, 0.899999976158, 0.20000000298, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.40000000596, 0.40000000596, 0.300000011921, 0.600000023842, 0.800000011921, 0.5, 0.800000011921, 0.300000011921, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.699999988079, 0.800000011921, 0.5, 0.899999976158, 0.5, 0.5, 0.300000011921, 0.5, 0.10000000149, 0.40000000596, 0.600000023842, 0.600000023842, 0.20000000298, 0.899999976158, 0.10000000149, 0.600000023842, 0.800000011921, 0.10000000149, 0.300000011921, 0.699999988079, 0.899999976158, 0.699999988079, 0.20000000298, 0.40000000596, 0.899999976158, 0.10000000149, 0.699999988079, 0.40000000596, 0.5, 0.699999988079, 0.800000011921, 0.20000000298, 0.40000000596, 0.5, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.40000000596, 0.899999976158, 0.699999988079, 0.40000000596, 0.800000011921, 0.899999976158, 0.300000011921, 0.20000000298, 0.899999976158, 0.899999976158, 0.300000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.699999988079, 0.20000000298, 0.40000000596, 0.20000000298, 0.800000011921, 0.40000000596, 0.10000000149, 0.5, 0.899999976158, 0.20000000298, 0.899999976158, 0.699999988079, 0.699999988079, 0.899999976158, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.899999976158, 0.600000023842, 0.699999988079, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.5, 0.699999988079, 0.300000011921, 0.699999988079, 0.600000023842, 0.600000023842, 0.699999988079, 0.5, 0.800000011921, 0.5, 0.800000011921, 0.800000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.300000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.40000000596, 0.800000011921, 0.800000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.899999976158, 0.699999988079, 0.10000000149, 0.699999988079, 0.800000011921, 0.40000000596, 0.300000011921, 0.10000000149, 0.600000023842, 0.800000011921, 0.300000011921, 0.40000000596, 0.40000000596, 0.5, 0.40000000596, 0.699999988079, 0.699999988079, 0.20000000298, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.20000000298, 0.899999976158, 0.300000011921, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.800000011921, 0.600000023842, 0.10000000149, 0.5, 0.600000023842, 0.600000023842, 0.40000000596, 0.300000011921, 0.20000000298, 0.300000011921, 0.10000000149, 0.40000000596, 0.10000000149, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.699999988079, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.20000000298, 0.5, 0.5, 0.20000000298, 0.899999976158, 0.20000000298, 0.5, 0.800000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.10000000149, 0.800000011921, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.300000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.800000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.800000011921, 0.800000011921, 0.600000023842, 0.5, 0.699999988079, 0.20000000298, 0.20000000298, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.40000000596, 0.699999988079, 0.40000000596, 0.699999988079, 0.300000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.699999988079, 0.20000000298, 0.800000011921, 0.699999988079, 0.5, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.5, 0.699999988079, 0.899999976158, 0.40000000596, 0.899999976158, 0.20000000298, 0.10000000149, 0.20000000298, 0.5, 0.699999988079, 0.10000000149, 0.699999988079, 0.20000000298, 0.20000000298, 0.800000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.699999988079, 0.699999988079, 0.899999976158, 0.20000000298, 0.300000011921, 0.300000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.40000000596, 0.5, 0.5, 0.5, 0.10000000149, 0.300000011921, 0.5, 0.5, 0.300000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.20000000298, 0.699999988079, 0.699999988079, 0.600000023842, 0.300000011921, 0.600000023842, 0.20000000298, 0.899999976158, 0.20000000298, 0.300000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.40000000596, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.20000000298, 0.699999988079, 0.899999976158, 0.20000000298, 0.899999976158, 0.300000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.899999976158, 0.699999988079, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.5, 0.40000000596, 0.10000000149, 0.800000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.600000023842, 0.10000000149, 0.600000023842, 0.300000011921, 0.800000011921, 0.899999976158, 0.899999976158, 0.600000023842, 0.10000000149, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.10000000149, 0.5, 0.800000011921, 0.800000011921, 0.5, 0.699999988079, 0.699999988079, 0.40000000596, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.600000023842, 0.800000011921, 0.300000011921, 0.10000000149, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.699999988079, 0.5, 0.699999988079, 0.699999988079, 0.600000023842, 0.5, 0.600000023842, 0.899999976158, 0.40000000596, 0.5, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.899999976158, 0.300000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.40000000596, 0.20000000298, 0.699999988079, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.800000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.699999988079, 0.699999988079, 0.600000023842, 0.899999976158, 0.600000023842, 0.699999988079, 0.699999988079, 0.40000000596, 0.800000011921, 0.699999988079, 0.40000000596, 0.600000023842, 0.5, 0.20000000298, 0.800000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.300000011921, 0.699999988079, 0.5, 0.699999988079, 0.600000023842, 0.20000000298, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.40000000596, 0.699999988079, 0.300000011921, 0.800000011921, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.10000000149, 0.800000011921, 0.699999988079, 0.20000000298, 0.300000011921, 0.5, 0.300000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.699999988079, 0.600000023842, 0.5, 0.10000000149, 0.5, 0.800000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.699999988079, 0.40000000596,
+
+L3_cSYRK_C_nn
+0.300000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.699999988079, 0.800000011921, 0.40000000596, 0.600000023842, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.800000011921, 0.10000000149, 0.600000023842, 0.800000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.899999976158, 0.40000000596, 0.699999988079, 0.10000000149, 0.899999976158, 0.800000011921, 0.300000011921, 0.600000023842, 0.40000000596, 0.40000000596, 0.5, 0.899999976158, 0.20000000298, 0.699999988079, 0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.5, 0.300000011921, 0.300000011921, 0.40000000596, 0.5, 0.10000000149, 0.20000000298, 0.699999988079, 0.899999976158, 0.899999976158, 0.899999976158, 0.40000000596, 0.10000000149, 0.600000023842, 0.5, 0.300000011921, 0.800000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.600000023842, 0.5, 0.699999988079, 0.699999988079, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.800000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.40000000596, 0.5, 0.300000011921, 0.40000000596, 0.5, 0.300000011921, 0.20000000298, 0.5, 0.600000023842, 0.899999976158, 0.10000000149, 0.300000011921, 0.600000023842, 0.800000011921, 0.40000000596, 0.300000011921, 0.10000000149, 0.5, 0.20000000298, 0.20000000298, 0.40000000596, 0.600000023842, 0.699999988079, 0.20000000298, 0.300000011921, 0.5, 0.600000023842, 0.10000000149, 0.600000023842, 0.40000000596, 0.5, 0.40000000596, 0.899999976158, 0.10000000149, 0.699999988079, 0.899999976158, 0.800000011921, 0.10000000149, 0.300000011921, 0.699999988079, 0.10000000149, 0.899999976158, 0.600000023842, 0.300000011921, 0.40000000596, 0.5, 0.600000023842, 0.10000000149, 0.40000000596, 0.20000000298, 0.899999976158, 0.20000000298, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.600000023842, 0.40000000596, 0.5, 0.300000011921, 0.600000023842, 0.5, 0.40000000596, 0.300000011921, 0.40000000596, 0.40000000596, 0.20000000298, 0.800000011921, 0.800000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.5, 0.10000000149, 0.300000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.40000000596, 0.800000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.10000000149, 0.600000023842, 0.800000011921, 0.300000011921, 0.300000011921, 0.800000011921, 0.899999976158, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.899999976158, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.5, 0.5, 0.800000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.10000000149, 0.699999988079, 0.10000000149, 0.20000000298, 0.20000000298, 0.5, 0.699999988079, 0.20000000298, 0.600000023842, 0.10000000149, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.5, 0.40000000596, 0.5, 0.300000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, 0.600000023842, 0.10000000149, 0.300000011921, 0.5, 0.600000023842, 0.899999976158, 0.5, 0.40000000596, 0.20000000298, 0.800000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.899999976158, 0.20000000298, 0.600000023842, 0.10000000149, 0.300000011921, 0.800000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.5, 0.699999988079, 0.899999976158, 0.40000000596, 0.40000000596, 0.699999988079, 0.5, 0.5, 0.600000023842, 0.10000000149, 0.800000011921, 0.800000011921, 0.699999988079, 0.699999988079, 0.5, 0.5, 0.899999976158, 0.10000000149, 0.800000011921, 0.899999976158, 0.20000000298, 0.20000000298, 0.40000000596, 0.899999976158, 0.20000000298, 0.699999988079, 0.899999976158, 0.899999976158, 0.800000011921, 0.10000000149, 0.600000023842, 0.699999988079, 0.899999976158, 0.300000011921, 0.40000000596, 0.800000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.5, 0.800000011921, 0.899999976158, 0.5, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.899999976158, 0.40000000596, 0.20000000298, 0.40000000596, 0.5, 0.899999976158, 0.5, 0.40000000596, 0.600000023842, 0.20000000298, 0.800000011921, 0.20000000298, 0.800000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.899999976158, 0.899999976158, 0.5, 0.300000011921, 0.300000011921, 0.699999988079, 0.800000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.40000000596, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.899999976158, 0.699999988079, 0.10000000149, 0.699999988079, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.800000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.5, 0.600000023842, 0.800000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.10000000149, 0.20000000298, 0.5, 0.10000000149, 0.899999976158, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.20000000298, 0.699999988079, 0.10000000149, 0.800000011921, 0.5, 0.899999976158, 0.899999976158, 0.20000000298, 0.5, 0.699999988079, 0.20000000298, 0.40000000596, 0.600000023842, 0.40000000596, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.40000000596, 0.600000023842, 0.5, 0.600000023842, 0.899999976158, 0.600000023842, 0.300000011921, 0.5, 0.10000000149, 0.699999988079, 0.10000000149, 0.20000000298, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.5, 0.699999988079, 0.300000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.10000000149, 0.600000023842, 0.20000000298, 0.699999988079, 0.40000000596, 0.10000000149, 0.600000023842, 0.5, 0.899999976158, 0.10000000149, 0.800000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.40000000596, 0.5, 0.300000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.899999976158, 0.800000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.5, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.600000023842, 0.20000000298, 0.40000000596, 0.800000011921, 0.10000000149, 0.20000000298, 0.600000023842, 0.20000000298, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.40000000596, 0.40000000596, 0.600000023842, 0.800000011921, 0.600000023842, 0.10000000149, 0.600000023842, 0.20000000298, 0.5, 0.699999988079, 0.800000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.40000000596, 0.600000023842, 0.5, 0.800000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.40000000596, 0.10000000149, 0.20000000298, 0.899999976158, 0.699999988079, 0.5, 0.300000011921, 0.300000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.600000023842, 0.40000000596, 0.300000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.800000011921, 0.20000000298, 0.600000023842, 0.10000000149, 0.300000011921, 0.899999976158, 0.20000000298, 0.20000000298, 0.800000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.600000023842, 0.10000000149, 0.600000023842, 0.600000023842, 0.20000000298, 0.5, 0.300000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.699999988079, 0.5, 0.600000023842, 0.40000000596, 0.40000000596, 0.5, 0.699999988079, 0.10000000149, 0.5, 0.899999976158, 0.20000000298, 0.600000023842, 0.40000000596, 0.10000000149, 0.699999988079, 0.899999976158, 0.20000000298, 0.699999988079, 0.899999976158, 0.20000000298, 0.800000011921, 0.10000000149, 0.5, 0.40000000596, 0.40000000596, 0.5, 0.899999976158, 0.5, 0.5, 0.300000011921, 0.899999976158, 0.800000011921, 0.699999988079, 0.40000000596, 0.10000000149, 0.40000000596, 0.5, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.699999988079, 0.600000023842, 0.600000023842, 0.10000000149, 0.899999976158, 0.800000011921, 0.899999976158, 0.600000023842, 0.600000023842, 0.800000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.800000011921, 0.5, 0.600000023842, 0.40000000596, 0.5, 0.10000000149, 0.20000000298,
+
+L3_cSYRK_o_N
+3.07000007957, 9.07999997854, 2.4000000529, 9.34000008315, 1.03999997362, 9.07000017568, 2.71000000328, 9.05000000969, -0.139999984801, 8.4600000003, 2.24999998808, 10.8500000678, 2.14000003546, 9.83000006199, 1.49000001758, 8.01000012249, 1.55000002012, 9.1700000006, 2.39000008985, 8.31000006288, 2.89999992549, 9.96999990001, 2.99999999702, 7.68000001654, 0.900000044703, 9.07000003859, 3.65999993548, 9.43999998406, 1.9800000076, 8.70000013784, 2.56999992535, 10.200000114, 4.199999962, 7.9300000523, 2.4000000529, 9.34000008315, 1.18000013947, 8.92000017643, -0.109999980927, 8.55000020713, 1.77000002667, 8.49000008538, 0.909999978691, 9.839999993, 1.32000004455, 9.50000019297, 1.99000001535, 10.3500000916, 0.799999988824, 7.71000009418, 1.42000003561, 9.21000003159, 1.69000007346, 9.39000005409, 1.60999997869, 9.12000001177, 2.60999999732, 8.09000008762, -0.169999934286, 9.64000014126, 2.13000001878, 8.51000007406, 2.29999995157, 9.75000013039, 1.06000001296, 10.970000084, 3.30000004992, 7.40000011548, 1.03999997362, 9.07000017568, -0.109999980927, 8.55000020713, -0.220000104904, 7.58000022441, -0.550000030547, 8.11000009418, -0.730000087321, 8.07000009373, 0.509999933988, 10.2400001293, -0.370000074357, 9.3600001128, 0.179999972582, 8.09000013977, -0.350000010431, 7.37000010863, 0.430000021011, 8.30000016615, -0.700000080466, 8.76000000775, 0.739999998212, 8.35000010654, -1.29999997243, 8.48000012606, 0.829999938309, 8.81000007555, 0.939999921471, 8.52000015035, -0.270000160784, 9.610000121, 1.43999996915, 7.34000013009, 2.71000000328, 9.05000000969, 1.77000002667, 8.49000008538, -0.550000030547, 8.11000009418, 1.14999999404, 8.20000004023, -0.369999970794, 8.68999999151, 0.989999951273, 9.8100000681, 1.91999987915, 9.8300000903, 1.87999992117, 7.65000007972, 1.27999995172, 7.50000003129, 0.970000069141, 9.12000002146, 0.619999897033, 10.0599998677, 2.23999998257, 7.26000006363, -0.289999989271, 8.81000006214, 1.75999993771, 7.93000005826, 1.56999996036, 8.66000006661, 1.13999984026, 9.74000004217, 2.73999997139, 7.02000009, -0.139999984801, 8.4600000003, 0.909999978691, 9.839999993, -0.730000087321, 8.07000009373, -0.369999970794, 8.68999999151, -1.06000005692, 7.99999996722, -0.180000003129, 10.43999999, -0.490000026524, 9.20000002012, -0.460000012964, 8.33999997586, -0.380000002384, 8.69999994934, 0.440000073463, 9.2599999921, -0.340000010878, 9.70999986097, 0.819999979734, 7.59999996498, -0.820000054985, 9.41999997526, 0.229999971092, 8.589999917, 0.959999866933, 8.61000006139, -0.630000083596, 10.2599999563, 1.75999994889, 7.19000006005, 2.24999998808, 10.8500000678, 1.32000004455, 9.50000019297, 0.509999933988, 10.2400001293, 0.989999951273, 9.8100000681, -0.180000003129, 10.43999999, 1.20999997199, 11.4000001371, 0.989999979585, 11.6300000851, 0.0900000332296, 9.1900001502, 1.21999996856, 9.40000009611, 0.730000050813, 9.71000007555, 0.709999933243, 9.9599999921, 1.99999997243, 8.81000006884, -0.680000009835, 10.1300001, 1.43999996543, 9.97000000954, 0.989999976605, 10.6600001076, 0.39999987185, 12.120000046, 2.65999995336, 8.68000014544, 2.14000003546, 9.83000006199, 1.99000001535, 10.3500000916, -0.370000074357, 9.3600001128, 1.91999987915, 9.8300000903, -0.490000026524, 9.20000002012, 0.989999979585, 11.6300000851, 0.889999954998, 11.9800000843, 1.3499999322, 9.12000015408, 0.649999999255, 10.2800000113, 1.25000007153, 9.73000009701, 0.9399999699, 12.3499999262, 1.51000005171, 8.330000135, -0.500000032783, 10.3900000891, 2.10999999881, 9.84000001386, 1.25999990717, 9.42000016153, 1.17999980643, 11.7200000677, 3.1199999842, 7.96000013366, 1.49000001758, 8.01000012249, 0.799999988824, 7.71000009418, 0.179999972582, 8.09000013977, 1.87999992117, 7.65000007972, -0.460000012964, 8.33999997586, 0.0900000332296, 9.1900001502, 1.3499999322, 9.12000015408, 0.710000000298, 7.7800001961, 1.07999999493, 7.75000006035, 0.640000028759, 8.20000013113, 1.29999990836, 8.6999999918, 1.3199999924, 7.52000011757, -0.119999984205, 8.13000012159, 0.430000045598, 7.2100000912, 1.88999989316, 8.26000008747, 1.00999989748, 10.180000097, 2.13999997288, 7.05000016242, 1.55000002012, 9.1700000006, 1.42000003561, 9.21000003159, -0.350000010431, 7.37000010863, 1.27999995172, 7.50000003129, -0.380000002384, 8.69999994934, 1.21999996856, 9.40000009611, 0.649999999255, 10.2800000113, 1.07999999493, 7.75000006035, 0.539999983311, 7.87999995768, 0.260000056922, 8.61000002041, 0.17999994725, 8.56999994621, 1.78999999523, 7.67000001326, -0.0999999970198, 8.25000003204, 1.1799999629, 7.47000002891, 0.67999995172, 8.87000003338, 0.339999897629, 9.64999999404, 2.3699999477, 7.24000012338, 2.39000008985, 8.31000006288, 1.69000007346, 9.39000005409, 0.430000021011, 8.30000016615, 0.970000069141, 9.12000002146, 0.440000073463, 9.2599999921, 0.730000050813, 9.71000007555, 1.25000007153, 9.73000009701, 0.640000028759, 8.20000013113, 0.260000056922, 8.61000002041, 1.39000009805, 8.48000006348, 0.420000003576, 9.20999998763, 1.57000008702, 8.15000008792, -0.389999918491, 8.9900000973, 1.35000005811, 9.02999999791, 1.65999993697, 8.98000008881, 0.339999949038, 10.4400000772, 2.75000005811, 7.5800001052, 2.89999992549, 9.96999990001, 1.60999997869, 9.12000001177, -0.700000080466, 8.76000000775, 0.619999897033, 10.0599998677, -0.340000010878, 9.70999986097, 0.709999933243, 9.9599999921, 0.9399999699, 12.3499999262, 1.29999990836, 8.6999999918, 0.17999994725, 8.56999994621, 0.420000003576, 9.20999998763, 0.909999931753, 10.8399997821, 2.82999985933, 9.04999997243, -1.30999998242, 9.33999998704, 2.19999992028, 8.6299999249, 0.359999940693, 9.87000000507, 0.309999860227, 11.1199998985, 2.03999991849, 8.83999997213, 2.99999999702, 7.68000001654, 2.60999999732, 8.09000008762, 0.739999998212, 8.35000010654, 2.23999998257, 7.26000006363, 0.819999979734, 7.59999996498, 1.99999997243, 8.81000006884, 1.51000005171, 8.330000135, 1.3199999924, 7.52000011757, 1.78999999523, 7.67000001326, 1.57000008702, 8.15000008792, 2.82999985933, 9.04999997243, 1.79999999255, 6.80000003725, 1.20000002608, 8.33000006199, 2.41999993578, 7.21999999538, 1.51999996781, 7.84000016659, 2.0299999316, 9.82000006244, 2.72999998301, 6.55000011846, 0.900000044703, 9.07000003859, -0.169999934286, 9.64000014126, -1.29999997243, 8.48000012606, -0.289999989271, 8.81000006214, -0.820000054985, 9.41999997526, -0.680000009835, 10.1300001, -0.500000032783, 10.3900000891, -0.119999984205, 8.13000012159, -0.0999999970198, 8.25000003204, -0.389999918491, 8.9900000973, -1.30999998242, 9.33999998704, 1.20000002608, 8.33000006199, -1.48999996841, 9.14000002354, 0.150000009686, 8.78000003144, 0.459999977946, 8.5400000906, -0.850000011921, 10.2800000463, 1.31999997973, 8.00000009909, 3.65999993548, 9.43999998406, 2.13000001878, 8.51000007406, 0.829999938309, 8.81000007555, 1.75999993771, 7.93000005826, 0.229999971092, 8.589999917, 1.43999996543, 9.97000000954, 2.10999999881, 9.84000001386, 0.430000045598, 7.2100000912, 1.1799999629, 7.47000002891, 1.35000005811, 9.02999999791, 2.19999992028, 8.6299999249, 2.41999993578, 7.21999999538, 0.150000009686, 8.78000003144, 2.64999993742, 8.739999955, 1.64999995381, 8.47000004977, 1.63999988943, 10.2500000007, 3.64999997616, 8.06000010908, 1.9800000076, 8.70000013784, 2.29999995157, 9.75000013039, 0.939999921471, 8.52000015035, 1.56999996036, 8.66000006661, 0.959999866933, 8.61000006139, 0.989999976605, 10.6600001076, 1.25999990717, 9.42000016153, 1.88999989316, 8.26000008747, 0.67999995172, 8.87000003338, 1.65999993697, 8.98000008881, 0.359999940693, 9.87000000507, 1.51999996781, 7.84000016659, 0.459999977946, 8.5400000906, 1.64999995381, 8.47000004977, 2.48999982089, 8.70000016689, 2.08999981046, 11.0400000265, 2.84999997243, 7.45000016615, 2.56999992535, 10.200000114, 1.06000001296, 10.970000084, -0.270000160784, 9.610000121, 1.13999984026, 9.74000004217, -0.630000083596, 10.2599999563, 0.39999987185, 12.120000046, 1.17999980643, 11.7200000677, 1.00999989748, 10.180000097, 0.339999897629, 9.64999999404, 0.339999949038, 10.4400000772, 0.309999860227, 11.1199998985, 2.0299999316, 9.82000006244, -0.850000011921, 10.2800000463, 1.63999988943, 10.2500000007, 2.08999981046, 11.0400000265, 0.629999763966, 11.4000000522, 3.13999990061, 8.88000014395, 4.199999962, 7.9300000523, 3.30000004992, 7.40000011548, 1.43999996915, 7.34000013009, 2.73999997139, 7.02000009, 1.75999994889, 7.19000006005, 2.65999995336, 8.68000014544, 3.1199999842, 7.96000013366, 2.13999997288, 7.05000016242, 2.3699999477, 7.24000012338, 2.75000005811, 7.5800001052, 2.03999991849, 8.83999997213, 2.72999998301, 6.55000011846, 1.31999997973, 8.00000009909, 3.64999997616, 8.06000010908, 2.84999997243, 7.45000016615, 3.13999990061, 8.88000014395, 3.14999995381, 5.98000013202,
+
+L3_cSYRK_A_kn
+0.800000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.699999988079, 0.899999976158, 0.40000000596, 0.20000000298, 0.20000000298, 0.300000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.20000000298, 0.600000023842, 0.5, 0.20000000298, 0.40000000596, 0.899999976158, 0.600000023842, 0.20000000298, 0.40000000596, 0.899999976158, 0.899999976158, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.5, 0.5, 0.5, 0.800000011921, 0.899999976158, 0.899999976158, 0.20000000298, 0.300000011921, 0.800000011921, 0.300000011921, 0.300000011921, 0.5, 0.5, 0.5, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.300000011921, 0.699999988079, 0.300000011921, 0.40000000596, 0.800000011921, 0.899999976158, 0.5, 0.40000000596, 0.699999988079, 0.699999988079, 0.800000011921, 0.5, 0.699999988079, 0.5, 0.300000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.40000000596, 0.600000023842, 0.899999976158, 0.40000000596, 0.5, 0.300000011921, 0.40000000596, 0.5, 0.20000000298, 0.300000011921, 0.600000023842, 0.800000011921, 0.899999976158, 0.300000011921, 0.800000011921, 0.20000000298, 0.5, 0.600000023842, 0.800000011921, 0.600000023842, 0.10000000149, 0.5, 0.600000023842, 0.899999976158, 0.10000000149, 0.899999976158, 0.600000023842, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.800000011921, 0.5, 0.800000011921, 0.10000000149, 0.5, 0.699999988079, 0.600000023842, 0.10000000149, 0.5, 0.10000000149, 0.40000000596, 0.40000000596, 0.20000000298, 0.699999988079, 0.40000000596, 0.40000000596, 0.300000011921, 0.300000011921, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.10000000149, 0.10000000149, 0.600000023842, 0.300000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.699999988079, 0.40000000596, 0.600000023842, 0.800000011921, 0.40000000596, 0.20000000298, 0.899999976158, 0.10000000149, 0.699999988079, 0.300000011921, 0.20000000298, 0.20000000298, 0.40000000596, 0.20000000298, 0.800000011921, 0.800000011921, 0.40000000596, 0.300000011921, 0.899999976158, 0.10000000149, 0.600000023842, 0.10000000149, 0.899999976158, 0.600000023842, 0.10000000149, 0.40000000596, 0.300000011921, 0.5, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.300000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.300000011921, 0.10000000149, 0.800000011921, 0.20000000298, 0.300000011921, 0.699999988079, 0.899999976158, 0.600000023842, 0.899999976158, 0.699999988079, 0.300000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.899999976158, 0.40000000596, 0.300000011921, 0.600000023842, 0.899999976158, 0.899999976158, 0.300000011921, 0.600000023842, 0.5, 0.300000011921, 0.40000000596, 0.300000011921, 0.5, 0.10000000149, 0.600000023842, 0.300000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.40000000596, 0.699999988079, 0.800000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.699999988079, 0.20000000298, 0.300000011921, 0.5, 0.40000000596, 0.899999976158, 0.20000000298, 0.899999976158, 0.800000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.40000000596, 0.300000011921, 0.40000000596, 0.5, 0.40000000596, 0.300000011921, 0.600000023842, 0.10000000149, 0.5, 0.600000023842, 0.899999976158, 0.800000011921, 0.899999976158, 0.600000023842, 0.10000000149, 0.800000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.10000000149, 0.5, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.20000000298, 0.40000000596, 0.5, 0.5, 0.5, 0.600000023842, 0.40000000596, 0.300000011921, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.5, 0.40000000596, 0.699999988079, 0.600000023842, 0.899999976158, 0.10000000149, 0.699999988079, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.300000011921, 0.5, 0.40000000596, 0.20000000298, 0.10000000149, 0.899999976158, 0.600000023842, 0.5, 0.10000000149, 0.899999976158, 0.600000023842, 0.800000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.5, 0.5, 0.300000011921, 0.300000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.5, 0.40000000596, 0.10000000149, 0.40000000596, 0.699999988079, 0.699999988079, 0.899999976158, 0.899999976158, 0.40000000596, 0.600000023842, 0.10000000149, 0.10000000149, 0.300000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.40000000596, 0.20000000298, 0.5, 0.10000000149, 0.5, 0.800000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.20000000298, 0.20000000298, 0.20000000298, 0.5, 0.800000011921, 0.600000023842, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.800000011921, 0.899999976158, 0.800000011921, 0.5, 0.800000011921, 0.20000000298, 0.600000023842, 0.600000023842, 0.40000000596, 0.40000000596, 0.800000011921, 0.5, 0.800000011921, 0.20000000298, 0.300000011921, 0.800000011921, 0.699999988079, 0.40000000596, 0.699999988079, 0.10000000149, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.899999976158, 0.699999988079, 0.20000000298, 0.600000023842, 0.300000011921, 0.600000023842, 0.600000023842, 0.600000023842, 0.600000023842, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.5, 0.800000011921, 0.5, 0.40000000596, 0.899999976158, 0.40000000596, 0.899999976158, 0.699999988079, 0.20000000298, 0.300000011921, 0.10000000149, 0.20000000298, 0.300000011921, 0.699999988079, 0.800000011921, 0.699999988079, 0.5, 0.40000000596, 0.800000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.40000000596, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.899999976158, 0.699999988079, 0.40000000596, 0.20000000298, 0.5, 0.20000000298, 0.10000000149, 0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.300000011921, 0.20000000298, 0.5, 0.800000011921, 0.600000023842, 0.5, 0.800000011921, 0.800000011921, 0.600000023842, 0.300000011921, 0.5, 0.800000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.5, 0.20000000298, 0.10000000149, 0.899999976158, 0.600000023842, 0.699999988079, 0.40000000596, 0.800000011921, 0.20000000298, 0.20000000298, 0.10000000149, 0.699999988079, 0.10000000149, 0.300000011921, 0.600000023842, 0.800000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.699999988079, 0.20000000298, 0.600000023842, 0.800000011921, 0.899999976158, 0.20000000298, 0.20000000298, 0.20000000298, 0.5, 0.800000011921, 0.5, 0.5, 0.600000023842, 0.699999988079, 0.899999976158, 0.600000023842, 0.20000000298, 0.699999988079, 0.600000023842, 0.300000011921, 0.5, 0.600000023842, 0.40000000596, 0.899999976158, 0.10000000149, 0.699999988079, 0.699999988079, 0.699999988079, 0.300000011921, 0.40000000596, 0.300000011921, 0.300000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.20000000298, 0.300000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.899999976158, 0.5, 0.40000000596, 0.600000023842, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.800000011921, 0.40000000596, 0.10000000149, 0.20000000298, 0.5, 0.300000011921, 0.20000000298, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.20000000298, 0.600000023842, 0.300000011921, 0.600000023842, 0.600000023842, 0.5, 0.5, 0.800000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.300000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.20000000298,
+
+L3_cSYRK_o_T
+0.949999980628, 8.2800001052, 0.210000005513, 8.81000012174, 0.789999962449, 8.64000018373, -0.250000049174, 9.08000008509, -0.0800000098348, 7.410000121, -0.39999993816, 8.23000010744, 0.109999996573, 6.85000005662, 0.979999960661, 9.41000010163, 0.76999998495, 7.81000015602, 2.26999994993, 7.61000017092, -0.240000042915, 6.03000011861, 1.20000000596, 8.12000012428, 0.390000051111, 6.7500001274, 0.480000086576, 9.60000014827, 1.04000000194, 6.5100001277, 0.839999994487, 7.62000018835, 0.449999999255, 8.43000007913, 0.210000005513, 8.81000012174, -1.05999982446, 8.90000014305, 0.290000062287, 9.05000018403, -0.759999983907, 9.25000008792, 1.07000004753, 8.4300001812, -0.769999973774, 9.20000013486, 0.979999950975, 7.91000007629, -0.429999985993, 8.66000009269, 1.87000000656, 8.60000009388, 0.669999984205, 10.0900001413, -0.379999993443, 7.14000016734, -0.279999887645, 8.65000002235, 0.140000074953, 9.07000014812, -0.729999799728, 10.7900000943, 0.679999988973, 6.95000016019, -0.599999918789, 7.91000015751, -0.309999907911, 9.25000009984, 0.789999962449, 8.64000018373, 0.290000062287, 9.05000018403, 0.0199999529123, 9.30000021011, -0.760000033081, 8.99000013456, 0.569999926835, 7.77000018463, -0.440000024289, 9.02000013918, -0.230000038892, 7.12000011757, 0.23999996841, 9.23000015065, 0.540000033975, 7.73000020206, 0.839999893159, 8.66000018135, -1.06000002339, 6.48000018269, -0.0499999806285, 8.87000006393, -0.869999998361, 8.25000014603, -0.189999892414, 9.88000017896, 0.259999954849, 7.00000010505, -0.430000030696, 8.4300002408, -0.199999983609, 8.71000009269, -0.250000049174, 9.08000008509, -0.759999983907, 9.25000008792, -0.760000033081, 8.99000013456, -1.5400000459, 9.02000012577, -0.530000036657, 8.59000009954, -1.86999999017, 8.19000008836, 0.0399999386072, 7.09000006005, -0.040000025034, 9.27000003189, 0.819999961853, 7.8500001438, 0.149999944866, 9.33000012904, -0.860000056177, 7.78000011042, -0.669999914914, 7.99000006005, -1.50999992952, 8.26000007257, -1.23999987081, 10.4200001042, -1.06000002861, 8.18999995947, -0.300000059605, 7.88000013128, -0.530000068694, 9.0100000532, -0.0800000098348, 7.410000121, 1.07000004753, 8.4300001812, 0.569999926835, 7.77000018463, -0.530000036657, 8.59000009954, 0.749999932945, 8.0600001657, -0.710000037551, 7.89000013381, -3.2037498876e-08, 6.73000008136, -0.109999992847, 7.62000012055, 0.839999973625, 7.46000019327, 1.00999995261, 8.19000018671, -0.349999984354, 6.96000010908, 0.220000010282, 7.05000013262, -0.519999961108, 8.25000014901, 0.27000011757, 9.12000015929, 0.679999966621, 6.99000007793, 0.659999983907, 7.48000019386, 0.429999988973, 8.28000010446, -0.39999993816, 8.23000010744, -0.769999973774, 9.20000013486, -0.440000024289, 9.02000013918, -1.86999999017, 8.19000008836, -0.710000037551, 7.89000013381, -0.930000063479, 7.76000015974, -0.54999999553, 7.19000006378, -0.720000002086, 8.5400000906, 0.329999990463, 8.02000012949, 0.0099999473989, 9.05000011697, -0.970000003576, 6.23000015661, -0.840000025779, 6.89000011593, -1.41999993578, 7.42000010341, -1.28999991477, 9.79000014797, -1.14000000045, 7.44000006303, -1.66000003085, 8.41000015751, -0.220000008792, 9.15000009537, 0.109999996573, 6.85000005662, 0.979999950975, 7.91000007629, -0.230000038892, 7.12000011757, 0.0399999386072, 7.09000006005, -3.2037498876e-08, 6.73000008136, -0.54999999553, 7.19000006378, -0.560000046492, 6.75999996603, 0.449999912083, 7.89000000641, 1.41999994397, 7.07000009149, 0.159999942929, 7.20000006482, -0.449999964982, 5.90000009388, -0.249999984354, 5.94000008985, -0.58999990806, 7.21000003904, 0.370000016987, 7.61000005618, -0.0800000083447, 6.26999997526, 0.449999926984, 7.26000007629, 0.389999996722, 6.99000000939, 0.979999960661, 9.41000010163, -0.429999985993, 8.66000009269, 0.23999996841, 9.23000015065, -0.040000025034, 9.27000003189, -0.109999992847, 7.62000012055, -0.720000002086, 8.5400000906, 0.449999912083, 7.89000000641, 0.739999944568, 10.1600000882, 1.23000000611, 8.37000010341, 1.17999992266, 8.28000014916, -0.660000056922, 7.50000010803, -0.379999919683, 8.92000010267, -0.310000009984, 7.90000005439, -0.98999985218, 9.84000011072, 1.39999991432, 6.87000006244, 0.680000030696, 8.25000014752, 0.709999949634, 9.13000010669, 0.76999998495, 7.81000015602, 1.87000000656, 8.60000009388, 0.540000033975, 7.73000020206, 0.819999961853, 7.8500001438, 0.839999973625, 7.46000019327, 0.329999990463, 8.02000012949, 1.41999994397, 7.07000009149, 1.23000000611, 8.37000010341, 1.72999999195, 7.52000013024, 1.36999990597, 8.10000009164, -0.100000018626, 5.79000016585, -0.00999992877245, 7.09000015318, 0.230000067204, 7.72000009149, 0.890000088364, 9.280000135, 0.490000030249, 7.40000000224, 0.830000001639, 8.1200002189, 1.12999998972, 8.08000014395, 2.26999994993, 7.61000017092, 0.669999984205, 10.0900001413, 0.839999893159, 8.66000018135, 0.149999944866, 9.33000012904, 1.00999995261, 8.19000018671, 0.0099999473989, 9.05000011697, 0.159999942929, 7.20000006482, 1.17999992266, 8.28000014916, 1.36999990597, 8.10000009164, 1.39999985695, 9.32000014067, 0.389999950528, 6.27000018165, 1.29999993891, 8.450000076, 0.100000011921, 8.77000015557, 1.11000006512, 10.9400000958, 0.549999943376, 7.86000006512, 0.209999930263, 8.18000018418, 1.04999997169, 9.63000015885, -0.240000042915, 6.03000011861, -0.379999993443, 7.14000016734, -1.06000002339, 6.48000018269, -0.860000056177, 7.78000011042, -0.349999984354, 6.96000010908, -0.970000003576, 6.23000015661, -0.449999964982, 5.90000009388, -0.660000056922, 7.50000010803, -0.100000018626, 5.79000016585, 0.389999950528, 6.27000018165, -0.760000004768, 5.22000016004, 0.119999974519, 6.81000013888, -1.40999990642, 6.26000014186, -0.379999939054, 7.29000016138, -0.709999989122, 5.41000006586, -0.450000012666, 6.31000018358, -0.949999977648, 7.92000004902, 1.20000000596, 8.12000012428, -0.279999887645, 8.65000002235, -0.0499999806285, 8.87000006393, -0.669999914914, 7.99000006005, 0.220000010282, 7.05000013262, -0.840000025779, 6.89000011593, -0.249999984354, 5.94000008985, -0.379999919683, 8.92000010267, -0.00999992877245, 7.09000015318, 1.29999993891, 8.450000076, 0.119999974519, 6.81000013888, -0.769999900758, 7.82000006318, -0.389999926686, 7.05000008419, -0.419999881387, 9.59000013456, -0.749999950081, 7.45000004098, 0.0900000585616, 8.25000008345, -0.109999983907, 9.53000002325, 0.390000051111, 6.7500001274, 0.140000074953, 9.07000014812, -0.869999998361, 8.25000014603, -1.50999992952, 8.26000007257, -0.519999961108, 8.25000014901, -1.41999993578, 7.42000010341, -0.58999990806, 7.21000003904, -0.310000009984, 7.90000005439, 0.230000067204, 7.72000009149, 0.100000011921, 8.77000015557, -1.40999990642, 6.26000014186, -0.389999926686, 7.05000008419, -1.11999979645, 7.54000008017, -1.21999985531, 9.08000013351, -0.179999889135, 6.4400000295, 0.100000017136, 8.58000016034, 0.8400000377, 9.27000001326, 0.480000086576, 9.60000014827, -0.729999799728, 10.7900000943, -0.189999892414, 9.88000017896, -1.23999987081, 10.4200001042, 0.27000011757, 9.12000015929, -1.28999991477, 9.79000014797, 0.370000016987, 7.61000005618, -0.98999985218, 9.84000011072, 0.890000088364, 9.280000135, 1.11000006512, 10.9400000958, -0.379999939054, 7.29000016138, -0.419999881387, 9.59000013456, -1.21999985531, 9.08000013351, 0.0700002688169, 12.3000001565, -0.0299999114871, 8.460000083, -0.459999866933, 9.72000015035, -0.0899998566508, 10.2400001331, 1.04000000194, 6.5100001277, 0.679999988973, 6.95000016019, 0.259999954849, 7.00000010505, -1.06000002861, 8.18999995947, 0.679999966621, 6.99000007793, -1.14000000045, 7.44000006303, -0.0800000083447, 6.26999997526, 1.39999991432, 6.87000006244, 0.490000030249, 7.40000000224, 0.549999943376, 7.86000006512, -0.709999989122, 5.41000006586, -0.749999950081, 7.45000004098, -0.179999889135, 6.4400000295, -0.0299999114871, 8.460000083, 0.130000030696, 5.5200000602, 1.22999999791, 7.5000001274, 0.249999992549, 7.21000004128, 0.839999994487, 7.62000018835, -0.599999918789, 7.91000015751, -0.430000030696, 8.4300002408, -0.300000059605, 7.88000013128, 0.659999983907, 7.48000019386, -1.66000003085, 8.41000015751, 0.449999926984, 7.26000007629, 0.680000030696, 8.25000014752, 0.830000001639, 8.1200002189, 0.209999930263, 8.18000018418, -0.450000012666, 6.31000018358, 0.0900000585616, 8.25000008345, 0.100000017136, 8.58000016034, -0.459999866933, 9.72000015035, 1.22999999791, 7.5000001274, -0.0199999782443, 6.16000018656, 0.289999990761, 7.8000001736, 0.449999999255, 8.43000007913, -0.309999907911, 9.25000009984, -0.199999983609, 8.71000009269, -0.530000068694, 9.0100000532, 0.429999988973, 8.28000010446, -0.220000008792, 9.15000009537, 0.389999996722, 6.99000000939, 0.709999949634, 9.13000010669, 1.12999998972, 8.08000014395, 1.04999997169, 9.63000015885, -0.949999977648, 7.92000004902, -0.109999983907, 9.53000002325, 0.8400000377, 9.27000001326, -0.0899998566508, 10.2400001331, 0.249999992549, 7.21000004128, 0.289999990761, 7.8000001736, -0.160000004768, 9.08000005454,
+
+L3_zSYRK_A_nk
+0.5, 0.7, 0.8, 0.2, 0.4, 0.8, 0.2, 0.1, 0.4, 0.6, 0.2, 0.5, 0.7, 0.7, 0.8, 0.1, 0.1, 0.6, 0.8, 0.8, 0.3, 0.9, 0.9, 0.1, 0.4, 0.8, 0.6, 0.6, 0.2, 0.4, 0.2, 0.3, 0.2, 0.2, 0.5, 0.5, 0.6, 0.7, 0.8, 0.9, 0.5, 0.1, 0.7, 0.1, 0.9, 0.7, 0.1, 0.1, 0.5, 0.6, 0.8, 0.8, 0.6, 0.2, 0.7, 0.1, 0.2, 0.6, 0.3, 0.6, 0.1, 0.7, 0.8, 0.4, 0.5, 0.7, 0.1, 0.3, 0.9, 0.2, 0.4, 0.6, 0.2, 0.9, 0.2, 0.7, 0.9, 0.2, 0.2, 0.8, 0.5, 0.8, 0.6, 0.4, 0.8, 0.3, 0.6, 0.5, 0.9, 0.8, 0.6, 0.5, 0.8, 0.5, 0.4, 0.7, 0.4, 0.8, 0.9, 0.9, 0.3, 0.6, 0.5, 0.9, 0.8, 0.3, 0.7, 0.5, 0.1, 0.6, 0.2, 0.5, 0.5, 0.6, 0.3, 0.1, 0.2, 0.9, 0.8, 0.7, 0.8, 0.2, 0.9, 0.4, 0.1, 0.5, 0.2, 0.1, 0.6, 0.8, 0.3, 0.3, 0.8, 0.3, 0.3, 0.6, 0.5, 0.5, 0.6, 0.8, 0.8, 0.4, 0.6, 0.2, 0.4, 0.3, 0.2, 0.5, 0.3, 0.1, 0.5, 0.9, 0.6, 0.8, 0.3, 0.6, 0.2, 0.1, 0.7, 0.9, 0.6, 0.4, 0.4, 0.3, 0.3, 0.1, 0.3, 0.8, 0.2, 0.4, 0.2, 0.9, 0.1, 0.7, 0.3, 0.7, 0.2, 0.4, 0.8, 0.9, 0.4, 0.4, 0.4, 0.5, 0.8, 0.8, 0.9, 0.8, 0.8, 0.5, 0.4, 0.7, 0.3, 0.4, 0.1, 0.9, 0.7, 0.4, 0.5, 0.4, 0.9, 0.7, 0.9, 0.5, 0.1, 0.1, 0.9, 0.9, 0.4, 0.2, 0.3, 0.4, 0.8, 0.4, 0.6, 0.3, 0.1, 0.2, 0.1, 0.8, 0.7, 0.3, 0.3, 0.3, 0.2, 0.9, 0.4, 0.3, 0.4, 0.1, 0.2, 0.9, 0.2, 0.1, 0.6, 0.6, 0.1, 0.7, 0.7, 0.6, 0.5, 0.6, 0.7, 0.7, 0.8, 0.5, 0.4, 0.7, 0.3, 0.2, 0.7, 0.6, 0.8, 0.3, 0.4, 0.5, 0.2, 0.7, 0.2, 0.5, 0.6, 0.4, 0.2, 0.9, 0.9, 0.4, 0.4, 0.1, 0.7, 0.4, 0.9, 0.6, 0.2, 0.2, 0.4, 0.8, 0.4, 0.5, 0.1, 0.6, 0.5, 0.8, 0.5, 0.7, 0.8, 0.3, 0.4, 0.6, 0.8, 0.3, 0.3, 0.7, 0.3, 0.2, 0.5, 0.3, 0.9, 0.7, 0.2, 0.1, 0.6, 0.7, 0.6, 0.9, 0.3, 0.7, 0.8, 0.7, 0.1, 0.5, 0.6, 0.6, 0.7, 0.5, 0.7, 0.5, 0.1, 0.6, 0.5, 0.2, 0.7, 0.5, 0.2, 0.9, 0.5, 0.6, 0.4, 0.3, 0.2, 0.8, 0.8, 0.9, 0.2, 0.1, 0.7, 0.7, 0.7, 0.4, 0.2, 0.5, 0.9, 0.6, 0.5, 0.2, 0.8, 0.4, 0.7, 0.1, 0.2, 0.7, 0.9, 0.9, 0.8, 0.1, 0.6, 0.7, 0.8, 0.6, 0.2, 0.1, 0.8, 0.6, 0.7, 0.4, 0.6, 0.2, 0.4, 0.8, 0.1, 0.8, 0.3, 0.1, 0.6, 0.9, 0.8, 0.3, 0.3, 0.4, 0.5, 0.1, 0.9, 0.6, 0.6, 0.5, 0.5, 0.4, 0.8, 0.4, 0.1, 0.4, 0.1, 0.6, 0.6, 0.9, 0.8, 0.4, 0.3, 0.8, 0.6, 0.3, 0.5, 0.1, 0.2, 0.3, 0.2, 0.4, 0.9, 0.2, 0.5, 0.5, 0.6, 0.7, 0.6, 0.2, 0.1, 0.8, 0.8, 0.4, 0.8, 0.6, 0.3, 0.5, 0.3, 0.6, 0.4, 0.9, 0.8, 0.7, 0.9, 0.3, 0.5, 0.9, 0.2, 0.8, 0.7, 0.9, 0.2, 0.9, 0.7, 0.6, 0.6, 0.1, 0.1, 0.8, 0.5, 0.3, 0.3, 0.3, 0.3, 0.4, 0.2, 0.3, 0.3, 0.7, 0.8, 0.8, 0.4, 0.4, 0.3, 0.8, 0.3, 0.2, 0.1, 0.3, 0.6, 0.5, 0.8, 0.7, 0.6, 0.7, 0.9, 0.3, 0.4, 0.4, 0.6, 0.6, 0.2, 0.2, 0.1, 0.7, 0.1, 0.2, 0.3, 0.8, 0.8, 0.3, 0.1, 0.4, 0.8, 0.9, 0.3, 0.2, 0.3, 0.5, 0.8, 0.3, 0.8, 0.7, 0.3, 0.6, 0.2, 0.8, 0.7, 0.7, 0.5, 0.1, 0.8, 0.8, 0.4, 0.9, 0.1, 0.8, 0.9, 0.8, 0.7, 0.4, 0.3, 0.5, 0.1, 0.4, 0.7, 0.4, 0.1, 0.1, 0.1, 0.9, 0.7, 0.9, 0.7, 0.8, 0.4, 0.5, 0.9, 0.3, 0.5, 0.3, 0.7, 0.5, 0.9, 0.7, 0.2, 0.6, 0.1, 0.2,
+
+L3_zSYRK_C_nn
+0.1, 0.5, 0.3, 0.9, 0.1, 0.7, 0.4, 0.9, 0.7, 0.4, 0.2, 0.4, 0.3, 0.5, 0.6, 0.8, 0.2, 0.9, 0.4, 0.8, 0.5, 0.1, 0.8, 0.1, 0.1, 0.4, 0.3, 0.4, 0.7, 0.3, 0.1, 0.9, 0.6, 0.7, 0.3, 0.9, 0.2, 0.4, 0.5, 0.5, 0.7, 0.7, 0.1, 0.8, 0.3, 0.9, 0.6, 0.6, 0.1, 0.4, 0.4, 0.3, 0.9, 0.7, 0.1, 0.3, 0.4, 0.3, 0.7, 0.9, 0.2, 0.2, 0.5, 0.7, 0.5, 0.6, 0.2, 0.9, 0.1, 0.7, 0.5, 0.5, 0.8, 0.9, 0.1, 0.6, 0.8, 0.1, 0.7, 0.3, 0.8, 0.9, 0.5, 0.8, 0.6, 0.4, 0.6, 0.6, 0.4, 0.2, 0.2, 0.3, 0.8, 0.6, 0.8, 0.5, 0.9, 0.2, 0.1, 0.4, 0.6, 0.6, 0.4, 0.9, 0.7, 0.7, 0.1, 0.6, 0.5, 0.7, 0.8, 0.2, 0.9, 0.3, 0.9, 0.5, 0.4, 0.3, 0.6, 0.4, 0.4, 0.5, 0.7, 0.2, 0.6, 0.2, 0.9, 0.1, 0.4, 0.1, 0.1, 0.3, 0.9, 0.5, 0.2, 0.5, 0.7, 0.4, 0.1, 0.8, 0.8, 0.1, 0.8, 0.2, 0.7, 0.3, 0.3, 0.5, 0.1, 0.8, 0.5, 0.1, 0.3, 0.2, 0.9, 0.5, 0.8, 0.7, 0.2, 0.7, 0.9, 0.8, 0.2, 0.2, 0.1, 0.8, 0.5, 0.2, 0.8, 0.1, 0.2, 0.4, 0.3, 0.9, 0.7, 0.3, 0.9, 0.3, 0.3, 0.5, 0.2, 0.8, 0.9, 0.1, 0.4, 0.2, 0.4, 0.5, 0.4, 0.2, 0.7, 0.4, 0.4, 0.3, 0.2, 0.1, 0.9, 0.7, 0.8, 0.2, 0.3, 0.3, 0.9, 0.8, 0.3, 0.5, 0.6, 0.6, 0.8, 0.9, 0.9, 0.5, 0.1, 0.8, 0.9, 0.1, 0.5, 0.6, 0.7, 0.8, 0.4, 0.2, 0.8, 0.3, 0.5, 0.9, 0.6, 0.1, 0.5, 0.7, 0.2, 0.2, 0.7, 0.1, 0.9, 0.6, 0.7, 0.7, 0.6, 0.8, 0.1, 0.4, 0.5, 0.8, 0.4, 0.3, 0.5, 0.1, 0.4, 0.2, 0.7, 0.8, 0.4, 0.3, 0.1, 0.3, 0.4, 0.5, 0.3, 0.3, 0.2, 0.9, 0.9, 0.7, 0.4, 0.8, 0.6, 0.3, 0.1, 0.5, 0.8, 0.4, 0.2, 0.9, 0.4, 0.3, 0.6, 0.4, 0.6, 0.4, 0.3, 0.2, 0.4, 0.5, 0.4, 0.2, 0.1, 0.3, 0.5, 0.7, 0.6, 0.1, 0.4, 0.2, 0.2, 0.3, 0.4, 0.8, 0.8, 0.7, 0.7, 0.1, 0.9, 0.6, 0.8, 0.4, 0.4, 0.8, 0.9, 0.7, 0.6, 0.6, 0.4, 0.5, 0.9, 0.5, 0.4, 0.2, 0.8, 0.3, 0.4, 0.5, 0.6, 0.1, 0.2, 0.5, 0.1, 0.9, 0.6, 0.5, 0.6, 0.3, 0.6, 0.9, 0.8, 0.4, 0.4, 0.7, 0.5, 0.1, 0.5, 0.1, 0.1, 0.3, 0.4, 0.2, 0.7, 0.2, 0.8, 0.7, 0.7, 0.4, 0.5, 0.9, 0.3, 0.3, 0.4, 0.2, 0.1, 0.9, 0.8, 0.4, 0.6, 0.7, 0.9, 0.4, 0.4, 0.2, 0.5, 0.8, 0.4, 0.8, 0.7, 0.9, 0.8, 0.1, 0.4, 0.3, 0.2, 0.3, 0.6, 0.2, 0.2, 0.7, 0.4, 0.3, 0.6, 0.1, 0.2, 0.9, 0.2, 0.3, 0.6, 0.5, 0.6, 0.7, 0.8, 0.1, 0.3, 0.2, 0.3, 0.3, 0.6, 0.1, 0.5, 0.1, 0.1, 0.2, 0.1, 0.4, 0.7, 0.9, 0.8, 0.6, 0.9, 0.1, 0.9, 0.8, 0.2, 0.1, 0.5, 0.7, 0.9, 0.7, 0.4, 0.8, 0.6, 0.3, 0.9, 0.4, 0.3, 0.2, 0.6, 0.9, 0.6, 0.1, 0.2, 0.5, 0.8, 0.9, 0.3, 0.3, 0.3, 0.4, 0.2, 0.2, 0.8, 0.5, 0.4, 0.1, 0.2, 0.2, 0.9, 0.7, 0.2, 0.2, 0.4, 0.8, 0.8, 0.7, 0.6, 0.9, 0.4, 0.2, 0.3, 0.3, 0.6, 0.1, 0.4, 0.5, 0.1, 0.9, 0.2, 0.3, 0.3, 0.4, 0.7, 0.3, 0.5, 0.7, 0.9, 0.2, 0.1, 0.3, 0.1, 0.8, 0.8, 0.2, 0.7, 0.1, 0.6, 0.3, 0.7, 0.1, 0.8, 0.4, 0.5, 0.8, 0.6, 0.1, 0.2, 0.5, 0.1, 0.9, 0.9, 0.3, 0.5, 0.5, 0.7, 0.5, 0.1, 0.9, 0.5, 0.6, 0.1, 0.4, 0.9, 0.5, 0.5, 0.2, 0.3, 0.3, 0.9, 0.6, 0.1, 0.5, 0.9, 0.6, 0.4, 0.7, 0.4, 0.8, 0.5, 0.1, 0.8, 0.9, 0.2, 0.3, 0.5, 0.5, 0.2, 0.9, 0.1, 0.5, 0.6, 0.7, 0.2, 0.9, 0.6, 0.6, 0.2, 0.5, 0.8, 0.1, 0.9, 0.8, 0.7, 0.7, 0.8, 0.4, 0.8, 0.4, 0.5, 0.1, 0.7, 0.9, 0.1, 0.2, 0.3, 0.3, 0.3, 0.4, 0.7, 0.5, 0.1, 0.5, 0.1, 0.6,
+
+L3_zSYRK_o_N
+-0.69, 7.78, 0.26, 8.42, -0.3, 9.65, 0.06, 8.71, 0.33, 8.27, -0.98, 8.67, 0.27, 8.0, 0.04, 8.68, -0.58, 9.15, 0.54, 9.31, -0.1, 8.39, 1.46, 7.84, 0.03, 7.2, -0.29, 9.15, -0.21, 7.27, -0.7, 8.85, 0.28, 9.29, 0.26, 8.42, 1.04, 8.42, 1.3, 9.21, 0.75, 8.44, 0.77, 8.57, -0.9, 9.44, 1.56, 6.81, -0.15, 8.27, -0.25, 7.98, 1.29, 8.28, 0.9, 8.11, 2.07, 7.41, 0.71, 7.8, 0.47, 8.79, 0.68, 8.61, -0.22, 8.55, -0.39, 7.93, -0.3, 9.65, 1.3, 9.21, 0.81, 9.58, -0.67, 9.71, 0.19, 8.61, -0.53, 9.14, 0.53, 8.61, -0.12, 9.17, -0.06, 9.27, 0.2, 9.69, 0.05, 9.32, 1.02, 8.81, 0.17, 8.87, -0.37, 9.55, 0.37, 8.17, -0.81, 9.37, 0.18, 9.95, 0.06, 8.71, 0.75, 8.44, -0.67, 9.71, -0.19, 9.04, 0.34, 8.65, -0.09, 8.28, 0.37, 8.68, -1.0, 7.96, -0.71, 8.14, 0.19, 8.29, 0.38, 8.81, 0.83, 8.41, 1.47, 7.88, -0.93, 9.31, -0.47, 8.02, 0.01, 8.56, 0.04, 8.69, 0.33, 8.27, 0.77, 8.57, 0.19, 8.61, 0.34, 8.65, -0.24, 8.64, -1.78, 8.6, 0.4, 7.62, -0.83, 7.32, -0.58, 7.44, 1.21, 8.8, 0.96, 9.57, 1.78, 8.75, 0.32, 8.5, -0.22, 8.86, -1.19, 8.29, -0.09, 7.54, 0.59, 8.02, -0.98, 8.67, -0.9, 9.44, -0.53, 9.14, -0.09, 8.28, -1.78, 8.6, -1.92, 9.54, -0.28, 7.6, -1.18, 8.26, -1.56, 9.03, -0.58, 8.78, -0.24, 9.16, 0.71, 7.97, -0.95, 7.52, -1.16, 9.62, -0.83, 7.9, -1.51, 8.35, 0.05, 8.87, 0.27, 8.0, 1.56, 6.81, 0.53, 8.61, 0.37, 8.68, 0.4, 7.62, -0.28, 7.6, 1.47, 7.98, 1.03, 8.13, 0.52, 7.38, 0.37, 7.9, 0.51, 9.39, 1.86, 8.3, 0.78, 7.74, -0.98, 8.92, 0.36, 7.0, 0.53, 8.53, 0.67, 8.46, 0.04, 8.68, -0.15, 8.27, -0.12, 9.17, -1.0, 7.96, -0.83, 7.32, -1.18, 8.26, 1.03, 8.13, -0.65, 7.86, -1.03, 7.44, -0.5, 8.75, 0.5, 9.09, 1.19, 8.96, 0.71, 7.47, -1.25, 10.03, -0.46, 8.1, -0.82, 8.27, 0.18, 8.22, -0.58, 9.15, -0.25, 7.98, -0.06, 9.27, -0.71, 8.14, -0.58, 7.44, -1.56, 9.03, 0.52, 7.38, -1.03, 7.44, -0.35, 8.16, 0.03, 8.94, -0.09, 8.98, 1.27, 8.41, -0.32, 8.16, -0.55, 9.43, -0.95, 7.52, 0.08, 8.47, -0.07, 8.99, 0.54, 9.31, 1.29, 8.28, 0.2, 9.69, 0.19, 8.29, 1.21, 8.8, -0.58, 8.78, 0.37, 7.9, -0.5, 8.75, 0.03, 8.94, 0.18, 9.12, -0.01, 8.84, 1.02, 7.9, 0.67, 8.47, -0.4, 9.99, 0.83, 7.87, -0.73, 9.18, 0.1, 9.03, -0.1, 8.39, 0.9, 8.11, 0.05, 9.32, 0.38, 8.81, 0.96, 9.57, -0.24, 9.16, 0.51, 9.39, 0.5, 9.09, -0.09, 8.98, -0.01, 8.84, 0.78, 9.8, 0.76, 9.93, 0.84, 8.39, -0.89, 9.77, -0.31, 8.53, -0.68, 8.99, 1.35, 9.35, 1.46, 7.84, 2.07, 7.41, 1.02, 8.81, 0.83, 8.41, 1.78, 8.75, 0.71, 7.97, 1.86, 8.3, 1.19, 8.96, 1.27, 8.41, 1.02, 7.9, 0.76, 9.93, 2.34, 8.3, 1.7, 7.9, 0.52, 8.81, 0.68, 7.07, 0.22, 8.99, 0.84, 8.57, 0.03, 7.2, 0.71, 7.8, 0.17, 8.87, 1.47, 7.88, 0.32, 8.5, -0.95, 7.52, 0.78, 7.74, 0.71, 7.47, -0.32, 8.16, 0.67, 8.47, 0.84, 8.39, 1.7, 7.9, 0.82, 7.18, 0.45, 8.31, -0.46, 6.77, 0.3, 8.37, 0.64, 7.65, -0.29, 9.15, 0.47, 8.79, -0.37, 9.55, -0.93, 9.31, -0.22, 8.86, -1.16, 9.62, -0.98, 8.92, -1.25, 10.03, -0.55, 9.43, -0.4, 9.99, -0.89, 9.77, 0.52, 8.81, 0.45, 8.31, -1.29, 9.58, -1.64, 9.1, -2.19, 9.24, -0.86, 9.9, -0.21, 7.27, 0.68, 8.61, 0.37, 8.17, -0.47, 8.02, -1.19, 8.29, -0.83, 7.9, 0.36, 7.0, -0.46, 8.1, -0.95, 7.52, 0.83, 7.87, -0.31, 8.53, 0.68, 7.07, -0.46, 6.77, -1.64, 9.1, 0.17, 7.7, -0.63, 7.94, 0.56, 7.72, -0.7, 8.85, -0.22, 8.55, -0.81, 9.37, 0.01, 8.56, -0.09, 7.54, -1.51, 8.35, 0.53, 8.53, -0.82, 8.27, 0.08, 8.47, -0.73, 9.18, -0.68, 8.99, 0.22, 8.99, 0.3, 8.37, -2.19, 9.24, -0.63, 7.94, -1.47, 9.36, -0.31, 9.24, 0.28, 9.29, -0.39, 7.93, 0.18, 9.95, 0.04, 8.69, 0.59, 8.02, 0.05, 8.87, 0.67, 8.46, 0.18, 8.22, -0.07, 8.99, 0.1, 9.03, 1.35, 9.35, 0.84, 8.57, 0.64, 7.65, -0.86, 9.9, 0.56, 7.72, -0.31, 9.24, 0.35, 9.6,
+
+L3_zSYRK_A_kn
+0.4, 0.8, 0.7, 0.6, 0.9, 0.3, 0.7, 0.9, 0.7, 0.6, 0.3, 0.8, 0.7, 0.1, 0.8, 0.7, 0.1, 0.8, 0.4, 0.9, 0.3, 0.2, 0.7, 0.5, 0.1, 0.6, 0.7, 0.6, 0.4, 0.2, 0.6, 0.6, 0.9, 0.3, 0.4, 0.6, 0.4, 0.3, 0.2, 0.6, 0.4, 0.2, 0.3, 0.3, 0.2, 0.9, 0.8, 0.4, 0.6, 0.4, 0.1, 0.3, 0.2, 0.4, 0.8, 0.4, 0.1, 0.1, 0.4, 0.6, 0.9, 0.5, 0.6, 0.2, 0.3, 0.2, 0.8, 0.9, 0.2, 0.3, 0.9, 0.1, 0.3, 0.3, 0.7, 0.5, 0.1, 0.1, 0.6, 0.2, 0.1, 0.5, 0.2, 0.2, 0.1, 0.6, 0.3, 0.7, 0.1, 0.7, 0.5, 0.2, 0.8, 0.3, 0.8, 0.3, 0.7, 0.5, 0.8, 0.7, 0.7, 0.3, 0.4, 0.9, 0.3, 0.1, 0.6, 0.4, 0.9, 0.2, 0.1, 0.5, 0.5, 0.3, 0.8, 0.9, 0.5, 0.7, 0.2, 0.9, 0.9, 0.5, 0.3, 0.3, 0.3, 0.6, 0.6, 0.2, 0.2, 0.3, 0.2, 0.3, 0.1, 0.5, 0.4, 0.9, 0.1, 0.1, 0.6, 0.4, 0.8, 0.1, 0.6, 0.3, 0.1, 0.7, 0.9, 0.9, 0.8, 0.4, 0.9, 0.3, 0.5, 0.7, 0.8, 0.6, 0.4, 0.1, 0.8, 0.8, 0.6, 0.7, 0.2, 0.8, 0.8, 0.4, 0.6, 0.3, 0.6, 0.4, 0.3, 0.2, 0.3, 0.8, 0.3, 0.9, 0.2, 0.6, 0.7, 0.1, 0.1, 0.6, 0.4, 0.8, 0.3, 0.1, 0.4, 0.6, 0.4, 0.5, 0.5, 0.2, 0.3, 0.6, 0.5, 0.1, 0.7, 0.8, 0.2, 0.9, 0.2, 0.6, 0.9, 0.6, 0.7, 0.2, 0.3, 0.4, 0.3, 0.2, 0.1, 0.3, 0.4, 0.5, 0.2, 0.7, 0.9, 0.6, 0.3, 0.9, 0.1, 0.4, 0.7, 0.7, 0.7, 0.6, 0.6, 0.1, 0.9, 0.4, 0.7, 0.4, 0.3, 0.9, 0.6, 0.4, 0.3, 0.4, 0.5, 0.8, 0.3, 0.3, 0.4, 0.8, 0.5, 0.6, 0.2, 0.3, 0.5, 0.9, 0.4, 0.6, 0.5, 0.6, 0.1, 0.7, 0.3, 0.9, 0.8, 0.8, 0.8, 0.6, 0.8, 0.1, 0.3, 0.5, 0.1, 0.6, 0.7, 0.6, 0.1, 0.6, 0.4, 0.9, 0.7, 0.3, 0.8, 0.5, 0.5, 0.5, 0.7, 0.7, 0.1, 0.7, 0.3, 0.5, 0.7, 0.6, 0.6, 0.8, 0.5, 0.2, 0.6, 0.9, 0.9, 0.4, 0.6, 0.4, 0.9, 0.8, 0.8, 0.2, 0.9, 0.6, 0.6, 0.8, 0.1, 0.7, 0.6, 0.1, 0.5, 0.8, 0.8, 0.9, 0.4, 0.4, 0.3, 0.5, 0.9, 0.6, 0.2, 0.7, 0.6, 0.7, 0.9, 0.3, 0.5, 0.2, 0.6, 0.5, 0.8, 0.1, 0.3, 0.3, 0.3, 0.2, 0.6, 0.7, 0.9, 0.5, 0.3, 0.3, 0.6, 0.6, 0.4, 0.1, 0.2, 0.8, 0.9, 0.9, 0.7, 0.6, 0.6, 0.6, 0.6, 0.7, 0.3, 0.4, 0.3, 0.8, 0.4, 0.1, 0.7, 0.8, 0.4, 0.2, 0.5, 0.5, 0.3, 0.8, 0.6, 0.3, 0.1, 0.2, 0.2, 0.3, 0.1, 0.9, 0.6, 0.2, 0.7, 0.6, 0.9, 0.9, 0.4, 0.2, 0.9, 0.8, 0.4, 0.8, 0.6, 0.9, 0.6, 0.1, 0.9, 0.3, 0.2, 0.9, 0.6, 0.4, 0.7, 0.3, 0.8, 0.2, 0.4, 0.3, 0.1, 0.9, 0.1, 0.3, 0.9, 0.2, 0.6, 0.3, 0.7, 0.8, 0.4, 0.9, 0.4, 0.2, 0.4, 0.6, 0.8, 0.9, 0.4, 0.8, 0.3, 0.3, 0.6, 0.7, 0.7, 0.6, 0.2, 0.2, 0.5, 0.7, 0.7, 0.9, 0.9, 0.1, 0.5, 0.4, 0.1, 0.4, 0.7, 0.2, 0.8, 0.6, 0.3, 0.9, 0.6, 0.9, 0.5, 0.3, 0.1, 0.1, 0.4, 0.2, 0.6, 0.2, 0.4, 0.4, 0.7, 0.1, 0.4, 0.8, 0.6, 0.9, 0.6, 0.5, 0.8, 0.5, 0.9, 0.6, 0.6, 0.8, 0.8, 0.7, 0.3, 0.9, 0.2, 0.4, 0.4, 0.5, 0.5, 0.9, 0.6, 0.5, 0.5, 0.2, 0.6, 0.3, 0.2, 0.6, 0.6, 0.4, 0.4, 0.1, 0.7, 0.3, 0.3, 0.6, 0.3, 0.6, 0.1, 0.1, 0.1, 0.7, 0.5, 0.1, 0.9, 0.8, 0.7, 0.8, 0.7, 0.1, 0.5, 0.4, 0.8, 0.7, 0.7, 0.7, 0.1, 0.5, 0.3, 0.5, 0.7, 0.4, 0.7, 0.5, 0.4, 0.4, 0.4, 0.3, 0.4, 0.9, 0.6, 0.8, 0.6, 0.2, 0.7, 0.3, 0.6, 0.6,
+
+L3_zSYRK_o_T
+-2.26, 7.54, -0.38, 8.34, -0.75, 7.51, -1.5, 8.45, -1.09, 7.93, -2.1, 7.55, -0.75, 7.83, -1.17, 8.28, -3.23, 7.2, -0.65, 8.48, 0.16, 6.76, 0.1, 7.15, -0.35, 7.47, -0.88, 8.27, 0.19, 6.37, -1.06, 8.27, -1.19, 8.35, -0.38, 8.34, 1.16, 6.84, 2.65, 7.34, 1.24, 8.99, -0.36, 10.07, 0.05, 8.63, 1.03, 8.41, 0.85, 8.4, -0.78, 7.96, 1.52, 8.72, 1.92, 7.47, 1.61, 8.14, 1.79, 7.96, 0.92, 8.96, 2.06, 7.69, 2.76, 7.97, 1.54, 8.74, -0.75, 7.51, 2.65, 7.34, 2.26, 7.34, 0.8, 8.91, 1.84, 8.52, 0.69, 7.41, 1.79, 8.47, 1.85, 8.55, -0.07, 8.04, 1.89, 8.09, 2.14, 7.04, 1.69, 8.44, 2.79, 8.26, 1.87, 8.95, 2.46, 6.44, 1.78, 7.84, 1.31, 9.32, -1.5, 8.45, 1.24, 8.99, 0.8, 8.91, -0.44, 10.0, -1.13, 9.84, -0.18, 8.47, 1.17, 9.51, -0.3, 9.48, -1.99, 9.33, 0.29, 8.96, 1.55, 8.15, 0.07, 9.64, 1.64, 8.01, -0.17, 9.35, 0.06, 7.77, 1.12, 9.88, 0.14, 10.07, -1.09, 7.93, -0.36, 10.07, 1.84, 8.52, -1.13, 9.84, -1.06, 10.6, -1.51, 9.29, -0.34, 9.87, -1.02, 9.65, -2.3, 8.57, 0.32, 9.27, 1.84, 8.49, -0.89, 10.3, 0.29, 8.9, -0.33, 9.68, -0.02, 9.1, 0.86, 9.26, -0.13, 8.92, -2.1, 7.55, 0.05, 8.63, 0.69, 7.41, -0.18, 8.47, -1.51, 9.29, -2.0, 8.58, 0.15, 8.67, -0.68, 8.63, -2.4, 7.69, -0.85, 8.64, 0.62, 7.59, 0.06, 9.29, -0.05, 8.14, -0.91, 9.55, 0.39, 7.31, 0.14, 8.48, -0.47, 9.25, -0.75, 7.83, 1.03, 8.41, 1.79, 8.47, 1.17, 9.51, -0.34, 9.87, 0.15, 8.67, 1.53, 10.1, 0.56, 9.94, -2.09, 8.75, 1.71, 9.16, 1.94, 8.25, 0.9, 8.82, 2.5, 8.75, 0.49, 9.06, 0.63, 7.55, 1.51, 8.81, 0.45, 9.57, -1.17, 8.28, 0.85, 8.4, 1.85, 8.55, -0.3, 9.48, -1.02, 9.65, -0.68, 8.63, 0.56, 9.94, -0.39, 9.28, -2.73, 8.44, 0.1, 9.35, 0.96, 8.1, 0.56, 10.08, 1.54, 8.86, 0.32, 10.23, 0.75, 7.86, 0.99, 9.05, 0.41, 8.8, -3.23, 7.2, -0.78, 7.96, -0.07, 8.04, -1.99, 9.33, -2.3, 8.57, -2.4, 7.69, -2.09, 8.75, -2.73, 8.44, -3.48, 7.6, -1.09, 7.76, -0.46, 7.22, -1.99, 9.04, -0.27, 8.62, -1.4, 9.2, -0.29, 7.06, -0.33, 8.53, -1.49, 8.92, -0.65, 8.48, 1.52, 8.72, 1.89, 8.09, 0.29, 8.96, 0.32, 9.27, -0.85, 8.64, 1.71, 9.16, 0.1, 9.35, -1.09, 7.76, 0.23, 8.6, 1.2, 7.8, 1.08, 9.5, 1.96, 8.27, 0.34, 9.75, 0.69, 7.25, 0.85, 9.36, 0.99, 8.99, 0.16, 6.76, 1.92, 7.47, 2.14, 7.04, 1.55, 8.15, 1.84, 8.49, 0.62, 7.59, 1.94, 8.25, 0.96, 8.1, -0.46, 7.22, 1.2, 7.8, 2.47, 7.16, 2.34, 8.66, 3.34, 7.49, 1.89, 8.48, 1.74, 7.73, 2.35, 8.49, 1.38, 9.0, 0.1, 7.15, 1.61, 8.14, 1.69, 8.44, 0.07, 9.64, -0.89, 10.3, 0.06, 9.29, 0.9, 8.82, 0.56, 10.08, -1.99, 9.04, 1.08, 9.5, 2.34, 8.66, 1.3, 9.04, 1.69, 7.99, 0.46, 9.41, 0.96, 8.16, 2.15, 8.96, 0.09, 8.38, -0.35, 7.47, 1.79, 7.96, 2.79, 8.26, 1.64, 8.01, 0.29, 8.9, -0.05, 8.14, 2.5, 8.75, 1.54, 8.86, -0.27, 8.62, 1.96, 8.27, 3.34, 7.49, 1.69, 7.99, 2.09, 7.56, 1.42, 8.35, 1.85, 8.22, 2.75, 9.08, 0.98, 9.0, -0.88, 8.27, 0.92, 8.96, 1.87, 8.95, -0.17, 9.35, -0.33, 9.68, -0.91, 9.55, 0.49, 9.06, 0.32, 10.23, -1.4, 9.2, 0.34, 9.75, 1.89, 8.48, 0.46, 9.41, 1.42, 8.35, 0.9, 10.3, 0.86, 9.21, 1.49, 9.44, 0.7, 10.37, 0.19, 6.37, 2.06, 7.69, 2.46, 6.44, 0.06, 7.77, -0.02, 9.1, 0.39, 7.31, 0.63, 7.55, 0.75, 7.86, -0.29, 7.06, 0.69, 7.25, 1.74, 7.73, 0.96, 8.16, 1.85, 8.22, 0.86, 9.21, 1.26, 6.74, 2.33, 8.07, 1.4, 8.54, -1.06, 8.27, 2.76, 7.97, 1.78, 7.84, 1.12, 9.88, 0.86, 9.26, 0.14, 8.48, 1.51, 8.81, 0.99, 9.05, -0.33, 8.53, 0.85, 9.36, 2.35, 8.49, 2.15, 8.96, 2.75, 9.08, 1.49, 9.44, 2.33, 8.07, 2.27, 9.22, 0.96, 9.59, -1.19, 8.35, 1.54, 8.74, 1.31, 9.32, 0.14, 10.07, -0.13, 8.92, -0.47, 9.25, 0.45, 9.57, 0.41, 8.8, -1.49, 8.92, 0.99, 8.99, 1.38, 9.0, 0.09, 8.38, 0.98, 9.0, 0.7, 10.37, 1.4, 8.54, 0.96, 9.59, 0.13, 9.9,
+
+L3_cHERK_A_nk
+0.40000000596, 0.10000000149, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.800000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.5, 0.699999988079, 0.800000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.699999988079, 0.699999988079, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.899999976158, 0.5, 0.600000023842, 0.800000011921, 0.800000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.40000000596, 0.300000011921, 0.20000000298, 0.40000000596, 0.699999988079, 0.800000011921, 0.40000000596, 0.5, 0.5, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.800000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.699999988079, 0.899999976158, 0.20000000298, 0.10000000149, 0.800000011921, 0.5, 0.300000011921, 0.600000023842, 0.800000011921, 0.300000011921, 0.899999976158, 0.40000000596, 0.40000000596, 0.899999976158, 0.800000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.600000023842, 0.20000000298, 0.699999988079, 0.800000011921, 0.800000011921, 0.699999988079, 0.899999976158, 0.20000000298, 0.300000011921, 0.899999976158, 0.699999988079, 0.899999976158, 0.699999988079, 0.10000000149, 0.699999988079, 0.20000000298, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.899999976158, 0.600000023842, 0.10000000149, 0.5, 0.40000000596, 0.300000011921, 0.800000011921, 0.699999988079, 0.899999976158, 0.300000011921, 0.40000000596, 0.10000000149, 0.899999976158, 0.40000000596, 0.20000000298, 0.600000023842, 0.699999988079, 0.600000023842, 0.300000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.40000000596, 0.10000000149, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, 0.5, 0.5, 0.10000000149, 0.699999988079, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.899999976158, 0.10000000149, 0.699999988079, 0.699999988079, 0.300000011921, 0.10000000149, 0.10000000149, 0.40000000596, 0.40000000596, 0.5, 0.20000000298, 0.800000011921, 0.600000023842, 0.699999988079, 0.600000023842, 0.40000000596, 0.600000023842, 0.20000000298, 0.800000011921, 0.899999976158, 0.800000011921, 0.300000011921, 0.20000000298, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.5, 0.300000011921, 0.800000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.5, 0.40000000596, 0.20000000298, 0.10000000149, 0.699999988079, 0.20000000298, 0.600000023842, 0.699999988079, 0.699999988079, 0.5, 0.699999988079, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.10000000149, 0.699999988079, 0.699999988079, 0.800000011921, 0.699999988079, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.5, 0.10000000149, 0.699999988079, 0.20000000298, 0.20000000298, 0.40000000596, 0.5, 0.899999976158, 0.800000011921, 0.600000023842, 0.899999976158, 0.10000000149, 0.800000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.300000011921, 0.40000000596, 0.5, 0.600000023842, 0.40000000596, 0.899999976158, 0.899999976158, 0.5, 0.699999988079, 0.600000023842, 0.20000000298, 0.800000011921, 0.600000023842, 0.800000011921, 0.20000000298, 0.5, 0.5, 0.300000011921, 0.40000000596, 0.20000000298, 0.800000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.800000011921, 0.40000000596, 0.10000000149, 0.899999976158, 0.10000000149, 0.20000000298, 0.800000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.300000011921, 0.800000011921, 0.800000011921, 0.40000000596, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.899999976158, 0.699999988079, 0.300000011921, 0.699999988079, 0.899999976158, 0.699999988079, 0.300000011921, 0.40000000596, 0.899999976158, 0.899999976158, 0.800000011921, 0.800000011921, 0.699999988079, 0.40000000596, 0.699999988079, 0.899999976158, 0.20000000298, 0.40000000596, 0.5, 0.300000011921, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.600000023842, 0.40000000596, 0.800000011921, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.5, 0.40000000596, 0.600000023842, 0.699999988079, 0.699999988079, 0.300000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.899999976158, 0.899999976158, 0.300000011921, 0.699999988079, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.5, 0.20000000298, 0.300000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.20000000298, 0.600000023842, 0.20000000298, 0.10000000149, 0.800000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.10000000149, 0.699999988079, 0.800000011921, 0.800000011921, 0.5, 0.40000000596, 0.5, 0.800000011921, 0.800000011921, 0.699999988079, 0.40000000596, 0.5, 0.40000000596, 0.800000011921, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.800000011921, 0.300000011921, 0.300000011921, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.5, 0.5, 0.899999976158, 0.5, 0.10000000149, 0.699999988079, 0.899999976158, 0.10000000149, 0.800000011921, 0.600000023842, 0.899999976158, 0.800000011921, 0.40000000596, 0.10000000149, 0.40000000596, 0.800000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.20000000298, 0.899999976158, 0.699999988079, 0.699999988079, 0.20000000298, 0.600000023842, 0.5, 0.40000000596, 0.5, 0.699999988079, 0.5, 0.40000000596, 0.800000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.40000000596, 0.10000000149, 0.10000000149, 0.300000011921, 0.20000000298, 0.800000011921, 0.10000000149, 0.300000011921, 0.800000011921, 0.20000000298, 0.600000023842, 0.40000000596, 0.600000023842, 0.800000011921, 0.5, 0.40000000596, 0.899999976158, 0.20000000298, 0.600000023842, 0.10000000149, 0.800000011921, 0.40000000596, 0.20000000298, 0.600000023842, 0.699999988079, 0.899999976158, 0.20000000298, 0.20000000298, 0.699999988079, 0.40000000596, 0.699999988079, 0.899999976158, 0.600000023842, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.300000011921, 0.800000011921, 0.10000000149, 0.600000023842, 0.5, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.10000000149, 0.899999976158, 0.5, 0.10000000149, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.600000023842, 0.20000000298, 0.300000011921, 0.899999976158, 0.40000000596, 0.10000000149, 0.699999988079, 0.800000011921, 0.5, 0.600000023842, 0.600000023842, 0.20000000298, 0.10000000149, 0.800000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.20000000298, 0.899999976158, 0.699999988079, 0.40000000596, 0.10000000149, 0.800000011921, 0.600000023842, 0.10000000149, 0.800000011921, 0.5, 0.5, 0.40000000596, 0.699999988079, 0.600000023842, 0.300000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.20000000298, 0.300000011921, 0.40000000596, 0.699999988079, 0.40000000596, 0.800000011921, 0.40000000596, 0.40000000596, 0.20000000298, 0.899999976158, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.5, 0.300000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.10000000149, 0.300000011921, 0.899999976158, 0.300000011921, 0.20000000298, 0.600000023842, 0.10000000149, 0.5, 0.800000011921, 0.20000000298, 0.899999976158, 0.300000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.699999988079, 0.40000000596, 0.300000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.20000000298, 0.40000000596, 0.40000000596, 0.20000000298, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921,
+
+L3_cHERK_C_nn
+0.300000011921, 0.0, 0.600000023842, 0.20000000298, 0.800000011921, 0.699999988079, 0.899999976158, 0.20000000298, 0.5, 0.899999976158, 0.5, 0.10000000149, 0.600000023842, 0.10000000149, 0.899999976158, 0.800000011921, 0.40000000596, 0.5, 0.800000011921, 0.20000000298, 0.10000000149, 0.300000011921, 0.899999976158, 0.300000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.40000000596, 0.10000000149, 0.699999988079, 0.699999988079, 0.899999976158, 0.40000000596, 0.899999976158, 0.600000023842, -0.20000000298, 0.5, 0.0, 0.800000011921, 0.5, 0.300000011921, 0.40000000596, 0.40000000596, 0.300000011921, 0.300000011921, 0.5, 0.800000011921, 0.800000011921, 0.5, 0.300000011921, 0.40000000596, 0.800000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.5, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.5, 0.800000011921, 0.5, 0.800000011921, -0.699999988079, 0.800000011921, -0.5, 0.699999988079, 0.0, 0.40000000596, 0.699999988079, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.600000023842, 0.600000023842, 0.899999976158, 0.800000011921, 0.5, 0.800000011921, 0.699999988079, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.699999988079, 0.300000011921, 0.5, 0.600000023842, 0.40000000596, 0.699999988079, 0.40000000596, 0.899999976158, 0.5, 0.10000000149, 0.40000000596, 0.899999976158, -0.20000000298, 0.300000011921, -0.40000000596, 0.40000000596, -0.699999988079, 0.300000011921, 0.0, 0.10000000149, 0.5, 0.20000000298, 0.699999988079, 0.899999976158, 0.600000023842, 0.699999988079, 0.600000023842, 0.600000023842, 0.20000000298, 0.5, 0.20000000298, 0.40000000596, 0.899999976158, 0.800000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.5, 0.699999988079, 0.600000023842, 0.5, -0.899999976158, 0.40000000596, -0.300000011921, 0.300000011921, -0.699999988079, 0.10000000149, -0.5, 0.10000000149, 0.0, 0.899999976158, 0.5, 0.600000023842, 0.899999976158, 0.800000011921, 0.600000023842, 0.40000000596, 0.800000011921, 0.20000000298, 0.699999988079, 0.5, 0.600000023842, 0.40000000596, 0.300000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.5, -0.10000000149, 0.300000011921, -0.5, 0.40000000596, -0.5, 0.20000000298, -0.699999988079, 0.899999976158, -0.5, 0.699999988079, 0.0, 0.899999976158, 0.899999976158, 0.20000000298, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.20000000298, 0.300000011921, 0.699999988079, 0.699999988079, 0.20000000298, 0.300000011921, 0.10000000149, 0.10000000149, 0.10000000149, 0.300000011921, 0.10000000149, 0.5, 0.699999988079, 0.600000023842, -0.10000000149, 0.800000011921, -0.800000011921, 0.600000023842, -0.600000023842, 0.899999976158, -0.600000023842, 0.600000023842, -0.899999976158, 0.899999976158, -0.899999976158, 0.600000023842, 0.0, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.899999976158, 0.600000023842, 0.20000000298, 0.600000023842, 0.5, 0.40000000596, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.800000011921, 0.5, 0.10000000149, 0.10000000149, 0.899999976158, -0.800000011921, 0.5, -0.300000011921, 0.899999976158, -0.800000011921, 0.699999988079, -0.600000023842, 0.800000011921, -0.600000023842, 0.20000000298, -0.699999988079, 0.699999988079, -0.20000000298, 0.20000000298, 0.0, 0.600000023842, 0.40000000596, 0.300000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.300000011921, 0.300000011921, 0.40000000596, 0.10000000149, 0.800000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.600000023842, 0.40000000596, -0.5, 0.40000000596, -0.800000011921, 0.5, -0.800000011921, 0.600000023842, -0.20000000298, 0.40000000596, -0.800000011921, 0.899999976158, -0.800000011921, 0.10000000149, -0.10000000149, 0.600000023842, -0.40000000596, 0.800000011921, 0.0, 0.20000000298, 0.800000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.300000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.600000023842, 0.300000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.600000023842, 0.40000000596, 0.800000011921, -0.20000000298, 0.300000011921, -0.600000023842, 0.699999988079, -0.899999976158, 0.5, -0.20000000298, 0.20000000298, -0.699999988079, 0.699999988079, -0.699999988079, 0.899999976158, -0.600000023842, 0.300000011921, -0.699999988079, 0.20000000298, -0.800000011921, 0.40000000596, 0.0, 0.699999988079, 0.699999988079, 0.899999976158, 0.20000000298, 0.5, 0.899999976158, 0.20000000298, 0.899999976158, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.899999976158, 0.40000000596, 0.10000000149, -0.300000011921, 0.300000011921, -0.699999988079, 0.20000000298, -0.800000011921, 0.40000000596, -0.899999976158, 0.5, -0.600000023842, 0.600000023842, -0.20000000298, 0.20000000298, -0.600000023842, 0.699999988079, -0.800000011921, 0.600000023842, -0.20000000298, 0.699999988079, -0.699999988079, 0.10000000149, 0.0, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.600000023842, 0.600000023842, 0.20000000298, 0.10000000149, 0.800000011921, 0.899999976158, -0.300000011921, 0.20000000298, -0.899999976158, 0.699999988079, -0.699999988079, 0.800000011921, -0.800000011921, 0.40000000596, -0.300000011921, 0.300000011921, -0.699999988079, 0.5, -0.40000000596, 0.40000000596, -0.899999976158, 0.800000011921, -0.300000011921, 0.899999976158, -0.20000000298, 0.20000000298, -0.600000023842, 0.5, 0.0, 0.800000011921, 0.300000011921, 0.20000000298, 0.20000000298, 0.699999988079, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, 0.40000000596, 0.40000000596, -0.600000023842, 0.5, -0.10000000149, 0.300000011921, -0.5, 0.300000011921, -0.699999988079, 0.899999976158, -0.300000011921, 0.699999988079, -0.20000000298, 0.800000011921, -0.899999976158, 0.20000000298, -0.300000011921, 0.699999988079, -0.699999988079, 0.5, -0.899999976158, 0.800000011921, -0.300000011921, 0.800000011921, -0.300000011921, 0.699999988079, 0.0, 0.300000011921, 0.10000000149, 0.10000000149, 0.899999976158, 0.10000000149, 0.899999976158, 0.20000000298, 0.899999976158, 0.899999976158, -0.40000000596, 0.5, -0.800000011921, 0.600000023842, -0.40000000596, 0.10000000149, -0.800000011921, 0.10000000149, -0.20000000298, 0.300000011921, -0.10000000149, 0.899999976158, -0.10000000149, 0.300000011921, -0.40000000596, 0.600000023842, -0.600000023842, 0.20000000298, -0.899999976158, 0.699999988079, -0.20000000298, 0.20000000298, -0.20000000298, 0.300000011921, -0.10000000149, 0.600000023842, 0.0, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.5, 0.10000000149, -0.699999988079, 0.40000000596, -0.5, 0.699999988079, -0.40000000596, 0.300000011921, -0.800000011921, 0.699999988079, -0.5, 0.10000000149, -0.10000000149, 0.800000011921, -0.800000011921, 0.10000000149, -0.800000011921, 0.300000011921, -0.10000000149, 0.899999976158, -0.40000000596, 0.40000000596, -0.600000023842, 0.699999988079, -0.600000023842, 0.10000000149, -0.899999976158, 0.10000000149, -0.300000011921, 0.800000011921, 0.0, 0.40000000596, 0.300000011921, 0.600000023842, 0.600000023842, 0.699999988079, -0.899999976158, 0.300000011921, -0.5, 0.899999976158, -0.5, 0.699999988079, -0.5, 0.300000011921, -0.600000023842, 0.300000011921, -0.10000000149, 0.800000011921, -0.5, 0.899999976158, -0.699999988079, 0.20000000298, -0.899999976158, 0.10000000149, -0.800000011921, 0.600000023842, -0.20000000298, 0.40000000596, -0.10000000149, 0.10000000149, -0.899999976158, 0.800000011921, -0.899999976158, 0.40000000596, -0.300000011921, 0.800000011921, 0.0, 0.20000000298, 0.699999988079, 0.40000000596, -0.899999976158, 0.800000011921, -0.5, 0.10000000149, -0.40000000596, 0.699999988079, -0.600000023842, 0.600000023842, -0.20000000298, 0.5, -0.699999988079, 0.10000000149, -0.10000000149, 0.800000011921, -0.600000023842, 0.600000023842, -0.40000000596, 0.899999976158, -0.40000000596, 0.10000000149, -0.800000011921, 0.899999976158, -0.40000000596, 0.20000000298, -0.899999976158, 0.20000000298, -0.5, 0.600000023842, -0.600000023842, 0.20000000298, -0.699999988079, 0.40000000596, 0.0,
+
+L3_cHERK_o_N
+10.4700000229, 6.66133814775e-16, 9.30000010133, -2.08999994233, 9.22000003412, -0.450000023842, 8.7200000304, -1.80999996752, 8.12000013173, 0.679999892861, 8.17000005573, 0.679999997914, 7.95000010431, 1.21000003457, 8.35000016689, 0.330000042617, 9.17999995694, -0.190000016093, 8.44000014722, -0.020000025928, 8.4800001432, -0.599999988824, 9.63999999225, -1.07000002518, 7.99000018969, 0.910000043511, 9.36999998048, -1.42999999195, 8.3500001058, -0.610000027865, 8.67000000358, -0.520000014007, 9.1400000824, -0.839999873787, 9.30000010133, 2.08999994233, 11.5999999732, 0.0, 10.2100000323, 1.06999999762, 9.07000003487, -0.21000002563, 8.58000009552, 1.47999989361, 7.90000003874, 2.46999991342, 9.09000008613, 2.63000003517, 8.34000016958, 0.719999977499, 9.04000005856, 1.63999998704, 8.30000016987, 1.48000004783, 9.03000013053, 1.70999996006, 9.79000005782, 0.379999971092, 8.35000009984, 1.84000005335, 10.0199999619, 1.13000003517, 9.00000009611, 1.05999999881, 9.25000000075, 0.750000015646, 9.67000011012, 0.810000081509, 9.22000003412, 0.450000023842, 10.2100000323, -1.06999999762, 13.5499998182, 4.4408920985e-16, 9.71000006512, 0.160000004768, 9.17000008628, 1.05999988556, 8.5000000231, 2.08999998108, 9.86000004053, 2.77999990925, 9.20000008196, 0.920000040829, 10.8699999276, 0.680000003874, 10.3000000477, 1.67999993756, 8.76000008076, 1.61999998942, 10.3199999201, 0.309999878854, 8.8400000757, 2.67000000954, 9.94000001088, 0.600000029802, 9.41000005245, 0.490000041425, 10.1199999797, 0.040000025779, 10.0299999398, 1.02000008851, 8.7200000304, 1.80999996752, 9.07000003487, 0.21000002563, 9.71000006512, -0.160000004768, 10.5899999952, 2.22044604925e-16, 7.90000011995, 1.66999989852, 7.42000006467, 2.60999998987, 8.92000007883, 3.20000002906, 8.32000014812, 1.94000002652, 9.5400000079, 0.620000031143, 8.2700000751, 1.12000003114, 8.35000007749, 2.20999997944, 9.62000004083, 0.370000005811, 7.60000008568, 2.64000003099, 7.68000004932, 1.25999998316, 7.96000008598, 1.42000006989, 8.6400000079, 0.550000047684, 8.66000006884, 1.97000007883, 8.12000013173, -0.679999892861, 8.58000009552, -1.47999989361, 9.17000008628, -1.05999988556, 7.90000011995, -1.66999989852, 8.83000015736, 0.0, 8.38000005528, 1.13000006646, 8.02000013992, 1.81000006512, 7.44000022247, 0.380000074655, 8.45000008717, -0.369999885112, 7.67000013173, 0.590000054836, 7.91000018135, 0.210000085235, 7.84000011668, -0.659999943674, 7.82000014886, 1.00000010207, 7.74000013456, -0.829999877214, 8.12000012651, -0.479999893606, 7.96000012025, -0.709999901205, 8.24000012562, -0.099999833107, 8.17000005573, -0.679999997914, 7.90000003874, -2.46999991342, 8.5000000231, -2.08999998108, 7.42000006467, -2.60999998987, 8.38000005528, -1.13000006646, 9.30999995708, 0.0, 8.39000004441, 1.00000001192, 6.73000011414, -0.350000016391, 9.25999993101, 0.0799999725819, 8.42000003487, 0.0499999836087, 7.38000014469, -0.709999964535, 7.67000004232, -0.400000053644, 8.09000009656, 0.730000053048, 7.07000006318, -1.66999994695, 7.3800000903, -0.420000026673, 7.66999999389, -1.46999992833, 8.20000002384, -0.539999931157, 7.95000010431, -1.21000003457, 9.09000008613, -2.63000003517, 9.86000004053, -2.77999990925, 8.92000007883, -3.20000002906, 8.02000013992, -1.81000006512, 8.39000004441, -1.00000001192, 10.5700000095, 0.0, 8.19000013307, -1.90000000596, 8.45000002608, -1.96999992833, 9.13000004783, -0.380000002384, 7.64000011221, -0.500000000745, 8.92999995247, -1.82000005424, 8.27000008106, 1.12999998748, 7.90000003576, -1.22000000134, 8.4300001201, -0.799999967217, 8.76000002116, -1.30000000671, 8.2900000295, -1.33999990359, 8.35000016689, -0.330000042617, 8.34000016958, -0.719999977499, 9.20000008196, -0.920000040829, 8.32000014812, -1.94000002652, 7.44000022247, -0.380000074655, 6.73000011414, 0.350000016391, 8.19000013307, 1.90000000596, 9.28000028104, -2.22044604925e-16, 8.14000015095, 0.179999965876, 7.84000019416, 1.23999997139, 8.04000017628, 0.7099999623, 8.18000014246, 0.159999849051, 7.30000021011, 0.58000000909, 6.90000014529, -0.330000039637, 6.95000023618, 0.630000024736, 8.50000010356, 0.0900000041723, 8.38000015065, 0.410000082999, 9.17999995694, 0.190000016093, 9.04000005856, -1.63999998704, 10.8699999276, -0.680000003874, 9.5400000079, -0.620000031143, 8.45000008717, 0.369999885112, 9.25999993101, -0.0799999725819, 8.45000002608, 1.96999992833, 8.14000015095, -0.179999965876, 13.1899997658, -8.881784197e-16, 9.54000001684, 1.61999995515, 8.93000010595, 1.07999997854, 10.209999963, -0.750000075251, 9.69000004739, 2.47999997184, 9.35000003129, 0.700000026077, 10.3799999711, 0.489999955744, 8.89999996275, 0.740000008643, 9.69999996126, 0.390000094324, 8.44000014722, 0.020000025928, 8.30000016987, -1.48000004783, 10.3000000477, -1.67999993756, 8.2700000751, -1.12000003114, 7.67000013173, -0.590000054836, 8.42000003487, -0.0499999836087, 9.13000004783, 0.380000002384, 7.84000019416, -1.23999997139, 9.54000001684, -1.61999995515, 10.2000000864, 0.0, 8.70000013262, 0.239999956489, 9.94000003099, -0.710000077039, 8.48000012904, 1.900000038, 7.70000013709, 0.789999990761, 8.50000013337, 0.260000070333, 8.18000002697, 0.480000036657, 9.54000006005, -0.499999904633, 8.4800001432, 0.599999988824, 9.03000013053, -1.70999996006, 8.76000008076, -1.61999998942, 8.35000007749, -2.20999997944, 7.91000018135, -0.210000085235, 7.38000014469, 0.709999964535, 7.64000011221, 0.500000000745, 8.04000017628, -0.7099999623, 8.93000010595, -1.07999997854, 8.70000013262, -0.239999956489, 9.72000019431, -4.4408920985e-16, 8.63000013202, -1.0099999854, 8.43000019833, 1.13000010893, 8.98000010297, -0.149999960512, 7.93000015736, -0.00999991238117, 8.81000007778, -0.609999951869, 8.13000013426, 0.150000116974, 9.63999999225, 1.07000002518, 9.79000005782, -0.379999971092, 10.3199999201, -0.309999878854, 9.62000004083, -0.370000005811, 7.84000011668, 0.659999943674, 7.67000004232, 0.400000053644, 8.92999995247, 1.82000005424, 8.18000014246, -0.159999849051, 10.209999963, 0.750000075251, 9.94000003099, 0.710000077039, 8.63000013202, 1.0099999854, 12.7499998465, 2.22044604925e-16, 8.65000011995, 2.14000006527, 8.88999999896, 1.15, 9.01000001594, 1.01000009194, 8.88000000611, 0.950000040978, 10.0699999842, -0.539999735206, 7.99000018969, -0.910000043511, 8.35000009984, -1.84000005335, 8.8400000757, -2.67000000954, 7.60000008568, -2.64000003099, 7.82000014886, -1.00000010207, 8.09000009656, -0.730000053048, 8.27000008106, -1.12999998748, 7.30000021011, -0.58000000909, 9.69000004739, -2.47999997184, 8.48000012904, -1.900000038, 8.43000019833, -1.13000010893, 8.65000011995, -2.14000006527, 9.91000014782, 2.22044604925e-16, 8.50000008941, -1.36000009939, 8.52000015408, -0.440000047386, 8.08000007093, -0.790000001192, 8.00000011325, -0.58999997437, 9.36999998048, 1.42999999195, 10.0199999619, -1.13000003517, 9.94000001088, -0.600000029802, 7.68000004932, -1.25999998316, 7.74000013456, 0.829999877214, 7.07000006318, 1.66999994695, 7.90000003576, 1.22000000134, 6.90000014529, 0.330000039637, 9.35000003129, -0.700000026077, 7.70000013709, -0.789999990761, 8.98000010297, 0.149999960512, 8.88999999896, -1.15, 8.50000008941, 1.36000009939, 11.4399999207, 0.0, 8.92000005722, 0.0400000801682, 8.95000001788, 0.850000011921, 8.73000001952, 0.320000146627, 8.3500001058, 0.610000027865, 9.00000009611, -1.05999999881, 9.41000005245, -0.490000041425, 7.96000008598, -1.42000006989, 8.12000012651, 0.479999893606, 7.3800000903, 0.420000026673, 8.4300001201, 0.799999967217, 6.95000023618, -0.630000024736, 10.3799999711, -0.489999955744, 8.50000013337, -0.260000070333, 7.93000015736, 0.00999991238117, 9.01000001594, -1.01000009194, 8.52000015408, 0.440000047386, 8.92000005722, -0.0400000801682, 10.8300000918, 6.66133814775e-16, 8.59000007495, -0.259999953359, 8.79000011593, 0.610000128448, 8.67000000358, 0.520000014007, 9.25000000075, -0.750000015646, 10.1199999797, -0.040000025779, 8.6400000079, -0.550000047684, 7.96000012025, 0.709999901205, 7.66999999389, 1.46999992833, 8.76000002116, 1.30000000671, 8.50000010356, -0.0900000041723, 8.89999996275, -0.740000008643, 8.18000002697, -0.480000036657, 8.81000007778, 0.609999951869, 8.88000000611, -0.950000040978, 8.08000007093, 0.790000001192, 8.95000001788, -0.850000011921, 8.59000007495, 0.259999953359, 10.7799998638, 0.0, 7.87000004306, 0.790000066012, 9.1400000824, 0.839999873787, 9.67000011012, -0.810000081509, 10.0299999398, -1.02000008851, 8.66000006884, -1.97000007883, 8.24000012562, 0.099999833107, 8.20000002384, 0.539999931157, 8.2900000295, 1.33999990359, 8.38000015065, -0.410000082999, 9.69999996126, -0.390000094324, 9.54000006005, 0.499999904633, 8.13000013426, -0.150000116974, 10.0699999842, 0.539999735206, 8.00000011325, 0.58999997437, 8.73000001952, -0.320000146627, 8.79000011593, -0.610000128448, 7.87000004306, -0.790000066012, 11.2699999112, -4.4408920985e-16,
+
+L3_cHERK_A_kn
+0.800000011921, 0.699999988079, 0.699999988079, 0.699999988079, 0.20000000298, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.800000011921, 0.20000000298, 0.5, 0.300000011921, 0.300000011921, 0.800000011921, 0.800000011921, 0.300000011921, 0.600000023842, 0.600000023842, 0.800000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.699999988079, 0.10000000149, 0.5, 0.5, 0.800000011921, 0.300000011921, 0.10000000149, 0.10000000149, 0.5, 0.600000023842, 0.800000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.800000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.20000000298, 0.5, 0.5, 0.5, 0.20000000298, 0.5, 0.600000023842, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.40000000596, 0.40000000596, 0.899999976158, 0.800000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.10000000149, 0.600000023842, 0.5, 0.300000011921, 0.800000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.10000000149, 0.300000011921, 0.800000011921, 0.10000000149, 0.600000023842, 0.20000000298, 0.600000023842, 0.600000023842, 0.10000000149, 0.899999976158, 0.600000023842, 0.40000000596, 0.10000000149, 0.10000000149, 0.600000023842, 0.20000000298, 0.20000000298, 0.5, 0.300000011921, 0.300000011921, 0.20000000298, 0.5, 0.800000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.10000000149, 0.5, 0.300000011921, 0.5, 0.10000000149, 0.40000000596, 0.20000000298, 0.899999976158, 0.699999988079, 0.300000011921, 0.10000000149, 0.899999976158, 0.300000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.40000000596, 0.300000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.899999976158, 0.800000011921, 0.5, 0.20000000298, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.40000000596, 0.699999988079, 0.899999976158, 0.800000011921, 0.800000011921, 0.5, 0.600000023842, 0.40000000596, 0.5, 0.10000000149, 0.10000000149, 0.899999976158, 0.5, 0.600000023842, 0.10000000149, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.5, 0.699999988079, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.899999976158, 0.5, 0.600000023842, 0.800000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.300000011921, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.899999976158, 0.600000023842, 0.300000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.699999988079, 0.300000011921, 0.600000023842, 0.40000000596, 0.899999976158, 0.699999988079, 0.800000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.300000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.300000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.40000000596, 0.800000011921, 0.10000000149, 0.800000011921, 0.600000023842, 0.10000000149, 0.5, 0.899999976158, 0.899999976158, 0.899999976158, 0.699999988079, 0.699999988079, 0.300000011921, 0.699999988079, 0.899999976158, 0.300000011921, 0.600000023842, 0.40000000596, 0.800000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.20000000298, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.5, 0.40000000596, 0.10000000149, 0.5, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.20000000298, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.5, 0.300000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.40000000596, 0.800000011921, 0.800000011921, 0.300000011921, 0.10000000149, 0.5, 0.40000000596, 0.600000023842, 0.10000000149, 0.300000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.300000011921, 0.5, 0.40000000596, 0.40000000596, 0.5, 0.40000000596, 0.300000011921, 0.300000011921, 0.5, 0.899999976158, 0.600000023842, 0.5, 0.300000011921, 0.800000011921, 0.5, 0.40000000596, 0.5, 0.699999988079, 0.20000000298, 0.10000000149, 0.40000000596, 0.699999988079, 0.600000023842, 0.10000000149, 0.40000000596, 0.20000000298, 0.20000000298, 0.699999988079, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.5, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.699999988079, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.5, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.800000011921, 0.20000000298, 0.899999976158, 0.800000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.40000000596, 0.20000000298, 0.800000011921, 0.300000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.699999988079, 0.5, 0.600000023842, 0.699999988079, 0.300000011921, 0.5, 0.800000011921, 0.899999976158, 0.5, 0.600000023842, 0.800000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.40000000596, 0.899999976158, 0.5, 0.10000000149, 0.10000000149, 0.20000000298, 0.20000000298, 0.40000000596, 0.10000000149, 0.20000000298, 0.40000000596, 0.40000000596, 0.5, 0.300000011921, 0.40000000596, 0.40000000596, 0.40000000596, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.600000023842, 0.20000000298, 0.899999976158, 0.899999976158, 0.800000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.600000023842, 0.20000000298, 0.10000000149, 0.699999988079, 0.800000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.300000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.899999976158, 0.300000011921, 0.5, 0.5, 0.20000000298, 0.20000000298, 0.600000023842, 0.20000000298, 0.10000000149, 0.899999976158, 0.699999988079, 0.800000011921, 0.5, 0.300000011921, 0.40000000596, 0.699999988079, 0.300000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.300000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.10000000149, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.5, 0.600000023842, 0.40000000596, 0.699999988079, 0.5, 0.300000011921, 0.600000023842, 0.800000011921, 0.899999976158, 0.40000000596, 0.600000023842, 0.300000011921, 0.10000000149, 0.10000000149, 0.10000000149, 0.300000011921, 0.300000011921, 0.800000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.699999988079, 0.40000000596, 0.600000023842, 0.600000023842, 0.5, 0.40000000596, 0.300000011921, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.899999976158, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.40000000596, 0.10000000149, 0.300000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.300000011921, 0.600000023842, 0.5, 0.699999988079, 0.899999976158, 0.300000011921, 0.800000011921, 0.40000000596, 0.800000011921, 0.40000000596, 0.699999988079, 0.5, 0.699999988079, 0.600000023842, 0.600000023842, 0.300000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.800000011921, 0.699999988079, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.300000011921, 0.800000011921, 0.300000011921, 0.300000011921, 0.5, 0.800000011921, 0.40000000596, 0.300000011921, 0.800000011921, 0.600000023842, 0.699999988079, 0.20000000298, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.20000000298, 0.40000000596, 0.40000000596, 0.800000011921, 0.10000000149, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.300000011921, 0.300000011921, 0.699999988079, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.800000011921, 0.600000023842, 0.899999976158, 0.899999976158, 0.300000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.20000000298, 0.300000011921,
+
+L3_cHERK_o_H
+10.1200002033, 0.0, 9.06000011206, 1.01000008747, 9.38000012159, 1.8700000222, 7.85000009909, 0.0500001087785, 7.68000014991, 1.76000006065, 8.82000011086, -0.359999869168, 7.2600002782, -0.339999937117, 9.7800001283, 0.660000075549, 7.39000012934, 1.17000005201, 8.74000009432, 0.37000005126, 7.46000009641, -0.329999851882, 9.24000008762, 0.740000076443, 7.36000009418, 0.680000089556, 7.92000011012, -1.27999987498, 8.54000022247, 1.51000006884, 9.15000007749, 1.46000005394, 7.17000015929, 1.26000003681, 9.06000011206, -1.01000008747, 10.5299999338, -4.4408920985e-16, 9.63000001207, -0.269999975264, 7.43000004858, -0.41999998197, 8.42000000134, 0.289999994487, 9.35000000894, -1.02999991223, 7.5500001967, -0.450000008941, 9.78000007018, -0.580000034422, 8.00000005886, 0.55000000298, 8.53999999672, 0.0900000421703, 8.11000008076, -0.679999958426, 8.8400001055, 0.649999950081, 7.76000003234, -1.39999996796, 7.48000008136, -0.949999971688, 9.20000014156, -0.119999961108, 8.94000006303, 0.170000019222, 8.49000009432, 0.819999980479, 9.38000012159, -1.8700000222, 9.63000001207, 0.269999975264, 12.2599998751, 2.22044604925e-16, 8.46000005692, -0.819999931306, 9.21999998048, 0.840000057071, 9.83000001505, -1.39999989793, 7.83000018045, -0.0599999816716, 10.0600000614, -0.420000001341, 9.0799999465, 1.22000005871, 8.9300000225, 0.259999952614, 8.18000009328, 0.0500000655651, 9.39000005335, 0.0199999983609, 8.39999998808, -0.180000034422, 7.13000013426, -1.75999996752, 10.1200000982, 0.890000042915, 9.90000006482, 0.610000068843, 7.3400001204, 0.140000028014, 7.85000009909, -0.0500001087785, 7.43000004858, 0.41999998197, 8.46000005692, 0.819999931306, 8.89999996424, 4.4408920985e-16, 7.09000005782, 0.679999968857, 8.88999999598, 0.1800000076, 6.37000014067, 0.539999997467, 9.16000005245, 0.529999974817, 7.27000010118, 0.999999972433, 7.73000001654, 0.759999961555, 7.53000002697, 0.330000023991, 9.07000005797, 2.04999992475, 7.36000003755, 0.709999948144, 6.56000004873, -0.79999999404, 7.36000016943, 1.57000002891, 8.03000004187, 0.650000038743, 6.96000003979, 0.94999999702, 7.68000014991, -1.76000006065, 8.42000000134, -0.289999994487, 9.21999998048, -0.840000057071, 7.09000005782, -0.679999968857, 10.0299999249, 0.0, 9.50000003129, -0.679999924898, 7.25000020862, 0.299999940395, 8.73000010967, -0.300000033528, 8.5500000149, 1.07000000134, 7.30000003427, -0.12000004977, 8.27000008106, 0.150000026822, 7.96000011206, 0.200000017881, 8.13999998704, 0.269999980479, 6.71000010833, -1.24999999851, 8.68000006348, 0.560000017434, 9.0100000532, 0.170000062436, 7.30000008792, 0.0999999321997, 8.82000011086, 0.359999869168, 9.35000000894, 1.02999991223, 9.83000001505, 1.39999989793, 8.88999999598, -0.1800000076, 9.50000003129, 0.679999924898, 12.1799998996, 0.0, 7.87000014067, 1.3399999252, 10.1800000396, 1.13999985591, 9.18000004634, 1.50999999359, 9.73999992073, 1.95999990419, 9.600000038, 0.78000001505, 9.63000005454, 2.18999994233, 8.40000004545, 0.510000004768, 7.87000004977, -0.710000001788, 9.62000009671, 1.71999997303, 9.37999999791, 0.940000022054, 8.11000008151, 2.11999990746, 7.2600002782, 0.339999937117, 7.5500001967, 0.450000008941, 7.83000018045, 0.0599999816716, 6.37000014067, -0.539999997467, 7.25000020862, -0.299999940395, 7.87000014067, -1.3399999252, 7.33000032425, -1.11022302463e-16, 7.27000023305, 0.73999997735, 5.60000019222, 0.220000004321, 6.91000015527, 0.740000030994, 6.76000020444, 0.170000050515, 6.97000022635, 0.900000017881, 6.84000015244, 0.719999966323, 6.39000017703, -0.779999998659, 7.76000025585, 1.34000008613, 8.0400001964, 0.260000056922, 5.22000023603, 0.460000044256, 9.7800001283, -0.660000075549, 9.78000007018, 0.580000034422, 10.0600000614, 0.420000001341, 9.16000005245, -0.529999974817, 8.73000010967, 0.300000033528, 10.1800000396, -1.13999985591, 7.27000023305, -0.73999997735, 11.4700001496, 2.22044604925e-16, 8.7500001736, 1.20000004694, 9.57000009149, 1.03000002623, 8.76000005171, -0.0599998766184, 9.76000016868, 1.3000000149, 7.49000010177, 6.33299346298e-08, 7.82000015259, -1.08999990657, 8.79000014201, 1.67000006393, 9.57000004157, 1.42000010341, 8.75000012591, 1.52000004306, 7.39000012934, -1.17000005201, 8.00000005886, -0.55000000298, 9.0799999465, -1.22000005871, 7.27000010118, -0.999999972433, 8.5500000149, -1.07000000134, 9.18000004634, -1.50999999359, 5.60000019222, -0.220000004321, 8.7500001736, -1.20000004694, 9.81999995589, -1.11022302463e-16, 7.36000005916, 0.819999958873, 7.43000014767, 0.259999986887, 8.11000012547, 0.339999996722, 6.94000006452, 0.309999998808, 6.48000017375, -0.559999969006, 7.98000010669, 0.600000014901, 8.00000008866, 1.16999997303, 7.20000011846, 0.469999994636, 8.74000009432, -0.37000005126, 8.53999999672, -0.0900000421703, 8.9300000225, -0.259999952614, 7.73000001654, -0.759999961555, 7.30000003427, 0.12000004977, 9.73999992073, -1.95999990419, 6.91000015527, -0.740000030994, 9.57000009149, -1.03000002623, 7.36000005916, -0.819999958873, 10.3999999061, 0.0, 8.70999996901, -1.18999989465, 9.77000003636, 0.139999998212, 7.42999998972, 0.289999985546, 7.06000007108, -1.08999995649, 9.22000003114, 0.649999991059, 8.22999997854, 1.14000008091, 8.34000003546, 0.519999979734, 7.46000009641, 0.329999851882, 8.11000008076, 0.679999958426, 8.18000009328, -0.0500000655651, 7.53000002697, -0.330000023991, 8.27000008106, -0.150000026822, 9.600000038, -0.78000001505, 6.76000020444, -0.170000050515, 8.76000005171, 0.0599998766184, 7.43000014767, -0.259999986887, 8.70999996901, 1.18999989465, 10.8299999756, 6.66133814775e-16, 9.21000010461, 1.86999999315, 8.91000001967, 0.659999906421, 8.54000002801, -0.929999971837, 9.0900001882, 1.64999998882, 10.0099999988, 0.779999994934, 6.97000008255, 2.28999994978, 9.24000008762, -0.740000076443, 8.8400001055, -0.649999950081, 9.39000005335, -0.0199999983609, 9.07000005797, -2.04999992475, 7.96000011206, -0.200000017881, 9.63000005454, -2.18999994233, 6.97000022635, -0.900000017881, 9.76000016868, -1.3000000149, 8.11000012547, -0.339999996722, 9.77000003636, -0.139999998212, 9.21000010461, -1.86999999315, 11.9400001428, 4.4408920985e-16, 8.92000005051, -0.240000001937, 7.99000013232, -1.83999993637, 8.68000022069, 0.59999999404, 9.52000006765, 0.23000001803, 8.24000009283, 0.620000052005, 7.36000009418, -0.680000089556, 7.76000003234, 1.39999996796, 8.39999998808, 0.180000034422, 7.36000003755, -0.709999948144, 8.13999998704, -0.269999980479, 8.40000004545, -0.510000004768, 6.84000015244, -0.719999966323, 7.49000010177, -6.33299350739e-08, 6.94000006452, -0.309999998808, 7.42999998972, -0.289999985546, 8.91000001967, -0.659999906421, 8.92000005051, 0.240000001937, 9.72999985933, 0.0, 7.15000007227, -1.3699999328, 7.80000013709, 1.88000002176, 8.7099999921, 1.46000004798, 5.64000012115, 1.53000000089, 7.92000011012, 1.27999987498, 7.48000008136, 0.949999971688, 7.13000013426, 1.75999996752, 6.56000004873, 0.79999999404, 6.71000010833, 1.24999999851, 7.87000004977, 0.710000001788, 6.39000017703, 0.779999998659, 7.82000015259, 1.08999990657, 6.48000017375, 0.559999969006, 7.06000007108, 1.08999995649, 8.54000002801, 0.929999971837, 7.99000013232, 1.83999993637, 7.15000007227, 1.3699999328, 8.03000010371, -2.22044604925e-16, 6.49000018373, 2.12000002146, 8.32000011235, 2.82999995992, 6.05000013784, 2.05999997497, 8.54000022247, -1.51000006884, 9.20000014156, 0.119999961108, 10.1200000982, -0.890000042915, 7.36000016943, -1.57000002891, 8.68000006348, -0.560000017434, 9.62000009671, -1.71999997303, 7.76000025585, -1.34000008613, 8.79000014201, -1.67000006393, 7.98000010669, -0.600000014901, 9.22000003114, -0.649999991059, 9.0900001882, -1.64999998882, 8.68000022069, -0.59999999404, 7.80000013709, -1.88000002176, 6.49000018373, -2.12000002146, 11.350000219, -4.4408920985e-16, 9.93000008136, -0.469999940991, 8.02000019878, 0.699999981374, 9.15000007749, -1.46000005394, 8.94000006303, -0.170000019222, 9.90000006482, -0.610000068843, 8.03000004187, -0.650000038743, 9.0100000532, -0.170000062436, 9.37999999791, -0.940000022054, 8.0400001964, -0.260000056922, 9.57000004157, -1.42000010341, 8.00000008866, -1.16999997303, 8.22999997854, -1.14000008091, 10.0099999988, -0.779999994934, 9.52000006765, -0.23000001803, 8.7099999921, -1.46000004798, 8.32000011235, -2.82999995992, 9.93000008136, 0.469999940991, 12.6099999139, 0.0, 7.62000009224, 1.25999993697, 7.17000015929, -1.26000003681, 8.49000009432, -0.819999980479, 7.3400001204, -0.140000028014, 6.96000003979, -0.94999999702, 7.30000008792, -0.0999999321997, 8.11000008151, -2.11999990746, 5.22000023603, -0.460000044256, 8.75000012591, -1.52000004306, 7.20000011846, -0.469999994636, 8.34000003546, -0.519999979734, 6.97000008255, -2.28999994978, 8.24000009283, -0.620000052005, 5.64000012115, -1.53000000089, 6.05000013784, -2.05999997497, 8.02000019878, -0.699999981374, 7.62000009224, -1.25999993697, 8.50000011027, 2.22044604925e-16,
+
+L3_zHERK_A_nk
+0.2, 0.4, 0.8, 0.1, 0.1, 0.1, 0.7, 0.1, 0.7, 0.9, 0.4, 0.9, 0.5, 0.3, 0.5, 0.8, 0.3, 0.4, 0.3, 0.9, 0.3, 0.3, 0.3, 0.1, 0.9, 0.1, 0.5, 0.8, 0.5, 0.3, 0.5, 0.4, 0.1, 0.9, 0.6, 0.7, 0.4, 0.6, 0.6, 0.7, 0.6, 0.8, 0.8, 0.4, 0.4, 0.2, 0.3, 0.9, 0.7, 0.9, 0.2, 0.9, 0.9, 0.6, 0.3, 0.3, 0.2, 0.5, 0.2, 0.2, 0.9, 0.6, 0.8, 0.7, 0.5, 0.8, 0.9, 0.1, 0.8, 0.6, 0.5, 0.8, 0.1, 0.7, 0.4, 0.7, 0.1, 0.1, 0.1, 0.4, 0.7, 0.8, 0.9, 0.2, 0.4, 0.1, 0.5, 0.3, 0.5, 0.5, 0.8, 0.3, 0.3, 0.8, 0.7, 0.8, 0.4, 0.9, 0.9, 0.5, 0.3, 0.6, 0.9, 0.2, 0.8, 0.8, 0.7, 0.1, 0.4, 0.1, 0.6, 0.4, 0.2, 0.9, 0.3, 0.6, 0.3, 0.6, 0.2, 0.3, 0.6, 0.9, 0.7, 0.6, 0.4, 0.4, 0.8, 0.4, 0.6, 0.6, 0.2, 0.7, 0.6, 0.2, 0.7, 0.3, 0.5, 0.2, 0.4, 0.7, 0.8, 0.4, 0.7, 0.2, 0.5, 0.7, 0.5, 0.8, 0.6, 0.2, 0.7, 0.2, 0.7, 0.2, 0.3, 0.3, 0.5, 0.9, 0.5, 0.7, 0.3, 0.5, 0.9, 0.3, 0.1, 0.7, 0.7, 0.8, 0.3, 0.7, 0.9, 0.7, 0.8, 0.4, 0.4, 0.1, 0.2, 0.9, 0.2, 0.4, 0.6, 0.4, 0.5, 0.5, 0.1, 0.3, 0.3, 0.9, 0.3, 0.2, 0.4, 0.2, 0.6, 0.1, 0.7, 0.6, 0.6, 0.7, 0.3, 0.8, 0.3, 0.1, 0.4, 0.1, 0.7, 0.8, 0.5, 0.8, 0.1, 0.2, 0.8, 0.1, 0.5, 0.7, 0.3, 0.4, 0.3, 0.8, 0.6, 0.7, 0.7, 0.4, 0.4, 0.7, 0.7, 0.8, 0.2, 0.9, 0.6, 0.2, 0.4, 0.6, 0.7, 0.8, 0.3, 0.1, 0.6, 0.7, 0.3, 0.5, 0.2, 0.3, 0.8, 0.5, 0.1, 0.5, 0.7, 0.7, 0.6, 0.1, 0.2, 0.7, 0.3, 0.6, 0.1, 0.1, 0.4, 0.3, 0.5, 0.7, 0.1, 0.7, 0.8, 0.3, 0.1, 0.4, 0.5, 0.8, 0.5, 0.5, 0.2, 0.4, 0.2, 0.6, 0.8, 0.8, 0.4, 0.9, 0.9, 0.2, 0.3, 0.6, 0.4, 0.6, 0.1, 0.7, 0.8, 0.7, 0.7, 0.7, 0.2, 0.5, 0.3, 0.7, 0.3, 0.3, 0.4, 0.1, 0.9, 0.3, 0.6, 0.7, 0.1, 0.4, 0.7, 0.6, 0.1, 0.8, 0.1, 0.5, 0.8, 0.7, 0.8, 0.8, 0.8, 0.3, 0.8, 0.7, 0.5, 0.8, 0.8, 0.9, 0.1, 0.4, 0.3, 0.6, 0.4, 0.3, 0.8, 0.7, 0.9, 0.1, 0.6, 0.6, 0.1, 0.5, 0.5, 0.7, 0.9, 0.8, 0.6, 0.3, 0.2, 0.8, 0.8, 0.3, 0.4, 0.5, 0.3, 0.6, 0.4, 0.4, 0.2, 0.3, 0.7, 0.9, 0.2, 0.1, 0.5, 0.7, 0.9, 0.4, 0.6, 0.2, 0.5, 0.6, 0.9, 0.5, 0.4, 0.8, 0.6, 0.5, 0.4, 0.7, 0.8, 0.9, 0.4, 0.6, 0.8, 0.2, 0.3, 0.6, 0.2, 0.8, 0.4, 0.9, 0.9, 0.3, 0.5, 0.1, 0.6, 0.5, 0.3, 0.3, 0.3, 0.8, 0.6, 0.4, 0.4, 0.3, 0.6, 0.7, 0.2, 0.5, 0.1, 0.1, 0.7, 0.8, 0.2, 0.5, 0.1, 0.1, 0.3, 0.3, 0.5, 0.4, 0.8, 0.1, 0.7, 0.5, 0.9, 0.6, 0.2, 0.7, 0.1, 0.9, 0.5, 0.7, 0.3, 0.9, 0.7, 0.3, 0.2, 0.4, 0.8, 0.1, 0.5, 0.4, 0.5, 0.3, 0.1, 0.6, 0.1, 0.4, 0.3, 0.8, 0.8, 0.7, 0.9, 0.5, 0.6, 0.5, 0.5, 0.8, 0.2, 0.5, 0.3, 0.2, 0.4, 0.2, 0.1, 0.4, 0.9, 0.8, 0.2, 0.3, 0.1, 0.3, 0.6, 0.1, 0.3, 0.2, 0.1, 0.5, 0.2, 0.6, 0.5, 0.3, 0.3, 0.2, 0.4, 0.5, 0.9, 0.5, 0.9, 0.1, 0.3, 0.4, 0.8, 0.9, 0.3, 0.2, 0.1, 0.1, 0.8, 0.1, 0.1, 0.7, 0.1, 0.3, 0.8, 0.7, 0.7, 0.4, 0.5, 0.1, 0.2, 0.3, 0.6, 0.8, 0.8, 0.8, 0.1, 0.7, 0.4, 0.9, 0.9, 0.3, 0.8, 0.2, 0.8, 0.6, 0.9, 0.9, 0.4, 0.7, 0.3, 0.1, 0.9, 0.8, 0.2, 0.9, 0.2, 0.6, 0.3, 0.7, 0.7, 0.3, 0.5, 0.7, 0.1, 0.2, 0.4, 0.6,
+
+L3_zHERK_C_nn
+0.7, 0.0, 0.5, 0.7, 0.2, 0.9, 0.9, 0.8, 0.6, 0.9, 0.6, 0.4, 0.3, 0.1, 0.7, 0.4, 0.6, 0.3, 0.1, 0.4, 0.4, 0.7, 0.6, 0.8, 0.1, 0.4, 0.6, 0.7, 0.8, 0.1, 0.6, 0.5, 0.8, 0.4, 0.5, -0.7, 0.9, 0.0, 0.3, 0.2, 0.1, 0.5, 0.1, 0.2, 0.7, 0.7, 0.1, 0.1, 0.9, 0.2, 0.1, 0.4, 0.7, 0.3, 0.9, 0.9, 0.8, 0.4, 0.1, 0.2, 0.4, 0.4, 0.2, 0.3, 0.4, 0.7, 0.3, 0.1, 0.2, -0.9, 0.3, -0.2, 0.1, 0.0, 0.4, 0.3, 0.8, 0.6, 0.4, 0.1, 0.8, 0.2, 0.9, 0.4, 0.2, 0.2, 0.6, 0.5, 0.8, 0.4, 0.2, 0.5, 0.3, 0.9, 0.9, 0.6, 0.3, 0.7, 0.2, 0.7, 0.5, 0.2, 0.9, -0.8, 0.1, -0.5, 0.4, -0.3, 0.4, 0.0, 0.4, 0.3, 0.9, 0.4, 0.5, 0.2, 0.9, 0.7, 0.4, 0.2, 0.2, 0.5, 0.8, 0.2, 0.5, 0.2, 0.8, 0.3, 0.9, 0.1, 0.8, 0.5, 0.6, 0.7, 0.2, 0.4, 0.6, -0.9, 0.1, -0.2, 0.8, -0.6, 0.4, -0.3, 0.1, 0.0, 0.2, 0.8, 0.9, 0.8, 0.6, 0.8, 0.9, 0.6, 0.5, 0.7, 0.1, 0.1, 0.7, 0.1, 0.8, 0.3, 0.3, 0.3, 0.4, 0.2, 0.2, 0.9, 0.5, 0.5, 0.6, -0.4, 0.7, -0.7, 0.4, -0.1, 0.9, -0.4, 0.2, -0.8, 0.9, 0.0, 0.1, 0.3, 0.5, 0.1, 0.4, 0.5, 0.2, 0.6, 0.3, 0.7, 0.7, 0.7, 0.4, 0.9, 0.9, 0.2, 0.3, 0.7, 0.2, 0.5, 0.9, 0.8, 0.3, -0.1, 0.1, -0.1, 0.8, -0.2, 0.5, -0.2, 0.9, -0.8, 0.1, -0.3, 0.2, 0.0, 0.1, 0.1, 0.3, 0.5, 0.6, 0.2, 0.7, 0.2, 0.2, 0.6, 0.7, 0.1, 0.7, 0.8, 0.3, 0.5, 0.6, 0.6, 0.9, 0.3, 0.7, -0.4, 0.9, -0.2, 0.9, -0.4, 0.9, -0.7, 0.6, -0.8, 0.5, -0.1, 0.1, -0.1, 0.1, 0.0, 0.8, 0.3, 0.9, 0.7, 0.8, 0.8, 0.6, 0.3, 0.6, 0.9, 0.9, 0.1, 0.8, 0.6, 0.7, 0.2, 0.1, 0.1, 0.6, -0.3, 0.1, -0.4, 0.2, -0.2, 0.4, -0.2, 0.9, -0.6, 0.4, -0.5, 0.3, -0.5, 0.8, -0.3, 0.5, 0.0, 0.7, 0.1, 0.9, 0.1, 0.8, 0.8, 0.9, 0.9, 0.3, 0.7, 0.3, 0.4, 0.1, 0.6, 0.5, 0.9, 0.1, -0.4, 0.7, -0.3, 0.6, -0.5, 0.2, -0.5, 0.5, -0.7, 0.2, -0.6, 0.6, -0.2, 0.9, -0.7, 0.7, -0.1, 0.3, 0.0, 0.2, 0.2, 0.9, 0.7, 0.7, 0.8, 0.9, 0.2, 0.3, 0.2, 0.6, 0.7, 0.1, 0.2, 0.4, -0.7, 0.9, -0.9, 0.8, -0.4, 0.8, -0.2, 0.1, -0.1, 0.3, -0.7, 0.7, -0.2, 0.8, -0.8, 0.9, -0.1, 0.2, -0.2, 0.7, 0.0, 0.2, 0.7, 0.4, 0.8, 0.4, 0.4, 0.1, 0.6, 0.5, 0.4, 0.9, 0.3, 0.6, -0.8, 0.8, -0.4, 0.2, -0.5, 0.5, -0.2, 0.7, -0.1, 0.7, -0.7, 0.2, -0.6, 0.6, -0.3, 0.8, -0.8, 0.9, -0.7, 0.2, -0.7, 0.7, 0.0, 0.4, 0.1, 0.1, 0.8, 0.5, 0.8, 0.8, 0.2, 0.9, 0.8, 0.1, -0.4, 0.1, -0.2, 0.3, -0.9, 0.8, -0.3, 0.8, -0.3, 0.4, -0.9, 0.7, -0.1, 0.6, -0.9, 0.9, -0.9, 0.7, -0.8, 0.4, -0.8, 0.4, -0.1, 0.1, 0.0, 0.4, 0.8, 0.7, 0.5, 0.3, 0.2, 0.8, 0.5, 0.6, -0.7, 0.4, -0.4, 0.9, -0.6, 0.9, -0.1, 0.3, -0.3, 0.9, -0.2, 0.7, -0.8, 0.9, -0.1, 0.3, -0.7, 0.9, -0.2, 0.4, -0.4, 0.1, -0.8, 0.4, -0.8, 0.9, 0.0, 0.5, 0.8, 0.2, 0.1, 0.3, 0.1, 0.8, -0.1, 0.2, -0.3, 0.3, -0.7, 0.8, -0.5, 0.4, -0.2, 0.3, -0.7, 0.3, -0.5, 0.8, -0.6, 0.3, -0.4, 0.3, -0.2, 0.1, -0.6, 0.5, -0.8, 0.7, -0.5, 0.5, -0.8, 0.1, 0.0, 0.1, 0.4, 0.7, 0.9, 0.6, -0.5, 0.4, -0.7, 0.2, -0.7, 0.6, -0.7, 0.2, -0.9, 0.2, -0.5, 0.6, -0.6, 0.7, -0.2, 0.1, -0.6, 0.6, -0.7, 0.5, -0.4, 0.8, -0.2, 0.3, -0.2, 0.2, -0.1, 0.1, -0.4, 0.9, 0.0, 0.9, 0.1, 0.8, -0.4, 0.3, -0.1, 0.5, -0.2, 0.2, -0.4, 0.5, -0.5, 0.9, -0.8, 0.9, -0.3, 0.1, -0.1, 0.5, -0.9, 0.1, -0.2, 0.9, -0.3, 0.9, -0.8, 0.8, -0.5, 0.3, -0.1, 0.7, -0.9, 0.9, -0.1, 0.7, 0.0,
+
+L3_zHERK_o_N
+9.46, 2.77555756156e-17, 8.78, -0.52, 7.37, 0.5, 9.1, 0.78, 8.0, 1.13, 7.71, -0.25, 6.62, -0.52, 7.27, -0.54, 8.0, -1.08, 7.26, -0.13, 7.88, 1.1, 8.01, 0.59, 6.33, -0.43, 7.08, -0.44, 6.11, -0.23, 7.6, 0.41, 9.0, -0.3, 8.78, 0.52, 13.01, 7.77156117238e-16, 9.56, 1.07, 10.12, 1.94, 9.12, 1.61, 9.41, 0.75, 8.4, 0.9, 8.68, 0.64, 9.16, -0.44, 10.22, 0.5, 10.32, 2.16, 10.32, 0.75, 7.96, 1.08, 8.89, 0.67, 7.34, 1.8, 9.5, 1.88, 10.01, 0.32, 7.37, -0.5, 9.56, -1.07, 10.62, -1.66533453694e-15, 9.08, 0.18, 8.88, 0.93, 8.05, -1.11, 8.53, -0.34, 7.91, -0.22, 8.55, -1.58, 9.01, 0.17, 9.1, 0.22, 8.45, -0.29, 7.76, 0.69, 9.62, 0.37, 6.44, 0.49, 8.23, 1.31, 8.88, -0.53, 9.1, -0.78, 10.12, -1.94, 9.08, -0.18, 11.22, -9.43689570931e-16, 8.56, 0.91, 9.31, -0.99, 8.41, -0.42, 8.44, 4.4408920985e-16, 9.02, -1.51, 9.12, 0.41, 9.78, 0.65, 9.67, -0.29, 8.07, -0.03, 8.66, -0.97, 7.48, 0.32, 9.12, 1.33, 9.51, -0.24, 8.0, -1.13, 9.12, -1.61, 8.88, -0.93, 8.56, -0.91, 9.67, -4.99600361081e-16, 7.44, -0.17, 8.18, -0.02, 8.22, -0.66, 9.32, -0.9, 9.26, -0.45, 8.56, -0.82, 9.38, -1.29, 8.0, -0.49, 8.16, -0.66, 6.43, -0.55, 8.22, 0.74, 9.43, -0.91, 7.71, 0.25, 9.41, -0.75, 8.05, 1.11, 9.31, 0.99, 7.44, 0.17, 10.02, -1.11022302463e-16, 7.29, 0.25, 7.24, -0.28, 8.38, -0.11, 7.71, 1.36, 7.99, 1.71, 8.67, 0.86, 7.33, 1.04, 8.44, -0.46, 6.3, 0.85, 7.28, 1.2, 9.21, 1.13, 6.62, 0.52, 8.4, -0.9, 8.53, 0.34, 8.41, 0.42, 8.18, 0.02, 7.29, -0.25, 9.86, -3.33066907388e-16, 7.42, -1.1, 8.32, -0.64, 8.84, -0.57, 8.41, -0.65, 8.86, 0.64, 6.75, 0.42, 9.21, 0.47, 7.13, 0.27, 7.64, 1.92, 8.18, -0.33, 7.27, 0.54, 8.68, -0.64, 7.91, 0.22, 8.44, 4.4408920985e-16, 8.22, 0.66, 7.24, 0.28, 7.42, 1.1, 9.05, 1.31838984174e-16, 8.14, 0.31, 8.63, 0.64, 9.37, 0.56, 8.86, 1.49, 6.91, 1.23, 8.27, 0.32, 6.53, 1.19, 7.78, 1.81, 8.27, -0.38, 8.0, 1.08, 9.16, 0.44, 8.55, 1.58, 9.02, 1.51, 9.32, 0.9, 8.38, 0.11, 8.32, 0.64, 8.14, -0.31, 10.58, 0.0, 9.41, 0.5, 9.05, 1.26, 9.51, 1.11, 7.78, 1.04, 8.73, 1.76, 6.19, 1.38, 7.49, 2.47, 9.19, 1.03, 7.26, 0.13, 10.22, -0.5, 9.01, -0.17, 9.12, -0.41, 9.26, 0.45, 7.71, -1.36, 8.84, 0.57, 8.63, -0.64, 9.41, -0.5, 11.34, -6.66133814775e-16, 9.51, 0.38, 10.12, 0.57, 8.08, 0.53, 8.59, 0.29, 6.68, 0.51, 8.02, 1.78, 9.44, -0.63, 7.88, -1.1, 10.32, -2.16, 9.1, -0.22, 9.78, -0.65, 8.56, 0.82, 7.99, -1.71, 8.41, 0.65, 9.37, -0.56, 9.05, -1.26, 9.51, -0.38, 11.18, -1.11022302463e-16, 8.95, 1.11, 7.2, 0.54, 8.1, 0.3, 6.33, 1.08, 7.92, 1.19, 10.12, -0.93, 8.01, -0.59, 10.32, -0.75, 8.45, 0.29, 9.67, 0.29, 9.38, 1.29, 8.67, -0.86, 8.86, -0.64, 8.86, -1.49, 9.51, -1.11, 10.12, -0.57, 8.95, -1.11, 11.8, -7.21644966006e-16, 7.92, 0.65, 8.35, 0.48, 6.89, 0.66, 9.39, 1.45, 10.24, -0.11, 6.33, 0.43, 7.96, -1.08, 7.76, -0.69, 8.07, 0.03, 8.0, 0.49, 7.33, -1.04, 6.75, -0.42, 6.91, -1.23, 7.78, -1.04, 8.08, -0.53, 7.2, -0.54, 7.92, -0.65, 7.71, -8.04911692853e-16, 7.16, 0.53, 5.91, 0.42, 6.94, 0.47, 8.62, 0.02, 7.08, 0.44, 8.89, -0.67, 9.62, -0.37, 8.66, 0.97, 8.16, 0.66, 8.44, 0.46, 9.21, -0.47, 8.27, -0.32, 8.73, -1.76, 8.59, -0.29, 8.1, -0.3, 8.35, -0.48, 7.16, -0.53, 11.03, 3.33066907388e-16, 7.23, 0.53, 8.38, 1.54, 8.12, 0.28, 6.11, 0.23, 7.34, -1.8, 6.44, -0.49, 7.48, -0.32, 6.43, 0.55, 6.3, -0.85, 7.13, -0.27, 6.53, -1.19, 6.19, -1.38, 6.68, -0.51, 6.33, -1.08, 6.89, -0.66, 5.91, -0.42, 7.23, -0.53, 6.76, 4.16333634234e-16, 6.15, 1.06, 6.56, 0.85, 7.6, -0.41, 9.5, -1.88, 8.23, -1.31, 9.12, -1.33, 8.22, -0.74, 7.28, -1.2, 7.64, -1.92, 7.78, -1.81, 7.49, -2.47, 8.02, -1.78, 7.92, -1.19, 9.39, -1.45, 6.94, -0.47, 8.38, -1.54, 6.15, -1.06, 10.74, 4.4408920985e-16, 8.97, -1.05, 9.0, 0.3, 10.01, -0.32, 8.88, 0.53, 9.51, 0.24, 9.43, 0.91, 9.21, -1.13, 8.18, 0.33, 8.27, 0.38, 9.19, -1.03, 9.44, 0.63, 10.12, 0.93, 10.24, 0.11, 8.62, -0.02, 8.12, -0.28, 6.56, -0.85, 8.97, 1.05, 12.29, 5.55111512313e-16,
+
+L3_zHERK_A_kn
+0.4, 0.7, 0.5, 0.5, 0.2, 0.2, 0.3, 0.6, 0.3, 0.5, 0.1, 0.2, 0.2, 0.2, 0.7, 0.4, 0.1, 0.1, 0.6, 0.7, 0.3, 0.8, 0.2, 0.2, 0.4, 0.4, 0.3, 0.7, 0.1, 0.3, 0.9, 0.1, 0.5, 0.7, 0.1, 0.5, 0.6, 0.8, 0.9, 0.1, 0.4, 0.9, 0.7, 0.5, 0.8, 0.7, 0.7, 0.6, 0.1, 0.6, 0.8, 0.8, 0.4, 0.6, 0.4, 0.2, 0.6, 0.8, 0.5, 0.6, 0.8, 0.2, 0.3, 0.3, 0.2, 0.8, 0.2, 0.7, 0.4, 0.2, 0.9, 0.3, 0.2, 0.3, 0.6, 0.6, 0.2, 0.4, 0.4, 0.2, 0.6, 0.9, 0.2, 0.2, 0.6, 0.4, 0.7, 0.4, 0.8, 0.8, 0.5, 0.8, 0.5, 0.1, 0.6, 0.3, 0.5, 0.4, 0.6, 0.4, 0.8, 0.5, 0.9, 0.6, 0.3, 0.5, 0.1, 0.9, 0.8, 0.6, 0.6, 0.7, 0.3, 0.6, 0.2, 0.3, 0.3, 0.5, 0.9, 0.2, 0.1, 0.9, 0.4, 0.4, 0.7, 0.8, 0.6, 0.2, 0.7, 0.8, 0.6, 0.1, 0.3, 0.7, 0.6, 0.2, 0.8, 0.7, 0.6, 0.5, 0.4, 0.9, 0.5, 0.9, 0.9, 0.6, 0.4, 0.6, 0.8, 0.5, 0.7, 0.1, 0.8, 0.1, 0.1, 0.3, 0.5, 0.4, 0.4, 0.4, 0.3, 0.3, 0.7, 0.4, 0.9, 0.3, 0.7, 0.9, 0.7, 0.6, 0.5, 0.4, 0.4, 0.6, 0.9, 0.3, 0.8, 0.9, 0.2, 0.6, 0.6, 0.6, 0.8, 0.5, 0.6, 0.7, 0.6, 0.7, 0.5, 0.7, 0.9, 0.9, 0.7, 0.4, 0.3, 0.8, 0.1, 0.9, 0.6, 0.1, 0.2, 0.1, 0.6, 0.3, 0.3, 0.9, 0.9, 0.1, 0.8, 0.9, 0.3, 0.5, 0.1, 0.7, 0.7, 0.7, 0.4, 0.9, 0.9, 0.5, 0.6, 0.4, 0.4, 0.5, 0.8, 0.4, 0.3, 0.2, 0.5, 0.5, 0.3, 0.4, 0.1, 0.4, 0.7, 0.1, 0.7, 0.7, 0.9, 0.2, 0.5, 0.4, 0.9, 0.2, 0.1, 0.5, 0.8, 0.6, 0.1, 0.5, 0.4, 0.5, 0.3, 0.3, 0.1, 0.2, 0.6, 0.9, 0.4, 0.5, 0.6, 0.2, 0.1, 0.3, 0.2, 0.9, 0.6, 0.7, 0.7, 0.4, 0.3, 0.2, 0.1, 0.4, 0.1, 0.2, 0.5, 0.3, 0.9, 0.2, 0.7, 0.3, 0.8, 0.1, 0.4, 0.1, 0.9, 0.3, 0.9, 0.4, 0.1, 0.3, 0.9, 0.5, 0.8, 0.6, 0.7, 0.1, 0.6, 0.5, 0.3, 0.8, 0.3, 0.3, 0.6, 0.3, 0.2, 0.2, 0.2, 0.6, 0.7, 0.2, 0.2, 0.7, 0.3, 0.4, 0.7, 0.3, 0.8, 0.8, 0.9, 0.7, 0.7, 0.4, 0.5, 0.2, 0.4, 0.1, 0.2, 0.8, 0.1, 0.1, 0.9, 0.1, 0.8, 0.5, 0.9, 0.2, 0.6, 0.8, 0.9, 0.1, 0.6, 0.8, 0.1, 0.6, 0.5, 0.9, 0.6, 0.3, 0.9, 0.6, 0.2, 0.7, 0.7, 0.1, 0.5, 0.3, 0.9, 0.8, 0.3, 0.4, 0.8, 0.9, 0.3, 0.6, 0.1, 0.7, 0.4, 0.5, 0.6, 0.2, 0.4, 0.2, 0.9, 0.9, 0.8, 0.4, 0.7, 0.7, 0.8, 0.6, 0.7, 0.7, 0.7, 0.4, 0.6, 0.3, 0.2, 0.7, 0.2, 0.2, 0.2, 0.6, 0.2, 0.3, 0.5, 0.7, 0.6, 0.4, 0.1, 0.2, 0.4, 0.7, 0.7, 0.3, 0.1, 0.6, 0.6, 0.1, 0.4, 0.9, 0.4, 0.9, 0.9, 0.1, 0.8, 0.6, 0.7, 0.5, 0.7, 0.2, 0.2, 0.9, 0.2, 0.6, 0.7, 0.2, 0.2, 0.1, 0.9, 0.7, 0.8, 0.8, 0.6, 0.7, 0.1, 0.9, 0.5, 0.6, 0.3, 0.5, 0.4, 0.3, 0.9, 0.3, 0.7, 0.1, 0.7, 0.5, 0.5, 0.2, 0.6, 0.6, 0.8, 0.5, 0.6, 0.1, 0.2, 0.4, 0.9, 0.2, 0.1, 0.9, 0.7, 0.2, 0.6, 0.9, 0.8, 0.8, 0.8, 0.7, 0.9, 0.8, 0.8, 0.6, 0.1, 0.1, 0.7, 0.9, 0.8, 0.5, 0.5, 0.2, 0.7, 0.8, 0.9, 0.8, 0.3, 0.5, 0.9, 0.6, 0.5, 0.7, 0.7, 0.3, 0.5, 0.5, 0.3, 0.6, 0.9, 0.8, 0.5, 0.1, 0.9, 0.2, 0.3, 0.5, 0.9, 0.5, 0.4, 0.5, 0.6, 0.5, 0.5, 0.1, 0.8, 0.9, 0.2, 0.5, 0.1, 0.1, 0.2, 0.8, 0.4, 0.8, 0.8, 0.7, 0.9, 0.2, 0.9, 0.6, 0.8, 0.1, 0.6, 0.8, 0.8, 0.4, 0.1, 0.8, 0.7, 0.6, 0.2, 0.8,
+
+L3_zHERK_o_H
+10.01, -1.11022302463e-16, 8.04, 0.77, 7.53, 1.36, 9.86, 1.94, 8.93, 1.85, 7.68, 0.77, 7.58, 0.63, 7.69, 0.21, 6.88, -0.82, 7.57, 2.06, 7.2, 0.95, 8.53, 1.49, 6.7, 0.76, 7.32, 2.07, 7.69, 1.13, 8.25, 7.77156117238e-16, 8.31, 0.63, 8.04, -0.77, 12.03, -2.77555756156e-16, 9.18, -0.21, 10.13, 1.27, 9.05, 0.33, 9.86, 0.29, 8.91, 0.99, 9.79, -0.12, 8.31, -0.23, 9.8, 0.01, 8.97, 1.79, 10.49, 0.1, 9.07, 0.73, 8.88, 0.5, 8.26, 0.59, 9.68, 0.31, 9.31, 0.84, 7.53, -1.36, 9.18, 0.21, 10.96, -4.57966997658e-16, 9.17, 1.17, 9.59, 1.29, 9.35, 0.33, 9.24, 1.36, 9.16, 1.0, 7.35, 0.36, 8.77, 1.51, 8.31, 1.2, 9.09, 0.69, 7.85, 1.75, 8.94, 1.45, 7.96, 1.64, 8.36, 0.51, 8.45, 1.08, 9.86, -1.94, 10.13, -1.27, 9.17, -1.17, 13.39, -1.88737914186e-15, 10.16, 0.35, 10.6, -0.52, 10.62, -0.45, 9.87, 0.21, 9.41, -1.29, 9.78, -0.33, 10.33, -0.18, 11.23, -0.2, 10.43, 0.84, 10.46, 0.05, 9.12, 0.53, 9.69, -0.68, 9.9, 0.15, 8.93, -1.85, 9.05, -0.33, 9.59, -1.29, 10.16, -0.35, 10.27, -1.02695629778e-15, 9.17, 0.4, 9.49, 0.39, 9.08, 0.1, 8.67, -0.59, 8.71, 0.71, 7.63, -0.55, 9.97, 0.22, 9.1, 0.03, 8.67, 0.49, 8.41, 0.45, 8.41, 0.46, 8.89, 0.14, 7.68, -0.77, 9.86, -0.29, 9.35, -0.33, 10.6, 0.52, 9.17, -0.4, 11.19, -2.15105711021e-16, 8.81, 0.94, 9.06, 0.24, 8.49, 0.57, 8.57, 0.77, 8.08, 1.11, 9.75, 1.82, 9.01, 1.66, 9.15, 0.56, 7.79, 1.04, 8.39, 0.19, 9.32, 1.19, 7.58, -0.63, 8.91, -0.99, 9.24, -1.36, 10.62, 0.45, 9.49, -0.39, 8.81, -0.94, 10.46, 6.93889390391e-16, 8.13, -0.6, 8.21, -0.7, 8.57, -0.97, 8.69, -0.44, 9.04, 0.52, 8.5, 0.32, 8.89, 0.41, 8.36, 0.45, 8.83, -0.61, 9.73, 0.18, 7.69, -0.21, 9.79, 0.12, 9.16, -1.0, 9.87, -0.21, 9.08, -0.1, 9.06, -0.24, 8.13, 0.6, 10.55, 8.881784197e-16, 9.18, -0.27, 8.8, 0.71, 8.64, 1.27, 9.02, 0.29, 8.64, 1.06, 8.73, 0.43, 8.85, 1.43, 8.98, -0.59, 9.31, 1.12, 6.88, 0.82, 8.31, 0.23, 7.35, -0.36, 9.41, 1.29, 8.67, 0.59, 8.49, -0.57, 8.21, 0.7, 9.18, 0.27, 9.75, -2.22044604925e-16, 7.49, 0.3, 9.04, 0.42, 9.22, 1.67, 8.84, 1.11, 8.29, 1.01, 7.59, 1.17, 7.48, 1.24, 8.64, 1.9, 7.57, -2.06, 9.8, -0.01, 8.77, -1.51, 9.78, 0.33, 8.71, -0.71, 8.57, -0.77, 8.57, 0.97, 8.8, -0.71, 7.49, -0.3, 10.61, 7.77156117238e-16, 8.09, 0.83, 9.94, 0.39, 8.31, 2.05, 9.55, 1.33, 7.39, 0.94, 8.81, -0.02, 7.92, 0.78, 7.2, -0.95, 8.97, -1.79, 8.31, -1.2, 10.33, 0.18, 7.63, 0.55, 8.08, -1.11, 8.69, 0.44, 8.64, -1.27, 9.04, -0.42, 8.09, -0.83, 10.62, -1.11022302463e-16, 8.29, 0.25, 8.29, 0.68, 8.87, 0.59, 7.17, 0.52, 8.0, -0.98, 9.15, -0.06, 8.53, -1.49, 10.49, -0.1, 9.09, -0.69, 11.23, 0.2, 9.97, -0.22, 9.75, -1.82, 9.04, -0.52, 9.02, -0.29, 9.22, -1.67, 9.94, -0.39, 8.29, -0.25, 12.1, -2.22044604925e-16, 8.66, 0.56, 8.53, 1.48, 8.33, 1.41, 9.35, -1.11022302463e-16, 9.33, 0.75, 6.7, -0.76, 9.07, -0.73, 7.85, -1.75, 10.43, -0.84, 9.1, -0.03, 9.01, -1.66, 8.5, -0.32, 8.64, -1.06, 8.84, -1.11, 8.31, -2.05, 8.29, -0.68, 8.66, -0.56, 9.59, 5.55111512313e-16, 8.68, 0.76, 7.94, 0.92, 8.05, -0.41, 9.01, 0.65, 7.32, -2.07, 8.88, -0.5, 8.94, -1.45, 10.46, -0.05, 8.67, -0.49, 9.15, -0.56, 8.89, -0.41, 8.73, -0.43, 8.29, -1.01, 9.55, -1.33, 8.87, -0.59, 8.53, -1.48, 8.68, -0.76, 11.48, -8.32667268469e-16, 8.48, 1.14, 8.39, -0.25, 8.31, 0.5, 7.69, -1.13, 8.26, -0.59, 7.96, -1.64, 9.12, -0.53, 8.41, -0.45, 7.79, -1.04, 8.36, -0.45, 8.85, -1.43, 7.59, -1.17, 7.39, -0.94, 7.17, -0.52, 8.33, -1.41, 7.94, -0.92, 8.48, -1.14, 9.58, 1.94289029309e-16, 7.84, -0.73, 9.21, 1.0, 8.25, -6.66133814775e-16, 9.68, -0.31, 8.36, -0.51, 9.69, 0.68, 8.41, -0.46, 8.39, -0.19, 8.83, 0.61, 8.98, 0.59, 7.48, -1.24, 8.81, 0.02, 8.0, 0.98, 9.35, 1.05471187339e-15, 8.05, 0.41, 8.39, 0.25, 7.84, 0.73, 11.26, 1.05471187339e-15, 9.34, 1.56, 8.31, -0.63, 9.31, -0.84, 8.45, -1.08, 9.9, -0.15, 8.89, -0.14, 9.32, -1.19, 9.73, -0.18, 9.31, -1.12, 8.64, -1.9, 7.92, -0.78, 9.15, 0.06, 9.33, -0.75, 9.01, -0.65, 8.31, -0.5, 9.21, -1.0, 9.34, -1.56, 10.77, 5.55111512313e-17,
+
+L3_sSYR2K_A_nk
+0.2, 0.7, 0.6, 0.9, 0.4, 0.3, 0.2, 0.1, 0.7, 0.8, 0.2, 0.7, 0.2, 0.7, 0.7, 0.4, 0.1, 0.4, 0.6, 0.3, 0.2, 0.7, 0.2, 0.8, 0.7, 0.1, 0.8, 0.6, 0.2, 0.9, 0.5, 0.1, 0.3, 0.1, 0.4, 0.4, 0.7, 0.4, 0.4, 0.5, 0.1, 0.7, 0.2, 0.5, 0.6, 0.7, 0.9, 0.9, 0.3, 0.2, 0.9, 0.7, 0.7, 0.7, 0.3, 0.2, 0.3, 0.1, 0.7, 0.2, 0.1, 0.5, 0.3, 0.3, 0.4, 0.1, 0.8, 0.6, 0.1, 0.9, 0.9, 0.3, 0.3, 0.9, 0.4, 0.7, 0.4, 0.4, 0.6, 0.4, 0.9, 0.4, 0.2, 0.8, 0.2, 0.2, 0.4, 0.4, 0.4, 0.9, 0.1, 0.9, 0.4, 0.8, 0.6, 0.1, 0.9, 0.4, 0.9, 0.9, 0.8, 0.9, 0.5, 0.4, 0.9, 0.3, 0.4, 0.7, 0.3, 0.6, 0.9, 0.4, 0.1, 0.2, 0.2, 0.5, 0.2, 0.8, 0.9, 0.7, 0.1, 0.3, 0.9, 0.1, 0.4, 0.9, 0.2, 0.3, 0.1, 0.3, 0.9, 0.7, 0.3, 0.6, 0.5, 0.4, 0.1, 0.8, 0.9, 0.5, 0.7, 0.9, 0.1, 0.1, 0.6, 0.2, 0.4, 0.1, 0.1, 0.6, 0.6, 0.2, 0.7, 0.3, 0.4, 0.1, 0.7, 0.2, 0.1, 0.7, 0.9, 0.2, 0.1, 0.8, 0.6, 0.8, 0.8, 0.6, 0.4, 0.8, 0.4, 0.9, 0.1, 0.4, 0.1, 0.1, 0.2, 0.3, 0.4, 0.1, 0.9, 0.5, 0.9, 0.8, 0.1, 0.4, 0.6, 0.7, 0.1, 0.3, 0.7, 0.6, 0.1, 0.7, 0.9, 0.2, 0.5, 0.6, 0.3, 0.7, 0.8, 0.3, 0.9, 0.4, 0.5, 0.4, 0.4, 0.6, 0.5, 0.7, 0.6, 0.5, 0.4, 0.7, 0.8, 0.5, 0.8, 0.1, 0.3, 0.8, 0.8, 0.8, 0.4, 0.7, 0.6, 0.3, 0.5, 0.4, 0.9, 0.2, 0.8, 0.3, 0.8, 0.4, 0.1, 0.6, 0.5, 0.3, 0.2, 0.3, 0.3, 0.9, 0.7, 0.8, 0.5, 0.5, 0.3, 0.9, 0.3, 0.9, 0.7, 0.3, 0.1, 0.4, 0.9, 0.9, 0.5, 0.3, 0.9, 0.5, 0.1, 0.5, 0.2, 0.6, 0.7, 0.8, 0.8, 0.5, 0.8, 0.5, 0.2, 0.8,
+
+L3_sSYR2K_B_nk
+0.3, 0.8, 0.6, 0.5, 0.7, 0.4, 0.3, 0.3, 0.6, 0.3, 0.5, 0.6, 0.6, 0.2, 0.1, 0.6, 0.5, 0.7, 0.4, 0.5, 0.7, 0.1, 0.4, 0.2, 0.9, 0.9, 0.5, 0.5, 0.5, 0.3, 0.2, 0.9, 0.9, 0.1, 0.9, 0.8, 0.2, 0.9, 0.1, 0.6, 0.4, 0.5, 0.5, 0.4, 0.1, 0.3, 0.9, 0.9, 0.8, 0.1, 0.5, 0.2, 0.7, 0.4, 0.5, 0.6, 0.1, 0.4, 0.1, 0.5, 0.7, 0.9, 0.6, 0.5, 0.2, 0.8, 0.2, 0.6, 0.4, 0.1, 0.9, 0.1, 0.7, 0.7, 0.9, 0.3, 0.3, 0.5, 0.2, 0.1, 0.2, 0.2, 0.2, 0.3, 0.3, 0.9, 0.2, 0.9, 0.5, 0.1, 0.7, 0.7, 0.9, 0.6, 0.6, 0.9, 0.8, 0.7, 0.6, 0.6, 0.5, 0.4, 0.4, 0.9, 0.3, 0.1, 0.8, 0.5, 0.5, 0.1, 0.5, 0.4, 0.3, 0.7, 0.6, 0.5, 0.3, 0.1, 0.5, 0.9, 0.8, 0.5, 0.8, 0.8, 0.1, 0.5, 0.4, 0.1, 0.1, 0.6, 0.6, 0.4, 0.4, 0.9, 0.3, 0.3, 0.6, 0.2, 0.7, 0.4, 0.4, 0.4, 0.9, 0.5, 0.3, 0.6, 0.3, 0.6, 0.2, 0.9, 0.9, 0.5, 0.8, 0.3, 0.6, 0.6, 0.9, 0.2, 0.9, 0.1, 0.8, 0.7, 0.1, 0.7, 0.7, 0.6, 0.6, 0.6, 0.2, 0.4, 0.1, 0.8, 0.7, 0.8, 0.7, 0.8, 0.6, 0.5, 0.5, 0.7, 0.1, 0.6, 0.6, 0.4, 0.4, 0.4, 0.9, 0.6, 0.2, 0.2, 0.5, 0.9, 0.3, 0.2, 0.1, 0.7, 0.6, 0.6, 0.8, 0.6, 0.7, 0.9, 0.3, 0.9, 0.4, 0.4, 0.8, 0.9, 0.5, 0.7, 0.6, 0.1, 0.1, 0.7, 0.4, 0.6, 0.5, 0.3, 0.5, 0.3, 0.3, 0.9, 0.3, 0.2, 0.5, 0.3, 0.1, 0.3, 0.1, 0.7, 0.3, 0.9, 0.9, 0.5, 0.5, 0.8, 0.3, 0.5, 0.8, 0.1, 0.8, 0.7, 0.1, 0.1, 0.8, 0.1, 0.5, 0.4, 0.7, 0.4, 0.9, 0.1, 0.5, 0.3, 0.7, 0.6, 0.5, 0.9, 0.6, 0.7, 0.4, 0.3, 0.2, 0.5, 0.2, 0.7, 0.8, 0.3, 0.6, 0.5, 0.3, 0.7,
+
+L3_sSYR2K_C_nn
+0.7, 0.3, 0.2, 0.7, 0.4, 0.5, 0.5, 0.7, 0.6, 0.5, 0.9, 0.9, 0.8, 0.8, 0.7, 0.9, 0.8, 0.3, 0.9, 0.5, 0.2, 0.4, 0.3, 0.7, 0.7, 0.5, 0.6, 0.6, 0.2, 0.4, 0.7, 0.2, 0.8, 0.3, 0.2, 0.5, 0.9, 0.6, 0.8, 0.4, 0.3, 0.5, 0.3, 0.7, 0.7, 0.9, 0.3, 0.1, 0.6, 0.7, 0.3, 0.7, 0.2, 0.6, 0.1, 0.6, 0.1, 0.9, 0.7, 0.9, 0.9, 0.6, 0.1, 0.2, 0.1, 0.6, 0.4, 0.6, 0.4, 0.4, 0.8, 0.6, 0.4, 0.1, 0.4, 0.1, 0.7, 0.9, 0.4, 0.9, 0.3, 0.5, 0.8, 0.2, 0.6, 0.5, 0.3, 0.4, 0.1, 0.1, 0.7, 0.8, 0.6, 0.1, 0.2, 0.1, 0.1, 0.1, 0.9, 0.9, 0.5, 0.6, 0.5, 0.7, 0.3, 0.9, 0.4, 0.8, 0.6, 0.6, 0.8, 0.5, 0.6, 0.7, 0.7, 0.2, 0.9, 0.8, 0.7, 0.7, 0.7, 0.5, 0.7, 0.1, 0.6, 0.6, 0.7, 0.9, 0.1, 0.7, 0.1, 0.3, 0.2, 0.8, 0.7, 0.9, 0.6, 0.5, 0.3, 0.9, 0.7, 0.1, 0.8, 0.9, 0.8, 0.8, 0.5, 0.1, 0.8, 0.1, 0.2, 0.4, 0.3, 0.5, 0.6, 0.7, 0.9, 0.9, 0.2, 0.5, 0.1, 0.8, 0.8, 0.7, 0.2, 0.8, 0.9, 0.9, 0.1, 0.2, 0.9, 0.6, 0.7, 0.6, 0.4, 0.1, 0.6, 0.7, 0.5, 0.7, 0.5, 0.2, 0.9, 0.2, 0.6, 0.7, 0.4, 0.9, 0.2, 0.9, 0.1, 0.9, 0.1, 0.7, 0.1, 0.1, 0.2, 0.2, 0.6, 0.3, 0.3, 0.8, 0.6, 0.7, 0.8, 0.4, 0.3, 0.2, 0.3, 0.1, 0.7, 0.3, 0.8, 0.8, 0.9, 0.3, 0.8, 0.2, 0.7, 0.5, 0.8, 0.8, 0.7, 0.1, 0.1, 0.5, 0.9, 0.2, 0.2, 0.1, 0.9, 0.2, 0.3, 0.2, 0.4, 0.5, 0.6, 0.5, 0.7, 0.2, 0.6, 0.6, 0.8, 0.9, 0.9, 0.8, 0.2, 0.9, 0.6, 0.8, 0.7, 0.5, 0.1, 0.1, 0.5, 0.9, 0.8, 0.7, 0.4, 0.2, 0.5, 0.8, 0.7, 0.4, 0.1, 0.7, 0.6, 0.5, 0.6, 0.1, 0.8, 0.1, 0.8, 0.3, 0.3, 0.6, 0.6, 0.6, 0.7, 0.9, 0.3, 0.2, 0.4, 0.7, 0.8, 0.5, 0.5, 0.1, 0.7,
+
+L3_sSYR2K_o_N
+8.0400006175, 7.79999953508, 7.75000019372, 7.22999972105, 7.5300001204, 7.22000026703, 8.66999912262, 7.55000036955, 8.07000029087, 7.45000076294, 8.91000020504, 8.14999997616, 9.66999989748, 8.62000018358, 7.96999949217, 8.5799998045, 9.02000027895, 7.79999953508, 7.19999921322, 8.31999969482, 6.52999992669, 7.42999973893, 8.44000035524, 9.38999956846, 7.7600004077, 8.17999982834, 7.99999964237, 8.40000021458, 7.45000000298, 8.54999962449, 9.19999998808, 8.31000061333, 8.88999921083, 8.53000050783, 7.75000019372, 8.31999969482, 9.65999925137, 8.75999987125, 8.45999985933, 8.80000057817, 9.9099996686, 7.25, 8.01000005007, 7.87000006437, 9.91999930143, 8.61999976635, 9.64000016451, 7.87999973446, 7.49999964237, 9.89000052214, 9.16999989748, 7.22999972105, 6.52999992669, 8.75999987125, 6.06000003964, 7.28999960423, 7.25000009686, 9.18999898434, 7.10999983549, 8.0799998045, 7.04999959469, 7.86000025272, 7.33000002056, 7.08999939263, 7.56999931484, 6.88999998569, 7.40000000596, 7.92999994755, 7.5300001204, 7.42999973893, 8.45999985933, 7.28999960423, 7.47999992967, 7.60000000149, 8.35999956727, 7.32000026852, 8.52000063658, 8.22999989986, 8.65000000596, 8.50000035763, 9.04000073671, 8.06999969482, 8.10000020266, 7.52000065148, 8.23000013828, 7.22000026703, 8.44000035524, 8.80000057817, 7.25000009686, 7.60000000149, 7.69999951124, 9.45999985933, 8.47999966145, 7.27999982983, 7.60000009835, 8.7599998489, 7.87999973446, 9.40000019222, 9.34000051022, 8.19000041485, 8.59000015259, 9.20999968052, 8.66999912262, 9.38999956846, 9.9099996686, 9.18999898434, 8.35999956727, 9.45999985933, 10.9799991846, 8.95000040531, 9.76999932528, 9.08999919891, 10.530000329, 9.81999891996, 10.9100000262, 9.29000015557, 9.42999875546, 10.4399994016, 9.89000052214, 7.55000036955, 7.7600004077, 7.25, 7.10999983549, 7.32000026852, 8.47999966145, 8.95000040531, 7.47999972105, 8.33000028133, 6.61999950558, 8.64999979734, 7.56000003964, 8.57999974489, 8.16000004113, 7.65000039339, 8.60999983549, 8.75000035763, 8.07000029087, 8.17999982834, 8.01000005007, 8.0799998045, 8.52000063658, 7.27999982983, 9.76999932528, 8.33000028133, 8.33999949694, 7.89999991655, 8.01999998093, 7.7599998489, 9.41000062227, 8.40999946743, 6.78000040352, 8.30999985337, 8.81000119448, 7.45000076294, 7.99999964237, 7.87000006437, 7.04999959469, 8.22999989986, 7.60000009835, 9.08999919891, 6.61999950558, 7.89999991655, 7.71999913454, 8.37000006437, 7.49999971688, 8.74999982119, 8.98000085354, 7.51999938488, 7.94000015408, 7.67999954522, 8.91000020504, 8.40000021458, 9.91999930143, 7.86000025272, 8.65000000596, 8.7599998489, 10.530000329, 8.64999979734, 8.01999998093, 8.37000006437, 10.2400007248, 8.83999939263, 10.1499999762, 9.2699996978, 8.97000086308, 9.53999918699, 8.76000061631, 8.14999997616, 7.45000000298, 8.61999976635, 7.33000002056, 8.50000035763, 7.87999973446, 9.81999891996, 7.56000003964, 7.7599998489, 7.49999971688, 8.83999939263, 8.43999969959, 9.34999924898, 8.15000039339, 7.74999982119, 9.46999895573, 8.92000025511, 9.66999989748, 8.54999962449, 9.64000016451, 7.08999939263, 9.04000073671, 9.40000019222, 10.9100000262, 8.57999974489, 9.41000062227, 8.74999982119, 10.1499999762, 9.34999924898, 9.60000020266, 9.47000046074, 8.96000021696, 10.1199989319, 10.0299995542, 8.62000018358, 9.19999998808, 7.87999973446, 7.56999931484, 8.06999969482, 9.34000051022, 9.29000015557, 8.16000004113, 8.40999946743, 8.98000085354, 9.2699996978, 8.15000039339, 9.47000046074, 9.07999935746, 7.85000038147, 8.91999971867, 8.97000026703, 7.96999949217, 8.31000061333, 7.49999964237, 6.88999998569, 8.10000020266, 8.19000041485, 9.42999875546, 7.65000039339, 6.78000040352, 7.51999938488, 8.97000086308, 7.74999982119, 8.96000021696, 7.85000038147, 6.5800004974, 8.04999981076, 7.9000005722, 8.5799998045, 8.88999921083, 9.89000052214, 7.40000000596, 7.52000065148, 8.59000015259, 10.4399994016, 8.60999983549, 8.30999985337, 7.94000015408, 9.53999918699, 9.46999895573, 10.1199989319, 8.91999971867, 8.04999981076, 9.89999943972, 9.37000045925, 9.02000027895, 8.53000050783, 9.16999989748, 7.92999994755, 8.23000013828, 9.20999968052, 9.89000052214, 8.75000035763, 8.81000119448, 7.67999954522, 8.76000061631, 8.92000025511, 10.0299995542, 8.97000026703, 7.9000005722, 9.37000045925, 10.259999454,
+
+L3_sSYR2K_A_kn
+0.6, 0.3, 0.8, 0.5, 0.6, 0.9, 0.6, 0.8, 0.5, 0.7, 0.5, 0.6, 0.3, 0.5, 0.9, 0.5, 0.5, 0.9, 0.3, 0.3, 0.1, 0.6, 0.4, 0.7, 0.6, 0.2, 0.3, 0.3, 0.9, 0.3, 0.1, 0.2, 0.9, 0.2, 0.6, 0.9, 0.6, 0.9, 0.3, 0.5, 0.4, 0.3, 0.5, 0.9, 0.5, 0.5, 0.8, 0.4, 0.3, 0.9, 0.6, 0.7, 0.8, 0.1, 0.1, 0.8, 0.4, 0.1, 0.2, 0.1, 0.7, 0.6, 0.4, 0.5, 0.5, 0.4, 0.4, 0.3, 0.5, 0.9, 0.1, 0.6, 0.6, 0.1, 0.7, 0.2, 0.2, 0.5, 0.8, 0.9, 0.4, 0.3, 0.9, 0.7, 0.4, 0.4, 0.3, 0.1, 0.9, 0.2, 0.5, 0.2, 0.9, 0.4, 0.1, 0.4, 0.7, 0.4, 0.2, 0.1, 0.9, 0.1, 0.6, 0.7, 0.4, 0.7, 0.7, 0.6, 0.7, 0.6, 0.5, 0.6, 0.5, 0.4, 0.3, 0.5, 0.3, 0.2, 0.3, 0.1, 0.1, 0.1, 0.5, 0.9, 0.3, 0.3, 0.6, 0.4, 0.1, 0.7, 0.2, 0.6, 0.8, 0.5, 0.2, 0.6, 0.1, 0.1, 0.7, 0.3, 0.8, 0.9, 0.7, 0.3, 0.2, 0.7, 0.4, 0.1, 0.3, 0.7, 0.6, 0.9, 0.5, 0.1, 0.3, 0.4, 0.5, 0.9, 0.7, 0.2, 0.5, 0.6, 0.5, 0.6, 0.7, 0.2, 0.8, 0.1, 0.1, 0.7, 0.4, 0.5, 0.2, 0.2, 0.4, 0.5, 0.2, 0.8, 0.7, 0.8, 0.4, 0.7, 0.9, 0.5, 0.9, 0.3, 0.7, 0.4, 0.3, 0.8, 0.3, 0.1, 0.8, 0.8, 0.9, 0.1, 0.8, 0.5, 0.6, 0.8, 0.4, 0.9, 0.3, 0.2, 0.8, 0.8, 0.6, 0.6, 0.4, 0.6, 0.1, 0.1, 0.3, 0.7, 0.1, 0.9, 0.6, 0.3, 0.8, 0.1, 0.3, 0.1, 0.9, 0.2, 0.7, 0.8, 0.4, 0.1, 0.6, 0.8, 0.3, 0.7, 0.4, 0.8, 0.5, 0.9, 0.9, 0.1, 0.7, 0.8, 0.2, 0.6, 0.2, 0.1, 0.1, 0.4, 0.5, 0.7, 0.5, 0.9, 0.8, 0.3, 0.1, 0.3, 0.6, 0.5, 0.6, 0.9, 0.5, 0.9, 0.6, 0.6, 0.2, 0.1, 0.8, 0.8, 0.7, 0.7, 0.9, 0.7, 0.1, 0.8,
+
+L3_sSYR2K_B_kn
+0.9, 0.1, 0.2, 0.5, 0.8, 0.6, 0.4, 0.8, 0.2, 0.2, 0.7, 0.7, 0.4, 0.6, 0.3, 0.9, 0.7, 0.7, 0.7, 0.6, 0.3, 0.6, 0.1, 0.7, 0.1, 0.7, 0.4, 0.5, 0.8, 0.8, 0.2, 0.6, 0.9, 0.4, 0.8, 0.3, 0.3, 0.9, 0.7, 0.1, 0.4, 0.8, 0.4, 0.5, 0.5, 0.2, 0.2, 0.8, 0.3, 0.3, 0.7, 0.6, 0.7, 0.7, 0.6, 0.3, 0.4, 0.2, 0.7, 0.5, 0.5, 0.3, 0.6, 0.9, 0.2, 0.6, 0.5, 0.3, 0.5, 0.9, 0.4, 0.1, 0.8, 0.6, 0.4, 0.4, 0.7, 0.6, 0.3, 0.3, 0.7, 0.5, 0.3, 0.8, 0.1, 0.9, 0.7, 0.2, 0.2, 0.6, 0.4, 0.8, 0.4, 0.6, 0.7, 0.9, 0.4, 0.4, 0.4, 0.7, 0.3, 0.5, 0.4, 0.8, 0.2, 0.3, 0.8, 0.9, 0.3, 0.1, 0.7, 0.8, 0.1, 0.1, 0.8, 0.2, 0.2, 0.8, 0.4, 0.4, 0.9, 0.1, 0.6, 0.6, 0.3, 0.5, 0.4, 0.4, 0.2, 0.5, 0.9, 0.3, 0.1, 0.5, 0.3, 0.4, 0.4, 0.5, 0.5, 0.4, 0.9, 0.1, 0.7, 0.2, 0.3, 0.1, 0.5, 0.1, 0.4, 0.7, 0.8, 0.1, 0.8, 0.1, 0.3, 0.6, 0.6, 0.8, 0.1, 0.6, 0.5, 0.9, 0.6, 0.6, 0.5, 0.6, 0.8, 0.3, 0.4, 0.7, 0.4, 0.5, 0.8, 0.5, 0.7, 0.4, 0.8, 0.7, 0.8, 0.4, 0.8, 0.6, 0.1, 0.7, 0.6, 0.1, 0.5, 0.6, 0.5, 0.6, 0.2, 0.2, 0.7, 0.5, 0.6, 0.8, 0.1, 0.6, 0.9, 0.9, 0.8, 0.2, 0.7, 0.2, 0.3, 0.3, 0.9, 0.3, 0.6, 0.5, 0.4, 0.5, 0.9, 0.1, 0.7, 0.6, 0.3, 0.6, 0.2, 0.7, 0.7, 0.8, 0.1, 0.8, 0.2, 0.6, 0.3, 0.6, 0.9, 0.2, 0.9, 0.9, 0.5, 0.1, 0.3, 0.5, 0.9, 0.2, 0.3, 0.5, 0.6, 0.6, 0.4, 0.7, 0.9, 0.9, 0.4, 0.7, 0.5, 0.7, 0.2, 0.9, 0.7, 0.1, 0.1, 0.7, 0.7, 0.9, 0.8, 0.7, 0.2, 0.9, 0.7, 0.1, 0.4, 0.8, 0.6, 0.9, 0.6, 0.9, 0.5, 0.7,
+
+L3_sSYR2K_o_T
+9.27999991179, 9.17999917269, 7.99999971688, 8.64999979734, 9.80999985337, 8.44999980927, 8.36999988556, 9.4499990344, 8.12000048161, 8.78999996185, 9.60999906063, 10.249999404, 9.7399995923, 8.69000035524, 9.12000006437, 10.0899995565, 7.64999943972, 9.17999917269, 9.75999963284, 8.42000007629, 8.15000028908, 10.7400001585, 8.03000050783, 9.08999937773, 10.0299999118, 7.88999938965, 9.65000021458, 9.9699999094, 9.5199996978, 9.0300001204, 9.34999960661, 8.39999981225, 9.50000077486, 7.55999976397, 7.99999971688, 8.42000007629, 8.09999978542, 7.54999983311, 9.91999989748, 7.28000059724, 7.11999970675, 7.94000053406, 6.64999943972, 8.22000044584, 8.87000006437, 9.71000039577, 8.78999978304, 8.15000019222, 8.52999985218, 7.97999972105, 7.58999997377, 8.64999979734, 8.15000028908, 7.54999983311, 7.21999988705, 10.1200004816, 7.15999994427, 8.12000024319, 8.48000019789, 7.79000031948, 9.38999974728, 9.14000093937, 8.03999958187, 7.83000011742, 8.23000011593, 7.73999989033, 7.63999977708, 8.02000010014, 9.80999985337, 10.7400001585, 9.91999989748, 10.1200004816, 12.7200006545, 8.78000030667, 9.79999962449, 9.81000003964, 9.32999914885, 10.8700002432, 10.7999996245, 11.6199992895, 10.3299987912, 9.890001297, 10.8899992108, 10.1799995452, 9.67999994755, 8.44999980927, 8.03000050783, 7.28000059724, 7.15999994427, 8.78000030667, 7.12000006437, 8.1800006032, 8.41999971867, 6.98000011593, 7.27999992669, 8.35000000149, 8.42000064999, 7.96000061184, 8.33000028133, 8.45999991894, 7.53000068665, 7.56000006199, 8.36999988556, 9.08999937773, 7.11999970675, 8.12000024319, 9.79999962449, 8.1800006032, 7.82000029087, 8.32000029087, 7.80000001192, 8.22999954224, 8.7199999094, 9.67999953032, 9.7699996829, 8.04000063241, 8.61000001431, 9.0600002408, 7.89999979734, 9.4499990344, 10.0299999118, 7.94000053406, 8.48000019789, 9.81000003964, 8.41999971867, 8.32000029087, 9.33999937773, 8.94999921322, 9.12999973446, 10.3099986911, 10.0099998489, 9.50999909639, 8.60999985039, 9.57000046968, 8.97999972105, 8.43999993801, 8.12000048161, 7.88999938965, 6.64999943972, 7.79000031948, 9.32999914885, 6.98000011593, 7.80000001192, 8.94999921322, 7.31999999285, 8.89000016451, 8.36999988556, 8.79999981076, 7.66000062227, 7.19000015408, 7.46000023186, 7.24000015855, 6.6599996686, 8.78999996185, 9.65000021458, 8.22000044584, 9.38999974728, 10.8700002432, 7.27999992669, 8.22999954224, 9.12999973446, 8.89000016451, 8.49999934435, 9.85999983549, 9.38000030816, 9.42999917269, 9.6800006628, 8.58999955654, 8.4299999252, 7.60999985039, 9.60999906063, 9.9699999094, 8.87000006437, 9.14000093937, 10.7999996245, 8.35000000149, 8.7199999094, 10.3099986911, 8.36999988556, 9.85999983549, 9.89999961853, 10.2699996978, 10.5300000906, 8.92000027001, 9.92999994755, 9.60999983549, 7.99000015855, 10.249999404, 9.5199996978, 9.71000039577, 8.03999958187, 11.6199992895, 8.42000064999, 9.67999953032, 10.0099998489, 8.79999981076, 9.38000030816, 10.2699996978, 11.3200002909, 10.0899999738, 9.69999963045, 10.0800006986, 9.44999945164, 8.62999981642, 9.7399995923, 9.0300001204, 8.78999978304, 7.83000011742, 10.3299987912, 7.96000061184, 9.7699996829, 9.50999909639, 7.66000062227, 9.42999917269, 10.5300000906, 10.0899999738, 8.6599996686, 8.96000023186, 9.15999907255, 8.23999929428, 7.87999993563, 8.69000035524, 9.34999960661, 8.15000019222, 8.23000011593, 9.890001297, 8.33000028133, 8.04000063241, 8.60999985039, 7.19000015408, 9.6800006628, 8.92000027001, 9.69999963045, 8.96000023186, 8.58000031114, 8.98000049591, 8.17999994755, 8.42000007629, 9.12000006437, 8.39999981225, 8.52999985218, 7.73999989033, 10.8899992108, 8.45999991894, 8.61000001431, 9.57000046968, 7.46000023186, 8.58999955654, 9.92999994755, 10.0800006986, 9.15999907255, 8.98000049591, 7.92000064999, 9.0099998489, 7.92000007629, 10.0899995565, 9.50000077486, 7.97999972105, 7.63999977708, 10.1799995452, 7.53000068665, 9.0600002408, 8.97999972105, 7.24000015855, 8.4299999252, 9.60999983549, 9.44999945164, 8.23999929428, 8.17999994755, 9.0099998489, 9.02000027895, 6.61999950558, 7.64999943972, 7.55999976397, 7.58999997377, 8.02000010014, 9.67999994755, 7.56000006199, 7.89999979734, 8.43999993801, 6.6599996686, 7.60999985039, 7.99000015855, 8.62999981642, 7.87999993563, 8.42000007629, 7.92000007629, 6.61999950558, 7.73999947309,
+
+L3_dSYR2K_A_nk
+0.9, 0.2, 0.3, 0.4, 0.3, 0.5, 0.9, 0.9, 0.9, 0.2, 0.2, 0.4, 0.7, 0.1, 0.4, 0.1, 0.6, 0.2, 0.2, 0.3, 0.1, 0.4, 0.3, 0.8, 0.2, 0.5, 0.7, 0.5, 0.3, 0.5, 0.1, 0.3, 0.2, 0.5, 0.9, 0.1, 0.7, 0.2, 0.5, 0.8, 0.8, 0.7, 0.8, 0.1, 0.2, 0.6, 0.5, 0.3, 0.4, 0.7, 0.2, 0.5, 0.2, 0.8, 0.8, 0.9, 0.5, 0.5, 0.8, 0.3, 0.9, 0.3, 0.6, 0.5, 0.6, 0.5, 0.3, 0.3, 0.4, 0.2, 0.1, 0.4, 0.9, 0.8, 0.2, 0.3, 0.2, 0.3, 0.2, 0.4, 0.4, 0.5, 0.9, 0.1, 0.3, 0.1, 0.9, 0.1, 0.1, 0.5, 0.6, 0.4, 0.2, 0.1, 0.9, 0.9, 0.1, 0.1, 0.7, 0.4, 0.8, 0.4, 0.5, 0.3, 0.1, 0.3, 0.6, 0.1, 0.5, 0.8, 0.7, 0.5, 0.5, 0.2, 0.9, 0.2, 0.9, 0.7, 0.7, 0.2, 0.8, 0.4, 0.9, 0.9, 0.4, 0.9, 0.7, 0.6, 0.6, 0.9, 0.4, 0.4, 0.3, 0.1, 0.9, 0.4, 0.4, 0.7, 0.3, 0.7, 0.4, 0.8, 0.3, 0.9, 0.1, 0.8, 0.2, 0.4, 0.7, 0.9, 0.4, 0.2, 0.6, 0.7, 0.5, 0.2, 0.3, 0.2, 0.9, 0.2, 0.5, 0.5, 0.3, 0.2, 0.6, 0.9, 0.5, 0.4, 0.6, 0.8, 0.3, 0.5, 0.8, 0.2, 0.3, 0.1, 0.6, 0.6, 0.4, 0.2, 0.1, 0.7, 0.1, 0.4, 0.7, 0.8, 0.8, 0.4, 0.6, 0.9, 0.9, 0.1, 0.1, 0.5, 0.1, 0.7, 0.2, 0.6, 0.9, 0.3, 0.9, 0.8, 0.4, 0.1, 0.3, 0.6, 0.9, 0.3, 0.2, 0.8, 0.8, 0.9, 0.8, 0.3, 0.6, 0.8, 0.4, 0.6, 0.5, 0.8, 0.9, 0.9, 0.5, 0.8, 0.7, 0.2, 0.4, 0.7, 0.8, 0.7, 0.7, 0.3, 0.6, 0.1, 0.8, 0.5, 0.1, 0.7, 0.4, 0.2, 0.3, 0.2, 0.5, 0.6, 0.7, 0.1, 0.7, 0.9, 0.6, 0.2, 0.5, 0.9, 0.6, 0.7, 0.8, 0.4, 0.4, 0.6, 0.8, 0.4, 0.1, 0.6, 0.5, 0.9, 0.7, 0.5, 0.9, 0.9, 0.3, 0.9, 0.4, 0.8,
+
+L3_dSYR2K_B_nk
+0.1, 0.9, 0.9, 0.9, 0.4, 0.9, 0.8, 0.9, 0.3, 0.9, 0.6, 0.1, 0.1, 0.2, 0.1, 0.3, 0.2, 0.4, 0.5, 0.2, 0.3, 0.4, 0.6, 0.3, 0.6, 0.9, 0.4, 0.6, 0.6, 0.1, 0.6, 0.2, 0.4, 0.9, 0.1, 0.9, 0.8, 0.7, 0.8, 0.3, 0.8, 0.4, 0.4, 0.5, 0.3, 0.5, 0.5, 0.7, 0.7, 0.7, 0.8, 0.4, 0.5, 0.5, 0.4, 0.4, 0.8, 0.8, 0.1, 0.2, 0.8, 0.1, 0.7, 0.5, 0.9, 0.8, 0.4, 0.4, 0.5, 0.5, 0.3, 0.3, 0.9, 0.4, 0.6, 0.7, 0.2, 0.1, 0.8, 0.1, 0.9, 0.5, 0.9, 0.8, 0.5, 0.6, 0.1, 0.3, 0.7, 0.9, 0.7, 0.7, 0.4, 0.3, 0.7, 0.6, 0.5, 0.5, 0.5, 0.2, 0.4, 0.4, 0.1, 0.5, 0.9, 0.2, 0.9, 0.5, 0.8, 0.6, 0.7, 0.5, 0.8, 0.1, 0.4, 0.4, 0.4, 0.8, 0.6, 0.5, 0.1, 0.5, 0.3, 0.9, 0.6, 0.4, 0.7, 0.6, 0.5, 0.4, 0.4, 0.3, 0.1, 0.2, 0.4, 0.7, 0.7, 0.7, 0.4, 0.9, 0.9, 0.4, 0.6, 0.1, 0.5, 0.1, 0.8, 0.4, 0.8, 0.9, 0.3, 0.8, 0.9, 0.5, 0.4, 0.1, 0.5, 0.1, 0.2, 0.6, 0.1, 0.6, 0.5, 0.5, 0.3, 0.7, 0.2, 0.3, 0.8, 0.6, 0.7, 0.8, 0.1, 0.1, 0.9, 0.6, 0.1, 0.9, 0.9, 0.6, 0.6, 0.2, 0.8, 0.1, 0.5, 0.7, 0.8, 0.3, 0.2, 0.9, 0.9, 0.9, 0.9, 0.9, 0.3, 0.5, 0.2, 0.8, 0.6, 0.2, 0.9, 0.3, 0.4, 0.1, 0.5, 0.7, 0.3, 0.2, 0.1, 0.9, 0.7, 0.7, 0.8, 0.6, 0.8, 0.3, 0.9, 0.9, 0.9, 0.2, 0.7, 0.4, 0.5, 0.9, 0.9, 0.9, 0.8, 0.3, 0.3, 0.6, 0.7, 0.1, 0.5, 0.5, 0.2, 0.8, 0.1, 0.3, 0.6, 0.9, 0.4, 0.7, 0.5, 0.2, 0.7, 0.1, 0.1, 0.7, 0.6, 0.5, 0.4, 0.7, 0.9, 0.3, 0.7, 0.4, 0.8, 0.7, 0.2, 0.2, 0.9, 0.4, 0.5, 0.1, 0.2, 0.4, 0.8, 0.2, 0.2, 0.9, 0.1, 0.4,
+
+L3_dSYR2K_C_nn
+0.8, 0.8, 0.1, 0.1, 0.5, 0.7, 0.7, 0.5, 0.3, 0.9, 0.5, 0.4, 0.5, 0.7, 0.5, 0.5, 0.5, 0.8, 0.1, 0.1, 0.4, 0.2, 0.4, 0.4, 0.6, 0.6, 0.9, 0.4, 0.2, 0.4, 0.1, 0.2, 0.7, 0.8, 0.1, 0.1, 0.3, 0.9, 0.6, 0.7, 0.5, 0.9, 0.9, 0.3, 0.4, 0.5, 0.1, 0.9, 0.6, 0.6, 0.8, 0.1, 0.4, 0.9, 0.9, 0.9, 0.9, 0.3, 0.9, 0.4, 0.2, 0.9, 0.3, 0.6, 0.6, 0.2, 0.8, 0.2, 0.5, 0.2, 0.6, 0.9, 0.4, 0.8, 0.9, 0.3, 0.9, 0.2, 0.5, 0.9, 0.7, 0.8, 0.7, 0.1, 0.4, 0.7, 0.4, 0.7, 0.9, 0.8, 0.2, 0.9, 0.5, 0.7, 0.5, 0.8, 0.2, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.4, 0.5, 0.3, 0.9, 0.9, 0.1, 0.5, 0.3, 0.5, 0.3, 0.9, 0.8, 0.1, 0.4, 0.7, 0.8, 0.5, 0.6, 0.9, 0.9, 0.3, 0.5, 0.5, 0.8, 0.1, 0.3, 0.7, 0.3, 0.5, 0.3, 0.7, 0.1, 0.3, 0.3, 0.6, 0.9, 0.4, 0.9, 0.7, 0.3, 0.1, 0.2, 0.6, 0.5, 0.4, 0.9, 0.1, 0.9, 0.7, 0.8, 0.9, 0.9, 0.3, 0.2, 0.2, 0.5, 0.5, 0.3, 0.6, 0.3, 0.3, 0.9, 0.4, 0.8, 0.2, 0.9, 0.7, 0.5, 0.4, 0.4, 0.9, 0.5, 0.8, 0.3, 0.7, 0.5, 0.3, 0.1, 0.5, 0.9, 0.5, 0.4, 0.1, 0.7, 0.4, 0.2, 0.5, 0.3, 0.9, 0.2, 0.9, 0.3, 0.4, 0.9, 0.5, 0.8, 0.9, 0.5, 0.7, 0.9, 0.7, 0.5, 0.4, 0.1, 0.6, 0.7, 0.7, 0.8, 0.5, 0.9, 0.4, 0.9, 0.9, 0.9, 0.7, 0.7, 0.9, 0.7, 0.7, 0.1, 0.9, 0.6, 0.8, 0.7, 0.1, 0.3, 0.1, 0.8, 0.5, 0.5, 0.7, 0.1, 0.2, 0.2, 0.5, 0.5, 0.2, 0.6, 0.2, 0.7, 0.7, 0.4, 0.7, 0.9, 0.2, 0.4, 0.7, 0.7, 0.2, 0.6, 0.2, 0.2, 0.5, 0.7, 0.6, 0.8, 0.1, 0.7, 0.7, 0.1, 0.7, 0.9, 0.1, 0.9, 0.9, 0.2, 0.2, 0.9, 0.7, 0.5, 0.8, 0.8, 0.2, 0.4, 0.7, 0.8, 0.3, 0.8, 0.7, 0.7, 0.7, 0.7, 0.5, 0.2, 0.7, 0.3,
+
+L3_dSYR2K_o_N
+8.34, 7.38, 8.81, 9.29, 7.65, 8.58, 8.06, 9.09, 8.7, 9.19, 7.82, 7.88, 8.87, 10.72, 8.37, 8.28, 8.55, 7.38, 5.04, 6.71, 7.14, 5.83, 7.26, 6.32, 8.11, 7.34, 7.31, 6.79, 7.09, 6.92, 8.03, 6.2, 7.27, 7.62, 8.81, 6.71, 8.62, 10.17, 8.01, 9.15, 8.49, 9.73, 9.64, 9.13, 8.54, 9.96, 8.62, 12.33, 9.22, 9.44, 9.58, 9.29, 7.14, 10.17, 10.24, 8.79, 9.72, 8.37, 10.29, 9.23, 8.73, 9.52, 9.68, 9.29, 11.87, 8.23, 9.39, 8.5, 7.65, 5.83, 8.01, 8.79, 7.12, 8.25, 6.97, 8.05, 7.98, 7.52, 7.5, 8.83, 7.8, 9.54, 8.21, 7.46, 7.73, 8.58, 7.26, 9.15, 9.72, 8.25, 8.86, 8.28, 10.17, 8.69, 8.09, 9.0, 10.45, 8.11, 11.63, 9.89, 8.97, 9.48, 8.06, 6.32, 8.49, 8.37, 6.97, 8.28, 7.24, 9.32, 7.27, 7.66, 7.23, 10.31, 7.59, 10.05, 7.7, 8.6, 9.27, 9.09, 8.11, 9.73, 10.29, 8.05, 10.17, 9.32, 11.02, 8.96, 8.74, 9.67, 10.57, 8.78, 11.84, 10.09, 9.36, 9.77, 8.7, 7.34, 9.64, 9.23, 7.98, 8.69, 7.27, 8.96, 8.4, 7.49, 8.29, 10.26, 8.85, 10.75, 9.35, 9.33, 9.6, 9.19, 7.31, 9.13, 8.73, 7.52, 8.09, 7.66, 8.74, 7.49, 7.66, 8.49, 9.31, 7.8, 10.98, 8.03, 8.62, 8.6, 7.82, 6.79, 8.54, 9.52, 7.5, 9.0, 7.23, 9.67, 8.29, 8.49, 7.36, 8.64, 8.91, 10.34, 8.04, 8.09, 8.92, 7.88, 7.09, 9.96, 9.68, 8.83, 10.45, 10.31, 10.57, 10.26, 9.31, 8.64, 10.6, 10.37, 12.21, 9.5, 10.18, 10.27, 8.87, 6.92, 8.62, 9.29, 7.8, 8.11, 7.59, 8.78, 8.85, 7.8, 8.91, 10.37, 9.22, 10.85, 8.76, 8.07, 8.45, 10.72, 8.03, 12.33, 11.87, 9.54, 11.63, 10.05, 11.84, 10.75, 10.98, 10.34, 12.21, 10.85, 13.98, 10.46, 10.92, 11.11, 8.37, 6.2, 9.22, 8.23, 8.21, 9.89, 7.7, 10.09, 9.35, 8.03, 8.04, 9.5, 8.76, 10.46, 8.74, 7.82, 9.42, 8.28, 7.27, 9.44, 9.39, 7.46, 8.97, 8.6, 9.36, 9.33, 8.62, 8.09, 10.18, 8.07, 10.92, 7.82, 10.08, 8.85, 8.55, 7.62, 9.58, 8.5, 7.73, 9.48, 9.27, 9.77, 9.6, 8.6, 8.92, 10.27, 8.45, 11.11, 9.42, 8.85, 8.54,
+
+L3_dSYR2K_A_kn
+0.1, 0.5, 0.7, 0.6, 0.4, 0.2, 0.1, 0.8, 0.9, 0.9, 0.9, 0.2, 0.3, 0.1, 0.5, 0.8, 0.9, 0.6, 0.2, 0.2, 0.5, 0.1, 0.3, 0.5, 0.4, 0.9, 0.9, 0.3, 0.2, 0.6, 0.5, 0.5, 0.7, 0.9, 0.8, 0.6, 0.2, 0.6, 0.6, 0.8, 0.5, 0.9, 0.1, 0.1, 0.1, 0.7, 0.3, 0.3, 0.8, 0.6, 0.6, 0.7, 0.5, 0.4, 0.7, 0.1, 0.8, 0.5, 0.7, 0.8, 0.4, 0.9, 0.6, 0.8, 0.1, 0.2, 0.8, 0.2, 0.9, 0.1, 0.5, 0.9, 0.9, 0.3, 0.5, 0.4, 0.2, 0.3, 0.2, 0.6, 0.3, 0.7, 0.5, 0.8, 0.9, 0.7, 0.7, 0.5, 0.7, 0.8, 0.5, 0.3, 0.9, 0.6, 0.6, 0.6, 0.3, 0.2, 0.2, 0.7, 0.3, 0.6, 0.5, 0.9, 0.6, 0.5, 0.4, 0.2, 0.5, 0.2, 0.6, 0.6, 0.5, 0.2, 0.4, 0.3, 0.5, 0.1, 0.9, 0.9, 0.5, 0.5, 0.7, 0.7, 0.4, 0.6, 0.8, 0.2, 0.5, 0.8, 0.2, 0.3, 0.4, 0.2, 0.8, 0.9, 0.1, 0.6, 0.5, 0.4, 0.5, 0.5, 0.7, 0.5, 0.7, 0.5, 0.5, 0.2, 0.5, 0.1, 0.5, 0.4, 0.5, 0.6, 0.8, 0.5, 0.3, 0.1, 0.1, 0.1, 0.3, 0.1, 0.6, 0.6, 0.8, 0.7, 0.1, 0.8, 0.9, 0.2, 0.2, 0.7, 0.6, 0.6, 0.9, 0.3, 0.4, 0.3, 0.1, 0.6, 0.3, 0.2, 0.8, 0.7, 0.3, 0.9, 0.8, 0.6, 0.6, 0.4, 0.6, 0.1, 0.2, 0.3, 0.9, 0.2, 0.8, 0.1, 0.9, 0.4, 0.2, 0.7, 0.9, 0.2, 0.2, 0.5, 0.7, 0.6, 0.9, 0.8, 0.2, 0.2, 0.4, 0.8, 0.9, 0.7, 0.7, 0.6, 0.7, 0.2, 0.5, 0.1, 0.5, 0.2, 0.3, 0.6, 0.9, 0.5, 0.9, 0.3, 0.7, 0.9, 0.4, 0.5, 0.9, 0.4, 0.4, 0.5, 0.9, 0.3, 0.6, 0.7, 0.7, 0.9, 0.7, 0.4, 0.6, 0.4, 0.8, 0.9, 0.3, 0.4, 0.8, 0.7, 0.7, 0.9, 0.9, 0.7, 0.5, 0.1, 0.1, 0.1, 0.2, 0.1, 0.3, 0.5, 0.9, 0.2, 0.9, 0.7, 0.4, 0.6,
+
+L3_dSYR2K_B_kn
+0.7, 0.9, 0.4, 0.9, 0.4, 0.9, 0.3, 0.7, 0.1, 0.7, 0.1, 0.4, 0.2, 0.1, 0.2, 0.6, 0.4, 0.9, 0.5, 0.6, 0.3, 0.6, 0.5, 0.2, 0.8, 0.8, 0.3, 0.8, 0.7, 0.3, 0.1, 0.4, 0.5, 0.3, 0.1, 0.4, 0.1, 0.4, 0.6, 0.3, 0.7, 0.5, 0.4, 0.1, 0.8, 0.3, 0.9, 0.2, 0.1, 0.2, 0.5, 0.9, 0.4, 0.1, 0.5, 0.1, 0.9, 0.9, 0.6, 0.7, 0.6, 0.4, 0.6, 0.8, 0.6, 0.3, 0.3, 0.5, 0.8, 0.9, 0.6, 0.6, 0.2, 0.9, 0.7, 0.9, 0.3, 0.4, 0.3, 0.3, 0.4, 0.7, 0.2, 0.6, 0.4, 0.9, 0.4, 0.4, 0.5, 0.9, 0.9, 0.1, 0.7, 0.8, 0.9, 0.3, 0.7, 0.5, 0.6, 0.6, 0.3, 0.2, 0.8, 0.7, 0.2, 0.8, 0.6, 0.3, 0.8, 0.6, 0.6, 0.9, 0.7, 0.4, 0.1, 0.7, 0.1, 0.1, 0.3, 0.9, 0.6, 0.4, 0.1, 0.9, 0.6, 0.4, 0.5, 0.1, 0.8, 0.5, 0.9, 0.7, 0.5, 0.4, 0.3, 0.8, 0.2, 0.3, 0.3, 0.8, 0.9, 0.3, 0.4, 0.1, 0.9, 0.5, 0.4, 0.7, 0.6, 0.1, 0.3, 0.1, 0.3, 0.5, 0.5, 0.4, 0.9, 0.6, 0.5, 0.9, 0.2, 0.5, 0.7, 0.4, 0.5, 0.3, 0.9, 0.4, 0.6, 0.9, 0.1, 0.1, 0.3, 0.6, 0.3, 0.8, 0.2, 0.9, 0.4, 0.1, 0.6, 0.4, 0.4, 0.7, 0.6, 0.6, 0.8, 0.8, 0.8, 0.7, 0.2, 0.4, 0.8, 0.3, 0.2, 0.1, 0.3, 0.7, 0.6, 0.8, 0.1, 0.2, 0.5, 0.7, 0.4, 0.9, 0.3, 0.3, 0.3, 0.8, 0.8, 0.2, 0.5, 0.6, 0.8, 0.2, 0.1, 0.4, 0.6, 0.3, 0.6, 0.8, 0.3, 0.5, 0.8, 0.1, 0.2, 0.3, 0.9, 0.2, 0.4, 0.2, 0.1, 0.4, 0.3, 0.8, 0.2, 0.2, 0.2, 0.5, 0.4, 0.1, 0.5, 0.4, 0.5, 0.4, 0.9, 0.5, 0.6, 0.2, 0.4, 0.1, 0.4, 0.7, 0.9, 0.8, 0.3, 0.1, 0.9, 0.2, 0.2, 0.2, 0.7, 0.2, 0.9, 0.8, 0.3, 0.4, 0.4, 0.3, 0.2, 0.1,
+
+L3_dSYR2K_o_T
+12.32, 10.9, 7.92, 10.05, 9.11, 9.84, 8.92, 11.16, 8.95, 11.72, 11.14, 9.3, 9.21, 8.55, 8.48, 9.86, 11.16, 10.9, 8.98, 7.31, 10.82, 8.83, 8.97, 7.95, 10.01, 8.45, 11.18, 10.01, 8.68, 8.13, 7.28, 8.25, 8.95, 10.52, 7.92, 7.31, 5.72, 8.67, 7.18, 7.89, 6.66, 8.48, 6.99, 8.51, 7.54, 6.84, 5.94, 6.63, 6.65, 7.44, 8.4, 10.05, 10.82, 8.67, 10.2, 9.2, 10.13, 7.93, 10.68, 8.39, 10.08, 10.67, 8.67, 8.94, 7.98, 8.24, 9.48, 10.17, 9.11, 8.83, 7.18, 9.2, 8.16, 8.98, 7.94, 9.32, 8.07, 8.58, 8.56, 7.55, 7.35, 6.68, 8.27, 7.62, 9.38, 9.84, 8.97, 7.89, 10.13, 8.98, 8.42, 8.22, 9.81, 8.71, 9.66, 9.84, 7.73, 8.72, 6.79, 8.64, 9.38, 10.1, 8.92, 7.95, 6.66, 7.93, 7.94, 8.22, 6.44, 8.03, 6.91, 7.82, 8.18, 8.22, 7.85, 5.35, 7.07, 7.71, 8.51, 11.16, 10.01, 8.48, 10.68, 9.32, 9.81, 8.03, 10.74, 7.7, 9.87, 9.78, 8.58, 9.15, 7.72, 8.51, 8.82, 10.64, 8.95, 8.45, 6.99, 8.39, 8.07, 8.71, 6.91, 7.7, 7.98, 8.69, 8.06, 7.37, 7.38, 5.05, 7.6, 7.49, 8.35, 11.72, 11.18, 8.51, 10.08, 8.58, 9.66, 7.82, 9.87, 8.69, 10.2, 10.37, 9.4, 7.78, 7.6, 8.55, 9.3, 10.57, 11.14, 10.01, 7.54, 10.67, 8.56, 9.84, 8.18, 9.78, 8.06, 10.37, 8.56, 8.99, 8.51, 7.78, 8.92, 8.33, 10.33, 9.3, 8.68, 6.84, 8.67, 7.55, 7.73, 8.22, 8.58, 7.37, 9.4, 8.99, 7.26, 8.11, 6.15, 7.29, 8.79, 9.49, 9.21, 8.13, 5.94, 8.94, 7.35, 8.72, 7.85, 9.15, 7.38, 7.78, 8.51, 8.11, 7.38, 6.59, 7.52, 8.56, 8.72, 8.55, 7.28, 6.63, 7.98, 6.68, 6.79, 5.35, 7.72, 5.05, 7.6, 7.78, 6.15, 6.59, 5.54, 6.38, 6.6, 7.39, 8.48, 8.25, 6.65, 8.24, 8.27, 8.64, 7.07, 8.51, 7.6, 8.55, 8.92, 7.29, 7.52, 6.38, 6.9, 7.09, 8.15, 9.86, 8.95, 7.44, 9.48, 7.62, 9.38, 7.71, 8.82, 7.49, 9.3, 8.33, 8.79, 8.56, 6.6, 7.09, 9.48, 9.99, 11.16, 10.52, 8.4, 10.17, 9.38, 10.1, 8.51, 10.64, 8.35, 10.57, 10.33, 9.49, 8.72, 7.39, 8.15, 9.99, 9.7,
+
+L3_cSYR2K_A_nk
+0.10000000149, 0.699999988079, 0.40000000596, 0.699999988079, 0.600000023842, 0.10000000149, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.40000000596, 0.40000000596, 0.699999988079, 0.300000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.5, 0.699999988079, 0.300000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.600000023842, 0.40000000596, 0.899999976158, 0.800000011921, 0.40000000596, 0.5, 0.800000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.40000000596, 0.300000011921, 0.600000023842, 0.699999988079, 0.40000000596, 0.5, 0.300000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.699999988079, 0.40000000596, 0.10000000149, 0.5, 0.20000000298, 0.300000011921, 0.699999988079, 0.40000000596, 0.40000000596, 0.600000023842, 0.899999976158, 0.5, 0.699999988079, 0.800000011921, 0.899999976158, 0.899999976158, 0.800000011921, 0.899999976158, 0.800000011921, 0.300000011921, 0.5, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.300000011921, 0.5, 0.699999988079, 0.699999988079, 0.300000011921, 0.600000023842, 0.10000000149, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.699999988079, 0.800000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.5, 0.5, 0.20000000298, 0.899999976158, 0.699999988079, 0.40000000596, 0.10000000149, 0.800000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.40000000596, 0.5, 0.699999988079, 0.40000000596, 0.5, 0.5, 0.699999988079, 0.600000023842, 0.10000000149, 0.5, 0.10000000149, 0.10000000149, 0.699999988079, 0.800000011921, 0.899999976158, 0.20000000298, 0.20000000298, 0.600000023842, 0.5, 0.300000011921, 0.300000011921, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.699999988079, 0.10000000149, 0.600000023842, 0.300000011921, 0.300000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.5, 0.10000000149, 0.40000000596, 0.10000000149, 0.10000000149, 0.699999988079, 0.40000000596, 0.699999988079, 0.800000011921, 0.40000000596, 0.800000011921, 0.699999988079, 0.5, 0.10000000149, 0.899999976158, 0.5, 0.699999988079, 0.899999976158, 0.20000000298, 0.40000000596, 0.5, 0.300000011921, 0.20000000298, 0.10000000149, 0.40000000596, 0.300000011921, 0.600000023842, 0.20000000298, 0.899999976158, 0.899999976158, 0.600000023842, 0.300000011921, 0.40000000596, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.5, 0.899999976158, 0.5, 0.20000000298, 0.899999976158, 0.40000000596, 0.300000011921, 0.40000000596, 0.800000011921, 0.40000000596, 0.40000000596, 0.20000000298, 0.40000000596, 0.10000000149, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.300000011921, 0.10000000149, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.800000011921, 0.899999976158, 0.899999976158, 0.699999988079, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.5, 0.800000011921, 0.300000011921, 0.10000000149, 0.899999976158, 0.699999988079, 0.800000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.699999988079, 0.800000011921, 0.40000000596, 0.40000000596, 0.5, 0.40000000596, 0.10000000149, 0.899999976158, 0.899999976158, 0.5, 0.800000011921, 0.10000000149, 0.800000011921, 0.5, 0.300000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.300000011921, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.699999988079, 0.40000000596, 0.699999988079, 0.699999988079, 0.899999976158, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.5, 0.40000000596, 0.300000011921, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.5, 0.600000023842, 0.10000000149, 0.800000011921, 0.699999988079, 0.600000023842, 0.5, 0.600000023842, 0.20000000298, 0.300000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.300000011921, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.899999976158, 0.699999988079, 0.699999988079, 0.40000000596, 0.600000023842, 0.10000000149, 0.899999976158, 0.899999976158, 0.300000011921, 0.20000000298, 0.40000000596, 0.300000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.5, 0.699999988079, 0.899999976158, 0.40000000596, 0.40000000596, 0.40000000596, 0.300000011921, 0.899999976158, 0.300000011921, 0.600000023842, 0.5, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.5, 0.40000000596, 0.10000000149, 0.899999976158, 0.699999988079, 0.40000000596, 0.20000000298, 0.40000000596, 0.20000000298, 0.600000023842, 0.699999988079, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.40000000596, 0.5, 0.10000000149, 0.899999976158, 0.699999988079, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.20000000298, 0.10000000149, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.300000011921, 0.800000011921, 0.899999976158, 0.300000011921, 0.899999976158, 0.800000011921, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.300000011921, 0.899999976158, 0.5, 0.40000000596, 0.899999976158, 0.300000011921, 0.20000000298, 0.699999988079, 0.699999988079, 0.699999988079, 0.600000023842, 0.20000000298, 0.800000011921, 0.899999976158, 0.5, 0.899999976158, 0.40000000596, 0.20000000298, 0.600000023842, 0.699999988079, 0.300000011921, 0.5, 0.800000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.20000000298, 0.699999988079, 0.600000023842, 0.800000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.5, 0.40000000596, 0.40000000596, 0.40000000596, 0.699999988079, 0.699999988079, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.5, 0.5, 0.300000011921, 0.300000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.20000000298, 0.699999988079, 0.300000011921, 0.600000023842, 0.40000000596, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.40000000596, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.699999988079, 0.20000000298, 0.40000000596, 0.800000011921, 0.300000011921, 0.800000011921, 0.300000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.800000011921, 0.899999976158, 0.40000000596, 0.699999988079, 0.300000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.5, 0.800000011921, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.5, 0.899999976158, 0.10000000149, 0.600000023842, 0.600000023842, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.899999976158, 0.300000011921, 0.699999988079, 0.40000000596, 0.40000000596, 0.899999976158, 0.699999988079, 0.10000000149, 0.600000023842, 0.5, 0.5, 0.10000000149, 0.5, 0.800000011921, 0.600000023842, 0.899999976158, 0.899999976158, 0.5, 0.800000011921, 0.699999988079, 0.800000011921, 0.5, 0.5, 0.600000023842, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.300000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.20000000298, 0.300000011921, 0.10000000149, 0.300000011921, 0.800000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.800000011921, 0.40000000596, 0.600000023842, 0.40000000596, 0.699999988079, 0.40000000596, 0.699999988079, 0.899999976158, 0.10000000149, 0.300000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.899999976158, 0.10000000149, 0.10000000149, 0.600000023842,
+
+L3_cSYR2K_B_nk
+0.40000000596, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.5, 0.10000000149, 0.699999988079, 0.300000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.800000011921, 0.800000011921, 0.20000000298, 0.699999988079, 0.20000000298, 0.699999988079, 0.20000000298, 0.40000000596, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.800000011921, 0.899999976158, 0.899999976158, 0.600000023842, 0.600000023842, 0.20000000298, 0.20000000298, 0.300000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.600000023842, 0.10000000149, 0.800000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.699999988079, 0.10000000149, 0.899999976158, 0.800000011921, 0.10000000149, 0.40000000596, 0.40000000596, 0.20000000298, 0.800000011921, 0.10000000149, 0.10000000149, 0.5, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.899999976158, 0.40000000596, 0.800000011921, 0.20000000298, 0.40000000596, 0.40000000596, 0.300000011921, 0.20000000298, 0.10000000149, 0.899999976158, 0.300000011921, 0.10000000149, 0.699999988079, 0.899999976158, 0.20000000298, 0.300000011921, 0.40000000596, 0.20000000298, 0.20000000298, 0.5, 0.899999976158, 0.800000011921, 0.800000011921, 0.40000000596, 0.10000000149, 0.699999988079, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.800000011921, 0.5, 0.20000000298, 0.600000023842, 0.5, 0.300000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.20000000298, 0.600000023842, 0.40000000596, 0.699999988079, 0.10000000149, 0.699999988079, 0.800000011921, 0.699999988079, 0.800000011921, 0.300000011921, 0.899999976158, 0.800000011921, 0.600000023842, 0.800000011921, 0.600000023842, 0.600000023842, 0.300000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.600000023842, 0.10000000149, 0.40000000596, 0.899999976158, 0.899999976158, 0.20000000298, 0.20000000298, 0.5, 0.5, 0.10000000149, 0.10000000149, 0.899999976158, 0.300000011921, 0.699999988079, 0.800000011921, 0.10000000149, 0.800000011921, 0.5, 0.300000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.600000023842, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.800000011921, 0.10000000149, 0.40000000596, 0.300000011921, 0.699999988079, 0.20000000298, 0.5, 0.699999988079, 0.10000000149, 0.899999976158, 0.40000000596, 0.20000000298, 0.10000000149, 0.300000011921, 0.10000000149, 0.300000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.300000011921, 0.5, 0.20000000298, 0.5, 0.600000023842, 0.20000000298, 0.40000000596, 0.699999988079, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.600000023842, 0.20000000298, 0.40000000596, 0.5, 0.300000011921, 0.899999976158, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.699999988079, 0.40000000596, 0.600000023842, 0.600000023842, 0.899999976158, 0.20000000298, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.300000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.899999976158, 0.300000011921, 0.10000000149, 0.40000000596, 0.300000011921, 0.5, 0.699999988079, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.800000011921, 0.899999976158, 0.40000000596, 0.5, 0.600000023842, 0.699999988079, 0.899999976158, 0.5, 0.5, 0.899999976158, 0.20000000298, 0.5, 0.800000011921, 0.600000023842, 0.600000023842, 0.699999988079, 0.10000000149, 0.10000000149, 0.699999988079, 0.600000023842, 0.300000011921, 0.10000000149, 0.600000023842, 0.899999976158, 0.10000000149, 0.800000011921, 0.300000011921, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.20000000298, 0.699999988079, 0.40000000596, 0.40000000596, 0.899999976158, 0.300000011921, 0.800000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.899999976158, 0.10000000149, 0.699999988079, 0.40000000596, 0.600000023842, 0.600000023842, 0.800000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.600000023842, 0.20000000298, 0.800000011921, 0.899999976158, 0.800000011921, 0.10000000149, 0.40000000596, 0.300000011921, 0.40000000596, 0.800000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.600000023842, 0.20000000298, 0.300000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.300000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.40000000596, 0.800000011921, 0.300000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.5, 0.300000011921, 0.800000011921, 0.20000000298, 0.5, 0.20000000298, 0.10000000149, 0.899999976158, 0.40000000596, 0.600000023842, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.40000000596, 0.600000023842, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.5, 0.10000000149, 0.300000011921, 0.800000011921, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.5, 0.40000000596, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.699999988079, 0.899999976158, 0.10000000149, 0.5, 0.699999988079, 0.600000023842, 0.600000023842, 0.5, 0.600000023842, 0.600000023842, 0.899999976158, 0.300000011921, 0.800000011921, 0.5, 0.899999976158, 0.5, 0.5, 0.600000023842, 0.10000000149, 0.699999988079, 0.699999988079, 0.20000000298, 0.300000011921, 0.699999988079, 0.5, 0.10000000149, 0.800000011921, 0.800000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.600000023842, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, 0.600000023842, 0.699999988079, 0.20000000298, 0.40000000596, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.600000023842, 0.40000000596, 0.5, 0.600000023842, 0.40000000596, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.800000011921, 0.699999988079, 0.5, 0.10000000149, 0.20000000298, 0.40000000596, 0.40000000596, 0.5, 0.899999976158, 0.800000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.600000023842, 0.300000011921, 0.20000000298, 0.40000000596, 0.20000000298, 0.300000011921, 0.10000000149, 0.899999976158, 0.5, 0.899999976158, 0.5, 0.699999988079, 0.40000000596, 0.10000000149, 0.300000011921, 0.300000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.300000011921, 0.20000000298, 0.300000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.699999988079, 0.20000000298, 0.10000000149, 0.5, 0.10000000149, 0.300000011921, 0.600000023842, 0.5, 0.600000023842, 0.20000000298, 0.40000000596, 0.20000000298, 0.300000011921, 0.300000011921, 0.600000023842, 0.800000011921, 0.5, 0.40000000596, 0.10000000149, 0.699999988079, 0.40000000596, 0.699999988079, 0.600000023842, 0.899999976158, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.40000000596, 0.300000011921, 0.40000000596, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.20000000298, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.20000000298, 0.10000000149, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.40000000596, 0.40000000596, 0.800000011921, 0.899999976158, 0.899999976158, 0.899999976158, 0.800000011921, 0.300000011921, 0.899999976158, 0.600000023842, 0.800000011921, 0.10000000149, 0.699999988079, 0.300000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.300000011921, 0.699999988079, 0.5, 0.699999988079, 0.600000023842, 0.800000011921, 0.600000023842, 0.600000023842, 0.10000000149, 0.300000011921, 0.5, 0.300000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.40000000596, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921,
+
+L3_cSYR2K_C_nn
+0.600000023842, 0.20000000298, 0.699999988079, 0.800000011921, 0.699999988079, 0.699999988079, 0.699999988079, 0.899999976158, 0.5, 0.899999976158, 0.899999976158, 0.5, 0.600000023842, 0.5, 0.899999976158, 0.5, 0.300000011921, 0.5, 0.20000000298, 0.20000000298, 0.10000000149, 0.699999988079, 0.10000000149, 0.5, 0.10000000149, 0.40000000596, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.800000011921, 0.800000011921, 0.20000000298, 0.899999976158, 0.699999988079, 0.800000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.800000011921, 0.10000000149, 0.800000011921, 0.800000011921, 0.699999988079, 0.899999976158, 0.899999976158, 0.20000000298, 0.300000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.20000000298, 0.699999988079, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.10000000149, 0.899999976158, 0.600000023842, 0.899999976158, 0.699999988079, 0.699999988079, 0.699999988079, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.5, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, 0.300000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.699999988079, 0.800000011921, 0.600000023842, 0.800000011921, 0.5, 0.10000000149, 0.699999988079, 0.20000000298, 0.40000000596, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.699999988079, 0.899999976158, 0.10000000149, 0.800000011921, 0.5, 0.40000000596, 0.300000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.699999988079, 0.600000023842, 0.600000023842, 0.899999976158, 0.20000000298, 0.5, 0.40000000596, 0.10000000149, 0.20000000298, 0.5, 0.20000000298, 0.800000011921, 0.20000000298, 0.699999988079, 0.5, 0.40000000596, 0.40000000596, 0.699999988079, 0.300000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.600000023842, 0.899999976158, 0.5, 0.899999976158, 0.800000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.10000000149, 0.600000023842, 0.10000000149, 0.899999976158, 0.699999988079, 0.800000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.40000000596, 0.300000011921, 0.20000000298, 0.800000011921, 0.699999988079, 0.40000000596, 0.300000011921, 0.300000011921, 0.800000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.899999976158, 0.40000000596, 0.300000011921, 0.10000000149, 0.300000011921, 0.10000000149, 0.899999976158, 0.5, 0.899999976158, 0.899999976158, 0.300000011921, 0.300000011921, 0.699999988079, 0.600000023842, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.600000023842, 0.600000023842, 0.5, 0.10000000149, 0.300000011921, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.10000000149, 0.800000011921, 0.300000011921, 0.5, 0.10000000149, 0.40000000596, 0.20000000298, 0.10000000149, 0.5, 0.899999976158, 0.40000000596, 0.899999976158, 0.800000011921, 0.600000023842, 0.5, 0.20000000298, 0.300000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.899999976158, 0.899999976158, 0.899999976158, 0.600000023842, 0.600000023842, 0.40000000596, 0.699999988079, 0.5, 0.40000000596, 0.800000011921, 0.40000000596, 0.300000011921, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.600000023842, 0.20000000298, 0.20000000298, 0.899999976158, 0.699999988079, 0.699999988079, 0.20000000298, 0.20000000298, 0.10000000149, 0.800000011921, 0.20000000298, 0.899999976158, 0.5, 0.300000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.20000000298, 0.5, 0.300000011921, 0.40000000596, 0.5, 0.10000000149, 0.5, 0.40000000596, 0.20000000298, 0.10000000149, 0.40000000596, 0.600000023842, 0.40000000596, 0.800000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.10000000149, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.800000011921, 0.40000000596, 0.699999988079, 0.300000011921, 0.5, 0.699999988079, 0.600000023842, 0.800000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.300000011921, 0.20000000298, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.800000011921, 0.5, 0.699999988079, 0.300000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.899999976158, 0.899999976158, 0.5, 0.40000000596, 0.899999976158, 0.600000023842, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.20000000298, 0.20000000298, 0.699999988079, 0.800000011921, 0.5, 0.20000000298, 0.5, 0.800000011921, 0.699999988079, 0.10000000149, 0.5, 0.300000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.800000011921, 0.20000000298, 0.699999988079, 0.10000000149, 0.600000023842, 0.800000011921, 0.300000011921, 0.10000000149, 0.899999976158, 0.600000023842, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.10000000149, 0.800000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.10000000149, 0.10000000149, 0.699999988079, 0.20000000298, 0.800000011921, 0.40000000596, 0.300000011921, 0.5, 0.10000000149, 0.600000023842, 0.300000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.300000011921, 0.699999988079, 0.10000000149, 0.5, 0.699999988079, 0.300000011921, 0.20000000298, 0.40000000596, 0.600000023842, 0.699999988079, 0.600000023842, 0.40000000596, 0.899999976158, 0.600000023842, 0.800000011921, 0.10000000149, 0.5, 0.10000000149, 0.5, 0.5, 0.5, 0.20000000298, 0.40000000596, 0.20000000298, 0.699999988079, 0.300000011921, 0.800000011921, 0.800000011921, 0.300000011921, 0.5, 0.600000023842, 0.40000000596, 0.10000000149, 0.800000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.300000011921, 0.20000000298, 0.300000011921, 0.800000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.899999976158, 0.899999976158, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.699999988079, 0.10000000149, 0.40000000596, 0.300000011921, 0.10000000149, 0.800000011921, 0.699999988079, 0.5, 0.40000000596, 0.800000011921, 0.10000000149, 0.5, 0.10000000149, 0.20000000298, 0.20000000298, 0.899999976158, 0.10000000149, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.20000000298, 0.699999988079, 0.899999976158, 0.800000011921, 0.20000000298, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.40000000596, 0.20000000298, 0.800000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.600000023842, 0.40000000596, 0.699999988079, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.899999976158, 0.699999988079, 0.800000011921, 0.800000011921, 0.899999976158, 0.5, 0.899999976158, 0.600000023842, 0.699999988079, 0.600000023842, 0.300000011921, 0.899999976158, 0.800000011921, 0.20000000298, 0.5, 0.800000011921, 0.300000011921, 0.5, 0.899999976158, 0.899999976158, 0.40000000596, 0.699999988079, 0.10000000149, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.20000000298, 0.300000011921, 0.300000011921, 0.899999976158, 0.40000000596, 0.10000000149, 0.5, 0.699999988079, 0.20000000298, 0.899999976158, 0.699999988079, 0.40000000596, 0.899999976158, 0.10000000149, 0.10000000149, 0.40000000596, 0.899999976158, 0.899999976158, 0.600000023842, 0.699999988079, 0.300000011921, 0.300000011921, 0.5, 0.699999988079, 0.5, 0.300000011921, 0.899999976158, 0.300000011921, 0.40000000596, 0.800000011921, 0.800000011921, 0.899999976158, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.800000011921, 0.300000011921, 0.10000000149, 0.899999976158, 0.40000000596, 0.20000000298, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.5, 0.600000023842, 0.800000011921, 0.899999976158, 0.40000000596, 0.5, 0.20000000298, 0.899999976158, 0.899999976158, 0.300000011921, 0.899999976158, 0.699999988079, 0.800000011921, 0.899999976158, 0.899999976158, 0.20000000298, 0.899999976158, 0.899999976158, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.899999976158, 0.800000011921, 0.800000011921, 0.20000000298, 0.40000000596, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.800000011921, 0.10000000149, 0.5, 0.40000000596, 0.699999988079, 0.40000000596, 0.20000000298, 0.40000000596, 0.699999988079, 0.300000011921, 0.40000000596, 0.899999976158, 0.899999976158, 0.300000011921, 0.10000000149,
+
+L3_cSYR2K_o_N
+0.100000205636, 17.3600001836, 3.19999998882, 15.6400001837, 0.390000019819, 17.9800001387, -0.719999894798, 18.6800000799, 1.09000013381, 16.1700002398, 0.0500000879169, 16.4000001229, -0.399999970943, 17.5600000837, 3.10999989375, 18.5100001754, -0.0299999681115, 16.5200002718, -2.50999992356, 16.6200001667, -0.619999962598, 15.6900002359, -0.189999952763, 18.5300001998, 1.24999995008, 16.4600003006, 1.80000002831, 16.6200002114, -1.32999993458, 17.4800001253, 1.6600000979, 18.590000186, -8.86619080376e-08, 18.1200001273, 3.19999998882, 15.6400001837, 4.21999997973, 13.2200000334, 2.71000001818, 15.8300001067, 0.550000087172, 15.7400001331, 2.84000010625, 14.7500000276, 1.8400000526, 13.4300000791, 0.490000068247, 15.7300000612, 2.89999991283, 16.1500000499, 0.86000001967, 15.2300002103, 0.889999989271, 14.75000007, 1.98000000536, 13.9000001088, 2.50999998763, 16.2200000855, 2.16999993131, 14.8900000653, 1.93999998927, 13.9300000672, 0.570000029653, 16.1999999344, 4.10999997422, 15.1500001065, 2.23999989912, 15.0200001094, 0.390000019819, 17.9800001387, 2.71000001818, 15.8300001067, 3.37999994129, 17.5200001705, 1.31000006512, 17.6800001156, 0.95000012368, 14.7500001468, 0.850000036508, 15.7600000703, 0.0400000473857, 16.5800002132, 2.63999987826, 18.9900000921, 1.53000002474, 17.6200001489, -0.53999991104, 16.1100001098, 0.340000019819, 14.6300001924, 1.61999995813, 18.5800001611, 1.69999990091, 16.5600001806, 0.860000013709, 15.6600001284, -0.409999904931, 16.420000131, 1.58999997735, 17.4500000671, 1.29999994412, 17.4900000995, -0.719999894798, 18.6800000799, 0.550000087172, 15.7400001331, 1.31000006512, 17.6800001156, -2.59999978095, 18.060000045, 0.920000131726, 15.9400002091, -1.58999983653, 16.960000083, -1.93999978215, 18.3000000894, -1.21000002638, 18.5100000241, -1.44999985024, 15.8100002313, -3.029999872, 16.8700000975, -0.599999890476, 15.430000053, -0.309999875128, 19.1700000967, 1.04000002205, 17.230000176, 0.0600000874698, 15.2500001542, -0.719999842644, 16.3300000709, 0.480000142455, 19.5200000237, -0.709999872148, 18.1600000972, 1.09000013381, 16.1700002398, 2.84000010625, 14.7500000276, 0.95000012368, 14.7500001468, 0.920000131726, 15.9400002091, 0.380000218451, 14.5200001734, 1.70000014752, 14.1800001477, -0.689999858886, 16.6000001661, 2.43000000834, 15.9900001286, 0.890000083894, 15.7700001757, 0.160000083745, 15.2000001699, 0.860000102371, 14.1500001788, 0.450000228733, 16.9900001793, 2.11000006363, 13.9900002106, 1.62000008553, 15.0400001696, -0.419999831468, 16.2000000969, 2.96000013366, 15.8500001319, 0.0800001402199, 15.2000001483, 0.0500000879169, 16.4000001229, 1.8400000526, 13.4300000791, 0.850000036508, 15.7600000703, -1.58999983653, 16.960000083, 1.70000014752, 14.1800001477, -2.01999979496, 14.1000001103, -1.1199999015, 15.2300001186, 0.370000032634, 15.6800001149, -1.09999993518, 14.6700001936, -2.54999989718, 14.1900001316, 0.310000056922, 13.2100001061, 1.27000007063, 17.0200000758, 0.999999981374, 14.5300002289, 0.0800000292063, 12.8600001769, -0.269999954402, 15.1700000453, 0.600000037253, 16.3700000989, 0.459999935478, 15.7400001442, -0.399999970943, 17.5600000837, 0.490000068247, 15.7300000612, 0.0400000473857, 16.5800002132, -1.93999978215, 18.3000000894, -0.689999858886, 16.6000001661, -1.1199999015, 15.2300001186, -1.32000000507, 18.1800001082, 0.629999933839, 17.1200001019, -1.66999981359, 15.7200002725, -2.93999987751, 15.5600001381, 0.0600000539422, 13.9800002378, -0.98999991402, 18.3200001965, 0.489999958724, 15.3100002417, 1.19999991283, 15.6200000781, -1.12999992639, 16.5600001694, 0.220000107884, 17.3200000677, -0.44999999404, 16.0600002052, 3.10999989375, 18.5100001754, 2.89999991283, 16.1500000499, 2.63999987826, 18.9900000921, -1.21000002638, 18.5100000241, 2.43000000834, 15.9900001286, 0.370000032634, 15.6800001149, 0.629999933839, 17.1200001019, 2.95999968141, 18.060000115, 0.429999964386, 18.8200001384, -0.830000011325, 17.6600000443, 1.39999996349, 15.9100000726, 1.3199998866, 18.4600001188, 2.82999986678, 18.330000135, 2.93999993041, 16.3400001651, 0.989999978095, 18.869999938, 3.03999986783, 20.4800000508, 0.549999915063, 17.4800001961, -0.0299999681115, 16.5200002718, 0.86000001967, 15.2300002103, 1.53000002474, 17.6200001489, -1.44999985024, 15.8100002313, 0.890000083894, 15.7700001757, -1.09999993518, 14.6700001936, -1.66999981359, 15.7200002725, 0.429999964386, 18.8200001384, -1.21999999166, 16.6800002676, -1.96999992609, 15.5100002149, -0.829999933094, 14.0800002296, -0.00999994292855, 18.1900002143, 0.10999996379, 17.5300001656, 0.570000049025, 15.7900002076, -2.26999984786, 16.6000001155, 0.22000004679, 17.6700000915, -1.02999996737, 15.4400002545, -2.50999992356, 16.6200001667, 0.889999989271, 14.75000007, -0.53999991104, 16.1100001098, -3.029999872, 16.8700000975, 0.160000083745, 15.2000001699, -2.54999989718, 14.1900001316, -2.93999987751, 15.5600001381, -0.830000011325, 17.6600000443, -1.96999992609, 15.5100002149, -2.29999995232, 16.1400001234, -1.59999992177, 13.6400001472, -1.29999994859, 18.110000115, -0.880000041127, 15.9000001684, 0.409999938458, 15.490000174, -2.71999992758, 15.8500001058, -1.34999990016, 18.5200000587, -2.33000002995, 16.5900001167, -0.619999962598, 15.6900002359, 1.98000000536, 13.9000001088, 0.340000019819, 14.6300001924, -0.599999890476, 15.430000053, 0.860000102371, 14.1500001788, 0.310000056922, 13.2100001061, 0.0600000539422, 13.9800002378, 1.39999996349, 15.9100000726, -0.829999933094, 14.0800002296, -1.59999992177, 13.6400001472, 0.480000005364, 12.96000027, -0.300000012666, 16.2600002402, 1.12999990404, 14.910000241, 1.5800000374, 14.2000002131, -0.789999981821, 14.4000001952, 0.720000101179, 15.9100001583, -0.660000046492, 14.0300001991, -0.189999952763, 18.5300001998, 2.50999998763, 16.2200000855, 1.61999995813, 18.5800001611, -0.309999875128, 19.1700000967, 0.450000228733, 16.9900001793, 1.27000007063, 17.0200000758, -0.98999991402, 18.3200001965, 1.3199998866, 18.4600001188, -0.00999994292855, 18.1900002143, -1.29999994859, 18.110000115, -0.300000012666, 16.2600002402, 0.540000016093, 20.8400001204, 1.60999992803, 18.3000001512, 1.40999994516, 16.740000069, -0.609999887794, 18.9900000541, 2.36000000253, 20.030000132, -0.200000020117, 18.8100001024, 1.24999995008, 16.4600003006, 2.16999993131, 14.8900000653, 1.69999990091, 16.5600001806, 1.04000002205, 17.230000176, 2.11000006363, 13.9900002106, 0.999999981374, 14.5300002289, 0.489999958724, 15.3100002417, 2.82999986678, 18.330000135, 0.10999996379, 17.5300001656, -0.880000041127, 15.9000001684, 1.12999990404, 14.910000241, 1.60999992803, 18.3000001512, 1.95999982446, 16.3000002071, 1.67999996886, 14.7100002626, -0.340000032485, 15.2600002432, 2.31999990001, 16.8300001976, 0.659999901205, 15.6000001907, 1.80000002831, 16.6200002114, 1.93999998927, 13.9300000672, 0.860000013709, 15.6600001284, 0.0600000874698, 15.2500001542, 1.62000008553, 15.0400001696, 0.0800000292063, 12.8600001769, 1.19999991283, 15.6200000781, 2.93999993041, 16.3400001651, 0.570000049025, 15.7900002076, 0.409999938458, 15.490000174, 1.5800000374, 14.2000002131, 1.40999994516, 16.740000069, 1.67999996886, 14.7100002626, 1.2799999994, 14.760000203, -0.0299999278784, 15.800000076, 2.24999999851, 16.560000077, 0.54999994114, 15.2400002031, -1.32999993458, 17.4800001253, 0.570000029653, 16.1999999344, -0.409999904931, 16.420000131, -0.719999842644, 16.3300000709, -0.419999831468, 16.2000000969, -0.269999954402, 15.1700000453, -1.12999992639, 16.5600001694, 0.989999978095, 18.869999938, -2.26999984786, 16.6000001155, -2.71999992758, 15.8500001058, -0.789999981821, 14.4000001952, -0.609999887794, 18.9900000541, -0.340000032485, 15.2600002432, -0.0299999278784, 15.800000076, -3.35999974102, 16.5000000745, -0.0399998469651, 17.6200000244, -0.97999994725, 15.5800000791, 1.6600000979, 18.590000186, 4.10999997422, 15.1500001065, 1.58999997735, 17.4500000671, 0.480000142455, 19.5200000237, 2.96000013366, 15.8500001319, 0.600000037253, 16.3700000989, 0.220000107884, 17.3200000677, 3.03999986783, 20.4800000508, 0.22000004679, 17.6700000915, -1.34999990016, 18.5200000587, 0.720000101179, 15.9100001583, 2.36000000253, 20.030000132, 2.31999990001, 16.8300001976, 2.24999999851, 16.560000077, -0.0399998469651, 17.6200000244, 1.42000006169, 19.2200000781, 1.94999997839, 17.6300001343, -8.86619080376e-08, 18.1200001273, 2.23999989912, 15.0200001094, 1.29999994412, 17.4900000995, -0.709999872148, 18.1600000972, 0.0800001402199, 15.2000001483, 0.459999935478, 15.7400001442, -0.44999999404, 16.0600002052, 0.549999915063, 17.4800001961, -1.02999996737, 15.4400002545, -2.33000002995, 16.5900001167, -0.660000046492, 14.0300001991, -0.200000020117, 18.8100001024, 0.659999901205, 15.6000001907, 0.54999994114, 15.2400002031, -0.97999994725, 15.5800000791, 1.94999997839, 17.6300001343, 0.779999850392, 15.8000001729,
+
+L3_cSYR2K_A_kn
+0.10000000149, 0.10000000149, 0.300000011921, 0.800000011921, 0.699999988079, 0.699999988079, 0.800000011921, 0.40000000596, 0.699999988079, 0.20000000298, 0.899999976158, 0.5, 0.600000023842, 0.20000000298, 0.40000000596, 0.899999976158, 0.5, 0.20000000298, 0.800000011921, 0.899999976158, 0.10000000149, 0.5, 0.899999976158, 0.300000011921, 0.300000011921, 0.40000000596, 0.40000000596, 0.300000011921, 0.10000000149, 0.5, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.10000000149, 0.600000023842, 0.20000000298, 0.800000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.800000011921, 0.20000000298, 0.600000023842, 0.300000011921, 0.40000000596, 0.20000000298, 0.800000011921, 0.600000023842, 0.20000000298, 0.5, 0.300000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.300000011921, 0.20000000298, 0.899999976158, 0.600000023842, 0.699999988079, 0.5, 0.20000000298, 0.699999988079, 0.899999976158, 0.600000023842, 0.40000000596, 0.5, 0.5, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.5, 0.800000011921, 0.800000011921, 0.600000023842, 0.899999976158, 0.899999976158, 0.899999976158, 0.899999976158, 0.600000023842, 0.600000023842, 0.699999988079, 0.600000023842, 0.5, 0.800000011921, 0.40000000596, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.899999976158, 0.699999988079, 0.300000011921, 0.699999988079, 0.600000023842, 0.10000000149, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.600000023842, 0.20000000298, 0.800000011921, 0.300000011921, 0.5, 0.10000000149, 0.899999976158, 0.300000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.600000023842, 0.699999988079, 0.699999988079, 0.20000000298, 0.300000011921, 0.800000011921, 0.40000000596, 0.899999976158, 0.899999976158, 0.600000023842, 0.899999976158, 0.300000011921, 0.20000000298, 0.699999988079, 0.10000000149, 0.699999988079, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.5, 0.10000000149, 0.600000023842, 0.800000011921, 0.699999988079, 0.699999988079, 0.40000000596, 0.899999976158, 0.800000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.10000000149, 0.800000011921, 0.10000000149, 0.300000011921, 0.10000000149, 0.600000023842, 0.699999988079, 0.600000023842, 0.699999988079, 0.5, 0.600000023842, 0.10000000149, 0.800000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.40000000596, 0.5, 0.899999976158, 0.10000000149, 0.20000000298, 0.600000023842, 0.300000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.800000011921, 0.899999976158, 0.20000000298, 0.20000000298, 0.699999988079, 0.899999976158, 0.300000011921, 0.699999988079, 0.10000000149, 0.20000000298, 0.20000000298, 0.20000000298, 0.699999988079, 0.899999976158, 0.600000023842, 0.699999988079, 0.20000000298, 0.800000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.5, 0.5, 0.800000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.699999988079, 0.20000000298, 0.5, 0.5, 0.600000023842, 0.40000000596, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.800000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.300000011921, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.20000000298, 0.5, 0.699999988079, 0.5, 0.699999988079, 0.300000011921, 0.699999988079, 0.600000023842, 0.5, 0.300000011921, 0.40000000596, 0.5, 0.5, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.5, 0.699999988079, 0.20000000298, 0.20000000298, 0.699999988079, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.899999976158, 0.899999976158, 0.699999988079, 0.10000000149, 0.600000023842, 0.699999988079, 0.300000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.899999976158, 0.300000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.699999988079, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.300000011921, 0.699999988079, 0.5, 0.800000011921, 0.699999988079, 0.600000023842, 0.5, 0.699999988079, 0.899999976158, 0.899999976158, 0.40000000596, 0.5, 0.10000000149, 0.20000000298, 0.10000000149, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.20000000298, 0.699999988079, 0.600000023842, 0.20000000298, 0.5, 0.699999988079, 0.800000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.300000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.600000023842, 0.300000011921, 0.699999988079, 0.20000000298, 0.20000000298, 0.10000000149, 0.20000000298, 0.5, 0.20000000298, 0.5, 0.300000011921, 0.40000000596, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.5, 0.40000000596, 0.899999976158, 0.800000011921, 0.899999976158, 0.10000000149, 0.600000023842, 0.899999976158, 0.20000000298, 0.699999988079, 0.800000011921, 0.899999976158, 0.5, 0.600000023842, 0.600000023842, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.40000000596, 0.300000011921, 0.40000000596, 0.10000000149, 0.699999988079, 0.699999988079, 0.10000000149, 0.699999988079, 0.5, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.40000000596, 0.40000000596, 0.600000023842, 0.40000000596, 0.10000000149, 0.40000000596, 0.600000023842, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.600000023842, 0.10000000149, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.800000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.899999976158, 0.699999988079, 0.10000000149, 0.699999988079, 0.800000011921, 0.600000023842, 0.300000011921, 0.800000011921, 0.5, 0.600000023842, 0.20000000298, 0.20000000298, 0.40000000596, 0.5, 0.300000011921, 0.699999988079, 0.899999976158, 0.600000023842, 0.5, 0.699999988079, 0.20000000298, 0.800000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.300000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.699999988079, 0.40000000596, 0.40000000596, 0.300000011921, 0.899999976158, 0.20000000298, 0.5, 0.5, 0.899999976158, 0.40000000596, 0.5, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.40000000596, 0.300000011921, 0.800000011921, 0.699999988079, 0.899999976158, 0.600000023842, 0.600000023842, 0.300000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.40000000596, 0.20000000298, 0.899999976158, 0.899999976158, 0.800000011921, 0.20000000298, 0.10000000149, 0.5, 0.5, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.40000000596, 0.600000023842, 0.899999976158, 0.10000000149, 0.899999976158, 0.300000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.40000000596, 0.699999988079, 0.600000023842, 0.10000000149, 0.40000000596, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.5, 0.699999988079, 0.20000000298, 0.40000000596, 0.800000011921, 0.5, 0.600000023842, 0.899999976158, 0.5, 0.899999976158, 0.10000000149, 0.300000011921, 0.899999976158, 0.800000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.899999976158, 0.20000000298, 0.40000000596, 0.40000000596, 0.899999976158, 0.5, 0.5, 0.800000011921, 0.800000011921, 0.300000011921, 0.5, 0.20000000298, 0.40000000596, 0.899999976158, 0.800000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.899999976158, 0.600000023842, 0.899999976158, 0.20000000298, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.699999988079, 0.600000023842, 0.600000023842, 0.699999988079, 0.800000011921, 0.800000011921, 0.600000023842, 0.899999976158, 0.699999988079,
+
+L3_cSYR2K_B_kn
+0.800000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.5, 0.600000023842, 0.300000011921, 0.800000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.20000000298, 0.800000011921, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.5, 0.800000011921, 0.20000000298, 0.20000000298, 0.699999988079, 0.5, 0.10000000149, 0.10000000149, 0.699999988079, 0.40000000596, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.10000000149, 0.10000000149, 0.800000011921, 0.5, 0.800000011921, 0.40000000596, 0.20000000298, 0.10000000149, 0.10000000149, 0.699999988079, 0.899999976158, 0.899999976158, 0.600000023842, 0.300000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.899999976158, 0.800000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.899999976158, 0.600000023842, 0.5, 0.10000000149, 0.699999988079, 0.800000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.5, 0.10000000149, 0.699999988079, 0.40000000596, 0.5, 0.699999988079, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.40000000596, 0.5, 0.300000011921, 0.800000011921, 0.5, 0.800000011921, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.300000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.10000000149, 0.20000000298, 0.699999988079, 0.300000011921, 0.40000000596, 0.5, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.10000000149, 0.600000023842, 0.5, 0.800000011921, 0.600000023842, 0.899999976158, 0.10000000149, 0.20000000298, 0.5, 0.699999988079, 0.5, 0.899999976158, 0.40000000596, 0.10000000149, 0.899999976158, 0.800000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.800000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.300000011921, 0.40000000596, 0.600000023842, 0.40000000596, 0.10000000149, 0.600000023842, 0.699999988079, 0.800000011921, 0.899999976158, 0.40000000596, 0.699999988079, 0.5, 0.10000000149, 0.300000011921, 0.899999976158, 0.600000023842, 0.40000000596, 0.40000000596, 0.20000000298, 0.300000011921, 0.300000011921, 0.800000011921, 0.899999976158, 0.899999976158, 0.699999988079, 0.800000011921, 0.899999976158, 0.5, 0.300000011921, 0.600000023842, 0.5, 0.10000000149, 0.20000000298, 0.800000011921, 0.899999976158, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.899999976158, 0.20000000298, 0.899999976158, 0.899999976158, 0.699999988079, 0.699999988079, 0.800000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.800000011921, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.20000000298, 0.5, 0.600000023842, 0.10000000149, 0.800000011921, 0.600000023842, 0.300000011921, 0.300000011921, 0.5, 0.300000011921, 0.20000000298, 0.600000023842, 0.5, 0.800000011921, 0.5, 0.899999976158, 0.800000011921, 0.600000023842, 0.800000011921, 0.5, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.5, 0.5, 0.10000000149, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.10000000149, 0.600000023842, 0.600000023842, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.300000011921, 0.40000000596, 0.20000000298, 0.20000000298, 0.899999976158, 0.699999988079, 0.300000011921, 0.300000011921, 0.899999976158, 0.40000000596, 0.600000023842, 0.600000023842, 0.300000011921, 0.5, 0.699999988079, 0.800000011921, 0.600000023842, 0.40000000596, 0.899999976158, 0.899999976158, 0.20000000298, 0.600000023842, 0.699999988079, 0.5, 0.800000011921, 0.5, 0.899999976158, 0.20000000298, 0.699999988079, 0.300000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.20000000298, 0.20000000298, 0.600000023842, 0.300000011921, 0.699999988079, 0.699999988079, 0.699999988079, 0.300000011921, 0.5, 0.20000000298, 0.800000011921, 0.600000023842, 0.899999976158, 0.5, 0.40000000596, 0.699999988079, 0.300000011921, 0.300000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.899999976158, 0.699999988079, 0.699999988079, 0.10000000149, 0.699999988079, 0.600000023842, 0.600000023842, 0.5, 0.40000000596, 0.699999988079, 0.600000023842, 0.5, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.5, 0.899999976158, 0.40000000596, 0.300000011921, 0.699999988079, 0.40000000596, 0.899999976158, 0.600000023842, 0.800000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.5, 0.40000000596, 0.300000011921, 0.800000011921, 0.899999976158, 0.5, 0.300000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.899999976158, 0.40000000596, 0.300000011921, 0.899999976158, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.699999988079, 0.300000011921, 0.600000023842, 0.699999988079, 0.20000000298, 0.10000000149, 0.5, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.5, 0.20000000298, 0.20000000298, 0.899999976158, 0.5, 0.600000023842, 0.40000000596, 0.300000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.600000023842, 0.20000000298, 0.5, 0.40000000596, 0.20000000298, 0.899999976158, 0.40000000596, 0.300000011921, 0.20000000298, 0.899999976158, 0.10000000149, 0.800000011921, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.800000011921, 0.800000011921, 0.5, 0.600000023842, 0.20000000298, 0.20000000298, 0.20000000298, 0.699999988079, 0.300000011921, 0.20000000298, 0.5, 0.600000023842, 0.899999976158, 0.10000000149, 0.699999988079, 0.800000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.5, 0.300000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.10000000149, 0.800000011921, 0.899999976158, 0.300000011921, 0.699999988079, 0.699999988079, 0.10000000149, 0.10000000149, 0.699999988079, 0.20000000298, 0.600000023842, 0.20000000298, 0.40000000596, 0.899999976158, 0.699999988079, 0.5, 0.899999976158, 0.10000000149, 0.40000000596, 0.40000000596, 0.600000023842, 0.699999988079, 0.800000011921, 0.699999988079, 0.40000000596, 0.899999976158, 0.699999988079, 0.300000011921, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.600000023842, 0.699999988079, 0.600000023842, 0.699999988079, 0.300000011921, 0.5, 0.899999976158, 0.600000023842, 0.20000000298, 0.5, 0.899999976158, 0.800000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.20000000298, 0.600000023842, 0.40000000596, 0.600000023842, 0.300000011921, 0.899999976158, 0.10000000149, 0.20000000298, 0.20000000298, 0.699999988079, 0.699999988079, 0.699999988079, 0.10000000149, 0.10000000149, 0.800000011921, 0.5, 0.899999976158, 0.600000023842, 0.600000023842, 0.899999976158, 0.40000000596, 0.899999976158, 0.10000000149, 0.20000000298, 0.600000023842, 0.899999976158, 0.899999976158, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.5, 0.800000011921, 0.300000011921, 0.40000000596, 0.800000011921, 0.10000000149, 0.10000000149, 0.899999976158, 0.5, 0.300000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.5, 0.699999988079, 0.40000000596, 0.20000000298, 0.5, 0.600000023842, 0.899999976158, 0.800000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.10000000149, 0.800000011921, 0.800000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.20000000298, 0.899999976158, 0.899999976158, 0.20000000298, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.699999988079, 0.300000011921, 0.10000000149, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.800000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.5, 0.300000011921, 0.800000011921, 0.699999988079, 0.800000011921, 0.699999988079, 0.5, 0.40000000596, 0.40000000596, 0.699999988079,
+
+L3_cSYR2K_o_T
+1.22000005275, 15.4400001681, -0.509999865443, 17.0800001968, 2.36999992535, 16.5100001806, 1.20000006333, 16.6700001697, 1.30000008121, 16.4700001027, 2.79000000492, 17.7300002088, 1.34000004664, 18.4100000644, 1.730000211, 16.4800001588, -0.0699999022484, 15.1300001179, 0.0600001001358, 16.6600002961, 1.43000004187, 16.8800001059, 0.490000062287, 16.9500001684, 2.08000002325, 14.8600002074, -0.379999884665, 16.7800001097, 0.500000003725, 17.0500001132, 1.98000019312, 19.5400001651, 1.06000005022, 16.4600000502, -0.509999865443, 17.0800001968, -2.22000001401, 17.9800001112, -0.520000070632, 19.4800000732, -1.68999990359, 18.0800001059, -1.30999996603, 17.6400000779, 0.0199999335408, 19.3900001755, -1.8100000599, 18.4100001098, -0.819999798685, 18.6900000973, -2.72999991447, 18.3500000946, -2.22999996811, 17.5500002272, -0.199999958277, 17.1700001779, -2.83999988571, 18.1800001559, 0.759999995083, 15.4100001143, -2.98999989912, 18.3500000976, -2.34000000194, 18.3500001669, -0.769999940991, 21.00000007, -0.889999948293, 17.9300000434, 2.36999992535, 16.5100001806, -0.520000070632, 19.4800000732, 1.68000001878, 17.9800002736, 1.3100000152, 17.4100001687, 0.209999983162, 17.3400001204, 1.75999992505, 19.4100001523, -0.130000067949, 16.780000205, 1.71000004947, 18.1100001746, 0.850000056624, 17.8000001043, 1.18999998331, 16.5000002913, 1.09999995306, 17.110000127, 0.200000044703, 18.64000011, 2.34000000864, 16.2500001259, -0.48999997437, 17.7000001408, 0.879999867529, 17.3200001839, 1.81999998793, 19.8500000969, 1.71000004798, 17.6199999902, 1.20000006333, 16.6700001697, -1.68999990359, 18.0800001059, 1.3100000152, 17.4100001687, 1.22000002444, 17.6000001162, -0.21999992609, 16.0600001448, 1.15000005588, 18.990000136, -0.519999950677, 19.560000001, 0.930000178963, 16.4200000758, -1.05999983117, 16.9100000785, -1.33999989986, 16.2400002195, 0.370000127256, 16.8300001216, -2.51999988362, 19.1200000602, 1.84999997914, 14.5500001028, -0.779999931604, 18.2600000279, 0.299999913573, 16.9900001256, -0.00999989748001, 19.4400001696, 0.310000076294, 17.029999951, 1.30000008121, 16.4700001027, -1.30999996603, 17.6400000779, 0.209999983162, 17.3400001204, -0.21999992609, 16.0600001448, -1.31999990374, 17.6999999866, 0.740000051856, 18.4300001283, -8.9406961834e-09, 17.5900000258, 1.62000012055, 17.9899999885, 0.29000004217, 16.2700000952, -0.149999985844, 16.070000201, 0.34000003472, 16.6300001074, -0.639999947548, 17.7300001231, 2.29999995604, 15.0599999839, -2.03999987453, 18.1900000288, 0.569999973029, 16.380000176, -0.0599999593198, 18.5300001104, 0.790000003427, 16.8699999708, 2.79000000492, 17.7300002088, 0.0199999335408, 19.3900001755, 1.75999992505, 19.4100001523, 1.15000005588, 18.990000136, 0.740000051856, 18.4300001283, 1.54000006229, 19.3600001955, 0.360000003278, 18.6400002255, 2.31000016347, 18.7000001453, -0.309999911636, 18.4100000443, 0.850000028312, 17.6700003597, 2.47000000954, 16.7000002481, 0.400000128895, 18.2000001714, 3.13999989837, 15.610000162, -0.959999958575, 19.040000069, -2.23517417908e-08, 18.7500001788, 2.46000001073, 20.5300002177, 2.39999989346, 19.6900000466, 1.34000004664, 18.4100000644, -1.8100000599, 18.4100001098, -0.130000067949, 16.780000205, -0.519999950677, 19.560000001, -8.9406961834e-09, 17.5900000258, 0.360000003278, 18.6400002255, -1.72000004381, 19.280000056, 0.300000147521, 18.2800000747, -1.05999995783, 17.000000079, -1.34999995157, 17.210000194, 0.449999964982, 16.7000000849, -1.45000008419, 18.3200001138, 0.789999998957, 15.9500000551, -1.17000004977, 17.6300000665, -0.990000051856, 18.300000082, -1.25999997273, 20.2200000237, -0.820000018477, 18.0699998963, 1.730000211, 16.4800001588, -0.819999798685, 18.6900000973, 1.71000004947, 18.1100001746, 0.930000178963, 16.4200000758, 1.62000012055, 17.9899999885, 2.31000016347, 18.7000001453, 0.300000147521, 18.2800000747, 3.72000023305, 19.120000011, 0.530000184178, 16.540000174, 0.990000150949, 16.920000236, 1.77000007659, 17.1400000988, 0.520000198781, 17.1000001274, 3.07000006914, 14.9200001019, 0.200000292063, 18.300000044, 1.69000015989, 17.620000122, 2.32000020623, 19.1300001194, 3.09999999553, 17.2000000104, -0.0699999022484, 15.1300001179, -2.72999991447, 18.3500000946, 0.850000056624, 17.8000001043, -1.05999983117, 16.9100000785, 0.29000004217, 16.2700000952, -0.309999911636, 18.4100000443, -1.05999995783, 17.000000079, 0.530000184178, 16.540000174, -2.81999984562, 16.1399999878, 0.290000128597, 15.3800002542, 0.240000074953, 15.0700001682, -1.00999985278, 17.6200000125, 1.20000000447, 16.0399999818, -1.92999989286, 16.9500000395, -0.470000005811, 17.6000000566, 0.600000137836, 19.1900000526, -0.0699998754263, 16.859999963, 0.0600001001358, 16.6600002961, -2.22999996811, 17.5500002272, 1.18999998331, 16.5000002913, -1.33999989986, 16.2400002195, -0.149999985844, 16.070000201, 0.850000028312, 17.6700003597, -1.34999995157, 17.210000194, 0.990000150949, 16.920000236, 0.290000128597, 15.3800002542, -0.459999933243, 16.2800003749, 1.92999996364, 15.0800002326, -0.869999902993, 17.090000256, 1.02000011086, 15.0500001572, -1.96999997526, 16.6800002371, -0.639999966174, 16.2300002691, 1.3199999328, 18.5300002185, 0.639999983311, 17.690000075, 1.43000004187, 16.8800001059, -0.199999958277, 17.1700001779, 1.09999995306, 17.110000127, 0.370000127256, 16.8300001216, 0.34000003472, 16.6300001074, 2.47000000954, 16.7000002481, 0.449999964982, 16.7000000849, 1.77000007659, 17.1400000988, 0.240000074953, 15.0700001682, 1.92999996364, 15.0800002326, 0.8199999246, 16.2200001884, -0.0399999661744, 17.060000194, 1.99999991283, 14.930000129, 2.2351743123e-08, 17.8800001074, -0.520000060946, 16.5000001632, 2.45000001192, 18.6400001755, 2.25999996305, 16.1499999732, 0.490000062287, 16.9500001684, -2.83999988571, 18.1800001559, 0.200000044703, 18.64000011, -2.51999988362, 19.1200000602, -0.639999947548, 17.7300001231, 0.400000128895, 18.2000001714, -1.45000008419, 18.3200001138, 0.520000198781, 17.1000001274, -1.00999985278, 17.6200000125, -0.869999902993, 17.090000256, -0.0399999661744, 17.060000194, -0.479999893606, 17.960000115, 1.77000001624, 15.3900001465, -2.14999997318, 18.6100000472, -0.419999999106, 18.6600001471, -0.659999839365, 20.0500001319, -0.989999946803, 18.7799999912, 2.08000002325, 14.8600002074, 0.759999995083, 15.4100001143, 2.34000000864, 16.2500001259, 1.84999997914, 14.5500001028, 2.29999995604, 15.0599999839, 3.13999989837, 15.610000162, 0.789999998957, 15.9500000551, 3.07000006914, 14.9200001019, 1.20000000447, 16.0399999818, 1.02000011086, 15.0500001572, 1.99999991283, 14.930000129, 1.77000001624, 15.3900001465, 3.0599999705, 15.3400000504, 0.48999997288, 15.9300000151, 1.48999998033, 15.9500001267, 2.64000005856, 16.9100000554, 2.94999992028, 15.7499999575, -0.379999884665, 16.7800001097, -2.98999989912, 18.3500000976, -0.48999997437, 17.7000001408, -0.779999931604, 18.2600000279, -2.03999987453, 18.1900000288, -0.959999958575, 19.040000069, -1.17000004977, 17.6300000665, 0.200000292063, 18.300000044, -1.92999989286, 16.9500000395, -1.96999997526, 16.6800002371, 2.2351743123e-08, 17.8800001074, -2.14999997318, 18.6100000472, 0.48999997288, 15.9300000151, -2.93999978065, 17.880000065, -1.21999996409, 17.3700001764, -0.22999995023, 19.8500000782, -0.829999937564, 18.0299998936, 0.500000003725, 17.0500001132, -2.34000000194, 18.3500001669, 0.879999867529, 17.3200001839, 0.299999913573, 16.9900001256, 0.569999973029, 16.380000176, -2.23517417908e-08, 18.7500001788, -0.990000051856, 18.300000082, 1.69000015989, 17.620000122, -0.470000005811, 17.6000000566, -0.639999966174, 16.2300002691, -0.520000060946, 16.5000001632, -0.419999999106, 18.6600001471, 1.48999998033, 15.9500001267, -1.21999996409, 17.3700001764, -0.0600001075864, 18.3800001216, 0.500000043958, 20.4100000875, -0.289999987036, 16.9700000468, 1.98000019312, 19.5400001651, -0.769999940991, 21.00000007, 1.81999998793, 19.8500000969, -0.00999989748001, 19.4400001696, -0.0599999593198, 18.5300001104, 2.46000001073, 20.5300002177, -1.25999997273, 20.2200000237, 2.32000020623, 19.1300001194, 0.600000137836, 19.1900000526, 1.3199999328, 18.5300002185, 2.45000001192, 18.6400001755, -0.659999839365, 20.0500001319, 2.64000005856, 16.9100000554, -0.22999995023, 19.8500000782, 0.500000043958, 20.4100000875, 1.8399999401, 23.1600000033, 2.55999991685, 20.7199999022, 1.06000005022, 16.4600000502, -0.889999948293, 17.9300000434, 1.71000004798, 17.6199999902, 0.310000076294, 17.029999951, 0.790000003427, 16.8699999708, 2.39999989346, 19.6900000466, -0.820000018477, 18.0699998963, 3.09999999553, 17.2000000104, -0.0699998754263, 16.859999963, 0.639999983311, 17.690000075, 2.25999996305, 16.1499999732, -0.989999946803, 18.7799999912, 2.94999992028, 15.7499999575, -0.829999937564, 18.0299998936, -0.289999987036, 16.9700000468, 2.55999991685, 20.7199999022, 0.679999991953, 18.0799997923,
+
+L3_zSYR2K_A_nk
+0.7, 0.6, 0.3, 0.5, 0.4, 0.8, 0.6, 0.8, 0.9, 0.9, 0.5, 0.8, 0.7, 0.8, 0.7, 0.4, 0.2, 0.1, 0.8, 0.3, 0.6, 0.8, 0.8, 0.1, 0.8, 0.8, 0.5, 0.8, 0.8, 0.4, 0.2, 0.9, 0.5, 0.6, 0.8, 0.8, 0.7, 0.8, 0.1, 0.1, 0.6, 0.3, 0.8, 0.2, 0.6, 0.2, 0.6, 0.8, 0.8, 0.3, 0.9, 0.6, 0.4, 0.8, 0.8, 0.5, 0.8, 0.7, 0.7, 0.9, 0.5, 0.9, 0.8, 0.5, 0.4, 0.1, 0.3, 0.2, 0.4, 0.9, 0.5, 0.6, 0.3, 0.5, 0.3, 0.8, 0.9, 0.1, 0.8, 0.4, 0.9, 0.8, 0.2, 0.9, 0.5, 0.7, 0.2, 0.5, 0.6, 0.2, 0.1, 0.7, 0.6, 0.6, 0.8, 0.7, 0.7, 0.4, 0.4, 0.8, 0.1, 0.5, 0.7, 0.7, 0.1, 0.5, 0.8, 0.4, 0.2, 0.6, 0.3, 0.5, 0.7, 0.4, 0.2, 0.1, 0.7, 0.7, 0.1, 0.3, 0.7, 0.7, 0.8, 0.3, 0.1, 0.9, 0.3, 0.6, 0.3, 0.5, 0.8, 0.7, 0.4, 0.2, 0.4, 0.7, 0.8, 0.5, 0.5, 0.8, 0.3, 0.4, 0.2, 0.1, 0.3, 0.1, 0.6, 0.5, 0.7, 0.1, 0.3, 0.2, 0.2, 0.3, 0.9, 0.4, 0.6, 0.8, 0.7, 0.8, 0.5, 0.2, 0.9, 0.9, 0.6, 0.2, 0.1, 0.9, 0.9, 0.3, 0.8, 0.8, 0.6, 0.8, 0.8, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.6, 0.1, 0.4, 0.5, 0.6, 0.9, 0.1, 0.6, 0.2, 0.2, 0.7, 0.6, 0.5, 0.8, 0.3, 0.2, 0.2, 0.2, 0.9, 0.6, 0.5, 0.9, 0.4, 0.6, 0.4, 0.3, 0.9, 0.6, 0.4, 0.7, 0.8, 0.5, 0.7, 0.7, 0.5, 0.7, 0.4, 0.1, 0.7, 0.6, 0.6, 0.6, 0.2, 0.9, 0.9, 0.5, 0.2, 0.2, 0.4, 0.5, 0.2, 0.7, 0.2, 0.5, 0.3, 0.4, 0.6, 0.3, 0.6, 0.8, 0.6, 0.9, 0.5, 0.7, 0.6, 0.8, 0.1, 0.4, 0.8, 0.5, 0.2, 0.1, 0.7, 0.1, 0.6, 0.1, 0.2, 0.3, 0.3, 0.2, 0.5, 0.9, 0.3, 0.8, 0.8, 0.9, 0.2, 0.1, 0.3, 0.4, 0.3, 0.5, 0.3, 0.4, 0.7, 0.6, 0.5, 0.4, 0.7, 0.7, 0.5, 0.5, 0.7, 0.6, 0.9, 0.8, 0.7, 0.1, 0.2, 0.5, 0.7, 0.1, 0.3, 0.4, 0.3, 0.3, 0.4, 0.6, 0.3, 0.4, 0.1, 0.9, 0.4, 0.3, 0.1, 0.8, 0.1, 0.1, 0.6, 0.2, 0.4, 0.2, 0.2, 0.7, 0.9, 0.7, 0.5, 0.8, 0.4, 0.6, 0.2, 0.8, 0.7, 0.5, 0.6, 0.7, 0.2, 0.3, 0.2, 0.2, 0.8, 0.3, 0.6, 0.9, 0.3, 0.4, 0.5, 0.4, 0.8, 0.7, 0.5, 0.3, 0.1, 0.5, 0.8, 0.4, 0.1, 0.7, 0.1, 0.6, 0.2, 0.9, 0.3, 0.3, 0.1, 0.1, 0.9, 0.6, 0.2, 0.9, 0.6, 0.8, 0.6, 0.3, 0.4, 0.3, 0.8, 0.5, 0.5, 0.7, 0.9, 0.7, 0.6, 0.5, 0.4, 0.5, 0.8, 0.4, 0.3, 0.5, 0.9, 0.7, 0.9, 0.1, 0.5, 0.7, 0.9, 0.9, 0.2, 0.3, 0.9, 0.6, 0.1, 0.2, 0.7, 0.2, 0.1, 0.8, 0.3, 0.1, 0.9, 0.7, 0.5, 0.4, 0.5, 0.6, 0.1, 0.9, 0.1, 0.2, 0.7, 0.2, 0.2, 0.5, 0.1, 0.5, 0.4, 0.9, 0.1, 0.3, 0.1, 0.8, 0.9, 0.4, 0.2, 0.3, 0.6, 0.7, 0.2, 0.9, 0.1, 0.4, 0.4, 0.5, 0.7, 0.1, 0.9, 0.8, 0.2, 0.3, 0.9, 0.7, 0.8, 0.5, 0.2, 0.2, 0.2, 0.7, 0.9, 0.6, 0.6, 0.6, 0.1, 0.7, 0.1, 0.4, 0.8, 0.3, 0.7, 0.7, 0.5, 0.1, 0.7, 0.3, 0.9, 0.5, 0.5, 0.2, 0.5, 0.1, 0.4, 0.6, 0.8, 0.3, 0.5, 0.2, 0.5, 0.2, 0.6, 0.7, 0.3, 0.8, 0.7, 0.2, 0.3, 0.6, 0.6, 0.1, 0.7, 0.1, 0.5, 0.7, 0.7, 0.6, 0.3, 0.7, 0.2, 0.9, 0.3, 0.5, 0.5, 0.1, 0.8, 0.7, 0.2, 0.5, 0.2, 0.1, 0.8, 0.4, 0.8, 0.7, 0.2, 0.1, 0.5, 0.5, 0.6, 0.2, 0.7, 0.7, 0.1, 0.1, 0.1, 0.7, 0.6, 0.3, 0.4, 0.9, 0.6, 0.3, 0.1, 0.3, 0.1, 0.3, 0.9, 0.8, 0.7, 0.5, 0.9, 0.3, 0.7, 0.4,
+
+L3_zSYR2K_B_nk
+0.5, 0.6, 0.2, 0.8, 0.6, 0.8, 0.2, 0.7, 0.2, 0.6, 0.6, 0.7, 0.9, 0.3, 0.6, 0.2, 0.4, 0.3, 0.2, 0.2, 0.9, 0.8, 0.4, 0.7, 0.7, 0.7, 0.5, 0.6, 0.8, 0.6, 0.9, 0.7, 0.4, 0.9, 0.4, 0.9, 0.9, 0.7, 0.1, 0.4, 0.9, 0.7, 0.8, 0.8, 0.2, 0.9, 0.2, 0.6, 0.6, 0.7, 0.5, 0.9, 0.1, 0.2, 0.8, 0.8, 0.5, 0.3, 0.5, 0.1, 0.5, 0.4, 0.2, 0.5, 0.7, 0.2, 0.9, 0.6, 0.4, 0.4, 0.1, 0.7, 0.3, 0.7, 0.5, 0.1, 0.7, 0.3, 0.9, 0.6, 0.9, 0.7, 0.9, 0.8, 0.6, 0.9, 0.4, 0.7, 0.6, 0.8, 0.8, 0.3, 0.6, 0.4, 0.4, 0.3, 0.4, 0.7, 0.1, 0.1, 0.5, 0.8, 0.3, 0.9, 0.4, 0.7, 0.4, 0.9, 0.8, 0.3, 0.7, 0.8, 0.3, 0.9, 0.3, 0.3, 0.8, 0.8, 0.7, 0.5, 0.8, 0.1, 0.2, 0.3, 0.7, 0.6, 0.1, 0.8, 0.8, 0.7, 0.1, 0.5, 0.3, 0.4, 0.8, 0.8, 0.8, 0.9, 0.5, 0.5, 0.8, 0.2, 0.4, 0.2, 0.2, 0.2, 0.2, 0.1, 0.8, 0.1, 0.7, 0.5, 0.3, 0.9, 0.8, 0.9, 0.7, 0.3, 0.8, 0.5, 0.8, 0.6, 0.7, 0.3, 0.4, 0.3, 0.8, 0.7, 0.2, 0.2, 0.4, 0.1, 0.4, 0.3, 0.7, 0.7, 0.8, 0.9, 0.7, 0.4, 0.6, 0.1, 0.3, 0.5, 0.4, 0.4, 0.1, 0.2, 0.9, 0.5, 0.5, 0.2, 0.2, 0.9, 0.7, 0.6, 0.7, 0.5, 0.6, 0.3, 0.6, 0.4, 0.5, 0.5, 0.4, 0.7, 0.4, 0.4, 0.3, 0.5, 0.4, 0.2, 0.1, 0.5, 0.9, 0.9, 0.2, 0.5, 0.8, 0.2, 0.5, 0.4, 0.8, 0.9, 0.3, 0.5, 0.4, 0.2, 0.2, 0.1, 0.8, 0.3, 0.9, 0.1, 0.3, 0.2, 0.1, 0.3, 0.8, 0.3, 0.3, 0.7, 0.6, 0.7, 0.8, 0.2, 0.9, 0.6, 0.9, 0.3, 0.5, 0.7, 0.9, 0.1, 0.9, 0.9, 0.4, 0.7, 0.3, 0.1, 0.1, 0.7, 0.8, 0.5, 0.7, 0.6, 0.1, 0.5, 0.1, 0.3, 0.8, 0.8, 0.5, 0.1, 0.4, 0.8, 0.6, 0.9, 0.6, 0.4, 0.2, 0.2, 0.1, 0.7, 0.9, 0.5, 0.7, 0.4, 0.1, 0.7, 0.4, 0.3, 0.8, 0.8, 0.2, 0.9, 0.9, 0.8, 0.9, 0.2, 0.5, 0.6, 0.2, 0.2, 0.2, 0.2, 0.1, 0.8, 0.6, 0.2, 0.6, 0.4, 0.2, 0.3, 0.2, 0.3, 0.2, 0.6, 0.4, 0.2, 0.6, 0.4, 0.8, 0.7, 0.8, 0.5, 0.2, 0.9, 0.6, 0.1, 0.3, 0.2, 0.1, 0.8, 0.3, 0.6, 0.5, 0.5, 0.8, 0.3, 0.9, 0.8, 0.9, 0.7, 0.8, 0.6, 0.5, 0.9, 0.9, 0.5, 0.5, 0.4, 0.1, 0.2, 0.3, 0.1, 0.8, 0.6, 0.8, 0.9, 0.1, 0.7, 0.6, 0.7, 0.7, 0.9, 0.5, 0.6, 0.8, 0.1, 0.2, 0.7, 0.3, 0.9, 0.7, 0.5, 0.9, 0.2, 0.8, 0.2, 0.5, 0.2, 0.8, 0.5, 0.1, 0.2, 0.3, 0.2, 0.2, 0.2, 0.1, 0.5, 0.7, 0.2, 0.4, 0.3, 0.6, 0.9, 0.1, 0.9, 0.6, 0.2, 0.8, 0.9, 0.3, 0.2, 0.6, 0.8, 0.5, 0.5, 0.3, 0.4, 0.4, 0.1, 0.4, 0.4, 0.9, 0.2, 0.6, 0.5, 0.5, 0.1, 0.9, 0.1, 0.1, 0.2, 0.1, 0.2, 0.4, 0.9, 0.1, 0.6, 0.1, 0.2, 0.6, 0.5, 0.9, 0.2, 0.5, 0.9, 0.4, 0.8, 0.1, 0.8, 0.5, 0.8, 0.8, 0.5, 0.1, 0.3, 0.8, 0.9, 0.4, 0.2, 0.9, 0.9, 0.7, 0.7, 0.4, 0.1, 0.8, 0.8, 0.1, 0.6, 0.3, 0.5, 0.3, 0.7, 0.5, 0.8, 0.4, 0.1, 0.6, 0.4, 0.3, 0.8, 0.2, 0.1, 0.2, 0.8, 0.9, 0.6, 0.6, 0.8, 0.6, 0.4, 0.1, 0.5, 0.4, 0.1, 0.7, 0.3, 0.5, 0.5, 0.5, 0.6, 0.2, 0.6, 0.4, 0.5, 0.8, 0.3, 0.3, 0.9, 0.4, 0.1, 0.8, 0.5, 0.7, 0.3, 0.6, 0.8, 0.6, 0.1, 0.4, 0.9, 0.3, 0.3, 0.1, 0.5, 0.5, 0.2, 0.9, 0.5, 0.7, 0.4, 0.5, 0.9, 0.3, 0.6, 0.8, 0.1, 0.2, 0.2, 0.5, 0.2, 0.9, 0.5, 0.8, 0.8, 0.2, 0.7, 0.2, 0.3,
+
+L3_zSYR2K_C_nn
+0.6, 0.1, 0.6, 0.9, 0.4, 0.3, 0.4, 0.1, 0.6, 0.2, 0.6, 0.3, 0.3, 0.2, 0.4, 0.6, 0.7, 0.6, 0.5, 0.6, 0.6, 0.1, 0.7, 0.1, 0.8, 0.2, 0.7, 0.9, 0.8, 0.6, 0.9, 0.9, 0.5, 0.2, 0.6, 0.9, 0.5, 0.3, 0.6, 0.4, 0.4, 0.2, 0.4, 0.8, 0.1, 0.5, 0.1, 0.8, 0.4, 0.2, 0.1, 0.4, 0.5, 0.7, 0.6, 0.4, 0.9, 0.5, 0.9, 0.2, 0.6, 0.2, 0.6, 0.9, 0.6, 0.6, 0.7, 0.4, 0.4, 0.3, 0.6, 0.4, 0.4, 0.5, 0.8, 0.8, 0.8, 0.3, 0.4, 0.3, 0.1, 0.7, 0.3, 0.1, 0.1, 0.9, 0.1, 0.3, 0.3, 0.1, 0.7, 0.6, 0.6, 0.5, 0.5, 0.1, 0.9, 0.2, 0.6, 0.9, 0.3, 0.4, 0.4, 0.1, 0.4, 0.2, 0.8, 0.8, 0.5, 0.5, 0.7, 0.9, 0.3, 0.3, 0.7, 0.9, 0.9, 0.2, 0.3, 0.7, 0.7, 0.1, 0.2, 0.4, 0.6, 0.6, 0.4, 0.3, 0.1, 0.8, 0.1, 0.6, 0.5, 0.2, 0.7, 0.7, 0.6, 0.2, 0.4, 0.8, 0.8, 0.3, 0.7, 0.9, 0.2, 0.3, 0.8, 0.1, 0.7, 0.7, 0.8, 0.1, 0.1, 0.6, 0.7, 0.7, 0.9, 0.1, 0.3, 0.8, 0.7, 0.1, 0.4, 0.3, 0.1, 0.1, 0.9, 0.3, 0.5, 0.1, 0.6, 0.3, 0.1, 0.5, 0.4, 0.3, 0.3, 0.3, 0.8, 0.1, 0.3, 0.5, 0.3, 0.4, 0.3, 0.2, 0.8, 0.7, 0.1, 0.2, 0.9, 0.1, 0.3, 0.7, 0.4, 0.2, 0.2, 0.9, 0.8, 0.5, 0.2, 0.1, 0.3, 0.2, 0.3, 0.2, 0.1, 0.8, 0.1, 0.7, 0.7, 0.9, 0.7, 0.7, 0.3, 0.4, 0.4, 0.2, 0.6, 0.5, 0.2, 0.2, 0.8, 0.2, 0.1, 0.5, 0.1, 0.4, 0.5, 0.3, 0.7, 0.4, 0.1, 0.9, 0.9, 0.7, 0.6, 0.9, 0.4, 0.6, 0.4, 0.2, 0.3, 0.1, 0.9, 0.2, 0.8, 0.1, 0.3, 0.2, 0.6, 0.5, 0.7, 0.9, 0.8, 0.6, 0.3, 0.4, 0.1, 0.3, 0.3, 0.2, 0.1, 0.2, 0.6, 0.7, 0.1, 0.6, 0.3, 0.9, 0.2, 0.2, 0.7, 0.6, 0.1, 0.4, 0.1, 0.9, 0.3, 0.7, 0.1, 0.6, 0.8, 0.7, 0.2, 0.2, 0.8, 0.6, 0.9, 0.6, 0.6, 0.6, 0.9, 0.9, 0.6, 0.9, 0.8, 0.2, 0.7, 0.9, 0.1, 0.3, 0.5, 0.2, 0.6, 0.1, 0.5, 0.6, 0.5, 0.7, 0.1, 0.3, 0.7, 0.1, 0.7, 0.7, 0.1, 0.2, 0.8, 0.2, 0.3, 0.4, 0.6, 0.6, 0.7, 0.4, 0.9, 0.4, 0.2, 0.6, 0.2, 0.5, 0.2, 0.1, 0.5, 0.2, 0.5, 0.8, 0.9, 0.7, 0.6, 0.1, 0.6, 0.4, 0.3, 0.1, 0.2, 0.4, 0.9, 0.1, 0.9, 0.1, 0.1, 0.5, 0.1, 0.3, 0.9, 0.9, 0.9, 0.4, 0.8, 0.2, 0.2, 0.8, 0.7, 0.1, 0.2, 0.9, 0.4, 0.7, 0.2, 0.8, 0.2, 0.8, 0.7, 0.1, 0.9, 0.5, 0.7, 0.6, 0.6, 0.6, 0.3, 0.8, 0.3, 0.7, 0.1, 0.4, 0.3, 0.2, 0.6, 0.9, 0.2, 0.6, 0.2, 0.8, 0.4, 0.8, 0.7, 0.6, 0.3, 0.4, 0.9, 0.4, 0.8, 0.2, 0.8, 0.2, 0.8, 0.2, 0.9, 0.2, 0.6, 0.5, 0.4, 0.3, 0.7, 0.1, 0.4, 0.2, 0.5, 0.3, 0.1, 0.2, 0.8, 0.2, 0.2, 0.5, 0.7, 0.1, 0.7, 0.6, 0.1, 0.2, 0.7, 0.4, 0.4, 0.4, 0.8, 0.2, 0.1, 0.9, 0.7, 0.9, 0.6, 0.2, 0.5, 0.1, 0.1, 0.8, 0.4, 0.3, 0.2, 0.9, 0.7, 0.4, 0.6, 0.7, 0.7, 0.9, 0.2, 0.1, 0.2, 0.9, 0.3, 0.4, 0.7, 0.4, 0.8, 0.1, 0.3, 0.5, 0.9, 0.8, 0.4, 0.3, 0.8, 0.6, 0.6, 0.9, 0.9, 0.2, 0.1, 0.6, 0.1, 0.1, 0.8, 0.5, 0.1, 0.9, 0.1, 0.6, 0.1, 0.3, 0.5, 0.2, 0.4, 0.7, 0.9, 0.4, 0.4, 0.4, 0.3, 0.5, 0.7, 0.6, 0.9, 0.1, 0.6, 0.5, 0.9, 0.9, 0.6, 0.6, 0.6, 0.9, 0.5, 0.2, 0.9, 0.3, 0.2, 0.1, 0.9, 0.7, 0.3, 0.9, 0.5, 0.2, 0.5, 0.8, 0.2, 0.8, 0.8, 0.2, 0.8, 0.2, 0.9, 0.8, 0.9, 0.1, 0.5, 0.4, 0.2, 0.4, 0.5, 0.2, 0.7, 0.4, 0.3, 0.4, 0.7, 0.7, 0.5, 0.1, 0.3, 0.2, 0.6, 0.9, 0.2, 0.2, 0.6, 0.1, 0.9, 0.7, 0.2, 0.8, 0.8, 0.2, 0.1, 0.9, 0.4, 0.3, 0.6, 0.5, 0.2, 0.4, 0.3, 0.8,
+
+L3_zSYR2K_o_N
+-1.52, 22.08, -0.2, 22.21, 0.8, 19.83, -1.98, 19.01, 0.75, 19.53, 1.84, 17.26, -0.4, 19.89, 1.94, 17.78, -0.36, 19.16, -0.56, 17.55, -0.15, 19.17, -0.06, 20.14, 0.33, 16.49, -0.09, 18.49, 0.19, 18.35, 1.92, 19.23, 1.58, 17.62, -0.2, 22.21, 0.98, 22.08, 0.5, 20.97, -1.73, 17.81, 0.96, 18.47, 1.94, 17.73, -0.44, 20.74, 0.68, 18.57, -1.43, 17.84, -0.11, 15.59, -0.08, 19.41, 0.91, 19.08, 1.18, 17.22, -1.38, 17.3, 0.13, 18.37, 0.73, 18.97, 1.32, 17.52, 0.8, 19.83, 0.5, 20.97, 0.68, 19.0, -1.19, 18.01, 2.83, 16.59, 2.89, 16.54, 0.37, 19.93, 1.28, 17.61, -0.95, 17.01, -1.13, 15.01, -0.41, 18.75, 1.23, 19.3, 0.28, 16.13, 0.19, 16.77, 2.18, 16.44, 0.44, 18.41, 1.03, 16.8, -1.98, 19.01, -1.73, 17.81, -1.19, 18.01, -3.36, 17.22, -0.35, 16.86, 0.52, 15.28, -1.36, 18.12, -0.02, 16.11, -2.5, 16.84, -1.78, 13.19, -2.4, 17.58, -1.12, 17.81, -0.78, 14.08, -1.7, 15.27, -1.23, 16.18, 0.08, 16.12, -0.28, 15.92, 0.75, 19.53, 0.96, 18.47, 2.83, 16.59, -0.35, 16.86, 2.08, 16.74, 2.55, 14.95, 2.43, 17.42, 2.85, 15.38, 0.73, 17.0, 1.09, 14.32, 2.47, 16.15, 1.64, 17.8, 1.94, 12.9, 1.21, 15.53, 0.7, 15.34, 2.82, 15.9, 2.02, 15.69, 1.84, 17.26, 1.94, 17.73, 2.89, 16.54, 0.52, 15.28, 2.55, 14.95, 2.16, 13.48, 2.55, 16.75, 2.46, 14.12, 1.62, 14.69, 1.1, 13.12, 0.82, 15.58, 1.9, 16.97, 1.82, 13.03, -1.05, 14.64, 2.02, 15.25, 1.61, 15.22, 2.07, 14.84, -0.4, 19.89, -0.44, 20.74, 0.37, 19.93, -1.36, 18.12, 2.43, 17.42, 2.55, 16.75, -0.72, 18.5, 2.38, 16.82, 0.34, 17.08, 0.6, 15.36, 0.41, 18.04, 0.2, 17.73, 0.55, 15.64, 0.07, 16.51, 0.49, 16.96, 1.41, 17.46, 1.24, 16.48, 1.94, 17.78, 0.68, 18.57, 1.28, 17.61, -0.02, 16.11, 2.85, 15.38, 2.46, 14.12, 2.38, 16.82, 2.36, 17.12, 1.71, 16.61, -0.53, 13.38, 0.55, 17.6, 1.89, 16.97, 0.82, 14.57, 1.68, 15.65, 0.91, 15.76, 1.22, 16.46, 2.67, 15.42, -0.36, 19.16, -1.43, 17.84, -0.95, 17.01, -2.5, 16.84, 0.73, 17.0, 1.62, 14.69, 0.34, 17.08, 1.71, 16.61, 0.04, 17.06, -0.71, 14.02, -0.2, 18.15, 0.18, 18.07, 0.09, 14.17, 0.28, 15.86, -1.1, 14.84, 0.85, 15.17, 1.26, 14.64, -0.56, 17.55, -0.11, 15.59, -1.13, 15.01, -1.78, 13.19, 1.09, 14.32, 1.1, 13.12, 0.6, 15.36, -0.53, 13.38, -0.71, 14.02, -0.32, 11.72, 0.02, 13.93, -0.6, 14.44, -1.08, 13.29, -1.39, 12.26, -1.29, 11.71, 0.18, 13.44, -0.8, 13.78, -0.15, 19.17, -0.08, 19.41, -0.41, 18.75, -2.4, 17.58, 2.47, 16.15, 0.82, 15.58, 0.41, 18.04, 0.55, 17.6, -0.2, 18.15, 0.02, 13.93, -1.22, 19.08, 0.42, 19.65, 0.77, 15.04, -0.87, 17.03, 0.3, 16.93, -0.45, 17.13, 0.56, 15.81, -0.06, 20.14, 0.91, 19.08, 1.23, 19.3, -1.12, 17.81, 1.64, 17.8, 1.9, 16.97, 0.2, 17.73, 1.89, 16.97, 0.18, 18.07, -0.6, 14.44, 0.42, 19.65, 1.82, 18.64, 0.22, 16.22, 0.23, 16.81, 1.67, 16.95, 1.87, 17.41, 2.58, 16.03, 0.33, 16.49, 1.18, 17.22, 0.28, 16.13, -0.78, 14.08, 1.94, 12.9, 1.82, 13.03, 0.55, 15.64, 0.82, 14.57, 0.09, 14.17, -1.08, 13.29, 0.77, 15.04, 0.22, 16.22, -0.3, 12.44, 0.12, 13.3, 0.64, 14.15, 0.72, 13.96, 0.5, 13.6, -0.09, 18.49, -1.38, 17.3, 0.19, 16.77, -1.7, 15.27, 1.21, 15.53, -1.05, 14.64, 0.07, 16.51, 1.68, 15.65, 0.28, 15.86, -1.39, 12.26, -0.87, 17.03, 0.23, 16.81, 0.12, 13.3, -2.08, 15.38, -0.42, 15.89, 0.02, 15.61, 0.01, 14.32, 0.19, 18.35, 0.13, 18.37, 2.18, 16.44, -1.23, 16.18, 0.7, 15.34, 2.02, 15.25, 0.49, 16.96, 0.91, 15.76, -1.1, 14.84, -1.29, 11.71, 0.3, 16.93, 1.67, 16.95, 0.64, 14.15, -0.42, 15.89, 0.54, 16.74, 1.0, 15.36, 1.78, 15.45, 1.92, 19.23, 0.73, 18.97, 0.44, 18.41, 0.08, 16.12, 2.82, 15.9, 1.61, 15.22, 1.41, 17.46, 1.22, 16.46, 0.85, 15.17, 0.18, 13.44, -0.45, 17.13, 1.87, 17.41, 0.72, 13.96, 0.02, 15.61, 1.0, 15.36, 0.82, 15.68, 1.66, 14.93, 1.58, 17.62, 1.32, 17.52, 1.03, 16.8, -0.28, 15.92, 2.02, 15.69, 2.07, 14.84, 1.24, 16.48, 2.67, 15.42, 1.26, 14.64, -0.8, 13.78, 0.56, 15.81, 2.58, 16.03, 0.5, 13.6, 0.01, 14.32, 1.78, 15.45, 1.66, 14.93, 2.24, 15.52,
+
+L3_zSYR2K_A_kn
+0.4, 0.7, 0.4, 0.4, 0.7, 0.8, 0.2, 0.2, 0.4, 0.6, 0.8, 0.7, 0.9, 0.6, 0.5, 0.6, 0.5, 0.6, 0.5, 0.2, 0.9, 0.1, 0.4, 0.5, 0.5, 0.1, 0.2, 0.8, 0.4, 0.5, 0.3, 0.3, 0.4, 0.8, 0.6, 0.4, 0.9, 0.5, 0.8, 0.1, 0.3, 0.8, 0.9, 0.3, 0.1, 0.6, 0.5, 0.8, 0.7, 0.1, 0.1, 0.7, 0.1, 0.9, 0.8, 0.2, 0.9, 0.4, 0.9, 0.1, 0.2, 0.9, 0.4, 0.7, 0.7, 0.3, 0.3, 0.1, 0.8, 0.2, 0.5, 0.6, 0.8, 0.7, 0.2, 0.2, 0.2, 0.6, 0.9, 0.7, 0.5, 0.6, 0.9, 0.2, 0.1, 0.4, 0.5, 0.1, 0.3, 0.8, 0.7, 0.6, 0.8, 0.2, 0.4, 0.3, 0.1, 0.3, 0.2, 0.2, 0.3, 0.4, 0.5, 0.4, 0.8, 0.8, 0.3, 0.7, 0.1, 0.3, 0.3, 0.6, 0.6, 0.3, 0.9, 0.3, 0.1, 0.7, 0.8, 0.6, 0.9, 0.8, 0.9, 0.1, 0.5, 0.5, 0.6, 0.5, 0.8, 0.1, 0.6, 0.8, 0.8, 0.2, 0.1, 0.4, 0.8, 0.2, 0.1, 0.6, 0.2, 0.3, 0.9, 0.4, 0.9, 0.6, 0.3, 0.2, 0.8, 0.9, 0.7, 0.6, 0.7, 0.2, 0.8, 0.2, 0.1, 0.3, 0.6, 0.3, 0.4, 0.1, 0.2, 0.3, 0.8, 0.5, 0.4, 0.6, 0.6, 0.1, 0.3, 0.9, 0.9, 0.4, 0.8, 0.2, 0.4, 0.2, 0.6, 0.1, 0.8, 0.1, 0.6, 0.9, 0.4, 0.1, 0.9, 0.5, 0.4, 0.8, 0.7, 0.1, 0.8, 0.2, 0.1, 0.7, 0.7, 0.7, 0.7, 0.4, 0.6, 0.6, 0.6, 0.9, 0.2, 0.9, 0.9, 0.7, 0.5, 0.4, 0.2, 0.3, 0.6, 0.2, 0.6, 0.1, 0.5, 0.9, 0.3, 0.1, 0.2, 0.6, 0.5, 0.5, 0.9, 0.9, 0.8, 0.8, 0.1, 0.6, 0.5, 0.9, 0.4, 0.3, 0.3, 0.9, 0.6, 0.4, 0.3, 0.4, 0.2, 0.8, 0.3, 0.1, 0.6, 0.8, 0.9, 0.9, 0.7, 0.3, 0.3, 0.5, 0.6, 0.7, 0.7, 0.2, 0.3, 0.7, 0.9, 0.1, 0.3, 0.6, 0.8, 0.3, 0.3, 0.9, 0.4, 0.4, 0.1, 0.8, 0.6, 0.4, 0.5, 0.3, 0.2, 0.2, 0.8, 0.1, 0.5, 0.6, 0.2, 0.3, 0.5, 0.1, 0.8, 0.9, 0.5, 0.6, 0.2, 0.2, 0.5, 0.5, 0.1, 0.1, 0.8, 0.7, 0.6, 0.2, 0.1, 0.7, 0.2, 0.9, 0.9, 0.2, 0.7, 0.9, 0.2, 0.7, 0.5, 0.9, 0.6, 0.5, 0.1, 0.8, 0.1, 0.8, 0.2, 0.6, 0.4, 0.2, 0.5, 0.5, 0.7, 0.3, 0.8, 0.5, 0.2, 0.5, 0.8, 0.2, 0.8, 0.7, 0.2, 0.5, 0.5, 0.5, 0.6, 0.8, 0.1, 0.2, 0.1, 0.1, 0.7, 0.6, 0.3, 0.1, 0.2, 0.3, 0.1, 0.7, 0.9, 0.5, 0.8, 0.3, 0.8, 0.8, 0.7, 0.9, 0.7, 0.8, 0.1, 0.5, 0.1, 0.1, 0.4, 0.5, 0.5, 0.6, 0.4, 0.4, 0.5, 0.4, 0.8, 0.6, 0.6, 0.5, 0.5, 0.2, 0.3, 0.2, 0.7, 0.9, 0.9, 0.5, 0.2, 0.1, 0.7, 0.1, 0.3, 0.9, 0.2, 0.6, 0.9, 0.4, 0.2, 0.3, 0.7, 0.1, 0.3, 0.5, 0.7, 0.4, 0.2, 0.1, 0.5, 0.2, 0.9, 0.2, 0.5, 0.8, 0.1, 0.6, 0.4, 0.6, 0.7, 0.8, 0.4, 0.8, 0.9, 0.5, 0.2, 0.7, 0.5, 0.4, 0.5, 0.9, 0.5, 0.1, 0.5, 0.3, 0.8, 0.6, 0.6, 0.7, 0.3, 0.9, 0.9, 0.4, 0.3, 0.4, 0.1, 0.5, 0.4, 0.4, 0.6, 0.4, 0.2, 0.9, 0.4, 0.6, 0.3, 0.5, 0.7, 0.2, 0.6, 0.7, 0.1, 0.1, 0.2, 0.8, 0.4, 0.8, 0.2, 0.2, 0.4, 0.6, 0.6, 0.2, 0.5, 0.7, 0.3, 0.4, 0.1, 0.2, 0.8, 0.6, 0.6, 0.9, 0.9, 0.2, 0.9, 0.2, 0.3, 0.6, 0.7, 0.5, 0.6, 0.5, 0.3, 0.1, 0.8, 0.3, 0.2, 0.1, 0.7, 0.7, 0.3, 0.9, 0.7, 0.4, 0.8, 0.7, 0.6, 0.8, 0.5, 0.6, 0.6, 0.9, 0.4, 0.5, 0.1, 0.2, 0.7, 0.6, 0.2, 0.7, 0.3, 0.5, 0.3, 0.6, 0.9, 0.7, 0.7, 0.6, 0.8, 0.4, 0.6, 0.5, 0.5, 0.8, 0.1, 0.3, 0.6, 0.9, 0.1, 0.2, 0.6, 0.3, 0.5, 0.7, 0.1, 0.9, 0.3, 0.5,
+
+L3_zSYR2K_B_kn
+0.7, 0.2, 0.6, 0.4, 0.5, 0.4, 0.6, 0.6, 0.7, 0.5, 0.2, 0.2, 0.3, 0.1, 0.5, 0.7, 0.1, 0.3, 0.9, 0.4, 0.3, 0.3, 0.6, 0.2, 0.2, 0.7, 0.6, 0.9, 0.4, 0.3, 0.2, 0.5, 0.6, 0.2, 0.2, 0.1, 0.5, 0.9, 0.6, 0.2, 0.8, 0.1, 0.2, 0.3, 0.7, 0.1, 0.1, 0.2, 0.5, 0.4, 0.6, 0.3, 0.2, 0.8, 0.1, 0.1, 0.7, 0.9, 0.8, 0.6, 0.9, 0.4, 0.6, 0.3, 0.1, 0.4, 0.7, 0.6, 0.3, 0.4, 0.8, 0.6, 0.4, 0.1, 0.5, 0.3, 0.7, 0.4, 0.3, 0.3, 0.6, 0.6, 0.6, 0.8, 0.4, 0.5, 0.1, 0.8, 0.2, 0.3, 0.8, 0.9, 0.9, 0.6, 0.4, 0.1, 0.7, 0.1, 0.2, 0.7, 0.8, 0.5, 0.3, 0.7, 0.8, 0.2, 0.9, 0.9, 0.1, 0.1, 0.9, 0.2, 0.3, 0.7, 0.8, 0.5, 0.4, 0.2, 0.7, 0.7, 0.9, 0.1, 0.5, 0.4, 0.1, 0.4, 0.3, 0.6, 0.6, 0.6, 0.1, 0.5, 0.5, 0.4, 0.1, 0.8, 0.7, 0.2, 0.1, 0.6, 0.2, 0.4, 0.1, 0.9, 0.2, 0.7, 0.4, 0.4, 0.9, 0.6, 0.2, 0.9, 0.4, 0.6, 0.1, 0.1, 0.5, 0.3, 0.7, 0.4, 0.7, 0.2, 0.5, 0.1, 0.9, 0.7, 0.6, 0.7, 0.2, 0.4, 0.1, 0.1, 0.4, 0.8, 0.4, 0.4, 0.2, 0.5, 0.3, 0.7, 0.8, 0.3, 0.9, 0.8, 0.3, 0.8, 0.4, 0.3, 0.2, 0.9, 0.7, 0.8, 0.3, 0.8, 0.5, 0.9, 0.5, 0.1, 0.4, 0.3, 0.9, 0.1, 0.6, 0.8, 0.7, 0.4, 0.7, 0.3, 0.4, 0.3, 0.6, 0.6, 0.2, 0.3, 0.8, 0.4, 0.8, 0.1, 0.9, 0.9, 0.1, 0.4, 0.8, 0.3, 0.4, 0.7, 0.8, 0.9, 0.6, 0.5, 0.8, 0.5, 0.6, 0.3, 0.4, 0.5, 0.9, 0.5, 0.5, 0.4, 0.3, 0.4, 0.5, 0.9, 0.8, 0.3, 0.2, 0.5, 0.8, 0.6, 0.1, 0.7, 0.7, 0.2, 0.6, 0.7, 0.6, 0.5, 0.4, 0.1, 0.7, 0.3, 0.5, 0.4, 0.2, 0.3, 0.9, 0.1, 0.5, 0.8, 0.1, 0.7, 0.5, 0.5, 0.6, 0.8, 0.8, 0.8, 0.6, 0.5, 0.9, 0.9, 0.8, 0.3, 0.2, 0.5, 0.8, 0.3, 0.3, 0.6, 0.8, 0.6, 0.3, 0.5, 0.2, 0.8, 0.9, 0.4, 0.3, 0.2, 0.1, 0.8, 0.7, 0.8, 0.2, 0.4, 0.4, 0.9, 0.8, 0.6, 0.1, 0.1, 0.1, 0.3, 0.7, 0.1, 0.9, 0.2, 0.2, 0.1, 0.2, 0.7, 0.2, 0.6, 0.6, 0.6, 0.9, 0.3, 0.5, 0.3, 0.2, 0.5, 0.4, 0.4, 0.6, 0.9, 0.2, 0.2, 0.7, 0.2, 0.8, 0.8, 0.3, 0.8, 0.3, 0.3, 0.5, 0.5, 0.3, 0.3, 0.7, 0.4, 0.8, 0.4, 0.2, 0.9, 0.7, 0.2, 0.5, 0.3, 0.2, 0.6, 0.4, 0.7, 0.7, 0.9, 0.1, 0.6, 0.5, 0.5, 0.4, 0.9, 0.1, 0.2, 0.3, 0.4, 0.4, 0.5, 0.3, 0.9, 0.2, 0.3, 0.1, 0.2, 0.4, 0.3, 0.8, 0.1, 0.7, 0.6, 0.9, 0.5, 0.5, 0.6, 0.7, 0.2, 0.4, 0.1, 0.5, 0.6, 0.9, 0.8, 0.2, 0.4, 0.9, 0.1, 0.3, 0.1, 0.1, 0.8, 0.2, 0.6, 0.9, 0.4, 0.8, 0.2, 0.9, 0.1, 0.4, 0.3, 0.1, 0.8, 0.2, 0.3, 0.2, 0.1, 0.6, 0.1, 0.2, 0.7, 0.2, 0.4, 0.3, 0.8, 0.8, 0.5, 0.6, 0.2, 0.3, 0.5, 0.2, 0.3, 0.2, 0.6, 0.1, 0.1, 0.7, 0.8, 0.3, 0.5, 0.1, 0.5, 0.3, 0.3, 0.6, 0.5, 0.9, 0.1, 0.2, 0.3, 0.3, 0.5, 0.4, 0.3, 0.1, 0.5, 0.6, 0.2, 0.2, 0.7, 0.4, 0.9, 0.8, 0.8, 0.5, 0.5, 0.7, 0.2, 0.1, 0.3, 0.9, 0.1, 0.5, 0.9, 0.7, 0.5, 0.3, 0.2, 0.7, 0.9, 0.8, 0.4, 0.1, 0.7, 0.6, 0.8, 0.4, 0.4, 0.2, 0.7, 0.3, 0.2, 0.5, 0.4, 0.7, 0.9, 0.1, 0.8, 0.2, 0.4, 0.6, 0.6, 0.2, 0.6, 0.1, 0.5, 0.3, 0.1, 0.8, 0.7, 0.6, 0.7, 0.4, 0.7, 0.4, 0.2, 0.3, 0.8, 0.9, 0.3, 0.8, 0.2, 0.4, 0.3, 0.4, 0.8, 0.7, 0.9, 0.8, 0.9, 0.3, 0.8, 0.3, 0.6,
+
+L3_zSYR2K_o_T
+-0.52, 12.4, -0.8, 15.71, 0.86, 13.79, -1.58, 12.76, -0.16, 13.93, 2.75, 14.48, 0.91, 15.94, 0.29, 15.73, -0.85, 13.4, -0.16, 16.88, 0.19, 12.01, 0.07, 15.02, 0.57, 13.91, -0.56, 15.83, 0.09, 15.06, -0.5, 15.3, -0.1, 13.49, -0.8, 15.71, -0.32, 17.5, 2.12, 15.78, -1.51, 14.17, -0.24, 16.47, 2.34, 16.3, 0.47, 18.1, 0.37, 17.08, -1.78, 15.37, 0.9, 18.28, 2.08, 13.95, 1.08, 18.65, 1.18, 16.86, -0.81, 16.29, -0.42, 17.78, -1.11, 16.03, -0.36, 15.54, 0.86, 13.79, 2.12, 15.78, 2.84, 13.58, 1.02, 14.51, 2.27, 15.73, 5.14, 13.22, 1.33, 17.31, 1.53, 14.71, -0.7, 14.52, 1.51, 17.56, 3.31, 12.6, 2.56, 16.64, 3.2, 15.16, 0.27, 15.66, 1.55, 15.12, 0.65, 14.81, 0.99, 15.16, -1.58, 12.76, -1.51, 14.17, 1.02, 14.51, -0.44, 13.68, 0.22, 15.01, 2.87, 14.15, -0.15, 16.08, 1.29, 14.34, -1.43, 13.65, -0.57, 15.0, 0.87, 11.76, 0.58, 14.83, 0.74, 13.71, -2.3, 15.78, -1.0, 14.7, -1.56, 13.75, -0.81, 13.51, -0.16, 13.93, -0.24, 16.47, 2.27, 15.73, 0.22, 15.01, -0.58, 16.18, 4.53, 15.26, 0.95, 17.19, 2.2, 15.87, -0.08, 14.81, 1.49, 17.07, 2.48, 12.26, 1.68, 17.07, 2.2, 14.97, -0.19, 15.38, 0.32, 16.06, -0.28, 14.8, -0.86, 14.57, 2.75, 14.48, 2.34, 16.3, 5.14, 13.22, 2.87, 14.15, 4.53, 15.26, 6.16, 14.3, 4.28, 17.04, 3.96, 14.84, 2.69, 14.57, 3.87, 16.57, 4.87, 12.5, 3.8, 16.29, 3.92, 15.43, 2.16, 17.18, 4.01, 15.83, 1.79, 15.04, 3.01, 14.19, 0.91, 15.94, 0.47, 18.1, 1.33, 17.31, -0.15, 16.08, 0.95, 17.19, 4.28, 17.04, 2.18, 17.8, 1.56, 18.48, 0.48, 15.94, 2.71, 17.95, 1.33, 14.39, 0.01, 17.84, 1.07, 18.54, 1.38, 17.93, 0.31, 18.49, -0.12, 17.61, 0.44, 16.58, 0.29, 15.73, 0.37, 17.08, 1.53, 14.71, 1.29, 14.34, 2.2, 15.87, 3.96, 14.84, 1.56, 18.48, 1.54, 17.24, -0.75, 16.02, 1.92, 18.62, 1.43, 13.59, 3.11, 17.61, 1.75, 15.71, -0.13, 16.86, 1.11, 16.28, -1.34, 17.27, 1.33, 14.29, -0.85, 13.4, -1.78, 15.37, -0.7, 14.52, -1.43, 13.65, -0.08, 14.81, 2.69, 14.57, 0.48, 15.94, -0.75, 16.02, 0.42, 14.34, 0.43, 16.24, 1.18, 12.31, -0.79, 15.0, -0.45, 15.27, -1.42, 15.48, -1.02, 14.34, -1.64, 13.79, -0.55, 13.09, -0.16, 16.88, 0.9, 18.28, 1.51, 17.56, -0.57, 15.0, 1.49, 17.07, 3.87, 16.57, 2.71, 17.95, 1.92, 18.62, 0.43, 16.24, 1.8, 18.06, 3.14, 14.36, 0.81, 18.18, 0.93, 17.96, -0.61, 17.48, 0.4, 17.32, -0.32, 17.83, -0.11, 16.02, 0.19, 12.01, 2.08, 13.95, 3.31, 12.6, 0.87, 11.76, 2.48, 12.26, 4.87, 12.5, 1.33, 14.39, 1.43, 13.59, 1.18, 12.31, 3.14, 14.36, 1.76, 10.76, 1.75, 14.71, 1.54, 13.27, 1.13, 14.04, 1.52, 13.28, -0.31, 13.2, 1.1, 13.46, 0.07, 15.02, 1.08, 18.65, 2.56, 16.64, 0.58, 14.83, 1.68, 17.07, 3.8, 16.29, 0.01, 17.84, 3.11, 17.61, -0.79, 15.0, 0.81, 18.18, 1.75, 14.71, 0.96, 18.8, 2.24, 17.16, -0.51, 16.81, 0.99, 16.56, -0.98, 16.25, 0.72, 14.93, 0.57, 13.91, 1.18, 16.86, 3.2, 15.16, 0.74, 13.71, 2.2, 14.97, 3.92, 15.43, 1.07, 18.54, 1.75, 15.71, -0.45, 15.27, 0.93, 17.96, 1.54, 13.27, 2.24, 17.16, 1.62, 14.58, -0.06, 16.54, 0.96, 16.18, 0.33, 15.65, 0.67, 15.12, -0.56, 15.83, -0.81, 16.29, 0.27, 15.66, -2.3, 15.78, -0.19, 15.38, 2.16, 17.18, 1.38, 17.93, -0.13, 16.86, -1.42, 15.48, -0.61, 17.48, 1.13, 14.04, -0.51, 16.81, -0.06, 16.54, -0.88, 17.34, -0.59, 16.72, -1.22, 15.77, -1.2, 14.95, 0.09, 15.06, -0.42, 17.78, 1.55, 15.12, -1.0, 14.7, 0.32, 16.06, 4.01, 15.83, 0.31, 18.49, 1.11, 16.28, -1.02, 14.34, 0.4, 17.32, 1.52, 13.28, 0.99, 16.56, 0.96, 16.18, -0.59, 16.72, 0.08, 16.14, -1.71, 16.03, -0.46, 14.38, -0.5, 15.3, -1.11, 16.03, 0.65, 14.81, -1.56, 13.75, -0.28, 14.8, 1.79, 15.04, -0.12, 17.61, -1.34, 17.27, -1.64, 13.79, -0.32, 17.83, -0.31, 13.2, -0.98, 16.25, 0.33, 15.65, -1.22, 15.77, -1.71, 16.03, -2.26, 13.92, -1.11, 14.89, -0.1, 13.49, -0.36, 15.54, 0.99, 15.16, -0.81, 13.51, -0.86, 14.57, 3.01, 14.19, 0.44, 16.58, 1.33, 14.29, -0.55, 13.09, -0.11, 16.02, 1.1, 13.46, 0.72, 14.93, 0.67, 15.12, -1.2, 14.95, -0.46, 14.38, -1.11, 14.89, -0.78, 13.22,
+
+L3_cHER2K_A_nk
+0.699999988079, 0.699999988079, 0.899999976158, 0.20000000298, 0.600000023842, 0.699999988079, 0.800000011921, 0.40000000596, 0.40000000596, 0.899999976158, 0.800000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.40000000596, 0.10000000149, 0.600000023842, 0.10000000149, 0.5, 0.5, 0.300000011921, 0.40000000596, 0.699999988079, 0.10000000149, 0.300000011921, 0.5, 0.5, 0.899999976158, 0.800000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.899999976158, 0.40000000596, 0.5, 0.40000000596, 0.10000000149, 0.800000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.20000000298, 0.5, 0.300000011921, 0.5, 0.20000000298, 0.800000011921, 0.800000011921, 0.699999988079, 0.5, 0.10000000149, 0.800000011921, 0.5, 0.5, 0.699999988079, 0.5, 0.5, 0.10000000149, 0.5, 0.800000011921, 0.899999976158, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.40000000596, 0.699999988079, 0.5, 0.300000011921, 0.5, 0.300000011921, 0.5, 0.899999976158, 0.300000011921, 0.10000000149, 0.600000023842, 0.5, 0.899999976158, 0.5, 0.600000023842, 0.699999988079, 0.300000011921, 0.5, 0.300000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.5, 0.300000011921, 0.800000011921, 0.899999976158, 0.300000011921, 0.10000000149, 0.699999988079, 0.10000000149, 0.699999988079, 0.10000000149, 0.600000023842, 0.5, 0.5, 0.300000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.10000000149, 0.10000000149, 0.600000023842, 0.699999988079, 0.10000000149, 0.699999988079, 0.20000000298, 0.10000000149, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.800000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.10000000149, 0.40000000596, 0.20000000298, 0.40000000596, 0.10000000149, 0.899999976158, 0.800000011921, 0.800000011921, 0.800000011921, 0.5, 0.600000023842, 0.600000023842, 0.40000000596, 0.10000000149, 0.20000000298, 0.10000000149, 0.899999976158, 0.40000000596, 0.300000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.20000000298, 0.600000023842, 0.699999988079, 0.40000000596, 0.600000023842, 0.800000011921, 0.600000023842, 0.300000011921, 0.5, 0.20000000298, 0.600000023842, 0.899999976158, 0.699999988079, 0.800000011921, 0.10000000149, 0.899999976158, 0.600000023842, 0.899999976158, 0.5, 0.10000000149, 0.600000023842, 0.899999976158, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.20000000298, 0.899999976158, 0.800000011921, 0.699999988079, 0.40000000596, 0.10000000149, 0.40000000596, 0.40000000596, 0.899999976158, 0.20000000298, 0.40000000596, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.800000011921, 0.40000000596, 0.800000011921, 0.699999988079, 0.300000011921, 0.10000000149, 0.10000000149, 0.300000011921, 0.300000011921, 0.5, 0.300000011921, 0.699999988079, 0.40000000596, 0.5, 0.800000011921, 0.800000011921, 0.300000011921, 0.10000000149, 0.20000000298, 0.899999976158, 0.899999976158, 0.699999988079, 0.800000011921, 0.20000000298, 0.300000011921, 0.10000000149, 0.20000000298, 0.699999988079, 0.699999988079, 0.300000011921, 0.300000011921, 0.20000000298, 0.20000000298, 0.699999988079, 0.600000023842, 0.300000011921, 0.10000000149, 0.10000000149, 0.699999988079, 0.899999976158, 0.800000011921, 0.699999988079, 0.899999976158, 0.5, 0.699999988079, 0.5, 0.899999976158, 0.5, 0.5, 0.300000011921, 0.699999988079, 0.5, 0.20000000298, 0.600000023842, 0.699999988079, 0.600000023842, 0.20000000298, 0.20000000298, 0.800000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.40000000596, 0.10000000149, 0.10000000149, 0.20000000298, 0.800000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.300000011921, 0.699999988079, 0.899999976158, 0.40000000596, 0.10000000149, 0.40000000596, 0.699999988079, 0.600000023842, 0.800000011921, 0.5, 0.300000011921, 0.699999988079, 0.699999988079, 0.300000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.10000000149, 0.5, 0.600000023842, 0.40000000596, 0.899999976158, 0.800000011921, 0.5, 0.800000011921, 0.300000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.300000011921, 0.20000000298, 0.300000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.800000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.20000000298, 0.699999988079, 0.800000011921, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.20000000298, 0.300000011921, 0.899999976158, 0.699999988079, 0.40000000596, 0.699999988079, 0.10000000149, 0.5, 0.40000000596, 0.5, 0.5, 0.10000000149, 0.40000000596, 0.800000011921, 0.10000000149, 0.800000011921, 0.20000000298, 0.699999988079, 0.800000011921, 0.10000000149, 0.699999988079, 0.5, 0.10000000149, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.20000000298, 0.699999988079, 0.699999988079, 0.600000023842, 0.300000011921, 0.800000011921, 0.20000000298, 0.5, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.800000011921, 0.600000023842, 0.800000011921, 0.5, 0.699999988079, 0.20000000298, 0.300000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.699999988079, 0.5, 0.699999988079, 0.899999976158, 0.20000000298, 0.899999976158, 0.300000011921, 0.800000011921, 0.5, 0.699999988079, 0.20000000298, 0.899999976158, 0.600000023842, 0.300000011921, 0.800000011921, 0.300000011921, 0.40000000596, 0.699999988079, 0.699999988079, 0.600000023842, 0.20000000298, 0.20000000298, 0.5, 0.899999976158, 0.10000000149, 0.300000011921, 0.5, 0.20000000298, 0.800000011921, 0.600000023842, 0.20000000298, 0.20000000298, 0.20000000298, 0.800000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.899999976158, 0.10000000149, 0.300000011921, 0.300000011921, 0.300000011921, 0.20000000298, 0.899999976158, 0.40000000596, 0.600000023842, 0.699999988079, 0.5, 0.800000011921, 0.300000011921, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.699999988079, 0.300000011921, 0.600000023842, 0.899999976158, 0.40000000596, 0.40000000596, 0.899999976158, 0.300000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.5, 0.40000000596, 0.899999976158, 0.5, 0.600000023842, 0.699999988079, 0.800000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.800000011921, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.300000011921, 0.5, 0.699999988079, 0.300000011921, 0.5, 0.5, 0.600000023842, 0.699999988079, 0.600000023842, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.20000000298, 0.5, 0.10000000149, 0.600000023842, 0.699999988079, 0.899999976158, 0.20000000298, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.300000011921, 0.5, 0.5, 0.899999976158, 0.600000023842, 0.300000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.600000023842, 0.10000000149, 0.40000000596, 0.40000000596, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.800000011921, 0.5, 0.300000011921, 0.10000000149, 0.899999976158, 0.40000000596, 0.300000011921, 0.10000000149, 0.600000023842, 0.800000011921, 0.300000011921, 0.699999988079, 0.40000000596, 0.899999976158, 0.40000000596, 0.699999988079, 0.899999976158, 0.20000000298, 0.600000023842, 0.40000000596, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.40000000596, 0.800000011921, 0.600000023842, 0.699999988079, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.10000000149, 0.899999976158,
+
+L3_cHER2K_B_nk
+0.800000011921, 0.5, 0.5, 0.20000000298, 0.20000000298, 0.5, 0.899999976158, 0.899999976158, 0.10000000149, 0.800000011921, 0.10000000149, 0.600000023842, 0.20000000298, 0.699999988079, 0.600000023842, 0.899999976158, 0.40000000596, 0.699999988079, 0.699999988079, 0.5, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.10000000149, 0.699999988079, 0.20000000298, 0.600000023842, 0.300000011921, 0.40000000596, 0.20000000298, 0.800000011921, 0.20000000298, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.699999988079, 0.699999988079, 0.20000000298, 0.600000023842, 0.5, 0.800000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.899999976158, 0.300000011921, 0.10000000149, 0.899999976158, 0.300000011921, 0.40000000596, 0.300000011921, 0.300000011921, 0.800000011921, 0.10000000149, 0.899999976158, 0.699999988079, 0.5, 0.10000000149, 0.5, 0.899999976158, 0.699999988079, 0.800000011921, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.40000000596, 0.5, 0.699999988079, 0.800000011921, 0.40000000596, 0.800000011921, 0.5, 0.800000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.40000000596, 0.300000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.10000000149, 0.20000000298, 0.600000023842, 0.600000023842, 0.699999988079, 0.5, 0.40000000596, 0.300000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.40000000596, 0.40000000596, 0.899999976158, 0.20000000298, 0.5, 0.899999976158, 0.600000023842, 0.20000000298, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.20000000298, 0.300000011921, 0.20000000298, 0.800000011921, 0.10000000149, 0.300000011921, 0.899999976158, 0.300000011921, 0.20000000298, 0.899999976158, 0.899999976158, 0.600000023842, 0.20000000298, 0.20000000298, 0.800000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.600000023842, 0.699999988079, 0.20000000298, 0.300000011921, 0.20000000298, 0.600000023842, 0.20000000298, 0.40000000596, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.20000000298, 0.40000000596, 0.699999988079, 0.10000000149, 0.10000000149, 0.300000011921, 0.699999988079, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.5, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.600000023842, 0.5, 0.600000023842, 0.800000011921, 0.10000000149, 0.899999976158, 0.5, 0.600000023842, 0.699999988079, 0.300000011921, 0.699999988079, 0.300000011921, 0.800000011921, 0.40000000596, 0.899999976158, 0.699999988079, 0.699999988079, 0.699999988079, 0.40000000596, 0.20000000298, 0.300000011921, 0.300000011921, 0.40000000596, 0.800000011921, 0.800000011921, 0.20000000298, 0.20000000298, 0.10000000149, 0.10000000149, 0.5, 0.20000000298, 0.5, 0.5, 0.300000011921, 0.40000000596, 0.20000000298, 0.40000000596, 0.5, 0.20000000298, 0.600000023842, 0.300000011921, 0.5, 0.899999976158, 0.699999988079, 0.899999976158, 0.10000000149, 0.5, 0.300000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.10000000149, 0.600000023842, 0.800000011921, 0.40000000596, 0.699999988079, 0.699999988079, 0.800000011921, 0.20000000298, 0.5, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.699999988079, 0.699999988079, 0.600000023842, 0.899999976158, 0.899999976158, 0.600000023842, 0.600000023842, 0.800000011921, 0.300000011921, 0.10000000149, 0.600000023842, 0.10000000149, 0.699999988079, 0.800000011921, 0.5, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.899999976158, 0.300000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.10000000149, 0.800000011921, 0.600000023842, 0.5, 0.40000000596, 0.40000000596, 0.699999988079, 0.10000000149, 0.699999988079, 0.699999988079, 0.40000000596, 0.300000011921, 0.300000011921, 0.300000011921, 0.600000023842, 0.300000011921, 0.800000011921, 0.600000023842, 0.20000000298, 0.699999988079, 0.5, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.300000011921, 0.10000000149, 0.800000011921, 0.5, 0.5, 0.5, 0.699999988079, 0.20000000298, 0.600000023842, 0.800000011921, 0.40000000596, 0.800000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.20000000298, 0.300000011921, 0.300000011921, 0.300000011921, 0.800000011921, 0.40000000596, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.40000000596, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.699999988079, 0.699999988079, 0.20000000298, 0.899999976158, 0.600000023842, 0.300000011921, 0.10000000149, 0.40000000596, 0.20000000298, 0.20000000298, 0.300000011921, 0.300000011921, 0.10000000149, 0.40000000596, 0.300000011921, 0.20000000298, 0.699999988079, 0.600000023842, 0.899999976158, 0.20000000298, 0.300000011921, 0.40000000596, 0.600000023842, 0.800000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.800000011921, 0.5, 0.899999976158, 0.300000011921, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.5, 0.699999988079, 0.10000000149, 0.20000000298, 0.699999988079, 0.10000000149, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.600000023842, 0.10000000149, 0.20000000298, 0.300000011921, 0.699999988079, 0.600000023842, 0.899999976158, 0.300000011921, 0.5, 0.40000000596, 0.800000011921, 0.899999976158, 0.300000011921, 0.899999976158, 0.300000011921, 0.800000011921, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.5, 0.600000023842, 0.300000011921, 0.20000000298, 0.600000023842, 0.20000000298, 0.5, 0.699999988079, 0.300000011921, 0.40000000596, 0.899999976158, 0.40000000596, 0.800000011921, 0.699999988079, 0.40000000596, 0.600000023842, 0.699999988079, 0.899999976158, 0.300000011921, 0.20000000298, 0.300000011921, 0.5, 0.10000000149, 0.40000000596, 0.5, 0.5, 0.899999976158, 0.600000023842, 0.300000011921, 0.300000011921, 0.800000011921, 0.699999988079, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.800000011921, 0.300000011921, 0.300000011921, 0.699999988079, 0.600000023842, 0.40000000596, 0.300000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.300000011921, 0.20000000298, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.899999976158, 0.600000023842, 0.699999988079, 0.10000000149, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.10000000149, 0.300000011921, 0.10000000149, 0.20000000298, 0.600000023842, 0.699999988079, 0.800000011921, 0.300000011921, 0.20000000298, 0.699999988079, 0.40000000596, 0.600000023842, 0.40000000596, 0.20000000298, 0.699999988079, 0.600000023842, 0.5, 0.600000023842, 0.800000011921, 0.10000000149, 0.800000011921, 0.10000000149, 0.10000000149, 0.20000000298, 0.300000011921, 0.600000023842, 0.699999988079, 0.699999988079, 0.20000000298, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.600000023842, 0.40000000596, 0.10000000149, 0.899999976158, 0.20000000298, 0.699999988079, 0.5, 0.40000000596, 0.40000000596, 0.800000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.899999976158, 0.10000000149, 0.20000000298, 0.5, 0.5, 0.40000000596, 0.800000011921, 0.10000000149, 0.300000011921, 0.5, 0.600000023842, 0.20000000298, 0.300000011921, 0.899999976158, 0.899999976158, 0.5, 0.10000000149, 0.699999988079, 0.300000011921, 0.699999988079, 0.5, 0.699999988079, 0.10000000149, 0.699999988079, 0.10000000149, 0.5, 0.600000023842, 0.300000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.40000000596, 0.800000011921, 0.300000011921, 0.800000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.699999988079, 0.5, 0.40000000596, 0.10000000149, 0.300000011921, 0.40000000596, 0.800000011921, 0.899999976158, 0.699999988079, 0.899999976158, 0.40000000596, 0.5, 0.800000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.300000011921, 0.699999988079, 0.10000000149, 0.20000000298, 0.10000000149, 0.40000000596, 0.300000011921,
+
+L3_cHER2K_C_nn
+0.10000000149, 0.0, 0.800000011921, 0.40000000596, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.300000011921, 0.40000000596, 0.5, 0.20000000298, 0.40000000596, 0.899999976158, 0.300000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.899999976158, 0.899999976158, 0.20000000298, 0.600000023842, 0.699999988079, 0.600000023842, 0.20000000298, 0.40000000596, 0.20000000298, 0.20000000298, 0.800000011921, 0.800000011921, 0.5, 0.699999988079, 0.5, 0.899999976158, 0.800000011921, -0.40000000596, 0.899999976158, 0.0, 0.10000000149, 0.699999988079, 0.899999976158, 0.600000023842, 0.40000000596, 0.300000011921, 0.40000000596, 0.5, 0.10000000149, 0.899999976158, 0.899999976158, 0.600000023842, 0.40000000596, 0.20000000298, 0.5, 0.600000023842, 0.20000000298, 0.5, 0.899999976158, 0.40000000596, 0.20000000298, 0.600000023842, 0.899999976158, 0.699999988079, 0.899999976158, 0.300000011921, 0.699999988079, 0.5, 0.300000011921, 0.600000023842, 0.800000011921, -0.699999988079, 0.10000000149, -0.699999988079, 0.800000011921, 0.0, 0.5, 0.300000011921, 0.600000023842, 0.5, 0.300000011921, 0.899999976158, 0.40000000596, 0.899999976158, 0.20000000298, 0.300000011921, 0.699999988079, 0.40000000596, 0.300000011921, 0.600000023842, 0.899999976158, 0.10000000149, 0.800000011921, 0.20000000298, 0.5, 0.300000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.699999988079, 0.899999976158, 0.600000023842, 0.300000011921, 0.5, 0.300000011921, -0.899999976158, 0.899999976158, -0.600000023842, 0.5, -0.300000011921, 0.899999976158, 0.0, 0.5, 0.300000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.10000000149, 0.300000011921, 0.699999988079, 0.5, 0.300000011921, 0.800000011921, 0.5, 0.699999988079, 0.699999988079, 0.40000000596, 0.20000000298, 0.5, 0.20000000298, 0.300000011921, 0.600000023842, 0.10000000149, 0.600000023842, 0.40000000596, 0.10000000149, 0.40000000596, 0.300000011921, -0.40000000596, 0.40000000596, -0.300000011921, 0.600000023842, -0.5, 0.5, -0.300000011921, 0.10000000149, 0.0, 0.10000000149, 0.300000011921, 0.10000000149, 0.800000011921, 0.40000000596, 0.300000011921, 0.5, 0.20000000298, 0.800000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.40000000596, 0.5, 0.600000023842, 0.40000000596, 0.600000023842, 0.5, 0.10000000149, 0.40000000596, 0.40000000596, 0.600000023842, 0.5, 0.600000023842, 0.5, -0.20000000298, 0.40000000596, -0.5, 0.300000011921, -0.899999976158, 0.899999976158, -0.699999988079, 0.10000000149, -0.300000011921, 0.40000000596, 0.0, 0.10000000149, 0.800000011921, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.800000011921, 0.10000000149, 0.40000000596, 0.899999976158, 0.800000011921, 0.899999976158, 0.600000023842, 0.699999988079, 0.600000023842, 0.10000000149, 0.699999988079, 0.20000000298, 0.20000000298, 0.10000000149, 0.20000000298, 0.40000000596, -0.899999976158, 0.10000000149, -0.899999976158, 0.40000000596, -0.899999976158, 0.300000011921, -0.600000023842, 0.10000000149, -0.800000011921, 0.10000000149, -0.800000011921, 0.10000000149, 0.0, 0.40000000596, 0.300000011921, 0.899999976158, 0.5, 0.40000000596, 0.300000011921, 0.40000000596, 0.5, 0.40000000596, 0.300000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.699999988079, 0.699999988079, 0.5, 0.20000000298, 0.899999976158, 0.699999988079, 0.699999988079, 0.300000011921, -0.10000000149, 0.899999976158, -0.600000023842, 0.20000000298, -0.300000011921, 0.10000000149, -0.300000011921, 0.40000000596, -0.300000011921, 0.699999988079, -0.300000011921, 0.40000000596, -0.300000011921, 0.300000011921, 0.0, 0.20000000298, 0.40000000596, 0.5, 0.899999976158, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.899999976158, 0.300000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.600000023842, 0.800000011921, 0.300000011921, 0.300000011921, 0.699999988079, -0.40000000596, 0.40000000596, -0.20000000298, 0.699999988079, -0.40000000596, 0.699999988079, -0.5, 0.5, -0.20000000298, 0.899999976158, -0.699999988079, 0.899999976158, -0.5, 0.20000000298, -0.40000000596, 0.20000000298, 0.0, 0.800000011921, 0.20000000298, 0.20000000298, 0.5, 0.10000000149, 0.699999988079, 0.10000000149, 0.699999988079, 0.300000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.899999976158, 0.300000011921, 0.600000023842, 0.300000011921, 0.899999976158, -0.899999976158, 0.5, -0.600000023842, 0.300000011921, -0.600000023842, 0.300000011921, -0.800000011921, 0.800000011921, -0.600000023842, 0.20000000298, -0.800000011921, 0.40000000596, -0.300000011921, 0.5, -0.899999976158, 0.800000011921, -0.20000000298, 0.300000011921, 0.0, 0.600000023842, 0.699999988079, 0.699999988079, 0.699999988079, 0.600000023842, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.800000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.600000023842, 0.20000000298, -0.600000023842, 0.20000000298, -0.5, 0.899999976158, -0.10000000149, 0.5, -0.699999988079, 0.20000000298, -0.40000000596, 0.10000000149, -0.40000000596, 0.40000000596, -0.5, 0.800000011921, -0.899999976158, 0.20000000298, -0.5, 0.600000023842, -0.699999988079, 0.300000011921, 0.0, 0.20000000298, 0.699999988079, 0.699999988079, 0.300000011921, 0.899999976158, 0.5, 0.600000023842, 0.899999976158, 0.800000011921, 0.40000000596, 0.20000000298, 0.10000000149, 0.699999988079, -0.600000023842, 0.899999976158, -0.40000000596, 0.800000011921, -0.20000000298, 0.699999988079, -0.40000000596, 0.40000000596, -0.5, 0.899999976158, -0.800000011921, 0.40000000596, -0.300000011921, 0.20000000298, -0.800000011921, 0.10000000149, -0.699999988079, 0.699999988079, -0.699999988079, 0.20000000298, -0.699999988079, 0.5, 0.0, 0.600000023842, 0.300000011921, 0.800000011921, 0.10000000149, 0.5, 0.600000023842, 0.800000011921, 0.20000000298, 0.600000023842, 0.800000011921, 0.20000000298, -0.40000000596, 0.20000000298, -0.600000023842, 0.5, -0.300000011921, 0.20000000298, -0.5, 0.600000023842, -0.40000000596, 0.899999976158, -0.600000023842, 0.600000023842, -0.800000011921, 0.899999976158, -0.300000011921, 0.10000000149, -0.699999988079, 0.600000023842, -0.10000000149, 0.699999988079, -0.300000011921, 0.600000023842, -0.300000011921, 0.300000011921, 0.0, 0.899999976158, 0.899999976158, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.300000011921, 0.5, 0.20000000298, -0.20000000298, 0.899999976158, -0.699999988079, 0.899999976158, -0.600000023842, 0.20000000298, -0.300000011921, 0.600000023842, -0.5, 0.699999988079, -0.600000023842, 0.699999988079, -0.699999988079, 0.300000011921, -0.699999988079, 0.300000011921, -0.899999976158, 0.600000023842, -0.40000000596, 0.899999976158, -0.5, 0.800000011921, -0.10000000149, 0.899999976158, -0.899999976158, 0.10000000149, 0.0, 0.699999988079, 0.899999976158, 0.699999988079, 0.20000000298, 0.600000023842, 0.600000023842, 0.800000011921, -0.800000011921, 0.899999976158, -0.300000011921, 0.20000000298, -0.699999988079, 0.600000023842, -0.10000000149, 0.10000000149, -0.40000000596, 0.10000000149, -0.699999988079, 0.699999988079, -0.5, 0.20000000298, -0.800000011921, 0.40000000596, -0.300000011921, 0.20000000298, -0.800000011921, 0.600000023842, -0.899999976158, 0.5, -0.600000023842, 0.10000000149, -0.5, 0.699999988079, -0.899999976158, 0.300000011921, 0.0, 0.20000000298, 0.300000011921, 0.20000000298, 0.20000000298, 0.5, -0.699999988079, 0.699999988079, -0.5, 0.899999976158, -0.600000023842, 0.600000023842, -0.40000000596, 0.40000000596, -0.600000023842, 0.20000000298, -0.20000000298, 0.20000000298, -0.899999976158, 0.600000023842, -0.800000011921, 0.899999976158, -0.300000011921, 0.10000000149, -0.600000023842, 0.800000011921, -0.40000000596, 0.800000011921, -0.20000000298, 0.699999988079, -0.5, 0.699999988079, -0.20000000298, 0.20000000298, -0.300000011921, 0.600000023842, 0.0, 0.300000011921, 0.10000000149, 0.5, -0.899999976158, 0.300000011921, -0.600000023842, 0.300000011921, -0.5, 0.10000000149, -0.40000000596, 0.5, -0.600000023842, 0.10000000149, -0.20000000298, 0.699999988079, -0.699999988079, 0.300000011921, -0.300000011921, 0.600000023842, -0.300000011921, 0.600000023842, -0.600000023842, 0.20000000298, -0.10000000149, 0.600000023842, -0.800000011921, 0.300000011921, -0.5, 0.600000023842, -0.600000023842, 0.20000000298, -0.20000000298, 0.300000011921, -0.10000000149, 0.600000023842, 0.0,
+
+L3_cHER2K_o_N
+16.7000000253, -1.33226762955e-15, 16.3100001925, 0.0299998816848, 18.260000039, 0.319999764413, 15.3900001539, -1.89000006229, 15.3100001419, 1.47999986008, 17.3600000994, -1.34000002801, 16.5900000705, 0.709999814034, 17.3500000954, -0.63000007689, 16.2800001164, -1.12000010863, 16.3199999641, 0.719999999851, 14.9700000863, -1.36000007182, 17.760000086, 1.20999989152, 16.860000159, -0.550000102818, 15.7500000365, -0.570000060201, 16.8200001407, 2.32999984741, 16.6000000745, 1.23999989465, 16.5300001149, 1.38999987304, 16.3100001925, -0.0299998816848, 15.1400001383, -3.33066907388e-16, 16.1700001921, 0.699999976158, 15.5700001377, -1.12999984965, 14.0000003263, 0.629999983013, 17.0700002435, 0.0700000587106, 14.760000156, 0.1299999547, 16.7600001895, -0.319999841154, 16.1700001876, -1.25000002161, 16.0800001164, 1.35000008419, 13.4900001748, -0.899999985099, 17.2500002533, 0.960000034571, 16.040000262, -1.28999993414, 16.4300001231, -0.429999971092, 16.4600001985, 2.07999999121, 16.3600000606, 1.00000007302, 16.2500001878, 0.790000140518, 18.260000039, -0.319999764413, 16.1700001921, -0.699999976158, 17.0600002104, -2.22044604925e-16, 15.0700001034, -1.64999979585, 14.770000248, 2.2199999842, 17.3000001445, 0.330000127554, 15.5800001797, 1.04999995828, 16.8300001484, 0.340000114441, 16.2900001509, -0.220000038594, 15.4200001884, 1.90000008941, 15.7500001729, -0.519999971539, 17.9500001825, 1.31000011653, 17.6000001974, -1.03999991328, 15.9900002009, -0.189999897629, 16.1700001965, 2.45999998391, 17.6400001144, 1.35000015274, 16.1000001512, 1.31000006959, 15.3900001539, 1.89000006229, 15.5700001377, 1.12999984965, 15.0700001034, 1.64999979585, 13.9200001198, 2.22044604925e-16, 13.7300002505, 2.38999994159, 16.090000212, 1.90000004768, 14.8400000705, 1.67999990404, 14.7400001234, 1.53000004038, 14.370000207, 1.43999991998, 14.130000167, 3.30000005886, 12.8200001958, 1.29999991804, 16.8400001934, 2.93000001431, 15.220000204, 1.49999988377, 13.7400002314, 1.51999993056, 14.8500002563, 3.22999983847, 14.6000001587, 2.71999994248, 14.2500002459, 2.30999999434, 15.3100001419, -1.47999986008, 14.0000003263, -0.629999983013, 14.770000248, -2.2199999842, 13.7300002505, -2.38999994159, 11.3800003138, 2.22044604925e-16, 14.4200002711, -2.31999993578, 13.2800001805, -0.25000006035, 14.060000232, -0.70999989599, 13.3600001538, -1.3299999927, 13.5500002772, -0.539999925941, 12.400000231, -1.39999997318, 15.6900002545, 0.0199999976158, 13.7000003479, -2.00999992281, 13.1900002992, -1.03999995276, 14.3800002207, 0.70000000447, 13.5000002593, -0.3199999246, 14.3900002165, -0.199999940395, 17.3600000994, 1.34000002801, 17.0700002435, -0.0700000587106, 17.3000001445, -0.330000127554, 16.090000212, -1.90000004768, 14.4200002711, 2.31999993578, 16.2600002596, 0.0, 15.5100001881, 3.19999983981, 16.6600001113, 1.08000001505, 16.4200001027, 0.919999851584, 16.2000001684, 2.22000000507, 15.1000002347, 0.0199999588728, 17.4800001998, 2.51999990299, 16.9300002192, -6.70552391391e-09, 15.9400001726, 1.90999991834, 16.4000002332, 3.25999978572, 16.3100000688, 1.42999995843, 16.6300002423, 1.73999998033, 16.5900000705, -0.709999814034, 14.760000156, -0.1299999547, 15.5800001797, -1.04999995828, 14.8400000705, -1.67999990404, 13.2800001805, 0.25000006035, 15.5100001881, -3.19999983981, 14.8000001207, 0.0, 15.4800001283, 0.0700001391768, 15.5100001664, -0.969999974519, 15.3800001648, 0.15000012666, 14.1700001474, -1.64999989867, 16.5500001013, 0.210000110567, 15.9100002581, -0.27999988988, 14.5500001356, 3.50177284947e-08, 15.7700001772, 2.49000000343, 14.4200001325, 1.10000010207, 16.1600001054, 1.12000011533, 17.3500000954, 0.63000007689, 16.7600001895, 0.319999841154, 16.8300001484, -0.340000114441, 14.7400001234, -1.53000004038, 14.060000232, 0.70999989599, 16.6600001113, -1.08000001505, 15.4800001283, -0.0700001391768, 15.4800000873, 0.0, 14.9600001739, -0.970000097454, 15.5000001281, 1.57999992117, 15.2300001246, -0.410000073314, 16.7000001356, 2.14999992251, 17.4100000688, -0.989999978095, 14.7200001511, -0.590000064522, 16.6200001802, 1.64999988154, 17.4800000344, 1.6699999775, 15.8700001645, 0.419999969304, 16.2800001164, 1.12000010863, 16.1700001876, 1.25000002161, 16.2900001509, 0.220000038594, 14.370000207, -1.43999991998, 13.3600001538, 1.3299999927, 16.4200001027, -0.919999851584, 15.5100001664, 0.969999974519, 14.9600001739, 0.970000097454, 15.5200001347, 4.4408920985e-16, 16.2700001355, 2.01000007108, 13.7800002177, 0.150000099838, 15.7800002125, 3.02999997035, 15.0200001712, 0.940000025034, 13.6800001618, 1.23000006422, 15.3500001691, 2.03999994308, 16.130000053, 1.30000016391, 15.7800002021, 1.01000007257, 16.3199999641, -0.719999999851, 16.0800001164, -1.35000008419, 15.4200001884, -1.90000008941, 14.130000167, -3.30000005886, 13.5500002772, 0.539999925941, 16.2000001684, -2.22000000507, 15.3800001648, -0.15000012666, 15.5000001281, -1.57999992117, 16.2700001355, -2.01000007108, 14.9800001723, 4.4408920985e-16, 14.1600002544, -1.24999999851, 17.2100001292, 1.00999993399, 16.5000001438, -0.480000074655, 14.140000253, -0.659999928027, 14.420000242, 2.30999992579, 15.79000011, 0.98999997139, 14.6300002229, 0.48000007093, 14.9700000863, 1.36000007182, 13.4900001748, 0.899999985099, 15.7500001729, 0.519999971539, 12.8200001958, -1.29999991804, 12.400000231, 1.39999997318, 15.1000002347, -0.0199999588728, 14.1700001474, 1.64999989867, 15.2300001246, 0.410000073314, 13.7800002177, -0.150000099838, 14.1600002544, 1.24999999851, 13.0000001281, -1.11022302463e-16, 16.0600001985, 3.7600000301, 15.6100001985, 0.490000058562, 14.6700001772, 0.570000025183, 15.1800002401, 4.27999993607, 15.3500001222, 3.13999999076, 14.5300001402, 1.98999997884, 17.760000086, -1.20999989152, 17.2500002533, -0.960000034571, 17.9500001825, -1.31000011653, 16.8400001934, -2.93000001431, 15.6900002545, -0.0199999976158, 17.4800001998, -2.51999990299, 16.5500001013, -0.210000110567, 16.7000001356, -2.14999992251, 15.7800002125, -3.02999997035, 17.2100001292, -1.00999993399, 16.0600001985, -3.7600000301, 18.5000001997, -4.4408920985e-16, 17.3600002357, -1.2700000155, 16.3300002192, -0.399999993294, 16.9200002085, 2.09999997392, 17.4500001401, 0.21000008896, 17.5200002033, -0.329999930859, 16.860000159, 0.550000102818, 16.040000262, 1.28999993414, 17.6000001974, 1.03999991328, 15.220000204, -1.49999988377, 13.7000003479, 2.00999992281, 16.9300002192, 6.70552546822e-09, 15.9100002581, 0.27999988988, 17.4100000688, 0.989999978095, 15.0200001712, -0.940000025034, 16.5000001438, 0.480000074655, 15.6100001985, -0.490000058562, 17.3600002357, 1.2700000155, 16.1400003082, 2.22044604925e-16, 16.4100001433, 1.23999997139, 16.4100002357, 3.279999872, 16.3200001906, 2.15999999508, 15.9900002694, 1.18000005677, 15.7500000365, 0.570000060201, 16.4300001231, 0.429999971092, 15.9900002009, 0.189999897629, 13.7400002314, -1.51999993056, 13.1900002992, 1.03999995276, 15.9400001726, -1.90999991834, 14.5500001356, -3.50177287167e-08, 14.7200001511, 0.590000064522, 13.6800001618, -1.23000006422, 14.140000253, 0.659999928027, 14.6700001772, -0.570000025183, 16.3300002192, 0.399999993294, 16.4100001433, -1.23999997139, 13.1400002724, 2.22044604925e-16, 15.3100002164, 2.35999994218, 15.2600001709, 1.46999996632, 15.1500001706, 1.42000012353, 16.8200001407, -2.32999984741, 16.4600001985, -2.07999999121, 16.1700001965, -2.45999998391, 14.8500002563, -3.22999983847, 14.3800002207, -0.70000000447, 16.4000002332, -3.25999978572, 15.7700001772, -2.49000000343, 16.6200001802, -1.64999988154, 15.3500001691, -2.03999994308, 14.420000242, -2.30999992579, 15.1800002401, -4.27999993607, 16.9200002085, -2.09999997392, 16.4100002357, -3.279999872, 15.3100002164, -2.35999994218, 16.1800001812, 6.66133814775e-16, 15.8700001906, -0.649999931455, 15.2600002015, -0.959999923557, 16.6000000745, -1.23999989465, 16.3600000606, -1.00000007302, 17.6400001144, -1.35000015274, 14.6000001587, -2.71999994248, 13.5000002593, 0.3199999246, 16.3100000688, -1.42999995843, 14.4200001325, -1.10000010207, 17.4800000344, -1.6699999775, 16.130000053, -1.30000016391, 15.79000011, -0.98999997139, 15.3500001222, -3.13999999076, 17.4500001401, -0.21000008896, 16.3200001906, -2.15999999508, 15.2600001709, -1.46999996632, 15.8700001906, 0.649999931455, 16.1600001404, 2.22044604925e-16, 15.2000001252, -0.249999957532, 16.5300001149, -1.38999987304, 16.2500001878, -0.790000140518, 16.1000001512, -1.31000006959, 14.2500002459, -2.30999999434, 14.3900002165, 0.199999940395, 16.6300002423, -1.73999998033, 16.1600001054, -1.12000011533, 15.8700001645, -0.419999969304, 15.7800002021, -1.01000007257, 14.6300002229, -0.48000007093, 14.5300001402, -1.98999997884, 17.5200002033, 0.329999930859, 15.9900002694, -1.18000005677, 15.1500001706, -1.42000012353, 15.2600002015, 0.959999923557, 15.2000001252, 0.249999957532, 15.7600002298, -2.22044604925e-16,
+
+L3_cHER2K_A_kn
+0.20000000298, 0.600000023842, 0.800000011921, 0.5, 0.600000023842, 0.800000011921, 0.5, 0.20000000298, 0.800000011921, 0.699999988079, 0.300000011921, 0.40000000596, 0.600000023842, 0.20000000298, 0.5, 0.10000000149, 0.10000000149, 0.600000023842, 0.600000023842, 0.899999976158, 0.699999988079, 0.899999976158, 0.800000011921, 0.600000023842, 0.800000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.899999976158, 0.40000000596, 0.899999976158, 0.699999988079, 0.800000011921, 0.600000023842, 0.20000000298, 0.5, 0.40000000596, 0.5, 0.20000000298, 0.5, 0.5, 0.5, 0.600000023842, 0.20000000298, 0.5, 0.800000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.699999988079, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.5, 0.899999976158, 0.5, 0.699999988079, 0.899999976158, 0.5, 0.800000011921, 0.40000000596, 0.300000011921, 0.40000000596, 0.40000000596, 0.40000000596, 0.899999976158, 0.40000000596, 0.600000023842, 0.699999988079, 0.300000011921, 0.40000000596, 0.699999988079, 0.300000011921, 0.10000000149, 0.300000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.899999976158, 0.300000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.40000000596, 0.600000023842, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.600000023842, 0.600000023842, 0.10000000149, 0.20000000298, 0.20000000298, 0.800000011921, 0.40000000596, 0.699999988079, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.699999988079, 0.20000000298, 0.899999976158, 0.40000000596, 0.10000000149, 0.800000011921, 0.40000000596, 0.20000000298, 0.300000011921, 0.899999976158, 0.300000011921, 0.40000000596, 0.40000000596, 0.600000023842, 0.600000023842, 0.899999976158, 0.600000023842, 0.300000011921, 0.5, 0.600000023842, 0.20000000298, 0.5, 0.699999988079, 0.40000000596, 0.10000000149, 0.40000000596, 0.699999988079, 0.899999976158, 0.40000000596, 0.600000023842, 0.40000000596, 0.40000000596, 0.10000000149, 0.300000011921, 0.899999976158, 0.899999976158, 0.40000000596, 0.10000000149, 0.10000000149, 0.40000000596, 0.10000000149, 0.699999988079, 0.40000000596, 0.899999976158, 0.800000011921, 0.10000000149, 0.5, 0.800000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.10000000149, 0.800000011921, 0.800000011921, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.699999988079, 0.5, 0.800000011921, 0.899999976158, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.699999988079, 0.5, 0.20000000298, 0.899999976158, 0.10000000149, 0.10000000149, 0.40000000596, 0.300000011921, 0.899999976158, 0.600000023842, 0.600000023842, 0.800000011921, 0.10000000149, 0.600000023842, 0.20000000298, 0.5, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.20000000298, 0.300000011921, 0.40000000596, 0.300000011921, 0.10000000149, 0.5, 0.899999976158, 0.300000011921, 0.300000011921, 0.40000000596, 0.5, 0.899999976158, 0.20000000298, 0.40000000596, 0.699999988079, 0.699999988079, 0.699999988079, 0.20000000298, 0.40000000596, 0.40000000596, 0.899999976158, 0.20000000298, 0.40000000596, 0.10000000149, 0.699999988079, 0.40000000596, 0.800000011921, 0.20000000298, 0.300000011921, 0.699999988079, 0.20000000298, 0.300000011921, 0.699999988079, 0.20000000298, 0.5, 0.699999988079, 0.800000011921, 0.40000000596, 0.5, 0.10000000149, 0.800000011921, 0.899999976158, 0.800000011921, 0.10000000149, 0.5, 0.20000000298, 0.699999988079, 0.10000000149, 0.899999976158, 0.800000011921, 0.899999976158, 0.10000000149, 0.10000000149, 0.300000011921, 0.40000000596, 0.699999988079, 0.899999976158, 0.600000023842, 0.300000011921, 0.40000000596, 0.800000011921, 0.5, 0.5, 0.10000000149, 0.800000011921, 0.10000000149, 0.10000000149, 0.10000000149, 0.10000000149, 0.20000000298, 0.10000000149, 0.899999976158, 0.600000023842, 0.10000000149, 0.899999976158, 0.600000023842, 0.800000011921, 0.40000000596, 0.10000000149, 0.5, 0.20000000298, 0.40000000596, 0.699999988079, 0.300000011921, 0.899999976158, 0.40000000596, 0.899999976158, 0.800000011921, 0.20000000298, 0.5, 0.20000000298, 0.40000000596, 0.300000011921, 0.5, 0.5, 0.300000011921, 0.5, 0.5, 0.600000023842, 0.5, 0.699999988079, 0.10000000149, 0.899999976158, 0.800000011921, 0.800000011921, 0.5, 0.800000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.40000000596, 0.20000000298, 0.699999988079, 0.899999976158, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.300000011921, 0.5, 0.5, 0.699999988079, 0.699999988079, 0.20000000298, 0.40000000596, 0.40000000596, 0.600000023842, 0.899999976158, 0.600000023842, 0.899999976158, 0.699999988079, 0.40000000596, 0.800000011921, 0.600000023842, 0.600000023842, 0.600000023842, 0.20000000298, 0.40000000596, 0.899999976158, 0.899999976158, 0.40000000596, 0.40000000596, 0.40000000596, 0.20000000298, 0.899999976158, 0.699999988079, 0.300000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.600000023842, 0.40000000596, 0.40000000596, 0.699999988079, 0.600000023842, 0.899999976158, 0.10000000149, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.699999988079, 0.699999988079, 0.10000000149, 0.699999988079, 0.600000023842, 0.600000023842, 0.300000011921, 0.5, 0.699999988079, 0.800000011921, 0.800000011921, 0.699999988079, 0.800000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.300000011921, 0.899999976158, 0.300000011921, 0.800000011921, 0.20000000298, 0.40000000596, 0.899999976158, 0.40000000596, 0.20000000298, 0.10000000149, 0.699999988079, 0.600000023842, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.899999976158, 0.10000000149, 0.10000000149, 0.40000000596, 0.40000000596, 0.5, 0.20000000298, 0.10000000149, 0.40000000596, 0.10000000149, 0.5, 0.600000023842, 0.20000000298, 0.5, 0.20000000298, 0.699999988079, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.600000023842, 0.10000000149, 0.899999976158, 0.10000000149, 0.10000000149, 0.300000011921, 0.699999988079, 0.699999988079, 0.300000011921, 0.5, 0.800000011921, 0.300000011921, 0.5, 0.5, 0.699999988079, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.800000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.5, 0.40000000596, 0.10000000149, 0.800000011921, 0.800000011921, 0.10000000149, 0.600000023842, 0.699999988079, 0.899999976158, 0.20000000298, 0.10000000149, 0.5, 0.899999976158, 0.20000000298, 0.300000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.5, 0.899999976158, 0.20000000298, 0.800000011921, 0.20000000298, 0.600000023842, 0.300000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.800000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.699999988079, 0.300000011921, 0.800000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.20000000298, 0.600000023842, 0.10000000149, 0.300000011921, 0.899999976158, 0.800000011921, 0.5, 0.20000000298, 0.300000011921, 0.5, 0.800000011921, 0.899999976158, 0.300000011921, 0.899999976158, 0.800000011921, 0.5, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.899999976158, 0.300000011921, 0.800000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.300000011921, 0.699999988079, 0.699999988079, 0.899999976158, 0.20000000298, 0.20000000298, 0.5, 0.800000011921, 0.40000000596, 0.20000000298, 0.20000000298, 0.5, 0.899999976158, 0.600000023842, 0.800000011921, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.20000000298, 0.5, 0.5, 0.699999988079, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.5, 0.10000000149, 0.5, 0.300000011921, 0.20000000298, 0.800000011921, 0.800000011921, 0.899999976158, 0.600000023842, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.40000000596,
+
+L3_cHER2K_B_kn
+0.800000011921, 0.5, 0.10000000149, 0.5, 0.300000011921, 0.600000023842, 0.899999976158, 0.20000000298, 0.300000011921, 0.20000000298, 0.600000023842, 0.699999988079, 0.699999988079, 0.300000011921, 0.800000011921, 0.699999988079, 0.10000000149, 0.899999976158, 0.699999988079, 0.800000011921, 0.20000000298, 0.899999976158, 0.10000000149, 0.699999988079, 0.600000023842, 0.40000000596, 0.20000000298, 0.600000023842, 0.10000000149, 0.5, 0.20000000298, 0.10000000149, 0.300000011921, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.5, 0.300000011921, 0.600000023842, 0.899999976158, 0.800000011921, 0.699999988079, 0.40000000596, 0.699999988079, 0.600000023842, 0.699999988079, 0.600000023842, 0.20000000298, 0.5, 0.800000011921, 0.40000000596, 0.5, 0.899999976158, 0.10000000149, 0.300000011921, 0.699999988079, 0.10000000149, 0.20000000298, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.800000011921, 0.699999988079, 0.20000000298, 0.600000023842, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.10000000149, 0.899999976158, 0.40000000596, 0.800000011921, 0.899999976158, 0.5, 0.800000011921, 0.600000023842, 0.5, 0.40000000596, 0.800000011921, 0.20000000298, 0.800000011921, 0.20000000298, 0.800000011921, 0.899999976158, 0.5, 0.5, 0.600000023842, 0.20000000298, 0.600000023842, 0.899999976158, 0.899999976158, 0.5, 0.899999976158, 0.20000000298, 0.699999988079, 0.10000000149, 0.800000011921, 0.10000000149, 0.600000023842, 0.5, 0.899999976158, 0.899999976158, 0.10000000149, 0.600000023842, 0.699999988079, 0.800000011921, 0.800000011921, 0.20000000298, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.800000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.899999976158, 0.699999988079, 0.10000000149, 0.5, 0.600000023842, 0.300000011921, 0.20000000298, 0.20000000298, 0.40000000596, 0.10000000149, 0.5, 0.20000000298, 0.600000023842, 0.20000000298, 0.600000023842, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.10000000149, 0.899999976158, 0.10000000149, 0.600000023842, 0.5, 0.40000000596, 0.899999976158, 0.300000011921, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.600000023842, 0.20000000298, 0.800000011921, 0.699999988079, 0.600000023842, 0.300000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.20000000298, 0.5, 0.20000000298, 0.5, 0.20000000298, 0.20000000298, 0.800000011921, 0.800000011921, 0.10000000149, 0.40000000596, 0.5, 0.20000000298, 0.5, 0.20000000298, 0.5, 0.800000011921, 0.600000023842, 0.40000000596, 0.699999988079, 0.600000023842, 0.300000011921, 0.5, 0.899999976158, 0.699999988079, 0.300000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.699999988079, 0.800000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.800000011921, 0.20000000298, 0.20000000298, 0.300000011921, 0.5, 0.600000023842, 0.600000023842, 0.5, 0.600000023842, 0.899999976158, 0.20000000298, 0.800000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.600000023842, 0.10000000149, 0.40000000596, 0.600000023842, 0.800000011921, 0.899999976158, 0.20000000298, 0.10000000149, 0.600000023842, 0.20000000298, 0.699999988079, 0.5, 0.5, 0.800000011921, 0.699999988079, 0.5, 0.600000023842, 0.300000011921, 0.10000000149, 0.800000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.899999976158, 0.800000011921, 0.20000000298, 0.20000000298, 0.20000000298, 0.5, 0.10000000149, 0.800000011921, 0.899999976158, 0.5, 0.600000023842, 0.600000023842, 0.699999988079, 0.10000000149, 0.600000023842, 0.699999988079, 0.800000011921, 0.300000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.600000023842, 0.699999988079, 0.300000011921, 0.300000011921, 0.300000011921, 0.899999976158, 0.300000011921, 0.5, 0.699999988079, 0.300000011921, 0.699999988079, 0.5, 0.699999988079, 0.800000011921, 0.10000000149, 0.899999976158, 0.800000011921, 0.300000011921, 0.20000000298, 0.699999988079, 0.600000023842, 0.600000023842, 0.40000000596, 0.300000011921, 0.800000011921, 0.899999976158, 0.899999976158, 0.800000011921, 0.300000011921, 0.800000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.5, 0.40000000596, 0.10000000149, 0.40000000596, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.600000023842, 0.600000023842, 0.800000011921, 0.20000000298, 0.899999976158, 0.899999976158, 0.800000011921, 0.899999976158, 0.20000000298, 0.600000023842, 0.800000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.10000000149, 0.10000000149, 0.40000000596, 0.600000023842, 0.10000000149, 0.600000023842, 0.40000000596, 0.20000000298, 0.40000000596, 0.10000000149, 0.20000000298, 0.800000011921, 0.800000011921, 0.899999976158, 0.40000000596, 0.800000011921, 0.5, 0.20000000298, 0.20000000298, 0.699999988079, 0.5, 0.600000023842, 0.40000000596, 0.600000023842, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.20000000298, 0.800000011921, 0.800000011921, 0.40000000596, 0.10000000149, 0.600000023842, 0.699999988079, 0.40000000596, 0.600000023842, 0.300000011921, 0.300000011921, 0.899999976158, 0.699999988079, 0.20000000298, 0.20000000298, 0.800000011921, 0.600000023842, 0.699999988079, 0.5, 0.10000000149, 0.300000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.300000011921, 0.5, 0.300000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.20000000298, 0.300000011921, 0.800000011921, 0.800000011921, 0.600000023842, 0.5, 0.699999988079, 0.600000023842, 0.899999976158, 0.899999976158, 0.600000023842, 0.800000011921, 0.699999988079, 0.40000000596, 0.600000023842, 0.300000011921, 0.10000000149, 0.600000023842, 0.300000011921, 0.300000011921, 0.40000000596, 0.300000011921, 0.600000023842, 0.20000000298, 0.10000000149, 0.10000000149, 0.899999976158, 0.300000011921, 0.10000000149, 0.600000023842, 0.699999988079, 0.300000011921, 0.300000011921, 0.5, 0.10000000149, 0.699999988079, 0.40000000596, 0.600000023842, 0.800000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149, 0.699999988079, 0.600000023842, 0.600000023842, 0.5, 0.5, 0.699999988079, 0.5, 0.800000011921, 0.699999988079, 0.5, 0.699999988079, 0.10000000149, 0.40000000596, 0.40000000596, 0.40000000596, 0.20000000298, 0.600000023842, 0.699999988079, 0.5, 0.5, 0.20000000298, 0.600000023842, 0.300000011921, 0.800000011921, 0.699999988079, 0.600000023842, 0.600000023842, 0.800000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.600000023842, 0.600000023842, 0.800000011921, 0.600000023842, 0.10000000149, 0.899999976158, 0.300000011921, 0.800000011921, 0.10000000149, 0.10000000149, 0.10000000149, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.600000023842, 0.600000023842, 0.699999988079, 0.10000000149, 0.899999976158, 0.5, 0.20000000298, 0.699999988079, 0.699999988079, 0.10000000149, 0.40000000596, 0.899999976158, 0.300000011921, 0.10000000149, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.699999988079, 0.5, 0.20000000298, 0.20000000298, 0.899999976158, 0.20000000298, 0.20000000298, 0.5, 0.899999976158, 0.20000000298, 0.20000000298, 0.899999976158, 0.800000011921, 0.10000000149, 0.699999988079, 0.699999988079, 0.5, 0.699999988079, 0.600000023842, 0.20000000298, 0.800000011921, 0.10000000149, 0.600000023842, 0.300000011921, 0.10000000149, 0.899999976158, 0.800000011921, 0.899999976158, 0.699999988079, 0.40000000596, 0.10000000149, 0.300000011921, 0.10000000149, 0.300000011921, 0.5, 0.800000011921, 0.10000000149, 0.5, 0.10000000149, 0.40000000596, 0.699999988079, 0.40000000596, 0.699999988079, 0.300000011921, 0.600000023842, 0.800000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.800000011921, 0.899999976158,
+
+L3_cHER2K_o_H
+15.859999966, -5.55111512313e-16, 17.8500001632, 1.51999998197, 18.5300001, 1.91999987021, 16.4000000961, 0.510000042766, 16.0600000666, -2.25000000373, 16.7900001815, 1.56000006512, 16.8700002226, 1.97999996588, 16.9800000806, -2.21999998346, 14.8100001702, -1.24999989867, 18.5500001647, 2.48999998704, 15.9700000982, 3.18999999374, 15.0500002749, 1.75999997348, 16.1900002068, 1.30999995336, 17.5400001889, 0.110000080019, 16.0200000677, 1.52000006095, 17.610000042, 1.73999997959, 16.5500001557, 0.409999994338, 17.8500001632, -1.51999998197, 15.200000225, -6.66133814775e-16, 17.5800001186, 1.29999991804, 17.3500001654, -0.819999829978, 14.9700002174, -1.97000008926, 17.8000001989, 0.700000106543, 16.800000266, 0.470000004321, 18.3000000894, -1.96999984339, 13.5900002173, -0.969999910444, 18.9800002512, 1.03000004411, 15.7300000583, 0.64000004366, 15.6400002508, 1.25000000596, 14.8700002539, -0.4799998869, 18.0800001626, 0.340000028759, 14.5700001481, -0.469999976754, 17.4600001687, -0.160000004023, 16.4600002402, -2.60999979541, 18.5300001, -1.91999987021, 17.5800001186, -1.29999991804, 19.1600002104, 8.881784197e-16, 17.380000217, -1.45999976933, 16.4900001755, -2.0999999918, 18.0400001383, 0.25000019148, 18.0200002457, 0.620000099689, 17.4800001998, -2.729999796, 15.8500001676, -1.10999983266, 19.2500002876, 0.270000271797, 17.9500000998, 1.43000007465, 15.9700003172, 0.100000120699, 16.9200003143, -0.589999916255, 20.4300002296, -0.409999785721, 15.4200000893, 1.49999998435, 19.090000145, -0.47999988094, 17.7000002339, -2.479999796, 16.4000000961, -0.510000042766, 17.3500001654, 0.819999829978, 17.380000217, 1.45999976933, 16.9200001109, -5.55111512313e-17, 15.580000132, -0.980000166297, 17.8900001763, 1.77999991074, 17.070000166, 1.8499999404, 17.6900000183, -1.49999996498, 14.1200001809, 1.04999990612, 17.6600002909, 2.44999989197, 16.5600000547, 4.01999978378, 14.9600002193, 2.55999986768, 15.180000246, 1.17999992266, 16.9900002329, 0.989999990761, 14.6500001848, 1.29999990687, 17.2000002585, 0.139999867827, 17.2100001195, -0.349999937415, 16.0600000666, 2.25000000373, 14.9700002174, 1.97000008926, 16.4900001755, 2.0999999918, 15.580000132, 0.980000166297, 13.4600002134, -6.66133814775e-16, 16.8200001429, 3.33000012085, 15.8500002503, 2.80000004992, 17.0600000562, 0.770000109375, 12.5100002104, 1.01000003904, 17.8700002174, 3.84000012934, 14.5000000693, 3.75999998465, 13.2800002475, 4.22000001922, 14.350000257, 1.41999999389, 16.9900002858, 2.76000007108, 13.3000001416, 2.38000001207, 16.6600002253, 2.30000008419, 15.5100000837, 1.50000014529, 16.7900001815, -1.56000006512, 17.8000001989, -0.700000106543, 18.0400001383, -0.25000019148, 17.8900001763, -1.77999991074, 16.8200001429, -3.33000012085, 16.6800002602, 4.4408920985e-16, 17.7300002944, 0.489999949038, 18.6200001317, -2.20000006109, 15.100000196, -1.20999995634, 19.1200002353, 0.919999985695, 16.5500000782, 1.46999992609, 15.8800002669, 0.809999952614, 17.3900001815, 0.089999987781, 19.2000002086, -1.38999996692, 15.2100001307, 0.819999958873, 17.8300001685, -2.30999999061, 16.980000249, -1.5600000219, 16.8700002226, -1.97999996588, 16.800000266, -0.470000004321, 18.0200002457, -0.620000099689, 17.070000166, -1.8499999404, 15.8500002503, -2.80000004992, 17.7300002944, -0.489999949038, 17.6000003487, 4.4408920985e-16, 18.4900001748, -2.31999989405, 14.8100002372, -0.959999985397, 18.9600003318, 0.60000006333, 16.5800001894, 2.62999990925, 15.5600003102, 0.910000057667, 16.4000002958, 0.139999992996, 18.7500002705, 0.070000037849, 15.4200001466, 1.23999991998, 19.6800001723, 0.0599999846518, 17.4100002462, -1.23999992147, 16.9800000806, 2.21999998346, 18.3000000894, 1.96999984339, 17.4800001998, 2.729999796, 17.6900000183, 1.49999996498, 17.0600000562, -0.770000109375, 18.6200001317, 2.20000006109, 18.4900001748, 2.31999989405, 16.9200000438, 5.55111512313e-16, 14.0200001496, 0.969999976009, 18.9700001474, 4.84999995083, 17.4500001125, 5.56999986202, 15.7600002193, 3.82999999866, 16.2700001884, 1.7899999699, 18.5600001106, 4.19999999255, 14.3800001097, 2.45999992803, 19.2600000964, 1.78999991179, 17.3900002106, 1.03000002697, 14.8100001702, 1.24999989867, 13.5900002173, 0.969999910444, 15.8500001676, 1.10999983266, 14.1200001809, -1.04999990612, 12.5100002104, -1.01000003904, 15.100000196, 1.20999995634, 14.8100002372, 0.959999985397, 14.0200001496, -0.969999976009, 12.6600002044, -4.4408920985e-16, 16.7100001724, 2.42999994949, 14.2800001104, 3.22999992639, 13.2100002469, 1.72000000432, 13.550000225, 0.789999952763, 15.6000003055, 1.79000000268, 12.8700001645, 2.18999997213, 15.1400002038, 0.580000056028, 15.5500001729, 0.420000021458, 18.5500001647, -2.48999998704, 18.9800002512, -1.03000004411, 19.2500002876, -0.270000271797, 17.6600002909, -2.44999989197, 17.8700002174, -3.84000012934, 19.1200002353, -0.919999985695, 18.9600003318, -0.60000006333, 18.9700001474, -4.84999995083, 16.7100001724, -2.42999994949, 20.8600003326, 1.22124532709e-15, 18.9200000393, 1.76999993727, 18.3700002867, 1.07000003189, 17.1700002919, -1.37000004157, 20.5400002672, -0.450000008196, 16.150000117, 0.399999909103, 18.9900001748, -1.1300000605, 18.2800002527, -2.08999992818, 15.9700000982, -3.18999999374, 15.7300000583, -0.64000004366, 17.9500000998, -1.43000007465, 16.5600000547, -4.01999978378, 14.5000000693, -3.75999998465, 16.5500000782, -1.46999992609, 16.5800001894, -2.62999990925, 17.4500001125, -5.56999986202, 14.2800001104, -3.22999992639, 18.9200000393, -1.76999993727, 16.4400000206, -2.22044604925e-16, 15.3500002496, -1.20999992579, 15.7200001571, -2.02999998674, 18.2600000942, -1.56999985009, 14.6000001311, -0.410000036061, 17.0500001088, -3.27999988765, 15.7000002146, -2.85999994516, 15.0500002749, -1.75999997348, 15.6400002508, -1.25000000596, 15.9700003172, -0.100000120699, 14.9600002193, -2.55999986768, 13.2800002475, -4.22000001922, 15.8800002669, -0.809999952614, 15.5600003102, -0.910000057667, 15.7600002193, -3.82999999866, 13.2100002469, -1.72000000432, 18.3700002867, -1.07000003189, 15.3500002496, 1.20999992579, 13.3600003415, 4.4408920985e-16, 15.5900003238, -0.740000070482, 16.2300003354, -1.44999987185, 13.1600002357, 0.509999969006, 16.1100002395, -1.86000002936, 15.5900003253, -1.20999999359, 16.1900002068, -1.30999995336, 14.8700002539, 0.4799998869, 16.9200003143, 0.589999916255, 15.180000246, -1.17999992266, 14.350000257, -1.41999999389, 17.3900001815, -0.089999987781, 16.4000002958, -0.139999992996, 16.2700001884, -1.7899999699, 13.550000225, -0.789999952763, 17.1700002919, 1.37000004157, 15.7200001571, 2.02999998674, 15.5900003238, 0.740000070482, 14.340000326, -4.4408920985e-16, 18.1500001892, 2.36000006065, 13.9700002539, 2.08999995574, 17.3200002353, -0.0600000487268, 15.8200002651, -0.21999991864, 17.5400001889, -0.110000080019, 18.0800001626, -0.340000028759, 20.4300002296, 0.409999785721, 16.9900002329, -0.989999990761, 16.9900002858, -2.76000007108, 19.2000002086, 1.38999996692, 18.7500002705, -0.070000037849, 18.5600001106, -4.19999999255, 15.6000003055, -1.79000000268, 20.5400002672, 0.450000008196, 18.2600000942, 1.56999985009, 16.2300003354, 1.44999987185, 18.1500001892, -2.36000006065, 17.8400002933, 0.0, 16.8000001617, 1.41999987096, 18.8500002451, -1.4100000003, 18.3500001989, -1.07000002071, 16.0200000677, -1.52000006095, 14.5700001481, 0.469999976754, 15.4200000893, -1.49999998435, 14.6500001848, -1.29999990687, 13.3000001416, -2.38000001207, 15.2100001307, -0.819999958873, 15.4200001466, -1.23999991998, 14.3800001097, -2.45999992803, 12.8700001645, -2.18999997213, 16.150000117, -0.399999909103, 14.6000001311, 0.410000036061, 13.1600002357, -0.509999969006, 13.9700002539, -2.08999995574, 16.8000001617, -1.41999987096, 12.6800001454, 4.4408920985e-16, 15.5700001809, -1.70999992356, 14.1200001392, -1.79999990985, 17.610000042, -1.73999997959, 17.4600001687, 0.160000004023, 19.090000145, 0.47999988094, 17.2000002585, -0.139999867827, 16.6600002253, -2.30000008419, 17.8300001685, 2.30999999061, 19.6800001723, -0.0599999846518, 19.2600000964, -1.78999991179, 15.1400002038, -0.580000056028, 18.9900001748, 1.1300000605, 17.0500001088, 3.27999988765, 16.1100002395, 1.86000002936, 17.3200002353, 0.0600000487268, 18.8500002451, 1.4100000003, 15.5700001809, 1.70999992356, 19.5400002366, 1.33226762955e-15, 17.0800002043, -1.17999990031, 16.5500001557, -0.409999994338, 16.4600002402, 2.60999979541, 17.7000002339, 2.479999796, 17.2100001195, 0.349999937415, 15.5100000837, -1.50000014529, 16.980000249, 1.5600000219, 17.4100002462, 1.23999992147, 17.3900002106, -1.03000002697, 15.5500001729, -0.420000021458, 18.2800002527, 2.08999992818, 15.7000002146, 2.85999994516, 15.5900003253, 1.20999999359, 15.8200002651, 0.21999991864, 18.3500001989, 1.07000002071, 14.1200001392, 1.79999990985, 17.0800002043, 1.17999990031, 16.0200002554, 8.881784197e-16,
+
+L3_zHER2K_A_nk
+0.1, 0.6, 0.1, 0.8, 0.8, 0.1, 0.9, 0.2, 0.1, 0.2, 0.4, 0.7, 0.6, 0.5, 0.6, 0.5, 0.6, 0.4, 0.3, 0.1, 0.1, 0.7, 0.4, 0.5, 0.7, 0.7, 0.6, 0.5, 0.5, 0.3, 0.7, 0.3, 0.8, 0.7, 0.8, 0.8, 0.3, 0.2, 0.8, 0.5, 0.5, 0.1, 0.5, 0.9, 0.2, 0.8, 0.2, 0.4, 0.7, 0.5, 0.8, 0.5, 0.3, 0.4, 0.7, 0.2, 0.4, 0.3, 0.6, 0.5, 0.3, 0.8, 0.1, 0.1, 0.3, 0.9, 0.3, 0.4, 0.1, 0.8, 0.2, 0.5, 0.2, 0.3, 0.1, 0.8, 0.4, 0.2, 0.8, 0.8, 0.8, 0.1, 0.6, 0.4, 0.6, 0.5, 0.1, 0.1, 0.3, 0.8, 0.7, 0.9, 0.9, 0.6, 0.9, 0.5, 0.7, 0.3, 0.7, 0.8, 0.7, 0.3, 0.1, 0.8, 0.7, 0.2, 0.9, 0.5, 0.5, 0.3, 0.1, 0.8, 0.2, 0.6, 0.3, 0.7, 0.2, 0.5, 0.1, 0.7, 0.9, 0.3, 0.1, 0.9, 0.4, 0.7, 0.9, 0.9, 0.5, 0.7, 0.6, 0.2, 0.1, 0.2, 0.4, 0.8, 0.2, 0.7, 0.3, 0.5, 0.6, 0.8, 0.2, 0.6, 0.7, 0.2, 0.1, 0.4, 0.5, 0.7, 0.2, 0.1, 0.8, 0.1, 0.3, 0.5, 0.5, 0.2, 0.7, 0.5, 0.1, 0.5, 0.4, 0.9, 0.1, 0.5, 0.3, 0.4, 0.3, 0.9, 0.8, 0.5, 0.7, 0.4, 0.2, 0.3, 0.4, 0.9, 0.7, 0.8, 0.3, 0.7, 0.8, 0.8, 0.1, 0.9, 0.1, 0.4, 0.8, 0.2, 0.8, 0.6, 0.4, 0.8, 0.5, 0.1, 0.3, 0.7, 0.3, 0.4, 0.4, 0.2, 0.3, 0.6, 0.2, 0.4, 0.9, 0.6, 0.6, 0.4, 0.3, 0.7, 0.3, 0.6, 0.7, 0.6, 0.1, 0.4, 0.1, 0.9, 0.3, 0.2, 0.3, 0.3, 0.2, 0.4, 0.7, 0.2, 0.2, 0.9, 0.8, 0.7, 0.1, 0.6, 0.7, 0.7, 0.1, 0.7, 0.7, 0.4, 0.3, 0.3, 0.8, 0.5, 0.7, 0.4, 0.4, 0.7, 0.8, 0.4, 0.2, 0.5, 0.9, 0.8, 0.6, 0.8, 0.9, 0.1, 0.5, 0.2, 0.7, 0.7, 0.1, 0.3, 0.7, 0.2, 0.8, 0.3, 0.8, 0.8, 0.5, 0.7, 0.6, 0.8, 0.5, 0.4, 0.5, 0.2, 0.4, 0.3, 0.1, 0.3, 0.7, 0.2, 0.2, 0.6, 0.6, 0.3, 0.4, 0.2, 0.8, 0.3, 0.2, 0.3, 0.3, 0.8, 0.6, 0.3, 0.9, 0.4, 0.3, 0.9, 0.6, 0.7, 0.4, 0.9, 0.2, 0.2, 0.4, 0.5, 0.2, 0.3, 0.9, 0.7, 0.2, 0.7, 0.5, 0.5, 0.6, 0.6, 0.3, 0.7, 0.4, 0.1, 0.9, 0.1, 0.9, 0.7, 0.9, 0.2, 0.1, 0.3, 0.4, 0.7, 0.9, 0.1, 0.5, 0.1, 0.3, 0.4, 0.9, 0.2, 0.4, 0.7, 0.5, 0.9, 0.3, 0.1, 0.6, 0.2, 0.9, 0.3, 0.8, 0.9, 0.7, 0.2, 0.7, 0.7, 0.8, 0.6, 0.8, 0.1, 0.2, 0.6, 0.4, 0.2, 0.7, 0.6, 0.3, 0.7, 0.9, 0.6, 0.6, 0.9, 0.4, 0.5, 0.6, 0.3, 0.1, 0.7, 0.5, 0.3, 0.3, 0.3, 0.7, 0.5, 0.4, 0.4, 0.7, 0.7, 0.3, 0.1, 0.2, 0.1, 0.4, 0.7, 0.5, 0.8, 0.7, 0.5, 0.6, 0.5, 0.8, 0.5, 0.9, 0.7, 0.6, 0.1, 0.3, 0.7, 0.4, 0.9, 0.8, 0.5, 0.7, 0.6, 0.8, 0.3, 0.9, 0.1, 0.5, 0.3, 0.2, 0.7, 0.5, 0.7, 0.6, 0.4, 0.6, 0.5, 0.7, 0.4, 0.9, 0.4, 0.8, 0.5, 0.3, 0.4, 0.7, 0.2, 0.1, 0.6, 0.4, 0.8, 0.8, 0.7, 0.8, 0.6, 0.5, 0.2, 0.9, 0.9, 0.4, 0.7, 0.5, 0.3, 0.4, 0.5, 0.8, 0.2, 0.3, 0.1, 0.6, 0.5, 0.1, 0.9, 0.6, 0.8, 0.6, 0.4, 0.2, 0.5, 0.4, 0.1, 0.6, 0.4, 0.5, 0.8, 0.5, 0.3, 0.7, 0.4, 0.3, 0.8, 0.2, 0.5, 0.6, 0.4, 0.9, 0.2, 0.6, 0.6, 0.2, 0.3, 0.3, 0.9, 0.4, 0.4, 0.2, 0.1, 0.7, 0.1, 0.8, 0.6, 0.6, 0.4, 0.9, 0.7, 0.8, 0.5, 0.7, 0.1, 0.3, 0.4, 0.4, 0.7, 0.9, 0.6, 0.4, 0.3, 0.4, 0.1, 0.8, 0.1, 0.8, 0.8, 0.7, 0.7, 0.1, 0.6, 0.4, 0.8, 0.2, 0.8, 0.9, 0.9, 0.6, 0.9, 0.6, 0.3, 0.6, 0.9, 0.1, 0.5,
+
+L3_zHER2K_B_nk
+0.1, 0.1, 0.2, 0.5, 0.9, 0.3, 0.7, 0.2, 0.1, 0.8, 0.1, 0.7, 0.1, 0.5, 0.9, 0.8, 0.7, 0.8, 0.5, 0.9, 0.6, 0.9, 0.8, 0.5, 0.8, 0.8, 0.3, 0.6, 0.6, 0.4, 0.9, 0.9, 0.7, 0.6, 0.9, 0.3, 0.6, 0.3, 0.5, 0.7, 0.9, 0.9, 0.2, 0.9, 0.6, 0.8, 0.6, 0.5, 0.7, 0.5, 0.2, 0.5, 0.1, 0.1, 0.2, 0.1, 0.1, 0.3, 0.7, 0.5, 0.4, 0.4, 0.1, 0.2, 0.3, 0.1, 0.2, 0.1, 0.1, 0.3, 0.8, 0.2, 0.5, 0.7, 0.9, 0.5, 0.4, 0.4, 0.9, 0.1, 0.1, 0.4, 0.4, 0.6, 0.9, 0.3, 0.7, 0.6, 0.2, 0.7, 0.4, 0.7, 0.7, 0.1, 0.9, 0.5, 0.6, 0.6, 0.4, 0.7, 0.1, 0.1, 0.1, 0.1, 0.9, 0.7, 0.8, 0.1, 0.3, 0.4, 0.1, 0.9, 0.2, 0.5, 0.2, 0.4, 0.1, 0.1, 0.4, 0.2, 0.6, 0.1, 0.7, 0.9, 0.9, 0.7, 0.6, 0.7, 0.4, 0.5, 0.8, 0.7, 0.4, 0.1, 0.1, 0.8, 0.2, 0.7, 0.5, 0.4, 0.1, 0.4, 0.3, 0.5, 0.5, 0.3, 0.7, 0.2, 0.7, 0.7, 0.1, 0.2, 0.8, 0.6, 0.3, 0.4, 0.8, 0.8, 0.3, 0.8, 0.9, 0.6, 0.4, 0.7, 0.7, 0.7, 0.7, 0.5, 0.4, 0.7, 0.1, 0.8, 0.3, 0.2, 0.6, 0.4, 0.7, 0.2, 0.7, 0.8, 0.7, 0.8, 0.6, 0.2, 0.8, 0.6, 0.3, 0.3, 0.9, 0.2, 0.4, 0.2, 0.8, 0.8, 0.4, 0.6, 0.3, 0.7, 0.2, 0.4, 0.5, 0.4, 0.4, 0.7, 0.5, 0.6, 0.2, 0.6, 0.3, 0.5, 0.2, 0.9, 0.8, 0.9, 0.4, 0.7, 0.6, 0.8, 0.7, 0.1, 0.7, 0.3, 0.8, 0.1, 0.1, 0.7, 0.2, 0.9, 0.5, 0.6, 0.1, 0.3, 0.1, 0.6, 0.9, 0.3, 0.9, 0.4, 0.5, 0.2, 0.3, 0.9, 0.4, 0.3, 0.1, 0.7, 0.4, 0.8, 0.9, 0.7, 0.3, 0.5, 0.9, 0.5, 0.3, 0.1, 0.7, 0.6, 0.6, 0.8, 0.7, 0.9, 0.8, 0.5, 0.4, 0.7, 0.7, 0.2, 0.1, 0.8, 0.9, 0.7, 0.1, 0.8, 0.9, 0.1, 0.7, 0.3, 0.3, 0.4, 0.6, 0.5, 0.4, 0.9, 0.5, 0.1, 0.8, 0.1, 0.9, 0.6, 0.9, 0.9, 0.3, 0.1, 0.1, 0.8, 0.3, 0.9, 0.1, 0.8, 0.9, 0.1, 0.5, 0.5, 0.6, 0.9, 0.7, 0.2, 0.3, 0.5, 0.1, 0.5, 0.9, 0.2, 0.5, 0.9, 0.4, 0.9, 0.3, 0.4, 0.5, 0.7, 0.2, 0.6, 0.7, 0.3, 0.9, 0.4, 0.7, 0.1, 0.3, 0.2, 0.2, 0.6, 0.8, 0.8, 0.7, 0.3, 0.3, 0.9, 0.5, 0.4, 0.1, 0.8, 0.1, 0.7, 0.6, 0.3, 0.5, 0.6, 0.3, 0.4, 0.8, 0.9, 0.2, 0.7, 0.9, 0.2, 0.8, 0.3, 0.2, 0.8, 0.5, 0.5, 0.8, 0.6, 0.2, 0.4, 0.2, 0.1, 0.6, 0.8, 0.3, 0.1, 0.4, 0.4, 0.2, 0.6, 0.2, 0.8, 0.3, 0.2, 0.2, 0.2, 0.5, 0.6, 0.8, 0.7, 0.1, 0.2, 0.1, 0.8, 0.2, 0.1, 0.6, 0.7, 0.8, 0.6, 0.2, 0.5, 0.6, 0.3, 0.8, 0.3, 0.2, 0.4, 0.5, 0.2, 0.4, 0.2, 0.2, 0.7, 0.7, 0.2, 0.9, 0.8, 0.4, 0.8, 0.2, 0.2, 0.1, 0.7, 0.8, 0.5, 0.3, 0.6, 0.9, 0.4, 0.5, 0.9, 0.3, 0.8, 0.8, 0.3, 0.8, 0.5, 0.7, 0.1, 0.4, 0.5, 0.3, 0.2, 0.5, 0.9, 0.4, 0.2, 0.8, 0.9, 0.8, 0.8, 0.9, 0.2, 0.4, 0.9, 0.3, 0.6, 0.8, 0.9, 0.3, 0.5, 0.7, 0.4, 0.8, 0.3, 0.2, 0.1, 0.6, 0.9, 0.2, 0.2, 0.6, 0.7, 0.6, 0.3, 0.2, 0.6, 0.7, 0.8, 0.4, 0.1, 0.9, 0.2, 0.6, 0.4, 0.1, 0.4, 0.2, 0.7, 0.6, 0.3, 0.6, 0.2, 0.6, 0.5, 0.8, 0.6, 0.8, 0.4, 0.4, 0.7, 0.6, 0.6, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.4, 0.6, 0.8, 0.4, 0.9, 0.5, 0.9, 0.2, 0.3, 0.3, 0.6, 0.1, 0.4, 0.4, 0.8, 0.9, 0.2, 0.8, 0.9, 0.2, 0.5, 0.3, 0.9, 0.5, 0.4, 0.6, 0.2, 0.9, 0.3, 0.6, 0.2, 0.7, 0.3, 0.6, 0.9, 0.9,
+
+L3_zHER2K_C_nn
+0.4, 0.0, 0.7, 0.8, 0.5, 0.3, 0.8, 0.2, 0.8, 0.7, 0.2, 0.2, 0.3, 0.8, 0.7, 0.3, 0.6, 0.9, 0.8, 0.3, 0.7, 0.9, 0.1, 0.2, 0.1, 0.4, 0.3, 0.1, 0.3, 0.3, 0.4, 0.1, 0.8, 0.1, 0.7, -0.8, 0.1, 0.0, 0.1, 0.6, 0.6, 0.9, 0.4, 0.8, 0.5, 0.1, 0.2, 0.8, 0.6, 0.4, 0.6, 0.2, 0.4, 0.7, 0.8, 0.3, 0.2, 0.7, 0.2, 0.9, 0.3, 0.9, 0.4, 0.8, 0.5, 0.3, 0.8, 0.3, 0.5, -0.3, 0.1, -0.6, 0.4, 0.0, 0.9, 0.4, 0.3, 0.8, 0.5, 0.2, 0.5, 0.5, 0.4, 0.4, 0.8, 0.6, 0.4, 0.9, 0.6, 0.6, 0.1, 0.3, 0.9, 0.2, 0.3, 0.6, 0.1, 0.7, 0.7, 0.3, 0.2, 0.7, 0.8, -0.2, 0.6, -0.9, 0.9, -0.4, 0.2, 0.0, 0.6, 0.2, 0.7, 0.4, 0.8, 0.1, 0.8, 0.7, 0.2, 0.1, 0.9, 0.7, 0.4, 0.2, 0.4, 0.3, 0.5, 0.5, 0.4, 0.3, 0.3, 0.5, 0.2, 0.3, 0.4, 0.7, 0.8, -0.7, 0.4, -0.8, 0.3, -0.8, 0.6, -0.2, 0.6, 0.0, 0.2, 0.9, 0.6, 0.1, 0.7, 0.4, 0.7, 0.4, 0.3, 0.8, 0.3, 0.6, 0.1, 0.8, 0.1, 0.4, 0.9, 0.7, 0.2, 0.2, 0.1, 0.6, 0.7, 0.4, 0.2, -0.2, 0.5, -0.1, 0.5, -0.2, 0.7, -0.4, 0.2, -0.9, 0.1, 0.0, 0.3, 0.2, 0.7, 0.9, 0.9, 0.5, 0.3, 0.6, 0.2, 0.1, 0.1, 0.2, 0.4, 0.1, 0.5, 0.4, 0.2, 0.2, 0.6, 0.8, 0.2, 0.7, 0.3, -0.8, 0.2, -0.8, 0.5, -0.5, 0.8, -0.1, 0.6, -0.1, 0.3, -0.2, 0.5, 0.0, 0.4, 0.7, 0.6, 0.4, 0.9, 0.4, 0.7, 0.6, 0.2, 0.4, 0.4, 0.9, 0.3, 0.7, 0.1, 0.2, 0.1, 0.8, 0.3, 0.4, 0.7, -0.3, 0.6, -0.4, 0.4, -0.4, 0.8, -0.7, 0.7, -0.4, 0.7, -0.9, 0.4, -0.7, 0.6, 0.0, 0.2, 0.8, 0.2, 0.2, 0.2, 0.1, 0.1, 0.4, 0.2, 0.9, 0.8, 0.1, 0.9, 0.5, 0.6, 0.4, 0.1, 0.3, 0.6, -0.9, 0.6, -0.2, 0.8, -0.6, 0.2, -0.1, 0.7, -0.4, 0.9, -0.5, 0.6, -0.4, 0.2, -0.8, 0.1, 0.0, 0.5, 0.7, 0.2, 0.2, 0.1, 0.5, 0.8, 0.6, 0.6, 0.6, 0.5, 0.2, 0.5, 0.3, 0.2, 0.1, 0.8, -0.3, 0.4, -0.7, 0.4, -0.9, 0.9, -0.7, 0.3, -0.8, 0.3, -0.6, 0.9, -0.4, 0.2, -0.2, 0.5, -0.7, 0.8, 0.0, 0.9, 0.1, 0.1, 0.1, 0.5, 0.7, 0.9, 0.4, 0.5, 0.9, 0.6, 0.6, 0.4, 0.1, 0.7, -0.9, 0.8, -0.3, 0.6, -0.6, 0.4, -0.2, 0.3, -0.6, 0.2, -0.1, 0.7, -0.6, 0.2, -0.1, 0.2, -0.2, 0.9, -0.1, 0.8, 0.0, 0.8, 0.4, 0.2, 0.6, 0.4, 0.8, 0.1, 0.9, 0.1, 0.6, 0.9, 0.1, 0.1, -0.2, 0.2, -0.7, 0.1, -0.3, 0.4, -0.3, 0.1, -0.8, 0.1, -0.2, 0.2, -0.4, 0.1, -0.4, 0.1, -0.5, 0.1, -0.1, 0.8, -0.4, 0.2, 0.0, 0.5, 0.7, 0.5, 0.9, 0.2, 0.4, 0.2, 0.1, 0.3, 0.2, 0.1, -0.4, 0.2, -0.9, 0.9, -0.2, 0.5, -0.5, 0.1, -0.4, 0.4, -0.1, 0.4, -0.9, 0.2, -0.9, 0.8, -0.6, 0.5, -0.7, 0.2, -0.6, 0.5, -0.7, 0.6, 0.0, 0.9, 0.5, 0.2, 0.3, 0.3, 0.2, 0.3, 0.4, 0.3, -0.1, 0.3, -0.9, 0.3, -0.6, 0.4, -0.3, 0.9, -0.7, 0.5, -0.4, 0.3, -0.7, 0.8, -0.1, 0.6, -0.6, 0.9, -0.4, 0.4, -0.8, 0.5, -0.9, 0.9, -0.5, 0.4, 0.0, 0.4, 0.1, 0.3, 0.1, 0.3, 0.2, 0.3, -0.3, 0.4, -0.8, 0.1, -0.7, 0.3, -0.5, 0.2, -0.2, 0.2, -0.2, 0.1, -0.2, 0.9, -0.5, 0.5, -0.2, 0.5, -0.9, 0.1, -0.9, 0.2, -0.4, 0.2, -0.3, 0.4, -0.1, 0.2, 0.0, 0.5, 0.7, 0.6, 0.4, 0.4, -0.1, 0.5, -0.3, 0.7, -0.3, 0.2, -0.3, 0.1, -0.6, 0.6, -0.8, 0.1, -0.8, 0.6, -0.4, 0.5, -0.3, 0.6, -0.6, 0.1, -0.6, 0.2, -0.1, 0.3, -0.2, 0.3, -0.1, 0.5, -0.7, 0.9, 0.0, 0.6, 0.7, 0.8, -0.1, 0.8, -0.3, 0.2, -0.7, 0.4, -0.7, 0.7, -0.4, 0.2, -0.7, 0.3, -0.4, 0.1, -0.3, 0.2, -0.1, 0.4, -0.1, 0.9, -0.1, 0.3, -0.2, 0.3, -0.4, 0.3, -0.2, 0.6, -0.4, 0.6, -0.7, 0.7, 0.0,
+
+L3_zHER2K_o_N
+18.44, -1.99840144433e-15, 15.34, 1.79, 16.34, 1.52, 16.2, -0.34, 15.27, 1.29, 17.95, 0.27, 16.05, 0.21, 18.46, 0.28, 16.46, 2.3, 17.33, 0.38, 16.83, 2.79, 16.43, 0.54, 17.2, 1.65, 17.27, 1.25, 15.48, 1.04, 14.74, 2.46, 18.63, -0.7, 15.34, -1.79, 16.32, -5.55111512313e-16, 13.95, 0.64, 15.09, 0.43, 14.89, 0.06, 16.18, -1.01, 15.09, -1.01, 15.16, -0.88, 16.69, 1.5, 16.7, -0.41, 15.71, 1.36, 15.69, 0.49, 15.65, 1.44, 17.03, 2.03, 15.65, 0.43, 14.97, 1.73, 17.06, 0.82, 16.34, -1.52, 13.95, -0.64, 15.06, -4.4408920985e-16, 15.26, -1.89, 14.26, -0.88, 17.82, 0.33, 15.79, -0.76, 16.36, -1.3, 16.25, 2.89, 16.41, -0.7, 16.15, 1.35, 14.42, -0.2, 17.16, -0.48, 17.31, 0.15, 15.65, 1.26, 15.74, 1.32, 16.72, 0.25, 16.2, 0.34, 15.09, -0.43, 15.26, 1.89, 17.34, 1.11022302463e-16, 15.49, 0.26, 16.47, 0.37, 15.36, -0.06, 16.42, -0.1, 16.12, 3.67, 18.13, 0.98, 13.87, 2.64, 14.77, 0.8, 16.55, 2.06, 16.93, 2.59, 16.43, 2.03, 16.27, 3.33, 17.43, 1.51, 15.27, -1.29, 14.89, -0.06, 14.26, 0.88, 15.49, -0.26, 14.86, 4.4408920985e-16, 15.62, 0.8, 14.19, -0.33, 15.85, 0.33, 14.56, 2.53, 16.26, 1.11, 13.31, 3.68, 14.13, 2.13, 15.6, 0.81, 17.18, 2.88, 14.94, 1.71, 14.07, 3.75, 16.08, 0.02, 17.95, -0.27, 16.18, 1.01, 17.82, -0.33, 16.47, -0.37, 15.62, -0.8, 17.58, 0.0, 17.02, -0.72, 19.08, 0.57, 17.18, 3.7, 16.55, 0.86, 16.06, 1.56, 17.53, 0.79, 18.27, 1.44, 18.34, 1.95, 16.79, 1.58, 16.34, 3.13, 18.05, -0.18, 16.05, -0.21, 15.09, 1.01, 15.79, 0.76, 15.36, 0.06, 14.19, 0.33, 17.02, 0.72, 15.2, 1.44328993201e-15, 15.61, 1.14, 16.28, 4.0, 16.06, 0.86, 15.86, 3.2, 15.54, 2.84, 16.14, 2.65, 16.3, 3.17, 16.12, 2.29, 15.24, 3.61, 17.68, 2.0, 18.46, -0.28, 15.16, 0.88, 16.36, 1.3, 16.42, 0.1, 15.85, -0.33, 19.08, -0.57, 15.61, -1.14, 17.08, 4.4408920985e-16, 16.87, 3.8, 16.8, -0.61, 14.8, 1.67, 15.15, 2.59, 16.5, 1.92, 18.15, 2.89, 18.06, 2.19, 15.69, 2.45, 19.65, 0.46, 16.46, -2.3, 16.69, -1.5, 16.25, -2.89, 16.12, -3.67, 14.56, -2.53, 17.18, -3.7, 16.28, -4.0, 16.87, -3.8, 16.86, 3.10862446895e-15, 17.31, -1.66, 15.91, 0.89, 16.41, -1.4, 17.57, -0.75, 17.8, -0.73, 17.38, -1.33, 17.26, 0.68, 17.62, -2.23, 17.33, -0.38, 16.7, 0.41, 16.41, 0.7, 18.13, -0.98, 16.26, -1.11, 16.55, -0.86, 16.06, -0.86, 16.8, 0.61, 17.31, 1.66, 18.04, -2.22044604925e-16, 14.99, 2.53, 15.6, 0.83, 17.07, 1.47, 18.65, 3.49, 17.04, 2.6, 16.46, 4.19, 17.81, -0.41, 16.83, -2.79, 15.71, -1.36, 16.15, -1.35, 13.87, -2.64, 13.31, -3.68, 16.06, -1.56, 15.86, -3.2, 14.8, -1.67, 15.91, -0.89, 14.99, -2.53, 17.26, -8.881784197e-16, 16.11, 0.18, 14.96, 0.63, 15.98, 0.21, 15.56, -0.21, 14.72, 0.03, 18.27, -0.91, 16.43, -0.54, 15.69, -0.49, 14.42, 0.2, 14.77, -0.8, 14.13, -2.13, 17.53, -0.79, 15.54, -2.84, 15.15, -2.59, 16.41, 1.4, 15.6, -0.83, 16.11, -0.18, 15.74, 4.4408920985e-16, 16.15, 0.77, 16.72, 2.33, 16.3, 0.31, 14.77, 1.83, 17.65, 0.87, 17.2, -1.65, 15.65, -1.44, 17.16, 0.48, 16.55, -2.06, 15.6, -0.81, 18.27, -1.44, 16.14, -2.65, 16.5, -1.92, 17.57, 0.75, 17.07, -1.47, 14.96, -0.63, 16.15, -0.77, 17.48, -4.4408920985e-16, 18.95, 1.04, 15.84, -0.05, 15.65, 1.37, 17.68, -1.39, 17.27, -1.25, 17.03, -2.03, 17.31, -0.15, 16.93, -2.59, 17.18, -2.88, 18.34, -1.95, 16.3, -3.17, 18.15, -2.89, 17.8, 0.73, 18.65, -3.49, 15.98, -0.21, 16.72, -2.33, 18.95, -1.04, 18.7, -4.4408920985e-16, 17.61, -0.65, 17.25, 1.3, 18.51, -1.05, 15.48, -1.04, 15.65, -0.43, 15.65, -1.26, 16.43, -2.03, 14.94, -1.71, 16.79, -1.58, 16.12, -2.29, 18.06, -2.19, 17.38, 1.33, 17.04, -2.6, 15.56, 0.21, 16.3, -0.31, 15.84, 0.05, 17.61, 0.65, 16.94, -2.37310171514e-15, 16.0, 2.04, 18.1, 0.03, 14.74, -2.46, 14.97, -1.73, 15.74, -1.32, 16.27, -3.33, 14.07, -3.75, 16.34, -3.13, 15.24, -3.61, 15.69, -2.45, 17.26, -0.68, 16.46, -4.19, 14.72, -0.03, 14.77, -1.83, 15.65, -1.37, 17.25, -1.3, 16.0, -2.04, 14.96, -6.93889390391e-16, 16.17, -1.95, 18.63, 0.7, 17.06, -0.82, 16.72, -0.25, 17.43, -1.51, 16.08, -0.02, 18.05, 0.18, 17.68, -2.0, 19.65, -0.46, 17.62, 2.23, 17.81, 0.41, 18.27, 0.91, 17.65, -0.87, 17.68, 1.39, 18.51, 1.05, 18.1, -0.03, 16.17, 1.95, 18.78, 2.38697950294e-15,
+
+L3_zHER2K_A_kn
+0.8, 0.9, 0.5, 0.5, 0.9, 0.3, 0.6, 0.8, 0.5, 0.5, 0.2, 0.7, 0.8, 0.3, 0.8, 0.1, 0.4, 0.5, 0.4, 0.8, 0.4, 0.3, 0.5, 0.8, 0.9, 0.2, 0.8, 0.2, 0.6, 0.4, 0.3, 0.2, 0.8, 0.3, 0.8, 0.1, 0.5, 0.1, 0.3, 0.5, 0.6, 0.6, 0.9, 0.4, 0.2, 0.4, 0.1, 0.6, 0.3, 0.9, 0.5, 0.6, 0.6, 0.7, 0.1, 0.6, 0.7, 0.6, 0.2, 0.5, 0.2, 0.6, 0.1, 0.1, 0.7, 0.9, 0.4, 0.8, 0.5, 0.5, 0.8, 0.4, 0.5, 0.9, 0.5, 0.6, 0.4, 0.2, 0.1, 0.6, 0.6, 0.5, 0.6, 0.3, 0.5, 0.9, 0.6, 0.4, 0.1, 0.4, 0.7, 0.5, 0.6, 0.3, 0.4, 0.5, 0.3, 0.5, 0.1, 0.3, 0.9, 0.1, 0.7, 0.1, 0.5, 0.5, 0.4, 0.5, 0.8, 0.6, 0.1, 0.3, 0.7, 0.5, 0.5, 0.3, 0.2, 0.6, 0.7, 0.5, 0.1, 0.3, 0.1, 0.9, 0.5, 0.3, 0.5, 0.4, 0.2, 0.3, 0.2, 0.1, 0.5, 0.2, 0.4, 0.8, 0.6, 0.3, 0.7, 0.8, 0.2, 0.7, 0.6, 0.4, 0.1, 0.8, 0.6, 0.7, 0.8, 0.6, 0.3, 0.9, 0.9, 0.6, 0.5, 0.5, 0.4, 0.2, 0.3, 0.8, 0.5, 0.6, 0.1, 0.1, 0.9, 0.7, 0.5, 0.9, 0.7, 0.3, 0.7, 0.5, 0.7, 0.2, 0.8, 0.5, 0.6, 0.6, 0.1, 0.5, 0.5, 0.6, 0.6, 0.5, 0.9, 0.9, 0.2, 0.1, 0.6, 0.8, 0.8, 0.8, 0.8, 0.8, 0.1, 0.3, 0.5, 0.2, 0.1, 0.8, 0.7, 0.1, 0.6, 0.8, 0.2, 0.4, 0.2, 0.2, 0.1, 0.1, 0.8, 0.4, 0.6, 0.5, 0.8, 0.1, 0.7, 0.9, 0.8, 0.8, 0.9, 0.7, 0.2, 0.7, 0.7, 0.2, 0.7, 0.6, 0.6, 0.4, 0.1, 0.3, 0.3, 0.2, 0.1, 0.9, 0.4, 0.2, 0.3, 0.7, 0.7, 0.3, 0.1, 0.3, 0.6, 0.4, 0.5, 0.2, 0.4, 0.9, 0.1, 0.5, 0.4, 0.2, 0.8, 0.6, 0.4, 0.9, 0.3, 0.9, 0.1, 0.4, 0.1, 0.8, 0.9, 0.1, 0.5, 0.3, 0.3, 0.5, 0.1, 0.1, 0.3, 0.9, 0.6, 0.2, 0.8, 0.6, 0.8, 0.9, 0.5, 0.1, 0.8, 0.7, 0.7, 0.6, 0.5, 0.5, 0.8, 0.5, 0.6, 0.6, 0.5, 0.9, 0.3, 0.5, 0.7, 0.5, 0.2, 0.7, 0.1, 0.3, 0.6, 0.6, 0.8, 0.2, 0.8, 0.1, 0.7, 0.2, 0.6, 0.1, 0.5, 0.6, 0.5, 0.3, 0.1, 0.7, 0.2, 0.4, 0.1, 0.7, 0.9, 0.3, 0.8, 0.4, 0.2, 0.2, 0.9, 0.4, 0.8, 0.2, 0.3, 0.1, 0.2, 0.4, 0.2, 0.3, 0.5, 0.8, 0.4, 0.3, 0.5, 0.1, 0.4, 0.5, 0.3, 0.1, 0.6, 0.2, 0.3, 0.6, 0.9, 0.3, 0.1, 0.4, 0.2, 0.9, 0.6, 0.1, 0.7, 0.8, 0.9, 0.5, 0.5, 0.9, 0.5, 0.4, 0.5, 0.2, 0.8, 0.2, 0.3, 0.2, 0.9, 0.3, 0.8, 0.9, 0.3, 0.4, 0.3, 0.4, 0.2, 0.6, 0.9, 0.8, 0.7, 0.4, 0.6, 0.2, 0.9, 0.8, 0.2, 0.1, 0.1, 0.6, 0.5, 0.3, 0.8, 0.5, 0.5, 0.9, 0.9, 0.7, 0.6, 0.3, 0.4, 0.5, 0.1, 0.5, 0.2, 0.7, 0.8, 0.8, 0.4, 0.3, 0.4, 0.7, 0.5, 0.3, 0.3, 0.1, 0.3, 0.2, 0.7, 0.9, 0.8, 0.1, 0.8, 0.4, 0.1, 0.8, 0.1, 0.1, 0.7, 0.4, 0.6, 0.8, 0.1, 0.6, 0.3, 0.2, 0.5, 0.2, 0.6, 0.6, 0.3, 0.3, 0.1, 0.2, 0.9, 0.2, 0.8, 0.1, 0.3, 0.5, 0.4, 0.7, 0.5, 0.3, 0.9, 0.8, 0.5, 0.9, 0.8, 0.9, 0.3, 0.9, 0.5, 0.8, 0.6, 0.7, 0.8, 0.3, 0.1, 0.1, 0.5, 0.9, 0.6, 0.8, 0.5, 0.1, 0.4, 0.5, 0.7, 0.8, 0.4, 0.5, 0.4, 0.2, 0.3, 0.1, 0.4, 0.5, 0.6, 0.3, 0.2, 0.4, 0.3, 0.7, 0.7, 0.3, 0.8, 0.6, 0.3, 0.8, 0.4, 0.1, 0.4, 0.3, 0.2, 0.8, 0.5, 0.9, 0.9, 0.7, 0.8, 0.6, 0.8, 0.5, 0.8, 0.6, 0.5, 0.9, 0.9, 0.3, 0.1, 0.1, 0.7, 0.4, 0.5, 0.7, 0.4, 0.7, 0.8, 0.3, 0.7, 0.1, 0.2, 0.6, 0.2, 0.9, 0.2, 0.2,
+
+L3_zHER2K_B_kn
+0.3, 0.9, 0.9, 0.3, 0.7, 0.5, 0.5, 0.4, 0.9, 0.2, 0.7, 0.5, 0.1, 0.2, 0.6, 0.6, 0.1, 0.7, 0.5, 0.3, 0.9, 0.5, 0.5, 0.7, 0.4, 0.7, 0.4, 0.4, 0.3, 0.5, 0.4, 0.3, 0.5, 0.9, 0.8, 0.1, 0.6, 0.6, 0.4, 0.8, 0.7, 0.2, 0.6, 0.1, 0.9, 0.2, 0.3, 0.3, 0.4, 0.1, 0.7, 0.3, 0.4, 0.2, 0.2, 0.3, 0.4, 0.2, 0.9, 0.3, 0.8, 0.5, 0.9, 0.8, 0.9, 0.1, 0.3, 0.9, 0.1, 0.8, 0.5, 0.1, 0.6, 0.3, 0.4, 0.1, 0.9, 0.2, 0.6, 0.9, 0.9, 0.2, 0.8, 0.9, 0.9, 0.9, 0.1, 0.2, 0.2, 0.6, 0.3, 0.8, 0.4, 0.5, 0.3, 0.7, 0.6, 0.5, 0.2, 0.1, 0.6, 0.9, 0.2, 0.3, 0.9, 0.7, 0.1, 0.9, 0.1, 0.8, 0.8, 0.8, 0.3, 0.8, 0.4, 0.5, 0.3, 0.3, 0.2, 0.9, 0.5, 0.5, 0.2, 0.5, 0.5, 0.6, 0.3, 0.2, 0.9, 0.8, 0.5, 0.9, 0.8, 0.9, 0.5, 0.2, 0.2, 0.5, 0.4, 0.3, 0.1, 0.7, 0.8, 0.7, 0.8, 0.9, 0.7, 0.8, 0.6, 0.7, 0.4, 0.8, 0.3, 0.1, 0.7, 0.9, 0.4, 0.6, 0.5, 0.9, 0.8, 0.2, 0.4, 0.9, 0.2, 0.7, 0.2, 0.4, 0.8, 0.4, 0.7, 0.8, 0.6, 0.9, 0.1, 0.7, 0.7, 0.5, 0.2, 0.9, 0.1, 0.9, 0.4, 0.3, 0.3, 0.4, 0.3, 0.4, 0.2, 0.4, 0.6, 0.3, 0.2, 0.8, 0.3, 0.3, 0.2, 0.4, 0.2, 0.3, 0.2, 0.3, 0.1, 0.3, 0.6, 0.5, 0.3, 0.7, 0.9, 0.2, 0.9, 0.4, 0.6, 0.3, 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 0.3, 0.2, 0.7, 0.4, 0.9, 0.7, 0.3, 0.2, 0.7, 0.1, 0.1, 0.3, 0.4, 0.2, 0.2, 0.5, 0.3, 0.9, 0.7, 0.6, 0.1, 0.8, 0.5, 0.3, 0.7, 0.1, 0.7, 0.9, 0.1, 0.4, 0.3, 0.7, 0.7, 0.7, 0.5, 0.1, 0.6, 0.6, 0.3, 0.2, 0.6, 0.9, 0.9, 0.7, 0.3, 0.9, 0.8, 0.8, 0.9, 0.8, 0.9, 0.6, 0.5, 0.2, 0.3, 0.4, 0.2, 0.9, 0.3, 0.2, 0.5, 0.6, 0.9, 0.9, 0.4, 0.8, 0.4, 0.3, 0.1, 0.3, 0.2, 0.9, 0.3, 0.2, 0.6, 0.2, 0.5, 0.3, 0.1, 0.3, 0.2, 0.4, 0.3, 0.6, 0.2, 0.2, 0.2, 0.9, 0.6, 0.5, 0.2, 0.9, 0.4, 0.4, 0.8, 0.5, 0.2, 0.1, 0.3, 0.7, 0.9, 0.5, 0.6, 0.2, 0.3, 0.9, 0.2, 0.2, 0.4, 0.5, 0.7, 0.7, 0.3, 0.2, 0.1, 0.9, 0.5, 0.8, 0.8, 0.2, 0.7, 0.7, 0.2, 0.3, 0.8, 0.8, 0.5, 0.5, 0.4, 0.4, 0.5, 0.8, 0.6, 0.1, 0.5, 0.7, 0.2, 0.4, 0.3, 0.8, 0.3, 0.5, 0.5, 0.4, 0.5, 0.1, 0.5, 0.6, 0.6, 0.7, 0.6, 0.1, 0.6, 0.8, 0.1, 0.2, 0.1, 0.8, 0.4, 0.3, 0.3, 0.3, 0.9, 0.3, 0.3, 0.7, 0.2, 0.5, 0.2, 0.2, 0.5, 0.3, 0.4, 0.9, 0.9, 0.3, 0.2, 0.8, 0.8, 0.6, 0.9, 0.2, 0.2, 0.8, 0.2, 0.5, 0.8, 0.9, 0.1, 0.6, 0.4, 0.5, 0.9, 0.4, 0.8, 0.5, 0.6, 0.1, 0.4, 0.3, 0.7, 0.4, 0.6, 0.1, 0.9, 0.9, 0.2, 0.4, 0.3, 0.4, 0.6, 0.4, 0.1, 0.5, 0.4, 0.6, 0.5, 0.5, 0.5, 0.3, 0.4, 0.3, 0.1, 0.2, 0.4, 0.8, 0.7, 0.9, 0.6, 0.2, 0.8, 0.4, 0.5, 0.7, 0.7, 0.6, 0.4, 0.7, 0.6, 0.1, 0.2, 0.7, 0.4, 0.6, 0.3, 0.7, 0.7, 0.6, 0.8, 0.9, 0.2, 0.8, 0.9, 0.4, 0.2, 0.1, 0.2, 0.3, 0.8, 0.6, 0.1, 0.5, 0.7, 0.8, 0.9, 0.6, 0.3, 0.7, 0.8, 0.5, 0.1, 0.5, 0.8, 0.6, 0.3, 0.7, 0.6, 0.4, 0.4, 0.6, 0.1, 0.7, 0.6, 0.7, 0.8, 0.8, 0.6, 0.9, 0.3, 0.2, 0.5, 0.2, 0.8, 0.5, 0.7, 0.9, 0.3, 0.9, 0.5, 0.1, 0.9, 0.6, 0.2, 0.4, 0.8, 0.1, 0.7, 0.7, 0.5, 0.4, 0.5, 0.7, 0.1, 0.8, 0.2, 0.1, 0.4, 0.2, 0.5, 0.7, 0.7, 0.9, 0.6, 0.2,
+
+L3_zHER2K_o_H
+13.76, 0.0, 15.48, -0.88, 14.52, 0.6, 15.95, -1.51, 16.57, -1.53, 16.2, 1.55, 13.52, 0.25, 14.65, 0.16, 15.64, -0.47, 15.22, 1.48, 14.55, 1.0, 15.99, 1.41, 13.95, -0.26, 13.66, -0.19, 13.83, 1.71, 14.45, 0.58, 14.14, -0.63, 15.48, 0.88, 17.1, 1.11022302463e-15, 16.39, 2.45, 17.94, 0.44, 17.69, -0.89, 17.8, 1.55, 15.98, 1.11, 16.6, 1.08, 17.28, -1.36, 17.09, 2.63, 16.69, 1.21, 18.24, 4.0, 16.85, 0.29, 16.05, 0.64, 16.28, 4.08, 16.22, 0.49, 16.26, 0.74, 14.52, -0.6, 16.39, -2.45, 17.0, 8.881784197e-16, 17.08, -1.87, 16.7, -2.79, 18.64, -0.44, 15.74, -1.06, 16.87, -1.24, 17.4, 0.04, 16.06, 0.49, 17.17, 1.22, 17.78, 1.04, 15.26, -1.75, 15.34, -0.36, 15.67, 2.07, 15.05, -0.39, 14.56, -1.95, 15.95, 1.51, 17.94, -0.44, 17.08, 1.87, 16.4, 3.88578058619e-16, 17.89, -0.35, 17.79, 2.04, 15.43, 1.06, 15.9, 1.87, 16.58, 1.58, 16.76, 3.38, 15.43, 2.11, 17.44, 4.17, 15.12, -0.15, 14.47, 1.27, 16.37, 4.07, 15.51, 2.43, 15.21, 1.15, 16.57, 1.53, 17.69, 0.89, 16.7, 2.79, 17.89, 0.35, 17.34, 0.0, 17.94, 4.16, 15.82, 1.59, 16.29, 2.82, 18.45, 1.83, 16.72, 3.89, 15.15, 3.66, 17.24, 5.15, 16.64, 1.82, 15.85, 2.81, 16.61, 4.7, 15.56, 2.6, 15.67, 1.47, 16.2, -1.55, 17.8, -1.55, 18.64, 0.44, 17.79, -2.04, 17.94, -4.16, 18.56, -8.881784197e-16, 16.1, -1.28, 16.2, -1.05, 17.55, -1.19, 17.71, 0.86, 16.6, 0.54, 18.33, 1.17, 17.08, -3.11, 16.32, -0.53, 16.93, 1.07, 16.31, 0.37, 15.55, -2.65, 13.52, -0.25, 15.98, -1.11, 15.74, 1.06, 15.43, -1.06, 15.82, -1.59, 16.1, 1.28, 14.14, 9.43689570931e-16, 13.78, 1.51, 14.42, 0.17, 16.08, 1.36, 15.4, 2.39, 15.67, 3.58, 13.79, -0.7, 13.81, 1.55, 14.36, 2.68, 13.74, 0.53, 14.15, 0.3, 14.65, -0.16, 16.6, -1.08, 16.87, 1.24, 15.9, -1.87, 16.29, -2.82, 16.2, 1.05, 13.78, -1.51, 14.74, -7.91033905045e-16, 15.02, 0.46, 16.03, 0.64, 14.71, 1.66, 15.6, 2.38, 14.22, -1.3, 14.55, -0.8, 15.29, 1.91, 13.39, 0.48, 12.99, -0.19, 15.64, 0.47, 17.28, 1.36, 17.4, -0.04, 16.58, -1.58, 18.45, -1.83, 17.55, 1.19, 14.42, -0.17, 15.02, -0.46, 17.14, 2.22044604925e-16, 16.94, 2.95, 15.15, 1.63, 17.3, 3.33, 16.17, -0.65, 16.46, 1.16, 16.41, 3.65, 14.61, 1.99, 16.25, -0.53, 15.22, -1.48, 17.09, -2.63, 16.06, -0.49, 16.76, -3.38, 16.72, -3.89, 17.71, -0.86, 16.08, -1.36, 16.03, -0.64, 16.94, -2.95, 15.06, -1.55431223448e-15, 15.57, -0.2, 16.67, 0.78, 15.91, -2.28, 15.64, -0.31, 16.22, 1.69, 15.53, -0.6, 14.46, -1.59, 14.55, -1.0, 16.69, -1.21, 17.17, -1.22, 15.43, -2.11, 15.15, -3.66, 16.6, -0.54, 15.4, -2.39, 14.71, -1.66, 15.15, -1.63, 15.57, 0.2, 14.66, -2.22044604925e-16, 17.12, 0.96, 14.13, -2.54, 14.2, -0.65, 15.34, 1.07, 14.23, -1.4, 13.51, -1.86, 15.99, -1.41, 18.24, -4.0, 17.78, -1.04, 17.44, -4.17, 17.24, -5.15, 18.33, -1.17, 15.67, -3.58, 15.6, -2.38, 17.3, -3.33, 16.67, -0.78, 17.12, -0.96, 17.98, -2.22044604925e-15, 16.56, -2.63, 16.26, -1.47, 17.28, 0.35, 15.68, -2.12, 15.23, -1.72, 13.95, 0.26, 16.85, -0.29, 15.26, 1.75, 15.12, 0.15, 16.64, -1.82, 17.08, 3.11, 13.79, 0.7, 14.22, 1.3, 16.17, 0.65, 15.91, 2.28, 14.13, 2.54, 16.56, 2.63, 14.52, 2.22044604925e-16, 15.2, 0.57, 15.39, 3.06, 13.8, 2.11, 14.36, 1.11, 13.66, 0.19, 16.05, -0.64, 15.34, 0.36, 14.47, -1.27, 15.85, -2.81, 16.32, 0.53, 13.81, -1.55, 14.55, 0.8, 16.46, -1.16, 15.64, 0.31, 14.2, 0.65, 16.26, 1.47, 15.2, -0.57, 14.04, 4.4408920985e-16, 15.48, 1.97, 14.63, -0.02, 13.25, 0.41, 13.83, -1.71, 16.28, -4.08, 15.67, -2.07, 16.37, -4.07, 16.61, -4.7, 16.93, -1.07, 14.36, -2.68, 15.29, -1.91, 16.41, -3.65, 16.22, -1.69, 15.34, -1.07, 17.28, -0.35, 15.39, -3.06, 15.48, -1.97, 14.96, 4.4408920985e-16, 14.76, -1.2, 14.5, -1.66, 14.45, -0.58, 16.22, -0.49, 15.05, 0.39, 15.51, -2.43, 15.56, -2.6, 16.31, -0.37, 13.74, -0.53, 13.39, -0.48, 14.61, -1.99, 15.53, 0.6, 14.23, 1.4, 15.68, 2.12, 13.8, -2.11, 14.63, 0.02, 14.76, 1.2, 15.5, 3.33066907388e-16, 13.54, 0.14, 14.14, 0.63, 16.26, -0.74, 14.56, 1.95, 15.21, -1.15, 15.67, -1.47, 15.55, 2.65, 14.15, -0.3, 12.99, 0.19, 16.25, 0.53, 14.46, 1.59, 13.51, 1.86, 15.23, 1.72, 14.36, -1.11, 13.25, -0.41, 14.5, 1.66, 13.54, -0.14, 13.4, -4.4408920985e-16,
+
+L3_sTRMM_A_mm
+0.5, 0.8, 0.6, 0.6, 0.3, 0.2, 0.2, 0.1, 0.3, 0.4, 0.0, 0.6, 0.7, 0.7, 0.6, 0.3, 0.6, 0.7, 0.9, 0.1, 0.0, 0.0, 0.2, 0.8, 0.5, 0.5, 0.1, 0.9, 0.7, 0.1, 0.0, 0.0, 0.0, 0.1, 0.1, 0.6, 0.6, 0.2, 0.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.9, 0.1, 0.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.3, 0.7, 0.5, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.5, 0.3, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.8, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4,
+
+L3_sTRMM_B_mn
+0.4, 0.2, 0.3, 0.8, 0.3, 0.9, 0.7, 0.4, 0.3, 0.7, 0.7, 0.2, 0.8, 0.5, 0.4, 0.4, 0.8, 0.8, 0.3, 0.5, 0.7, 0.4, 0.7, 0.6, 0.9, 0.5, 0.5, 0.7, 0.4, 0.4, 0.9, 0.6, 0.1, 0.9, 0.5, 0.1, 0.9, 0.4, 0.9, 0.6, 0.3, 0.3, 0.2, 0.2, 0.7, 0.4, 0.4, 0.1, 0.6, 0.6, 0.6, 0.5, 0.7, 0.5, 0.4, 0.8, 0.2, 0.3, 0.6, 0.9, 0.8, 0.4, 0.5, 0.9, 0.2, 0.8, 0.8, 0.4, 0.5, 0.3, 0.6, 0.5, 0.8, 0.7, 0.7, 0.6, 0.9, 0.5, 0.9, 0.2, 0.6, 0.9, 0.8, 0.9, 0.3, 0.7, 0.9, 0.7, 0.6, 0.3, 0.8, 0.7, 0.9, 0.2, 0.1, 0.1, 0.6, 0.1, 0.3, 0.2, 0.1, 0.2, 0.7, 0.2, 0.9, 0.7, 0.3, 0.6, 0.1, 0.6, 0.4, 0.9, 0.8, 0.4, 0.5, 0.2, 0.9, 0.3, 0.4, 0.9, 0.9, 0.5, 0.3, 0.7, 0.6, 0.4, 0.6, 0.3, 0.2, 0.2, 0.1, 0.9, 0.6, 0.2, 0.1, 0.7, 0.8, 0.9, 0.8, 0.8, 0.5, 0.1, 0.2, 0.7, 0.9, 0.6, 0.1, 0.4, 0.3, 0.1, 0.5, 0.2, 0.1, 0.4, 0.1, 0.6, 0.6, 0.3, 0.7, 0.7, 0.3, 0.1, 0.1, 0.2, 0.1, 0.9, 0.4, 0.9, 0.8, 0.8,
+
+L3_sTRMM_o_LUN
+2.3600000681, 1.5300000374, 2.42000006989, 2.36000007108, 2.19000008091, 2.35000004247, 1.94000005782, 2.33000007093, 1.94000003919, 1.94000005335, 2.15000002906, 1.39000005633, 2.34000005409, 1.77000001922, 2.51000009865, 1.86000008076, 2.35000006109, 3.50000000596, 2.75999995187, 3.52000000805, 2.87000004381, 3.15000000522, 2.58000007838, 2.0000000529, 3.24000006601, 2.9399999699, 2.5600000383, 2.49000002652, 1.85000003651, 2.83000000238, 2.05000003725, 3.10000006035, 2.12000003487, 2.38000003144, 2.57999995843, 2.649999924, 2.38999999896, 1.91000002936, 2.40999999881, 1.77000002146, 1.58000000015, 2.41000002488, 2.25999996006, 1.68000002772, 1.30999999881, 1.30000002161, 2.30999996826, 1.4500000082, 1.97000002295, 1.60000001714, 1.50999999955, 1.80000002384, 1.59999998733, 1.91000003532, 1.67000005648, 1.10000003427, 1.33000006646, 1.01000002116, 1.72000003934, 1.25999999508, 1.22000002593, 0.840000033975, 1.0000000447, 1.17000002369, 0.720000033379, 1.48000001729, 0.810000032336, 0.880000035167, 1.37999998897, 0.740000003427, 1.68999999449, 1.45000001788, 0.800000026822, 1.4800000225, 0.990000004172, 1.24000003025, 0.710000001043, 1.04999996573, 1.02999999791, 0.690000014603, 1.37999998525, 0.750000017136, 1.73999995574, 1.06000002414, 1.17000001997, 1.65999998242, 1.3899999617, 1.58000001281, 1.36000003159, 1.09999999851, 1.30000001267, 1.03999998555, 1.34000002056, 0.890000000447, 0.800000015646, 0.590000013858, 0.580000015795, 1.57999995768, 0.870000016242, 1.32999997705, 0.840000007898, 1.25999999061, 1.03000000387, 0.809999993593, 0.970000022948, 0.830000030696, 0.710000009239, 0.800000014156, 0.630000000894, 0.780000029206, 0.550000012666, 0.510000014454, 0.390000009388, 0.300000010431, 1.0899999848, 0.570000017732, 0.879999993443, 0.570000013262, 0.860000004023, 1.80999997199, 1.6199999477, 1.63000001431, 1.4500000298, 1.29999998212, 1.24999998212, 1.14999997318, 1.37000000954, 1.07999999419, 0.750000023097, 0.439999998212, 0.500000007451, 1.85999992728, 0.980000005364, 1.38999996096, 0.969999995381, 1.42999996662, 0.480000026226, 0.330000006855, 0.600000041723, 0.600000041723, 0.330000020266, 0.450000011176, 0.480000012815, 0.390000019073, 0.330000006855, 0.240000017583, 0.150000008196, 0.180000009835, 0.630000014305, 0.270000014752, 0.690000013113, 0.540000029504, 0.510000027865, 0.160000004768, 0.0400000011921, 0.240000013113, 0.240000013113, 0.120000006557, 0.279999999404, 0.279999999404, 0.120000006557, 0.0400000011921, 0.0400000011921, 0.0800000023842, 0.0400000011921, 0.359999995828, 0.160000004768, 0.359999995828, 0.320000009537, 0.320000009537,
+
+L3_sTRMM_A_nn
+0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.1, 0.2, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.3, 0.1, 0.2, 0.9, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 0.7, 0.5, 0.6, 0.2, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.3, 0.3, 0.2, 0.5, 0.2, 0.3, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.8, 0.1, 0.9, 0.3, 0.6, 0.3, 0.9, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.9, 0.7, 0.3, 0.1, 0.4, 0.3, 0.3, 0.9, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.1, 0.5, 0.7, 0.4, 0.8, 0.1, 0.5, 0.5, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.6, 0.2, 0.4, 0.7, 0.2, 0.9, 0.4, 0.9, 0.8, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.3, 0.7, 0.7, 0.2, 0.9, 0.1, 0.7, 0.3, 0.5, 0.4, 0.7, 0.6, 0.0, 0.0, 0.0, 0.0, 0.5, 0.8, 0.2, 0.1, 0.3, 0.3, 0.9, 0.5, 0.6, 0.4, 0.3, 0.6, 0.6, 0.3, 0.0, 0.0, 0.0, 0.3, 0.1, 0.2, 0.6, 0.7, 0.1, 0.6, 0.4, 0.8, 0.8, 0.5, 0.3, 0.5, 0.1, 0.8, 0.0, 0.0, 0.4, 0.6, 0.1, 0.2, 0.2, 0.5, 0.4, 0.5, 0.7, 0.7, 0.7, 0.4, 0.9, 0.2, 0.8, 0.3, 0.0, 0.8, 0.6, 0.1, 0.7, 0.7, 0.5, 0.5, 0.6, 0.8, 0.3, 0.8, 0.8, 0.6, 0.8, 0.2, 0.3, 0.3,
+
+L3_sTRMM_o_RLT
+0.20000000298, 0.400000017881, 0.260000016689, 1.02000000954, 0.420000014752, 1.30000003353, 2.13000004113, 1.21000003159, 2.74000001237, 2.29000003174, 3.26999997452, 3.09999998212, 3.71000000253, 3.11000005692, 3.54000008017, 3.98999999449, 4.77000009224, 0.40000000596, 0.720000039339, 0.440000017583, 1.14999999255, 0.53000000909, 1.54000003919, 2.20000005364, 1.66000003159, 3.61999995366, 2.94000002801, 3.64999998659, 3.59999997467, 4.16999997228, 3.59000007644, 3.90000009015, 4.21000001967, 5.64000006676, 0.25, 0.380000014305, 0.610000008494, 1.02000000507, 0.689999990761, 1.6700000006, 1.80000004247, 1.41000001594, 2.15000002608, 2.03000000983, 2.79999996498, 2.77000002965, 3.26000000775, 2.34000007048, 3.05000005364, 3.15000005439, 3.99000007942, 0.25, 0.860000010729, 0.490000012368, 0.900000008941, 0.720000009537, 1.48000001803, 1.68000002325, 1.46000004053, 3.21999997452, 3.13999996841, 3.47999997184, 3.25000004247, 3.75000003353, 3.70000007898, 4.38000007465, 4.83000000462, 5.22000010714, 0.25, 0.540000025034, 0.470000032634, 0.970000021458, 0.670000014752, 1.69000002503, 2.1500000447, 1.61000004649, 3.4199999842, 3.05000000298, 3.9999999404, 3.74000001907, 3.92000003114, 3.80000007525, 4.55000006631, 4.95000000149, 5.96000006288, 0.34999999404, 1.14000000119, 0.670000007302, 1.28000001431, 0.590000010133, 1.63000004932, 2.74000002652, 1.83000002027, 3.72999996439, 3.09999997169, 3.2299999547, 2.95999999359, 3.84999998063, 3.38000001803, 2.58000007391, 3.06000003085, 4.27000008479, 0.34999999404, 0.580000014305, 0.650000008196, 1.34999998063, 0.490000005662, 1.34000004366, 1.8900000295, 1.36000002787, 2.88999998927, 2.86999998868, 3.20999996975, 3.70000002086, 4.23999999374, 2.86000007927, 3.95000004321, 4.25999999657, 4.58000010371, 0.449999988079, 1.25999999881, 0.570000008792, 0.930000011325, 0.729999994934, 1.91000001594, 2.28000002176, 1.76000002116, 3.35000000373, 2.94999998882, 3.35999993548, 2.69000005037, 3.57000002965, 3.45000005439, 2.87000004828, 3.56000001073, 4.71000009567, 0.40000000596, 1.20000001788, 0.740000026524, 1.54000002056, 0.750000007451, 1.50000002831, 2.13000002474, 1.6800000307, 3.94999991953, 3.71999996707, 3.46999995589, 3.11000003085, 3.80000003502, 3.33000005528, 3.66000008076, 3.71000002265, 4.49000007421, 0.20000000298, 0.320000015497, 0.420000030398, 1.00000003874, 0.390000017583, 1.1400000377, 1.93000005677, 1.15000004247, 2.12000003263, 1.760000045, 2.17000001401, 1.95000004172, 2.9300000225, 2.4200000304, 2.93000005156, 3.4099999854, 3.82000008479,
+
+L3_dTRMM_A_mm
+0.2, 0.2, 0.4, 0.1, 0.4, 0.1, 0.6, 0.9, 0.2, 0.5, 0.0, 0.4, 0.8, 0.6, 0.8, 0.9, 0.7, 0.9, 0.6, 0.4, 0.0, 0.0, 0.7, 0.8, 0.1, 0.4, 0.5, 0.2, 0.5, 0.9, 0.0, 0.0, 0.0, 0.7, 0.3, 0.9, 0.1, 0.3, 0.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.8, 0.3, 0.6, 0.8, 0.4, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.5, 0.1, 0.5, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.9, 0.4, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.7, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3,
+
+L3_dTRMM_B_mn
+0.2, 0.5, 0.8, 0.7, 0.7, 0.3, 0.7, 0.7, 0.9, 0.6, 0.8, 0.1, 0.4, 0.3, 0.8, 0.3, 0.4, 0.8, 0.8, 0.4, 0.5, 0.7, 0.2, 0.4, 0.3, 0.8, 0.2, 0.4, 0.5, 0.9, 0.7, 0.5, 0.6, 0.4, 0.7, 0.1, 0.4, 0.4, 0.8, 0.4, 0.8, 0.1, 0.9, 0.8, 0.6, 0.2, 0.4, 0.7, 0.1, 0.2, 0.2, 0.3, 0.9, 0.9, 0.2, 0.4, 0.1, 0.2, 0.4, 0.6, 0.5, 0.4, 0.3, 0.6, 0.9, 0.7, 0.7, 0.9, 0.6, 0.5, 0.7, 0.4, 0.6, 0.3, 0.3, 0.6, 0.2, 0.9, 0.9, 0.2, 0.8, 0.6, 0.8, 0.5, 0.3, 0.4, 0.3, 0.9, 0.6, 0.9, 0.8, 0.7, 0.9, 0.8, 0.4, 0.2, 0.2, 0.4, 0.2, 0.9, 0.5, 0.2, 0.4, 0.1, 0.3, 0.8, 0.7, 0.2, 0.3, 0.6, 0.3, 0.9, 0.2, 0.3, 0.7, 0.1, 0.1, 0.6, 0.4, 0.4, 0.8, 0.6, 0.3, 0.8, 0.9, 0.3, 0.8, 0.7, 0.9, 0.8, 0.9, 0.2, 0.6, 0.9, 0.8, 0.2, 0.5, 0.5, 0.1, 0.6, 0.7, 0.4, 0.9, 0.4, 0.3, 0.6, 0.3, 0.4, 0.3, 0.5, 0.6, 0.3, 0.4, 0.5, 0.4, 0.8, 0.7, 0.8, 0.6, 0.3, 0.5, 0.2, 0.4, 0.3, 0.8, 0.2, 0.9, 0.7, 0.1, 0.2,
+
+L3_dTRMM_o_LUN
+1.74, 1.7, 2.0, 1.86, 2.65, 1.78, 1.53, 2.02, 1.89, 2.6, 1.95, 1.8, 1.6, 1.98, 2.12, 1.77, 1.07, 3.04, 2.86, 3.52, 2.97, 4.4, 2.85, 2.93, 3.31, 3.38, 4.06, 2.94, 2.46, 2.97, 3.31, 3.67, 3.03, 2.06, 1.93, 1.78, 2.47, 2.11, 2.88, 1.73, 1.96, 1.92, 2.07, 2.5, 1.59, 1.73, 1.72, 2.58, 2.23, 1.65, 1.59, 1.16, 1.52, 2.12, 1.3, 1.96, 1.43, 1.25, 1.8, 1.56, 1.58, 1.14, 1.07, 1.27, 1.55, 2.15, 1.48, 1.14, 1.71, 1.67, 2.09, 1.95, 2.65, 1.9, 1.44, 2.26, 1.4, 2.62, 1.87, 1.84, 1.6, 1.91, 2.42, 1.74, 1.0, 1.05, 0.81, 1.39, 1.55, 1.91, 1.35, 1.38, 1.59, 1.17, 1.36, 0.63, 0.94, 0.96, 0.9, 1.53, 1.02, 0.68, 0.84, 1.1, 0.96, 0.95, 1.46, 1.25, 0.81, 1.2, 0.89, 1.39, 1.0, 1.35, 0.52, 1.12, 1.35, 1.0, 0.5, 0.87, 1.15, 0.87, 0.94, 1.45, 1.24, 0.99, 1.12, 0.85, 1.3, 0.97, 1.32, 0.45, 1.19, 1.42, 0.89, 0.52, 0.7, 0.64, 0.56, 0.9, 1.04, 0.68, 0.9, 0.62, 0.36, 0.72, 0.42, 0.8, 0.36, 0.94, 0.9, 0.3, 0.44, 0.15, 0.12, 0.24, 0.21, 0.24, 0.18, 0.09, 0.15, 0.06, 0.12, 0.09, 0.24, 0.06, 0.27, 0.21, 0.03, 0.06,
+
+L3_dTRMM_A_nn
+0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.8, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.3, 0.3, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.3, 0.7, 0.3, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.5, 0.5, 0.3, 0.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.7, 0.4, 0.3, 0.7, 0.7, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.5, 0.7, 0.9, 0.4, 0.8, 0.1, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.4, 0.8, 0.1, 0.8, 0.9, 0.3, 0.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.8, 0.4, 0.8, 0.8, 0.4, 0.9, 0.6, 0.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.1, 0.9, 0.2, 0.4, 0.3, 0.9, 0.9, 0.3, 0.1, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.6, 0.9, 0.9, 0.9, 0.9, 0.8, 0.3, 0.5, 0.2, 0.4, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.3, 0.4, 0.3, 0.5, 0.2, 0.3, 0.3, 0.8, 0.2, 0.7, 0.4, 0.0, 0.0, 0.0, 0.0, 0.7, 0.1, 0.1, 0.1, 0.8, 0.3, 0.6, 0.3, 0.1, 0.2, 0.9, 0.4, 0.7, 0.7, 0.0, 0.0, 0.0, 0.7, 0.3, 0.8, 0.7, 0.7, 0.6, 0.2, 0.6, 0.4, 0.3, 0.7, 0.9, 0.8, 0.3, 0.6, 0.0, 0.0, 0.4, 0.7, 0.4, 0.4, 0.2, 0.1, 0.5, 0.6, 0.6, 0.4, 0.9, 0.4, 0.3, 0.7, 0.3, 0.1, 0.0, 0.6, 0.1, 0.2, 0.2, 0.6, 0.4, 0.9, 0.7, 0.4, 0.4, 0.4, 0.6, 0.1, 0.5, 0.6, 0.2, 0.3,
+
+L3_dTRMM_o_RLT
+0.08, 0.32, 1.1, 0.85, 1.09, 1.58, 2.27, 2.31, 2.87, 3.92, 3.39, 4.36, 2.9, 3.08, 4.73, 4.11, 3.96, 0.32, 0.56, 1.48, 1.28, 1.14, 1.86, 2.1, 2.23, 2.14, 3.4, 2.17, 3.72, 3.27, 3.48, 4.68, 3.87, 3.65, 0.28, 0.13, 0.85, 0.94, 0.86, 1.54, 2.12, 1.92, 2.07, 3.36, 2.55, 3.89, 2.94, 3.49, 3.93, 3.47, 3.61, 0.12, 0.57, 1.56, 0.89, 1.15, 1.48, 1.67, 1.81, 2.14, 2.74, 2.2, 3.06, 2.69, 2.69, 4.07, 3.75, 3.35, 0.24, 0.36, 1.31, 1.06, 1.12, 1.65, 1.83, 2.15, 2.3, 2.94, 2.71, 3.6, 3.25, 3.58, 4.89, 4.01, 3.77, 0.16, 0.22, 1.15, 0.96, 1.19, 1.93, 2.69, 2.85, 3.64, 4.17, 3.48, 4.75, 3.06, 2.95, 4.98, 3.6, 4.21, 0.16, 0.1, 0.57, 0.8, 0.75, 1.27, 1.45, 1.85, 1.86, 2.79, 1.97, 3.0, 2.73, 2.45, 3.59, 2.55, 2.82, 0.16, 0.52, 1.34, 0.9, 1.03, 1.9, 2.47, 2.6, 3.34, 3.83, 3.12, 4.52, 4.01, 3.67, 5.65, 4.65, 4.75, 0.2, 0.35, 0.82, 0.87, 0.72, 1.44, 2.3, 1.98, 2.03, 3.33, 2.26, 3.54, 2.81, 2.95, 3.77, 3.2, 3.7, 0.2, 0.29, 1.23, 1.09, 1.22, 1.9, 2.21, 2.67, 2.7, 3.16, 2.5, 3.97, 3.08, 3.15, 4.86, 3.53, 3.79,
+
+L3_cTRMM_A_mm
+0.40000000596, 0.300000011921, 0.10000000149, 0.300000011921, 0.699999988079, 0.40000000596, 0.899999976158, 0.300000011921, 0.5, 0.300000011921, 0.40000000596, 0.899999976158, 0.899999976158, 0.5, 0.600000023842, 0.699999988079, 0.10000000149, 0.5, 0.5, 0.300000011921, 0.0, 0.0, 0.5, 0.899999976158, 0.800000011921, 0.10000000149, 0.40000000596, 0.40000000596, 0.899999976158, 0.800000011921, 0.10000000149, 0.800000011921, 0.699999988079, 0.20000000298, 0.699999988079, 0.800000011921, 0.10000000149, 0.5, 0.699999988079, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.10000000149, 0.40000000596, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.20000000298, 0.300000011921, 0.300000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.800000011921, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.800000011921, 0.20000000298, 0.20000000298, 0.5, 0.600000023842, 0.10000000149, 0.600000023842, 0.800000011921, 0.20000000298, 0.800000011921, 0.40000000596, 0.300000011921, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.10000000149, 0.699999988079, 0.10000000149, 0.899999976158, 0.899999976158, 0.300000011921, 0.600000023842, 0.899999976158, 0.600000023842, 0.300000011921, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.10000000149, 0.699999988079, 0.5, 0.10000000149, 0.5, 0.10000000149, 0.40000000596, 0.300000011921, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.899999976158, 0.20000000298, 0.600000023842, 0.5, 0.800000011921, 0.699999988079, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.5, 0.600000023842, 0.10000000149, 0.20000000298, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.40000000596, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.600000023842,
+
+L3_cTRMM_B_mn
+0.20000000298, 0.10000000149, 0.800000011921, 0.800000011921, 0.300000011921, 0.699999988079, 0.40000000596, 0.10000000149, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.40000000596, 0.699999988079, 0.300000011921, 0.600000023842, 0.10000000149, 0.40000000596, 0.10000000149, 0.899999976158, 0.20000000298, 0.10000000149, 0.40000000596, 0.899999976158, 0.300000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.5, 0.10000000149, 0.600000023842, 0.40000000596, 0.899999976158, 0.5, 0.40000000596, 0.300000011921, 0.800000011921, 0.5, 0.5, 0.20000000298, 0.800000011921, 0.10000000149, 0.20000000298, 0.5, 0.800000011921, 0.10000000149, 0.699999988079, 0.40000000596, 0.899999976158, 0.40000000596, 0.20000000298, 0.5, 0.300000011921, 0.600000023842, 0.300000011921, 0.699999988079, 0.20000000298, 0.300000011921, 0.10000000149, 0.10000000149, 0.5, 0.300000011921, 0.20000000298, 0.699999988079, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.899999976158, 0.800000011921, 0.899999976158, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.300000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.10000000149, 0.300000011921, 0.40000000596, 0.600000023842, 0.300000011921, 0.699999988079, 0.10000000149, 0.10000000149, 0.899999976158, 0.40000000596, 0.600000023842, 0.899999976158, 0.600000023842, 0.699999988079, 0.40000000596, 0.300000011921, 0.300000011921, 0.10000000149, 0.800000011921, 0.600000023842, 0.5, 0.800000011921, 0.600000023842, 0.5, 0.5, 0.600000023842, 0.20000000298, 0.10000000149, 0.300000011921, 0.20000000298, 0.699999988079, 0.699999988079, 0.20000000298, 0.5, 0.40000000596, 0.20000000298, 0.20000000298, 0.699999988079, 0.300000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.20000000298, 0.40000000596, 0.10000000149, 0.20000000298, 0.600000023842, 0.10000000149, 0.699999988079, 0.20000000298, 0.699999988079, 0.600000023842, 0.20000000298, 0.40000000596, 0.800000011921, 0.600000023842, 0.300000011921, 0.899999976158, 0.699999988079, 0.899999976158, 0.20000000298, 0.600000023842, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.40000000596, 0.40000000596, 0.5, 0.5, 0.20000000298, 0.699999988079, 0.10000000149, 0.40000000596, 0.899999976158, 0.300000011921, 0.600000023842, 0.800000011921, 0.10000000149, 0.20000000298, 0.20000000298, 0.40000000596, 0.600000023842, 0.899999976158, 0.600000023842, 0.20000000298, 0.10000000149, 0.5, 0.899999976158, 0.800000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.600000023842, 0.300000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.600000023842, 0.5, 0.5, 0.699999988079, 0.899999976158, 0.800000011921, 0.300000011921, 0.699999988079, 0.899999976158, 0.600000023842, 0.5, 0.800000011921, 0.10000000149, 0.600000023842, 0.600000023842, 0.5, 0.600000023842, 0.20000000298, 0.899999976158, 0.5, 0.300000011921, 0.899999976158, 0.300000011921, 0.20000000298, 0.10000000149, 0.699999988079, 0.40000000596, 0.800000011921, 0.10000000149, 0.600000023842, 0.800000011921, 0.10000000149, 0.40000000596, 0.699999988079, 0.10000000149, 0.699999988079, 0.20000000298, 0.10000000149, 0.5, 0.5, 0.899999976158, 0.5, 0.5, 0.600000023842, 0.300000011921, 0.10000000149, 0.5, 0.40000000596, 0.300000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.899999976158, 0.600000023842, 0.699999988079, 0.20000000298, 0.20000000298, 0.10000000149, 0.300000011921, 0.300000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.5, 0.800000011921, 0.40000000596, 0.600000023842, 0.899999976158, 0.40000000596, 0.899999976158, 0.20000000298, 0.10000000149, 0.600000023842, 0.300000011921, 0.800000011921, 0.600000023842, 0.300000011921, 0.300000011921, 0.800000011921, 0.20000000298, 0.40000000596, 0.600000023842, 0.300000011921, 0.899999976158, 0.800000011921, 0.300000011921, 0.699999988079, 0.899999976158, 0.5, 0.600000023842, 0.300000011921, 0.20000000298, 0.5, 0.40000000596, 0.600000023842, 0.300000011921, 0.20000000298, 0.5, 0.300000011921, 0.300000011921, 0.699999988079, 0.800000011921, 0.800000011921, 0.40000000596, 0.20000000298, 0.699999988079, 0.20000000298, 0.800000011921, 0.699999988079, 0.600000023842, 0.899999976158, 0.40000000596, 0.5, 0.800000011921, 0.800000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.800000011921, 0.600000023842, 0.699999988079, 0.20000000298, 0.20000000298, 0.600000023842, 0.899999976158, 0.600000023842, 0.10000000149, 0.10000000149, 0.800000011921, 0.600000023842, 0.20000000298, 0.899999976158, 0.5, 0.10000000149, 0.899999976158, 0.600000023842, 0.600000023842, 0.899999976158, 0.300000011921, 0.800000011921, 0.40000000596, 0.5, 0.40000000596, 0.20000000298, 0.300000011921, 0.600000023842, 0.899999976158, 0.20000000298, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.300000011921, 0.20000000298, 0.899999976158, 0.300000011921, 0.699999988079, 0.699999988079,
+
+L3_cTRMM_o_LUN
+1.20999991462, 4.01000003383, 0.0499999791384, 4.42000002667, -1.7881393255e-08, 4.82000009298, -0.58000000909, 4.27000000581, 1.82999994054, 3.96000008076, 0.719999982715, 5.26999998868, -0.689999937117, 4.85000002608, 0.399999979138, 3.61000006214, 0.579999932349, 4.64999999478, -0.0200000356138, 5.02000002369, 0.409999944419, 4.45000004992, 0.329999956191, 4.50000004321, -0.370000042319, 4.55000005513, -0.839999965429, 5.40000000224, 0.210000030845, 4.31000002563, 0.9299999547, 6.43999997437, 0.739999976605, 4.91000007182, 1.41999991417, 4.36000002638, 0.569999943972, 4.48999999523, 0.629999959916, 4.71000008672, -0.090000051856, 4.40000000373, 1.30999993324, 4.10000006109, 0.869999968559, 5.40999998167, -0.159999991357, 5.03999997139, 0.719999987185, 3.92999999344, -0.150000028312, 4.65999998465, -0.260000080019, 4.97000007138, 0.389999981821, 4.76000007331, 0.609999915361, 3.51000007853, -0.160000077039, 4.03000004262, -0.560000049472, 5.73999997959, -0.119999984205, 4.40000006557, 0.529999935329, 6.20999993175, 0.639999949783, 4.5700000535, 1.50000001118, 2.7400000973, 0.720000019222, 2.88000007167, 1.06000004277, 2.95000012442, -0.260000005513, 3.08000005081, 1.39000003919, 2.64000010699, 1.29999999925, 3.69000007421, 0.800000077486, 3.37000004455, 0.640000051856, 2.91000005841, 0.960000010729, 3.52000007883, 0.850000009686, 3.88000009701, 1.4299999994, 3.30000010133, 1.16999998644, 3.15000009611, 0.52000005424, 3.78000006571, 0.190000057817, 4.06000006512, 0.840000045896, 3.20000012219, 1.51999998197, 3.74000005335, 0.96000002861, 3.6800001134, 0.0199999730289, 2.85000004917, -0.0700000229478, 2.36000007033, -0.230000023991, 3.09000014871, -0.97000004679, 2.88000004411, 1.16999999166, 3.05000008717, 0.289999953508, 4.4700000535, -0.289999965429, 3.37000008181, -0.3700000453, 2.95000004768, 0.0699999417365, 3.96000007406, 0.659999974221, 3.86000011429, 0.469999910444, 3.1700000982, 0.189999958724, 3.4900000757, -0.870000002831, 3.92000007659, -1.05999997422, 4.2400000675, 0.850000028312, 2.85000013337, 0.329999918193, 4.66000001967, -0.390000009388, 3.97000010788, 0.359999980927, 2.01000004351, -0.390000011623, 2.42000000432, -3.27825566693e-08, 2.97000008851, -0.840000036955, 2.78000003666, 1.03999998555, 2.56000006139, 0.0299999241531, 3.80000002384, -0.439999979585, 3.18000004113, -0.200000037998, 2.20999999583, 0.0199999387562, 3.36000002712, 0.619999900758, 3.79000000864, 0.759999867678, 3.12000005946, 0.689999961704, 3.17000004679, -0.160000047237, 3.74000003994, -0.739999984801, 3.86000001147, 0.170000012517, 3.05000004321, 1.07999987647, 3.8499999918, -0.0200000751019, 3.39000000119, 0.189999998212, 1.34000001833, -0.540000004172, 1.60999999732, -0.120000011027, 1.97000004455, -0.740000004172, 1.93000001803, 0.580000000894, 1.58000002921, -0.130000025481, 2.3, -0.669999948442, 2.17000000954, -0.230000004619, 1.36000000849, 0.129999959171, 2.09000001907, 0.149999959767, 2.37999998525, 0.219999936521, 2.09000004292, 0.309999989867, 2.04000000864, -0.489999997467, 2.24000003472, -0.82999995023, 2.34999999627, -0.149999988079, 1.95000000671, 0.639999939352, 2.58999997884, -0.100000025332, 2.15999997571, 0.269999967813, 1.59000003397, -0.759999992847, 1.25000003129, -0.540000028014, 2.21000007331, -1.15000002012, 2.03000000164, 0.289999991506, 1.97000004381, -0.830000032187, 2.85000003725, -0.919999965578, 2.4300000225, -0.619999999851, 1.54000001088, -0.820000011027, 2.09000003546, -0.310000043511, 2.72000001103, -0.410000042021, 2.3300000307, 0.199999957532, 2.12000004008, -0.530000002384, 2.83000001431, -1.44999996871, 2.77000001997, -0.719999981225, 2.19000006825, 0.0299999442697, 2.81999997973, -0.400000061095, 2.33999999374, -0.109999998063, 1.00999998912, 0.0900000071526, 0.560000021905, -0.209999989122, 1.08000002772, -0.679999966621, 1.13999999896, 0.0600000137091, 1.02000001773, -0.289999989271, 1.69000001609, -0.479999927878, 1.21000002488, -0.479999988973, 0.920000021458, -0.319999990165, 1.21000004128, 0.079999999404, 1.2100000383, 0.0199999953806, 0.840000030994, 0.240000008643, 1.6200000073, -0.199999962002, 1.58000001431, -0.54999993369, 1.33000002548, 0.270000022948, 1.12000004455, -0.00999998614192, 1.31999997526, -0.539999991506, 1.3200000155, 0.550000007451, 0.670000035614, 0.139999998212, 0.470000009537, 0.600000028312, 0.830000050068, -0.0699999938905, 0.890000010133, 0.320000011027, 0.38000001654, 0.509999988377, 1.13000003293, 0.510000030845, 1.12000002295, -0.0799999859929, 0.940000024289, -0.0299999956787, 0.820000021458, 0.329999993443, 0.740000019073, 0.409999994338, 0.950000029057, 0.44999999702, 0.810000014454, 0.450000036508, 1.27000000954, 0.290000009388, 1.31000002339, 0.320000006557, 0.770000029653, 0.779999997169, 0.650000014156, 0.209999998063, 0.870000023693, -0.180000030696, 0.660000013709, -0.0400000026822, 0.0800000038743, -0.200000023842, 0.600000032783, -0.50000000596, 0.30000000447, 0.0399999982119, 0.320000012517, -0.180000030696, 0.660000013709, -0.420000000596, 0.540000026524, -0.420000022948, 0.340000019073, -0.220000009537, 0.340000014603, -0.0400000041723, 0.280000014305, -0.300000025332, 0.300000020862, 0.0599999913573, 0.580000008345, -0.260000004768, 0.620000025928, -0.440000005662, 0.480000009835, -0.0600000032783, 0.220000015497, -1.63912776685e-08, 0.600000010431, -0.280000009835, 0.560000009239,
+
+L3_cTRMM_A_nn
+0.20000000298, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.40000000596, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.300000011921, 0.5, 0.600000023842, 0.40000000596, 0.40000000596, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.300000011921, 0.800000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.20000000298, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.10000000149, 0.699999988079, 0.5, 0.800000011921, 0.40000000596, 0.899999976158, 0.20000000298, 0.10000000149, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.40000000596, 0.899999976158, 0.10000000149, 0.5, 0.40000000596, 0.899999976158, 0.699999988079, 0.899999976158, 0.40000000596, 0.300000011921, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.40000000596, 0.699999988079, 0.5, 0.20000000298, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.300000011921, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.20000000298, 0.699999988079, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.600000023842, 0.800000011921, 0.800000011921, 0.5, 0.899999976158, 0.5, 0.5, 0.899999976158, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.5, 0.300000011921, 0.5, 0.899999976158, 0.600000023842, 0.40000000596, 0.40000000596, 0.699999988079, 0.800000011921, 0.699999988079, 0.699999988079, 0.40000000596, 0.699999988079, 0.899999976158, 0.300000011921, 0.899999976158, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.300000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.899999976158, 0.300000011921, 0.699999988079, 0.600000023842, 0.20000000298, 0.600000023842, 0.20000000298, 0.899999976158, 0.600000023842, 0.5, 0.5, 0.899999976158, 0.300000011921, 0.10000000149, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.800000011921, 0.20000000298, 0.20000000298, 0.699999988079, 0.5, 0.300000011921, 0.699999988079, 0.20000000298, 0.800000011921, 0.800000011921, 0.10000000149, 0.300000011921, 0.600000023842, 0.10000000149, 0.300000011921, 0.899999976158, 0.10000000149, 0.40000000596, 0.800000011921, 0.20000000298, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.800000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.300000011921, 0.800000011921, 0.5, 0.10000000149, 0.40000000596, 0.300000011921, 0.40000000596, 0.40000000596, 0.600000023842, 0.20000000298, 0.600000023842, 0.300000011921, 0.40000000596, 0.40000000596, 0.5, 0.800000011921, 0.40000000596, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.899999976158, 0.40000000596, 0.20000000298, 0.600000023842, 0.600000023842, 0.600000023842, 0.20000000298, 0.899999976158, 0.600000023842, 0.800000011921, 0.300000011921, 0.20000000298, 0.699999988079, 0.899999976158, 0.300000011921, 0.899999976158, 0.800000011921, 0.800000011921, 0.800000011921, 0.5, 0.600000023842, 0.699999988079, 0.40000000596, 0.300000011921, 0.899999976158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.10000000149, 0.800000011921, 0.40000000596, 0.699999988079, 0.20000000298, 0.300000011921, 0.800000011921, 0.600000023842, 0.40000000596, 0.20000000298, 0.800000011921, 0.600000023842, 0.5, 0.10000000149, 0.40000000596, 0.40000000596, 0.10000000149, 0.699999988079, 0.300000011921, 0.300000011921, 0.600000023842, 0.40000000596, 0.20000000298, 0.20000000298, 0.800000011921, 0.300000011921, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.20000000298, 0.300000011921, 0.40000000596, 0.699999988079, 0.20000000298, 0.40000000596, 0.20000000298, 0.300000011921, 0.40000000596, 0.5, 0.40000000596, 0.300000011921, 0.40000000596, 0.800000011921, 0.5, 0.699999988079, 0.40000000596, 0.20000000298, 0.800000011921, 0.699999988079, 0.899999976158, 0.699999988079, 0.5, 0.20000000298, 0.800000011921, 0.600000023842, 0.300000011921, 0.5, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.10000000149, 0.5, 0.10000000149, 0.20000000298, 0.20000000298, 0.40000000596, 0.40000000596, 0.40000000596, 0.10000000149, 0.899999976158, 0.699999988079, 0.699999988079, 0.600000023842, 0.600000023842, 0.899999976158, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.899999976158, 0.899999976158, 0.300000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.899999976158, 0.800000011921, 0.20000000298, 0.40000000596, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.800000011921, 0.40000000596, 0.800000011921, 0.40000000596, 0.20000000298, 0.5, 0.800000011921, 0.899999976158, 0.899999976158, 0.10000000149, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.300000011921, 0.600000023842, 0.300000011921, 0.40000000596, 0.800000011921, 0.899999976158, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.20000000298, 0.5, 0.600000023842, 0.699999988079, 0.300000011921, 0.600000023842, 0.40000000596, 0.600000023842, 0.300000011921, 0.40000000596,
+
+L3_cTRMM_o_RLT
+-0.0499999977648, 0.19999999851, 0.0, 0.690000020564, 0.220000025928, 1.24000003994, -0.119999972284, 1.80000002235, 0.499999985844, 2.47000002071, 1.51999994099, 2.52999999866, 0.29999999702, 2.84000002429, -0.530000004619, 4.62000002667, -0.110000024885, 4.5400000228, -0.339999979585, 3.36000003532, -1.12000000656, 3.98000002921, -0.0599999630451, 5.09000008389, -0.590000014603, 6.07000006318, 0.0400000190735, 5.19000006974, -0.629999966621, 5.10000006333, -0.809999958575, 5.26000009045, -0.469999935776, 7.20000013337, -0.190000001192, 0.419999999106, 0.10000000447, 0.63000001654, 0.430000026226, 1.04000003472, 0.570000022203, 1.91000001669, 1.29999997988, 1.78000002474, 1.81999998048, 2.8100000003, 1.06000002563, 3.38000003889, 0.929999952465, 5.0799999994, 1.58999994829, 4.72000002518, 1.24999997839, 4.06000001892, 0.209999980181, 4.28000007316, 1.21000002787, 5.49000013605, 1.09999997392, 5.90000008792, 0.83000001356, 5.43000014022, 0.890000019819, 5.60000008866, 0.989999984801, 6.77000004828, 1.35000002608, 7.62000014514, -0.539999993742, 0.969999961853, -0.0700000058115, 0.979999991953, 0.18000001207, 1.92000000432, 0.209999977201, 2.86999995068, 0.549999929965, 3.01999998197, 1.06999991044, 3.74999996051, -0.0899999855459, 4.6399999848, -0.390000008643, 4.98999997437, 0.939999930412, 5.1500000298, 0.389999995977, 3.47000006616, -0.52000011161, 4.48000004187, 0.51999998793, 6.350000076, 0.53999991551, 8.0200000684, 0.239999934137, 6.27000008255, 0.599999951571, 7.0100001061, -0.190000031739, 7.09000009581, -0.200000014156, 9.31000015229, -0.349999986589, 0.549999989569, 0.110000009984, 0.470000017732, 0.190000031739, 0.890000032485, 0.390000005662, 1.55000000969, 0.569999988675, 2.23000000462, 0.789999979585, 2.57999998152, 0.549999973178, 2.92000003859, 0.309999955595, 3.64000002131, 1.44999990836, 4.17000003189, 1.01999997079, 2.88000005081, 0.75999995932, 4.12000006616, 1.32000002369, 4.28000013053, 1.70999994591, 6.17000011235, 0.150000018626, 4.17000011086, 1.08999998629, 5.71000009939, 0.559999984652, 6.12000002593, 0.440000061542, 7.31000016198, -0.449999974668, 0.949999956787, 0.229999992698, 0.689999995977, 0.580000026226, 1.36000000328, 1.07999994725, 2.22999995619, 1.5099999541, 2.46000000328, 1.99999989942, 2.92999999642, 1.27999995321, 4.01999997824, 1.23999995053, 4.65999997795, 1.63999995723, 5.58999996766, 1.13999998704, 4.13000001952, 0.669999960363, 5.82000000432, 2.09999999553, 5.76000010684, 1.18999996915, 7.4600000748, 1.33999998108, 5.62000011757, 1.77999997109, 6.42000006616, 1.71999991044, 6.76000004724, 1.75999998987, 8.40000013933, -0.119999994636, 0.310000004768, -0.290000007898, 0.440000014603, -0.0499999880791, 0.870000042319, -0.489999992251, 1.46000004575, 0.34999999851, 2.01000004426, 0.619999993891, 3.05000002086, 0.26000002265, 2.95000007376, -0.610000015199, 4.52000000432, 1.12999991521, 5.20000003949, 0.799999967963, 4.41000006661, 0.339999928921, 4.64000010177, 0.449999976903, 6.20000017807, 0.459999905676, 7.94000013158, -0.470000032634, 6.16000015303, 0.519999950677, 7.09000008762, 0.149999950081, 8.36000007331, -0.59999993518, 9.28000022888, -0.119999994636, 0.310000004768, -0.249999997765, 0.40000000447, -0.149999988079, 1.0300000307, -0.719999984205, 1.30000001714, -0.0999999985099, 2.56000004351, 0.149999987334, 2.89000001311, -0.529999977052, 2.82000004828, -1.3499999471, 3.5400000079, -0.340000010133, 4.40000003129, -0.509999987632, 3.44000001386, -0.49000004366, 4.94000005037, -0.690000028759, 4.96000008896, 0.269999961108, 6.73000012755, -0.81000003159, 5.29000010625, -0.489999994487, 6.66000005543, -1.00000000298, 7.27999995396, -0.8699999924, 8.25000009984, -0.0499999977648, 0.19999999851, 0.0, 0.290000014603, 0.0900000093877, 0.6900000377, -0.0200000102818, 1.08000002399, 0.659999934733, 2.1600000532, 0.949999964982, 3.16000000328, 0.399999985844, 3.11000004947, -0.929999945015, 4.41000004798, 0.120000024438, 4.89000004515, 0.320000044554, 4.18000002176, -0.119999998361, 5.15000008568, 0.450000029802, 5.11000013292, 1.06999999613, 6.93000019833, -0.35999995634, 5.96000017613, 0.50000000447, 6.42000015557, -0.169999943972, 8.06000004351, 0.460000067353, 9.7000001274, -0.119999994636, 0.310000004768, 0.0299999986589, 0.440000011623, 0.340000024289, 0.830000035167, 0.130000006855, 1.45000002012, 0.629999998659, 1.88000003219, 0.509999994338, 2.63000002697, 0.280000000894, 3.23000005752, -0.760000001043, 4.45000000522, 0.0399999758601, 5.2600000301, 0.1199999924, 4.28000008658, 0.0399999579787, 5.1700001049, 0.60999996677, 6.03000015885, -0.130000023246, 8.57000011981, -0.380000005364, 6.47000017196, 0.0799999830127, 8.20000010282, 0.129999892861, 8.78000005901, -0.219999980479, 9.70000022873, -0.360000009239, 0.929999963641, -0.0300000075996, 0.320000003576, 0.25, 1.05000002235, 0.319999938756, 1.58000002399, 0.979999971837, 2.59000001535, 0.559999954849, 3.36999998719, 0.629999933094, 3.99000004515, -0.880000023991, 4.76999999836, 0.57999994427, 6.07000003561, -0.279999985993, 4.76000003904, 0.0199999335408, 5.36000010833, 0.269999950677, 5.7800001812, 0.599999976158, 8.3600001277, -0.709999995828, 5.8500001289, 0.689999985546, 7.53000014022, -0.420000028163, 8.05000004396, 0.150000028312, 9.57000013173,
+
+L3_zTRMM_A_mm
+0.9, 0.9, 0.6, 0.1, 0.9, 0.2, 0.2, 0.6, 0.9, 0.9, 0.7, 0.6, 0.8, 0.8, 0.4, 0.3, 0.4, 0.8, 0.9, 0.5, 0.0, 0.0, 0.7, 0.5, 0.8, 0.1, 0.9, 0.2, 0.3, 0.1, 0.4, 0.6, 0.7, 0.7, 0.9, 0.8, 0.3, 0.3, 0.7, 0.1, 0.0, 0.0, 0.0, 0.0, 0.4, 0.9, 0.1, 0.9, 0.1, 0.6, 0.5, 0.9, 0.8, 0.6, 0.3, 0.8, 0.6, 0.7, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.9, 0.8, 0.8, 0.4, 0.5, 0.7, 0.3, 0.6, 0.8, 0.6, 0.7, 0.7, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.6, 0.7, 0.2, 0.5, 0.8, 0.5, 0.9, 0.6, 0.1, 0.1, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.5, 0.8, 0.7, 0.1, 0.2, 0.2, 0.7, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.9, 0.1, 0.6, 0.5, 0.5, 0.8, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.1, 0.8, 0.9, 0.7, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.8,
+
+L3_zTRMM_B_mn
+0.8, 0.2, 0.7, 0.9, 0.2, 0.9, 0.2, 0.5, 0.1, 0.7, 0.6, 0.9, 0.4, 0.7, 0.2, 0.6, 0.4, 0.9, 0.1, 0.6, 0.3, 0.4, 0.5, 0.3, 0.9, 0.2, 0.6, 0.4, 0.2, 0.7, 0.8, 0.8, 0.2, 0.4, 0.9, 0.9, 0.5, 0.5, 0.3, 0.9, 0.7, 0.7, 0.2, 0.8, 0.4, 0.1, 0.5, 0.3, 0.2, 0.2, 0.4, 0.3, 0.9, 0.8, 0.3, 0.9, 0.8, 0.7, 0.1, 0.6, 0.6, 0.5, 0.1, 0.7, 0.4, 0.8, 0.6, 0.6, 0.6, 0.4, 0.4, 0.7, 0.1, 0.4, 0.9, 0.4, 0.9, 0.8, 0.6, 0.9, 0.4, 0.4, 0.7, 0.8, 0.9, 0.3, 0.8, 0.8, 0.1, 0.2, 0.7, 0.9, 0.4, 0.9, 0.4, 0.3, 0.4, 0.8, 0.7, 0.6, 0.2, 0.2, 0.1, 0.6, 0.5, 0.2, 0.2, 0.2, 0.7, 0.1, 0.7, 0.7, 0.1, 0.8, 0.9, 0.3, 0.7, 0.2, 0.8, 0.3, 0.2, 0.3, 0.4, 0.7, 0.8, 0.1, 0.8, 0.1, 0.2, 0.6, 0.8, 0.7, 0.9, 0.1, 0.4, 0.9, 0.1, 0.3, 0.1, 0.9, 0.2, 0.9, 0.1, 0.4, 0.5, 0.9, 0.2, 0.2, 0.4, 0.1, 0.7, 0.1, 0.6, 0.9, 0.5, 0.9, 0.9, 0.8, 0.2, 0.2, 0.7, 0.6, 0.8, 0.1, 0.8, 0.8, 0.6, 0.2, 0.4, 0.3, 0.2, 0.5, 0.6, 0.2, 0.1, 0.6, 0.5, 0.7, 0.5, 0.1, 0.7, 0.3, 0.8, 0.3, 0.5, 0.1, 0.2, 0.8, 0.8, 0.2, 0.7, 0.1, 0.5, 0.5, 0.1, 0.2, 0.5, 0.9, 0.5, 0.4, 0.4, 0.6, 0.8, 0.7, 0.8, 0.9, 0.8, 0.8, 0.8, 0.2, 0.4, 0.2, 0.8, 0.8, 0.6, 0.9, 0.9, 0.1, 0.5, 0.9, 0.8, 0.3, 0.6, 0.3, 0.2, 0.3, 0.1, 0.3, 0.9, 0.7, 0.2, 0.7, 0.7, 0.4, 0.4, 0.6, 0.1, 0.1, 0.5, 0.7, 0.3, 0.7, 0.6, 0.9, 0.9, 0.3, 0.7, 0.7, 0.7, 0.4, 0.8, 0.7, 0.3, 0.6, 0.7, 0.3, 0.8, 0.8, 0.1, 0.7, 0.1, 0.9, 0.8, 0.4, 0.6, 0.3, 0.7, 0.2, 0.6, 0.8, 0.4, 0.5, 0.9, 0.7, 0.1, 0.3, 0.3, 0.8, 0.8, 0.1, 0.7, 0.2, 0.7, 0.8, 0.3, 0.4, 0.6, 0.9, 0.1, 0.5, 0.1, 0.9, 0.4, 0.3, 0.2, 0.6, 0.4, 0.6, 0.1, 0.7, 0.7, 0.3, 0.2, 0.1, 0.4, 0.3, 0.9, 0.6, 0.9, 0.7, 0.5, 0.2, 0.8, 0.4, 0.4, 0.6, 0.5, 0.8, 0.5, 0.8, 0.4, 0.7, 0.9, 0.4, 0.9, 0.1, 0.6, 0.4, 0.2, 0.6, 0.4, 0.3, 0.9, 0.7, 0.1, 0.6, 0.3, 0.8, 0.8, 0.6,
+
+L3_zTRMM_o_LUN
+0.99, 6.8, 0.02, 7.17, -1.25, 5.9, 1.74, 5.65, 0.05, 7.46, -0.22, 7.01, 1.53, 6.09, 0.21, 6.39, 0.72, 6.71, 0.91, 6.4, 0.24, 5.61, 0.28, 5.43, 1.2, 6.83, 0.6, 6.05, -0.12, 7.12, 0.78, 6.95, 0.38, 5.06, 0.82, 5.65, 1.03, 4.89, 0.01, 4.43, 2.64, 4.23, 1.51, 5.86, 1.03, 5.44, 2.44, 4.73, 1.08, 4.45, 2.38, 4.09, 1.84, 5.37, 0.32, 4.06, 0.51, 4.36, 1.5, 4.54, 0.74, 4.48, 1.47, 5.03, 1.05, 4.76, 0.92, 4.3, -1.37, 4.53, -1.43, 4.04, -1.83, 3.27, 0.09, 4.58, -1.2, 5.42, -1.67, 4.98, -0.09, 4.66, -1.24, 5.15, -0.96, 4.71, -1.43, 4.75, -1.34, 3.21, -2.01, 3.87, -1.02, 4.76, -1.88, 4.17, -1.14, 4.85, -1.21, 4.59, -1.43, 3.4, -0.5, 4.98, -0.35, 4.62, -0.87, 4.09, 1.29, 4.26, 0.08, 5.69, -0.61, 5.01, 1.07, 4.73, 0.31, 4.83, 0.52, 5.05, -0.05, 4.84, -0.28, 4.6, -0.76, 3.49, 1.04, 4.74, -0.31, 4.81, 0.5, 5.3, 0.33, 4.44, -0.39, 4.48, -0.37, 3.18, -0.87, 2.69, -0.69, 3.19, 0.69, 2.49, -0.26, 3.09, 0.17, 3.02, 0.73, 2.93, -0.21, 2.79, -0.12, 3.33, -0.09, 3.36, -0.27, 2.12, -0.8, 1.88, -0.03, 3.26, -0.14, 3.12, 0.51, 2.92, -0.5, 2.7, 0.25, 2.16, 0.01, 3.61, 0.29, 3.37, 0.38, 2.73, 1.0, 2.68, 0.42, 2.9, 0.1, 3.2, 1.01, 3.16, -0.32, 2.79, 0.53, 2.95, 1.45, 2.9, 0.48, 2.21, -0.53, 2.31, 0.37, 2.38, -0.26, 3.17, 0.33, 2.29, -0.39, 2.82, 0.52, 2.76, -0.3, 2.91, -0.46, 2.24, -0.33, 2.09, 0.72, 2.0, -0.44, 2.5, -0.69, 2.81, -0.05, 2.53, -1.03, 2.39, 0.26, 2.15, -0.2, 2.04, -0.21, 1.25, -0.99, 1.27, -0.39, 2.4, -0.48, 2.01, -0.1, 2.2, -0.79, 1.86, 0.19, 1.48, 0.83, 2.44, 0.41, 1.45, 0.1, 1.75, 1.54, 1.51, 0.89, 1.78, 0.41, 2.24, 0.48, 1.75, -0.07, 2.22, 0.57, 1.2, 0.28, 1.62, 0.38, 1.43, -0.39, 1.67, 0.44, 1.45, 0.27, 1.56, 0.64, 1.5, 0.4, 1.42, 0.68, 1.52, 0.07, 0.47, -0.02, 0.24, -0.07, 0.29, 0.18, 0.3, 0.08, 0.28, -0.05, 0.43, -0.05, 0.27, -0.09, 0.41, -0.03, 0.25, -0.08, 0.3, 0.04, 0.24, -0.12, 0.24, -0.03, 0.27, -0.1, 0.32, 0.03, 0.27, -0.03, 0.17, 0.04, 0.28, 0.15, 1.14, 0.07, 1.21, 0.19, 0.54, 0.24, 0.92, -0.2, 0.74, -0.29, 0.96, -0.29, 0.96, -0.28, 0.81, 0.31, 1.0, 0.55, 0.79, 0.1, 0.76, -0.34, 0.58, 0.04, 0.53, 0.07, 1.21, -0.41, 0.5, -0.43, 0.8, 0.08, 1.06,
+
+L3_zTRMM_A_nn
+0.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.8, 0.5, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.4, 0.4, 0.8, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.7, 0.3, 0.7, 0.7, 0.1, 0.4, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.8, 0.2, 0.8, 0.4, 0.6, 0.1, 0.4, 0.3, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.9, 0.8, 0.3, 0.1, 0.7, 0.8, 0.7, 0.4, 0.1, 0.4, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.1, 0.2, 0.7, 0.5, 0.5, 0.8, 0.4, 0.9, 0.4, 0.9, 0.8, 0.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.7, 0.2, 0.6, 0.8, 0.6, 0.5, 0.8, 0.7, 0.1, 0.5, 0.1, 0.7, 0.6, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.7, 0.8, 0.9, 0.7, 0.9, 0.2, 0.2, 0.5, 0.7, 0.3, 0.2, 0.6, 0.4, 0.8, 0.4, 0.2, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.1, 0.1, 0.2, 0.8, 0.9, 0.5, 0.9, 0.5, 0.1, 0.8, 0.1, 0.7, 0.9, 0.3, 0.3, 0.4, 0.5, 0.6, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.6, 0.4, 0.8, 0.9, 0.4, 0.6, 0.1, 0.9, 0.8, 0.3, 0.4, 0.5, 0.2, 0.5, 0.9, 0.8, 0.9, 0.8, 0.2, 0.2, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.1, 0.7, 0.6, 0.8, 0.8, 0.3, 0.1, 0.9, 0.9, 0.6, 0.4, 0.9, 0.6, 0.3, 0.4, 0.4, 0.6, 0.3, 0.7, 0.9, 0.3, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.2, 0.9, 0.7, 0.1, 0.1, 0.1, 0.7, 0.5, 0.4, 0.4, 0.2, 0.4, 0.9, 0.4, 0.3, 0.9, 0.6, 0.1, 0.1, 0.6, 0.6, 0.9, 0.9, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.9, 0.8, 0.9, 0.3, 0.1, 0.6, 0.4, 0.2, 0.7, 0.5, 0.5, 0.9, 0.7, 0.8, 0.2, 0.9, 0.9, 0.8, 0.6, 0.6, 0.6, 0.5, 0.4, 0.9, 0.9, 0.9, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.1, 0.3, 0.9, 0.4, 0.4, 0.3, 0.8, 0.4, 0.2, 0.1, 0.9, 0.2, 0.1, 0.4, 0.8, 0.8, 0.7, 0.4, 0.8, 0.6, 0.6, 0.3, 0.6, 0.6, 0.8, 0.2, 0.3, 0.6, 0.3, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.8, 0.3, 0.5, 0.8, 0.5, 0.2, 0.1, 0.4, 0.1, 0.8, 0.1, 0.3, 0.1, 0.5, 0.3, 0.4, 0.7, 0.1, 0.9, 0.4, 0.8, 0.4, 0.5, 0.8, 0.1, 0.2, 0.9, 0.7, 0.9, 0.7, 0.0, 0.0, 0.5, 0.8, 0.1, 0.4, 0.3, 0.8, 0.5, 0.1, 0.7, 0.8, 0.2, 0.1, 0.7, 0.8, 0.4, 0.5, 0.8, 0.1, 0.1, 0.7, 0.6, 0.2, 0.1, 0.9, 0.3, 0.8, 0.6, 0.9, 0.8, 0.5, 0.3, 0.1, 0.4, 0.4,
+
+L3_zTRMM_o_RLT
+0.68, 0.34, 0.65, 1.39, 0.01, 1.64, -0.45, 2.23, -1.61, 2.3, -0.2, 3.47, -0.68, 4.18, -1.49, 3.94, -1.24, 5.33, -0.96, 4.94, -2.05, 6.79, -2.69, 6.35, -0.45, 6.88, -0.38, 9.54, -2.87, 6.99, -1.41, 7.93, -1.92, 8.22, 0.63, 0.99, 0.15, 1.79, 0.06, 1.66, -0.48, 2.3, -1.89, 2.65, -0.25, 3.97, 0.6, 4.21, -0.71, 4.07, -0.61, 4.96, 0.52, 5.05, -0.35, 6.57, -1.46, 6.6, -0.71, 6.71, -0.18, 9.45, -2.25, 7.34, -1.0, 7.84, -2.61, 8.77, 0.46, 0.48, 0.22, 1.23, -0.06, 1.03, -0.28, 1.58, -1.16, 2.42, 0.56, 3.61, 0.77, 4.34, 0.07, 4.48, 0.03, 5.49, 1.35, 5.4, 0.66, 7.17, -0.89, 7.1, -0.22, 7.77, 0.46, 10.3, -2.16, 8.22, -0.84, 8.38, -1.35, 8.4, -0.03, 0.56, -0.19, 0.76, 0.13, 0.7, -0.02, 0.88, -0.74, 1.76, 0.18, 2.32, 0.4, 3.54, 0.43, 3.24, 0.64, 4.16, 1.31, 4.65, 0.51, 5.56, -0.16, 6.16, 1.88, 6.69, 1.6, 7.75, 0.56, 6.56, 1.67, 6.56, 0.82, 8.05, 0.03, 0.29, -0.29, 0.79, -0.46, 1.29, -0.79, 1.27, -1.92, 1.53, -1.08, 2.27, -0.82, 2.93, -0.85, 3.44, -1.46, 3.96, -0.42, 4.12, -1.46, 7.03, -1.83, 5.73, -0.73, 6.4, -0.34, 8.42, -1.59, 7.39, -0.2, 8.02, -0.52, 7.91, 0.08, 0.49, 0.02, 0.78, 0.02, 1.02, -0.22, 1.48, -0.86, 1.68, -0.02, 2.45, 0.85, 3.46, 0.22, 3.14, 0.39, 3.69, 0.59, 4.02, 1.03, 5.49, 0.66, 6.04, 0.58, 5.5, 1.24, 7.87, -0.51, 6.34, 0.74, 6.02, -0.06, 7.53, 0.54, 0.97, 0.16, 1.92, 0.64, 1.47, -0.21, 1.83, -1.12, 3.08, 0.47, 4.34, 1.14, 5.05, 0.66, 5.18, 0.85, 6.78, 2.5, 5.61, 0.81, 7.2, -0.08, 6.99, 1.0, 7.67, 1.03, 10.52, -0.82, 7.62, -0.04, 7.88, -0.17, 8.78, 0.31, 0.73, -0.15, 1.37, 0.06, 1.61, -0.21, 1.83, -1.5, 2.66, 0.07, 3.83, 1.01, 4.59, -0.37, 5.05, -0.49, 6.0, 1.19, 6.21, 0.28, 7.13, -1.6, 7.11, -0.82, 7.62, 0.58, 10.38, -1.31, 7.82, -0.37, 8.84, -1.13, 8.87, 0.67, 0.81, 0.15, 1.45, 0.05, 1.28, -0.15, 1.65, -0.83, 2.31, 0.34, 3.32, 1.38, 3.71, 0.06, 3.88, -0.02, 5.03, 0.67, 4.99, -0.4, 6.3, -0.87, 6.21, -0.53, 5.9, -0.89, 8.76, -2.33, 6.27, -1.21, 6.44, -1.67, 6.86, 0.69, 0.72, 0.55, 1.73, 0.57, 1.31, 0.02, 2.04, -0.92, 2.86, 0.94, 4.17, 0.86, 4.52, 0.14, 4.3, 0.54, 6.13, 1.47, 5.42, 0.98, 7.12, -0.32, 6.92, 0.38, 7.38, 1.8, 10.75, -0.82, 7.84, -0.14, 7.28, -0.41, 9.23,
+
+L3_sTRSM_A_mm
+1.0, 4.0, 4.0, 2.0, 3.0, 6.0, 9.0, 9.0, 3.0, 8.0, 0.0, 2.0, 3.0, 8.0, 3.0, 6.0, 5.0, 1.0, 9.0, 5.0, 0.0, 0.0, 2.0, 2.0, 5.0, 7.0, 1.0, 8.0, 2.0, 1.0, 0.0, 0.0, 0.0, 5.0, 5.0, 8.0, 1.0, 1.0, 5.0, 2.0, 0.0, 0.0, 0.0, 0.0, 6.0, 6.0, 5.0, 6.0, 8.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 2.0, 1.0, 7.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 4.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 3.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0,
+
+L3_sTRSM_B_mn
+0.5, 0.6, 0.6, 0.8, 0.9, 0.2, 0.5, 0.7, 0.8, 0.7, 0.8, 0.6, 0.1, 0.2, 0.6, 0.4, 0.6, 0.2, 0.9, 0.6, 0.4, 0.2, 0.6, 0.4, 0.4, 0.1, 0.6, 0.2, 0.1, 0.2, 0.7, 0.1, 0.9, 0.2, 0.1, 0.5, 0.5, 0.6, 0.9, 0.6, 0.2, 0.4, 0.4, 0.9, 0.6, 0.4, 0.2, 0.2, 0.4, 0.4, 0.3, 0.4, 0.4, 0.5, 0.1, 0.7, 0.2, 0.3, 0.7, 0.3, 0.2, 0.9, 0.4, 0.8, 0.7, 0.7, 0.9, 0.4, 0.5, 0.1, 0.4, 0.3, 0.9, 0.1, 0.8, 0.3, 0.6, 0.7, 0.9, 0.7, 0.2, 0.1, 0.1, 0.8, 0.8, 0.6, 0.8, 0.2, 0.7, 0.4, 0.4, 0.8, 0.8, 0.3, 0.3, 0.3, 0.6, 0.6, 0.5, 0.9, 0.5, 0.7, 0.8, 0.5, 0.4, 0.8, 0.1, 0.5, 0.7, 0.7, 0.6, 0.6, 0.4, 0.9, 0.3, 0.9, 0.1, 0.9, 0.4, 0.3, 0.4, 0.1, 0.3, 0.5, 0.7, 0.4, 0.7, 0.1, 0.9, 0.1, 0.5, 0.7, 0.9, 0.9, 0.1, 0.6, 0.3, 0.8, 0.8, 0.5, 0.5, 0.5, 0.6, 0.4, 0.7, 0.7, 0.2, 0.4, 0.6, 0.5, 0.4, 0.4, 0.2, 0.1, 0.7, 0.4, 0.7, 0.1, 0.4, 0.4, 0.5, 0.1, 0.5, 0.5, 0.9, 0.9, 0.9, 0.6, 0.5, 0.1,
+
+L3_sTRSM_o_LUN
+1.46520638466, -1.54896688461, 1.99039387703, -2.01419639587, 1.81852555275, -0.895377159119, -1.13288402557, -0.886934757233, 4.2189283371, -1.06383061409, -1.27475452423, -3.97711014748, -3.44645786285, -3.54849243164, -2.61162471771, -1.03318476677, -1.06028676033, -0.666151702404, -0.401585698128, -1.12818288803, -0.364658713341, -0.545352995396, -0.39260995388, -0.161377370358, -0.200671315193, -1.51934599876, -0.355410814285, 0.0172800421715, 0.257222175598, 0.371354043484, 0.153767347336, 0.533437430859, -0.428796291351, 0.320115804672, -0.00877776741982, 0.209888875484, 0.397222280502, 0.205888926983, 0.133555576205, 0.169222265482, -0.0421110987663, -0.178222194314, 0.440888911486, 0.202777802944, -0.174555510283, -0.245333313942, -0.394999951124, -0.340666621923, -0.396999955177, -0.0332221984863, -0.263444423676, 0.0949467644095, 0.0233287215233, 0.131134271622, -0.0575671195984, 0.0300439726561, 0.0690300837159, -0.0392546504736, 0.0696573853493, 0.135557845235, 0.0204282253981, -0.0239398255944, -0.0935555547476, 0.000208348035812, 0.110284730792, -0.0436250045896, 0.0934073925018, -0.0557685121894, -0.144363433123, -0.428495377302, -0.0853009298444, -0.417349547148, 0.0290393531322, -0.261446774006, -0.22891202569, -0.391990721226, 0.0170254632831, -0.172511577606, -0.132893532515, -0.434444457293, -0.467708319426, -0.52253472805, -0.461875021458, -0.210740745068, -0.121898137033, 0.0496874935925, 0.345624983311, 0.0218749940395, 0.374062478542, 0.0165624953806, 0.158437490463, 0.204374969006, 0.326249986887, -0.122812509537, 0.129687488079, 0.276874989271, 0.490000009537, 0.496874988079, 0.444062501192, 0.474375009537, 0.219999998808, 0.148749992251, 0.140555560589, 0.112222224474, 0.105555564165, 0.177222236991, -0.0161111094058, 0.0605555549264, 0.132222220302, 0.10444444418, 0.12722222507, 0.0694444552064, 0.101111114025, 0.18666665256, 0.0500000044703, 0.148333325982, -0.0299999900162, 0.204444423318, 0.0288888923824, 0.0145833343267, -0.0291666667908, -0.0541666671634, -0.0229166653007, 0.0270833335817, 0.0395833328366, -0.00416666828096, 0.0416666641831, -0.0354166664183, 0.0479166582227, -0.0208333339542, 0.0, 0.0124999955297, 0.0437499955297, 0.0624999962747, -0.0333333350718, 0.0583333335817, 0.00555555894971, -0.177777782083, -0.0444444417953, -0.227777779102, 0.0388888902962, -0.0944444462657, -0.0777777731419, -0.155555546284, 0.0722222179174, -0.105555556715, -0.188888892531, -0.333333343267, -0.300000011921, -0.316666662693, -0.200000017881, -0.155555546284, -0.0111111104488, 0.0333333350718, 0.233333334327, 0.133333340287, 0.233333334327, 0.0333333350718, 0.133333340287, 0.133333340287, 0.166666671634, 0.0333333350718, 0.166666671634, 0.166666671634, 0.300000011921, 0.300000011921, 0.300000011921, 0.200000017881, 0.166666671634, 0.0333333350718,
+
+L3_sTRSM_A_nn
+0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.9, 0.6, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.8, 0.6, 0.6, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.9, 0.1, 0.9, 0.9, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.3, 0.7, 0.5, 0.6, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.5, 0.4, 0.3, 0.5, 0.7, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.2, 0.8, 0.5, 0.8, 0.7, 0.2, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2, 0.5, 0.1, 0.7, 0.7, 0.2, 0.1, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.8, 0.1, 0.2, 0.7, 0.8, 0.8, 0.6, 0.5, 0.8, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.6, 0.3, 0.5, 0.2, 0.7, 0.2, 0.3, 0.6, 0.1, 0.3, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.2, 0.6, 0.6, 0.5, 0.5, 0.7, 0.9, 0.4, 0.6, 0.4, 0.5, 0.9, 0.0, 0.0, 0.0, 0.0, 0.9, 0.2, 0.9, 0.6, 0.6, 0.2, 0.9, 0.5, 0.3, 0.1, 0.2, 0.1, 0.2, 0.3, 0.0, 0.0, 0.0, 0.6, 0.3, 0.4, 0.9, 0.8, 0.4, 0.7, 0.8, 0.9, 0.9, 0.7, 0.1, 0.6, 0.6, 0.4, 0.0, 0.0, 0.2, 0.5, 0.1, 0.6, 0.8, 0.9, 0.7, 0.6, 0.6, 0.6, 0.8, 0.8, 0.5, 0.4, 0.9, 0.1, 0.0, 0.3, 0.1, 0.8, 0.1, 0.5, 0.4, 0.3, 0.5, 0.8, 0.7, 0.3, 0.2, 0.2, 0.8, 0.2, 0.1, 0.6,
+
+L3_sTRSM_o_RLT
+1.25, -0.0416666269302, 4.95833301544, -10.4583330154, 17.4166660309, -16.9270839691, 19.171875, -8.31944561005, 2.2704873085, -10.9107666016, 1.33900761604, 21.1916599274, -10.291601181, -63.9414329529, 106.560028076, -791.99621582, 176.765274048, 0.5, 1.08333325386, 0.0833339691162, -3.4166674614, 5.16666793823, -5.14583396912, 7.23958396912, -3.19444537163, -0.690971434116, -0.428475856781, -9.7613363266, 13.096663475, -3.03346061707, -11.6049003601, 33.1082611084, -259.884613037, 49.2269973755, 0.25, 0.625, 1.625, -3.79166698456, 7.75, -9.34374904633, 9.71354103088, -3.09722232819, 0.756597876549, -1.20798754692, -9.01191520691, 15.5116615295, -6.41001653671, -26.284286499, 52.0520133972, -386.388214111, 80.1968383789, 1.0, -0.16666662693, 4.83333301544, -11.5000009537, 21.1666660309, -22.5833320618, 24.5416660309, -8.88889122009, 1.09722340107, -9.61944675446, -5.17684555054, 31.7799949646, -14.3599767685, -73.6030273438, 128.730529785, -966.596191406, 211.087921143, 1.25, -0.874999940395, 7.125, -13.9583339691, 24.75, -24.46875, 27.1927089691, -11.6527795792, 1.77465426922, -13.7982635498, 2.30984330177, 31.5983257294, -15.9633569717, -90.2416534424, 148.418395996, -1105.81958008, 248.000167847, 1.5, 0.0833333730698, 0.0833334922791, -2.0833337307, 3.16666698456, -2.3958325386, 4.78125095367, -2.91666698456, -1.29374969006, -0.814582705498, -3.94930410385, 8.84333133698, -2.62183618546, -10.1927108765, 26.7363319397, -218.988800049, 43.3896217346, 2.0, -0.833333313465, 6.16666650772, -12.5, 16.8333320618, -9.16666889191, 11.8333330154, -9.22222328186, 3.62222337723, -20.1777763367, 26.3259296417, 1.99333024025, -2.24361944199, -57.2452316284, 72.9840316772, -545.544616699, 136.073165894, 0.75, 0.0416666865349, 0.0416667461395, -1.20833349228, 3.58333349228, -4.07291555405, 4.49479198456, -1.3472224474, -0.870485842228, 1.71076393127, -10.1390028, 12.0483312607, -3.9380273819, -7.00769615173, 24.7647743225, -204.368988037, 36.0493278503, 0.75, 0.70833337307, 3.70833349228, -9.875, 15.9166679382, -15.2395820618, 18.2447910309, -8.12500095367, 1.45729315281, -8.99479103088, -4.4704785347, 22.7283267975, -7.77897167206, -53.1657066345, 96.0997085571, -728.817810059, 157.212936401, 0.25, 0.958333313465, -1.04166650772, 0.874999284744, -3.58333301544, 5.07291603088, -3.66145801544, 0.458334028721, -0.807291805744, 1.47812449932, -0.457289814949, -3.18166708946, 3.58205962181, 16.2832775116, -22.6479034424, 147.264984131, -37.0808677673,
+
+L3_dTRSM_A_mm
+6.0, 5.0, 8.0, 5.0, 2.0, 8.0, 5.0, 1.0, 4.0, 2.0, 0.0, 6.0, 5.0, 1.0, 8.0, 1.0, 4.0, 2.0, 3.0, 9.0, 0.0, 0.0, 2.0, 9.0, 1.0, 5.0, 7.0, 3.0, 9.0, 3.0, 0.0, 0.0, 0.0, 2.0, 2.0, 5.0, 7.0, 7.0, 9.0, 6.0, 0.0, 0.0, 0.0, 0.0, 8.0, 3.0, 2.0, 7.0, 2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 8.0, 5.0, 7.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 1.0, 6.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0,
+
+L3_dTRSM_B_mn
+0.5, 0.1, 0.8, 0.2, 0.7, 0.3, 0.1, 0.6, 0.5, 0.2, 0.2, 0.3, 0.6, 0.2, 0.2, 0.1, 0.3, 0.8, 0.1, 0.8, 0.9, 0.9, 0.2, 0.1, 0.8, 0.5, 0.4, 0.1, 0.8, 0.1, 0.7, 0.1, 0.7, 0.4, 0.4, 0.4, 0.1, 0.5, 0.3, 0.7, 0.2, 0.4, 0.2, 0.7, 0.2, 0.1, 0.5, 0.4, 0.4, 0.5, 0.2, 0.2, 0.1, 0.7, 0.5, 0.2, 0.1, 0.4, 0.3, 0.3, 0.1, 0.2, 0.8, 0.6, 0.6, 0.4, 0.1, 0.9, 0.7, 0.5, 0.1, 0.4, 0.2, 0.4, 0.3, 0.6, 0.1, 0.7, 0.2, 0.7, 0.4, 0.2, 0.2, 0.8, 0.2, 0.1, 0.7, 0.2, 0.9, 0.1, 0.8, 0.1, 0.3, 0.1, 0.8, 0.2, 0.9, 0.7, 0.2, 0.4, 0.4, 0.9, 0.5, 0.5, 0.4, 0.5, 0.9, 0.3, 0.7, 0.9, 0.8, 0.4, 0.4, 0.1, 0.1, 0.6, 0.7, 0.8, 0.3, 0.1, 0.7, 0.7, 0.3, 0.4, 0.9, 0.3, 0.8, 0.4, 0.2, 0.2, 0.9, 0.5, 0.4, 0.9, 0.9, 0.4, 0.9, 0.3, 0.7, 0.2, 0.7, 0.2, 0.6, 0.2, 0.5, 0.2, 0.7, 0.7, 0.6, 0.2, 0.1, 0.7, 0.2, 0.6, 0.7, 0.1, 0.2, 0.4, 0.1, 0.5, 0.6, 0.7, 0.9, 0.6, 0.4, 0.5, 0.7, 0.3, 0.2, 0.1,
+
+L3_dTRSM_o_LUN
+0.0674593874008, -0.373323102679, 0.250619109623, -0.372651909722, -0.110824962798, -0.952495039683, 0.301252480159, -0.119270213294, 0.33933500744, -0.21607514881, 0.205055493552, -0.00562282986111, 0.187065972222, 0.541959325397, -0.185227244544, -0.919556361607, 0.200939980159, -0.378703497024, -1.12616629464, 0.42337983631, -0.506848958333, -0.670329241071, -1.51952380952, -0.146949404762, -0.92173735119, -0.153565848214, -0.906183035714, -0.129242931548, 0.175169270833, 0.103645833333, 0.433720238095, -0.73763578869, -1.77744977679, 0.443050595238, 0.313973214286, 1.19915178571, -0.332901785714, 0.693125, 0.808794642857, 1.95616071429, -0.0428571428571, 0.996785714286, 0.0232589285714, 0.833571428571, -0.0123660714286, -0.0934375, -0.2, -0.673392857143, 0.835223214286, 2.19111607143, -0.475982142857, -0.0440736607143, -0.242332589286, 0.0528013392857, -0.17453125, -0.186283482143, -0.410089285714, 0.0102678571429, -0.199933035714, 0.0122433035714, -0.123616071429, 0.0194308035714, -0.008828125, 0.078125, 0.200357142857, -0.171729910714, -0.498024553571, 0.0608928571429, 0.0580022321429, -0.0565959821429, -0.0576227678571, -0.01546875, -0.0106808035714, -0.0697321428571, 0.000446428571429, -0.0173883928571, -0.0406361607143, -0.00102678571429, -0.0215736607143, -0.058671875, -0.053125, -0.0385714285714, -0.0730915178571, 0.00891741071429, -0.0514285714286, -0.115446428571, -0.135803571429, -0.0654464285714, -0.03625, -0.223839285714, -0.0185714285714, -0.189285714286, -0.287321428571, -0.252767857143, -0.104642857143, -0.100267857143, 0.049375, 0.025, -0.215714285714, -0.201696428571, -0.163482142857, 0.0207142857143, 0.0499107142857, 0.153839285714, -0.0375892857143, 0.10875, 0.144732142857, 0.0217857142857, 0.132142857143, 0.253035714286, 0.202946428571, 0.196071428571, 0.0579464285714, -0.073125, -0.025, 0.207857142857, 0.171160714286, 0.0708035714286, 0.0396428571429, -0.0746428571429, 0.00964285714286, 0.0753571428571, 0.015, -0.00392857142857, 0.112857142857, -0.0285714285714, 0.0378571428571, -0.0367857142857, -0.0842857142857, -0.0567857142857, 0.0675, 6.93889390391e-18, -0.0314285714286, 0.0903571428571, 0.0917857142857, 0.0414285714286, 0.0225, -0.0675, 0.0725, -0.005, 0.0275, 0.01, -1.38777878078e-17, -0.065, -0.0425, -0.11, -0.0025, 0.0275, -1.38777878078e-17, -0.08, -0.0325, 0.0575, 0.01, 0.12, 0.14, 0.02, 0.04, 0.08, 0.02, 0.1, 0.12, 0.14, 0.18, 0.12, 0.08, 0.1, 0.14, 0.06, 0.04, 0.02,
+
+L3_dTRSM_A_nn
+0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.2, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.7, 0.8, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.1, 0.8, 0.9, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.8, 0.7, 0.8, 0.3, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.5, 0.9, 0.5, 0.6, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.2, 0.1, 0.7, 0.8, 0.6, 0.5, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.5, 0.8, 0.8, 0.8, 0.6, 0.9, 0.5, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.3, 0.2, 0.2, 0.3, 0.2, 0.4, 0.8, 0.6, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.8, 0.1, 0.6, 0.2, 0.8, 0.1, 0.3, 0.2, 0.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.5, 0.6, 0.9, 0.8, 0.9, 0.3, 0.1, 0.6, 0.8, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.2, 0.5, 0.1, 0.5, 0.7, 0.8, 0.8, 0.1, 0.3, 0.2, 0.9, 0.6, 0.0, 0.0, 0.0, 0.0, 0.9, 0.4, 0.4, 0.1, 0.7, 0.6, 0.2, 0.2, 0.8, 0.8, 0.3, 0.3, 0.8, 0.4, 0.0, 0.0, 0.0, 0.3, 0.1, 0.8, 0.9, 0.4, 0.4, 0.9, 0.6, 0.7, 0.6, 0.2, 0.3, 0.3, 0.8, 0.7, 0.0, 0.0, 0.6, 0.3, 0.5, 0.1, 0.5, 0.8, 0.9, 0.3, 0.3, 0.5, 0.2, 0.1, 0.7, 0.6, 0.4, 0.3, 0.0, 0.4, 0.6, 0.9, 0.9, 0.7, 0.9, 0.2, 0.8, 0.4, 0.8, 0.2, 0.7, 0.9, 0.6, 0.1, 0.4, 0.7,
+
+L3_dTRSM_o_RLT
+0.555555555556, -1.44444444444, 1.4, -0.251851851852, -0.653333333333, 0.605185185185, -0.575111111111, 1.5635978836, -0.350548752834, -0.492165616864, 2.41928949358, -1.4215239215, -0.32576685983, 0.687357856723, -1.55104068435, -0.460651240234, -0.0668249165347, 0.888888888889, -2.61111111111, 1.4, 4.47037037037, -8.85333333333, -0.292037037037, 0.468222222222, 6.61756613757, -0.105922902494, -3.19099907617, 5.36577475435, 1.88985006019, -6.94746816998, 27.2790749139, -35.9615205641, 17.6737228874, -22.8409931072, 0.444444444444, 0.444444444444, -0.6, 1.78518518519, -2.18666666667, -0.398518518519, 0.00711111111112, 1.26306878307, 0.0351201814059, -0.0643634836651, -3.50119425548, 3.82691369223, -3.73240245234, 10.7776156883, -12.2439782121, 8.77068584173, -11.0944239527, 0.222222222222, -0.277777777778, 1.2, -1.10740740741, 0.306666666667, 0.150740740741, 1.08355555556, 0.0315343915344, -1.62815419501, 0.573850004199, 1.06845049131, -1.73797172532, 0.260862265894, 1.12333165365, -0.933043527817, -6.7320077972, 4.82082387292, 0.777777777778, -0.222222222222, -0.8, 3.20740740741, -4.82666666667, -0.655740740741, 0.862444444444, 2.73417989418, -0.322213151927, -0.700240026875, -2.4434164777, 4.85100422721, -6.36028516839, 19.5621218611, -23.6343706283, 14.799242671, -17.6038039532, 0.111111111111, 3.11111111111, -1.0, -1.7037037037, 4.13333333333, -1.17962962963, 0.237777777778, -2.57566137566, -1.29505668934, 2.35951457126, -7.47679516251, 3.27144648806, -1.24960401445, -2.20582850424, 6.690148952, -1.98253247723, 2.87346488765, 0.555555555556, 0.555555555556, -0.2, 0.348148148148, 0.826666666667, -1.14981481481, 0.970888888889, -0.242116402116, -1.09275283447, 0.595049802637, -0.697173091459, -1.22444002128, 0.891306836315, 0.375078945158, 0.103402950245, -1.75868379611, 0.986152500282, 0.111111111111, 3.11111111111, -2.20606726491e-15, -6.37037037037, 11.5333333333, -0.037962962963, -0.732222222222, -6.08042328042, -2.36117913832, 4.04449567481, -6.97067271353, -1.90430811008, 3.75936612917, -21.7177143697, 33.4798733338, -18.1277933982, 21.68599013, 1.0, -2.0, 0.8, 2.2, -4.44, 0.14, 0.912, 2.13142857143, -0.169306122449, -0.738176870748, 3.14530612245, -0.280707482993, -1.61797278912, 7.84074829932, -12.52898931, 6.62129640428, -7.17676856865, 0.666666666667, 1.16666666667, -1.2, 0.477777777778, 0.96, -1.41277777778, 1.20866666667, -1.00825396825, -0.489850340136, 1.30301486521, -3.07192743764, 0.761796086336, 0.257254598136, 0.094609473419, 0.00809406831515, -1.1310244894, 0.493807445914,
+
+L3_cTRSM_A_mm
+8.0, 2.0, 8.0, 1.0, 3.0, 2.0, 2.0, 3.0, 4.0, 9.0, 2.0, 9.0, 3.0, 7.0, 3.0, 9.0, 4.0, 4.0, 4.0, 1.0, 0.0, 0.0, 6.0, 1.0, 8.0, 8.0, 6.0, 9.0, 5.0, 6.0, 1.0, 8.0, 9.0, 4.0, 4.0, 7.0, 4.0, 5.0, 6.0, 9.0, 0.0, 0.0, 0.0, 0.0, 3.0, 8.0, 1.0, 3.0, 2.0, 3.0, 2.0, 6.0, 1.0, 3.0, 9.0, 1.0, 7.0, 3.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 7.0, 8.0, 5.0, 3.0, 7.0, 8.0, 5.0, 4.0, 5.0, 1.0, 1.0, 7.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 5.0, 6.0, 5.0, 9.0, 5.0, 2.0, 7.0, 1.0, 4.0, 7.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 9.0, 7.0, 2.0, 9.0, 8.0, 2.0, 5.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 5.0, 3.0, 4.0, 5.0, 3.0, 7.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 4.0, 6.0, 2.0, 9.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.0, 8.0, 7.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 7.0,
+
+L3_cTRSM_B_mn
+0.20000000298, 0.899999976158, 0.800000011921, 0.699999988079, 0.40000000596, 0.5, 0.899999976158, 0.40000000596, 0.800000011921, 0.800000011921, 0.600000023842, 0.40000000596, 0.300000011921, 0.5, 0.899999976158, 0.20000000298, 0.899999976158, 0.699999988079, 0.800000011921, 0.300000011921, 0.10000000149, 0.300000011921, 0.5, 0.10000000149, 0.699999988079, 0.699999988079, 0.5, 0.300000011921, 0.300000011921, 0.800000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.5, 0.300000011921, 0.10000000149, 0.600000023842, 0.10000000149, 0.300000011921, 0.800000011921, 0.899999976158, 0.20000000298, 0.800000011921, 0.40000000596, 0.20000000298, 0.20000000298, 0.300000011921, 0.5, 0.699999988079, 0.800000011921, 0.800000011921, 0.800000011921, 0.5, 0.5, 0.40000000596, 0.600000023842, 0.5, 0.699999988079, 0.699999988079, 0.699999988079, 0.10000000149, 0.699999988079, 0.40000000596, 0.5, 0.20000000298, 0.899999976158, 0.10000000149, 0.20000000298, 0.600000023842, 0.300000011921, 0.20000000298, 0.899999976158, 0.20000000298, 0.300000011921, 0.800000011921, 0.10000000149, 0.20000000298, 0.300000011921, 0.600000023842, 0.800000011921, 0.40000000596, 0.10000000149, 0.20000000298, 0.300000011921, 0.699999988079, 0.899999976158, 0.10000000149, 0.899999976158, 0.5, 0.699999988079, 0.5, 0.600000023842, 0.5, 0.20000000298, 0.899999976158, 0.5, 0.699999988079, 0.10000000149, 0.10000000149, 0.300000011921, 0.300000011921, 0.800000011921, 0.5, 0.600000023842, 0.300000011921, 0.899999976158, 0.699999988079, 0.10000000149, 0.300000011921, 0.10000000149, 0.40000000596, 0.600000023842, 0.600000023842, 0.10000000149, 0.899999976158, 0.20000000298, 0.600000023842, 0.600000023842, 0.899999976158, 0.20000000298, 0.20000000298, 0.5, 0.20000000298, 0.10000000149, 0.40000000596, 0.600000023842, 0.300000011921, 0.20000000298, 0.899999976158, 0.300000011921, 0.300000011921, 0.40000000596, 0.40000000596, 0.40000000596, 0.10000000149, 0.20000000298, 0.5, 0.899999976158, 0.800000011921, 0.10000000149, 0.5, 0.5, 0.10000000149, 0.600000023842, 0.899999976158, 0.899999976158, 0.800000011921, 0.300000011921, 0.899999976158, 0.20000000298, 0.300000011921, 0.20000000298, 0.600000023842, 0.10000000149, 0.40000000596, 0.800000011921, 0.800000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.10000000149, 0.5, 0.699999988079, 0.10000000149, 0.10000000149, 0.10000000149, 0.300000011921, 0.899999976158, 0.800000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.10000000149, 0.10000000149, 0.20000000298, 0.5, 0.20000000298, 0.899999976158, 0.10000000149, 0.5, 0.10000000149, 0.800000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.300000011921, 0.10000000149, 0.5, 0.600000023842, 0.300000011921, 0.40000000596, 0.699999988079, 0.600000023842, 0.40000000596, 0.600000023842, 0.300000011921, 0.800000011921, 0.699999988079, 0.5, 0.899999976158, 0.600000023842, 0.300000011921, 0.20000000298, 0.699999988079, 0.5, 0.699999988079, 0.899999976158, 0.699999988079, 0.800000011921, 0.899999976158, 0.600000023842, 0.10000000149, 0.600000023842, 0.20000000298, 0.300000011921, 0.899999976158, 0.5, 0.40000000596, 0.10000000149, 0.20000000298, 0.300000011921, 0.5, 0.699999988079, 0.800000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.899999976158, 0.300000011921, 0.899999976158, 0.20000000298, 0.899999976158, 0.800000011921, 0.40000000596, 0.300000011921, 0.20000000298, 0.10000000149, 0.800000011921, 0.5, 0.5, 0.899999976158, 0.20000000298, 0.800000011921, 0.40000000596, 0.600000023842, 0.40000000596, 0.40000000596, 0.10000000149, 0.40000000596, 0.600000023842, 0.300000011921, 0.5, 0.300000011921, 0.10000000149, 0.10000000149, 0.600000023842, 0.10000000149, 0.300000011921, 0.5, 0.899999976158, 0.10000000149, 0.5, 0.699999988079, 0.5, 0.600000023842, 0.300000011921, 0.5, 0.600000023842, 0.10000000149, 0.300000011921, 0.5, 0.899999976158, 0.699999988079, 0.5, 0.600000023842, 0.10000000149, 0.800000011921, 0.300000011921, 0.600000023842, 0.899999976158, 0.300000011921, 0.10000000149, 0.600000023842, 0.10000000149, 0.10000000149, 0.699999988079, 0.10000000149, 0.800000011921, 0.40000000596, 0.300000011921, 0.899999976158, 0.10000000149, 0.899999976158, 0.20000000298, 0.20000000298, 0.10000000149, 0.899999976158, 0.699999988079, 0.300000011921, 0.600000023842, 0.10000000149, 0.699999988079, 0.40000000596, 0.300000011921, 0.10000000149, 0.899999976158, 0.20000000298, 0.600000023842, 0.699999988079, 0.300000011921, 0.40000000596, 0.800000011921, 0.800000011921, 0.899999976158, 0.699999988079, 0.5, 0.699999988079, 0.40000000596, 0.699999988079, 0.20000000298, 0.899999976158, 0.699999988079, 0.10000000149, 0.10000000149, 0.300000011921, 0.20000000298, 0.40000000596, 0.800000011921, 0.699999988079, 0.40000000596, 0.600000023842, 0.699999988079, 0.10000000149, 0.899999976158, 0.40000000596, 0.800000011921, 0.300000011921, 0.600000023842, 0.699999988079, 0.699999988079,
+
+L3_cTRSM_o_LUN
+0.329132588213, 0.290983445686, 0.518608890416, 0.450196678153, 0.59571196627, 0.333239109024, 0.807574982661, -0.307282948652, 0.532035038056, -0.166371615227, 0.396249635758, -0.0151301144297, 0.215690257052, -0.345604787386, 0.748164415979, -0.267674370174, 0.0230110472586, -0.054737867756, 0.29684452105, -0.153817808947, 0.14229890285, 0.0778728674113, 0.416792329049, -0.204635719884, 0.412984492231, 0.135348752859, 0.631664019438, 0.49230799723, 0.632190181758, 0.0104684502782, 0.337012656824, -0.32228511293, 0.328758498139, 0.056546513907, -0.480492886975, -0.413052117291, -0.823867218711, -0.664741879488, -0.87659115525, -0.472506386307, -0.823887182769, 0.601166816594, -0.646982430633, 0.23380446764, -0.450590407047, -0.12590112238, -0.407571331233, 0.340184591706, -0.790302344175, 0.320752521432, 0.00225306717399, 0.0680875999274, -0.260370712498, 0.0420986120425, -0.138956112778, -0.0997526423358, -0.339441849887, -0.00149673230105, -0.36340069964, -0.290458217323, -0.795143312374, -0.692900475193, -0.754201690112, 0.222163757593, -0.201301434402, 0.295653097511, -0.317864896997, -0.257372231279, 0.473204254415, -0.0511578474303, 0.776631765195, -0.299306031636, 0.77534765503, -0.0988899177863, 0.233904499388, -0.699907489587, 0.349208153287, -0.537165320026, 0.367858800363, -0.142890125039, 0.170325758528, -0.452782048209, 0.415971872253, -0.532645494953, -0.0224603350875, -0.0362953265799, 0.211016081385, -0.173731075134, 0.217661533137, 0.0449093984318, 0.383660994825, -0.111264311302, 0.536568362345, 0.0401773954804, 0.735559101649, 0.214556970308, 0.324030905281, -0.440376627925, 0.0893926728849, -0.10017952398, 0.446071807497, -0.0677657625545, -0.44786413179, 0.539273296714, -0.243963300324, 1.33049162938, -0.483647044419, 0.884941168953, 0.308416184748, 0.420066381715, 0.0879201118076, 0.728919060165, -0.350498418455, 0.544288094865, 0.0369674484374, 0.692570792665, -0.0529057724369, 0.629825082104, 0.0808144226271, 0.0467457051333, -0.0832147547532, 0.398661367271, -0.336831347372, 0.145000576864, -0.50130529731, 0.418361500248, -0.752655616474, 0.455224091141, -0.789686869352, 0.331402634912, 0.159779003254, 0.45480297157, -0.175209524234, -0.0684370114627, -0.645024480938, 0.514515369092, 1.01798421074, 0.265736825651, 1.79507192861, -0.351450690041, 1.47686610636, 0.131430006596, 0.472894345416, -0.631143938025, 0.951318859842, -0.575110593075, 0.899727768759, 0.0602936616812, 0.967481467645, -0.493097453218, 0.976572440131, -0.176342152909, 0.0323085948794, -0.169432819907, 0.587679912908, -0.152717166778, 0.267770683165, 0.305291273015, 0.871964895125, 0.518556298855, 1.08468911466, 0.756843205244, 0.872120402327, 0.945645313259, 0.482536367515, -0.339251893584, 0.116576581664, 0.272477384295, 1.00996556082, 0.448549974153, -1.01187196302, -0.31068589079, -1.86004791772, 0.238580597367, -1.6270790887, -0.22210951623, -0.615089810619, 0.76630010891, -0.951613075389, 0.650753261395, -0.930374968557, -0.137471270174, -0.887196193697, 0.49220926558, -1.02710780924, 0.260015430996, -0.0178976789243, 0.0906117130146, -0.637543531318, 0.207283128951, -0.348201005626, -0.352171984869, -0.945315117009, -0.448338017751, -1.15201692465, -0.763114307642, -1.00379624616, -1.08615326276, -0.686885214367, 0.401387322611, -0.121636766229, -0.123993655176, -0.941323687807, -0.481315418513, 0.11861660694, 0.0630726204339, 0.195093698521, -0.00668271511545, 0.204411762255, 0.0926470568598, 0.154216552534, -0.000722285451242, 0.175800364411, -0.0284357121106, 0.181721752362, 0.0162675655527, 0.13067412641, -0.0935645461459, 0.188144190454, 0.0368688201022, 0.0395887542365, -0.0421980777833, 0.188625717074, -0.0478201446893, 0.111979448349, 0.0135150982211, 0.216410719047, 0.00424908861064, 0.175162676832, 0.109057773248, 0.152492182456, 0.205765221906, 0.140415149467, -0.010684541591, 0.10612962379, 0.0117972407341, 0.134643416818, 0.0549453437059, -0.0362297860894, 0.0108635910998, -0.00440570980204, 0.0158109581322, -0.0396551737629, -0.024137931592, -0.17842919669, -0.00143804813476, -0.0942592291516, 0.0119736031608, -0.0283147659565, 0.116657768817, -0.0782842501779, 0.0731499820128, -0.218812934101, -0.0149527034405, 0.0232873069137, 0.0949992401876, -0.0418484890436, 0.124858864666, -0.0071330532252, 0.0886939211777, -0.0676952999152, 0.100949799671, -0.0949153199515, 0.0348909098063, -0.0708613017987, -0.116367864913, -0.0742790641199, -0.0434963353749, -0.0945643919643, 0.0220514191565, -0.0806835498735, 0.034574303601, -0.009429360049, -0.031095514469, -0.0375648450662, 0.033079031856, -0.0551724140878, -0.0379310345864, -0.0628318563627, 0.0575221237301, -0.081354896179, 0.0417454966779, -0.0501678348552, 0.0267927948184, -0.0134574309546, 0.111931642263, -0.0819652081468, 0.111901127459, 0.0271284720944, -0.00341775973586, 0.0187671625936, -0.0322856240027, -0.0560573726883, -0.0512053688916, -0.0749465972094, 0.0551113803662, -0.0206286260585, 0.0112603037576, -0.0586512000333, -0.0280439403109, -0.0702166642094, 0.0364052478609, -0.0484589589035, -0.00964296580743, -0.0623130905858, 0.0928898359313, 0.0827586237213, 0.00689655259765, 0.0724137939256, -0.068965515186, 0.117241381057, -0.0068965518269, 0.149999997739, -0.0500000026719, 0.0965517235213, -0.0586206882164, 0.0844827587235, -0.0637931017012, 0.0603448273293, -0.0741379294416, 0.131034480087, -0.0724137908426, 0.0172413795673, -0.0068965518269, 0.0396551733901, -0.0258620702501, 0.117241381057, -0.0068965518269, 0.0844827587235, -0.0637931017012, 0.115517241174, -0.0362069000458, 0.113793100648, 0.0344827572076, 0.117241381057, -0.0068965518269, 0.0879310379768, -0.00517241399864, 0.120689653117, -0.0482758612468,
+
+L3_cTRSM_A_nn
+0.300000011921, 0.40000000596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.699999988079, 0.300000011921, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.40000000596, 0.10000000149, 0.5, 0.5, 0.20000000298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.10000000149, 0.699999988079, 0.40000000596, 0.20000000298, 0.10000000149, 0.600000023842, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.40000000596, 0.10000000149, 0.300000011921, 0.899999976158, 0.899999976158, 0.300000011921, 0.20000000298, 0.300000011921, 0.300000011921, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.699999988079, 0.899999976158, 0.899999976158, 0.300000011921, 0.20000000298, 0.10000000149, 0.20000000298, 0.300000011921, 0.699999988079, 0.600000023842, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.800000011921, 0.5, 0.40000000596, 0.5, 0.699999988079, 0.800000011921, 0.300000011921, 0.699999988079, 0.5, 0.800000011921, 0.20000000298, 0.5, 0.800000011921, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.800000011921, 0.600000023842, 0.600000023842, 0.699999988079, 0.300000011921, 0.800000011921, 0.10000000149, 0.20000000298, 0.10000000149, 0.600000023842, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.600000023842, 0.600000023842, 0.5, 0.699999988079, 0.300000011921, 0.600000023842, 0.600000023842, 0.699999988079, 0.899999976158, 0.800000011921, 0.800000011921, 0.300000011921, 0.40000000596, 0.699999988079, 0.20000000298, 0.899999976158, 0.300000011921, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40000000596, 0.40000000596, 0.5, 0.10000000149, 0.40000000596, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.899999976158, 0.699999988079, 0.899999976158, 0.899999976158, 0.600000023842, 0.20000000298, 0.699999988079, 0.600000023842, 0.300000011921, 0.600000023842, 0.699999988079, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.10000000149, 0.5, 0.10000000149, 0.5, 0.800000011921, 0.300000011921, 0.20000000298, 0.20000000298, 0.600000023842, 0.699999988079, 0.699999988079, 0.40000000596, 0.10000000149, 0.600000023842, 0.300000011921, 0.300000011921, 0.699999988079, 0.40000000596, 0.10000000149, 0.10000000149, 0.10000000149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.300000011921, 0.699999988079, 0.20000000298, 0.10000000149, 0.10000000149, 0.40000000596, 0.5, 0.899999976158, 0.600000023842, 0.600000023842, 0.300000011921, 0.300000011921, 0.5, 0.800000011921, 0.699999988079, 0.300000011921, 0.800000011921, 0.20000000298, 0.10000000149, 0.300000011921, 0.699999988079, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.800000011921, 0.800000011921, 0.800000011921, 0.600000023842, 0.600000023842, 0.20000000298, 0.5, 0.10000000149, 0.40000000596, 0.699999988079, 0.5, 0.10000000149, 0.800000011921, 0.699999988079, 0.300000011921, 0.699999988079, 0.899999976158, 0.800000011921, 0.40000000596, 0.600000023842, 0.699999988079, 0.699999988079, 0.300000011921, 0.699999988079, 0.600000023842, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.20000000298, 0.40000000596, 0.20000000298, 0.20000000298, 0.899999976158, 0.300000011921, 0.5, 0.300000011921, 0.899999976158, 0.699999988079, 0.899999976158, 0.300000011921, 0.5, 0.699999988079, 0.699999988079, 0.800000011921, 0.600000023842, 0.800000011921, 0.699999988079, 0.800000011921, 0.20000000298, 0.600000023842, 0.899999976158, 0.800000011921, 0.800000011921, 0.899999976158, 0.800000011921, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10000000149, 0.10000000149, 0.5, 0.5, 0.300000011921, 0.10000000149, 0.800000011921, 0.899999976158, 0.699999988079, 0.300000011921, 0.20000000298, 0.40000000596, 0.40000000596, 0.300000011921, 0.300000011921, 0.600000023842, 0.20000000298, 0.40000000596, 0.10000000149, 0.300000011921, 0.600000023842, 0.10000000149, 0.20000000298, 0.600000023842, 0.800000011921, 0.300000011921, 0.40000000596, 0.5, 0.800000011921, 0.800000011921, 0.0, 0.0, 0.0, 0.0, 0.899999976158, 0.20000000298, 0.300000011921, 0.800000011921, 0.699999988079, 0.300000011921, 0.300000011921, 0.10000000149, 0.699999988079, 0.600000023842, 0.800000011921, 0.20000000298, 0.699999988079, 0.5, 0.899999976158, 0.800000011921, 0.5, 0.5, 0.300000011921, 0.20000000298, 0.20000000298, 0.899999976158, 0.699999988079, 0.300000011921, 0.5, 0.300000011921, 0.699999988079, 0.10000000149, 0.20000000298, 0.699999988079, 0.600000023842, 0.899999976158, 0.0, 0.0, 0.699999988079, 0.699999988079, 0.699999988079, 0.300000011921, 0.899999976158, 0.699999988079, 0.699999988079, 0.10000000149, 0.300000011921, 0.300000011921, 0.300000011921, 0.300000011921, 0.5, 0.10000000149, 0.300000011921, 0.300000011921, 0.40000000596, 0.600000023842, 0.20000000298, 0.699999988079, 0.800000011921, 0.40000000596, 0.40000000596, 0.800000011921, 0.699999988079, 0.10000000149, 0.800000011921, 0.300000011921, 0.20000000298, 0.10000000149, 0.300000011921, 0.600000023842, 0.40000000596, 0.10000000149,
+
+L3_cTRSM_o_RLT
+1.67999991632, 0.759999968529, -1.69538434108, -2.48307671443, -0.33931028015, 1.8317238564, 1.75765674459, 3.06021323111, 0.585745284258, -6.85189338833, -1.63353699604, 6.67286980754, 0.000959390164332, 0.216487260406, -0.727348486408, -3.1358742578, -10.1429168345, 4.3685838467, 7.71081038778, -8.7110985358, 65.6802732624, 9.92302133024, -29.4099425286, -16.6939457264, -24.8344729512, -10.4877177906, 28.4642727556, 23.3848352086, -11.8524871075, 19.0874764207, -19.9631034063, -31.8548662784, -139.885318318, 27.1869354532, 0.520000008583, -0.360000002503, -0.119999954985, 0.159999991408, 0.801379300572, 1.02344824357, 1.19448260124, -0.293793071317, -1.85724112856, -3.17310319017, -0.609790967585, 3.04011264086, -0.361343777873, 1.52979339832, 0.931884405582, -1.71123304671, 0.248635733027, 1.57473051435, -0.192799010887, -2.7172814814, 6.80443254935, -7.89169301645, -4.22216516114, 4.51843426281, -4.49336734933, 0.917969187391, 4.36693978702, -0.535341848317, 3.59140682231, 3.09039986078, -8.29561445716, -0.38186485114, -5.04546803723, 18.766682786, 1.20000002623, -0.599999995232, -1.89230775479, 3.06153831848, 3.04827576645, -0.17931025339, 3.14993181827, -2.91685386908, -9.56824289783, 2.45004130334, 10.2381901924, -1.50468017004, -0.225730006256, -2.88434154029, -3.83194620666, 1.44183565442, 5.6183924538, 18.6532356715, -12.3068309129, -8.50922080102, 22.0776695017, -93.0940213305, -28.0425331456, 37.1303660105, -19.0967213639, 33.8218691411, 41.9847843332, -37.8252941288, 22.8627220686, 19.1052532302, -47.2094044371, 26.4297586128, 20.7991151033, 202.687902914, 1.56000000191, -0.0799999508858, -2.51384609398, 1.24923055492, 2.81793083241, 0.104827602781, 2.17567688944, -0.688748708747, -7.97975692369, 0.520548951678, 8.61388753898, 0.565967103179, 1.19720571237, -2.27396124285, -2.82715461133, 0.203501372167, 0.165392174888, 10.1741900769, -6.71005472238, -6.25503436169, 12.9058433932, -44.6834068804, -11.0757742946, 17.4501156854, -11.3760300002, 16.866416402, 20.2825001837, -15.4983088186, 12.1816651301, 6.58157547078, -25.1364964735, 15.4060069199, 7.79243016012, 88.9124742882, 2.03999990988, 0.279999989033, -3.85538420434, -2.60307674094, 0.395862053267, 3.52965478575, 2.80075066828, 4.37119179344, -1.49417981798, -11.7043190143, 0.563008016326, 11.1883233417, 1.63603714951, 0.287903545504, -1.32969693006, -3.37608500479, -15.8803174444, 5.45970314172, 9.64624356726, -12.769162384, 83.7781785236, 1.0282072251, -37.8717061034, -12.7808478524, -34.6731579882, -9.80879193149, 38.3240707105, 24.4324370684, -8.26559310622, 24.0229074031, -32.2435529464, -34.6351508366, -159.359885665, 54.7649451264, 0.439999995112, 0.0800000045299, -0.870769185026, -0.326153836442, 0.733793103045, 1.27448270522, 1.08728067783, 1.60601895099, -2.31665473867, -4.03289125767, 1.44985876196, 4.56110908056, 1.58318353146, -0.332410652563, -0.897702513666, -2.58073502069, -8.34227645985, 3.31803439919, 3.92590632128, -5.7896042397, 44.665809798, 10.567607219, -17.0654718408, -14.0594508363, -18.0085829768, -9.3014064921, 19.955841365, 21.5047227326, -8.78300196637, 9.16611021857, -13.4134128091, -20.8476712848, -98.2515099469, 6.05619155639, 1.71999993944, 0.0400000052452, -1.85846138447, -0.547692215793, 1.78068968207, 1.67172392491, 1.45395633132, 0.634932834626, -5.97644416334, -5.59734076626, 3.82604135329, 7.63881801064, 1.7246691959, 1.02484299446, -2.72301495574, -3.37893397943, -5.25597054885, 8.81631803923, 1.0811224398, -10.328733993, 52.0361342214, -30.6214656454, -28.2304782516, 6.23471149207, -26.5030593691, 6.0761789177, 34.719761658, 0.878809790678, 5.1075849796, 18.1310021403, -36.0624237836, -9.53757355549, -78.7473293002, 96.4253813812, 1.39999996901, -0.199999978542, -1.78461527254, -0.876923010455, 1.13103452765, 1.22758607577, 1.67544605794, 1.90254481531, -4.84229665654, -4.57615051408, 3.60703618702, 6.5574875994, 2.19719852196, 0.653175535422, -2.91755171075, -3.20928638183, -7.07749782598, 6.82274143327, 1.7291711383, -9.33758466576, 57.2116644619, -12.5388509499, -27.5637334594, -5.35888354408, -25.1267129094, -1.22995412304, 32.4091243293, 12.2799900392, -3.36058089806, 16.7269071597, -27.9420386115, -16.9115321538, -106.749841706, 64.3199559284, 1.63999995279, -0.519999948978, -3.45538428301, 0.196922946733, 2.47172394154, 1.81931013513, 3.79459972803, 1.99635529703, -9.68749971232, -5.82861334931, 8.3822122484, 7.38774878553, 2.76373567412, 0.197721735731, -3.40276542304, -2.55056141222, -5.53076170098, 9.16103128127, -2.24440575496, -12.8333088411, 41.1968899739, -34.1353052562, -21.3307448808, 9.1539906215, -21.4669480287, 10.1295786911, 27.2639448603, -0.314860866604, 7.21959529993, 11.4838956611, -33.281192872, -0.579878201698, -54.8822985595, 87.4250704373, 1.20000000834, 0.40000002861, -1.27692306474, -2.01538455498, 0.0137931900618, 2.23448270158, 1.64960914158, 3.21383583072, -0.838872730612, -8.4708118791, -1.42559503597, 8.133199623, 1.35165436708, 1.11007750638, 0.298360526841, -3.75726722065, -14.0170761831, -0.0323845440388, 9.75416091125, -7.08888853629, 62.1032648557, 39.1233604822, -19.0664270127, -29.5706275294, -22.3689160698, -22.3290804208, 18.6576095623, 41.1612152132, -18.670155371, 9.45567102512, -8.90589354986, -38.129342871, -150.807653441, -41.9973898509,
+
+L3_zTRSM_A_mm
+8.0, 9.0, 9.0, 5.0, 9.0, 9.0, 8.0, 3.0, 7.0, 8.0, 6.0, 7.0, 2.0, 2.0, 2.0, 1.0, 9.0, 1.0, 4.0, 5.0, 0.0, 0.0, 9.0, 8.0, 4.0, 9.0, 2.0, 8.0, 6.0, 3.0, 7.0, 4.0, 2.0, 8.0, 5.0, 1.0, 9.0, 3.0, 3.0, 5.0, 0.0, 0.0, 0.0, 0.0, 9.0, 8.0, 5.0, 9.0, 2.0, 8.0, 1.0, 1.0, 4.0, 6.0, 1.0, 6.0, 3.0, 5.0, 3.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 8.0, 6.0, 8.0, 6.0, 1.0, 8.0, 1.0, 5.0, 9.0, 5.0, 3.0, 1.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 3.0, 3.0, 6.0, 6.0, 8.0, 7.0, 1.0, 7.0, 6.0, 5.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 6.0, 5.0, 5.0, 8.0, 3.0, 3.0, 4.0, 4.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 2.0, 1.0, 2.0, 9.0, 3.0, 9.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 2.0, 7.0, 3.0, 8.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 2.0, 5.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 9.0,
+
+L3_zTRSM_B_mn
+0.6, 0.7, 0.1, 0.1, 0.7, 0.5, 0.4, 0.2, 0.5, 0.7, 0.4, 0.3, 0.3, 0.3, 0.2, 0.3, 0.1, 0.3, 0.1, 0.9, 0.6, 0.2, 0.5, 0.9, 0.6, 0.9, 0.1, 0.1, 0.5, 0.4, 0.2, 0.6, 0.7, 0.5, 0.6, 0.8, 0.4, 0.6, 0.3, 0.8, 0.8, 0.2, 0.1, 0.2, 0.3, 0.3, 0.7, 0.5, 0.5, 0.8, 0.2, 0.5, 0.3, 0.8, 0.1, 0.3, 0.1, 0.2, 0.8, 0.8, 0.1, 0.9, 0.1, 0.2, 0.6, 0.7, 0.6, 0.3, 0.7, 0.7, 0.8, 0.7, 0.5, 0.1, 0.6, 0.4, 0.1, 0.6, 0.6, 0.9, 0.8, 0.9, 0.1, 0.2, 0.4, 0.7, 0.6, 0.2, 0.6, 0.2, 0.7, 0.6, 0.2, 0.7, 0.6, 0.7, 0.6, 0.8, 0.5, 0.1, 0.6, 0.9, 0.4, 0.3, 0.8, 0.5, 0.8, 0.5, 0.4, 0.2, 0.9, 0.4, 0.1, 0.9, 0.7, 0.8, 0.6, 0.2, 0.8, 0.6, 0.2, 0.4, 0.5, 0.8, 0.1, 0.1, 0.4, 0.7, 0.4, 0.6, 0.2, 0.3, 0.2, 0.8, 0.8, 0.8, 0.4, 0.3, 0.9, 0.4, 0.1, 0.3, 0.7, 0.8, 0.3, 0.2, 0.3, 0.5, 0.1, 0.4, 0.6, 0.3, 0.1, 0.7, 0.7, 0.1, 0.7, 0.8, 0.3, 0.5, 0.8, 0.1, 0.4, 0.3, 0.4, 0.6, 0.9, 0.3, 0.8, 0.3, 0.1, 0.5, 0.6, 0.7, 0.6, 0.4, 0.1, 0.5, 0.4, 0.8, 0.9, 0.9, 0.5, 0.9, 0.2, 0.5, 0.5, 0.6, 0.4, 0.4, 0.8, 0.2, 0.3, 0.2, 0.4, 0.4, 0.3, 0.3, 0.1, 0.7, 0.1, 0.8, 0.9, 0.9, 0.4, 0.6, 0.6, 0.3, 0.7, 0.1, 0.9, 0.1, 0.8, 0.5, 0.9, 0.4, 0.8, 0.4, 0.7, 0.1, 0.9, 0.8, 0.7, 0.9, 0.4, 0.3, 0.6, 0.2, 0.9, 0.6, 0.5, 0.2, 0.6, 0.7, 0.6, 0.4, 0.5, 0.1, 0.1, 0.5, 0.1, 0.3, 0.2, 0.4, 0.1, 0.1, 0.3, 0.7, 0.9, 0.9, 0.2, 0.1, 0.4, 0.8, 0.8, 0.7, 0.6, 0.9, 0.2, 0.1, 0.7, 0.1, 0.5, 0.5, 0.4, 0.5, 0.3, 0.9, 0.4, 0.7, 0.7, 0.1, 0.7, 0.5, 0.6, 0.8, 0.2, 0.4, 0.8, 0.3, 0.3, 0.9, 0.8, 0.5, 0.7, 0.6, 0.5, 0.8, 0.2, 0.7, 0.8, 0.5, 0.3, 0.2, 0.2, 0.5, 0.1, 0.9, 0.2, 0.8, 0.6, 0.1, 0.8, 0.8, 0.5, 0.5, 0.3, 0.5, 0.5, 0.6, 0.9, 0.9, 0.4, 0.7, 0.3, 0.1, 0.2, 0.9, 0.2, 0.7, 0.5, 0.6, 0.6, 0.1, 0.2, 0.1, 0.1, 0.5, 0.7, 0.3, 0.9, 0.8, 0.2, 0.5, 0.8, 0.7, 0.5, 0.9, 0.3, 0.3,
+
+L3_zTRSM_o_LUN
+-0.133958047225, 0.0634023358484, -0.229395361146, 0.0019440773242, 0.0129991149435, 0.00295962291275, -0.120025004919, -0.014606037272, 0.0653351315443, 0.0580553772721, 0.00608264893155, 0.0320668880271, -0.126348882414, 0.0696735063329, -0.044177548257, -0.0502170168136, 0.0522860973768, 0.036810427771, -0.0664892116058, 0.18989329588, -0.0375597994313, -0.0275390571767, 0.00870806224388, -0.0700975283092, -0.104577165629, 0.0383595871779, -0.0619419158678, -0.0757518930715, -0.0557894015604, 0.0664938853937, -0.184517662625, 0.0196137392561, -0.0949210300684, -0.0304115608193, 0.00359490016574, 0.0296444215786, -0.0702236760827, 0.0231733017109, 0.0232103541111, -0.0087275635157, -0.0309628976085, -0.021056980123, -0.0372198465751, -0.058278935698, -0.066225517515, -0.0303442676089, -0.0360089621826, -0.0510206414236, 0.0177940788551, 0.00506527587377, -0.0300546336791, -0.0604138046683, 0.0170327950245, 0.101334473014, -0.0717738695849, 0.0692380499707, -0.0779814679933, -0.0523878250108, 0.0703523517282, -0.0586185162717, -0.0454528399349, 0.00843251396343, -0.0257737754508, -0.0133396070809, -0.00436180784171, 0.0597108371938, -0.0711525797109, -0.0222505361281, 0.0360949489608, -0.0189699613951, 0.0216083084991, -0.055554647386, -0.0397030805685, 0.0541809370015, 0.044520325295, -0.0156491073175, -0.0705400040511, 0.0239758416537, -0.00973008140189, 0.0331645117989, -0.0234601152208, -0.0280363313687, -0.0262208353337, 0.0666168234385, 0.023301531523, 0.0402349038871, -0.0261517269967, -0.0874177357089, -0.0144525547592, -0.0612651780432, 0.158607562703, -0.000349319494803, 0.0201660941589, -0.0278132634654, 0.0188873817629, 0.0174304814112, 0.0859319234439, 0.0386937865608, -0.00437738220405, -0.0769941563961, 0.0312701548396, -0.0326239737149, 0.0290051239392, 0.0517531091139, 0.0200295195647, 0.123820434735, 0.0794637653298, -0.0720673352695, -0.0400311865241, 0.0315069978245, 0.0818066545241, 0.0407339255733, 0.120215863434, -0.00944115085266, 0.128069456553, 0.0893168438244, -0.00875999697558, -0.0402889951796, 0.000516531239594, -0.0609614066776, 0.0669900723735, 0.0830178622181, 0.0428576236321, 0.00970051385759, -0.14037004318, 0.00733230807618, -0.0370168081054, 0.112840401769, 0.0199351305638, -0.00559938448532, -0.0238751260468, -0.0362600511932, -0.0116826188016, 0.112092594679, 0.0092104972435, 0.105881476364, 0.0416925499118, -0.0682518953071, 0.084448549975, -0.077911404558, -0.000930781906544, -0.000697974900251, 0.0922679184012, 0.011955012654, -0.0431252487344, -0.0940662263104, -0.0749553909254, 0.010252209449, -0.0114065153767, -0.0452389587963, 0.0335658206213, -0.0205401306942, -0.0487380679532, -0.0130192249246, -0.0287451612394, -0.106177023589, 0.0459277994176, 0.0408918896563, 0.0458419959347, 0.0354121587773, 0.0741133847671, -0.0698810090088, 0.0183565138432, 0.0121731293456, 0.0385894026379, -0.0524649875877, 0.104782397274, -0.0682930088564, 0.0355549910916, -0.0500824092637, 0.0674926385779, -0.0311124228238, 0.123709478255, 0.0159810027817, 0.046337472013, -0.0281180541421, 0.0639560350092, 0.0120628265147, 0.0193178641699, 0.0339603772305, 0.0638918515503, -0.0100080059706, 0.121624940634, 0.0401738245471, 0.0147084605468, 0.0269608521609, -0.0449512178574, -0.00616744690956, -0.0022122260669, -0.0766020761246, 0.0766254155641, -0.0452167718298, -0.0171635796187, 0.0316277902164, -0.00764841576769, 0.00589470113305, 0.0126037044576, 0.0390200149264, 0.00950932899111, -0.087315285976, 0.0740282244386, 0.0286921772169, 0.107964583757, 0.0616987583961, -0.0432178899518, 0.0334484456205, -0.0351676016012, -0.019795845037, 0.00814990433544, 0.00268010584164, -0.0219320985141, 0.00585111608657, 0.043428335708, -0.0472336196486, -0.0359114892462, -0.0200928204084, -0.0281111120157, -0.00386401791166, -0.0176438075853, -0.0614647235226, 0.0684794735057, 0.00583490874551, 0.00200184544406, 0.0365965397924, -0.0129022158898, 0.0152881253816, 0.0111644914852, -0.0106977352602, 0.0366999606486, -0.00801811249067, -0.00943461021779, -0.0649279489789, -0.0025281118122, 0.0907113861185, -0.0672198873736, -0.0143031033313, -0.0336919682475, -0.0307169713006, -0.0806292964245, 0.00124659746251, -0.0911783160323, -0.0412239907728, -0.0742366782007, 0.0089937716263, -0.11307266436, -0.0265720876586, 0.000429988465975, -0.00167289504037, -0.0115880046136, 0.00234417531719, -0.0856050749712, -0.0663404844291, -0.0386938869666, 0.00436770472895, 0.0497130334487, 0.0195713956171, -0.0023137254902, 0.0445882352941, -0.0339644752018, -0.0280166089965, 0.0109305651672, -0.0273614763552, -0.0274874279123, -0.0281444059977, -0.000563321799308, -0.039260438293, -0.0721739331027, 0.0912761245675, -0.0833014994233, -0.0185430219146, 0.00165813148789, -0.0470089965398, 0.0387450980392, 0.0143529411765, 0.0154117647059, 0.0510196078431, -0.0809411764706, 0.0157647058824, 0.0272549019608, -0.0190196078431, 0.0257254901961, 0.0957647058824, 0.0368235294118, -0.0226274509804, 0.0385490196078, 0.00513725490196, 0.00482352941176, 0.0533725490196, -0.0118039215686, 0.0918823529412, 0.0766666666667, 0.0366666666667, 0.0041568627451, -0.0179607843137, -0.0338823529412, 0.060862745098, -0.0747843137255, 0.0784705882353, 0.000274509803922, 0.0529019607843, -0.0282745098039, -0.015568627451, 0.0216470588235, 0.0240784313725, 0.0275294117647, 0.0338823529412, 0.06, -0.0133333333333, 0.0766666666667, -0.03, 0.12, -0.06, 0.0833333333333, -0.0166666666667, 0.02, -0.0266666666667, 0.0966666666667, 0.01, 0.0766666666667, 0.00333333333333, 0.0766666666667, -0.03, 0.03, -0.0566666666667, 0.0166666666667, -0.0166666666667, 0.0533333333333, 0.00666666666667, 0.0533333333333, -0.06, 0.11, -0.0633333333333, 0.0566666666667, -0.00333333333333, 0.0966666666667, -0.0566666666667, 0.106666666667, -0.02, 0.04, -0.02,
+
+L3_zTRSM_A_nn
+0.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.7, 0.4, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.2, 0.8, 0.6, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.2, 0.4, 0.9, 0.5, 0.6, 0.7, 0.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.4, 0.4, 0.2, 0.5, 0.3, 0.3, 0.4, 0.4, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.6, 0.1, 0.6, 0.1, 0.3, 0.9, 0.7, 0.9, 0.3, 0.9, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.5, 0.1, 0.9, 0.2, 0.6, 0.6, 0.6, 0.4, 0.1, 0.5, 0.2, 0.3, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.3, 0.4, 0.2, 0.3, 0.1, 0.2, 0.5, 0.6, 0.3, 0.9, 0.4, 0.4, 0.2, 0.2, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.3, 0.1, 0.2, 0.3, 0.7, 0.8, 0.7, 0.7, 0.3, 0.9, 0.6, 0.9, 0.6, 0.5, 0.5, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.5, 0.3, 0.9, 0.2, 0.5, 0.6, 0.9, 0.7, 0.6, 0.5, 0.8, 0.1, 0.7, 0.6, 0.3, 0.1, 0.2, 0.2, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.2, 0.7, 0.3, 0.4, 0.6, 0.2, 0.6, 0.5, 0.5, 0.2, 0.8, 0.9, 0.8, 0.2, 0.7, 0.3, 0.2, 0.1, 0.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.2, 0.7, 0.5, 0.7, 0.4, 0.3, 0.9, 0.3, 0.6, 0.4, 0.3, 0.5, 0.1, 0.7, 0.5, 0.7, 0.5, 0.3, 0.3, 0.2, 0.6, 0.1, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.1, 0.1, 0.4, 0.7, 0.4, 0.5, 0.1, 0.1, 0.9, 0.9, 0.3, 0.9, 0.9, 0.4, 0.4, 0.8, 0.3, 0.1, 0.2, 0.5, 0.8, 0.9, 0.4, 0.8, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 0.2, 0.5, 0.9, 0.9, 0.2, 0.5, 0.9, 0.4, 0.8, 0.3, 0.3, 0.6, 0.5, 0.6, 0.8, 0.7, 0.4, 0.3, 0.6, 0.5, 0.4, 0.4, 0.4, 0.6, 0.5, 0.3, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.8, 0.2, 0.5, 0.9, 0.4, 0.7, 0.3, 0.1, 0.5, 0.9, 0.4, 0.5, 0.6, 0.8, 0.5, 0.2, 0.2, 0.8, 0.6, 0.2, 0.9, 0.7, 0.6, 0.9, 0.1, 0.6, 0.8, 0.4, 0.0, 0.0, 0.0, 0.0, 0.7, 0.8, 0.1, 0.4, 0.5, 0.7, 0.9, 0.7, 0.4, 0.6, 0.1, 0.2, 0.8, 0.6, 0.5, 0.7, 0.2, 0.5, 0.6, 0.9, 0.8, 0.5, 0.4, 0.1, 0.2, 0.3, 0.2, 0.6, 0.6, 0.4, 0.9, 0.1, 0.0, 0.0, 0.2, 0.6, 0.1, 0.3, 0.1, 0.8, 0.4, 0.6, 0.8, 0.2, 0.8, 0.1, 0.7, 0.3, 0.5, 0.1, 0.1, 0.7, 0.7, 0.6, 0.6, 0.7, 0.6, 0.5, 0.6, 0.8, 0.5, 0.4, 0.8, 0.3, 0.3, 0.8, 0.8, 0.9,
+
+L3_zTRSM_o_RLT
+2.53846153846, -0.307692307692, -4.15384615385, -2.76923076923, 5.21538461538, 4.67692307692, -1.67032967033, 0.562637362637, -1.61789962615, -0.426758808202, 1.30479681244, 1.29092252982, -1.39577608417, -0.0483354595973, -0.208248556046, 0.0157485581257, -2.02035446306, -34.2377188373, 5.69400474025, 6.16629014222, -2.055880265, 26.7795013692, 20.2801007147, 0.278781388609, -6.25011901787, 6.68033222065, -4.12199872781, 5.13849823069, -2.29543358145, -22.0613616902, -7.99109118095, -10.4457153525, -6.66624028927, 3.46331067699, 2.76923076923, -0.153846153846, -3.31221719457, -2.3257918552, 3.52533936652, 4.90904977376, -0.8116354234, -0.524563671622, -2.41070845467, -0.246187166381, 0.729709858838, 1.49444808619, -0.42191991045, -0.671009605184, 0.000773037351422, -0.370450372745, -0.00130467069877, -21.1058235257, 4.1354934297, 3.510742543, -2.55678416358, 17.4503433975, 11.9832781916, 1.28734237506, -3.29038338627, 3.52567535025, -5.63831248523, 7.04314615589, 2.39776977535, -16.8129785333, -5.32238564128, -6.21393748331, -3.65402287287, 0.742114632218, 2.69230769231, -0.538461538462, -2.71040723982, -1.61085972851, 2.34751131222, 3.46696832579, -0.171816418875, 0.275371687136, -1.64351355134, 0.0156818318128, 0.168410734054, 0.873667804485, 0.165145889102, -0.0927408839467, -0.748944788567, -0.170503340371, -0.0961770961587, -17.0867957406, 2.36254716039, 1.43059904007, -1.01356575191, 13.0879883852, 10.5001711663, 0.360988341662, -5.51078502821, 3.47243269102, 1.35004023866, 6.05762015159, 2.46624134146, -12.4092405352, -7.63693603868, -7.78872991181, -3.27576706848, 4.99494351606, 1.30769230769, -0.461538461538, -0.524886877828, -0.330316742081, 1.07013574661, 1.3036199095, -0.50465416936, -0.23839689722, -0.280630951826, -0.255264262723, -0.528016914973, 1.46191156682, 0.633149468622, -0.980241636281, -0.432232432901, -0.445317384693, 5.30822261293, -2.07028985163, -0.566963802194, 0.016982586198, -4.31464745211, 1.5670058865, 1.53041642631, 3.79356533355, -3.16476205317, -1.51247583365, 1.79859544629, 6.13411478114, 5.95391524855, -5.79066511702, -1.88281388485, -1.81491681163, -0.353228514663, 0.427052252733, 1.30769230769, -0.461538461538, -0.348416289593, -0.62443438914, -0.0180995475113, 2.25067873303, 0.791984486102, -0.480413703943, -1.09967279537, -0.189310871057, -0.817521482201, 0.662763946994, -0.257990720685, -0.113867691238, 0.0744146168347, -1.3252465096, 9.81203388397, 2.34390357873, -0.849335367589, -0.663692181433, -5.58114129107, -1.22420572359, -2.72646876007, 5.68098357425, -0.294067581753, -3.76422238669, -6.8481772104, 5.645062895, 9.24436713199, -0.42753814601, 2.24819912654, -2.28205905397, -0.959987448054, -4.73388687297, 1.30769230769, 0.538461538462, 0.475113122172, -1.33031674208, -1.02986425339, 2.0036199095, -0.30465416936, -0.13839689722, 0.192564924463, -0.644954984373, -0.108052117387, 0.569429796638, 0.175456705824, -0.181404942941, -0.320928629805, 0.449351598639, 7.93853301365, -5.95304327899, -1.54921582808, 1.44540181613, -6.16283041715, 2.49515570153, 2.6474178988, 5.34680760955, -3.04712049237, -1.15044450837, -0.790782115983, 1.925040681, 6.81450686799, -2.61955436635, 0.369845380883, -4.44821450918, -2.69242270613, 0.0129199093012, 2.0, -1.00180120306e-14, -1.58823529412, -2.35294117647, 1.49411764706, 3.57647058824, -0.56974789916, -0.30756302521, -0.748800138612, -0.708897167114, -0.160427500143, 1.26297048364, -0.378591893501, -0.241123944142, -0.265897391581, -0.640956708658, 11.8162836787, -13.2459191191, 0.854494198758, 3.29188659552, -10.5662371442, 9.22982933662, 7.23290619328, 7.94219010944, -4.8198313183, -0.265492608928, -4.28523934809, 4.93193453847, 9.1289867142, -11.5275406773, -1.34903647525, -7.15891029276, -4.2179011628, -0.802262005682, 1.30769230769, 0.538461538462, -0.93665158371, -1.97737556561, 0.676018099547, 3.02714932127, -0.777763413058, -0.245119586296, -0.188384568736, -0.690549717111, 0.624547515376, 1.46602323411, -1.37757905802, -0.538098068801, -0.0256531620363, -0.297484429759, 14.7149585002, -15.3217706237, -0.247114014262, 4.02045016071, -12.8325779909, 10.5455082286, 7.72893334625, 8.50289849881, -4.81759944993, 1.61211987571, -2.48088891757, 0.00422538669345, 6.97778944266, -12.1728944531, 0.82877103129, -6.07537214734, -3.66381659073, -2.57786582966, 2.23076923077, -0.846153846154, -2.80542986425, -0.144796380091, 2.8334841629, 2.02624434389, 0.323400129282, -0.114091790562, -1.26034759661, 0.56446664312, -0.0173885913817, 0.257394546763, 0.123747653039, 0.328399812669, -0.052001074913, -0.336106066568, -10.2450611787, -8.3265399976, 3.94284803098, -0.803047613867, 7.42671088274, 7.91688706589, 4.6789781649, -4.95090202473, 0.490431402225, 2.46397654929, -3.65001545059, 6.55600322606, -1.95689400404, -6.09235040312, -7.18696801329, -1.57535421932, -0.664443491156, 3.1835957169, 1.61538461538, 0.0769230769231, -0.932126696833, -1.19004524887, 1.6814479638, 2.37194570136, -0.749644473174, -0.0238526179703, -1.31686270067, -0.300972950639, 0.814887835175, 1.04060724733, -1.00626442169, -0.502843676322, 0.00138141101527, -0.270867647939, 5.00518717734, -16.1468502699, 0.643427728952, 3.09479951647, -5.18511978123, 12.7925473525, 9.21147753243, 2.88082426014, -3.21234806046, 3.89942511486, -2.51974230756, 0.685276255354, 1.3928270861, -11.4078509372, -1.40871362384, -3.80464519077, -2.60694542596, -2.04083275412,
+
diff --git a/tests/tests/renderscript/assets/blas_gen.py b/tests/tests/renderscript/assets/blas_gen.py
new file mode 100644
index 0000000..301b249
--- /dev/null
+++ b/tests/tests/renderscript/assets/blas_gen.py
@@ -0,0 +1,901 @@
+#
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This Python script is used to generate all input and output
+# reference data into BLASData.txt
+
+#!/usr/bin/python
+
+from numpy import *
+
+# functions used for generating input matrices.
+
+# Modify a regular matrix to a triangular matrix.
+def triangularMatrixGen(a, uplo):
+ if uplo == 'u': #upper = 1, lower = 2
+ for i in range(1, a.shape[0]):
+ for j in range(0, i):
+ a[i, j] = 0
+ elif uplo == 'l':
+ for i in range(0, a.shape[0]-1):
+ for j in range(i+1, a.shape[1]):
+ a[i, j] = 0
+
+# Modify a regular matrix to a symmetric matrix.
+def symm(a):
+ for i in range(1, a.shape[0]):
+ for j in range(0, i):
+ a[i, j] = a[j, i];
+
+# Modify a regular matrix to a hermitian matrix.
+def herm(a):
+ for i in range(0, a.shape[0]):
+ a[i,i] = complex(a[i,i].real, 0);
+ for i in range(1, a.shape[0]):
+ for j in range(0, i):
+ a[i, j] = complex(a[j, i].real, -a[j, i].imag);
+
+# Zero all elments in a matrix
+def zero(a):
+ for i in range(0, a.shape[0]):
+ for j in range(0, a.shape[1]):
+ a[i, j] = 0;
+
+# Generate a random float matrix given a scale.
+def sMatGen(m, n, scale):
+ a = mat(random.randint(1, 10, size=(m, n)).astype('f4')/scale)
+ return a;
+
+# Generate a random double matrix given a scale.
+def dMatGen(m, n, scale):
+ a = mat(random.randint(1, 10, size=(m, n)).astype('f8')/scale)
+ return a;
+
+# Generate a random float complex matrix given a scale.
+def cMatGen(m, n, scale):
+ a_real = mat(random.randint(1, 10, size=(m, n)).astype('f4')/scale)
+ a_img = mat(random.randint(1, 10, size=(m, n)).astype('f4')/scale)
+ a = a_real + 1j * a_img
+ return a;
+
+# Generate a random double complex matrix given a scale.
+def zMatGen(m, n, scale):
+ a_real = mat(random.randint(1, 10, size=(m, n)).astype('f8')/scale)
+ a_img = mat(random.randint(1, 10, size=(m, n)).astype('f8')/scale)
+ a = a_real + 1j * a_img
+ return a;
+
+# A wrapper to generated random matrices given a scale
+def matrixCreateScale(dt, m, n, scale):
+ if dt == 's':
+ return sMatGen(m, n, scale);
+ elif dt == 'd':
+ return dMatGen(m, n, scale);
+ elif dt == 'c':
+ return cMatGen(m, n, scale);
+ else:
+ return zMatGen(m, n, scale);
+
+# A wrapper to generated random matrices
+def matrixCreate(dt, m, n):
+ return matrixCreateScale(dt, m, n, 10);
+
+# Write a float matrix into a given file.
+# For each element, can pad arbitrary number of 0s after it.
+def writeFloatMatrix(a, name, skip, fo):
+ fo.write(name + '\n');
+ for i in range(0, a.shape[0]):
+ for j in range(0, a.shape[1]):
+ fo.write(str(a[i,j]) + ", ");
+ for hh in range(0, skip):
+ fo.write("0.0, ");
+ fo.write("\n\n");
+
+# Write a double matrix into a given file.
+# For each element, can pad arbitrary number of 0s after it.
+def writeDoubleMatrix(a, name, skip, fo):
+ writeFloatMatrix(a, name, skip, fo);
+
+# Write a float complex matrix into a given file.
+# For each element, can pad arbitrary number of 0s after it.
+def writeFloatComplexMatrix(a, name, skip, fo):
+ fo.write(name + '\n');
+ for i in range(0, a.shape[0]):
+ for j in range(0, a.shape[1]):
+ fo.write(str(real(a[i,j])) + ", ");
+ fo.write(str(imag(a[i,j])) + ", ");
+ for hh in range(0, skip):
+ fo.write("0.0, ");
+ fo.write("0.0, ");
+ fo.write("\n\n");
+
+# Write a double complex matrix into a given file.
+# For each element, can pad arbitrary number of 0s after it.
+def writeDoubleComplexMatrix(a, name, skip, fo):
+ writeFloatComplexMatrix(a, name, skip, fo);
+
+# Wrapper to write a matrix into a given file.
+# For each element, can pad arbitrary number of 0s after it.
+def writeMatrixWithIncrements(dt, a, name, skip, fo):
+ if dt == 's':
+ writeFloatMatrix(a, name, skip, fo);
+ elif dt == 'd':
+ writeDoubleMatrix(a, name, skip, fo);
+ elif dt == 'c':
+ writeFloatComplexMatrix(a, name, skip, fo);
+ else:
+ writeDoubleComplexMatrix(a, name, skip, fo);
+
+# Wrapper to write a matrix into a given file.
+def writeMatrix(dt, a, name, fo):
+ writeMatrixWithIncrements(dt, a, name, 0, fo);
+
+# Write a symmetric or hermitian float matrix into a given file, in a packed form.
+def writeFloatPackedMatrix(a, name, fo):
+ fo.write(name + '\n');
+ for i in range(0, a.shape[0]):
+ for j in range(i, a.shape[1]):
+ fo.write(str(a[i,j]) + ", ");
+ fo.write("\n\n");
+
+# Write a symmetric or hermitian double matrix into a given file, in a packed form.
+def writeDoublePackedMatrix(a, name, fo):
+ writeFloatPackedMatrix(a, name, fo);
+
+# Write a symmetric or hermitian float complex matrix into a given file, in a packed form.
+def writeFloatComplexPackedMatrix(a, name, fo):
+ fo.write(name + '\n');
+ for i in range(0, a.shape[0]):
+ for j in range(i, a.shape[1]):
+ fo.write(str(real(a[i,j])) + ", ");
+ fo.write(str(imag(a[i,j])) + ", ");
+ fo.write("\n\n");
+
+# Write a symmetric or hermitian double complex matrix into a given file, in a packed form.
+def writeDoubleComplexPackedMatrix(a, name, fo):
+ writeFloatComplexPackedMatrix(a, name, fo);
+
+# Wrapper to write a symmetric or hermitian matrix into a given file, in a packed form.
+def writePackedMatrix(dt, a, name, fo):
+ if dt == 's':
+ writeFloatPackedMatrix(a, name, fo);
+ elif dt == 'd':
+ writeDoublePackedMatrix(a, name, fo);
+ elif dt == 'c':
+ writeFloatComplexPackedMatrix(a, name, fo);
+ else:
+ writeDoubleComplexPackedMatrix(a, name, fo);
+
+# Write a float band matrix into a given file, in a banded-storage form.
+def writeGeneralFloatBandedMatrix(a, kl, ku, name, fo):
+ m = a.shape[0];
+ n = a.shape[1];
+ b = sMatGen(m, kl + ku + 1, 1);
+ zero(b);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ b[i, j-i+kl] = a[i, j]
+ writeFloatMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ a[i, j] = b[i, j-i+kl]
+
+# Write a double band matrix into a given file, in a banded-storage form.
+def writeGeneralDoubleBandedMatrix(a, kl, ku, name, fo):
+ m = a.shape[0];
+ n = a.shape[1];
+ b = dMatGen(m, kl + ku + 1, 1);
+ zero(b);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ b[i, j-i+kl] = a[i, j]
+ writeDoubleMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ a[i, j] = b[i, j-i+kl]
+
+# Write a float complex band matrix into a given file, in a banded-storage form.
+def writeGeneralFloatComplexBandedMatrix(a, kl, ku, name, fo):
+ m = a.shape[0];
+ n = a.shape[1];
+ b = cMatGen(m, kl + ku + 1, 1);
+ zero(b);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ b[i, j-i+kl] = a[i, j]
+ writeFloatComplexMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ a[i, j] = b[i, j-i+kl]
+
+# Write a double complex band matrix into a given file, in a banded-storage form.
+def writeGeneralDoubleComplexBandedMatrix(a, kl, ku, name, fo):
+ m = a.shape[0];
+ n = a.shape[1];
+ b = zMatGen(m, kl + ku + 1, 1);
+ zero(b);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ b[i, j-i+kl] = a[i, j]
+ writeDoubleComplexMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, m):
+ for j in range(max(0, i-kl), min(i+ku+1, n)):
+ a[i, j] = b[i, j-i+kl]
+
+# Wrapper to write a band matrix into a given file, in a banded-storage form.
+def writeGeneralBandedMatrix(dt, a, kl, ku, name, fo):
+ if dt == 's':
+ writeGeneralFloatBandedMatrix(a, kl, ku, name, fo);
+ elif dt == 'd':
+ writeGeneralDoubleBandedMatrix(a, kl, ku, name, fo);
+ elif dt == 'c':
+ writeGeneralFloatComplexBandedMatrix(a, kl, ku, name, fo);
+ else:
+ writeGeneralDoubleComplexBandedMatrix(a, kl, ku, name, fo);
+
+# Write a float symmetric or hermitian band matrix into a given file, in a banded-storage form.
+def writeFloatSymmBandedMatrix(a, k, name, fo):
+ n = a.shape[1];
+ b = sMatGen(n, k+1, 1);
+ zero(b);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ b[i, j-i] = a[i, j]
+ writeFloatMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ a[i, j] = b[i, j-i]
+
+# Write a double symmetric or hermitian band matrix into a given file, in a banded-storage form.
+def writeDoubleSymmBandedMatrix(a, k, name, fo):
+ n = a.shape[1];
+ b = dMatGen(n, k+1, 1);
+ zero(b);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ b[i, j-i] = a[i, j]
+ writeDoubleMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ a[i, j] = b[i, j-i]
+
+# Write a float complex symmetric or hermitian band matrix into a given file, in a banded-storage form.
+def writeFloatComplexSymmBandedMatrix(a, k, name, fo):
+ n = a.shape[1];
+ b = cMatGen(n, k+1, 1);
+ zero(b);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ b[i, j-i] = a[i, j]
+ writeFloatComplexMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ a[i, j] = b[i, j-i]
+
+# Write a double complex symmetric or hermitian band matrix into a given file, in a banded-storage form.
+def writeDoubleComplexSymmBandedMatrix(a, k, name, fo):
+ n = a.shape[1];
+ b = zMatGen(n, k+1, 1);
+ zero(b);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ b[i, j-i] = a[i, j]
+ writeDoubleComplexMatrix(b, name, 0, fo);
+ zero(a);
+ for i in range(0, n):
+ for j in range(i, min(i+k+1, n)):
+ a[i, j] = b[i, j-i]
+
+# Wrapper to write a symmetric or hermitian band matrix into a given file, in a banded-storage form.
+def writeSymmBandedMatrix(dt, a, k, name, fo):
+ if dt == 's':
+ writeFloatSymmBandedMatrix(a, k, name, fo);
+ elif dt == 'd':
+ writeDoubleSymmBandedMatrix(a, k, name, fo);
+ elif dt == 'c':
+ writeFloatComplexSymmBandedMatrix(a, k, name, fo);
+ else:
+ writeDoubleComplexSymmBandedMatrix(a, k, name, fo);
+
+
+
+#L3 Functions, generate input and output matrices to file.
+def L3_xGEMM(fo, alpha, beta, m, n, k):
+ dataType = ['s', 'd', 'c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, m, k);
+ b = matrixCreate(dt, k, n);
+ c = matrixCreate(dt, m, n);
+ writeMatrix(dt, a, "L3_" + dt + "GEMM_A_mk", fo);
+ writeMatrix(dt, b, "L3_" + dt + "GEMM_B_kn", fo);
+ writeMatrix(dt, c, "L3_" + dt + "GEMM_C_mn", fo);
+
+ d = alpha * a * b + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "GEMM_o_NN", fo);
+
+ a = matrixCreate(dt, k, m);
+ b = matrixCreate(dt, n, k);
+ writeMatrix(dt, a, "L3_" + dt + "GEMM_A_km", fo);
+ writeMatrix(dt, b, "L3_" + dt + "GEMM_B_nk", fo);
+
+ d = alpha * a.T * b.T + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "GEMM_o_TT", fo);
+ d = alpha * a.H * b.H + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "GEMM_o_HH", fo);
+
+def L3_xSYMM(fo, alpha, beta, m, n):
+ dataType = ['s', 'd', 'c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, m, m);
+ symm(a);
+ writeMatrix(dt, a, "L3_" + dt + "SYMM_A_mm", fo);
+
+ b = matrixCreate(dt, m, n);
+ c = matrixCreate(dt, m, n);
+ writeMatrix(dt, b, "L3_" + dt + "SYMM_B_mn", fo);
+ writeMatrix(dt, c, "L3_" + dt + "SYMM_C_mn", fo);
+
+ d = alpha * a * b + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "SYMM_o_L", fo);
+
+ a = matrixCreate(dt, n, n);
+ symm(a);
+ writeMatrix(dt, a, "L3_" + dt + "SYMM_A_nn", fo);
+ d = alpha * b * a + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "SYMM_o_R", fo);
+
+def L3_xHEMM(fo, alpha, beta, m, n):
+ dataType = ['c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, m, m);
+ herm(a);
+ writeMatrix(dt, a, "L3_" + dt + "HEMM_A_mm", fo);
+
+ b = matrixCreate(dt, m, n);
+ c = matrixCreate(dt, m, n);
+ writeMatrix(dt, b, "L3_" + dt + "HEMM_B_mn", fo);
+ writeMatrix(dt, c, "L3_" + dt + "HEMM_C_mn", fo);
+
+ d = alpha * a * b + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "HEMM_o_L", fo);
+
+ a = matrixCreate(dt, n, n);
+ herm(a);
+ writeMatrix(dt, a, "L3_" + dt + "HEMM_A_nn", fo);
+ d = alpha * b * a + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "HEMM_o_R", fo);
+
+def L3_xSYRK(fo, alpha, beta, n, k):
+ dataType = ['s', 'd', 'c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, n, k);
+ writeMatrix(dt, a, "L3_" + dt + "SYRK_A_nk", fo);
+ c = matrixCreate(dt, n, n);
+ symm(c);
+ writeMatrix(dt, c, "L3_" + dt + "SYRK_C_nn", fo);
+ d = alpha * a * a.T + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "SYRK_o_N", fo);
+
+ a = matrixCreate(dt, k, n);
+ writeMatrix(dt, a, "L3_" + dt + "SYRK_A_kn", fo);
+ d = alpha * a.T * a + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "SYRK_o_T", fo);
+
+def L3_xHERK(fo, alpha, beta, n, k):
+ dataType = ['c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, n, k);
+ writeMatrix(dt, a, "L3_" + dt + "HERK_A_nk", fo);
+ c = matrixCreate(dt, n, n);
+ herm(c);
+ writeMatrix(dt, c, "L3_" + dt + "HERK_C_nn", fo);
+ d = alpha * a * a.H + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "HERK_o_N", fo);
+
+ a = matrixCreate(dt, k, n);
+ writeMatrix(dt, a, "L3_" + dt + "HERK_A_kn", fo);
+ d = alpha * a.H * a + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "HERK_o_H", fo);
+
+def L3_xSYR2K(fo, alpha, beta, n, k):
+ dataType = ['s', 'd', 'c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, n, k);
+ b = matrixCreate(dt, n, k);
+ writeMatrix(dt, a, "L3_" + dt + "SYR2K_A_nk", fo);
+ writeMatrix(dt, b, "L3_" + dt + "SYR2K_B_nk", fo);
+ c = matrixCreate(dt, n, n);
+ symm(c);
+ writeMatrix(dt, c, "L3_" + dt + "SYR2K_C_nn", fo);
+ d = alpha * (a * b.T + b * a.T) + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "SYR2K_o_N", fo);
+
+ a = matrixCreate(dt, k, n);
+ b = matrixCreate(dt, k, n);
+ writeMatrix(dt, a, "L3_" + dt + "SYR2K_A_kn", fo);
+ writeMatrix(dt, b, "L3_" + dt + "SYR2K_B_kn", fo);
+ d = alpha * (a.T * b + b.T * a) + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "SYR2K_o_T", fo);
+
+def L3_xHER2K(fo, alpha, beta, n, k):
+ dataType = ['c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, n, k);
+ b = matrixCreate(dt, n, k);
+ writeMatrix(dt, a, "L3_" + dt + "HER2K_A_nk", fo);
+ writeMatrix(dt, b, "L3_" + dt + "HER2K_B_nk", fo);
+ c = matrixCreate(dt, n, n);
+ herm(c);
+ writeMatrix(dt, c, "L3_" + dt + "HER2K_C_nn", fo);
+ d = alpha * (a * b.H + b * a.H) + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "HER2K_o_N", fo);
+
+ a = matrixCreate(dt, k, n);
+ b = matrixCreate(dt, k, n);
+ writeMatrix(dt, a, "L3_" + dt + "HER2K_A_kn", fo);
+ writeMatrix(dt, b, "L3_" + dt + "HER2K_B_kn", fo);
+ d = alpha * (a.H * b + b.H * a) + beta * c;
+ writeMatrix(dt, d, "L3_" + dt + "HER2K_o_H", fo);
+
+
+def L3_xTRMM(fo, alpha, m, n):
+ dataType = ['s', 'd', 'c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreate(dt, m, m);
+ triangularMatrixGen(a, 'u');
+ writeMatrix(dt, a, "L3_" + dt + "TRMM_A_mm", fo);
+ b = matrixCreate(dt, m, n);
+ writeMatrix(dt, b, "L3_" + dt + "TRMM_B_mn", fo);
+ d = alpha * a * b;
+ writeMatrix(dt, d, "L3_" + dt + "TRMM_o_LUN", fo);
+
+ a = matrixCreate(dt, n, n);
+ triangularMatrixGen(a, 'l');
+ writeMatrix(dt, a, "L3_" + dt + "TRMM_A_nn", fo);
+ d = alpha * b * a.T;
+ writeMatrix(dt, d, "L3_" + dt + "TRMM_o_RLT", fo);
+
+def L3_xTRSM(fo, alpha, m, n):
+ dataType = ['s', 'd', 'c', 'z'];
+
+ for dt in dataType:
+ a = matrixCreateScale(dt, m, m, 1);
+ triangularMatrixGen(a, 'u');
+ writeMatrix(dt, a, "L3_" + dt + "TRSM_A_mm", fo);
+ b = matrixCreate(dt, m, n);
+ writeMatrix(dt, b, "L3_" + dt + "TRSM_B_mn", fo);
+
+ d = alpha * (a.I * b);
+ writeMatrix(dt, d, "L3_" + dt + "TRSM_o_LUN", fo);
+
+ a = matrixCreate(dt, n, n);
+ triangularMatrixGen(a, 'l');
+ writeMatrix(dt, a, "L3_" + dt + "TRSM_A_nn", fo);
+
+ d = alpha * (b * a.I.T);
+ writeMatrix(dt, d, "L3_" + dt + "TRSM_o_RLT", fo);
+
+#L2 Functions, generate input and output matrices to file.
+def L2_xGEMV(fo, alpha, beta, m, n):
+ dataType = ['s', 'd', 'c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, m, n);
+ writeMatrix(dt, a, "L2_" + dt + "GEMV_A_mn", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "GEMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "GEMV_x_n2", 1, fo);
+
+ y = matrixCreate(dt, m, 1);
+ writeMatrix(dt, y, "L2_" + dt + "GEMV_y_m1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "GEMV_y_m2", 2, fo);
+
+ d = alpha * a * x + beta * y;
+ writeMatrix(dt, d, "L2_" + dt + "GEMV_o_N", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "GEMV_o_N2", 2, fo);
+
+ d = alpha * a.T * y + beta * x;
+ writeMatrix(dt, d, "L2_" + dt + "GEMV_o_T", fo);
+
+ d = alpha * a.H * y + beta * x;
+ writeMatrix(dt, d, "L2_" + dt + "GEMV_o_H", fo);
+
+def L2_xGBMV(fo, alpha, beta, m, n, kl, ku):
+ dataType = ['s', 'd', 'c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, m, n);
+ writeGeneralBandedMatrix(dt, a, kl, ku, "L2_" + dt + "GBMV_A_mn", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "GBMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "GBMV_x_n2", 1, fo);
+
+ y = matrixCreate(dt, m, 1);
+ writeMatrix(dt, y, "L2_" + dt + "GBMV_y_m1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "GBMV_y_m2", 2, fo);
+
+ d = alpha * a * x + beta * y;
+ writeMatrix(dt, d, "L2_" + dt + "GBMV_o_N", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "GBMV_o_N2", 2, fo);
+
+ d = alpha * a.T * y + beta * x;
+ writeMatrix(dt, d, "L2_" + dt + "GBMV_o_T", fo);
+
+ d = alpha * a.H * y + beta * x;
+ writeMatrix(dt, d, "L2_" + dt + "GBMV_o_H", fo);
+
+def L2_xHEMV(fo, alpha, beta, n):
+ dataType = ['c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ herm(a);
+ writeMatrix(dt, a, "L2_" + dt + "HEMV_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "HEMV_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "HEMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "HEMV_x_n2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "HEMV_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "HEMV_y_n2", 2, fo);
+
+ d = alpha * a * x + beta * y;
+ writeMatrix(dt, d, "L2_" + dt + "HEMV_o_N", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "HEMV_o_N2", 2, fo);
+
+def L2_xHBMV(fo, alpha, beta, n, k):
+ dataType = ['c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ herm(a);
+ writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "HBMV_A_nn", fo);
+ herm(a);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "HBMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "HBMV_x_n2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "HBMV_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "HBMV_y_n2", 2, fo);
+
+ d = alpha * a * x + beta * y;
+ writeMatrix(dt, d, "L2_" + dt + "HBMV_o_N", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "HBMV_o_N2", 2, fo);
+
+
+def L2_xSYMV(fo, alpha, beta, n):
+ dataType = ['s', 'd'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ symm(a);
+ writeMatrix(dt, a, "L2_" + dt + "SYMV_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "SYMV_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "SYMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "SYMV_x_n2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "SYMV_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "SYMV_y_n2", 2, fo);
+
+ d = alpha * a * x + beta * y;
+ writeMatrix(dt, d, "L2_" + dt + "SYMV_o_N", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "SYMV_o_N2", 2, fo);
+
+def L2_xSBMV(fo, alpha, beta, n, k):
+ dataType = ['s', 'd'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ symm(a);
+ writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "SBMV_A_nn", fo);
+ symm(a);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "SBMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "SBMV_x_n2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "SBMV_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "SBMV_y_n2", 2, fo);
+
+ d = alpha * a * x + beta * y;
+ writeMatrix(dt, d, "L2_" + dt + "SBMV_o_N", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "SBMV_o_N2", 2, fo);
+
+
+def L2_xTRMV(fo, n):
+ dataType = ['s', 'd', 'c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ triangularMatrixGen(a, 'u');
+ writeMatrix(dt, a, "L2_" + dt + "TRMV_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "TRMV_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "TRMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "TRMV_x_n2", 1, fo);
+
+ d = a * x;
+ writeMatrix(dt, d, "L2_" + dt + "TRMV_o_UN", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "TRMV_o_UN2", 1, fo);
+
+ d = a.T * x;
+ writeMatrix(dt, d, "L2_" + dt + "TRMV_o_UT", fo);
+
+ d = a.H * x;
+ writeMatrix(dt, d, "L2_" + dt + "TRMV_o_UH", fo);
+
+def L2_xTBMV(fo, n, k):
+ dataType = ['s', 'd', 'c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "TBMV_A_nn", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "TBMV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "TBMV_x_n2", 1, fo);
+
+ d = a * x;
+ writeMatrix(dt, d, "L2_" + dt + "TBMV_o_UN", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "TBMV_o_UN2", 1, fo);
+
+ d = a.T * x;
+ writeMatrix(dt, d, "L2_" + dt + "TBMV_o_UT", fo);
+
+ d = a.H * x;
+ writeMatrix(dt, d, "L2_" + dt + "TBMV_o_UH", fo);
+
+
+def L2_xTRSV(fo, n):
+ dataType = ['s', 'd', 'c', 'z'];
+ for dt in dataType:
+ a = matrixCreateScale(dt, n, n, 0.25);
+ triangularMatrixGen(a, 'u');
+ writeMatrix(dt, a, "L2_" + dt + "TRSV_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "TRSV_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "TRSV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "TRSV_x_n2", 1, fo);
+
+ d = a.I * x;
+ writeMatrix(dt, d, "L2_" + dt + "TRSV_o_UN", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "TRSV_o_UN2", 1, fo);
+
+ d = a.I.T * x;
+ writeMatrix(dt, d, "L2_" + dt + "TRSV_o_UT", fo);
+
+ d = a.I.H * x;
+ writeMatrix(dt, d, "L2_" + dt + "TRSV_o_UH", fo);
+
+def L2_xTBSV(fo, n, k):
+ dataType = ['s', 'd', 'c', 'z'];
+ for dt in dataType:
+ a = matrixCreateScale(dt, n, n, 0.25);
+ writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "TBSV_A_nn", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "TBSV_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "TBSV_x_n2", 1, fo);
+
+ d = a.I * x;
+ writeMatrix(dt, d, "L2_" + dt + "TBSV_o_UN", fo);
+ writeMatrixWithIncrements(dt, d, "L2_" + dt + "TBSV_o_UN2", 1, fo);
+
+ d = a.I.T * x;
+ writeMatrix(dt, d, "L2_" + dt + "TBSV_o_UT", fo);
+
+ d = a.I.H * x;
+ writeMatrix(dt, d, "L2_" + dt + "TBSV_o_UH", fo);
+
+
+def L2_xGER(fo, alpha, m, n):
+ dataType = ['s', 'd'];
+ for dt in dataType:
+ a = matrixCreate(dt, m, n);
+ writeMatrix(dt, a, "L2_" + dt + "GER_A_mn", fo);
+
+ x = matrixCreate(dt, m, 1);
+ writeMatrix(dt, x, "L2_" + dt + "GER_x_m1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "GER_x_m2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "GER_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "GER_y_n2", 2, fo);
+
+ d = alpha * x * y.T + a;
+ writeMatrix(dt, d, "L2_" + dt + "GER_o_N", fo);
+
+def L2_xGERU(fo, alpha, m, n):
+ dataType = ['c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, m, n);
+ writeMatrix(dt, a, "L2_" + dt + "GERU_A_mn", fo);
+
+ x = matrixCreate(dt, m, 1);
+ writeMatrix(dt, x, "L2_" + dt + "GERU_x_m1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "GERU_x_m2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "GERU_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "GERU_y_n2", 2, fo);
+
+ d = alpha * x * y.T + a;
+ writeMatrix(dt, d, "L2_" + dt + "GERU_o_N", fo);
+
+def L2_xGERC(fo, alpha, m, n):
+ dataType = ['c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, m, n);
+ writeMatrix(dt, a, "L2_" + dt + "GERC_A_mn", fo);
+
+ x = matrixCreate(dt, m, 1);
+ writeMatrix(dt, x, "L2_" + dt + "GERC_x_m1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "GERC_x_m2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "GERC_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "GERC_y_n2", 2, fo);
+
+ d = alpha * x * y.H + a;
+ writeMatrix(dt, d, "L2_" + dt + "GERC_o_N", fo);
+
+def L2_xHER(fo, alpha, n):
+ dataType = ['c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ herm(a);
+ writeMatrix(dt, a, "L2_" + dt + "HER_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "HER_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "HER_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "HER_x_n2", 1, fo);
+
+ d = alpha * x * x.H + a;
+ writeMatrix(dt, d, "L2_" + dt + "HER_o_N", fo);
+ writePackedMatrix(dt, d, "L2_" + dt + "HER_o_N_pu", fo);
+
+
+def L2_xHER2(fo, alpha, n):
+ dataType = ['c', 'z'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ herm(a);
+ writeMatrix(dt, a, "L2_" + dt + "HER2_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "HER2_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "HER2_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "HER2_x_n2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "HER2_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "HER2_y_n2", 2, fo);
+
+ d = alpha * x * y.H + y * (alpha * x.H) + a;
+ writeMatrix(dt, d, "L2_" + dt + "HER2_o_N", fo);
+ writePackedMatrix(dt, d, "L2_" + dt + "HER2_o_N_pu", fo);
+
+def L2_xSYR(fo, alpha, n):
+ dataType = ['s', 'd'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ writeMatrix(dt, a, "L2_" + dt + "SYR_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "SYR_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "SYR_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "SYR_x_n2", 1, fo);
+
+ d = alpha * x * x.T + a;
+ writeMatrix(dt, d, "L2_" + dt + "SYR_o_N", fo);
+ writePackedMatrix(dt, d, "L2_" + dt + "SYR_o_N_pu", fo);
+
+def L2_xSYR2(fo, alpha, n):
+ dataType = ['s', 'd'];
+ for dt in dataType:
+ a = matrixCreate(dt, n, n);
+ writeMatrix(dt, a, "L2_" + dt + "SYR2_A_nn", fo);
+ writePackedMatrix(dt, a, "L2_" + dt + "SYR2_A_nn_pu", fo);
+
+ x = matrixCreate(dt, n, 1);
+ writeMatrix(dt, x, "L2_" + dt + "SYR2_x_n1", fo);
+ writeMatrixWithIncrements(dt, x, "L2_" + dt + "SYR2_x_n2", 1, fo);
+
+ y = matrixCreate(dt, n, 1);
+ writeMatrix(dt, y, "L2_" + dt + "SYR2_y_n1", fo);
+ writeMatrixWithIncrements(dt, y, "L2_" + dt + "SYR2_y_n2", 2, fo);
+
+ d = alpha * x * y.T + y * (alpha * x.T) + a;
+ writeMatrix(dt, d, "L2_" + dt + "SYR2_o_N", fo);
+ writePackedMatrix(dt, d, "L2_" + dt + "SYR2_o_N_pu", fo);
+
+
+def testBLASL2L3(fo):
+ m = random.randint(10, 20);
+ n = random.randint(10, 20);
+ k = random.randint(10, 20);
+ kl = random.randint(1, 5);
+ ku = random.randint(1, 5);
+
+ alpha = 1.0;
+ beta = 1.0;
+
+ fo.write("M, N, K, KL, KU" + ';\n');
+ fo.write(str(m) + " " + str(n) + " " + str(k) + " " + str(kl) + " " + str(ku) + '\n');
+ fo.write('\n');
+
+ L2_xGEMV(fo, alpha, beta, m, n);
+ L2_xGBMV(fo, alpha, beta, m, n, kl, ku);
+ L2_xHEMV(fo, alpha, beta, n);
+ L2_xHBMV(fo, alpha, beta, n, kl);
+ L2_xSYMV(fo, alpha, beta, n);
+ L2_xSBMV(fo, alpha, beta, n, kl);
+ L2_xTRMV(fo, n);
+ L2_xTBMV(fo, n, kl);
+ L2_xTRSV(fo, n);
+ L2_xTBSV(fo, n, kl);
+ L2_xGER(fo, alpha, m, n);
+ L2_xGERU(fo, alpha, m, n);
+ L2_xGERC(fo, alpha, m, n);
+ L2_xHER(fo, alpha, n);
+ L2_xHER2(fo, alpha, n);
+ L2_xSYR(fo, alpha, n);
+ L2_xSYR2(fo, alpha, n);
+
+ L3_xGEMM(fo, alpha, beta, m, n, k);
+ L3_xSYMM(fo, alpha, beta, m, n);
+ L3_xHEMM(fo, alpha, beta, m, n);
+ L3_xSYRK(fo, alpha, beta, n, k);
+ L3_xHERK(fo, alpha, beta, n, k);
+ L3_xSYR2K(fo, alpha, beta, n, k);
+ L3_xHER2K(fo, alpha, beta, n, k);
+ L3_xTRMM(fo, alpha, m, n);
+ L3_xTRSM(fo, alpha, m, n);
+
+ return;
+
+def javaDataGen():
+ fo = open("BLASData.txt", "w+")
+ fo.write("/* Don't edit this file! It is auto-generated by blas_gen.py. */\n");
+ fo.write("\n");
+
+ #data body
+ testBLASL2L3(fo);
+ fo.close()
+ return;
+
+javaDataGen();
+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/BLASData.java b/tests/tests/renderscript/src/android/renderscript/cts/BLASData.java
new file mode 100644
index 0000000..def0352
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/BLASData.java
@@ -0,0 +1,1382 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Don't edit this file alone!
+ * The array names need to match the data generated by blas_gen.py. */
+
+package android.renderscript.cts;
+
+import android.content.res.AssetManager;
+import android.content.Context;
+import java.io.InputStream;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+
+import android.test.AndroidTestCase;
+
+public class BLASData extends AndroidTestCase {
+ private BufferedReader mBufReader;
+
+ int dM;
+ int dN;
+ int dK;
+
+ int KL;
+ int KU;
+
+ float[] L2_sGEMV_A_mn;
+ float[] L2_sGEMV_x_n1;
+ float[] L2_sGEMV_x_n2;
+ float[] L2_sGEMV_y_m1;
+ float[] L2_sGEMV_y_m2;
+ float[] L2_sGEMV_o_N;
+ float[] L2_sGEMV_o_N2;
+ float[] L2_sGEMV_o_T;
+ float[] L2_sGEMV_o_H;
+
+ double[] L2_dGEMV_A_mn;
+ double[] L2_dGEMV_x_n1;
+ double[] L2_dGEMV_x_n2;
+ double[] L2_dGEMV_y_m1;
+ double[] L2_dGEMV_y_m2;
+ double[] L2_dGEMV_o_N;
+ double[] L2_dGEMV_o_N2;
+ double[] L2_dGEMV_o_T;
+ double[] L2_dGEMV_o_H;
+
+ float[] L2_cGEMV_A_mn;
+ float[] L2_cGEMV_x_n1;
+ float[] L2_cGEMV_x_n2;
+ float[] L2_cGEMV_y_m1;
+ float[] L2_cGEMV_y_m2;
+ float[] L2_cGEMV_o_N;
+ float[] L2_cGEMV_o_N2;
+ float[] L2_cGEMV_o_T;
+ float[] L2_cGEMV_o_H;
+
+ double[] L2_zGEMV_A_mn;
+ double[] L2_zGEMV_x_n1;
+ double[] L2_zGEMV_x_n2;
+ double[] L2_zGEMV_y_m1;
+ double[] L2_zGEMV_y_m2;
+ double[] L2_zGEMV_o_N;
+ double[] L2_zGEMV_o_N2;
+ double[] L2_zGEMV_o_T;
+ double[] L2_zGEMV_o_H;
+
+ float[] L2_sGBMV_A_mn;
+ float[] L2_sGBMV_x_n1;
+ float[] L2_sGBMV_x_n2;
+ float[] L2_sGBMV_y_m1;
+ float[] L2_sGBMV_y_m2;
+ float[] L2_sGBMV_o_N;
+ float[] L2_sGBMV_o_N2;
+ float[] L2_sGBMV_o_T;
+ float[] L2_sGBMV_o_H;
+
+ double[] L2_dGBMV_A_mn;
+ double[] L2_dGBMV_x_n1;
+ double[] L2_dGBMV_x_n2;
+ double[] L2_dGBMV_y_m1;
+ double[] L2_dGBMV_y_m2;
+ double[] L2_dGBMV_o_N;
+ double[] L2_dGBMV_o_N2;
+ double[] L2_dGBMV_o_T;
+ double[] L2_dGBMV_o_H;
+
+ float[] L2_cGBMV_A_mn;
+ float[] L2_cGBMV_x_n1;
+ float[] L2_cGBMV_x_n2;
+ float[] L2_cGBMV_y_m1;
+ float[] L2_cGBMV_y_m2;
+ float[] L2_cGBMV_o_N;
+ float[] L2_cGBMV_o_N2;
+ float[] L2_cGBMV_o_T;
+ float[] L2_cGBMV_o_H;
+
+ double[] L2_zGBMV_A_mn;
+ double[] L2_zGBMV_x_n1;
+ double[] L2_zGBMV_x_n2;
+ double[] L2_zGBMV_y_m1;
+ double[] L2_zGBMV_y_m2;
+ double[] L2_zGBMV_o_N;
+ double[] L2_zGBMV_o_N2;
+ double[] L2_zGBMV_o_T;
+ double[] L2_zGBMV_o_H;
+
+ float[] L2_cHEMV_A_nn;
+ float[] L2_cHEMV_A_nn_pu;
+ float[] L2_cHEMV_x_n1;
+ float[] L2_cHEMV_x_n2;
+ float[] L2_cHEMV_y_n1;
+ float[] L2_cHEMV_y_n2;
+ float[] L2_cHEMV_o_N;
+ float[] L2_cHEMV_o_N2;
+
+ double[] L2_zHEMV_A_nn;
+ double[] L2_zHEMV_A_nn_pu;
+ double[] L2_zHEMV_x_n1;
+ double[] L2_zHEMV_x_n2;
+ double[] L2_zHEMV_y_n1;
+ double[] L2_zHEMV_y_n2;
+ double[] L2_zHEMV_o_N;
+ double[] L2_zHEMV_o_N2;
+
+ float[] L2_cHBMV_A_nn;
+ float[] L2_cHBMV_x_n1;
+ float[] L2_cHBMV_x_n2;
+ float[] L2_cHBMV_y_n1;
+ float[] L2_cHBMV_y_n2;
+ float[] L2_cHBMV_o_N;
+ float[] L2_cHBMV_o_N2;
+
+ double[] L2_zHBMV_A_nn;
+ double[] L2_zHBMV_x_n1;
+ double[] L2_zHBMV_x_n2;
+ double[] L2_zHBMV_y_n1;
+ double[] L2_zHBMV_y_n2;
+ double[] L2_zHBMV_o_N;
+ double[] L2_zHBMV_o_N2;
+
+ float[] L2_sSYMV_A_nn;
+ float[] L2_sSYMV_A_nn_pu;
+ float[] L2_sSYMV_x_n1;
+ float[] L2_sSYMV_x_n2;
+ float[] L2_sSYMV_y_n1;
+ float[] L2_sSYMV_y_n2;
+ float[] L2_sSYMV_o_N;
+ float[] L2_sSYMV_o_N2;
+
+ double[] L2_dSYMV_A_nn;
+ double[] L2_dSYMV_A_nn_pu;
+ double[] L2_dSYMV_x_n1;
+ double[] L2_dSYMV_x_n2;
+ double[] L2_dSYMV_y_n1;
+ double[] L2_dSYMV_y_n2;
+ double[] L2_dSYMV_o_N;
+ double[] L2_dSYMV_o_N2;
+
+ float[] L2_sSBMV_A_nn;
+ float[] L2_sSBMV_x_n1;
+ float[] L2_sSBMV_x_n2;
+ float[] L2_sSBMV_y_n1;
+ float[] L2_sSBMV_y_n2;
+ float[] L2_sSBMV_o_N;
+ float[] L2_sSBMV_o_N2;
+
+ double[] L2_dSBMV_A_nn;
+ double[] L2_dSBMV_x_n1;
+ double[] L2_dSBMV_x_n2;
+ double[] L2_dSBMV_y_n1;
+ double[] L2_dSBMV_y_n2;
+ double[] L2_dSBMV_o_N;
+ double[] L2_dSBMV_o_N2;
+
+ float[] L2_sTRMV_A_nn;
+ float[] L2_sTRMV_A_nn_pu;
+ float[] L2_sTRMV_x_n1;
+ float[] L2_sTRMV_x_n2;
+ float[] L2_sTRMV_o_UN;
+ float[] L2_sTRMV_o_UN2;
+ float[] L2_sTRMV_o_UT;
+ float[] L2_sTRMV_o_UH;
+
+ double[] L2_dTRMV_A_nn;
+ double[] L2_dTRMV_A_nn_pu;
+ double[] L2_dTRMV_x_n1;
+ double[] L2_dTRMV_x_n2;
+ double[] L2_dTRMV_o_UN;
+ double[] L2_dTRMV_o_UN2;
+ double[] L2_dTRMV_o_UT;
+ double[] L2_dTRMV_o_UH;
+
+ float[] L2_cTRMV_A_nn;
+ float[] L2_cTRMV_A_nn_pu;
+ float[] L2_cTRMV_x_n1;
+ float[] L2_cTRMV_x_n2;
+ float[] L2_cTRMV_o_UN;
+ float[] L2_cTRMV_o_UN2;
+ float[] L2_cTRMV_o_UT;
+ float[] L2_cTRMV_o_UH;
+
+ double[] L2_zTRMV_A_nn;
+ double[] L2_zTRMV_A_nn_pu;
+ double[] L2_zTRMV_x_n1;
+ double[] L2_zTRMV_x_n2;
+ double[] L2_zTRMV_o_UN;
+ double[] L2_zTRMV_o_UN2;
+ double[] L2_zTRMV_o_UT;
+ double[] L2_zTRMV_o_UH;
+
+ float[] L2_sTBMV_A_nn;
+ float[] L2_sTBMV_x_n1;
+ float[] L2_sTBMV_x_n2;
+ float[] L2_sTBMV_o_UN;
+ float[] L2_sTBMV_o_UN2;
+ float[] L2_sTBMV_o_UT;
+ float[] L2_sTBMV_o_UH;
+
+ double[] L2_dTBMV_A_nn;
+ double[] L2_dTBMV_x_n1;
+ double[] L2_dTBMV_x_n2;
+ double[] L2_dTBMV_o_UN;
+ double[] L2_dTBMV_o_UN2;
+ double[] L2_dTBMV_o_UT;
+ double[] L2_dTBMV_o_UH;
+
+ float[] L2_cTBMV_A_nn;
+ float[] L2_cTBMV_x_n1;
+ float[] L2_cTBMV_x_n2;
+ float[] L2_cTBMV_o_UN;
+ float[] L2_cTBMV_o_UN2;
+ float[] L2_cTBMV_o_UT;
+ float[] L2_cTBMV_o_UH;
+
+ double[] L2_zTBMV_A_nn;
+ double[] L2_zTBMV_x_n1;
+ double[] L2_zTBMV_x_n2;
+ double[] L2_zTBMV_o_UN;
+ double[] L2_zTBMV_o_UN2;
+ double[] L2_zTBMV_o_UT;
+ double[] L2_zTBMV_o_UH;
+
+ float[] L2_sTRSV_A_nn;
+ float[] L2_sTRSV_A_nn_pu;
+ float[] L2_sTRSV_x_n1;
+ float[] L2_sTRSV_x_n2;
+ float[] L2_sTRSV_o_UN;
+ float[] L2_sTRSV_o_UN2;
+ float[] L2_sTRSV_o_UT;
+ float[] L2_sTRSV_o_UH;
+
+ double[] L2_dTRSV_A_nn;
+ double[] L2_dTRSV_A_nn_pu;
+ double[] L2_dTRSV_x_n1;
+ double[] L2_dTRSV_x_n2;
+ double[] L2_dTRSV_o_UN;
+ double[] L2_dTRSV_o_UN2;
+ double[] L2_dTRSV_o_UT;
+ double[] L2_dTRSV_o_UH;
+
+ float[] L2_cTRSV_A_nn;
+ float[] L2_cTRSV_A_nn_pu;
+ float[] L2_cTRSV_x_n1;
+ float[] L2_cTRSV_x_n2;
+ float[] L2_cTRSV_o_UN;
+ float[] L2_cTRSV_o_UN2;
+ float[] L2_cTRSV_o_UT;
+ float[] L2_cTRSV_o_UH;
+
+ double[] L2_zTRSV_A_nn;
+ double[] L2_zTRSV_A_nn_pu;
+ double[] L2_zTRSV_x_n1;
+ double[] L2_zTRSV_x_n2;
+ double[] L2_zTRSV_o_UN;
+ double[] L2_zTRSV_o_UN2;
+ double[] L2_zTRSV_o_UT;
+ double[] L2_zTRSV_o_UH;
+
+ float[] L2_sTBSV_A_nn;
+ float[] L2_sTBSV_x_n1;
+ float[] L2_sTBSV_x_n2;
+ float[] L2_sTBSV_o_UN;
+ float[] L2_sTBSV_o_UN2;
+ float[] L2_sTBSV_o_UT;
+ float[] L2_sTBSV_o_UH;
+
+ double[] L2_dTBSV_A_nn;
+ double[] L2_dTBSV_x_n1;
+ double[] L2_dTBSV_x_n2;
+ double[] L2_dTBSV_o_UN;
+ double[] L2_dTBSV_o_UN2;
+ double[] L2_dTBSV_o_UT;
+ double[] L2_dTBSV_o_UH;
+
+ float[] L2_cTBSV_A_nn;
+ float[] L2_cTBSV_x_n1;
+ float[] L2_cTBSV_x_n2;
+ float[] L2_cTBSV_o_UN;
+ float[] L2_cTBSV_o_UN2;
+ float[] L2_cTBSV_o_UT;
+ float[] L2_cTBSV_o_UH;
+
+ double[] L2_zTBSV_A_nn;
+ double[] L2_zTBSV_x_n1;
+ double[] L2_zTBSV_x_n2;
+ double[] L2_zTBSV_o_UN;
+ double[] L2_zTBSV_o_UN2;
+ double[] L2_zTBSV_o_UT;
+ double[] L2_zTBSV_o_UH;
+
+ float[] L2_sGER_A_mn;
+ float[] L2_sGER_x_m1;
+ float[] L2_sGER_x_m2;
+ float[] L2_sGER_y_n1;
+ float[] L2_sGER_y_n2;
+ float[] L2_sGER_o_N;
+
+ double[] L2_dGER_A_mn;
+ double[] L2_dGER_x_m1;
+ double[] L2_dGER_x_m2;
+ double[] L2_dGER_y_n1;
+ double[] L2_dGER_y_n2;
+ double[] L2_dGER_o_N;
+
+ float[] L2_cGERU_A_mn;
+ float[] L2_cGERU_x_m1;
+ float[] L2_cGERU_x_m2;
+ float[] L2_cGERU_y_n1;
+ float[] L2_cGERU_y_n2;
+ float[] L2_cGERU_o_N;
+
+ double[] L2_zGERU_A_mn;
+ double[] L2_zGERU_x_m1;
+ double[] L2_zGERU_x_m2;
+ double[] L2_zGERU_y_n1;
+ double[] L2_zGERU_y_n2;
+ double[] L2_zGERU_o_N;
+
+ float[] L2_cGERC_A_mn;
+ float[] L2_cGERC_x_m1;
+ float[] L2_cGERC_x_m2;
+ float[] L2_cGERC_y_n1;
+ float[] L2_cGERC_y_n2;
+ float[] L2_cGERC_o_N;
+
+ double[] L2_zGERC_A_mn;
+ double[] L2_zGERC_x_m1;
+ double[] L2_zGERC_x_m2;
+ double[] L2_zGERC_y_n1;
+ double[] L2_zGERC_y_n2;
+ double[] L2_zGERC_o_N;
+
+ float[] L2_cHER_A_nn;
+ float[] L2_cHER_A_nn_pu;
+ float[] L2_cHER_x_n1;
+ float[] L2_cHER_x_n2;
+ float[] L2_cHER_o_N;
+ float[] L2_cHER_o_N_pu;
+
+ double[] L2_zHER_A_nn;
+ double[] L2_zHER_A_nn_pu;
+ double[] L2_zHER_x_n1;
+ double[] L2_zHER_x_n2;
+ double[] L2_zHER_o_N;
+ double[] L2_zHER_o_N_pu;
+
+ float[] L2_cHER2_A_nn;
+ float[] L2_cHER2_A_nn_pu;
+ float[] L2_cHER2_x_n1;
+ float[] L2_cHER2_x_n2;
+ float[] L2_cHER2_y_n1;
+ float[] L2_cHER2_y_n2;
+ float[] L2_cHER2_o_N;
+ float[] L2_cHER2_o_N_pu;
+
+ double[] L2_zHER2_A_nn;
+ double[] L2_zHER2_A_nn_pu;
+ double[] L2_zHER2_x_n1;
+ double[] L2_zHER2_x_n2;
+ double[] L2_zHER2_y_n1;
+ double[] L2_zHER2_y_n2;
+ double[] L2_zHER2_o_N;
+ double[] L2_zHER2_o_N_pu;
+
+ float[] L2_sSYR_A_nn;
+ float[] L2_sSYR_A_nn_pu;
+ float[] L2_sSYR_x_n1;
+ float[] L2_sSYR_x_n2;
+ float[] L2_sSYR_o_N;
+ float[] L2_sSYR_o_N_pu;
+
+ double[] L2_dSYR_A_nn;
+ double[] L2_dSYR_A_nn_pu;
+ double[] L2_dSYR_x_n1;
+ double[] L2_dSYR_x_n2;
+ double[] L2_dSYR_o_N;
+ double[] L2_dSYR_o_N_pu;
+
+ float[] L2_sSYR2_A_nn;
+ float[] L2_sSYR2_A_nn_pu;
+ float[] L2_sSYR2_x_n1;
+ float[] L2_sSYR2_x_n2;
+ float[] L2_sSYR2_y_n1;
+ float[] L2_sSYR2_y_n2;
+ float[] L2_sSYR2_o_N;
+ float[] L2_sSYR2_o_N_pu;
+
+ double[] L2_dSYR2_A_nn;
+ double[] L2_dSYR2_A_nn_pu;
+ double[] L2_dSYR2_x_n1;
+ double[] L2_dSYR2_x_n2;
+ double[] L2_dSYR2_y_n1;
+ double[] L2_dSYR2_y_n2;
+ double[] L2_dSYR2_o_N;
+ double[] L2_dSYR2_o_N_pu;
+
+ float[] L3_sGEMM_A_mk;
+ float[] L3_sGEMM_B_kn;
+ float[] L3_sGEMM_C_mn;
+ float[] L3_sGEMM_o_NN;
+ float[] L3_sGEMM_A_km;
+ float[] L3_sGEMM_B_nk;
+ float[] L3_sGEMM_o_TT;
+ float[] L3_sGEMM_o_HH;
+
+ double[] L3_dGEMM_A_mk;
+ double[] L3_dGEMM_B_kn;
+ double[] L3_dGEMM_C_mn;
+ double[] L3_dGEMM_o_NN;
+ double[] L3_dGEMM_A_km;
+ double[] L3_dGEMM_B_nk;
+ double[] L3_dGEMM_o_TT;
+ double[] L3_dGEMM_o_HH;
+ float[] L3_cGEMM_A_mk;
+ float[] L3_cGEMM_B_kn;
+ float[] L3_cGEMM_C_mn;
+ float[] L3_cGEMM_o_NN;
+ float[] L3_cGEMM_A_km;
+ float[] L3_cGEMM_B_nk;
+ float[] L3_cGEMM_o_TT;
+ float[] L3_cGEMM_o_HH;
+
+ double[] L3_zGEMM_A_mk;
+ double[] L3_zGEMM_B_kn;
+ double[] L3_zGEMM_C_mn;
+ double[] L3_zGEMM_o_NN;
+ double[] L3_zGEMM_A_km;
+ double[] L3_zGEMM_B_nk;
+ double[] L3_zGEMM_o_TT;
+ double[] L3_zGEMM_o_HH;
+
+ float[] L3_sSYMM_A_mm;
+ float[] L3_sSYMM_B_mn;
+ float[] L3_sSYMM_C_mn;
+ float[] L3_sSYMM_o_L;
+ float[] L3_sSYMM_A_nn;
+ float[] L3_sSYMM_o_R;
+
+ double[] L3_dSYMM_A_mm;
+ double[] L3_dSYMM_B_mn;
+ double[] L3_dSYMM_C_mn;
+ double[] L3_dSYMM_o_L;
+ double[] L3_dSYMM_A_nn;
+ double[] L3_dSYMM_o_R;
+
+ float[] L3_cSYMM_A_mm;
+ float[] L3_cSYMM_B_mn;
+ float[] L3_cSYMM_C_mn;
+ float[] L3_cSYMM_o_L;
+ float[] L3_cSYMM_A_nn;
+ float[] L3_cSYMM_o_R;
+
+ double[] L3_zSYMM_A_mm;
+ double[] L3_zSYMM_B_mn;
+ double[] L3_zSYMM_C_mn;
+ double[] L3_zSYMM_o_L;
+ double[] L3_zSYMM_A_nn;
+ double[] L3_zSYMM_o_R;
+
+ float[] L3_cHEMM_A_mm;
+ float[] L3_cHEMM_B_mn;
+ float[] L3_cHEMM_C_mn;
+ float[] L3_cHEMM_o_L;
+ float[] L3_cHEMM_A_nn;
+ float[] L3_cHEMM_o_R;
+
+ double[] L3_zHEMM_A_mm;
+ double[] L3_zHEMM_B_mn;
+ double[] L3_zHEMM_C_mn;
+ double[] L3_zHEMM_o_L;
+ double[] L3_zHEMM_A_nn;
+ double[] L3_zHEMM_o_R;
+
+ float[] L3_sSYRK_A_nk;
+ float[] L3_sSYRK_C_nn;
+ float[] L3_sSYRK_o_N;
+ float[] L3_sSYRK_A_kn;
+ float[] L3_sSYRK_o_T;
+
+ double[] L3_dSYRK_A_nk;
+ double[] L3_dSYRK_C_nn;
+ double[] L3_dSYRK_o_N;
+ double[] L3_dSYRK_A_kn;
+ double[] L3_dSYRK_o_T;
+
+ float[] L3_cSYRK_A_nk;
+ float[] L3_cSYRK_C_nn;
+ float[] L3_cSYRK_o_N;
+ float[] L3_cSYRK_A_kn;
+ float[] L3_cSYRK_o_T;
+
+ double[] L3_zSYRK_A_nk;
+ double[] L3_zSYRK_C_nn;
+ double[] L3_zSYRK_o_N;
+ double[] L3_zSYRK_A_kn;
+ double[] L3_zSYRK_o_T;
+
+ float[] L3_cHERK_A_nk;
+ float[] L3_cHERK_C_nn;
+ float[] L3_cHERK_o_N;
+ float[] L3_cHERK_A_kn;
+ float[] L3_cHERK_o_H;
+
+ double[] L3_zHERK_A_nk;
+ double[] L3_zHERK_C_nn;
+ double[] L3_zHERK_o_N;
+ double[] L3_zHERK_A_kn;
+ double[] L3_zHERK_o_H;
+
+ float[] L3_sSYR2K_A_nk;
+ float[] L3_sSYR2K_B_nk;
+ float[] L3_sSYR2K_C_nn;
+ float[] L3_sSYR2K_o_N;
+ float[] L3_sSYR2K_A_kn;
+ float[] L3_sSYR2K_B_kn;
+ float[] L3_sSYR2K_o_T;
+
+ double[] L3_dSYR2K_A_nk;
+ double[] L3_dSYR2K_B_nk;
+ double[] L3_dSYR2K_C_nn;
+ double[] L3_dSYR2K_o_N;
+ double[] L3_dSYR2K_A_kn;
+ double[] L3_dSYR2K_B_kn;
+ double[] L3_dSYR2K_o_T;
+
+ float[] L3_cSYR2K_A_nk;
+ float[] L3_cSYR2K_B_nk;
+ float[] L3_cSYR2K_C_nn;
+ float[] L3_cSYR2K_o_N;
+ float[] L3_cSYR2K_A_kn;
+ float[] L3_cSYR2K_B_kn;
+ float[] L3_cSYR2K_o_T;
+
+ double[] L3_zSYR2K_A_nk;
+ double[] L3_zSYR2K_B_nk;
+ double[] L3_zSYR2K_C_nn;
+ double[] L3_zSYR2K_o_N;
+ double[] L3_zSYR2K_A_kn;
+ double[] L3_zSYR2K_B_kn;
+ double[] L3_zSYR2K_o_T;
+
+ float[] L3_cHER2K_A_nk;
+ float[] L3_cHER2K_B_nk;
+ float[] L3_cHER2K_C_nn;
+ float[] L3_cHER2K_o_N;
+ float[] L3_cHER2K_A_kn;
+ float[] L3_cHER2K_B_kn;
+ float[] L3_cHER2K_o_H;
+
+ double[] L3_zHER2K_A_nk;
+ double[] L3_zHER2K_B_nk;
+ double[] L3_zHER2K_C_nn;
+ double[] L3_zHER2K_o_N;
+ double[] L3_zHER2K_A_kn;
+ double[] L3_zHER2K_B_kn;
+ double[] L3_zHER2K_o_H;
+
+ float[] L3_sTRMM_A_mm;
+ float[] L3_sTRMM_B_mn;
+ float[] L3_sTRMM_o_LUN;
+ float[] L3_sTRMM_A_nn;
+ float[] L3_sTRMM_o_RLT;
+
+ double[] L3_dTRMM_A_mm;
+ double[] L3_dTRMM_B_mn;
+ double[] L3_dTRMM_o_LUN;
+ double[] L3_dTRMM_A_nn;
+ double[] L3_dTRMM_o_RLT;
+
+ float[] L3_cTRMM_A_mm;
+ float[] L3_cTRMM_B_mn;
+ float[] L3_cTRMM_o_LUN;
+ float[] L3_cTRMM_A_nn;
+ float[] L3_cTRMM_o_RLT;
+
+ double[] L3_zTRMM_A_mm;
+ double[] L3_zTRMM_B_mn;
+ double[] L3_zTRMM_o_LUN;
+ double[] L3_zTRMM_A_nn;
+ double[] L3_zTRMM_o_RLT;
+
+ float[] L3_sTRSM_A_mm;
+ float[] L3_sTRSM_B_mn;
+ float[] L3_sTRSM_o_LUN;
+ float[] L3_sTRSM_A_nn;
+ float[] L3_sTRSM_o_RLT;
+
+ double[] L3_dTRSM_A_mm;
+ double[] L3_dTRSM_B_mn;
+ double[] L3_dTRSM_o_LUN;
+ double[] L3_dTRSM_A_nn;
+ double[] L3_dTRSM_o_RLT;
+
+ float[] L3_cTRSM_A_mm;
+ float[] L3_cTRSM_B_mn;
+ float[] L3_cTRSM_o_LUN;
+ float[] L3_cTRSM_A_nn;
+ float[] L3_cTRSM_o_RLT;
+
+ double[] L3_zTRSM_A_mm;
+ double[] L3_zTRSM_B_mn;
+ double[] L3_zTRSM_o_LUN;
+ double[] L3_zTRSM_A_nn;
+ double[] L3_zTRSM_o_RLT;
+
+ //load dimensions of matrixes
+ private void loadMNK() throws Exception {
+ String data = "";
+ int skipLine = 3;
+
+ for (int i = 0; i < skipLine; i++) {
+ data = mBufReader.readLine();
+ }
+ data = mBufReader.readLine();
+
+ String[] results = data.split(" ");
+ dM = Integer.parseInt(results[0]);
+ dN = Integer.parseInt(results[1]);
+ dK = Integer.parseInt(results[2]);
+ KL = Integer.parseInt(results[3]);
+ KU = Integer.parseInt(results[4]);
+ }
+
+ private float[] loadFloatArray() throws Exception {
+ String data = "";
+ int skipLine = 2;
+
+ for (int i = 0; i < skipLine; i++) {
+ data = mBufReader.readLine();
+ }
+ data = mBufReader.readLine();
+ String[] results = data.split(", ");
+
+ float[] floatArr = new float[results.length];
+ for (int i = 0; i < floatArr.length; i++) {
+ floatArr[i] = Float.parseFloat(results[i]);
+ }
+
+ return floatArr;
+ }
+
+ private double[] loadDoubleArray() throws Exception {
+ String data = "";
+ int skipLine = 2;
+
+ for (int i = 0; i < skipLine; i++) {
+ data = mBufReader.readLine();
+ }
+ data = mBufReader.readLine();
+ String[] results = data.split(", ");
+
+ double[] doubleArr = new double[results.length];
+ for (int i = 0; i < doubleArr.length; i++) {
+ doubleArr[i] = Double.parseDouble(results[i]);
+ }
+ return doubleArr;
+ }
+
+ //load data for L2 BLAS
+ private void loadGEMVData() throws Exception {
+ L2_sGEMV_A_mn = loadFloatArray();
+ L2_sGEMV_x_n1 = loadFloatArray();
+ L2_sGEMV_x_n2 = loadFloatArray();
+ L2_sGEMV_y_m1 = loadFloatArray();
+ L2_sGEMV_y_m2 = loadFloatArray();
+ L2_sGEMV_o_N = loadFloatArray();
+ L2_sGEMV_o_N2 = loadFloatArray();
+ L2_sGEMV_o_T = loadFloatArray();
+ L2_sGEMV_o_H = loadFloatArray();
+
+ L2_dGEMV_A_mn = loadDoubleArray();
+ L2_dGEMV_x_n1 = loadDoubleArray();
+ L2_dGEMV_x_n2 = loadDoubleArray();
+ L2_dGEMV_y_m1 = loadDoubleArray();
+ L2_dGEMV_y_m2 = loadDoubleArray();
+ L2_dGEMV_o_N = loadDoubleArray();
+ L2_dGEMV_o_N2 = loadDoubleArray();
+ L2_dGEMV_o_T = loadDoubleArray();
+ L2_dGEMV_o_H = loadDoubleArray();
+
+ L2_cGEMV_A_mn = loadFloatArray();
+ L2_cGEMV_x_n1 = loadFloatArray();
+ L2_cGEMV_x_n2 = loadFloatArray();
+ L2_cGEMV_y_m1 = loadFloatArray();
+ L2_cGEMV_y_m2 = loadFloatArray();
+ L2_cGEMV_o_N = loadFloatArray();
+ L2_cGEMV_o_N2 = loadFloatArray();
+ L2_cGEMV_o_T = loadFloatArray();
+ L2_cGEMV_o_H = loadFloatArray();
+
+ L2_zGEMV_A_mn = loadDoubleArray();
+ L2_zGEMV_x_n1 = loadDoubleArray();
+ L2_zGEMV_x_n2 = loadDoubleArray();
+ L2_zGEMV_y_m1 = loadDoubleArray();
+ L2_zGEMV_y_m2 = loadDoubleArray();
+ L2_zGEMV_o_N = loadDoubleArray();
+ L2_zGEMV_o_N2 = loadDoubleArray();
+ L2_zGEMV_o_T = loadDoubleArray();
+ L2_zGEMV_o_H = loadDoubleArray();
+
+ }
+
+ private void loadGBMVData() throws Exception {
+ L2_sGBMV_A_mn = loadFloatArray();
+ L2_sGBMV_x_n1 = loadFloatArray();
+ L2_sGBMV_x_n2 = loadFloatArray();
+ L2_sGBMV_y_m1 = loadFloatArray();
+ L2_sGBMV_y_m2 = loadFloatArray();
+ L2_sGBMV_o_N = loadFloatArray();
+ L2_sGBMV_o_N2 = loadFloatArray();
+ L2_sGBMV_o_T = loadFloatArray();
+ L2_sGBMV_o_H = loadFloatArray();
+
+ L2_dGBMV_A_mn = loadDoubleArray();
+ L2_dGBMV_x_n1 = loadDoubleArray();
+ L2_dGBMV_x_n2 = loadDoubleArray();
+ L2_dGBMV_y_m1 = loadDoubleArray();
+ L2_dGBMV_y_m2 = loadDoubleArray();
+ L2_dGBMV_o_N = loadDoubleArray();
+ L2_dGBMV_o_N2 = loadDoubleArray();
+ L2_dGBMV_o_T = loadDoubleArray();
+ L2_dGBMV_o_H = loadDoubleArray();
+
+ L2_cGBMV_A_mn = loadFloatArray();
+ L2_cGBMV_x_n1 = loadFloatArray();
+ L2_cGBMV_x_n2 = loadFloatArray();
+ L2_cGBMV_y_m1 = loadFloatArray();
+ L2_cGBMV_y_m2 = loadFloatArray();
+ L2_cGBMV_o_N = loadFloatArray();
+ L2_cGBMV_o_N2 = loadFloatArray();
+ L2_cGBMV_o_T = loadFloatArray();
+ L2_cGBMV_o_H = loadFloatArray();
+
+ L2_zGBMV_A_mn = loadDoubleArray();
+ L2_zGBMV_x_n1 = loadDoubleArray();
+ L2_zGBMV_x_n2 = loadDoubleArray();
+ L2_zGBMV_y_m1 = loadDoubleArray();
+ L2_zGBMV_y_m2 = loadDoubleArray();
+ L2_zGBMV_o_N = loadDoubleArray();
+ L2_zGBMV_o_N2 = loadDoubleArray();
+ L2_zGBMV_o_T = loadDoubleArray();
+ L2_zGBMV_o_H = loadDoubleArray();
+ }
+
+ private void loadHEMVData() throws Exception {
+ L2_cHEMV_A_nn = loadFloatArray();
+ L2_cHEMV_A_nn_pu = loadFloatArray();
+ L2_cHEMV_x_n1 = loadFloatArray();
+ L2_cHEMV_x_n2 = loadFloatArray();
+ L2_cHEMV_y_n1 = loadFloatArray();
+ L2_cHEMV_y_n2 = loadFloatArray();
+ L2_cHEMV_o_N = loadFloatArray();
+ L2_cHEMV_o_N2 = loadFloatArray();
+
+ L2_zHEMV_A_nn = loadDoubleArray();
+ L2_zHEMV_A_nn_pu = loadDoubleArray();
+ L2_zHEMV_x_n1 = loadDoubleArray();
+ L2_zHEMV_x_n2 = loadDoubleArray();
+ L2_zHEMV_y_n1 = loadDoubleArray();
+ L2_zHEMV_y_n2 = loadDoubleArray();
+ L2_zHEMV_o_N = loadDoubleArray();
+ L2_zHEMV_o_N2 = loadDoubleArray();
+ }
+
+ private void loadHBMVData() throws Exception {
+ L2_cHBMV_A_nn = loadFloatArray();
+ L2_cHBMV_x_n1 = loadFloatArray();
+ L2_cHBMV_x_n2 = loadFloatArray();
+ L2_cHBMV_y_n1 = loadFloatArray();
+ L2_cHBMV_y_n2 = loadFloatArray();
+ L2_cHBMV_o_N = loadFloatArray();
+ L2_cHBMV_o_N2 = loadFloatArray();
+
+ L2_zHBMV_A_nn = loadDoubleArray();
+ L2_zHBMV_x_n1 = loadDoubleArray();
+ L2_zHBMV_x_n2 = loadDoubleArray();
+ L2_zHBMV_y_n1 = loadDoubleArray();
+ L2_zHBMV_y_n2 = loadDoubleArray();
+ L2_zHBMV_o_N = loadDoubleArray();
+ L2_zHBMV_o_N2 = loadDoubleArray();
+ }
+
+ private void loadSYMVData() throws Exception {
+ L2_sSYMV_A_nn = loadFloatArray();
+ L2_sSYMV_A_nn_pu = loadFloatArray();
+ L2_sSYMV_x_n1 = loadFloatArray();
+ L2_sSYMV_x_n2 = loadFloatArray();
+ L2_sSYMV_y_n1 = loadFloatArray();
+ L2_sSYMV_y_n2 = loadFloatArray();
+ L2_sSYMV_o_N = loadFloatArray();
+ L2_sSYMV_o_N2 = loadFloatArray();
+
+ L2_dSYMV_A_nn = loadDoubleArray();
+ L2_dSYMV_A_nn_pu = loadDoubleArray();
+ L2_dSYMV_x_n1 = loadDoubleArray();
+ L2_dSYMV_x_n2 = loadDoubleArray();
+ L2_dSYMV_y_n1 = loadDoubleArray();
+ L2_dSYMV_y_n2 = loadDoubleArray();
+ L2_dSYMV_o_N = loadDoubleArray();
+ L2_dSYMV_o_N2 = loadDoubleArray();
+ }
+
+ private void loadSBMVData() throws Exception {
+ L2_sSBMV_A_nn = loadFloatArray();
+ L2_sSBMV_x_n1 = loadFloatArray();
+ L2_sSBMV_x_n2 = loadFloatArray();
+ L2_sSBMV_y_n1 = loadFloatArray();
+ L2_sSBMV_y_n2 = loadFloatArray();
+ L2_sSBMV_o_N = loadFloatArray();
+ L2_sSBMV_o_N2 = loadFloatArray();
+
+ L2_dSBMV_A_nn = loadDoubleArray();
+ L2_dSBMV_x_n1 = loadDoubleArray();
+ L2_dSBMV_x_n2 = loadDoubleArray();
+ L2_dSBMV_y_n1 = loadDoubleArray();
+ L2_dSBMV_y_n2 = loadDoubleArray();
+ L2_dSBMV_o_N = loadDoubleArray();
+ L2_dSBMV_o_N2 = loadDoubleArray();
+ }
+
+ private void loadTRMVData() throws Exception {
+ L2_sTRMV_A_nn = loadFloatArray();
+ L2_sTRMV_A_nn_pu = loadFloatArray();
+ L2_sTRMV_x_n1 = loadFloatArray();
+ L2_sTRMV_x_n2 = loadFloatArray();
+ L2_sTRMV_o_UN = loadFloatArray();
+ L2_sTRMV_o_UN2 = loadFloatArray();
+ L2_sTRMV_o_UT = loadFloatArray();
+ L2_sTRMV_o_UH = loadFloatArray();
+
+ L2_dTRMV_A_nn = loadDoubleArray();
+ L2_dTRMV_A_nn_pu = loadDoubleArray();
+ L2_dTRMV_x_n1 = loadDoubleArray();
+ L2_dTRMV_x_n2 = loadDoubleArray();
+ L2_dTRMV_o_UN = loadDoubleArray();
+ L2_dTRMV_o_UN2 = loadDoubleArray();
+ L2_dTRMV_o_UT = loadDoubleArray();
+ L2_dTRMV_o_UH = loadDoubleArray();
+
+ L2_cTRMV_A_nn = loadFloatArray();
+ L2_cTRMV_A_nn_pu = loadFloatArray();
+ L2_cTRMV_x_n1 = loadFloatArray();
+ L2_cTRMV_x_n2 = loadFloatArray();
+ L2_cTRMV_o_UN = loadFloatArray();
+ L2_cTRMV_o_UN2 = loadFloatArray();
+ L2_cTRMV_o_UT = loadFloatArray();
+ L2_cTRMV_o_UH = loadFloatArray();
+
+ L2_zTRMV_A_nn = loadDoubleArray();
+ L2_zTRMV_A_nn_pu = loadDoubleArray();
+ L2_zTRMV_x_n1 = loadDoubleArray();
+ L2_zTRMV_x_n2 = loadDoubleArray();
+ L2_zTRMV_o_UN = loadDoubleArray();
+ L2_zTRMV_o_UN2 = loadDoubleArray();
+ L2_zTRMV_o_UT = loadDoubleArray();
+ L2_zTRMV_o_UH = loadDoubleArray();
+ }
+
+ private void loadTBMVData() throws Exception {
+ L2_sTBMV_A_nn = loadFloatArray();
+ L2_sTBMV_x_n1 = loadFloatArray();
+ L2_sTBMV_x_n2 = loadFloatArray();
+ L2_sTBMV_o_UN = loadFloatArray();
+ L2_sTBMV_o_UN2 = loadFloatArray();
+ L2_sTBMV_o_UT = loadFloatArray();
+ L2_sTBMV_o_UH = loadFloatArray();
+
+ L2_dTBMV_A_nn = loadDoubleArray();
+ L2_dTBMV_x_n1 = loadDoubleArray();
+ L2_dTBMV_x_n2 = loadDoubleArray();
+ L2_dTBMV_o_UN = loadDoubleArray();
+ L2_dTBMV_o_UN2 = loadDoubleArray();
+ L2_dTBMV_o_UT = loadDoubleArray();
+ L2_dTBMV_o_UH = loadDoubleArray();
+
+ L2_cTBMV_A_nn = loadFloatArray();
+ L2_cTBMV_x_n1 = loadFloatArray();
+ L2_cTBMV_x_n2 = loadFloatArray();
+ L2_cTBMV_o_UN = loadFloatArray();
+ L2_cTBMV_o_UN2 = loadFloatArray();
+ L2_cTBMV_o_UT = loadFloatArray();
+ L2_cTBMV_o_UH = loadFloatArray();
+
+ L2_zTBMV_A_nn = loadDoubleArray();
+ L2_zTBMV_x_n1 = loadDoubleArray();
+ L2_zTBMV_x_n2 = loadDoubleArray();
+ L2_zTBMV_o_UN = loadDoubleArray();
+ L2_zTBMV_o_UN2 = loadDoubleArray();
+ L2_zTBMV_o_UT = loadDoubleArray();
+ L2_zTBMV_o_UH = loadDoubleArray();
+ }
+
+ private void loadTRSVData() throws Exception {
+ L2_sTRSV_A_nn = loadFloatArray();
+ L2_sTRSV_A_nn_pu = loadFloatArray();
+ L2_sTRSV_x_n1 = loadFloatArray();
+ L2_sTRSV_x_n2 = loadFloatArray();
+ L2_sTRSV_o_UN = loadFloatArray();
+ L2_sTRSV_o_UN2 = loadFloatArray();
+ L2_sTRSV_o_UT = loadFloatArray();
+ L2_sTRSV_o_UH = loadFloatArray();
+
+ L2_dTRSV_A_nn = loadDoubleArray();
+ L2_dTRSV_A_nn_pu = loadDoubleArray();
+ L2_dTRSV_x_n1 = loadDoubleArray();
+ L2_dTRSV_x_n2 = loadDoubleArray();
+ L2_dTRSV_o_UN = loadDoubleArray();
+ L2_dTRSV_o_UN2 = loadDoubleArray();
+ L2_dTRSV_o_UT = loadDoubleArray();
+ L2_dTRSV_o_UH = loadDoubleArray();
+
+ L2_cTRSV_A_nn = loadFloatArray();
+ L2_cTRSV_A_nn_pu = loadFloatArray();
+ L2_cTRSV_x_n1 = loadFloatArray();
+ L2_cTRSV_x_n2 = loadFloatArray();
+ L2_cTRSV_o_UN = loadFloatArray();
+ L2_cTRSV_o_UN2 = loadFloatArray();
+ L2_cTRSV_o_UT = loadFloatArray();
+ L2_cTRSV_o_UH = loadFloatArray();
+
+ L2_zTRSV_A_nn = loadDoubleArray();
+ L2_zTRSV_A_nn_pu = loadDoubleArray();
+ L2_zTRSV_x_n1 = loadDoubleArray();
+ L2_zTRSV_x_n2 = loadDoubleArray();
+ L2_zTRSV_o_UN = loadDoubleArray();
+ L2_zTRSV_o_UN2 = loadDoubleArray();
+ L2_zTRSV_o_UT = loadDoubleArray();
+ L2_zTRSV_o_UH = loadDoubleArray();
+ }
+
+ private void loadTBSVData() throws Exception {
+ L2_sTBSV_A_nn = loadFloatArray();
+ L2_sTBSV_x_n1 = loadFloatArray();
+ L2_sTBSV_x_n2 = loadFloatArray();
+ L2_sTBSV_o_UN = loadFloatArray();
+ L2_sTBSV_o_UN2 = loadFloatArray();
+ L2_sTBSV_o_UT = loadFloatArray();
+ L2_sTBSV_o_UH = loadFloatArray();
+
+ L2_dTBSV_A_nn = loadDoubleArray();
+ L2_dTBSV_x_n1 = loadDoubleArray();
+ L2_dTBSV_x_n2 = loadDoubleArray();
+ L2_dTBSV_o_UN = loadDoubleArray();
+ L2_dTBSV_o_UN2 = loadDoubleArray();
+ L2_dTBSV_o_UT = loadDoubleArray();
+ L2_dTBSV_o_UH = loadDoubleArray();
+
+ L2_cTBSV_A_nn = loadFloatArray();
+ L2_cTBSV_x_n1 = loadFloatArray();
+ L2_cTBSV_x_n2 = loadFloatArray();
+ L2_cTBSV_o_UN = loadFloatArray();
+ L2_cTBSV_o_UN2 = loadFloatArray();
+ L2_cTBSV_o_UT = loadFloatArray();
+ L2_cTBSV_o_UH = loadFloatArray();
+
+ L2_zTBSV_A_nn = loadDoubleArray();
+ L2_zTBSV_x_n1 = loadDoubleArray();
+ L2_zTBSV_x_n2 = loadDoubleArray();
+ L2_zTBSV_o_UN = loadDoubleArray();
+ L2_zTBSV_o_UN2 = loadDoubleArray();
+ L2_zTBSV_o_UT = loadDoubleArray();
+ L2_zTBSV_o_UH = loadDoubleArray();
+ }
+
+ private void loadGERData() throws Exception {
+ L2_sGER_A_mn = loadFloatArray();
+ L2_sGER_x_m1 = loadFloatArray();
+ L2_sGER_x_m2 = loadFloatArray();
+ L2_sGER_y_n1 = loadFloatArray();
+ L2_sGER_y_n2 = loadFloatArray();
+ L2_sGER_o_N = loadFloatArray();
+
+ L2_dGER_A_mn = loadDoubleArray();
+ L2_dGER_x_m1 = loadDoubleArray();
+ L2_dGER_x_m2 = loadDoubleArray();
+ L2_dGER_y_n1 = loadDoubleArray();
+ L2_dGER_y_n2 = loadDoubleArray();
+ L2_dGER_o_N = loadDoubleArray();
+ }
+
+ private void loadGERUData() throws Exception {
+ L2_cGERU_A_mn = loadFloatArray();
+ L2_cGERU_x_m1 = loadFloatArray();
+ L2_cGERU_x_m2 = loadFloatArray();
+ L2_cGERU_y_n1 = loadFloatArray();
+ L2_cGERU_y_n2 = loadFloatArray();
+ L2_cGERU_o_N = loadFloatArray();
+
+ L2_zGERU_A_mn = loadDoubleArray();
+ L2_zGERU_x_m1 = loadDoubleArray();
+ L2_zGERU_x_m2 = loadDoubleArray();
+ L2_zGERU_y_n1 = loadDoubleArray();
+ L2_zGERU_y_n2 = loadDoubleArray();
+ L2_zGERU_o_N = loadDoubleArray();
+ }
+
+ private void loadGERCData() throws Exception {
+ L2_cGERC_A_mn = loadFloatArray();
+ L2_cGERC_x_m1 = loadFloatArray();
+ L2_cGERC_x_m2 = loadFloatArray();
+ L2_cGERC_y_n1 = loadFloatArray();
+ L2_cGERC_y_n2 = loadFloatArray();
+ L2_cGERC_o_N = loadFloatArray();
+
+ L2_zGERC_A_mn = loadDoubleArray();
+ L2_zGERC_x_m1 = loadDoubleArray();
+ L2_zGERC_x_m2 = loadDoubleArray();
+ L2_zGERC_y_n1 = loadDoubleArray();
+ L2_zGERC_y_n2 = loadDoubleArray();
+ L2_zGERC_o_N = loadDoubleArray();
+ }
+
+ private void loadHERData() throws Exception {
+ L2_cHER_A_nn = loadFloatArray();
+ L2_cHER_A_nn_pu = loadFloatArray();
+ L2_cHER_x_n1 = loadFloatArray();
+ L2_cHER_x_n2 = loadFloatArray();
+ L2_cHER_o_N = loadFloatArray();
+ L2_cHER_o_N_pu = loadFloatArray();
+
+ L2_zHER_A_nn = loadDoubleArray();
+ L2_zHER_A_nn_pu = loadDoubleArray();
+ L2_zHER_x_n1 = loadDoubleArray();
+ L2_zHER_x_n2 = loadDoubleArray();
+ L2_zHER_o_N = loadDoubleArray();
+ L2_zHER_o_N_pu = loadDoubleArray();
+ }
+
+ private void loadHER2Data() throws Exception {
+ L2_cHER2_A_nn = loadFloatArray();
+ L2_cHER2_A_nn_pu = loadFloatArray();
+ L2_cHER2_x_n1 = loadFloatArray();
+ L2_cHER2_x_n2 = loadFloatArray();
+ L2_cHER2_y_n1 = loadFloatArray();
+ L2_cHER2_y_n2 = loadFloatArray();
+ L2_cHER2_o_N = loadFloatArray();
+ L2_cHER2_o_N_pu = loadFloatArray();
+
+ L2_zHER2_A_nn = loadDoubleArray();
+ L2_zHER2_A_nn_pu = loadDoubleArray();
+ L2_zHER2_x_n1 = loadDoubleArray();
+ L2_zHER2_x_n2 = loadDoubleArray();
+ L2_zHER2_y_n1 = loadDoubleArray();
+ L2_zHER2_y_n2 = loadDoubleArray();
+ L2_zHER2_o_N = loadDoubleArray();
+ L2_zHER2_o_N_pu = loadDoubleArray();
+ }
+
+ private void loadSYRData() throws Exception {
+ L2_sSYR_A_nn = loadFloatArray();
+ L2_sSYR_A_nn_pu = loadFloatArray();
+ L2_sSYR_x_n1 = loadFloatArray();
+ L2_sSYR_x_n2 = loadFloatArray();
+ L2_sSYR_o_N = loadFloatArray();
+ L2_sSYR_o_N_pu = loadFloatArray();
+
+ L2_dSYR_A_nn = loadDoubleArray();
+ L2_dSYR_A_nn_pu = loadDoubleArray();
+ L2_dSYR_x_n1 = loadDoubleArray();
+ L2_dSYR_x_n2 = loadDoubleArray();
+ L2_dSYR_o_N = loadDoubleArray();
+ L2_dSYR_o_N_pu = loadDoubleArray();
+ }
+
+ private void loadSYR2Data() throws Exception {
+ L2_sSYR2_A_nn = loadFloatArray();
+ L2_sSYR2_A_nn_pu = loadFloatArray();
+ L2_sSYR2_x_n1 = loadFloatArray();
+ L2_sSYR2_x_n2 = loadFloatArray();
+ L2_sSYR2_y_n1 = loadFloatArray();
+ L2_sSYR2_y_n2 = loadFloatArray();
+ L2_sSYR2_o_N = loadFloatArray();
+ L2_sSYR2_o_N_pu = loadFloatArray();
+
+ L2_dSYR2_A_nn = loadDoubleArray();
+ L2_dSYR2_A_nn_pu = loadDoubleArray();
+ L2_dSYR2_x_n1 = loadDoubleArray();
+ L2_dSYR2_x_n2 = loadDoubleArray();
+ L2_dSYR2_y_n1 = loadDoubleArray();
+ L2_dSYR2_y_n2 = loadDoubleArray();
+ L2_dSYR2_o_N = loadDoubleArray();
+ L2_dSYR2_o_N_pu = loadDoubleArray();
+ }
+
+ //load data for L3 BLAS
+ private void loadGEMMData() throws Exception {
+ L3_sGEMM_A_mk = loadFloatArray();
+ L3_sGEMM_B_kn = loadFloatArray();
+ L3_sGEMM_C_mn = loadFloatArray();
+ L3_sGEMM_o_NN = loadFloatArray();
+ L3_sGEMM_A_km = loadFloatArray();
+ L3_sGEMM_B_nk = loadFloatArray();
+ L3_sGEMM_o_TT = loadFloatArray();
+ L3_sGEMM_o_HH = loadFloatArray();
+
+ L3_dGEMM_A_mk = loadDoubleArray();
+ L3_dGEMM_B_kn = loadDoubleArray();
+ L3_dGEMM_C_mn = loadDoubleArray();
+ L3_dGEMM_o_NN = loadDoubleArray();
+ L3_dGEMM_A_km = loadDoubleArray();
+ L3_dGEMM_B_nk = loadDoubleArray();
+ L3_dGEMM_o_TT = loadDoubleArray();
+ L3_dGEMM_o_HH = loadDoubleArray();
+
+ L3_cGEMM_A_mk = loadFloatArray();
+ L3_cGEMM_B_kn = loadFloatArray();
+ L3_cGEMM_C_mn = loadFloatArray();
+ L3_cGEMM_o_NN = loadFloatArray();
+ L3_cGEMM_A_km = loadFloatArray();
+ L3_cGEMM_B_nk = loadFloatArray();
+ L3_cGEMM_o_TT = loadFloatArray();
+ L3_cGEMM_o_HH = loadFloatArray();
+
+ L3_zGEMM_A_mk = loadDoubleArray();
+ L3_zGEMM_B_kn = loadDoubleArray();
+ L3_zGEMM_C_mn = loadDoubleArray();
+ L3_zGEMM_o_NN = loadDoubleArray();
+ L3_zGEMM_A_km = loadDoubleArray();
+ L3_zGEMM_B_nk = loadDoubleArray();
+ L3_zGEMM_o_TT = loadDoubleArray();
+ L3_zGEMM_o_HH = loadDoubleArray();
+ }
+
+ private void loadSYMMData() throws Exception {
+ L3_sSYMM_A_mm = loadFloatArray();
+ L3_sSYMM_B_mn = loadFloatArray();
+ L3_sSYMM_C_mn = loadFloatArray();
+ L3_sSYMM_o_L = loadFloatArray();
+ L3_sSYMM_A_nn = loadFloatArray();
+ L3_sSYMM_o_R = loadFloatArray();
+
+ L3_dSYMM_A_mm = loadDoubleArray();
+ L3_dSYMM_B_mn = loadDoubleArray();
+ L3_dSYMM_C_mn = loadDoubleArray();
+ L3_dSYMM_o_L = loadDoubleArray();
+ L3_dSYMM_A_nn = loadDoubleArray();
+ L3_dSYMM_o_R = loadDoubleArray();
+
+ L3_cSYMM_A_mm = loadFloatArray();
+ L3_cSYMM_B_mn = loadFloatArray();
+ L3_cSYMM_C_mn = loadFloatArray();
+ L3_cSYMM_o_L = loadFloatArray();
+ L3_cSYMM_A_nn = loadFloatArray();
+ L3_cSYMM_o_R = loadFloatArray();
+
+ L3_zSYMM_A_mm = loadDoubleArray();
+ L3_zSYMM_B_mn = loadDoubleArray();
+ L3_zSYMM_C_mn = loadDoubleArray();
+ L3_zSYMM_o_L = loadDoubleArray();
+ L3_zSYMM_A_nn = loadDoubleArray();
+ L3_zSYMM_o_R = loadDoubleArray();
+ }
+
+ private void loadHEMMData() throws Exception {
+ L3_cHEMM_A_mm = loadFloatArray();
+ L3_cHEMM_B_mn = loadFloatArray();
+ L3_cHEMM_C_mn = loadFloatArray();
+ L3_cHEMM_o_L = loadFloatArray();
+ L3_cHEMM_A_nn = loadFloatArray();
+ L3_cHEMM_o_R = loadFloatArray();
+
+ L3_zHEMM_A_mm = loadDoubleArray();
+ L3_zHEMM_B_mn = loadDoubleArray();
+ L3_zHEMM_C_mn = loadDoubleArray();
+ L3_zHEMM_o_L = loadDoubleArray();
+ L3_zHEMM_A_nn = loadDoubleArray();
+ L3_zHEMM_o_R = loadDoubleArray();
+ }
+
+ private void loadSYRKData() throws Exception {
+ L3_sSYRK_A_nk = loadFloatArray();
+ L3_sSYRK_C_nn = loadFloatArray();
+ L3_sSYRK_o_N = loadFloatArray();
+ L3_sSYRK_A_kn = loadFloatArray();
+ L3_sSYRK_o_T = loadFloatArray();
+
+ L3_dSYRK_A_nk = loadDoubleArray();
+ L3_dSYRK_C_nn = loadDoubleArray();
+ L3_dSYRK_o_N = loadDoubleArray();
+ L3_dSYRK_A_kn = loadDoubleArray();
+ L3_dSYRK_o_T = loadDoubleArray();
+
+ L3_cSYRK_A_nk = loadFloatArray();
+ L3_cSYRK_C_nn = loadFloatArray();
+ L3_cSYRK_o_N = loadFloatArray();
+ L3_cSYRK_A_kn = loadFloatArray();
+ L3_cSYRK_o_T = loadFloatArray();
+
+ L3_zSYRK_A_nk = loadDoubleArray();
+ L3_zSYRK_C_nn = loadDoubleArray();
+ L3_zSYRK_o_N = loadDoubleArray();
+ L3_zSYRK_A_kn = loadDoubleArray();
+ L3_zSYRK_o_T = loadDoubleArray();
+ }
+
+ private void loadHERKData() throws Exception {
+ L3_cHERK_A_nk = loadFloatArray();
+ L3_cHERK_C_nn = loadFloatArray();
+ L3_cHERK_o_N = loadFloatArray();
+ L3_cHERK_A_kn = loadFloatArray();
+ L3_cHERK_o_H = loadFloatArray();
+
+ L3_zHERK_A_nk = loadDoubleArray();
+ L3_zHERK_C_nn = loadDoubleArray();
+ L3_zHERK_o_N = loadDoubleArray();
+ L3_zHERK_A_kn = loadDoubleArray();
+ L3_zHERK_o_H = loadDoubleArray();
+ }
+
+ private void loadSYR2KData() throws Exception {
+ L3_sSYR2K_A_nk = loadFloatArray();
+ L3_sSYR2K_B_nk = loadFloatArray();
+ L3_sSYR2K_C_nn = loadFloatArray();
+ L3_sSYR2K_o_N = loadFloatArray();
+ L3_sSYR2K_A_kn = loadFloatArray();
+ L3_sSYR2K_B_kn = loadFloatArray();
+ L3_sSYR2K_o_T = loadFloatArray();
+
+ L3_dSYR2K_A_nk = loadDoubleArray();
+ L3_dSYR2K_B_nk = loadDoubleArray();
+ L3_dSYR2K_C_nn = loadDoubleArray();
+ L3_dSYR2K_o_N = loadDoubleArray();
+ L3_dSYR2K_A_kn = loadDoubleArray();
+ L3_dSYR2K_B_kn = loadDoubleArray();
+ L3_dSYR2K_o_T = loadDoubleArray();
+
+ L3_cSYR2K_A_nk = loadFloatArray();
+ L3_cSYR2K_B_nk = loadFloatArray();
+ L3_cSYR2K_C_nn = loadFloatArray();
+ L3_cSYR2K_o_N = loadFloatArray();
+ L3_cSYR2K_A_kn = loadFloatArray();
+ L3_cSYR2K_B_kn = loadFloatArray();
+ L3_cSYR2K_o_T = loadFloatArray();
+
+ L3_zSYR2K_A_nk = loadDoubleArray();
+ L3_zSYR2K_B_nk = loadDoubleArray();
+ L3_zSYR2K_C_nn = loadDoubleArray();
+ L3_zSYR2K_o_N = loadDoubleArray();
+ L3_zSYR2K_A_kn = loadDoubleArray();
+ L3_zSYR2K_B_kn = loadDoubleArray();
+ L3_zSYR2K_o_T = loadDoubleArray();
+ }
+
+ private void loadHER2KData() throws Exception {
+ L3_cHER2K_A_nk = loadFloatArray();
+ L3_cHER2K_B_nk = loadFloatArray();
+ L3_cHER2K_C_nn = loadFloatArray();
+ L3_cHER2K_o_N = loadFloatArray();
+ L3_cHER2K_A_kn = loadFloatArray();
+ L3_cHER2K_B_kn = loadFloatArray();
+ L3_cHER2K_o_H = loadFloatArray();
+
+ L3_zHER2K_A_nk = loadDoubleArray();
+ L3_zHER2K_B_nk = loadDoubleArray();
+ L3_zHER2K_C_nn = loadDoubleArray();
+ L3_zHER2K_o_N = loadDoubleArray();
+ L3_zHER2K_A_kn = loadDoubleArray();
+ L3_zHER2K_B_kn = loadDoubleArray();
+ L3_zHER2K_o_H = loadDoubleArray();
+ }
+
+ private void loadTRMMData() throws Exception {
+ L3_sTRMM_A_mm = loadFloatArray();
+ L3_sTRMM_B_mn = loadFloatArray();
+ L3_sTRMM_o_LUN = loadFloatArray();
+ L3_sTRMM_A_nn = loadFloatArray();
+ L3_sTRMM_o_RLT = loadFloatArray();
+
+ L3_dTRMM_A_mm = loadDoubleArray();
+ L3_dTRMM_B_mn = loadDoubleArray();
+ L3_dTRMM_o_LUN = loadDoubleArray();
+ L3_dTRMM_A_nn = loadDoubleArray();
+ L3_dTRMM_o_RLT = loadDoubleArray();
+
+ L3_cTRMM_A_mm = loadFloatArray();
+ L3_cTRMM_B_mn = loadFloatArray();
+ L3_cTRMM_o_LUN = loadFloatArray();
+ L3_cTRMM_A_nn = loadFloatArray();
+ L3_cTRMM_o_RLT = loadFloatArray();
+
+ L3_zTRMM_A_mm = loadDoubleArray();
+ L3_zTRMM_B_mn = loadDoubleArray();
+ L3_zTRMM_o_LUN = loadDoubleArray();
+ L3_zTRMM_A_nn = loadDoubleArray();
+ L3_zTRMM_o_RLT = loadDoubleArray();
+ }
+
+ private void loadTRSMData() throws Exception {
+ L3_sTRSM_A_mm = loadFloatArray();
+ L3_sTRSM_B_mn = loadFloatArray();
+ L3_sTRSM_o_LUN = loadFloatArray();
+ L3_sTRSM_A_nn = loadFloatArray();
+ L3_sTRSM_o_RLT = loadFloatArray();
+
+ L3_dTRSM_A_mm = loadDoubleArray();
+ L3_dTRSM_B_mn = loadDoubleArray();
+ L3_dTRSM_o_LUN = loadDoubleArray();
+ L3_dTRSM_A_nn = loadDoubleArray();
+ L3_dTRSM_o_RLT = loadDoubleArray();
+
+ L3_cTRSM_A_mm = loadFloatArray();
+ L3_cTRSM_B_mn = loadFloatArray();
+ L3_cTRSM_o_LUN = loadFloatArray();
+ L3_cTRSM_A_nn = loadFloatArray();
+ L3_cTRSM_o_RLT = loadFloatArray();
+
+ L3_zTRSM_A_mm = loadDoubleArray();
+ L3_zTRSM_B_mn = loadDoubleArray();
+ L3_zTRSM_o_LUN = loadDoubleArray();
+ L3_zTRSM_A_nn = loadDoubleArray();
+ L3_zTRSM_o_RLT = loadDoubleArray();
+ }
+
+ void loadData(Context ctx) throws Exception {
+ InputStream is = ctx.getAssets().open("BLASData.txt");
+ mBufReader = new BufferedReader(new InputStreamReader(is));
+
+ //Load data sequentially
+ loadMNK();
+ loadGEMVData();
+ loadGBMVData();
+ loadHEMVData();
+ loadHBMVData();
+ loadSYMVData();
+ loadSBMVData();
+ loadTRMVData();
+ loadTBMVData();
+ loadTRSVData();
+ loadTBSVData();
+ loadGERData();
+ loadGERUData();
+ loadGERCData();
+ loadHERData();
+ loadHER2Data();
+ loadSYRData();
+ loadSYR2Data();
+ loadGEMMData();
+ loadSYMMData();
+ loadHEMMData();
+ loadSYRKData();
+ loadHERKData();
+ loadSYR2KData();
+ loadHER2KData();
+ loadTRMMData();
+ loadTRSMData();
+ }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Float16ArithmeticTest.java b/tests/tests/renderscript/src/android/renderscript/cts/Float16ArithmeticTest.java
new file mode 100644
index 0000000..8f6d4a1
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Float16ArithmeticTest.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript.cts;
+
+import java.util.Random;
+import java.lang.Math;
+import java.lang.Float;
+import java.lang.Integer;
+import java.lang.Short;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RenderScript;
+import android.renderscript.RSRuntimeException;
+import android.renderscript.Script;
+import android.renderscript.Type;
+import android.util.Log;
+
+public class Float16ArithmeticTest extends RSBaseCompute {
+ private int numInputs = Float16TestData.input.length;
+
+ // Allocations to hold float16 input and output
+ private Allocation mInput;
+ private Allocation mF16Matrix;
+ private Allocation mU16Matrix;
+
+ // A numInputs * numInputs length 1-D array with data copied from
+ // mU16Matrix
+ private short[] output = new short[numInputs * numInputs];
+
+ // 16-bit masks for extracting sign, exponent and mantissa bits
+ private static short SIGN_MASK = (short) 0x8000;
+ private static short EXPONENT_MASK = (short) 0x7C00;
+ private static short MANTISSA_MASK = (short) 0x03FF;
+
+ // NaN has all exponent bits set to 1 and a non-zero mantissa
+ private boolean isFloat16NaN(short val) {
+ return (val & EXPONENT_MASK) == EXPONENT_MASK &&
+ (val & MANTISSA_MASK) != 0;
+ }
+
+ // Infinity has all exponent bits set to 1 and zeroes in mantissa
+ private boolean isFloat16Infinite(short val) {
+ return (val & EXPONENT_MASK) == EXPONENT_MASK &&
+ (val & MANTISSA_MASK) == 0;
+ }
+
+ // Subnormal numbers have exponent bits set to 0 and a non-zero mantissa
+ private boolean isFloat16SubNormal(short val) {
+ return (val & EXPONENT_MASK) == 0 && (val & MANTISSA_MASK) != 0;
+ }
+
+ // Zero has all but the sign bit set to zero
+ private boolean isFloat16Zero(short val) {
+ return (val & ~SIGN_MASK) == 0;
+ }
+
+ // Negativity test checks the sign bit
+ private boolean isFloat16Negative(short val) {
+ return (val & SIGN_MASK) != 0;
+ }
+
+ // Check if this is a finite, non-zero FP16 value
+ private boolean isFloat16FiniteNonZero(short val) {
+ return !isFloat16NaN(val) && !isFloat16Infinite(val) && !isFloat16Zero(val);
+ }
+
+ // Convert FP16 value to float
+ private float convertFloat16ToFloat(short val) {
+ // Extract sign, exponent and mantissa
+ int sign = val & SIGN_MASK;
+ int exponent = (val & EXPONENT_MASK) >> 10;
+ int mantissa = val & MANTISSA_MASK;
+
+ // 0.<mantissa> = <mantissa> * 2^-10
+ float mantissaAsFloat = Math.scalb(mantissa, -10);
+
+ float result;
+ if (isFloat16Zero(val))
+ result = 0.0f;
+ else if (isFloat16Infinite(val))
+ result = java.lang.Float.POSITIVE_INFINITY;
+ else if (isFloat16NaN(val))
+ result = java.lang.Float.NaN;
+ else if (isFloat16SubNormal(val)) {
+ // value is 2^-14 * mantissaAsFloat
+ result = Math.scalb(1, -14) * mantissaAsFloat;
+ }
+ else {
+ // value is 2^(exponent - 15) * 1.<mantissa>
+ result = Math.scalb(1, exponent - 15) * (1 + mantissaAsFloat);
+ }
+
+ if (sign != 0)
+ result = -result;
+ return result;
+ }
+
+ // Create input, intermediate, and output allocations. Copy input data to
+ // the input allocation
+ private void setupTest() {
+ Element f16 = Element.F16(mRS);
+ Element u16 = Element.U16(mRS);
+ Type f16Matrix = Type.createXY(mRS, f16, numInputs, numInputs);
+ Type u16Matrix = Type.createXY(mRS, u16, numInputs, numInputs);
+
+ mInput = Allocation.createSized(mRS, f16, numInputs);
+ mF16Matrix = Allocation.createTyped(mRS, f16Matrix);
+ mU16Matrix = Allocation.createTyped(mRS, u16Matrix);
+
+ mInput.copyFromUnchecked(Float16TestData.input);
+ }
+
+ // Check the output of performing 'operation' on inputs x and y against the
+ // reference output in refValues. For special cases like Infinity, NaN and
+ // zero, use exact comparison. Otherwise, check if the output is within
+ // the bounds in 'refValues' by converting all values to float.
+ private boolean checkFloat16Output(int x, int y, short[][][] refValues,
+ String operation)
+ {
+ // Find the input, output and reference values based on the indices
+ short in1 = Float16TestData.input[x];
+ short in2 = Float16TestData.input[y];
+ short out = output[x + y * numInputs];
+ short lb = refValues[x][y][0];
+ short ub = refValues[x][y][1];
+
+ // Do exact match if the reference value is a special case (Nan, zero
+ // infinity or their negative equivalents).
+ if (isFloat16Infinite(lb))
+ return lb == out;
+ // NaN can have any non-zero mantissa. Do not use equality check
+ if (isFloat16NaN(lb))
+ return isFloat16NaN(out);
+ // If reference output is zero, test for exact equivalence if at least
+ // one of the input values is a special-case FP16 value.
+ if (isFloat16Zero(lb)) {
+ if (!isFloat16FiniteNonZero(in1) || !isFloat16FiniteNonZero(in2))
+ return lb == out;
+ }
+
+ float floatLB = convertFloat16ToFloat(lb);
+ float floatUB = convertFloat16ToFloat(ub);
+ float floatOut = convertFloat16ToFloat(out);
+
+ if (floatOut < floatLB || floatOut > floatUB) {
+ StringBuilder message = new StringBuilder();
+ message.append("Incorrect output for float16 " + operation + ":");
+ message.append("\nInput 1: " + Short.toString(in1));
+ message.append("\nInput 2: " + Short.toString(in2));
+ message.append("\nExpected output between: " + Short.toString(lb) +
+ " and " + Short.toString(ub));
+ message.append("\nActual output: " + Short.toString(out));
+ message.append("\nExpected output (in float) between: " +
+ Float.toString(floatLB) + " and " + Float.toString(floatUB));
+ message.append("\nActual output: " + Float.toString(floatOut));
+ assertTrue(message.toString(), false);
+ }
+ return true;
+ }
+
+ private boolean checkFloat16Add(int x, int y) {
+ return checkFloat16Output(x, y, Float16TestData.ReferenceOutputForAdd,
+ "addition");
+ }
+
+ public void testFloat16Add() {
+ setupTest();
+ ScriptC_float16_arithmetic script = new ScriptC_float16_arithmetic(mRS);
+
+ script.set_gInput(mInput);
+ script.forEach_add(mF16Matrix);
+ script.forEach_bitcast(mF16Matrix, mU16Matrix);
+ mU16Matrix.copyTo(output);
+
+ for (int x = 0; x < numInputs; x ++) {
+ for (int y = 0; y < numInputs; y ++) {
+ checkFloat16Add(x, y);
+ }
+ }
+ }
+
+ private boolean checkFloat16Sub(int x, int y) {
+ return checkFloat16Output(x, y, Float16TestData.ReferenceOutputForSub,
+ "subtraction");
+ }
+
+ public void testFloat16Sub() {
+ setupTest();
+ ScriptC_float16_arithmetic script = new ScriptC_float16_arithmetic(mRS);
+
+ script.set_gInput(mInput);
+ script.forEach_sub(mF16Matrix);
+ script.forEach_bitcast(mF16Matrix, mU16Matrix);
+ mU16Matrix.copyTo(output);
+
+ for (int x = 0; x < numInputs; x ++) {
+ for (int y = 0; y < numInputs; y ++) {
+ checkFloat16Sub(x, y);
+ }
+ }
+ }
+
+ private boolean checkFloat16Mul(int x, int y) {
+ return checkFloat16Output(x, y, Float16TestData.ReferenceOutputForMul,
+ "multiplication");
+ }
+
+ public void testFloat16Mul() {
+ setupTest();
+ ScriptC_float16_arithmetic script = new ScriptC_float16_arithmetic(mRS);
+
+ script.set_gInput(mInput);
+ script.forEach_mul(mF16Matrix);
+ script.forEach_bitcast(mF16Matrix, mU16Matrix);
+ mU16Matrix.copyTo(output);
+
+ for (int x = 0; x < numInputs; x ++) {
+ for (int y = 0; y < numInputs; y ++) {
+ checkFloat16Mul(x, y);
+ }
+ }
+ }
+
+ private boolean checkFloat16Div(int x, int y) {
+ return checkFloat16Output(x, y, Float16TestData.ReferenceOutputForDiv,
+ "division");
+ }
+
+ public void testFloat16Div() {
+ setupTest();
+ ScriptC_float16_arithmetic script = new ScriptC_float16_arithmetic(mRS);
+
+ script.set_gInput(mInput);
+ script.forEach_div(mF16Matrix);
+ script.forEach_bitcast(mF16Matrix, mU16Matrix);
+ mU16Matrix.copyTo(output);
+
+ for (int x = 0; x < numInputs; x ++) {
+ for (int y = 0; y < numInputs; y ++) {
+ checkFloat16Div(x, y);
+ }
+ }
+ }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Float16TestData.java b/tests/tests/renderscript/src/android/renderscript/cts/Float16TestData.java
new file mode 100644
index 0000000..f4cef49
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Float16TestData.java
@@ -0,0 +1,2037 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Don't edit this file! It is auto-generated by float16_gen.sh */
+
+package android.renderscript.cts;
+
+public class Float16TestData {
+ static short[] input = {
+ (short) 0x3c00, // one
+ (short) 0x4000, // two
+ (short) 0x0001, // smallest subnormal
+ (short) 0x03ff, // largest subnormal
+ (short) 0x0400, // smallest normal
+ (short) 0x7bff, // largest normal
+ (short) 0x3880, // 0.562500
+ (short) 0x3e80, // 1.625000
+ (short) 0x5140, // 42.000000
+ (short) 0x5ac0, // 216.000000
+ (short) 0x6c75, // 4564.000000
+ (short) 0x7b53, // 60000.000000
+ (short) 0xbc00, // negative one
+ (short) 0xc000, // negative two
+ (short) 0x8001, // negative (smallest subnormal)
+ (short) 0x83ff, // negative (largest subnormal)
+ (short) 0x8400, // negative (smallest normal)
+ (short) 0xfbff, // negative (largest normal)
+ (short) 0xb880, // -0.562500
+ (short) 0xbe80, // -1.625000
+ (short) 0xd140, // -42.000000
+ (short) 0xdac0, // -216.000000
+ (short) 0xec75, // -4564.000000
+ (short) 0xfb53, // -60000.000000
+ (short) 0x0000, // zero
+ (short) 0x7c00, // infinity
+ (short) 0x8000, // negative zero
+ (short) 0xfc00, // negative infinity
+ (short) 0x7c01, // nan
+ };
+
+ static short[][][] ReferenceOutputForAdd = {
+ {
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x41ff, (short) 0x4201},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3bfe, (short) 0x3c01},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x3e3f, (short) 0x3e41}, {(short) 0x413f, (short) 0x4141},
+ {(short) 0x515f, (short) 0x5161}, {(short) 0x5ac7, (short) 0x5ac9},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xbc01, (short) 0xbbfe},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3bfe, (short) 0x3c01},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x36ff, (short) 0x3701}, {(short) 0xb901, (short) 0xb8ff},
+ {(short) 0xd121, (short) 0xd11f}, {(short) 0xdab9, (short) 0xdab7},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x41ff, (short) 0x4201}, {(short) 0x43fe, (short) 0x4401},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x411f, (short) 0x4121}, {(short) 0x433f, (short) 0x4341},
+ {(short) 0x517f, (short) 0x5181}, {(short) 0x5acf, (short) 0x5ad1},
+ {(short) 0x6c75, (short) 0x6c77}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x3dbf, (short) 0x3dc1}, {(short) 0x35ff, (short) 0x3601},
+ {(short) 0xd101, (short) 0xd0ff}, {(short) 0xdab1, (short) 0xdaaf},
+ {(short) 0xec75, (short) 0xec73}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0003}, {(short) 0x0000, (short) 0x0401},
+ {(short) 0x0400, (short) 0x0402}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x83ff, (short) 0x8000},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x07fd, (short) 0x07ff},
+ {(short) 0x07fe, (short) 0x0800}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x0000, (short) 0x03ff}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0400, (short) 0x0402}, {(short) 0x07fe, (short) 0x0800},
+ {(short) 0x07fe, (short) 0x0801}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x0000, (short) 0x0002},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfd, (short) 0x7bff}, {(short) 0x7bf7, (short) 0x7bf9},
+ {(short) 0x7b6f, (short) 0x7b71}, {(short) 0x6d5f, (short) 0x6d61},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3e3f, (short) 0x3e41}, {(short) 0x411f, (short) 0x4121},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x387f, (short) 0x3881},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x3c7f, (short) 0x3c81}, {(short) 0x405f, (short) 0x4061},
+ {(short) 0x5151, (short) 0x5153}, {(short) 0x5ac3, (short) 0x5ac5},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xb701, (short) 0xb6ff}, {(short) 0xbdc1, (short) 0xbdbf},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x387f, (short) 0x3881},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xbc41, (short) 0xbc3f},
+ {(short) 0xd12f, (short) 0xd12d}, {(short) 0xdabd, (short) 0xdabb},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x413f, (short) 0x4141}, {(short) 0x433f, (short) 0x4341},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x405f, (short) 0x4061}, {(short) 0x427f, (short) 0x4281},
+ {(short) 0x5173, (short) 0x5175}, {(short) 0x5acc, (short) 0x5ace},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x38ff, (short) 0x3901}, {(short) 0xb601, (short) 0xb5ff},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x3c3f, (short) 0x3c41}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xd10d, (short) 0xd10b}, {(short) 0xdab4, (short) 0xdab2},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x515f, (short) 0x5161}, {(short) 0x517f, (short) 0x5181},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x513f, (short) 0x5141},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5151, (short) 0x5153}, {(short) 0x5173, (short) 0x5175},
+ {(short) 0x553f, (short) 0x5541}, {(short) 0x5c07, (short) 0x5c09},
+ {(short) 0x6c7f, (short) 0x6c81}, {(short) 0x7b53, (short) 0x7b55},
+ {(short) 0x511f, (short) 0x5121}, {(short) 0x50ff, (short) 0x5101},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x513f, (short) 0x5141},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0xfbff, (short) 0xfbfd},
+ {(short) 0x512d, (short) 0x512f}, {(short) 0x510b, (short) 0x510d},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xd971, (short) 0xd96f},
+ {(short) 0xec6b, (short) 0xec69}, {(short) 0xfb53, (short) 0xfb51},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x5ac7, (short) 0x5ac9}, {(short) 0x5acf, (short) 0x5ad1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5ac3, (short) 0x5ac5}, {(short) 0x5acc, (short) 0x5ace},
+ {(short) 0x5c07, (short) 0x5c09}, {(short) 0x5ebf, (short) 0x5ec1},
+ {(short) 0x6caa, (short) 0x6cac}, {(short) 0x7b59, (short) 0x7b5b},
+ {(short) 0x5ab7, (short) 0x5ab9}, {(short) 0x5aaf, (short) 0x5ab1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0xfbf9, (short) 0xfbf7},
+ {(short) 0x5abb, (short) 0x5abd}, {(short) 0x5ab2, (short) 0x5ab4},
+ {(short) 0x596f, (short) 0x5971}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xec40, (short) 0xec3e}, {(short) 0xfb4d, (short) 0xfb4b},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c75, (short) 0x6c77},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c7f, (short) 0x6c81}, {(short) 0x6caa, (short) 0x6cac},
+ {(short) 0x7074, (short) 0x7076}, {(short) 0x7be1, (short) 0x7be3},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c73, (short) 0x6c75},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0xfb71, (short) 0xfb6f},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c69, (short) 0x6c6b}, {(short) 0x6c3e, (short) 0x6c40},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfac5, (short) 0xfac3},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b53, (short) 0x7b55}, {(short) 0x7b59, (short) 0x7b5b},
+ {(short) 0x7be1, (short) 0x7be3}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0xed61, (short) 0xed5f},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b51, (short) 0x7b53}, {(short) 0x7b4b, (short) 0x7b4d},
+ {(short) 0x7ac3, (short) 0x7ac5}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x3bfe, (short) 0x3c01},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xbc01, (short) 0xbbfe},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0xb701, (short) 0xb6ff}, {(short) 0x38ff, (short) 0x3901},
+ {(short) 0x511f, (short) 0x5121}, {(short) 0x5ab7, (short) 0x5ab9},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc201, (short) 0xc1ff},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xbc01, (short) 0xbbfe},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xbe41, (short) 0xbe3f}, {(short) 0xc141, (short) 0xc13f},
+ {(short) 0xd161, (short) 0xd15f}, {(short) 0xdac9, (short) 0xdac7},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0xbdc1, (short) 0xbdbf}, {(short) 0xb601, (short) 0xb5ff},
+ {(short) 0x50ff, (short) 0x5101}, {(short) 0x5aaf, (short) 0x5ab1},
+ {(short) 0x6c73, (short) 0x6c75}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xc201, (short) 0xc1ff}, {(short) 0xc401, (short) 0xc3fe},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xc121, (short) 0xc11f}, {(short) 0xc341, (short) 0xc33f},
+ {(short) 0xd181, (short) 0xd17f}, {(short) 0xdad1, (short) 0xdacf},
+ {(short) 0xec77, (short) 0xec75}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x0000, (short) 0x03ff},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8003, (short) 0x8000}, {(short) 0x8401, (short) 0x8000},
+ {(short) 0x8402, (short) 0x8400}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x83ff, (short) 0x8000}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0x87ff, (short) 0x87fd},
+ {(short) 0x8800, (short) 0x87fe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0x8002, (short) 0x0000},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8402, (short) 0x8400}, {(short) 0x8800, (short) 0x87fe},
+ {(short) 0x8801, (short) 0x87fe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfbff, (short) 0xfbfd}, {(short) 0xfbf9, (short) 0xfbf7},
+ {(short) 0xfb71, (short) 0xfb6f}, {(short) 0xed61, (short) 0xed5f},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x36ff, (short) 0x3701}, {(short) 0x3dbf, (short) 0x3dc1},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xb881, (short) 0xb87f},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x3c3f, (short) 0x3c41},
+ {(short) 0x512d, (short) 0x512f}, {(short) 0x5abb, (short) 0x5abd},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbe41, (short) 0xbe3f}, {(short) 0xc121, (short) 0xc11f},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xb881, (short) 0xb87f},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xbc81, (short) 0xbc7f}, {(short) 0xc061, (short) 0xc05f},
+ {(short) 0xd153, (short) 0xd151}, {(short) 0xdac5, (short) 0xdac3},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xb901, (short) 0xb8ff}, {(short) 0x35ff, (short) 0x3601},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0xbc41, (short) 0xbc3f}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x510b, (short) 0x510d}, {(short) 0x5ab2, (short) 0x5ab4},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xc141, (short) 0xc13f}, {(short) 0xc341, (short) 0xc33f},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xc061, (short) 0xc05f}, {(short) 0xc281, (short) 0xc27f},
+ {(short) 0xd175, (short) 0xd173}, {(short) 0xdace, (short) 0xdacc},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xd121, (short) 0xd11f}, {(short) 0xd101, (short) 0xd0ff},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xd141, (short) 0xd13f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0x7bfd, (short) 0x7bff},
+ {(short) 0xd12f, (short) 0xd12d}, {(short) 0xd10d, (short) 0xd10b},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x596f, (short) 0x5971},
+ {(short) 0x6c69, (short) 0x6c6b}, {(short) 0x7b51, (short) 0x7b53},
+ {(short) 0xd161, (short) 0xd15f}, {(short) 0xd181, (short) 0xd17f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xd141, (short) 0xd13f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xd153, (short) 0xd151}, {(short) 0xd175, (short) 0xd173},
+ {(short) 0xd541, (short) 0xd53f}, {(short) 0xdc09, (short) 0xdc07},
+ {(short) 0xec81, (short) 0xec7f}, {(short) 0xfb55, (short) 0xfb53},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xdab9, (short) 0xdab7}, {(short) 0xdab1, (short) 0xdaaf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0x7bf7, (short) 0x7bf9},
+ {(short) 0xdabd, (short) 0xdabb}, {(short) 0xdab4, (short) 0xdab2},
+ {(short) 0xd971, (short) 0xd96f}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x6c3e, (short) 0x6c40}, {(short) 0x7b4b, (short) 0x7b4d},
+ {(short) 0xdac9, (short) 0xdac7}, {(short) 0xdad1, (short) 0xdacf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xdac5, (short) 0xdac3}, {(short) 0xdace, (short) 0xdacc},
+ {(short) 0xdc09, (short) 0xdc07}, {(short) 0xdec1, (short) 0xdebf},
+ {(short) 0xecac, (short) 0xecaa}, {(short) 0xfb5b, (short) 0xfb59},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec75, (short) 0xec73},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0x7b6f, (short) 0x7b71},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec6b, (short) 0xec69}, {(short) 0xec40, (short) 0xec3e},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7ac3, (short) 0x7ac5},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec77, (short) 0xec75},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec81, (short) 0xec7f}, {(short) 0xecac, (short) 0xecaa},
+ {(short) 0xf076, (short) 0xf074}, {(short) 0xfbe3, (short) 0xfbe1},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0x6d5f, (short) 0x6d61},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb53, (short) 0xfb51}, {(short) 0xfb4d, (short) 0xfb4b},
+ {(short) 0xfac5, (short) 0xfac3}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb55, (short) 0xfb53}, {(short) 0xfb5b, (short) 0xfb59},
+ {(short) 0xfbe3, (short) 0xfbe1}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0400},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8400, (short) 0x8000},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0400},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8400, (short) 0x8000},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ };
+
+ static short[][][] ReferenceOutputForSub = {
+ {
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xbc01, (short) 0xbbfe},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3bfe, (short) 0x3c01},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x36ff, (short) 0x3701}, {(short) 0xb901, (short) 0xb8ff},
+ {(short) 0xd121, (short) 0xd11f}, {(short) 0xdab9, (short) 0xdab7},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x41ff, (short) 0x4201},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3bfe, (short) 0x3c01},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x3e3f, (short) 0x3e41}, {(short) 0x413f, (short) 0x4141},
+ {(short) 0x515f, (short) 0x5161}, {(short) 0x5ac7, (short) 0x5ac9},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x3dbf, (short) 0x3dc1}, {(short) 0x35ff, (short) 0x3601},
+ {(short) 0xd101, (short) 0xd0ff}, {(short) 0xdab1, (short) 0xdaaf},
+ {(short) 0xec75, (short) 0xec73}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x41ff, (short) 0x4201}, {(short) 0x43fe, (short) 0x4401},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x411f, (short) 0x4121}, {(short) 0x433f, (short) 0x4341},
+ {(short) 0x517f, (short) 0x5181}, {(short) 0x5acf, (short) 0x5ad1},
+ {(short) 0x6c75, (short) 0x6c77}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x83ff, (short) 0x8000},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0003}, {(short) 0x0000, (short) 0x0401},
+ {(short) 0x0400, (short) 0x0402}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x0000, (short) 0x03ff}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x07fd, (short) 0x07ff},
+ {(short) 0x07fe, (short) 0x0800}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x0000, (short) 0x0002},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0400, (short) 0x0402}, {(short) 0x07fe, (short) 0x0800},
+ {(short) 0x07fe, (short) 0x0801}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfd, (short) 0x7bff}, {(short) 0x7bf7, (short) 0x7bf9},
+ {(short) 0x7b6f, (short) 0x7b71}, {(short) 0x6d5f, (short) 0x6d61},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xb701, (short) 0xb6ff}, {(short) 0xbdc1, (short) 0xbdbf},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x387f, (short) 0x3881},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xbc41, (short) 0xbc3f},
+ {(short) 0xd12f, (short) 0xd12d}, {(short) 0xdabd, (short) 0xdabb},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3e3f, (short) 0x3e41}, {(short) 0x411f, (short) 0x4121},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x387f, (short) 0x3881},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x3c7f, (short) 0x3c81}, {(short) 0x405f, (short) 0x4061},
+ {(short) 0x5151, (short) 0x5153}, {(short) 0x5ac3, (short) 0x5ac5},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x38ff, (short) 0x3901}, {(short) 0xb601, (short) 0xb5ff},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0x3c3f, (short) 0x3c41}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xd10d, (short) 0xd10b}, {(short) 0xdab4, (short) 0xdab2},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x413f, (short) 0x4141}, {(short) 0x433f, (short) 0x4341},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x405f, (short) 0x4061}, {(short) 0x427f, (short) 0x4281},
+ {(short) 0x5173, (short) 0x5175}, {(short) 0x5acc, (short) 0x5ace},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x511f, (short) 0x5121}, {(short) 0x50ff, (short) 0x5101},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x513f, (short) 0x5141},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0xfbff, (short) 0xfbfd},
+ {(short) 0x512d, (short) 0x512f}, {(short) 0x510b, (short) 0x510d},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xd971, (short) 0xd96f},
+ {(short) 0xec6b, (short) 0xec69}, {(short) 0xfb53, (short) 0xfb51},
+ {(short) 0x515f, (short) 0x5161}, {(short) 0x517f, (short) 0x5181},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x513f, (short) 0x5141},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5151, (short) 0x5153}, {(short) 0x5173, (short) 0x5175},
+ {(short) 0x553f, (short) 0x5541}, {(short) 0x5c07, (short) 0x5c09},
+ {(short) 0x6c7f, (short) 0x6c81}, {(short) 0x7b53, (short) 0x7b55},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x5ab7, (short) 0x5ab9}, {(short) 0x5aaf, (short) 0x5ab1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0xfbf9, (short) 0xfbf7},
+ {(short) 0x5abb, (short) 0x5abd}, {(short) 0x5ab2, (short) 0x5ab4},
+ {(short) 0x596f, (short) 0x5971}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xec40, (short) 0xec3e}, {(short) 0xfb4d, (short) 0xfb4b},
+ {(short) 0x5ac7, (short) 0x5ac9}, {(short) 0x5acf, (short) 0x5ad1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5ac3, (short) 0x5ac5}, {(short) 0x5acc, (short) 0x5ace},
+ {(short) 0x5c07, (short) 0x5c09}, {(short) 0x5ebf, (short) 0x5ec1},
+ {(short) 0x6caa, (short) 0x6cac}, {(short) 0x7b59, (short) 0x7b5b},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c73, (short) 0x6c75},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0xfb71, (short) 0xfb6f},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c69, (short) 0x6c6b}, {(short) 0x6c3e, (short) 0x6c40},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfac5, (short) 0xfac3},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c75, (short) 0x6c77},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x6c74, (short) 0x6c76},
+ {(short) 0x6c7f, (short) 0x6c81}, {(short) 0x6caa, (short) 0x6cac},
+ {(short) 0x7074, (short) 0x7076}, {(short) 0x7be1, (short) 0x7be3},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0xed61, (short) 0xed5f},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b51, (short) 0x7b53}, {(short) 0x7b4b, (short) 0x7b4d},
+ {(short) 0x7ac3, (short) 0x7ac5}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x7b53, (short) 0x7b55}, {(short) 0x7b59, (short) 0x7b5b},
+ {(short) 0x7be1, (short) 0x7be3}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc201, (short) 0xc1ff},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xbc01, (short) 0xbbfe},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xbe41, (short) 0xbe3f}, {(short) 0xc141, (short) 0xc13f},
+ {(short) 0xd161, (short) 0xd15f}, {(short) 0xdac9, (short) 0xdac7},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x3bfe, (short) 0x3c01},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xbc01, (short) 0xbbfe},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0xb701, (short) 0xb6ff}, {(short) 0x38ff, (short) 0x3901},
+ {(short) 0x511f, (short) 0x5121}, {(short) 0x5ab7, (short) 0x5ab9},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xc201, (short) 0xc1ff}, {(short) 0xc401, (short) 0xc3fe},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xc121, (short) 0xc11f}, {(short) 0xc341, (short) 0xc33f},
+ {(short) 0xd181, (short) 0xd17f}, {(short) 0xdad1, (short) 0xdacf},
+ {(short) 0xec77, (short) 0xec75}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0xbdc1, (short) 0xbdbf}, {(short) 0xb601, (short) 0xb5ff},
+ {(short) 0x50ff, (short) 0x5101}, {(short) 0x5aaf, (short) 0x5ab1},
+ {(short) 0x6c73, (short) 0x6c75}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8003, (short) 0x8000}, {(short) 0x8401, (short) 0x8000},
+ {(short) 0x8402, (short) 0x8400}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x0000, (short) 0x03ff},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0x87ff, (short) 0x87fd},
+ {(short) 0x8800, (short) 0x87fe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x83ff, (short) 0x8000}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8402, (short) 0x8400}, {(short) 0x8800, (short) 0x87fe},
+ {(short) 0x8801, (short) 0x87fe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0x8002, (short) 0x0000},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xfbff, (short) 0xfbfd}, {(short) 0xfbf9, (short) 0xfbf7},
+ {(short) 0xfb71, (short) 0xfb6f}, {(short) 0xed61, (short) 0xed5f},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbe41, (short) 0xbe3f}, {(short) 0xc121, (short) 0xc11f},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xb881, (short) 0xb87f},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xbc81, (short) 0xbc7f}, {(short) 0xc061, (short) 0xc05f},
+ {(short) 0xd153, (short) 0xd151}, {(short) 0xdac5, (short) 0xdac3},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x36ff, (short) 0x3701}, {(short) 0x3dbf, (short) 0x3dc1},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xb881, (short) 0xb87f},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x3c3f, (short) 0x3c41},
+ {(short) 0x512d, (short) 0x512f}, {(short) 0x5abb, (short) 0x5abd},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xc141, (short) 0xc13f}, {(short) 0xc341, (short) 0xc33f},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xc061, (short) 0xc05f}, {(short) 0xc281, (short) 0xc27f},
+ {(short) 0xd175, (short) 0xd173}, {(short) 0xdace, (short) 0xdacc},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xb901, (short) 0xb8ff}, {(short) 0x35ff, (short) 0x3601},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0xbc41, (short) 0xbc3f}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x510b, (short) 0x510d}, {(short) 0x5ab2, (short) 0x5ab4},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xd161, (short) 0xd15f}, {(short) 0xd181, (short) 0xd17f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xd141, (short) 0xd13f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xd153, (short) 0xd151}, {(short) 0xd175, (short) 0xd173},
+ {(short) 0xd541, (short) 0xd53f}, {(short) 0xdc09, (short) 0xdc07},
+ {(short) 0xec81, (short) 0xec7f}, {(short) 0xfb55, (short) 0xfb53},
+ {(short) 0xd121, (short) 0xd11f}, {(short) 0xd101, (short) 0xd0ff},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xd141, (short) 0xd13f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0x7bfd, (short) 0x7bff},
+ {(short) 0xd12f, (short) 0xd12d}, {(short) 0xd10d, (short) 0xd10b},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x596f, (short) 0x5971},
+ {(short) 0x6c69, (short) 0x6c6b}, {(short) 0x7b51, (short) 0x7b53},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xdac9, (short) 0xdac7}, {(short) 0xdad1, (short) 0xdacf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xdac5, (short) 0xdac3}, {(short) 0xdace, (short) 0xdacc},
+ {(short) 0xdc09, (short) 0xdc07}, {(short) 0xdec1, (short) 0xdebf},
+ {(short) 0xecac, (short) 0xecaa}, {(short) 0xfb5b, (short) 0xfb59},
+ {(short) 0xdab9, (short) 0xdab7}, {(short) 0xdab1, (short) 0xdaaf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0x7bf7, (short) 0x7bf9},
+ {(short) 0xdabd, (short) 0xdabb}, {(short) 0xdab4, (short) 0xdab2},
+ {(short) 0xd971, (short) 0xd96f}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x6c3e, (short) 0x6c40}, {(short) 0x7b4b, (short) 0x7b4d},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec77, (short) 0xec75},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec81, (short) 0xec7f}, {(short) 0xecac, (short) 0xecaa},
+ {(short) 0xf076, (short) 0xf074}, {(short) 0xfbe3, (short) 0xfbe1},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec75, (short) 0xec73},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0x7b6f, (short) 0x7b71},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xec76, (short) 0xec74},
+ {(short) 0xec6b, (short) 0xec69}, {(short) 0xec40, (short) 0xec3e},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7ac3, (short) 0x7ac5},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb55, (short) 0xfb53}, {(short) 0xfb5b, (short) 0xfb59},
+ {(short) 0xfbe3, (short) 0xfbe1}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0x6d5f, (short) 0x6d61},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0xfb53, (short) 0xfb51}, {(short) 0xfb4d, (short) 0xfb4b},
+ {(short) 0xfac5, (short) 0xfac3}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8400, (short) 0x8000},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0400},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8400, (short) 0x8000},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0400},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ };
+
+ static short[][][] ReferenceOutputForMul = {
+ {
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0400},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8400, (short) 0x8000},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x43fe, (short) 0x4401},
+ {(short) 0x0000, (short) 0x0003}, {(short) 0x07fd, (short) 0x07ff},
+ {(short) 0x07fe, (short) 0x0801}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3c7f, (short) 0x3c81}, {(short) 0x427f, (short) 0x4281},
+ {(short) 0x553f, (short) 0x5541}, {(short) 0x5ebf, (short) 0x5ec1},
+ {(short) 0x7074, (short) 0x7076}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc401, (short) 0xc3fe},
+ {(short) 0x8003, (short) 0x8000}, {(short) 0x87ff, (short) 0x87fd},
+ {(short) 0x8801, (short) 0x87fe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xbc81, (short) 0xbc7f}, {(short) 0xc281, (short) 0xc27f},
+ {(short) 0xd541, (short) 0xd53f}, {(short) 0xdec1, (short) 0xdebf},
+ {(short) 0xf076, (short) 0xf074}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0003},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x1bfe, (short) 0x1c00},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0003},
+ {(short) 0x0000, (short) 0x002b}, {(short) 0x0000, (short) 0x00d9},
+ {(short) 0x0c74, (short) 0x0c76}, {(short) 0x1b52, (short) 0x1b54},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8003, (short) 0x8000},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x9c00, (short) 0x9bfe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8003, (short) 0x8000},
+ {(short) 0x802b, (short) 0x8000}, {(short) 0x80d9, (short) 0x8000},
+ {(short) 0x8c76, (short) 0x8c74}, {(short) 0x9b54, (short) 0x9b52},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x07fd, (short) 0x07ff},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x43fc, (short) 0x43fe},
+ {(short) 0x0000, (short) 0x0240}, {(short) 0x067d, (short) 0x067f},
+ {(short) 0x193e, (short) 0x1940}, {(short) 0x22bd, (short) 0x22bf},
+ {(short) 0x3473, (short) 0x3475}, {(short) 0x4350, (short) 0x4352},
+ {(short) 0x8400, (short) 0x8000}, {(short) 0x87ff, (short) 0x87fd},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xc3fe, (short) 0xc3fc},
+ {(short) 0x8240, (short) 0x8000}, {(short) 0x867f, (short) 0x867d},
+ {(short) 0x9940, (short) 0x993e}, {(short) 0xa2bf, (short) 0xa2bd},
+ {(short) 0xb475, (short) 0xb473}, {(short) 0xc352, (short) 0xc350},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x07fe, (short) 0x0801},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x43fe, (short) 0x4400},
+ {(short) 0x0000, (short) 0x0241}, {(short) 0x067f, (short) 0x0681},
+ {(short) 0x193f, (short) 0x1941}, {(short) 0x22bf, (short) 0x22c1},
+ {(short) 0x3474, (short) 0x3476}, {(short) 0x4352, (short) 0x4354},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0x8801, (short) 0x87fe},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xc400, (short) 0xc3fe},
+ {(short) 0x8241, (short) 0x8000}, {(short) 0x8681, (short) 0x867f},
+ {(short) 0x9941, (short) 0x993f}, {(short) 0xa2c1, (short) 0xa2bf},
+ {(short) 0xb476, (short) 0xb474}, {(short) 0xc354, (short) 0xc352},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x1bfe, (short) 0x1c00}, {(short) 0x43fc, (short) 0x43fe},
+ {(short) 0x43fe, (short) 0x4400}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x787e, (short) 0x7880}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x9c00, (short) 0x9bfe}, {(short) 0xc3fe, (short) 0xc3fc},
+ {(short) 0xc400, (short) 0xc3fe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xf880, (short) 0xf87e}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3c7f, (short) 0x3c81},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0240},
+ {(short) 0x0000, (short) 0x0241}, {(short) 0x787e, (short) 0x7880},
+ {(short) 0x350f, (short) 0x3511}, {(short) 0x3b4f, (short) 0x3b51},
+ {(short) 0x4de7, (short) 0x4de9}, {(short) 0x5797, (short) 0x5799},
+ {(short) 0x6903, (short) 0x6905}, {(short) 0x781e, (short) 0x7820},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbc81, (short) 0xbc7f},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8240, (short) 0x8000},
+ {(short) 0x8241, (short) 0x8000}, {(short) 0xf880, (short) 0xf87e},
+ {(short) 0xb511, (short) 0xb50f}, {(short) 0xbb51, (short) 0xbb4f},
+ {(short) 0xcde9, (short) 0xcde7}, {(short) 0xd799, (short) 0xd797},
+ {(short) 0xe905, (short) 0xe903}, {(short) 0xf820, (short) 0xf81e},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x427f, (short) 0x4281},
+ {(short) 0x0000, (short) 0x0003}, {(short) 0x067d, (short) 0x067f},
+ {(short) 0x067f, (short) 0x0681}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3b4f, (short) 0x3b51}, {(short) 0x4147, (short) 0x4149},
+ {(short) 0x5443, (short) 0x5445}, {(short) 0x5d7b, (short) 0x5d7d},
+ {(short) 0x6f3d, (short) 0x6f3f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xc281, (short) 0xc27f},
+ {(short) 0x8003, (short) 0x8000}, {(short) 0x867f, (short) 0x867d},
+ {(short) 0x8681, (short) 0x867f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xbb51, (short) 0xbb4f}, {(short) 0xc149, (short) 0xc147},
+ {(short) 0xd445, (short) 0xd443}, {(short) 0xdd7d, (short) 0xdd7b},
+ {(short) 0xef3f, (short) 0xef3d}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x553f, (short) 0x5541},
+ {(short) 0x0000, (short) 0x002b}, {(short) 0x193e, (short) 0x1940},
+ {(short) 0x193f, (short) 0x1941}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x4de7, (short) 0x4de9}, {(short) 0x5443, (short) 0x5445},
+ {(short) 0x66e3, (short) 0x66e5}, {(short) 0x706d, (short) 0x706f},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xd541, (short) 0xd53f},
+ {(short) 0x802b, (short) 0x8000}, {(short) 0x9940, (short) 0x993e},
+ {(short) 0x9941, (short) 0x993f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xcde9, (short) 0xcde7}, {(short) 0xd445, (short) 0xd443},
+ {(short) 0xe6e5, (short) 0xe6e3}, {(short) 0xf06f, (short) 0xf06d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x5ebf, (short) 0x5ec1},
+ {(short) 0x0000, (short) 0x00d9}, {(short) 0x22bd, (short) 0x22bf},
+ {(short) 0x22bf, (short) 0x22c1}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5797, (short) 0x5799}, {(short) 0x5d7b, (short) 0x5d7d},
+ {(short) 0x706d, (short) 0x706f}, {(short) 0x79b1, (short) 0x79b3},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xdec1, (short) 0xdebf},
+ {(short) 0x80d9, (short) 0x8000}, {(short) 0xa2bf, (short) 0xa2bd},
+ {(short) 0xa2c1, (short) 0xa2bf}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xd799, (short) 0xd797}, {(short) 0xdd7d, (short) 0xdd7b},
+ {(short) 0xf06f, (short) 0xf06d}, {(short) 0xf9b3, (short) 0xf9b1},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7074, (short) 0x7076},
+ {(short) 0x0c74, (short) 0x0c76}, {(short) 0x3473, (short) 0x3475},
+ {(short) 0x3474, (short) 0x3476}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x6903, (short) 0x6905}, {(short) 0x6f3d, (short) 0x6f3f},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xf076, (short) 0xf074},
+ {(short) 0x8c76, (short) 0x8c74}, {(short) 0xb475, (short) 0xb473},
+ {(short) 0xb476, (short) 0xb474}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xe905, (short) 0xe903}, {(short) 0xef3f, (short) 0xef3d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x1b52, (short) 0x1b54}, {(short) 0x4350, (short) 0x4352},
+ {(short) 0x4352, (short) 0x4354}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x781e, (short) 0x7820}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x9b54, (short) 0x9b52}, {(short) 0xc352, (short) 0xc350},
+ {(short) 0xc354, (short) 0xc352}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xf820, (short) 0xf81e}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc01, (short) 0xbbfe}, {(short) 0xc001, (short) 0xbffe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8400, (short) 0x8000},
+ {(short) 0x8401, (short) 0x8000}, {(short) 0xfc00, (short) 0xfbfe},
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbe81, (short) 0xbe7f},
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xdac1, (short) 0xdabf},
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xfb54, (short) 0xfb52},
+ {(short) 0x3bfe, (short) 0x3c01}, {(short) 0x3ffe, (short) 0x4001},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0400},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x7bfe, (short) 0x7c00},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3e7f, (short) 0x3e81},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x5abf, (short) 0x5ac1},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7b52, (short) 0x7b54},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xc001, (short) 0xbffe}, {(short) 0xc401, (short) 0xc3fe},
+ {(short) 0x8003, (short) 0x8000}, {(short) 0x87ff, (short) 0x87fd},
+ {(short) 0x8801, (short) 0x87fe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xbc81, (short) 0xbc7f}, {(short) 0xc281, (short) 0xc27f},
+ {(short) 0xd541, (short) 0xd53f}, {(short) 0xdec1, (short) 0xdebf},
+ {(short) 0xf076, (short) 0xf074}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x3ffe, (short) 0x4001}, {(short) 0x43fe, (short) 0x4401},
+ {(short) 0x0000, (short) 0x0003}, {(short) 0x07fd, (short) 0x07ff},
+ {(short) 0x07fe, (short) 0x0801}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3c7f, (short) 0x3c81}, {(short) 0x427f, (short) 0x4281},
+ {(short) 0x553f, (short) 0x5541}, {(short) 0x5ebf, (short) 0x5ec1},
+ {(short) 0x7074, (short) 0x7076}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8003, (short) 0x8000},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x9c00, (short) 0x9bfe},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8003, (short) 0x8000},
+ {(short) 0x802b, (short) 0x8000}, {(short) 0x80d9, (short) 0x8000},
+ {(short) 0x8c76, (short) 0x8c74}, {(short) 0x9b54, (short) 0x9b52},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0003},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x1bfe, (short) 0x1c00},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0003},
+ {(short) 0x0000, (short) 0x002b}, {(short) 0x0000, (short) 0x00d9},
+ {(short) 0x0c74, (short) 0x0c76}, {(short) 0x1b52, (short) 0x1b54},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8400, (short) 0x8000}, {(short) 0x87ff, (short) 0x87fd},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xc3fe, (short) 0xc3fc},
+ {(short) 0x8240, (short) 0x8000}, {(short) 0x867f, (short) 0x867d},
+ {(short) 0x9940, (short) 0x993e}, {(short) 0xa2bf, (short) 0xa2bd},
+ {(short) 0xb475, (short) 0xb473}, {(short) 0xc352, (short) 0xc350},
+ {(short) 0x0000, (short) 0x0400}, {(short) 0x07fd, (short) 0x07ff},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x43fc, (short) 0x43fe},
+ {(short) 0x0000, (short) 0x0240}, {(short) 0x067d, (short) 0x067f},
+ {(short) 0x193e, (short) 0x1940}, {(short) 0x22bd, (short) 0x22bf},
+ {(short) 0x3473, (short) 0x3475}, {(short) 0x4350, (short) 0x4352},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8401, (short) 0x8000}, {(short) 0x8801, (short) 0x87fe},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xc400, (short) 0xc3fe},
+ {(short) 0x8241, (short) 0x8000}, {(short) 0x8681, (short) 0x867f},
+ {(short) 0x9941, (short) 0x993f}, {(short) 0xa2c1, (short) 0xa2bf},
+ {(short) 0xb476, (short) 0xb474}, {(short) 0xc354, (short) 0xc352},
+ {(short) 0x0000, (short) 0x0401}, {(short) 0x07fe, (short) 0x0801},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x43fe, (short) 0x4400},
+ {(short) 0x0000, (short) 0x0241}, {(short) 0x067f, (short) 0x0681},
+ {(short) 0x193f, (short) 0x1941}, {(short) 0x22bf, (short) 0x22c1},
+ {(short) 0x3474, (short) 0x3476}, {(short) 0x4352, (short) 0x4354},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfbfe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x9c00, (short) 0x9bfe}, {(short) 0xc3fe, (short) 0xc3fc},
+ {(short) 0xc400, (short) 0xc3fe}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xf880, (short) 0xf87e}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7bfe, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x1bfe, (short) 0x1c00}, {(short) 0x43fc, (short) 0x43fe},
+ {(short) 0x43fe, (short) 0x4400}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x787e, (short) 0x7880}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xb881, (short) 0xb87f}, {(short) 0xbc81, (short) 0xbc7f},
+ {(short) 0x8002, (short) 0x0000}, {(short) 0x8240, (short) 0x8000},
+ {(short) 0x8241, (short) 0x8000}, {(short) 0xf880, (short) 0xf87e},
+ {(short) 0xb511, (short) 0xb50f}, {(short) 0xbb51, (short) 0xbb4f},
+ {(short) 0xcde9, (short) 0xcde7}, {(short) 0xd799, (short) 0xd797},
+ {(short) 0xe905, (short) 0xe903}, {(short) 0xf820, (short) 0xf81e},
+ {(short) 0x387f, (short) 0x3881}, {(short) 0x3c7f, (short) 0x3c81},
+ {(short) 0x0000, (short) 0x0002}, {(short) 0x0000, (short) 0x0240},
+ {(short) 0x0000, (short) 0x0241}, {(short) 0x787e, (short) 0x7880},
+ {(short) 0x350f, (short) 0x3511}, {(short) 0x3b4f, (short) 0x3b51},
+ {(short) 0x4de7, (short) 0x4de9}, {(short) 0x5797, (short) 0x5799},
+ {(short) 0x6903, (short) 0x6905}, {(short) 0x781e, (short) 0x7820},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbe81, (short) 0xbe7f}, {(short) 0xc281, (short) 0xc27f},
+ {(short) 0x8003, (short) 0x8000}, {(short) 0x867f, (short) 0x867d},
+ {(short) 0x8681, (short) 0x867f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xbb51, (short) 0xbb4f}, {(short) 0xc149, (short) 0xc147},
+ {(short) 0xd445, (short) 0xd443}, {(short) 0xdd7d, (short) 0xdd7b},
+ {(short) 0xef3f, (short) 0xef3d}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x3e7f, (short) 0x3e81}, {(short) 0x427f, (short) 0x4281},
+ {(short) 0x0000, (short) 0x0003}, {(short) 0x067d, (short) 0x067f},
+ {(short) 0x067f, (short) 0x0681}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x3b4f, (short) 0x3b51}, {(short) 0x4147, (short) 0x4149},
+ {(short) 0x5443, (short) 0x5445}, {(short) 0x5d7b, (short) 0x5d7d},
+ {(short) 0x6f3d, (short) 0x6f3f}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xd141, (short) 0xd13f}, {(short) 0xd541, (short) 0xd53f},
+ {(short) 0x802b, (short) 0x8000}, {(short) 0x9940, (short) 0x993e},
+ {(short) 0x9941, (short) 0x993f}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xcde9, (short) 0xcde7}, {(short) 0xd445, (short) 0xd443},
+ {(short) 0xe6e5, (short) 0xe6e3}, {(short) 0xf06f, (short) 0xf06d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x513f, (short) 0x5141}, {(short) 0x553f, (short) 0x5541},
+ {(short) 0x0000, (short) 0x002b}, {(short) 0x193e, (short) 0x1940},
+ {(short) 0x193f, (short) 0x1941}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x4de7, (short) 0x4de9}, {(short) 0x5443, (short) 0x5445},
+ {(short) 0x66e3, (short) 0x66e5}, {(short) 0x706d, (short) 0x706f},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xdac1, (short) 0xdabf}, {(short) 0xdec1, (short) 0xdebf},
+ {(short) 0x80d9, (short) 0x8000}, {(short) 0xa2bf, (short) 0xa2bd},
+ {(short) 0xa2c1, (short) 0xa2bf}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xd799, (short) 0xd797}, {(short) 0xdd7d, (short) 0xdd7b},
+ {(short) 0xf06f, (short) 0xf06d}, {(short) 0xf9b3, (short) 0xf9b1},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x5abf, (short) 0x5ac1}, {(short) 0x5ebf, (short) 0x5ec1},
+ {(short) 0x0000, (short) 0x00d9}, {(short) 0x22bd, (short) 0x22bf},
+ {(short) 0x22bf, (short) 0x22c1}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x5797, (short) 0x5799}, {(short) 0x5d7b, (short) 0x5d7d},
+ {(short) 0x706d, (short) 0x706f}, {(short) 0x79b1, (short) 0x79b3},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xec76, (short) 0xec74}, {(short) 0xf076, (short) 0xf074},
+ {(short) 0x8c76, (short) 0x8c74}, {(short) 0xb475, (short) 0xb473},
+ {(short) 0xb476, (short) 0xb474}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xe905, (short) 0xe903}, {(short) 0xef3f, (short) 0xef3d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x6c74, (short) 0x6c76}, {(short) 0x7074, (short) 0x7076},
+ {(short) 0x0c74, (short) 0x0c76}, {(short) 0x3473, (short) 0x3475},
+ {(short) 0x3474, (short) 0x3476}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x6903, (short) 0x6905}, {(short) 0x6f3d, (short) 0x6f3f},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfb54, (short) 0xfb52}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x9b54, (short) 0x9b52}, {(short) 0xc352, (short) 0xc350},
+ {(short) 0xc354, (short) 0xc352}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xf820, (short) 0xf81e}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7b52, (short) 0x7b54}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x1b52, (short) 0x1b54}, {(short) 0x4350, (short) 0x4352},
+ {(short) 0x4352, (short) 0x4354}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x781e, (short) 0x7820}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0x8001, (short) 0x0001},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x8001, (short) 0x0001}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ };
+
+ static short[][][] ReferenceOutputForDiv = {
+ {
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x37fa, (short) 0x3803},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x73fc, (short) 0x7404},
+ {(short) 0x73fa, (short) 0x7403}, {(short) 0x0000, (short) 0x0103},
+ {(short) 0x3f19, (short) 0x3f1f}, {(short) 0x38e9, (short) 0x38ef},
+ {(short) 0x2615, (short) 0x261b}, {(short) 0x1cbb, (short) 0x1cc1},
+ {(short) 0x0b2b, (short) 0x0b31}, {(short) 0x0000, (short) 0x011b},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xb803, (short) 0xb7fa},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf404, (short) 0xf3fc},
+ {(short) 0xf403, (short) 0xf3fa}, {(short) 0x8103, (short) 0x8000},
+ {(short) 0xbf1f, (short) 0xbf19}, {(short) 0xb8ef, (short) 0xb8e9},
+ {(short) 0xa61b, (short) 0xa615}, {(short) 0x9cc1, (short) 0x9cbb},
+ {(short) 0x8b31, (short) 0x8b2b}, {(short) 0x811b, (short) 0x8000},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3ffa, (short) 0x4003}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x77fc, (short) 0x7804},
+ {(short) 0x77fa, (short) 0x7803}, {(short) 0x0000, (short) 0x0203},
+ {(short) 0x4319, (short) 0x431f}, {(short) 0x3ce9, (short) 0x3cef},
+ {(short) 0x2a15, (short) 0x2a1b}, {(short) 0x20bb, (short) 0x20c1},
+ {(short) 0x0f2b, (short) 0x0f31}, {(short) 0x0000, (short) 0x0232},
+ {(short) 0xc003, (short) 0xbffa}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf804, (short) 0xf7fc},
+ {(short) 0xf803, (short) 0xf7fa}, {(short) 0x8203, (short) 0x8000},
+ {(short) 0xc31f, (short) 0xc319}, {(short) 0xbcef, (short) 0xbce9},
+ {(short) 0xaa1b, (short) 0xaa15}, {(short) 0xa0c1, (short) 0xa0bb},
+ {(short) 0x8f31, (short) 0x8f2b}, {(short) 0x8232, (short) 0x8000},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8002, (short) 0x0004}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x13fc, (short) 0x1404},
+ {(short) 0x13fa, (short) 0x1403}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8001, (short) 0x0005}, {(short) 0x8002, (short) 0x0004},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8004, (short) 0x0002}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0x9404, (short) 0x93fc},
+ {(short) 0x9403, (short) 0x93fa}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8005, (short) 0x0001}, {(short) 0x8004, (short) 0x0002},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x0000, (short) 0x0402}, {(short) 0x0000, (short) 0x0203},
+ {(short) 0x63fb, (short) 0x6400}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x3bfb, (short) 0x3c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x0718, (short) 0x071e}, {(short) 0x0000, (short) 0x0279},
+ {(short) 0x0000, (short) 0x001b}, {(short) 0x0000, (short) 0x0008},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8402, (short) 0x8000}, {(short) 0x8203, (short) 0x8000},
+ {(short) 0xe400, (short) 0xe3fb}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xbc00, (short) 0xbbfb}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x871e, (short) 0x8718}, {(short) 0x8279, (short) 0x8000},
+ {(short) 0x801b, (short) 0x8000}, {(short) 0x8008, (short) 0x8000},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x0000, (short) 0x0403}, {(short) 0x0000, (short) 0x0203},
+ {(short) 0x63fa, (short) 0x6403}, {(short) 0x3bfc, (short) 0x3c04},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x0719, (short) 0x071f}, {(short) 0x0000, (short) 0x0279},
+ {(short) 0x0000, (short) 0x001b}, {(short) 0x0000, (short) 0x0008},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8403, (short) 0x8000}, {(short) 0x8203, (short) 0x8000},
+ {(short) 0xe403, (short) 0xe3fa}, {(short) 0xbc04, (short) 0xbbfc},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x871f, (short) 0x8719}, {(short) 0x8279, (short) 0x8000},
+ {(short) 0x801b, (short) 0x8000}, {(short) 0x8008, (short) 0x8000},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7bfc, (short) 0x7c00}, {(short) 0x77fc, (short) 0x7801},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x78e9, (short) 0x78ef},
+ {(short) 0x6615, (short) 0x661b}, {(short) 0x5cba, (short) 0x5cc0},
+ {(short) 0x4b2a, (short) 0x4b30}, {(short) 0x3c5b, (short) 0x3c61},
+ {(short) 0xfc00, (short) 0xfbfc}, {(short) 0xf801, (short) 0xf7fc},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf8ef, (short) 0xf8e9},
+ {(short) 0xe61b, (short) 0xe615}, {(short) 0xdcc0, (short) 0xdcba},
+ {(short) 0xcb30, (short) 0xcb2a}, {(short) 0xbc61, (short) 0xbc5b},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x387d, (short) 0x3883}, {(short) 0x347d, (short) 0x3483},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x707e, (short) 0x7084},
+ {(short) 0x707d, (short) 0x7083}, {(short) 0x0000, (short) 0x0093},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x3587, (short) 0x358d},
+ {(short) 0x22d8, (short) 0x22de}, {(short) 0x1952, (short) 0x1958},
+ {(short) 0x0807, (short) 0x080d}, {(short) 0x0000, (short) 0x00a0},
+ {(short) 0xb883, (short) 0xb87d}, {(short) 0xb483, (short) 0xb47d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf084, (short) 0xf07e},
+ {(short) 0xf083, (short) 0xf07d}, {(short) 0x8093, (short) 0x8000},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xb58d, (short) 0xb587},
+ {(short) 0xa2de, (short) 0xa2d8}, {(short) 0x9958, (short) 0x9952},
+ {(short) 0x880d, (short) 0x8807}, {(short) 0x80a0, (short) 0x8000},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x3e7d, (short) 0x3e83}, {(short) 0x3a7d, (short) 0x3a83},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x767f, (short) 0x7685},
+ {(short) 0x767d, (short) 0x7683}, {(short) 0x0000, (short) 0x01a3},
+ {(short) 0x41c4, (short) 0x41ca}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x28f1, (short) 0x28f7}, {(short) 0x1fb1, (short) 0x1fb7},
+ {(short) 0x0dd2, (short) 0x0dd8}, {(short) 0x0000, (short) 0x01c9},
+ {(short) 0xbe83, (short) 0xbe7d}, {(short) 0xba83, (short) 0xba7d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf685, (short) 0xf67f},
+ {(short) 0xf683, (short) 0xf67d}, {(short) 0x81a3, (short) 0x8000},
+ {(short) 0xc1ca, (short) 0xc1c4}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xa8f7, (short) 0xa8f1}, {(short) 0x9fb7, (short) 0x9fb1},
+ {(short) 0x8dd8, (short) 0x8dd2}, {(short) 0x81c9, (short) 0x8000},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x513d, (short) 0x5143}, {(short) 0x4d3d, (short) 0x4d43},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x113e, (short) 0x1144},
+ {(short) 0x54a8, (short) 0x54ae}, {(short) 0x4e73, (short) 0x4e79},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x3236, (short) 0x323c},
+ {(short) 0x20b3, (short) 0x20b9}, {(short) 0x11b9, (short) 0x11bf},
+ {(short) 0xd143, (short) 0xd13d}, {(short) 0xcd43, (short) 0xcd3d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x9144, (short) 0x913e},
+ {(short) 0xd4ae, (short) 0xd4a8}, {(short) 0xce79, (short) 0xce73},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xb23c, (short) 0xb236},
+ {(short) 0xa0b9, (short) 0xa0b3}, {(short) 0x91bf, (short) 0x91b9},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x5abd, (short) 0x5ac3}, {(short) 0x56bd, (short) 0x56c3},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x1abe, (short) 0x1ac4},
+ {(short) 0x5dfd, (short) 0x5e03}, {(short) 0x5824, (short) 0x582a},
+ {(short) 0x4522, (short) 0x4528}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x2a0c, (short) 0x2a12}, {(short) 0x1b5c, (short) 0x1b62},
+ {(short) 0xdac3, (short) 0xdabd}, {(short) 0xd6c3, (short) 0xd6bd},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x9ac4, (short) 0x9abe},
+ {(short) 0xde03, (short) 0xddfd}, {(short) 0xd82a, (short) 0xd824},
+ {(short) 0xc528, (short) 0xc522}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xaa12, (short) 0xaa0c}, {(short) 0x9b62, (short) 0x9b5c},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x6c72, (short) 0x6c78}, {(short) 0x6872, (short) 0x6878},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x2c73, (short) 0x2c79},
+ {(short) 0x6fe9, (short) 0x6fef}, {(short) 0x6979, (short) 0x697f},
+ {(short) 0x56c8, (short) 0x56ce}, {(short) 0x4d45, (short) 0x4d4b},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x2cdb, (short) 0x2ce1},
+ {(short) 0xec78, (short) 0xec72}, {(short) 0xe878, (short) 0xe872},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xac79, (short) 0xac73},
+ {(short) 0xefef, (short) 0xefe9}, {(short) 0xe97f, (short) 0xe979},
+ {(short) 0xd6ce, (short) 0xd6c8}, {(short) 0xcd4b, (short) 0xcd45},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xace1, (short) 0xacdb},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7b50, (short) 0x7b56}, {(short) 0x7750, (short) 0x7756},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x3b51, (short) 0x3b57},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x787f, (short) 0x7885},
+ {(short) 0x6592, (short) 0x6598}, {(short) 0x5c54, (short) 0x5c5a},
+ {(short) 0x4a90, (short) 0x4a96}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0xfb56, (short) 0xfb50}, {(short) 0xf756, (short) 0xf750},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xbb57, (short) 0xbb51},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf885, (short) 0xf87f},
+ {(short) 0xe598, (short) 0xe592}, {(short) 0xdc5a, (short) 0xdc54},
+ {(short) 0xca96, (short) 0xca90}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xb803, (short) 0xb7fa},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf404, (short) 0xf3fc},
+ {(short) 0xf403, (short) 0xf3fa}, {(short) 0x8103, (short) 0x8000},
+ {(short) 0xbf1f, (short) 0xbf19}, {(short) 0xb8ef, (short) 0xb8e9},
+ {(short) 0xa61b, (short) 0xa615}, {(short) 0x9cc1, (short) 0x9cbb},
+ {(short) 0x8b31, (short) 0x8b2b}, {(short) 0x811b, (short) 0x8000},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x37fa, (short) 0x3803},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x73fc, (short) 0x7404},
+ {(short) 0x73fa, (short) 0x7403}, {(short) 0x0000, (short) 0x0103},
+ {(short) 0x3f19, (short) 0x3f1f}, {(short) 0x38e9, (short) 0x38ef},
+ {(short) 0x2615, (short) 0x261b}, {(short) 0x1cbb, (short) 0x1cc1},
+ {(short) 0x0b2b, (short) 0x0b31}, {(short) 0x0000, (short) 0x011b},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xc003, (short) 0xbffa}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf804, (short) 0xf7fc},
+ {(short) 0xf803, (short) 0xf7fa}, {(short) 0x8203, (short) 0x8000},
+ {(short) 0xc31f, (short) 0xc319}, {(short) 0xbcef, (short) 0xbce9},
+ {(short) 0xaa1b, (short) 0xaa15}, {(short) 0xa0c1, (short) 0xa0bb},
+ {(short) 0x8f31, (short) 0x8f2b}, {(short) 0x8232, (short) 0x8000},
+ {(short) 0x3ffa, (short) 0x4003}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x77fc, (short) 0x7804},
+ {(short) 0x77fa, (short) 0x7803}, {(short) 0x0000, (short) 0x0203},
+ {(short) 0x4319, (short) 0x431f}, {(short) 0x3ce9, (short) 0x3cef},
+ {(short) 0x2a15, (short) 0x2a1b}, {(short) 0x20bb, (short) 0x20c1},
+ {(short) 0x0f2b, (short) 0x0f31}, {(short) 0x0000, (short) 0x0232},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8004, (short) 0x0002}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0x9404, (short) 0x93fc},
+ {(short) 0x9403, (short) 0x93fa}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8005, (short) 0x0001}, {(short) 0x8004, (short) 0x0002},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8002, (short) 0x0004}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x13fc, (short) 0x1404},
+ {(short) 0x13fa, (short) 0x1403}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8001, (short) 0x0005}, {(short) 0x8002, (short) 0x0004},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8402, (short) 0x8000}, {(short) 0x8203, (short) 0x8000},
+ {(short) 0xe400, (short) 0xe3fb}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xbc00, (short) 0xbbfb}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x871e, (short) 0x8718}, {(short) 0x8279, (short) 0x8000},
+ {(short) 0x801b, (short) 0x8000}, {(short) 0x8008, (short) 0x8000},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x0000, (short) 0x0402}, {(short) 0x0000, (short) 0x0203},
+ {(short) 0x63fb, (short) 0x6400}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x3bfb, (short) 0x3c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x0718, (short) 0x071e}, {(short) 0x0000, (short) 0x0279},
+ {(short) 0x0000, (short) 0x001b}, {(short) 0x0000, (short) 0x0008},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8403, (short) 0x8000}, {(short) 0x8203, (short) 0x8000},
+ {(short) 0xe403, (short) 0xe3fa}, {(short) 0xbc04, (short) 0xbbfc},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x871f, (short) 0x8719}, {(short) 0x8279, (short) 0x8000},
+ {(short) 0x801b, (short) 0x8000}, {(short) 0x8008, (short) 0x8000},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x0000, (short) 0x0403}, {(short) 0x0000, (short) 0x0203},
+ {(short) 0x63fa, (short) 0x6403}, {(short) 0x3bfc, (short) 0x3c04},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x0719, (short) 0x071f}, {(short) 0x0000, (short) 0x0279},
+ {(short) 0x0000, (short) 0x001b}, {(short) 0x0000, (short) 0x0008},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfbfc}, {(short) 0xf801, (short) 0xf7fc},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf8ef, (short) 0xf8e9},
+ {(short) 0xe61b, (short) 0xe615}, {(short) 0xdcc0, (short) 0xdcba},
+ {(short) 0xcb30, (short) 0xcb2a}, {(short) 0xbc61, (short) 0xbc5b},
+ {(short) 0x7bfc, (short) 0x7c00}, {(short) 0x77fc, (short) 0x7801},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x78e9, (short) 0x78ef},
+ {(short) 0x6615, (short) 0x661b}, {(short) 0x5cba, (short) 0x5cc0},
+ {(short) 0x4b2a, (short) 0x4b30}, {(short) 0x3c5b, (short) 0x3c61},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xb883, (short) 0xb87d}, {(short) 0xb483, (short) 0xb47d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf084, (short) 0xf07e},
+ {(short) 0xf083, (short) 0xf07d}, {(short) 0x8093, (short) 0x8000},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xb58d, (short) 0xb587},
+ {(short) 0xa2de, (short) 0xa2d8}, {(short) 0x9958, (short) 0x9952},
+ {(short) 0x880d, (short) 0x8807}, {(short) 0x80a0, (short) 0x8000},
+ {(short) 0x387d, (short) 0x3883}, {(short) 0x347d, (short) 0x3483},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x707e, (short) 0x7084},
+ {(short) 0x707d, (short) 0x7083}, {(short) 0x0000, (short) 0x0093},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x3587, (short) 0x358d},
+ {(short) 0x22d8, (short) 0x22de}, {(short) 0x1952, (short) 0x1958},
+ {(short) 0x0807, (short) 0x080d}, {(short) 0x0000, (short) 0x00a0},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xbe83, (short) 0xbe7d}, {(short) 0xba83, (short) 0xba7d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf685, (short) 0xf67f},
+ {(short) 0xf683, (short) 0xf67d}, {(short) 0x81a3, (short) 0x8000},
+ {(short) 0xc1ca, (short) 0xc1c4}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xa8f7, (short) 0xa8f1}, {(short) 0x9fb7, (short) 0x9fb1},
+ {(short) 0x8dd8, (short) 0x8dd2}, {(short) 0x81c9, (short) 0x8000},
+ {(short) 0x3e7d, (short) 0x3e83}, {(short) 0x3a7d, (short) 0x3a83},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x767f, (short) 0x7685},
+ {(short) 0x767d, (short) 0x7683}, {(short) 0x0000, (short) 0x01a3},
+ {(short) 0x41c4, (short) 0x41ca}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x28f1, (short) 0x28f7}, {(short) 0x1fb1, (short) 0x1fb7},
+ {(short) 0x0dd2, (short) 0x0dd8}, {(short) 0x0000, (short) 0x01c9},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xd143, (short) 0xd13d}, {(short) 0xcd43, (short) 0xcd3d},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x9144, (short) 0x913e},
+ {(short) 0xd4ae, (short) 0xd4a8}, {(short) 0xce79, (short) 0xce73},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xb23c, (short) 0xb236},
+ {(short) 0xa0b9, (short) 0xa0b3}, {(short) 0x91bf, (short) 0x91b9},
+ {(short) 0x513d, (short) 0x5143}, {(short) 0x4d3d, (short) 0x4d43},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x113e, (short) 0x1144},
+ {(short) 0x54a8, (short) 0x54ae}, {(short) 0x4e73, (short) 0x4e79},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x3236, (short) 0x323c},
+ {(short) 0x20b3, (short) 0x20b9}, {(short) 0x11b9, (short) 0x11bf},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xdac3, (short) 0xdabd}, {(short) 0xd6c3, (short) 0xd6bd},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x9ac4, (short) 0x9abe},
+ {(short) 0xde03, (short) 0xddfd}, {(short) 0xd82a, (short) 0xd824},
+ {(short) 0xc528, (short) 0xc522}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0xaa12, (short) 0xaa0c}, {(short) 0x9b62, (short) 0x9b5c},
+ {(short) 0x5abd, (short) 0x5ac3}, {(short) 0x56bd, (short) 0x56c3},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x1abe, (short) 0x1ac4},
+ {(short) 0x5dfd, (short) 0x5e03}, {(short) 0x5824, (short) 0x582a},
+ {(short) 0x4522, (short) 0x4528}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0x2a0c, (short) 0x2a12}, {(short) 0x1b5c, (short) 0x1b62},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xec78, (short) 0xec72}, {(short) 0xe878, (short) 0xe872},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xac79, (short) 0xac73},
+ {(short) 0xefef, (short) 0xefe9}, {(short) 0xe97f, (short) 0xe979},
+ {(short) 0xd6ce, (short) 0xd6c8}, {(short) 0xcd4b, (short) 0xcd45},
+ {(short) 0xbc03, (short) 0xbbfa}, {(short) 0xace1, (short) 0xacdb},
+ {(short) 0x6c72, (short) 0x6c78}, {(short) 0x6872, (short) 0x6878},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x2c73, (short) 0x2c79},
+ {(short) 0x6fe9, (short) 0x6fef}, {(short) 0x6979, (short) 0x697f},
+ {(short) 0x56c8, (short) 0x56ce}, {(short) 0x4d45, (short) 0x4d4b},
+ {(short) 0x3bfa, (short) 0x3c03}, {(short) 0x2cdb, (short) 0x2ce1},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfb56, (short) 0xfb50}, {(short) 0xf756, (short) 0xf750},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xbb57, (short) 0xbb51},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xf885, (short) 0xf87f},
+ {(short) 0xe598, (short) 0xe592}, {(short) 0xdc5a, (short) 0xdc54},
+ {(short) 0xca96, (short) 0xca90}, {(short) 0xbc03, (short) 0xbbfa},
+ {(short) 0x7b50, (short) 0x7b56}, {(short) 0x7750, (short) 0x7756},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x3b51, (short) 0x3b57},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x787f, (short) 0x7885},
+ {(short) 0x6592, (short) 0x6598}, {(short) 0x5c54, (short) 0x5c5a},
+ {(short) 0x4a90, (short) 0x4a96}, {(short) 0x3bfa, (short) 0x3c03},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x8003, (short) 0x0003}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0xfe00, (short) 0xfe00}, {(short) 0x8003, (short) 0x0003},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfc00, (short) 0xfc00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0x7c00, (short) 0x7c00},
+ {(short) 0xfc00, (short) 0xfc00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7c00, (short) 0x7c00}, {(short) 0xfe00, (short) 0xfe00},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ {
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01}, {(short) 0x7e01, (short) 0x7e01},
+ {(short) 0x7e01, (short) 0x7e01},
+ },
+ };
+}
\ No newline at end of file
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBLAS.java b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBLAS.java
index eeef6e7..17f546b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBLAS.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBLAS.java
@@ -22,6 +22,7 @@
public class IntrinsicBLAS extends IntrinsicBase {
private ScriptIntrinsicBLAS mBLAS;
+ private BLASData mBLASData;
private boolean mInitialized = false;
private ArrayList<Allocation> mMatrixS;
@@ -33,12 +34,12 @@
private final double betaD = 1.0;
private ArrayList<Allocation> mMatrixC;
- private final Float2 alphaC = new Float2(1.0f, 1.0f);
- private final Float2 betaC = new Float2(1.0f, 1.0f);
+ private final Float2 alphaC = new Float2(1.0f, 0.0f);
+ private final Float2 betaC = new Float2(1.0f, 0.0f);
private ArrayList<Allocation> mMatrixZ;
- private final Double2 alphaZ = new Double2(1.0, 1.0);
- private final Double2 betaZ = new Double2(1.0, 1.0);
+ private final Double2 alphaZ = new Double2(1.0, 0.0);
+ private final Double2 betaZ = new Double2(1.0, 0.0);
private int[] mTranspose = {ScriptIntrinsicBLAS.NO_TRANSPOSE,
ScriptIntrinsicBLAS.TRANSPOSE,
@@ -65,8 +66,10 @@
protected void setUp() throws Exception {
super.setUp();
- //now populate the test Matrixes and Vectors.
+ // Now populate the test Matrixes and Vectors.
if (!mInitialized) {
+ mBLASData = new BLASData();
+ mBLASData.loadData(mCtx);
mBLAS = ScriptIntrinsicBLAS.create(mRS);
mMatrixS = new ArrayList<Allocation>();
mMatrixD = new ArrayList<Allocation>();
@@ -80,7 +83,7 @@
mMatrixZ.add(Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), x, y)));
}
}
- //also need Allocation with mismatch Element.
+ // Also need Allocation with mismatch Element.
Allocation misAlloc = Allocation.createTyped(mRS, Type.createXY(mRS, Element.U8(mRS), 1, 1));
mMatrixS.add(misAlloc);
mMatrixD.add(misAlloc);
@@ -95,6 +98,62 @@
super.tearDown();
}
+ // Calculate the square of the L2 norm of a matrix.
+ private double calcL2Norm(float[] input) {
+ double l2Norm = 0;
+ for (int i = 0; i < input.length; ++i) {
+ l2Norm += input[i] * input[i];
+ }
+ return l2Norm;
+ }
+
+ private double calcL2Norm(double[] input) {
+ double l2Norm = 0;
+ for (int i = 0; i < input.length; ++i) {
+ l2Norm += input[i] * input[i];
+ }
+ return l2Norm;
+ }
+
+ // Routine to verify if matrix are equivalent.
+ private void verifyMatrix(Allocation ref, Allocation out) {
+ verifyMatrix(ref, out, false);
+ }
+
+ // Use L2 norm of a matrix as the scale to determine whether two matrices are equivalent:
+ // if the absolute square error of any elements is smaller than the average L2 Norm
+ // per element times an allowed error range (1e-6), then the two matrices are considered equivalent.
+ // Criterion: (a[i,j] - a'[i,j])^2 < epsilon * ||A||/(M*N)
+ // M, N: the dimensions of the matrix; epsilon: allowed relative error.
+ private void verifyMatrix(Allocation ref, Allocation out, boolean isUpperMatrix) {
+ double l2Norm;
+ int size;
+ Element e = ref.getType().getElement();
+ if (e.isCompatible(Element.F32(mRS)) || e.isCompatible(Element.F32_2(mRS))) {
+ size = out.getBytesSize() / 4;
+ float[] outArr = new float[size];
+ float[] refArr = new float[size];
+ out.copyTo(outArr);
+ ref.copyTo(refArr);
+
+ double l2NormOut = calcL2Norm(outArr);
+ double l2NormRef = calcL2Norm(refArr);
+ l2Norm = (l2NormOut < l2NormRef ? l2NormOut : l2NormRef) / size;
+ } else {
+ size = out.getBytesSize() / 8;
+ double[] outArr = new double[size];
+ double[] refArr = new double[size];
+ out.copyTo(outArr);
+ ref.copyTo(refArr);
+
+ double l2NormOut = calcL2Norm(outArr);
+ double l2NormRef = calcL2Norm(refArr);
+ l2Norm = (l2NormOut < l2NormRef ? l2NormOut : l2NormRef) / size;
+ }
+ mVerify.invoke_verifyMatrix(ref, out, l2Norm, isUpperMatrix);
+ }
+
+
private boolean validateSide(int Side) {
if (Side != ScriptIntrinsicBLAS.LEFT && Side != ScriptIntrinsicBLAS.RIGHT) {
return false;
@@ -137,7 +196,7 @@
private boolean validateVecInput(Allocation X) {
if (X.getType().getY() > 2) {
- //for testing vector, need a mismatch Y for complete test coverage.
+ // For testing vector, need a mismatch Y for complete test coverage.
return false;
}
return true;
@@ -252,6 +311,227 @@
L2_xGEMV_API(mMatrixZ);
}
+ public void test_L2_SGEMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, 1));
+ matrixAS.copyFrom(mBLASData.L2_sGEMV_A_mn);
+ vectorXS.copyFrom(mBLASData.L2_sGEMV_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sGEMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SGEMV(trans, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sGEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYS.copyFrom(mBLASData.L2_sGEMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.SGEMV(trans, alphaS, matrixAS, vectorYS, incY, betaS, vectorXS, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sGEMV_o_T);
+ verifyMatrix(vectorYRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sGEMV_x_n1);
+ mBLAS.SGEMV(trans, alphaS, matrixAS, vectorYS, incY, betaS, vectorXS, incX);
+ vectorYRef.copyFrom(mBLASData.L2_sGEMV_o_H);
+ verifyMatrix(vectorYRef, vectorXS);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sGEMV_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sGEMV_y_m2);
+
+ mBLAS.SGEMV(trans, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sGEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DGEMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, 1));
+ matrixAD.copyFrom(mBLASData.L2_dGEMV_A_mn);
+ vectorXD.copyFrom(mBLASData.L2_dGEMV_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dGEMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DGEMV(trans, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dGEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYD.copyFrom(mBLASData.L2_dGEMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.DGEMV(trans, alphaD, matrixAD, vectorYD, incY, betaD, vectorXD, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dGEMV_o_T);
+ verifyMatrix(vectorYRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dGEMV_x_n1);
+ mBLAS.DGEMV(trans, alphaD, matrixAD, vectorYD, incY, betaD, vectorXD, incX);
+ vectorYRef.copyFrom(mBLASData.L2_dGEMV_o_H);
+ verifyMatrix(vectorYRef, vectorXD);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dGEMV_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dGEMV_y_m2);
+
+ mBLAS.DGEMV(trans, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dGEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CGEMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, 1));
+ matrixAC.copyFrom(mBLASData.L2_cGEMV_A_mn);
+ vectorXC.copyFrom(mBLASData.L2_cGEMV_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cGEMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CGEMV(trans, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cGEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYC.copyFrom(mBLASData.L2_cGEMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.CGEMV(trans, alphaC, matrixAC, vectorYC, incY, betaC, vectorXC, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cGEMV_o_T);
+ verifyMatrix(vectorYRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cGEMV_x_n1);
+ mBLAS.CGEMV(trans, alphaC, matrixAC, vectorYC, incY, betaC, vectorXC, incX);
+ vectorYRef.copyFrom(mBLASData.L2_cGEMV_o_H);
+ verifyMatrix(vectorYRef, vectorXC);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cGEMV_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cGEMV_y_m2);
+
+ mBLAS.CGEMV(trans, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cGEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZGEMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zGEMV_A_mn);
+ vectorXZ.copyFrom(mBLASData.L2_zGEMV_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zGEMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZGEMV(trans, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zGEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYZ.copyFrom(mBLASData.L2_zGEMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.ZGEMV(trans, alphaZ, matrixAZ, vectorYZ, incY, betaZ, vectorXZ, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zGEMV_o_T);
+ verifyMatrix(vectorYRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zGEMV_x_n1);
+ mBLAS.ZGEMV(trans, alphaZ, matrixAZ, vectorYZ, incY, betaZ, vectorXZ, incX);
+ vectorYRef.copyFrom(mBLASData.L2_zGEMV_o_H);
+ verifyMatrix(vectorYRef, vectorXZ);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zGEMV_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zGEMV_y_m2);
+
+ mBLAS.ZGEMV(trans, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zGEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private void xGBMV_API_test(int trans, int KL, int KU, int incX, int incY, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -331,6 +611,226 @@
L2_xGBMV_API(mMatrixZ);
}
+ public void test_L2_SGBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, 1));
+ matrixAS.copy2DRangeFrom(0, 0, mBLASData.KL + mBLASData.KU + 1, mBLASData.dM, mBLASData.L2_sGBMV_A_mn);
+ vectorXS.copyFrom(mBLASData.L2_sGBMV_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sGBMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SGBMV(trans, mBLASData.KL, mBLASData.KU, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sGBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYS.copyFrom(mBLASData.L2_sGBMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.SGBMV(trans, mBLASData.KL, mBLASData.KU, alphaS, matrixAS, vectorYS, incY, betaS, vectorXS, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sGBMV_o_T);
+ verifyMatrix(vectorYRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sGBMV_x_n1);
+ mBLAS.SGBMV(trans, mBLASData.KL, mBLASData.KU, alphaS, matrixAS, vectorYS, incY, betaS, vectorXS, incX);
+ vectorYRef.copyFrom(mBLASData.L2_sGBMV_o_H);
+ verifyMatrix(vectorYRef, vectorXS);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sGBMV_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sGBMV_y_m2);
+
+ mBLAS.SGBMV(trans, mBLASData.KL, mBLASData.KU, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sGBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DGBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, 1));
+ matrixAD.copy2DRangeFrom(0, 0, mBLASData.KL + mBLASData.KU + 1, mBLASData.dM, mBLASData.L2_dGBMV_A_mn);
+ vectorXD.copyFrom(mBLASData.L2_dGBMV_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dGBMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DGBMV(trans, mBLASData.KL, mBLASData.KU, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dGBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYD.copyFrom(mBLASData.L2_dGBMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.DGBMV(trans, mBLASData.KL, mBLASData.KU, alphaD, matrixAD, vectorYD, incY, betaD, vectorXD, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dGBMV_o_T);
+ verifyMatrix(vectorYRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dGBMV_x_n1);
+ mBLAS.DGBMV(trans, mBLASData.KL, mBLASData.KU, alphaD, matrixAD, vectorYD, incY, betaD, vectorXD, incX);
+ vectorYRef.copyFrom(mBLASData.L2_dGBMV_o_H);
+ verifyMatrix(vectorYRef, vectorXD);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dGBMV_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dGBMV_y_m2);
+
+ mBLAS.DGBMV(trans, mBLASData.KL, mBLASData.KU, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dGBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CGBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, 1));
+ matrixAC.copy2DRangeFrom(0, 0, mBLASData.KL + mBLASData.KU + 1, mBLASData.dM, mBLASData.L2_cGBMV_A_mn);
+ vectorXC.copyFrom(mBLASData.L2_cGBMV_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cGBMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CGBMV(trans, mBLASData.KL, mBLASData.KU, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cGBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYC.copyFrom(mBLASData.L2_cGBMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.CGBMV(trans, mBLASData.KL, mBLASData.KU, alphaC, matrixAC, vectorYC, incY, betaC, vectorXC, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cGBMV_o_T);
+ verifyMatrix(vectorYRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cGBMV_x_n1);
+ mBLAS.CGBMV(trans, mBLASData.KL, mBLASData.KU, alphaC, matrixAC, vectorYC, incY, betaC, vectorXC, incX);
+ vectorYRef.copyFrom(mBLASData.L2_cGBMV_o_H);
+ verifyMatrix(vectorYRef, vectorXC);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cGBMV_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cGBMV_y_m2);
+
+ mBLAS.CGBMV(trans, mBLASData.KL, mBLASData.KU, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cGBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZGBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, 1));
+ matrixAZ.copy2DRangeFrom(0, 0, mBLASData.KL + mBLASData.KU + 1, mBLASData.dM, mBLASData.L2_zGBMV_A_mn);
+ vectorXZ.copyFrom(mBLASData.L2_zGBMV_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zGBMV_y_m1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZGBMV(trans, mBLASData.KL, mBLASData.KU, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zGBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector Y, since it was overwritten by BLAS.
+ vectorYZ.copyFrom(mBLASData.L2_zGBMV_y_m1);
+ // After Transpose matrixA, vectorX and vectorY are exchanged to match the dim of A.T
+ mBLAS.ZGBMV(trans, mBLASData.KL, mBLASData.KU, alphaZ, matrixAZ, vectorYZ, incY, betaZ, vectorXZ, incX);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zGBMV_o_T);
+ verifyMatrix(vectorYRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zGBMV_x_n1);
+ mBLAS.ZGBMV(trans, mBLASData.KL, mBLASData.KU, alphaZ, matrixAZ, vectorYZ, incX, betaZ, vectorXZ, incY);
+ vectorYRef.copyFrom(mBLASData.L2_zGBMV_o_H);
+ verifyMatrix(vectorYRef, vectorXZ);
+
+ // Test for incX = 2 & incY = 3;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dM - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zGBMV_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zGBMV_y_m2);
+
+ mBLAS.ZGBMV(trans, mBLASData.KL, mBLASData.KU, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zGBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xHEMV_API_test(int Uplo, int incX, int incY, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -386,6 +886,83 @@
L2_xHEMV_API(mMatrixZ);
}
+ public void test_L2_CHEMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cHEMV_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cHEMV_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cHEMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.CHEMV(uplo, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cHEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHEMV_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cHEMV_y_n2);
+
+ mBLAS.CHEMV(uplo, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cHEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHEMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zHEMV_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zHEMV_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zHEMV_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHEMV(uplo, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zHEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHEMV_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zHEMV_y_n2);
+
+ mBLAS.ZHEMV(uplo, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zHEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private void xHBMV_API_test(int Uplo, int K, int incX, int incY, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -443,6 +1020,82 @@
L2_xHBMV_API(mMatrixZ);
}
+ public void test_L2_CHBMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_cHBMV_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cHBMV_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cHBMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.CHBMV(uplo, mBLASData.KL, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cHBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHBMV_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cHBMV_y_n2);
+
+ mBLAS.CHBMV(uplo, mBLASData.KL, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cHBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHBMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_zHBMV_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zHBMV_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zHBMV_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHBMV(uplo, mBLASData.KL, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zHBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHBMV_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zHBMV_y_n2);
+
+ mBLAS.ZHBMV(uplo, mBLASData.KL, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zHBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xHPMV_API_test(int Uplo, int incX, int incY, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -498,6 +1151,83 @@
L2_xHPMV_API(mMatrixZ);
}
+ public void test_L2_CHPMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ matrixAC.copyFrom(mBLASData.L2_cHEMV_A_nn_pu);
+ vectorXC.copyFrom(mBLASData.L2_cHEMV_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cHEMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.CHPMV(uplo, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cHEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHEMV_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cHEMV_y_n2);
+
+ mBLAS.CHPMV(uplo, alphaC, matrixAC, vectorXC, incX, betaC, vectorYC, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_cHEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHPMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zHEMV_A_nn_pu);
+ vectorXZ.copyFrom(mBLASData.L2_zHEMV_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zHEMV_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHPMV(uplo, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zHEMV_o_N);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHEMV_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zHEMV_y_n2);
+
+ mBLAS.ZHPMV(uplo, alphaZ, matrixAZ, vectorXZ, incX, betaZ, vectorYZ, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_zHEMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYZ);
+
+ mRS.finish();
+ checkError();
+ }
private boolean validateSYMV(Element e, int Uplo, Allocation A, Allocation X, int incX, Allocation Y, int incY) {
@@ -585,6 +1315,82 @@
L2_xSYMV_API(mMatrixD);
}
+ public void test_L2_SSYMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copyFrom(mBLASData.L2_sSYMV_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sSYMV_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sSYMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.SSYMV(uplo, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sSYMV_o_N);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSYMV_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sSYMV_y_n2);
+
+ mBLAS.SSYMV(uplo, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sSYMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSYMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copyFrom(mBLASData.L2_dSYMV_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dSYMV_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dSYMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.DSYMV(uplo, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dSYMV_o_N);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSYMV_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dSYMV_y_n2);
+
+ mBLAS.DSYMV(uplo, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dSYMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xSBMV_API_test(int Uplo, int K, int incX, int incY, ArrayList<Allocation> mMatrix) {
@@ -643,6 +1449,81 @@
L2_xSBMV_API(mMatrixD);
}
+ public void test_L2_SSBMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_sSBMV_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sSBMV_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sSBMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.SSBMV(uplo, mBLASData.KL, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sSBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSBMV_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sSBMV_y_n2);
+
+ mBLAS.SSBMV(uplo, mBLASData.KL, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sSBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSBMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_dSBMV_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dSBMV_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dSBMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.DSBMV(uplo, mBLASData.KL, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dSBMV_o_N);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSBMV_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dSBMV_y_n2);
+
+ mBLAS.DSBMV(uplo, mBLASData.KL, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dSBMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ mRS.finish();
+ checkError();
+ }
private boolean validateSPMV(Element e, int Uplo, Allocation Ap, Allocation X, int incX, Allocation Y, int incY) {
@@ -735,6 +1616,84 @@
L2_xSPMV_API(mMatrixD);
}
+ public void test_L2_SSPMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ matrixAS.copyFrom(mBLASData.L2_sSYMV_A_nn_pu);
+ vectorXS.copyFrom(mBLASData.L2_sSYMV_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sSYMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.SSPMV(uplo, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sSYMV_o_N);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSYMV_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sSYMV_y_n2);
+
+ mBLAS.SSPMV(uplo, alphaS, matrixAS, vectorXS, incX, betaS, vectorYS, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_sSYMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSPMV_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ matrixAD.copyFrom(mBLASData.L2_dSYMV_A_nn_pu);
+ vectorXD.copyFrom(mBLASData.L2_dSYMV_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dSYMV_y_n1);
+
+ // Test for the default case:
+ mBLAS.DSPMV(uplo, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ Allocation vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dSYMV_o_N);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSYMV_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dSYMV_y_n2);
+
+ mBLAS.DSPMV(uplo, alphaD, matrixAD, vectorXD, incX, betaD, vectorYD, incY);
+ vectorYRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorYRef.copyFrom(mBLASData.L2_dSYMV_o_N2);
+ verifyMatrix(vectorYRef, vectorYD);
+
+ mRS.finish();
+ checkError();
+ }
+
private boolean validateTRMV(Element e, int Uplo, int TransA, int Diag, Allocation A, Allocation X, int incX) {
@@ -844,14 +1803,203 @@
L2_xTRMV_API(mMatrixZ);
}
+ public void test_L2_STRMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copyFrom(mBLASData.L2_sTRMV_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.STRMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n1);
+ mBLAS.STRMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n1);
+ mBLAS.STRMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n2);
+
+ mBLAS.STRMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DTRMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copyFrom(mBLASData.L2_dTRMV_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DTRMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n1);
+ mBLAS.DTRMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n1);
+ mBLAS.DTRMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n2);
+
+ mBLAS.DTRMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CTRMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cTRMV_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CTRMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n1);
+ mBLAS.CTRMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n1);
+ mBLAS.CTRMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n2);
+
+ mBLAS.CTRMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZTRMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zTRMV_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZTRMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n1);
+ mBLAS.ZTRMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n1);
+ mBLAS.ZTRMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n2);
+
+ mBLAS.ZTRMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xTBMV_API_test(int Uplo, int TransA, int Diag, int K, int incX, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
for (Allocation vecX : mMatrix) {
- if (!validateVecInput(vecX)) {
- continue;
- }
Element elemA = matA.getType().getElement();
if (validateTRMV(elemA, Uplo, TransA, Diag, matA, vecX, incX) && K >= 0) {
try {
@@ -923,6 +2071,198 @@
L2_xTBMV_API(mMatrixZ);
}
+ public void test_L2_STBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_sTBMV_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sTBMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.STBMV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTBMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXS.copyFrom(mBLASData.L2_sTBMV_x_n1);
+ mBLAS.STBMV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTBMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sTBMV_x_n1);
+ mBLAS.STBMV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTBMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sTBMV_x_n2);
+
+ mBLAS.STBMV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTBMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DTBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_dTBMV_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dTBMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DTBMV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTBMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXD.copyFrom(mBLASData.L2_dTBMV_x_n1);
+ mBLAS.DTBMV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTBMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dTBMV_x_n1);
+ mBLAS.DTBMV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTBMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dTBMV_x_n2);
+
+ mBLAS.DTBMV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTBMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CTBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_cTBMV_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cTBMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CTBMV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTBMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXC.copyFrom(mBLASData.L2_cTBMV_x_n1);
+ mBLAS.CTBMV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTBMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cTBMV_x_n1);
+ mBLAS.CTBMV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTBMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cTBMV_x_n2);
+
+ mBLAS.CTBMV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTBMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZTBMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_zTBMV_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zTBMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZTBMV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTBMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXZ.copyFrom(mBLASData.L2_zTBMV_x_n1);
+ mBLAS.ZTBMV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTBMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zTBMV_x_n1);
+ mBLAS.ZTBMV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTBMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zTBMV_x_n2);
+
+ mBLAS.ZTBMV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTBMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private boolean validateTPMV(Element e, int Uplo, int TransA, int Diag, Allocation Ap, Allocation X, int incX) {
if (!validateUplo(Uplo)) {
@@ -1036,6 +2376,202 @@
L2_xTPMV_API(mMatrixZ);
}
+ public void test_L2_STPMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ matrixAS.copyFrom(mBLASData.L2_sTRMV_A_nn_pu);
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.STPMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n1);
+ mBLAS.STPMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n1);
+ mBLAS.STPMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sTRMV_x_n2);
+
+ mBLAS.STPMV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DTPMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ matrixAD.copyFrom(mBLASData.L2_dTRMV_A_nn_pu);
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DTPMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n1);
+ mBLAS.DTPMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n1);
+ mBLAS.DTPMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dTRMV_x_n2);
+
+ mBLAS.DTPMV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CTPMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ matrixAC.copyFrom(mBLASData.L2_cTRMV_A_nn_pu);
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CTPMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n1);
+ mBLAS.CTPMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n1);
+ mBLAS.CTPMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cTRMV_x_n2);
+
+ mBLAS.CTPMV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZTPMV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zTRMV_A_nn_pu);
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZTPMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UN);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n1);
+ mBLAS.ZTPMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UT);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n1);
+ mBLAS.ZTPMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UH);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zTRMV_x_n2);
+
+ mBLAS.ZTPMV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRMV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xTRSV_API_test(int Uplo, int TransA, int Diag, int incX, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -1112,6 +2648,198 @@
L2_xTRSV_API(mMatrixZ);
}
+ public void test_L2_STRSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copyFrom(mBLASData.L2_sTRSV_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.STRSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n1);
+ mBLAS.STRSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n1);
+ mBLAS.STRSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n2);
+
+ mBLAS.STRSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DTRSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copyFrom(mBLASData.L2_dTRSV_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DTRSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n1);
+ mBLAS.DTRSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n1);
+ mBLAS.DTRSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n2);
+
+ mBLAS.DTRSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CTRSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cTRSV_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CTRSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n1);
+ mBLAS.CTRSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n1);
+ mBLAS.CTRSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n2);
+
+ mBLAS.CTRSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZTRSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zTRSV_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZTRSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n1);
+ mBLAS.ZTRSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n1);
+ mBLAS.ZTRSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n2);
+
+ mBLAS.ZTRSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xTBSV_API_test(int Uplo, int TransA, int Diag, int K, int incX, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -1190,6 +2918,198 @@
L2_xTBSV_API(mMatrixZ);
}
+ public void test_L2_STBSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_sTBSV_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sTBSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.STBSV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTBSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXS.copyFrom(mBLASData.L2_sTBSV_x_n1);
+ mBLAS.STBSV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTBSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sTBSV_x_n1);
+ mBLAS.STBSV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTBSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sTBSV_x_n2);
+
+ mBLAS.STBSV(uplo, trans, diag, mBLASData.KL, matrixAS, vectorXS, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTBSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DTBSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_dTBSV_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dTBSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DTBSV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTBSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXD.copyFrom(mBLASData.L2_dTBSV_x_n1);
+ mBLAS.DTBSV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTBSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dTBSV_x_n1);
+ mBLAS.DTBSV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTBSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dTBSV_x_n2);
+
+ mBLAS.DTBSV(uplo, trans, diag, mBLASData.KL, matrixAD, vectorXD, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTBSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CTBSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_cTBSV_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cTBSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CTBSV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTBSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXC.copyFrom(mBLASData.L2_cTBSV_x_n1);
+ mBLAS.CTBSV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTBSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cTBSV_x_n1);
+ mBLAS.CTBSV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTBSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cTBSV_x_n2);
+
+ mBLAS.CTBSV(uplo, trans, diag, mBLASData.KL, matrixAC, vectorXC, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTBSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZTBSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copy2DRangeFrom(0, 0, mBLASData.KL + 1, mBLASData.dN, mBLASData.L2_zTBSV_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zTBSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZTBSV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTBSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXZ.copyFrom(mBLASData.L2_zTBSV_x_n1);
+ mBLAS.ZTBSV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTBSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zTBSV_x_n1);
+ mBLAS.ZTBSV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTBSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zTBSV_x_n2);
+
+ mBLAS.ZTBSV(uplo, trans, diag, mBLASData.KL, matrixAZ, vectorXZ, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTBSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xTPSV_API_test(int Uplo, int TransA, int Diag, int incX, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -1266,6 +3186,202 @@
L2_xTPSV_API(mMatrixZ);
}
+ public void test_L2_STPSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ matrixAS.copyFrom(mBLASData.L2_sTRSV_A_nn_pu);
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.STPSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n1);
+ mBLAS.STPSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n1);
+ mBLAS.STPSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sTRSV_x_n2);
+
+ mBLAS.STPSV(uplo, trans, diag, matrixAS, vectorXS, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_sTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DTPSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ matrixAD.copyFrom(mBLASData.L2_dTRSV_A_nn_pu);
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DTPSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n1);
+ mBLAS.DTPSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n1);
+ mBLAS.DTPSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dTRSV_x_n2);
+
+ mBLAS.DTPSV(uplo, trans, diag, matrixAD, vectorXD, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_dTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_CTPSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ matrixAC.copyFrom(mBLASData.L2_cTRSV_A_nn_pu);
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CTPSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n1);
+ mBLAS.CTPSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n1);
+ mBLAS.CTPSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cTRSV_x_n2);
+
+ mBLAS.CTPSV(uplo, trans, diag, matrixAC, vectorXC, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_cTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZTPSV_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zTRSV_A_nn_pu);
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZTPSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ Allocation vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UN);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload vector X, since it was overwritten by BLAS.
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n1);
+ mBLAS.ZTPSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UT);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n1);
+ mBLAS.ZTPSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UH);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ // Test for incX = 2;
+ trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zTRSV_x_n2);
+
+ mBLAS.ZTPSV(uplo, trans, diag, matrixAZ, vectorXZ, incX);
+ vectorXRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXRef.copyFrom(mBLASData.L2_zTRSV_o_UN2);
+ verifyMatrix(vectorXRef, vectorXZ);
+
+ mRS.finish();
+ checkError();
+ }
+
private boolean validateGER(Element e, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
if (!A.getType().getElement().isCompatible(e) ||
@@ -1353,6 +3469,77 @@
L2_xGER_API(mMatrixD);
}
+ public void test_L2_SGER_Correctness() {
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copyFrom(mBLASData.L2_sGER_A_mn);
+ vectorXS.copyFrom(mBLASData.L2_sGER_x_m1);
+ vectorYS.copyFrom(mBLASData.L2_sGER_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SGER(alphaS, vectorXS, incX, vectorYS, incY, matrixAS);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixARef.copyFrom(mBLASData.L2_sGER_o_N);
+ verifyMatrix(matrixARef, matrixAS);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dM - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sGER_x_m2);
+ vectorYS.copyFrom(mBLASData.L2_sGER_y_n2);
+ matrixAS.copyFrom(mBLASData.L2_sGER_A_mn);
+
+ mBLAS.SGER(alphaS, vectorXS, incX, vectorYS, incY, matrixAS);
+ verifyMatrix(matrixARef, matrixAS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DGER_Correctness() {
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copyFrom(mBLASData.L2_dGER_A_mn);
+ vectorXD.copyFrom(mBLASData.L2_dGER_x_m1);
+ vectorYD.copyFrom(mBLASData.L2_dGER_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DGER(alphaD, vectorXD, incX, vectorYD, incY, matrixAD);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixARef.copyFrom(mBLASData.L2_dGER_o_N);
+ verifyMatrix(matrixARef, matrixAD);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dM - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dGER_x_m2);
+ vectorYD.copyFrom(mBLASData.L2_dGER_y_n2);
+ matrixAD.copyFrom(mBLASData.L2_dGER_A_mn);
+
+ mBLAS.DGER(alphaD, vectorXD, incX, vectorYD, incY, matrixAD);
+ verifyMatrix(matrixARef, matrixAD);
+
+ mRS.finish();
+ checkError();
+ }
private boolean validateGERU(Element e, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
@@ -1435,6 +3622,79 @@
L2_xGERU_API(mMatrixZ);
}
+ public void test_L2_CGERU_Correctness() {
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cGERU_A_mn);
+ vectorXC.copyFrom(mBLASData.L2_cGERU_x_m1);
+ vectorYC.copyFrom(mBLASData.L2_cGERU_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CGERU(alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixARef.copyFrom(mBLASData.L2_cGERU_o_N);
+ verifyMatrix(matrixARef, matrixAC);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dM - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cGERU_x_m2);
+ vectorYC.copyFrom(mBLASData.L2_cGERU_y_n2);
+ matrixAC.copyFrom(mBLASData.L2_cGERU_A_mn);
+
+ mBLAS.CGERU(alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ verifyMatrix(matrixARef, matrixAC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZGERU_Correctness() {
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zGERU_A_mn);
+ vectorXZ.copyFrom(mBLASData.L2_zGERU_x_m1);
+ vectorYZ.copyFrom(mBLASData.L2_zGERU_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZGERU(alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixARef.copyFrom(mBLASData.L2_zGERU_o_N);
+ verifyMatrix(matrixARef, matrixAZ);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dM - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zGERU_x_m2);
+ vectorYZ.copyFrom(mBLASData.L2_zGERU_y_n2);
+ matrixAZ.copyFrom(mBLASData.L2_zGERU_A_mn);
+
+ mBLAS.ZGERU(alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ verifyMatrix(matrixARef, matrixAZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private void xGERC_API_test(int incX, int incY, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -1490,6 +3750,77 @@
L2_xGERC_API(mMatrixZ);
}
+ public void test_L2_CGERC_Correctness() {
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cGERC_A_mn);
+ vectorXC.copyFrom(mBLASData.L2_cGERC_x_m1);
+ vectorYC.copyFrom(mBLASData.L2_cGERC_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CGERC(alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixARef.copyFrom(mBLASData.L2_cGERC_o_N);
+ verifyMatrix(matrixARef, matrixAC);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dM - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cGERC_x_m2);
+ vectorYC.copyFrom(mBLASData.L2_cGERC_y_n2);
+ matrixAC.copyFrom(mBLASData.L2_cGERC_A_mn);
+
+ mBLAS.CGERC(alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ verifyMatrix(matrixARef, matrixAC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZGERC_Correctness() {
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zGERC_A_mn);
+ vectorXZ.copyFrom(mBLASData.L2_zGERC_x_m1);
+ vectorYZ.copyFrom(mBLASData.L2_zGERC_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZGERC(alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixARef.copyFrom(mBLASData.L2_zGERC_o_N);
+ verifyMatrix(matrixARef, matrixAZ);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dM - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zGERC_x_m2);
+ vectorYZ.copyFrom(mBLASData.L2_zGERC_y_n2);
+ matrixAZ.copyFrom(mBLASData.L2_zGERC_A_mn);
+
+ mBLAS.ZGERC(alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ verifyMatrix(matrixARef, matrixAZ);
+
+ mRS.finish();
+ checkError();
+ }
private void xHER_API_test(int Uplo, int incX, ArrayList<Allocation> mMatrix) {
@@ -1541,6 +3872,66 @@
L2_xHER_API(mMatrixZ);
}
+ public void test_L2_CHER_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cHER_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cHER_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CHER(uplo, alphaS, vectorXC, incX, matrixAC);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_cHER_o_N);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHER_x_n2);
+ matrixAC.copyFrom(mBLASData.L2_cHER_A_nn);
+
+ mBLAS.CHER(uplo, alphaS, vectorXC, incX, matrixAC);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHER_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zHER_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zHER_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHER(uplo, alphaD, vectorXZ, incX, matrixAZ);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_zHER_o_N);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHER_x_n2);
+ matrixAZ.copyFrom(mBLASData.L2_zHER_A_nn);
+
+ mBLAS.ZHER(uplo, alphaD, vectorXZ, incX, matrixAZ);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xHPR_API_test(int Uplo, int incX, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -1591,6 +3982,68 @@
L2_xHPR_API(mMatrixZ);
}
+ public void test_L2_CHPR_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ matrixAC.copyFrom(mBLASData.L2_cHER_A_nn_pu);
+ vectorXC.copyFrom(mBLASData.L2_cHER_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CHPR(uplo, alphaS, vectorXC, incX, matrixAC);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_cHER_o_N_pu);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHER_x_n2);
+ matrixAC.copyFrom(mBLASData.L2_cHER_A_nn_pu);
+
+ mBLAS.CHPR(uplo, alphaS, vectorXC, incX, matrixAC);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHPR_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zHER_A_nn_pu);
+ vectorXZ.copyFrom(mBLASData.L2_zHER_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHPR(uplo, alphaD, vectorXZ, incX, matrixAZ);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_zHER_o_N_pu);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHER_x_n2);
+ matrixAZ.copyFrom(mBLASData.L2_zHER_A_nn_pu);
+
+ mBLAS.ZHPR(uplo, alphaD, vectorXZ, incX, matrixAZ);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xHER2_API_test(int Uplo, int incX, int incY, ArrayList<Allocation> mMatrix) {
for (Allocation matA : mMatrix) {
@@ -1646,6 +4099,80 @@
L2_xHER2_API(mMatrixZ);
}
+ public void test_L2_CHER2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, 1));
+ matrixAC.copyFrom(mBLASData.L2_cHER2_A_nn);
+ vectorXC.copyFrom(mBLASData.L2_cHER2_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cHER2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CHER2(uplo, alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_cHER2_o_N);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHER2_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cHER2_y_n2);
+ matrixAC.copyFrom(mBLASData.L2_cHER2_A_nn);
+
+ mBLAS.CHER2(uplo, alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHER2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zHER2_A_nn);
+ vectorXZ.copyFrom(mBLASData.L2_zHER2_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zHER2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHER2(uplo, alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_zHER2_o_N);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHER2_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zHER2_y_n2);
+ matrixAZ.copyFrom(mBLASData.L2_zHER2_A_nn);
+
+ mBLAS.ZHER2(uplo, alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
private void xHPR2_API_test(int Uplo, int incX, int incY, ArrayList<Allocation> mMatrix) {
@@ -1702,6 +4229,82 @@
L2_xHPR2_API(mMatrixZ);
}
+ public void test_L2_CHPR2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ Allocation vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N, 1));
+ matrixAC.copyFrom(mBLASData.L2_cHER2_A_nn_pu);
+ vectorXC.copyFrom(mBLASData.L2_cHER2_x_n1);
+ vectorYC.copyFrom(mBLASData.L2_cHER2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CHPR2(uplo, alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_cHER2_o_N_pu);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimX, 1));
+ vectorYC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), dimY, 1));
+ vectorXC.copyFrom(mBLASData.L2_cHER2_x_n2);
+ vectorYC.copyFrom(mBLASData.L2_cHER2_y_n2);
+ matrixAC.copyFrom(mBLASData.L2_cHER2_A_nn_pu);
+
+ mBLAS.CHPR2(uplo, alphaC, vectorXC, incX, vectorYC, incY, matrixAC);
+ verifyMatrix(matrixARef, matrixAC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_ZHPR2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ Allocation vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N, 1));
+ matrixAZ.copyFrom(mBLASData.L2_zHER2_A_nn_pu);
+ vectorXZ.copyFrom(mBLASData.L2_zHER2_x_n1);
+ vectorYZ.copyFrom(mBLASData.L2_zHER2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZHPR2(uplo, alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_zHER2_o_N_pu);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimX, 1));
+ vectorYZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), dimY, 1));
+ vectorXZ.copyFrom(mBLASData.L2_zHER2_x_n2);
+ vectorYZ.copyFrom(mBLASData.L2_zHER2_y_n2);
+ matrixAZ.copyFrom(mBLASData.L2_zHER2_A_nn_pu);
+
+ mBLAS.ZHPR2(uplo, alphaZ, vectorXZ, incX, vectorYZ, incY, matrixAZ);
+ verifyMatrix(matrixARef, matrixAZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
private boolean validateSYR(Element e, int Uplo, Allocation X, int incX, Allocation A) {
@@ -1780,8 +4383,65 @@
L2_xSYR_API(mMatrixD);
}
+ public void test_L2_SSYR_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copyFrom(mBLASData.L2_sSYR_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sSYR_x_n1);
+ // Test for the default case: NO_TRANS
+ mBLAS.SSYR(uplo, alphaS, vectorXS, incX, matrixAS);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_sSYR_o_N);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSYR_x_n2);
+ matrixAS.copyFrom(mBLASData.L2_sSYR_A_nn);
+
+ mBLAS.SSYR(uplo, alphaS, vectorXS, incX, matrixAS);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSYR_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copyFrom(mBLASData.L2_dSYR_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dSYR_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DSYR(uplo, alphaD, vectorXD, incX, matrixAD);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_dSYR_o_N);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSYR_x_n2);
+ matrixAD.copyFrom(mBLASData.L2_dSYR_A_nn);
+
+ mBLAS.DSYR(uplo, alphaD, vectorXD, incX, matrixAD);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ mRS.finish();
+ checkError();
+ }
private boolean validateSPR(Element e, int Uplo, Allocation X, int incX, Allocation Ap) {
@@ -1864,7 +4524,67 @@
L2_xSPR_API(mMatrixD);
}
+ public void test_L2_SSPR_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ matrixAS.copyFrom(mBLASData.L2_sSYR_A_nn_pu);
+ vectorXS.copyFrom(mBLASData.L2_sSYR_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SSPR(uplo, alphaS, vectorXS, incX, matrixAS);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_sSYR_o_N_pu);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSYR_x_n2);
+ matrixAS.copyFrom(mBLASData.L2_sSYR_A_nn_pu);
+
+ mBLAS.SSPR(uplo, alphaS, vectorXS, incX, matrixAS);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSPR_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ matrixAD.copyFrom(mBLASData.L2_dSYR_A_nn_pu);
+ vectorXD.copyFrom(mBLASData.L2_dSYR_x_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DSPR(uplo, alphaD, vectorXD, incX, matrixAD);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_dSYR_o_N_pu);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ // Test for incX = 2;
+ incX = 2;
+ int dimX = 1 + (N - 1) * incX;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSYR_x_n2);
+ matrixAD.copyFrom(mBLASData.L2_dSYR_A_nn_pu);
+
+ mBLAS.DSPR(uplo, alphaD, vectorXD, incX, matrixAD);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ mRS.finish();
+ checkError();
+ }
private boolean validateSYR2(Element e, int Uplo, Allocation X, int incX, Allocation Y, int incY, Allocation A) {
@@ -1951,7 +4671,79 @@
L2_xSYR2_API(mMatrixD);
}
+ public void test_L2_SSYR2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, 1));
+ matrixAS.copyFrom(mBLASData.L2_sSYR2_A_nn);
+ vectorXS.copyFrom(mBLASData.L2_sSYR2_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sSYR2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SSYR2(uplo, alphaS, vectorXS, incX, vectorYS, incY, matrixAS);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_sSYR2_o_N);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSYR2_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sSYR2_y_n2);
+ matrixAS.copyFrom(mBLASData.L2_sSYR2_A_nn);
+
+ mBLAS.SSYR2(uplo, alphaS, vectorXS, incX, vectorYS, incY, matrixAS);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSYR2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, 1));
+ matrixAD.copyFrom(mBLASData.L2_dSYR2_A_nn);
+ vectorXD.copyFrom(mBLASData.L2_dSYR2_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dSYR2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DSYR2(uplo, alphaD, vectorXD, incX, vectorYD, incY, matrixAD);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixARef.copyFrom(mBLASData.L2_dSYR2_o_N);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (mBLASData.dN - 1) * incX;
+ int dimY = 1 + (mBLASData.dN - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSYR2_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dSYR2_y_n2);
+ matrixAD.copyFrom(mBLASData.L2_dSYR2_A_nn);
+
+ mBLAS.DSYR2(uplo, alphaD, vectorXD, incX, vectorYD, incY, matrixAD);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ mRS.finish();
+ checkError();
+ }
private boolean validateSPR2(Element e, int Uplo, Allocation X, int incX, Allocation Y, int incY, Allocation Ap) {
@@ -2041,7 +4833,81 @@
L2_xSPR2_API(mMatrixD);
}
+ public void test_L2_SSPR2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ Allocation vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N, 1));
+ matrixAS.copyFrom(mBLASData.L2_sSYR2_A_nn_pu);
+ vectorXS.copyFrom(mBLASData.L2_sSYR2_x_n1);
+ vectorYS.copyFrom(mBLASData.L2_sSYR2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SSPR2(uplo, alphaS, vectorXS, incX, vectorYS, incY, matrixAS);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_sSYR2_o_N_pu);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimX, 1));
+ vectorYS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), dimY, 1));
+ vectorXS.copyFrom(mBLASData.L2_sSYR2_x_n2);
+ vectorYS.copyFrom(mBLASData.L2_sSYR2_y_n2);
+ matrixAS.copyFrom(mBLASData.L2_sSYR2_A_nn_pu);
+
+ mBLAS.SSPR2(uplo, alphaS, vectorXS, incX, vectorYS, incY, matrixAS);
+ verifyMatrix(matrixARef, matrixAS, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L2_DSPR2_Correctness() {
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int incX = 1;
+ int incY = 1;
+
+ // Populate input allocations
+ int N = mBLASData.dN;
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ Allocation vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ Allocation vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N, 1));
+ matrixAD.copyFrom(mBLASData.L2_dSYR2_A_nn_pu);
+ vectorXD.copyFrom(mBLASData.L2_dSYR2_x_n1);
+ vectorYD.copyFrom(mBLASData.L2_dSYR2_y_n1);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.DSPR2(uplo, alphaD, vectorXD, incX, vectorYD, incY, matrixAD);
+ Allocation matrixARef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), N * (N+1) / 2, 1));
+ matrixARef.copyFrom(mBLASData.L2_dSYR2_o_N_pu);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ // Test for incX = 2 & incY = 3;
+ incX = 2;
+ incY = 3;
+ int dimX = 1 + (N - 1) * incX;
+ int dimY = 1 + (N - 1) * incY;
+ vectorXD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimX, 1));
+ vectorYD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), dimY, 1));
+ vectorXD.copyFrom(mBLASData.L2_dSYR2_x_n2);
+ vectorYD.copyFrom(mBLASData.L2_dSYR2_y_n2);
+ matrixAD.copyFrom(mBLASData.L2_dSYR2_A_nn_pu);
+
+ mBLAS.DSPR2(uplo, alphaD, vectorXD, incX, vectorYD, incY, matrixAD);
+ verifyMatrix(matrixARef, matrixAD, true);
+
+ mRS.finish();
+ checkError();
+ }
@@ -2194,6 +5060,180 @@
L3_xGEMM_API(mMatrixZ);
}
+
+ public void test_L3_SGEMM_Correctness() {
+ int transA = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int transB = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dK, mBLASData.dM));
+ Allocation matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dK));
+ Allocation matrixCS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAS.copyFrom(mBLASData.L3_sGEMM_A_mk);
+ matrixBS.copyFrom(mBLASData.L3_sGEMM_B_kn);
+ matrixCS.copyFrom(mBLASData.L3_sGEMM_C_mn);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.SGEMM(transA, transB, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_sGEMM_o_NN);
+ verifyMatrix(matrixCRef, matrixCS);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, mBLASData.dK));
+ matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dK, mBLASData.dN));
+ matrixAS.copyFrom(mBLASData.L3_sGEMM_A_km);
+ matrixBS.copyFrom(mBLASData.L3_sGEMM_B_nk);
+
+ transA = ScriptIntrinsicBLAS.TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCS.copyFrom(mBLASData.L3_sGEMM_C_mn);
+ mBLAS.SGEMM(transA, transB, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ matrixCRef.copyFrom(mBLASData.L3_sGEMM_o_TT);
+ verifyMatrix(matrixCRef, matrixCS);
+
+ transA = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ matrixCS.copyFrom(mBLASData.L3_sGEMM_C_mn);
+ mBLAS.SGEMM(transA, transB, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ matrixCRef.copyFrom(mBLASData.L3_sGEMM_o_HH);
+ verifyMatrix(matrixCRef, matrixCS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_DGEMM_Correctness() {
+ int transA = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int transB = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dK, mBLASData.dM));
+ Allocation matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dK));
+ Allocation matrixCD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAD.copyFrom(mBLASData.L3_dGEMM_A_mk);
+ matrixBD.copyFrom(mBLASData.L3_dGEMM_B_kn);
+ matrixCD.copyFrom(mBLASData.L3_dGEMM_C_mn);
+ // Test for the default case: NO_TRANS
+ mBLAS.DGEMM(transA, transB, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_dGEMM_o_NN);
+ verifyMatrix(matrixCRef, matrixCD);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, mBLASData.dK));
+ matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dK, mBLASData.dN));
+ matrixAD.copyFrom(mBLASData.L3_dGEMM_A_km);
+ matrixBD.copyFrom(mBLASData.L3_dGEMM_B_nk);
+
+ transA = ScriptIntrinsicBLAS.TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCD.copyFrom(mBLASData.L3_dGEMM_C_mn);
+ mBLAS.DGEMM(transA, transB, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ matrixCRef.copyFrom(mBLASData.L3_dGEMM_o_TT);
+ verifyMatrix(matrixCRef, matrixCD);
+
+ transA = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ matrixCD.copyFrom(mBLASData.L3_dGEMM_C_mn);
+ mBLAS.DGEMM(transA, transB, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ matrixCRef.copyFrom(mBLASData.L3_dGEMM_o_HH);
+ verifyMatrix(matrixCRef, matrixCD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_CGEMM_Correctness() {
+ int transA = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int transB = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dM));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAC.copyFrom(mBLASData.L3_cGEMM_A_mk);
+ matrixBC.copyFrom(mBLASData.L3_cGEMM_B_kn);
+ matrixCC.copyFrom(mBLASData.L3_cGEMM_C_mn);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.CGEMM(transA, transB, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_cGEMM_o_NN);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, mBLASData.dK));
+ matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cGEMM_A_km);
+ matrixBC.copyFrom(mBLASData.L3_cGEMM_B_nk);
+
+ transA = ScriptIntrinsicBLAS.TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cGEMM_C_mn);
+ mBLAS.CGEMM(transA, transB, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cGEMM_o_TT);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ transA = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ matrixCC.copyFrom(mBLASData.L3_cGEMM_C_mn);
+ mBLAS.CGEMM(transA, transB, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cGEMM_o_HH);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZGEMM_Correctness() {
+ int transA = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int transB = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dM));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAZ.copyFrom(mBLASData.L3_zGEMM_A_mk);
+ matrixBZ.copyFrom(mBLASData.L3_zGEMM_B_kn);
+ matrixCZ.copyFrom(mBLASData.L3_zGEMM_C_mn);
+
+ // Test for the default case: NO_TRANS
+ mBLAS.ZGEMM(transA, transB, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_zGEMM_o_NN);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ // Test for trans cases: TRANSPOSE, CONJ_TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, mBLASData.dK));
+ matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zGEMM_A_km);
+ matrixBZ.copyFrom(mBLASData.L3_zGEMM_B_nk);
+
+ transA = ScriptIntrinsicBLAS.TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.TRANSPOSE;
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zGEMM_C_mn);
+ mBLAS.ZGEMM(transA, transB, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zGEMM_o_TT);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ transA = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ transB = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ matrixCZ.copyFrom(mBLASData.L3_zGEMM_C_mn);
+ mBLAS.ZGEMM(transA, transB, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zGEMM_o_HH);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
+
private boolean validateL3_xSYMM(Element e, int Side, int Uplo, Allocation A, Allocation B, Allocation C) {
boolean result = true;
result &= validateSide(Side);
@@ -2274,6 +5314,135 @@
}
+ public void test_L3_SSYMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation matrixCS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAS.copyFrom(mBLASData.L3_sSYMM_A_mm);
+ matrixBS.copyFrom(mBLASData.L3_sSYMM_B_mn);
+ matrixCS.copyFrom(mBLASData.L3_sSYMM_C_mn);
+
+ // Default case: SIDE = LEFT
+ mBLAS.SSYMM(side, uplo, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_sSYMM_o_L);
+ verifyMatrix(matrixCRef, matrixCS);
+
+ // SIDE = RIGHT
+ side = ScriptIntrinsicBLAS.RIGHT;
+ matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAS.copyFrom(mBLASData.L3_sSYMM_A_nn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCS.copyFrom(mBLASData.L3_sSYMM_C_mn);
+ mBLAS.SSYMM(side, uplo, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ matrixCRef.copyFrom(mBLASData.L3_sSYMM_o_R);
+ verifyMatrix(matrixCRef, matrixCS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_DSYMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation matrixCD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAD.copyFrom(mBLASData.L3_dSYMM_A_mm);
+ matrixBD.copyFrom(mBLASData.L3_dSYMM_B_mn);
+ matrixCD.copyFrom(mBLASData.L3_dSYMM_C_mn);
+
+ // Default case: SIDE = LEFT
+ mBLAS.DSYMM(side, uplo, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_dSYMM_o_L);
+ verifyMatrix(matrixCRef, matrixCD);
+
+ // SIDE = RIGHT
+ side = ScriptIntrinsicBLAS.RIGHT;
+ matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAD.copyFrom(mBLASData.L3_dSYMM_A_nn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCD.copyFrom(mBLASData.L3_dSYMM_C_mn);
+ mBLAS.DSYMM(side, uplo, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ matrixCRef.copyFrom(mBLASData.L3_dSYMM_o_R);
+ verifyMatrix(matrixCRef, matrixCD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_CSYMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAC.copyFrom(mBLASData.L3_cSYMM_A_mm);
+ matrixBC.copyFrom(mBLASData.L3_cSYMM_B_mn);
+ matrixCC.copyFrom(mBLASData.L3_cSYMM_C_mn);
+
+ // Default case: SIDE = LEFT
+ mBLAS.CSYMM(side, uplo, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_cSYMM_o_L);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ // SIDE = RIGHT
+ side = ScriptIntrinsicBLAS.RIGHT;
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cSYMM_A_nn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cSYMM_C_mn);
+ mBLAS.CSYMM(side, uplo, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cSYMM_o_R);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZSYMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAZ.copyFrom(mBLASData.L3_zSYMM_A_mm);
+ matrixBZ.copyFrom(mBLASData.L3_zSYMM_B_mn);
+ matrixCZ.copyFrom(mBLASData.L3_zSYMM_C_mn);
+
+ // Default case: SIDE = LEFT
+ mBLAS.ZSYMM(side, uplo, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_zSYMM_o_L);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ // SIDE = RIGHT
+ side = ScriptIntrinsicBLAS.RIGHT;
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zSYMM_A_nn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zSYMM_C_mn);
+ mBLAS.ZSYMM(side, uplo, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zSYMM_o_R);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private boolean validateHEMM(Element e, int Side, int Uplo, Allocation A, Allocation B, Allocation C) {
if (!validateSide(Side)) {
return false;
@@ -2354,6 +5523,71 @@
L3_xHEMM_API(mMatrixZ);
}
+ public void test_L3_CHEMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAC.copyFrom(mBLASData.L3_cHEMM_A_mm);
+ matrixBC.copyFrom(mBLASData.L3_cHEMM_B_mn);
+ matrixCC.copyFrom(mBLASData.L3_cHEMM_C_mn);
+
+ // Default case: SIDE = LEFT
+ mBLAS.CHEMM(side, uplo, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_cHEMM_o_L);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ // SIDE = RIGHT
+ side = ScriptIntrinsicBLAS.RIGHT;
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cHEMM_A_nn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cHEMM_C_mn);
+ mBLAS.CHEMM(side, uplo, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cHEMM_o_R);
+ verifyMatrix(matrixCRef, matrixCC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZHEMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAZ.copyFrom(mBLASData.L3_zHEMM_A_mm);
+ matrixBZ.copyFrom(mBLASData.L3_zHEMM_B_mn);
+ matrixCZ.copyFrom(mBLASData.L3_zHEMM_C_mn);
+
+ // Default case: SIDE = LEFT
+ mBLAS.ZHEMM(side, uplo, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixCRef.copyFrom(mBLASData.L3_zHEMM_o_L);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ // SIDE = RIGHT
+ side = ScriptIntrinsicBLAS.RIGHT;
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zHEMM_A_nn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zHEMM_C_mn);
+ mBLAS.ZHEMM(side, uplo, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zHEMM_o_R);
+ verifyMatrix(matrixCRef, matrixCZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private boolean validateL3_xSYRK(Element e, int Uplo, int Trans, Allocation A, Allocation C) {
boolean result = true;
@@ -2433,6 +5667,131 @@
}
+ public void test_L3_SSYRK_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAS.copyFrom(mBLASData.L3_sSYRK_A_nk);
+ matrixCS.copyFrom(mBLASData.L3_sSYRK_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.SSYRK(uplo, trans, alphaS, matrixAS, betaS, matrixCS);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_sSYRK_o_N);
+ verifyMatrix(matrixCRef, matrixCS, true);
+
+ // Case: TRANSPOSE
+ matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAS.copyFrom(mBLASData.L3_sSYRK_A_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCS.copyFrom(mBLASData.L3_sSYRK_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.SSYRK(uplo, trans, alphaS, matrixAS, betaS, matrixCS);
+ matrixCRef.copyFrom(mBLASData.L3_sSYRK_o_T);
+ verifyMatrix(matrixCRef, matrixCS, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_DSYRK_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAD.copyFrom(mBLASData.L3_dSYRK_A_nk);
+ matrixCD.copyFrom(mBLASData.L3_dSYRK_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.DSYRK(uplo, trans, alphaD, matrixAD, betaD, matrixCD);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_dSYRK_o_N);
+ verifyMatrix(matrixCRef, matrixCD, true);
+
+ // Case: TRANSPOSE
+ matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAD.copyFrom(mBLASData.L3_dSYRK_A_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCD.copyFrom(mBLASData.L3_dSYRK_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.DSYRK(uplo, trans, alphaD, matrixAD, betaD, matrixCD);
+ matrixCRef.copyFrom(mBLASData.L3_dSYRK_o_T);
+ verifyMatrix(matrixCRef, matrixCD, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_CSYRK_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cSYRK_A_nk);
+ matrixCC.copyFrom(mBLASData.L3_cSYRK_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.CSYRK(uplo, trans, alphaC, matrixAC, betaC, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_cSYRK_o_N);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ // Case: TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAC.copyFrom(mBLASData.L3_cSYRK_A_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cSYRK_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.CSYRK(uplo, trans, alphaC, matrixAC, betaC, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cSYRK_o_T);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZSYRK_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zSYRK_A_nk);
+ matrixCZ.copyFrom(mBLASData.L3_zSYRK_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.ZSYRK(uplo, trans, alphaZ, matrixAZ, betaZ, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_zSYRK_o_N);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ // Case: TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAZ.copyFrom(mBLASData.L3_zSYRK_A_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zSYRK_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.ZSYRK(uplo, trans, alphaZ, matrixAZ, betaZ, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zSYRK_o_T);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private boolean validateHERK(Element e, int Uplo, int Trans, Allocation A, Allocation C) {
if (!validateUplo(Uplo)) {
return false;
@@ -2506,6 +5865,68 @@
L3_xHERK_API(mMatrixZ);
}
+ public void test_L3_CHERK_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cHERK_A_nk);
+ matrixCC.copyFrom(mBLASData.L3_cHERK_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.CHERK(uplo, trans, alphaS, matrixAC, betaS, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_cHERK_o_N);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ // Case: TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAC.copyFrom(mBLASData.L3_cHERK_A_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cHERK_C_nn);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ mBLAS.CHERK(uplo, trans, alphaS, matrixAC, betaS, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cHERK_o_H);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZHERK_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zHERK_A_nk);
+ matrixCZ.copyFrom(mBLASData.L3_zHERK_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.ZHERK(uplo, trans, alphaD, matrixAZ, betaD, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_zHERK_o_N);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ // Case: TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAZ.copyFrom(mBLASData.L3_zHERK_A_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zHERK_C_nn);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ mBLAS.ZHERK(uplo, trans, alphaD, matrixAZ, betaD, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zHERK_o_H);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
private boolean validateSYR2K(Element e, int Uplo, int Trans, Allocation A, Allocation B, Allocation C) {
if (!validateTranspose(Trans)) {
@@ -2611,6 +6032,147 @@
}
+ public void test_L3_SSYR2K_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAS.copyFrom(mBLASData.L3_sSYR2K_A_nk);
+ matrixBS.copyFrom(mBLASData.L3_sSYR2K_B_nk);
+ matrixCS.copyFrom(mBLASData.L3_sSYR2K_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.SSYR2K(uplo, trans, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_sSYR2K_o_N);
+ verifyMatrix(matrixCRef, matrixCS, true);
+
+ // Case: TRANSPOSE
+ matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dK));
+ matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAS.copyFrom(mBLASData.L3_sSYR2K_A_kn);
+ matrixBS.copyFrom(mBLASData.L3_sSYR2K_B_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCS.copyFrom(mBLASData.L3_sSYR2K_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.SSYR2K(uplo, trans, alphaS, matrixAS, matrixBS, betaS, matrixCS);
+ matrixCRef.copyFrom(mBLASData.L3_sSYR2K_o_T);
+ verifyMatrix(matrixCRef, matrixCS, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_DSYR2K_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAD.copyFrom(mBLASData.L3_dSYR2K_A_nk);
+ matrixBD.copyFrom(mBLASData.L3_dSYR2K_B_nk);
+ matrixCD.copyFrom(mBLASData.L3_dSYR2K_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.DSYR2K(uplo, trans, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_dSYR2K_o_N);
+ verifyMatrix(matrixCRef, matrixCD, true);
+
+ // Case: TRANSPOSE
+ matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dK));
+ matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAD.copyFrom(mBLASData.L3_dSYR2K_A_kn);
+ matrixBD.copyFrom(mBLASData.L3_dSYR2K_B_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCD.copyFrom(mBLASData.L3_dSYR2K_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.DSYR2K(uplo, trans, alphaD, matrixAD, matrixBD, betaD, matrixCD);
+ matrixCRef.copyFrom(mBLASData.L3_dSYR2K_o_T);
+ verifyMatrix(matrixCRef, matrixCD, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_CSYR2K_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cSYR2K_A_nk);
+ matrixBC.copyFrom(mBLASData.L3_cSYR2K_B_nk);
+ matrixCC.copyFrom(mBLASData.L3_cSYR2K_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.CSYR2K(uplo, trans, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_cSYR2K_o_N);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ // Case: TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAC.copyFrom(mBLASData.L3_cSYR2K_A_kn);
+ matrixBC.copyFrom(mBLASData.L3_cSYR2K_B_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cSYR2K_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.CSYR2K(uplo, trans, alphaC, matrixAC, matrixBC, betaC, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cSYR2K_o_T);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZSYR2K_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zSYR2K_A_nk);
+ matrixBZ.copyFrom(mBLASData.L3_zSYR2K_B_nk);
+ matrixCZ.copyFrom(mBLASData.L3_zSYR2K_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.ZSYR2K(uplo, trans, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_zSYR2K_o_N);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ // Case: TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAZ.copyFrom(mBLASData.L3_zSYR2K_A_kn);
+ matrixBZ.copyFrom(mBLASData.L3_zSYR2K_B_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zSYR2K_C_nn);
+
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ mBLAS.ZSYR2K(uplo, trans, alphaZ, matrixAZ, matrixBZ, betaZ, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zSYR2K_o_T);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private boolean validateHER2K(Element e, int Uplo, int Trans, Allocation A, Allocation B, Allocation C) {
if (!validateUplo(Uplo)) {
return false;
@@ -2690,6 +6252,76 @@
L3_xHER2K_API(mMatrixZ);
}
+ public void test_L3_CHER2K_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cHER2K_A_nk);
+ matrixBC.copyFrom(mBLASData.L3_cHER2K_B_nk);
+ matrixCC.copyFrom(mBLASData.L3_cHER2K_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.CHER2K(uplo, trans, alphaC, matrixAC, matrixBC, betaS, matrixCC);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_cHER2K_o_N);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ // Case: TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAC.copyFrom(mBLASData.L3_cHER2K_A_kn);
+ matrixBC.copyFrom(mBLASData.L3_cHER2K_B_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCC.copyFrom(mBLASData.L3_cHER2K_C_nn);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ mBLAS.CHER2K(uplo, trans, alphaC, matrixAC, matrixBC, betaS, matrixCC);
+ matrixCRef.copyFrom(mBLASData.L3_cHER2K_o_H);
+ verifyMatrix(matrixCRef, matrixCC, true);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZHER2K_Correctness() {
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dK, mBLASData.dN));
+ Allocation matrixCZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zHER2K_A_nk);
+ matrixBZ.copyFrom(mBLASData.L3_zHER2K_B_nk);
+ matrixCZ.copyFrom(mBLASData.L3_zHER2K_C_nn);
+
+ // Default case: NO_TRANSPOSE
+ mBLAS.ZHER2K(uplo, trans, alphaZ, matrixAZ, matrixBZ, betaD, matrixCZ);
+ Allocation matrixCRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixCRef.copyFrom(mBLASData.L3_zHER2K_o_N);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ // Case: TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dK));
+ matrixAZ.copyFrom(mBLASData.L3_zHER2K_A_kn);
+ matrixBZ.copyFrom(mBLASData.L3_zHER2K_B_kn);
+ // Reload matrix C, since it was overwritten by BLAS.
+ matrixCZ.copyFrom(mBLASData.L3_zHER2K_C_nn);
+
+ trans = ScriptIntrinsicBLAS.CONJ_TRANSPOSE;
+ mBLAS.ZHER2K(uplo, trans, alphaZ, matrixAZ, matrixBZ, betaD, matrixCZ);
+ matrixCRef.copyFrom(mBLASData.L3_zHER2K_o_H);
+ verifyMatrix(matrixCRef, matrixCZ, true);
+
+ mRS.finish();
+ checkError();
+ }
+
private boolean validateTRMM(Element e, int Side, int Uplo, int TransA, int Diag, Allocation A, Allocation B) {
if (!validateSide(Side)) {
@@ -2803,6 +6435,147 @@
}
+ public void test_L3_STRMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAS.copyFrom(mBLASData.L3_sTRMM_A_mm);
+ matrixBS.copyFrom(mBLASData.L3_sTRMM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.STRMM(side, uplo, trans, diag, alphaS, matrixAS, matrixBS);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_sTRMM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBS);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAS.copyFrom(mBLASData.L3_sTRMM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBS.copyFrom(mBLASData.L3_sTRMM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.STRMM(side, uplo, trans, diag, alphaS, matrixAS, matrixBS);
+ matrixBRef.copyFrom(mBLASData.L3_sTRMM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_DTRMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAD.copyFrom(mBLASData.L3_dTRMM_A_mm);
+ matrixBD.copyFrom(mBLASData.L3_dTRMM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.DTRMM(side, uplo, trans, diag, alphaD, matrixAD, matrixBD);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_dTRMM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBD);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAD.copyFrom(mBLASData.L3_dTRMM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBD.copyFrom(mBLASData.L3_dTRMM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.DTRMM(side, uplo, trans, diag, alphaD, matrixAD, matrixBD);
+ matrixBRef.copyFrom(mBLASData.L3_dTRMM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_CTRMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAC.copyFrom(mBLASData.L3_cTRMM_A_mm);
+ matrixBC.copyFrom(mBLASData.L3_cTRMM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.CTRMM(side, uplo, trans, diag, alphaC, matrixAC, matrixBC);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_cTRMM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBC);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cTRMM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBC.copyFrom(mBLASData.L3_cTRMM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.CTRMM(side, uplo, trans, diag, alphaC, matrixAC, matrixBC);
+ matrixBRef.copyFrom(mBLASData.L3_cTRMM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZTRMM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAZ.copyFrom(mBLASData.L3_zTRMM_A_mm);
+ matrixBZ.copyFrom(mBLASData.L3_zTRMM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.ZTRMM(side, uplo, trans, diag, alphaZ, matrixAZ, matrixBZ);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_zTRMM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBZ);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zTRMM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBZ.copyFrom(mBLASData.L3_zTRMM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.ZTRMM(side, uplo, trans, diag, alphaZ, matrixAZ, matrixBZ);
+ matrixBRef.copyFrom(mBLASData.L3_zTRMM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBZ);
+
+ mRS.finish();
+ checkError();
+ }
+
+
private boolean validateTRSM(Element e, int Side, int Uplo, int TransA, int Diag, Allocation A, Allocation B) {
int adim = -1, bM = -1, bN = -1;
if (!validateSide(Side)) {
@@ -2915,4 +6688,144 @@
public void test_L3_ZTRSM_API() {
L3_xTRSM_API(mMatrixZ);
}
+
+ public void test_L3_STRSM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAS.copyFrom(mBLASData.L3_sTRSM_A_mm);
+ matrixBS.copyFrom(mBLASData.L3_sTRSM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.STRSM(side, uplo, trans, diag, alphaS, matrixAS, matrixBS);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_sTRSM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBS);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAS = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAS.copyFrom(mBLASData.L3_sTRSM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBS.copyFrom(mBLASData.L3_sTRSM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.STRSM(side, uplo, trans, diag, alphaS, matrixAS, matrixBS);
+ matrixBRef.copyFrom(mBLASData.L3_sTRSM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBS);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_DTRSM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAD.copyFrom(mBLASData.L3_dTRSM_A_mm);
+ matrixBD.copyFrom(mBLASData.L3_dTRSM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.DTRSM(side, uplo, trans, diag, alphaD, matrixAD, matrixBD);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_dTRSM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBD);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAD = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAD.copyFrom(mBLASData.L3_dTRSM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBD.copyFrom(mBLASData.L3_dTRSM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.DTRSM(side, uplo, trans, diag, alphaD, matrixAD, matrixBD);
+ matrixBRef.copyFrom(mBLASData.L3_dTRSM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBD);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_CTRSM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAC.copyFrom(mBLASData.L3_cTRSM_A_mm);
+ matrixBC.copyFrom(mBLASData.L3_cTRSM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.CTRSM(side, uplo, trans, diag, alphaC, matrixAC, matrixBC);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_cTRSM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBC);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAC = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F32_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAC.copyFrom(mBLASData.L3_cTRSM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBC.copyFrom(mBLASData.L3_cTRSM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.CTRSM(side, uplo, trans, diag, alphaC, matrixAC, matrixBC);
+ matrixBRef.copyFrom(mBLASData.L3_cTRSM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBC);
+
+ mRS.finish();
+ checkError();
+ }
+
+ public void test_L3_ZTRSM_Correctness() {
+ int side = ScriptIntrinsicBLAS.LEFT;
+ int trans = ScriptIntrinsicBLAS.NO_TRANSPOSE;
+ int uplo = ScriptIntrinsicBLAS.UPPER;
+ int diag = ScriptIntrinsicBLAS.NON_UNIT;
+
+ // Populate input allocations
+ Allocation matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dM, mBLASData.dM));
+ Allocation matrixBZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixAZ.copyFrom(mBLASData.L3_zTRSM_A_mm);
+ matrixBZ.copyFrom(mBLASData.L3_zTRSM_B_mn);
+
+ // Default case: LEFT, UPPER, NO_TRANSPOSE
+ mBLAS.ZTRSM(side, uplo, trans, diag, alphaZ, matrixAZ, matrixBZ);
+ Allocation matrixBRef = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dM));
+ matrixBRef.copyFrom(mBLASData.L3_zTRSM_o_LUN);
+ verifyMatrix(matrixBRef, matrixBZ);
+
+ // Case: RIGHT, LOWER, TRANSPOSE
+ matrixAZ = Allocation.createTyped(mRS, Type.createXY(mRS, Element.F64_2(mRS), mBLASData.dN, mBLASData.dN));
+ matrixAZ.copyFrom(mBLASData.L3_zTRSM_A_nn);
+ // Reload matrix B, since it was overwritten by BLAS.
+ matrixBZ.copyFrom(mBLASData.L3_zTRSM_B_mn);
+
+ side = ScriptIntrinsicBLAS.RIGHT;
+ trans = ScriptIntrinsicBLAS.TRANSPOSE;
+ uplo = ScriptIntrinsicBLAS.LOWER;
+ mBLAS.ZTRSM(side, uplo, trans, diag, alphaZ, matrixAZ, matrixBZ);
+ matrixBRef.copyFrom(mBLASData.L3_zTRSM_o_RLT);
+ verifyMatrix(matrixBRef, matrixBZ);
+
+ mRS.finish();
+ checkError();
+ }
}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rs b/tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rs
new file mode 100644
index 0000000..9bd90fd
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation gInput;
+
+half RS_KERNEL add(int x, int y) {
+ half a = rsGetElementAt_half(gInput, x);
+ half b = rsGetElementAt_half(gInput, y);
+ return a + b;
+}
+
+half RS_KERNEL sub(int x, int y) {
+ half a = rsGetElementAt_half(gInput, x);
+ half b = rsGetElementAt_half(gInput, y);
+ return a - b;
+}
+
+half RS_KERNEL mul(int x, int y) {
+ half a = rsGetElementAt_half(gInput, x);
+ half b = rsGetElementAt_half(gInput, y);
+ return a * b;
+}
+
+half RS_KERNEL div(int x, int y) {
+ half a = rsGetElementAt_half(gInput, x);
+ half b = rsGetElementAt_half(gInput, y);
+ return a / b;
+}
+
+union Bit16Type {
+ half h;
+ unsigned short s;
+};
+
+unsigned short __attribute__((kernel)) bitcast(half h) {
+ union Bit16Type u = {h};
+ return u.s;
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/float16_gen.c b/tests/tests/renderscript/src/android/renderscript/cts/float16_gen.c
new file mode 100644
index 0000000..fed0563
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/float16_gen.c
@@ -0,0 +1,281 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+
+// This utility generates a Java file containing data used in the CTS test for
+// FP16 arithmetic. The Java file containes a class with the following fields:
+// * A 1D array of length 'n' containing various constants used in the test
+// * Four n x n x 2 arrays, each containing the reference output for
+// pair-wise addition, subtraction, multiplication and division. The
+// reference output is a range accounting for tolerable error. The
+// acceptable error is 3 x ULP for division and 1 x ULP for other
+// operations.
+
+typedef __fp16 half;
+
+// Macros for names of the package, class and fields in the generated java file
+#define PACKAGE_NAME "android.renderscript.cts"
+#define CLASS_NAME "Float16TestData"
+#define INPUT_ARRAY "input"
+#define OUTPUT_ARRAY_ADD "ReferenceOutputForAdd"
+#define OUTPUT_ARRAY_SUB "ReferenceOutputForSub"
+#define OUTPUT_ARRAY_MUL "ReferenceOutputForMul"
+#define OUTPUT_ARRAY_DIV "ReferenceOutputForDiv"
+
+// Structure to hold an FP16 constant and its human-readable description, to be
+// added as a comment, in the generated Java file
+typedef struct {
+ unsigned short value;
+ const char* description;
+} FP16Constant;
+
+FP16Constant input[] = {
+ { 0b0011110000000000, "one" },
+ { 0b0100000000000000, "two" },
+ { 0b0000000000000001, "smallest subnormal" },
+ { 0b0000001111111111, "largest subnormal" },
+ { 0b0000010000000000, "smallest normal" },
+ { 0b0111101111111111, "largest normal" },
+ { 0x3880, "0.562500" },
+ { 0x3e80, "1.625000" },
+ { 0x5140, "42.000000" },
+ { 0x5ac0, "216.000000" },
+ { 0x6c75, "4564.000000" },
+ { 0x7b53, "60000.000000" },
+ { 0b1011110000000000, "negative one" },
+ { 0b1100000000000000, "negative two" },
+ { 0b1000000000000001, "negative (smallest subnormal)" },
+ { 0b1000001111111111, "negative (largest subnormal)" },
+ { 0b1000010000000000, "negative (smallest normal)" },
+ { 0b1111101111111111, "negative (largest normal)" },
+ { 0xb880, "-0.562500" },
+ { 0xbe80, "-1.625000" },
+ { 0xd140, "-42.000000" },
+ { 0xdac0, "-216.000000" },
+ { 0xec75, "-4564.000000" },
+ { 0xfb53, "-60000.000000" },
+ { 0b0000000000000000, "zero" },
+ { 0b0111110000000000, "infinity" },
+ { 0b1000000000000000, "negative zero" },
+ { 0b1111110000000000, "negative infinity" },
+ { 0b0111110000000001, "nan" },
+};
+
+const int numInputs = sizeof(input) / sizeof(FP16Constant);
+
+// 16-bit masks for extracting sign, exponent and mantissa bits
+static unsigned short SIGN_MASK = 0x8000;
+static unsigned short EXPONENT_MASK = 0x7C00;
+static unsigned short MANTISSA_MASK = 0x03FF;
+
+// NaN has all exponent bits set to 1 and a non-zero mantissa
+int isFloat16NaN(unsigned short val) {
+ return (val & EXPONENT_MASK) == EXPONENT_MASK &&
+ (val & MANTISSA_MASK) != 0;
+}
+
+// Infinity has all exponent bits set to 1 and zeroes in mantissa
+int isFloat16Infinite(unsigned short val) {
+ return (val & EXPONENT_MASK) == EXPONENT_MASK &&
+ (val & MANTISSA_MASK) == 0;
+}
+
+// Subnormal numbers have exponent bits set to 0 and a non-zero mantissa
+int isFloat16SubNormal(unsigned short val) {
+ return (val & EXPONENT_MASK) == 0 && (val & MANTISSA_MASK) != 0;
+}
+
+// Negativity test checks the sign bit
+int isFloat16Negative(unsigned short val) {
+ return (val & SIGN_MASK) != 0;
+}
+
+// Interpret a short as a FP16 value and convert to float
+float half2float(unsigned short s) {
+ half h = *(half *) &s;
+ return (float) h;
+}
+
+// Return the short value representing a float value in FP16
+unsigned short float2half(float f) {
+ half h = (half) f;
+ return *(unsigned short *) &h;
+}
+
+// Compute ULP for 'value' and store value +/- tolerance * ULP in bounds sarray
+void getErrorBar(unsigned short value, int tolerance, unsigned short bounds[2]) {
+ // Validate 'tolerance' parameter
+ if (tolerance != 1 && tolerance != 3) {
+ fprintf(stderr, "Allowed ULP error should either be 1 or 3, and not %d\n",
+ tolerance);
+ exit(0);
+ }
+
+ half hValue = *(half *) &value;
+ half ulp;
+
+ // For Infinity and NaN, bounds are equal to 'value'
+ if (isFloat16Infinite(value) || isFloat16NaN(value)) {
+ bounds[0] = value;
+ bounds[1] = value;
+ return;
+ }
+
+ // Compute ULP
+ if (isFloat16SubNormal(value)) {
+ // 1 ulp for a subnormal number is the smallest possible subnormal
+ unsigned short ulpInShort = 0b0000000000000001;
+ ulp = *(half *) &ulpInShort;
+ }
+ else {
+ // 1 ulp for a non-subnormal number is (b - a) where
+ // - a has same exponent as 'value', zeroes for sign and mantissa
+ // - b has same exponent and sign as 'a', and has '1' in the mantissa
+ // (b - a) gives the ULP by getting rid of the implied '1' at the front of
+ // the mantissa
+ unsigned short a = (value & EXPONENT_MASK);
+ unsigned short b = (a | 1);
+ half hA = *(half *) &a;
+ half hB = *(half *) &b;
+ ulp = hB - hA;
+ }
+
+ // Compute error bar based on error tolerance
+ half lb = hValue - tolerance * ulp;
+ half ub = hValue + tolerance * ulp;
+ if (lb > ub) {
+ fprintf(stderr, "Warning! inconsistency in bounds\n");
+ fprintf(stderr, "Value: %f, ulp: %f\n", (float) hValue, (float) ulp);
+ fprintf(stderr, "lb: %f ub: %f\n", (float) lb, (float) ub);
+ fprintf(stderr, "lb: %x ub: %x\n", *(unsigned short *) &lb, *(unsigned short *) &ub);
+ }
+
+ // Set the bounds
+ bounds[0] = *(unsigned short *) &lb;
+ bounds[1] = *(unsigned short *) &ub;
+
+ // RS allows flush-to-zero for sub-normal results in relaxed precision.
+ // Flush lower bound of a positive sub-normal result to zero.
+ if (!isFloat16Negative(bounds[0]) && isFloat16SubNormal(bounds[0]))
+ bounds[0] = 0x0;
+ // Flush upper bound of a negative sub-normal result to negative zero.
+ if (isFloat16Negative(bounds[1]) && isFloat16SubNormal(bounds[1]))
+ bounds[1] = 0x0 | SIGN_MASK;
+
+}
+
+// Utilities that take 'unsigned short' representations of two fp16 values and
+// return the result of an arithmetic operation as an 'unsigned short'.
+typedef unsigned short operation_t(unsigned short, unsigned short);
+
+unsigned short add(unsigned short a, unsigned short b) {
+ float op1 = half2float(a);
+ float op2 = half2float(b);
+ return float2half(op1 + op2);
+}
+
+unsigned short subtract(unsigned short a, unsigned short b) {
+ float op1 = half2float(a);
+ float op2 = half2float(b);
+ return float2half(op1 - op2);
+}
+
+unsigned short multiply(unsigned short a, unsigned short b) {
+ float op1 = half2float(a);
+ float op2 = half2float(b);
+ return float2half(op1 * op2);
+}
+
+unsigned short divide(unsigned short a, unsigned short b) {
+ float op1 = half2float(a);
+ float op2 = half2float(b);
+ return float2half(op1 / op2);
+}
+
+// Print Java code that initializes the input array (along with the description
+// of the constant as a comment)
+void printInput() {
+ printf("static short[] %s = {\n", INPUT_ARRAY);
+
+ for (int x = 0; x < numInputs; x ++)
+ printf("(short) 0x%04x, // %s\n", input[x].value, input[x].description);
+
+ printf("};\n\n");
+}
+
+// Print Java code that initializes the output array with the acceptable bounds
+// on the output. For each pair of inputs, bounds are calculated on the result
+// from applying 'operation' on the pair.
+void printReferenceOutput(const char *fieldName, operation_t operation,
+ int tolerance) {
+ unsigned short result;
+ unsigned short resultBounds[2];
+
+ printf("static short[][][] %s = {\n", fieldName);
+
+ for (int x = 0; x < numInputs; x ++) {
+ printf("{");
+ for (int y = 0; y < numInputs; y ++) {
+ // Apply 'operation' and compute error bounds for the result.
+ result = operation(input[x].value, input[y].value);
+ getErrorBar(result, tolerance, resultBounds);
+
+ printf("{ (short) 0x%04x, (short) 0x%04x},", resultBounds[0],
+ resultBounds[1]);
+ }
+ printf("},\n");
+ }
+
+ printf("};\n\n");
+}
+
+const char *preamble = "/*\n"
+" * Copyright (C) 2015 The Android Open Source Project\n"
+" *\n"
+" * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
+" * you may not use this file except in compliance with the License.\n"
+" * You may obtain a copy of the License at\n"
+" *\n"
+" * http://www.apache.org/licenses/LICENSE-2.0\n"
+" *\n"
+" * Unless required by applicable law or agreed to in writing, software\n"
+" * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
+" * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
+" * See the License for the specific language governing permissions and\n"
+" * limitations under the License.\n"
+" */\n"
+"\n"
+"/* Don't edit this file! It is auto-generated by float16_gen.sh */\n\n"
+"package "PACKAGE_NAME";\n\n"
+"public class "CLASS_NAME" {\n";
+
+int main() {
+ // Print a preamble with copyright and class declaration, followed by the
+ // input FP16 array, and reference outputs for pair-wise arithmetic
+ // operations.
+ printf("%s", preamble);
+ printInput();
+
+ printReferenceOutput(OUTPUT_ARRAY_ADD, add, 1);
+ printReferenceOutput(OUTPUT_ARRAY_SUB, subtract, 1);
+ printReferenceOutput(OUTPUT_ARRAY_MUL, multiply, 1);
+ printReferenceOutput(OUTPUT_ARRAY_DIV, divide, 3);
+
+ printf("}");
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/float16_gen.sh b/tests/tests/renderscript/src/android/renderscript/cts/float16_gen.sh
new file mode 100644
index 0000000..8ddea46
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/float16_gen.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LIBDIR=$ANDROID_HOST_OUT/lib64
+CLANG=$ANDROID_BUILD_TOP/prebuilts/clang/linux-x86/host/3.6/bin/clang
+
+TMPDIR=`mktemp -d /tmp/float16_gen.XXXXXXXX`
+TMPFILE=$TMPDIR/tmp.java
+OUTFILE=$TMPDIR/Float16TestData.java
+EXECUTABLE=$TMPDIR/float16_gen
+
+$CLANG -Wl,-rpath=$LIBDIR -L $LIBDIR -lcompiler_rt -m64 float16_gen.c -o $EXECUTABLE
+$EXECUTABLE > $TMPFILE
+clang-format -style='{ColumnLimit: 80}' $TMPFILE > $OUTFILE
+cp $OUTFILE .
+
+rm -rf $TMPDIR
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/verify.rs b/tests/tests/renderscript/src/android/renderscript/cts/verify.rs
index 3563fee..f6d625b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/verify.rs
+++ b/tests/tests/renderscript/src/android/renderscript/cts/verify.rs
@@ -17,10 +17,11 @@
#include "shared.rsh"
int gAllowedIntError = 0;
+double gAllowedFloatError = 0.00000001;
+double gAllowedDoubleError = 0.00000000001;
static bool hadError = false;
static int2 errorLoc = {0,0};
-
static bool compare_float(float f1, float f2) {
if (fabs(f1-f2) > 0.0001f) {
hadError = true;
@@ -29,11 +30,10 @@
return true;
}
-static bool verify_float4(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_float4(rs_allocation in1, rs_allocation in2) {
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
float4 pref = rsGetElementAt_float4(in1, x, y);
float4 ptst = rsGetElementAt_float4(in2, x, y);
@@ -51,11 +51,10 @@
return true;
}
-static bool verify_float3(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_float3(rs_allocation in1, rs_allocation in2) {
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
float3 pref = rsGetElementAt_float3(in1, x, y);
float3 ptst = rsGetElementAt_float3(in2, x, y);
@@ -72,11 +71,10 @@
return true;
}
-static bool verify_float2(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_float2(rs_allocation in1, rs_allocation in2) {
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
float2 pref = rsGetElementAt_float2(in1, x, y);
float2 ptst = rsGetElementAt_float2(in2, x, y);
@@ -92,11 +90,10 @@
return true;
}
-static bool verify_float(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_float(rs_allocation in1, rs_allocation in2) {
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
float pref = rsGetElementAt_float(in1, x, y);
float ptst = rsGetElementAt_float(in2, x, y);
@@ -111,12 +108,11 @@
return true;
}
-static bool verify_uchar4(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_uchar4(rs_allocation in1, rs_allocation in2) {
int merr = 0;
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
int4 pref = convert_int4(rsGetElementAt_uchar4(in1, x, y));
int4 ptst = convert_int4(rsGetElementAt_uchar4(in2, x, y));
@@ -138,12 +134,11 @@
return true;
}
-static bool verify_uchar3(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_uchar3(rs_allocation in1, rs_allocation in2) {
int merr = 0;
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
int3 pref = convert_int3(rsGetElementAt_uchar3(in1, x, y));
int3 ptst = convert_int3(rsGetElementAt_uchar3(in2, x, y));
@@ -164,12 +159,11 @@
return true;
}
-static bool verify_uchar2(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_uchar2(rs_allocation in1, rs_allocation in2) {
int merr = 0;
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
int2 pref = convert_int2(rsGetElementAt_uchar2(in1, x, y));
int2 ptst = convert_int2(rsGetElementAt_uchar2(in2, x, y));
@@ -189,12 +183,11 @@
return true;
}
-static bool verify_uchar(rs_allocation in1, rs_allocation in2)
-{
+static bool verify_uchar(rs_allocation in1, rs_allocation in2) {
int merr = 0;
uint32_t w = rsAllocationGetDimX(in1);
uint32_t h = rsAllocationGetDimY(in1);
- for (uint32_t y=0; y < h; y++) {
+ for (uint32_t y = 0; y < h; y++) {
for (uint32_t x=0; x < w; x++) {
int pref = rsGetElementAt_uchar(in1, x, y);
int ptst = rsGetElementAt_uchar(in2, x, y);
@@ -232,7 +225,7 @@
rsDebug(txt, rsGetElementAt_uchar(a, xy.x, xy.y)); \
break; \
} \
- } else { \
+ } else if (dt == RS_TYPE_FLOAT_32) { \
switch(vs) { \
case 4: \
rsDebug(txt, rsGetElementAt_float4(a, xy.x, xy.y)); \
@@ -247,11 +240,24 @@
rsDebug(txt, rsGetElementAt_float(a, xy.x, xy.y)); \
break; \
} \
+ } else if (dt == RS_TYPE_FLOAT_64) { \
+ switch(vs) { \
+ case 4: \
+ rsDebug(txt, rsGetElementAt_double4(a, xy.x, xy.y)); \
+ break; \
+ case 3: \
+ rsDebug(txt, rsGetElementAt_double3(a, xy.x, xy.y)); \
+ break; \
+ case 2: \
+ rsDebug(txt, rsGetElementAt_double2(a, xy.x, xy.y)); \
+ break; \
+ case 1: \
+ rsDebug(txt, rsGetElementAt_double(a, xy.x, xy.y)); \
+ } \
} \
}
-void verify(rs_allocation ref_in, rs_allocation tst_in, rs_allocation src_in)
-{
+void verify(rs_allocation ref_in, rs_allocation tst_in, rs_allocation src_in) {
rs_element e = rsAllocationGetElement(ref_in);
rs_data_type dt = rsElementGetDataType(e);
uint32_t vs = rsElementGetVectorSize(e);
@@ -296,6 +302,135 @@
}
}
+
+static bool verify_CMatrix(rs_allocation in1, rs_allocation in2, double l2Norm, bool isUpperMatrix) {
+ uint32_t w = rsAllocationGetDimX(in1);
+ uint32_t h = rsAllocationGetDimY(in1);
+ for (uint32_t y = 0; y < h; y++) {
+ uint32_t xStart = 0;
+ if (isUpperMatrix) {
+ // Just test the upper matrix for certain BLAS routines
+ xStart = y;
+ }
+ for (uint32_t x = xStart; x < w; x++) {
+ float2 pref = rsGetElementAt_float2(in1, x, y);
+ float2 ptst = rsGetElementAt_float2(in2, x, y);
+ double absErr = (pref.x - ptst.x) * (pref.x - ptst.x) + (pref.y - ptst.y) * (pref.y - ptst.y);
+ if (absErr > l2Norm * gAllowedFloatError) {
+ errorLoc.x = x;
+ errorLoc.y = y;
+ hadError = true;
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+static bool verify_SMatrix(rs_allocation in1, rs_allocation in2, double l2Norm, bool isUpperMatrix) {
+ uint32_t w = rsAllocationGetDimX(in1);
+ uint32_t h = rsAllocationGetDimY(in1);
+ for (uint32_t y = 0; y < h; y++) {
+ uint32_t xStart = 0;
+ if (isUpperMatrix) {
+ // Just test the upper matrix for certain BLAS routines
+ xStart = y;
+ }
+ for (uint32_t x = xStart; x < w; x++) {
+ float pref = rsGetElementAt_float(in1, x, y);
+ float ptst = rsGetElementAt_float(in2, x, y);
+ double absErr = (pref - ptst) * (pref - ptst);
+ if (absErr > l2Norm * gAllowedFloatError) {
+ errorLoc.x = x;
+ errorLoc.y = y;
+ hadError = true;
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+static bool verify_ZMatrix(rs_allocation in1, rs_allocation in2, double l2Norm, bool isUpperMatrix) {
+ uint32_t w = rsAllocationGetDimX(in1);
+ uint32_t h = rsAllocationGetDimY(in1);
+ for (uint32_t y = 0; y < h; y++) {
+ uint32_t xStart = 0;
+ if (isUpperMatrix) {
+ // Just test the upper matrix for certain BLAS routines
+ xStart = y;
+ }
+ for (uint32_t x = xStart; x < w; x++) {
+ double2 pref = rsGetElementAt_double2(in1, x, y);
+ double2 ptst = rsGetElementAt_double2(in2, x, y);
+ double absErr = (pref.x - ptst.x) * (pref.x - ptst.x) + (pref.y - ptst.y) * (pref.y - ptst.y);
+ if (absErr > l2Norm * gAllowedDoubleError) {
+ errorLoc.x = x;
+ errorLoc.y = y;
+ hadError = true;
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+static bool verify_DMatrix(rs_allocation in1, rs_allocation in2, double l2Norm, bool isUpperMatrix) {
+ uint32_t w = rsAllocationGetDimX(in1);
+ uint32_t h = rsAllocationGetDimY(in1);
+ for (uint32_t y = 0; y < h; y++) {
+ uint32_t xStart = 0;
+ if (isUpperMatrix) {
+ // Just test the upper matrix for certain BLAS routines
+ xStart = y;
+ }
+ for (uint32_t x = xStart; x < w; x++) {
+ double pref = rsGetElementAt_double(in1, x, y);
+ double ptst = rsGetElementAt_double(in2, x, y);
+ double absErr = (pref - ptst) * (pref - ptst);
+ if (absErr > l2Norm * gAllowedDoubleError) {
+ errorLoc.x = x;
+ errorLoc.y = y;
+ hadError = true;
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+void verifyMatrix(rs_allocation ref_in, rs_allocation tst_in, double l2Norm, bool isUpperMatrix) {
+ rs_element e = rsAllocationGetElement(ref_in);
+ rs_data_type dt = rsElementGetDataType(e);
+ uint32_t vs = rsElementGetVectorSize(e);
+ bool valid = false;
+
+ if (dt == RS_TYPE_FLOAT_32) {
+ switch(vs) {
+ case 2:
+ valid = verify_CMatrix(ref_in, tst_in, l2Norm, isUpperMatrix);
+ break;
+ case 1:
+ valid = verify_SMatrix(ref_in, tst_in, l2Norm, isUpperMatrix);
+ break;
+ }
+ } else if (dt == RS_TYPE_FLOAT_64) {
+ switch(vs) {
+ case 2:
+ valid = verify_ZMatrix(ref_in, tst_in, l2Norm, isUpperMatrix);
+ break;
+ case 1:
+ valid = verify_DMatrix(ref_in, tst_in, l2Norm, isUpperMatrix);
+ break;
+ }
+ }
+ if (!valid) {
+ rsDebug("verify failure at xy", errorLoc);
+ printCell("Expected value ", ref_in, errorLoc);
+ printCell("Actual value ", tst_in, errorLoc);
+ }
+}
+
void checkError()
{
if (hadError) {
diff --git a/tests/tests/text/src/android/text/cts/StaticLayoutTest.java b/tests/tests/text/src/android/text/cts/StaticLayoutTest.java
index e3f0e0a..c6f4049 100644
--- a/tests/tests/text/src/android/text/cts/StaticLayoutTest.java
+++ b/tests/tests/text/src/android/text/cts/StaticLayoutTest.java
@@ -444,30 +444,6 @@
assertTrue(mDefaultLayout.getEllipsisCount(3) == 0);
assertTrue(mDefaultLayout.getEllipsisCount(4) == 0);
assertTrue(mDefaultLayout.getEllipsisCount(5) > 0);
-
- // Single line case and TruncateAt.END so that we have some ellipsis
- mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
- TextUtils.TruncateAt.END,
- 1);
- assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
-
- // Single line case and TruncateAt.MIDDLE so that we have some ellipsis
- mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
- TextUtils.TruncateAt.MIDDLE,
- 1);
- assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
-
- // Single line case and TruncateAt.END so that we have some ellipsis
- mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
- TextUtils.TruncateAt.END,
- 1);
- assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
-
- // Single line case and TruncateAt.MARQUEE so that we have NO ellipsis
- mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
- TextUtils.TruncateAt.MARQUEE,
- 1);
- assertTrue(mDefaultLayout.getEllipsisCount(0) == 0);
}
/*
@@ -514,6 +490,65 @@
assertEquals(outerWidth, layout.getEllipsizedWidth());
}
+ public void testEllipsis_singleLine() {
+ {
+ // Single line case and TruncateAt.END so that we have some ellipsis
+ StaticLayout layout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.END, 1);
+ assertTrue(layout.getEllipsisCount(0) > 0);
+ }
+ {
+ // Single line case and TruncateAt.MIDDLE so that we have some ellipsis
+ StaticLayout layout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.MIDDLE, 1);
+ assertTrue(layout.getEllipsisCount(0) > 0);
+ }
+ {
+ // Single line case and TruncateAt.END so that we have some ellipsis
+ StaticLayout layout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.END, 1);
+ assertTrue(layout.getEllipsisCount(0) > 0);
+ }
+ {
+ // Single line case and TruncateAt.MARQUEE so that we have NO ellipsis
+ StaticLayout layout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.MARQUEE, 1);
+ assertTrue(layout.getEllipsisCount(0) == 0);
+ }
+
+ final String text = "\u3042" // HIRAGANA LETTER A
+ + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
+ final float textWidth = mDefaultPaint.measureText(text);
+ final int halfWidth = (int)(textWidth / 2.0f);
+ {
+ StaticLayout layout = new StaticLayout(text, 0, text.length(), mDefaultPaint,
+ halfWidth, DEFAULT_ALIGN, TextDirectionHeuristics.FIRSTSTRONG_LTR,
+ SPACE_MULTI, SPACE_ADD, false, TextUtils.TruncateAt.END, halfWidth, 1);
+ assertTrue(layout.getEllipsisCount(0) > 0);
+ assertTrue(layout.getEllipsisStart(0) > 0);
+ }
+ {
+ StaticLayout layout = new StaticLayout(text, 0, text.length(), mDefaultPaint,
+ halfWidth, DEFAULT_ALIGN, TextDirectionHeuristics.FIRSTSTRONG_LTR,
+ SPACE_MULTI, SPACE_ADD, false, TextUtils.TruncateAt.START, halfWidth, 1);
+ assertTrue(layout.getEllipsisCount(0) > 0);
+ assertEquals(0, mDefaultLayout.getEllipsisStart(0));
+ }
+ {
+ StaticLayout layout = new StaticLayout(text, 0, text.length(), mDefaultPaint,
+ halfWidth, DEFAULT_ALIGN, TextDirectionHeuristics.FIRSTSTRONG_LTR,
+ SPACE_MULTI, SPACE_ADD, false, TextUtils.TruncateAt.MIDDLE, halfWidth, 1);
+ assertTrue(layout.getEllipsisCount(0) > 0);
+ assertTrue(layout.getEllipsisStart(0) > 0);
+ }
+ {
+ StaticLayout layout = new StaticLayout(text, 0, text.length(), mDefaultPaint,
+ halfWidth, DEFAULT_ALIGN, TextDirectionHeuristics.FIRSTSTRONG_LTR,
+ SPACE_MULTI, SPACE_ADD, false, TextUtils.TruncateAt.MARQUEE, halfWidth, 1);
+ assertEquals(0, layout.getEllipsisCount(0));
+ }
+ }
+
/**
* scenario description:
* 1. set the text.
diff --git a/tests/tests/transition/res/layout/scene1.xml b/tests/tests/transition/res/layout/scene1.xml
index 4ed5b03..140bb8d 100644
--- a/tests/tests/transition/res/layout/scene1.xml
+++ b/tests/tests/transition/res/layout/scene1.xml
@@ -16,14 +16,23 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#F00"
+ android:transitionName="red"
android:id="@+id/redSquare" />
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#0F0"
+ android:transitionName="green"
android:id="@+id/greenSquare"
android:layout_below="@+id/redSquare" />
+ <TextView android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:transitionName="hello"
+ android:text="@string/hello"
+ android:id="@+id/hello"/>
</RelativeLayout>
diff --git a/tests/tests/transition/res/layout/scene2.xml b/tests/tests/transition/res/layout/scene2.xml
index 2033c95..541ec04 100644
--- a/tests/tests/transition/res/layout/scene2.xml
+++ b/tests/tests/transition/res/layout/scene2.xml
@@ -16,14 +16,22 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#0F0"
+ android:transitionName="green"
android:id="@+id/greenSquare" />
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#F00"
+ android:transitionName="red"
android:id="@+id/redSquare"
android:layout_below="@+id/greenSquare" />
+ <TextView android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/world"
+ android:id="@+id/world"/>
</RelativeLayout>
diff --git a/tests/tests/transition/res/layout/scene3.xml b/tests/tests/transition/res/layout/scene3.xml
index b0625aa..01fb78d 100644
--- a/tests/tests/transition/res/layout/scene3.xml
+++ b/tests/tests/transition/res/layout/scene3.xml
@@ -16,7 +16,8 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:id="@+id/holder">
<View android:layout_width="10dp"
android:layout_height="10dp"
android:background="#0F0"
diff --git a/tests/tests/transition/res/layout/scene4.xml b/tests/tests/transition/res/layout/scene4.xml
new file mode 100644
index 0000000..1f1b7d6
--- /dev/null
+++ b/tests/tests/transition/res/layout/scene4.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder"/>
diff --git a/tests/tests/transition/res/layout/scene5.xml b/tests/tests/transition/res/layout/scene5.xml
new file mode 100644
index 0000000..f7385f8
--- /dev/null
+++ b/tests/tests/transition/res/layout/scene5.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:transitionName="holder"
+ android:id="@+id/holder">
+ <TextView
+ android:id="@+id/text"
+ android:text="@string/longText"
+ android:layout_width="100dp"
+ android:layout_height="100dp"/>
+</RelativeLayout>
diff --git a/tests/tests/transition/res/values/strings.xml b/tests/tests/transition/res/values/strings.xml
index 579da74..43b92a5 100644
--- a/tests/tests/transition/res/values/strings.xml
+++ b/tests/tests/transition/res/values/strings.xml
@@ -15,4 +15,7 @@
-->
<resources>
<string name="add_button">Add Button</string>
+ <string name="hello">Hello</string>
+ <string name="world">World</string>
+ <string name="longText">Gummi bears sugar plum pudding. Carrot cake chupa chups lollipop brownie candy canes carrot cake. Chocolate cake dragée chocolate danish halvah brownie. Cake jelly-o danish jelly beans carrot cake toffee jelly-o. Danish sesame snaps soufflé chocolate cupcake jujubes pudding pudding candy canes. Sesame snaps sweet chupa chups marzipan tart. Dessert brownie marzipan powder. Biscuit sugar plum soufflé topping cheesecake. Jelly-o ice cream candy canes tart. Brownie ice cream cake. Chocolate bar cake tart powder. Cookie candy canes marzipan donut jelly beans cheesecake marzipan. Carrot cake dragée cupcake liquorice tiramisu chocolate cake powder macaroon. Liquorice sugar plum powder dessert jelly.</string>
</resources>
diff --git a/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java b/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
index 4bbfc2c..df1ba19 100644
--- a/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
+++ b/tests/tests/transition/src/android/transition/cts/BaseTransitionTest.java
@@ -15,19 +15,23 @@
*/
package android.transition.cts;
+import com.android.cts.transition.R;
+
import android.animation.Animator;
import android.animation.ObjectAnimator;
+import android.os.SystemClock;
import android.test.ActivityInstrumentationTestCase2;
import android.transition.Scene;
import android.transition.TransitionManager;
import android.transition.TransitionValues;
import android.transition.Visibility;
+import android.view.Choreographer;
+import android.view.Choreographer.FrameCallback;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import java.util.ArrayList;
-import com.android.cts.transition.R;
public class BaseTransitionTest extends ActivityInstrumentationTestCase2<TransitionActivity> {
protected TransitionActivity mActivity;
@@ -55,10 +59,10 @@
}
protected static void waitForStart(SimpleTransitionListener listener) throws InterruptedException {
- long endTime = System.currentTimeMillis() + 50;
+ long endTime = SystemClock.uptimeMillis() + 50;
synchronized (listener) {
while (!listener.started) {
- long now = System.currentTimeMillis();
+ long now = SystemClock.uptimeMillis();
long waitTime = endTime - now;
if (waitTime <= 0) {
throw new InterruptedException();
@@ -74,10 +78,10 @@
protected static void waitForEnd(SimpleTransitionListener listener, long waitMillis)
throws InterruptedException {
- long endTime = System.currentTimeMillis() + waitMillis;
+ long endTime = SystemClock.uptimeMillis() + waitMillis;
synchronized (listener) {
while (!listener.ended) {
- long now = System.currentTimeMillis();
+ long now = SystemClock.uptimeMillis();
long waitTime = endTime - now;
if (waitTime <= 0) {
throw new InterruptedException();
@@ -107,6 +111,47 @@
});
}
+ protected void enterScene(final int layoutId) throws Throwable {
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Scene scene = Scene.getSceneForLayout(mSceneRoot, layoutId, mActivity);
+ scene.enter();
+ }
+ });
+ getInstrumentation().waitForIdleSync();
+ }
+
+ // Waits at least one frame and it could be more. The animated values should have changed
+ // from the previously recorded values by the end of this method.
+ protected void waitForAnimationFrame() throws Throwable {
+ final boolean[] tripped = new boolean[] { false };
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Choreographer.getInstance().postFrameCallbackDelayed(new FrameCallback() {
+ @Override
+ public void doFrame(long frameTimeNanos) {
+ synchronized (tripped) {
+ tripped[0] = true;
+ tripped.notifyAll();
+ }
+ }
+ }, 16); // make sure it is the next animation frame.
+ }
+ });
+ synchronized (tripped) {
+ long endTime = SystemClock.uptimeMillis() + 60;
+ while (!tripped[0]) {
+ long waitTime = endTime - SystemClock.uptimeMillis();
+ if (waitTime <= 0) {
+ throw new InterruptedException();
+ }
+ tripped.wait(waitTime);
+ }
+ }
+ }
+
public class TestTransition extends Visibility {
public final SimpleTransitionListener listener = new SimpleTransitionListener();
@@ -118,14 +163,14 @@
@Override
public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues,
TransitionValues endValues) {
- mTargets.add(view);
+ mTargets.add(endValues.view);
return ObjectAnimator.ofFloat(BaseTransitionTest.this, "mAnimatedValue", 0, 1);
}
@Override
public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues,
TransitionValues endValues) {
- mTargets.add(view);
+ mTargets.add(startValues.view);
return ObjectAnimator.ofFloat(BaseTransitionTest.this, "mAnimatedValue", 1, 0);
}
}
diff --git a/tests/tests/transition/src/android/transition/cts/ChangeScrollTest.java b/tests/tests/transition/src/android/transition/cts/ChangeScrollTest.java
new file mode 100644
index 0000000..f5f076d
--- /dev/null
+++ b/tests/tests/transition/src/android/transition/cts/ChangeScrollTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.transition.cts;
+
+import com.android.cts.transition.R;
+
+import android.transition.ChangeScroll;
+import android.transition.Transition;
+import android.transition.TransitionManager;
+import android.view.View;
+
+public class ChangeScrollTest extends BaseTransitionTest {
+
+ public ChangeScrollTest() {
+ }
+
+ public void testChangeScroll() throws Throwable {
+ enterScene(R.layout.scene5);
+ final Transition transition = new ChangeScroll();
+ transition.setDuration(100);
+ SimpleTransitionListener listener = new SimpleTransitionListener();
+ transition.addListener(listener);
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ final View view = mActivity.findViewById(R.id.text);
+ final int scrollX = view.getScrollX();
+ final int scrollY = view.getScrollY();
+ assertEquals(0, scrollX);
+ assertEquals(0, scrollY);
+ TransitionManager.beginDelayedTransition(mSceneRoot, transition);
+ view.scrollTo(150, 300);
+ }
+ });
+ waitForStart(listener);
+ waitForAnimationFrame();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ final View view = mActivity.findViewById(R.id.text);
+ final int scrollX = view.getScrollX();
+ final int scrollY = view.getScrollY();
+ assertTrue(scrollX > 0);
+ assertTrue(scrollX < 150);
+ assertTrue(scrollY > 0);
+ assertTrue(scrollY < 300);
+ }
+ });
+ waitForEnd(listener, 100);
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ final View view = mActivity.findViewById(R.id.text);
+ final int scrollX = view.getScrollX();
+ final int scrollY = view.getScrollY();
+ assertEquals(150, scrollX);
+ assertEquals(300, scrollY);
+ }
+ });
+ }
+}
+
diff --git a/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java b/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java
index 4d18bbf..113f5a5 100644
--- a/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java
+++ b/tests/tests/transition/src/android/transition/cts/SimpleTransitionListener.java
@@ -22,6 +22,7 @@
* Listener captures whether each of the methods is called.
*/
class SimpleTransitionListener implements TransitionListener {
+ public Transition transition;
public boolean started;
@@ -36,6 +37,7 @@
@Override
public synchronized void onTransitionStart(Transition transition) {
started = true;
+ this.transition = transition;
notifyAll();
}
diff --git a/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java b/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java
index 5d16b19..78db908 100644
--- a/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java
+++ b/tests/tests/transition/src/android/transition/cts/TransitionManagerTest.java
@@ -20,7 +20,6 @@
import android.transition.Scene;
import android.transition.TransitionManager;
import android.view.View;
-import android.widget.FrameLayout;
public class TransitionManagerTest extends BaseTransitionTest {
@@ -43,6 +42,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -60,6 +62,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -86,7 +91,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
-
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
@@ -132,7 +139,9 @@
assertFalse(mTransition.listener.resumed);
assertFalse(mTransition.listener.paused);
assertFalse(mTransition.listener.canceled);
-
+ assertNotNull(mTransition.listener.transition);
+ assertEquals(TestTransition.class, mTransition.listener.transition.getClass());
+ assertTrue(mTransition != mTransition.listener.transition);
runTestOnUiThread(new Runnable() {
@Override
public void run() {
diff --git a/tests/tests/transition/src/android/transition/cts/TransitionTest.java b/tests/tests/transition/src/android/transition/cts/TransitionTest.java
index 6ecf8a4..8a9f3a3 100644
--- a/tests/tests/transition/src/android/transition/cts/TransitionTest.java
+++ b/tests/tests/transition/src/android/transition/cts/TransitionTest.java
@@ -17,9 +17,16 @@
import com.android.cts.transition.R;
+import android.animation.ObjectAnimator;
import android.transition.AutoTransition;
import android.transition.Scene;
import android.transition.TransitionManager;
+import android.transition.TransitionValues;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
public class TransitionTest extends BaseTransitionTest {
@@ -28,11 +35,9 @@
public void testAddListener() throws Throwable {
startTransition(R.layout.scene1);
-
waitForStart();
final SimpleTransitionListener listener2 = new SimpleTransitionListener();
- mTransition.addListener(listener2);
runTestOnUiThread(new Runnable() {
@Override
@@ -50,13 +55,13 @@
assertTrue(mTransition.listener.paused);
assertTrue(mTransition.listener.resumed);
assertFalse(mTransition.listener.canceled);
- assertTrue(mTransition.listener.ended);
+ assertFalse(mTransition.listener.ended);
assertTrue(mTransition.listener.started);
- assertTrue(listener2.paused);
- assertTrue(listener2.resumed);
+ assertFalse(listener2.paused);
+ assertFalse(listener2.resumed);
assertFalse(listener2.canceled);
- assertTrue(listener2.ended);
+ assertFalse(listener2.ended);
assertTrue(listener2.started);
endTransition();
}
@@ -75,5 +80,167 @@
Thread.sleep(150);
assertFalse(mTransition.listener.ended);
}
+
+ public void testAddTargetId() throws Throwable {
+ enterScene(R.layout.scene4);
+ mTransition.addTarget(R.id.holder);
+ mTransition.addTarget(R.id.hello);
+ assertEquals(2, mTransition.getTargetIds().size());
+ startTransition(R.layout.scene1);
+ assertEquals(1, mTargets.size());
+ assertEquals(R.id.hello, mTargets.get(0).getId());
+ endTransition();
+ }
+
+ public void testRemoveTargetId() throws Throwable {
+ enterScene(R.layout.scene4);
+ mTransition.addTarget(R.id.holder);
+ mTransition.addTarget(R.id.hello);
+ mTransition.addTarget(R.id.redSquare);
+ assertEquals(3, mTransition.getTargetIds().size());
+ mTransition.removeTarget(0); // nothing should happen
+ mTransition.removeTarget(R.id.redSquare);
+ assertEquals(2, mTransition.getTargetIds().size());
+
+ startTransition(R.layout.scene1);
+ assertEquals(1, mTargets.size());
+ assertEquals(R.id.hello, mTargets.get(0).getId());
+ endTransition();
+ }
+
+ public void testAddTargetClass() throws Throwable {
+ enterScene(R.layout.scene4);
+ mTransition.addTarget(RelativeLayout.class);
+ mTransition.addTarget(TextView.class);
+ assertEquals(2, mTransition.getTargetTypes().size());
+ startTransition(R.layout.scene1);
+ assertEquals(1, mTargets.size());
+ assertTrue(mTargets.get(0) instanceof TextView);
+ endTransition();
+ }
+
+ public void testRemoveTargetClass() throws Throwable {
+ enterScene(R.layout.scene4);
+ mTransition.addTarget(TextView.class);
+ mTransition.addTarget(View.class);
+ mTransition.addTarget(RelativeLayout.class);
+ assertEquals(3, mTransition.getTargetTypes().size());
+ mTransition.removeTarget(ImageView.class); // should do nothing
+ mTransition.removeTarget(View.class);
+ assertEquals(2, mTransition.getTargetTypes().size());
+ startTransition(R.layout.scene1);
+ assertEquals(1, mTargets.size());
+ assertTrue(mTargets.get(0) instanceof TextView);
+ endTransition();
+ }
+
+ public void testAddTargetView() throws Throwable {
+ enterScene(R.layout.scene1);
+
+ final View[] target = new View[1];
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ target[0] = mActivity.findViewById(R.id.hello);
+ }
+ });
+ mTransition.addTarget(target[0]);
+ assertEquals(1, mTransition.getTargets().size());
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ TransitionManager.beginDelayedTransition(mSceneRoot, mTransition);
+ target[0].setVisibility(View.GONE);
+ }
+ });
+ waitForStart();
+ assertEquals(1, mTargets.size());
+ assertEquals(target[0], mTargets.get(0));
+ endTransition();
+ }
+
+ public void testRemoveTargetView() throws Throwable {
+ enterScene(R.layout.scene1);
+
+ final View[] target = new View[3];
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ target[0] = mActivity.findViewById(R.id.hello);
+ target[1] = mActivity.findViewById(R.id.greenSquare);
+ target[2] = mActivity.findViewById(R.id.redSquare);
+ }
+ });
+
+ mTransition.addTarget(target[0]);
+ mTransition.addTarget(target[1]);
+ assertEquals(2, mTransition.getTargets().size());
+ mTransition.removeTarget(target[2]); // should do nothing
+ mTransition.removeTarget(target[1]);
+ assertEquals(1, mTransition.getTargets().size());
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ TransitionManager.beginDelayedTransition(mSceneRoot, mTransition);
+ target[0].setVisibility(View.GONE);
+ }
+ });
+ waitForStart();
+ assertEquals(1, mTargets.size());
+ assertEquals(target[0], mTargets.get(0));
+ endTransition();
+ }
+
+ public void testAddTargetName() throws Throwable {
+ enterScene(R.layout.scene4);
+ mTransition.addTarget("red");
+ mTransition.addTarget("holder");
+ assertEquals(2, mTransition.getTargetNames().size());
+ assertEquals(0, mTargets.size());
+ startTransition(R.layout.scene2);
+ assertEquals(1, mTargets.size());
+ assertEquals(R.id.redSquare, mTargets.get(0).getId());
+ endTransition();
+ }
+
+ public void testRemoveTargetName() throws Throwable {
+ enterScene(R.layout.scene4);
+ mTransition.addTarget("holder");
+ mTransition.addTarget("red");
+ mTransition.addTarget("green");
+ assertEquals(3, mTransition.getTargetNames().size());
+ mTransition.removeTarget("purple"); // should do nothing
+ // try to force a different String instance
+ String greenName = new StringBuilder("gre").append("en").toString();
+ mTransition.removeTarget(greenName);
+ assertEquals(2, mTransition.getTargetNames().size());
+ startTransition(R.layout.scene1);
+ assertEquals(1, mTargets.size());
+ assertEquals(R.id.redSquare, mTargets.get(0).getId());
+ endTransition();
+ }
+
+ public void testIsTransitionRequired() throws Throwable {
+ enterScene(R.layout.scene1);
+ mTransition = new NotRequiredTransition();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ TransitionManager.beginDelayedTransition(mSceneRoot, mTransition);
+ mActivity.findViewById(R.id.hello).setVisibility(View.GONE);
+ }
+ });
+ waitForStart();
+ assertEquals(0, mTargets.size());
+ endTransition();
+ }
+
+ private class NotRequiredTransition extends TestTransition {
+ @Override
+ public boolean isTransitionRequired(TransitionValues startValues,
+ TransitionValues newValues) {
+ return false;
+ }
+ }
}
diff --git a/tests/tests/tv/AndroidManifest.xml b/tests/tests/tv/AndroidManifest.xml
index 79406e0..41ec835 100644
--- a/tests/tests/tv/AndroidManifest.xml
+++ b/tests/tests/tv/AndroidManifest.xml
@@ -22,9 +22,6 @@
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.INJECT_EVENTS" />
- <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
- <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
-
<application>
<uses-library android:name="android.test.runner" />
diff --git a/tests/tests/util/src/android/util/cts/EventLogTest.java b/tests/tests/util/src/android/util/cts/EventLogTest.java
index e163428..2d856c4 100644
--- a/tests/tests/util/src/android/util/cts/EventLogTest.java
+++ b/tests/tests/util/src/android/util/cts/EventLogTest.java
@@ -73,8 +73,6 @@
EventLog.writeEvent(ANSWER_TAG, 42.4242f, longString.toString());
EventLog.writeEvent(ANSWER_TAG, longString.toString(), longString.toString());
EventLog.writeEvent(ANSWER_TAG, longArray);
- // Give the message some time to show up in the log
- Thread.sleep(10);
List<Event> events = getEventsAfterMarker(markerData, ANSWER_TAG);
assertEquals(7, events.size());
@@ -166,8 +164,11 @@
}
/** Return elements after and the event that has the marker data and matching tag. */
- private List<Event> getEventsAfterMarker(Object marker, int... tags) throws IOException {
+ private List<Event> getEventsAfterMarker(Object marker, int... tags)
+ throws IOException, InterruptedException {
List<Event> events = new ArrayList<Event>();
+ // Give the message some time to show up in the log
+ Thread.sleep(20);
EventLog.readEvents(tags, events);
for (Iterator<Event> itr = events.iterator(); itr.hasNext(); ) {
diff --git a/tests/tests/view/src/android/view/cts/LayoutInflaterTest.java b/tests/tests/view/src/android/view/cts/LayoutInflaterTest.java
index 59eefec..00b9fe9 100644
--- a/tests/tests/view/src/android/view/cts/LayoutInflaterTest.java
+++ b/tests/tests/view/src/android/view/cts/LayoutInflaterTest.java
@@ -17,7 +17,7 @@
package android.view.cts;
import com.android.cts.view.R;
-import com.android.internal.util.XmlUtils;
+import android.view.cts.util.XmlUtils;
import org.xmlpull.v1.XmlPullParser;
@@ -29,7 +29,6 @@
import android.content.res.Resources.Theme;
import android.content.res.XmlResourceParser;
import android.test.AndroidTestCase;
-import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.util.Xml;
diff --git a/tests/tests/view/src/android/view/cts/MenuInflaterTest.java b/tests/tests/view/src/android/view/cts/MenuInflaterTest.java
index 6007730..7e3517f 100644
--- a/tests/tests/view/src/android/view/cts/MenuInflaterTest.java
+++ b/tests/tests/view/src/android/view/cts/MenuInflaterTest.java
@@ -17,10 +17,8 @@
package android.view.cts;
import com.android.cts.view.R;
-import com.android.internal.view.menu.MenuBuilder;
import android.app.Activity;
-import android.content.Context;
import android.content.res.Resources;
import android.cts.util.WidgetTestUtils;
import android.graphics.Bitmap;
@@ -31,6 +29,7 @@
import android.view.Menu;
import android.view.MenuInflater;
import android.view.SubMenu;
+import android.widget.PopupMenu;
/**
* Test {@link MenuInflater}.
@@ -50,6 +49,10 @@
mActivity = getActivity();
}
+ private Menu createMenu(Activity context) {
+ return new PopupMenu(context, null).getMenu();
+ }
+
@UiThreadTest
public void testConstructor() {
new MenuInflater(mActivity);
@@ -57,7 +60,7 @@
@UiThreadTest
public void testInflate() {
- Menu menu = new MenuBuilder(mActivity);
+ Menu menu = createMenu(mActivity);
assertEquals(0, menu.size());
if (mMenuInflater == null) {
@@ -89,7 +92,7 @@
}
// the visibility and shortcut
- Menu menu = new MenuBuilder(mActivity);
+ Menu menu = createMenu(mActivity);
mMenuInflater.inflate(R.menu.visible_shortcut, menu);
assertTrue(menu.findItem(R.id.visible_item).isVisible());
@@ -103,7 +106,7 @@
assertEquals('c', menu.findItem(R.id.hidden_by_group).getAlphabeticShortcut());
// the titles and icons
- menu = new MenuBuilder(mActivity);
+ menu = createMenu(mActivity);
mMenuInflater.inflate(com.android.cts.view.R.menu.title_icon, menu);
assertEquals("Start", menu.findItem(R.id.start).getTitle());
@@ -119,7 +122,7 @@
R.drawable.failed);
// the orders and categories
- menu = new MenuBuilder(mActivity);
+ menu = createMenu(mActivity);
mMenuInflater.inflate(com.android.cts.view.R.menu.category_order, menu);
// default category
assertEquals(R.id.most_used_items, menu.findItem(R.id.first_most_item).getGroupId());
@@ -143,7 +146,7 @@
assertEquals(Menu.CATEGORY_SECONDARY + 4, menu.findItem(R.id.last_least_item).getOrder());
// the checkables
- menu = new MenuBuilder(mActivity);
+ menu = createMenu(mActivity);
mMenuInflater.inflate(com.android.cts.view.R.menu.checkable, menu);
// noncheckables
assertEquals(R.id.noncheckable_group,
diff --git a/tests/tests/view/src/android/view/cts/ViewGroupTest.java b/tests/tests/view/src/android/view/cts/ViewGroupTest.java
index 2b14bf9..b98ac4e 100644
--- a/tests/tests/view/src/android/view/cts/ViewGroupTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewGroupTest.java
@@ -16,7 +16,7 @@
package android.view.cts;
-import com.android.internal.util.XmlUtils;
+import android.view.cts.util.XmlUtils;
import android.content.Context;
diff --git a/tests/tests/view/src/android/view/cts/ViewGroup_LayoutParamsTest.java b/tests/tests/view/src/android/view/cts/ViewGroup_LayoutParamsTest.java
index ded715a..5dadffd 100644
--- a/tests/tests/view/src/android/view/cts/ViewGroup_LayoutParamsTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewGroup_LayoutParamsTest.java
@@ -16,7 +16,7 @@
package android.view.cts;
-import java.io.IOException;
+import com.android.cts.view.R;
import org.xmlpull.v1.XmlPullParserException;
@@ -27,10 +27,9 @@
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
+import android.view.cts.util.XmlUtils;
-import com.android.cts.view.R;
-import com.android.internal.util.XmlUtils;
-
+import java.io.IOException;
public class ViewGroup_LayoutParamsTest extends AndroidTestCase {
private ViewGroup.LayoutParams mLayoutParams;
diff --git a/tests/tests/view/src/android/view/cts/ViewGroup_MarginLayoutParamsTest.java b/tests/tests/view/src/android/view/cts/ViewGroup_MarginLayoutParamsTest.java
index d3fed0d..e837b23 100644
--- a/tests/tests/view/src/android/view/cts/ViewGroup_MarginLayoutParamsTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewGroup_MarginLayoutParamsTest.java
@@ -16,17 +16,16 @@
package android.view.cts;
+import com.android.cts.view.R;
+
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.test.InstrumentationTestCase;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
-
+import android.view.cts.util.XmlUtils;
import android.widget.LinearLayout;
-import com.android.internal.util.XmlUtils;
-import com.android.cts.view.R;
-
public class ViewGroup_MarginLayoutParamsTest extends InstrumentationTestCase {
diff --git a/tests/tests/view/src/android/view/cts/ViewStubTest.java b/tests/tests/view/src/android/view/cts/ViewStubTest.java
index cbe498f..c9cd44b 100644
--- a/tests/tests/view/src/android/view/cts/ViewStubTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewStubTest.java
@@ -18,8 +18,6 @@
import com.android.cts.view.R;
-import dalvik.annotation.KnownFailure;
-
import org.xmlpull.v1.XmlPullParser;
import android.app.Activity;
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index fe3bd60..ea289ce 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -1243,7 +1243,7 @@
assertFalse(view.fitSystemWindows(insets));
assertFalse(view.fitSystemWindows(null));
- view = new MockView(mActivity, attrs, com.android.internal.R.attr.fitsSystemWindows);
+ view = new MockView(mActivity, attrs, android.R.attr.fitsSystemWindows);
assertFalse(view.fitSystemWindows(insets));
assertFalse(view.fitSystemWindows(null));
}
diff --git a/tests/tests/view/src/android/view/cts/util/XmlUtils.java b/tests/tests/view/src/android/view/cts/util/XmlUtils.java
new file mode 100644
index 0000000..4a13d54
--- /dev/null
+++ b/tests/tests/view/src/android/view/cts/util/XmlUtils.java
@@ -0,0 +1,1694 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view.cts.util;
+
+import com.android.internal.util.FastXmlSerializer;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.util.ArrayMap;
+import android.util.Base64;
+import android.util.Xml;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ProtocolException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** {@hide} */
+public class XmlUtils {
+
+ public static void skipCurrentTag(XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ int outerDepth = parser.getDepth();
+ int type;
+ while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
+ && (type != XmlPullParser.END_TAG
+ || parser.getDepth() > outerDepth)) {
+ }
+ }
+
+ public static final int
+ convertValueToList(CharSequence value, String[] options, int defaultValue)
+ {
+ if (null != value) {
+ for (int i = 0; i < options.length; i++) {
+ if (value.equals(options[i]))
+ return i;
+ }
+ }
+
+ return defaultValue;
+ }
+
+ public static final boolean
+ convertValueToBoolean(CharSequence value, boolean defaultValue)
+ {
+ boolean result = false;
+
+ if (null == value)
+ return defaultValue;
+
+ if (value.equals("1")
+ || value.equals("true")
+ || value.equals("TRUE"))
+ result = true;
+
+ return result;
+ }
+
+ public static final int
+ convertValueToInt(CharSequence charSeq, int defaultValue)
+ {
+ if (null == charSeq)
+ return defaultValue;
+
+ String nm = charSeq.toString();
+
+ // XXX This code is copied from Integer.decode() so we don't
+ // have to instantiate an Integer!
+
+ int value;
+ int sign = 1;
+ int index = 0;
+ int len = nm.length();
+ int base = 10;
+
+ if ('-' == nm.charAt(0)) {
+ sign = -1;
+ index++;
+ }
+
+ if ('0' == nm.charAt(index)) {
+ // Quick check for a zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = nm.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) {
+ index += 2;
+ base = 16;
+ } else {
+ index++;
+ base = 8;
+ }
+ }
+ else if ('#' == nm.charAt(index))
+ {
+ index++;
+ base = 16;
+ }
+
+ return Integer.parseInt(nm.substring(index), base) * sign;
+ }
+
+ public static int convertValueToUnsignedInt(String value, int defaultValue) {
+ if (null == value) {
+ return defaultValue;
+ }
+
+ return parseUnsignedIntAttribute(value);
+ }
+
+ public static int parseUnsignedIntAttribute(CharSequence charSeq) {
+ String value = charSeq.toString();
+
+ long bits;
+ int index = 0;
+ int len = value.length();
+ int base = 10;
+
+ if ('0' == value.charAt(index)) {
+ // Quick check for zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = value.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) { // check for hex
+ index += 2;
+ base = 16;
+ } else { // check for octal
+ index++;
+ base = 8;
+ }
+ } else if ('#' == value.charAt(index)) {
+ index++;
+ base = 16;
+ }
+
+ return (int) Long.parseLong(value.substring(index), base);
+ }
+
+ /**
+ * Flatten a Map into an output stream as XML. The map can later be
+ * read back with readMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param out Where to write the XML data.
+ *
+ * @see #writeMapXml(Map, String, XmlSerializer)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ */
+ public static final void writeMapXml(Map val, OutputStream out)
+ throws XmlPullParserException, IOException {
+ XmlSerializer serializer = new FastXmlSerializer();
+ serializer.setOutput(out, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+ writeMapXml(val, null, serializer);
+ serializer.endDocument();
+ }
+
+ /**
+ * Flatten a List into an output stream as XML. The list can later be
+ * read back with readListXml().
+ *
+ * @param val The list to be flattened.
+ * @param out Where to write the XML data.
+ *
+ * @see #writeListXml(List, String, XmlSerializer)
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readListXml
+ */
+ public static final void writeListXml(List val, OutputStream out)
+ throws XmlPullParserException, IOException
+ {
+ XmlSerializer serializer = Xml.newSerializer();
+ serializer.setOutput(out, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+ writeListXml(val, null, serializer);
+ serializer.endDocument();
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the map into.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ */
+ public static final void writeMapXml(Map val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ writeMapXml(val, name, out, null);
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the map into.
+ * @param callback Method to call when an Object type is not recognized.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ *
+ * @hide
+ */
+ public static final void writeMapXml(Map val, String name, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "map");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ writeMapXml(val, out, callback);
+
+ out.endTag(null, "map");
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml(). This method presumes that the start tag and
+ * name attribute have already been written and does not write an end tag.
+ *
+ * @param val The map to be flattened.
+ * @param out XmlSerializer to write the map into.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ *
+ * @hide
+ */
+ public static final void writeMapXml(Map val, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+ if (val == null) {
+ return;
+ }
+
+ Set s = val.entrySet();
+ Iterator i = s.iterator();
+
+ while (i.hasNext()) {
+ Map.Entry e = (Map.Entry)i.next();
+ writeValueXml(e.getValue(), (String)e.getKey(), out, callback);
+ }
+ }
+
+ /**
+ * Flatten a List into an XmlSerializer. The list can later be read back
+ * with readThisListXml().
+ *
+ * @param val The list to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the list into.
+ *
+ * @see #writeListXml(List, OutputStream)
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readListXml
+ */
+ public static final void writeListXml(List val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException
+ {
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "list");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ int N = val.size();
+ int i=0;
+ while (i < N) {
+ writeValueXml(val.get(i), null, out);
+ i++;
+ }
+
+ out.endTag(null, "list");
+ }
+
+ public static final void writeSetXml(Set val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "set");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ for (Object v : val) {
+ writeValueXml(v, null, out);
+ }
+
+ out.endTag(null, "set");
+ }
+
+ /**
+ * Flatten a byte[] into an XmlSerializer. The list can later be read back
+ * with readThisByteArrayXml().
+ *
+ * @param val The byte array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ */
+ public static final void writeByteArrayXml(byte[] val, String name,
+ XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "byte-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ StringBuilder sb = new StringBuilder(val.length*2);
+ for (int i=0; i<N; i++) {
+ int b = val[i];
+ int h = b>>4;
+ sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+ h = b&0xff;
+ sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+ }
+
+ out.text(sb.toString());
+
+ out.endTag(null, "byte-array");
+ }
+
+ /**
+ * Flatten an int[] into an XmlSerializer. The list can later be read back
+ * with readThisIntArrayXml().
+ *
+ * @param val The int array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeIntArrayXml(int[] val, String name,
+ XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "int-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Integer.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "int-array");
+ }
+
+ /**
+ * Flatten a long[] into an XmlSerializer. The list can later be read back
+ * with readThisLongArrayXml().
+ *
+ * @param val The long array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeLongArrayXml(long[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "long-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Long.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "long-array");
+ }
+
+ /**
+ * Flatten a double[] into an XmlSerializer. The list can later be read back
+ * with readThisDoubleArrayXml().
+ *
+ * @param val The double array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeDoubleArrayXml(double[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "double-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Double.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "double-array");
+ }
+
+ /**
+ * Flatten a String[] into an XmlSerializer. The list can later be read back
+ * with readThisStringArrayXml().
+ *
+ * @param val The String array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeStringArrayXml(String[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "string-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", val[i]);
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "string-array");
+ }
+
+ /**
+ * Flatten a boolean[] into an XmlSerializer. The list can later be read back
+ * with readThisBooleanArrayXml().
+ *
+ * @param val The boolean array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeBooleanArrayXml(boolean[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "boolean-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Boolean.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "boolean-array");
+ }
+
+ /**
+ * Flatten an object's value into an XmlSerializer. The value can later
+ * be read back with readThisValueXml().
+ *
+ * Currently supported value types are: null, String, Integer, Long,
+ * Float, Double Boolean, Map, List.
+ *
+ * @param v The object to be flattened.
+ * @param name Name attribute to include with this value's tag, or null
+ * for none.
+ * @param out XmlSerializer to write the object into.
+ *
+ * @see #writeMapXml
+ * @see #writeListXml
+ * @see #readValueXml
+ */
+ public static final void writeValueXml(Object v, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ writeValueXml(v, name, out, null);
+ }
+
+ /**
+ * Flatten an object's value into an XmlSerializer. The value can later
+ * be read back with readThisValueXml().
+ *
+ * Currently supported value types are: null, String, Integer, Long,
+ * Float, Double Boolean, Map, List.
+ *
+ * @param v The object to be flattened.
+ * @param name Name attribute to include with this value's tag, or null
+ * for none.
+ * @param out XmlSerializer to write the object into.
+ * @param callback Handler for Object types not recognized.
+ *
+ * @see #writeMapXml
+ * @see #writeListXml
+ * @see #readValueXml
+ */
+ private static final void writeValueXml(Object v, String name, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+ String typeStr;
+ if (v == null) {
+ out.startTag(null, "null");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.endTag(null, "null");
+ return;
+ } else if (v instanceof String) {
+ out.startTag(null, "string");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.text(v.toString());
+ out.endTag(null, "string");
+ return;
+ } else if (v instanceof Integer) {
+ typeStr = "int";
+ } else if (v instanceof Long) {
+ typeStr = "long";
+ } else if (v instanceof Float) {
+ typeStr = "float";
+ } else if (v instanceof Double) {
+ typeStr = "double";
+ } else if (v instanceof Boolean) {
+ typeStr = "boolean";
+ } else if (v instanceof byte[]) {
+ writeByteArrayXml((byte[])v, name, out);
+ return;
+ } else if (v instanceof int[]) {
+ writeIntArrayXml((int[])v, name, out);
+ return;
+ } else if (v instanceof long[]) {
+ writeLongArrayXml((long[])v, name, out);
+ return;
+ } else if (v instanceof double[]) {
+ writeDoubleArrayXml((double[])v, name, out);
+ return;
+ } else if (v instanceof String[]) {
+ writeStringArrayXml((String[])v, name, out);
+ return;
+ } else if (v instanceof boolean[]) {
+ writeBooleanArrayXml((boolean[])v, name, out);
+ return;
+ } else if (v instanceof Map) {
+ writeMapXml((Map)v, name, out);
+ return;
+ } else if (v instanceof List) {
+ writeListXml((List) v, name, out);
+ return;
+ } else if (v instanceof Set) {
+ writeSetXml((Set) v, name, out);
+ return;
+ } else if (v instanceof CharSequence) {
+ // XXX This is to allow us to at least write something if
+ // we encounter styled text... but it means we will drop all
+ // of the styling information. :(
+ out.startTag(null, "string");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.text(v.toString());
+ out.endTag(null, "string");
+ return;
+ } else if (callback != null) {
+ callback.writeUnknownObject(v, name, out);
+ return;
+ } else {
+ throw new RuntimeException("writeValueXml: unable to write value " + v);
+ }
+
+ out.startTag(null, typeStr);
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.attribute(null, "value", v.toString());
+ out.endTag(null, typeStr);
+ }
+
+ /**
+ * Read a HashMap from an InputStream containing XML. The stream can
+ * previously have been written by writeMapXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return HashMap The resulting map.
+ *
+ * @see #readListXml
+ * @see #readValueXml
+ * @see #readThisMapXml
+ * #see #writeMapXml
+ */
+ @SuppressWarnings("unchecked")
+ public static final HashMap<String, ?> readMapXml(InputStream in)
+ throws XmlPullParserException, IOException
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, StandardCharsets.UTF_8.name());
+ return (HashMap<String, ?>) readValueXml(parser, new String[1]);
+ }
+
+ /**
+ * Read an ArrayList from an InputStream containing XML. The stream can
+ * previously have been written by writeListXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return ArrayList The resulting list.
+ *
+ * @see #readMapXml
+ * @see #readValueXml
+ * @see #readThisListXml
+ * @see #writeListXml
+ */
+ public static final ArrayList readListXml(InputStream in)
+ throws XmlPullParserException, IOException
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, StandardCharsets.UTF_8.name());
+ return (ArrayList)readValueXml(parser, new String[1]);
+ }
+
+
+ /**
+ * Read a HashSet from an InputStream containing XML. The stream can
+ * previously have been written by writeSetXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return HashSet The resulting set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readValueXml
+ * @see #readThisSetXml
+ * @see #writeSetXml
+ */
+ public static final HashSet readSetXml(InputStream in)
+ throws XmlPullParserException, IOException {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, null);
+ return (HashSet) readValueXml(parser, new String[1]);
+ }
+
+ /**
+ * Read a HashMap object from an XmlPullParser. The XML data could
+ * previously have been generated by writeMapXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the map.
+ *
+ * @param parser The XmlPullParser from which to read the map data.
+ * @param endTag Name of the tag that will end the map, usually "map".
+ * @param name An array of one string, used to return the name attribute
+ * of the map's tag.
+ *
+ * @return HashMap The newly generated map.
+ *
+ * @see #readMapXml
+ */
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+ return readThisMapXml(parser, endTag, name, null);
+ }
+
+ /**
+ * Read a HashMap object from an XmlPullParser. The XML data could
+ * previously have been generated by writeMapXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the map.
+ *
+ * @param parser The XmlPullParser from which to read the map data.
+ * @param endTag Name of the tag that will end the map, usually "map".
+ * @param name An array of one string, used to return the name attribute
+ * of the map's tag.
+ *
+ * @return HashMap The newly generated map.
+ *
+ * @see #readMapXml
+ * @hide
+ */
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback)
+ throws XmlPullParserException, IOException
+ {
+ HashMap<String, Object> map = new HashMap<String, Object>();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, false);
+ map.put(name[0], val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return map;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Like {@link #readThisMapXml}, but returns an ArrayMap instead of HashMap.
+ * @hide
+ */
+ public static final ArrayMap<String, ?> readThisArrayMapXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback)
+ throws XmlPullParserException, IOException
+ {
+ ArrayMap<String, Object> map = new ArrayMap<>();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, true);
+ map.put(name[0], val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return map;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read an ArrayList object from an XmlPullParser. The XML data could
+ * previously have been generated by writeListXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return HashMap The newly generated list.
+ *
+ * @see #readListXml
+ */
+ public static final ArrayList readThisListXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+ return readThisListXml(parser, endTag, name, null, false);
+ }
+
+ /**
+ * Read an ArrayList object from an XmlPullParser. The XML data could
+ * previously have been generated by writeListXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return HashMap The newly generated list.
+ *
+ * @see #readListXml
+ */
+ private static final ArrayList readThisListXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ ArrayList list = new ArrayList();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, arrayMap);
+ list.add(val);
+ //System.out.println("Adding to list: " + val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return list;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a HashSet object from an XmlPullParser. The XML data could previously
+ * have been generated by writeSetXml(). The XmlPullParser must be positioned
+ * <em>after</em> the tag that begins the set.
+ *
+ * @param parser The XmlPullParser from which to read the set data.
+ * @param endTag Name of the tag that will end the set, usually "set".
+ * @param name An array of one string, used to return the name attribute
+ * of the set's tag.
+ *
+ * @return HashSet The newly generated set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readSetXml
+ */
+ public static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+ return readThisSetXml(parser, endTag, name, null, false);
+ }
+
+ /**
+ * Read a HashSet object from an XmlPullParser. The XML data could previously
+ * have been generated by writeSetXml(). The XmlPullParser must be positioned
+ * <em>after</em> the tag that begins the set.
+ *
+ * @param parser The XmlPullParser from which to read the set data.
+ * @param endTag Name of the tag that will end the set, usually "set".
+ * @param name An array of one string, used to return the name attribute
+ * of the set's tag.
+ *
+ * @return HashSet The newly generated set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readSetXml
+ * @hide
+ */
+ private static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name,
+ ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ HashSet set = new HashSet();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, arrayMap);
+ set.add(val);
+ //System.out.println("Adding to set: " + val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return set;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read an int[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeIntArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated int[].
+ *
+ * @see #readListXml
+ */
+ public static final int[] readThisIntArrayXml(XmlPullParser parser,
+ String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException(
+ "Need num attribute in byte-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in num attribute in byte-array");
+ }
+ parser.next();
+
+ int[] array = new int[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Integer.parseInt(
+ parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException(
+ "Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException(
+ "Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: "
+ + parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a long[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeLongArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated long[].
+ *
+ * @see #readListXml
+ */
+ public static final long[] readThisLongArrayXml(XmlPullParser parser,
+ String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in long-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in long-array");
+ }
+ parser.next();
+
+ long[] array = new long[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Long.parseLong(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a double[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeDoubleArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "double-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated double[].
+ *
+ * @see #readListXml
+ */
+ public static final double[] readThisDoubleArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in double-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in double-array");
+ }
+ parser.next();
+
+ double[] array = new double[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Double.parseDouble(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a String[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeStringArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "string-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated String[].
+ *
+ * @see #readListXml
+ */
+ public static final String[] readThisStringArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in string-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in string-array");
+ }
+ parser.next();
+
+ String[] array = new String[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = parser.getAttributeValue(null, "value");
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a boolean[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeBooleanArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "string-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated boolean[].
+ *
+ * @see #readListXml
+ */
+ public static final boolean[] readThisBooleanArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in string-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in string-array");
+ }
+ parser.next();
+
+ boolean[] array = new boolean[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Boolean.valueOf(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a flattened object from an XmlPullParser. The XML data could
+ * previously have been written with writeMapXml(), writeListXml(), or
+ * writeValueXml(). The XmlPullParser must be positioned <em>at</em> the
+ * tag that defines the value.
+ *
+ * @param parser The XmlPullParser from which to read the object.
+ * @param name An array of one string, used to return the name attribute
+ * of the value's tag.
+ *
+ * @return Object The newly generated value object.
+ *
+ * @see #readMapXml
+ * @see #readListXml
+ * @see #writeValueXml
+ */
+ public static final Object readValueXml(XmlPullParser parser, String[] name)
+ throws XmlPullParserException, IOException
+ {
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ return readThisValueXml(parser, name, null, false);
+ } else if (eventType == parser.END_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected end tag at: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ throw new XmlPullParserException(
+ "Unexpected text: " + parser.getText());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Unexpected end of document");
+ }
+
+ private static final Object readThisValueXml(XmlPullParser parser, String[] name,
+ ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ final String valueName = parser.getAttributeValue(null, "name");
+ final String tagName = parser.getName();
+
+ //System.out.println("Reading this value tag: " + tagName + ", name=" + valueName);
+
+ Object res;
+
+ if (tagName.equals("null")) {
+ res = null;
+ } else if (tagName.equals("string")) {
+ String value = "";
+ int eventType;
+ while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+ if (eventType == parser.END_TAG) {
+ if (parser.getName().equals("string")) {
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + value);
+ return value;
+ }
+ throw new XmlPullParserException(
+ "Unexpected end tag in <string>: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ value += parser.getText();
+ } else if (eventType == parser.START_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected start tag in <string>: " + parser.getName());
+ }
+ }
+ throw new XmlPullParserException(
+ "Unexpected end of document in <string>");
+ } else if ((res = readThisPrimitiveValueXml(parser, tagName)) != null) {
+ // all work already done by readThisPrimitiveValueXml
+ } else if (tagName.equals("int-array")) {
+ res = readThisIntArrayXml(parser, "int-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("long-array")) {
+ res = readThisLongArrayXml(parser, "long-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("double-array")) {
+ res = readThisDoubleArrayXml(parser, "double-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("string-array")) {
+ res = readThisStringArrayXml(parser, "string-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("boolean-array")) {
+ res = readThisBooleanArrayXml(parser, "boolean-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("map")) {
+ parser.next();
+ res = arrayMap
+ ? readThisArrayMapXml(parser, "map", name, callback)
+ : readThisMapXml(parser, "map", name, callback);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("list")) {
+ parser.next();
+ res = readThisListXml(parser, "list", name, callback, arrayMap);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("set")) {
+ parser.next();
+ res = readThisSetXml(parser, "set", name, callback, arrayMap);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (callback != null) {
+ res = callback.readThisUnknownObjectXml(parser, tagName);
+ name[0] = valueName;
+ return res;
+ } else {
+ throw new XmlPullParserException("Unknown tag: " + tagName);
+ }
+
+ // Skip through to end tag.
+ int eventType;
+ while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+ if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(tagName)) {
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ }
+ throw new XmlPullParserException(
+ "Unexpected end tag in <" + tagName + ">: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ throw new XmlPullParserException(
+ "Unexpected text in <" + tagName + ">: " + parser.getName());
+ } else if (eventType == parser.START_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected start tag in <" + tagName + ">: " + parser.getName());
+ }
+ }
+ throw new XmlPullParserException(
+ "Unexpected end of document in <" + tagName + ">");
+ }
+
+ private static final Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName)
+ throws XmlPullParserException, IOException
+ {
+ try {
+ if (tagName.equals("int")) {
+ return Integer.parseInt(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("long")) {
+ return Long.valueOf(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("float")) {
+ return new Float(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("double")) {
+ return new Double(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("boolean")) {
+ return Boolean.valueOf(parser.getAttributeValue(null, "value"));
+ } else {
+ return null;
+ }
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in <" + tagName + ">");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in value attribute in <" + tagName + ">");
+ }
+ }
+
+ public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
+ {
+ int type;
+ while ((type=parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+
+ if (type != parser.START_TAG) {
+ throw new XmlPullParserException("No start tag found");
+ }
+
+ if (!parser.getName().equals(firstElementName)) {
+ throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+ ", expected " + firstElementName);
+ }
+ }
+
+ public static final void nextElement(XmlPullParser parser) throws XmlPullParserException, IOException
+ {
+ int type;
+ while ((type=parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+ }
+
+ public static boolean nextElementWithin(XmlPullParser parser, int outerDepth)
+ throws IOException, XmlPullParserException {
+ for (;;) {
+ int type = parser.next();
+ if (type == XmlPullParser.END_DOCUMENT
+ || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) {
+ return false;
+ }
+ if (type == XmlPullParser.START_TAG
+ && parser.getDepth() == outerDepth + 1) {
+ return true;
+ }
+ }
+ }
+
+ public static int readIntAttribute(XmlPullParser in, String name, int defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static int readIntAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as int");
+ }
+ }
+
+ public static void writeIntAttribute(XmlSerializer out, String name, int value)
+ throws IOException {
+ out.attribute(null, name, Integer.toString(value));
+ }
+
+ public static long readLongAttribute(XmlPullParser in, String name, long defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static long readLongAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as long");
+ }
+ }
+
+ public static void writeLongAttribute(XmlSerializer out, String name, long value)
+ throws IOException {
+ out.attribute(null, name, Long.toString(value));
+ }
+
+ public static float readFloatAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Float.parseFloat(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as long");
+ }
+ }
+
+ public static void writeFloatAttribute(XmlSerializer out, String name, float value)
+ throws IOException {
+ out.attribute(null, name, Float.toString(value));
+ }
+
+ public static boolean readBooleanAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ return Boolean.parseBoolean(value);
+ }
+
+ public static boolean readBooleanAttribute(XmlPullParser in, String name,
+ boolean defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ if (value == null) {
+ return defaultValue;
+ } else {
+ return Boolean.parseBoolean(value);
+ }
+ }
+
+ public static void writeBooleanAttribute(XmlSerializer out, String name, boolean value)
+ throws IOException {
+ out.attribute(null, name, Boolean.toString(value));
+ }
+
+ public static Uri readUriAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ return (value != null) ? Uri.parse(value) : null;
+ }
+
+ public static void writeUriAttribute(XmlSerializer out, String name, Uri value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, value.toString());
+ }
+ }
+
+ public static String readStringAttribute(XmlPullParser in, String name) {
+ return in.getAttributeValue(null, name);
+ }
+
+ public static void writeStringAttribute(XmlSerializer out, String name, String value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, value);
+ }
+ }
+
+ public static byte[] readByteArrayAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ if (value != null) {
+ return Base64.decode(value, Base64.DEFAULT);
+ } else {
+ return null;
+ }
+ }
+
+ public static void writeByteArrayAttribute(XmlSerializer out, String name, byte[] value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, Base64.encodeToString(value, Base64.DEFAULT));
+ }
+ }
+
+ public static Bitmap readBitmapAttribute(XmlPullParser in, String name) {
+ final byte[] value = readByteArrayAttribute(in, name);
+ if (value != null) {
+ return BitmapFactory.decodeByteArray(value, 0, value.length);
+ } else {
+ return null;
+ }
+ }
+
+ @Deprecated
+ public static void writeBitmapAttribute(XmlSerializer out, String name, Bitmap value)
+ throws IOException {
+ if (value != null) {
+ final ByteArrayOutputStream os = new ByteArrayOutputStream();
+ value.compress(CompressFormat.PNG, 90, os);
+ writeByteArrayAttribute(out, name, os.toByteArray());
+ }
+ }
+
+ /** @hide */
+ public interface WriteMapCallback {
+ /**
+ * Called from writeMapXml when an Object type is not recognized. The implementer
+ * must write out the entire element including start and end tags.
+ *
+ * @param v The object to be written out
+ * @param name The mapping key for v. Must be written into the "name" attribute of the
+ * start tag.
+ * @param out The XML output stream.
+ * @throws XmlPullParserException on unrecognized Object type.
+ * @throws IOException on XmlSerializer serialization errors.
+ * @hide
+ */
+ public void writeUnknownObject(Object v, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException;
+ }
+
+ /** @hide */
+ public interface ReadMapCallback {
+ /**
+ * Called from readThisMapXml when a START_TAG is not recognized. The input stream
+ * is positioned within the start tag so that attributes can be read using in.getAttribute.
+ *
+ * @param in the XML input stream
+ * @param tag the START_TAG that was not recognized.
+ * @return the Object parsed from the stream which will be put into the map.
+ * @throws XmlPullParserException if the START_TAG is not recognized.
+ * @throws IOException on XmlPullParser serialization errors.
+ * @hide
+ */
+ public Object readThisUnknownObjectXml(XmlPullParser in, String tag)
+ throws XmlPullParserException, IOException;
+ }
+}
diff --git a/tests/tests/widget/src/android/widget/cts/AbsSeekBarTest.java b/tests/tests/widget/src/android/widget/cts/AbsSeekBarTest.java
index 419a1c8..dfad3bb 100644
--- a/tests/tests/widget/src/android/widget/cts/AbsSeekBarTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AbsSeekBarTest.java
@@ -60,7 +60,7 @@
new MyAbsSeekBar(mActivity, null);
- new MyAbsSeekBar(mActivity, null, com.android.internal.R.attr.progressBarStyle);
+ new MyAbsSeekBar(mActivity, null, android.R.attr.progressBarStyle);
}
public void testAccessThumbOffset() {
diff --git a/tests/tests/widget/src/android/widget/cts/AbsSpinnerTest.java b/tests/tests/widget/src/android/widget/cts/AbsSpinnerTest.java
index 10e1658..9669c7c 100644
--- a/tests/tests/widget/src/android/widget/cts/AbsSpinnerTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AbsSpinnerTest.java
@@ -58,7 +58,7 @@
new Spinner(mContext, null);
- new Spinner(mContext, null, com.android.internal.R.attr.spinnerStyle);
+ new Spinner(mContext, null, android.R.attr.spinnerStyle);
new Gallery(mContext);
new Gallery(mContext, null);
diff --git a/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java b/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
index da99fa3..c08abbc 100644
--- a/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
@@ -502,6 +502,7 @@
}
}.run();
} else {
+ Thread.sleep(200);
mInstrumentation.sendStringSync(STRING_TEST);
new PollingCheck() {
@Override
diff --git a/tests/tests/widget/src/android/widget/cts/CompoundButtonTest.java b/tests/tests/widget/src/android/widget/cts/CompoundButtonTest.java
index 2269e00..98bf047 100644
--- a/tests/tests/widget/src/android/widget/cts/CompoundButtonTest.java
+++ b/tests/tests/widget/src/android/widget/cts/CompoundButtonTest.java
@@ -243,7 +243,7 @@
compoundButton.setChecked(true);
int[] checkedState = compoundButton.onCreateDrawableState(0);
assertEquals(state[0], checkedState[0]);
- assertEquals(com.android.internal.R.attr.state_checked,
+ assertEquals(android.R.attr.state_checked,
checkedState[checkedState.length - 1]);
// compoundButton is not checked again.
diff --git a/tests/tests/widget/src/android/widget/cts/DatePickerTest.java b/tests/tests/widget/src/android/widget/cts/DatePickerTest.java
index fdadc2c..3fa238e 100644
--- a/tests/tests/widget/src/android/widget/cts/DatePickerTest.java
+++ b/tests/tests/widget/src/android/widget/cts/DatePickerTest.java
@@ -17,7 +17,6 @@
package android.widget.cts;
import com.android.cts.widget.R;
-import com.android.internal.util.XmlUtils;
import android.content.Context;
import android.content.res.XmlResourceParser;
@@ -29,6 +28,7 @@
import android.util.Xml;
import android.view.View;
import android.widget.DatePicker;
+import android.widget.cts.util.XmlUtils;
/**
* Test {@link DatePicker}.
diff --git a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
index a8584ae..68a17e7 100644
--- a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
@@ -387,9 +387,9 @@
final MockDialerFilter dialerFilter = new MockDialerFilter(mActivity);
final EditText text1 = new EditText(mActivity);
- text1.setId(com.android.internal.R.id.hint);
+ text1.setId(android.R.id.hint);
final EditText text2 = new EditText(mActivity);
- text2.setId(com.android.internal.R.id.primary);
+ text2.setId(android.R.id.primary);
dialerFilter.addView(text1, new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
diff --git a/tests/tests/widget/src/android/widget/cts/DigitalClockTest.java b/tests/tests/widget/src/android/widget/cts/DigitalClockTest.java
index 2f2cc1a..86a9672 100644
--- a/tests/tests/widget/src/android/widget/cts/DigitalClockTest.java
+++ b/tests/tests/widget/src/android/widget/cts/DigitalClockTest.java
@@ -16,7 +16,7 @@
package android.widget.cts;
-import java.io.IOException;
+import com.android.cts.widget.R;
import org.xmlpull.v1.XmlPullParserException;
@@ -29,9 +29,9 @@
import android.util.Xml;
import android.widget.DigitalClock;
import android.widget.LinearLayout;
+import android.widget.cts.util.XmlUtils;
-import com.android.cts.widget.R;
-import com.android.internal.util.XmlUtils;
+import java.io.IOException;
/**
diff --git a/tests/tests/widget/src/android/widget/cts/GridViewTest.java b/tests/tests/widget/src/android/widget/cts/GridViewTest.java
index 042986c..3c615bd 100644
--- a/tests/tests/widget/src/android/widget/cts/GridViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/GridViewTest.java
@@ -83,7 +83,7 @@
new GridView(mActivity, null);
- new GridView(mActivity, null, com.android.internal.R.attr.gridViewStyle);
+ new GridView(mActivity, null, android.R.attr.gridViewStyle);
XmlPullParser parser = mActivity.getResources().getXml(R.layout.gridview_layout);
AttributeSet attrs = Xml.asAttributeSet(parser);
diff --git a/tests/tests/widget/src/android/widget/cts/LinearLayout_LayoutParamsTest.java b/tests/tests/widget/src/android/widget/cts/LinearLayout_LayoutParamsTest.java
index 8ecca6f..31be765 100644
--- a/tests/tests/widget/src/android/widget/cts/LinearLayout_LayoutParamsTest.java
+++ b/tests/tests/widget/src/android/widget/cts/LinearLayout_LayoutParamsTest.java
@@ -17,8 +17,6 @@
package android.widget.cts;
import com.android.cts.widget.R;
-import com.android.internal.util.XmlUtils;
-
import org.xmlpull.v1.XmlPullParserException;
@@ -27,6 +25,7 @@
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.LinearLayout;
+import android.widget.cts.util.XmlUtils;
import java.io.IOException;
diff --git a/tests/tests/widget/src/android/widget/cts/ListPopupWindowTest.java b/tests/tests/widget/src/android/widget/cts/ListPopupWindowTest.java
index fa4e8063..c4636fc 100644
--- a/tests/tests/widget/src/android/widget/cts/ListPopupWindowTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ListPopupWindowTest.java
@@ -184,7 +184,7 @@
final View upperAnchor = mActivity.findViewById(R.id.anchor_upper);
mPopupWindow.setAnchorView(upperAnchor);
mPopupWindow.setWindowLayoutType(
- WindowManager.LayoutParams.TYPE_APPLICATION_ABOVE_SUB_PANEL);
+ WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL);
mInstrumentation.runOnMainSync(new Runnable() {
public void run() {
@@ -197,7 +197,7 @@
WindowManager.LayoutParams p = (WindowManager.LayoutParams)
mPopupWindow.getListView().getRootView().getLayoutParams();
- assertEquals(WindowManager.LayoutParams.TYPE_APPLICATION_ABOVE_SUB_PANEL, p.type);
+ assertEquals(WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL, p.type);
dismissPopup();
}
diff --git a/tests/tests/widget/src/android/widget/cts/ListViewTest.java b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
index 60db540..f6f490f 100644
--- a/tests/tests/widget/src/android/widget/cts/ListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
@@ -17,7 +17,6 @@
package android.widget.cts;
import com.android.cts.widget.R;
-import com.google.android.collect.Lists;
import org.xmlpull.v1.XmlPullParser;
@@ -43,13 +42,11 @@
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
-import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import junit.framework.Assert;
@@ -729,7 +726,8 @@
@MediumTest
public void testRequestLayout() throws Exception {
ListView listView = new ListView(mActivity);
- List<String> items = Lists.newArrayList("hello");
+ List<String> items = new ArrayList<>();
+ items.add("hello");
Adapter<String> adapter = new Adapter<String>(mActivity, 0, items);
listView.setAdapter(adapter);
@@ -753,7 +751,8 @@
ListView listView = new ListView(mActivity);
// We use a header as the unselectable item to remain after the selectable one is removed.
listView.addHeaderView(new View(mActivity), null, false);
- List<String> items = Lists.newArrayList("hello");
+ List<String> items = new ArrayList<>();
+ items.add("hello");
Adapter<String> adapter = new Adapter<String>(mActivity, 0, items);
listView.setAdapter(adapter);
diff --git a/tests/tests/widget/src/android/widget/cts/MockTextView.java b/tests/tests/widget/src/android/widget/cts/MockTextView.java
index 138338c..977e4b2 100644
--- a/tests/tests/widget/src/android/widget/cts/MockTextView.java
+++ b/tests/tests/widget/src/android/widget/cts/MockTextView.java
@@ -179,19 +179,19 @@
}
public int getFrameLeft() {
- return mLeft;
+ return getLeft();
}
public int getFrameTop() {
- return mTop;
+ return getTop();
}
public int getFrameRight() {
- return mRight;
+ return getRight();
}
public int getFrameBottom() {
- return mBottom;
+ return getBottom();
}
public int getBottomPaddingOffset() {
diff --git a/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java b/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
index 1131e02..24596a4 100644
--- a/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
+++ b/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
@@ -75,7 +75,7 @@
new PopupWindow(mActivity, null);
- new PopupWindow(mActivity, null, com.android.internal.R.attr.popupWindowStyle);
+ new PopupWindow(mActivity, null, android.R.attr.popupWindowStyle);
mPopupWindow = new PopupWindow();
assertEquals(0, mPopupWindow.getWidth());
@@ -143,12 +143,8 @@
// default is -1
assertEquals(-1, mPopupWindow.getAnimationStyle());
- mPopupWindow.setAnimationStyle(com.android.internal.R.style.Animation_Toast);
- assertEquals(com.android.internal.R.style.Animation_Toast,
- mPopupWindow.getAnimationStyle());
-
- mPopupWindow.setAnimationStyle(com.android.internal.R.style.Animation_DropDownDown);
- assertEquals(com.android.internal.R.style.Animation_DropDownDown,
+ mPopupWindow.setAnimationStyle(android.R.style.Animation_Toast);
+ assertEquals(android.R.style.Animation_Toast,
mPopupWindow.getAnimationStyle());
// abnormal values
@@ -894,10 +890,30 @@
private int mTransitionCount;
private MockTransition() {
- addListener(new Transition.TransitionListenerAdapter() {
+ addListener(new Transition.TransitionListener() {
+ @Override
+ public void onTransitionStart(Transition transition) {
+
+ }
+
public void onTransitionEnd(Transition transition) {
mTransitionCount++;
}
+
+ @Override
+ public void onTransitionCancel(Transition transition) {
+
+ }
+
+ @Override
+ public void onTransitionPause(Transition transition) {
+
+ }
+
+ @Override
+ public void onTransitionResume(Transition transition) {
+
+ }
});
}
diff --git a/tests/tests/widget/src/android/widget/cts/RadioGroup_LayoutParamsTest.java b/tests/tests/widget/src/android/widget/cts/RadioGroup_LayoutParamsTest.java
index 4b1aa5b..b14c0e8 100644
--- a/tests/tests/widget/src/android/widget/cts/RadioGroup_LayoutParamsTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RadioGroup_LayoutParamsTest.java
@@ -16,7 +16,7 @@
package android.widget.cts;
-import com.android.internal.R;
+import android.R;
import org.xmlpull.v1.XmlPullParser;
diff --git a/tests/tests/widget/src/android/widget/cts/RatingBarTest.java b/tests/tests/widget/src/android/widget/cts/RatingBarTest.java
index 1bb42e8..211d7fe 100644
--- a/tests/tests/widget/src/android/widget/cts/RatingBarTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RatingBarTest.java
@@ -18,7 +18,6 @@
import com.android.cts.widget.R;
-
import android.content.Context;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
@@ -45,7 +44,7 @@
}
public void testConstructor() {
- new RatingBar(mContext, null, com.android.internal.R.attr.ratingBarStyle);
+ new RatingBar(mContext, null, android.R.attr.ratingBarStyle);
new RatingBar(mContext, null);
diff --git a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
index a8d7f54..aae069a 100644
--- a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
@@ -17,8 +17,6 @@
package android.widget.cts;
import com.android.cts.widget.R;
-import com.android.internal.util.XmlUtils;
-
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -36,6 +34,7 @@
import android.view.ViewGroup.LayoutParams;
import android.widget.AbsListView;
import android.widget.RelativeLayout;
+import android.widget.cts.util.XmlUtils;
import java.io.IOException;
diff --git a/tests/tests/widget/src/android/widget/cts/RelativeLayout_LayoutParamsTest.java b/tests/tests/widget/src/android/widget/cts/RelativeLayout_LayoutParamsTest.java
index a3bd95c..07c7b77 100644
--- a/tests/tests/widget/src/android/widget/cts/RelativeLayout_LayoutParamsTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RelativeLayout_LayoutParamsTest.java
@@ -18,7 +18,6 @@
import com.android.cts.widget.R;
-
import android.test.ActivityInstrumentationTestCase2;
import android.test.ViewAsserts;
import android.view.View;
@@ -186,11 +185,13 @@
assertEquals(0, rules[RelativeLayout.ALIGN_START]);
assertEquals(R.id.relative_view21, rules[RelativeLayout.ALIGN_LEFT]);
assertEquals(0, rules[RelativeLayout.ALIGN_RIGHT]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(R.id.relative_view21, rules[RelativeLayout.BELOW]);
assertEquals(0, rules[RelativeLayout.ALIGN_START]);
assertEquals(0, rules[RelativeLayout.ALIGN_LEFT]);
assertEquals(R.id.relative_view21, rules[RelativeLayout.ALIGN_RIGHT]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view3, has same top position with view1 and same bottom position with view2,
// and on the right of view1.1.
@@ -206,12 +207,14 @@
assertEquals(0, rules[RelativeLayout.END_OF]);
assertEquals(0, rules[RelativeLayout.LEFT_OF]);
assertEquals(R.id.relative_view21, rules[RelativeLayout.RIGHT_OF]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(R.id.relative_view21, rules[RelativeLayout.ALIGN_TOP]);
assertEquals(R.id.relative_view22, rules[RelativeLayout.ALIGN_BOTTOM]);
assertEquals(0, rules[RelativeLayout.END_OF]);
assertEquals(R.id.relative_view21, rules[RelativeLayout.LEFT_OF]);
assertEquals(0, rules[RelativeLayout.RIGHT_OF]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view4, has same right position with view3 and above view3.
// TEST: android:layout_alignEnd; android:layout_above
@@ -224,11 +227,13 @@
assertEquals(0, rules[RelativeLayout.ALIGN_LEFT]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ALIGN_RIGHT]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ABOVE]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(0, rules[RelativeLayout.ALIGN_END]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ALIGN_LEFT]);
assertEquals(0, rules[RelativeLayout.ALIGN_RIGHT]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ABOVE]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view5 goes on the left-bottom.
// TEST: android:layout_alignParentBottom; android:layout_alignParentStart
@@ -241,11 +246,13 @@
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_START]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.ALIGN_PARENT_LEFT]);
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_RIGHT]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.ALIGN_PARENT_BOTTOM]);
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_START]);
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_LEFT]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.ALIGN_PARENT_RIGHT]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view6 goes on the top-right.
// TEST: android:layout_alignParentTop; android:layout_alignParentEnd
@@ -258,11 +265,13 @@
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_END]);
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_LEFT]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.ALIGN_PARENT_RIGHT]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.ALIGN_PARENT_TOP]);
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_END]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.ALIGN_PARENT_LEFT]);
assertEquals(0, rules[RelativeLayout.ALIGN_PARENT_RIGHT]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view7, has same baseline with view6 and centered horizontally within its parent.
// TEST: android:layout_alignBaseline; android:layout_centerHorizontal
@@ -273,9 +282,11 @@
rules = layoutParams.getRules();
assertEquals(R.id.relative_view26, rules[RelativeLayout.ALIGN_BASELINE]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.CENTER_HORIZONTAL]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(R.id.relative_view26, rules[RelativeLayout.ALIGN_BASELINE]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.CENTER_HORIZONTAL]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view8, centered vertically within its parent and on the left of view1.
// TEST: android:layout_toStartOf; android:layout_centerVertical
@@ -288,11 +299,13 @@
assertEquals(R.id.relative_view21, rules[RelativeLayout.LEFT_OF]);
assertEquals(0, rules[RelativeLayout.RIGHT_OF]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.CENTER_VERTICAL]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(0, rules[RelativeLayout.START_OF]);
assertEquals(0, rules[RelativeLayout.LEFT_OF]);
assertEquals(R.id.relative_view21, rules[RelativeLayout.RIGHT_OF]);
assertEquals(RelativeLayout.TRUE, rules[RelativeLayout.CENTER_VERTICAL]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
// view9, has same top and bottom position with view3 and same left position with its parent
// TEST: android:layout_alignStart; android:layout_alignTop; android:layout_alignBottom;
@@ -308,12 +321,14 @@
assertEquals(0, rules[RelativeLayout.ALIGN_RIGHT]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ALIGN_TOP]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ALIGN_BOTTOM]);
- rules = layoutParams.getRules(View.LAYOUT_DIRECTION_RTL);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+ rules = layoutParams.getRules();
assertEquals(0, rules[RelativeLayout.ALIGN_START]);
assertEquals(0, rules[RelativeLayout.ALIGN_LEFT]);
assertEquals(R.id.gravity_bottom, rules[RelativeLayout.ALIGN_RIGHT]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ALIGN_TOP]);
assertEquals(R.id.relative_view23, rules[RelativeLayout.ALIGN_BOTTOM]);
+ layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
public void testAccessRule1() {
diff --git a/tests/tests/widget/src/android/widget/cts/SeekBarTest.java b/tests/tests/widget/src/android/widget/cts/SeekBarTest.java
index 54bbedf..43aada2 100644
--- a/tests/tests/widget/src/android/widget/cts/SeekBarTest.java
+++ b/tests/tests/widget/src/android/widget/cts/SeekBarTest.java
@@ -54,7 +54,7 @@
new SeekBar(mActivity, null);
- new SeekBar(mActivity, null, com.android.internal.R.attr.seekBarStyle);
+ new SeekBar(mActivity, null, android.R.attr.seekBarStyle);
}
public void testSetOnSeekBarChangeListener() {
diff --git a/tests/tests/widget/src/android/widget/cts/SimpleAdapterTest.java b/tests/tests/widget/src/android/widget/cts/SimpleAdapterTest.java
index 5cbf524..28ff15e 100644
--- a/tests/tests/widget/src/android/widget/cts/SimpleAdapterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/SimpleAdapterTest.java
@@ -16,7 +16,7 @@
package android.widget.cts;
-import com.android.internal.R;
+import android.R;
import android.content.Context;
diff --git a/tests/tests/widget/src/android/widget/cts/SimpleExpandableListAdapterTest.java b/tests/tests/widget/src/android/widget/cts/SimpleExpandableListAdapterTest.java
index a7bfc31..d1c63c0 100644
--- a/tests/tests/widget/src/android/widget/cts/SimpleExpandableListAdapterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/SimpleExpandableListAdapterTest.java
@@ -16,7 +16,7 @@
package android.widget.cts;
-import com.android.internal.R;
+import android.R;
import android.content.Context;
diff --git a/tests/tests/widget/src/android/widget/cts/SpinnerTest.java b/tests/tests/widget/src/android/widget/cts/SpinnerTest.java
index 599d308..ea37470 100644
--- a/tests/tests/widget/src/android/widget/cts/SpinnerTest.java
+++ b/tests/tests/widget/src/android/widget/cts/SpinnerTest.java
@@ -52,17 +52,17 @@
new Spinner(mTargetContext, null);
- new Spinner(mTargetContext, null, com.android.internal.R.attr.spinnerStyle);
+ new Spinner(mTargetContext, null, android.R.attr.spinnerStyle);
new Spinner(mTargetContext, Spinner.MODE_DIALOG);
- new Spinner(mTargetContext, null, com.android.internal.R.attr.spinnerStyle,
+ new Spinner(mTargetContext, null, android.R.attr.spinnerStyle,
Spinner.MODE_DIALOG);
- new Spinner(mTargetContext, null, com.android.internal.R.attr.spinnerStyle, 0,
+ new Spinner(mTargetContext, null, android.R.attr.spinnerStyle, 0,
Spinner.MODE_DIALOG);
- new Spinner(mTargetContext, null, com.android.internal.R.attr.spinnerStyle, 0,
+ new Spinner(mTargetContext, null, android.R.attr.spinnerStyle, 0,
Spinner.MODE_DIALOG, mTargetContext.getTheme());
Spinner spinner = (Spinner) getActivity().findViewById(R.id.spinner1);
@@ -173,7 +173,7 @@
public void testGetPopupContext() {
Theme theme = mTargetContext.getResources().newTheme();
Spinner themeSpinner = new Spinner(mTargetContext, null,
- com.android.internal.R.attr.spinnerStyle, 0, Spinner.MODE_DIALOG, theme);
+ android.R.attr.spinnerStyle, 0, Spinner.MODE_DIALOG, theme);
assertNotSame(mTargetContext, themeSpinner.getPopupContext());
assertSame(theme, themeSpinner.getPopupContext().getTheme());
diff --git a/tests/tests/widget/src/android/widget/cts/TabHost_TabSpecTest.java b/tests/tests/widget/src/android/widget/cts/TabHost_TabSpecTest.java
index 1363491..5745808 100644
--- a/tests/tests/widget/src/android/widget/cts/TabHost_TabSpecTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TabHost_TabSpecTest.java
@@ -65,7 +65,7 @@
mTabHost.addTab(tabSpec);
mTabHost.setCurrentTab(1);
View currentTabView = mTabHost.getCurrentTabView();
- int idTitle = com.android.internal.R.id.title;
+ int idTitle = android.R.id.title;
TextView tvTitle = (TextView) currentTabView.findViewById(idTitle);
assertEquals(TAG_TAB2, tvTitle.getText().toString());
@@ -90,8 +90,8 @@
mTabHost.addTab(tabSpec);
mTabHost.setCurrentTab(1);
View currentTabView = mTabHost.getCurrentTabView();
- int idTitle = com.android.internal.R.id.title;
- int idIcon = com.android.internal.R.id.icon;
+ int idTitle = android.R.id.title;
+ int idIcon = android.R.id.icon;
TextView tvTitle = (TextView) currentTabView.findViewById(idTitle);
ImageView ivIcon = ((ImageView) currentTabView.findViewById(idIcon));
assertEquals("", tvTitle.getText().toString());
diff --git a/tests/tests/widget/src/android/widget/cts/TableLayout_LayoutParamsTest.java b/tests/tests/widget/src/android/widget/cts/TableLayout_LayoutParamsTest.java
index 20a9937..8a38c81 100644
--- a/tests/tests/widget/src/android/widget/cts/TableLayout_LayoutParamsTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TableLayout_LayoutParamsTest.java
@@ -16,6 +16,10 @@
package android.widget.cts;
+import com.android.internal.R;
+
+import org.xmlpull.v1.XmlPullParser;
+
import android.content.Context;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -23,12 +27,7 @@
import android.util.AttributeSet;
import android.util.Xml;
import android.widget.TableLayout;
-
-import com.android.internal.R;
-import com.android.internal.util.XmlUtils;
-
-
-import org.xmlpull.v1.XmlPullParser;
+import android.widget.cts.util.XmlUtils;
/**
* Test {@link TableLayout.LayoutParams}.
@@ -74,56 +73,59 @@
// base_attr_pixel: layout_width = 400px, layout_height = 600px
AttributeSet attrs = getAttrs("base_attr_pixel");
- TypedArray a = mTargetContext.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
+ TypedArray a = mTargetContext.obtainStyledAttributes(attrs,
+ android.R.styleable.ViewGroup_Layout);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(600, mockLayoutParams.height);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_height,
- R.styleable.ViewGroup_Layout_layout_width);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_height,
+ android.R.styleable.ViewGroup_Layout_layout_width);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(400, mockLayoutParams.height);
a.recycle();
// base_attr_fillwrap: layout_width = "match_parent", layout_height = "wrap_content"
attrs = getAttrs("base_attr_fillwrap");
- a = mTargetContext.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
+ a = mTargetContext.obtainStyledAttributes(attrs, android.R.styleable.ViewGroup_Layout);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.WRAP_CONTENT, mockLayoutParams.height);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_height,
- R.styleable.ViewGroup_Layout_layout_width);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_height,
+ android.R.styleable.ViewGroup_Layout_layout_width);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.height);
a.recycle();
// base_attr_noheight: layout_width = 600px, no layout_height.
attrs = getAttrs("base_attr_noheight");
- a = mTargetContext.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
+ a = mTargetContext.obtainStyledAttributes(attrs, android.R.styleable.ViewGroup_Layout);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.WRAP_CONTENT, mockLayoutParams.height);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_height,
- R.styleable.ViewGroup_Layout_layout_width);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_height,
+ android.R.styleable.ViewGroup_Layout_layout_width);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(600, mockLayoutParams.height);
try {
- mockLayoutParams.setBaseAttributes(null, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(null,
+ android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
fail("Should throw NullPointerException");
} catch (NullPointerException e) {
}
- mockLayoutParams.setBaseAttributes(a, -1, R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, -1,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.WRAP_CONTENT, mockLayoutParams.height);
diff --git a/tests/tests/widget/src/android/widget/cts/TableRow_LayoutParamsTest.java b/tests/tests/widget/src/android/widget/cts/TableRow_LayoutParamsTest.java
index cf2603f..06f851d 100644
--- a/tests/tests/widget/src/android/widget/cts/TableRow_LayoutParamsTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TableRow_LayoutParamsTest.java
@@ -16,6 +16,10 @@
package android.widget.cts;
+import com.android.internal.R;
+
+import org.xmlpull.v1.XmlPullParser;
+
import android.content.Context;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -28,12 +32,7 @@
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.TableLayout;
import android.widget.TableRow;
-
-import com.android.internal.R;
-import com.android.internal.util.XmlUtils;
-
-
-import org.xmlpull.v1.XmlPullParser;
+import android.widget.cts.util.XmlUtils;
/**
* Test {@link TableRow.LayoutParams}.
@@ -117,65 +116,67 @@
// base_attr_pixel: layout_width = 400px, layout_height = 600px
AttributeSet attrs = getAttrs("base_attr_pixel");
- TypedArray a = mTargetContext.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
+ TypedArray a = mTargetContext.obtainStyledAttributes(attrs,
+ android.R.styleable.ViewGroup_Layout);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(400, mockLayoutParams.width);
assertEquals(600, mockLayoutParams.height);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_height,
- R.styleable.ViewGroup_Layout_layout_width);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_height,
+ android.R.styleable.ViewGroup_Layout_layout_width);
assertEquals(600, mockLayoutParams.width);
assertEquals(400, mockLayoutParams.height);
a.recycle();
// base_attr_fillwrap: layout_width = "match_parent", layout_height = "wrap_content"
attrs = getAttrs("base_attr_fillwrap");
- a = mTargetContext.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
+ a = mTargetContext.obtainStyledAttributes(attrs, android.R.styleable.ViewGroup_Layout);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.WRAP_CONTENT, mockLayoutParams.height);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_height,
- R.styleable.ViewGroup_Layout_layout_width);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_height,
+ android.R.styleable.ViewGroup_Layout_layout_width);
assertEquals(TableLayout.LayoutParams.WRAP_CONTENT, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.height);
a.recycle();
// base_attr_noheight: layout_width = 600px, no layout_height.
attrs = getAttrs("base_attr_noheight");
- a = mTargetContext.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
+ a = mTargetContext.obtainStyledAttributes(attrs, android.R.styleable.ViewGroup_Layout);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
assertEquals(600, mockLayoutParams.width);
assertEquals(TableLayout.LayoutParams.WRAP_CONTENT, mockLayoutParams.height);
- mockLayoutParams.setBaseAttributes(a, R.styleable.ViewGroup_Layout_layout_height,
- R.styleable.ViewGroup_Layout_layout_width);
+ mockLayoutParams.setBaseAttributes(a, android.R.styleable.ViewGroup_Layout_layout_height,
+ android.R.styleable.ViewGroup_Layout_layout_width);
assertEquals(TableLayout.LayoutParams.MATCH_PARENT, mockLayoutParams.width);
assertEquals(600, mockLayoutParams.height);
try {
- mockLayoutParams.setBaseAttributes(null, R.styleable.ViewGroup_Layout_layout_width,
- R.styleable.ViewGroup_Layout_layout_height);
+ mockLayoutParams.setBaseAttributes(null,
+ android.R.styleable.ViewGroup_Layout_layout_width,
+ android.R.styleable.ViewGroup_Layout_layout_height);
fail("Should throw NullPointerException");
} catch (NullPointerException e) {
}
try {
mockLayoutParams.setBaseAttributes(a, -1,
- R.styleable.ViewGroup_Layout_layout_height);
+ android.R.styleable.ViewGroup_Layout_layout_height);
fail("Should throw ArrayIndexOutOfBoundsException");
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
mockLayoutParams.setBaseAttributes(null,
- R.styleable.ViewGroup_Layout_layout_width, -1);
+ android.R.styleable.ViewGroup_Layout_layout_width, -1);
fail("Should throw ArrayIndexOutOfBoundsException");
} catch (NullPointerException e) {
}
diff --git a/tests/tests/widget/src/android/widget/cts/TextViewTest.java b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
index ec098f8..31a4636 100644
--- a/tests/tests/widget/src/android/widget/cts/TextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
@@ -1764,6 +1764,39 @@
}
@UiThreadTest
+ public void testSaveInstanceState() {
+ TextView originalTextView = new TextView(mActivity);
+ final String text = "This is a string";
+ originalTextView.setText(text);
+ originalTextView.setFreezesText(true); // needed to actually save state
+ Parcelable state = originalTextView.onSaveInstanceState();
+
+ TextView restoredTextView = new TextView(mActivity);
+ restoredTextView.onRestoreInstanceState(state);
+ assertEquals(text, restoredTextView.getText().toString());
+ }
+
+ @UiThreadTest
+ public void testSaveInstanceStateSelection() {
+ TextView originalTextView = new TextView(mActivity);
+ final String text = "This is a string";
+ final Spannable spannable = new SpannableString(text);
+ originalTextView.setText(spannable);
+ originalTextView.setTextIsSelectable(true);
+ Selection.setSelection((Spannable) originalTextView.getText(), 5, 7);
+ originalTextView.setFreezesText(true); // needed to actually save state
+ Parcelable state = originalTextView.onSaveInstanceState();
+
+ TextView restoredTextView = new TextView(mActivity);
+ // Setting a selection only has an effect on a TextView when it is selectable.
+ restoredTextView.setTextIsSelectable(true);
+ restoredTextView.onRestoreInstanceState(state);
+ assertEquals(text, restoredTextView.getText().toString());
+ assertEquals(5, restoredTextView.getSelectionStart());
+ assertEquals(7, restoredTextView.getSelectionEnd());
+ }
+
+ @UiThreadTest
public void testSetText() {
TextView tv = findTextView(R.id.textview_text);
@@ -4455,7 +4488,7 @@
final Bundle args = new Bundle();
args.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 0);
args.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, text.length());
- mTextView.performAccessibilityActionInternal(
+ mTextView.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_SET_SELECTION, args);
}
});
@@ -4485,7 +4518,7 @@
final Bundle args = new Bundle();
args.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 0);
args.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, text.length());
- mTextView.performAccessibilityActionInternal(
+ mTextView.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_SET_SELECTION, args);
}
diff --git a/tests/tests/widget/src/android/widget/cts/TextView_SaveStateTest.java b/tests/tests/widget/src/android/widget/cts/TextView_SaveStateTest.java
deleted file mode 100644
index 801a6fd..0000000
--- a/tests/tests/widget/src/android/widget/cts/TextView_SaveStateTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.widget.cts;
-
-
-import android.os.Parcel;
-import android.test.InstrumentationTestCase;
-import android.text.TextUtils;
-import android.view.AbsSavedState;
-import android.widget.TextView;
-
-/**
- * Test {@link TextView.SavedState}.
- */
-public class TextView_SaveStateTest extends InstrumentationTestCase {
- public void testToString() {
- Parcel source = creatTestParcel(0, 0, true, "This is content");
- TextView.SavedState state = TextView.SavedState.CREATOR.createFromParcel(source);
-
- assertNotNull(state.toString());
-
- source = creatTestParcel(5, 10, false, "This is another content");
- state = TextView.SavedState.CREATOR.createFromParcel(source);
-
- assertNotNull(state.toString());
- }
-
- public void testWriteToParcel() {
- Parcel source = creatTestParcel(0, 0, true, "This is content");
- TextView.SavedState state = TextView.SavedState.CREATOR.createFromParcel(source);
- assertNotNull(state);
- }
-
- /**
- * Gets the parcel.
- *
- * @param start the start
- * @param end the end
- * @param frozenWithFocus the frozen with focus
- * @param text the text
- * @return the parcel
- */
- private Parcel creatTestParcel(int start, int end, boolean frozenWithFocus, String text) {
- Parcel source = Parcel.obtain();
-
- source.writeParcelable(AbsSavedState.EMPTY_STATE, 0);
- source.writeInt(start);
- source.writeInt(end);
- source.writeInt(frozenWithFocus ? 1 : 0);
- TextView textView = new TextView(getInstrumentation().getTargetContext());
- textView.setText(text);
- TextUtils.writeToParcel(textView.getText(), source, 0);
- source.setDataPosition(0);
- return source;
- }
-}
diff --git a/tests/tests/widget/src/android/widget/cts/TwoLineListItemTest.java b/tests/tests/widget/src/android/widget/cts/TwoLineListItemTest.java
index 0d5807f..18dd407 100644
--- a/tests/tests/widget/src/android/widget/cts/TwoLineListItemTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TwoLineListItemTest.java
@@ -91,9 +91,9 @@
public void testOnFinishInflate() {
MockTwoLineListItem twoLineListItem = new MockTwoLineListItem(mActivity);
TextView text1 = new TextView(mActivity);
- text1.setId(com.android.internal.R.id.text1);
+ text1.setId(android.R.id.text1);
TextView text2 = new TextView(mActivity);
- text2.setId(com.android.internal.R.id.text2);
+ text2.setId(android.R.id.text2);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
twoLineListItem.addView(text1, params);
diff --git a/tests/tests/widget/src/android/widget/cts/util/XmlUtils.java b/tests/tests/widget/src/android/widget/cts/util/XmlUtils.java
new file mode 100644
index 0000000..c357e5e
--- /dev/null
+++ b/tests/tests/widget/src/android/widget/cts/util/XmlUtils.java
@@ -0,0 +1,1694 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.widget.cts.util;
+
+import com.android.internal.util.FastXmlSerializer;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.util.ArrayMap;
+import android.util.Base64;
+import android.util.Xml;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ProtocolException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** {@hide} */
+public class XmlUtils {
+
+ public static void skipCurrentTag(XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ int outerDepth = parser.getDepth();
+ int type;
+ while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
+ && (type != XmlPullParser.END_TAG
+ || parser.getDepth() > outerDepth)) {
+ }
+ }
+
+ public static final int
+ convertValueToList(CharSequence value, String[] options, int defaultValue)
+ {
+ if (null != value) {
+ for (int i = 0; i < options.length; i++) {
+ if (value.equals(options[i]))
+ return i;
+ }
+ }
+
+ return defaultValue;
+ }
+
+ public static final boolean
+ convertValueToBoolean(CharSequence value, boolean defaultValue)
+ {
+ boolean result = false;
+
+ if (null == value)
+ return defaultValue;
+
+ if (value.equals("1")
+ || value.equals("true")
+ || value.equals("TRUE"))
+ result = true;
+
+ return result;
+ }
+
+ public static final int
+ convertValueToInt(CharSequence charSeq, int defaultValue)
+ {
+ if (null == charSeq)
+ return defaultValue;
+
+ String nm = charSeq.toString();
+
+ // XXX This code is copied from Integer.decode() so we don't
+ // have to instantiate an Integer!
+
+ int value;
+ int sign = 1;
+ int index = 0;
+ int len = nm.length();
+ int base = 10;
+
+ if ('-' == nm.charAt(0)) {
+ sign = -1;
+ index++;
+ }
+
+ if ('0' == nm.charAt(index)) {
+ // Quick check for a zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = nm.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) {
+ index += 2;
+ base = 16;
+ } else {
+ index++;
+ base = 8;
+ }
+ }
+ else if ('#' == nm.charAt(index))
+ {
+ index++;
+ base = 16;
+ }
+
+ return Integer.parseInt(nm.substring(index), base) * sign;
+ }
+
+ public static int convertValueToUnsignedInt(String value, int defaultValue) {
+ if (null == value) {
+ return defaultValue;
+ }
+
+ return parseUnsignedIntAttribute(value);
+ }
+
+ public static int parseUnsignedIntAttribute(CharSequence charSeq) {
+ String value = charSeq.toString();
+
+ long bits;
+ int index = 0;
+ int len = value.length();
+ int base = 10;
+
+ if ('0' == value.charAt(index)) {
+ // Quick check for zero by itself
+ if (index == (len - 1))
+ return 0;
+
+ char c = value.charAt(index + 1);
+
+ if ('x' == c || 'X' == c) { // check for hex
+ index += 2;
+ base = 16;
+ } else { // check for octal
+ index++;
+ base = 8;
+ }
+ } else if ('#' == value.charAt(index)) {
+ index++;
+ base = 16;
+ }
+
+ return (int) Long.parseLong(value.substring(index), base);
+ }
+
+ /**
+ * Flatten a Map into an output stream as XML. The map can later be
+ * read back with readMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param out Where to write the XML data.
+ *
+ * @see #writeMapXml(Map, String, XmlSerializer)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ */
+ public static final void writeMapXml(Map val, OutputStream out)
+ throws XmlPullParserException, IOException {
+ XmlSerializer serializer = new FastXmlSerializer();
+ serializer.setOutput(out, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+ writeMapXml(val, null, serializer);
+ serializer.endDocument();
+ }
+
+ /**
+ * Flatten a List into an output stream as XML. The list can later be
+ * read back with readListXml().
+ *
+ * @param val The list to be flattened.
+ * @param out Where to write the XML data.
+ *
+ * @see #writeListXml(List, String, XmlSerializer)
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readListXml
+ */
+ public static final void writeListXml(List val, OutputStream out)
+ throws XmlPullParserException, IOException
+ {
+ XmlSerializer serializer = Xml.newSerializer();
+ serializer.setOutput(out, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+ writeListXml(val, null, serializer);
+ serializer.endDocument();
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the map into.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ */
+ public static final void writeMapXml(Map val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ writeMapXml(val, name, out, null);
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml().
+ *
+ * @param val The map to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the map into.
+ * @param callback Method to call when an Object type is not recognized.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ *
+ * @hide
+ */
+ public static final void writeMapXml(Map val, String name, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "map");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ writeMapXml(val, out, callback);
+
+ out.endTag(null, "map");
+ }
+
+ /**
+ * Flatten a Map into an XmlSerializer. The map can later be read back
+ * with readThisMapXml(). This method presumes that the start tag and
+ * name attribute have already been written and does not write an end tag.
+ *
+ * @param val The map to be flattened.
+ * @param out XmlSerializer to write the map into.
+ *
+ * @see #writeMapXml(Map, OutputStream)
+ * @see #writeListXml
+ * @see #writeValueXml
+ * @see #readMapXml
+ *
+ * @hide
+ */
+ public static final void writeMapXml(Map val, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+ if (val == null) {
+ return;
+ }
+
+ Set s = val.entrySet();
+ Iterator i = s.iterator();
+
+ while (i.hasNext()) {
+ Map.Entry e = (Map.Entry)i.next();
+ writeValueXml(e.getValue(), (String)e.getKey(), out, callback);
+ }
+ }
+
+ /**
+ * Flatten a List into an XmlSerializer. The list can later be read back
+ * with readThisListXml().
+ *
+ * @param val The list to be flattened.
+ * @param name Name attribute to include with this list's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the list into.
+ *
+ * @see #writeListXml(List, OutputStream)
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readListXml
+ */
+ public static final void writeListXml(List val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException
+ {
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "list");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ int N = val.size();
+ int i=0;
+ while (i < N) {
+ writeValueXml(val.get(i), null, out);
+ i++;
+ }
+
+ out.endTag(null, "list");
+ }
+
+ public static final void writeSetXml(Set val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "set");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ for (Object v : val) {
+ writeValueXml(v, null, out);
+ }
+
+ out.endTag(null, "set");
+ }
+
+ /**
+ * Flatten a byte[] into an XmlSerializer. The list can later be read back
+ * with readThisByteArrayXml().
+ *
+ * @param val The byte array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ */
+ public static final void writeByteArrayXml(byte[] val, String name,
+ XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "byte-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ StringBuilder sb = new StringBuilder(val.length*2);
+ for (int i=0; i<N; i++) {
+ int b = val[i];
+ int h = b>>4;
+ sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+ h = b&0xff;
+ sb.append(h >= 10 ? ('a'+h-10) : ('0'+h));
+ }
+
+ out.text(sb.toString());
+
+ out.endTag(null, "byte-array");
+ }
+
+ /**
+ * Flatten an int[] into an XmlSerializer. The list can later be read back
+ * with readThisIntArrayXml().
+ *
+ * @param val The int array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeIntArrayXml(int[] val, String name,
+ XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "int-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Integer.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "int-array");
+ }
+
+ /**
+ * Flatten a long[] into an XmlSerializer. The list can later be read back
+ * with readThisLongArrayXml().
+ *
+ * @param val The long array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeLongArrayXml(long[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "long-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Long.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "long-array");
+ }
+
+ /**
+ * Flatten a double[] into an XmlSerializer. The list can later be read back
+ * with readThisDoubleArrayXml().
+ *
+ * @param val The double array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeDoubleArrayXml(double[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "double-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Double.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "double-array");
+ }
+
+ /**
+ * Flatten a String[] into an XmlSerializer. The list can later be read back
+ * with readThisStringArrayXml().
+ *
+ * @param val The String array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeStringArrayXml(String[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "string-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", val[i]);
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "string-array");
+ }
+
+ /**
+ * Flatten a boolean[] into an XmlSerializer. The list can later be read back
+ * with readThisBooleanArrayXml().
+ *
+ * @param val The boolean array to be flattened.
+ * @param name Name attribute to include with this array's tag, or null for
+ * none.
+ * @param out XmlSerializer to write the array into.
+ *
+ * @see #writeMapXml
+ * @see #writeValueXml
+ * @see #readThisIntArrayXml
+ */
+ public static final void writeBooleanArrayXml(boolean[] val, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+
+ if (val == null) {
+ out.startTag(null, "null");
+ out.endTag(null, "null");
+ return;
+ }
+
+ out.startTag(null, "boolean-array");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+
+ final int N = val.length;
+ out.attribute(null, "num", Integer.toString(N));
+
+ for (int i=0; i<N; i++) {
+ out.startTag(null, "item");
+ out.attribute(null, "value", Boolean.toString(val[i]));
+ out.endTag(null, "item");
+ }
+
+ out.endTag(null, "boolean-array");
+ }
+
+ /**
+ * Flatten an object's value into an XmlSerializer. The value can later
+ * be read back with readThisValueXml().
+ *
+ * Currently supported value types are: null, String, Integer, Long,
+ * Float, Double Boolean, Map, List.
+ *
+ * @param v The object to be flattened.
+ * @param name Name attribute to include with this value's tag, or null
+ * for none.
+ * @param out XmlSerializer to write the object into.
+ *
+ * @see #writeMapXml
+ * @see #writeListXml
+ * @see #readValueXml
+ */
+ public static final void writeValueXml(Object v, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException {
+ writeValueXml(v, name, out, null);
+ }
+
+ /**
+ * Flatten an object's value into an XmlSerializer. The value can later
+ * be read back with readThisValueXml().
+ *
+ * Currently supported value types are: null, String, Integer, Long,
+ * Float, Double Boolean, Map, List.
+ *
+ * @param v The object to be flattened.
+ * @param name Name attribute to include with this value's tag, or null
+ * for none.
+ * @param out XmlSerializer to write the object into.
+ * @param callback Handler for Object types not recognized.
+ *
+ * @see #writeMapXml
+ * @see #writeListXml
+ * @see #readValueXml
+ */
+ private static final void writeValueXml(Object v, String name, XmlSerializer out,
+ WriteMapCallback callback) throws XmlPullParserException, IOException {
+ String typeStr;
+ if (v == null) {
+ out.startTag(null, "null");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.endTag(null, "null");
+ return;
+ } else if (v instanceof String) {
+ out.startTag(null, "string");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.text(v.toString());
+ out.endTag(null, "string");
+ return;
+ } else if (v instanceof Integer) {
+ typeStr = "int";
+ } else if (v instanceof Long) {
+ typeStr = "long";
+ } else if (v instanceof Float) {
+ typeStr = "float";
+ } else if (v instanceof Double) {
+ typeStr = "double";
+ } else if (v instanceof Boolean) {
+ typeStr = "boolean";
+ } else if (v instanceof byte[]) {
+ writeByteArrayXml((byte[])v, name, out);
+ return;
+ } else if (v instanceof int[]) {
+ writeIntArrayXml((int[])v, name, out);
+ return;
+ } else if (v instanceof long[]) {
+ writeLongArrayXml((long[])v, name, out);
+ return;
+ } else if (v instanceof double[]) {
+ writeDoubleArrayXml((double[])v, name, out);
+ return;
+ } else if (v instanceof String[]) {
+ writeStringArrayXml((String[])v, name, out);
+ return;
+ } else if (v instanceof boolean[]) {
+ writeBooleanArrayXml((boolean[])v, name, out);
+ return;
+ } else if (v instanceof Map) {
+ writeMapXml((Map)v, name, out);
+ return;
+ } else if (v instanceof List) {
+ writeListXml((List) v, name, out);
+ return;
+ } else if (v instanceof Set) {
+ writeSetXml((Set) v, name, out);
+ return;
+ } else if (v instanceof CharSequence) {
+ // XXX This is to allow us to at least write something if
+ // we encounter styled text... but it means we will drop all
+ // of the styling information. :(
+ out.startTag(null, "string");
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.text(v.toString());
+ out.endTag(null, "string");
+ return;
+ } else if (callback != null) {
+ callback.writeUnknownObject(v, name, out);
+ return;
+ } else {
+ throw new RuntimeException("writeValueXml: unable to write value " + v);
+ }
+
+ out.startTag(null, typeStr);
+ if (name != null) {
+ out.attribute(null, "name", name);
+ }
+ out.attribute(null, "value", v.toString());
+ out.endTag(null, typeStr);
+ }
+
+ /**
+ * Read a HashMap from an InputStream containing XML. The stream can
+ * previously have been written by writeMapXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return HashMap The resulting map.
+ *
+ * @see #readListXml
+ * @see #readValueXml
+ * @see #readThisMapXml
+ * #see #writeMapXml
+ */
+ @SuppressWarnings("unchecked")
+ public static final HashMap<String, ?> readMapXml(InputStream in)
+ throws XmlPullParserException, IOException
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, StandardCharsets.UTF_8.name());
+ return (HashMap<String, ?>) readValueXml(parser, new String[1]);
+ }
+
+ /**
+ * Read an ArrayList from an InputStream containing XML. The stream can
+ * previously have been written by writeListXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return ArrayList The resulting list.
+ *
+ * @see #readMapXml
+ * @see #readValueXml
+ * @see #readThisListXml
+ * @see #writeListXml
+ */
+ public static final ArrayList readListXml(InputStream in)
+ throws XmlPullParserException, IOException
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, StandardCharsets.UTF_8.name());
+ return (ArrayList)readValueXml(parser, new String[1]);
+ }
+
+
+ /**
+ * Read a HashSet from an InputStream containing XML. The stream can
+ * previously have been written by writeSetXml().
+ *
+ * @param in The InputStream from which to read.
+ *
+ * @return HashSet The resulting set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readValueXml
+ * @see #readThisSetXml
+ * @see #writeSetXml
+ */
+ public static final HashSet readSetXml(InputStream in)
+ throws XmlPullParserException, IOException {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(in, null);
+ return (HashSet) readValueXml(parser, new String[1]);
+ }
+
+ /**
+ * Read a HashMap object from an XmlPullParser. The XML data could
+ * previously have been generated by writeMapXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the map.
+ *
+ * @param parser The XmlPullParser from which to read the map data.
+ * @param endTag Name of the tag that will end the map, usually "map".
+ * @param name An array of one string, used to return the name attribute
+ * of the map's tag.
+ *
+ * @return HashMap The newly generated map.
+ *
+ * @see #readMapXml
+ */
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+ return readThisMapXml(parser, endTag, name, null);
+ }
+
+ /**
+ * Read a HashMap object from an XmlPullParser. The XML data could
+ * previously have been generated by writeMapXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the map.
+ *
+ * @param parser The XmlPullParser from which to read the map data.
+ * @param endTag Name of the tag that will end the map, usually "map".
+ * @param name An array of one string, used to return the name attribute
+ * of the map's tag.
+ *
+ * @return HashMap The newly generated map.
+ *
+ * @see #readMapXml
+ * @hide
+ */
+ public static final HashMap<String, ?> readThisMapXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback)
+ throws XmlPullParserException, IOException
+ {
+ HashMap<String, Object> map = new HashMap<String, Object>();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, false);
+ map.put(name[0], val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return map;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Like {@link #readThisMapXml}, but returns an ArrayMap instead of HashMap.
+ * @hide
+ */
+ public static final ArrayMap<String, ?> readThisArrayMapXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback)
+ throws XmlPullParserException, IOException
+ {
+ ArrayMap<String, Object> map = new ArrayMap<>();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, true);
+ map.put(name[0], val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return map;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read an ArrayList object from an XmlPullParser. The XML data could
+ * previously have been generated by writeListXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return HashMap The newly generated list.
+ *
+ * @see #readListXml
+ */
+ public static final ArrayList readThisListXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+ return readThisListXml(parser, endTag, name, null, false);
+ }
+
+ /**
+ * Read an ArrayList object from an XmlPullParser. The XML data could
+ * previously have been generated by writeListXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return HashMap The newly generated list.
+ *
+ * @see #readListXml
+ */
+ private static final ArrayList readThisListXml(XmlPullParser parser, String endTag,
+ String[] name, ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ ArrayList list = new ArrayList();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, arrayMap);
+ list.add(val);
+ //System.out.println("Adding to list: " + val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return list;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a HashSet object from an XmlPullParser. The XML data could previously
+ * have been generated by writeSetXml(). The XmlPullParser must be positioned
+ * <em>after</em> the tag that begins the set.
+ *
+ * @param parser The XmlPullParser from which to read the set data.
+ * @param endTag Name of the tag that will end the set, usually "set".
+ * @param name An array of one string, used to return the name attribute
+ * of the set's tag.
+ *
+ * @return HashSet The newly generated set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readSetXml
+ */
+ public static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+ return readThisSetXml(parser, endTag, name, null, false);
+ }
+
+ /**
+ * Read a HashSet object from an XmlPullParser. The XML data could previously
+ * have been generated by writeSetXml(). The XmlPullParser must be positioned
+ * <em>after</em> the tag that begins the set.
+ *
+ * @param parser The XmlPullParser from which to read the set data.
+ * @param endTag Name of the tag that will end the set, usually "set".
+ * @param name An array of one string, used to return the name attribute
+ * of the set's tag.
+ *
+ * @return HashSet The newly generated set.
+ *
+ * @throws XmlPullParserException
+ * @throws IOException
+ *
+ * @see #readSetXml
+ * @hide
+ */
+ private static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name,
+ ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ HashSet set = new HashSet();
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ Object val = readThisValueXml(parser, name, callback, arrayMap);
+ set.add(val);
+ //System.out.println("Adding to set: " + val);
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return set;
+ }
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: " + parser.getName());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read an int[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeIntArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated int[].
+ *
+ * @see #readListXml
+ */
+ public static final int[] readThisIntArrayXml(XmlPullParser parser,
+ String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException(
+ "Need num attribute in byte-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in num attribute in byte-array");
+ }
+ parser.next();
+
+ int[] array = new int[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Integer.parseInt(
+ parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException(
+ "Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException(
+ "Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException(
+ "Expected " + endTag + " end tag at: "
+ + parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a long[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeLongArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "list".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated long[].
+ *
+ * @see #readListXml
+ */
+ public static final long[] readThisLongArrayXml(XmlPullParser parser,
+ String endTag, String[] name)
+ throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in long-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in long-array");
+ }
+ parser.next();
+
+ long[] array = new long[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Long.parseLong(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a double[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeDoubleArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "double-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated double[].
+ *
+ * @see #readListXml
+ */
+ public static final double[] readThisDoubleArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in double-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in double-array");
+ }
+ parser.next();
+
+ double[] array = new double[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Double.parseDouble(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a String[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeStringArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "string-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated String[].
+ *
+ * @see #readListXml
+ */
+ public static final String[] readThisStringArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in string-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in string-array");
+ }
+ parser.next();
+
+ String[] array = new String[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = parser.getAttributeValue(null, "value");
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a boolean[] object from an XmlPullParser. The XML data could
+ * previously have been generated by writeBooleanArrayXml(). The XmlPullParser
+ * must be positioned <em>after</em> the tag that begins the list.
+ *
+ * @param parser The XmlPullParser from which to read the list data.
+ * @param endTag Name of the tag that will end the list, usually "string-array".
+ * @param name An array of one string, used to return the name attribute
+ * of the list's tag.
+ *
+ * @return Returns a newly generated boolean[].
+ *
+ * @see #readListXml
+ */
+ public static final boolean[] readThisBooleanArrayXml(XmlPullParser parser, String endTag,
+ String[] name) throws XmlPullParserException, IOException {
+
+ int num;
+ try {
+ num = Integer.parseInt(parser.getAttributeValue(null, "num"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need num attribute in string-array");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in num attribute in string-array");
+ }
+ parser.next();
+
+ boolean[] array = new boolean[num];
+ int i = 0;
+
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ if (parser.getName().equals("item")) {
+ try {
+ array[i] = Boolean.valueOf(parser.getAttributeValue(null, "value"));
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in item");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException("Not a number in value attribute in item");
+ }
+ } else {
+ throw new XmlPullParserException("Expected item tag at: " + parser.getName());
+ }
+ } else if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(endTag)) {
+ return array;
+ } else if (parser.getName().equals("item")) {
+ i++;
+ } else {
+ throw new XmlPullParserException("Expected " + endTag + " end tag at: " +
+ parser.getName());
+ }
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException("Document ended before " + endTag + " end tag");
+ }
+
+ /**
+ * Read a flattened object from an XmlPullParser. The XML data could
+ * previously have been written with writeMapXml(), writeListXml(), or
+ * writeValueXml(). The XmlPullParser must be positioned <em>at</em> the
+ * tag that defines the value.
+ *
+ * @param parser The XmlPullParser from which to read the object.
+ * @param name An array of one string, used to return the name attribute
+ * of the value's tag.
+ *
+ * @return Object The newly generated value object.
+ *
+ * @see #readMapXml
+ * @see #readListXml
+ * @see #writeValueXml
+ */
+ public static final Object readValueXml(XmlPullParser parser, String[] name)
+ throws XmlPullParserException, IOException
+ {
+ int eventType = parser.getEventType();
+ do {
+ if (eventType == parser.START_TAG) {
+ return readThisValueXml(parser, name, null, false);
+ } else if (eventType == parser.END_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected end tag at: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ throw new XmlPullParserException(
+ "Unexpected text: " + parser.getText());
+ }
+ eventType = parser.next();
+ } while (eventType != parser.END_DOCUMENT);
+
+ throw new XmlPullParserException(
+ "Unexpected end of document");
+ }
+
+ private static final Object readThisValueXml(XmlPullParser parser, String[] name,
+ ReadMapCallback callback, boolean arrayMap)
+ throws XmlPullParserException, IOException {
+ final String valueName = parser.getAttributeValue(null, "name");
+ final String tagName = parser.getName();
+
+ //System.out.println("Reading this value tag: " + tagName + ", name=" + valueName);
+
+ Object res;
+
+ if (tagName.equals("null")) {
+ res = null;
+ } else if (tagName.equals("string")) {
+ String value = "";
+ int eventType;
+ while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+ if (eventType == parser.END_TAG) {
+ if (parser.getName().equals("string")) {
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + value);
+ return value;
+ }
+ throw new XmlPullParserException(
+ "Unexpected end tag in <string>: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ value += parser.getText();
+ } else if (eventType == parser.START_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected start tag in <string>: " + parser.getName());
+ }
+ }
+ throw new XmlPullParserException(
+ "Unexpected end of document in <string>");
+ } else if ((res = readThisPrimitiveValueXml(parser, tagName)) != null) {
+ // all work already done by readThisPrimitiveValueXml
+ } else if (tagName.equals("int-array")) {
+ res = readThisIntArrayXml(parser, "int-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("long-array")) {
+ res = readThisLongArrayXml(parser, "long-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("double-array")) {
+ res = readThisDoubleArrayXml(parser, "double-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("string-array")) {
+ res = readThisStringArrayXml(parser, "string-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("boolean-array")) {
+ res = readThisBooleanArrayXml(parser, "boolean-array", name);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("map")) {
+ parser.next();
+ res = arrayMap
+ ? readThisArrayMapXml(parser, "map", name, callback)
+ : readThisMapXml(parser, "map", name, callback);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("list")) {
+ parser.next();
+ res = readThisListXml(parser, "list", name, callback, arrayMap);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (tagName.equals("set")) {
+ parser.next();
+ res = readThisSetXml(parser, "set", name, callback, arrayMap);
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ } else if (callback != null) {
+ res = callback.readThisUnknownObjectXml(parser, tagName);
+ name[0] = valueName;
+ return res;
+ } else {
+ throw new XmlPullParserException("Unknown tag: " + tagName);
+ }
+
+ // Skip through to end tag.
+ int eventType;
+ while ((eventType = parser.next()) != parser.END_DOCUMENT) {
+ if (eventType == parser.END_TAG) {
+ if (parser.getName().equals(tagName)) {
+ name[0] = valueName;
+ //System.out.println("Returning value for " + valueName + ": " + res);
+ return res;
+ }
+ throw new XmlPullParserException(
+ "Unexpected end tag in <" + tagName + ">: " + parser.getName());
+ } else if (eventType == parser.TEXT) {
+ throw new XmlPullParserException(
+ "Unexpected text in <" + tagName + ">: " + parser.getName());
+ } else if (eventType == parser.START_TAG) {
+ throw new XmlPullParserException(
+ "Unexpected start tag in <" + tagName + ">: " + parser.getName());
+ }
+ }
+ throw new XmlPullParserException(
+ "Unexpected end of document in <" + tagName + ">");
+ }
+
+ private static final Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName)
+ throws XmlPullParserException, IOException
+ {
+ try {
+ if (tagName.equals("int")) {
+ return Integer.parseInt(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("long")) {
+ return Long.valueOf(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("float")) {
+ return new Float(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("double")) {
+ return new Double(parser.getAttributeValue(null, "value"));
+ } else if (tagName.equals("boolean")) {
+ return Boolean.valueOf(parser.getAttributeValue(null, "value"));
+ } else {
+ return null;
+ }
+ } catch (NullPointerException e) {
+ throw new XmlPullParserException("Need value attribute in <" + tagName + ">");
+ } catch (NumberFormatException e) {
+ throw new XmlPullParserException(
+ "Not a number in value attribute in <" + tagName + ">");
+ }
+ }
+
+ public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
+ {
+ int type;
+ while ((type=parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+
+ if (type != parser.START_TAG) {
+ throw new XmlPullParserException("No start tag found");
+ }
+
+ if (!parser.getName().equals(firstElementName)) {
+ throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+ ", expected " + firstElementName);
+ }
+ }
+
+ public static final void nextElement(XmlPullParser parser) throws XmlPullParserException, IOException
+ {
+ int type;
+ while ((type=parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+ }
+
+ public static boolean nextElementWithin(XmlPullParser parser, int outerDepth)
+ throws IOException, XmlPullParserException {
+ for (;;) {
+ int type = parser.next();
+ if (type == XmlPullParser.END_DOCUMENT
+ || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) {
+ return false;
+ }
+ if (type == XmlPullParser.START_TAG
+ && parser.getDepth() == outerDepth + 1) {
+ return true;
+ }
+ }
+ }
+
+ public static int readIntAttribute(XmlPullParser in, String name, int defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static int readIntAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as int");
+ }
+ }
+
+ public static void writeIntAttribute(XmlSerializer out, String name, int value)
+ throws IOException {
+ out.attribute(null, name, Integer.toString(value));
+ }
+
+ public static long readLongAttribute(XmlPullParser in, String name, long defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static long readLongAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Long.parseLong(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as long");
+ }
+ }
+
+ public static void writeLongAttribute(XmlSerializer out, String name, long value)
+ throws IOException {
+ out.attribute(null, name, Long.toString(value));
+ }
+
+ public static float readFloatAttribute(XmlPullParser in, String name) throws IOException {
+ final String value = in.getAttributeValue(null, name);
+ try {
+ return Float.parseFloat(value);
+ } catch (NumberFormatException e) {
+ throw new ProtocolException("problem parsing " + name + "=" + value + " as long");
+ }
+ }
+
+ public static void writeFloatAttribute(XmlSerializer out, String name, float value)
+ throws IOException {
+ out.attribute(null, name, Float.toString(value));
+ }
+
+ public static boolean readBooleanAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ return Boolean.parseBoolean(value);
+ }
+
+ public static boolean readBooleanAttribute(XmlPullParser in, String name,
+ boolean defaultValue) {
+ final String value = in.getAttributeValue(null, name);
+ if (value == null) {
+ return defaultValue;
+ } else {
+ return Boolean.parseBoolean(value);
+ }
+ }
+
+ public static void writeBooleanAttribute(XmlSerializer out, String name, boolean value)
+ throws IOException {
+ out.attribute(null, name, Boolean.toString(value));
+ }
+
+ public static Uri readUriAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ return (value != null) ? Uri.parse(value) : null;
+ }
+
+ public static void writeUriAttribute(XmlSerializer out, String name, Uri value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, value.toString());
+ }
+ }
+
+ public static String readStringAttribute(XmlPullParser in, String name) {
+ return in.getAttributeValue(null, name);
+ }
+
+ public static void writeStringAttribute(XmlSerializer out, String name, String value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, value);
+ }
+ }
+
+ public static byte[] readByteArrayAttribute(XmlPullParser in, String name) {
+ final String value = in.getAttributeValue(null, name);
+ if (value != null) {
+ return Base64.decode(value, Base64.DEFAULT);
+ } else {
+ return null;
+ }
+ }
+
+ public static void writeByteArrayAttribute(XmlSerializer out, String name, byte[] value)
+ throws IOException {
+ if (value != null) {
+ out.attribute(null, name, Base64.encodeToString(value, Base64.DEFAULT));
+ }
+ }
+
+ public static Bitmap readBitmapAttribute(XmlPullParser in, String name) {
+ final byte[] value = readByteArrayAttribute(in, name);
+ if (value != null) {
+ return BitmapFactory.decodeByteArray(value, 0, value.length);
+ } else {
+ return null;
+ }
+ }
+
+ @Deprecated
+ public static void writeBitmapAttribute(XmlSerializer out, String name, Bitmap value)
+ throws IOException {
+ if (value != null) {
+ final ByteArrayOutputStream os = new ByteArrayOutputStream();
+ value.compress(CompressFormat.PNG, 90, os);
+ writeByteArrayAttribute(out, name, os.toByteArray());
+ }
+ }
+
+ /** @hide */
+ public interface WriteMapCallback {
+ /**
+ * Called from writeMapXml when an Object type is not recognized. The implementer
+ * must write out the entire element including start and end tags.
+ *
+ * @param v The object to be written out
+ * @param name The mapping key for v. Must be written into the "name" attribute of the
+ * start tag.
+ * @param out The XML output stream.
+ * @throws XmlPullParserException on unrecognized Object type.
+ * @throws IOException on XmlSerializer serialization errors.
+ * @hide
+ */
+ public void writeUnknownObject(Object v, String name, XmlSerializer out)
+ throws XmlPullParserException, IOException;
+ }
+
+ /** @hide */
+ public interface ReadMapCallback {
+ /**
+ * Called from readThisMapXml when a START_TAG is not recognized. The input stream
+ * is positioned within the start tag so that attributes can be read using in.getAttribute.
+ *
+ * @param in the XML input stream
+ * @param tag the START_TAG that was not recognized.
+ * @return the Object parsed from the stream which will be put into the map.
+ * @throws XmlPullParserException if the START_TAG is not recognized.
+ * @throws IOException on XmlPullParser serialization errors.
+ * @hide
+ */
+ public Object readThisUnknownObjectXml(XmlPullParser in, String tag)
+ throws XmlPullParserException, IOException;
+ }
+}