You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by ve...@apache.org on 2013/11/02 00:42:11 UTC

[10/13] FALCON-143 Enable Late data handling for hive tables. Contributed by Venkatesh Seetharam

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/java/org/apache/falcon/late/LateDataHandlerIT.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/falcon/late/LateDataHandlerIT.java b/webapp/src/test/java/org/apache/falcon/late/LateDataHandlerIT.java
new file mode 100644
index 0000000..6cfa4e6
--- /dev/null
+++ b/webapp/src/test/java/org/apache/falcon/late/LateDataHandlerIT.java
@@ -0,0 +1,214 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.falcon.late;
+
+import org.apache.falcon.catalog.CatalogPartition;
+import org.apache.falcon.catalog.CatalogServiceFactory;
+import org.apache.falcon.catalog.HiveCatalogService;
+import org.apache.falcon.entity.ClusterHelper;
+import org.apache.falcon.entity.v0.cluster.Cluster;
+import org.apache.falcon.entity.v0.cluster.Interfacetype;
+import org.apache.falcon.latedata.LateDataHandler;
+import org.apache.falcon.resource.TestContext;
+import org.apache.falcon.util.FSUtils;
+import org.apache.falcon.util.HiveTestUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hcatalog.api.HCatAddPartitionDesc;
+import org.apache.hcatalog.api.HCatClient;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Integration tests for LateDataHandler with table storage.
+ */
+@Test
+public class LateDataHandlerIT {
+
+    private static final String DATABASE_NAME = "falcon_db";
+    private static final String TABLE_NAME = "input_table";
+    private static final String PARTITION_VALUE = "2012-04-21-00"; // ${YEAR}-${MONTH}-${DAY}-${HOUR}
+    private static final String LATE_DATA_DIR = "/falcon/test/late/foo/logs/latedata/2013-09-24-00-00/primary-cluster";
+
+    private final TestContext context = new TestContext();
+    private String storageUrl;
+    private String metastoreUrl;
+    private FileSystem fs;
+
+    @BeforeClass
+    public void prepare() throws Exception {
+        TestContext.cleanupStore();
+
+        String filePath = context.overlayParametersOverTemplate(
+                TestContext.CLUSTER_TEMPLATE, context.getUniqueOverlay());
+        context.setCluster(filePath);
+
+        Cluster cluster = context.getCluster().getCluster();
+        fs = FileSystem.get(ClusterHelper.getConfiguration(cluster));
+        storageUrl = ClusterHelper.getStorageUrl(cluster);
+        metastoreUrl = ClusterHelper.getInterface(cluster, Interfacetype.REGISTRY).getEndpoint();
+
+        copyDataAndScriptsToHDFS();
+
+        setupHiveMetastore();
+    }
+
+    private void copyDataAndScriptsToHDFS() throws IOException {
+        // copyTestDataToHDFS
+        FSUtils.copyResourceToHDFS(
+                "/apps/data/data.txt", "data.txt", storageUrl + "/falcon/test/input/" + PARTITION_VALUE);
+    }
+
+    private void setupHiveMetastore() throws Exception {
+        HiveTestUtils.createDatabase(metastoreUrl, DATABASE_NAME);
+        final List<String> partitionKeys = Arrays.asList("ds");
+        HiveTestUtils.createTable(metastoreUrl, DATABASE_NAME, TABLE_NAME, partitionKeys);
+        final String sourcePath = storageUrl + "/falcon/test/input/" + PARTITION_VALUE;
+        HiveTestUtils.loadData(metastoreUrl, DATABASE_NAME, TABLE_NAME, sourcePath, PARTITION_VALUE);
+    }
+
+    @AfterClass
+    public void tearDown() throws Exception {
+        HiveTestUtils.dropTable(metastoreUrl, DATABASE_NAME, TABLE_NAME);
+        HiveTestUtils.dropDatabase(metastoreUrl, DATABASE_NAME);
+
+        cleanupFS();
+    }
+
+    private void cleanupFS() throws IOException {
+        fs.delete(new Path("/falcon/test/input/" + PARTITION_VALUE), true);
+        fs.delete(new Path("/apps/data"), true);
+        fs.delete(new Path(LATE_DATA_DIR), true);
+    }
+
+    @Test
+    public void testLateDataHandlerForTableStorage() throws Exception {
+        String lateDataDir = storageUrl + LATE_DATA_DIR;
+        String feedUriTemplate = metastoreUrl.replace("thrift", "hcat") + "/"
+                + DATABASE_NAME + "/" + TABLE_NAME + "/ds=" + PARTITION_VALUE;
+
+        String[] args = {
+            "-out", lateDataDir,
+            "-paths", feedUriTemplate,
+            "-falconInputFeeds", "foo",
+            "-falconInputFeedStorageTypes", "TABLE",
+        };
+
+
+        LateDataHandler.main(args);
+
+        Path lateDataPath = new Path(storageUrl + LATE_DATA_DIR);
+        Assert.assertTrue(fs.exists(lateDataPath));
+
+        BufferedReader in = new BufferedReader(new InputStreamReader(fs.open(lateDataPath)));
+        String line;
+        Map<String, Long> recordedMetrics = new LinkedHashMap<String, Long>();
+        while ((line = in.readLine()) != null) {
+            if (line.isEmpty()) {
+                continue;
+            }
+            int index = line.indexOf('=');
+            String key = line.substring(0, index);
+            long size = Long.parseLong(line.substring(index + 1));
+            recordedMetrics.put(key, size);
+        }
+
+        LateDataHandler lateDataHandler = new LateDataHandler();
+        final long metric = lateDataHandler.computeStorageMetric(args[3], args[7], new Configuration());
+        Assert.assertEquals(recordedMetrics.get("foo").longValue(), metric);
+
+        final String changes = lateDataHandler.detectChanges(lateDataPath, recordedMetrics, new Configuration());
+        Assert.assertEquals("", changes);
+    }
+
+    @Test
+    public void testLateDataHandlerForTableStorageWithLate() throws Exception {
+        String lateDataDir = storageUrl + LATE_DATA_DIR;
+        String feedUriTemplate = metastoreUrl.replace("thrift", "hcat") + "/"
+                + DATABASE_NAME + "/" + TABLE_NAME + "/ds=" + PARTITION_VALUE;
+
+        String[] args = {
+            "-out", lateDataDir,
+            "-paths", feedUriTemplate,
+            "-falconInputFeeds", "foo",
+            "-falconInputFeedStorageTypes", "TABLE",
+        };
+
+        LateDataHandler.main(args);
+
+        Path lateDataPath = new Path(storageUrl + LATE_DATA_DIR);
+        Assert.assertTrue(fs.exists(lateDataPath));
+
+        BufferedReader in = new BufferedReader(new InputStreamReader(fs.open(lateDataPath)));
+        String line;
+        Map<String, Long> recordedMetrics = new LinkedHashMap<String, Long>();
+        while ((line = in.readLine()) != null) {
+            if (line.isEmpty()) {
+                continue;
+            }
+            int index = line.indexOf('=');
+            String key = line.substring(0, index);
+            long size = Long.parseLong(line.substring(index + 1));
+            recordedMetrics.put(key, size);
+        }
+
+        reinstatePartition();
+
+        LateDataHandler lateDataHandler = new LateDataHandler();
+        long metric = lateDataHandler.computeStorageMetric(args[3], args[7], new Configuration());
+        Assert.assertFalse(recordedMetrics.get("foo") == metric);
+
+        Map<String, Long> computedMetrics = new LinkedHashMap<String, Long>();
+        computedMetrics.put("foo", metric);
+
+        String changes = lateDataHandler.detectChanges(lateDataPath, computedMetrics, new Configuration());
+        Assert.assertEquals("foo", changes);
+    }
+
+    private void reinstatePartition() throws Exception {
+        final HCatClient client = HiveCatalogService.get(metastoreUrl);
+
+        Map<String, String> partitionSpec = new HashMap<String, String>();
+        partitionSpec.put("ds", PARTITION_VALUE);
+
+        client.dropPartitions(DATABASE_NAME, TABLE_NAME, partitionSpec, true);
+
+        Thread.sleep(1000); // sleep so the next add is delayed a bit
+
+        HCatAddPartitionDesc reinstatedPartition = HCatAddPartitionDesc.create(
+                DATABASE_NAME, TABLE_NAME, null, partitionSpec).build();
+        client.addPartition(reinstatedPartition);
+
+        CatalogPartition reInstatedPartition = CatalogServiceFactory.getCatalogService().getPartition(
+                metastoreUrl, DATABASE_NAME, TABLE_NAME, partitionSpec);
+        Assert.assertNotNull(reInstatedPartition);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/java/org/apache/falcon/lifecycle/TableStorageFeedReplicationIT.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/falcon/lifecycle/TableStorageFeedReplicationIT.java b/webapp/src/test/java/org/apache/falcon/lifecycle/TableStorageFeedReplicationIT.java
index 57bccf7..256d3b5 100644
--- a/webapp/src/test/java/org/apache/falcon/lifecycle/TableStorageFeedReplicationIT.java
+++ b/webapp/src/test/java/org/apache/falcon/lifecycle/TableStorageFeedReplicationIT.java
@@ -59,7 +59,7 @@ public class TableStorageFeedReplicationIT {
     private static final String TARGET_DATABASE_NAME = "tgt_demo_db";
     private static final String TARGET_TABLE_NAME = "customer_bcp";
 
-    private static final String PARTITION_VALUE = "2013-10-24-00"; // ${YEAR}-${MONTH}-${DAY}-${HOUR}
+    private static final String PARTITION_VALUE = "2013102400"; // ${YEAR}${MONTH}${DAY}${HOUR}
 
     private final TestContext sourceContext = new TestContext();
     private String sourceMetastoreUrl;

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/resources/apps/data/data.txt
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/apps/data/data.txt b/webapp/src/test/resources/apps/data/data.txt
index f0ff9e8..fc1c491 100644
--- a/webapp/src/test/resources/apps/data/data.txt
+++ b/webapp/src/test/resources/apps/data/data.txt
@@ -1,1000 +1,1000 @@
-0,238val_238
-1,86val_86
-2,311val_311
-3,27val_27
-4,165val_165
-5,409val_409
-6,255val_255
-7,278val_278
-8,98val_98
-9,484val_484
-10,265val_265
-11,193val_193
-12,401val_401
-13,150val_150
-14,273val_273
-15,224val_224
-17,369val_369
-18,66val_66
-19,128val_128
-20,213val_213
-21,146val_146
-22,406val_406
-23,429val_429
-24,374val_374
-25,152val_152
-26,469val_469
-27,145val_145
-28,495val_495
-29,37val_37
-30,327val_327
-31,281val_281
-32,277val_277
-33,209val_209
-34,15val_15
-35,82val_82
-36,403val_403
-37,166val_166
-38,417val_417
-39,430val_430
-40,252val_252
-41,292val_292
-42,219val_219
-43,287val_287
-44,153val_153
-45,193val_193
-46,338val_338
-47,446val_446
-48,459val_459
-49,394val_394
-50,237val_237
-51,482val_482
-52,174val_174
-53,413val_413
-54,494val_494
-55,207val_207
-56,199val_199
-57,466val_466
-58,208val_208
-59,174val_174
-60,399val_399
-61,396val_396
-62,247val_247
-63,417val_417
-65,489val_489
-66,162val_162
-67,377val_377
-68,397val_397
-69,309val_309
-70,365val_365
-71,266val_266
-72,439val_439
-73,342val_342
-74,367val_367
-75,325val_325
-76,167val_167
-77,195val_195
-78,475val_475
-79,17val_17
-80,113val_113
-81,155val_155
-82,203val_203
-83,339val_339
-84,0val_0
-85,455val_455
-86,128val_128
-87,311val_311
-88,316val_316
-89,57val_57
-90,302val_302
-91,205val_205
-92,149val_149
-93,438val_438
-94,345val_345
-95,129val_129
-96,170val_170
-97,20val_20
-98,489val_489
-99,157val_157
-100,378val_378
-101,221val_221
-102,92val_92
-103,111val_111
-104,47val_47
-105,72val_72
-106,4val_4
-107,280val_280
-108,35val_35
-109,427val_427
-110,277val_277
-111,208val_208
-112,356val_356
-113,399val_399
-114,169val_169
-115,382val_382
-116,498val_498
-117,125val_125
-118,386val_386
-119,437val_437
-120,469val_469
-121,192val_192
-122,286val_286
-123,187val_187
-125,176val_176
-126,54val_54
-127,459val_459
-128,51val_51
-129,138val_138
-130,103val_103
-131,239val_239
-132,213val_213
-133,216val_216
-134,430val_430
-135,278val_278
-136,176val_176
-137,289val_289
-138,221val_221
-139,65val_65
-140,318val_318
-141,332val_332
-142,311val_311
-143,275val_275
-144,137val_137
-145,241val_241
-146,83val_83
-147,333val_333
-148,180val_180
-149,284val_284
-150,12val_12
-151,230val_230
-152,181val_181
-153,67val_67
-154,260val_260
-155,404val_404
-156,384val_384
-157,489val_489
-158,353val_353
-159,373val_373
-160,272val_272
-161,138val_138
-162,217val_217
-163,84val_84
-164,348val_348
-165,466val_466
-166,58val_58
-167,8val_8
-168,411val_411
-170,230val_230
-171,208val_208
-172,348val_348
-173,24val_24
-174,463val_463
-175,431val_431
-176,179val_179
-177,172val_172
-178,42val_42
-179,129val_129
-180,158val_158
-181,119val_119
-182,496val_496
-183,0val_0
-184,322val_322
-185,197val_197
-186,468val_468
-187,393val_393
-188,454val_454
-189,100val_100
-190,298val_298
-191,199val_199
-192,191val_191
-193,418val_418
-194,96val_96
-195,26val_26
-196,165val_165
-197,327val_327
-198,230val_230
-199,205val_205
-200,120val_120
-201,131val_131
-202,51val_51
-203,404val_404
-204,43val_43
-205,436val_436
-206,156val_156
-207,469val_469
-208,468val_468
-209,308val_308
-210,95val_95
-211,196val_196
-212,288val_288
-213,481val_481
-214,457val_457
-215,98val_98
-216,282val_282
-217,197val_197
-218,187val_187
-219,318val_318
-220,318val_318
-221,409val_409
-222,470val_470
-223,137val_137
-224,369val_369
-225,316val_316
-226,169val_169
-227,413val_413
-228,85val_85
-229,77val_77
-230,0val_0
-231,490val_490
-232,87val_87
-233,364val_364
-234,179val_179
-235,118val_118
-236,134val_134
-237,395val_395
-238,282val_282
-239,138val_138
-240,238val_238
-242,419val_419
-243,15val_15
-244,118val_118
-245,72val_72
-246,90val_90
-247,307val_307
-248,19val_19
-249,435val_435
-250,10val_10
-251,277val_277
-252,273val_273
-253,306val_306
-254,224val_224
-255,309val_309
-256,389val_389
-257,327val_327
-258,242val_242
-259,369val_369
-260,392val_392
-261,272val_272
-262,331val_331
-263,401val_401
-264,242val_242
-265,452val_452
-266,177val_177
-267,226val_226
-268,5val_5
-269,497val_497
-270,402val_402
-272,396val_396
-273,317val_317
-274,395val_395
-275,58val_58
-276,35val_35
-277,336val_336
-278,95val_95
-279,11val_11
-280,168val_168
-281,34val_34
-282,229val_229
-283,233val_233
-284,143val_143
-285,472val_472
-286,322val_322
-287,498val_498
-288,160val_160
-289,195val_195
-290,42val_42
-291,321val_321
-292,430val_430
-293,119val_119
-294,489val_489
-295,458val_458
-296,78val_78
-297,76val_76
-298,41val_41
-299,223val_223
-300,492val_492
-301,149val_149
-302,449val_449
-303,218val_218
-304,228val_228
-305,138val_138
-306,453val_453
-307,30val_30
-308,209val_209
-309,64val_64
-310,468val_468
-311,76val_76
-312,74val_74
-313,342val_342
-314,69val_69
-316,230val_230
-317,33val_33
-318,368val_368
-319,103val_103
-320,296val_296
-321,113val_113
-322,216val_216
-323,367val_367
-324,344val_344
-325,167val_167
-326,274val_274
-327,219val_219
-328,239val_239
-329,485val_485
-330,116val_116
-331,223val_223
-332,256val_256
-333,263val_263
-334,70val_70
-335,487val_487
-336,480val_480
-337,401val_401
-338,288val_288
-339,191val_191
-340,5val_5
-341,244val_244
-342,438val_438
-343,128val_128
-344,467val_467
-345,432val_432
-346,202val_202
-347,316val_316
-348,229val_229
-349,469val_469
-350,463val_463
-351,280val_280
-352,2val_2
-353,35val_35
-354,283val_283
-355,331val_331
-356,235val_235
-357,80val_80
-358,44val_44
-359,193val_193
-360,321val_321
-361,335val_335
-362,104val_104
-363,466val_466
-364,366val_366
-365,175val_175
-366,403val_403
-367,483val_483
-369,53val_53
-370,105val_105
-371,257val_257
-372,406val_406
-373,409val_409
-374,190val_190
-375,406val_406
-376,401val_401
-377,114val_114
-378,258val_258
-379,90val_90
-380,203val_203
-381,262val_262
-382,348val_348
-383,424val_424
-384,12val_12
-385,396val_396
-386,201val_201
-387,217val_217
-388,164val_164
-389,431val_431
-390,454val_454
-391,478val_478
-392,298val_298
-393,125val_125
-394,431val_431
-395,164val_164
-396,424val_424
-397,187val_187
-398,382val_382
-399,5val_5
-400,70val_70
-401,397val_397
-402,480val_480
-403,291val_291
-404,24val_24
-405,351val_351
-407,255val_255
-408,104val_104
-409,70val_70
-410,163val_163
-411,438val_438
-412,119val_119
-413,414val_414
-414,200val_200
-415,491val_491
-416,237val_237
-417,439val_439
-418,360val_360
-419,248val_248
-420,479val_479
-421,305val_305
-422,417val_417
-423,199val_199
-424,444val_444
-425,120val_120
-426,429val_429
-427,169val_169
-428,443val_443
-429,323val_323
-430,325val_325
-431,277val_277
-432,230val_230
-433,478val_478
-434,178val_178
-435,468val_468
-436,310val_310
-437,317val_317
-438,333val_333
-439,493val_493
-440,460val_460
-441,207val_207
-442,249val_249
-443,265val_265
-444,480val_480
-445,83val_83
-447,136val_136
-448,353val_353
-449,172val_172
-450,214val_214
-451,462val_462
-452,233val_233
-453,406val_406
-454,133val_133
-455,175val_175
-456,189val_189
-457,454val_454
-458,375val_375
-459,401val_401
-460,421val_421
-461,407val_407
-462,384val_384
-463,256val_256
-464,26val_26
-465,134val_134
-466,67val_67
-467,384val_384
-468,379val_379
-469,18val_18
-470,462val_462
-471,492val_492
-472,100val_100
-473,298val_298
-474,9val_9
-475,341val_341
-476,498val_498
-477,146val_146
-478,458val_458
-479,362val_362
-480,186val_186
-481,285val_285
-483,348val_348
-484,167val_167
-485,18val_18
-486,273val_273
-487,183val_183
-488,281val_281
-489,344val_344
-490,97val_97
-491,469val_469
-492,315val_315
-493,84val_84
-494,28val_28
-495,37val_37
-496,448val_448
-497,152val_152
-498,348val_348
-499,307val_307
-500,194val_194
-501,414val_414
-502,477val_477
-503,222val_222
-504,126val_126
-505,90val_90
-506,169val_169
-507,403val_403
-508,400val_400
-509,200val_200
-511,97val_97
-512,238val_238
-513,86val_86
-514,311val_311
-515,27val_27
-516,165val_165
-517,409val_409
-518,255val_255
-519,278val_278
-520,98val_98
-521,484val_484
-522,265val_265
-523,193val_193
-524,401val_401
-525,150val_150
-526,273val_273
-527,224val_224
-528,369val_369
-529,66val_66
-530,128val_128
-531,213val_213
-532,146val_146
-533,406val_406
-535,429val_429
-536,374val_374
-537,152val_152
-538,469val_469
-539,145val_145
-540,495val_495
-541,37val_37
-542,327val_327
-543,281val_281
-544,277val_277
-545,209val_209
-546,15val_15
-547,82val_82
-548,403val_403
-549,166val_166
-550,417val_417
-551,430val_430
-552,252val_252
-553,292val_292
-554,219val_219
-555,287val_287
-556,153val_153
-557,193val_193
-559,338val_338
-560,446val_446
-561,459val_459
-562,394val_394
-563,237val_237
-564,482val_482
-565,174val_174
-566,413val_413
-567,494val_494
-568,207val_207
-569,199val_199
-570,466val_466
-571,208val_208
-572,174val_174
-573,399val_399
-574,396val_396
-575,247val_247
-576,417val_417
-577,489val_489
-578,162val_162
-579,377val_377
-580,397val_397
-581,309val_309
-582,365val_365
-583,266val_266
-584,439val_439
-585,342val_342
-586,367val_367
-587,325val_325
-588,167val_167
-589,195val_195
-590,475val_475
-591,17val_17
-593,113val_113
-594,155val_155
-595,203val_203
-596,339val_339
-597,0val_0
-598,455val_455
-599,128val_128
-600,311val_311
-601,316val_316
-602,57val_57
-603,302val_302
-604,205val_205
-605,149val_149
-606,438val_438
-607,345val_345
-608,129val_129
-609,170val_170
-610,20val_20
-611,489val_489
-612,157val_157
-613,378val_378
-614,221val_221
-615,92val_92
-616,111val_111
-617,47val_47
-618,72val_72
-619,4val_4
-620,280val_280
-621,35val_35
-622,427val_427
-623,277val_277
-624,208val_208
-625,356val_356
-626,399val_399
-627,169val_169
-628,382val_382
-629,498val_498
-630,125val_125
-631,386val_386
-632,437val_437
-633,469val_469
-634,192val_192
-635,286val_286
-636,187val_187
-637,176val_176
-638,54val_54
-639,459val_459
-640,51val_51
-641,138val_138
-642,103val_103
-643,239val_239
-644,213val_213
-645,216val_216
-646,430val_430
-647,278val_278
-648,176val_176
-649,289val_289
-650,221val_221
-651,65val_65
-652,318val_318
-653,332val_332
-654,311val_311
-655,275val_275
-656,137val_137
-657,241val_241
-658,83val_83
-659,333val_333
-660,180val_180
-661,284val_284
-662,12val_12
-663,230val_230
-664,181val_181
-665,67val_67
-666,260val_260
-667,404val_404
-668,384val_384
-669,489val_489
-670,353val_353
-671,373val_373
-672,272val_272
-673,138val_138
-674,217val_217
-675,84val_84
-676,348val_348
-677,466val_466
-678,58val_58
-679,8val_8
-680,411val_411
-681,230val_230
-682,208val_208
-683,348val_348
-684,24val_24
-685,463val_463
-686,431val_431
-687,179val_179
-688,172val_172
-689,42val_42
-690,129val_129
-691,158val_158
-692,119val_119
-693,496val_496
-694,0val_0
-695,322val_322
-696,197val_197
-697,468val_468
-698,393val_393
-699,454val_454
-700,100val_100
-701,298val_298
-702,199val_199
-703,191val_191
-704,418val_418
-705,96val_96
-706,26val_26
-707,165val_165
-708,327val_327
-709,230val_230
-710,205val_205
-711,120val_120
-712,131val_131
-713,51val_51
-714,404val_404
-715,43val_43
-716,436val_436
-717,156val_156
-718,469val_469
-719,468val_468
-720,308val_308
-721,95val_95
-722,196val_196
-723,288val_288
-724,481val_481
-725,457val_457
-726,98val_98
-727,282val_282
-728,197val_197
-729,187val_187
-730,318val_318
-731,318val_318
-732,409val_409
-733,470val_470
-734,137val_137
-735,369val_369
-736,316val_316
-737,169val_169
-738,413val_413
-739,85val_85
-740,77val_77
-741,0val_0
-742,490val_490
-743,87val_87
-744,364val_364
-745,179val_179
-746,118val_118
-747,134val_134
-748,395val_395
-749,282val_282
-750,138val_138
-751,238val_238
-752,419val_419
-753,15val_15
-754,118val_118
-755,72val_72
-756,90val_90
-757,307val_307
-758,19val_19
-759,435val_435
-760,10val_10
-761,277val_277
-762,273val_273
-763,306val_306
-764,224val_224
-765,309val_309
-766,389val_389
-767,327val_327
-768,242val_242
-769,369val_369
-770,392val_392
-771,272val_272
-772,331val_331
-773,401val_401
-774,242val_242
-775,452val_452
-776,177val_177
-777,226val_226
-778,5val_5
-779,497val_497
-780,402val_402
-781,396val_396
-782,317val_317
-783,395val_395
-784,58val_58
-785,35val_35
-786,336val_336
-787,95val_95
-788,11val_11
-789,168val_168
-790,34val_34
-791,229val_229
-792,233val_233
-793,143val_143
-794,472val_472
-795,322val_322
-796,498val_498
-797,160val_160
-798,195val_195
-799,42val_42
-800,321val_321
-801,430val_430
-802,119val_119
-803,489val_489
-804,458val_458
-805,78val_78
-806,76val_76
-807,41val_41
-808,223val_223
-809,492val_492
-810,149val_149
-811,449val_449
-812,218val_218
-813,228val_228
-814,138val_138
-815,453val_453
-816,30val_30
-817,209val_209
-818,64val_64
-819,468val_468
-820,76val_76
-821,74val_74
-822,342val_342
-823,69val_69
-824,230val_230
-825,33val_33
-826,368val_368
-827,103val_103
-828,296val_296
-829,113val_113
-830,216val_216
-831,367val_367
-832,344val_344
-833,167val_167
-834,274val_274
-835,219val_219
-836,239val_239
-837,485val_485
-838,116val_116
-839,223val_223
-840,256val_256
-841,263val_263
-842,70val_70
-843,487val_487
-844,480val_480
-845,401val_401
-846,288val_288
-847,191val_191
-848,5val_5
-849,244val_244
-850,438val_438
-851,128val_128
-852,467val_467
-853,432val_432
-854,202val_202
-855,316val_316
-856,229val_229
-857,469val_469
-858,463val_463
-859,280val_280
-860,2val_2
-861,35val_35
-862,283val_283
-863,331val_331
-864,235val_235
-865,80val_80
-866,44val_44
-867,193val_193
-868,321val_321
-869,335val_335
-870,104val_104
-871,466val_466
-872,366val_366
-873,175val_175
-874,403val_403
-875,483val_483
-876,53val_53
-877,105val_105
-878,257val_257
-879,406val_406
-880,409val_409
-881,190val_190
-882,406val_406
-883,401val_401
-884,114val_114
-885,258val_258
-886,90val_90
-887,203val_203
-888,262val_262
-889,348val_348
-890,424val_424
-891,12val_12
-892,396val_396
-893,201val_201
-894,217val_217
-895,164val_164
-896,431val_431
-897,454val_454
-898,478val_478
-899,298val_298
-900,125val_125
-901,431val_431
-902,164val_164
-903,424val_424
-904,187val_187
-905,382val_382
-906,5val_5
-907,70val_70
-908,397val_397
-909,480val_480
-910,291val_291
-911,24val_24
-912,351val_351
-913,255val_255
-914,104val_104
-915,70val_70
-916,163val_163
-917,438val_438
-918,119val_119
-919,414val_414
-920,200val_200
-921,491val_491
-922,237val_237
-923,439val_439
-924,360val_360
-925,248val_248
-926,479val_479
-927,305val_305
-928,417val_417
-929,199val_199
-930,444val_444
-931,120val_120
-932,429val_429
-933,169val_169
-934,443val_443
-935,323val_323
-936,325val_325
-937,277val_277
-938,230val_230
-939,478val_478
-940,178val_178
-941,468val_468
-942,310val_310
-943,317val_317
-944,333val_333
-945,493val_493
-946,460val_460
-947,207val_207
-948,249val_249
-949,265val_265
-950,480val_480
-951,83val_83
-952,136val_136
-953,353val_353
-954,172val_172
-955,214val_214
-956,462val_462
-957,233val_233
-958,406val_406
-959,133val_133
-960,175val_175
-961,189val_189
-962,454val_454
-963,375val_375
-964,401val_401
-965,421val_421
-966,407val_407
-967,384val_384
-968,256val_256
-969,26val_26
-970,134val_134
-971,67val_67
-972,384val_384
-973,379val_379
-974,18val_18
-975,462val_462
-976,492val_492
-977,100val_100
-978,298val_298
-979,9val_9
-980,341val_341
-981,498val_498
-982,146val_146
-983,458val_458
-984,362val_362
-985,186val_186
-986,285val_285
-987,348val_348
-988,167val_167
-989,18val_18
-990,273val_273
-991,183val_183
-992,281val_281
-993,344val_344
-994,97val_97
-995,469val_469
-996,315val_315
-997,84val_84
-998,28val_28
-999,37val_37
-1000,448val_448
-1001,152val_152
-1002,348val_348
-1003,307val_307
-1004,194val_194
-1005,414val_414
-1006,477val_477
-1007,222val_222
-1008,126val_126
-1009,90val_90
-1010,169val_169
-1011,403val_403
-1012,400val_400
-1013,200val_200
-1014,97val_97
+0^A238val_238
+1^A86val_86
+2^A311val_311
+3^A27val_27
+4^A165val_165
+5^A409val_409
+6^A255val_255
+7^A278val_278
+8^A98val_98
+9^A484val_484
+10^A265val_265
+11^A193val_193
+12^A401val_401
+13^A150val_150
+14^A273val_273
+15^A224val_224
+17^A369val_369
+18^A66val_66
+19^A128val_128
+20^A213val_213
+21^A146val_146
+22^A406val_406
+23^A429val_429
+24^A374val_374
+25^A152val_152
+26^A469val_469
+27^A145val_145
+28^A495val_495
+29^A37val_37
+30^A327val_327
+31^A281val_281
+32^A277val_277
+33^A209val_209
+34^A15val_15
+35^A82val_82
+36^A403val_403
+37^A166val_166
+38^A417val_417
+39^A430val_430
+40^A252val_252
+41^A292val_292
+42^A219val_219
+43^A287val_287
+44^A153val_153
+45^A193val_193
+46^A338val_338
+47^A446val_446
+48^A459val_459
+49^A394val_394
+50^A237val_237
+51^A482val_482
+52^A174val_174
+53^A413val_413
+54^A494val_494
+55^A207val_207
+56^A199val_199
+57^A466val_466
+58^A208val_208
+59^A174val_174
+60^A399val_399
+61^A396val_396
+62^A247val_247
+63^A417val_417
+65^A489val_489
+66^A162val_162
+67^A377val_377
+68^A397val_397
+69^A309val_309
+70^A365val_365
+71^A266val_266
+72^A439val_439
+73^A342val_342
+74^A367val_367
+75^A325val_325
+76^A167val_167
+77^A195val_195
+78^A475val_475
+79^A17val_17
+80^A113val_113
+81^A155val_155
+82^A203val_203
+83^A339val_339
+84^A0val_0
+85^A455val_455
+86^A128val_128
+87^A311val_311
+88^A316val_316
+89^A57val_57
+90^A302val_302
+91^A205val_205
+92^A149val_149
+93^A438val_438
+94^A345val_345
+95^A129val_129
+96^A170val_170
+97^A20val_20
+98^A489val_489
+99^A157val_157
+100^A378val_378
+101^A221val_221
+102^A92val_92
+103^A111val_111
+104^A47val_47
+105^A72val_72
+106^A4val_4
+107^A280val_280
+108^A35val_35
+109^A427val_427
+110^A277val_277
+111^A208val_208
+112^A356val_356
+113^A399val_399
+114^A169val_169
+115^A382val_382
+116^A498val_498
+117^A125val_125
+118^A386val_386
+119^A437val_437
+120^A469val_469
+121^A192val_192
+122^A286val_286
+123^A187val_187
+125^A176val_176
+126^A54val_54
+127^A459val_459
+128^A51val_51
+129^A138val_138
+130^A103val_103
+131^A239val_239
+132^A213val_213
+133^A216val_216
+134^A430val_430
+135^A278val_278
+136^A176val_176
+137^A289val_289
+138^A221val_221
+139^A65val_65
+140^A318val_318
+141^A332val_332
+142^A311val_311
+143^A275val_275
+144^A137val_137
+145^A241val_241
+146^A83val_83
+147^A333val_333
+148^A180val_180
+149^A284val_284
+150^A12val_12
+151^A230val_230
+152^A181val_181
+153^A67val_67
+154^A260val_260
+155^A404val_404
+156^A384val_384
+157^A489val_489
+158^A353val_353
+159^A373val_373
+160^A272val_272
+161^A138val_138
+162^A217val_217
+163^A84val_84
+164^A348val_348
+165^A466val_466
+166^A58val_58
+167^A8val_8
+168^A411val_411
+170^A230val_230
+171^A208val_208
+172^A348val_348
+173^A24val_24
+174^A463val_463
+175^A431val_431
+176^A179val_179
+177^A172val_172
+178^A42val_42
+179^A129val_129
+180^A158val_158
+181^A119val_119
+182^A496val_496
+183^A0val_0
+184^A322val_322
+185^A197val_197
+186^A468val_468
+187^A393val_393
+188^A454val_454
+189^A100val_100
+190^A298val_298
+191^A199val_199
+192^A191val_191
+193^A418val_418
+194^A96val_96
+195^A26val_26
+196^A165val_165
+197^A327val_327
+198^A230val_230
+199^A205val_205
+200^A120val_120
+201^A131val_131
+202^A51val_51
+203^A404val_404
+204^A43val_43
+205^A436val_436
+206^A156val_156
+207^A469val_469
+208^A468val_468
+209^A308val_308
+210^A95val_95
+211^A196val_196
+212^A288val_288
+213^A481val_481
+214^A457val_457
+215^A98val_98
+216^A282val_282
+217^A197val_197
+218^A187val_187
+219^A318val_318
+220^A318val_318
+221^A409val_409
+222^A470val_470
+223^A137val_137
+224^A369val_369
+225^A316val_316
+226^A169val_169
+227^A413val_413
+228^A85val_85
+229^A77val_77
+230^A0val_0
+231^A490val_490
+232^A87val_87
+233^A364val_364
+234^A179val_179
+235^A118val_118
+236^A134val_134
+237^A395val_395
+238^A282val_282
+239^A138val_138
+240^A238val_238
+242^A419val_419
+243^A15val_15
+244^A118val_118
+245^A72val_72
+246^A90val_90
+247^A307val_307
+248^A19val_19
+249^A435val_435
+250^A10val_10
+251^A277val_277
+252^A273val_273
+253^A306val_306
+254^A224val_224
+255^A309val_309
+256^A389val_389
+257^A327val_327
+258^A242val_242
+259^A369val_369
+260^A392val_392
+261^A272val_272
+262^A331val_331
+263^A401val_401
+264^A242val_242
+265^A452val_452
+266^A177val_177
+267^A226val_226
+268^A5val_5
+269^A497val_497
+270^A402val_402
+272^A396val_396
+273^A317val_317
+274^A395val_395
+275^A58val_58
+276^A35val_35
+277^A336val_336
+278^A95val_95
+279^A11val_11
+280^A168val_168
+281^A34val_34
+282^A229val_229
+283^A233val_233
+284^A143val_143
+285^A472val_472
+286^A322val_322
+287^A498val_498
+288^A160val_160
+289^A195val_195
+290^A42val_42
+291^A321val_321
+292^A430val_430
+293^A119val_119
+294^A489val_489
+295^A458val_458
+296^A78val_78
+297^A76val_76
+298^A41val_41
+299^A223val_223
+300^A492val_492
+301^A149val_149
+302^A449val_449
+303^A218val_218
+304^A228val_228
+305^A138val_138
+306^A453val_453
+307^A30val_30
+308^A209val_209
+309^A64val_64
+310^A468val_468
+311^A76val_76
+312^A74val_74
+313^A342val_342
+314^A69val_69
+316^A230val_230
+317^A33val_33
+318^A368val_368
+319^A103val_103
+320^A296val_296
+321^A113val_113
+322^A216val_216
+323^A367val_367
+324^A344val_344
+325^A167val_167
+326^A274val_274
+327^A219val_219
+328^A239val_239
+329^A485val_485
+330^A116val_116
+331^A223val_223
+332^A256val_256
+333^A263val_263
+334^A70val_70
+335^A487val_487
+336^A480val_480
+337^A401val_401
+338^A288val_288
+339^A191val_191
+340^A5val_5
+341^A244val_244
+342^A438val_438
+343^A128val_128
+344^A467val_467
+345^A432val_432
+346^A202val_202
+347^A316val_316
+348^A229val_229
+349^A469val_469
+350^A463val_463
+351^A280val_280
+352^A2val_2
+353^A35val_35
+354^A283val_283
+355^A331val_331
+356^A235val_235
+357^A80val_80
+358^A44val_44
+359^A193val_193
+360^A321val_321
+361^A335val_335
+362^A104val_104
+363^A466val_466
+364^A366val_366
+365^A175val_175
+366^A403val_403
+367^A483val_483
+369^A53val_53
+370^A105val_105
+371^A257val_257
+372^A406val_406
+373^A409val_409
+374^A190val_190
+375^A406val_406
+376^A401val_401
+377^A114val_114
+378^A258val_258
+379^A90val_90
+380^A203val_203
+381^A262val_262
+382^A348val_348
+383^A424val_424
+384^A12val_12
+385^A396val_396
+386^A201val_201
+387^A217val_217
+388^A164val_164
+389^A431val_431
+390^A454val_454
+391^A478val_478
+392^A298val_298
+393^A125val_125
+394^A431val_431
+395^A164val_164
+396^A424val_424
+397^A187val_187
+398^A382val_382
+399^A5val_5
+400^A70val_70
+401^A397val_397
+402^A480val_480
+403^A291val_291
+404^A24val_24
+405^A351val_351
+407^A255val_255
+408^A104val_104
+409^A70val_70
+410^A163val_163
+411^A438val_438
+412^A119val_119
+413^A414val_414
+414^A200val_200
+415^A491val_491
+416^A237val_237
+417^A439val_439
+418^A360val_360
+419^A248val_248
+420^A479val_479
+421^A305val_305
+422^A417val_417
+423^A199val_199
+424^A444val_444
+425^A120val_120
+426^A429val_429
+427^A169val_169
+428^A443val_443
+429^A323val_323
+430^A325val_325
+431^A277val_277
+432^A230val_230
+433^A478val_478
+434^A178val_178
+435^A468val_468
+436^A310val_310
+437^A317val_317
+438^A333val_333
+439^A493val_493
+440^A460val_460
+441^A207val_207
+442^A249val_249
+443^A265val_265
+444^A480val_480
+445^A83val_83
+447^A136val_136
+448^A353val_353
+449^A172val_172
+450^A214val_214
+451^A462val_462
+452^A233val_233
+453^A406val_406
+454^A133val_133
+455^A175val_175
+456^A189val_189
+457^A454val_454
+458^A375val_375
+459^A401val_401
+460^A421val_421
+461^A407val_407
+462^A384val_384
+463^A256val_256
+464^A26val_26
+465^A134val_134
+466^A67val_67
+467^A384val_384
+468^A379val_379
+469^A18val_18
+470^A462val_462
+471^A492val_492
+472^A100val_100
+473^A298val_298
+474^A9val_9
+475^A341val_341
+476^A498val_498
+477^A146val_146
+478^A458val_458
+479^A362val_362
+480^A186val_186
+481^A285val_285
+483^A348val_348
+484^A167val_167
+485^A18val_18
+486^A273val_273
+487^A183val_183
+488^A281val_281
+489^A344val_344
+490^A97val_97
+491^A469val_469
+492^A315val_315
+493^A84val_84
+494^A28val_28
+495^A37val_37
+496^A448val_448
+497^A152val_152
+498^A348val_348
+499^A307val_307
+500^A194val_194
+501^A414val_414
+502^A477val_477
+503^A222val_222
+504^A126val_126
+505^A90val_90
+506^A169val_169
+507^A403val_403
+508^A400val_400
+509^A200val_200
+511^A97val_97
+512^A238val_238
+513^A86val_86
+514^A311val_311
+515^A27val_27
+516^A165val_165
+517^A409val_409
+518^A255val_255
+519^A278val_278
+520^A98val_98
+521^A484val_484
+522^A265val_265
+523^A193val_193
+524^A401val_401
+525^A150val_150
+526^A273val_273
+527^A224val_224
+528^A369val_369
+529^A66val_66
+530^A128val_128
+531^A213val_213
+532^A146val_146
+533^A406val_406
+535^A429val_429
+536^A374val_374
+537^A152val_152
+538^A469val_469
+539^A145val_145
+540^A495val_495
+541^A37val_37
+542^A327val_327
+543^A281val_281
+544^A277val_277
+545^A209val_209
+546^A15val_15
+547^A82val_82
+548^A403val_403
+549^A166val_166
+550^A417val_417
+551^A430val_430
+552^A252val_252
+553^A292val_292
+554^A219val_219
+555^A287val_287
+556^A153val_153
+557^A193val_193
+559^A338val_338
+560^A446val_446
+561^A459val_459
+562^A394val_394
+563^A237val_237
+564^A482val_482
+565^A174val_174
+566^A413val_413
+567^A494val_494
+568^A207val_207
+569^A199val_199
+570^A466val_466
+571^A208val_208
+572^A174val_174
+573^A399val_399
+574^A396val_396
+575^A247val_247
+576^A417val_417
+577^A489val_489
+578^A162val_162
+579^A377val_377
+580^A397val_397
+581^A309val_309
+582^A365val_365
+583^A266val_266
+584^A439val_439
+585^A342val_342
+586^A367val_367
+587^A325val_325
+588^A167val_167
+589^A195val_195
+590^A475val_475
+591^A17val_17
+593^A113val_113
+594^A155val_155
+595^A203val_203
+596^A339val_339
+597^A0val_0
+598^A455val_455
+599^A128val_128
+600^A311val_311
+601^A316val_316
+602^A57val_57
+603^A302val_302
+604^A205val_205
+605^A149val_149
+606^A438val_438
+607^A345val_345
+608^A129val_129
+609^A170val_170
+610^A20val_20
+611^A489val_489
+612^A157val_157
+613^A378val_378
+614^A221val_221
+615^A92val_92
+616^A111val_111
+617^A47val_47
+618^A72val_72
+619^A4val_4
+620^A280val_280
+621^A35val_35
+622^A427val_427
+623^A277val_277
+624^A208val_208
+625^A356val_356
+626^A399val_399
+627^A169val_169
+628^A382val_382
+629^A498val_498
+630^A125val_125
+631^A386val_386
+632^A437val_437
+633^A469val_469
+634^A192val_192
+635^A286val_286
+636^A187val_187
+637^A176val_176
+638^A54val_54
+639^A459val_459
+640^A51val_51
+641^A138val_138
+642^A103val_103
+643^A239val_239
+644^A213val_213
+645^A216val_216
+646^A430val_430
+647^A278val_278
+648^A176val_176
+649^A289val_289
+650^A221val_221
+651^A65val_65
+652^A318val_318
+653^A332val_332
+654^A311val_311
+655^A275val_275
+656^A137val_137
+657^A241val_241
+658^A83val_83
+659^A333val_333
+660^A180val_180
+661^A284val_284
+662^A12val_12
+663^A230val_230
+664^A181val_181
+665^A67val_67
+666^A260val_260
+667^A404val_404
+668^A384val_384
+669^A489val_489
+670^A353val_353
+671^A373val_373
+672^A272val_272
+673^A138val_138
+674^A217val_217
+675^A84val_84
+676^A348val_348
+677^A466val_466
+678^A58val_58
+679^A8val_8
+680^A411val_411
+681^A230val_230
+682^A208val_208
+683^A348val_348
+684^A24val_24
+685^A463val_463
+686^A431val_431
+687^A179val_179
+688^A172val_172
+689^A42val_42
+690^A129val_129
+691^A158val_158
+692^A119val_119
+693^A496val_496
+694^A0val_0
+695^A322val_322
+696^A197val_197
+697^A468val_468
+698^A393val_393
+699^A454val_454
+700^A100val_100
+701^A298val_298
+702^A199val_199
+703^A191val_191
+704^A418val_418
+705^A96val_96
+706^A26val_26
+707^A165val_165
+708^A327val_327
+709^A230val_230
+710^A205val_205
+711^A120val_120
+712^A131val_131
+713^A51val_51
+714^A404val_404
+715^A43val_43
+716^A436val_436
+717^A156val_156
+718^A469val_469
+719^A468val_468
+720^A308val_308
+721^A95val_95
+722^A196val_196
+723^A288val_288
+724^A481val_481
+725^A457val_457
+726^A98val_98
+727^A282val_282
+728^A197val_197
+729^A187val_187
+730^A318val_318
+731^A318val_318
+732^A409val_409
+733^A470val_470
+734^A137val_137
+735^A369val_369
+736^A316val_316
+737^A169val_169
+738^A413val_413
+739^A85val_85
+740^A77val_77
+741^A0val_0
+742^A490val_490
+743^A87val_87
+744^A364val_364
+745^A179val_179
+746^A118val_118
+747^A134val_134
+748^A395val_395
+749^A282val_282
+750^A138val_138
+751^A238val_238
+752^A419val_419
+753^A15val_15
+754^A118val_118
+755^A72val_72
+756^A90val_90
+757^A307val_307
+758^A19val_19
+759^A435val_435
+760^A10val_10
+761^A277val_277
+762^A273val_273
+763^A306val_306
+764^A224val_224
+765^A309val_309
+766^A389val_389
+767^A327val_327
+768^A242val_242
+769^A369val_369
+770^A392val_392
+771^A272val_272
+772^A331val_331
+773^A401val_401
+774^A242val_242
+775^A452val_452
+776^A177val_177
+777^A226val_226
+778^A5val_5
+779^A497val_497
+780^A402val_402
+781^A396val_396
+782^A317val_317
+783^A395val_395
+784^A58val_58
+785^A35val_35
+786^A336val_336
+787^A95val_95
+788^A11val_11
+789^A168val_168
+790^A34val_34
+791^A229val_229
+792^A233val_233
+793^A143val_143
+794^A472val_472
+795^A322val_322
+796^A498val_498
+797^A160val_160
+798^A195val_195
+799^A42val_42
+800^A321val_321
+801^A430val_430
+802^A119val_119
+803^A489val_489
+804^A458val_458
+805^A78val_78
+806^A76val_76
+807^A41val_41
+808^A223val_223
+809^A492val_492
+810^A149val_149
+811^A449val_449
+812^A218val_218
+813^A228val_228
+814^A138val_138
+815^A453val_453
+816^A30val_30
+817^A209val_209
+818^A64val_64
+819^A468val_468
+820^A76val_76
+821^A74val_74
+822^A342val_342
+823^A69val_69
+824^A230val_230
+825^A33val_33
+826^A368val_368
+827^A103val_103
+828^A296val_296
+829^A113val_113
+830^A216val_216
+831^A367val_367
+832^A344val_344
+833^A167val_167
+834^A274val_274
+835^A219val_219
+836^A239val_239
+837^A485val_485
+838^A116val_116
+839^A223val_223
+840^A256val_256
+841^A263val_263
+842^A70val_70
+843^A487val_487
+844^A480val_480
+845^A401val_401
+846^A288val_288
+847^A191val_191
+848^A5val_5
+849^A244val_244
+850^A438val_438
+851^A128val_128
+852^A467val_467
+853^A432val_432
+854^A202val_202
+855^A316val_316
+856^A229val_229
+857^A469val_469
+858^A463val_463
+859^A280val_280
+860^A2val_2
+861^A35val_35
+862^A283val_283
+863^A331val_331
+864^A235val_235
+865^A80val_80
+866^A44val_44
+867^A193val_193
+868^A321val_321
+869^A335val_335
+870^A104val_104
+871^A466val_466
+872^A366val_366
+873^A175val_175
+874^A403val_403
+875^A483val_483
+876^A53val_53
+877^A105val_105
+878^A257val_257
+879^A406val_406
+880^A409val_409
+881^A190val_190
+882^A406val_406
+883^A401val_401
+884^A114val_114
+885^A258val_258
+886^A90val_90
+887^A203val_203
+888^A262val_262
+889^A348val_348
+890^A424val_424
+891^A12val_12
+892^A396val_396
+893^A201val_201
+894^A217val_217
+895^A164val_164
+896^A431val_431
+897^A454val_454
+898^A478val_478
+899^A298val_298
+900^A125val_125
+901^A431val_431
+902^A164val_164
+903^A424val_424
+904^A187val_187
+905^A382val_382
+906^A5val_5
+907^A70val_70
+908^A397val_397
+909^A480val_480
+910^A291val_291
+911^A24val_24
+912^A351val_351
+913^A255val_255
+914^A104val_104
+915^A70val_70
+916^A163val_163
+917^A438val_438
+918^A119val_119
+919^A414val_414
+920^A200val_200
+921^A491val_491
+922^A237val_237
+923^A439val_439
+924^A360val_360
+925^A248val_248
+926^A479val_479
+927^A305val_305
+928^A417val_417
+929^A199val_199
+930^A444val_444
+931^A120val_120
+932^A429val_429
+933^A169val_169
+934^A443val_443
+935^A323val_323
+936^A325val_325
+937^A277val_277
+938^A230val_230
+939^A478val_478
+940^A178val_178
+941^A468val_468
+942^A310val_310
+943^A317val_317
+944^A333val_333
+945^A493val_493
+946^A460val_460
+947^A207val_207
+948^A249val_249
+949^A265val_265
+950^A480val_480
+951^A83val_83
+952^A136val_136
+953^A353val_353
+954^A172val_172
+955^A214val_214
+956^A462val_462
+957^A233val_233
+958^A406val_406
+959^A133val_133
+960^A175val_175
+961^A189val_189
+962^A454val_454
+963^A375val_375
+964^A401val_401
+965^A421val_421
+966^A407val_407
+967^A384val_384
+968^A256val_256
+969^A26val_26
+970^A134val_134
+971^A67val_67
+972^A384val_384
+973^A379val_379
+974^A18val_18
+975^A462val_462
+976^A492val_492
+977^A100val_100
+978^A298val_298
+979^A9val_9
+980^A341val_341
+981^A498val_498
+982^A146val_146
+983^A458val_458
+984^A362val_362
+985^A186val_186
+986^A285val_285
+987^A348val_348
+988^A167val_167
+989^A18val_18
+990^A273val_273
+991^A183val_183
+992^A281val_281
+993^A344val_344
+994^A97val_97
+995^A469val_469
+996^A315val_315
+997^A84val_84
+998^A28val_28
+999^A37val_37
+1000^A448val_448
+1001^A152val_152
+1002^A348val_348
+1003^A307val_307
+1004^A194val_194
+1005^A414val_414
+1006^A477val_477
+1007^A222val_222
+1008^A126val_126
+1009^A90val_90
+1010^A169val_169
+1011^A403val_403
+1012^A400val_400
+1013^A200val_200
+1014^A97val_97

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/resources/table/customer-table-replicating-feed.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/customer-table-replicating-feed.xml b/webapp/src/test/resources/table/customer-table-replicating-feed.xml
index 29591fd..a59473a 100644
--- a/webapp/src/test/resources/table/customer-table-replicating-feed.xml
+++ b/webapp/src/test/resources/table/customer-table-replicating-feed.xml
@@ -34,11 +34,11 @@
             <validity start="2013-10-24T00:00Z" end="2014-10-26T00:00Z"/>
             <retention limit="months(12)" action="delete"/>
 
-            <table uri="catalog:tgt_demo_db:customer_bcp#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
+            <table uri="catalog:tgt_demo_db:customer_bcp#ds=${YEAR}${MONTH}${DAY}${HOUR}" />
         </cluster>
     </clusters>
 
-    <table uri="catalog:src_demo_db:customer_raw#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
+    <table uri="catalog:src_demo_db:customer_raw#ds=${YEAR}${MONTH}${DAY}${HOUR}" />
 
     <ACL owner="seetharam" group="users" permission="0755"/>
     <schema location="" provider="hcatalog"/>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/resources/table/hive-process-template.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/hive-process-template.xml b/webapp/src/test/resources/table/hive-process-template.xml
index 14318f0..e4e4212 100644
--- a/webapp/src/test/resources/table/hive-process-template.xml
+++ b/webapp/src/test/resources/table/hive-process-template.xml
@@ -45,4 +45,7 @@
 
     <retry policy="periodic" delay="minutes(10)" attempts="3"/>
 
+    <late-process policy="exp-backoff" delay="hours(2)">
+        <late-input input="input" workflow-path="/falcon/test/workflow"/>
+    </late-process>
 </process>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/resources/table/pig-process-tables.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/pig-process-tables.xml b/webapp/src/test/resources/table/pig-process-tables.xml
index b6a6b36..c323f97 100644
--- a/webapp/src/test/resources/table/pig-process-tables.xml
+++ b/webapp/src/test/resources/table/pig-process-tables.xml
@@ -45,4 +45,7 @@
 
     <retry policy="periodic" delay="minutes(10)" attempts="3"/>
 
+    <late-process policy="exp-backoff" delay="hours(2)">
+        <late-input input="input" workflow-path="/falcon/test/workflow"/>
+    </late-process>
 </process>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/resources/table/table-feed-input.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/table-feed-input.xml b/webapp/src/test/resources/table/table-feed-input.xml
index 97c4224..026b168 100644
--- a/webapp/src/test/resources/table/table-feed-input.xml
+++ b/webapp/src/test/resources/table/table-feed-input.xml
@@ -21,6 +21,7 @@
 
     <frequency>hours(1)</frequency>
     <timezone>UTC</timezone>
+    <late-arrival cut-off="hours(3)"/>
 
     <clusters>
         <cluster name="##cluster##" type="source">
@@ -32,5 +33,5 @@
     <table uri="catalog:falcon_db:input_table#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
 
     <ACL owner="testuser" group="group" permission="0x755"/>
-    <schema location="/schema/clicks" provider="protobuf"/>
+    <schema location="hcat" provider="hcat"/>
 </feed>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/eb8ca3de/webapp/src/test/resources/table/table-feed-output.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/table-feed-output.xml b/webapp/src/test/resources/table/table-feed-output.xml
index d44ec2d..e8a7ca0 100644
--- a/webapp/src/test/resources/table/table-feed-output.xml
+++ b/webapp/src/test/resources/table/table-feed-output.xml
@@ -21,6 +21,7 @@
 
     <frequency>hours(1)</frequency>
     <timezone>UTC</timezone>
+    <late-arrival cut-off="hours(4)"/>
 
     <clusters>
         <cluster name="##cluster##" type="source">
@@ -32,5 +33,5 @@
     <table uri="catalog:falcon_db:output_table#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
 
     <ACL owner="testuser" group="group" permission="0x755"/>
-    <schema location="/schema/clicks" provider="protobuf"/>
+    <schema location="hcat" provider="hcat"/>
 </feed>